【发布时间】:2021-06-11 19:15:49
【问题描述】:
我有一个如下所示的数据结构
struct test{
double a1;
double a2;
}
并有一个指针test *info = nullptr; 指向结构数组的开头。
问题是如何在不将其转换为两个单独的向量的情况下广播此数组。
- 我尝试创建 mpi_type_struct 没有成功。
- 我试图打包我的结构数据没有工作。 到目前为止,我看到的案例仅对一个结构有效,但对结构数组无效。
这是我迄今为止尝试过的
int block[2] = {1,1};
MPI_Aint displacements[2];
MPI_Aint baseaddr, addr1, addr2;
MPI_Datatype types[2] = {MPI_DOUBLE, MPI_DOUBLE};
MPI_Datatype contigs[6];
if(my_rank==0){
for (int i = 0; i < 6; i++)
{
MPI_Get_address ( &info[i], &baseaddr);
MPI_Get_address ( &info[i].num_edges, &addr1);
MPI_Get_address ( &info[i].num_vertices, &addr2);
displs[0] = addr1 - baseaddr;
displs[1] = addr2 - baseaddr;
MPI_Type_create_struct(2, block, displacements, types, &contigs[i]);
MPI_Type_commit(&contigs[i]);
}
MPI_Bcast(info, 6, *contigs, 0, comm);
【问题讨论】:
标签: c performance parallel-processing mpi hpc