我有一个代码,其中包含一些依赖于mpi api的位:
#if MPIVERSION==1
...
#elif MPIVERSION==2
...
#endif在假设MPI-1和MPI-2之间切换。
有没有好的方法可以推断出一个好的版本--特别是可能出现在构建系统中的版本?
谢谢!
发布于 2012-06-21 15:55:09
做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++代码中的条件编译。
发布于 2012-06-21 08:04:52
如果需要,可以使用MPI_VERSION和MPI_SUBVERSION (例如,MPI1.2是MPI_VERSION = 1和MPI_SUBVERSION = 2)。文档here
https://stackoverflow.com/questions/11129800
复制相似问题