diff options
Diffstat (limited to 'ccc/vector_addition.cu')
-rw-r--r-- | ccc/vector_addition.cu | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/ccc/vector_addition.cu b/ccc/vector_addition.cu deleted file mode 100644 index 4f16bc3..0000000 --- a/ccc/vector_addition.cu +++ /dev/null @@ -1,61 +0,0 @@ -#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) -{ - /* pointers to host memory */ - float *a, *b, *c; - /* pointers to device memory */ - float *a_d, *b_d, *c_d; - int N=100000000; - int i; - - /* Allocate arrays a, b and c on host*/ - a = (float*) malloc(N*sizeof(float)); - b = (float*) malloc(N*sizeof(float)); - c = (float*) malloc(N*sizeof(float)); - - /* Allocate arrays a_d, b_d and c_d on device*/ - cudaMalloc ((void **) &a_d, sizeof(float)*N); - cudaMalloc ((void **) &b_d, sizeof(float)*N); - cudaMalloc ((void **) &c_d, sizeof(float)*N); - - /* Initialize arrays a and b */ - for (i=0; i<N; i++) { - a[i]= (float) i; - b[i]=(float) -i; - } - - - /* Copy data from host memory to device memory */ - cudaMemcpy(a_d, a, sizeof(float)*N, cudaMemcpyHostToDevice); - cudaMemcpy(b_d, b, sizeof(float)*N, 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); -} - |