aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/spbench
diff options
context:
space:
mode:
authorGravatar Desire NUENTSA <desire.nuentsa_wakam@inria.fr>2012-09-10 12:41:26 +0200
committerGravatar Desire NUENTSA <desire.nuentsa_wakam@inria.fr>2012-09-10 12:41:26 +0200
commit2c99d8413316c97e771a37c7ff04ab38d7cd158a (patch)
treebffee65a26b63a03534f8fd74b02e923227be62b /bench/spbench
parent5433986f5ae8cd1c07f7c77d655a54c0e775b292 (diff)
add SparseLU in sparse bench
Diffstat (limited to 'bench/spbench')
-rw-r--r--bench/spbench/CMakeLists.txt11
-rw-r--r--bench/spbench/spbenchsolver.h72
2 files changed, 56 insertions, 27 deletions
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 <unsupported/Eigen/IterativeSolvers>
#include <Eigen/LU>
#include <unsupported/Eigen/SparseExtra>
+#include <Eigen/SparseLU>
#include "spbenchstyle.h"
+#ifdef EIGEN_METIS_SUPPORT
+#include <Eigen/MetisSupport>
+#endif
+
#ifdef EIGEN_CHOLMOD_SUPPORT
#include <Eigen/CholmodSupport>
#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 << " <PACKAGE> EIGEN </PACKAGE> \n";
out << " </SOLVER> \n";
+ out <<" <SOLVER ID='" << EIGEN_SPARSELU_COLAMD << "'>\n";
+ out << " <TYPE> LU_COLAMD </TYPE> \n";
+ out << " <PACKAGE> EIGEN </PACKAGE> \n";
+ out << " </SOLVER> \n";
+
+#ifdef EIGEN_METIS_SUPPORT
+ out <<" <SOLVER ID='" << EIGEN_SPARSELU_METIS << "'>\n";
+ out << " <TYPE> LU_METIS </TYPE> \n";
+ out << " <PACKAGE> EIGEN </PACKAGE> \n";
+ out << " </SOLVER> \n";
+#endif
out << " </AVAILSOLVER> \n";
}
@@ -325,8 +342,19 @@ void SelectSolvers(const SparseMatrix<Scalar>&A, unsigned int sym, Matrix<Scalar
call_directsolver(solver, EIGEN_PARDISO, A, b, refX,statFile);
}
#endif
-
-
+
+ // Eigen SparseLU METIS
+ cout << "\n Solving with Sparse LU AND COLAMD ... \n";
+ SparseLU<SpMat, COLAMDOrdering<int> > 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<SpMat, MetisOrdering<int> > solver;
+ call_directsolver(solver, EIGEN_SPARSELU_METIS, A, b, refX, statFile);
+ }
+ #endif
//BiCGSTAB
{