我有一個如下設計的數組:color[100][3]
。我想在內核中填充這個數組,然後在主機代碼中使用它。我怎樣才能做到這一點?我只需要撥打cudaMemcpy()
來發送並獲取。在CUDA內核memcpy調用中使用array [i] [j]
這就是我要發送到設備:
err = cudaMallocPitch(&d_color, &pitch, 3 * sizeof(unsigned char),100);
這是我現在必須從設備(編者)得到它:
err = cudaMemcpy2D(color,100*3,d_color,pitch,3 *sizeof(unsigned char),3, cudaMemcpyDeviceToHost);
cudaMemcpy2D的最後調用拋出
:錯誤「無效參數」
如何獲得color[100][3]
陣列的音高?我應該假設它是填充的3+1
?
爲什麼不使用普通的'cudaMalloc()'和'cudaMemcpy()'?你只需要一個指向內存的指針。 – KiaMorot 2013-03-06 11:11:11
將你的二維數組映射到一維數組中。在調用內核時傳遞另一個參數,它告訴你,一個維度的長度是多少,例如'color [100 * 3]',並將100傳遞爲dimSize,並且可以使用'color [i/* 53 */+ dim/* 2nd */* N/* 100 * /] = 0;' – 2013-03-06 11:15:22
我想這個數組是Cimg框架的一部分。我必須按原樣使用它,因爲後面的代碼以這種方式使用數組。 – 2013-03-06 11:37:54