Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / BilatTools_Cuda / src / core / cudatools / header / device / Indice2D.h
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 (executable)
index 0000000..54b0c5a
--- /dev/null
@@ -0,0 +1,107 @@
+#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