3d CUDA三维矩阵索引
我在CUDA中有一个矩阵是356x896x60 在我的程序中,我对三个空间坐标进行如下编码:3d CUDA三维矩阵索引,3d,indexing,cuda,3d,Indexing,Cuda,我在CUDA中有一个矩阵是356x896x60 在我的程序中,我对三个空间坐标进行如下编码: voxel[threadIdx.x]= indexx+indexy*(DETECTOR_X_DIM)+indexz*DETECTOR_X_DIM*DETECTOR_Y_DIM; 是这样吗?我看过一些关于使用x*dimx*dimy+y*dimx+z的主题,因此我不确定什么是正确的方法取决于矩阵元素在内存中的布局方式。您使用的是x+y*dimx+z*dimx*dimy,如果您的值被映射到内存,则该值有效:
voxel[threadIdx.x]= indexx+indexy*(DETECTOR_X_DIM)+indexz*DETECTOR_X_DIM*DETECTOR_Y_DIM;
是这样吗?我看过一些关于使用
x*dimx*dimy+y*dimx+z
的主题,因此我不确定什么是正确的方法取决于矩阵元素在内存中的布局方式。您使用的是
x+y*dimx+z*dimx*dimy
,如果您的值被映射到内存,则该值有效:
index = 0;
for (z = 0; z<dimz; ++z)
for(y = 0; y<dimy; ++y)
for(x = 0; x<dimx; ++x) {
matrix[index] = value;
index++;
}
index=0;
因为(z=0;我想几个月前zI已经在CUDA论坛上看到了。谢谢你的回复;)