【发布时间】:2016-09-16 16:37:18
【问题描述】:
我有一个名为 Department 的结构体,以及一个名为 Departments 的结构体数组,我想为特定数量的进程分散这个数组,这样每个进程都有一个名为 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;
}
假设进程数等于Departments元素数(部门)
当编译和运行这段代码时 它给了我错误:“‘MPI_Scatter’的参数 4 的类型不兼容”
谁能回答为什么这个错误以及如何在 MPI 中分散结构器(部门)数组?
感谢进阶
【问题讨论】:
-
这是一种糟糕且非常不便携的结构传递方式。在网站上搜索包含
MPI_Type_create_struct的问题和答案,以查找有关如何正确发送结构的信息。