我有一个CUDA程序。如果我用-g -G选项编译这个程序,我可以得到正确的输出。如果我没有使用-g -G选项编译它,我并不总是得到正确的输出。我的猜测是,如果没有-g -G选项,编译器会优化程序并导致竞争状态。任何人都可以证实这一点,并且让我知道我应该怎么做才能让程序产生正确的输出,即使我没有使用-g -G选项编译程序。由于使用或不使用选项编译CUDA程序时有什么区别-g -G
操作系统:x86_64的GNU/Linux的 CUDA版本:4.0 设备:200的Geforce,它是连接到机器的GPU之一,我不认为这是一个显示设备。
另一种可能性(不一定专用于CUDA)是未初始化的变量的存在,由于调试与释放代码的不同,它们会采用不同的值。这也会影响程序的行为。 – 2012-02-07 06:33:10
是的,不能相信我没有包括这一点。这是“仅适用于调试版本”错误的最常见原因...... – harrism 2012-02-07 23:51:28