[英]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設備內存中,您需要執行以下操作:
cudaMalloc3D
分配內存空間 cudaMemcpy3DParms
設置輸入參數 cudaMemcpy3D
將輸入數據從主機復制到設備 然后,將您的數據返回主機:
cudaMemcpy3DParms
設置輸出參數 cudaMemcpy3D
將輸出數據從設備復制到主機 CUDA C編程指南的第3.2.2章設備存儲器中有一個代碼示例,該示例分配了一個寬×高×深3D浮點值數組,並顯示了如何在設備代碼中循環這些數組元素 。
同樣,CUDA SDK的simpleTexture3D
示例也是一個很好的起點。
只是一個建議 :准備您的代碼以捕獲CUDA錯誤並分析發生錯誤的情況,因為您可能會發現一些錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.