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");
							 | 
						|
								        }
							 | 
						|
								    }
							 | 
						|
								}
							 |