diff options
Diffstat (limited to 'bench/ompbenchmark.cpp')
-rw-r--r-- | bench/ompbenchmark.cpp | 81 |
1 files changed, 0 insertions, 81 deletions
diff --git a/bench/ompbenchmark.cpp b/bench/ompbenchmark.cpp deleted file mode 100644 index ac5155cb8..000000000 --- a/bench/ompbenchmark.cpp +++ /dev/null @@ -1,81 +0,0 @@ -// g++ -O3 -DNDEBUG -I.. -fopenmp benchOpenMP.cpp -o benchOpenMP && ./benchOpenMP 2> /dev/null -// icpc -fast -fno-exceptions -DNDEBUG -I.. -openmp benchOpenMP.cpp -o benchOpenMP && ./benchOpenMP 2> /dev/null - -#include <omp.h> -#include "BenchUtil.h" -#include "basicbenchmark.h" - -// #include <Eigen/Core> -// #include "BenchTimer.h" -// -// using namespace std; -// USING_PART_OF_NAMESPACE_EIGEN -// -// enum {LazyEval, EarlyEval, OmpEval}; -// -// template<int Mode, typename MatrixType> -// double benchSingleProc(const MatrixType& mat, int iterations, int tries) __attribute__((noinline)); -// -// template<int Mode, typename MatrixType> -// double benchBasic(const MatrixType& mat, int iterations, int tries) -// { -// const int rows = mat.rows(); -// const int cols = mat.cols(); -// -// Eigen::BenchTimer timer; -// for(uint t=0; t<tries; ++t) -// { -// MatrixType I = MatrixType::identity(rows, cols); -// MatrixType m = MatrixType::random(rows, cols); -// -// timer.start(); -// for(int a = 0; a < iterations; a++) -// { -// if(Mode==LazyEval) -// m = (I + 0.00005 * (m + m.lazyProduct(m))).eval(); -// else if(Mode==OmpEval) -// m = (I + 0.00005 * (m + m.lazyProduct(m))).evalOMP(); -// else -// m = I + 0.00005 * (m + m * m); -// } -// timer.stop(); -// cerr << m; -// } -// return timer.value(); -// }; - -int main(int argc, char *argv[]) -{ - // disbale floating point exceptions - // this leads to more stable bench results - { - int aux; - asm( - "stmxcsr %[aux] \n\t" - "orl $32832, %[aux] \n\t" - "ldmxcsr %[aux] \n\t" - : : [aux] "m" (aux)); - } - - // commented since the default setting is use as many threads as processors - //omp_set_num_threads(omp_get_num_procs()); - - std::cout << "double, fixed-size 4x4: " - << benchBasic<LazyEval>(Matrix4d(), 10000, 10) << "s " - << benchBasic<OmpEval>(Matrix4d(), 10000, 10) << "s \n"; - - #define BENCH_MATRIX(TYPE, SIZE, ITERATIONS, TRIES) {\ - double single = benchBasic<LazyEval>(Matrix<TYPE,Eigen::Dynamic,Eigen::Dynamic>(SIZE,SIZE), ITERATIONS, TRIES); \ - double omp = benchBasic<OmpEval> (Matrix<TYPE,Eigen::Dynamic,Eigen::Dynamic>(SIZE,SIZE), ITERATIONS, TRIES); \ - std::cout << #TYPE << ", " << #SIZE << "x" << #SIZE << ": " << single << "s " << omp << "s " \ - << " => x" << single/omp << " (" << omp_get_num_procs() << ")" << std::endl; \ - } - - BENCH_MATRIX(double, 32, 1000, 10); - BENCH_MATRIX(double, 128, 10, 10); - BENCH_MATRIX(double, 512, 1, 6); - BENCH_MATRIX(double, 1024, 1, 4); - - return 0; -} - |