编译器调用和安装
编译器调用¶
集群默认安装的编译器有gcc/gfortran和Intel oneAPI
-
gcc/gfortran调用
系统默认安装在/usr/bin下,可直接用命令使用
[userA@quantum ~]$ which gcc /usr/bin/gcc [userA@quantum ~]$ gcc -v Using built-in specs. COLLECT_GCC=gcc COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-redhat-linux Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.rockylinux.org/ --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --disable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux Thread model: posix gcc version 8.5.0 20210514 (Red Hat 8.5.0-22) (GCC) [userA@quantum ~]$ which gfortran /usr/bin/gfortran [userA@quantum ~]$ gfortran -v Using built-in specs. COLLECT_GCC=gfortran COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper OFFLOAD_TARGET_NAMES=nvptx-none OFFLOAD_TARGET_DEFAULT=1 Target: x86_64-redhat-linux Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.rockylinux.org/ --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --disable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux Thread model: posix gcc version 8.5.0 20210514 (Red Hat 8.5.0-22) (GCC)
-
Intel oneAPI调用
刷新intel oneapi的环境变量
或者分别刷新相应模块环境变量[userA@quantum ~]$ source /opt/intel/oneapi/setvars.sh
此外,还可使用module加载Intel oneAPI的环境变量。[userA@quantum ~]$ source /opt/intel/oneapi/compiler/2022.2.0/env/vars.sh [userA@quantum ~]$ source /opt/intel/oneapi/mkl/2022.2.0/env/vars.sh [userA@quantum ~]$ source /opt/intel/oneapi/mpi/2021.7.0/env/vars.sh
gcc/gfortran安装¶
有时编译软件需要的版本与系统默认安装的不一致,可以自己下载安装。
下载地址:https://mirrors.nju.edu.cn/gnu/gcc/ ,假设下载gcc-14.1.0.tar.gz
-
解压缩:tar -zxvf gcc-14.1.0.tar.gz
-
下载必要的包
在联网的管理节点执行
[userA@quantum ~]$ cd gcc-14.1.0 [userA@quantum gcc-14.1.0]$ ./contrib/download_prerequisites
-
生成配置文件
[userA@quantum gcc-14.1.0]$ mkdir objdir [userA@quantum gcc-14.1.0]$ cd objdir [userA@quantum objdir]$ mkdir -p /home/userA/soft/gcc-14.1.0 [userA@quantum objdir]$ ../configure --prefix=/home/userA/soft/gcc-14.1.0 --enable-languages=c,c++,fortran --disable-multilib --disable-bootstrap --enable-lto --enable-plugins
-
申请编译计算节点
集群管理节点一般做了限制,不允许在上面直接运行作业或编译,我们也没专门设置编译节点,因此需要在计算节点上编译。为避免正常作业与编译抢占CPU,我们把编译也按正常作业提交即可。
-N 申请的计算节点数目;-n 申请的任务核数;-p 申请的作业队列;-w 申请的计算节点名称。[userA@quantum objdir]$ salloc -N 1 -n 4 -p gao-grp -w cu01
账号可使用队列的名称:可使用sacctmgr show ass user=$(whoami) format=part
查看。队列所对应的节点可用sinfo或者pestat命令查看。
这里我们申请一个计算节点,4核,使用gao-grp队列,申请计算节点为cu01.
-
编译及安装
[userA@quantum objdir]$ ssh cu01 [userA@cu01 ~]$ cd gcc-14.1.0/objdir [userA@cu01 objdir]$ make -j 4 all install |tee make.log
-
设置环境变量
export PATH=/home/userA/soft/gcc-14.1.0/bin:${PATH} export LD_LIBRARY_PATH=/home/userA/soft/gcc-14.1.0/lib:/home/userA/soft/gcc-14.1.0/lib64${LD_LIBRARY_PATH:+:}${LD_LIBRARY_PATH}
Intel oneAPI安装¶
-
下载HPC和MKL套件
HPC套件下载地址:https://www.intel.cn/content/www/cn/zh/developer/tools/oneapi/hpc-toolkit-download.html?operatingsystem=linux&distributions=offline
MKL套件下载地址:https://www.intel.com/content/www/us/en/developer/tools/oneapi/onemkl-download.html?operatingsystem=linux&distributions=offline
也可直接用wget下载
[userA@quantum ~]$ wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/d461a695-6481-426f-a22f-b5644cd1fa8b/l_HPCKit_p_2024.2.1.79_offline.sh [userA@quantum ~]$ wget https://registrationcenter-download.intel.com/akdlm/IRC_NAS/6e00e368-b61d-4f87-a409-9b510c022a37/l_onemkl_p_2024.2.1.105_offline.sh
-
静默安装
默认安装在家目录intel/oneapi目录下。[userA@quantum ~]$ sh ./l_HPCKit_p_2024.2.1.79_offline.sh -a --silent --cli --eula accept [userA@quantum ~]$ sh ./l_onemkl_p_2024.2.1.105_offline.sh -a --silent --cli --eula accept
-
调用
[userA@quantum ~]$ source intel/oneapi/setvars.sh [userA@quantum ~]$ ifort -v ifort version 2021.13.1
本站总访问量 次