我是MPI的新人,我试图将3D阵列分散在所有处理器上。
由于我的应用程序中的尺寸可能与内核数不匹配,因此我定义了一个合适的enum
来处理此问题,因此我尝试使用一个{{1} }分散在MPI_Datatype
个处理器上的数组。
现在无法使用8*4*8
并且我知道没有9
函数,但是我已经读过here和here可以正确设置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;
为止的行用于确定每个块的尺寸,这在我的应用程序中是必需的。
任何建议都将受到欢迎:-)