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