loop2.cpp   loop2.cpp 
skipping to change at line 13 skipping to change at line 13
// In KAI C++ 3.2, restrict causes problems for copy propagation. // In KAI C++ 3.2, restrict causes problems for copy propagation.
// Temporary fix: disable restrict // Temporary fix: disable restrict
#define BZ_DISABLE_RESTRICT #define BZ_DISABLE_RESTRICT
#include <blitz/vector.h> #include <blitz/vector.h>
#include <blitz/array.h> #include <blitz/array.h>
#include <blitz/rand-uniform.h> #include <blitz/rand-uniform.h>
#include <blitz/benchext.h> #include <blitz/benchext.h>
// Generated: makeloops.cpp Jul 30 1998 // Generated: makeloops.cpp Dec 11 2002
#ifdef BZ_HAVE_VALARRAY
#define BENCHMARK_VALARRAY
#endif
#ifdef BENCHMARK_VALARRAY #ifdef BENCHMARK_VALARRAY
#include <valarray> #include <valarray>
#endif #endif
BZ_USING_NAMESPACE(blitz) BZ_USING_NAMESPACE(blitz)
#ifdef BZ_FORTRAN_SYMBOLS_WITH_TRAILING_UNDERSCORES #if defined(BZ_FORTRAN_SYMBOLS_WITH_TRAILING_UNDERSCORES)
#define loop2_f77 loop2_f77_ #define loop2_f77 loop2_f77_
#define loop2_f77overhead loop2_f77overhead_ #define loop2_f77overhead loop2_f77overhead_
#define loop2_f90 loop2_f90_ #define loop2_f90 loop2_f90_
#define loop2_f90overhead loop2_f90overhead_ #define loop2_f90overhead loop2_f90overhead_
#endif #elif defined(BZ_FORTRAN_SYMBOLS_WITH_DOUBLE_TRAILING_UNDERSCORES)
#ifdef BZ_FORTRAN_SYMBOLS_WITH_DOUBLE_TRAILING_UNDERSCORES
#define loop2_f77 loop2_f77__ #define loop2_f77 loop2_f77__
#define loop2_f77overhead loop2_f77overhead__ #define loop2_f77overhead loop2_f77overhead__
#define loop2_f90 loop2_f90__ #define loop2_f90 loop2_f90__
#define loop2_f90overhead loop2_f90overhead__ #define loop2_f90overhead loop2_f90overhead__
#endif #elif defined(BZ_FORTRAN_SYMBOLS_CAPS)
#ifdef BZ_FORTRAN_SYMBOLS_CAPS
#define loop2_f77 LOOP2_F77 #define loop2_f77 LOOP2_F77
#define loop2_f77overhead LOOP2_F77OVERHEAD #define loop2_f77overhead LOOP2_F77OVERHEAD
#define loop2_f90 LOOP2_F90 #define loop2_f90 LOOP2_F90
#define loop2_f90overhead LOOP2_F90OVERHEAD #define loop2_f90overhead LOOP2_F90OVERHEAD
#endif #endif
extern "C" { extern "C" {
void loop2_f77(const int& N, double* x, double* y, const double& u); void loop2_f77(const int& N, double* x, double* y, const double& u);
void loop2_f77overhead(const int& N, double* x, double* y, const double& u); void loop2_f77overhead(const int& N, double* x, double* y, const double& u);
void loop2_f90(const int& N, double* x, double* y, const double& u); void loop2_f90(const int& N, double* x, double* y, const double& u);
void loop2_f90overhead(const int& N, double* x, double* y, const double& u); void loop2_f90overhead(const int& N, double* x, double* y, const double& u);
} }
void VectorVersion(BenchmarkExt<int>& bench, double u); void VectorVersion(BenchmarkExt<int>& bench, double u);
void ArrayVersion(BenchmarkExt<int>& bench, double u); void ArrayVersion(BenchmarkExt<int>& bench, double u);
void F77Version(BenchmarkExt<int>& bench, double u); void F77Version(BenchmarkExt<int>& bench, double u);
#ifdef FORTRAN_90
void F90Version(BenchmarkExt<int>& bench, double u); void F90Version(BenchmarkExt<int>& bench, double u);
#endif
#ifdef BENCHMARK_VALARRAY #ifdef BENCHMARK_VALARRAY
void ValarrayVersion(BenchmarkExt<int>& bench, double u); void ValarrayVersion(BenchmarkExt<int>& bench, double u);
#endif #endif
void sink() {} void sink() {}
int main() int main()
{ {
#ifdef BENCHMARK_VALARRAY
int numBenchmarks = 5; int numBenchmarks = 5;
#else #ifndef BENCHMARK_VALARRAY
int numBenchmarks = 4; numBenchmarks--; // No valarray
#endif
#ifndef FORTRAN_90
numBenchmarks--; // No fortran 90
#endif #endif
BenchmarkExt<int> bench("loop2: $x=$y/$u", numBenchmarks); BenchmarkExt<int> bench("loop2: $x=$y/$u", numBenchmarks);
const int numSizes = 23; const int numSizes = 23;
bench.setNumParameters(numSizes); bench.setNumParameters(numSizes);
bench.setRateDescription("Mflops/s"); bench.setRateDescription("Mflops/s");
Vector<int> parameters(numSizes); Vector<int> parameters(numSizes);
Vector<long> iters(numSizes); Vector<long> iters(numSizes);
skipping to change at line 102 skipping to change at line 105
bench.setIterations(iters); bench.setIterations(iters);
bench.setFlopsPerIteration(flops); bench.setFlopsPerIteration(flops);
bench.beginBenchmarking(); bench.beginBenchmarking();
double u = 0.39123982498157938742; double u = 0.39123982498157938742;
VectorVersion(bench, u); VectorVersion(bench, u);
ArrayVersion(bench, u); ArrayVersion(bench, u);
F77Version(bench, u); F77Version(bench, u);
#ifdef FORTRAN_90
F90Version(bench, u); F90Version(bench, u);
#endif
#ifdef BENCHMARK_VALARRAY #ifdef BENCHMARK_VALARRAY
ValarrayVersion(bench, u); ValarrayVersion(bench, u);
#endif #endif
bench.endBenchmarking(); bench.endBenchmarking();
bench.saveMatlabGraph("loop2.m"); bench.saveMatlabGraph("loop2.m");
return 0; return 0;
} }
skipping to change at line 271 skipping to change at line 276
loop2_f77overhead(N, x, y, u); loop2_f77overhead(N, x, y, u);
bench.stopOverhead(); bench.stopOverhead();
delete [] x; delete [] x;
delete [] y; delete [] y;
} }
bench.endImplementation(); bench.endImplementation();
} }
#ifdef FORTRAN_90
void F90Version(BenchmarkExt<int>& bench, double u) void F90Version(BenchmarkExt<int>& bench, double u)
{ {
bench.beginImplementation("Fortran 90"); bench.beginImplementation("Fortran 90");
while (!bench.doneImplementationBenchmark()) while (!bench.doneImplementationBenchmark())
{ {
int N = bench.getParameter(); int N = bench.getParameter();
cout << "Fortran 90: N = " << N << endl; cout << "Fortran 90: N = " << N << endl;
cout.flush(); cout.flush();
skipping to change at line 305 skipping to change at line 311
for (int iter=0; iter < iters; ++iter) for (int iter=0; iter < iters; ++iter)
loop2_f90overhead(N, x, y, u); loop2_f90overhead(N, x, y, u);
bench.stopOverhead(); bench.stopOverhead();
delete [] x; delete [] x;
delete [] y; delete [] y;
} }
bench.endImplementation(); bench.endImplementation();
} }
#endif
 End of changes. 12 change blocks. 
12 lines changed or deleted 18 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/