eigen/bench
Gael Guennebaud 0212eec23f simplify and optimize block sizes computation for matrix products. They
are now automatically computed from the L1 and L2 cache sizes which are
themselves automatically determined at runtime.
2010-06-21 23:28:50 +02:00
..
btl BTL: allow to bench real time 2010-02-26 14:57:49 +01:00
basicbench.cxxlist Removed Column and Row in favor of Block 2008-03-12 18:10:52 +00:00
basicbenchmark.cpp add Cholesky and eigensolver benchmark 2008-07-08 17:20:17 +00:00
basicbenchmark.h typos in bench/ 2008-08-29 16:10:08 +00:00
bench_gemm.cpp simplify and optimize block sizes computation for matrix products. They 2010-06-21 23:28:50 +02:00
bench_multi_compilers.sh Removed Column and Row in favor of Block 2008-03-12 18:10:52 +00:00
bench_norm.cpp re-implement stableNorm using a homemade blocky and 2009-07-17 16:22:39 +02:00
bench_reverse.cpp add bench_reverse, draft of a reverse vectorization for AltiVec, make 2009-02-06 13:28:55 +00:00
bench_sum.cpp remove USING_PART_OF_NAMESPACE_EIGEN, leaving it in Eigen2Support. 2010-04-22 18:27:13 -04:00
bench_unrolling provide default values for CXX, remove duplicate define 2010-02-22 15:39:17 +01:00
benchBlasGemm.cpp update product bench 2009-11-06 11:33:18 +01:00
benchCholesky.cpp s/cholesky/llt in precompiled lib and BTL 2009-02-06 14:01:01 +00:00
benchEigenSolver.cpp * updated benchmark files according to recent renamings 2008-07-27 11:39:47 +00:00
benchFFT.cpp added benchmark for unscaled and half-spectrum FFTs 2010-01-21 21:09:26 -05:00
benchmark_suite provide default values for CXX, remove duplicate define 2010-02-22 15:39:17 +01:00
benchmark.cpp remove USING_PART_OF_NAMESPACE_EIGEN, leaving it in Eigen2Support. 2010-04-22 18:27:13 -04:00
benchmarkSlice.cpp remove USING_PART_OF_NAMESPACE_EIGEN, leaving it in Eigen2Support. 2010-04-22 18:27:13 -04:00
benchmarkX.cpp remove USING_PART_OF_NAMESPACE_EIGEN, leaving it in Eigen2Support. 2010-04-22 18:27:13 -04:00
benchmarkXcwise.cpp remove USING_PART_OF_NAMESPACE_EIGEN, leaving it in Eigen2Support. 2010-04-22 18:27:13 -04:00
BenchSparseUtil.h remove USING_PART_OF_NAMESPACE_EIGEN, leaving it in Eigen2Support. 2010-04-22 18:27:13 -04:00
BenchTimer.h make BenchTimer compatible with 2.0 branch 2010-06-01 13:57:38 +02:00
BenchUtil.h remove USING_PART_OF_NAMESPACE_EIGEN, leaving it in Eigen2Support. 2010-04-22 18:27:13 -04:00
benchVecAdd.cpp the big memory changes. the most important changes are: 2009-01-08 15:20:21 +00:00
product_threshold.cpp Fixed line endings. 2010-03-05 18:11:54 +01:00
quat_slerp.cpp add a slerp benchmark (for accuracy and speed)) 2009-12-04 15:02:38 +01:00
README.txt * basic support for multicore CPU via a .evalOMP() which 2008-03-09 16:13:47 +00:00
sparse_cholesky.cpp * the Upper->UpperTriangular change 2008-12-20 13:36:12 +00:00
sparse_dense_product.cpp implement __gnuc_forget_about_setZero_its_over_now 2009-09-18 15:36:05 +02:00
sparse_lu.cpp big huge changes, so i dont remember everything. 2009-10-28 18:19:29 -04:00
sparse_product.cpp extend sparse product benchmark with ublas 2010-02-09 15:55:36 +01:00
sparse_randomsetter.cpp sparse module: 2008-10-21 13:35:04 +00:00
sparse_setter.cpp extend the sparse matrix assembly benchmark 2009-10-07 14:25:53 +02:00
sparse_transpose.cpp add/update some benchmark files used to test/compare sparse module features 2008-10-19 17:06:11 +00:00
sparse_trisolver.cpp * the Upper->UpperTriangular change 2008-12-20 13:36:12 +00:00
vdw_new.cpp remove USING_PART_OF_NAMESPACE_EIGEN, leaving it in Eigen2Support. 2010-04-22 18:27:13 -04:00

This folder contains a couple of benchmark utities and Eigen benchmarks.

****************************
* bench_multi_compilers.sh *
****************************

This script allows to run a benchmark on a set of different compilers/compiler options.
It takes two arguments:
 - a file defining the list of the compilers with their options
 - the .cpp file of the benchmark

Examples:

$ ./bench_multi_compilers.sh basicbench.cxxlist basicbenchmark.cpp

    g++-4.1 -O3 -DNDEBUG -finline-limit=10000
    3d-3x3   /   4d-4x4   /   Xd-4x4   /   Xd-20x20   /
    0.271102   0.131416   0.422322   0.198633
    0.201658   0.102436   0.397566   0.207282

    g++-4.2 -O3 -DNDEBUG -finline-limit=10000
    3d-3x3   /   4d-4x4   /   Xd-4x4   /   Xd-20x20   /
    0.107805   0.0890579   0.30265   0.161843
    0.127157   0.0712581   0.278341   0.191029

    g++-4.3 -O3 -DNDEBUG -finline-limit=10000
    3d-3x3   /   4d-4x4   /   Xd-4x4   /   Xd-20x20   /
    0.134318   0.105291   0.3704   0.180966
    0.137703   0.0732472   0.31225   0.202204

    icpc -fast -DNDEBUG -fno-exceptions -no-inline-max-size
    3d-3x3   /   4d-4x4   /   Xd-4x4   /   Xd-20x20   /
    0.226145   0.0941319   0.371873   0.159433
    0.109302   0.0837538   0.328102   0.173891


$ ./bench_multi_compilers.sh ompbench.cxxlist ompbenchmark.cpp

    g++-4.2 -O3 -DNDEBUG -finline-limit=10000 -fopenmp
    double, fixed-size 4x4: 0.00165105s  0.0778739s
    double, 32x32: 0.0654769s 0.075289s  => x0.869674 (2)
    double, 128x128: 0.054148s 0.0419669s  => x1.29025 (2)
    double, 512x512: 0.913799s 0.428533s  => x2.13239 (2)
    double, 1024x1024: 14.5972s 9.3542s  => x1.5605 (2)

    icpc -fast -DNDEBUG -fno-exceptions -no-inline-max-size -openmp
    double, fixed-size 4x4: 0.000589848s  0.019949s
    double, 32x32: 0.0682781s 0.0449722s  => x1.51823 (2)
    double, 128x128: 0.0547509s 0.0435519s  => x1.25714 (2)
    double, 512x512: 0.829436s 0.424438s  => x1.9542 (2)
    double, 1024x1024: 14.5243s 10.7735s  => x1.34815 (2)