0

次のデザインの配列がありますcolor[100][3]。この配列をカーネルに入力してから、ホストコードで使用したいと思います。どうすればこれを達成できますか?cudaMemcpy()送信して取得するには、電話が必要です。

これは私がデバイスに送信しなければならないものです:

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パッドが入っていると思いますか?

4

1 に答える 1

0
err = cudaMemcpy2D(
        color, 
        pitch, 
        d_color, 
        sizeof(unsigned char) * 100 * 3, // <<< WRONG - source pitch, not it's size!
        3 * sizeof(unsigned char), 
        100 * sizeof(unsigned char), // <<< Shouldn't it be number of rows, not column size in bytes?
        cudaMemcpyDeviceToHost
        );

ところで-uchar3タイプを使用する方が簡単ではないでしょうか?

于 2013-03-06T11:30:19.160 に答える