Specifying thread Id in CUDA kernel in 3D -


i working convert 2d code 3d implementation

in 2d have following:

int row_number = blockidx.y * blockdim.y + threadidx.y int column_number = blockidx.x * blockdim.x + threadidx.x int threadid = row_number * grid_dimension + column_number 

i'm trying working in 3d

int row_number =  int column_number = int depth_number =  int threadid = row_number * grid_dimension + column_number + depth_number * grid_dimension * grid_dimension  

my first attempt has been this:

int row_number = blockidx.y * blockdim.y + threadidx.y int column_number = blockidx.x * blockdim.x + threadidx.x int depth_number = blockidx.z * blockdim.z + threadidx.z int threadid = row_number * grid_dimension + column_number + depth_number * grid_dimension * grid_dimension  

is expression threadid in 3d correct , if not how row, column, , depth numbers in 3d? i've seen expressions find blockid , threadid directly that's not quite have been looking for. if not problem might have other issues need investigate.

thanks.

you haven't defined mean grid_dimension.

certainly these formulations row/column/depth indices:

unsigned int row_number = blockidx.y * blockdim.y + threadidx.y; unsigned int column_number = blockidx.x * blockdim.x + threadidx.x; unsigned int depth_number = blockidx.z * blockdim.z + threadidx.z; 

to build globally unique thread id above variables, use:

unsigned long long idx = column_number + (row_number * griddim.x) + (depth_number * (griddim.x * griddim.y);  

Comments

Popular posts from this blog

php - SPIP: From Tag directly to an article -

jquery - isAjaxRequest always return false -

ruby on rails - In a controller spec, how to find a specific tag in the generated view? -