Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / BilatTools_Cuda / src / core / cudatools / header / host / Device.h
diff --git a/WCudaMSE/BilatTools_Cuda/src/core/cudatools/header/host/Device.h b/WCudaMSE/BilatTools_Cuda/src/core/cudatools/header/host/Device.h
new file mode 100755 (executable)
index 0000000..0c97843
--- /dev/null
@@ -0,0 +1,197 @@
+#ifndef DEVICE_H\r
+#define DEVICE_H\r
+\r
+#include "cuda_runtime.h"\r
+#include <string>\r
+\r
+using std::string;\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    Declaration                                     *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/**\r
+ * idDevice in [0,nbDevice-1]\r
+ *\r
+ * dim3.x\r
+ * dim3.y\r
+ * dim3.z\r
+ *\r
+ * sm=1.2 major=1 minor=2\r
+ */\r
+class Device\r
+    {\r
+       /*--------------------------------------*\\r
+        |*             Constructor             *|\r
+        \*-------------------------------------*/\r
+    public:\r
+\r
+       /*--------------------------------------*\\r
+        |*             Methodes                *|\r
+        \*-------------------------------------*/\r
+\r
+    public:\r
+\r
+       /*--------------*\\r
+       |* Wrapper      *|\r
+        \*-------------*/\r
+\r
+       /**\r
+        * wrapper for cudaDeviceSynchronize()\r
+        */\r
+       static void synchronize(void);\r
+\r
+       /*--------------*\\r
+       |* Tools      *|\r
+        \*-------------*/\r
+\r
+       /**\r
+        * message = nameKernel by example\r
+        */\r
+       static void checkKernelError(const char *message = NULL);\r
+\r
+       /**\r
+        * Booth:\r
+        *      assertDim(dg, db);\r
+        *      checkDimOPtimiser(dg, db);\r
+        */\r
+       static void checkDimError(const dim3& dg, const dim3& db);\r
+\r
+       static void checkDimOptimiser(const dim3& dg, const dim3& db);\r
+       static void assertDim(const dim3& dg, const dim3& db);\r
+\r
+       static int dim(const dim3& dim);\r
+       static int nbThread(const dim3& dg, const dim3& db);\r
+\r
+       static void print(const dim3& dg, const dim3& db);\r
+\r
+       /*--------------*\\r
+       |*      get      *|\r
+        \*-------------*/\r
+\r
+       static int getRuntimeVersion(void);\r
+       static int getDriverVersion(void);\r
+\r
+       static int getDeviceCount(void);\r
+       static int getDeviceId(void);\r
+\r
+       static cudaDeviceProp getDeviceProp(int idDevice);\r
+       static cudaDeviceProp getDeviceProp(void);\r
+\r
+       static string getNameSimple(int idDevice);\r
+       static string getNameSimple(void);\r
+\r
+       static string getName(int idDevice);\r
+       static string getName(void);\r
+\r
+       static dim3 getMaxGridDim(int idDevice);\r
+       static dim3 getMaxGridDim(void);\r
+\r
+       static dim3 getMaxBlockDim(int idDevice);\r
+       static dim3 getMaxBlockDim(void);\r
+\r
+       static int getWarpSize(int idDevice);\r
+       static int getWarpSize(void);\r
+\r
+       static int getMaxThreadPerBlock(int idDevice);\r
+       static int getMaxThreadPerBlock(void);\r
+\r
+       static int getMPCount(void);\r
+       static int getMPCount(int idDevice);\r
+\r
+       static int getCapacityMajor(int idDevice);\r
+       static int getCapacityMajor(void);\r
+\r
+       static int getCapacityMinor(int idDevice);\r
+       static int getCapacityMinor(void);\r
+\r
+       static int getAsyncEngineCount(int idDevice);\r
+       static int getAsyncEngineCount(void);\r
+\r
+       /*--------------*\\r
+       |* print       *|\r
+        \*-------------*/\r
+\r
+       static void printAll(void);\r
+       static void printAllSimple(void);\r
+\r
+       static void print(int idDevice);\r
+       static void print(void);\r
+\r
+       static void printCurrent(void);\r
+\r
+       /*--------------*\\r
+        |*     Is       *|\r
+        \*-------------*/\r
+\r
+       static bool isCuda(void);\r
+\r
+       static bool isFermi(int idDevice);\r
+       static bool isFermi(void);\r
+\r
+       static bool isKepler(int idDevice);\r
+       static bool isKepler(void);\r
+\r
+       static bool isUVAEnable(int idDevice);\r
+       static bool isUVAEnable(void);\r
+\r
+       static bool isAtomicShareMemoryEnable(int idDevice);\r
+       static bool isAtomicShareMemoryEnable(void);\r
+\r
+       static bool isHostMapMemoryEnable(int idDevice);\r
+       static bool isHostMapMemoryEnable(void);\r
+\r
+       static bool isECCEnable(int idDevice);\r
+       static bool isECCEnable(void);\r
+\r
+       static bool isAsyncEngine(int idDevice);\r
+       static bool isAsyncEngine(void);\r
+\r
+       /*--------------*\\r
+       |*      load     *|\r
+        \*-------------*/\r
+\r
+       /**\r
+        * Force load\r
+        */\r
+       static void loadCudaDriver(int deviceID, bool isMapMemoryEnable = true);\r
+       /**\r
+        * Force load\r
+        */\r
+       static void loadCudaDriver(bool isMapMemoryEnable = true);\r
+       /**\r
+        * Force load\r
+        */\r
+       static void loadCudaDriverAll(bool isMapMemoryEnable = true);\r
+\r
+       /*--------------*\\r
+       |*      p2p     *|\r
+        \*-------------*/\r
+\r
+       /**\r
+        * use delete[] ptrMatrixP2PCompatibility after usage\r
+        * raw major vectoriser\r
+        */\r
+       static int* p2pMatrixCompatibility(void);\r
+\r
+       /**\r
+        * to be used after HANDLE_ERROR(cudaGLSetGLDevice(deviceId));\r
+        */\r
+       static void p2pEnableALL(void);\r
+\r
+       static void printP2PmatrixCompatibility(void);\r
+\r
+       /*--------------------------------------*\\r
+       |*              Attributs               *|\r
+        \*-------------------------------------*/\r
+\r
+    private:\r
+\r
+    };\r
+\r
+#endif\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    End                                             *|\r
+ \*---------------------------------------------------------------------*/\r
+\r