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

时间:2010-09-15 17:00:35

标签: 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。

6 个答案:

答案 0 :(得分:9)

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

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

    nvcc -ptx *.cu

  2. 编译* ptx文件:

    ptxas -v *.ptx

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

答案 1 :(得分:5)

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

答案 2 :(得分:2)

编译

nvcc --ptxas-options=-v

答案 3 :(得分:2)

当一起使用“-Xptxas -v”,“ - arch”时,我们无法获得详细信息(寄存器号等)。如果我们想要在不失去分配GPU架构(-arch,-code)的机会的情况下看到详细信息,我们可以执行以下步骤:nvcc -arch compute_XX *.cu -keep然后ptxas -v *.ptx。但是我们将获得许多处理文件。当然,kogut的答案就是重点。

答案 4 :(得分:1)

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

例如VStudio转到: 工具 - >选项 - > ProjectsAndSolutions-> BuildAndRun 然后将详细程度输出设置为“正常”。

答案 5 :(得分:-1)

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