1

この質問は少し奇妙に聞こえるかもしれません...

MPI アプリケーションはあるが、MPI がインストールされたシステムを持っていないとします。そのため、ソース コードを変更せずに、MPI サポートなし (1 プロセス、1 スレッド) でアプリケーションをコンパイルしたいと考えています。それは可能ですか?

私がやりたいことを正確に行うはずの「mimic_mpi.h」ラッパーをどこかで見つけました。しかし、いくつかの MPI 関数 (MPI_Cart_create、MPI_Cart_get など) が不足していたため、成功しませんでした。

mimic_mpi.h http://openmx.sourcearchive.com/documentation/3.2.4.dfsg-3/mimic__mpi_8h-source.html

mimic_mpi.c http://openmx.sourcearchive.com/documentation/3.2.4.dfsg-3/mimic__mpi_8c-source.html

MPI サポートなしで MPI アプリをコンパイルするために使用できる他のアプローチを知っていますか?

前もって感謝します!

4

1 に答える 1

2

単一のプロセスで「実際の」MPI アプリケーションを簡単に実行できます。実際には、これは mpiexec/mpirun を使用しなくても機能しますが、それが公式にサポートされているかどうかはわかりません。とはいえ、完全で確認済みの 1 プロセス MPI の「シリアル」実装はおそらくかなり複雑になり、独自のライブラリになるでしょう。

私が描こうとしている円が見えることを願っています。完全な MPI 動作が必要な場合は、単一のプロセスに限定されているかどうかに関係なく、MPI 実装を使用してください。

実際には、MPI の有無にかかわらず機能できるようにしたいアプリケーションは、ドメイン固有の通信ラッパー #ifdef HAVE_MPI またはより複雑なマクロを使用して、独自の MPI 抽象化を使用することがよくあります。

于 2012-02-16T14:52:55.567 に答える