最近给客户调试机器遇到的问题,正好看到hpc群里有人提出同样问题,那么今天就在此阐述下该问题的原因及解决办法。
问题描述:shell直接指定多节点节点运行mpirun -np ** -machinefile *****计算任务正常。但是使用PBS/Torque提交同样的计算任务时,出现如下报错。另外在使用以前的parallel studio环境时提交计算也正常,这种错误只发生在oneapi上。
原因:
如上图最后一行所述,"pbs的bootstrap(引导程序)无法成功在远程节点发起mpi进程"。多节点计算中,节点的mpi进程是由相应的bootstrap发起。当我们直接使用mpirun时,bootstrap将会使用默认的ssh发起远端节点的mpi进程。当我们使用pbs/torque时,pbs/torque会指定bootstrap为pbsdsh来发起mpi进程;类似的,当我们使用slurm时,bootstrap是srun;lsf是blaunch; sge是qrsh......
oneapi作为intel新的编译套装,pbs/torque的bootstrap(pbsdsh)可能无法发起oneapi的mpi进程,这属于软件兼容性问题。
解决办法:
指定bootstrap为ssh,这样不论啥任务系统,只要节点间ssh互联着,mpi并行任务就能发起。
在提交脚本中添加:export I_MPI_HYDRA_BOOTSTRAP=ssh