我有一个代码,其中包含一些依赖于 mpi api 的位:
#if MPIVERSION==1
...
#elif MPIVERSION==2
...
#endif
在假设 MPI-1 和 MPI-2 之间切换。
有没有一种很好的方法来推断一个好的版本——尤其是可能会进入构建系统的版本?
谢谢!
我有一个代码,其中包含一些依赖于 mpi api 的位:
#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
如果需要,请与 with 一起使用(MPI_SUBVERSION
即 MPI 1.2 是MPI_VERSION = 1
and
MPI_SUBVERSION = 2
)。文档在这里