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 
48  enum class ReorderingStrategy {
49  NATURAL,
50  METIS,
51  PARMETIS,
52  SCOTCH,
53  PTSCOTCH,
54  RCM,
55  GEOMETRIC
57  };
58 
62  std::string get_name(ReorderingStrategy method);
63 
67  bool is_parallel(ReorderingStrategy method);
68 
74  enum class CompressionType {
75  NONE,
76  HSS,
77  BLR,
78  HODLR,
80  LOSSLESS,
81  LOSSY
82  };
83 
87  std::string get_name(CompressionType comp);
88 
89 
95  enum class MatchingJob {
96  NONE,
104  COMBBLAS
105  };
106 
107  enum class EquilibrationType : char
108  { NONE='N', ROW='R', COLUMN='C', BOTH='B' };
109 
110 
114  MatchingJob get_matching(int job);
115 
120  int get_matching(MatchingJob job);
121 
125  std::string get_description(MatchingJob job);
126 
127 
132  enum class GramSchmidtType {
133  CLASSICAL,
134  MODIFIED
135  };
136 
141  enum class KrylovSolver {
142  AUTO,
144  DIRECT,
146  REFINE,
147  PREC_GMRES,
149  GMRES,
150  PREC_BICGSTAB,
152  BICGSTAB
153  };
154 
161  template<typename real_t> inline real_t default_rel_tol()
162  { return real_t(1.e-6); }
169  template<typename real_t> inline real_t default_abs_tol()
170  { return real_t(1.e-10); }
171  template<> inline float default_rel_tol() { return 1.e-4; }
172  template<> inline float default_abs_tol() { return 1.e-6; }
173 
174  inline int default_gpu_streams() { return 4; }
175 
192  template<typename scalar_t> class SPOptions {
193  public:
198  using real_t = typename RealType<scalar_t>::value_type;
199 
204  SPOptions() { hss_opts_.set_verbose(false); }
205 
217  SPOptions(int argc, const char* const argv[]) : argc_(argc), argv_(argv) {
218  hss_opts_.set_verbose(false);
219  blr_opts_.set_verbose(false);
220  hodlr_opts_.set_verbose(false);
221  }
222 
229  void set_verbose(bool verbose) { verbose_ = verbose; }
230 
235  void set_maxit(int maxit) { assert(maxit >= 1); maxit_ = maxit; }
236 
243  void set_rel_tol(real_t rtol) {
244  assert(rtol <= real_t(1.) && rtol >= real_t(0.));
245  rel_tol_ = rtol;
246  }
247 
254  void set_abs_tol(real_t atol) {
255  assert(atol >= real_t(0.));
256  abs_tol_ = atol;
257  }
258 
271  void set_Krylov_solver(KrylovSolver s) { Krylov_solver_ = s; }
272 
278  void set_gmres_restart(int m) { assert(m >= 1); gmres_restart_ = m; }
279 
285  void set_GramSchmidt_type(GramSchmidtType t) { Gram_Schmidt_type_ = t; }
286 
299  void set_reordering_method(ReorderingStrategy m) { reordering_method_ = m; }
300 
308  { assert(nd_param>=0); nd_param_ = nd_param; }
309 
329  void set_dimensions(int nx, int ny=1, int nz=1) {
330  assert(nx>=1 && ny>=1 && nz>=1);
331  nx_ = nx; ny_ = ny; nz_ = nz;
332  }
333 
343  void set_nx(int nx) {assert(nx>=1); nx_ = nx; }
344 
355  void set_ny(int ny) {assert(ny>=1); ny_ = ny; }
356 
367  void set_nz(int nz) { assert(nz>=1); nz_ = nz; }
368 
380  { assert(components>=1); components_ = components; }
381 
399  void set_separator_width(int width)
400  { assert(width>=1); separator_width_ = width; }
401 
411  void enable_METIS_NodeNDP() { use_METIS_NodeNDP_ = true; }
412 
422  void disable_METIS_NodeNDP() { use_METIS_NodeNDP_ = false; }
423 
424 
432  void enable_METIS_NodeND() { use_METIS_NodeNDP_ = false; }
433 
441  void disable_METIS_NodeND() { use_METIS_NodeNDP_ = true; }
442 
450  void enable_MUMPS_SYMQAMD() { use_MUMPS_SYMQAMD_ = true; }
451 
460  void disable_MUMPS_SYMQAMD() { use_MUMPS_SYMQAMD_ = false; }
461 
470  void enable_agg_amalg() { use_agg_amalg_ = true; }
471 
480  void disable_agg_amalg() { use_agg_amalg_ = false; }
481 
491  void set_matching(MatchingJob job) { matching_job_ = job; }
492 
496  void enable_assembly_tree_log() { log_assembly_tree_ = true; }
497 
502  void disable_assembly_tree_log() { log_assembly_tree_ = false; }
503 
512  void set_compression(CompressionType c) { comp_ = c; }
513 
528  hss_opts_.set_rel_tol(rtol);
529  blr_opts_.set_rel_tol(rtol);
530  hodlr_opts_.set_rel_tol(rtol);
531  }
532 
547  hss_opts_.set_abs_tol(atol);
548  blr_opts_.set_abs_tol(atol);
549  hodlr_opts_.set_abs_tol(atol);
550  }
551 
563  assert(s >= 0);
564  hss_min_sep_size_ = s;
565  blr_min_sep_size_ = s;
566  hodlr_min_sep_size_ = s;
567  lossy_min_sep_size_ = s;
568  }
569 
580  assert(s >= 0);
581  hss_min_front_size_ = s;
582  blr_min_front_size_ = s;
583  hodlr_min_front_size_ = s;
584  lossy_min_front_size_ = s;
585  }
586 
593  hss_opts_.set_leaf_size(s);
594  blr_opts_.set_leaf_size(s);
595  hodlr_opts_.set_leaf_size(s);
596  }
597 
614  { assert(l >= 0); sep_order_level_ = l; }
615 
616 #ifndef DOXYGEN_SHOULD_SKIP_THIS
617  void enable_indirect_sampling() { indirect_sampling_ = true; }
618  void disable_indirect_sampling() { indirect_sampling_ = false; }
619 #endif // DOXYGEN_SHOULD_SKIP_THIS
620 
638  void enable_replace_tiny_pivots() { replace_tiny_pivots_ = true; }
639 
645  void disable_replace_tiny_pivots() { replace_tiny_pivots_ = false; }
646 
652  void set_write_root_front(bool b) { write_root_front_ = b; }
653 
658  void enable_gpu() { use_gpu_ = true; }
659 
663  void disable_gpu() { use_gpu_ = false; }
664 
668  void set_gpu_streams(int s) { gpu_streams_ = s; }
669 
673  void set_lossy_precision(int p) { lossy_precision_ = p; }
674 
679  void set_print_root_front_stats(bool b) { print_root_front_stats_ = b; }
680 
685  bool verbose() const { return verbose_; }
686 
691  int maxit() const { return maxit_; }
692 
697  real_t rel_tol() const { return rel_tol_; }
698 
703  real_t abs_tol() const { return abs_tol_; }
704 
709  KrylovSolver Krylov_solver() const { return Krylov_solver_; }
710 
715  int gmres_restart() const { return gmres_restart_; }
716 
721  GramSchmidtType GramSchmidt_type() const { return Gram_Schmidt_type_; }
722 
727  ReorderingStrategy reordering_method() const { return reordering_method_; }
728 
733  int nd_param() const { return nd_param_; }
734 
739  int nx() const { return nx_; }
740 
745  int ny() const { return ny_; }
746 
751  int nz() const { return nz_; }
752 
758  int components() const { return components_; }
759 
764  int separator_width() const { return separator_width_; }
765 
770  bool use_METIS_NodeNDP() const { return use_METIS_NodeNDP_; }
771 
776  bool use_METIS_NodeND() const { return !use_METIS_NodeNDP_; }
777 
782  bool use_MUMPS_SYMQAMD() const { return use_MUMPS_SYMQAMD_; }
783 
789  bool use_agg_amalg() const { return use_agg_amalg_; }
790 
795  MatchingJob matching() const { return matching_job_; }
796 
801  bool log_assembly_tree() const { return log_assembly_tree_; }
802 
806  CompressionType compression() const { return comp_; }
807 
808 
818  switch (comp_) {
820  return hss_opts_.rel_tol();
822  return blr_opts_.rel_tol();
824  return hodlr_opts_.rel_tol();
828  default: return 0.;
829  }
830  }
831 
841  switch (comp_) {
843  return hss_opts_.abs_tol();
845  return blr_opts_.abs_tol();
847  return hodlr_opts_.abs_tol();
851  default: return 0.;
852  }
853  }
854 
863  switch (comp_) {
865  return hss_min_sep_size_;
867  return blr_min_sep_size_;
869  return hodlr_min_sep_size_;
872  return lossy_min_sep_size_;
874  default:
875  return std::numeric_limits<int>::max();
876  }
877  }
878 
887  switch (comp_) {
889  return hss_min_front_size_;
891  return blr_min_front_size_;
893  return hodlr_min_front_size_;
896  return lossy_min_front_size_;
898  default:
899  return std::numeric_limits<int>::max();
900  }
901  }
902 
911  int compression_leaf_size() const {
912  switch (comp_) {
914  return hss_opts_.leaf_size();
916  return blr_opts_.leaf_size();
918  return hodlr_opts_.leaf_size();
921  return 4;
923  default:
924  return std::numeric_limits<int>::max();
925  }
926  }
927 
933  int separator_ordering_level() const { return sep_order_level_; }
934 
938  bool indirect_sampling() const { return indirect_sampling_; }
939 
943  bool replace_tiny_pivots() const { return replace_tiny_pivots_; }
944 
948  bool write_root_front() const { return write_root_front_; }
949 
953  bool use_gpu() const { return use_gpu_; }
954 
958  int gpu_streams() const { return gpu_streams_; }
959 
963  int lossy_precision() const { return lossy_precision_; }
964 
969  bool print_root_front_stats() const { return print_root_front_stats_; }
970 
975  const HSS::HSSOptions<scalar_t>& HSS_options() const { return hss_opts_; }
976 
981  HSS::HSSOptions<scalar_t>& HSS_options() { return hss_opts_; }
982 
987  const BLR::BLROptions<scalar_t>& BLR_options() const { return blr_opts_; }
988 
993  BLR::BLROptions<scalar_t>& BLR_options() { return blr_opts_; }
994 
999  const HODLR::HODLROptions<scalar_t>& HODLR_options() const { return hodlr_opts_; }
1000 
1006 
1013 
1026  void set_from_command_line(int argc, const char* const* cargv);
1027 
1032  void describe_options() const;
1033 
1034  private:
1035  bool verbose_ = true;
1037  int maxit_ = 5000;
1038  real_t rel_tol_ = default_rel_tol<real_t>();
1039  real_t abs_tol_ = default_abs_tol<real_t>();
1040  KrylovSolver Krylov_solver_ = KrylovSolver::AUTO;
1041  int gmres_restart_ = 30;
1042  GramSchmidtType Gram_Schmidt_type_ = GramSchmidtType::MODIFIED;
1044  ReorderingStrategy reordering_method_ = ReorderingStrategy::METIS;
1045  int nd_param_ = 8;
1046  int nx_ = 1;
1047  int ny_ = 1;
1048  int nz_ = 1;
1049  int components_ = 1;
1050  int separator_width_ = 1;
1051  bool use_METIS_NodeNDP_ = false;
1052  bool use_MUMPS_SYMQAMD_ = false;
1053  bool use_agg_amalg_ = false;
1055  bool log_assembly_tree_ = false;
1056  bool replace_tiny_pivots_ = false;
1057  bool write_root_front_ = false;
1058  bool print_root_front_stats_ = false;
1059 
1061  bool use_gpu_ = true;
1062  int gpu_streams_ = default_gpu_streams();
1063 
1066 
1068  int hss_min_front_size_ = 5000;
1069  int hss_min_sep_size_ = 1000;
1070  int sep_order_level_ = 1;
1071  bool indirect_sampling_ = false;
1072  HSS::HSSOptions<scalar_t> hss_opts_;
1073 
1075  BLR::BLROptions<scalar_t> blr_opts_;
1076  int blr_min_front_size_ = 1000;
1077  int blr_min_sep_size_ = 256;
1078 
1080  HODLR::HODLROptions<scalar_t> hodlr_opts_;
1081  int hodlr_min_front_size_ = 10000;
1082  int hodlr_min_sep_size_ = 5000;
1083 
1085  int lossy_min_front_size_ = 16;
1086  int lossy_min_sep_size_ = 8;
1087  int lossy_precision_ = 16;
1088 
1089  int argc_ = 0;
1090  const char* const* argv_ = nullptr;
1091  };
1092 
1093 } // end namespace strumpack
1094 
1095 #endif // SPOPTIONS_HPP
strumpack::SPOptions::enable_MUMPS_SYMQAMD
void enable_MUMPS_SYMQAMD()
Definition: StrumpackOptions.hpp:450
strumpack::KrylovSolver::PREC_GMRES
@ PREC_GMRES
strumpack::SPOptions::set_nz
void set_nz(int nz)
Definition: StrumpackOptions.hpp:367
strumpack::ReorderingStrategy::NATURAL
@ NATURAL
strumpack::SPOptions::set_nd_param
void set_nd_param(int nd_param)
Definition: StrumpackOptions.hpp:307
strumpack::get_matching
MatchingJob get_matching(int job)
strumpack::SPOptions::set_separator_width
void set_separator_width(int width)
Definition: StrumpackOptions.hpp:399
strumpack::SPOptions::abs_tol
real_t abs_tol() const
Definition: StrumpackOptions.hpp:703
strumpack::SPOptions::enable_assembly_tree_log
void enable_assembly_tree_log()
Definition: StrumpackOptions.hpp:496
strumpack::SPOptions::nz
int nz() const
Definition: StrumpackOptions.hpp:751
strumpack::SPOptions::rel_tol
real_t rel_tol() const
Definition: StrumpackOptions.hpp:697
strumpack::SPOptions::disable_replace_tiny_pivots
void disable_replace_tiny_pivots()
Definition: StrumpackOptions.hpp:645
strumpack::SPOptions::GramSchmidt_type
GramSchmidtType GramSchmidt_type() const
Definition: StrumpackOptions.hpp:721
strumpack::SPOptions::set_components
void set_components(int components)
Definition: StrumpackOptions.hpp:379
strumpack::GramSchmidtType
GramSchmidtType
Definition: StrumpackOptions.hpp:132
strumpack::SPOptions::indirect_sampling
bool indirect_sampling() const
Definition: StrumpackOptions.hpp:938
strumpack::KrylovSolver::GMRES
@ GMRES
strumpack::SPOptions::lossy_precision
int lossy_precision() const
Definition: StrumpackOptions.hpp:963
strumpack::SPOptions::components
int components() const
Definition: StrumpackOptions.hpp:758
strumpack::SPOptions::reordering_method
ReorderingStrategy reordering_method() const
Definition: StrumpackOptions.hpp:727
strumpack::MatchingJob::MAX_SMALLEST_DIAGONAL_2
@ MAX_SMALLEST_DIAGONAL_2
strumpack::SPOptions::compression_leaf_size
int compression_leaf_size() const
Definition: StrumpackOptions.hpp:911
strumpack::SPOptions::disable_MUMPS_SYMQAMD
void disable_MUMPS_SYMQAMD()
Definition: StrumpackOptions.hpp:460
strumpack::SPOptions::disable_agg_amalg
void disable_agg_amalg()
Definition: StrumpackOptions.hpp:480
strumpack::SPOptions::Krylov_solver
KrylovSolver Krylov_solver() const
Definition: StrumpackOptions.hpp:709
strumpack::CompressionType::LOSSLESS
@ LOSSLESS
strumpack::SPOptions::HODLR_options
HODLR::HODLROptions< scalar_t > & HODLR_options()
Definition: StrumpackOptions.hpp:1005
strumpack::GramSchmidtType::CLASSICAL
@ CLASSICAL
strumpack::HSS::HSSOptions
Class containing several options for the HSS code and data-structures.
Definition: HSSOptions.hpp:117
strumpack::SPOptions::disable_METIS_NodeNDP
void disable_METIS_NodeNDP()
Definition: StrumpackOptions.hpp:422
strumpack::KrylovSolver::AUTO
@ AUTO
strumpack::ReorderingStrategy::PTSCOTCH
@ PTSCOTCH
strumpack::SPOptions::log_assembly_tree
bool log_assembly_tree() const
Definition: StrumpackOptions.hpp:801
strumpack::SPOptions::set_verbose
void set_verbose(bool verbose)
Definition: StrumpackOptions.hpp:229
strumpack::default_rel_tol
real_t default_rel_tol()
Definition: StrumpackOptions.hpp:161
strumpack::MatchingJob::MAX_DIAGONAL_SUM
@ MAX_DIAGONAL_SUM
strumpack::SPOptions::set_compression_min_sep_size
void set_compression_min_sep_size(int s)
Definition: StrumpackOptions.hpp:562
strumpack::SPOptions::set_nx
void set_nx(int nx)
Definition: StrumpackOptions.hpp:343
strumpack::SPOptions::BLR_options
BLR::BLROptions< scalar_t > & BLR_options()
Definition: StrumpackOptions.hpp:993
strumpack::SPOptions::compression_min_sep_size
int compression_min_sep_size() const
Definition: StrumpackOptions.hpp:862
strumpack::SPOptions::set_separator_ordering_level
void set_separator_ordering_level(int l)
Definition: StrumpackOptions.hpp:613
strumpack::SPOptions::use_MUMPS_SYMQAMD
bool use_MUMPS_SYMQAMD() const
Definition: StrumpackOptions.hpp:782
strumpack::KrylovSolver::DIRECT
@ DIRECT
strumpack::SPOptions::HODLR_options
const HODLR::HODLROptions< scalar_t > & HODLR_options() const
Definition: StrumpackOptions.hpp:999
strumpack::MatchingJob::MAX_DIAGONAL_PRODUCT_SCALING
@ MAX_DIAGONAL_PRODUCT_SCALING
strumpack::SPOptions::set_lossy_precision
void set_lossy_precision(int p)
Definition: StrumpackOptions.hpp:673
strumpack::SPOptions::BLR_options
const BLR::BLROptions< scalar_t > & BLR_options() const
Definition: StrumpackOptions.hpp:987
strumpack::SPOptions::compression_min_front_size
int compression_min_front_size() const
Definition: StrumpackOptions.hpp:886
strumpack
Definition: StrumpackOptions.hpp:42
strumpack::SPOptions::use_METIS_NodeNDP
bool use_METIS_NodeNDP() const
Definition: StrumpackOptions.hpp:770
strumpack::MatchingJob::COMBBLAS
@ COMBBLAS
strumpack::MatchingJob::MAX_CARDINALITY
@ MAX_CARDINALITY
strumpack::SPOptions::set_GramSchmidt_type
void set_GramSchmidt_type(GramSchmidtType t)
Definition: StrumpackOptions.hpp:285
strumpack::KrylovSolver
KrylovSolver
Definition: StrumpackOptions.hpp:141
strumpack::default_abs_tol
real_t default_abs_tol()
Definition: StrumpackOptions.hpp:169
strumpack::SPOptions::enable_METIS_NodeNDP
void enable_METIS_NodeNDP()
Definition: StrumpackOptions.hpp:411
strumpack::SPOptions::HSS_options
HSS::HSSOptions< scalar_t > & HSS_options()
Definition: StrumpackOptions.hpp:981
strumpack::CompressionType::LOSSY
@ LOSSY
strumpack::SPOptions::set_from_command_line
void set_from_command_line()
Definition: StrumpackOptions.hpp:1012
strumpack::SPOptions::compression_rel_tol
real_t compression_rel_tol() const
Definition: StrumpackOptions.hpp:817
strumpack::CompressionType::HODLR
@ HODLR
strumpack::SPOptions
Options for the sparse solver.
Definition: StrumpackOptions.hpp:192
strumpack::SPOptions::set_reordering_method
void set_reordering_method(ReorderingStrategy m)
Definition: StrumpackOptions.hpp:299
strumpack::SPOptions::set_ny
void set_ny(int ny)
Definition: StrumpackOptions.hpp:355
strumpack::SPOptions::use_agg_amalg
bool use_agg_amalg() const
Definition: StrumpackOptions.hpp:789
strumpack::SPOptions::set_Krylov_solver
void set_Krylov_solver(KrylovSolver s)
Definition: StrumpackOptions.hpp:271
strumpack::CompressionType::BLR
@ BLR
strumpack::SPOptions::enable_agg_amalg
void enable_agg_amalg()
Definition: StrumpackOptions.hpp:470
strumpack::SPOptions::real_t
typename RealType< scalar_t >::value_type real_t
Definition: StrumpackOptions.hpp:198
strumpack::SPOptions::set_dimensions
void set_dimensions(int nx, int ny=1, int nz=1)
Definition: StrumpackOptions.hpp:329
strumpack::SPOptions::set_maxit
void set_maxit(int maxit)
Definition: StrumpackOptions.hpp:235
strumpack::SPOptions::SPOptions
SPOptions()
Definition: StrumpackOptions.hpp:204
strumpack::SPOptions::set_rel_tol
void set_rel_tol(real_t rtol)
Definition: StrumpackOptions.hpp:243
strumpack::GramSchmidtType::MODIFIED
@ MODIFIED
strumpack::SPOptions::set_print_root_front_stats
void set_print_root_front_stats(bool b)
Definition: StrumpackOptions.hpp:679
strumpack::SPOptions::describe_options
void describe_options() const
strumpack::SPOptions::nd_param
int nd_param() const
Definition: StrumpackOptions.hpp:733
strumpack::SPOptions::nx
int nx() const
Definition: StrumpackOptions.hpp:739
strumpack::SPOptions::set_compression_rel_tol
void set_compression_rel_tol(real_t rtol)
Definition: StrumpackOptions.hpp:527
strumpack::HODLR::HODLROptions
Class containing several options for the HODLR code and data-structures.
Definition: HODLROptions.hpp:115
strumpack::get_name
std::string get_name(ReorderingStrategy method)
strumpack::SPOptions::set_gmres_restart
void set_gmres_restart(int m)
Definition: StrumpackOptions.hpp:278
strumpack::get_description
std::string get_description(MatchingJob job)
strumpack::SPOptions::use_METIS_NodeND
bool use_METIS_NodeND() const
Definition: StrumpackOptions.hpp:776
strumpack::KrylovSolver::PREC_BICGSTAB
@ PREC_BICGSTAB
strumpack::SPOptions::compression_abs_tol
real_t compression_abs_tol() const
Definition: StrumpackOptions.hpp:840
strumpack::SPOptions::maxit
int maxit() const
Definition: StrumpackOptions.hpp:691
strumpack::MatchingJob::NONE
@ NONE
strumpack::SPOptions::use_gpu
bool use_gpu() const
Definition: StrumpackOptions.hpp:953
strumpack::ReorderingStrategy::RCM
@ RCM
strumpack::SPOptions::set_compression_leaf_size
void set_compression_leaf_size(int s)
Definition: StrumpackOptions.hpp:592
strumpack::SPOptions::set_matching
void set_matching(MatchingJob job)
Definition: StrumpackOptions.hpp:491
strumpack::SPOptions::enable_replace_tiny_pivots
void enable_replace_tiny_pivots()
Definition: StrumpackOptions.hpp:638
strumpack::SPOptions::set_compression_min_front_size
void set_compression_min_front_size(int s)
Definition: StrumpackOptions.hpp:579
strumpack::SPOptions::compression
CompressionType compression() const
Definition: StrumpackOptions.hpp:806
strumpack::MatchingJob::MAX_SMALLEST_DIAGONAL
@ MAX_SMALLEST_DIAGONAL
strumpack::SPOptions::gpu_streams
int gpu_streams() const
Definition: StrumpackOptions.hpp:958
strumpack::SPOptions::separator_ordering_level
int separator_ordering_level() const
Definition: StrumpackOptions.hpp:933
HSSOptions.hpp
Contains the HSSOptions class as well as general routines for HSS options.
strumpack::SPOptions::set_write_root_front
void set_write_root_front(bool b)
Definition: StrumpackOptions.hpp:652
strumpack::ReorderingStrategy::METIS
@ METIS
strumpack::SPOptions::HSS_options
const HSS::HSSOptions< scalar_t > & HSS_options() const
Definition: StrumpackOptions.hpp:975
strumpack::SPOptions::verbose
bool verbose() const
Definition: StrumpackOptions.hpp:685
strumpack::CompressionType::HSS
@ HSS
strumpack::SPOptions::disable_METIS_NodeND
void disable_METIS_NodeND()
Definition: StrumpackOptions.hpp:441
strumpack::SPOptions::replace_tiny_pivots
bool replace_tiny_pivots() const
Definition: StrumpackOptions.hpp:943
strumpack::SPOptions::disable_gpu
void disable_gpu()
Definition: StrumpackOptions.hpp:663
strumpack::SPOptions::set_gpu_streams
void set_gpu_streams(int s)
Definition: StrumpackOptions.hpp:668
strumpack::SPOptions::enable_METIS_NodeND
void enable_METIS_NodeND()
Definition: StrumpackOptions.hpp:432
strumpack::ReorderingStrategy::PARMETIS
@ PARMETIS
strumpack::ReorderingStrategy::SCOTCH
@ SCOTCH
strumpack::SPOptions::write_root_front
bool write_root_front() const
Definition: StrumpackOptions.hpp:948
strumpack::SPOptions::separator_width
int separator_width() const
Definition: StrumpackOptions.hpp:764
strumpack::is_parallel
bool is_parallel(ReorderingStrategy method)
strumpack::SPOptions::set_compression_abs_tol
void set_compression_abs_tol(real_t atol)
Definition: StrumpackOptions.hpp:546
HODLROptions.hpp
Contains the class holding HODLR matrix options.
strumpack::SPOptions::gmres_restart
int gmres_restart() const
Definition: StrumpackOptions.hpp:715
strumpack::SPOptions::enable_gpu
void enable_gpu()
Definition: StrumpackOptions.hpp:658
strumpack::SPOptions::ny
int ny() const
Definition: StrumpackOptions.hpp:745
strumpack::ReorderingStrategy::GEOMETRIC
@ GEOMETRIC
strumpack::SPOptions::SPOptions
SPOptions(int argc, const char *const argv[])
Definition: StrumpackOptions.hpp:217
strumpack::KrylovSolver::BICGSTAB
@ BICGSTAB
strumpack::SPOptions::print_root_front_stats
bool print_root_front_stats() const
Definition: StrumpackOptions.hpp:969
strumpack::SPOptions::matching
MatchingJob matching() const
Definition: StrumpackOptions.hpp:795
strumpack::SPOptions::disable_assembly_tree_log
void disable_assembly_tree_log()
Definition: StrumpackOptions.hpp:502
strumpack::CompressionType
CompressionType
Definition: StrumpackOptions.hpp:74
strumpack::SPOptions::set_abs_tol
void set_abs_tol(real_t atol)
Definition: StrumpackOptions.hpp:254
strumpack::KrylovSolver::REFINE
@ REFINE
strumpack::ReorderingStrategy
ReorderingStrategy
Definition: StrumpackOptions.hpp:48
strumpack::SPOptions::set_compression
void set_compression(CompressionType c)
Definition: StrumpackOptions.hpp:512
strumpack::CompressionType::NONE
@ NONE
strumpack::MatchingJob
MatchingJob
Definition: StrumpackOptions.hpp:95