[問題] CUDA Grid的Z方向無法大於1?
大家好, 我最近寫CUDA遇到一個奇怪問題, 這樣寫會對
dim3 Gridsize(10,10)
dim3 Blocksize(32,16)
runKernel<<<Gridsize, Blocksize>>>(data);
static __global__ void runKernel(float *data)
{
int x = __mul24(blockIdx.x,blockDim.x) + threadIdx.x;
int y = __mul24(blockIdx.y,blockDim.y) + threadIdx.y;
int mx = __mul24(gridDim.x,blockDim.x);
int my = __mul24(gridDim.y,blockDim.y);
for(int z=0; z<10; z++)
data[__mul24(__mul24(z,my)+y,mx)+x]=something;
}
但是如果寫成
dim3 Gridsize(10,10,10)
dim3 Blocksize(32,16,1)
runKernel<<<Gridsize, Blocksize>>>(data);
static __global__ void runKernel(float *data)
{
int x = __mul24(blockIdx.x,blockDim.x) + threadIdx.x;
int y = __mul24(blockIdx.y,blockDim.y) + threadIdx.y;
int z = __mul24(blockIdx.z,blockDim.z) + threadIdx.z;
int mx = __mul24(gridDim.x,blockDim.x);
int my = __mul24(gridDim.y,blockDim.y);
data[__mul24(__mul24(z,my)+y,mx)+x]=something;
}
這樣就會錯....請問有經驗的大大這是怎麼回事?
我只是把z項也寫進去kernel裡,這樣怎麼會錯呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 24.161.183.254
推
04/21 16:22, , 1F
04/21 16:22, 1F
→
04/21 16:23, , 2F
04/21 16:23, 2F
→
04/21 20:24, , 3F
04/21 20:24, 3F
→
04/21 20:24, , 4F
04/21 20:24, 4F
→
04/21 20:30, , 5F
04/21 20:30, 5F
→
04/21 20:31, , 6F
04/21 20:31, 6F
→
04/21 21:42, , 7F
04/21 21:42, 7F
→
04/21 21:58, , 8F
04/21 21:58, 8F
→
04/21 21:59, , 9F
04/21 21:59, 9F
→
04/21 23:11, , 10F
04/21 23:11, 10F
推
07/09 14:46, , 11F
07/09 14:46, 11F
→
07/09 14:46, , 12F
07/09 14:46, 12F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章