C MPI 中的结构散布数组
Scatter Array of Strucuters in C MPI
我有一个名为Department
的结构体和一个名为Departments
的结构体数组,我想将这个数组分散为特定数量的进程,以便每个进程都有一个名为[=]的结构体13=] 包含 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
个元素(部门)的数量
编译时运行这段代码
它给我错误:"incompatible type for argument 4 of ‘MPI_Scatter’"
谁能回答为什么会出现这个错误以及如何在 MPI 中分散结构数组(部门)?
高级感谢
MPI_Scatter()
需要一个指向要分散的缓冲区的指针和一个指向将接收消息的缓冲区的指针。
如果struct Department Current,Departments[100];
,你可以试试:
MPI_Scatter(Departments, sizeof(Current), MPI_BYTE, &Current ,sizeof(Current), MPI_BYTE, 0,MPI_COMM_WORLD);
我有一个名为Department
的结构体和一个名为Departments
的结构体数组,我想将这个数组分散为特定数量的进程,以便每个进程都有一个名为[=]的结构体13=] 包含 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
个元素(部门)的数量
编译时运行这段代码 它给我错误:"incompatible type for argument 4 of ‘MPI_Scatter’"
谁能回答为什么会出现这个错误以及如何在 MPI 中分散结构数组(部门)?
高级感谢
MPI_Scatter()
需要一个指向要分散的缓冲区的指针和一个指向将接收消息的缓冲区的指针。
如果struct Department Current,Departments[100];
,你可以试试:
MPI_Scatter(Departments, sizeof(Current), MPI_BYTE, &Current ,sizeof(Current), MPI_BYTE, 0,MPI_COMM_WORLD);