9

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

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

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

不幸的是,在此调用中添加“-Xptxas –v”编译器标志没有效果。编译器仍然产生与以前相同的文本输出。编译后的 .exe 的工作方式也与以前相同,但有一个例外:我的帧率从 80fps 跃升至 1800fps。

4

6 回答 6

10

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

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

    nvcc -ptx *.cu

  2. 编译 *ptx 文件:

    ptxas -v *.ptx

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

于 2011-03-01T11:22:23.580 回答
5

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

于 2014-12-07T04:21:17.607 回答
3

当同时使用“-Xptxas -v”、“-arch”时,我们无法获得详细信息(寄存器编号等)。如果我们想在不失去提前分配 GPU 架构(-arch, -code)的机会的情况下查看详细信息,我们可以执行以下步骤: nvcc -arch compute_XX *.cu -keep then ptxas -v *.ptx. 但是我们会得到很多处理文件。当然,kogut 的回答是中肯的。

于 2012-04-16T10:13:44.277 回答
2

当你编译

nvcc --ptxas-options=-v

于 2010-09-15T17:05:13.510 回答
0

您可能想要 ctrl 您的编译器详细选项默认值。

例如 VStudio goto :Tools->Options->ProjectsAndSolutions->BuildAndRun 然后将详细输出设置为 Normal。

于 2011-06-29T15:13:04.723 回答
-1

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

于 2010-09-19T10:48:04.463 回答