Rippling CUDA Warmup et Smart.
[GPU.git] / WCudaMSE / Student_Cuda_Image / src / cpp / core / 01_Rippling / moo / device / ripplingDevice.cu
1 #include <iostream>\r
2 \r
3 #include "Indice2D.h"\r
4 #include "IndiceTools.h"\r
5 #include "cudaTools.h"\r
6 #include "Device.h"\r
7 \r
8 #include "RipplingMath.h"\r
9 \r
10 using std::cout;\r
11 using std::endl;\r
12 \r
13 /*----------------------------------------------------------------------*\\r
14  |*                     Declaration                                     *|\r
15  \*---------------------------------------------------------------------*/\r
16 \r
17 /*--------------------------------------*\\r
18  |*             Imported                *|\r
19  \*-------------------------------------*/\r
20 \r
21 /*--------------------------------------*\\r
22  |*             Public                  *|\r
23  \*-------------------------------------*/\r
24 \r
25 __global__ void rippling(uchar4* ptrDevPixels, int w, int h, float t);\r
26 \r
27 /*--------------------------------------*\\r
28  |*             Private                 *|\r
29  \*-------------------------------------*/\r
30 \r
31 /*----------------------------------------------------------------------*\\r
32  |*                     Implementation                                  *|\r
33  \*---------------------------------------------------------------------*/\r
34 \r
35 /*--------------------------------------*\\r
36  |*             Public                  *|\r
37  \*-------------------------------------*/\r
38 \r
39 /*--------------------------------------*\\r
40  |*             Private                 *|\r
41  \*-------------------------------------*/\r
42 \r
43 __global__ void rippling(uchar4* ptrDevPixels, int w, int h, float t)\r
44     {\r
45     RipplingMath ripplingMath(w, h);\r
46 \r
47     const int TID = Indice2D::tid();\r
48     const int NB_THREAD = Indice2D::nbThread();\r
49 \r
50     const int WH = w * h;\r
51 \r
52     uchar4 color;\r
53     color.z = 255;\r
54 \r
55     int pixelI;\r
56     int pixelJ;\r
57 \r
58     int s = TID;\r
59     while (s < WH)\r
60         {\r
61         IndiceTools::toIJ(s, w, &pixelI, &pixelJ); // update (pixelI, pixelJ)\r
62 \r
63         ripplingMath.color(pixelI, pixelJ, t, color);   // update color\r
64         ptrDevPixels[s] = color;\r
65 \r
66         s += NB_THREAD;\r
67         }\r
68     }\r
69 \r
70 /*----------------------------------------------------------------------*\\r
71  |*                     End                                             *|\r
72  \*---------------------------------------------------------------------*/\r
73 \r