OpenSTFをコマンドライン実行する方法は以下の通りです。
行頭の"> "はプロンプトであり入力する必要はありません。
[]内はオプションであり省略可能です。
|で区切られた部分は一つを選択してください。
"入力データ"は必須です。
コマンドラインのオプションはWindowsとLinuxで同じです。(注1)
(注1)
Windows環境では実行プログラムに拡張子".exe"が必要になることがあります。
OpenSTFには使用された高速化技術によっていくつかの実行プログラムがあります。
それらは実行方法と計算時間は異なりますが、計算機能は同じなので、
同じ計算結果が得られます。
(1) 1台のコンピューターの1個以上のCPUでOpenMP版を使用するとき
> ost [-n <thread>] [-no-vector|-vector] 入力データ
例えば以下のようになります。
> ost 入力データ (1スレッドで計算する)
> ost -n 4 入力データ (4スレッドで計算する)
> ost -no-vector 入力データ (novectorモードで計算する)
> ost -vector 入力データ (vectorモードで計算する)
> ost (使い方の説明)
> ost --help (使い方の説明)
> ost --version (バージョンの表示)
(2) 1台のコンピューターの1個以上のCPUでMPI版を使用するとき
1台のコンピューターで使用するときは(1)の方法で十分ですが、以下のようにMPI対応プログラムを使用することもできます。
> mpiexec -n <process> ost_mpi [-p <x> <y> <z>] [-n <thread>] [-no-vector|-vector] 入力データ
例えば以下のようになります。(注1)(注2)
> mpiexec -n 8 ost_mpi 入力データ (8プロセス、各1スレッドで計算する)
> mpiexec -n 4 ost_mpi -n 2 入力データ (4プロセス、各2スレッドで計算する)
> mpiexec -n 8 ost_mpi -p 4 2 1 入力データ (8プロセス、X/Y/Z=4/2/1分割で計算する)
> ost_mpi (使い方の説明)
(3) 複数台のコンピューターの各1個以上のCPUでMPI版を使用するとき
> mpiexec -hosts <num> ホスト名 プロセス数 ... ost_mpi [-p <x> <y> <z>] [-no-vector|-vector] 入力データ
例えば以下のようになります。(注1)(注2)(注3)
> mpiexec -hosts 2 localhost 8 PC2 4 ost_mpi 入力データ (2台、8+4プロセス)
(4) 1台のコンピューターで1個のGPUを使用するとき
> ost_cuda [-hdm|-um] [-device <device>] [-no-vector|-vector] 入力データ
例えば以下のようになります。
> ost_cuda 入力データ
> ost_cuda -hdm 入力データ (host-device-memoryを使用する:既定値)
> ost_cuda -um 入力データ (unified-memoryを使用する)
> ost_cuda -device 0 入力データ (デバイス番号=0:既定値)(注4)
> ost_cuda (使い方の説明)
(5) 1台のコンピューターで2個以上のGPUを使用するとき
> mpiexec -n <process> ost_cuda_mpi [-hdm|-um] [-p <x> <y> <z>] [-no-vector|-vector] 入力データ
プロセス数にグラフィックスボードの個数を指定します。例えば以下のようになります。(注1)(注2)(注3)
> mpiexec -n 2 ost_cuda_mpi 入力データ (2個のGPUで計算する)
> ost_cuda_mpi (使い方の説明)
(6) 複数台のコンピューターの各1個以上のGPUを使用するとき
> mpiexec -hosts <num> ホスト名 プロセス数 ... ost_cuda_mpi -hosts <num> プロセス数 ... [-hdm|-um] [-p <x> <y> <z>] 入力データ
例えば以下のようになります。(注1)(注2)(注3)(注5)
> mpiexec -hosts 2 localhost 1 PC2 1 ost_cuda_mpi -hosts 2 1 1 入力データ (2台、グラフィックスボードの個数=1+1)
(注1)
mpiexecの詳細についてはコマンド"mpiexec -help"または"mpiexec -help2"を参考にしてください。
(注2)
引数"-p"を用いて領域分割を指定するときは、
X/Y/Z方向の領域分割数の積とプロセス数が一致する必要があります。
一致しないときはX方向のみがプロセス数で分割されます。
(注3)
複数台のコンピュータで計算するには予めすべてのコンピューターでコマンドプロンプトで
"smpd -p 8677"を起動してください。
ホスト名はコマンド"hostname"でわかります。
"localhost"はユーザーの使用しているコンピューターです。
複数台のコンピュータで計算する方法の詳細については[11]を参考にしてください。
(注4)
CUDAに対応したGPUには性能が高い順にデバイス番号0,1,...が割り当てられます。
通常はデバイス番号には0を指定してください。
何らかのメッセージが出て実行できないときはデバイス番号を変えてみてください。
実行時に画面に表示されるデバイス名を確認してください。
デバイス番号については[11]を参考にしてください。
(注5)
2番目の"-hosts"の後に最初の"-hosts"の後の数字だけを取り出したものを並べてください。
これはMPIのプロセス番号とGPUのデバイス番号の対応をとるために必要です。
計算終了後、以下のコマンドでポスト処理を行います。
ポスト処理は入力データのポスト処理制御部を変更して繰り返し行うことができます。
> ost_post 入力データ
(注1)
上記で引数"-html"をつけて実行するとev.ev2,ev.ev3の代わりに
ev2d.htm,ev3d.htmが出力されます。
これらはHTMLファイルなのでブラウザで開いてください。
ポスト処理終了後、以下のコマンドで図形表示を行います。
(エクスプローラーで実行プログラムをダブルクリックしても可)
> ev2d.exe (図形表示2D)
> ev3d_otk.exe (図形表示3D)
Linuxでは前節の方法でビルドした後、以下のように使用してください。
(Linuxでは図形出力がHTML形式であることが必要なので操作法が異なります。
下記と同じ作業はWindowsでも行えますが、WindowsにはGUIがあるので不要です)
●計算
計算方法は4.6.1と同じです。
ただし、入力データに"plot3dgeom = 1"の一行があるときは、
物体形状がgeom3d.htmに出力され計算を行わずに終了します。
geom3d.htmをブラウザで開いて確認してください。
その後"plot3dgeom = 1"行を"#plot3dgeom = 1"とコメントアウトして計算を行ってください。
●ポスト処理
計算終了後、以下のコマンドにより、2D図形データがev2d.htmに、
3D図形データがev3d.htmに出力されます。
それらをブラウザで開いてください。
> ost_post -html 入力データ
ローカル環境がWindowsで、リモートにLinuxの高速な計算環境があるときは、
リモートで計算を行い、それ以外の作業を操作しやすいWindowsで行うことができます。
ただし、計算結果ファイルost.outは大規模な問題ではGBのオーダーになるので、
ost.outを転送するかどうかで二通りの方法があります。
(1)の方法は操作性に優れますがファイル転送に時間がかかります。
(1) ost.outを転送する方法
(2) ost.outを転送しない方法