Cuda nvcc-Xptxas&x2013;v编译器标志无效

Cuda nvcc-Xptxas&x2013;v编译器标志无效,cuda,nvcc,Cuda,Nvcc,我有一个CUDA项目。它由几个包含我的应用程序逻辑的.cpp文件和一个包含多个内核的.cu文件以及一个调用它们的\uuuuuuuuuuuuuu函数组成 现在我想确定内核使用的寄存器数量。我的常规编译器调用如下所示: nvcc-arch compute_20-link src/kernel.cu obj/.obj obj/.obj-o bin/.exe-l glew32.. 不幸的是,将“-Xptxas–v”编译器标志添加到此调用没有效果。编译器仍然生成与以前相同的文本输出。编译后的.exe的工作

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

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

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

不幸的是,将“-Xptxas–v”编译器标志添加到此调用没有效果。编译器仍然生成与以前相同的文本输出。编译后的.exe的工作方式与以前相同,只有一个例外:我的帧速率从编译时的80fps跳到1800fps


<代码> NVCC——PTXAS选项= -V

< P>不完全是您所要查找的,但您可以使用英伟达GPU计算SDK所载的CUDA可视化剖析器。除了许多其他有用的信息外,它还显示了应用程序中每个内核使用的寄存器数量。

我也遇到了同样的问题,下面是我的解决方案:

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

    nvcc-ptx*.cu

  • 编译*ptx文件:

    ptxas-v*.ptx


  • 第二步将按内核显示已用寄存器的数量和已用共享内存的数量

    您可能希望控制编译器详细选项的默认值

    例如,VStudio goto: 工具->选项->项目和解决方案->构建和运行
    然后将详细输出设置为正常。

    当同时使用“-Xptxas-v”和“-arch”时,我们无法获得详细信息(寄存器数量等)。如果我们想看到详细信息而不失去提前分配GPU架构(-arch,-code)的机会,我们可以执行以下步骤:
    nvcc-arch compute\u XX*.cu-keep
    then
    ptxas-v*.ptx
    。但我们将获得许多处理文件。当然,科古特的答案是中肯的。

    在编译器调用中将compute\u 20转换为sm\u 20。这应该可以解决问题。

    也不起作用。我已经尝试过在internet上找到的该标志的所有各种符号。@Dav尝试删除链接选项并仅编译ARP在这种情况下,编译器会抱怨未定义的外部符号。@Dav将过程分成两部分,首先编译,而link.carp我尝试了nvcc-c..cu-arch compute_20--ptxas options=-v-编译器输出一个..obj文件,但没有寄存器计数这不正确,因为它没有回答问题。。。如果您只需要一种计算寄存器的方法,那么请更改问题。@jimilloy“现在我想确定内核使用的寄存器数量”