Cubin(cuda 二进制文件)的唯一 ID 是什么

What's the unique id of a Cubin (cuda binary)

对于常见的 elf 二进制文件,可以使用 readelf -n <binary file> 来获得唯一的 build id,如下所示:

$ readelf -n matrix

Displaying notes found in: .note.gnu.build-id
  Owner                Data size    Description
  GNU                  0x00000014   NT_GNU_BUILD_ID (unique build ID bitstring)
    Build ID: 30935f4bf2ea2d76a53538b28ed7ffbc51437e3c

Displaying notes found in: .note.ABI-tag
  Owner                Data size    Description
  GNU                  0x00000010   NT_GNU_ABI_TAG (ABI version tag)
    OS: Linux, ABI: 3.2.0

但是对于 cuda 二进制文件,又名 cubin,readelf -n 不起作用。那么如何获取一个cubin的唯一id呢?或者一个cubin的唯一id是什么?

For common elf binaries, one could use readelf -n to get the unique build id

事实并非如此。您所说的“build id”是 elf header 的 .note.gnu.build-id 部分,它由 gnu 链接器 ld 的特定功能填充,并且(启用时)创建elf 部分内容中该注释字段的一些标识位。据我所知,生成的 ID 值不是唯一的,因为包含相同代码的两个文件将散列为相同的 ID。如果您使用另一个链接器,则该字段未填充(LLD 链接器 clang 使用肯定没有,我上次检查时)

So how to get the unique id of a cubin? Or what's the unique id of a cubin?

没有一个。 NVIDIA elf headers 不包含 .notes 部分并且生成的 elf 文件未与 GNU 链接器链接,它们与 nvlink 链接并且没有相同的ID 功能,据我所知。