为什么CUDA内核中的这个语句会变慢?

时间:2013-09-26 18:29:20

标签: c cuda

我正在使用CUDA做一些计算机视觉。以下代码大约需要20秒才能完成。

__global__ void nlmcuda_kernel(float* fpOMul,/*other input args*/){

float fpODenoised[75];

/*Do awesome stuff to compute fpODenoised*/

//inside nested loops:(This is the statement that is the bottleneck in the code.)
      fpOMul[ii * iwl * iwxh + iindex * iwxh + il] = fpODenoised[ii * iwl +iindex];

}

如果我用

替换该语句
fpOMul[ii * iwl * iwxh + iindex * iwxh + il] = 2.0f;

代码几乎不需要几秒钟才能完成。

为什么指定的语句速度慢,如何让它快速运行?

1 个答案:

答案 0 :(得分:3)

当您进行代码更改时,编译器可以看到不再需要所有令人敬畏的fpdenoised代码并且可以优化它。您修改的实际声明不是性能差异的直接原因。您可以通过查看每种情况下的ptx或sass代码来验证这一点。