首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我可以绕过OpenCL中的缓存吗?

我可以绕过OpenCL中的缓存吗?
EN

Stack Overflow用户
提问于 2016-06-07 12:26:37
回答 1查看 207关注 0票数 1

实际上,我从来没有遇到过需要缓存我写入全局内存的值的情况。但是我没有办法阻止GPU污染缓存,就像我在CPU上使用非临时写入所做的那样。

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

EN

回答 1

Stack Overflow用户

发布于 2016-06-07 17:45:03

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

这些只是我的假设,这可能是错误的,但我确信的是,供应商会尽最大努力优化他们的GPU,以便他们可以通过在当前游戏中实现比竞争对手更高的FPS来吹嘘。试图智胜他们通常不是一个好主意。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37670476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档