並列バージョンの実行

効率的な解析を実現するために、オプションのパラメータを使用して並列バージョンの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ダイアログ。
Note: Windows PCによる並列クラスターの場合は、各ホストの同じ場所にFekoをインストールする必要があります。
クラスターを構成しているPCから並列ジョブを開始すること、およびこのホストをリストの先頭に配置することをお勧めします。1

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



Figure 2. Component launch optionsダイアログ。
Component launch optionsダイアログ(Figure 2を参照)のFekoタブで、Fekoの解析に関する補足設定を指定することもできます。
Tip: Output MFLOPS rate... とNetwork latency and bandwidthオプションを使用して、ノードに最適な設定になるようにします。
Fekoでは、各種ノードのパフォーマンスを示す表が出力されます。これらのチェックは、Fekoで解析結果が計算されるたびに繰り返されます。
CAUTION:
テストファイルに複数の周波数を指定している場合は、計算に著しく長時間を要することがあります。したがって、デバッグの目的で設定する場合を除き、初期設定後にこれらのオプションの選択を解除します。

このタブでは、Fekoの実行で目標とする優先度を設定することもできます。Normalより低い優先度を設定すると、同じコンピューター上で他のインタラクティブな作業を実行できます。ただし、クラスターを構成するすべてのマシンは、そのクラスターにある最も低速なノードの速度で動作するので、クラスターのいずれかのノードで、CPUの負荷が大きい他のジョブを開始することは一般的にお勧めできません。

設定した並列解析を使用するには、Solve/RunタブのRun/Launchグループで、 Parallelアイコンをクリックします。メニューオプションの横にチェックマークが表示されます。このオプションにチェックマークが表示されているときに実行を開始したFekoソルバーでは、並列バージョンのFekoが使用されます。

UNIXワークステーションなどのコマンドラインから次のように入力すると、並列バージョンの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の並列実行で使用する認証方法を設定します。次の認証方法を使用できます:
default:プラットフォーム依存のデフォルト認証方法を使用します(このオプションを指定していない場合と同じです)。
localonly:ローカルホスト上でのみ並列ジョブを実行するので認証は不要です。
sspi:Windows Active Directory(SSPI)認証を使用します。このオプションはWindows専用です。
registry:認証情報(ユーザー名とパスワード)を暗号化してレジストリに保存します。このオプションはWindows専用です。
使用可能な各ホスト上で起動するプロセスの数を、次の一般的な構文でマシンファイルに指定します。
Hostname:Number of processes

たとえば、host1に4つのプロセッサが搭載され、host2に8つのプロセッサが搭載されている場合、マシンファイルの記述は次のようになります:

host1:4
host2:8

このマシンファイルを使用して、6つの並列プロセスを要求すると、Fekoでは、host1上で4つのプロセスが使用され、host2上で2つのプロセスが使用されます。

どのホストでもそこで開始するプロセスを1つのみとした場合、マシンファイルではhost3:1と記述する代わりに、host3という簡略記述を使用できます。

マシンファイル(machines.feko)は%FEKO_HOME%\shared\mpiに置かれ、並列バージョンのFekoをインストールするときに自動的に作成されます。このファイルは、Fekoで使用されるデフォルトのマシンファイルです。このファイルを手動で編集することで、プロセスの配分を変更できます(ただし、このファイルの編集はできる限り避けてください)。
Tip: インストール時に指定した数と異なる数の並列プロセスが必要な場合は、上記の構文に従って別のマシンファイルを作成します。
環境変数FEKO_MACHFILEを使用して、デフォルトのマシンファイルの代わりに、このファイルがRUNFEKOで使用されるように設定できます。たとえば、目的のマシンの名前がmachnameである場合、必要なコマンドは次のとおりです(shシェルの場合)。
FEKO_MACHFILE=./machname
export FEKO_MACHFILE
runfeko example1 -np 6
また、コマンドライン上で次のように入力して、マシンファイルの名前を引数としてRUNFEKOに渡すこともできます。
runfeko example1 -np 6 --machines-file ../../machname
RUNFEKOは、プラットフォームやMPIの実装とは無関係に使用できます(詳細については、環境変数FEKO_WHICH_MPIの説明を参照してください)。特定のアプリケーションや経験を積んだユーザーの場合、追加のオプションをMPIに渡すことが必要な場合もあります3。これらのオプションは、引数--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
Note: host1host2は例にすぎず、実際の情報はマシンファイルから取得されます。

--mpi-optionsコマンドラインオプションを使用するほか、特定の環境変数を設定することでMPI環境を制御できます。たとえば、Intel MPIを使用する場合は、どのデバイス(ソケット、共有メモリ、RDMAデバイスなど)を使用するかを制御するうえで、環境変数I_MPI_DEVICE4がきわめて重要です。このような環境変数は、Lua初期化スクリプトを使用して内部で設定されます。詳細については、Fekoのインストールガイドを参照してください。

1 ローカルマシンを指定しなくてもジョブを起動できます。.fek入力ファイルは、リストの先頭にあるPCに置く必要があり、出力ファイルである.out.bofは、このPC上で、ローカルマシン上のプロジェクトディレクトリと同じディレクトリに作成されます。ローカルマシンとリストの先頭にあるマシンとでこれらのディレクトリが異なる場合は、2台のマシンの間でユーザーがファイルを転送する必要があります。代替手段として、リモートで並列起動する方法もあります。この場合は、Fekoによってこのコピー作業が明示的に実行されます。
2

詳細については、Fekoのインストール環境にあるmpi\<platform>\<mpi-version>\docディレクトリで、Intel MPIとMPICHに関するドキュメントを参照してください。

3 この種の認証要求にWindowsドメインが対応できるようにするには、ドメイン管理者による別の(1回限りの)構成設定が必要になることがあります。
4 詳細については、Fekoのインストール環境にあるmpi\<platform>\<mpi-version>\docディレクトリで、Intel MPIとMPICHに関するドキュメントを参照してください。