首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在NVIDIA的maxwell GPU中,L1缓存用于什么?

在NVIDIA的maxwell GPU中,L1缓存用于什么?
EN

Stack Overflow用户
提问于 2015-03-06 08:47:22
回答 1查看 2.6K关注 0票数 5

NVIDIA已经发布了一段时间的maxwell GPU,但是在阅读"Maxwell调优指南“时,我对L1缓存的功能感到困惑。在开普勒时代,全局内存访问仅缓存在L2中,而L1用于缓存由寄存器溢出引起的本地内存访问。通过阅读NVIDIA的文档,这种本地内存缓存是我知道的唯一能从L1缓存中受益的东西。然而,在“麦克斯韦调谐指南”第1.4.2.1节中,NVIDIA说:

与开普勒一样,第一代麦克斯韦的全球负载仅缓存在L2中.本地负载也仅在L2中缓存。

Cuda6.0增加了两个新的设备属性globalL1CacheSupportedlocalL1CacheSupported,以检查设备是否支持全局内存L1缓存和本地内存L1缓存,因此我在GTX 780和GTX 980卡上对这两个属性进行了测试,结果使我更加困惑:

代码语言:javascript
复制
        globalL1CacheSupported    localL1CacheSupported

GTX780            1                         1

GTX980            0                         0

GTX 980的结果验证了"Maxwell调优指南“中的语句,这让我感到困惑,因为如果是这样的话,那么L1缓存用于什么呢?我无法理解的另一件事是,GTX 780是GK110卡,从GK110白皮书中,Keper也将其全局内存访问仅缓存在L2中,因此,对于GTX 780卡,globalL1CacheSupported返回1没有任何意义。希望有人能澄清我的谜团。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-06 14:02:13

麦克斯韦,L1功能已经与纹理缓存相结合。在调谐导轨中也提到了这一点。

费米设备引入了L1,它用于全局和本地负载缓存。L1是一个直通式缓存,所以它对全球和本地商店的影响相对较小。

对于开普勒,L1对于全局负载是禁用的,但对于本地负载仍然有效。

那么L1缓存用于什么呢?

对于Maxwell,L1对于全局负载的默认行为是相同的--它们没有缓存。但是,您可以“选择- in”将全局负载缓存在L1中,如您所提到的麦克斯韦调谐导轨中所述:

“以类似开普勒GK110B的方式,GM204默认保留这种行为,但也允许应用程序选择在其统一的L1/纹理缓存中缓存全局负载。opt-in机制与GK110B相同:在编译时将-Xptxas -dlcm=ca标志传递给nvcc。”

GK110B是GK110的变体,出现在K40设备中。在K20/K20x上,L1行为是不可修改的(对于全局负载关闭)。在K40上,L1的默认行为与K20/K20x相同。但是,可以重写默认行为来为全局负载打开L1。

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

https://stackoverflow.com/questions/28895133

复制
相关文章

相似问题

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