C MPI中的分散阵列结构

时间:2016-05-19 16:39:20

标签: c struct mpi scatter

我有一个名为Department的结构,以及名为Departments的struct Department数组,我想为特定数量的进程分散此数组,以便每个进程都有一个名为{{1}的结构}包含Current数组中的一个元素(结构)(部门) `

Departments

假设进程数等于#include <stdio.h> #include <stdlib.h> #include <mpi.h> struct Department{ int position; int Department_Destinations[100]; }; struct Department Current,Departments[100]; int main(int argc, char** argv){ int rank, nprocess; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, &rank); MPI_Comm_size(MPI_COMM_WORLD, &nprocess); if(rank==0){ for(i=0;i<n;i++){ Departments[i].position=i+1; for(j=0;j<c1;j++){ Departments[i].Department_Destinations[j]=0; } } MPI_Scatter(Departments, sizeof(Current), MPI_BYTE, Current ,sizeof(Current), MPI_BYTE, 0,MPI_COMM_WORLD); MPI_Finalize(); return 0; } 元素数(部门)

编译并运行此代码时 它给了我错误:“MPI_Scatter'的参数4的不兼容类型”

任何人都可以回答为什么会出现此错误以及如何在MPI中分散structuer(Departments)数组?

感谢高级

1 个答案:

答案 0 :(得分:1)

MPI_Scatter()需要指向缓冲区分散的指针和指向将接收消息的缓冲区的指针。

如果struct Department Current,Departments[100];,您可以尝试:

MPI_Scatter(Departments, sizeof(Current), MPI_BYTE, &Current ,sizeof(Current), MPI_BYTE, 0,MPI_COMM_WORLD);