首页 文章

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

提问于
浏览
1

我有一个在一组机器上运行的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

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

相关问题