GPU(CUDA)性能分析 — GPU Flight 介绍

发布: (2026年2月24日 GMT+8 09:32)
4 分钟阅读
原文: Dev.to

Source: Dev.to

为什么我开始使用 GPU Flight

在对 CUDA 应用进行分析时,你通常会:

  • 安装诸如 Nsight 的分析工具
  • 或者手动将 CUPTI 集成到你的应用中,这往往会使代码变得复杂且难以维护
  • 在云端或容器化环境中还要处理额外的复杂性

这种工作流可能不太方便——尤其是在生产系统中。我想要一种更轻量的方案,像 GPU 的飞行记录仪 那样工作。

GPU Flight 将结构化的分析日志直接写入主机。一个独立的组件(GPUFL Agent)会抓取这些日志文件并将其转发到后端服务或其他目的地,从而使 GPU 可观测性更加灵活,且更易于集成到分布式系统中。

什么是 GPU Flight?

GPU Flight 旨在 轻量且模块化

  • 如果你只需要监控,开销极小。
  • 开启更深层次的分析则会提供更详细的指标。

目标是暴露有用的 GPU 指标,让你能够清晰地了解:

  • GPU 如何管理资源
  • 你的程序如何利用 GPU 资源
  • 性能瓶颈出现在何处

项目结构

GPU Flight 目前由多个组件组成:

1️⃣ gpufl‑client

https://github.com/gpu-flight/gpufl-client
用户在应用中嵌入的客户端库,用于监控和分析。

2️⃣ gpufl‑agent

https://github.com/gpu-flight/gpufl-agent
尽管名字里有 “agent”,它 不是 AI 代理 🙂 它负责跟踪日志文件并将分析数据转发到配置的目标位置。

3️⃣ gpufl‑desktop

https://github.com/gpu-flight/gpufl-desktop
最初计划作为桌面查看器;目前聚焦于基于 Web 的前端。部分仓库仍为私有,因为尚未达到生产就绪状态;等核心功能稳定后会公开。

GPU Flight 支持哪些指标?

GPU Flight 在多个层面捕获可观测性。

1️⃣ 系统 & GPU 监控(NVML)

  • 主机内存使用情况
  • GPU 内存使用情况(已用/空闲/总量)
  • GPU 利用率
  • 内存利用率
  • 温度
  • 功耗
  • 时钟频率(Graphics / SM / Memory)
  • PCIe 收发带宽
  • 功率和热节流标志

示例 JSON 片段:

{
  "type": "system_sample",
  "util_gpu": 57,
  "temp_c": 39,
  "power_mw": 54415,
  "clk_sm": 1740
}

2️⃣ CUDA 设备能力

静态架构信息:

  • 计算能力
  • L2 缓存大小
  • 每块共享内存
  • 每块寄存器数量
  • SM 数量
  • Warp 大小

3️⃣ CUDA API 与 Kernel 事件(CUPTI)

  • API 进入/退出时间戳
  • Kernel 执行开始/结束时间戳
  • 网格/块维度
  • 共享内存使用量
  • 寄存器使用量
  • 占用率
  • 关联 ID
  • 内存拷贝事件(HtoD、DtoH)

Python 支持

GPU Flight 正在扩展,以支持使用 CUDA 的 Python 应用(例如 PyTorch)。这使得在不深度修改现有代码的情况下,对 GPU 密集型机器学习工作负载进行分析成为可能。

接下来会做什么?

在下一篇文章中,我将演示一个最小的 CUDA 示例,并展示如何:

  • 集成 gpufl-client
  • 运行 kernel
  • 检查生成的分析日志
  • 解读停顿原因和指标

感谢阅读——这仅仅是个开始。

0 浏览
Back to Blog

相关文章

阅读更多 »

没人想负责的 Systemd Bug

TL;DR:存在一个命名空间 bug,影响 Ubuntu 20.04、22.04 和 24.04 服务器,导致随机服务故障。自 2021 年起已在系统中报告……