2

mpiapiに依存するビットを持つコードがあります。

#if MPIVERSION==1
...
#elif MPIVERSION==2
...
#endif

これは、MPI-1とMPI-2の想定を切り替えます。

良いバージョン、特にビルドシステムに含まれる可能性のあるバージョンを推測する良い方法はありますか?

ありがとう!

4

2 に答える 2

4

スクリプトが通常行うこと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コード構成時に(直接ではなく)実行すると、次の両方が実行されます。

  • MPIコンパイララッパーが実際に機能することを知っている
  • サポートされているMPI標準のメジャーバージョンとマイナーバージョンを入手する

Fortranプロジェクトでも同じことができます。

直接解析mpi.hして検索することもできますがMPI_VERSIONMPI_SUBVERSION移植性以外の問題が発生する可能性があります。これらのマクロに加えて、C /C++コード内の条件付きコンパイルに使用することを目的としています。

于 2012-06-21T07:55:08.957 に答える
1

MPI_VERSION必要に応じて一緒に使用しMPI_SUBVERSIONます(つまり、MPI 1.2はMPI_VERSION = 1および MPI_SUBVERSION = 2です)。ここにドキュメント

于 2012-06-21T00:04:51.613 に答える