在我的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