nvcc -Xptxas -v编译器标志无效

Dav*_* O. 9 cuda nvcc

我有一个CUDA项目.它由几个包含我的应用程序逻辑的.cpp文件和一个包含多个内核的.cu文件以及一个__host__调用它们的函数组成.

现在我想确定我的内核使用的寄存器数量.我的普通编译器调用如下所示:

nvcc -arch compute_20 -link src/kernel.cu obj/..obj obj/..obj .. -o bin/..exe -l glew32 ...

不幸的是,在此调用中添加"-Xptxas -v"编译器标志无效.编译器仍然生成与以前相同的文本输出.编译后的.exe也可以像以前一样工作,只有一个例外:我的帧速率从80fps上升到1800fps.

kok*_*ing 9

我有同样的问题,这是我的解决方案:

  1. 将*cu文件编译为仅设备*ptx文件,这将丢弃主机代码

    nvcc -ptx *.cu

  2. 编译*ptx文件:

    ptxas -v *.ptx

第二步将显示内核使用的寄存器数和使用的共享内存量.


小智 5

在编译器调用中将compute_20转换为sm_20。那应该解决它。

  • 这是实际的正确答案。有用。 (2认同)

Dav*_* O. -1

不完全是您想要的,但您可以使用 nvidia gpu 计算 sdk 附带的 CUDA 视觉分析器。除了许多其他有用的信息之外,它还显示应用程序中每个内核使用的寄存器数量。