Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / Student_Cuda_Image / src / cpp / core / 00_Rippling_warmup / rippling0FreeGL.cpp
diff --git a/WCudaMSE/Student_Cuda_Image/src/cpp/core/00_Rippling_warmup/rippling0FreeGL.cpp b/WCudaMSE/Student_Cuda_Image/src/cpp/core/00_Rippling_warmup/rippling0FreeGL.cpp
new file mode 100755 (executable)
index 0000000..b0aaa32
--- /dev/null
@@ -0,0 +1,87 @@
+#include <iostream>\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 launchKernelRippling0(uchar4* ptrDevPixels, int w, int h, float t);\r
+\r
+/*--------------------------------------*\\r
+ |*            Public                  *|\r
+ \*-------------------------------------*/\r
+\r
+int rippling0FreeGL(int itmax);\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 rippling0FreeGL(int itmax)\r
+    {\r
+    cout<<"\n[Rippling0] : 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 / 10;\r
+    Chronos chrono;\r
+\r
+    while (i < itmax)\r
+       {\r
+       launchKernelRippling0(ptrDevImage, w, h, t);\r
+       Device::checkKernelError("Rippling0");\r
+       Device::synchronize();\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