跳转至

编译器调用和安装

编译器调用

集群默认安装的编译器有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
    
    或者分别刷新相应模块环境变量
    [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
    
    此外,还可使用module加载Intel oneAPI的环境变量。

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,我们把编译也按正常作业提交即可。

    [userA@quantum objdir]$ salloc -N 1 -n 4 -p gao-grp -w cu01
    
    -N 申请的计算节点数目;-n 申请的任务核数;-p 申请的作业队列;-w 申请的计算节点名称。
    账号可使用队列的名称:可使用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安装

本文阅读量  次
本站总访问量  次