void ArrayVersion_misaligned(BenchmarkExt<int>& bench) { bench.beginImplementation("Array<T,1> (misal.)"); while (!bench.doneImplementationBenchmark()) { int N = bench.getParameter(); long iters = bench.getIterations(); cout << bench.currentImplementation() << ": N = " << N << endl; Array<double,1> xfill(N+6); Array<double,1> x(xfill(Range(0,N+0-1))); initializeRandomDouble(x.dataFirst(), N); Array<double,1> afill(N+6); Array<double,1> a(afill(Range(1,N+1-1))); initializeRandomDouble(a.dataFirst(), N); Array<double,1> bfill(N+6); Array<double,1> b(bfill(Range(2,N+2-1))); initializeRandomDouble(b.dataFirst(), N); Array<double,1> cfill(N+6); Array<double,1> c(cfill(Range(3,N+3-1))); initializeRandomDouble(c.dataFirst(), N); Array<double,1> dfill(N+6); Array<double,1> d(dfill(Range(4,N+4-1))); initializeRandomDouble(d.dataFirst(), N); Array<double,1> yfill(N+6); Array<double,1> y(yfill(Range(5,N+5-1))); initializeRandomDouble(y.dataFirst(), N); bench.start(); for (long i=0; i < iters; ++i) { x = a*b + c*d; y = b+d; sink(); } bench.stop(); bench.startOverhead(); for (long i=0; i < iters; ++i) { sink(); } bench.stopOverhead(); } bench.endImplementation(); }
/*! \brief Set up pointers for real working arrays. */ void cSetRWork(int m, int panel_size, complex *dworkptr, complex **dense, complex **tempv) { complex zero = {0.0, 0.0}; int maxsuper = SUPERLU_MAX( sp_ienv(3), sp_ienv(7) ), rowblk = sp_ienv(4); *dense = dworkptr; *tempv = *dense + panel_size*m; cfill (*dense, m * panel_size, zero); cfill (*tempv, NUM_TEMPV(m,panel_size,maxsuper,rowblk), zero); }
void ArrayVersion_unaligned(BenchmarkExt<int>& bench) { bench.beginImplementation("Array<T,1> (unal.)"); while (!bench.doneImplementationBenchmark()) { int N = bench.getParameter(); long iters = bench.getIterations(); cout << bench.currentImplementation() << ": N = " << N << endl; Array<double,1> xfill(N+1); Array<double,1> x(xfill(Range(1,N))); initializeRandomDouble(x.dataFirst(), N); Array<double,1> afill(N+1); Array<double,1> a(afill(Range(1,N))); initializeRandomDouble(a.dataFirst(), N); Array<double,1> bfill(N+1); Array<double,1> b(bfill(Range(1,N))); initializeRandomDouble(b.dataFirst(), N); Array<double,1> cfill(N+1); Array<double,1> c(cfill(Range(1,N))); initializeRandomDouble(c.dataFirst(), N); Array<double,1> dfill(N+1); Array<double,1> d(dfill(Range(1,N))); initializeRandomDouble(d.dataFirst(), N); bench.start(); for (long i=0; i < iters; ++i) { x = (a+b)*(c+d); sink(); } bench.stop(); bench.startOverhead(); for (long i=0; i < iters; ++i) { sink(); } bench.stopOverhead(); } bench.endImplementation(); }
void ArrayVersion_misaligned(BenchmarkExt<int>& bench, double u, double v, double w, double z) { bench.beginImplementation("Array<T,1> (misal.)"); while (!bench.doneImplementationBenchmark()) { int N = bench.getParameter(); long iters = bench.getIterations(); cout << bench.currentImplementation() << ": N = " << N << endl; Array<double,1> afill(N+5); Array<double,1> a(afill(Range(0,N+0-1))); initializeRandomDouble(a.dataFirst(), N); Array<double,1> bfill(N+5); Array<double,1> b(bfill(Range(1,N+1-1))); initializeRandomDouble(b.dataFirst(), N); Array<double,1> cfill(N+5); Array<double,1> c(cfill(Range(2,N+2-1))); initializeRandomDouble(c.dataFirst(), N); Array<double,1> dfill(N+5); Array<double,1> d(dfill(Range(3,N+3-1))); initializeRandomDouble(d.dataFirst(), N); Array<double,1> xfill(N+5); Array<double,1> x(xfill(Range(4,N+4-1))); initializeRandomDouble(x.dataFirst(), N); bench.start(); for (long i=0; i < iters; ++i) { x=(1.0-c*c)/((4*w)*sin(1.0+c*c-2*v*c))*a*b*u*exp(-z*d); sink(); } bench.stop(); bench.startOverhead(); for (long i=0; i < iters; ++i) { sink(); } bench.stopOverhead(); } bench.endImplementation(); }