用于存储 MPI_Reduce() 函数中 double 值数组的 MPI_MAXLOC 返回值的数据结构是什么
最佳答案
在C
中,您必须使用的MPI类型是MPI_DOUBLE_INT
,并且没有预定义的C结构(例如您必须手动创建它),如下
struct {
double val;
int rank;
};
fwiw,预定义的MPI_DOUBLE_INT
数据类型是这样定义的
type[0] = MPI_DOUBLE
type[1] = MPI_INT
disp[0] = 0
disp[1] = sizeof(double)
block[0] = 1
block[1] = 1
MPI_TYPE_CREATE_STRUCT(2, block, disp, type, MPI_DOUBLE_INT)
请注意,在 Fortran
中,您必须使用 MPI_2DOUBLE_PRECISION
(是的,索引在 Fortran 中是 double !)
这在http://mpi-forum.org/docs/mpi-3.1/mpi31-report/node114.htm#Node114中有解释。甚至还有一个 C
和 Fortran
关于c - MPI_MAXLOC 用于双值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46858707/