StrumpackOptions.hpp
Go to the documentation of this file.
1 /*
2  * STRUMPACK -- STRUctured Matrices PACKage, Copyright (c) 2014, The
3  * Regents of the University of California, through Lawrence Berkeley
4  * National Laboratory (subject to receipt of any required approvals
5  * from the U.S. Dept. of Energy). All rights reserved.
6  *
7  * If you have questions about your rights to use or distribute this
8  * software, please contact Berkeley Lab's Technology Transfer
9  * Department at TTD@lbl.gov.
10  *
11  * NOTICE. This software is owned by the U.S. Department of Energy. As
12  * such, the U.S. Government has been granted for itself and others
13  * acting on its behalf a paid-up, nonexclusive, irrevocable,
14  * worldwide license in the Software to reproduce, prepare derivative
15  * works, and perform publicly and display publicly. Beginning five
16  * (5) years after the date permission to assert copyright is obtained
17  * from the U.S. Department of Energy, and subject to any subsequent
18  * five (5) year renewals, the U.S. Government is granted for itself
19  * and others acting on its behalf a paid-up, nonexclusive,
20  * irrevocable, worldwide license in the Software to reproduce,
21  * prepare derivative works, distribute copies to the public, perform
22  * publicly and display publicly, and to permit others to do so.
23  *
24  * Developers: Pieter Ghysels, Francois-Henry Rouet, Xiaoye S. Li.
25  * (Lawrence Berkeley National Lab, Computational Research
26  * Division).
27  */
32 #ifndef SPOPTIONS_HPP
33 #define SPOPTIONS_HPP
34 
35 #include <limits>
36 
37 #include "dense/BLASLAPACKWrapper.hpp"
38 #include "HSS/HSSOptions.hpp"
39 #include "BLR/BLROptions.hpp"
40 #include "HODLR/HODLROptions.hpp"
41 
42 namespace strumpack {
43 
49  enum class ProportionalMapping {
50  FLOPS,
53  };
54 
59  enum class ReorderingStrategy {
60  NATURAL,
61  METIS,
62  PARMETIS,
63  SCOTCH,
64  PTSCOTCH,
65  RCM,
66  GEOMETRIC
68  };
69 
73  std::string get_name(ReorderingStrategy method);
74 
79 
85  enum class CompressionType {
86  NONE,
87  HSS,
88  BLR,
89  HODLR,
91  BLR_HODLR,
98  LOSSLESS,
99  LOSSY
100  };
101 
105  std::string get_name(CompressionType comp);
106 
107 
113  enum class MatchingJob {
114  NONE,
122  COMBBLAS
123  };
124 
125  enum class EquilibrationType : char
126  { NONE='N', ROW='R', COLUMN='C', BOTH='B' };
127 
128 
133 
139 
143  std::string get_description(MatchingJob job);
144 
145 
150  enum class GramSchmidtType {
151  CLASSICAL,
152  MODIFIED
153  };
154 
159  enum class KrylovSolver {
160  AUTO,
162  DIRECT,
164  REFINE,
165  PREC_GMRES,
167  GMRES,
168  PREC_BICGSTAB,
170  BICGSTAB
171  };
172 
179  template<typename real_t> inline real_t default_rel_tol()
180  { return real_t(1.e-6); }
187  template<typename real_t> inline real_t default_abs_tol()
188  { return real_t(1.e-10); }
189  template<> inline float default_rel_tol() { return 1.e-4; }
190  template<> inline float default_abs_tol() { return 1.e-6; }
191 
192  inline int default_gpu_streams() { return 4; }
193 
210  template<typename scalar_t> class SPOptions {
211  public:
216  using real_t = typename RealType<scalar_t>::value_type;
217 
222  SPOptions() { hss_opts_.set_verbose(false); }
223 
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);
239  }
240 
247  void set_verbose(bool verbose) { verbose_ = verbose; }
248 
253  void set_maxit(int maxit) { assert(maxit >= 1); maxit_ = maxit; }
254 
261  void set_rel_tol(real_t rtol) {
262  assert(rtol <= real_t(1.) && rtol >= real_t(0.));
263  rel_tol_ = rtol;
264  }
265 
272  void set_abs_tol(real_t atol) {
273  assert(atol >= real_t(0.));
274  abs_tol_ = atol;
275  }
276 
289  void set_Krylov_solver(KrylovSolver s) { Krylov_solver_ = s; }
290 
296  void set_gmres_restart(int m) { assert(m >= 1); gmres_restart_ = m; }
297 
303  void set_GramSchmidt_type(GramSchmidtType t) { Gram_Schmidt_type_ = t; }
304 
317  void set_reordering_method(ReorderingStrategy m) { reordering_method_ = m; }
318 
326  { assert(nd_param>=0); nd_param_ = nd_param; }
327 
335  { assert(nd_planar_levels>=0); nd_planar_levels_ = nd_planar_levels; }
336 
356  void set_dimensions(int nx, int ny=1, int nz=1) {
357  assert(nx>=1 && ny>=1 && nz>=1);
358  nx_ = nx; ny_ = ny; nz_ = nz;
359  }
360 
370  void set_nx(int nx) {assert(nx>=1); nx_ = nx; }
371 
382  void set_ny(int ny) {assert(ny>=1); ny_ = ny; }
383 
394  void set_nz(int nz) { assert(nz>=1); nz_ = nz; }
395 
407  { assert(components>=1); components_ = components; }
408 
426  void set_separator_width(int width)
427  { assert(width>=1); separator_width_ = width; }
428 
438  void enable_METIS_NodeNDP() { use_METIS_NodeNDP_ = true; }
439 
449  void disable_METIS_NodeNDP() { use_METIS_NodeNDP_ = false; }
450 
451 
459  void enable_METIS_NodeND() { use_METIS_NodeNDP_ = false; }
460 
468  void disable_METIS_NodeND() { use_METIS_NodeNDP_ = true; }
469 
477  void enable_MUMPS_SYMQAMD() { use_MUMPS_SYMQAMD_ = true; }
478 
487  void disable_MUMPS_SYMQAMD() { use_MUMPS_SYMQAMD_ = false; }
488 
497  void enable_agg_amalg() { use_agg_amalg_ = true; }
498 
507  void disable_agg_amalg() { use_agg_amalg_ = false; }
508 
518  void set_matching(MatchingJob job) { matching_job_ = job; }
519 
523  void enable_assembly_tree_log() { log_assembly_tree_ = true; }
524 
529  void disable_assembly_tree_log() { log_assembly_tree_ = false; }
530 
539  void set_compression(CompressionType c) { comp_ = c; }
540 
555  hss_opts_.set_rel_tol(rtol);
556  blr_opts_.set_rel_tol(rtol);
557  hodlr_opts_.set_rel_tol(rtol);
558  }
559 
574  hss_opts_.set_abs_tol(atol);
575  blr_opts_.set_abs_tol(atol);
576  hodlr_opts_.set_abs_tol(atol);
577  }
578 
590  assert(s >= 0);
591  hss_min_sep_size_ = s;
592  blr_min_sep_size_ = s;
593  hodlr_min_sep_size_ = s;
594  lossy_min_sep_size_ = s;
595  }
596  void set_hss_min_sep_size(int s) {
597  assert(s >= 0);
598  hss_min_sep_size_ = s;
599  }
600  void set_hodlr_min_sep_size(int s) {
601  assert(s >= 0);
602  hodlr_min_sep_size_ = s;
603  }
604  void set_blr_min_sep_size(int s) {
605  assert(s >= 0);
606  blr_min_sep_size_ = s;
607  }
608  void set_lossy_min_sep_size(int s) {
609  assert(s >= 0);
610  lossy_min_sep_size_ = s;
611  }
612 
623  assert(s >= 0);
624  hss_min_front_size_ = s;
625  blr_min_front_size_ = s;
626  hodlr_min_front_size_ = s;
627  lossy_min_front_size_ = s;
628  }
629  void set_hss_min_front_size(int s) {
630  assert(s >= 0);
631  hss_min_front_size_ = s;
632  }
633  void set_hodlr_min_front_size(int s) {
634  assert(s >= 0);
635  hodlr_min_front_size_ = s;
636  }
637  void set_blr_min_front_size(int s) {
638  assert(s >= 0);
639  blr_min_front_size_ = s;
640  }
641  void set_lossy_min_front_size(int s) {
642  assert(s >= 0);
643  lossy_min_front_size_ = s;
644  }
645 
652  hss_opts_.set_leaf_size(s);
653  blr_opts_.set_leaf_size(s);
654  hodlr_opts_.set_leaf_size(s);
655  }
656 
673  { assert(l >= 0); sep_order_level_ = l; }
674 
675 #ifndef DOXYGEN_SHOULD_SKIP_THIS
676  void enable_indirect_sampling() { indirect_sampling_ = true; }
677  void disable_indirect_sampling() { indirect_sampling_ = false; }
678 #endif // DOXYGEN_SHOULD_SKIP_THIS
679 
697  void enable_replace_tiny_pivots() { replace_tiny_pivots_ = true; }
698 
704  void disable_replace_tiny_pivots() { replace_tiny_pivots_ = false; }
705 
715  void set_pivot_threshold(real_t thresh) { pivot_ = thresh; }
716 
722  void set_write_root_front(bool b) { write_root_front_ = b; }
723 
728  void enable_gpu() { use_gpu_ = true; }
729 
733  void disable_gpu() { use_gpu_ = false; }
734 
738  void set_gpu_streams(int s) { gpu_streams_ = s; }
739 
743  void set_lossy_precision(int p) { lossy_precision_ = p; }
744 
749  void set_print_compressed_front_stats(bool b) { print_comp_front_stats_ = b; }
750 
754  void set_proportional_mapping(ProportionalMapping pmap) { prop_map_ = pmap; }
755 
760  bool verbose() const { return verbose_; }
761 
766  int maxit() const { return maxit_; }
767 
772  real_t rel_tol() const { return rel_tol_; }
773 
778  real_t abs_tol() const { return abs_tol_; }
779 
784  KrylovSolver Krylov_solver() const { return Krylov_solver_; }
785 
790  int gmres_restart() const { return gmres_restart_; }
791 
796  GramSchmidtType GramSchmidt_type() const { return Gram_Schmidt_type_; }
797 
802  ReorderingStrategy reordering_method() const { return reordering_method_; }
803 
808  int nd_param() const { return nd_param_; }
809 
816  int nd_planar_levels() const { return nd_planar_levels_; }
817 
822  int nx() const { return nx_; }
823 
828  int ny() const { return ny_; }
829 
834  int nz() const { return nz_; }
835 
841  int components() const { return components_; }
842 
847  int separator_width() const { return separator_width_; }
848 
853  bool use_METIS_NodeNDP() const { return use_METIS_NodeNDP_; }
854 
859  bool use_METIS_NodeND() const { return !use_METIS_NodeNDP_; }
860 
865  bool use_MUMPS_SYMQAMD() const { return use_MUMPS_SYMQAMD_; }
866 
872  bool use_agg_amalg() const { return use_agg_amalg_; }
873 
878  MatchingJob matching() const { return matching_job_; }
879 
884  bool log_assembly_tree() const { return log_assembly_tree_; }
885 
889  CompressionType compression() const { return comp_; }
890 
891 
900  real_t compression_rel_tol(int l=0) const {
901  switch (comp_) {
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();
917  default: return 0.;
918  }
919  }
920 
929  real_t compression_abs_tol(int l=0) const {
930  switch (comp_) {
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();
946  default: return 0.;
947  }
948  }
949 
957  int compression_min_sep_size(int l=0) const {
958  switch (comp_) {
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_;
976  default:
977  return std::numeric_limits<int>::max();
978  }
979  }
980  int hss_min_sep_size() const {
981  return hss_min_sep_size_;
982  }
983  int hodlr_min_sep_size() const {
984  return hodlr_min_sep_size_;
985  }
986  int blr_min_sep_size() const {
987  return blr_min_sep_size_;
988  }
989  int lossy_min_sep_size() const {
990  return lossy_min_sep_size_;
991  }
992 
1000  int compression_min_front_size(int l=0) const {
1001  switch (comp_) {
1002  case CompressionType::HSS:
1003  return hss_min_front_size_;
1004  case CompressionType::BLR:
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_;
1018  case CompressionType::NONE:
1019  default:
1020  return std::numeric_limits<int>::max();
1021  }
1022  }
1023  int hss_min_front_size() const {
1024  return hss_min_front_size_;
1025  }
1026  int hodlr_min_front_size() const {
1027  return hodlr_min_front_size_;
1028  }
1029  int blr_min_front_size() const {
1030  return blr_min_front_size_;
1031  }
1032  int lossy_min_front_size() const {
1033  return lossy_min_front_size_;
1034  }
1035 
1044  int compression_leaf_size(int l=0) const {
1045  switch (comp_) {
1046  case CompressionType::HSS:
1047  return hss_opts_.leaf_size();
1048  case CompressionType::BLR:
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();
1058  else return 4;
1061  return 4;
1062  case CompressionType::NONE:
1063  default:
1064  return std::numeric_limits<int>::max();
1065  }
1066  }
1067 
1073  int separator_ordering_level() const { return sep_order_level_; }
1074 
1078  bool indirect_sampling() const { return indirect_sampling_; }
1079 
1085  bool replace_tiny_pivots() const { return replace_tiny_pivots_; }
1086 
1095  real_t pivot_threshold() const { return pivot_; }
1096 
1100  bool write_root_front() const { return write_root_front_; }
1101 
1105  bool use_gpu() const { return use_gpu_; }
1106 
1110  int gpu_streams() const { return gpu_streams_; }
1111 
1115  int lossy_precision() const { return lossy_precision_; }
1116 
1121  bool print_compressed_front_stats() const { return print_comp_front_stats_; }
1122 
1126  ProportionalMapping proportional_mapping() const { return prop_map_; }
1127 
1132  const HSS::HSSOptions<scalar_t>& HSS_options() const { return hss_opts_; }
1133 
1138  HSS::HSSOptions<scalar_t>& HSS_options() { return hss_opts_; }
1139 
1144  const BLR::BLROptions<scalar_t>& BLR_options() const { return blr_opts_; }
1145 
1150  BLR::BLROptions<scalar_t>& BLR_options() { return blr_opts_; }
1151 
1156  const HODLR::HODLROptions<scalar_t>& HODLR_options() const { return hodlr_opts_; }
1157 
1163 
1170 
1183  void set_from_command_line(int argc, const char* const* cargv);
1184 
1189  void describe_options() const;
1190 
1191  private:
1192  bool verbose_ = true;
1194  int maxit_ = 5000;
1195  real_t rel_tol_ = default_rel_tol<real_t>();
1196  real_t abs_tol_ = default_abs_tol<real_t>();
1197  KrylovSolver Krylov_solver_ = KrylovSolver::AUTO;
1198  int gmres_restart_ = 30;
1199  GramSchmidtType Gram_Schmidt_type_ = GramSchmidtType::MODIFIED;
1201  ReorderingStrategy reordering_method_ = ReorderingStrategy::METIS;
1202  int nd_planar_levels_ = 0;
1203  int nd_param_ = 8;
1204  int nx_ = 1;
1205  int ny_ = 1;
1206  int nz_ = 1;
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;
1219 
1221  bool use_gpu_ = true;
1222  int gpu_streams_ = default_gpu_streams();
1223 
1226 
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;
1232  HSS::HSSOptions<scalar_t> hss_opts_;
1233 
1235  BLR::BLROptions<scalar_t> blr_opts_;
1236  int blr_min_front_size_ = 1000;
1237  int blr_min_sep_size_ = 256;
1238 
1240  HODLR::HODLROptions<scalar_t> hodlr_opts_;
1241  int hodlr_min_front_size_ = 10000;
1242  int hodlr_min_sep_size_ = 5000;
1243 
1245  int lossy_min_front_size_ = 16;
1246  int lossy_min_sep_size_ = 8;
1247  int lossy_precision_ = 16;
1248 
1249  int argc_ = 0;
1250  const char* const* argv_ = nullptr;
1251  };
1252 
1253 } // end namespace strumpack
1254 
1255 #endif // SPOPTIONS_HPP
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
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