例如:要對數組執行算法,我們必須使用由數組創建的緩衝區。 但是對於Intel/AMD CPU,它使用像Global Memory這樣的系統的DDR。 最後,表格創建兩次。有沒有辦法在沒有分配緩衝區的情況下使用已經在內存中的表。內存位置和分配
Q
內存位置和分配
1
A
回答
4
可以問的OpenCL通過創建緩衝區時設置CL_MEM_USE_HOST_PTR標誌使用原來的內存區域。
如果內核在CPU上運行,則不會發生內存複製。如果OpenCL運行認爲這是更適合
如果在GPU上運行的副本可能發生。
3
CPU可以訪問機器的內存,但無法訪問GPU的內存。同樣,GPU可以訪問自己的內存,但不能訪問主機。這就是你必須在這兩者之間傳遞信息的原因 - 它們是兩個完全分離的存儲空間。
與gpgpu相反,使用OpenCL,內核可以在CPU上運行,因此不需要複製緩衝區;但OpenCL仍然要求您明確地傳輸內存,只是它的實現會在主機上運行時忽略它。
相關問題
- 1. Android位圖內存分配
- 2. 64位內存分配
- 3. 64位機內存分配
- 4. 結構/值類型內存分配和解除位置
- 5. 確定內核中內存分配的位置
- 6. Ç - 內存分配和釋放內存
- 7. 內存分配和釋放內存
- 8. 內存分配和動態內存分配
- 9. System.Web.Cache和HttpRuntime.Cache內存位置
- 10. 屬性和分配內存
- 11. 內存分配和釋放
- 12. int char *和內存分配
- 13. malloc分配內存和SIGSEGV
- 14. JSON樹和內存分配
- 15. 模板和內存分配
- 16. fork和內存分配
- 17. 分配和釋放內存
- 18. 內存分配和結構
- 19. Ptrace和內存分配
- 20. Enumerable.Range和內存分配
- 21. Mariadb配置分配的內存
- 22. 64位操作系統內存分配
- 23. 內存分配
- 24. 內存分配
- 25. 內存分配
- 26. 內存分配
- 27. 內存分配
- 28. 內存分配
- 29. 內存分配
- 30. 分配內存
因此,這些數據在OpenCL CPU平臺上分配了兩次,並且有任何技巧可以解決這個問題? 在圖像處理中,對性能造成很大的浪費。 –
@AlexPlacet我想我還不夠清楚......如果你使用OpenCL並且你的目標設備是CPU,那麼數據**不會被分配兩次。如果你在GPU上使用完全相同的代碼,它會。 – Oak