#include <iostream>\r
#include <stdlib.h>\r
#include <string.h>\r
+using namespace std;\r
\r
#include "Device.h"\r
#include "cudaTools.h"\r
+#include "Chronos.h"\r
\r
-using std::cout;\r
-using std::endl;\r
-using std::string;\r
+#include "RayTracingProvider.h"\r
+#include "RayTracingParams.h"\r
\r
/*----------------------------------------------------------------------*\\r
|* Declaration *|\r
|* Implementation *|\r
\*---------------------------------------------------------------------*/\r
\r
+void run(uchar4* ptrDevPixels, int dw, int dh, int dg, int db, int nbFrame)\r
+ {\r
+ cout << "Raytracing Without GL ";\r
+#if CURRENT_MEMORY_MODEL == MEMORY_MODEL_GLOBAL\r
+ cout << "(Global memory)" << endl;\r
+#elif CURRENT_MEMORY_MODEL == MEMORY_MODEL_CONSTANT\r
+ cout << "(Constant memory)" << endl;\r
+#elif CURRENT_MEMORY_MODEL == MEMORY_MODEL_SHARED\r
+ cout << "(Shared memory)" << endl;\r
+#endif\r
+\r
+ cout << "Nb frames: " << nbFrame << endl;\r
+\r
+ RayTracing* rayTracing = RayTracingProvider::create(dw, dh, dg, db);\r
+\r
+ Chronos chronos;\r
+ chronos.start();\r
+\r
+ for (int i = 0; i < nbFrame; i++)\r
+ rayTracing->runGPU(ptrDevPixels);\r
+\r
+ HANDLE_ERROR(cudaDeviceSynchronize());\r
+\r
+ chronos.stop();\r
+\r
+ cout << "Time: " << chronos << endl;\r
+ cout << "-------------------" << endl;\r
+ }\r
+\r
/*--------------------------------------*\\r
|* Public *|\r
\*-------------------------------------*/\r
\r
int mainFreeGL(void)\r
{\r
- cout << "\n[FPS] : Free GL, please wait ..." << endl;\r
+ const int NB_FRAME_TO_RENDER = 100;\r
+ const int dw = 16 * 50;\r
+ const int dh = 16 * 50;\r
+\r
+ // dg : 8 -> 128.\r
+ const int dgStart = 8;\r
+ const int dgStop = 128;\r
\r
- rippling0FreeGL(1000); // bad technique\r
+ // db : 8 -> 32\r
+ const int dbStart = 8;\r
+ const int dbStop = 32;\r
+\r
+ uchar4* ptrDevPixels;\r
+ HANDLE_ERROR(cudaMalloc(&ptrDevPixels, dw * dh * sizeof(uchar4)));\r
+\r
+ run(ptrDevPixels, dw, dh, 32, 32, NB_FRAME_TO_RENDER);\r
+ return EXIT_SUCCESS;\r
\r
- // TODO : add other tp here ...\r
+ for (int dg = dgStart; dg <= dgStop; dg *= 2)\r
+ for (int db = dbStart; db <= dbStop; db *= 2)\r
+ run(ptrDevPixels, dw, dh, dg, db, NB_FRAME_TO_RENDER);\r
\r
return EXIT_SUCCESS;\r
}\r