在LLVM源代碼文件llvm/lib/Target/NVPTX/NVPTXIntrinsics.td
中,CUDA存儲器類型上的atom_add,atom_sub,atom_max,atom_min,atom_inc,atom_dec等的定義可以是看到。但是我無法在這些文件中的任何位置找到CUDA內存上的加載和存儲操作。那麼在llvm中爲CUDA內存類型定義加載和存儲操作的位置?在llvm上對CUDA存儲器類型(例如共享,全局)進行加載和存儲操作的定義
1
A
回答
2
因爲沒有用於加載和存儲到CUDA內存層次結構的內在函數,所以不會將它們視爲內在函數。 NVPTX使用加載或存儲指令的指針操作數上的地址空間來確定應該生成哪個PTX指令。
負載的指針address space 1
將轉化爲ld.global.<type>
,同時在指針address space 3
(共享存儲器)來進行的負荷將導致ld.shared.<type>
指令。加載到通用指針,即address space 0
中的指針將導致ld.<type>
指令。
該翻譯發生在NVPTX後端的指令選擇期間。看看./llvm/lib/Target/NVPTX/NVPTXISelDAGToDAG.cpp
來了解如何在NVPTX中進行指令選擇。例如在SDNode *NVPTXDAGToDAGISel::SelectLoad(SDNode *N)
中加載指令被處理。
相關問題
- 1. OpenMP和共享存儲器的定義
- 2. 在共享內存中存儲和操作對象數組
- 3. 關於CUDA共享存儲器
- 4. CUDA中的全局vs共享內存
- 5. 共享git存儲庫上的哪些操作是安全的?
- 6. 升壓共享存儲型
- 7. GPU共享存儲器實際例子
- 8. CUDA共享存儲器陣列 - 古怪行爲
- 9. 在Flex共享對象中存儲類的實例
- 10. 具有共享存儲器
- 11. 使用共享存儲器
- 12. 操縱的字符串在共享存儲器中,在共享存儲器fork()的C++
- 13. 在實例之間共享存儲
- 14. 如何在Jersey/Glassfish中加載和存儲全局變量
- 15. 瀏覽器全局存儲?
- 16. 使用全局對象作爲存儲
- 17. CUDA中的共享內存上的原子操作
- 18. 在自定義操作過濾器中注入存儲庫類
- 19. 如何在共享服務器上安全地存儲用戶名和密碼?
- 20. CUDA:共享內存上的原子操作
- 21. CUDA共享內存
- 22. CUDA:全球總存儲器使用
- 23. 並行線程mutexattr進程共享的存儲器泄漏
- 24. Java加密存儲器類加載器
- 25. CUDA中的全局內存是否在原始操作上並行執行?
- 26. EC2 Windows上的共享存儲
- 27. 移動設備上的共享存儲
- 28. 全局內存和CUDA流
- 29. Android工作室共享喜好存儲到設備存儲
- 30. CUDA全局存儲器解除分配問題