使用nvcc编译器使用-G参数进行编译时,GPU性能不佳

Wal*_*ite 0 debugging performance gpu nvcc thrust

我正在做一些测试,我意识到在编译时使用-G参数会给我一个糟糕的表现,而不是没有它.

我查看了Nvidia的文档:

--device-debug (-G)                         
    Generate debug information for device code. 
Run Code Online (Sandbox Code Playgroud)

但它并没有帮助我知道为什么给我这么糟糕的表现.它在哪里产生这个调试信息?何时?这可能是造成这种糟糕表现的原因?

Rob*_*lla 6

使用-G开关禁用大多数编译器优化nvcc可能会在设备代码做.由于-G这个原因,生成的代码通常比没有编译的代码运行得慢.

通过在每种情况下运行可执行文件cuobjdump -sass myexecutable并查看生成的设备代码,可以很容易地看到这一点.在非-G案例中,您通常会看到更少的设备代码,您也可以看到特定优化的差异.

其中一个原因是高度优化的设备代码可能会消除实际的源代码行和实际的源代码变量.这可能使调试代码变得非常困难.因此,要启用调试,将禁用大多数优化-G.

另请注意,使用Thrust时,使用此-G开关可能会导致不可预测的行为.较新版本的推力应该表现得更好,但在编译推力代码时可能仍会出现意外问题-G.