openmp parallelism
This commit is contained in:
		| @@ -1,5 +1,6 @@ | |||||||
| #include <math.h> | #include <math.h> | ||||||
| #include "sparse_matrix.h" | #include "sparse_matrix.h" | ||||||
|  | #include <omp.h> | ||||||
|  |  | ||||||
| void init_vector(double *vector, int size, double value) { | void init_vector(double *vector, int size, double value) { | ||||||
|     for (int i = 0; i < size; ++i) { |     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 diff_norm_vector(double *vector1, double *vector2, int size) { | ||||||
|     double res = 0.0; |     double res = 0.0; | ||||||
|  |     #pragma omp parallel for reduction(+:res) | ||||||
|     for (int i = 0; i < size; ++i) { |     for (int i = 0; i < size; ++i) { | ||||||
|         res += fabs(vector1[i] - vector2[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 vec_product(const double* v1, const double* v2, int N) { | ||||||
|     double sum = 0.0; |     double sum = 0.0; | ||||||
|  |     #pragma omp parallel for reduction(+:sum) | ||||||
|     for (int i = 0; i < N; i++) { |     for (int i = 0; i < N; i++) { | ||||||
|         sum += v1[i] * v2[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) { | void normalize_vector(double* v, int N) { | ||||||
|     double sum = 0.0; |     double sum = 0.0; | ||||||
|  |     #pragma omp parallel for reduction(+:sum) | ||||||
|     for (int i = 0; i < N; i++) { |     for (int i = 0; i < N; i++) { | ||||||
|         sum += v[i]; |         sum += v[i]; | ||||||
|     } |     } | ||||||
|  |     #pragma omp parallel for | ||||||
|     for (int i = 0; i < N; i++) { |     for (int i = 0; i < N; i++) { | ||||||
|         v[i] /= sum; |         v[i] /= sum; | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user