Skip to content

Commit

Permalink
add more trigsolves
Browse files Browse the repository at this point in the history
adds these triangular solvers:
- level based solver
- warp inverting solver 'winv'
- load-balancing solver 'wvar'
- thinned out syncfree solver
- block solver
  • Loading branch information
lksriemer committed Nov 9, 2022
1 parent e175f83 commit 79a019e
Show file tree
Hide file tree
Showing 16 changed files with 2,009 additions and 589 deletions.
8 changes: 4 additions & 4 deletions core/solver/lower_trs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,8 @@ void LowerTrs<ValueType, IndexType>::generate()
if (this->get_system_matrix()) {
this->get_executor()->run(lower_trs::make_generate(
this->get_system_matrix().get(), this->solve_struct_,
this->get_parameters().unit_diagonal, parameters_.algorithm,
parameters_.num_rhs));
this->get_parameters().unit_diagonal,
gko::lend(parameters_.strategy), parameters_.num_rhs));
}
}

Expand Down Expand Up @@ -178,8 +178,8 @@ void LowerTrs<ValueType, IndexType>::apply_impl(const LinOp* b, LinOp* x) const
}
exec->run(lower_trs::make_solve(
lend(this->get_system_matrix()), lend(this->solve_struct_),
this->get_parameters().unit_diagonal, parameters_.algorithm,
trans_b, trans_x, dense_b, dense_x));
this->get_parameters().unit_diagonal, trans_b, trans_x, dense_b,
dense_x));
},
b, x);
}
Expand Down
11 changes: 5 additions & 6 deletions core/solver/lower_trs_kernels.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,19 +56,18 @@ namespace lower_trs {
bool& do_transpose)


#define GKO_DECLARE_LOWER_TRS_GENERATE_KERNEL(_vtype, _itype) \
void generate(std::shared_ptr<const DefaultExecutor> exec, \
const matrix::Csr<_vtype, _itype>* matrix, \
std::shared_ptr<solver::SolveStruct>& solve_struct, \
bool unit_diag, const solver::trisolve_algorithm algorithm, \
#define GKO_DECLARE_LOWER_TRS_GENERATE_KERNEL(_vtype, _itype) \
void generate(std::shared_ptr<const DefaultExecutor> exec, \
const matrix::Csr<_vtype, _itype>* matrix, \
std::shared_ptr<solver::SolveStruct>& solve_struct, \
bool unit_diag, const solver::trisolve_strategy* strategy, \
const size_type num_rhs)


#define GKO_DECLARE_LOWER_TRS_SOLVE_KERNEL(_vtype, _itype) \
void solve(std::shared_ptr<const DefaultExecutor> exec, \
const matrix::Csr<_vtype, _itype>* matrix, \
const solver::SolveStruct* solve_struct, bool unit_diag, \
const solver::trisolve_algorithm algorithm, \
matrix::Dense<_vtype>* trans_b, matrix::Dense<_vtype>* trans_x, \
const matrix::Dense<_vtype>* b, matrix::Dense<_vtype>* x)

Expand Down
8 changes: 4 additions & 4 deletions core/solver/upper_trs.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -135,8 +135,8 @@ void UpperTrs<ValueType, IndexType>::generate()
if (this->get_system_matrix()) {
this->get_executor()->run(upper_trs::make_generate(
this->get_system_matrix().get(), this->solve_struct_,
this->get_parameters().unit_diagonal, parameters_.algorithm,
parameters_.num_rhs));
this->get_parameters().unit_diagonal,
gko::lend(parameters_.strategy), parameters_.num_rhs));
}
}

Expand Down Expand Up @@ -178,8 +178,8 @@ void UpperTrs<ValueType, IndexType>::apply_impl(const LinOp* b, LinOp* x) const
}
exec->run(upper_trs::make_solve(
lend(this->get_system_matrix()), lend(this->solve_struct_),
this->get_parameters().unit_diagonal, parameters_.algorithm,
trans_b, trans_x, dense_b, dense_x));
this->get_parameters().unit_diagonal, trans_b, trans_x, dense_b,
dense_x));
},
b, x);
}
Expand Down
11 changes: 5 additions & 6 deletions core/solver/upper_trs_kernels.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -56,19 +56,18 @@ namespace upper_trs {
bool& do_transpose)


#define GKO_DECLARE_UPPER_TRS_GENERATE_KERNEL(_vtype, _itype) \
void generate(std::shared_ptr<const DefaultExecutor> exec, \
const matrix::Csr<_vtype, _itype>* matrix, \
std::shared_ptr<solver::SolveStruct>& solve_struct, \
bool unit_diag, const solver::trisolve_algorithm algorithm, \
#define GKO_DECLARE_UPPER_TRS_GENERATE_KERNEL(_vtype, _itype) \
void generate(std::shared_ptr<const DefaultExecutor> exec, \
const matrix::Csr<_vtype, _itype>* matrix, \
std::shared_ptr<solver::SolveStruct>& solve_struct, \
bool unit_diag, const solver::trisolve_strategy* strategy, \
const size_type num_rhs)


#define GKO_DECLARE_UPPER_TRS_SOLVE_KERNEL(_vtype, _itype) \
void solve(std::shared_ptr<const DefaultExecutor> exec, \
const matrix::Csr<_vtype, _itype>* matrix, \
const solver::SolveStruct* solve_struct, bool unit_diag, \
const solver::trisolve_algorithm algorithm, \
matrix::Dense<_vtype>* trans_b, matrix::Dense<_vtype>* trans_x, \
const matrix::Dense<_vtype>* b, matrix::Dense<_vtype>* x)

Expand Down
1 change: 1 addition & 0 deletions cuda/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ target_sources(ginkgo_cuda
solver/cb_gmres_kernels.cu
solver/idr_kernels.cu
solver/lower_trs_kernels.cu
solver/common_trs_kernels.cu
solver/multigrid_kernels.cu
solver/upper_trs_kernels.cu
stop/criterion_kernels.cu
Expand Down
Loading

0 comments on commit 79a019e

Please sign in to comment.