Commit 80d02718 authored by Fabio Roberto Vitello's avatar Fabio Roberto Vitello
Browse files

Wrapped code into functions

parent f4fec858
Loading
Loading
Loading
Loading
+311 KiB (327 KiB)

File changed.

No diff preview for this file type.

+2 −2
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ cblas_daxpy(const int N, const double alpha, const double *X,

void
cblas_dcopy(const long int N, const double *X, const int incX, 
            double *Y, const int incY);
            double *Y, const int incY, int ntasks=0);


double
@@ -58,7 +58,7 @@ cblas_ddot(const int N, const double *X, const int incX,
           const double *Y, const int incY);

double
cblas_dnrm2(const long int N, const double *X, const int incX);
cblas_dnrm2(const long int N, const double *X, const int incX, int ntasks=0);

void
cblas_dscal(const long int N, const double alpha, double *X, const int incX);
+1340 −1192

File changed.

Preview size limit exceeded, changes collapsed.

+41 −25
Original line number Diff line number Diff line
@@ -26,6 +26,10 @@
*/
#include <stdio.h>
#include <stdlib.h>
#define MIN(a,b) (((a)<(b))?(a):(b))
#define MAX(a,b) (((a)>(b))?(a):(b))


/*!
   \file

@@ -95,7 +99,7 @@ cblas_daxpy( const int N, const double alpha, const double *X,
*/
void
cblas_dcopy( const long int N, const double *X,
             const int incX, double *Y, const int incY)
             const int incX, double *Y, const int incY, int ntasks)
{
  long int i,ix,iy;
//  int ix = OFFSET(N, incX);
@@ -107,17 +111,24 @@ cblas_dcopy( const long int N, const double *X,
    else iy=((N) - 1) * (-(incY));


#pragma omp parallel shared(ix, iy)
//#pragma omp parallel shared(ix, iy)
//#pragma omp task shared(ix, iy)
{
    
    
   long ixThread,iyThread;
   long ixThreadOffset=ix, iyThreadOffset=iy;
#pragma omp for
//#pragma omp for
  for (i = 0; i < N; i++) {
      //printf("Inside task %d\n", i);
      ixThread=ixThreadOffset+incX*i;
      iyThread=iyThreadOffset+incY*i;
      Y[iyThread]  = X[ixThread];
  }
   

}//end pragma
//#pragma omp taskwait
}

/*!
@@ -157,7 +168,7 @@ cblas_ddot( const int N, const double *X,
*/

double
cblas_dnrm2( const long int N, const double *X, const int incX) 
cblas_dnrm2( const long int N, const double *X, const int incX, int ntasks)
{
  double
      scale = 0.0,
@@ -190,9 +201,9 @@ cblas_dnrm2( const long int N, const double *X, const int incX)
  return scale * sqrt(ssq);
}


//FV_ not used ??
double
cblas_dnrm21( const long int N, const double *X, const int incX) 
cblas_dnrm21( const long int N, const double *X, const int incX, int ntasks=0) 
{
  double
       ssq[100], ssqFinal=0;
@@ -204,21 +215,25 @@ cblas_dnrm21( const long int N, const double *X, const int incX)

  if (N <= 0 || incX <= 0) return 0;
  else if (N == 1)         return fabs(X[0]);
#pragma omp parallel private(tid,nthreads,ix) 

////#pragma omp parallel private(tid,nthreads,ix) 
{
    
    /*
#ifdef OMP
        tid = omp_get_thread_num();
        nthreads = omp_get_num_threads();
        if(nthreads>100) exit(1);
#endif
    */
  
  
#pragma omp for
////#pragma omp for
  for (long i = 0; i < N; i++) {
       ix=incX*i;
       ssq[tid] += X[ix]*X[ix];
  }
}  // pragma
}
// pragma

for(int j=0;j<100;j++)
	ssqFinal+=ssq[j];
@@ -226,7 +241,7 @@ for(int j=0;j<100;j++)
  return sqrt(ssqFinal);
}


//FV_ not used ??
double
cblas_dnrm22( const long int N, const double *X, const int incX) 
{
@@ -243,14 +258,14 @@ cblas_dnrm22( const long int N, const double *X, const int incX)

  if (N <= 0 || incX <= 0) return 0;
  else if (N == 1)         return fabs(X[0]);
#pragma omp parallel private(ix)
{
#ifdef OMP
	tid = omp_get_thread_num();
        nthreads = omp_get_num_threads();
        if(nthreads>100) exit(1);
#endif
#pragma omp for
///#pragma omp parallel private(ix)
////{
////#ifdef OMP
////	tid = omp_get_thread_num();
////        nthreads = omp_get_num_threads();
////        if(nthreads>100) exit(1);
////#endif
////#pragma omp for
  for (i = 0; i < N; i++) {
  	  ix=incX*i;
      const double x = X[ix];
@@ -269,7 +284,7 @@ cblas_dnrm22( const long int N, const double *X, const int incX)
  }
  
  resultSqr[tid]=(scale[tid] * sqrt(ssq[tid]))*(scale[tid] * sqrt(ssq[tid]));
}// pragma
////}// pragma

double resultFinal=0.0;
for(int j=0;j<100;j++) resultFinal+=resultSqr[j];
@@ -301,6 +316,7 @@ void cblas_dscal(const long int N, const double alpha, double *X, const int incX
    }
}

//FV_ not used ??
void
cblas_dscal1(const long int N, const double alpha, double *X, const int incX)
{
@@ -312,14 +328,14 @@ cblas_dscal1(const long int N, const double alpha, double *X, const int incX)
    if (incX > 0) ix=0;
    else ix=((N) - 1) * (-(incX));
    
#pragma omp parallel shared(ix)
{
////#pragma omp parallel shared(ix)
/////{
   long ixThread;
   long ixThreadOffset=ix;
#pragma omp for
/////#pragma omp for
    for (i = 0; i < N; i++) {
    	ixThread=ixThreadOffset+incX*i;
        X[ixThread] *= alpha;
    }
}// end pragma    
/////}// end pragma    
}

memRequest.c

100755 → 100644
+0 −0

File mode changed from 100755 to 100644.

Loading