Intel OneAPI 2022.2 + CMAQ-5.3.2 环境配置:CentOS/Ubuntu 双系统 7 步避坑指南
在空气质量模型研究领域,CMAQ(Community Multiscale Air Quality Modeling System)作为美国环保署开发的旗舰模型,其复杂的依赖环境配置一直是科研人员的痛点。本文将基于Intel OneAPI 2022.2编译器套件,在CentOS/Ubuntu双系统环境下,通过7个关键步骤实现CMAQ-5.3.2的高效部署,特别针对netCDF和IOAPI安装中的典型错误提供修复方案。
1. 环境准备与目录规划
1.1 系统基础要求
- CentOS 7/8或Ubuntu 20.04/22.04(需已安装基础开发工具链)
- 至少50GB可用磁盘空间(建议SSD存储)
- 16GB以上内存(编译netCDF-Fortran时需要)
1.2 推荐目录结构
|-- $HOME |-- Build_CMAQ |-- LIBRARIES # 存放所有依赖库 |-- src # 存放源码压缩包 |-- CMAQ_Project # CMAQ主项目目录提示:所有路径建议避免包含空格或中文字符,否则可能导致编译错误
2. Intel OneAPI 2022.2 安装与配置
2.1 基础工具包安装
cd $HOME/Build_CMAQ/src wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18673/l_BaseKit_p_2022.2.0.262_offline.sh bash l_BaseKit_p_2022.2.0.262_offline.sh -a -s --components intel.oneapi.lin.ifort-compiler:intel.oneapi.lin.icc-compiler2.2 HPC工具包安装
wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18679/l_HPCKit_p_2022.2.0.191_offline.sh bash l_HPCKit_p_2022.2.0.191_offline.sh -a -s2.3 环境变量配置
在~/.bashrc末尾添加:
# Intel OneAPI source /opt/intel/oneapi/setvars.sh --force export CC=icc CXX=icpc FC=ifort验证安装:
source ~/.bashrc ifort -v # 应显示2022.2版本号3. 并行环境部署:MPICH-3.4.2
3.1 源码编译安装
cd $HOME/Build_CMAQ/src wget https://www.mpich.org/static/downloads/3.4.2/mpich-3.4.2.tar.gz tar xzvf mpich-3.4.2.tar.gz cd mpich-3.4.2 ./configure --prefix=$HOME/Build_CMAQ/LIBRARIES/mpich \ --with-device=ch3 \ CC=icc CXX=icpc FC=ifort \ CPPFLAGS='-fPIC' \ CFLAGS='-fPIC' \ FFLAGS='-fPIC' make -j$(nproc) make install3.2 环境变量配置
在~/.bashrc中添加:
# MPICH export PATH=$HOME/Build_CMAQ/LIBRARIES/mpich/bin:$PATH export LD_LIBRARY_PATH=$HOME/Build_CMAQ/LIBRARIES/mpich/lib:$LD_LIBRARY_PATH验证安装:
which mpicc # 应显示自定义路径下的mpicc4. 关键依赖库安装
4.1 压缩库安装对比
| 库名称 | 版本 | 配置参数 | 特殊要求 |
|---|---|---|---|
| zlib | 1.2.11 | --prefix=$HOME/Build_CMAQ/LIBRARIES/zlib | 需最先安装 |
| libpng | 1.6.37 | --with-zlib=$HOME/Build_CMAQ/LIBRARIES/zlib | 依赖zlib头文件和库文件 |
典型安装流程(以zlib为例):
cd $HOME/Build_CMAQ/src wget http://www.zlib.net/fossils/zlib-1.2.11.tar.gz tar xzvf zlib-1.2.11.tar.gz cd zlib-1.2.11 ./configure --prefix=$HOME/Build_CMAQ/LIBRARIES/zlib make -j$(nproc) make install4.2 cURL库安装
cd $HOME/Build_CMAQ/src wget https://curl.se/download/curl-7.77.0.tar.gz tar xzvf curl-7.77.0.tar.gz cd curl-7.77.0 ./configure --prefix=$HOME/Build_CMAQ/LIBRARIES/curl \ --with-zlib=$HOME/Build_CMAQ/LIBRARIES/zlib \ --without-ssl make -j$(nproc) make install5. netCDF双组件安装与排错
5.1 netCDF-C 4.8.0安装
cd $HOME/Build_CMAQ/src wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-c-4.8.0.tar.gz tar xzvf netcdf-c-4.8.0.tar.gz cd netcdf-c-4.8.0 CPPFLAGS="-I$HOME/Build_CMAQ/LIBRARIES/curl/include -fPIC" \ LDFLAGS="-L$HOME/Build_CMAQ/LIBRARIES/curl/lib -L$HOME/Build_CMAQ/LIBRARIES/zlib/lib" \ ./configure --prefix=$HOME/Build_CMAQ/LIBRARIES/netcdf \ --disable-dap \ --disable-netcdf-4 make -j$(nproc) make install常见错误1:
Can't find or link to the z library解决方案:确认zlib库路径正确,或显式添加--disable-hdf5 --disable-dap
5.2 netCDF-Fortran 4.5.3安装
cd $HOME/Build_CMAQ/src wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-fortran-4.5.3.tar.gz tar xzvf netcdf-fortran-4.5.3.tar.gz cd netcdf-fortran-4.5.3 CPPFLAGS="-I$HOME/Build_CMAQ/LIBRARIES/netcdf/include -fPIC" \ LDFLAGS="-L$HOME/Build_CMAQ/LIBRARIES/netcdf/lib" \ LD_LIBRARY_PATH="$HOME/Build_CMAQ/LIBRARIES/netcdf/lib:$LD_LIBRARY_PATH" \ ./configure --prefix=$HOME/Build_CMAQ/LIBRARIES/netcdf make -j$(nproc) make install环境变量配置:
# netCDF export PATH=$HOME/Build_CMAQ/LIBRARIES/netcdf/bin:$PATH export NETCDF=$HOME/Build_CMAQ/LIBRARIES/netcdf export LD_LIBRARY_PATH=$HOME/Build_CMAQ/LIBRARIES/netcdf/lib:$LD_LIBRARY_PATH6. IOAPI-3.2 安装与调试
6.1 源码准备与目录设置
cd $HOME/Build_CMAQ/src wget https://www.cmascenter.org/ioapi/download/ioapi-3.2.tar.gz mkdir ioapi && cd ioapi tar -xvzf ../ioapi-3.2.tar.gz export BIN=Linux2_x86_64ifort mkdir $BIN ln -sf $HOME/Build_CMAQ/LIBRARIES/netcdf/lib/*.so $BIN/6.2 Makefile关键配置
修改ioapi/Makeinclude.Linux2_x86_64ifort:
# 编译器设置 CC = mpiicc CXX = mpiicpc FC = mpiifort -auto -warn notruncated_source -static-intel # OpenMP设置 OMPFLAGS = -qopenmp OMPLIBS = -qopenmp6.3 常见编译错误解决
错误1:
option '-openmp' is not supported- 解决方案:将所有
-openmp替换为-qopenmp
- 解决方案:将所有
错误2:
undefined reference tonc_*'`- 解决方案:在
m3tools/Makefile中添加:LIBS = -L${OBJDIR} -lioapi -L$(NETCDF)/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz
- 解决方案:在
完整编译命令:
make configure make all make install7. CMAQ-5.3.2 最终部署
7.1 项目初始化
cd $HOME/Build_CMAQ/src unzip CMAQ-5.3.2.zip cd CMAQ-5.3.2 sed -i "s|^set CMAQ_HOME.*|set CMAQ_HOME = $HOME/Build_CMAQ/CMAQ_Project|" bldit_project.csh ./bldit_project.csh7.2 配置文件修改
编辑$HOME/Build_CMAQ/CMAQ_Project/config_cmaq.csh:
case intel: setenv IOAPI_INCL_DIR $HOME/Build_CMAQ/src/ioapi/ioapi/fixed_src setenv IOAPI_LIB_DIR $HOME/Build_CMAQ/LIBRARIES/ioapi/Linux2_x86_64ifort setenv NETCDF_LIB_DIR $HOME/Build_CMAQ/LIBRARIES/netcdf/lib setenv NETCDF_INCL_DIR $HOME/Build_CMAQ/LIBRARIES/netcdf/include setenv myLINK_FLAG "-qopenmp"7.3 组件编译验证
cd $HOME/Build_CMAQ/CMAQ_Project/CCTM/scripts ./bldit_cctm.csh intel |& tee build.log ls -l BLD_CCTM_v532_intel/CCTM_v532.exe # 验证可执行文件针对Ubuntu系统的特别注意事项:
- 需额外安装
libgfortran-10-dev - 修改IOAPI的
Makeinclude文件,移除-static-intel选项 - 使用
update-alternatives配置默认编译器优先级