suanPan
🧮 An Open Source, Parallel and Heterogeneous Finite Element Analysis Framework
Loading...
Searching...
No Matches
MetaMat
Collaboration diagram for MetaMat:

Namespaces

namespace  suanpan
 
namespace  suanpan::detail
 
namespace  suanpan::detail::magma
 

Classes

class  cuda_ptr
 
class  BandMatCluster< T >
 A BandMatCluster class that holds matrices. More...
 
class  BandSymmMatCluster< T >
 A BandSymmMatCluster class that holds matrices. More...
 
class  FullMatBaseCluster< T, solver_t >
 
class  BandMat< T >
 A BandMat class that holds matrices. More...
 
class  BandMatMAGMA< T >
 A BandMatMAGMA class that holds matrices. More...
 
class  BandMatSpike< T >
 A BandMatSpike class that holds matrices. More...
 
class  BandSymmMat< T >
 A BandSymmMat class that holds matrices. More...
 
class  FullMat< T >
 A FullMat class that holds matrices. More...
 
class  FullMatCUDA< T >
 A FullMatCUDA class that holds matrices. More...
 
class  SymmPackMat< T >
 A SymmPackMat class that holds matrices. More...
 
class  DenseMat< T >
 A DenseMat class that holds matrices. More...
 
class  MetaMat< T >
 A MetaMat class that holds matrices. More...
 
class  op_add< T >
 
class  op_scale< T >
 
class  SparseMatClusterLIS< T >
 A SparseMatClusterLIS class that holds matrices. More...
 
class  SparseMatBaseClusterMUMPS< T, sym >
 
class  SparseMatBaseClusterPARDISO< T, mtype >
 
class  SparseMatCUDA< T >
 A SparseMatCUDA class that holds matrices. More...
 
class  SparseMatFGMRES< T >
 A SparseMatFGMRES class that holds matrices. More...
 
class  SparseMatMAGMA< T >
 A SparseMatMAGMA class that holds matrices. More...
 
class  SparseMatBasePARDISO< T, MT >
 
class  SparseMatSuperLU< T >
 A SparseMatSuperLU class that holds matrices. More...
 
class  SparseMat< T >
 A SparseMat class that holds matrices. More...
 

Typedefs

template<sp_d T>
using FullMatCluster = FullMatBaseCluster< T, ezp::pgesv< T, la_it > >
 
template<sp_d T>
using FullSymmMatCluster = FullMatBaseCluster< T, ezp::pposv< T, la_it > >
 
using la_it = std::int32_t
 
template<sp_d T>
using SparseMatClusterMUMPS = SparseMatBaseClusterMUMPS< T, ezp::unsymmetric >
 
template<sp_d T>
using SparseSymmMatClusterMUMPS = SparseMatBaseClusterMUMPS< T, ezp::symmetric_indefinite >
 
template<sp_d T>
using SparseSPDMatClusterMUMPS = SparseMatBaseClusterMUMPS< T, ezp::symmetric_positive_definite >
 
template<sp_d T>
using SparseMatClusterPARDISO = SparseMatBaseClusterPARDISO< T, ezp::real_and_nonsymmetric >
 
template<sp_d T>
using SparseSymmMatClusterPARDISO = SparseMatBaseClusterPARDISO< T, ezp::real_and_symmetric_indefinite >
 
template<sp_d T>
using SparseSPDMatClusterPARDISO = SparseMatBaseClusterPARDISO< T, ezp::real_and_symmetric_positive_definite >
 
template<sp_d T>
using SparseMatPARDISO = SparseMatBasePARDISO< T, 11 >
 
template<sp_d T>
using SparseSymmMatPARDISO = SparseMatBasePARDISO< T, -2 >
 

Functions

void spikeinit_ (la_it *, la_it *, la_it *)
 
void dspike_tune_ (la_it *)
 
void dspike_gbsv_ (la_it *, la_it *, la_it *, la_it *, la_it *, double *, la_it *, double *, la_it *, la_it *)
 
void dspike_gbtrf_ (la_it *, la_it *, la_it *, la_it *, double *, la_it *, double *, la_it *)
 
void dspike_gbtrs_ (la_it *, const char *, la_it *, la_it *, la_it *, la_it *, double *, la_it *, double *, double *, la_it *)
 
void sspike_tune_ (la_it *)
 
void sspike_gbsv_ (la_it *, la_it *, la_it *, la_it *, la_it *, float *, la_it *, float *, la_it *, la_it *)
 
void sspike_gbtrf_ (la_it *, la_it *, la_it *, la_it *, float *, la_it *, float *, la_it *)
 
void sspike_gbtrs_ (la_it *, const char *, la_it *, la_it *, la_it *, la_it *, float *, la_it *, float *, float *, la_it *)
 
template<sp_d T>
uword round_up (const uword in_size)
 
template<sp_d T>
Mat< T > to_mat (const MetaMat< T > &in_mat)
 
template<sp_d T>
Mat< T > to_mat (const shared_ptr< MetaMat< T > > &in_mat)
 
template<sp_d data_t, sp_i index_t>
Mat< data_t > to_mat (const triplet_form< data_t, index_t > &in_mat)
 
template<sp_d data_t, sp_i index_t>
Mat< data_t > to_mat (const csr_form< data_t, index_t > &in_mat)
 
template<sp_d data_t, sp_i index_t>
Mat< data_t > to_mat (const csc_form< data_t, index_t > &in_mat)
 
template<sp_d data_t, sp_i index_t>
triplet_form< data_t, index_t > to_triplet_form (MetaMat< data_t > *in_mat)
 
template<sp_d data_t, sp_i index_t>
triplet_form< data_t, index_t > to_triplet_form (const shared_ptr< MetaMat< data_t > > &in_mat)
 
void pardisoinit (void *pt, const la_it *mtype, la_it *iparm)
 
void pardiso (void *pt, const la_it *maxfct, const la_it *mnum, const la_it *mtype, const la_it *phase, const la_it *n, const void *a, const la_it *ia, const la_it *ja, la_it *perm, const la_it *nrhs, la_it *iparm, const la_it *msglvl, void *b, void *x, la_it *error)
 
Mat< T > BandMatCluster< T >::operator* (const Mat< T > &) const override
 
int BandMatCluster< T >::direct_solve (Mat< T > &, Mat< T > &&) override
 
Mat< T > BandSymmMatCluster< T >::operator* (const Mat< T > &) const override
 
int BandSymmMatCluster< T >::direct_solve (Mat< T > &, Mat< T > &&) override
 
Mat< T > FullMatBaseCluster< T, solver_t >::operator* (const Mat< T > &) const override
 
int FullMatBaseCluster< T, solver_t >::direct_solve (Mat< T > &, Mat< T > &&) override
 
Mat< T > BandMat< T >::operator* (const Mat< T > &) const override
 
int BandMat< T >::direct_solve (Mat< T > &, Mat< T > &&) override
 
int BandMatMAGMA< T >::direct_solve (Mat< T > &, Mat< T > &&) override
 
Mat< T > BandMatSpike< T >::operator* (const Mat< T > &) const override
 
int BandMatSpike< T >::direct_solve (Mat< T > &, Mat< T > &&) override
 
Mat< T > BandSymmMat< T >::operator* (const Mat< T > &) const override
 
int BandSymmMat< T >::direct_solve (Mat< T > &, Mat< T > &&) override
 
Mat< T > FullMat< T >::operator* (const Mat< T > &) const override
 
int FullMat< T >::direct_solve (Mat< T > &, Mat< T > &&) override
 
int FullMatCUDA< T >::direct_solve (Mat< T > &, const Mat< T > &) override
 
Mat< T > SymmPackMat< T >::operator* (const Mat< T > &) const override
 
int SymmPackMat< T >::direct_solve (Mat< T > &, Mat< T > &&) override
 
int SparseMatCUDA< T >::direct_solve (Mat< T > &, const Mat< T > &) override
 
int SparseMatFGMRES< T >::direct_solve (Mat< T > &, const Mat< T > &) override
 
 SparseMatMAGMA< T >::SparseMatMAGMA (const SparseMatMAGMA &)
 
int SparseMatMAGMA< T >::direct_solve (Mat< T > &, Mat< T > &&) override
 
int SparseMatBasePARDISO< T, MT >::direct_solve (Mat< T > &, const Mat< T > &) override
 
 SparseMatSuperLU< T >::SparseMatSuperLU (uword, uword, uword=0)
 
 SparseMatSuperLU< T >::SparseMatSuperLU (const SparseMatSuperLU &)
 
 SparseMatSuperLU< T >::~SparseMatSuperLU () override
 
unique_ptr< MetaMat< T > > SparseMatSuperLU< T >::unique_copy () override
 
int SparseMatSuperLU< T >::direct_solve (Mat< T > &, Mat< T > &&) override
 

Detailed Description

Typedef Documentation

◆ FullMatCluster

template<sp_d T>
using FullMatCluster = FullMatBaseCluster<T, ezp::pgesv<T, la_it> >

◆ FullSymmMatCluster

template<sp_d T>
using FullSymmMatCluster = FullMatBaseCluster<T, ezp::pposv<T, la_it> >

◆ la_it

using la_it = std::int32_t

◆ SparseMatClusterMUMPS

template<sp_d T>
using SparseMatClusterMUMPS = SparseMatBaseClusterMUMPS<T, ezp::unsymmetric>

◆ SparseMatClusterPARDISO

template<sp_d T>
using SparseMatClusterPARDISO = SparseMatBaseClusterPARDISO<T, ezp::real_and_nonsymmetric>

◆ SparseMatPARDISO

template<sp_d T>
using SparseMatPARDISO = SparseMatBasePARDISO<T, 11>

◆ SparseSPDMatClusterMUMPS

template<sp_d T>
using SparseSPDMatClusterMUMPS = SparseMatBaseClusterMUMPS<T, ezp::symmetric_positive_definite>

◆ SparseSPDMatClusterPARDISO

template<sp_d T>
using SparseSPDMatClusterPARDISO = SparseMatBaseClusterPARDISO<T, ezp::real_and_symmetric_positive_definite>

◆ SparseSymmMatClusterMUMPS

template<sp_d T>
using SparseSymmMatClusterMUMPS = SparseMatBaseClusterMUMPS<T, ezp::symmetric_indefinite>

◆ SparseSymmMatClusterPARDISO

template<sp_d T>
using SparseSymmMatClusterPARDISO = SparseMatBaseClusterPARDISO<T, ezp::real_and_symmetric_indefinite>

◆ SparseSymmMatPARDISO

template<sp_d T>
using SparseSymmMatPARDISO = SparseMatBasePARDISO<T, -2>

Function Documentation

◆ direct_solve() [1/15]

template<sp_d T>
int FullMatCUDA< T >::direct_solve ( Mat< T > &  X,
const Mat< T > &  B 
)
overrideprotectedvirtual

Reimplemented from DenseMat< T >.

Here is the call graph for this function:

◆ direct_solve() [2/15]

template<sp_d T>
int SparseMatCUDA< T >::direct_solve ( Mat< T > &  X,
const Mat< T > &  B 
)
overrideprotectedvirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ direct_solve() [3/15]

template<sp_d T>
int SparseMatFGMRES< T >::direct_solve ( Mat< T > &  X,
const Mat< T > &  B 
)
overrideprotectedvirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ direct_solve() [4/15]

template<sp_d T, la_it MT>
int SparseMatBasePARDISO< T, MT >::direct_solve ( Mat< T > &  X,
const Mat< T > &  B 
)
overrideprotectedvirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ direct_solve() [5/15]

template<sp_d T>
int BandMatCluster< T >::direct_solve ( Mat< T > &  X,
Mat< T > &&  B 
)
overrideprotectedvirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ direct_solve() [6/15]

template<sp_d T>
int BandSymmMatCluster< T >::direct_solve ( Mat< T > &  X,
Mat< T > &&  B 
)
overrideprotectedvirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ direct_solve() [7/15]

template<sp_d T, typename solver_t >
int FullMatBaseCluster< T, solver_t >::direct_solve ( Mat< T > &  X,
Mat< T > &&  B 
)
overrideprotectedvirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ direct_solve() [8/15]

template<sp_d T>
int BandMat< T >::direct_solve ( Mat< T > &  X,
Mat< T > &&  B 
)
overrideprotectedvirtual

Implements MetaMat< T >.

Reimplemented in BandMatMAGMA< T >.

Here is the call graph for this function:

◆ direct_solve() [9/15]

template<sp_d T>
int BandMatMAGMA< T >::direct_solve ( Mat< T > &  X,
Mat< T > &&  B 
)
overrideprotectedvirtual

Reimplemented from BandMat< T >.

Here is the call graph for this function:

◆ direct_solve() [10/15]

template<sp_d T>
int BandMatSpike< T >::direct_solve ( Mat< T > &  X,
Mat< T > &&  B 
)
overrideprotectedvirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ direct_solve() [11/15]

template<sp_d T>
int BandSymmMat< T >::direct_solve ( Mat< T > &  X,
Mat< T > &&  B 
)
overrideprotectedvirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ direct_solve() [12/15]

template<sp_d T>
int FullMat< T >::direct_solve ( Mat< T > &  X,
Mat< T > &&  B 
)
overrideprotectedvirtual

Implements MetaMat< T >.

Reimplemented in FullMatCUDA< T >.

Here is the call graph for this function:

◆ direct_solve() [13/15]

template<sp_d T>
int SymmPackMat< T >::direct_solve ( Mat< T > &  X,
Mat< T > &&  B 
)
overrideprotectedvirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ direct_solve() [14/15]

template<sp_d T>
int SparseMatMAGMA< T >::direct_solve ( Mat< T > &  X,
Mat< T > &&  B 
)
overrideprotectedvirtual

Reimplemented from SparseMat< T >.

Here is the call graph for this function:

◆ direct_solve() [15/15]

template<sp_d T>
int SparseMatSuperLU< T >::direct_solve ( Mat< T > &  out_mat,
Mat< T > &&  in_mat 
)
overrideprotectedvirtual

Reimplemented from SparseMat< T >.

◆ dspike_gbsv_()

void dspike_gbsv_ ( la_it ,
la_it ,
la_it ,
la_it ,
la_it ,
double ,
la_it ,
double ,
la_it ,
la_it  
)

◆ dspike_gbtrf_()

void dspike_gbtrf_ ( la_it ,
la_it ,
la_it ,
la_it ,
double ,
la_it ,
double ,
la_it  
)
Here is the caller graph for this function:

◆ dspike_gbtrs_()

void dspike_gbtrs_ ( la_it ,
const char *  ,
la_it ,
la_it ,
la_it ,
la_it ,
double ,
la_it ,
double ,
double ,
la_it  
)

◆ dspike_tune_()

void dspike_tune_ ( la_it )

◆ operator*() [1/8]

template<sp_d T>
Mat< T > BandMatCluster< T >::operator* ( const Mat< T > &  X) const
overridevirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ operator*() [2/8]

template<sp_d T>
Mat< T > BandSymmMatCluster< T >::operator* ( const Mat< T > &  X) const
overridevirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ operator*() [3/8]

template<sp_d T, typename solver_t >
Mat< T > FullMatBaseCluster< T, solver_t >::operator* ( const Mat< T > &  B) const
overridevirtual

Implements MetaMat< T >.

◆ operator*() [4/8]

template<sp_d T>
Mat< T > BandMat< T >::operator* ( const Mat< T > &  X) const
overridevirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ operator*() [5/8]

template<sp_d T>
Mat< T > BandMatSpike< T >::operator* ( const Mat< T > &  X) const
overridevirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ operator*() [6/8]

template<sp_d T>
Mat< T > BandSymmMat< T >::operator* ( const Mat< T > &  X) const
overridevirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ operator*() [7/8]

template<sp_d T>
Mat< T > FullMat< T >::operator* ( const Mat< T > &  B) const
overridevirtual

Implements MetaMat< T >.

◆ operator*() [8/8]

template<sp_d T>
Mat< T > SymmPackMat< T >::operator* ( const Mat< T > &  X) const
overridevirtual

Implements MetaMat< T >.

Here is the call graph for this function:

◆ pardiso()

void pardiso ( void *  pt,
const la_it maxfct,
const la_it mnum,
const la_it mtype,
const la_it phase,
const la_it n,
const void *  a,
const la_it ia,
const la_it ja,
la_it perm,
const la_it nrhs,
la_it iparm,
const la_it msglvl,
void *  b,
void *  x,
la_it error 
)
Here is the caller graph for this function:

◆ pardisoinit()

void pardisoinit ( void *  pt,
const la_it mtype,
la_it iparm 
)

◆ round_up()

template<sp_d T>
uword round_up ( const uword  in_size)

◆ SparseMatMAGMA()

template<sp_d T>
SparseMatMAGMA< T >::SparseMatMAGMA ( const SparseMatMAGMA< T > &  other)
Here is the call graph for this function:

◆ SparseMatSuperLU() [1/2]

template<sp_d T>
SparseMatSuperLU< T >::SparseMatSuperLU ( const SparseMatSuperLU< T > &  other)

◆ SparseMatSuperLU() [2/2]

template<sp_d T>
SparseMatSuperLU< T >::SparseMatSuperLU ( uword  in_row,
uword  in_col,
uword  in_elem = 0 
)

◆ spikeinit_()

void spikeinit_ ( la_it ,
la_it ,
la_it  
)

◆ sspike_gbsv_()

void sspike_gbsv_ ( la_it ,
la_it ,
la_it ,
la_it ,
la_it ,
float *  ,
la_it ,
float *  ,
la_it ,
la_it  
)

◆ sspike_gbtrf_()

void sspike_gbtrf_ ( la_it ,
la_it ,
la_it ,
la_it ,
float *  ,
la_it ,
float *  ,
la_it  
)
Here is the caller graph for this function:

◆ sspike_gbtrs_()

void sspike_gbtrs_ ( la_it ,
const char *  ,
la_it ,
la_it ,
la_it ,
la_it ,
float *  ,
la_it ,
float *  ,
float *  ,
la_it  
)

◆ sspike_tune_()

void sspike_tune_ ( la_it )

◆ to_mat() [1/5]

template<sp_d data_t, sp_i index_t>
Mat< data_t > to_mat ( const csc_form< data_t, index_t > &  in_mat)
Here is the call graph for this function:

◆ to_mat() [2/5]

template<sp_d data_t, sp_i index_t>
Mat< data_t > to_mat ( const csr_form< data_t, index_t > &  in_mat)
Here is the call graph for this function:

◆ to_mat() [3/5]

template<sp_d T>
Mat< T > to_mat ( const MetaMat< T > &  in_mat)
Here is the caller graph for this function:

◆ to_mat() [4/5]

template<sp_d T>
Mat< T > to_mat ( const shared_ptr< MetaMat< T > > &  in_mat)
Here is the call graph for this function:

◆ to_mat() [5/5]

template<sp_d data_t, sp_i index_t>
Mat< data_t > to_mat ( const triplet_form< data_t, index_t > &  in_mat)
Here is the call graph for this function:

◆ to_triplet_form() [1/2]

template<sp_d data_t, sp_i index_t>
triplet_form< data_t, index_t > to_triplet_form ( const shared_ptr< MetaMat< data_t > > &  in_mat)

◆ to_triplet_form() [2/2]

template<sp_d data_t, sp_i index_t>
triplet_form< data_t, index_t > to_triplet_form ( MetaMat< data_t > *  in_mat)
Here is the call graph for this function:

◆ unique_copy()

template<sp_d T>
unique_ptr< MetaMat< T > > SparseMatSuperLU< T >::unique_copy ( )
overridevirtual

Implements MetaMat< T >.

◆ ~SparseMatSuperLU()

template<sp_d T>
SparseMatSuperLU< T >::~SparseMatSuperLU ( )
override