37 #include "dense/BLASLAPACKWrapper.hpp" 
  131   enum class EquilibrationType : char
 
  132     { NONE=
'N', ROW=
'R', COLUMN=
'C', BOTH=
'B' };
 
  186   { 
return real_t(1.e-6); }
 
  194   { 
return real_t(1.e-10); }
 
  198   inline int default_gpu_streams() { 
return 4; }
 
  222     using real_t = 
typename RealType<scalar_t>::value_type;
 
  241     SPOptions(
int argc, 
const char* 
const argv[]) : argc_(argc), argv_(argv) {
 
  242       hss_opts_.set_verbose(
false);
 
  243       blr_opts_.set_verbose(
false);
 
  244       hodlr_opts_.set_verbose(
false);
 
  280       assert(atol >= 
real_t(0.));
 
  364       assert(
nx>=1 && 
ny>=1 && 
nz>=1);
 
  365       nx_ = 
nx; ny_ = 
ny; nz_ = 
nz;
 
  434     { assert(width>=1); separator_width_ = width; }
 
  562       hss_opts_.set_rel_tol(rtol);
 
  563       blr_opts_.set_rel_tol(rtol);
 
  564       hodlr_opts_.set_rel_tol(rtol);
 
  581       hss_opts_.set_abs_tol(atol);
 
  582       blr_opts_.set_abs_tol(atol);
 
  583       hodlr_opts_.set_abs_tol(atol);
 
  598       hss_min_sep_size_ = s;
 
  599       blr_min_sep_size_ = s;
 
  600       hodlr_min_sep_size_ = s;
 
  601       lossy_min_sep_size_ = s;
 
  603     void set_hss_min_sep_size(
int s) {
 
  605       hss_min_sep_size_ = s;
 
  607     void set_hodlr_min_sep_size(
int s) {
 
  609       hodlr_min_sep_size_ = s;
 
  611     void set_blr_min_sep_size(
int s) {
 
  613       blr_min_sep_size_ = s;
 
  615     void set_lossy_min_sep_size(
int s) {
 
  617       lossy_min_sep_size_ = s;
 
  631       hss_min_front_size_ = s;
 
  632       blr_min_front_size_ = s;
 
  633       hodlr_min_front_size_ = s;
 
  634       lossy_min_front_size_ = s;
 
  636     void set_hss_min_front_size(
int s) {
 
  638       hss_min_front_size_ = s;
 
  640     void set_hodlr_min_front_size(
int s) {
 
  642       hodlr_min_front_size_ = s;
 
  644     void set_blr_min_front_size(
int s) {
 
  646       blr_min_front_size_ = s;
 
  648     void set_lossy_min_front_size(
int s) {
 
  650       lossy_min_front_size_ = s;
 
  659       hss_opts_.set_leaf_size(s);
 
  660       blr_opts_.set_leaf_size(s);
 
  661       hodlr_opts_.set_leaf_size(s);
 
  680     { assert(l >= 0); sep_order_level_ = l; }
 
  682 #ifndef DOXYGEN_SHOULD_SKIP_THIS 
  683     void enable_indirect_sampling() { indirect_sampling_ = 
true; }
 
  684     void disable_indirect_sampling() { indirect_sampling_ = 
false; }
 
  787     int maxit()
 const { 
return maxit_; }
 
  843     int nx()
 const { 
return nx_; }
 
  849     int ny()
 const { 
return ny_; }
 
  855     int nz()
 const { 
return nz_; }
 
  924         return hss_opts_.rel_tol();
 
  926         return blr_opts_.rel_tol();
 
  928         return hodlr_opts_.rel_tol();
 
  930         if (l==0) 
return hodlr_opts_.rel_tol();
 
  931         else return blr_opts_.rel_tol();
 
  933         if (l==0) 
return hodlr_opts_.rel_tol();
 
  934         else return blr_opts_.rel_tol();
 
  953         return hss_opts_.abs_tol();
 
  955         return blr_opts_.abs_tol();
 
  957         return hodlr_opts_.abs_tol();
 
  959         if (l==0) 
return hodlr_opts_.abs_tol();
 
  960         else return blr_opts_.abs_tol();
 
  962         if (l==0) 
return hodlr_opts_.abs_tol();
 
  963         else return blr_opts_.abs_tol();
 
  981         return hss_min_sep_size_;
 
  983         return blr_min_sep_size_;
 
  985         return hodlr_min_sep_size_;
 
  987         if (l==0) 
return hodlr_min_sep_size_;
 
  988         else return blr_min_sep_size_;
 
  990         if (l==0) 
return hodlr_min_sep_size_;
 
  991         else if (l==1) 
return blr_min_sep_size_;
 
  992         else return lossy_min_sep_size_;
 
  995         return lossy_min_sep_size_;
 
  998         return std::numeric_limits<int>::max();
 
 1001     int hss_min_sep_size()
 const {
 
 1002       return hss_min_sep_size_;
 
 1004     int hodlr_min_sep_size()
 const {
 
 1005       return hodlr_min_sep_size_;
 
 1007     int blr_min_sep_size()
 const {
 
 1008       return blr_min_sep_size_;
 
 1010     int lossy_min_sep_size()
 const {
 
 1011       return lossy_min_sep_size_;
 
 1024         return hss_min_front_size_;
 
 1026         return blr_min_front_size_;
 
 1028         return hodlr_min_front_size_;
 
 1030         if (l==0) 
return hodlr_min_front_size_;
 
 1031         else return blr_min_front_size_;
 
 1033         if (l==0) 
return hodlr_min_front_size_;
 
 1034         else if (l==1) 
return blr_min_front_size_;
 
 1035         else return lossy_min_front_size_;
 
 1038         return lossy_min_front_size_;
 
 1041         return std::numeric_limits<int>::max();
 
 1044     int hss_min_front_size()
 const {
 
 1045       return hss_min_front_size_;
 
 1047     int hodlr_min_front_size()
 const {
 
 1048       return hodlr_min_front_size_;
 
 1050     int blr_min_front_size()
 const {
 
 1051       return blr_min_front_size_;
 
 1053     int lossy_min_front_size()
 const {
 
 1054       return lossy_min_front_size_;
 
 1068         return hss_opts_.leaf_size();
 
 1070         return blr_opts_.leaf_size();
 
 1072         return hodlr_opts_.leaf_size();
 
 1074         if (l==0) 
return hodlr_opts_.leaf_size();
 
 1075         else return blr_opts_.leaf_size();
 
 1077         if (l==0) 
return hodlr_opts_.leaf_size();
 
 1078         else if (l==1) 
return blr_opts_.leaf_size();
 
 1085         return std::numeric_limits<int>::max();
 
 1144         -1 : lossy_precision_;
 
 1234     bool verbose_ = 
true;
 
 1237     real_t rel_tol_ = default_rel_tol<real_t>();
 
 1238     real_t abs_tol_ = default_abs_tol<real_t>();
 
 1240     int gmres_restart_ = 30;
 
 1244     int nd_planar_levels_ = 0;
 
 1249     int components_ = 1;
 
 1250     int separator_width_ = 1;
 
 1251     bool use_METIS_NodeNDP_ = 
false;
 
 1252     bool use_MUMPS_SYMQAMD_ = 
false;
 
 1253     bool use_agg_amalg_ = 
false;
 
 1255     bool log_assembly_tree_ = 
false;
 
 1256     bool replace_tiny_pivots_ = 
false;
 
 1257     real_t pivot_ = std::sqrt(blas::lamch<real_t>(
'E'));
 
 1258     bool write_root_front_ = 
false;
 
 1259     bool print_comp_front_stats_ = 
false;
 
 1261     bool use_openmp_tree_ = 
true;
 
 1264 #if defined(STRUMPACK_USE_CUDA) || defined(STRUMPACK_USE_HIP) || defined(STRUMPACK_USE_SYCL) 
 1265     bool use_gpu_ = 
true;
 
 1267     bool use_gpu_ = 
false;
 
 1269     int gpu_streams_ = default_gpu_streams();
 
 1275     int hss_min_front_size_ = 100000;
 
 1276     int hss_min_sep_size_ = 1000;
 
 1277     int sep_order_level_ = 1;
 
 1278     bool indirect_sampling_ = 
false;
 
 1283     int blr_min_front_size_ = 100000;
 
 1284     int blr_min_sep_size_ = 512;
 
 1288     int hodlr_min_front_size_ = 100000;
 
 1289     int hodlr_min_sep_size_ = 5000;
 
 1292     int lossy_min_front_size_ = 100000;
 
 1293     int lossy_min_sep_size_ = 8;
 
 1294     int lossy_precision_ = 16;
 
 1299     const char* 
const* argv_ = 
nullptr;
 
Contains class holding BLROptions.
Contains the class holding HODLR matrix options.
Contains the HSSOptions class as well as general routines for HSS options.
Class containing several options for the BLR code and data-structures.
Definition: BLROptions.hpp:82
Class containing several options for the HODLR code and data-structures.
Definition: HODLROptions.hpp:117
Class containing several options for the HSS code and data-structures.
Definition: HSSOptions.hpp:152
Options for the sparse solver.
Definition: StrumpackOptions.hpp:216
void disable_assembly_tree_log()
Definition: StrumpackOptions.hpp:536
void enable_METIS_NodeND()
Definition: StrumpackOptions.hpp:466
int nd_planar_levels() const
Definition: StrumpackOptions.hpp:837
void set_from_command_line()
Definition: StrumpackOptions.hpp:1211
void set_gpu_streams(int s)
Definition: StrumpackOptions.hpp:745
int compression_min_front_size(int l=0) const
Definition: StrumpackOptions.hpp:1021
void set_matching(MatchingJob job)
Definition: StrumpackOptions.hpp:525
void set_verbose(bool verbose)
Definition: StrumpackOptions.hpp:254
int gmres_restart() const
Definition: StrumpackOptions.hpp:811
void disable_agg_amalg()
Definition: StrumpackOptions.hpp:514
int compression_min_sep_size(int l=0) const
Definition: StrumpackOptions.hpp:978
void set_reordering_method(ReorderingStrategy m)
Definition: StrumpackOptions.hpp:324
real_t pivot_threshold() const
Definition: StrumpackOptions.hpp:1116
void set_maxit(int maxit)
Definition: StrumpackOptions.hpp:260
void set_nd_planar_levels(int nd_planar_levels)
Definition: StrumpackOptions.hpp:341
int gpu_streams() const
Definition: StrumpackOptions.hpp:1137
void disable_openmp_tree()
Definition: StrumpackOptions.hpp:759
void set_compression_rel_tol(real_t rtol)
Definition: StrumpackOptions.hpp:561
void set_rel_tol(real_t rtol)
Definition: StrumpackOptions.hpp:268
void set_compression_leaf_size(int s)
Definition: StrumpackOptions.hpp:658
void disable_METIS_NodeNDP()
Definition: StrumpackOptions.hpp:456
void set_compression_min_sep_size(int s)
Definition: StrumpackOptions.hpp:596
bool verbose() const
Definition: StrumpackOptions.hpp:781
SPOptions()
Definition: StrumpackOptions.hpp:228
void disable_gpu()
Definition: StrumpackOptions.hpp:740
bool use_METIS_NodeND() const
Definition: StrumpackOptions.hpp:880
bool write_root_front() const
Definition: StrumpackOptions.hpp:1121
int separator_width() const
Definition: StrumpackOptions.hpp:868
typename RealType< scalar_t >::value_type real_t
Definition: StrumpackOptions.hpp:222
void set_nd_param(int nd_param)
Definition: StrumpackOptions.hpp:332
bool use_agg_amalg() const
Definition: StrumpackOptions.hpp:893
void set_lossy_precision(int p)
Definition: StrumpackOptions.hpp:764
void describe_options() const
CompressionType compression() const
Definition: StrumpackOptions.hpp:910
int nx() const
Definition: StrumpackOptions.hpp:843
void set_print_compressed_front_stats(bool b)
Definition: StrumpackOptions.hpp:770
void set_ny(int ny)
Definition: StrumpackOptions.hpp:389
void set_GramSchmidt_type(GramSchmidtType t)
Definition: StrumpackOptions.hpp:310
int lossy_precision() const
Definition: StrumpackOptions.hpp:1142
void set_from_command_line(int argc, const char *const *cargv)
void set_pivot_threshold(real_t thresh)
Definition: StrumpackOptions.hpp:722
void set_separator_width(int width)
Definition: StrumpackOptions.hpp:433
void set_abs_tol(real_t atol)
Definition: StrumpackOptions.hpp:279
void set_write_root_front(bool b)
Definition: StrumpackOptions.hpp:729
void disable_replace_tiny_pivots()
Definition: StrumpackOptions.hpp:711
void enable_openmp_tree()
Definition: StrumpackOptions.hpp:752
int ny() const
Definition: StrumpackOptions.hpp:849
bool use_gpu() const
Definition: StrumpackOptions.hpp:1126
void enable_gpu()
Definition: StrumpackOptions.hpp:735
void set_separator_ordering_level(int l)
Definition: StrumpackOptions.hpp:679
int nd_param() const
Definition: StrumpackOptions.hpp:829
bool replace_tiny_pivots() const
Definition: StrumpackOptions.hpp:1106
MatchingJob matching() const
Definition: StrumpackOptions.hpp:899
void enable_replace_tiny_pivots()
Definition: StrumpackOptions.hpp:704
void set_nz(int nz)
Definition: StrumpackOptions.hpp:401
real_t compression_rel_tol(int l=0) const
Definition: StrumpackOptions.hpp:921
ReorderingStrategy reordering_method() const
Definition: StrumpackOptions.hpp:823
bool indirect_sampling() const
Definition: StrumpackOptions.hpp:1099
int maxit() const
Definition: StrumpackOptions.hpp:787
bool log_assembly_tree() const
Definition: StrumpackOptions.hpp:905
void enable_agg_amalg()
Definition: StrumpackOptions.hpp:504
int compression_leaf_size(int l=0) const
Definition: StrumpackOptions.hpp:1065
void disable_METIS_NodeND()
Definition: StrumpackOptions.hpp:475
void set_gmres_restart(int m)
Definition: StrumpackOptions.hpp:303
bool use_METIS_NodeNDP() const
Definition: StrumpackOptions.hpp:874
bool use_openmp_tree() const
Definition: StrumpackOptions.hpp:1132
const HODLR::HODLROptions< scalar_t > & HODLR_options() const
Definition: StrumpackOptions.hpp:1186
void disable_MUMPS_SYMQAMD()
Definition: StrumpackOptions.hpp:494
int components() const
Definition: StrumpackOptions.hpp:862
BLR::BLROptions< scalar_t > & BLR_options()
Definition: StrumpackOptions.hpp:1180
void set_compression_abs_tol(real_t atol)
Definition: StrumpackOptions.hpp:580
KrylovSolver Krylov_solver() const
Definition: StrumpackOptions.hpp:805
void set_dimensions(int nx, int ny=1, int nz=1)
Definition: StrumpackOptions.hpp:363
HODLR::HODLROptions< scalar_t > & HODLR_options()
Definition: StrumpackOptions.hpp:1192
int nz() const
Definition: StrumpackOptions.hpp:855
void set_nx(int nx)
Definition: StrumpackOptions.hpp:377
const BLR::BLROptions< scalar_t > & BLR_options() const
Definition: StrumpackOptions.hpp:1174
const HSS::HSSOptions< scalar_t > & HSS_options() const
Definition: StrumpackOptions.hpp:1162
HSS::HSSOptions< scalar_t > & HSS_options()
Definition: StrumpackOptions.hpp:1168
void set_compression(CompressionType c)
Definition: StrumpackOptions.hpp:546
bool print_compressed_front_stats() const
Definition: StrumpackOptions.hpp:1151
int separator_ordering_level() const
Definition: StrumpackOptions.hpp:1094
real_t abs_tol() const
Definition: StrumpackOptions.hpp:799
real_t rel_tol() const
Definition: StrumpackOptions.hpp:793
void set_Krylov_solver(KrylovSolver s)
Definition: StrumpackOptions.hpp:296
void enable_METIS_NodeNDP()
Definition: StrumpackOptions.hpp:445
GramSchmidtType GramSchmidt_type() const
Definition: StrumpackOptions.hpp:817
void set_compression_min_front_size(int s)
Definition: StrumpackOptions.hpp:629
void enable_assembly_tree_log()
Definition: StrumpackOptions.hpp:530
void enable_MUMPS_SYMQAMD()
Definition: StrumpackOptions.hpp:484
real_t compression_abs_tol(int l=0) const
Definition: StrumpackOptions.hpp:950
SPOptions(int argc, const char *const argv[])
Definition: StrumpackOptions.hpp:241
bool use_MUMPS_SYMQAMD() const
Definition: StrumpackOptions.hpp:886
ProportionalMapping proportional_mapping() const
Definition: StrumpackOptions.hpp:1156
void set_proportional_mapping(ProportionalMapping pmap)
Definition: StrumpackOptions.hpp:775
void set_components(int components)
Definition: StrumpackOptions.hpp:413
Definition: StrumpackOptions.hpp:43
GramSchmidtType
Definition: StrumpackOptions.hpp:156
real_t default_rel_tol()
Definition: StrumpackOptions.hpp:185
std::string get_description(MatchingJob job)
bool is_parallel(ReorderingStrategy method)
ProportionalMapping
Definition: StrumpackOptions.hpp:50
MatchingJob
Definition: StrumpackOptions.hpp:119
@ MAX_SMALLEST_DIAGONAL_2
@ MAX_DIAGONAL_PRODUCT_SCALING
CompressionType
Definition: StrumpackOptions.hpp:91
ReorderingStrategy
Definition: StrumpackOptions.hpp:60
KrylovSolver
Definition: StrumpackOptions.hpp:165
std::string get_name(ReorderingStrategy method)
MatchingJob get_matching(int job)
real_t default_abs_tol()
Definition: StrumpackOptions.hpp:193