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

标签 fortran mpi cluster-computing distributed-computing 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 实现的混合:

  • mpirun来自 Open MPI
  • mpiexec可能是 Paraview 的内置 MPICH
  • 您的应用程序是使用英特尔 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使用英特尔 MPI,需要一个额外的步骤。
    你首先需要
    export I_MPI_PMI_LIBRARY=/path/to/slurm/pmi/library/libpmi.so
    

    关于fortran - 在 slurm 中使用 srun 或 mpirun 时作业失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62502324/

    相关文章:

    c++ - 将数组分散到仅工作任务

    function - 如何从字符串定义我的函数?

    c++ - Eigen 在使用显式循环的矩阵乘法中比 Fortran 慢得多

    matlab - Fortran 和 Matlab 返回同一矩阵的不同特征值

    C++ 调用 Fortran 和返回

    hadoop - 构造远程 block 的Spark I/O错误

    c++ - Fortran Do 循环的上限

    c++ - 处理 MPI 应用程序中的信号/正常退出

    r - 是否可以将 Spark 中的 data.table 与 Spark Dataframes 一起使用?

    python - Python 中总计 "CPU hours"