MPI 入门:oneAPI 安装与第一个并行环境
摘要:多节点并行计算的第一步是装好 MPI 环境。本文用离线安装包(内网交付场景最常见的方式)完整走一遍 Intel oneAPI Base + HPC Toolkit 的安装、环境加载和验证,全程可复现。
1. 为什么需要 MPI
单机多核可以用 OpenMP 或线程,但跨节点必须靠消息传递——这就是 MPI(Message Passing Interface)。HPL、NCCL 以外的传统 HPC 应用、以及多数科学软件都跑在 MPI 上。
本文环境:Intel oneAPI(内含 Intel MPI + MKL)。离线包体积大(Base 约 3.5 GB,HPC 约 1.3 GB),内网交付通常用离线安装。
2. 准备安装包
bash
# 两个离线包(放到 /opt/inteloneapi/ 下)
l_BaseKit_p_2021.1.0.2659_offline.sh # Base Toolkit
l_HPCKit_p_2021.1.0.2684_offline.sh # HPC Toolkit(含 MPI)为什么必须装两个
Base Toolkit 提供编译器、MKL 等基础组件;HPC Toolkit 提供 Intel MPI。只装 HPC 不装 Base,MPI 编译链接会缺基础库。
3. 静默安装(无界面)
bash
# Base Toolkit
sh l_BaseKit_p_2021.1.0.2659_offline.sh -a --cli
# HPC Toolkit(必须与 Base 安装到同一路径,否则 MPI 找不到编译器)
sh l_HPCKit_p_2021.1.0.2684_offline.sh -a --cli-a:接受协议--cli:命令行界面(服务器无图形环境必须用)- 默认安装到
/opt/intel2021/oneapi(也可在交互中指定目录)
安装完成后目录结构:
text
/opt/intel2021/oneapi/
├── compiler/latest # DPC++/C++ 编译器
├── mkl/latest # 数学核心库
├── mpi/latest # Intel MPI
└── setvars.sh # 环境变量入口4. 加载环境(两种方式)
4.1 方式一:source setvars.sh(推荐)
bash
source /opt/intel2021/oneapi/setvars.sh intel64 --force4.2 方式二:module 方式
bash
# 生成 modulefiles(一次性)
sh /opt/intel2021/oneapi/modulefiles-setup.sh
# 输出:oneAPI modulefiles folder is here: "/opt/intel2021/oneapi/modulefiles"
# 使用时加载
module load mpi/2021.1.15. 验证环境
bash
# 1) mpirun 能找到
which mpirun
# /opt/intel2021/oneapi/intelpython/latest/bin/mpirun
# 2) 编译器能找到
which mpicc
# /opt/intel2021/oneapi/compiler/latest/.../mpicc
# 3) 版本
mpirun --version
# Intel(R) MPI Library for Linux* OS, Version 2021.x6. 第一个命令
bash
# 查看本机核数与 CPU 信息
lscpu | grep -E "^CPU\(s\)|Core|Socket|Model name"7. 常见踩坑
7.1 mpirun: command not found
原因:新 shell 没执行 source setvars.sh(或没 module load)。MPI 不在 PATH 里。
bash
source /opt/intel2021/oneapi/setvars.sh intel64 --force7.2 多机运行连不上节点
- 先确认节点间 SSH 免密已配置
- hostfile 中每行一个节点名/地址
- 网络 fabric 指定(见下一篇文章)
7.3 --force 参数的作用
setvars.sh 在非交互/多版本环境可能拒绝覆盖已有变量,--force 强制设置。建议固定加上。
8. 下一步
环境就绪后,用 MPI Hello World 实战 跑通"编译 → 单机多进程 → 多机"全流程。