5.2 プログラム実行

5.2.1 プログラム実行法

OpenFDTDには使用された高速化技術によっていくつかの実行プログラムがあります。
それらは実行方法と計算時間は異なりますが、計算機能は同じですので、 同じ計算結果が得られます。
プログラムを実行するにはコマンドラインで下記のコマンドを実行して下さい。
ここで行頭の>はプロンプトであり入力する必要はありません。
<>内には適当な数値を代入してください。
[]内はオプションであり省略可能です。
|で区切られた部分は一つを選択してください。
"入力データ"は次節で説明するテキストファイルであり必須です。
コマンドラインの操作方法はWindowsとLinuxで同じです。

(1)OpenMP+SIMDを使用するとき
> ofd_omp_simd [-n <thread>] [-nosimd|-sse|-avx] 入力データ
例えば以下のようになります。
> ofd_omp_simd 入力データ      (1スレッド、SIMDなし)
> ofd_omp_simd -n 6 入力データ    (6スレッド、SIMDなし)
> ofd_omp_simd -sse 入力データ    (1スレッド、SSE使用)
> ofd_omp_simd -n 4 -avx 入力データ  (4スレッド、AVX使用)
> ofd_omp_simd -geom 入力データ   (幾何形状の出力のみ行い計算は行いません)
> ofd_omp_simd --help        (使い方の説明)

(2)MPI+OpenMP+SIMDを使用するとき
1台のとき:
> mpiexec -n <process> ofd_mpi [-n <thread>] [-nosimd|-sse|-avx] 入力データ
複数台のとき:
> mpiexec -hosts <num> ホスト名 プロセス数 ... ofd_mpi [-n <thread>] [-nosimd|-sse|-avx] 入力データ
例えば以下のようになります。(注意1)(注意2)
> mpiexec -n 1 ofd_mpi 入力データ    (1台、1プロセス、1スレッド、SIMDなし)
> mpiexec -n 4 ofd_mpi 入力データ    (1台、4プロセス、1スレッド、SIMDなし)
> mpiexec -n 4 ofd_mpi -sse 入力データ    (1台、4プロセス、1スレッド、SSE)
> mpiexec -n 2 ofd_mpi -n 2 入力データ    (1台、2プロセス、2スレッド、SIMDなし)
> mpiexec -n 3 ofd_mpi -n 2 -avx 入力データ    (1台、3プロセス、2スレッド、AVX)
> mpiexec -hosts 2 localhost 6 PC2 4 ofd_mpi 入力データ  (2台、6+4プロセス、1スレッド、SIMDなし)
> ofd_mpi --help        (使い方の説明)

(3)CUDAを使用するとき
> ofd_cuda [-hdm|-um] [-device <device>] 入力データ
例えば以下のようになります。
> ofd_cuda 入力データ
> ofd_cuda -hdm 入力データ   (host-device-memoryを使用する)
> ofd_cuda -um 入力データ   (unified-memoryを使用する)
> ofd_cuda -device 0 入力データ   (デバイス番号=0)(注意3)
> ofd_cuda --help        (使い方の説明)

(4)CUDA+MPIを使用するとき
> mpiexec -hosts <num> ホスト名 プロセス数 ... ofd_cuda_mpi [-device <device>] 入力データ
例えば以下のようになります。(注意1)(注意2)(注意3)(注意4)
> mpiexec -hosts 2 localhost 1 PC2 1 ofd_cuda_mpi 入力データ   (2台、1+1プロセス)
> ofd_cuda_mpi --help        (使い方の説明)

(注意1)初回にセキュリティソフトが警告を出したら許可して下さい。 (MPIは複数のプロセスを起動しますのでマルウェアと認識されることがあります)
(注意2)複数台のコンピュータで計算する方法については[3]を参考にして下さい。
(注意3)通常はデバイス番号は0です。何らかのメッセージが出て実行できないときはデバイス番号を変えてみてください。
(注意4)CUDA+MPIではunified-memoryを使用します。

5.2.2 標準出力

計算が行われるとリスト5-2-1のような標準出力が行われます。
それぞれの意味は下記の通りです。
入力データに間違いがあるときはメッセージを出して計算が終了します。


リスト5-2-1 標準出力
<<< OpenFDTD (CPU/OpenMP+SIMD) Ver.1.4.0 >>>	実行プログラムとそのバージョン
Thread = 1, Process = 1, SIMD = NO		スレッド数、プロセス数、SIMD(GPUのときはGPU情報)
Thu Oct  6 16:00:32 2016			開始時刻
Title = dipole antenna				タイトル
Cells = 20 x 20 x 31 = 12400			セル数
No. of Materials  = 3				物性値の数(空気/PECを含む)
No. of Geometries = 1				幾何形状の数
No. of Feeds      = 1				給電点の数
No. of Freq.s (1) = 6				第1周波数の数
No. of Freq.s (2) = 1				第2周波数の数
No. of Points     = 0				Sパラメーター用観測点の数
No. of Near1d.s   = 1				近傍界観測線の数
No. of Near2d.s   = 1 + 6 = 7			近傍界観測面の数(遠方界を指定したときは第2項の2番目が6になる)
No. of Far fields = 1				遠方界計算面の数
Memory size [MB]  = 1				使用メモリー
ABC = Mur-1st						吸収境界条件
Dt = 9.3089e-012, Tw = 5.0800e-010, Tw/Dt = 54.572	Δt[sec]、パルス幅[sec]、比
Iterations = 1000, Convergence = 1.000e-003		最大反復回数、収束判定条件
=== iteration start ===				反復計算開始
  step   <E>      <H>				タイムステップ、平均電界、平均磁界
     0 0.000000 0.000000
   100 6.419637 4.058073
   200 0.960879 1.038262
   300 0.235826 0.146301
   400 0.034985 0.037813
   500 0.008597 0.005335
   600 0.001275 0.001377
--- converged					収束したことを表す
=== input impedance ===				入力インピーダンス/入力アドミッタンス/反射損失
feed #1 (Z0[ohm] = 50.00)			給電点の特性インピーダンス
  freq[Hz]     Rin[ohm]    Xin[ohm]     Gin[mS]     Bin[mS]    R.L.[dB]
 2.000e+009      36.496    -110.273       2.705       8.173      -2.018
 2.200e+009      46.133     -66.395       7.058      10.157      -4.894
 2.400e+009      58.635     -25.243      14.388       6.194     -12.424
 2.600e+009      74.724      14.034      12.927      -2.428     -12.898
 2.800e+009      95.368      52.010       8.082      -4.408      -6.993
 3.000e+009     122.065      88.976       5.350      -3.900      -4.567
=== normal end ===				計算が正常終了したことを表す
Thu Oct  6 16:00:33 2016			終了時刻
cpu time = 0.390 [sec]				計算時間

5.2.3 図形出力

計算が終了すると以下の図形ファイルが出力されます。
ただし、2.と3.は反復計算が開始したとき既に出力されていますので、 計算の途中で入力データを確認することができます。
それらの意味と見方は5.4,5.5を参考にして下さい。

  1. ev2d.htm : 計算結果(周波数特性、近傍界、遠方界)
  2. geom2d.htm : 入力データ幾何形状の2D表示
  3. geom3d.htm : 入力データ幾何形状の3D表示

5.2.4 数値出力

計算が終了すると以下の数値ファイルが出力されます。
それらの意味は5.6を参考にして下さい。

  1. ofd.log : 標準出力と同じもの
  2. feed.log : アンテナの周波数特性
  3. spara.log : Sパラメーターの周波数特性(観測点を入力したとき)
  4. near1d.log : 近傍界観測線(近傍界観測線を入力したとき)
  5. near2d.log : 近傍界観測面(近傍界観測面を入力したとき)
  6. far.log : 遠方界(遠方界を入力したとき)