我需要调试一个只能访问单个节点/机器的MPI代码。问题是我正在寻找的错误仅在运行多于节点时出现,但它在运行时没有,例如,在同一节点中的两个MPI任务,一切都很顺利。我假设我的MPI实现(mviapich2)巧妙地处理在同一节点上运行的任务,例如,通过IPC策略甚至memcpy
替换网络通信。
所以我的问题是:如何在单个节点上运行两个MPI任务,但是让MPI将它们视为不同节点上的任务?这可能吗?
答案 0 :(得分:3)
您可以通过将MV2_USE_SHARED_MEM
环境变量设置为0
来禁用MVAPICH2共享内存设备:
mpiexec ... -env MV2_USE_SHARED_MEM 0 ... ./executable
确保您的MVAPICH2是使用TCP / IP设备构建的,否则您的排名将无法与关闭共享内存支持进行通信。