web-dev-qa-db-ja.com

mpirun-使用可能なスロットが不足しています

通常、mpirunを使用するときは、実際にコンピューターにあるよりも多くのプロセッサを使用して「過負荷」にできます。たとえば、4コアのMacでは、mpirun -np 29 python -c "print 'hey'" 問題ない。私は今、別のマシンにいて、次のエラーを投げています:

$ mpirun -np 25 python -c "print 'hey'"
--------------------------------------------------------------------------
There are not enough slots available in the system to satisfy the 25 slots 
that were requested by the application:
  python

Either request fewer slots for your application, or make more slots available
for use.
--------------------------------------------------------------------------

ここでmpirunが「オーバークロック」されないのはなぜですか?このエラーメッセージを克服し、使用可能なプロセッサよりも多くのプロセッサで正常に実行する方法はありますか?

20
kilojoules

https://www.open-mpi.org/faq/?category=running#oversubscribing によれば、ホストファイルを使用してノードをオーバーサブスクライブできます。先に進む前に、この方法でノードのパフォーマンスが大幅に低下する可能性があることに注意してください。また、アプリケーションの実行に使用するシステムがキューシステムを使用している場合、これは有効ではない可能性があります。

まず、次を含むホストファイル(hostfileという名前)を作成します

localhost slots=25

次のようにアプリケーションを実行するだけです

mpirun --hostfile hostfile -np 25 python -c "print 'hey'"
13
Harald

明らかにオーバーサブスクライブは、mpirunで「--oversubscribe」オプションを使用して達成できます-トルク/マウイを実行して私のためにトリックをしました

31
dwaylooper