2016-09-27 116 views
0

The documentation對於cudaHostAlloc()說,使用cudaHostAllocMapped標誌,它會在主機上分配固定內存,並將分配映射到CUDA地址空間中。這是否意味着設備上也分配了鏡像緩衝區?在cudaHostAlloc()cudaHostGetDevicePointer()呼叫期間。 或者每次訪問由cudaHostGetDevicePointer()返回的指針時,設備是否與主機存儲器通信?cudaHostAllocMapped是否也在設備上分配緩衝區?

這個問題與When to use cudaHostRegister() and cudaHostAlloc()? What is the meaning of "Pinned or page-locked" memory? Which are the equivalent in OpenCL?不同,因爲我不問API是什麼,什麼時候使用它們,什麼是固定內存。我具體問是否在GPU上分配了鏡像緩衝區。

+0

的可能的複製[何時使用cudaHostRegister()和cudaHostAlloc()? 「固定或頁面鎖定」內存的含義是什麼?這是在OpenCL的等價?(http://stackoverflow.com/questions/39454465/when-to-use-cudahostregister-and-cudahostalloc-what-is-the-meaning-of-pinn) – Leos313

+0

@ Leos313,有在這個問題中沒有什麼或者關於鏡像緩衝區的答案。我已經知道這個問題的答案。我對GPU如何訪問CPU內存的細節感興趣。 –

+2

沒有分配內存的設備上,所有訪問到主機內存。 [本文檔(http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#mapped-memory)可能更適合您的需求。 – tera

回答

3

沒有分配「鏡像」緩衝區。

當設備代碼使用,指的映射的主機存儲器中的指針,則一個設備讀取或使用指針會產生PCIE流量將數據從主機存儲器傳送到/,以服務該讀取或寫入寫。