我有一个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.
我有同样的问题,这是我的解决方案:
将*cu文件编译为仅设备*ptx文件,这将丢弃主机代码
nvcc -ptx *.cu
编译*ptx文件:
ptxas -v *.ptx
第二步将显示内核使用的寄存器数和使用的共享内存量.