请注意,如果在编译程序的时候使用 module load 加载了某个编译器,在 sbatch 作业脚本里也需要加载相同的编译器

MPI 程序编译和运行

OpenMPI 编译器

使用预装的 OpenMPI

使用 module avail 命令查看可用的 OpenMPI 版本,选择所需要的版本,例如

module load openmpi/2.1.5
  • 未标注 GCC 版本号的 OpenMPI,使用的是系统默认版本的 GCC 编译器
  • 标注 IB 表示适配 Infiniband 网络
  • 标注 OPA 表示适配 Intel OPA 网络
使用 OpenMPI 编译 C 程序
mpicc -O2 mpisource.c -o mpiexefile
使用 OpenMPI 编译 C++ 程序
mpic++ -O2 mpisource.cpp -o mpiexefile
使用 OpenMPI 编译 Fortran 程序
mpif90 -O2 mpisource.f90 -o mpiexefile

Intel MPI 编译器

Intel Parallel Studio 和 oneAPI 编译器套装包含基于 MPICH 的 Intel MPI 编译器和运行库,使用 module avail 命令查看可用的 Intel 编译器套装版本,选择所需要的版本,例如

module load intel/parallelstudio/2017u8
使用 Intel MPI 编译 C 程序
mpiicc source.c -o mpiexefile
使用 Intel MPI 编译 C++ 程序
mpiicpc source.cpp -o mpiexefile
使用 Intel MPI 编译 Fortran 程序
mpiifort source.f90 -o mpiexefile

运行 MPI 并行程序

MPI 程序示例作业脚本

#!/bin/bash

#SBATCH --partition=hpxg
#SBATCH --ntasks=16
#SBATCH --time=6:00:00

module load openmpi/2.1.5

cd $SLURM_SUBMIT_DIR

srun -n $SLURM_NTASKS ./mpiexefile

results matching ""

    No results matching ""