GPUVis 是一个 GPU 跟踪可视化工具,呈现 GPU 调度活动的交互式时间线,主要面向 Linux 环境。该工具读取跟踪数据并以图形界面渲染,使开发者能够检查 GPU 命令的执行时间和方式,以识别性能瓶颈或调度问题。它在与 ftrace 或 perf 等系统级跟踪工具结合使用时尤为有用,提供了聚焦于 GPU 的视图,以补充 perfetto 等更广泛的系统分析器。该项目最初由 Valve Software 在 2019 年发布,并在 MIT 许可证下提供。仓库中的版权声明指出 “Copyright 2019 Valve Software All Rights Reserved”,并明确声明代码采用 MIT 许可证,在标准许可证条件下允许自由使用、修改和分发。GPUVis 的可视化界面基于 Dear ImGui 构建,Dear ImGui 是一种即时模式图形用户界面库。仓库将 Omar Cornut 列为 Dear ImGui 的主要开发者,并指出该库的早期版本得到 Media Molecule 的支持,并在游戏 Tearaway 中首次内部使用。Dear ImGui 本身同样采用 MIT 许可证。除了 UI 工具包,GPUVis 还集成了多种开源组件:它使用 zlib 许可证的 Simple DirectMedia Layer (SDL),使用公共领域的 gl3w OpenGL 加载器,以及 Sean Barrett 编写的单头文件 stb 库(stb_textedit.h、stb_truetype.h、stb_rectpack.h),这些也属于公共领域。对于字体渲染,它捆绑了几种 TrueType 字体——ProggyClean.ttf、ProggyTiny.ttf(由 Tristan Grimmer 授予的 MIT 许可证)、Roboto‑Regular.ttf、Roboto‑Condensed.ttf(由 Christian Robertson 授予的 Apache 2.0 许可证)以及 DroidSans.ttf(由 Steve Matteson 授予的 Apache 2.0 许可证)。其他依赖项包括用于跟踪处理的 trace‑cmd(GNU GPL v2)、用于压缩的 miniz(MIT 许可证)、stlini(作者署名许可证)、2 条款 BSD 的 ya_getopt、MIT 许可证的 noc_file_dialog.h、MIT 许可证的 ucm CMake 宏、MIT 许可证的 SMHasher、2 条款 BSD 的 {fmt} 库以及 MIT 许可证的 RapidJSON。这些宽松许可证的混合使 GPUVis 能够自由重新分发,同时承认其构建块的多样来源。通过将这些库结合在一起,GPUVis 提供了一个轻量但依赖丰富的可视化工具,可以在现代 Linux 发行版上编译并运行,以检查通过内核跟踪机制捕获的 GPU 跟踪数据。项目的 README 链接到一个 wiki 以获取更多文档,并提供了一个展示典型跟踪时间线视图的截图。尽管源码没有详细说明确切的使用说明,但描述和组件列表清楚表明,GPUVis 被定位为一种专门的开源替代方案,供开发者在不依赖专有供应商工具的情况下深入了解 GPU 调度行为。宽松许可证的组合以及对知名开源库的集成意味着该可视化工具可以被社区适配或扩展,而其 MIT 许可证的核心鼓励下游项目吸收或修改可视化代码。GPUVis 由此成为一个具体例子,展示了如何将跟踪数据转化为易于访问的图形显示,填补了低级内核事件捕获与高级系统分析套件之间的空白。

显示 GPU 调度活动的 GPUVis 跟踪时间线截图
GPUVis 在 Linux 上可视化 GPU 调度活动的时间线github.com

文章将 GPUVis 描述为一种呈现 GPU 调度活动交互式时间线的开源 GPU 跟踪可视化工具,并指出 README 提供了展示典型跟踪时间线视图的截图。