openmp parallelism
This commit is contained in:
parent
769eb75763
commit
4dd7fea3c5
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user