根据IBM的说法,error 134表示
缓冲区已附加在字符串中,任务编号
继续解释
尝试在已连接缓冲区时附加缓冲区。
我觉得相当神秘。尝试谷歌错误消息没有产生任何结果。
为了隔离错误,我注释掉了MPI_Init
和MPI_Finalize
的所有MPI函数。具体地,
int main(...){
MPI_Init(...);
initialize();
MPI_Barrier(MPI_COMM_WORLD);
//do stuff, no synchronization at all
MPI_Finalize();
return 0;
}
initialize()
读取一些文件并分配内存。它还会调用MPI_Comm_rank
和MPI_Comm_size
并将其存储以供日后使用。
我正在使用MPICH2版本1.4.1(根据dpkg 1.4.1-1ubuntu1
)并使用gcc 4.6.3进行编译。无论mpiexec启动的进程数是多少,都会发生错误。
修改:快速搜索MPICH2 manual上的134
,error code
和error message
这两个字词并未提供任何信息。 mpiexec
的联机帮助页也没有。
编辑2:在我意识到initialize()
中有缓冲区溢出后,程序中的错误得以解决。问题仍然存在,因为我希望看到更好的解释这个错误。