CUDA下在Host端分配的几种内存模式
CUDA下在Host端分配的幾種內存模式
0條評論 2009-11-27 11:21 ??IT168網站原創 作者: 關鑫的博客 編輯: 覃里【IT168 文檔】Pageable VS Pinned
平時我們使用的內存都是Pageable(交換頁)的,而另一個模式就是Pinned(Page-locked),實質是強制讓系統在物理內存中完成內存申請和釋放的工作,不參與頁交換,從而提高系統效率,需要使用cudaHostAlloc和cudaFreeHost來分配和釋放。
優點
1、帶寬更高
2、內核處理和內存拷貝可同時進行
3、可以內存映射(mapped)
缺點
使用pinned會減少系統內存的可用量,進而影響系統性能。
在Pinned模式下又有以下幾種屬性:
Write-combining
缺省的話pinned擁有cacheable屬性,可以用cudaHostAllocWriteCombined標志替代
優點
1、可以釋放L1和L2資源,讓緩存應用于別的地方
2、write-combining在通過PCIE總線傳輸時不會被檢測,大約可提高
40%的性能
缺點
無法讀取或讀取極慢。
Portable
對于多線程,只能分配pinned的線程可以得到好處,如果想讓別的線程也共享,需要cudaHostAllocPortable標志。
Mapped
傳入cudaHostAllocMapped標識可以讓宿主與設備內存映射(某些設備支持),這樣設備和宿主共用一塊內存,在內核函數中可以用cudaHostGetDevicePointer得到指針,不同的宿主線程得到的指針是不同的。
優點
不用在設備中分配和拷貝內存,數據在需要的時候被內核隱式傳輸
不需要用Stream來異步執行,內核函數自動在執行的同時異步傳輸
缺點
由于內存共享,內存訪問必須同步
總結
以上是生活随笔為你收集整理的CUDA下在Host端分配的几种内存模式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是安斯库姆四重奏?为什么统计分析之前
- 下一篇: Linux系统文件名字体不同的颜色都代表