2012-02-10 102 views
0

我們正在研究一個研究原型,我們打算將GPU內存用於「GPU RAM磁盤」。目前,我們有一個用戶模式模塊,它使用OpenCL將數據複製到GPU內存和從GPU內存複製數據。從操作系統內核訪問GPU內存

我們寧願直接從Windows內核訪問GPU內存的方式(從而減少由上下文切換引入的開銷)。達到此目的的最佳方法是什麼?

+1

據我所知,GPU沒有內核模式接口,但你可以很容易地在用戶模式下分配內存,將引用傳遞到內核模式,並在那裏使用內存。但爲什麼你會做這樣的事情? RAM磁盤沒有任何意義,而GPU內存上的RAM磁盤更不理智。 – Christopher 2012-02-10 15:44:43

+0

@Christopher:GPU驅動程序以內核模式運行,並且控制與GPU之間的所有傳輸。用戶模式API(如OpenGL和DirectX)與內核驅動程序公開的設備實例進行通信。其他驅動程序可以很好地與這些設備實例進行通信但它們是特定於供應商的。 – 2012-02-24 23:39:16

+0

@BenVoigt當然,這是關於內核驅動程序接口的內核驅動程序。據我所知,沒有文件記錄。 – Christopher 2012-02-26 17:07:54

回答

0

您正在查找的功能稱爲零複製內存。 AMD和NVIDIA最近的GPU都支持它。我不熟悉NVIDIA在OpenCL中的零拷貝支持(我知道它在CUDA中得到了很好的支持)。 AMD的零拷貝支持在其OpenCL編程指南中有詳細記錄:http://developer.amd.com/sdks/AMDAPPSDK/assets/AMD_Accelerated_Parallel_Processing_OpenCL_Programming_Guide.pdf

請參閱表4.2(OpenCL存儲器對象屬性),專門用於描述要傳遞給clCreateBuffer的標誌。很可能你會想要使用CL_MEM_USE_PERSISTENT_MEM_AMD,它可以從主機訪問的設備(GPU)內存中分配內存。