4

在开始优化之前,我试图弄清楚配置文件结果的含义。我对 CUDA 和一般分析非常陌生,我对结果感到困惑。

具体来说,我想知道在看似未被占用的计算块中发生了什么。当我从上到下查看 CPU 和 GPU 时,在大部分代码中似乎没有发生任何事情。这些看起来像没有任何内容的列,也没有Thread1任何内容GeForce。这是正常的吗?这里发生了什么事?

运行是在多核机器上使用 nvprof 在无负载的情况下完成的。-arch=sm_20 -m32 -g -GGPU 代码是为 CUDA 5编译的。

在此处输入图像描述 大图

4

1 回答 1

3

这里的错误是在调试模式下分析代码(-G编译器标志:“为设备代码生成调试信息”)。程序的行为发生了深刻的变化,这不应该用于分析和优化代码。

另一件事:很难找到有关nvcc调试模式的完整文档。nvcc可能会将寄存器/共享内存转储到全局内存中,以便于主机访问和调试,这反过来可能会隐藏共享内存中的竞争条件等问题(参见此处的讨论:https ://stackoverflow.com/a/10726970/1043187 )。因此,诸如此类的程序也cuda-memcheck --tool racecheck应该在发布模式下使用。

于 2013-02-26T05:24:57.747 回答