Mcloud环境和编译
系统环境
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 编译器进行程序编译时需要添加如下环境变量声明:
module load intel/2016
或
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 库进行程序编译时需要添加如下环境变量声明:
module load intel/2016
或
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 编译器进行程序编译时需要添加如下环境变量声明:
module load intel/2020
或
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 库进行程序编译时需要添加如下环境变量声明:
module load intel/2020
或
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 并行环境时需要添加如下环境变量声明:
module load intel/2016
或
source /share/app/intel2016u2/impi/5.1.3.181/intel64/bin/mpivars.sh intel64
用户在使用Intel2020 并行环境时需要添加如下环境变量声明:
module load intel/2020
或
source /share/app/intel2020u4/impi/2019.9.304/intel64/bin/mpivars.sh intel64
用户在使用OpenMPI 2.1.0 并行环境时需要添加如下环境变量声明:
module load 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.1 | module load cuda/10.1 |
11.0 | /usr/local/cuda-11.0 | module load cuda/11.0 |
11.6 | /usr/local/cuda-11.6 | module load cuda/11.6 |
用户 使用CUDA 进行程序编译时,除了用上面提供的加载方法,也可以自己通过环境变量 声明的方式加载:
CUDA 10.1:
module load 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:
module load 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:
module load 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
module load python/2.7.15
或
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
module load python/3.8.3
或
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/iotk | 1.2.0 | |
LIBINT | /share/app/libint/1.1.4/gnu | 1.1.4 | |
/share/app/libxc/2.0.1/intel | 2.0.1 | ||
/share/app/libxc/2.1.2/intel | 2.1.2 | ||
/share/app/libxc/3.0.0/intel | 3.0.0 | ||
/share/app/libxc/3.0.1/intel | 3.0.1 | ||
/share/app/libxc/4.0.2/intel | 4.0.2 | ||
MAGMA | /share/app/magma/2.5.4/mkl-icc | 2.5.4 | |
FFTW | /share/app/fftw/3.3.4 | 3.3.4 | |
/share/app/fftw/3.3.8 | 3.3.8 | ||
pwmat | /share/app/pwmat/20220302/bin | 20220302 | module load pwmat/2022.03.02 |