Graphite  0.5.0
GPU-accelerated graph optimization framework
Loading...
Searching...
No Matches
schur_preconditioner.hpp
Go to the documentation of this file.
1
2#pragma once
3
4#include <graphite/graph.hpp>
5#include <graphite/schur.hpp>
6
7namespace graphite {
8
10template <typename T, typename S> class SchurPreconditioner {
11public:
12 virtual ~SchurPreconditioner() = default;
13
14 virtual void update_structure(Graph<T, S> *graph,
15 SchurComplement<T, S> *schur,
16 StreamPool &streams) = 0;
17
18 virtual void update_values(Graph<T, S> *graph, SchurComplement<T, S> *schur,
19 StreamPool &streams) = 0;
20
21 virtual void set_damping_factor(Graph<T, S> *graph,
22 SchurComplement<T, S> *schur,
23 T damping_factor, const bool use_identity,
24 StreamPool &streams) = 0;
25
26 virtual void apply(Graph<T, S> *graph, SchurComplement<T, S> *schur, T *z,
27 const T *r, StreamPool &streams) = 0;
28};
29
30} // namespace graphite
Base class for Schur complement preconditioners.
Definition schur_preconditioner.hpp:10
Definition stream.hpp:7
The top-level namespace for Graphite.
Definition eigen_solver.cpp:4