MPI はプログラミング言語ではありません。 MPI は、C および Fortran プログラムから呼び出すことができる一連のライブラリ ルーチンを定義します。 MPI プログラムは通常、単一プログラム、複数データのアプローチを採用しています。同じプログラムの複数のインスタンス (MPI ランク) が同時に実行されます。各ランクは、より大きな問題の異なる部分を計算し、MPI を使用してランク間でデータを通信します。 MPI プログラマーの観点から見ると、ランクは同じノードまたは異なるノードで実行できます。通信パスは異なる場合がありますが、それは MPI プログラムに対して透過的です。
MPI アプリケーションの起動メカニズムは標準の一部ではありません。 Linux で Intel MPI プログラムを処理する方法を示しますが、他のほとんどのディストリビューションには同様のセマンティクスと同様の機能があります。 Intel MPI プログラムを実行する基本的な方法は次のとおりです (
$ mpirun –n < N > ./prg.x
これは、標準のバッチ管理システムを備えた共有メモリ ノードまたはクラスターには十分です。以下のエラーが発生した場合:
mpirun.openmpi: command not found
選択したディストリビューションに従って、以下のパッケージをインストールしてみてください。
分布 | コマンド |
---|---|
Debian | apt-get install openmpi-bin |
Ubuntu | apt-get install openmpi-bin |
カリ Linux | apt-get install openmpi-bin |
Raspbian | apt-get install openmpi-bin |
まとめ
MPI プログラミング モデルは、インテル Xeon Phi コプロセッサーを含むクラスターに自然に適合します。プログラマーは、主要な計算カーネルをコプロセッサーにオフロードすることで、個々の MPI ランクを高速化できます。ただし、リソースの競合を回避し、増加した通信量を償却するように注意する必要があります。あるいは、コプロセッサーは、ホストとは計算能力が異なるものの、別のクラスターノードの特性を備えており、MPI ランクはコプロセッサー上でネイティブに実行できます。いずれのアプローチも、新たな程度の異質性と、パフォーマンスのボトルネックとしての負荷の不均衡の可能性をもたらします。