用于在MPI_Reduce()函数中为 double 值的数组存储MPI_MAXLOC的返回值的数据结构是什么
答案 0 :(得分:1)
在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的双精度!)
在http://mpi-forum.org/docs/mpi-3.1/mpi31-report/node114.htm#Node114中对此进行了解释,甚至有一个C
和Fortran
的双倍示例