+#include <iostream>\r
+#include <stdio.h>\r
+#include <stdlib.h>\r
+#include <string>\r
+\r
+#include "cudaTools.h"\r
+#include "StringTools.h"\r
+\r
+using std::string;\r
+using std::cout;\r
+using std::cerr;\r
+using std::endl;\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* Declaration *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |* Private *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* Implementation *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |* Public *|\r
+ \*-------------------------------------*/\r
+\r
+/**\r
+ * Cuda\r
+ */\r
+void cudaHandleError(cudaError_t error, const char *file, int line)\r
+ {\r
+ if (error != cudaSuccess)\r
+ {\r
+ cerr << endl << "[CUDA ERROR] : " << cudaGetErrorString(error) << " in " << file << " at ligne " << line << endl;\r
+ exit (EXIT_FAILURE);\r
+ }\r
+ }\r
+\r
+/**\r
+ * Curand\r
+ */\r
+void cudaHandleError(curandStatus_t statut, const char *file, int line)\r
+ {\r
+ if (statut != CURAND_STATUS_SUCCESS)\r
+ {\r
+ cerr << endl << "[CURAND ERROR] : " << statut << " in " << file << " at ligne " << line << endl;\r
+ exit (EXIT_FAILURE);\r
+ }\r
+ }\r
+\r
+/**\r
+ * Cublas\r
+ */\r
+void cudaHandleError(cublasStatus_t cublasStatus, const char *file, int line)\r
+ {\r
+\r
+ if (cublasStatus != CUBLAS_STATUS_SUCCESS)\r
+ {\r
+ switch (cublasStatus)\r
+ {\r
+ case CUBLAS_STATUS_INVALID_VALUE:\r
+ cerr << endl << "[CUBLAS ERROR] : CUBLAS_STATUS_INVALID_VALUE " << " in " << file << " at line " << line << endl;\r
+ break;\r
+ case CUBLAS_STATUS_NOT_INITIALIZED:\r
+ cerr << endl << "[CUBLAS ERROR] : CUBLAS_STATUS_NOT_INITIALIZED " << " in " << file << " at line " << line << endl;\r
+ break;\r
+ case CUBLAS_STATUS_INTERNAL_ERROR:\r
+ cerr << endl << "[CUBLAS ERROR] : CUBLAS_STATUS_INTERNAL_ERROR " << " in " << file << " at line " << line << endl;\r
+ break;\r
+ case CUBLAS_STATUS_MAPPING_ERROR:\r
+ cerr << endl << "[CUBLAS ERROR] : CUBLAS_STATUS_MAPPING_ERROR " << " in " << file << " at line " << line << endl;\r
+ break;\r
+\r
+ case CUBLAS_STATUS_ALLOC_FAILED:\r
+ cerr << endl << "[CUBLAS ERROR] : CUBLAS_STATUS_ALLOC_FAILED " << " in " << file << " at line " << line << endl;\r
+ break;\r
+ case CUBLAS_STATUS_ARCH_MISMATCH:\r
+ cerr << endl << "[CUBLAS ERROR] : CUBLAS_STATUS_ARCH_MISMATCH" << " in " << file << " at line " << line << endl;\r
+ break;\r
+ case CUBLAS_STATUS_EXECUTION_FAILED:\r
+ cerr << endl << "[CUBLAS ERROR] : CUBLAS_STATUS_EXECUTION_FAILED" << " in " << file << " at line " << line << endl;\r
+ break;\r
+ default:\r
+ cerr << endl << "[CUBLAS ERROR] : Unknown error !" << " in " << file << " at line " << line << endl;\r
+ break;\r
+ }\r
+ exit (EXIT_FAILURE);\r
+ }\r
+ }\r
+\r
+/*--------------------------------------*\\r
+ |* Private *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |* End *|\r
+ \*---------------------------------------------------------------------*/\r
+\r