linux - 了解 cuobjdump 输出

标签 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. 代码版本 是什么意思?文档没有这么说。
  2. 这样的可执行文件是否与带有 sm_30 (Kepler) 设备的系统兼容?我相信它应该是因为可执行文件中有 PTX 代码并且虚拟架构是 sm_20,即它要求 Fermi 卡以后提供的一小部分功能(仍然不确定那个 代码是什么版本 表示)

最佳答案

  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)

关于linux - 了解 cuobjdump 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57851566/

相关文章:

c# - 是否可以使用 .net core c# 执行 ps -aux ?

linux - 使用nmap -sS和nmap -sT进行端口扫描的速度?

linux - Makefile 将 .o 文件导出到与 .cpp 不同的路径

c++ - cuda, pycuda -- 如何写复数 -- 错误 :class "cuComplex" has no member "i"

c++ - PhysX - 如果使用 GPU,simulate() 永远不会结束

python - 操纵列字段以获得清晰的表示

opencv - 为什么对于简单的阈值设置,我的OpenCV CUDA运行速度低于CPU?

performance - 调用 __device__ 函数会影响 CUDA 中使用的寄存器数量吗?

amazon-web-services - 如何自动启动、执行和停止EC2?

opencl - OpenCL 内核在 Nvidia GPU 上每个线程使用多少寄存器?