使用本地内存打击初始性能

时间:2014-03-02 21:36:46

标签: opencl

使用本地内存时是否有初始性能损失? 我正在转换使用全局内存的现有内核,并且在成功转换时我看到性能下降。显然你可能认为我可能没有正确使用它,我甚至可能同意并找到一些更优化。但这不是问题所在。

作为一个侧面实验,我使用相同的内核使用全局内存,不能访问本地内存。然后我所做的就是在一个带有本地内存的内核参数中传递,大约有1024个整数。在这里,我看到这个内核执行花了几乎两倍的时间。 那么本地内存本身的分配会导致一些初始性能损失吗?有没有人看过这个并且可能有解释?

[更新]感谢大家的意见和解答。 我试着编写一个单独的测试内核来查看这种行为是否可重复。事实并非如此。 我找到了帖子Is private memory slower than local memory? 提到过度使用私有内存可能会导致溢出到全局内存,因此可能会降低内核执行速度。看来这可能是nVidia卡特有的,我想知道AMD卡会发生什么。 可能是本地内存的分配突然导致私有内存溢出为本地内存腾出空间?我现在正从这个角度看待我的实施,除非你们中的任何人另有建议。 是否有任何文件或书籍提到你们可能知道的?

再次感谢。

1 个答案:

答案 0 :(得分:0)

使用非最佳规模的本地工作组或WG内的WI同步可能会影响性能。

读入本地内存本身不会引入任何性能损失 - 它与读取私有内存(都放在芯片上)具有相同的速度顺序。

另外,检查您的数据是否适合本地内存大小,因为它通常尺寸较小。