- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有相当多的 stackoverflow 线程询问为什么使用纹理的内核并不比使用全局内存访问的内核更快。对我来说,答案和评论似乎总是有点深奥。
NVIDIA white paper on the Fermi architecture白底黑字:
The Fermi architecture addresses this challenge by implementing a single unified memory request path for loads and stores, with an L1 cache per SM multiprocessor and unified L2 cache that services all operations (load, store and texture).
那么到底为什么人们应该期望在 Fermi 设备上使用纹理内存来提高速度,因为每次内存获取(无论它是否绑定(bind)到纹理)都会使用相同的 L2 缓存。实际上,在大多数情况下,直接访问全局内存应该更快,因为它也通过 L1 进行缓存,而纹理获取则不然。 stackoverflow 上的一些相关问题也报告了这一点。
有人可以证实这一点或告诉我我缺少什么吗?
最佳答案
您忽略了每个流式多处理器都有一个纹理缓存(请参见下图说明 Fermi 的流式多处理器)。
纹理缓存与 L1/L2 缓存具有不同的含义,因为它针对数据局部性进行了优化。数据局部性适用于必须访问与规则、笛卡尔、1D、2D 或 3D 网格的语义(而非物理)相邻点有关的数据的所有情况。为了更好地解释这个概念,请考虑下图,该图说明了 2D 或 3D 有限差分计算中涉及的模板
计算红点处的有限差分涉及访问与蓝点相关的数据。现在,这些数据不是红点的物理邻居,因为当将 2D 或 3D 数组展平为 1D 时,它们不会在物理上连续存储在全局内存中。然而,它们是红点的语义邻居,并且纹理内存非常擅长缓存这些值。另一方面,当必须频繁访问相同数据或其物理邻居时,L1/L2 缓存非常有用。
奖章的另一面是,与 L1/L2 缓存相比,纹理缓存的延迟更高,因此,在某些情况下,不使用纹理可能不会导致性能显着恶化,这要归功于 L1/L2缓存机制。从这个角度来看,当全局内存读取没有被缓存时,纹理在早期的 CUDA 架构中具有最高的重要性。但是,正如 Is 1D texture memory access faster than 1D global memory access? 中所示,Fermi的纹理内存值得使用。
关于caching - 另一个 CUDA 纹理内存线程。 (为什么 Fermi 上的纹理内存应该更快?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25821131/
很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 1
关闭。这个问题需要details or clarity .它目前不接受答案。 想改进这个问题吗? 通过 editing this post 添加细节并澄清问题. 关闭 8 年前。 Improve t
我卡在了一个点上,我无法进步,很抱歉这个愚蠢的问题。我为此进行了很多搜索,但我不知道我错过了什么。请帮助我。 我研究了 python 中的模块和类。现在我想使用 python 和 apt 进行一些操作
我在 Kong 有服务,我已经为该服务设置了代理缓存插件。 curl -X POST http://localhost:8001/plugins --data "name=proxy-cache"--
ASP.NET Core 提供内存缓存和响应缓存。 假设该应用程序是 ASP.NET Core WebAPI,它通过配置的响应缓存中间件将 SQL 数据库中的数据传送给用户。 在什么情况下也使用内存缓
我最近遇到了以下面试问题: You need to design a system to provide answers to factorials for between 1 and 100. Yo
我的 Javascript (JS) 代码遇到了一些麻烦,因为我有时需要在同一个函数中多次访问相同的 DOM 元素。还提供了一些推理here . 从性能的角度来看,是一次性创建一个 jQuery 对象
仅使用 Cache 终端,我使用或查看什么实用程序函数或 Global 来查找存在于 Cache 数据库中的所有 Globals 的列表? 再次仅在缓存终端中使用,我使用或查看什么实用程序功能或全局以
我的 Javascript (JS) 代码遇到了一些麻烦,因为有时我需要在同一个函数中多次访问同一个 DOM 元素。还提供了一些推理here . 从性能的角度来看,是先创建一个jQuery对象然后缓存
来自 RFC 2616 http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1 no-cache If the no-cach
大多数 CDN 服务器对经常访问的内容使用缓存。 场景:假设有人上传了一张非常热门的图片,并且来自同一位置的许多用户 (1000) 试图访问该图片。 问题:假设网络服务器收到一个请求,首先检查它的缓存
我的 Javascript (JS) 代码遇到了一些麻烦,因为有时我需要在同一个函数中多次访问同一个 DOM 元素。还提供了一些推理here . 从性能的角度来看,是先创建一个jQuery对象然后缓存
如果我将服务器响应设置为:Cache-Control: private,no-cache,max-age=900 ? 如果标题是这样的,会发生什么:Cache-Control: public,no-c
我有一个类需要在缓存中存储数据。最初我在 ASP.NET 应用程序中使用它,所以我使用了 System.Web.Caching.Cache。 现在我需要在 Windows 服务中使用它。现在,据我了解
我遇到了和这个人一样的问题:X-Drupal-Cache for Drupal 7 website always hits MISS ,并且找不到出路。 我正在运行 Drupal 7 - 新闻流 和
我已将 Laravel 设置为使用 Redis 作为缓存。当我使用 Cache::('my_var', 'my_val'); 然后通过 CLI 检查 Redis 以查看 key 是否已创建时,我可以验
我在 Windows Azure 云上有一个应用程序,并且正在使用 Windows Azure 共置缓存。 有时,当我发布网站/web服务时,调用DataCacheFactory.GetCache方法
我正在阅读 documentation for Apollo server-side caching ,但看不到任何关于缓存通常如何加密的内容。 我需要的是一个以响应中包含的对象 ID 为键的缓存,而
Hibernate\Grails 中最好的缓存策略是什么?是否缓存所有实体和查询以及如何找到最佳解决方案? 这是我的 hibernate 配置。 hibernate { cache.use_sec
我收到错误 'Nuget.Proxy Cache' 的类型初始化器抛出异常 尝试连接到 Nuget 官方包源时。我在公司网络后面,但是我怀疑问题是连接性。 有任何想法吗? 最佳答案 我有同样的问题。我
我是一名优秀的程序员,十分优秀!