web-dev-qa-db-ja.com

mpirun -np N、Nがコア数より大きい場合はどうなりますか?

4コアのワークステーションがあり、Linux(Ubuntu)を実行するとどうなりますか

mpirun -np 9 XXX

Q1。 9はすぐに一緒に実行されますか、それとも4後に4を実行しますか?

Q2。残りの1はコンピューターを混乱させるため、9を使用するのは良くないと思います4コアが使用されますか?)またはランダムに選択されます。どのコアを呼び出すかは誰が決めるのですか?

Q3。 CPUが悪くなく、ラムが大丈夫で十分に大きく、ケースがそれほど大きくないと感じた場合。 CPUとRAMを完全に使用するために、mpirun -np 8 XXX、またはmpirun -np 12 XXXを実行することをお勧めします。

Q4。これらの効率の最適化、Ubuntu、Linux、マザーボード、CPUのすべてを決定するのは誰ですか?

あなたの啓発は本当にありがたいです。

5
Daniel
  1. 9は同時に実行されます。
  2. 残りの1つのプロセスに混乱はありません。 mpirunはデフォルトでラウンドロビン順でスケジュールされるため、最初のコア/ノードにそのプロセスが割り当てられます。
  3. npは、使用可能な物理コア/ノードの数を超えて確実に増やすことができます。トレードオフは、コア/ノードよりも多くのプロセスでオーバーヘッドが増加することです。コードが厳密にCPUにバインドされていない場合(たとえば、かなりのIO待機時間が必要な場合)、shouldこれを行います。最終的には、試すまで高速になるかどうかはわかりません。
  4. MPIは初期スケジューリングを行いますが、ノードごとに複数のプロセス、または一般的に(バックグラウンドで実行されている他のプロセスが多数あるため)、Linuxカーネルスケジューラーが引き継ぎます。

詳細については、 このmanページ を参照してください。

4
ish

はい。コードを大幅に変更して、MPIアプリケーションからOpenMPまたはTBBアプリケーションに変換する必要があります。アプリケーションがすでに開発されている場合は、それを試して、パフォーマンスを測定してから、大幅な操作を行ってください。

0
Justin

9すぐに。

そうでない場合、ユニバースのサイズが正しくなくなります。すべてのプロセスは同時に存在する必要があります。存在しない場合、他のインスタンスからは見えません。

インスタンスのメモリが高すぎる場合、他の4つのプロセスが終了するまで、他の5つのプロセスを手動で停止できます。

ただし、MPIをそのように使用している場合(ローカルマシンのみ)、代わりにOpenMP/tbbをお勧めします。 MPIは、実際にアプリを複数のネットワークコンピューターまたはクラスターノードに分散するように設計されています。

0
polo