我已经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
我有两个问题:
代码版本
是什么意思?文档没有这么说。- 这样的可执行文件是否与带有
sm_30
(Kepler) 设备的系统兼容?我相信它应该是因为可执行文件中有 PTX 代码并且虚拟架构是sm_20
,即它要求 Fermi 卡以后提供的一小部分功能(仍然不确定那个代码是什么版本
表示)
最佳答案
- What does code version mean? Documentation doesn't say that.
这表示它正在打印的 fatbin 元素的版本 -- 分别是 elf 1.7 版和 PTX 5.0 版(PTX 版本请参见 here)
- Would such an executable be compatible on a system with a sm_30 (Kepler) device?
是的。 PTX(5.0 版)的存在意味着代码可以由驱动程序 JIT 编译为汇编程序,以便在计算能力 3.0 设备上运行(同样是文档 here)
关于linux - 了解 cuobjdump 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57851566/