diff options
Diffstat (limited to 'src/Core/axpby.c')
-rwxr-xr-x | src/Core/axpby.c | 84 |
1 files changed, 5 insertions, 79 deletions
diff --git a/src/Core/axpby.c b/src/Core/axpby.c index c4d162d..54a597f 100755 --- a/src/Core/axpby.c +++ b/src/Core/axpby.c @@ -1,87 +1,12 @@ #include "axpby.h" -DLL_EXPORT int padd(float * x, float * y, float * out, long size){ +DLL_EXPORT int saxpby(float * x, float * y, float * out, float a, float b, long size, int nThreads){ long i = 0; -#pragma omp parallel for - for (i=0; i < size; i++) - { - *(out + i ) = *(x + i) + *(y+i); - } - return 0; -} - -DLL_EXPORT int psubtract(float * x, float * y, float * out, long size){ - long i = 0; -#pragma omp parallel -{ -//#pragma omp single -//{ -// printf("current number of threads %d\n", omp_get_num_threads()); -//} -#pragma omp for - for (i=0; i < size; i++) - { - *(out + i ) = *(x + i) - *(y+i); - } -} - return 0; - -} - -DLL_EXPORT int pmultiply(float * x, float * y, float * out, long size){ - long i = 0; -#pragma omp parallel for - for (i=0; i < size; i++) - { - *(out + i ) = *(x + i) * *(y+i); - } - return 0; -} - -DLL_EXPORT int pdivide(float * x, float * y, float * out, long size, float default_value) -{ - long i = 0; -#pragma omp parallel for - for (i=0; i < size; i++) - { - *(out + i ) = *(y+i) ? *(x + i) / *(y+i) : default_value; - } - return 0; -} -DLL_EXPORT int ppower(float * x, float * y, float * out, long size){ - long i = 0; -#pragma omp parallel for - for (i=0; i < size; i++) - { - *(out + i ) = (float)pow(*(x + i) , *(y+i)) ; - } - return 0; -} - -DLL_EXPORT int pminimum(float * x, float * y, float * out, long size){ - long i = 0; -#pragma omp parallel for - for (i=0; i < size; i++) - { - *(out + i ) = *(y+i) > (*x+i) ? *(x + i) : *(y+i); - } - return 0; -} - -DLL_EXPORT int pmaximum(float * x, float * y, float * out, long size) { - long i = 0; -#pragma omp parallel for - for (i = 0; i < size; i++) - { - *(out + i) = *(y + i) < (*x + i) ? *(x + i) : *(y + i); - } - return 0; -} + int nThreads_initial; + threads_setup(nThreads, &nThreads_initial); -DLL_EXPORT int saxpby(float * x, float * y, float * out, float a, float b, long size){ - long i = 0; #pragma omp parallel { #pragma omp for @@ -90,11 +15,12 @@ DLL_EXPORT int saxpby(float * x, float * y, float * out, float a, float b, long *(out + i ) = a * ( *(x + i) ) + b * ( *(y + i) ); } } + omp_set_num_threads(nThreads_initial); return 0; } -DLL_EXPORT int daxpby(double * x, double * y, double * out, double a, double b, long size) { +DLL_EXPORT int daxpby(double * x, double * y, double * out, double a, double b, long size, int nThreads) { long i = 0; #pragma omp parallel { |