From 8857db8abc751ce0e699c58770887223c5df1bd1 Mon Sep 17 00:00:00 2001 From: Nigel Barink Date: Sun, 29 Sep 2024 18:41:02 +0200 Subject: [PATCH] Adding a bunch of variables using cuda or cpu Signed-off-by: Nigel Barink --- .gitignore | 3 +++ README.md | 4 ++++ add.cpp | 31 +++++++++++++++++++++++++++++++ add_cuda.cu | 35 +++++++++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 add.cpp create mode 100644 add_cuda.cu diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f5519bd --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +*.exp +*.lib +*.exe diff --git a/README.md b/README.md new file mode 100644 index 0000000..b4098bd --- /dev/null +++ b/README.md @@ -0,0 +1,4 @@ +# Practicing CUDA +## Doing some parallel compute on the GPU + + diff --git a/add.cpp b/add.cpp new file mode 100644 index 0000000..5247552 --- /dev/null +++ b/add.cpp @@ -0,0 +1,31 @@ +#include +#include + +void add (int n, float* x, float* y){ + for(int i = 0; i< n; i++) + y[i] = x[i] +y[i]; +} + +int main (void) { + int N = 1<<20; + float *x = new float [N]; + float *y = new float [N]; + + for (int i = 0; i +#include + +__global__ +void add (int n, float* x, float* y){ + for(int i = 0; i< n; i++) + y[i] = x[i] +y[i]; +} + + +int main (void) { + int N = 1<<20; + float *x, *y; + cudaMallocManaged(&x, N*sizeof(float)); + cudaMallocManaged(&y, N*sizeof(float)); + + + for (int i = 0; i>>(N, x, y ); + cudaDeviceSynchronize(); + + float maxError= 0.0f; + for (int i =0; i < N; i++){ + maxError = fmax(maxError, fabs(y[i] -3.0f)); + } + std::cout << "Max error: " << maxError << std::endl; + + cudaFree(x); + cudaFree(y); + return 0; +}