+#ifndef INDICE_2D\r
+#define INDICE_2D\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* Declaration *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |* Public *|\r
+ \*-------------------------------------*/\r
+\r
+class Indice2D\r
+ {\r
+\r
+ /*--------------------------------------*\\r
+ |* Constructor *|\r
+ \*-------------------------------------*/\r
+\r
+ public:\r
+\r
+ /*--------------------------------------*\\r
+ |* Methodes *|\r
+ \*-------------------------------------*/\r
+\r
+ public:\r
+\r
+ /*------------------*\\r
+ |* tid *|\r
+ \*-----------------*/\r
+\r
+ __device__\r
+ static int tid()\r
+ {\r
+ return (threadIdx.x + (blockDim.x * blockIdx.x)) + ((threadIdx.y + (blockDim.y * blockIdx.y)) * (gridDim.x * blockDim.x));\r
+ }\r
+\r
+ /**\r
+ * output in [0,nbThreadBlock()[\r
+ * return threadIdx.x+blockDim.x*threadIdx.y;\r
+ */\r
+ __device__\r
+ static int tidLocalBlock()\r
+ {\r
+ return threadIdx.x + blockDim.x * threadIdx.y;\r
+ }\r
+\r
+ /**\r
+ * idem tidLocalBlock\r
+ */\r
+ __device__\r
+ static int tidBlock()\r
+ {\r
+ return threadIdx.x + blockDim.x * threadIdx.y;\r
+ }\r
+\r
+ /**\r
+ * idem tidLocalBlock\r
+ */\r
+ __device__\r
+ static int tidLocal()\r
+ {\r
+ return threadIdx.x + blockDim.x * threadIdx.y;\r
+ }\r
+\r
+ /*------------------*\\r
+ |* nbThread *|\r
+ \*-------------------*/\r
+\r
+ __device__\r
+ static int nbThread()\r
+ {\r
+ return (gridDim.x * gridDim.y) * (blockDim.x * blockDim.y);\r
+ }\r
+\r
+ __device__\r
+ static int nbThreadX()\r
+ {\r
+ return gridDim.x * blockDim.x;\r
+ }\r
+\r
+ __device__\r
+ static int nbThreadY()\r
+ {\r
+ return gridDim.y * blockDim.y;\r
+ }\r
+\r
+ __device__\r
+ static int nbThreadBlock()\r
+ {\r
+ return blockDim.x * blockDim.y;\r
+ }\r
+\r
+\r
+\r
+ /*--------------------------------------*\\r
+ |* Attributs *|\r
+ \*-------------------------------------*/\r
+\r
+private:\r
+\r
+};\r
+\r
+#endif \r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* End *|\r
+ \*---------------------------------------------------------------------*/\r