我有一个名为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)数组?
感谢高级
答案 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);