MPI_MAXLOC表示一个double值数组

时间:2017-10-20 23:47:45

标签: c mpi

用于在MPI_Reduce()函数中为 double 值的数组存储MPI_MAXLOC的返回值的数据结构是什么

1 个答案:

答案 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中对此进行了解释,甚至有一个CFortran的双倍示例