loop1.cpp   loop1.cpp 
/* /*
* This benchmark causes some versions of gcc to crash. * This benchmark causes some versions of gcc to crash.
*/ */
#include <blitz/vector.h> #include <blitz/vector2.h>
#include <blitz/array.h> #include <blitz/array.h>
#include <blitz/rand-uniform.h> #include <random/uniform.h>
#include <blitz/benchext.h> #include <blitz/benchext.h>
BZ_NAMESPACE(blitz)
extern void sink();
BZ_NAMESPACE_END
BZ_USING_NAMESPACE(blitz) BZ_USING_NAMESPACE(blitz)
void VectorVersion(BenchmarkExt<int>& bench); void VectorVersion(BenchmarkExt<int>& bench);
void ArrayVersion(BenchmarkExt<int>& bench); void ArrayVersion(BenchmarkExt<int>& bench);
void sink() {}
int dontActuallyRunBenchmark() int dontActuallyRunBenchmark()
{ {
return 1; return 1;
} }
int main() int main()
{ {
if (dontActuallyRunBenchmark()) if (dontActuallyRunBenchmark())
return 0; return 0;
int numBenchmarks = 2; int numBenchmarks = 2;
BenchmarkExt<int> bench("loop1: $x=sqrt($y)", numBenchmarks); BenchmarkExt<int> bench("loop1: $x=sqrt($y)", numBenchmarks);
const int numSizes = 26; const int numSizes = 26;
bench.setNumParameters(numSizes); bench.setNumParameters(numSizes);
bench.setRateDescription("Mflops/s"); //bench.setRateDescription("Mflops/s"); removed
Vector<int> parameters(numSizes); Vector<int> parameters(numSizes);
Vector<long> iters(numSizes); Vector<long> iters(numSizes);
Vector<double> flops(numSizes); Vector<double> flops(numSizes);
for (int i=0; i < numSizes; ++i) for (int i=0; i < numSizes; ++i)
{ {
parameters[i] = (int)pow(10.0, (i+1)/4.0); parameters(i) = (int)pow(10.0, (i+1)/4.0);
iters[i] = 50000000L / parameters[i]; iters[i] = 50000000L / parameters(i);
if (iters[i] < 2) if (iters(i) < 2)
iters[i] = 2; iters(i) = 2;
flops[i] = 1 * parameters[i]; flops(i) = 1 * parameters(i);
} }
bench.setParameterVector(parameters); bench.setParameterVector(parameters);
bench.setIterations(iters); bench.setIterations(iters);
bench.setFlopsPerIteration(flops); bench.setOpsPerIteration(flops);
bench.beginBenchmarking(); bench.beginBenchmarking();
VectorVersion(bench); VectorVersion(bench);
ArrayVersion(bench); ArrayVersion(bench);
bench.endBenchmarking(); bench.endBenchmarking();
bench.saveMatlabGraph("loop1.m"); bench.saveMatlabGraph("loop1.m");
return 0; return 0;
} }
template<typename T> template<typename T>
void initializeRandomDouble(T data, int numElements, int stride = 1) void initializeRandomDouble(T* data, int numElements, int stride = 1)
{ {
static Random<Uniform> rnd; ranlib::Uniform<T> rnd;
for (int i=0; i < numElements; ++i) for (int i=0; i < numElements; ++i)
data[size_t(i*stride)] = rnd.random(); data[size_t(i*stride)] = rnd.random();
} }
template<typename T>
void initializeArray(T& array, int numElements)
{
static Random<Uniform> rnd;
for (size_t i=0; i < numElements; ++i)
array(i) = rnd.random();
}
void VectorVersion(BenchmarkExt<int>& bench) void VectorVersion(BenchmarkExt<int>& bench)
{ {
bench.beginImplementation("Vector<T>"); bench.beginImplementation("Vector<T>");
while (!bench.doneImplementationBenchmark()) while (!bench.doneImplementationBenchmark())
{ {
int N = bench.getParameter(); int N = bench.getParameter();
cout << "Vector<T>: N = " << N << endl; cout << "Vector<T>: N = " << N << endl;
cout.flush(); cout.flush();
 End of changes. 10 change blocks. 
22 lines changed or deleted 15 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/