aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench
diff options
context:
space:
mode:
authorGravatar Mark Eberlein <mark.eberlein@pnnl.gov>2020-01-24 16:28:09 -0800
committerGravatar Rasmus Munk Larsen <rmlarsen@google.com>2020-05-11 21:50:27 +0000
commitba9d18b9388acdf27a3900a4f981fab587e59b0c (patch)
tree8860fa2ba057a6add9a293533089df1a94758478 /bench
parent5fdc1792410f7c2a0aa751ed7cabc013026aef26 (diff)
Add KLU support to spbenchsolver
Diffstat (limited to 'bench')
-rw-r--r--bench/spbench/CMakeLists.txt7
-rw-r--r--bench/spbench/spbenchsolver.h19
2 files changed, 26 insertions, 0 deletions
diff --git a/bench/spbench/CMakeLists.txt b/bench/spbench/CMakeLists.txt
index 1fc5778a7..fda8dccd9 100644
--- a/bench/spbench/CMakeLists.txt
+++ b/bench/spbench/CMakeLists.txt
@@ -29,6 +29,13 @@ if(UMFPACK_FOUND AND BLAS_FOUND)
set(UMFPACK_ALL_LIBS ${UMFPACK_LIBRARIES} ${BLAS_LIBRARIES})
endif()
+find_package(KLU)
+if(KLU_FOUND)
+ add_definitions("-DEIGEN_KLU_SUPPORT")
+ include_directories(${KLU_INCLUDES})
+ set(SPARSE_LIBS ${SPARSE_LIBS} ${KLU_LIBRARIES})
+endif()
+
find_package(SuperLU 4.0)
if(SUPERLU_FOUND AND BLAS_FOUND)
add_definitions("-DEIGEN_SUPERLU_SUPPORT")
diff --git a/bench/spbench/spbenchsolver.h b/bench/spbench/spbenchsolver.h
index 19c719c04..8f59d1071 100644
--- a/bench/spbench/spbenchsolver.h
+++ b/bench/spbench/spbenchsolver.h
@@ -37,6 +37,10 @@
#include <Eigen/UmfPackSupport>
#endif
+#ifdef EIGEN_KLU_SUPPORT
+#include <Eigen/KLUSupport>
+#endif
+
#ifdef EIGEN_PARDISO_SUPPORT
#include <Eigen/PardisoSupport>
#endif
@@ -51,6 +55,7 @@
// CONSTANTS
#define EIGEN_UMFPACK 10
+#define EIGEN_KLU 11
#define EIGEN_SUPERLU 20
#define EIGEN_PASTIX 30
#define EIGEN_PARDISO 40
@@ -109,6 +114,12 @@ void printStatheader(std::ofstream& out)
out << " <PACKAGE> UMFPACK </PACKAGE> \n";
out << " </SOLVER> \n";
#endif
+#ifdef EIGEN_KLU_SUPPORT
+ out <<" <SOLVER ID='" << EIGEN_KLU << "'>\n";
+ out << " <TYPE> LU </TYPE> \n";
+ out << " <PACKAGE> KLU </PACKAGE> \n";
+ out << " </SOLVER> \n";
+#endif
#ifdef EIGEN_SUPERLU_SUPPORT
out <<" <SOLVER ID='" << EIGEN_SUPERLU << "'>\n";
out << " <TYPE> LU </TYPE> \n";
@@ -316,6 +327,14 @@ void SelectSolvers(const SparseMatrix<Scalar>&A, unsigned int sym, Matrix<Scalar
call_directsolver(solver, EIGEN_UMFPACK, A, b, refX,statFile);
}
#endif
+ //KLU
+ #ifdef EIGEN_KLU_SUPPORT
+ {
+ cout << "Solving with KLU LU ... \n";
+ KLU<SpMat> solver;
+ call_directsolver(solver, EIGEN_KLU, A, b, refX,statFile);
+ }
+ #endif
//SuperLU
#ifdef EIGEN_SUPERLU_SUPPORT
{