schwz
Generated automatically from develop
|
The Base solver class is meant to be the class implementing the common implementations for all the schwarz methods. More...
#include <schwarz_base.hpp>
Public Member Functions | |
SchwarzBase (Settings &settings, Metadata< ValueType, IndexType > &metadata) | |
The constructor that takes in the user settings and a metadata struct containing the solver metadata. More... | |
void | initialize () |
Initialize the matrix and vectors. | |
void | run (std::shared_ptr< gko::matrix::Dense< ValueType >> &solution) |
The function that runs the actual solver and obtains the final solution. More... | |
void | print_vector (const std::shared_ptr< gko::matrix::Dense< ValueType >> &vector, int subd, std::string name) |
The auxiliary function that prints a passed in vector. More... | |
void | print_matrix (const std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> &matrix, int rank, std::string name) |
The auxiliary function that prints a passed in CSR matrix. More... | |
Public Member Functions inherited from schwz::Initialize< ValueType, IndexType > | |
Initialize (Settings &settings, Metadata< ValueType, IndexType > &metadata) | |
void | generate_rhs (std::vector< ValueType > &rhs) |
Generates the right hand side vector. More... | |
void | setup_global_matrix (const std::string &filename, const gko::size_type &oned_laplacian_size, std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> &global_matrix) |
Generates the 2D global laplacian matrix. More... | |
void | partition (const Settings &settings, const Metadata< ValueType, IndexType > &metadata, const std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> &global_matrix, std::vector< unsigned int > &partition_indices) |
The partitioning function. More... | |
void | setup_vectors (const Settings &settings, const Metadata< ValueType, IndexType > &metadata, std::vector< ValueType > &rhs, std::shared_ptr< gko::matrix::Dense< ValueType >> &local_rhs, std::shared_ptr< gko::matrix::Dense< ValueType >> &global_rhs, std::shared_ptr< gko::matrix::Dense< ValueType >> &local_solution) |
Setup the vectors with default values and allocate mameory if not allocated. More... | |
virtual void | setup_local_matrices (Settings &settings, Metadata< ValueType, IndexType > &metadata, std::vector< unsigned int > &partition_indices, std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> &global_matrix, std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> &local_matrix, std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> &interface_matrix)=0 |
Sets up the local and the interface matrices from the global matrix and the partition indices. More... | |
Public Member Functions inherited from schwz::Settings | |
Settings (std::string executor_string="reference") | |
Public Member Functions inherited from schwz::Communicate< ValueType, IndexType, MixedValueType > | |
virtual void | setup_comm_buffers ()=0 |
Sets up the communication buffers needed for the boundary exchange. | |
virtual void | setup_windows (const Settings &settings, const Metadata< ValueType, IndexType > &metadata, std::shared_ptr< gko::matrix::Dense< ValueType >> &main_buffer)=0 |
Sets up the windows needed for the asynchronous communication. More... | |
virtual void | exchange_boundary (const Settings &settings, const Metadata< ValueType, IndexType > &metadata, std::shared_ptr< gko::matrix::Dense< ValueType >> &global_solution)=0 |
Exchanges the elements of the solution vector. More... | |
void | local_to_global_vector (const Settings &settings, const Metadata< ValueType, IndexType > &metadata, const std::shared_ptr< gko::matrix::Dense< ValueType >> &local_vector, std::shared_ptr< gko::matrix::Dense< ValueType >> &global_vector) |
Transforms data from a local vector to a global vector. More... | |
virtual void | update_boundary (const Settings &settings, const Metadata< ValueType, IndexType > &metadata, std::shared_ptr< gko::matrix::Dense< ValueType >> &local_solution, const std::shared_ptr< gko::matrix::Dense< ValueType >> &local_rhs, const std::shared_ptr< gko::matrix::Dense< ValueType >> &global_solution, const std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> &interface_matrix)=0 |
Update the values into local vector from obtained from the neighboring sub-domains using the interface matrix. More... | |
void | clear (Settings &settings) |
Clears the data. | |
Public Member Functions inherited from schwz::Solve< ValueType, IndexType, MixedValueType > | |
Solve (const Settings &settings) | |
Public Attributes | |
std::shared_ptr< gko::matrix::Csr< ValueType, IndexType > > | local_matrix |
The local subdomain matrix. | |
std::shared_ptr< gko::matrix::Permutation< IndexType > > | local_perm |
The local subdomain permutation matrix/array. | |
std::shared_ptr< gko::matrix::Permutation< IndexType > > | local_inv_perm |
The local subdomain inverse permutation matrix/array. | |
std::shared_ptr< gko::matrix::Csr< ValueType, IndexType > > | triangular_factor_l |
The local lower triangular factor used for the triangular solves. | |
std::shared_ptr< gko::matrix::Csr< ValueType, IndexType > > | triangular_factor_u |
The local upper triangular factor used for the triangular solves. | |
std::shared_ptr< gko::matrix::Csr< ValueType, IndexType > > | interface_matrix |
The local interface matrix. | |
std::shared_ptr< gko::matrix::Csr< ValueType, IndexType > > | global_matrix |
The global matrix. | |
std::shared_ptr< gko::matrix::Dense< ValueType > > | local_rhs |
The local right hand side. | |
std::shared_ptr< gko::matrix::Dense< ValueType > > | global_rhs |
The global right hand side. | |
std::shared_ptr< gko::matrix::Dense< ValueType > > | local_solution |
The local solution vector. | |
std::shared_ptr< gko::matrix::Dense< ValueType > > | global_solution |
The global solution vector. | |
std::vector< ValueType > | local_residual_vector_out |
The global residual vector. | |
std::vector< std::vector< ValueType > > | global_residual_vector_out |
The local residual vector. | |
Public Attributes inherited from schwz::Initialize< ValueType, IndexType > | |
std::vector< unsigned int > | partition_indices |
The partition indices containing the subdomains to which each row(vertex) of the matrix(graph) belongs to. | |
std::vector< unsigned int > | cell_weights |
The cell weights for the partition algorithm. | |
Public Attributes inherited from schwz::Settings | |
std::string | executor_string |
The string that contains the ginkgo executor paradigm. | |
std::shared_ptr< gko::Executor > | executor = gko::ReferenceExecutor::create() |
The ginkgo executor the code is to be executed on. | |
std::shared_ptr< device_guard > | cuda_device_guard |
The ginkgo executor the code is to be executed on. | |
partition_settings | partition = partition_settings::partition_regular |
gko::int32 | overlap = 2 |
The overlap between the subdomains. | |
std::string | matrix_filename = "null" |
The string that contains the matrix file name to read from . | |
bool | explicit_laplacian = true |
Flag if the laplacian matrix should be generated within the library. More... | |
bool | use_mixed_precision = false |
Flag if mixed precision should be used. | |
bool | enable_random_rhs = false |
Flag to enable a random rhs. | |
bool | print_matrices = false |
Flag to enable printing of matrices. | |
bool | debug_print = false |
Flag to enable some debug printing. | |
local_solver_settings | local_solver |
bool | non_symmetric_matrix = false |
Is the matrix non-symmetric ? , Use GMRES for local solves. | |
unsigned int | restart_iter = 1u |
The restart iter for the GMRES solver. | |
int | reset_local_crit_iter = -1 |
The global iter at which to reset the local solver criterion. | |
bool | naturally_ordered_factor = false |
Disables the re-ordering of the matrix before computing the triangular factors during the CHOLMOD factorization. More... | |
std::string | metis_objtype |
This setting defines the objective type for the metis partitioning. | |
bool | use_precond = false |
Enable the block jacobi local preconditioner for the local solver. | |
bool | write_debug_out = false |
Enable the writing of debug out to file. | |
bool | write_iters_and_residuals = false |
Enable writing the iters and residuals to a file. | |
bool | enable_logging = false |
Flag to enable logging for local iterative solvers. More... | |
bool | write_perm_data = false |
Enable the local permutations from CHOLMOD to a file. | |
int | shifted_iter = 1 |
Iteration shift for node local communication. | |
comm_settings | comm_settings |
convergence_settings | convergence_settings |
std::string | factorization = "cholmod" |
The factorization for the local direct solver. | |
std::string | reorder |
The reordering for the local solve. | |
Public Attributes inherited from schwz::Metadata< ValueType, IndexType > | |
MPI_Comm | mpi_communicator |
The MPI communicator. | |
gko::size_type | global_size = 0 |
The size of the global matrix. | |
gko::size_type | oned_laplacian_size = 0 |
The size of the 1 dimensional laplacian grid. | |
gko::size_type | local_size = 0 |
The size of the local subdomain matrix. | |
gko::size_type | local_size_x = 0 |
The size of the local subdomain matrix + the overlap. | |
gko::size_type | local_size_o = 0 |
The size of the local subdomain matrix + the overlap. | |
gko::size_type | overlap_size = 0 |
The size of the overlap between the subdomains. | |
gko::size_type | num_subdomains = 1 |
The number of subdomains used within the solver. | |
int | my_rank |
The rank of the subdomain. | |
int | my_local_rank |
The local rank of the subdomain. | |
int | local_num_procs |
The local number of procs in the subdomain. | |
int | comm_size |
The number of subdomains used within the solver, size of the communicator. | |
int | num_threads |
The number of threads used within the solver for each subdomain. | |
IndexType | iter_count |
The iteration count of the solver. | |
ValueType | tolerance |
The tolerance of the complete solver. More... | |
ValueType | local_solver_tolerance |
The tolerance of the local solver in case of an iterative solve. More... | |
IndexType | max_iters |
The maximum iteration count of the Schwarz solver. | |
IndexType | local_max_iters |
The maximum iteration count of the local iterative solver. | |
IndexType | updated_max_iters |
The updated maximum iteration count of the local iterative solver. | |
std::string | local_precond |
Local preconditioner. | |
unsigned int | precond_max_block_size |
The maximum block size for the preconditioner. | |
ValueType | current_residual_norm = -1.0 |
The current residual norm of the subdomain. | |
ValueType | min_residual_norm = -1.0 |
The minimum residual norm of the subdomain. | |
std::vector< std::tuple< int, int, int, std::string, std::vector< ValueType > > > | time_struct |
The struct used to measure the timings of each function within the solver loop. | |
std::vector< std::tuple< int, std::vector< std::tuple< int, int > >, std::vector< std::tuple< int, int > >, int, int > > | comm_data_struct |
The struct used to measure the timings of each function within the solver loop. | |
post_process_data | post_process_data |
double | init_mpi_wtime = 0.0 |
std::shared_ptr< gko::Array< IndexType > > | global_to_local |
The mapping containing the global to local indices. | |
std::shared_ptr< gko::Array< IndexType > > | local_to_global |
The mapping containing the local to global indices. | |
gko::Array< IndexType > | overlap_row |
The overlap row indices. | |
std::shared_ptr< gko::Array< IndexType > > | first_row |
The starting row of each subdomain in the matrix. | |
std::shared_ptr< gko::Array< IndexType > > | permutation |
The permutation used for the re-ordering. | |
std::shared_ptr< gko::Array< IndexType > > | i_permutation |
The inverse permutation used for the re-ordering. | |
Public Attributes inherited from schwz::Communicate< ValueType, IndexType, MixedValueType > | |
comm_struct | comm_struct |
Additional Inherited Members | |
Public Types inherited from schwz::Settings | |
enum | partition_settings { partition_regular = 0x0, partition_regular2d = 0x4, partition_metis = 0x1, partition_zoltan = 0x2, partition_custom = 0x3 } |
The partition algorithm to be used for partitioning the matrix. | |
enum | local_solver_settings { direct_solver_cholmod = 0x0, direct_solver_umfpack = 0x5, direct_solver_ginkgo = 0x1, iterative_solver_ginkgo = 0x2, iterative_solver_dealii = 0x3, solver_custom = 0x4 } |
The local solver algorithm for the local subdomain solves. | |
Public Types inherited from schwz::Solve< ValueType, IndexType, MixedValueType > | |
using | ResidualCriterionFactory = typename gko::stop::ResidualNormReduction< ValueType >::Factory |
using | IterationCriterionFactory = typename gko::stop::Iteration::Factory |
The Base solver class is meant to be the class implementing the common implementations for all the schwarz methods.
It derives from the Initialization class, the Communication class and the Solve class all of which are templated.
ValueType | The type of the floating point values. |
IndexType | The type of the index type values. |
schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::SchwarzBase | ( | Settings & | settings, |
Metadata< ValueType, IndexType > & | metadata | ||
) |
The constructor that takes in the user settings and a metadata struct containing the solver metadata.
settings | The settings struct. |
metadata | The metadata struct. |
References schwz::Settings::cuda_device_guard, schwz::Settings::executor, schwz::Settings::executor_string, schwz::Metadata< ValueType, IndexType >::local_num_procs, schwz::Metadata< ValueType, IndexType >::mpi_communicator, schwz::Metadata< ValueType, IndexType >::my_local_rank, and schwz::Metadata< ValueType, IndexType >::my_rank.
void schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::print_matrix | ( | const std::shared_ptr< gko::matrix::Csr< ValueType, IndexType >> & | matrix, |
int | rank, | ||
std::string | name | ||
) |
The auxiliary function that prints a passed in CSR matrix.
matrix | The matrix to be printed. |
subd | The subdomain on which the vector exists. |
name | The name of the matrix as a string. |
void schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::print_vector | ( | const std::shared_ptr< gko::matrix::Dense< ValueType >> & | vector, |
int | subd, | ||
std::string | name | ||
) |
The auxiliary function that prints a passed in vector.
vector | The vector to be printed. |
subd | The subdomain on which the vector exists. |
name | The name of the vector as a string. |
void schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::run | ( | std::shared_ptr< gko::matrix::Dense< ValueType >> & | solution | ) |
The function that runs the actual solver and obtains the final solution.
solution | The solution vector. |
References schwz::Settings::debug_print, schwz::Communicate< ValueType, IndexType, MixedValueType >::exchange_boundary(), schwz::Settings::executor, schwz::Settings::executor_string, schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::global_matrix, schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::global_rhs, schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::global_solution, schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::interface_matrix, schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::local_inv_perm, schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::local_matrix, schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::local_perm, schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::local_rhs, schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::local_solution, schwz::Communicate< ValueType, IndexType, MixedValueType >::local_to_global_vector(), schwz::Communicate< ValueType, IndexType, MixedValueType >::setup_windows(), schwz::Settings::comm_settings::stage_through_host, schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::triangular_factor_l, schwz::SchwarzBase< ValueType, IndexType, MixedValueType >::triangular_factor_u, schwz::Communicate< ValueType, IndexType, MixedValueType >::update_boundary(), and schwz::Settings::write_iters_and_residuals.