2013-03-09 65 views
1

CUDA C編程指南指出,在計算容量高於2.0時,主機和設備在64位Linux上共享內存空間。我有一個通過標準運行時API「cudaMalloc」分配的全局內存,但似乎主機無法直接訪問它。我應該做一些特別的事情,讓主機可以訪問嗎?我可以從主機訪問設備全局內存嗎?

回答

2

設備存儲器靜態分配或動態地是不能直接訪問(例如,通過解引用指針)從主機。有必要通過cudaMemset或cudaMemcpy等cuda運行時API調用來訪問它。它們共享相同的地址空間(UVA)並不意味着它們可以以相同的方式訪問。它只是意味着如果我有一個設備指針已經在邏輯地址空間中的特定位置(如0x00F0000)分配,我不應該期望在同一位置找到主機指針。因此,給予適當的記錄保存,並立即確定它是否是主機或設備指針。

programming guide,它指出:

因此,程序管理的全局,常量和紋理存儲器空間通過調用CUDA運行時(在編程接口描述)可見的內核。這包括設備內存分配和重新分配以及主機和設備內存之間的數據傳輸。

相關問題