使用MPI Alltoallw进行3D阵列散射以处理不同的子阵列尺寸

时间:2019-01-28 18:02:10

标签: c arrays multidimensional-array mpi scatter

我是MPI的新人,我试图将3D阵列分散在所有处理器上。

由于我的应用程序中的尺寸可能与内核数不匹配,因此我定义了一个合适的enum来处理此问题,因此我尝试使用一个{{1} }分散在MPI_Datatype个处理器上的数组。

现在无法使用8*4*8并且我知道没有9函数,但是我已经读过herehere可以正确设置MPI_Scatterv要进行模拟,特别是他们说,如果我了解得很好,我应该在所有处理器上设置MPI_Scatterw,除了拥有要散布的数组的处理器之外。

所以我尝试了但没有成功。 实际上,我遇到了一个错误消息MPI_Alltoallw

像这样的错误出现在sendcounts中,我是用这种方式定义的:

sendcounts=0

完整代码为:

MPI_ERR_COUNT: invalid count argument

直到int *sendcounts = (int *) malloc(sizeof(int)*size); for (int i = 0; i < size; i++){ sendcounts[i] = 0; } sendcounts[0] = 1; 为止的行用于确定每个块的尺寸,这在我的应用程序中是必需的。

任何建议都将受到欢迎:-)

0 个答案:

没有答案