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 Original line Diff line number Diff line
@@ -50,7 +50,7 @@ cblas_daxpy(const int N, const double alpha, const double *X,


void
void
cblas_dcopy(const long int N, const double *X, const int incX, 
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
double
@@ -58,7 +58,7 @@ cblas_ddot(const int N, const double *X, const int incX,
           const double *Y, const int incY);
           const double *Y, const int incY);


double
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
void
cblas_dscal(const long int N, const double alpha, double *X, const int incX);
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 Original line Diff line number Diff line
@@ -26,6 +26,10 @@
*/
*/
#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdlib.h>
#define MIN(a,b) (((a)<(b))?(a):(b))
#define MAX(a,b) (((a)>(b))?(a):(b))


/*!
/*!
   \file
   \file


@@ -95,7 +99,7 @@ cblas_daxpy( const int N, const double alpha, const double *X,
*/
*/
void
void
cblas_dcopy( const long int N, const double *X,
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;
  long int i,ix,iy;
//  int ix = OFFSET(N, incX);
//  int ix = OFFSET(N, incX);
@@ -107,17 +111,24 @@ cblas_dcopy( const long int N, const double *X,
    else iy=((N) - 1) * (-(incY));
    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 ixThread,iyThread;
   long ixThreadOffset=ix, iyThreadOffset=iy;
   long ixThreadOffset=ix, iyThreadOffset=iy;
#pragma omp for
//#pragma omp for
  for (i = 0; i < N; i++) {
  for (i = 0; i < N; i++) {
      //printf("Inside task %d\n", i);
      ixThread=ixThreadOffset+incX*i;
      ixThread=ixThreadOffset+incX*i;
      iyThread=iyThreadOffset+incY*i;
      iyThread=iyThreadOffset+incY*i;
      Y[iyThread]  = X[ixThread];
      Y[iyThread]  = X[ixThread];
  }
  }
   

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


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


double
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
  double
      scale = 0.0,
      scale = 0.0,
@@ -190,9 +201,9 @@ cblas_dnrm2( const long int N, const double *X, const int incX)
  return scale * sqrt(ssq);
  return scale * sqrt(ssq);
}
}



//FV_ not used ??
double
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
  double
       ssq[100], ssqFinal=0;
       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;
  if (N <= 0 || incX <= 0) return 0;
  else if (N == 1)         return fabs(X[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
#ifdef OMP
        tid = omp_get_thread_num();
        tid = omp_get_thread_num();
        nthreads = omp_get_num_threads();
        nthreads = omp_get_num_threads();
        if(nthreads>100) exit(1);
        if(nthreads>100) exit(1);
#endif
#endif
    */
  
  
  
////#pragma omp for
#pragma omp for
  for (long i = 0; i < N; i++) {
  for (long i = 0; i < N; i++) {
       ix=incX*i;
       ix=incX*i;
       ssq[tid] += X[ix]*X[ix];
       ssq[tid] += X[ix]*X[ix];
  }
  }
}  // pragma
}
// pragma


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



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


double resultFinal=0.0;
double resultFinal=0.0;
for(int j=0;j<100;j++) resultFinal+=resultSqr[j];
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
void
cblas_dscal1(const long int N, const double alpha, double *X, const int incX)
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;
    if (incX > 0) ix=0;
    else ix=((N) - 1) * (-(incX));
    else ix=((N) - 1) * (-(incX));
    
    
#pragma omp parallel shared(ix)
////#pragma omp parallel shared(ix)
{
/////{
   long ixThread;
   long ixThread;
   long ixThreadOffset=ix;
   long ixThreadOffset=ix;
#pragma omp for
/////#pragma omp for
    for (i = 0; i < N; i++) {
    for (i = 0; i < N; i++) {
    	ixThread=ixThreadOffset+incX*i;
    	ixThread=ixThreadOffset+incX*i;
        X[ixThread] *= alpha;
        X[ixThread] *= alpha;
    }
    }
}// end pragma    
/////}// end pragma    
}
}

memRequest.c

100755 → 100644
+0 −0

File mode changed from 100755 to 100644.

Loading