mpiapiに依存するビットを持つコードがあります。
#if MPIVERSION==1
...
#elif MPIVERSION==2
...
#endif
これは、MPI-1とMPI-2の想定を切り替えます。
良いバージョン、特にビルドシステムに含まれる可能性のあるバージョンを推測する良い方法はありますか?
ありがとう!
mpiapiに依存するビットを持つコードがあります。
#if MPIVERSION==1
...
#elif MPIVERSION==2
...
#endif
これは、MPI-1とMPI-2の想定を切り替えます。
良いバージョン、特にビルドシステムに含まれる可能性のあるバージョンを推測する良い方法はありますか?
ありがとう!
スクリプトが通常行うことconfigure
を実行します-以下で構成される非常に単純なテストMPIコードをコンパイルして実行してみてください。
#include <stdio.h>
#include <mpi.h>
int main (void)
{
int version, subversion;
MPI_Get_version(&version, &subversion);
printf("%d.%d\n", version, subversion);
return 0;
}
このコードをmpicc
(または指定されたコンパイラーで)コンパイルし、mpirun
コード構成時に(直接ではなく)実行すると、次の両方が実行されます。
Fortranプロジェクトでも同じことができます。
直接解析mpi.h
して検索することもできますがMPI_VERSION
、MPI_SUBVERSION
移植性以外の問題が発生する可能性があります。これらのマクロに加えて、C /C++コード内の条件付きコンパイルに使用することを目的としています。
MPI_VERSION
必要に応じて一緒に使用しMPI_SUBVERSION
ます(つまり、MPI 1.2はMPI_VERSION = 1
および
MPI_SUBVERSION = 2
です)。ここにドキュメント