#cuda #parser #gpu #cubin #fatbin

cuda_parsers

CUDA 二进制文件的解析器

1 个不稳定版本

0.1.0 2023年12月29日

#105#cuda

Apache-2.0

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