Rippling CUDA Warmup et Smart.
[GPU.git] / WCudaMSE / Student_Cuda_Image / src / cpp / core / 01_Rippling / moo / host / Rippling.cu
1 #include <iostream>\r
2 #include <assert.h>\r
3 \r
4 #include "Rippling.h"\r
5 #include "Device.h"\r
6 \r
7 using std::cout;\r
8 using std::endl;\r
9 \r
10 /*----------------------------------------------------------------------*\\r
11  |*                     Declaration                                     *|\r
12  \*---------------------------------------------------------------------*/\r
13 \r
14 /*--------------------------------------*\\r
15  |*             Imported                *|\r
16  \*-------------------------------------*/\r
17 \r
18 extern __global__ void rippling(uchar4* ptrDevPixels, int w, int h, float t);\r
19 \r
20 /*--------------------------------------*\\r
21  |*             Public                  *|\r
22  \*-------------------------------------*/\r
23 \r
24 /*--------------------------------------*\\r
25  |*             Private                 *|\r
26  \*-------------------------------------*/\r
27 \r
28 /*----------------------------------------------------------------------*\\r
29  |*                     Implementation                                  *|\r
30  \*---------------------------------------------------------------------*/\r
31 \r
32 /*--------------------------------------*\\r
33  |*             Public                  *|\r
34  \*-------------------------------------*/\r
35 \r
36 /*-------------------------*\\r
37  |*     Constructeur        *|\r
38  \*-------------------------*/\r
39 \r
40 Rippling::Rippling(int w, int h, float dt)\r
41     : w(w), h(h), dt(dt), t(0)\r
42     {\r
43     assert(w == h);\r
44 \r
45     // Tools\r
46     this->dg = dim3(8, 8, 1); // disons a optimiser\r
47     this->db = dim3(16, 16, 1); // disons a optimiser\r
48 \r
49     // Outputs\r
50     this->title = "Rippling Cuda";\r
51 \r
52     //print(dg, db);\r
53     Device::assertDim(dg, db);\r
54     }\r
55 \r
56 Rippling::~Rippling()\r
57     {\r
58     // rien\r
59     }\r
60 \r
61 /*-------------------------*\\r
62  |*     Methode             *|\r
63  \*-------------------------*/\r
64 \r
65 /**\r
66  * Override\r
67  */\r
68 void Rippling::animationStep()\r
69     {\r
70     this->t += dt;\r
71     }\r
72 \r
73 /**\r
74  * Override\r
75  */\r
76 void Rippling::runGPU(uchar4* ptrDevPixels)\r
77     {\r
78     rippling<<<dg,db>>>(ptrDevPixels, this->w, this->h, this->t);\r
79     }\r
80 \r
81 /*--------------*\\r
82  |*     get      *|\r
83  \*--------------*/\r
84 \r
85 /**\r
86  * Override\r
87  */\r
88 float Rippling::getT(void)\r
89     {\r
90     return t;\r
91     }\r
92 \r
93 /**\r
94  * Override\r
95  */\r
96 int Rippling::getW(void)\r
97     {\r
98     return w;\r
99     }\r
100 \r
101 /**\r
102  * Override\r
103  */\r
104 int Rippling::getH(void)\r
105     {\r
106     return h;\r
107     }\r
108 \r
109 /**\r
110  * Override\r
111  */\r
112 string Rippling::getTitle(void)\r
113     {\r
114     return title;\r
115     }\r
116 \r
117 /*--------------------------------------*\\r
118  |*             Private                 *|\r
119  \*-------------------------------------*/\r
120 \r
121 /*----------------------------------------------------------------------*\\r
122  |*                     End                                             *|\r
123  \*---------------------------------------------------------------------*/\r
124 \r