Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / Tuto_Image_Cuda / src / cpp / core / 00_Vague_warmup / vague0FreeGL.cpp
diff --git a/WCudaMSE/Tuto_Image_Cuda/src/cpp/core/00_Vague_warmup/vague0FreeGL.cpp b/WCudaMSE/Tuto_Image_Cuda/src/cpp/core/00_Vague_warmup/vague0FreeGL.cpp
new file mode 100755 (executable)
index 0000000..907c40b
--- /dev/null
@@ -0,0 +1,88 @@
+#include <iostream>\r
+\r
+#include "cudaTools.h"\r
+#include "Device.h"\r
+#include "MathTools.h"\r
+\r
+#include "Chronos.h"\r
+\r
+using std::cout;\r
+using std::endl;\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    Declaration                                     *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Imported                *|\r
+ \*-------------------------------------*/\r
+\r
+extern void launchKernelVague0(uchar4* ptrDevPixels, int w, int h, float t);\r
+\r
+/*--------------------------------------*\\r
+ |*            Public                  *|\r
+ \*-------------------------------------*/\r
+\r
+int vague0FreeGL(int itmax=1000);\r
+\r
+/*--------------------------------------*\\r
+ |*            Private                 *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    Implementation                                  *|\r
+ \*---------------------------------------------------------------------*/\r
+\r
+/*--------------------------------------*\\r
+ |*            Public                  *|\r
+ \*-------------------------------------*/\r
+\r
+/**\r
+ * Hyp: itmax suffisamment grand pour que timeElapse soit significatif\r
+ */\r
+int vague0FreeGL(int itmax)\r
+    {\r
+    cout<<"\n[Vague0] : FreeGL running ..."<<endl;\r
+\r
+    int h = 16 * 60;\r
+    int w = h;\r
+\r
+    uchar4* ptrDevImage;\r
+    size_t size = w * h * sizeof(uchar4);\r
+    HANDLE_ERROR(cudaMalloc((void**) &ptrDevImage, size));\r
+    HANDLE_ERROR(cudaMemset(ptrDevImage, 0, size));\r
+\r
+    int i = 0;\r
+    float t = 0;\r
+    float dt = 2 * PI / 10000;\r
+    Chronos chrono;\r
+\r
+    while (i < itmax)\r
+       {\r
+       launchKernelVague0(ptrDevImage, w, h, t); // assynchrone!\r
+       Device::checkKernelError("Vague0");\r
+       Device::synchronize(); // Important!\r
+\r
+       t += dt;\r
+       i++;\r
+       }\r
+\r
+    chrono.stop();\r
+    HANDLE_ERROR(cudaFree(ptrDevImage));\r
+\r
+    double timeElapseS = chrono.getDeltaTime();\r
+    int fps = itmax / timeElapseS;\r
+\r
+    cout<<"fps : "<<fps<<endl;\r
+\r
+    return fps;\r
+    }\r
+\r
+/*--------------------------------------*\\r
+ |*            Private                 *|\r
+ \*-------------------------------------*/\r
+\r
+/*----------------------------------------------------------------------*\\r
+ |*                    End                                             *|\r
+ \*---------------------------------------------------------------------*/\r
+\r