我正在尝试在加拿大计算上运行 irace,当我使用 openmpi 模块时,它总是给我以下错误消息:
mpirun 无法启动指定的应用程序,因为它无法访问或执行可执行文件:
可执行文件:/scratch/irace/test.R
节点:niaXXXX
尝试启动进程等级 0 时。
我的bash脚本写好了
#!/bin/sh
#SBATCH --nodes=5
#SBATCH --ntasks-per-node=40
#SBATCH --mem=0
#SBATCH --mail-type=ALL
#SBATCH --output=/scratch/irace/irace-%j.out
#SBATCH --error=/scratch/irace/irace-%j.err
module load NiaEnv/2019b
module load gcc
module load r
module load openmpi
cd /scratch/irace
mpirun -np 5 /scratch/irace/test.R --parallel 4
当我提交这个作业脚本时,运行失败。然而,当我替换最后一条语句时
mpirun -np 5 /scratch/irace/test.R --parallel 4
附有声明
Rscript ./test.R
,它会运行良好并给我结果。造成此问题的原因是什么?如何修复此错误并使其在加拿大计算上运行?
考虑
cd /scratch/irace
mpirun -np 5 Rscript test.R --parallel 4
mpirun
需要一个可执行文件 (Rscript
) 而不是 R 脚本(你的 test.R
)。
这也是
Rscript test.R
工作正常的原因,因为 Rscript
是解释您的 test.R
R 脚本的可执行文件。但根据您的 R 脚本,这可能只使用您请求的 5 个节点之一。
考虑使用
pbdMPI
包来简化 R 代码,并使用所有请求的节点进行计算(SPMD 样式),而不是让管理器在大部分时间处于空闲状态的管理器-工作器样式。