2015-09-02 47 views
1

每當我在CUDA中使用固定內存時,這個問題就會浮現在我的腦海裏。我已經在這個主題上搜索了很多,但沒有找到任何東西。基本上,我們必須執行兩次數據傳輸,以便使用固定內存:我可以將現有的可分頁內存轉換爲固定內存嗎?

第一步 - >可分頁內存到固定存儲器

第二步 - >固定內存到設備存儲器

我也可以直接初始化被釘扎通過輸入數據將內存傳輸到GPU,這將節省我的Step1的傳輸時間。就我而言,我正在GPU上處理大量的輸入數據。太多的頁面鎖定內存可能會降低整體系統性能。所以我不能只在固定內存上進行整個分配。我必須迭代地完成Step1和Step2的轉移(上面)。

CUDA中是否有將現有主機內存(可分頁)轉換爲固定內存的規定?像如下:

第1步 - >初始化由輸入數據的可分頁內存

第2步 - >轉換在上述存儲器中的固定內存

步驟3 - >傳送到設備,並執行執行

我希望我所問的是有道理的。

回答

5

是的,你可以。

運行時API包括cudaHostRegister,它允許將現有的可分頁內存分配註冊到CUDA上下文中。這可以包括固定內存,映射到虛擬地址空間或兩者。您的CUDA上下文必須已使用cudaMapHost標誌創建,並且可能存在一些內存必須滿足的對齊要求,具體取決於您使用的驅動程序版本和平臺。但原則上可以這樣做。

+0

將使用cudaHostRegister和cudaMapHost做更多的搜索和編程。謝謝回覆! –

相關問題