1 个不稳定版本
0.1.0 | 2023年12月29日 |
---|
#105 在 #cuda
17KB
277 行
此仓库包含对 CUDA 二进制文件 的解析器。这些文件格式未公开文档,因此正确解析它们可能很棘手。
CUDA 二进制文件是什么?
这些是从编译 CUDA 代码生成的 GPU 可执行文件。它们通常嵌入在其他应用程序中。它们包含实际上在 GPU 上执行的指令。
如果您使用过 CUDA 驱动 API 中的任何 cuModuleLoad*
函数,则可能已与这些文件互动过。
CUDA 二进制文件有两种类型
cubin
文件:这些在特定的 GPU 架构上运行。这是因为每个架构可能具有不同的指令集和功能fatbin
文件:这些是包含多个架构cubin
文件的 fat 二进制文件
此仓库对 cubin
文件的解析具有良好的测试支持,并对 fatbin
文件的解析提供基本支持。下面有更多详细信息
解析器是用 Rust 实现的,但如果有兴趣,也可以将其公开给其他语言(欢迎创建问题!)。
为什么?
cubin
文件包含大量 CUDA API 未公开的有用信息。
此仓库中的解析器最初是为一个需要有关 CUDA 模块和内核的详细信息的内部项目构建的。
如何自信地解析未记录的格式?
此文章包含一个详细的答案:https://blog.vivekpanyam.com/parsing-an-undocumented-file-format
简要版本:我们在数千个 cubin
文件上进行了测试,以确保此解析器产生的输出与 NVIDIA 的 cuobjdump
的输出匹配。
依赖项
~6MB
~121K SLoC