在我的CUDA应用程序中,我将数据从设备内存复制到共享内存。这些数据是否也缓存在L1中?CUDA共享内存是否也被缓存
2
A
回答
2
默认情况下,全局内存中的所有内存负载均缓存在L1中。全局内存加载的目标位置对L1缓存(无论是寄存器还是共享内存还是线程本地内存)都没有影响。共享内存本身显然不被缓存。
1
这只是为了扩展@talonmies说的。
副本是两个独立的操作在低级别,负载和商店。如果加载和存储访问全局内存,则它们可以缓存在L1和L2中。
由于副本的加载部分来自全局内存,因此默认情况下它将被缓存在L1和L2中。因此,除非编译器检测到从全局共享内存复制到共享内存并使用未缓存的加载的特殊情况,否则最终会得到两个数据副本,这些副本可以以相同的延迟访问,因为共享内存和L1缓存是通过相同的物理片上存储器。
从CUDA C编程指南4.2:
存在L1高速缓存为每个多处理器和通过所有 多处理器,共享的L2高速缓存两者都用于缓存访问本地或全局 存储器,包括临时登记泄漏。高速缓存行为(例如,是否读取 缓存在L1和L2中或仅L2中)可以使用对加载或存储指令的修饰符在每次访问的基础上部分配置。
我找不到任何关于如何这种行为可以从CUDA C.修改任何
相关问题
- 1. CUDA共享内存
- 2. CUDA:共享内存分配
- 3. cuda中的共享内存
- 4. CUDA共享内存速度
- 5. cuda共享内存覆盖?
- 6. CUDA共享内存占用
- 7. 检查共享内存是否存在,以及是否存在共享内存
- 8. activerecord内存共享缓存
- 9. Awesomium WebSession是否共享磁盘缓存?
- 10. CUDA中的共享内存分配
- 11. CUDA共享内存可能性
- 12. 银行冲突CUDA共享内存?
- 13. cuda nbody模拟 - 共享内存问题
- 14. CUDA共享内存原子错误
- 15. 何时使用volatile共享CUDA内存
- 16. CUDA中的免费共享内存
- 17. CUDA中的全局vs共享内存
- 18. CUDA性能:分支和共享内存
- 19. 在内存中缓存数据共享
- 20. C#共享内存高速缓存
- 21. 共享内存中高速缓存
- 22. Facebook共享缓存
- 23. SQLite共享缓存
- 24. ASP.Net缓存共享
- 25. (Android)Apps是否共享内存页面?
- 26. cuda奇怪的内存访问错误共享内存
- 27. 本地内存比CUDA中的共享内存慢吗?
- 28. cuda从全局内存复制数组到共享内存
- 29. CUDA非法内存访问可能'不足'的共享内存
- 30. CUDA:何时使用共享内存以及何时依赖L1缓存?
它不能在用户代码进行修改,但对于费米和开普勒的设备,它可以通过编译器选项来修改。使用'-Xptxas =“ - dlcm = cg”'将强制汇编程序生成32字节而不是绕过L1缓存的128字节事务。 – talonmies