了解 cuobjdump 输出

Understanding cuobjdump output

我已经 read about virtual architecture and code generation for nvcc 但我还有一些问题。

我有一个 cuda 编译的可执行文件,其 cuobjdump 输出是

Fatbin elf code:
================
arch = sm_20
code version = [1,7]
producer = cuda
host = linux
compile_size = 64bit

Fatbin ptx code:
================
arch = sm_20
code version = [5,0]
producer = cuda
host = linux
compile_size = 64bit
compressed

我有两个问题:

  1. code version是什么意思?文档没有这么说。
  2. 这样的可执行文件在具有 sm_30 (Kepler) 设备的系统上是否兼容?我相信它应该是因为可执行文件中有 PTX 代码并且虚拟架构是 sm_20,即它要求从 Fermi 卡开始提供一组非常小的功能(仍然不确定 code version 是什么意思)
  1. What does code version mean? Documentation doesn't say that.

表示正在打印的 fatbin 元素的版本 -- 分别是 elf 1.7 版和 PTX 5.0 版(PTX 版本请参见 here

  1. Would such an executable be compatible on a system with a sm_30 (Kepler) device?

是的。 PTX(版本 5.0)的存在意味着代码可以由驱动程序 JIT 编译为汇编程序 运行 在计算能力 3.0 设备上(同样是文档 here