Ajout de l'ensemble du workspace.
[GPU.git] / WCudaMSE / Student_Cuda / src / cpp / core / 01_Hello / 01_helloCuda.cu
1 // Attention : Extension .cu\r
2 \r
3 #include <iostream>\r
4 #include "cudaTools.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 /*--------------------------------------*\\r
19  |*             Public                  *|\r
20  \*-------------------------------------*/\r
21 \r
22 __host__  bool helloCuda(void); //__host__ facultatif\r
23 \r
24 /*--------------------------------------*\\r
25  |*             Private                 *|\r
26  \*-------------------------------------*/\r
27 \r
28 __global__ static void kernelHello(void);\r
29 __device__ static void doSomethingHello(void);\r
30 \r
31 /*----------------------------------------------------------------------*\\r
32  |*                     Implementation                                  *|\r
33  \*---------------------------------------------------------------------*/\r
34 \r
35 /*--------------------------------------*\\r
36  |*             Public                  *|\r
37  \*-------------------------------------*/\r
38 \r
39 /**\r
40  * resumer commande cuda:\r
41  * http://developer.download.nvidia.com/compute/cuda/4_2/rel/toolkit/docs/online/index.html\r
42  */\r
43 __host__ bool helloCuda(void) //__host__ facultatif\r
44     {\r
45     cout << endl << "[Hello Cuda 1]" << endl;\r
46 \r
47     // Specifier nb thread : ici 1 thread au total !\r
48     dim3 dg = dim3(1, 1, 1);\r
49     dim3 db = dim3(1, 1, 1);\r
50 \r
51     // Debug\r
52     //Device::print(dg, db);\r
53      Device::checkDimError(dg,db);\r
54 \r
55     kernelHello<<<dg,db>>>();  // asynchrone !!\r
56     Device::checkKernelError("kernelHello"); // facultatif\r
57 \r
58     return true;\r
59     }\r
60 \r
61 /*--------------------------------------*\\r
62  |*             Private                 *|\r
63  \*-------------------------------------*/\r
64 \r
65 \r
66 /**\r
67  * output : void\r
68  */\r
69 __global__ void kernelHello(void)\r
70     {\r
71     doSomethingHello();\r
72     }\r
73 \r
74 /**\r
75  * Can be call only by device\r
76  * inliner by nvcc (nvidia compiler)\r
77  */\r
78 __device__ void doSomethingHello(void)\r
79     {\r
80     // rien\r
81     }\r
82 \r
83 /*----------------------------------------------------------------------*\\r
84  |*                     End                                             *|\r
85  \*---------------------------------------------------------------------*/\r
86 \r