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
}
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_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);

View File

@ -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)

View File

@ -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;

View File

@ -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);