繁体   English   中英

为什么在CUDA内核中此语句运行缓慢?

[英]Why is this statement in a CUDA kernel slow?

我正在使用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;

该代码几乎不需要几秒钟即可完成。

为什么指定的说明速度慢,如何使其快速运行?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM