我可以在OpenCL中绕过缓存吗?

时间:2016-06-07 04:26:37

标签: caching opencl gpgpu

我实际上从未遇到过需要缓存我写入全局内存的值的情况。但我无法阻止GPU污染缓存,因为我可以通过非时间写入在CPU上执行此操作。

这是一个严重的问题,可能会使性能下降20%或更多。

1 个答案:

答案 0 :(得分:2)

最近几乎没有关于此的信息,但是是什么让你认为写入会被缓存?除非您使用原子操作,否则GPU不关心一致性。如果在写入内存位置后读取内存位置,即使在同一工作组中也会得到未定义的结果,除非在操作之间设置全局内存屏障。这意味着缓存写入的值是没有意义的,因为此时所有着色器执行必须已经写入了他们的数据。您可以确定它不适合任何缓存! GPU是一种与CPU完全不同的野兽。在一个人身上找到的概念很容易转移到另一个人身上。

这些只是我的假设,这可能是错误的,但我确信供应商会尽最大努力优化GPU以完成目前最常见的操作,这样他们就可以通过实现目前比赛中的FPS比竞争对手高一点。试图超越它们通常不是一个好主意。