簡體   English   中英

cuda:如何將主機數據復制到3D cuda陣列並返回

[英]cuda: how to copy host data to 3D cuda array and back

“ cuda c編程指南”給出了有關使用cuda數組的示例。 這些示例僅限於2D。 因此,在二維CUDA陣列的情況下,我只需執行以下操作即可將主機數據復制到設備內存中:

// Copy to device memory some data located at address h_data in host memory  
// cuInputArray is a 2D cuda array
cudaMemcpyToArray(cuInputArray, 0, 0, host_data, size_bytes, cudaMemcpyHostToDevice);
// with e.g. size_bytes := size_arr_x * size_arr_y * sizeof(float)

我嘗試將cuInputArray作為3D cuda數組使用相同的方法,但沒有成功,但得到了無效的參數錯誤。

那么如何將我的主機數據傳送到設備內存並返回呢?

為了將3D數據復制到GPU設備內存中,您需要執行以下操作:

  1. 使用cudaMalloc3D 分配內存空間
  2. 使用cudaMemcpy3DParms 設置輸入參數
  3. 使用cudaMemcpy3D 輸入數據從主機復制到設備

然后,將您的數據返回主機:

  1. 使用cudaMemcpy3DParms 設置輸出參數
  2. 使用cudaMemcpy3D 輸出數據從設備復制到主機

CUDA C編程指南的第3.2.2章設備存儲器中有一個代碼示例,該示例分配了一個寬×高×深3D浮點值數組,並顯示了如何在設備代碼中循環這些數組元素

同樣,CUDA SDK的simpleTexture3D示例也是一個很好的起點。

只是一個建議 :准備您的代碼以捕獲CUDA錯誤並分析發生錯誤的情況,因為您可能會發現一些錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM