SLURMビルド時の「unable to locate ofed installation」について
| 登録日 | :2024/12/12 04:56 |
|---|---|
| カテゴリ | :SLURM |
SLURMのビルドで「unable to locate ofed installation」となっていますが、これはSLURMでのインフィバンド考慮が必要な場合には必要ですが、商用ソフトFLuentなどでのインフィニバンド利用には影響ない、という認識で良いでしょうか。
>はい、その認識で正しいです。
SLURMのビルド時に「unable to locate ofed installation」というエラーが出る場合、SLURMがインフィニバンドのサポートを組み込むことができないことを意味します。しかし、これは商用ソフトウェアであるFluentなどがインフィニバンドを利用することには影響しません。
理由は以下の通りです:
商用ソフトウェア(Fluentなど)は、通常、独自のMPI実装(例:Intel MPI)を内部で使用しており、これらは直接インフィニバンドを検出し利用できます。
インフィニバンドドライバ(MLNX_OFED)が適切にインストールされていれば、ハードウェアレベルでの通信は自動的に最適化されます。
SLURMは主にジョブスケジューリングと資源管理を担当しており、アプリケーションの内部通信には直接関与しません。
したがって、SLURMがインフィニバンドのサポートなしでビルドされていても、Fluentなどの商用ソフトウェアは問題なくインフィニバンドを利用できます。ただし、SLURMのインフィニバンドサポートがあれば、より効率的なジョブ配置や高度なネットワークトポロジーの考慮が可能になる場合があります。
以下、詳細調査内容
SLURMのビルド中に「unable to locate ofed installation」という警告が表示される理由は、OFED(OpenFabrics Enterprise Distribution)がシステムにインストールされていないか、正しく検出されていないためです。OFEDは、InfiniBandやRDMA(Remote Direct Memory Access)をサポートする高性能ネットワークスタックで、HPC環境での通信性能を向上させるために使用されます。
このエラーの原因
OFEDがインストールされていない
SLURMのビルド時にInfiniBandやRDMA関連の機能を有効にする場合、OFEDが必要です。OFEDがインストールされていない場合、この警告が表示されます。
OFEDのインストールパスが指定されていない
ビルドプロセス中に--with-ofedオプションでOFEDのインストールディレクトリを指定しないと、デフォルトパスで検出できないことがあります。
ライブラリやヘッダーファイルが不足している
必要なライブラリやヘッダーファイル(例: libibverbsやrdma-core)が欠けている場合もこのエラーが発生します。
解決方法
以下の手順で問題を解決できます:
OFEDのインストール
最新のMLNX_OFED(Mellanox OFED)をダウンロードしてインストールします。たとえば:
wget <MLNX_OFEDダウンロードURL>
sudo mount -o ro,loop MLNX_OFED_LINUX-*.iso /mnt
cd /mnt
sudo ./mlnxofedinstall
インストール後、システムを再起動します。
ビルド時にOFEDパスを指定
SLURMのconfigureコマンドで--with-ofed=
./configure --prefix=/path/to/slurm --with-ofed=/usr
必要なパッケージの確認
InfiniBand関連のライブラリやツールが不足していないか確認します。
sudo apt install rdma-core libibverbs-dev ibverbs-utils
警告を無視する
InfiniBandやRDMA機能を使用しない場合、この警告は無視しても問題ありません。
補足
InfiniBandやRDMA機能を利用しない環境では、特別な設定なしでSLURMをビルドしても動作します。ただし、HPCクラスターで高性能通信を求める場合は、OFEDの適切な設定が重要です。
InfiniBandやRDMA機能を利用する場合は、再ビルド以外に回避方法はありますか
はい、InfiniBandやRDMA機能を利用する場合、SLURMを再ビルドせずに問題を回避する方法があります:
OFEDのインストール:
システムにOpenFabrics Enterprise Distribution (OFED)をインストールします1。例えば、以下のコマンドでMellanox OFEDをインストールできます:
wget <MLNX_OFEDダウンロードURL>
sudo mount -o ro,loop MLNX_OFED_LINUX-*.iso /mnt
cd /mnt
sudo ./mlnxofedinstall
必要なパッケージのインストール:
InfiniBandとRDMA関連のパッケージをインストールします1:
sudo dnf install rdma-core libibverbs-utils infiniband-diags
rdmaサービスの設定:
/etc/rdma/modules/rdma.confファイルを編集し、必要なモジュールのコメントを解除します1。
サービスの再起動:
変更を適用するために、rdmaサービスを再起動します1:
sudo systemctl restart rdma-load-modules@rdma.service
InfiniBandデバイスの確認:
ibstatコマンドを使用して、InfiniBandデバイスが正しく認識されているか確認します3。
SLURMの設定ファイルの更新:
SLURMの設定ファイル(通常はslurm.conf)で、InfiniBandやRDMAを使用するように設定を更新します。
SLURMの設定ファイル(通常はslurm.conf)で、InfiniBandやRDMAを使用するように設定を更新する必要があります。以下の手順に従って設定を行います:
slurm.confファイルを編集します:
sudo nano /etc/slurm/slurm.conf
以下の設定を追加または更新します:
SwitchTypeをInfiniBandに設定:
SwitchType=switch/none
MPI設定を追加:
MpiDefault=pmi2
ネットワーク設定を追加:
SlurmctldParameters=enable_configless
CommunicationParameters=EnableIPv4,DisableIPv6
ノード設定にInfiniBandデバイスを追加:
NodeName=node[1-X] Sockets=Y Cores=Z ThreadsPerCore=W State=UNKNOWN Feature=IB
(X, Y, Z, Wは環境に合わせて適切な値に置き換えてください)
設定ファイルを保存し、SLURMサービスを再起動します:
sudo systemctl restart slurmctld
sudo systemctl restart slurmd
これらの設定により、SLURMがInfiniBandネットワークを認識し、RDMAを利用できるようになります13。
注意:具体的な設定値は環境によって異なる場合があるため、システム管理者に確認することをお勧めします。
商用ソフトウェア(Fluentなど)が内部でIntel MPIなどを使用してインフィニバンドを利用する場合、SLURM側での特別な設定は通常必要ありません。以下の理由から、デフォルトの設定で動作することが多いです:
インフィニバンドの設定が適切に行われていれば、ハードウェアレベルでの通信は自動的に最適化されます。
商用ソフトウェアは、利用可能な最適なネットワーク接続を自動的に検出し、使用するように設計されていることが多いです。
Intel MPIなどのMPI実装は、インフィニバンドを含む高速ネットワークを自動的に検出し、利用するように設計されています。
ただし、以下の点に注意が必要です:
ジョブスクリプトでは、適切なリソース要求(例:ノード数、コア数)を指定する必要があります。
特定のインフィニバンド対応ノードを使用したい場合は、SLURMのconstraintオプションを使用して指定することができます。
大規模なジョブや特殊な要件がある場合、SLURMの設定(例:topology.conf)を最適化することで、より効率的なジョブ配置が可能になることがあります。
結論として、適切にインフィニバンドが設定された環境では、商用ソフトウェアの内部MPIがインフィニバンドを利用する場合、通常はSLURM側での追加設定は必要ありません。ただし、特定の要件や大規模な並列計算の場合は、システム管理者と相談して最適な設定を行うことをお勧めします。
すなわち、SLURMがインフィニバンドを考慮しなくても、商用ソフトウェアの場合のインフィニバンド利用は基本的に問題ない、ということですね。
はい、その理解で正確です。商用ソフトウェア(FluentなどのCAEソフトウェア)の場合、インフィニバンドの利用は基本的に問題ありません。以下の理由から、SLURMが特別にインフィニバンドを考慮しなくても、商用ソフトウェアは適切にインフィニバンドを利用できます:
商用ソフトウェアは、利用可能な最適なネットワーク接続を自動的に検出し、使用するように設計されていることが多いです。
内部で使用されるIntel MPIなどのMPI実装は、インフィニバンドを含む高速ネットワークを自動的に検出し、利用するように設計されています。
インフィニバンドの設定が適切に行われていれば、ハードウェアレベルでの通信は自動的に最適化されます。
ただし、特定の要件や大規模な並列計算の場合は、システム管理者と相談して最適な設定を行うことが推奨されます。また、ジョブスクリプトでは適切なリソース要求(ノード数、コア数など)を指定する必要があります。