HPCToolkit介绍和使用,开源和商业性能分析工具
·
文章目录
HPCToolkit
HPCToolkit 是一款开源、低 overhead、跨平台的 CPU+GPU 并行程序性能分析工具集,专为超算、集群与多核环境设计。核心优势:无需改代码、支持全优化二进制、精准调用上下文采样、GPU 深度分析、大规模并行可扩展。
一、核心定位与特点
- 全称:High Performance Computing Toolkit
- 开发:美国 Rice University 与 LSU 联合维护
- 适用:
- 串行 / Pthreads / OpenMP / MPI / MPI+OpenMP 混合
- NVIDIA/AMD/Intel GPU 加速程序(CUDA/HIP/OpenCL/OpenMP offload)
- C/C++/Fortran 多语言、全优化(-O3)、动态/静态链接二进制
- ** overhead**:1%–5%(异步采样,几乎不干扰运行)
- 核心能力:
- 调用上下文敏感(完整调用栈)性能采样
- 硬件性能计数器(PMC):周期、指令、缓存缺失、分支、GPU 指令/stall
- 性能数据 → 源码行/函数/循环/GPU 内核精准映射
- 支持**追踪(trace)**可视化时间线、负载失衡、通信瓶颈
二、四大核心工具(工作流)
1. hpcrun —— 性能数据采集
- 作用:启动程序并采样(时间/硬件事件),记录调用栈与 metrics
- 模式:
- 时间采样:
WALLCLOCK@1000(每 1000µs 一次) - 硬件事件:
CYCLES、INSTRUCTIONS、L1-DCMISS、BRANCH-MISPRED - GPU:
GPU_OPS、GPU_CYCLES、GPU_WARP_STALL
- 时间采样:
- 关键参数:
hpcrun -e WALLCLOCK@5000 -e CYCLES -t ./myapp # 采样+追踪 hpcrun -e GPU_OPS -e GPU_WARP_STALL ./myapp # GPU 分析 mpiexec -np 32 hpcrun ./myapp # MPI - 输出:
hpctoolkit-myapp-measurements/
2. hpcstruct —— 二进制结构分析
- 作用:解析可执行文件与动态库,恢复:
- 函数、循环、内联、源码行、GPU 内核映射
- 用法:
hpcstruct ./myapp # 生成 myapp.hpcstruct hpcstruct --gpu ./myapp # 包含 GPU 二进制分析
3. hpcprof / hpcprof-mpi —— 数据关联与数据库生成
- 作用:把采样数据 + 程序结构 → 可浏览数据库
- 关键参数:
hpcprof \ -S myapp.hpcstruct \ -I /path/to/source//* \ # 递归包含源码 -o hpctoolkit-myapp-database \ # 输出库 hpctoolkit-myapp-measurements/ # 测量目录 - 并行:大规模 MPI 用
hpcprof-mpi
4. hpcviewer —— GUI 可视化分析
- 两大视图:
- Code-centric(代码中心)
- Flat:函数自耗时
- Callers:自上而下调用树
- Callees:自下而上热点路径
- 源码行级耗时标注
- Time-centric(时间线)
- 线程/进程/GPU 流时间轴
- 识别负载失衡、阻塞、长通信、GPU 空转
- Code-centric(代码中心)
三、完整使用流程(示例)
1. 编译(关键:-g + 全优化)
# CPU
mpicc -g -O3 -o myapp myapp.c
# CUDA
nvcc -g -O3 -lineinfo -o myapp myapp.cu
2. 采集(hpcrun)
# 串行/OpenMP
hpcrun -t -e WALLCLOCK@5000 -e CYCLES ./myapp
# MPI
mpiexec -np 16 hpcrun -e WALLCLOCK ./myapp
# GPU (CUDA)
hpcrun -e GPU_OPS -e GPU_WARP_STALL ./myapp
3. 结构分析(hpcstruct)
hpcstruct --gpu ./myapp
4. 生成数据库(hpcprof)
hpcprof \
-S myapp.hpcstruct \
-I ./src//* \
hpctoolkit-myapp-measurements/
5. 可视化(hpcviewer)
hpcviewer hpctoolkit-myapp-database
四、GPU 分析重点(CUDA/HIP)
- 支持:
- GPU 内核耗时、指令、stall 原因(内存依赖、控制流、同步等)
- 内核调用栈 → CPU 侧调用路径关联
- 多流 / 多 GPU 活动时间线
- 典型事件:
GPU_OPS、GPU_CYCLESGPU_WARP_STALL、GPU_INST_EXECUTEDGPU_MEM_GLOBAL_LOAD、GPU_MEM_GLOBAL_STORE
五、安装方法(推荐)
1. Spack(超算/集群首选)
spack install hpctoolkit +cuda +mpi +viewer
spack load hpctoolkit
2. 源码(Linux)
# 依赖:binutils, elfutils, libdwarf, libunwind, boost, llvm, xerces-c
git clone https://gitlab.com/hpctoolkit/hpctoolkit.git
cd hpctoolkit && mkdir build && cd build
../configure --prefix=/path/to/install --with-cuda --with-mpi
make -j && make install
3. hpcviewer(独立 GUI)
- 下载:hpctoolkit.org → 支持 Linux/macOS/Windows
六、与同类工具对比(优势)
| 工具 | HPCToolkit | perf | Vampir | TAU |
|---|---|---|---|---|
| 调用上下文 | ✅ 完整栈 | ✅ 有限 | ✅ 追踪 | ✅ 完整 |
| GPU 深度 | ✅ 强 | ❌ | ⚠️ 弱 | ✅ |
| 全优化二进制 | ✅ 原生 | ⚠️ 需调试 | ✅ | ✅ |
| Overhead | 低(1–5%) | 低 | 高(追踪) | 中 |
| 大规模并行 | ✅ 优秀 | ⚠️ 弱 | ✅ | ✅ |
| 开源免费 | ✅ | ✅ | ❌ | ✅ |
七、适用场景
- 超算/集群:MPI+OpenMP 混合并行调优
- GPU 加速:CUDA/HIP 内核瓶颈、stall 分析、CPU-GPU 交互
- 全优化生产代码:无需降级优化即可分析
- 热点定位:函数/循环/行级耗时、缓存缺失、分支预测、IPC
- 负载失衡:时间线视图快速识别
八、总结
HPCToolkit = 轻量采样 + 精准源码映射 + CPU+GPU 全支持 + 大规模可扩展
是科学计算、CFD、数值模拟、机器学习训练等高性能程序的首选开源性能分析工具。
开源和商业性能分析工具
与 HPCToolkit 定位类似、覆盖 CPU/GPU 并行程序的性能分析工具,按开源/商业分类如下,涵盖采样/插桩/追踪三类工作流,兼顾 HPC 大规模与异构加速深度分析。
一、开源替代工具(免费、可定制、适合科研/集群)
| 工具 | 核心定位 | 并行/异构支持 | 开销 | 可视化 | 适用场景 |
|---|---|---|---|---|---|
| TAU | 全栈采样+插桩 | MPI/OpenMP/CUDA/HIP/OpenMP Offload | 低(采样)/中(插桩) | ParaProf/PerfExplorer | 大规模 HPC、异构程序、需要自定义 metric |
| perf | Linux 原生采样 | CPU(内核/用户态)、有限 GPU | 极低 | 命令行/gtk/Perfetto | CPU 热点、缓存、IPC、内核事件;单机/小型集群 |
| NVIDIA Nsight Systems | 系统级追踪(CPU+GPU) | CUDA/HIP、多 GPU、NCCL | 低(❤️%) | 时间线(Timeline) | GPU 宏观瓶颈、CPU-GPU 协同、多卡通信 |
| Caliper | 注解式轻量分析 | MPI/OpenMP、CUDA/HIP | 极低(注解+采样) | 自定义报告、Trace | 持续性能监控、细粒度区域分析、HPC 生产环境 |
| Extrae | 事件追踪+Paraver 可视化 | MPI/OpenMP、GPU | 低 | Paraver 时间线 | 大规模并行、负载均衡、通信/同步瓶颈 |
| Score-P / Scalasca | 仪器化测量+可扩展分析 | MPI/OpenMP、GPU | 中(仪器化) | Cube 报告 | 可扩展性能、自动负载分析、超算中心标准工具 |
| **Open | SpeedShop** | 源码级分析+GUI | MPI/OpenMP/CUDA | 低 | 多架构、多语言、需要交互式调试 |
开源工具要点
- TAU:与 HPCToolkit 最接近,支持采样/插桩双模式,GPU 深度分析完善,适合需要自定义指标的科研与工业场景。
- perf:Linux 标配,零成本,擅长 CPU 微架构分析(缓存、分支、IPC);GPU 支持有限,适合单机与快速定位。
- Nsight Systems:NVIDIA 官方开源/免费工具,时间线可视化最强,适合排查 CPU→GPU 数据传输、Kernel 调度、多卡 NCCL 瓶颈。
- Caliper:通过代码注解实现可控测量,开销极低,适合生产环境持续监控与细粒度分析。
二、商业工具(强支持、全功能、适合交付/企业)
| 工具 | 核心定位 | 并行/异构支持 | 可视化 | 优势 | 适用场景 |
|---|---|---|---|---|---|
| Intel VTune Profiler | 全栈异构分析 | Intel CPU/GPU/FPGA、CUDA/HIP | 图形化+命令行 | 微架构、内存、线程、GPU 深度分析 | Intel 平台、混合架构、需要商业支持 |
| NVIDIA Nsight Compute | GPU 内核级微观分析 | CUDA-only | 图形化 | 指令级、寄存器、内存瓶颈、Kernel 优化 | CUDA Kernel 深度调优、算子级性能优化 |
| ARM Forge / MAP / PAT | 并行程序调试+分析 | MPI/OpenMP/CUDA | 图形化 | 并行错误、性能瓶颈、内存泄漏 | 大规模并行、需要交互式调试与性能定位 |
| Kojak | 可扩展 HPC 分析 | MPI/OpenMP/CUDA | 图形化 | 负载均衡、强扩展分析、报告自动化 | 超算中心、企业级 HPC 交付 |
商业工具要点
- Intel VTune:Intel 平台全能工具,覆盖 CPU 微架构、内存、线程、GPU 全链路分析,商业支持完善。
- Nsight Compute:Nsight Systems 的“内核级伴侣”,专门优化单个 CUDA Kernel,适合追求极致 GPU 效率的场景。
- ARM Forge:并行程序调试+分析一体化,适合定位 MPI 死锁、负载失衡等复杂问题,超算中心常用。
三、与 HPCToolkit 核心差异与选型建议
1. 核心差异
- 采样 vs 插桩:
- HPCToolkit、TAU、perf、Nsight Systems 以采样为主,开销低(1–5%),适合大规模生产程序。
- Caliper、Score-P 支持注解/仪器化,开销略高但精度更好,适合细粒度分析。
- GPU 深度:
- HPCToolkit、TAU、Nsight Systems 支持全栈 GPU 分析(Kernel 时间、内存、stall 原因)。
- Nsight Compute 专注内核级微观分析,指令级细节最丰富。
- 大规模可扩展:HPCToolkit、TAU、Score-P 支持MPI 分布式并行,适合千万级核心超算任务。
2. 选型建议(按需求)
| 需求场景 | 首选工具 | 原因 |
|---|---|---|
| HPC 大规模、CPU+GPU、开源免费 | HPCToolkit / TAU | 采样低开销、全栈分析、大规模可扩展 |
| Linux 单机、快速定位 CPU 瓶颈 | perf | 系统自带、零成本、CPU 微架构分析强 |
| CUDA 程序、CPU-GPU 协同瓶颈 | Nsight Systems | 时间线可视化最佳,跨栈追踪 |
| CUDA Kernel 深度优化 | Nsight Compute | 指令级、寄存器、内存瓶颈细节 |
| Intel 平台、全栈异构分析 | Intel VTune | 商业支持、Intel 硬件深度优化 |
| 并行程序调试+性能定位 | ARM Forge | 并行错误与性能问题一体化解决 |
| 持续监控、细粒度区域分析 | Caliper | 注解式低开销、适合生产环境 |
四、快速工作流示例
1. TAU(开源,类似 HPCToolkit 采样)
# 编译
tau_cc.sh -c -g -O3 -o myapp myapp.cu
# 采样(串行/OpenMP)
tau_exec -e WALLCLOCK,CYCLES ./myapp
# 采样(MPI)
mpiexec -np 16 tau_exec -e WALLCLOCK ./myapp
# 可视化
paraprof myapp.xls
2. perf(Linux 单机 CPU 分析)
# 热点分析
perf record -g ./myapp
perf report
# 缓存缺失分析
perf record -e L1-dcache-load-misses -g ./myapp
perf report
3. Nsight Systems(GPU 系统级追踪)
# 采集
nsys profile -o report ./myapp
# 查看
nsys-ui report.qdrep
五、一句话总结
- 开源首选:HPCToolkit(全能采样)、TAU(可定制)、Nsight Systems(GPU 时间线)、perf(Linux 单机)。
- 商业首选:Intel VTune(Intel 平台全栈)、Nsight Compute(CUDA 内核深度)、ARM Forge(并行调试)。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)