RDMAを使った実行方法
start-methods.cclによるFabricの制御
CFXが使うMPIの環境変数を start-methods.ccl
ファイルで制御できる。
つまり、これを使ってInfinibandのFabricを制御することができる。
vi ${ANSYS_INSTALL_DIR}/v201/CFX/etc/start-methods.ccl
Intel MPI のときは
-
START METHOD
がIntel MPI Distributed Parallel
になっているブロックを探す -
Appfile Host Entry=
の中に以下を付け加える。
Infinibandのとき
-genv I_MPI_DEBUG +2 -genv I_MPI_FABRICS shm:dapl
Omni-Pathのとき
-genv I_MPI_DEBUG +2 -genv I_MPI_FABRICS shm:ofa
下記にその編集例を示す。
START METHOD: Intel MPI Distributed Parallel
(省略)
Appfile Host Entry = -n %{hostprocs} -host %{hostname} -wdir "%{workdir_host}" -genv I_MPI_DEBUG +2 -genv I_MPI_FABRICS shm:ofa -env LD_PRELOAD %{impidir}/lib/libmpi_mt.so -env %{ldpathvar} %{rldpath} %{executable} %{arguments}
(省略)
END
I_MPI_DEBUG
オプションは使われているFABRICをログに表示し確認するために用いている。
実行方法
実行コマンド
cfx5solve -def ${INPUT_FILENAME}.def \
-par \
-par-dist ${cfx_hosts} \
-part ${NCPUS} \
-large \
-start-method "Intel MPI Distributed Parallel" \
-batch
マシンファイルの形式
${cfx_hosts}
の中身は以下のようなイメージ。この例だと80coresで計算が実行される
xs-cs2-15*40,xs-cs2-16*40
まとめ
start-methods.ccl
ファイルを開き、Intel MPI Distributed Parallel
のブロックを編集する。具体的には Appfile Host Entry=
の真ん中あたりに下記を付け加えれば良い
- InfinibandかつRDMA
-genv I_MPI_FABRICS shm:dapl
- Omni-PathかつRDMA
-genv I_MPI_FABRICS shm:ofa
- TCP-over-IB(TCPoIB)のとき(マシンファイルに注意: ibのネットワークカードを指定すること)
-genv I_MPI_FABRICS shm:tcp
Appendix: CFXのマニュアルより関連項目を抜粋し日本語化
ほとんどの場合、デフォルト設定で十分であり、環境変数を設定する必要はないかもしれません。
ANSYS CFXは、環境変数 "CFX5_IMPI_DIR"を使用して、使用するIntel MPIインストールを選択します。
デフォルト設定は、ANSYS CFXによって"/../commonfiles/MPI/Intel" ディレクトリに自動的にインストールされるバージョンを指します。
cfx5info -v
を使用して、CFX5_IMPI_DIR
およびその他の環境変数の現在の設定を見つけることができます。別のインテルMPIバージョンを使用する場合は、そのバージョンを別の場所にインストールし、CFX5_IMPI_DIR
をその場所に設定できます。
Intel MPIの制御に使用できるいくつかの環境変数があり、ANSYS CFX起動スクリプトからは直接アクセスできない柔軟性が追加されます。たとえば、環境変数は、ネットワークファブリックの選択(以下で簡単に説明します)、process pinningの制御、および collective operation 制御に使用できます。
これらの環境変数は、${ANSYS_INSTALL_DIR}/v201/CFX/etc/start-methods.ccl
ファイルのstartコマンドを変更し、インテルMPIオプション -env
または -genv
を使用して設定できます(この使用例は、ネットワークファブリックのセクションに記載されています)。すべてのオプションと環境変数の詳細については、Intel MPIのドキュメントを参照してください。
いくつかの有用な環境変数には、以下で説明するものが含まれます。これらの環境変数が設定されている場合、起動スクリプトは、ANSYS CFX実行用にそれらを自動的に設定します。
I_MPI_MPD_REMSH
インテルMPIがリモートマシンでジョブを生成するために使用する方法を指定します。 Intel MPIのデフォルトはsshです。ただし、デフォルトでは、ANSYS CFXソフトウェアはこれをCFX5RSHに使用される設定と同じに設定し、CFX5RSHが設定されていない場合はrshを設定します。この変数はLinuxにのみ適用されます。
I_MPI_FABRICS
および I_MPI_FABRICS_LIST
使用するネットワークファブリックと、インテルMPIがそれらを検索する順序を指定します。
Appendix: 参考にしたIntel MPI 関連情報
- ファブリックの選択(Page13, インテル® MPI ライブラリー for Linux* ユーザーズガイド)
- ファブリック制御(Page132, インテル® MPI ライブラリー for Linux* リファレンス・マニュアル)
- https://scc.ustc.edu.cn/zlsc/tc4600/intel/2016.0.109/mpi/User_Guide/I_MPI_FABRICS.htm
- https://jp.xlsoft.com/documents/intel/mpi/51/intel-mpi-5.1.3-reference-manual-linux-JA.pdf
- https://scc.ustc.edu.cn/zlsc/chinagrid/intel/Reference_Manual/Communication_Fabrics_Control.htm
- https://software.intel.com/content/www/us/en/develop/articles/tuning-the-intel-mpi-library-basic-techniques.html