annotate src/test/Cudasample_gpu.cu @ 408:8ee89eefbc6d

Fix twice
author Tatsuki IHA <innparusu@cr.ie.u-ryukyu.ac.jp>
date Wed, 06 Sep 2017 21:54:22 +0900
parents 2b41bd298fe8
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
283
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
1 #include <stdio.h>
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
2
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
3 #define SIZE_TEXT (sizeof(text)-1)
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
4 #define SIZE_END (sizeof(end)-1)
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
5
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
6 __device__ char text[] =
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
7 "__ bottles of beer on the wall, __ bottles of beer!\n"
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
8 "Take one down, and pass it around, ## bottles of beer on the wall!\n\n";
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
9
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
10 __device__ char end[] =
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
11 "01 bottle of beer on the wall, 01 bottle of beer.\n"
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
12 "Take one down and pass it around, no more bottles of beer on the wall.\n"
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
13 "\n"
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
14 "No more bottles of beer on the wall, no more bottles of beer.\n"
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
15 "Go to the store and buy some more, 99 bottles of beer on the wall.";
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
16
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
17
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
18 __global__
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
19 void bottle99(char *addr){
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
20 int x = threadIdx.x;
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
21 addr += x * SIZE_TEXT;
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
22 int bottle = 99 - x;
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
23 if (bottle == 1) {
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
24 for (int i=0; i<SIZE_END; i++) {
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
25 addr[i] = end[i];
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
26 }
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
27 addr[SIZE_END] = '\0';
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
28 } else {
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
29 char c1 = (bottle/10) + '0';
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
30 char c2 = (bottle%10) + '0';
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
31
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
32 char d1 = ((bottle-1)/10) + '0';
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
33 char d2 = ((bottle-1)%10) + '0';
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
34
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
35 for (int i=0; i<SIZE_TEXT; i++) {
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
36 int c = text[i];
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
37 if (c == '_') {
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
38 addr[i] = c1;
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
39 addr[i+1] = c2;
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
40 i++;
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
41 } else if (c == '#') {
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
42
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
43 addr[i] = d1;
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
44 addr[i+1] = d2;
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
45 i++;
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
46 } else {
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
47
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
48 addr[i] = text[i];
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
49 }
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
50 }
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
51 }
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
52 }
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
53
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
54 int main()
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
55 {
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
56 char *buffer;
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
57 char *d_buffer;
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
58
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
59 int size = SIZE_TEXT * 98 + SIZE_END + 1;
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
60
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
61 buffer = new char[size];
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
62 cudaMalloc((void**)&d_buffer, size);
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
63
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
64 bottle99<<<1, 99>>>(d_buffer);
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
65
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
66 cudaMemcpy(buffer, d_buffer, size, cudaMemcpyDeviceToHost);
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
67 cudaFree(d_buffer);
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
68
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
69 puts(buffer);
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
70 free(buffer);
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
71 }
2b41bd298fe8 add openCL test files
mir3636
parents:
diff changeset
72