2
我是新來的cuda;我有一個2D圖像(寬度,高度)與3個通道(顏色)。 我想要的是午餐有3D塊和2D網格這樣Cuda索引圖3D塊,2D網格
kernel_2D_3D<<<dim3(1,m,n), dim3(3,TILEy,TILEz)>>>(float *in, float *out)
內核我用X的顏色,ÿ寬度和身高ž。我的問題是: 如何計算圖像的行和列:
- 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;
}
好的我認爲我不能確認這個答案是否正確,因爲經過一些閱讀後我發現我不能在我的筆記本電腦上進行//有1個設備支持CUDA //設備0名稱:GeForce 9200M GS //計算能力:1.1 //最大全局內存大小:536150016 //最大常量內存大小:65536 //每個塊的最大共享內存大小:16384 //最大塊大小:512 x 512 x 64 //最大柵格尺寸:65535 x 65535 x ** 1 ** //經線尺寸:32 – ALMIStack
@ALMIStack ...抱歉誤會。我已經刪除了不正確的假設。 – sgarizvi
so grid.z = 1,我需要((n + TILEz-1)/ TILEz) – ALMIStack