3.2 プログラム実行

3.2.1 プログラム実行法

OpenSTFの処理の流れは図3-2-1のように2通りあります。
左は計算とポスト処理を分けて行う方法であり、 右は計算とポスト処理を一括して行う方法です。
処理時間は計算>>ポスト処理ですので、 左の方法を使用するとポスト処理の条件を変えてポスト処理を繰り返し行うことができます。 ただし左の方法では計算結果ファイルost.outが必要になり、 これは全領域の電圧分布を含んでいますので大きなサイズのファイルの読み書きが必要になります。


図3-2-1 OpenSTFの処理の流れ

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

(1)CPU版を使用するとき

> ost [-solver|-post] [-n <thread>] [-geom] 入力データ
例えば以下のようになります。(注1)
> ost -solver 入力データ   (計算を行いますがポスト処理を行いません。計算結果がost.outに出力されます)
> ost -post 入力データ    (ost.outを読み込んでポスト処理を行います)
> ost 入力データ      (計算に続いてポスト処理を行います。ost.outは出力しません。1スレッド)
> ost -n 4 入力データ    (4スレッド)
> ost -geom 入力データ   (物体形状をgeom3d.htmに出力し計算は行いません)
> ost --help        (使い方の説明)

(2)CPU版(MPI対応)を1台のコンピューターで使用するとき

1台のコンピューターで使用するときは(1)の方法で十分ですが、以下のようにMPI対応プログラムを使用することもできます。
> mpiexec -n <process> ost_mpi [-solver|-post] [-geom] 入力データ
例えば以下のようになります。(注1)(注2)(注3)
> mpiexec -n 4 ost_mpi -solver 入力データ   (計算を行いますがポスト処理を行いません。計算結果がost.outに出力されます。4プロセス)
> mpiexec -n 4 ost_mpi 入力データ      (計算に続いてポスト処理を行います。ost.outは出力しません。4プロセス)
> ost_mpi --help        (使い方の説明)

(3)CPU版(MPI対応)を複数台のコンピューターで使用するとき

> mpiexec -hosts <num> ホスト名 プロセス数 ... ost_mpi [-solver|-post] [-geom] 入力データ
例えば以下のようになります。(注1)(注2)(注3)(注4)
> mpiexec -hosts 2 localhost 6 PC2 4 ost_mpi 入力データ  (2台、6+4プロセス)

(4)GPU版を使用するとき

> ost_cuda [-solver|-post] [-hdm|-um] [-device <device>] [-geom] 入力データ
例えば以下のようになります。(注1)
> ost_cuda -solver 入力データ   (計算を行いますがポスト処理を行いません。計算結果がost.outに出力されます)
> ost_cuda -post 入力データ    (ost.outを読み込んでポスト処理を行います)
> ost_cuda 入力データ   (計算に続いてポスト処理を行います。ost.outは出力しません。)
> ost_cuda -hdm 入力データ   (host-device-memoryを使用する:既定値)
> ost_cuda -um 入力データ   (unified-memoryを使用する)
> ost_cuda -device 0 入力データ   (デバイス番号=0:既定値)(注5)
> ost_cuda -geom 入力データ   (物体形状をgeom3d.htmに出力し計算は行いません)
> ost_cuda --help        (使い方の説明)

(5)GPU版(MPI対応)を1台のコンピューターの複数のグラフィックスボードで使用するとき

> mpiexec -n <process> ost_cuda_mpi [-solver|-post] [-hdm|-um] [-geom] 入力データ
プロセス数にグラフィックスボードの個数を指定します。例えば以下のようになります。(注1)(注2)(注3)(注4)
> mpiexec -n 2 ost_cuda_mpi -solver 入力データ   (計算を行いますがポスト処理を行いません。計算結果がost.outに出力されます。)
> mpiexec -n 2 ost_cuda_mpi 入力データ      (計算に続いてポスト処理を行います。ost.outは出力しません。)
> ost_cuda_mpi --help        (使い方の説明)

(6)GPU版(MPI対応)を複数台のコンピューターで使用するとき

> mpiexec -hosts <num> ホスト名 プロセス数 ... ost_cuda_mpi -hosts <num> プロセス数 ... [-solver|-post] [-geom] 入力データ
例えば以下のようになります。(注1)(注2)(注3)(注4)(注6)
> mpiexec -hosts 2 localhost 1 PC2 1 ost_cuda_mpi -hosts 2 1 1 入力データ  (2台、グラフィックスボードの個数=1+1)

(注1)
引数-solverをつけると計算を行いますがポスト処理を行いません。計算結果がost.outに出力されます。 引数-postをつけるとost.outを読み込んでポスト処理を行います。 引数-solverも-postもないときは計算に続いてポスト処理を行います。ost.outは出力しません。
(注2)
初回にセキュリティソフトが警告を出したら許可してください。(MPIプログラムは複数のプロセスを起動しますのでマルウェアと認識されることがあります)
(注3)
mpiexecの詳細についてはコマンド"mpiexec -help"または"mpiexec -help2"を参考にしてください。
(注4)
複数台のコンピュータで計算するには予めすべてのコンピューターでコマンドプロンプトで"smpd -p 8677"を起動してください。 ホスト名はコマンド"hostname"でわかります。 複数台のコンピュータで計算する方法の詳細については[11]を参考にしてください。
(注5)
通常はデバイス番号は0です。何らかのメッセージが出て実行できないときはデバイス番号を変えてみてください。
(注6)
2番目の"-hosts"の後に最初の"-hosts"の後の数字だけを取り出したものを並べてください。 これはMPIプログラムのランクとGPUのデバイス番号の対応をとるために必要です。

3.2.2 標準出力

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


リスト3-2-1 標準出力
<<< OpenSTF (CPU) Ver.1.2.0 >>>		プログラムのタイトルとバージョン
No. of threads = 1			CPUのときはスレッド数、GPUのときはGPU情報
Sat Jul 28 10:11:30 2018		開始日時
Title = sample				タイトル
Cells = 50 x 50 x 50 = 125000		セル数 Nx x Ny x Nz = Nx * Ny * Nz
No. of voltages   = 2			電極電圧データの数
No. of dielecrics = 1			比誘電率データの数
No. of geometries = 2 + 1 = 3		電極データの数+誘電体データの数=物体形状の数
No. of plot 1d.s  = 1			線上分布図の数
No. of plot 2d.s  = 2			面上分布図の数
Memory size       = 1 [MB]		使用メモリー
Omega             = 1.95		緩和係数ω
Max iterations    = 1000		最大反復回数
Convergence = 0.0000100			収束判定条件
=== iteration start ===			反復計算開始
      step    residual
         0    0.0621045			反復回数と残差
        50    0.0041228
       100    0.0003342
       150    0.0000397
       185    0.0000100
  --- converged.			収束したことを表す
Volt#   Q[C]				電極電圧番号とそれに対応した総電荷
    1  -2.84883e-10
    2   2.84883e-10
Total energy [W] = 2.69339e-10		全静電エネルギー
=== output files ===
ost.log, geom3d.htm, ev2d.htm, ev3d.htmm 1d.log, 2d.log		出力ファイル名
=== normal end ===			正常終了を表す
Sat Jul 28 10:11:31 2018		終了時刻
cpu time = 0.409 [sec]			計算時間

3.2.3 図形出力

計算が終了すると以下の図形ファイルが出力されます。
ただし、geom3d.htmは計算の最初に出力されていますので、 計算の途中でも入力データを確認することができます。
それらの意味と見方は3.4を参考にして下さい。

  1. geom3d.htm : 入力データの物体形状の3D表示

ポスト処理が終了すると以下の図形ファイルが出力されます。
それらの意味と見方は3.5を参考にして下さい。

  1. ev2d.htm : 2次元図形出力(収束状況、線上分布図、面上分布図)
  2. ev3d.htm : 3次元図形出力(面上分布図)

3.2.4 数値出力

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

  1. ost.log : 標準出力と同じもの

ポスト処理が終了すると以下の数値ファイルが出力されます。
それらの意味は3.6を参考にして下さい。

  1. 1d.log : 線上分布図
  2. 2d.log : 面上分布図