37 #include "dense/BLASLAPACKWrapper.hpp"
125 enum class EquilibrationType : char
126 { NONE=
'N', ROW=
'R', COLUMN=
'C', BOTH=
'B' };
180 {
return real_t(1.e-6); }
188 {
return real_t(1.e-10); }
192 inline int default_gpu_streams() {
return 4; }
216 using real_t =
typename RealType<scalar_t>::value_type;
235 SPOptions(
int argc,
const char*
const argv[]) : argc_(argc), argv_(argv) {
236 hss_opts_.set_verbose(
false);
237 blr_opts_.set_verbose(
false);
238 hodlr_opts_.set_verbose(
false);
273 assert(atol >=
real_t(0.));
357 assert(
nx>=1 &&
ny>=1 &&
nz>=1);
358 nx_ =
nx; ny_ =
ny; nz_ =
nz;
427 { assert(width>=1); separator_width_ = width; }
555 hss_opts_.set_rel_tol(rtol);
556 blr_opts_.set_rel_tol(rtol);
557 hodlr_opts_.set_rel_tol(rtol);
574 hss_opts_.set_abs_tol(atol);
575 blr_opts_.set_abs_tol(atol);
576 hodlr_opts_.set_abs_tol(atol);
591 hss_min_sep_size_ = s;
592 blr_min_sep_size_ = s;
593 hodlr_min_sep_size_ = s;
594 lossy_min_sep_size_ = s;
596 void set_hss_min_sep_size(
int s) {
598 hss_min_sep_size_ = s;
600 void set_hodlr_min_sep_size(
int s) {
602 hodlr_min_sep_size_ = s;
604 void set_blr_min_sep_size(
int s) {
606 blr_min_sep_size_ = s;
608 void set_lossy_min_sep_size(
int s) {
610 lossy_min_sep_size_ = s;
624 hss_min_front_size_ = s;
625 blr_min_front_size_ = s;
626 hodlr_min_front_size_ = s;
627 lossy_min_front_size_ = s;
629 void set_hss_min_front_size(
int s) {
631 hss_min_front_size_ = s;
633 void set_hodlr_min_front_size(
int s) {
635 hodlr_min_front_size_ = s;
637 void set_blr_min_front_size(
int s) {
639 blr_min_front_size_ = s;
641 void set_lossy_min_front_size(
int s) {
643 lossy_min_front_size_ = s;
652 hss_opts_.set_leaf_size(s);
653 blr_opts_.set_leaf_size(s);
654 hodlr_opts_.set_leaf_size(s);
673 { assert(l >= 0); sep_order_level_ = l; }
675 #ifndef DOXYGEN_SHOULD_SKIP_THIS
676 void enable_indirect_sampling() { indirect_sampling_ =
true; }
677 void disable_indirect_sampling() { indirect_sampling_ =
false; }
766 int maxit()
const {
return maxit_; }
822 int nx()
const {
return nx_; }
828 int ny()
const {
return ny_; }
834 int nz()
const {
return nz_; }
903 return hss_opts_.rel_tol();
905 return blr_opts_.rel_tol();
907 return hodlr_opts_.rel_tol();
909 if (l==0)
return hodlr_opts_.rel_tol();
910 else return blr_opts_.rel_tol();
912 if (l==0)
return hodlr_opts_.rel_tol();
913 else return blr_opts_.rel_tol();
932 return hss_opts_.abs_tol();
934 return blr_opts_.abs_tol();
936 return hodlr_opts_.abs_tol();
938 if (l==0)
return hodlr_opts_.abs_tol();
939 else return blr_opts_.abs_tol();
941 if (l==0)
return hodlr_opts_.abs_tol();
942 else return blr_opts_.abs_tol();
960 return hss_min_sep_size_;
962 return blr_min_sep_size_;
964 return hodlr_min_sep_size_;
966 if (l==0)
return hodlr_min_sep_size_;
967 else return blr_min_sep_size_;
969 if (l==0)
return hodlr_min_sep_size_;
970 else if (l==1)
return blr_min_sep_size_;
971 else return lossy_min_sep_size_;
974 return lossy_min_sep_size_;
977 return std::numeric_limits<int>::max();
980 int hss_min_sep_size()
const {
981 return hss_min_sep_size_;
983 int hodlr_min_sep_size()
const {
984 return hodlr_min_sep_size_;
986 int blr_min_sep_size()
const {
987 return blr_min_sep_size_;
989 int lossy_min_sep_size()
const {
990 return lossy_min_sep_size_;
1003 return hss_min_front_size_;
1005 return blr_min_front_size_;
1007 return hodlr_min_front_size_;
1009 if (l==0)
return hodlr_min_front_size_;
1010 else return blr_min_front_size_;
1012 if (l==0)
return hodlr_min_front_size_;
1013 else if (l==1)
return blr_min_front_size_;
1014 else return lossy_min_front_size_;
1017 return lossy_min_front_size_;
1020 return std::numeric_limits<int>::max();
1023 int hss_min_front_size()
const {
1024 return hss_min_front_size_;
1026 int hodlr_min_front_size()
const {
1027 return hodlr_min_front_size_;
1029 int blr_min_front_size()
const {
1030 return blr_min_front_size_;
1032 int lossy_min_front_size()
const {
1033 return lossy_min_front_size_;
1047 return hss_opts_.leaf_size();
1049 return blr_opts_.leaf_size();
1051 return hodlr_opts_.leaf_size();
1053 if (l==0)
return hodlr_opts_.leaf_size();
1054 else return blr_opts_.leaf_size();
1056 if (l==0)
return hodlr_opts_.leaf_size();
1057 else if (l==1)
return blr_opts_.leaf_size();
1064 return std::numeric_limits<int>::max();
1192 bool verbose_ =
true;
1195 real_t rel_tol_ = default_rel_tol<real_t>();
1196 real_t abs_tol_ = default_abs_tol<real_t>();
1198 int gmres_restart_ = 30;
1202 int nd_planar_levels_ = 0;
1207 int components_ = 1;
1208 int separator_width_ = 1;
1209 bool use_METIS_NodeNDP_ =
false;
1210 bool use_MUMPS_SYMQAMD_ =
false;
1211 bool use_agg_amalg_ =
false;
1213 bool log_assembly_tree_ =
false;
1214 bool replace_tiny_pivots_ =
false;
1215 real_t pivot_ = std::sqrt(blas::lamch<real_t>(
'E'));
1216 bool write_root_front_ =
false;
1217 bool print_comp_front_stats_ =
false;
1221 bool use_gpu_ =
true;
1222 int gpu_streams_ = default_gpu_streams();
1228 int hss_min_front_size_ = 5000;
1229 int hss_min_sep_size_ = 1000;
1230 int sep_order_level_ = 1;
1231 bool indirect_sampling_ =
false;
1236 int blr_min_front_size_ = 1000;
1237 int blr_min_sep_size_ = 256;
1241 int hodlr_min_front_size_ = 10000;
1242 int hodlr_min_sep_size_ = 5000;
1245 int lossy_min_front_size_ = 16;
1246 int lossy_min_sep_size_ = 8;
1247 int lossy_precision_ = 16;
1250 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:85
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:118
Options for the sparse solver.
Definition: StrumpackOptions.hpp:210
void disable_assembly_tree_log()
Definition: StrumpackOptions.hpp:529
void enable_METIS_NodeND()
Definition: StrumpackOptions.hpp:459
int nd_planar_levels() const
Definition: StrumpackOptions.hpp:816
void set_from_command_line()
Definition: StrumpackOptions.hpp:1169
void set_gpu_streams(int s)
Definition: StrumpackOptions.hpp:738
int compression_min_front_size(int l=0) const
Definition: StrumpackOptions.hpp:1000
void set_matching(MatchingJob job)
Definition: StrumpackOptions.hpp:518
void set_verbose(bool verbose)
Definition: StrumpackOptions.hpp:247
int gmres_restart() const
Definition: StrumpackOptions.hpp:790
void disable_agg_amalg()
Definition: StrumpackOptions.hpp:507
int compression_min_sep_size(int l=0) const
Definition: StrumpackOptions.hpp:957
void set_reordering_method(ReorderingStrategy m)
Definition: StrumpackOptions.hpp:317
real_t pivot_threshold() const
Definition: StrumpackOptions.hpp:1095
void set_maxit(int maxit)
Definition: StrumpackOptions.hpp:253
void set_nd_planar_levels(int nd_planar_levels)
Definition: StrumpackOptions.hpp:334
int gpu_streams() const
Definition: StrumpackOptions.hpp:1110
void set_compression_rel_tol(real_t rtol)
Definition: StrumpackOptions.hpp:554
void set_rel_tol(real_t rtol)
Definition: StrumpackOptions.hpp:261
void set_compression_leaf_size(int s)
Definition: StrumpackOptions.hpp:651
void disable_METIS_NodeNDP()
Definition: StrumpackOptions.hpp:449
void set_compression_min_sep_size(int s)
Definition: StrumpackOptions.hpp:589
bool verbose() const
Definition: StrumpackOptions.hpp:760
SPOptions()
Definition: StrumpackOptions.hpp:222
void disable_gpu()
Definition: StrumpackOptions.hpp:733
bool use_METIS_NodeND() const
Definition: StrumpackOptions.hpp:859
bool write_root_front() const
Definition: StrumpackOptions.hpp:1100
int separator_width() const
Definition: StrumpackOptions.hpp:847
typename RealType< scalar_t >::value_type real_t
Definition: StrumpackOptions.hpp:216
void set_nd_param(int nd_param)
Definition: StrumpackOptions.hpp:325
bool use_agg_amalg() const
Definition: StrumpackOptions.hpp:872
void set_lossy_precision(int p)
Definition: StrumpackOptions.hpp:743
void describe_options() const
CompressionType compression() const
Definition: StrumpackOptions.hpp:889
int nx() const
Definition: StrumpackOptions.hpp:822
void set_print_compressed_front_stats(bool b)
Definition: StrumpackOptions.hpp:749
void set_ny(int ny)
Definition: StrumpackOptions.hpp:382
void set_GramSchmidt_type(GramSchmidtType t)
Definition: StrumpackOptions.hpp:303
int lossy_precision() const
Definition: StrumpackOptions.hpp:1115
void set_from_command_line(int argc, const char *const *cargv)
void set_pivot_threshold(real_t thresh)
Definition: StrumpackOptions.hpp:715
void set_separator_width(int width)
Definition: StrumpackOptions.hpp:426
void set_abs_tol(real_t atol)
Definition: StrumpackOptions.hpp:272
void set_write_root_front(bool b)
Definition: StrumpackOptions.hpp:722
void disable_replace_tiny_pivots()
Definition: StrumpackOptions.hpp:704
int ny() const
Definition: StrumpackOptions.hpp:828
bool use_gpu() const
Definition: StrumpackOptions.hpp:1105
void enable_gpu()
Definition: StrumpackOptions.hpp:728
void set_separator_ordering_level(int l)
Definition: StrumpackOptions.hpp:672
int nd_param() const
Definition: StrumpackOptions.hpp:808
bool replace_tiny_pivots() const
Definition: StrumpackOptions.hpp:1085
MatchingJob matching() const
Definition: StrumpackOptions.hpp:878
void enable_replace_tiny_pivots()
Definition: StrumpackOptions.hpp:697
void set_nz(int nz)
Definition: StrumpackOptions.hpp:394
real_t compression_rel_tol(int l=0) const
Definition: StrumpackOptions.hpp:900
ReorderingStrategy reordering_method() const
Definition: StrumpackOptions.hpp:802
bool indirect_sampling() const
Definition: StrumpackOptions.hpp:1078
int maxit() const
Definition: StrumpackOptions.hpp:766
bool log_assembly_tree() const
Definition: StrumpackOptions.hpp:884
void enable_agg_amalg()
Definition: StrumpackOptions.hpp:497
int compression_leaf_size(int l=0) const
Definition: StrumpackOptions.hpp:1044
void disable_METIS_NodeND()
Definition: StrumpackOptions.hpp:468
void set_gmres_restart(int m)
Definition: StrumpackOptions.hpp:296
bool use_METIS_NodeNDP() const
Definition: StrumpackOptions.hpp:853
const HODLR::HODLROptions< scalar_t > & HODLR_options() const
Definition: StrumpackOptions.hpp:1156
void disable_MUMPS_SYMQAMD()
Definition: StrumpackOptions.hpp:487
int components() const
Definition: StrumpackOptions.hpp:841
BLR::BLROptions< scalar_t > & BLR_options()
Definition: StrumpackOptions.hpp:1150
void set_compression_abs_tol(real_t atol)
Definition: StrumpackOptions.hpp:573
KrylovSolver Krylov_solver() const
Definition: StrumpackOptions.hpp:784
void set_dimensions(int nx, int ny=1, int nz=1)
Definition: StrumpackOptions.hpp:356
HODLR::HODLROptions< scalar_t > & HODLR_options()
Definition: StrumpackOptions.hpp:1162
int nz() const
Definition: StrumpackOptions.hpp:834
void set_nx(int nx)
Definition: StrumpackOptions.hpp:370
const BLR::BLROptions< scalar_t > & BLR_options() const
Definition: StrumpackOptions.hpp:1144
const HSS::HSSOptions< scalar_t > & HSS_options() const
Definition: StrumpackOptions.hpp:1132
HSS::HSSOptions< scalar_t > & HSS_options()
Definition: StrumpackOptions.hpp:1138
void set_compression(CompressionType c)
Definition: StrumpackOptions.hpp:539
bool print_compressed_front_stats() const
Definition: StrumpackOptions.hpp:1121
int separator_ordering_level() const
Definition: StrumpackOptions.hpp:1073
real_t abs_tol() const
Definition: StrumpackOptions.hpp:778
real_t rel_tol() const
Definition: StrumpackOptions.hpp:772
void set_Krylov_solver(KrylovSolver s)
Definition: StrumpackOptions.hpp:289
void enable_METIS_NodeNDP()
Definition: StrumpackOptions.hpp:438
GramSchmidtType GramSchmidt_type() const
Definition: StrumpackOptions.hpp:796
void set_compression_min_front_size(int s)
Definition: StrumpackOptions.hpp:622
void enable_assembly_tree_log()
Definition: StrumpackOptions.hpp:523
void enable_MUMPS_SYMQAMD()
Definition: StrumpackOptions.hpp:477
real_t compression_abs_tol(int l=0) const
Definition: StrumpackOptions.hpp:929
SPOptions(int argc, const char *const argv[])
Definition: StrumpackOptions.hpp:235
bool use_MUMPS_SYMQAMD() const
Definition: StrumpackOptions.hpp:865
ProportionalMapping proportional_mapping() const
Definition: StrumpackOptions.hpp:1126
void set_proportional_mapping(ProportionalMapping pmap)
Definition: StrumpackOptions.hpp:754
void set_components(int components)
Definition: StrumpackOptions.hpp:406
Definition: StrumpackOptions.hpp:42
GramSchmidtType
Definition: StrumpackOptions.hpp:150
real_t default_rel_tol()
Definition: StrumpackOptions.hpp:179
std::string get_description(MatchingJob job)
bool is_parallel(ReorderingStrategy method)
ProportionalMapping
Definition: StrumpackOptions.hpp:49
MatchingJob
Definition: StrumpackOptions.hpp:113
@ MAX_SMALLEST_DIAGONAL_2
@ MAX_DIAGONAL_PRODUCT_SCALING
CompressionType
Definition: StrumpackOptions.hpp:85
ReorderingStrategy
Definition: StrumpackOptions.hpp:59
KrylovSolver
Definition: StrumpackOptions.hpp:159
std::string get_name(ReorderingStrategy method)
MatchingJob get_matching(int job)
real_t default_abs_tol()
Definition: StrumpackOptions.hpp:187