Skip to content

Instantly share code, notes, and snippets.

@nanmi
Last active January 13, 2021 08:26
Show Gist options
  • Save nanmi/3fd850432246711e92682a31b989811f to your computer and use it in GitHub Desktop.
Save nanmi/3fd850432246711e92682a31b989811f to your computer and use it in GitHub Desktop.
SearchThreadIdx CUDA C++
//CUDA C++
//1D grid of 1D blocks
__device__ int getGlobalIdx_1D_1D()
{
return blockIdx.x*blockDim.x + threadIdx.x;
}
//1D grid of 2D blocks
__device__ int getGlobalIdx_1D_2D()
{
return blockIdx.x*blockDim.x*blockDim.y
+ threadIdx.y*blockDim.x + threadIdx.x;
}
//1D grid of 3D blocks
__device__ int getGlobalIdx_1D_3D()
{
return blockIdx.x*blockDim.x*blockDim.y*blockDim.z
+ threadIdx.z*blockDim.y*blockDim.x
+ threadIdx.y*blockDim.x + threadIdx.x;
}
//2D grid of 1D blocks
__device__ int getGlobalIdx_2D_1D()
{
int blockId = blockIdx.y*gridDim.x + blockIdx.x;
return blockId*blockDim.x + threadIdx.x;
}
//2D grid of 2D blocks
__device__ int getGlobalIdx_2D_2D()
{
int blockId = blockIdx.y*gridDim.x + blockIdx.x;
return blockId*(blockDim.x*blockDim.y) + (threadIdx.y*blockDim.x) + threadIdx.x;
}
//2D grid of 3D blocks
__device__ int getGlobalIdx_2D_3D()
{
int blockId = blockIdx.y*gridDim.x + blockIdx.x;
return blockId*(blockDim.x*blockDim.y*blockDim.z)
+ (threadIdx.z*(blockDim.x*blockDim.y))
+ (threadIdx.y*blockDim.x) + threadIdx.x;
}
//3D grid of 1D blocks
__device__ int getGlobalIdx_3D_1D()
{
int blockId = blockIdx.y*gridDim.x + blockIdx.x
+ gridDim.x*gridDim.y*gridDim.z;
return blockId*blockDim.x + threadIdx.x;
}
//3D grid of 2D blocks
__device__ int getGlobalIdx_3D_2D()
{
int blockId = blockIdx.y*gridDim.x + blockIdx.x
+ gridDim.x*gridDim.y*gridDim.z;
return blockId*(blockDim.x*blockDim.y)
+ (threadIdx.y*blockDim.x) + threadIdx.x;
}
//3D grid of 3D blocks
__device__ int getGlobalIdx_3D_3D()
{
int blockId = blockIdx.y*gridDim.x + blockIdx.x
+ gridDim.x*gridDim.y*gridDim.z;
return blockId*(blockDim.x*blockDim.y*blockDim.z)
+ (threadIdx.z(blockDim.x*blockDim.y))
+ (threadIdx.y*blockDim.x) + threadIdx.x;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment