2011-04-27 83 views
1

NVIDIA CUDA 4.0(這裏假設爲RC2)提供了頁面鎖定功能,該功能是通過「普通」malloc函數之前分配的內存範圍。這可以使用驅動程序API函數完成:NVIDIA CUDA 4.0,頁面鎖定帶運行時間的內存API

CUresult cuMemHostRegister (void * p, size_t bytesize, unsigned int Flags); 

現在,項目的開發已經使用運行時API完成。不幸的是,運行時API似乎不提供像cuMemHostRegister這樣的功能。我真的想避免混合驅動程序和運行時API調用。

有誰知道如何頁面鎖定先前使用標準malloc分配的內存?標準的libc函數不應該被使用,因爲頁面鎖定是爲了快速傳輸到GPU而暫存內存,所以我真的想堅持「CUDA」。

弗蘭克

回答

3

4.0運行時API提供cudaHostRegister(),這確實你問什麼。請注意,您鎖定的內存分配必須與主機頁面對齊,因此您可能應使用mmap()posix_memalign()(或其親屬之一)來分配內存。通過cudaHostRegister()從標準malloc()分配的任意大小可能會失敗並出現無效參數錯誤。