mirror of
https://gitlab.com/libeigen/eigen.git
synced 2025-09-15 02:43:14 +08:00
add a partial LU bench in BTL
This commit is contained in:
parent
f26c691678
commit
c49d1fd2b5
@ -8,7 +8,8 @@ matrix_vector ; "{/*1.5 matrix vector product}" ; "matrix size" ; 4:2048
|
||||
trisolve ; "{/*1.5 triangular solver (X = inv(L) X)}" ; "size" ; 4:2048
|
||||
matrix_trisolve ; "{/*1.5 matrix triangular solver (M = inv(L) M)}" ; "size" ; 4:2048
|
||||
cholesky ; "{/*1.5 Cholesky decomposition}" ; "matrix size" ; 4:2048
|
||||
lu_decomp ; "{/*1.5 LU decomposition}" ; "matrix size" ; 4:2048
|
||||
lu_decomp ; "{/*1.5 Complete LU decomposition}" ; "matrix size" ; 4:2048
|
||||
partial_lu_decomp ; "{/*1.5 Partial LU decomposition}" ; "matrix size" ; 4:2048
|
||||
tridiagonalization ; "{/*1.5 Tridiagonalization}" ; "matrix size" ; 4:2048
|
||||
hessenberg ; "{/*1.5 Hessenberg decomposition}" ; "matrix size" ; 4:2048
|
||||
symv ; "{/*1.5 symmetric matrix vector product}" ; "matrix size" ; 4:2048
|
||||
|
@ -42,6 +42,7 @@ source mk_mean_script.sh trisolve $1 11 100 300 1000 $mode $prefix
|
||||
source mk_mean_script.sh matrix_trisolve $1 11 100 300 1000 $mode $prefix
|
||||
source mk_mean_script.sh cholesky $1 11 100 300 1000 $mode $prefix
|
||||
source mk_mean_script.sh lu_decomp $1 11 100 300 1000 $mode $prefix
|
||||
source mk_mean_script.sh partial_lu_decomp $1 11 100 300 1000 $mode $prefix
|
||||
source mk_mean_script.sh tridiagonalization $1 11 100 300 1000 $mode $prefix
|
||||
source mk_mean_script.sh hessenberg $1 11 100 300 1000 $mode $prefix
|
||||
source mk_mean_script.sh symv $1 11 50 300 1000 $mode $prefix
|
||||
|
@ -61,6 +61,7 @@ extern "C"
|
||||
void sgehrd_( const int *n, int *ilo, int *ihi, float *a, const int *lda, float *tau, float *work, int *lwork, int *info );
|
||||
|
||||
// LU row pivoting
|
||||
// void dgetrf_( int *m, int *n, double *a, int *lda, int *ipiv, int *info );
|
||||
// void sgetrf_(const int* m, const int* n, float *a, const int* ld, int* ipivot, int* info);
|
||||
// LU full pivoting
|
||||
void sgetc2_(const int* n, float *a, const int *lda, int *ipiv, int *jpiv, int*info );
|
||||
@ -247,6 +248,15 @@ public :
|
||||
sgetc2_(&N, C, &N, ipiv, jpiv, &info);
|
||||
}
|
||||
|
||||
static inline void partial_lu_decomp(const gene_matrix & X, gene_matrix & C, int N){
|
||||
int N2 = N*N;
|
||||
scopy_(&N2, X, &intone, C, &intone);
|
||||
char uplo = 'L';
|
||||
int info = 0;
|
||||
int * ipiv = (int*)alloca(sizeof(int)*N);
|
||||
sgetrf_(&N, &N, C, &N, ipiv, &info);
|
||||
}
|
||||
|
||||
static inline void hessenberg(const gene_matrix & X, gene_matrix & C, int N){
|
||||
#ifdef PUREBLAS
|
||||
{
|
||||
|
@ -24,6 +24,7 @@
|
||||
|
||||
#include "action_cholesky.hh"
|
||||
#include "action_lu_decomp.hh"
|
||||
#include "action_partial_lu_decomp.hh"
|
||||
#include "action_trisolve_matrix.hh"
|
||||
|
||||
#ifdef HAS_LAPACK
|
||||
@ -54,6 +55,7 @@ int main()
|
||||
|
||||
#ifdef HAS_LAPACK
|
||||
bench<Action_lu_decomp<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
|
||||
bench<Action_partial_lu_decomp<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
|
||||
bench<Action_hessenberg<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
|
||||
bench<Action_tridiagonalization<C_BLAS_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
|
||||
#endif
|
||||
|
@ -202,7 +202,10 @@ public :
|
||||
|
||||
static inline void lu_decomp(const gene_matrix & X, gene_matrix & C, int N){
|
||||
C = X.lu().matrixLU();
|
||||
// C = X.inverse();
|
||||
}
|
||||
|
||||
static inline void partial_lu_decomp(const gene_matrix & X, gene_matrix & C, int N){
|
||||
C = X.partialLu().matrixLU();
|
||||
}
|
||||
|
||||
static inline void tridiagonalization(const gene_matrix & X, gene_matrix & C, int N){
|
||||
|
@ -23,6 +23,7 @@
|
||||
#include "action_cholesky.hh"
|
||||
#include "action_hessenberg.hh"
|
||||
#include "action_lu_decomp.hh"
|
||||
#include "action_partial_lu_decomp.hh"
|
||||
|
||||
BTL_MAIN;
|
||||
|
||||
@ -32,6 +33,7 @@ int main()
|
||||
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);
|
||||
bench<Action_partial_lu_decomp<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
|
||||
|
||||
bench<Action_hessenberg<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
|
||||
bench<Action_tridiagonalization<eigen2_interface<REAL_TYPE> > >(MIN_MM,MAX_MM,NB_POINT);
|
||||
|
Loading…
x
Reference in New Issue
Block a user