並列バージョンの実行
効率的な解析を実現するために、オプションのパラメータを使用して並列バージョンのFekoを実行します。
複数のFekoプロセスを同時に実行できるライセンスが供与されているシステムであれば、並列バージョンのFekoを使用できます。マルチコアCPUを搭載したシステムとして、たとえばクワッドコアCPUを搭載したシステムがあるとすると、シーケンシャルFekoライセンスを使用することで、最大4つの並列プロセスを起動する並列解析を実行できます。複数のCPUを搭載したシステムとして、たとえばデュアルコアCPUを2つ搭載したシステムがあるとすると、それら4つのコアすべてを使用して並列解析を実行するには、2つのCPUに対応した並列Fekoライセンスが必要です。
GUIから並列バージョンのFekoを使用するには、ノードごとに使用するプロセスの数とホスト名を設定する必要があります(これらの情報はFekoのインストール時に初期設定しているので、その初期設定を変更する場合にのみ再設定が必要です)。
Solve/RunタブのRun/Launchグループで、 ダイアログランチャーをクリックします。
Feko ソルバータブのParallel executionの、Configure ボタンをクリックします。表示されたダイアログ(Figure 1を参照)で、ホスト名とそれらのホストごとに起動するプロセスの数を入力します。通常は、マシンで使用できるコアあたりの起動プロセス数を1にします(たとえば、クワッドコアマシンでは4つのプロセスを起動します)。このオプションを使用して、簡易的なロードバランシングシステムを実現することもできます。そのシステムでは、他のホストよりも高速なCPUや多くのメモリを搭載しているホスト上で、他のホストよりも多くのプロセスを実行します。AddボタンとRemoveボタンを使用して、それぞれ現在のクラスター設定へのノードの追加とそこからのノードの削除が可能です。

Figure 1. 並列ホストを設定するMachines configurationダイアログ。
OKをクリックすると、環境変数FEKO_USER_HOMEで指定されたディレクトリにあるmachines.fekoファイルにホストの情報が保存されます。実際の並列プロセス起動で、このファイルが使用されます。

Figure 2. Component launch optionsダイアログ。
このタブでは、Fekoの実行で目標とする優先度を設定することもできます。Normalより低い優先度を設定すると、同じコンピューター上で他のインタラクティブな作業を実行できます。ただし、クラスターを構成するすべてのマシンは、そのクラスターにある最も低速なノードの速度で動作するので、クラスターのいずれかのノードで、CPUの負荷が大きい他のジョブを開始することは一般的にお勧めできません。
設定した並列解析を使用するには、Solve/RunタブのRun/Launchグループで、 Parallelアイコンをクリックします。メニューオプションの横にチェックマークが表示されます。このオプションにチェックマークが表示されているときに実行を開始したFekoソルバーでは、並列バージョンのFekoが使用されます。
runfeko example1 -np x
ここで、-np
に続くパラメータx
には、並列解析で使用するプロセスの数を指定します。並列バージョンでは、シーケンシャルバージョンの実行で挙げられている引数のほか、次のオプションのパラメータを指定できます:
- -np x
x
個のプロセスを使用して並列バージョンのFekoを開始します。マシンファイルに記述されているプロセッサをすべて使用することを指定する-np all
オプションもサポートされています。
- --machines-file machname
- machnameファイルは、ノード名とCPU数が記述されたマシンファイルです(下記を参照)。
- --mpi-options ...
- 別の
--xxx-options
パラメータを使用していない場合は、このオプションに続いて指定したすべてのオプション(mpirunやmpiexecなど)がMPIランチャーに渡されます。 - --parallel-authenticate <method>
- Fekoの並列実行で使用する認証方法を設定します。次の認証方法を使用できます:
Hostname:Number of processes
たとえば、host1に4つのプロセッサが搭載され、host2に8つのプロセッサが搭載されている場合、マシンファイルの記述は次のようになります:
host1:4
host2:8
このマシンファイルを使用して、6つの並列プロセスを要求すると、Fekoでは、host1上で4つのプロセスが使用され、host2上で2つのプロセスが使用されます。
どのホストでもそこで開始するプロセスを1つのみとした場合、マシンファイルではhost3:1
と記述する代わりに、host3
という簡略記述を使用できます。
FEKO_MACHFILE=./machname
export FEKO_MACHFILE
runfeko example1 -np 6
runfeko example1 -np 6 --machines-file ../../machname
--mpi-options
に続いて追加します。たとえば、FEKO_WHICH_MPI=6として、ScaMPIクラスター上で次の呼び出しをすべて1行に記述して発行するとします。runfeko example_08 -np 6 --mpi-options -immediate_handling \
threaded -smtrace 5-6
この呼び出しが内部で解釈され、次のコマンドでFekoが実行されます。
/opt/scali/bin/mpimon -export env -immediate_handling threaded \
-smtrace 5-6 /opt/feko/bin/feko.csv example_08 -- host1 4 \
host2 2
host1
とhost2
は例にすぎず、実際の情報はマシンファイルから取得されます。--mpi-options
コマンドラインオプションを使用するほか、特定の環境変数を設定することでMPI環境を制御できます。たとえば、Intel MPIを使用する場合は、どのデバイス(ソケット、共有メモリ、RDMAデバイスなど)を使用するかを制御するうえで、環境変数I_MPI_DEVICE4がきわめて重要です。このような環境変数は、Lua初期化スクリプトを使用して内部で設定されます。詳細については、Fekoのインストールガイドを参照してください。
詳細については、Fekoのインストール環境にあるmpi\<platform>\<mpi-version>\docディレクトリで、Intel MPIとMPICHに関するドキュメントを参照してください。