Mcloud 集群环境介绍

龙讯旷腾大约 9 分钟

Mcloud 集群环境介绍

平台架构

MCloud系统 包括:管理节点, ,登录节点, 存储节点,计算节点; 节点间采用高速互联网络连接.

功能主机名(范围)
管理节点mgt02
登录节点login
存储节点stor[3-6]
计算节点cn[1-2],gn[29-88]

操作系统: CentOS 7.9

具体情况如下:

登录节点

  1. 作用:

    登录节点为用户提供一个登陆系统的平台,用户可以通过 登录节点 提交作业

  2. 允许操作:

    在登陆节点上用户可以进行软件编译与调试,环境变量配置,作业提交,文件编辑,结果查看等操作。

  3. 禁止操作:

    警告

    禁止用户直接在登陆节点上运行计算程序。

计算节点

计算节点挂管理节点 /share 文件夹以及共享存储 /data,具备软件运行所需的环境。

计算节点采用 CPU+GPU 的架构,其具体配置如下表所示:

节点cpu资源gpu资源内存资源
gn[33-88]2颗共28核 E5-2680 v4 2.40GHz4颗 3080 Ti 单颗10240核256GB
gn[29-32]2颗共28核 E5-2680 v4 2.40GHz4颗 3090 单颗10496核512GB
cn[1-2]2颗共64核 Platinum 8375C 2.90GHz256GB

作用:计算节点为用户提供一个大规模并行计算资源,用户可以将自己的作用通过作业 调度系统提交到计算节点上运行。计算节点上具备程序运行所需的环境,

如果需要编译 GPU 程序可以提交交互式作业到 gpu 计算节点

[pengg@login ~]$ srun --nodes=1 --ntasks=1 --partition=3090 --gres=gpu:1 --pty bash
[pengg@gn30 ~]$ ./rungpu.sh
[pengg@gn30 ~]$ exit

这里假设我们要运行的 gpu 程序是 rungpu.shopen in new window.

运行完, 退出, 作业结束.

警告

用户在无作业的情况下无法直接登录到计算节点,

但可以通过 ssh 服务登录到正在运行用户自身作业的计算节点上查看自己程序的运行情况。

互联网络

Mcloud 系统 的互联网络由 infiniband 高速互联网络构成,具有超高通信效率、超低通信延 迟的特点。

作用:主要用于并行任务间的通信,并实现全局文件系统的数据传输。

系统环境

Mcloud 系统的共享存储分别为 /share, /data , 对应两个共享目录,计算节点均可访问。

  • 用户家目录: /data/home/user_name

    该目录属于共享目录的下级目录,用于存放用户的数据,在创建用户时会在该目录下 产生一个与用户名相同的目录,用户每次登陆系统后会自动跳转到该目录下,用户的 数据及文件默认存储在与自己同名的目录中。

  • 常用软件安装目录: /share/app

    该目录属于共享目录,存放用户常用的软件或者编译器等。该目录仅提供用户普遍需 要使用的常用软件,会随着用户的需求不断更新,软件由管理员负责安装,为用户提供使用。

编译器

Mcloud 系统 的登陆节点上,目前安装了 Intel 编译 器和 GCC 编译器。用于可以根据自身程 序需求,选择相应的编译器进行编译和应用程序开发,由于 集群采用的是 Intel 的 CPU ,因此在 编译中除特定需要,建议用户首选 Intel 编译器。另外, Mcloud 系统 的登陆节点上还提供了 MPI 并行编译环境,在计算节点上有针对 GPU 的 CUDA 编译环境。下面将分别具体介绍各编译器以 及编译环境。

INTEL 编译器

Mcloud系统 上安装 的 Intel 编译器 包括 Intel2016 和 Intel2020 版本。

  • Intel2016 编译器

建议用户使用 module load intel/2016 命令加载 Intel 2016 编译器环境。

版本为2016 支持 C C++ Fortran 和 Fortran 90 语音程序的开发。 Intel 编译器安装在 /share/app/intel2016u2 目录,其中 C 和 C++ 编译器,以及 Fortran77/90 的相应命令程序均在: /share/app/intel2016u2/compilers_and_libraries_2016.2.181/linux/bin/intel64 中编译命令分别为 icc和 icpc ifort 等。

注意: 用户在登录节点上使用 Intel2016 编译器进行程序编译时需要添加如下环境变量声明:

source /share/app/intel2016u2/compilers_and_libraries_2016.2.181/linux/bin/iccvars.sh intel64
source /share/app/intel2016u2/compilers_and_libraries_2016.2.181/linux/bin/ifortvars.sh intel64

用于在使用MKL 库进行程序编译时需要添加如下环境变量声明:

source /share/app/intel2016u2/compilers_and_libraries_2016.2.181/linux/mkl/bin/mklvars.sh intel64

Intel2016 对应的 MKL 安装路为 /share/app/intel2016u2/compilers_and_libraries_2016.2.181/linux/mkl

  • Intel2020 编译器

建议用户使用 module load intel/2020 命令加载 Intel2020 编译器环境

版本为 2020 支持 C C++ Fortran 和 Fortran 90 语音程序的开发。 Intel 编译器安装在 /share/app/intel2020u4/ 目录,其中 C 和 C++ 编译器,以及 Fortran77/90 的相应命令程序均在: /share/app/intel2020u4/compilers_and_libraries_2020.4.304/linux/bin/intel64 中 编译命令分别为 icc 和 icpc ifort 等。

注意: 用户再登录节点上使用Intel20 20 编译器进行程序编译时需要添加如下环境变量声明:

source /share/app/intel2020u4/compilers_and_libraries_2020.4.304/linux/bin/iccvars.sh intel64
source /share/app/intel2020u4/compilers_and_libraries_2020.4.304/linux/bin/ifortvars.sh intel64

用于在使用 MKL 库进行程序编译时需要添加如下环境变量声明:

source /share/app/intel2020u4/compilers_and_libraries_2020.4.304/linux/mkl/bin/mklvars.sh intel64

Intel2020 对应的 MKL 安装路为 /share/app/intel2020u4/compilers_and_libraries_2020.4.304/linux/mkl/

常用编译选项如下:

(1) 优化选项
-O0 :禁止优化
-O1 :优化代码大小和代码局部性
-O2 (缺省值):优化代码速度(推荐使用
-O3 O2+ 激进的优化(循环、存储访问转换、预取)。需要注意的是, O3 并不一定适合所有程序。
-fast :打开 O3 、 ipo 、 static 、 no prec div 和 xP
-ipo :过程间优化

(2) 输出和调试选项
-c :只生成目标文件
-S :只生成汇编文件
-g :调试选项
-o<file> file>:指定生成的输出文件名
(3) 浮点选项
-mp :维持浮点精度(禁止某些优化)
-mpl :改善浮点精度。和 mp 相比, mpl 对性能影响较小
(4) 链接选项
-L<dir> dir>:指定链接时搜索的库路径
-I<string> string>:链接特定库
-static 静态链接
-shared :生成共享库

GCC编译器

Mcloud 系统 默认的 GCC 版本是 4.8.5 ,相关的编译命令都在 /usr/bin 目录中。 如需要其他版本的 GCC 编译器,请联系管理员进行安装。

MPI并行环境

系统的 MPI 并行环境包括两种,分别为 Intel 并行环境和 OpenMPI 并行环境,其中 Intel 并行环 境包括 Intel2016 、 Intel2020 。 OpenMPI 2.1.0 是用 Intel 编译器编译的版本。

用户在使用Intel2016 并行环境时需要添加如下环境变量声明:

source /share/app/intel2016u2/impi/5.1.3.181/intel64/bin/mpivars.sh intel64

用户在使用Intel2020 并行环境时需要添加如下环境变量声明:

source /share/app/intel2020u4/impi/2019.9.304/intel64/bin/mpivars.sh intel64

用户在使用OpenMPI 2.1.0 并行环境时需要添加如下环境变量声明:

export PATH=/share/app/openmpi/2.1.0/bin:$PATH
export LD_LIBRARY_PATH=/share/app/openmpi/2.1.0/lib:$LD_LIBRARY_PATH

并行MPI 编译环境使用注意事项:

对于intel 并行环境,如果需要利用 infiniband 高速互联网络,需要用户在命令行添加参数 rdma ,指定 MPI 通信接口为 infiniband 网络。

如果用户使用 makefile 或 autoconf 编译 MPI 并行程序, 可以将 makefile 中的 CC CXX F77 F90 等变量设置成 icc icpc ifort ifort ,或在 autoconf 的 configure 过程 前设置 CC CXX F77 F90 等环境变量为 icc icpc ifort ifort 等。

对于OpenMPI 并行环境, MPI 编译命令内部会自动包含 MPI 标准头文件所在路径,并自动 连接所需的 MPI 通信接口库,不需要用户在命令行参数中指定。

如果用户使用 makefile 或 autoconf 编译 MPI 并行程序,可以将 makefile 中的 CC CXX F77 F90 等变量设置成 mpicc mpicxx mpif77 mpif90 ,或在 autoconf 的 configure 过程前设置 CC CXX F77 F90 等环境变 量为 mpicc mpicxx mpif77 mpif90 等。

CUDA编译环境

由于登录节点没有GPU ,因此在登录节点没有相应的 CUDA 编译环境, 只有计算节点有 CUDA 环境。

用户需要 CUDA 编译环境时可以 提交交互式的作业到 gpu 计算节点调用 CUDA 环境。

目前计算节点 包括的 CUDA 编译环境 如下表所示。

CUDA版本CUDA安装路径加载方法
10.1/usr/local/cuda-10.1module load cuda/10.1
11.0/usr/local/cuda-11.0module load cuda/11.0
11.6/usr/local/cuda-11.6module load cuda/11.6

用户使用CUDA 进行程序编译时,除了用上面提供的加载方法,也可以自己通过环境变量 声明的方式加载:

CUDA 10.1:

export PATH=/usr/local/cuda-10.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH

CUDA 11.0:

export PATH=/usr/local/cuda-11.0/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64:$LD_LIBRARY_PATH

CUDA 11.6:

export PATH=/usr/local/cuda-11.6 bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64:$LD_LIBRARY_PATH

注意:目前系统没有提供默认的 CUDA 编译环境,请大家在编译运行 GPU 程序时,加载自 己需要的 CUDA 版本编译环境,以及相应的动态链接库。

Python 环境

Python 2.7.5:

系统上操作系统自带的 Python 版本是 2.7.5 所以默认情况下或者不加载其他 Python 环境变量的情况下,Python 的版本是 2.7.5

Python 集成环境 Anaconda :

/share/app 目录下安装了 Python 集成环境,用户可以设置相应的环境变量进行调用:

Python 2.7.15 Anaconda2 5.2.0

export PATH=/share/app/anaconda2/bin:$PATH
export LD_LIBRARY_PATH=/share/app/anaconda2/lib:$LD_LIBRARY_PATH

Python 3.8.3 Anaconda3 2020.07

export PATH=/share/app/anaconda3/bin:$PATH
export LD_LIBRARY_PATH=/share/app/anaconda3/lib:$LD_LIBRARY_PATH

注意:

调用 Python 2.7.15 或者 Python 3.xx 时, 我们推荐用 module load python/2.7.15 或者 module load python/3.8.3 命令调用

软件环境

目前已安装的软件如下:

软件名称安装路径版本加载方法
IOTK/share/app/iotk1.2.0
LIBINT/share/app/libint/1.1.4/gnu1.1.4
/share/app/libxc/2.0.1/intel2.0.1
/share/app/libxc/2.1.2/intel2.1.2
/share/app/libxc/3.0.0/intel3.0.0
/share/app/libxc/3.0.1/intel3.0.1
/share/app/libxc/4.0.2/intel4.0.2
MAGMA/share/app/magma/2.5.4/mkl-icc2.5.4
FFTW/share/app/fftw/3.3.43.3.4
/share/app/fftw/3.3.83.3.8
pwmat/share/app/pwmat/20220302/bin20220302module load pwmat/2022.03.02

环境变量管理工具

Mcloud 系统 支持 Environment modules 工具来快速设置和修改用户编译运行环境。 Environment modules 通过加载和卸载 modulefile (环境配置文件)可以直接改变用户的环境变 量。用户不需要频繁修改 .bashrc 文件,从而避免误操作。 如下为 Modules 常用命令,如果用户计划使用某一软件,先在 shell 命令行下 输入 module av 查看所需软件是否已在系统中安装;若已安装,则通过 module help 命令具体查看 所需软件的版本、依赖环 境等;然后在 shell 命令行下通过 module add 加载环境变量,最后 提交脚本。

命令作用
module avail查看系统中可用的软件环境
module help查看软件的帮助信息
module add | load加载环境变量
module del | unload卸载环境变量
module list | li显示用户已加载的环境变量
module show显示具体的 Module 配置文件
module swap |sw |switch替换环境变量
module purge卸载当前 shell 环境下的所有环境变量

通过module av 可以查看系统可用的软件,命名方式遵循“软件名称 软件版本”,以 intel/2016 为例,该软件为 INTEL 编译器,版本为 2016 。

当用户推出当前shell 环境后,已加载的环境变量会取消,可以将 module load 加载命令加 入到 .bashrc 文件中,使得变量的加载永久生效。

上次编辑于:
贡献者: jiyunqq