实际上,我从来没有遇到过需要缓存我写入全局内存的值的情况。但是我没有办法阻止GPU污染缓存,就像我在CPU上使用非临时写入所做的那样。
这是一个严重的问题,可能会使性能下降20%或更多。
发布于 2016-06-07 17:45:03
关于这方面的最新信息很少,但是什么让你认为写操作被缓存了呢?除非您使用的是原子操作,否则GPU并不关心一致性。如果在写入后读取内存位置,即使在同一工作组中也会得到未定义的结果,除非您在操作之间设置了全局内存屏障。这意味着缓存写入的值是没有意义的,因为此时所有着色器执行都必须已写入其数据。您可以确定它不会放入任何缓存中!GPU是一个完全不同于CPU的野兽。其中一个中的概念不容易转换到另一个中。
这些只是我的假设,这可能是错误的,但我确信的是,供应商会尽最大努力优化他们的GPU,以便他们可以通过在当前游戏中实现比竞争对手更高的FPS来吹嘘。试图智胜他们通常不是一个好主意。
https://stackoverflow.com/questions/37670476
复制相似问题