Browse Source
Integrate CUDA into buildsystem and add example function
Integrate CUDA into buildsystem and add example function
Former-commit-id: 2f5acf8dcd
tempestpy_adaptions
svkurowski
10 years ago
4 changed files with 112 additions and 0 deletions
@ -0,0 +1,58 @@ |
|||||
|
#include "cuda/kernels/graph.h" |
||||
|
|
||||
|
#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]; |
||||
|
} |
||||
|
|
||||
|
void helloWorldCuda() |
||||
|
{ |
||||
|
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"); |
||||
|
} |
@ -0,0 +1,6 @@ |
|||||
|
#ifndef CUDA_KERNELS_GRAPH_H |
||||
|
#define CUDA_KERNELS_GRAPH_H |
||||
|
|
||||
|
void helloWorldCuda(); |
||||
|
|
||||
|
#endif /* CUDA_KERNELS_GRAPH_H */ |
Write
Preview
Loading…
Cancel
Save
Reference in new issue