thread_index.h 582 Bytes
Newer Older
Nianchen Deng's avatar
Nianchen Deng committed
1
#include <device_launch_parameters.h>
Nianchen Deng's avatar
Nianchen Deng committed
2
#include <glm/glm.hpp>
Nianchen Deng's avatar
Nianchen Deng committed
3
4
5
6

#define IDX2 glm::uvec2 { blockIdx.x * blockDim.x + threadIdx.x, blockIdx.y * blockDim.y + threadIdx.y }
#define IDX3 glm::uvec3 { blockIdx.x * blockDim.x + threadIdx.x, blockIdx.y * blockDim.y + threadIdx.y, blockIdx.z * blockDim.z + threadIdx.z }

Nianchen Deng's avatar
Nianchen Deng committed
7
__device__ __forceinline__ unsigned int flattenIdx(glm::uvec3 idx3)
Nianchen Deng's avatar
Nianchen Deng committed
8
9
10
11
{
    return idx3.x + idx3.y * blockDim.x * gridDim.x + idx3.z * blockDim.x * gridDim.x * blockDim.y * gridDim.y;
}

Nianchen Deng's avatar
Nianchen Deng committed
12
__device__ __forceinline__ unsigned int flattenIdx()
Nianchen Deng's avatar
Nianchen Deng committed
13
14
15
{
    return flattenIdx(IDX3);
}