最近上的 高性能计算导论 课中有一个实验要求同学们用自己电脑组 MPI 集群进行并行运算。使用 macOS 的同学不多,使用 Linux 或者 WSL 的同学数量尚可,本着都是类 UNIX 系统、方便操作的想法,我尝试跟与使用 Linux 的同学组集群,但是最终失败了。
先说结论,如果不是同系统同 OpenMPI 版本,组 OpenMPI 集群相当麻烦,我是很不建议的。如果非要组,还是用 Docker 吧。
OpenMPI 对于两机器的要求有很多
- 最好是同 OpenMPI 版本
- 最好是同 OpenMPI 安装路径
- 最好是同 PMIx 编译配置
- 可能还有更多
事实上,这三个坑我都踩过,不过第一个问题和第二个问题的解决重叠了。OpenMPI 不会按照环境变量执行内部程序,会按照 master 的安装路径去让 slave 执行内部程序,因此需要两主机都用相同的安装路径。我在 macOS 上的安装路径在 /opt/homebrew/...
下,Linux 则在 /usr/local/
下,不匹配,所以会报找不到 prted
程序的错误。所以,最好的方法就是,自己编译最新版 OpenMPI。我在 Linux 上设置安装前缀同 macOS homebrew 安装的前缀,遂解决。
然而,问题不断,就算安装路径相同、版本相同,也会因为 PMIx 的细微差异导致无法通信,我遇到的是 PMIX ERROR: PMIX_ERROR in file base/plm_base_launch_support.c at line 1540
。因为着实不想再在 macOS 上自己编译程序,所以我最后放弃了,没有结果。