據我所知,cudaMallocManaged
無需在主機和設備上顯式分配內存,從而簡化了內存訪問。考慮一下主機內存明顯大於設備內存的情況,比如說16GB主機,這些日子相當普遍的2GB設備。如果我正在處理從外部數據源讀取的大尺寸輸入數據,例如4-5 GB。我是否不得不求助於顯式的主機和設備內存分配(因爲設備內存不足以容納一次)或者CUDA統一內存模型是否有辦法解決這個問題(例如,根據需要自動分配/取消分配)?cudaMallocManaged vs cudaMalloc - 設備內存限制方案
1
A
回答
5
我被迫訴諸明確的主機和設備內存分配?
你是不是被迫訴諸明確主機和設備內存分配,但你將不得不手動處理分配的內存量。這是因爲,至少在當前硬件上,CUDA統一虛擬內存不允許超額訂購GPU內存。換句話說,一旦分配的內存超過設備上的可用內存,cudaMallocManaged
將會失敗。但是這並不意味着你不能使用cudaMallocManaged
,它僅僅意味着你必須跟蹤分配的內存量,並且永遠不會超過設備可以支持的數量,通過「流式傳輸」數據而不是一次分配所有內容。
純粹的猜測,因爲我不能爲NVIDIA發言,但我相信這可能是即將到來的硬件的未來改進之一。
事實上,一年上述預測後半,爲CUDA 8,帕斯卡的GPU正在加強與一個頁面出錯的功能,允許內存頁到主機和設備沒有明確的干預之間遷移來自程序員。
+0
謝謝!是的,我的問題是當設備內存不足時,我不得不手動處理內存。這確實是一個很大的改進。 – mssrivatsa
相關問題
- 1. 「cudaMallocManaged」比「cudaMalloc」慢嗎?
- 2. SQL Server內存限制解決方案
- 3. CUDA內存限制
- 4. 複製到CUDA到設備內存CUDA
- 5. 方案限制
- 6. cudaMalloc總是給出內存
- 7. cuda內存分配cudaMalloc
- 8. cudaMallocManaged
- 9. 在CUDA中,如何將設備指針數組複製到設備內存?
- 10. 限制USB設備
- 11. Cuda - 從設備全局內存複製到紋理內存
- 12. iOS應用程序內存vs設備內存
- 13. 如何在使用音頻設備時限制內存消耗
- 14. 設備內存是否使用CudaMalloc在設備上無法訪問而被分配?
- 15. 爲什麼使用cudaMallocManaged
- 16. 對cudaMalloc和cudaMemcpy
- 17. 在cuda中使用靜態分配內存時的全局設備內存大小限制
- 18. PLT方案內存
- 19. CUDA設備內存拷貝:cudaMemcpyDeviceToDevice vs拷貝內核
- 20. OpenCL - 將樹複製到設備內存
- 21. 需要CUDA設備內存交易
- 22. 限制VS 2010中解決方案配置的數量
- 23. cudaMalloc和「內存不足」問題
- 24. iOS6設備旋轉限制
- 25. 限制特定設備
- 26. 內存限制設置可以由鈷
- 27. 設置人爲內存限制
- 28. Nodejs VM。設置內存限制
- 29. 設置內存限制Valgrind的
- 30. 備份API - 存儲限制?
如果訪問模式沒有顯示出大量的重用(或者如果重用可以從GPU的緩存層次結構中得到服務),映射的固定內存可能是一個不錯的選擇。 – ArchaeaSoftware
有趣!但是如文檔所述,如果分配了大量固定內存,它會降低主機系統性能,不是嗎?正如你所說的,當它不顯示大量的重用時,這是一個有效的選擇。謝謝! – mssrivatsa
這取決於系統在做什麼。在我已經完成的測試中(在Windows 7上),在性能開始降低之前,必須鎖定超過一半的系統內存。 – ArchaeaSoftware