了解cuobjdump输出

时间:2019-09-09 09:48:49

标签: linux cuda gpu nvcc ptx

我已经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(开普勒)设备的系统上是否兼容?我认为应该这样做,因为可执行文件中有PTX代码,并且虚拟体系结构是sm_20,也就是说,它要求从Fermi卡开始提供非常小的一组功能(仍然不确定code version的含义)

1 个答案:

答案 0 :(得分:1)

  
      
  1. 代码版本是什么意思?文档没有这么说。
  2.   

这意味着它正在打印的fatbin元素的版本-分别为elf版本1.7和PTX版本5.0(有关PTX版本,请参见here

  
      
  1. 这样的可执行文件在具有sm_30(Kepler)设备的系统上是否兼容?
  2.   

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