你的超算环境非常丰富,模块主要分为三大类:
应用软件(Apps):涵盖材料、化学、气象、流体力学等领域,如 LAMMPS、GROMACS、CP2K、QE(Quantum ESPRESSO)、WRF、OpenFOAM 等,版本众多。
基础编译器与 MPI(Base):
传统 Intel 编译器:提供 intel/2017、intel/2020、intel/2021.3.0 等(对应命令通常是 icc/ifort)。
其他编译器:GCC(9.3.0、11.4.0 等)、PGI、NVHPC。
MPI 库:IntelMPI、HPCX、OpenMPI、MPICH 齐全。
数学库:FFTW、HDF5、NetCDF、BLAS、LAPACK 等非常完善。
用户自定义模块:/work/home/ln2026/apprepo/modules 下只有你自己(或你组内)放的 lammps-22Jul2025-oneapi2024.0.1。
在高性能计算(HPC)和软件开发领域,GCC、Intel 编译器和PGI 编译器是最著名的三套编译器家族。它们各具特色,适用于不同的硬件架构与应用场景。
gccg++ | iccicpc (经典) 或 icx / icpx (oneAPI) | pgccpgc++ 或 nvc / nvc++ | |
gfortran | ifortifx (oneAPI) | pgf90pgfortran 或 nvfortran |
CC、CXX、FC 环境变量来切换不同编译器)。GCC:通用性第一。可以在 x86、ARM、MIPS、PowerPC 等几乎所有 CPU 架构上运行并生成代码。虽然优化不如 Intel/NVIDIA 深入,但代码的通用性和可移植性最好。
Intel 编译器:针对 Intel 处理器(x86_64) 做了极致的深度优化。其内置的自动矢量化(Auto-vectorization)、AVX-512 指令集支持以及与 Intel MKL 数学库的集成,能使代码在 Intel CPU 上跑出顶尖性能。
PGI (NVIDIA) 编译器:针对 NVIDIA GPU 显卡 以及异构计算进行深度优化。它是最早且最完整支持 OpenACC(通过指令自动将 CPU 循环下刷到 GPU 加速)的编译器之一。
GCC:开源自由软件,是 Linux 操作系统的标准编译器。
Intel 编译器:早期为高价商业许可,近几年转型推出了 Intel oneAPI,允许开发者免费下载和使用包含底层 LLVM 架构的新一代编译器(icx/ifx)。
PGI 编译器:被 NVIDIA 收购后,传统的 PGI(pgcc/pgf90)已被逐步重构并整合进 NVIDIA HPC SDK(命令转为 nvc/nvfortran),旨在服务于 GPU 算力集群。
GCC:对语言标准的语法审查相对宽松,报错信息丰富且社区解决方案极多。许多老旧源码(甚至语法不太规范的代码)用 GCC 往往最容易成功编译。
Intel / PGI 编译器:对语法和 Fortran/C++ 标准的要求更为严苛。很多在 GCC 下能“蒙混过关”的非法指针操作或未定义行为,在 Intel 或 PGI 编译器下可能会直接报编译错误。
oneAPI 是 Intel 推出的异构计算架构统一标准,也是一套完整的开发者工具包套件(Toolkit)。过去,针对 CPU 编程用 C/C++/Fortran,针对 GPU 用 CUDA,针对 FPGA 用 OpenCL,这导致代码很难跨硬件移植。Intel 推出 oneAPI 就是为了消除这种隔阂,实现“一套代码,跑在 CPU、GPU、FPGA 等不同硬件上”。
它不是单款软件,而是一个“大礼包”,里面包含:
全新编译器组件:
icx / icpx:基于 LLVM 打造的下一代 Intel C/C++ 编译器(替代老旧的 icc)。
ifx:基于 LLVM 的下一代 Intel Fortran 编译器(替代老旧的 ifort)。
支持 SYCL / DPC++ 语言(一种允许用标准 C++ 编写跨平台 GPU/CPU 代码的语言)。
顶级数学与并行库:
oneMKL(即经典的 Intel MKL 数学库,提供极速的矩阵/FFT等计算)。
oneTBB(多线程构建块库)。
Intel MPI(分布式集群通讯库)。
性能分析工具:
Intel VTune Profiler(极强悍的代码瓶颈与性能调优诊断工具)。
它是开源的吗?
部分开源,部分闭源。 oneAPI 的标准规范是公开且开源的,其底层编译器的驱动/部分库(如 SYCL 运行时)也是开源的;但 Intel 自身优化过的许多核心库和可执行程序(如 MKL 的核心优化算法、VTune)依旧是专有/闭源软件。
免费模式:
过去 Intel 的并行开发套件(Parallel Studio XE)售价高达上千美元,而现在的 Intel oneAPI Base / HPC Toolkit 已经完全免费提供给所有人下载使用(不限商业或个人用途),仅在用户需要“官方一对一企业技术支持”时才收费。
NVIDIA HPC SDK 是 NVIDIA 推出的高性能计算软件开发工具包(Software Development Kit)。在前面提到过PGI 编译器(pgcc/pgf90),PGI 商业公司在被 NVIDIA 收购后,NVIDIA 将 PGI 编译器的技术彻底重构并整合,推出了这个全新的工具包。原 PGI 的核心命令也升级为 nvc / nvc++ / nvfortran。
它同样是一个面向 HPC(超算/科学计算)的大套件,专门为了发挥 CPU + NVIDIA GPU 联合加速而设计:
核心编译器组件:
nvfortran:前身是 pgf90,业界极少数能将标准 Fortran 语言和 OpenACC 指令直接编译运行在 NVIDIA GPU 上的超级 Fortran 编译器。
**nvc++ / nvc**:支持标准 C/C++(含 C++17 Parallel Algorithms 自动 GPU Offload)以及 OpenACC/OpenMP 指令。
nvcc:NVIDIA 原生的 CUDA C++ 编译器。
GPU 核心加速库:
cuBLAS / cuSOLVER / cuFFT / cuSPARSE 等线性代数与数学库。
NCCL / NVSHMEM(用于多卡/超算集群间高带宽互连通信的库)。
分析调试工具:
Nsight Systems / Nsight Compute(NVIDIA 官方的 GPU 性能剖析工具)。
它是开源的吗?
否,它绝大部分是闭源商业软件。 虽然它包含了 Open MPI 等部分开源组件,但 NVIDIA 的编译器核心和底层 GPU 算法库均属于 NVIDIA 专有闭源技术。
免费模式:
NVIDIA HPC SDK 现在免费向社区开发者开放下载(可在官网、Docker/Singularity 容器中自由部署使用),NVIDIA 仅针对“企业级编译器高级技术支持服务(Compiler Support Services)”收取许可订阅费用。
gccg++, gfortran | icxicpx, ifx | nvcnvc++, nvfortran (原PGI), nvcc | |
结论:如果把GCC比作一把纯手工制成的开源“军刀”;那么Intel oneAPI和NVIDIA HPC SDK就是各自硬件巨头为开发者打造的“军火重装备箱”(里面装满了编译器、数学库、通信库和性能分析仪表盘),且两个装备箱目前均可以免费获取使用。
那么,什么又是cmake,make,makefile呢?
GCC、CMake、CMakelist、Make、Makefile、Ninja啥关系?一图讲透!


程序源文件(Source File)是程序员使用编程语言(如C、C++、Java、Python等)编写的、包含程序原始代码的文本文件。它是程序最原始的形态,经过编译、链接等过程后,才能生成计算机可直接执行的可运行文件(如.exe文件)。
以c++的编译为例, .cpp .o ./hello
一份代码的编译过程有四个阶段:预处理、编译、汇编、链接。

【看到这里,我的理解就是从你写的人能看懂的程序代码.c/.cpp的经过gcc的编译make然后变成绿色的可以直接./运行的可执行程序】
【首先,有三款编译软件,基本上我们用到的是GNU的gcc去编译一些源文件,我们一行一行的写太慢了,就用到了make命令,这个make命令会找Makefile文件去编译这些文件,但工程量大了之后makefile文件比较难写,且与当前系统环境配置强相关,所有通过cmake来解决,cmake基于cmakelist.txt来生成makefile然后在make -j就好了】
CMakeLists.txt 文件怎么写?
# 1. 指定 CMake 的最低版本要求(建议设置)cmake_minimum_required(VERSION 3.10)# 2. 定义项目名称、版本号和使用的语言project(MyProject VERSION 1.0 LANGUAGES CXX)# 3. 指定 C++ 标准(例如 C++17)set(CMAKE_CXX_STANDARD 17)set(CMAKE_CXX_STANDARD_REQUIRED ON)# 4. 指定生成的可执行文件名称,以及对应的源码文件# 格式:add_executable(可执行文件名 源码文件1 源码文件2 ...)add_executable(my_program main.cpp)
cmake编译:
mkdir build && cd build # 建议使用边外编译(Out-of-source Build),保持源码目录整洁cmake .. # 生成 Makefile(CMake 会自动寻找系统中的 GCC)make # 调用 GNU Make 进行编译./my_program # 运行生成的二进制文件

参考资料:
知乎:5分钟理解make/makefile/cmake/nmake
https://zhuanlan.zhihu.com/p/111110992
【Makefile 20分钟入门,简简单单,展示如何使用Makefile管理和编译C++代码】
https://www.bilibili.com/video/BV188411L7d2/?share_source=copy_web&vd_source=04215abb9b54bfd46dad12de6403ffbd
【CMake 6分钟入门,不用再写复杂的Makefile】
https://www.bilibili.com/video/BV1bg411p7oS/?share_source=copy_web&vd_source=04215abb9b54bfd46dad12de6403ffbd
写这么多,收获:
①各个模块module之间的加载关系
②使用cmake或者make装软件的底层关系
③GNU/GCC/cmake/make等一些文件的概念关系。
今天安装lammps后的疑问,下一期更新用cmake安装lammps软件。
喜欢的话,给个关注吧