You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							59 lines
						
					
					
						
							1.6 KiB
						
					
					
				
			
		
		
		
			
			
			
				
					
				
				
					
				
			
		
		
	
	
							59 lines
						
					
					
						
							1.6 KiB
						
					
					
				| #include <stdio.h> | |
|   | |
| const int N = 16;  | |
| const int blocksize = 16; | |
| 
 | |
| #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, __LINE__); } | |
| inline void gpuAssert(cudaError_t code, const char *file, int line, bool abort=true) | |
| { | |
|    if (code != cudaSuccess)  | |
|    { | |
|       fprintf(stderr,"GPUassert: %s %s %d\n", cudaGetErrorString(code), file, line); | |
|       if (abort) exit(code); | |
|    } | |
| } | |
| 
 | |
| __global__  | |
| void hello(char *a, int *b)  | |
| { | |
|     a[threadIdx.x] += b[threadIdx.x]; | |
| } | |
| 
 | |
| namespace stormcuda { | |
|     namespace graph { | |
|         void helloWorld() { | |
|             printf("CUDA TEST START\n"); | |
|             printf("Should print \"Hello World\"\n"); | |
| 
 | |
|             char a[N] = "Hello \0\0\0\0\0\0"; | |
|             int b[N] = {15, 10, 6, 0, -11, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; | |
|             char c[N] = "YELLO \0\0\0\0\0\0"; | |
| 
 | |
|             char *ad; | |
|             int *bd; | |
|             const int csize = N * sizeof(char); | |
|             const int isize = N * sizeof(int); | |
| 
 | |
|             printf("%s", a); | |
| 
 | |
|             cudaMalloc((void **) &ad, csize); | |
|             cudaMalloc((void **) &bd, isize); | |
|             cudaMemcpy(ad, a, csize, cudaMemcpyHostToDevice); | |
|             cudaMemcpy(bd, b, isize, cudaMemcpyHostToDevice); | |
| 
 | |
|             dim3 dimBlock(blocksize, 1); | |
|             dim3 dimGrid(1, 1); | |
|             hello << < dimGrid, dimBlock >> > (ad, bd); | |
| 
 | |
|             gpuErrchk(cudaPeekAtLastError()); | |
|             gpuErrchk(cudaDeviceSynchronize()); | |
| 
 | |
|             cudaMemcpy(c, ad, csize, cudaMemcpyDeviceToHost); | |
|             cudaFree(ad); | |
|             cudaFree(bd); | |
| 
 | |
|             printf("%s\n", c); | |
|             printf("CUDA TEST END\n"); | |
|         } | |
|     } | |
| }
 |