diff options
author | Gael Guennebaud <g.gael@free.fr> | 2008-10-19 17:06:11 +0000 |
---|---|---|
committer | Gael Guennebaud <g.gael@free.fr> | 2008-10-19 17:06:11 +0000 |
commit | 76fe2e1b34b4388ea3d9585bc840a0bab20ee5be (patch) | |
tree | a8d14974b78f46796a934a10b867286aaa88316d /bench/sparse_trisolver.cpp | |
parent | ecc6c43dba2ca00d2f9d525dcd0d94941bea3fda (diff) |
add/update some benchmark files used to test/compare sparse module features
Diffstat (limited to 'bench/sparse_trisolver.cpp')
-rw-r--r-- | bench/sparse_trisolver.cpp | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/bench/sparse_trisolver.cpp b/bench/sparse_trisolver.cpp index c6b29e88d..021433043 100644 --- a/bench/sparse_trisolver.cpp +++ b/bench/sparse_trisolver.cpp @@ -2,6 +2,7 @@ //g++ -O3 -g0 -DNDEBUG sparse_product.cpp -I.. -I/home/gael/Coding/LinearAlgebra/mtl4/ -DDENSITY=0.005 -DSIZE=10000 && ./a.out //g++ -O3 -g0 -DNDEBUG sparse_product.cpp -I.. -I/home/gael/Coding/LinearAlgebra/mtl4/ -DDENSITY=0.05 -DSIZE=2000 && ./a.out // -DNOGMM -DNOMTL +// -I /home/gael/Coding/LinearAlgebra/CSparse/Include/ /home/gael/Coding/LinearAlgebra/CSparse/Lib/libcsparse.a #ifndef SIZE #define SIZE 10000 @@ -60,8 +61,9 @@ int main(int argc, char *argv[]) BenchTimer timer; #if 1 EigenSparseTriMatrix sm1(rows,cols); - VectorXf b = VectorXf::Random(cols); - VectorXf x = VectorXf::Random(cols); + typedef Matrix<Scalar,Dynamic,1> DenseVector; + DenseVector b = DenseVector::Random(cols); + DenseVector x = DenseVector::Random(cols); bool densedone = false; @@ -81,13 +83,13 @@ int main(int argc, char *argv[]) eiToDense(sm1, m1); m2 = m1; - BENCH(x = m1.marked<Upper>().inverseProduct(b);) + BENCH(x = m1.marked<Upper>().solveTriangular(b);) std::cout << " colmajor^-1 * b:\t" << timer.value() << endl; - std::cerr << x.transpose() << "\n"; +// std::cerr << x.transpose() << "\n"; - BENCH(x = m2.marked<Upper>().inverseProduct(b);) + BENCH(x = m2.marked<Upper>().solveTriangular(b);) std::cout << " rowmajor^-1 * b:\t" << timer.value() << endl; - std::cerr << x.transpose() << "\n"; +// std::cerr << x.transpose() << "\n"; } #endif @@ -96,13 +98,13 @@ int main(int argc, char *argv[]) std::cout << "Eigen sparse\t" << density*100 << "%\n"; EigenSparseTriMatrixRow sm2 = sm1; - BENCH(x = sm1.inverseProduct(b);) + BENCH(x = sm1.solveTriangular(b);) std::cout << " colmajor^-1 * b:\t" << timer.value() << endl; - std::cerr << x.transpose() << "\n"; +// std::cerr << x.transpose() << "\n"; - BENCH(x = sm2.inverseProduct(b);) + BENCH(x = sm2.solveTriangular(b);) std::cout << " rowmajor^-1 * b:\t" << timer.value() << endl; - std::cerr << x.transpose() << "\n"; +// std::cerr << x.transpose() << "\n"; // x = b; // BENCH(sm1.inverseProductInPlace(x);) @@ -115,6 +117,18 @@ int main(int argc, char *argv[]) // std::cerr << x.transpose() << "\n"; } + // CSparse + #ifdef CSPARSE + { + std::cout << "CSparse \t" << density*100 << "%\n"; + cs *m1; + eiToCSparse(sm1, m1); + + BENCH(x = b; if (!cs_lsolve (m1, x.data())){std::cerr << "cs_lsolve failed\n"; break;}; ) + std::cout << " colmajor^-1 * b:\t" << timer.value() << endl; + } + #endif + // GMM++ #ifndef NOGMM { @@ -130,13 +144,13 @@ int main(int argc, char *argv[]) gmmX = gmmB; BENCH(gmm::upper_tri_solve(m1, gmmX, false);) std::cout << " colmajor^-1 * b:\t" << timer.value() << endl; - std::cerr << Map<Matrix<Scalar,Dynamic,1> >(&gmmX[0], cols).transpose() << "\n"; +// std::cerr << Map<Matrix<Scalar,Dynamic,1> >(&gmmX[0], cols).transpose() << "\n"; gmmX = gmmB; BENCH(gmm::upper_tri_solve(m2, gmmX, false);) timer.stop(); std::cout << " rowmajor^-1 * b:\t" << timer.value() << endl; - std::cerr << Map<Matrix<Scalar,Dynamic,1> >(&gmmX[0], cols).transpose() << "\n"; +// std::cerr << Map<Matrix<Scalar,Dynamic,1> >(&gmmX[0], cols).transpose() << "\n"; } #endif @@ -162,7 +176,7 @@ int main(int argc, char *argv[]) #endif - + std::cout << "\n\n"; } #endif @@ -199,8 +213,6 @@ int main(int argc, char *argv[]) } #endif - std::cout << "\n\n"; - return 0; } |