3

たとえば、i7 などの通常のデスクトップ CPU で OpenMP (共有メモリ) と MPI (分散メモリ) を実行できるのはどうしてだろうかと思っていました。これらの CPU で共有メモリと分散メモリをシミュレートできる仮想マシンはありますか? OpenMP と MPI を学習すると、スーパーコンピューターの構造が示され、共有メモリまたは分散メモリのさまざまなノードが表示され、各ノードには独自のプロセッサとメモリが表示されるため、質問しています。

4

2 に答える 2

6

MPI は、MPI プロセスがどこでどのように実行されるかについて何も想定していません。MPI に関する限り、プロセスはランクとして知られる一意のアドレスを持つ単なるエンティティであり、MPI はメッセージの形式でデータを送受信する機能をプロセスに与えます。メッセージがどの程度正確に転送されるかは、実装に任されています。このモデルは非常に一般的であるため、MPI は考えられるあらゆるプラットフォームで仮想的に実行できます。

OpenMP は、スレッドを使用して共有メモリ プログラミングを処理します。スレッドは、共有メモリ空間にアクセスできる同時実行命令フローです。それらは、単一の CPU コアで時分割方式で実行することも、単一の CPU チップ内の複数のコアで実行することも、相互のメモリにアクセスできる高度なネットワークによって接続された複数の CPU 間で分散することもできます。

以上のことから、MPI では、各プロセスが専用の CPU コアで実行されることや、数百万のコアが高速ネットワークに接続された個別のボードに配置される必要はありません。パフォーマンスは技術的な制限と同様に必要です。単一の CPU コアで 100 プロセスの MPI ジョブを問題なく実行できますが、パフォーマンスは非常に悪くなりますが、それでも機能します (十分なメモリが利用できる場合)。同じことが OpenMP にも当てはまります。各スレッドを専用の CPU コアでスケジュールする必要はありませんが、そうすることで最高のパフォーマンスが得られます。

そのため、MPI と OpenMP は抽象化と呼ばれます。それらは一般的であるため、ソース コードは同じままで、実行ハードウェアが大きく異なる可能性があります。

于 2012-06-13T10:55:39.013 に答える
4

最新のマルチコアCPUベースのPC、共有メモリコンピューターです。各コアをプロセッサと見なすのは賢明な概算であり、すべてのコアが同じRAMに同等にアクセスできます。この近似は、プロセッサとチップのアーキテクチャの多くの詳細を隠します。

同じMPIを実行できるように、共有メモリコンピュータでメッセージパッシング(MPIが1つの標準)を使用することは常に可能でした(おそらく常にではありませんが、MPIが存在する限りほぼ同じです)。真に分散メモリマシンの場合と同じように、プログラムを有効にします。

アプリケーションレベルでは、プログラマーはMPIルーチンの呼び出しのみを気にします。システムレベルでは、MPIランタイムは、これらの呼び出しを、クラスターまたはスーパーコンピューター上で、相互接続を介してデータを送信するための命令に変換します。共有メモリコンピュータでは、代わりにこれらの呼び出しを命令に変換して、内部バスを介してデータを送信することができます。

これはあなたが提起したトピックの包括的な紹介ではありませんが、それはグーグルとそこにあるすべての公開された情報源が目的としているものです。

于 2012-06-13T08:59:30.247 に答える