From 4dd7fea3c556a23832eb6a0c1d015e120e19d791 Mon Sep 17 00:00:00 2001 From: Sam Hadow Date: Wed, 14 May 2025 19:01:46 +0200 Subject: [PATCH] openmp parallelism --- src/vector.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/vector.c b/src/vector.c index 9f770c5..27cd36d 100644 --- a/src/vector.c +++ b/src/vector.c @@ -1,5 +1,6 @@ #include #include "sparse_matrix.h" +#include void init_vector(double *vector, int size, double value) { for (int i = 0; i < size; ++i) { @@ -9,6 +10,7 @@ void init_vector(double *vector, int size, double value) { double diff_norm_vector(double *vector1, double *vector2, int size) { double res = 0.0; + #pragma omp parallel for reduction(+:res) for (int i = 0; i < size; ++i) { res += fabs(vector1[i] - vector2[i]); } @@ -26,6 +28,7 @@ void generate_f(const SparseMatrix *matrix, double *res) { double vec_product(const double* v1, const double* v2, int N) { double sum = 0.0; + #pragma omp parallel for reduction(+:sum) for (int i = 0; i < N; i++) { sum += v1[i] * v2[i]; } @@ -34,9 +37,11 @@ double vec_product(const double* v1, const double* v2, int N) { void normalize_vector(double* v, int N) { double sum = 0.0; + #pragma omp parallel for reduction(+:sum) for (int i = 0; i < N; i++) { sum += v[i]; } + #pragma omp parallel for for (int i = 0; i < N; i++) { v[i] /= sum; }