さて、あなたは実際にあなたがターゲットにしているハードウェアが何であるかを正確に述べていません、それが共有メモリマシンであるなら、OpenMPはオプションです。ほとんどの並列プログラマーは、OpenMPを使用した並列化を、その化身のいずれかでMPIを使用するよりも簡単なオプションと見なします。また、MPIよりもOpenMPを既存のコードに後付けする方が簡単であることをお勧めします。最高のパフォーマンスを発揮するという意味での最高のMPIプログラムは、メッセージパッシングと並列化するためにゼロから設計されたプログラムです。
さらに、並列化された後は、最良の順次アルゴリズムが常に最も効率的なアルゴリズムであるとは限りません。単純であるが、順次準最適なアルゴリズムがより良い選択である場合があります。
共有メモリコンピュータにアクセスできる場合があります。
- すべてのマルチコアCPUは、事実上共有メモリコンピューターです。
- 多くのクラスターでは、ノードは多くの場合2つまたは4つのCPUに対応しており、それぞれに4つのコアがある場合は、クラスター上に16コアの共有メモリマシンがある可能性があります。
- MPPスーパーコンピューターにアクセスできる場合は、その各ノードが共有メモリコンピューターであることがわかるでしょう。
メッセージパッシングに固執している場合は、C ++とOpenMPI(またはシステムにすでにインストールされているMPI)を使用することを強くお勧めします。BoostMPIも確認する必要があります。高性能の科学計算の主流の外に出ると、研究にぴったりのライブラリやその他のツールの特異なコレクションを備えた1つのプログラミングの軍隊にいることに気付くかもしれないので、これを強くお勧めします。C ++、OpenMPI、Boostは十分に使用されているため、「兵器級」または好みのアナロジーであると見なすことができます。SOには十分なトラフィックがありません。たとえば、MPIやOpenMPでは、ファームに賭ける前に、他のテクノロジーの統計を確認してください。
MPIの経験がない場合は、KarniadakisとKirbyによる C++およびMPIのParallelScientificComputingという本を参照してください。Gropp et alによるMPIの使用は参考としては問題ありませんが、メッセージパッシングのプログラミングに関する初心者向けのテキストではありません。