« Rubyの輝きに魅了される | メイン | JOGLをつかってJavaでOpenGL »

OpenFOAMで並列計算を実行する

  はてなブックマークに追加 このエントリを livedoor クリップへ追加

OpenFOAMは、解析を並列化して実行することができます。
早速試してみました。


解析を並列化して実行するための流れは、以下のようになります。

(1)設定ファイルをつくる。

(2)設定ファイルを読み込んで、並列計算の準備をする。

(3)LAMデーモンを起動する。

(4) mpirunを実行する。

(5)計算終了後、LAMデーモンを終了する。

以下では、それぞれの項目について具体的にみていくことにします。

ここでは、$FOAM_RUN/tutorials/icoFoamの中にあるcavityの解析を並列化することにします。

また、以下では
<root>$FOAM_RUN/tutorials/icoFoam

<case>cavity
を意味します。


(1)設定ファイルをつくる。
decomposeDictmachinesの2つのファイルを準備します。

decomposeDict

このファイルは、解析領域をどのようにCPU(プロセス)に割り振るかを指定するためのファイルです。
作成したファイルは、のsystemディレクトリに配置します。

テンプレートとなるファイルが$FOAM_RUN/tutorials/interFoam/damBreak/systemのなかにあります。
今回はこれをコピーして利用します。

numberOfSubdomainsで、解析をいくつに分割して行うかを指定します。
processorWeightsで、それぞれのCPU(プロセス)にどのくらい負荷を要求するかを指定します。

今回は、numberOfSunbdomainsを4、それぞれのプロセスの負荷を1に指定します。
(つまり、変更なしです。)


machines
次に、並列計算に使えるホスト名とCPUの数を指定したファイル(ここでは、machines)をつくります。
例を示します。

例1)ローカルホストのみで計算、CPUが4つの場合
localhost cpu=4

例2)host1とhost2という2台のコンピュータで、それぞれCPUが2つの場合
host1 cpu=2
host2 cpu=2

(今回は、例1に示したほうを利用しました。)


(2)設定ファイルを読み込んで、並列計算の準備をする。
並列計算を実行するために、以下のコマンドを実行して並列計算の準備をします。

decomposePar <root> <case>


(3)LAMデーモンを起動する。

lamboot -v <machines>

(LAMとはLocal Area Multicomputerの略だそうですが、詳しいことはわかりません。並列計算を簡単にできるように助けてくれるプログラム?ていどに考えています(笑)。より詳しい情報が知りたい方は、こちらをどうぞ。)


(4) mpirunを実行する。

mpirun -np 4 icoFoam <root> <case> -parallel


(5)計算終了後、LAMデーモンを終了する。

lamhalt -d


以上の流れをおさえれば、他の解析や環境でも簡単に並列計算が実行できるとおもいます(たぶん)(笑)。

Ads BOARD








最近のエントリーとその関連エントリー

トラックバック

このエントリーのトラックバックURL:
http://kazuhiro.ty.land.to/blog/mt-tb.cgi/77

  Map