mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-08-12 19:59:05 +08:00
various updates in BTL
This commit is contained in:
parent
d2b345e6a9
commit
7ce70e1437
@ -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
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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)
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user