aboutsummaryrefslogtreecommitdiffhomepage
path: root/bench/btl
diff options
context:
space:
mode:
authorGravatar Gael Guennebaud <g.gael@free.fr>2008-08-25 14:23:08 +0000
committerGravatar Gael Guennebaud <g.gael@free.fr>2008-08-25 14:23:08 +0000
commit7ce70e143734942bf4e7dcfe5f5af957e5e5009e (patch)
tree77cb0ab7655aff42f4270ef0dd90aa5925329637 /bench/btl
parentd2b345e6a9190d110d0366f1f708be492847b4f9 (diff)
various updates in BTL
Diffstat (limited to 'bench/btl')
-rw-r--r--bench/btl/libs/C_BLAS/C_BLAS_interface.hh10
-rw-r--r--bench/btl/libs/C_BLAS/main.cpp2
-rw-r--r--bench/btl/libs/eigen2/CMakeLists.txt8
-rw-r--r--bench/btl/libs/eigen2/eigen2_interface.hh6
-rw-r--r--bench/btl/libs/eigen2/main_adv.cpp2
5 files changed, 23 insertions, 5 deletions
diff --git a/bench/btl/libs/C_BLAS/C_BLAS_interface.hh b/bench/btl/libs/C_BLAS/C_BLAS_interface.hh
index 21d9bde1a..d0148a29d 100644
--- a/bench/btl/libs/C_BLAS/C_BLAS_interface.hh
+++ b/bench/btl/libs/C_BLAS/C_BLAS_interface.hh
@@ -253,6 +253,16 @@ public :
#endif
}
+ static inline void trisolve_lower_matrix(const gene_matrix & L, const gene_matrix& B, gene_matrix & X, int N){
+ #ifdef PUREBLAS
+ scopy_(&N, B, &intone, X, &intone);
+ strsv_(&lower, &notrans, &nonunit, &N, L, &N, X, &intone);
+ #else
+ cblas_scopy(N, B, 1, X, 1);
+ cblas_strsm(CblasColMajor, CblasRight, CblasLower, CblasNoTrans, CblasNonUnit, N, N, 1, L, N, X, N);
+ #endif
+ }
+
};
diff --git a/bench/btl/libs/C_BLAS/main.cpp b/bench/btl/libs/C_BLAS/main.cpp
index 21da0b4aa..10faf4a0b 100644
--- a/bench/btl/libs/C_BLAS/main.cpp
+++ b/bench/btl/libs/C_BLAS/main.cpp
@@ -24,6 +24,7 @@
#include "action_cholesky.hh"
#include "action_lu_decomp.hh"
+#include "action_trisolve_matrix.hh"
#ifdef HAS_LAPACK
#include "action_hessenberg.hh"
@@ -45,6 +46,7 @@ int main()
bench<Action_aat_product<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_trisolve<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
+ bench<Action_trisolve_matrix<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_cholesky<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
diff --git a/bench/btl/libs/eigen2/CMakeLists.txt b/bench/btl/libs/eigen2/CMakeLists.txt
index 3c511f9b8..c56aa8f83 100644
--- a/bench/btl/libs/eigen2/CMakeLists.txt
+++ b/bench/btl/libs/eigen2/CMakeLists.txt
@@ -1,4 +1,4 @@
-find_package(MKL)
+# find_package(MKL)
find_package(Eigen2)
if (EIGEN2_FOUND)
@@ -26,9 +26,9 @@ if (EIGEN2_FOUND)
set_target_properties(btl_eigen2_novec_adv PROPERTIES COMPILE_FLAGS "-DEIGEN_DONT_VECTORIZE")
endif(BUILD_btl_eigen2_novec_adv)
- if(BUILD_btl_eigen2_adv)
- target_link_libraries(btl_eigen2_adv ${MKL_LIBRARIES})
- endif(BUILD_btl_eigen2_adv)
+# if(BUILD_btl_eigen2_adv)
+# target_link_libraries(btl_eigen2_adv ${MKL_LIBRARIES})
+# endif(BUILD_btl_eigen2_adv)
ENDIF(NOT BTL_NOVEC)
diff --git a/bench/btl/libs/eigen2/eigen2_interface.hh b/bench/btl/libs/eigen2/eigen2_interface.hh
index f3ba5e8af..39eaa3b65 100644
--- a/bench/btl/libs/eigen2/eigen2_interface.hh
+++ b/bench/btl/libs/eigen2/eigen2_interface.hh
@@ -17,7 +17,7 @@
//
#ifndef EIGEN2_INTERFACE_HH
#define EIGEN2_INTERFACE_HH
-#include <cblas.h>
+// #include <cblas.h>
#include <Eigen/Core>
#include <Eigen/Cholesky>
#include <Eigen/LU>
@@ -137,6 +137,10 @@ public :
X = L.template marked<Lower>().solveTriangular(B);
}
+ static inline void trisolve_lower_matrix(const gene_matrix & L, const gene_matrix& B, gene_matrix& X, int N){
+ X = L.template marked<Lower>().solveTriangular(B);
+ }
+
static inline void cholesky(const gene_matrix & X, gene_matrix & C, int N){
C = X.cholesky().matrixL();
// C = X;
diff --git a/bench/btl/libs/eigen2/main_adv.cpp b/bench/btl/libs/eigen2/main_adv.cpp
index 83e48f58e..6dd9d3884 100644
--- a/bench/btl/libs/eigen2/main_adv.cpp
+++ b/bench/btl/libs/eigen2/main_adv.cpp
@@ -19,6 +19,7 @@
#include "eigen2_interface.hh"
#include "bench.hh"
#include "action_trisolve.hh"
+#include "action_trisolve_matrix.hh"
#include "action_cholesky.hh"
#include "action_hessenberg.hh"
#include "action_lu_decomp.hh"
@@ -28,6 +29,7 @@ BTL_MAIN;
int main()
{
bench<Action_trisolve<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
+ bench<Action_trisolve_matrix<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_cholesky<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
bench<Action_lu_decomp<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);