0

我有一个可以编译的 Fortran 代码,但在执行此MPI_Allgather例程时返回错误

call MPI_Allgather(rank, 1, MPI_INTEGER,            
                   allranks(0:np-1), np, MPI_INTEGER, MPI_COMM_WORLD, erro)

rank是一个整数变量,allranks是一个整数数组,其np位置标记为从0np-1

错误是

malloc.c:4630: _int_malloc: Assertion `(unsigned long)(size) >= (unsigned long)(nb)' failed.

有谁知道错误的原因?如果是这样,我该如何解决这个问题?

4

1 回答 1

2

第 5 个参数说明要从任何进程接收的元素数量。在您的情况下,这应该是 1。也就是说,recvcount 应该说明您期望从每个进程中获得多少条目。MPI 标准规定:

在一个进程中与sendcount 、sendtype关联的类型签名必须等于在任何其他进程中与recvcount、recvtype关联的类型签名。

于 2013-09-05T11:53:12.703 回答