X-Git-Url: http://git.euphorik.ch/index.cgi?a=blobdiff_plain;f=WCudaMSE%2FBilatTools_Cuda%2Fsrc%2Fcore%2Fcudatools%2Fheader%2Fdevice%2FIndice2D.h;fp=WCudaMSE%2FBilatTools_Cuda%2Fsrc%2Fcore%2Fcudatools%2Fheader%2Fdevice%2FIndice2D.h;h=54b0c5a3db8a37c19219aa53c9be4c8e554dc52a;hb=8d08c12b29c2a14684f35c023ee39e694bb80d25;hp=0000000000000000000000000000000000000000;hpb=226de81f7e1f1fbf4ac79d0d089e8a05ec7159a0;p=GPU.git diff --git a/WCudaMSE/BilatTools_Cuda/src/core/cudatools/header/device/Indice2D.h b/WCudaMSE/BilatTools_Cuda/src/core/cudatools/header/device/Indice2D.h new file mode 100755 index 0000000..54b0c5a --- /dev/null +++ b/WCudaMSE/BilatTools_Cuda/src/core/cudatools/header/device/Indice2D.h @@ -0,0 +1,107 @@ +#ifndef INDICE_2D +#define INDICE_2D + +/*----------------------------------------------------------------------*\ + |* Declaration *| + \*---------------------------------------------------------------------*/ + +/*--------------------------------------*\ + |* Public *| + \*-------------------------------------*/ + +class Indice2D + { + + /*--------------------------------------*\ + |* Constructor *| + \*-------------------------------------*/ + + public: + + /*--------------------------------------*\ + |* Methodes *| + \*-------------------------------------*/ + + public: + + /*------------------*\ + |* tid *| + \*-----------------*/ + + __device__ + static int tid() + { + return (threadIdx.x + (blockDim.x * blockIdx.x)) + ((threadIdx.y + (blockDim.y * blockIdx.y)) * (gridDim.x * blockDim.x)); + } + + /** + * output in [0,nbThreadBlock()[ + * return threadIdx.x+blockDim.x*threadIdx.y; + */ + __device__ + static int tidLocalBlock() + { + return threadIdx.x + blockDim.x * threadIdx.y; + } + + /** + * idem tidLocalBlock + */ + __device__ + static int tidBlock() + { + return threadIdx.x + blockDim.x * threadIdx.y; + } + + /** + * idem tidLocalBlock + */ + __device__ + static int tidLocal() + { + return threadIdx.x + blockDim.x * threadIdx.y; + } + + /*------------------*\ + |* nbThread *| + \*-------------------*/ + + __device__ + static int nbThread() + { + return (gridDim.x * gridDim.y) * (blockDim.x * blockDim.y); + } + + __device__ + static int nbThreadX() + { + return gridDim.x * blockDim.x; + } + + __device__ + static int nbThreadY() + { + return gridDim.y * blockDim.y; + } + + __device__ + static int nbThreadBlock() + { + return blockDim.x * blockDim.y; + } + + + + /*--------------------------------------*\ + |* Attributs *| + \*-------------------------------------*/ + +private: + +}; + +#endif + +/*----------------------------------------------------------------------*\ + |* End *| + \*---------------------------------------------------------------------*/