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
|
#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_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);
|
||||||
|
|
||||||
|
@ -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)
|
||||||
|
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user