在群集上调试MPI程序时出现问题

时间:2013-12-24 08:43:54

标签: c debugging mpi

我有一个在一组机器上运行的MPI程序。但是,程序没有完成,我无法确定原因。 main函数由两个主要子句组成(if子句和else子句):

#define SERVER 0

if(my_rank == SERVER)
{
   //do something
}
else
{
   //do something else
}

问题似乎在“做其他事情”部分,我想用gdb调试它。当我使用gdb运行可执行文件时,我只能进入if子句,因为似乎MPI会自动为主进程(启动程序的进程)分配0级别。我查看了环境变量,但是我没有找到预先确定主进程等级的标志。我该如何调试else子句?

1 个答案:

答案 0 :(得分:0)

很难在不看代码的情况下判断发生了什么(如果你将其缩减到MWE,只发布代码),但通常当你在MPICH内部的进程引擎中挂起时,这是因为你的匹配不正确。根据你在评论中提出的内容,我的猜测是你没有在所有级别上调用MPI_INIT。确保您这样做并且所有发送/接收呼叫都匹配(和您的集体)。如果仍然无效,请将其切换到MWE并在此处发布。