various updates in BTL

This commit is contained in:
Gael Guennebaud 2008-08-25 14:23:08 +00:00
parent d2b345e6a9
commit 7ce70e1437
5 changed files with 23 additions and 5 deletions

View File

@ -253,6 +253,16 @@ public :
#endif #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
}
}; };

View File

@ -24,6 +24,7 @@
#include "action_cholesky.hh" #include "action_cholesky.hh"
#include "action_lu_decomp.hh" #include "action_lu_decomp.hh"
#include "action_trisolve_matrix.hh"
#ifdef HAS_LAPACK #ifdef HAS_LAPACK
#include "action_hessenberg.hh" #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_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<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); bench<Action_cholesky<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);

View File

@ -1,4 +1,4 @@
find_package(MKL) # find_package(MKL)
find_package(Eigen2) find_package(Eigen2)
if (EIGEN2_FOUND) if (EIGEN2_FOUND)
@ -26,9 +26,9 @@ if (EIGEN2_FOUND)
set_target_properties(btl_eigen2_novec_adv PROPERTIES COMPILE_FLAGS "-DEIGEN_DONT_VECTORIZE") set_target_properties(btl_eigen2_novec_adv PROPERTIES COMPILE_FLAGS "-DEIGEN_DONT_VECTORIZE")
endif(BUILD_btl_eigen2_novec_adv) endif(BUILD_btl_eigen2_novec_adv)
if(BUILD_btl_eigen2_adv) # if(BUILD_btl_eigen2_adv)
target_link_libraries(btl_eigen2_adv ${MKL_LIBRARIES}) # target_link_libraries(btl_eigen2_adv ${MKL_LIBRARIES})
endif(BUILD_btl_eigen2_adv) # endif(BUILD_btl_eigen2_adv)
ENDIF(NOT BTL_NOVEC) ENDIF(NOT BTL_NOVEC)

View File

@ -17,7 +17,7 @@
// //
#ifndef EIGEN2_INTERFACE_HH #ifndef EIGEN2_INTERFACE_HH
#define EIGEN2_INTERFACE_HH #define EIGEN2_INTERFACE_HH
#include <cblas.h> // #include <cblas.h>
#include <Eigen/Core> #include <Eigen/Core>
#include <Eigen/Cholesky> #include <Eigen/Cholesky>
#include <Eigen/LU> #include <Eigen/LU>
@ -137,6 +137,10 @@ public :
X = L.template marked<Lower>().solveTriangular(B); 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){ static inline void cholesky(const gene_matrix & X, gene_matrix & C, int N){
C = X.cholesky().matrixL(); C = X.cholesky().matrixL();
// C = X; // C = X;

View File

@ -19,6 +19,7 @@
#include "eigen2_interface.hh" #include "eigen2_interface.hh"
#include "bench.hh" #include "bench.hh"
#include "action_trisolve.hh" #include "action_trisolve.hh"
#include "action_trisolve_matrix.hh"
#include "action_cholesky.hh" #include "action_cholesky.hh"
#include "action_hessenberg.hh" #include "action_hessenberg.hh"
#include "action_lu_decomp.hh" #include "action_lu_decomp.hh"
@ -28,6 +29,7 @@ BTL_MAIN;
int main() int main()
{ {
bench<Action_trisolve<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT); 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_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); bench<Action_lu_decomp<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);