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 一次)
    • 硬件事件:CYCLESINSTRUCTIONSL1-DCMISSBRANCH-MISPRED
    • GPU:GPU_OPSGPU_CYCLESGPU_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 可视化分析

  • 两大视图
    1. Code-centric(代码中心)
      • Flat:函数自耗时
      • Callers:自上而下调用树
      • Callees:自下而上热点路径
      • 源码行级耗时标注
    2. Time-centric(时间线)
      • 线程/进程/GPU 流时间轴
      • 识别负载失衡、阻塞、长通信、GPU 空转

三、完整使用流程(示例)

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_OPSGPU_CYCLES
    • GPU_WARP_STALLGPU_INST_EXECUTED
    • GPU_MEM_GLOBAL_LOADGPU_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(并行调试)。
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐