間違った数のCPUを使用したMPIEXEC
-
28-09-2019 - |
質問
MPIクラスターをセットアップしようとしています。しかし、MPD.CONFファイルに追加されたCPUの数が正しく使用されていないという問題があります。 3つのUbuntuサーバーがあります。 48コアを備えたOpteronは、8コアを備えた8コアCalc1を備えた8コアを備えています。
私のmpd.hostsは次のように見えます:
opteron:46
calc1:6
calc2:6
起動した後(mpdboot -n 3 -f mpd.hosts)システムが実行されています。 mpdtrace->それらの3つすべてがリストされています。
しかし、「mpiexec -n 58 raxmlhpc -mpi ...」のようなプログラムを実行すると、Calc1とCalc2が多くのジョブに到達し、Opteronが同時に少数になります。私は何が間違っているのですか?
よろしく
bjoern
解決
回避策を見つけました。 MPIEXECコマンドに追加のパラメーター "-machinefile/to/mpd.hosts"を使用しました。そして今、すべてのノードは正しく実行されています。私が得た問題の1つは、次のエラーメッセージを受け取ったことです。
... MPIU_SHMW_SEG_CREATE_ATTACH_TEMPL(671):Open Failed-そのようなファイルやディレクトリはありません...
それを修正するには、環境変数を設定する必要がありました MPICH_NO_LOCAL=1
他のヒント
あなたが理解したように、あなたは両方にマシンファイルを渡す必要があります mpdboot
と mpiexec
ホストあたりのプロセスカウントを使用するため。 「Open Failed」問題は、使用しているProcess ManagerであるMPDの既知のバグです。に注意してください MPICH_NO_LOCAL=1
回避策は機能しますが、おそらくイントラノード通信に大きなパフォーマンスペナルティが発生します。
MPICH2(またはMPICH2デリバティブ)を明らかに使用していますが、使用しているバージョンは明確ではありません。可能であれば、MPICH2 1.2.1p1または(さらに良い)1.3.1のいずれかにアップグレードすることを強くお勧めします。これらのリリースの両方には、呼ばれる新しいプロセスマネージャーが含まれます ハイドラ それははるかに速く、より堅牢です。 1.3.1では、Hydraはデフォルトのプロセスマネージャーです。それは必要ありません mpdboot
フェーズ、およびそれはaをサポートします $HYDRA_HOST_FILE
環境変数で、すべてのマシンファイルを指定する必要がないように mpiexec
.