在slurm中使用srun或mpirun时作业失败

时间:2020-06-21 17:46:25

标签: fortran mpi cluster-computing distributed-computing slurm

我正试图以口吃的态度提交工作。但是,如果我使用srunmpirun,则作业将失败。但是,尽管分配了多个节点和多个内核,尽管它仅使用单个进程运行,但是它可以与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

代码可以很好地编译,但是我正面临着问题。感谢您的任何帮助。

编辑:以下是可执行文件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

2 个答案:

答案 0 :(得分:2)

根本原因是无法互操作的几种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

答案 1 :(得分:1)

最可能的问题是该程序是使用一个MPI实现编译的,并使用另一个MPI实现进行调用的。确保正确设置了所有MPI环境变量:OPAL_PREFIX,MPI_ROOT,PATH和LD_LIBRARY_PATH。