如果我理解正確,我可以在爲設備內核執行中的主機內存訪問分配CL緩衝區時使用CL_MEM_USE_HOST_PTR。我可以使用CL_MEM_COPY_HOST_PTR將數據複製到設備內存。我的問題是:我可以以某種方式分配一個數組A,其中一半分配在主機內存中,另一半分配到設備內存中。假設前半部分分配在主機內存中。 A [0〜(N/2-1)]訪問主機存儲器,A [N/2〜(N-1)]訪問設備存儲器。如何在主機內存中分配一半OpenCL緩衝區,另一半分配給設備內存?
0
A
回答
0
真實的事實是,你無法知道內存在哪裏。
分配的對象內存位於OpenCL「上下文」內,純粹是虛擬的,可以位於任何位置(設備或主機)。 如果您希望從指針中獲取內存,或從指針中複製內存或在主機中分配副本,則只能指定OpenCL。但是,這些都不能保證主機端的內存一致性。也就是說,主機上的內存可能不是該內存對象的最後一個版本。由於OpenCL允許將內存緩存在設備中。
一些供應商指定在其實現和SDK中使用某些標誌來選擇不同類型的內存(即:固定)。但這是依賴於實現的,並且不會改變您仍然需要使用clReadBuffer()或clMapBuffer()來確保主機端的值是內核的實際輸出的事實。
從我個人的經驗來看,如果你不使用沉重的I/O。您可以簡單地使用CL_MEM_READ_WRITE標誌。
相關問題
- 1. 緩衝區內存分配
- 2. C緩衝區內存分配
- 3. 緩衝區NULL!:無法分配內存
- 4. 如何分配一個可執行的內存緩衝區?
- 5. 如何爲iOS中的緩衝區分配內存
- 6. 壞的內存地址分配的OpenCL緩衝
- 7. Netty如何直接分配和釋放緩衝區內存?
- 8. 在主機設備上分配的空閒內存
- 9. 內存對象分配給OpenCL中的上下文機制
- 10. 您可以在GPU上使用opencl分配比設備內存大的緩衝區嗎
- 11. CUDA內存分配用於主機和設備
- 12. 爲什麼在創建緩衝區時需要分配內存?
- 13. 如何檢查分配緩衝區的相應頁面是否在緩存或主內存中?
- 14. C++分配內存一類
- 15. openCL CPU上的最大內存分配
- 16. 從緩衝區分配不同的內存塊
- 17. 帶預分配內存緩衝區的XGetImage
- 18. 內存分配失敗:增長緩衝區 - Python
- 19. 重複調用glBufferData未能爲新緩衝區分配內存
- 20. 讀取功能:複製緩衝區,重新分配內存
- 21. 當內存分配給類?
- 22. 內存分配給數組
- 23. 小內存設備中的內存分配
- 24. 如何區分分配使用一個內存池
- 25. 64位機內存分配
- 26. Magento:機器內存分配
- 27. 內存分配
- 28. 內存分配
- 29. 內存分配
- 30. 內存分配