MPI收集不同的尺寸

时间:2012-05-08 08:28:21

标签: c++ mpi

我有一组10台计算机和2个c ++变量   - 结果:size int 100;   - result_final :(仅在主机上)size int 1000; 如何收集“结果”并创建“result_final”,因为它们的大小不同。 谢谢!

int *rcounts = (int *) malloc(commSize * sizeof(int));
int *displs = (int *) malloc(commSize * sizeof(int));
for (i = 0; i < commSize; ++i) {
    displs[i] = commRank * result_size * size;
    rcounts[i] = result_size * size;
}
MPI_Gatherv(h_result, result_size * size, MPI_INT, h_result_final, rcounts,
        displs, MPI_INT, 0, MPI_COMM_WORLD);

1 个答案:

答案 0 :(得分:4)

如果每件作品的尺寸不同,您可以使用MPI_Gatherv()代替MPI_Gather()MPI_Scatter() vs MPI_Scatterv()也是如此。