summaryrefslogtreecommitdiff
path: root/ccc/vector_addition1.cu
diff options
context:
space:
mode:
Diffstat (limited to 'ccc/vector_addition1.cu')
-rw-r--r--ccc/vector_addition1.cu48
1 files changed, 48 insertions, 0 deletions
diff --git a/ccc/vector_addition1.cu b/ccc/vector_addition1.cu
new file mode 100644
index 0000000..9490ff3
--- /dev/null
+++ b/ccc/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);
+}
+