私はcudaを初めて使用します。3チャンネル(色)の2D画像(幅、高さ)があります。私が欲しいのは、このような3Dブロックと2Dグリッドを持つカーネルを昼食することです
kernel_2D_3D<<<dim3(1,m,n), dim3(3,TILEy,TILEz)>>>(float *in, float *out)
色にはx、幅にはy、高さにはzを使用します。私の質問は次のとおりです。画像の行と列を計算するにはどうすればよいですか。
- unsigned int Row =?
- unsigned int Col =?
そして、私はこの関数を使用してグローバル一意インデックスを計算します
__device__ int getGlobalIdx_2D_3D()
{
int blockId = blockIdx.x+ blockIdx.y * gridDim.x;
int Idx = blockId * (blockDim.x * blockDim.y * blockDim.z)
+ (threadIdx.z * (blockDim.x * blockDim.y))
+ (threadIdx.y * blockDim.x)
+ threadIdx.x;
return Idx;
}