summaryrefslogtreecommitdiffstats
path: root/src/Core/axpby.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/Core/axpby.c')
-rwxr-xr-xsrc/Core/axpby.c84
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
{