diff options
author | Patrick Simianer <p@simianer.de> | 2014-06-15 03:50:12 +0200 |
---|---|---|
committer | Patrick Simianer <p@simianer.de> | 2014-06-15 03:50:12 +0200 |
commit | 258e1b92ebbfdebefabc120969ab87c3d8b75c3d (patch) | |
tree | ef4ab11fe0bf9d720cea23b35711358a8465feeb /c,cc/vector_addition1.cu | |
parent | cf3a29feb5887344b6633ead1b4b6d5657a15a4b (diff) |
old c,cc examples
Diffstat (limited to 'c,cc/vector_addition1.cu')
-rw-r--r-- | c,cc/vector_addition1.cu | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/c,cc/vector_addition1.cu b/c,cc/vector_addition1.cu new file mode 100644 index 0000000..9490ff3 --- /dev/null +++ b/c,cc/vector_addition1.cu @@ -0,0 +1,48 @@ +#include "stdio.h" + + +__global__ void add_arrays_gpu( float *in1, float *in2, float *out, int Ntot) +{ + int idx=blockIdx.x*blockDim.x+threadIdx.x; + if (idx < Ntot) + out[idx]=in1[idx]+in2[idx]; +} + + +int main(void) +{ + int N=10000, M=100000; + float **x = (float**) malloc(N*sizeof(float)); + float **x_d = (float**) malloc(N*sizeof(float)); + int i,j; + + for (i = 0; i < N; i++) { + x[i] = (float*) malloc(M*sizeof(float)); + cudaMalloc ((void **) &x_d[i], sizeof(float)*M); + for (j = 0; j < M; j++) { + x[i][j] = (float) j; + } + cudaMemcpy(x_d[i], x[i], sizeof(float)*M, cudaMemcpyHostToDevice); + } + + + /* Compute the execution configuration */ +// int block_size=256; + // dim3 dimBlock(block_size); + //dim3 dimGrid ( (N/dimBlock.x) + (!(N%dimBlock.x)?0:1) ); + + /** Add arrays a and b, store result in c */ + // add_arrays_gpu<<<dimGrid,dimBlock>>>(a_d, b_d, c_d, N); + + /* Copy data from deveice memory to host memory */ + //cudaMemcpy(c, c_d, sizeof(float)*N, cudaMemcpyDeviceToHost); + + /* Print c */ +/*for(i=0; i<N; i++) + printf(" c[%d]=%f\n",i,c[i]);*/ + + /* Free the memory */ +// free(a); free(b); free(c); +// cudaFree(a_d); cudaFree(b_d);cudaFree(c_d); +} + |