我目前的 CUDA 代码的执行速度比 CPU 代码慢大约 3-4 倍。
我删除了所有无关的 CPU/GPU 传输,因此大部分计算都在 GPU 上完成,只有最终结果被传输回 CPU 内存。
为了加快速度,我做了一些阅读并发现由于 GPU 内存总线要慢得多,因此访问 GPU 设备内存也很慢。而且,由于我的计算使用大型数组——因此有很多内存访问——即使我设置threadsPerBlock
为最大值 1024,这也会减慢速度。
我想我现在唯一的选择是将数据块复制到每个单独块操作的 MP 共享内存中,并在该内存上进行计算。
我想知道如何最有效地将突发模式下的一块内存复制到共享内存中。我应该通过复制每个经纱中的起始线程索引来做到这一点吗?
任何具有相关代码或功能的解决方案都将不胜感激!