CUDA:我可以知道我是否有全局内存合并吗?

标签 cuda gpgpu

我使用的是 GeForce GTX 580(计算能力 2.0)。

在我的程序中,我怀疑瓶颈是对内核中全局内存的访问。我怀疑这一点是因为所有计算都涉及通过索引全局内存中存储的数组获得的数字,而且从 double 切换到单精度只会将性能提高 10% 左右。 (据我所知,如果浮点运算是瓶颈,那么费米器件的速度应该是两倍(?))

因此,为了改善这个瓶颈,我考虑了内存合并。这里的问题是我不知道我是否实现了它。要么我已经有了它,而且这已经是最好的了(比 intel i7 上的顺序版本快 25 倍),或者我可以通过某种方式重写以实现合并,让它运行得更快。

但是有办法知道吗?我可以以某种方式“关闭”合并来找出答案,或者以其他方式找出答案吗?

最佳答案

CUDA Visual profiler 会在汇总表中显示每个内核的加载/存储效率; Grizzly 给出了关于新卡中的变化的一个很好的答案:Compute Prof's fields for incoherent and coherent gst/gld? (CUDA/OpenCL)

关于CUDA:我可以知道我是否有全局内存合并吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6534907/

相关文章:

CUDA 运行时 API 错误 38 : no CUDA-capable device is detected

cuda - 内核参数数据存放在哪里?

opengl-es - 在 glFramebufferTexture2D() 之后 glReadPixels() 的结果

algorithm - 卷积核CUDA的设计

使用 gcc 编译 cuda 结果为 : error: ‘threadIdx’ undeclared

cuda - 在同一 . .cu 文件

concurrency - CUDA 流和并发内核执行

arrays - 将数据从设备复制到主机时出现无效的参数错误

c++ - 与 nvidia 链接的 gcc 版本错误

ios - 按索引访问 GPU 缓冲区