From 7ce70e143734942bf4e7dcfe5f5af957e5e5009e Mon Sep 17 00:00:00 2001 From: Gael Guennebaud Date: Mon, 25 Aug 2008 14:23:08 +0000 Subject: [PATCH] various updates in BTL --- bench/btl/libs/C_BLAS/C_BLAS_interface.hh | 10 ++++++++++ bench/btl/libs/C_BLAS/main.cpp | 2 ++ bench/btl/libs/eigen2/CMakeLists.txt | 8 ++++---- bench/btl/libs/eigen2/eigen2_interface.hh | 6 +++++- bench/btl/libs/eigen2/main_adv.cpp | 2 ++ 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, ¬rans, &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 > >(MIN_MM,MAX_MM,NB_POINT); bench > >(MIN_MM,MAX_MM,NB_POINT); + bench > >(MIN_MM,MAX_MM,NB_POINT); bench > >(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 +// #include #include #include #include @@ -137,6 +137,10 @@ public : X = L.template marked().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().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 > >(MIN_MM,MAX_MM,NB_POINT); + bench > >(MIN_MM,MAX_MM,NB_POINT); bench > >(MIN_MM,MAX_MM,NB_POINT); bench > >(MIN_MM,MAX_MM,NB_POINT);