问题描述
我发现 Linux 上的分布式集群作业没有启动,并收到来自 MPI 的错误消息。
解决方法
COMSOL 无法在 Linux 集群上运行的根本原因可能是未正确检测到网络接口和光纤。在 Linux 系统中,COMSOL 6.0 自带 Intel MPI 2021.2 并行库。您可以通过以下步骤查看是否存在 Intel MPI 的不兼容:
当您发现 Intel MPI 无法在集群上运行时,应该首先确保您的提交脚本配置正确。此外,您还可以通过调用以下命令来运行 MPI 测试
comsol hydra mpitest -nn 2 -f hostfile
或者,如果您使用 Slurm 等作业调度系统,可以测试
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=1
...
comsol hydra mpitest -nn 2 -nnhost 1
以确定 MPI 是否确实是问题所在。您还可以添加开关 '-mpidebug 10' 来获取额外的调试输出。
为了解决这个问题,您可以尝试以下建议 A. 和 B.。如果 A. 适合您的情况,我们仍然推荐您继续尝试 B.,因为此选项可以提供更好的性能。
A. 回退到 TCP 通讯协议
导出环境变量 FI_PROVIDER,并将其设置为 'sockets'。在 Slurm 中,可以通过以下命令完成
#SBATCH --export=FI_PROVIDER=sockets
或者,您可以直接在 Linux 系统中使用
export FI_PROVIDER=sockets
或
setenv FI_PROVIDER sockets
并确保将此环境变量移交给集群作业。
这种方法的缺点是通信会回退到 TCP 通讯协议,如果您的光纤更快,这可能会减慢并行运算的效率。
B. 安装更高版本的 Intel MPI
您可以从这里下载 Intel MPI 2021.6,然后安装。如果您没有集群的管理员权限,可以将其安装到您自己的家目录。
然后,使用附加开关启动 COMSOL
-mpiroot <Intel 2021.6 installation directory>/intel/oneapi/mpi/2021.6.0
在 Slurm 上,您可以调用以下命令
#SBATCH --nodes=2
#SBATCH --ntasks-per-node=1
...
comsol hydra mpitest -nn 2 -nnhost 1 -mpiroot <Intel 2021.6 installation directory>/intel/oneapi/mpi/2021.6.0
备注:
- 您也可以指向其他基于 MPICH2 的 MPI 安装(但不能指向 OpenMPI 等)
- 在 COMSOL 5.6 中,您也可以通过 -mpiroot 指向 IMPI 2021.6。
COMSOL 尽一切合理的努力验证您在此页面上查看的信息。本页面提供的资源和文档仅供参考,COMSOL 对其有效性不作任何明示或暗示的声明。COMSOL 对所披露数据的准确性不承担任何法律责任。本文档中引用的任何商标均为其各自所有者的财产。有关完整的商标详细信息,请参阅产品手册。