MPI聚集不同的大小 我有10个计算机和2个变量在C++中 -结果:大小int 100; -最终结果:(仅在主机上)大小int 1000; 我如何收集“结果”片段并创建“结果\最终”,因为它们的大小不同。 谢谢大家! 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); int*rcounts=(int*)malloc(commSize*sizeof(int)); int*disfs=(int*)malloc(commSize*sizeof(int)); 对于(i=0;i

MPI聚集不同的大小 我有10个计算机和2个变量在C++中 -结果:大小int 100; -最终结果:(仅在主机上)大小int 1000; 我如何收集“结果”片段并创建“结果\最终”,因为它们的大小不同。 谢谢大家! 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); int*rcounts=(int*)malloc(commSize*sizeof(int)); int*disfs=(int*)malloc(commSize*sizeof(int)); 对于(i=0;i,c++,mpi,C++,Mpi,如果每件物品的尺寸不同,您将使用MPI\u Gatherv()而不是MPI\u Gatherv()。同样的情况也适用于MPI\u Scatterv()vsMPI\u Scatterv()如果每一块的大小不同,您将使用MPI\u Gatherv()而不是MPI\u Gatherv()。这同样适用于MPI\u Scatterv()vsMPI\u Scatterv()如果您向我们展示您编写的代码,这里的人会有所帮助。如果你不这样做,这里的人会添加无用的评论(比如这个)。如果你给我们看你写的代码,这里的

如果每件物品的尺寸不同,您将使用
MPI\u Gatherv()
而不是
MPI\u Gatherv()
。同样的情况也适用于
MPI\u Scatterv()
vs
MPI\u Scatterv()

如果每一块的大小不同,您将使用
MPI\u Gatherv()
而不是
MPI\u Gatherv()
。这同样适用于
MPI\u Scatterv()
vs
MPI\u Scatterv()

如果您向我们展示您编写的代码,这里的人会有所帮助。如果你不这样做,这里的人会添加无用的评论(比如这个)。如果你给我们看你写的代码,这里的人会帮你。如果你不这样做,这里的人会添加无用的评论(比如这篇)。那么我可以这样做吗?MPI_Gatherv(h_结果、结果大小*大小、MPI_INT、h_结果最终、显示、计数、MPI_INT、0、MPI_COMM_WORLD)?您看过MPI\u Gatherv的描述了吗?如果要收集大小相同的工件,请使用
MPI\u-Gather
。请看一下文档,它非常有用!为什么?这是我的密码。。。int*rcounts=(int*)malloc(commSize*sizeof(int));int*disfs=(int*)malloc(commSize*sizeof(int));对于(i=0;iMPI\u-Gather。这在你最初的问题中并不明显,应该是:
MPI\u Gatherv(h\u result,result\u size*size,MPI\u INT,h\u result\u final,result\u size*size,MPI\u INT,0,MPI\u COMM\u WORLD)。您从问题中删除了以前的代码示例,因此我不确定您是否应该将两个大小参数乘以
size
。请注意,
MPI\u Gather
MPI\u Gatherv
中的大小都是以元素而不是字节指定的。所以我可以这样做吗?MPI_Gatherv(h_结果、结果大小*大小、MPI_INT、h_结果最终、显示、计数、MPI_INT、0、MPI_COMM_WORLD)?您看过MPI\u Gatherv的描述了吗?如果要收集大小相同的工件,请使用
MPI\u-Gather
。请看一下文档,它非常有用!为什么?这是我的密码。。。int*rcounts=(int*)malloc(commSize*sizeof(int));int*disfs=(int*)malloc(commSize*sizeof(int));对于(i=0;iMPI\u-Gather
。这在你最初的问题中并不明显,应该是:
MPI\u Gatherv(h\u result,result\u size*size,MPI\u INT,h\u result\u final,result\u size*size,MPI\u INT,0,MPI\u COMM\u WORLD)。您从问题中删除了以前的代码示例,因此我不确定您是否应该将两个大小参数乘以
size
。请注意,
MPI\u Gather
MPI\u Gatherv
中的大小都是以元素而不是字节指定的。