c - MPI_MAXLOC 用于双值数组

标签 c mpi

用于存储 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中有解释。甚至还有一个 CFortran

都有 double 的示例

关于c - MPI_MAXLOC 用于双值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46858707/

相关文章:

c - MPI_BARRIER 不工作

使用 MPI/OpenMP 的派生数据类型(嵌套类对象)容器的 C++ 程序

c - 使用双指针实现二维数组

c - 在 clock_gettime 中使用 CLOCK_PROCESS_CPUTIME_ID

c - MongoDB C 驱动程序 : How to replace a document

fortran - 复制 MPI 派生类型与将一种类型设置为等于另一种类型

c - 函数指针

c++ - 如何在 gdb 中观察复杂的对象?

c - 使用多线程 FFTW 时执行时间增加

c - MPI malloc vs MPI_Alloc_mem 何时使用?