在 slurm 中使用 srun 或 mpirun 时作业失败
Job fails while using srun or mpirun in slurm
我正在尝试使用 slurm 提交作业。但是,如果我使用 srun
或 mpirun
,作业会失败。但是,它在 mpiexec
下运行良好,尽管 运行 尽管分配了多个节点和多个内核,但只有单个进程。
实际使用的命令是:
srun /nfs/home/6/sanjeevis/dns/lb3d/src/lbe -f input-default
以下是我使用 srun/mpirun
得到的错误:
[mpiexec@n1581] match_arg (utils/args/args.c:163): unrecognized argument pmi_args
[mpiexec@n1581] HYDU_parse_array (utils/args/args.c:178): argument matching returned error
[mpiexec@n1581] parse_args (ui/mpich/utils.c:1642): error parsing input array
[mpiexec@n1581] HYD_uii_mpx_get_parameters (ui/mpich/utils.c:1694): unable to parse user arguments
代码编译正常,但我遇到了 slurm 问题。感谢您对此提供任何帮助。
编辑:以下是可执行文件 which mpirun, mpiexec, and ldd
的输出:
/nfs/apps/MPI/openmpi/3.1.3/gnu/6.5.0/cuda/9.0/bin/mpirun
/nfs/apps/ParaView/5.8/binary/bin/mpiexec
linux-vdso.so.1 => (0x00007fff78255000)
libmpi.so.12 => /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/intel64/lib/release_mt/libmpi.so.12 (0x00002ae6cb57d000)
libz.so.1 => /nfs/apps/Libraries/zlib/1.2.11/system/lib/libz.so.1 (0x00002ae6cbd4c000)
libmpifort.so.12 => /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/intel64/lib/libmpifort.so.12 (0x00002ae6cbf67000)
libdl.so.2 => /lib64/libdl.so.2 (0x00002ae6cc315000)
librt.so.1 => /lib64/librt.so.1 (0x00002ae6cc519000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ae6cc721000)
libm.so.6 => /lib64/libm.so.6 (0x00002ae6cc93e000)
libc.so.6 => /lib64/libc.so.6 (0x00002ae6ccc40000)
libgcc_s.so.1 => /nfs/apps/Compilers/GNU/6.5.0/lib64/libgcc_s.so.1 (0x00002ae6cd003000)
/lib64/ld-linux-x86-64.so.2 (0x0000558ea723a000)
这是我的job script。
最有可能的问题是程序是用一个 MPI 实现编译的,并用另一个 MPI 实现调用的。确保正确设置了所有 MPI 环境变量:OPAL_PREFIX、MPI_ROOT、PATH 和 LD_LIBRARY_PATH.
根本原因是多个 MPI 实现无法互操作的混合:
mpirun
来自 Open MPI
mpiexec
可能是 Paraview 的内置 MPICH
- 您的应用是使用 Intel MPI 构建的。
尝试使用 /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/bin/mpirun
(或 /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/bin64/mpirun
),这样启动器将匹配您的 MPI 库。
如果您想将 srun
与 Intel MPI 一起使用,则需要一个额外的步骤。
你首先需要
export I_MPI_PMI_LIBRARY=/path/to/slurm/pmi/library/libpmi.so
我正在尝试使用 slurm 提交作业。但是,如果我使用 srun
或 mpirun
,作业会失败。但是,它在 mpiexec
下运行良好,尽管 运行 尽管分配了多个节点和多个内核,但只有单个进程。
实际使用的命令是:
srun /nfs/home/6/sanjeevis/dns/lb3d/src/lbe -f input-default
以下是我使用 srun/mpirun
得到的错误:
[mpiexec@n1581] match_arg (utils/args/args.c:163): unrecognized argument pmi_args
[mpiexec@n1581] HYDU_parse_array (utils/args/args.c:178): argument matching returned error
[mpiexec@n1581] parse_args (ui/mpich/utils.c:1642): error parsing input array
[mpiexec@n1581] HYD_uii_mpx_get_parameters (ui/mpich/utils.c:1694): unable to parse user arguments
代码编译正常,但我遇到了 slurm 问题。感谢您对此提供任何帮助。
编辑:以下是可执行文件 which mpirun, mpiexec, and ldd
的输出:
/nfs/apps/MPI/openmpi/3.1.3/gnu/6.5.0/cuda/9.0/bin/mpirun
/nfs/apps/ParaView/5.8/binary/bin/mpiexec
linux-vdso.so.1 => (0x00007fff78255000)
libmpi.so.12 => /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/intel64/lib/release_mt/libmpi.so.12 (0x00002ae6cb57d000)
libz.so.1 => /nfs/apps/Libraries/zlib/1.2.11/system/lib/libz.so.1 (0x00002ae6cbd4c000)
libmpifort.so.12 => /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/intel64/lib/libmpifort.so.12 (0x00002ae6cbf67000)
libdl.so.2 => /lib64/libdl.so.2 (0x00002ae6cc315000)
librt.so.1 => /lib64/librt.so.1 (0x00002ae6cc519000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00002ae6cc721000)
libm.so.6 => /lib64/libm.so.6 (0x00002ae6cc93e000)
libc.so.6 => /lib64/libc.so.6 (0x00002ae6ccc40000)
libgcc_s.so.1 => /nfs/apps/Compilers/GNU/6.5.0/lib64/libgcc_s.so.1 (0x00002ae6cd003000)
/lib64/ld-linux-x86-64.so.2 (0x0000558ea723a000)
这是我的job script。
最有可能的问题是程序是用一个 MPI 实现编译的,并用另一个 MPI 实现调用的。确保正确设置了所有 MPI 环境变量:OPAL_PREFIX、MPI_ROOT、PATH 和 LD_LIBRARY_PATH.
根本原因是多个 MPI 实现无法互操作的混合:
mpirun
来自 Open MPImpiexec
可能是 Paraview 的内置 MPICH- 您的应用是使用 Intel MPI 构建的。
尝试使用 /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/bin/mpirun
(或 /nfs/apps/Compilers/Intel/ParallelStudio/2016.3.067/impi/5.1.3.210/bin64/mpirun
),这样启动器将匹配您的 MPI 库。
如果您想将 srun
与 Intel MPI 一起使用,则需要一个额外的步骤。
你首先需要
export I_MPI_PMI_LIBRARY=/path/to/slurm/pmi/library/libpmi.so