高性能计算(HPC)概览
HPC 与云计算的区别
云计算(通用):
- 多租户共享资源
- 虚拟化(有性能损耗)
- 弹性伸缩
- 适合 Web/应用服务
HPC(高性能计算):
- 专用资源,无虚拟化
- 裸金属(Bare Metal)运行
- 高速互联(InfiniBand)
- 适合科学计算、仿真、AI 训练H3C HPC 解决方案
典型 HPC 集群架构
HPC 集群组成:
登录节点(Login Node)× 2
└── 用户登录、作业提交入口
管理节点(Management Node)× 2
└── 集群管理、调度、监控
计算节点(Compute Node)× N
├── CPU 节点:H3C R4900 G5(2×32C)
├── GPU 节点:H3C G5500 G5(8×A100)
└── 大内存节点:H3C R6900 G5(6TB 内存)
存储节点(Storage Node)
└── Lustre 并行文件系统
高速互联网络
└── InfiniBand HDR 200Gbps
管理网络
└── 1GbE(带外管理)SLURM 作业调度
SLURM(Simple Linux Utility for Resource Management)是 HPC 领域最主流的作业调度系统:
基本概念
SLURM 核心概念:
Partition(分区):
类似队列,按资源类型划分
例:cpu-partition(CPU 节点)、gpu-partition(GPU 节点)
Job(作业):
用户提交的计算任务
包含:资源需求、运行时间、执行脚本
Node(节点):
计算节点,有 idle/allocated/down 等状态
Account(账户):
用于资源配额和计费管理常用命令
bash
# 查看集群状态
sinfo # 查看分区和节点状态
squeue # 查看作业队列
squeue -u $USER # 查看自己的作业
sacct -j <job-id> # 查看作业历史
# 提交作业
sbatch job.sh # 提交批处理作业
srun --nodes=4 --ntasks=32 ./program # 交互式运行
# 管理作业
scancel <job-id> # 取消作业
scontrol hold <job-id> # 暂停作业
scontrol release <job-id> # 恢复作业
# 查看节点详情
scontrol show node <node-name>作业脚本示例
bash
#!/bin/bash
#SBATCH --job-name=cfd-simulation
#SBATCH --partition=cpu-partition
#SBATCH --nodes=16
#SBATCH --ntasks-per-node=32 # 每节点 32 个 MPI 进程
#SBATCH --cpus-per-task=1
#SBATCH --mem=256G # 每节点内存
#SBATCH --time=48:00:00 # 最长运行 48 小时
#SBATCH --output=logs/cfd-%j.out
#SBATCH --error=logs/cfd-%j.err
#SBATCH --mail-type=END,FAIL
#SBATCH --mail-user=user@example.com
# 加载模块
module load openmpi/4.1.5
module load openfoam/10
# 设置工作目录
cd $SLURM_SUBMIT_DIR
# 运行 MPI 程序
mpirun -np $SLURM_NTASKS \
--bind-to core \
--map-by socket \
simpleFoam -parallel
echo "作业完成,退出码: $?"MPI 并行计算
MPI(Message Passing Interface)是 HPC 的核心并行编程模型:
c
// MPI Hello World 示例
#include <mpi.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
int rank, size;
char hostname[256];
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
gethostname(hostname, 256);
printf("Hello from rank %d of %d on %s\n", rank, size, hostname);
// 集合通信示例:AllReduce
double local_sum = rank * 1.0;
double global_sum;
MPI_Allreduce(&local_sum, &global_sum, 1, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD);
if (rank == 0) {
printf("全局求和结果: %.1f\n", global_sum);
}
MPI_Finalize();
return 0;
}bash
# 编译和运行
mpicc -O2 -o hello hello.c
mpirun -np 64 --hostfile hostfile ./hello典型 HPC 应用场景
气象/气候模拟
WRF(Weather Research and Forecasting)模型:
- 全球/区域天气预报
- 需要大量 CPU 核心和内存
- 典型规模:100-1000 节点
H3C 方案:
- 计算节点:H3C R4900 G5(2×32C,512GB)
- 存储:Lustre 并行文件系统(高吞吐)
- 网络:InfiniBand HDR(低延迟)分子动力学模拟
GROMACS/AMBER/NAMD:
- 蛋白质折叠、药物设计
- GPU 加速效果显著
H3C 方案:
- GPU 节点:H3C G5500 G5(8×A100)
- 存储:NVMe 全闪(高 IOPS)有限元分析(CAE)
ANSYS/Abaqus/LS-DYNA:
- 汽车碰撞仿真、结构分析
- 需要大内存节点
H3C 方案:
- 大内存节点:H3C R6900 G5(6TB 内存)
- 存储:高速 NFS/Lustre