From 2c99d8413316c97e771a37c7ff04ab38d7cd158a Mon Sep 17 00:00:00 2001 From: Desire NUENTSA Date: Mon, 10 Sep 2012 12:41:26 +0200 Subject: add SparseLU in sparse bench --- bench/spbench/CMakeLists.txt | 11 ++++--- bench/spbench/spbenchsolver.h | 72 ++++++++++++++++++++++++++++++------------- 2 files changed, 56 insertions(+), 27 deletions(-) (limited to 'bench/spbench') diff --git a/bench/spbench/CMakeLists.txt b/bench/spbench/CMakeLists.txt index 5451843b9..6e0e1b103 100644 --- a/bench/spbench/CMakeLists.txt +++ b/bench/spbench/CMakeLists.txt @@ -55,6 +55,12 @@ if(PASTIX_FOUND AND BLAS_FOUND) set(PASTIX_ALL_LIBS ${PASTIX_LIBRARIES} ${BLAS_LIBRARIES}) endif(PASTIX_FOUND AND BLAS_FOUND) +if(METIS_FOUND) + include_directories(${METIS_INCLUDES}) + set (SPARSE_LIBS ${SPARSE_LIBS} ${METIS_LIBRARIES}) + add_definitions("-DEIGEN_METIS_SUPPORT") +endif(METIS_FOUND) + find_library(RT_LIBRARY rt) if(RT_LIBRARY) set(SPARSE_LIBS ${SPARSE_LIBS} ${RT_LIBRARY}) @@ -66,11 +72,6 @@ target_link_libraries (spbenchsolver ${SPARSE_LIBS}) add_executable(spsolver sp_solver.cpp) target_link_libraries (spsolver ${SPARSE_LIBS}) -if(METIS_FOUND) - include_directories(${METIS_INCLUDES}) - set (SPARSE_LIBS ${SPARSE_LIBS} ${METIS_LIBRARIES}) - add_definitions("-DEIGEN_METIS_SUPPORT") -endif(METIS_FOUND) add_executable(test_sparseLU test_sparseLU.cpp) target_link_libraries (test_sparseLU ${SPARSE_LIBS}) diff --git a/bench/spbench/spbenchsolver.h b/bench/spbench/spbenchsolver.h index c48ed7aa7..19c719c04 100644 --- a/bench/spbench/spbenchsolver.h +++ b/bench/spbench/spbenchsolver.h @@ -21,9 +21,14 @@ #include #include #include +#include #include "spbenchstyle.h" +#ifdef EIGEN_METIS_SUPPORT +#include +#endif + #ifdef EIGEN_CHOLMOD_SUPPORT #include #endif @@ -45,26 +50,27 @@ #endif // CONSTANTS -#define EIGEN_UMFPACK 0 -#define EIGEN_SUPERLU 1 -#define EIGEN_PASTIX 2 -#define EIGEN_PARDISO 3 -#define EIGEN_BICGSTAB 4 -#define EIGEN_BICGSTAB_ILUT 5 -#define EIGEN_GMRES 6 -#define EIGEN_GMRES_ILUT 7 -#define EIGEN_SIMPLICIAL_LDLT 8 -#define EIGEN_CHOLMOD_LDLT 9 -#define EIGEN_PASTIX_LDLT 10 -#define EIGEN_PARDISO_LDLT 11 -#define EIGEN_SIMPLICIAL_LLT 12 -#define EIGEN_CHOLMOD_SUPERNODAL_LLT 13 -#define EIGEN_CHOLMOD_SIMPLICIAL_LLT 14 -#define EIGEN_PASTIX_LLT 15 -#define EIGEN_PARDISO_LLT 16 -#define EIGEN_CG 17 -#define EIGEN_CG_PRECOND 18 -#define EIGEN_ALL_SOLVERS 19 +#define EIGEN_UMFPACK 10 +#define EIGEN_SUPERLU 20 +#define EIGEN_PASTIX 30 +#define EIGEN_PARDISO 40 +#define EIGEN_SPARSELU_COLAMD 50 +#define EIGEN_SPARSELU_METIS 51 +#define EIGEN_BICGSTAB 60 +#define EIGEN_BICGSTAB_ILUT 61 +#define EIGEN_GMRES 70 +#define EIGEN_GMRES_ILUT 71 +#define EIGEN_SIMPLICIAL_LDLT 80 +#define EIGEN_CHOLMOD_LDLT 90 +#define EIGEN_PASTIX_LDLT 100 +#define EIGEN_PARDISO_LDLT 110 +#define EIGEN_SIMPLICIAL_LLT 120 +#define EIGEN_CHOLMOD_SUPERNODAL_LLT 130 +#define EIGEN_CHOLMOD_SIMPLICIAL_LLT 140 +#define EIGEN_PASTIX_LLT 150 +#define EIGEN_PARDISO_LLT 160 +#define EIGEN_CG 170 +#define EIGEN_CG_PRECOND 180 using namespace Eigen; using namespace std; @@ -188,6 +194,17 @@ void printStatheader(std::ofstream& out) out << " EIGEN \n"; out << " \n"; + out <<" \n"; + out << " LU_COLAMD \n"; + out << " EIGEN \n"; + out << " \n"; + +#ifdef EIGEN_METIS_SUPPORT + out <<" \n"; + out << " LU_METIS \n"; + out << " EIGEN \n"; + out << " \n"; +#endif out << " \n"; } @@ -325,8 +342,19 @@ void SelectSolvers(const SparseMatrix&A, unsigned int sym, Matrix > solver; + call_directsolver(solver, EIGEN_SPARSELU_COLAMD, A, b, refX, statFile); + // Eigen SparseLU METIS + #ifdef EIGEN_METIS_SUPPORT + { + cout << "\n Solving with Sparse LU AND METIS ... \n"; + SparseLU > solver; + call_directsolver(solver, EIGEN_SPARSELU_METIS, A, b, refX, statFile); + } + #endif //BiCGSTAB { -- cgit v1.2.3