首页 > 解决方案 > 如何调试:如果 mpi 不能跨机器运行

问题描述

我有大约 20 台服务器,我使用 mpi 跨服务器分发任务,所有服务器都有相同版本的操作系统(ubuntu 17.10),并且所有软件包都安装了相同的脚本(当然,我仍然不能保证所有服务器是一样的)

问题是:

我的一些服务器不能一起运行。mpi 打印以下输出。我四处搜索,不知道如何调试这个问题。

有人说这是因为我的包版本不同,软件在不同的服务器上,但没有说如何查看哪个包。

任何建议都会非常有帮助。

ORTE 无法可靠地启动一个或多个守护程序。这通常是由以下原因引起的:

  • 在一个或多个节点上找不到所需的库和/或二进制文件。请检查您的 PATH 和 LD_LIBRARY_PATH 设置,或使用 --enable-orterun-prefix-by-default 配置 OMPI

  • 缺乏在一个或多个指定节点上执行的权限。请核实您的分配和权限。

  • 无法将启动文件写入 /tmp (--tmpdir/orte_tmpdir_base)。请与您的系统管理员核对以确定要使用的正确位置。

  • 当需要静态时(例如,在 Cray 上),使用动态库编译排序。请检查您的配置 cmd 行并考虑为您的系统类型使用 contrib/platform 定义之一。

  • 由于缺乏通用网络接口和/或在它们之间找不到路由,无法创建与 mpirun 的连接。请检查网络连接(包括防火墙和网络

    路由要求)。

-------------------------------------------------- ------------------------ ORTE 不知道如何将消息路由到位于指定节点上的指定守护进程:

我的节点:roo-25 目标节点:192.168.0.38

这通常是应向开发人员报告的内部编程错误。同时,解决方法可能是在命令行或您的环境中设置 MCA 参数 routed=direct。我们为这个问题道歉。

标签: mpiopenmpi

解决方案


如果您在 kubernetes 集群中使用 mpi 算子,您可以使用 进行调试kubectl apply -f xxx.yaml --verbose=6,那么您将获得有关此问题的更多详细信息。这是多机通信造成的,建议你使用 构建无密码的日志ssh-copy-id role@machineip,role 表示将执行作业的用户,machineip 表示执行作业的目的地,对于 kubernetes 集群我使用 root 来执行此操作. 之后,我将 openmpi 版本从 4.0.0 升级到 4.1.2,它可以工作了。


推荐阅读