From 78bf184a74ed3282cf55d70111e51e810f122a9e Mon Sep 17 00:00:00 2001
From: Pratik Nayak
Date: Fri, 26 Apr 2019 12:04:00 +0200
Subject: [PATCH] Update ginkgo html docs, clang-format.
---
doc/external-libs/ginkgo.html | 10 +-
include/deal.II/lac/ginkgo_solver.h | 259 ++++++++++++++--------------
tests/ginkgo/solver.cc | 38 ++--
3 files changed, 157 insertions(+), 150 deletions(-)
diff --git a/doc/external-libs/ginkgo.html b/doc/external-libs/ginkgo.html
index d918e17f73..e89e3730c0 100644
--- a/doc/external-libs/ginkgo.html
+++ b/doc/external-libs/ginkgo.html
@@ -48,17 +48,17 @@
target="_top">Ginkgo.
The different flags that can be added are:
- -
-DBUILD_REFERENCE={ON,OFF}
: Builds the reference single thread implementation
+ -
-DGINKGO_BUILD_REFERENCE={ON,OFF}
: Builds the reference single thread implementation
used to check the more sophisticated implementations of the GPU/CPU.
- -
-DBUILD_CUDA={ON,OFF}
: Builds the GPU implementation, specifically the NVIDIA
+ -
-DGINKGO_BUILD_CUDA={ON,OFF}
: Builds the GPU implementation, specifically the NVIDIA
CUDA implementations. This needs CUDA to be installed on the machine.
- -
-DBUILD_OMP={ON,OFF}
: Builds the multithreaded OpenMP implementations.
+ -
-DGINKGO_BUILD_OMP={ON,OFF}
: Builds the multithreaded OpenMP implementations.
To install Ginkgo, you would need to:
git clone https://github.com/ginkgo-project/ginkgo.git
- mkdir build; cd build
- cmake -DBUILD_REFERENCE=on/off -DBUILD_CUDA=on/off -DBUILD_OMP=on/off -DCMAKE_INSTALL_PREFIX=/path/to/install/ -DCMAKE_BUILD_TYPE=Debug
+ mkdir build; cd build
+ cmake -DGINKGO_BUILD_REFERENCE=on/off -DGINKGO_BUILD_CUDA=on/off -DGINKGO_BUILD_OMP=on/off -DCMAKE_INSTALL_PREFIX=/path/to/install/ -DCMAKE_BUILD_TYPE=Release/Debug
make install
diff --git a/include/deal.II/lac/ginkgo_solver.h b/include/deal.II/lac/ginkgo_solver.h
index eaca09895e..9307385b9a 100644
--- a/include/deal.II/lac/ginkgo_solver.h
+++ b/include/deal.II/lac/ginkgo_solver.h
@@ -99,8 +99,7 @@ namespace GinkgoWrappers
* The @p solver_control object is the same as for other
* deal.II iterative solvers.
*/
- SolverBase(SolverControl & solver_control,
- std::string exec_type);
+ SolverBase(SolverControl &solver_control, std::string exec_type);
/**
* Destructor.
@@ -228,25 +227,26 @@ namespace GinkgoWrappers
*
* @p exec_type The execution paradigm for the CG solver.
*/
- SolverCG(SolverControl & solver_control,
- std::string exec_type,
- const AdditionalData & data = AdditionalData());
+ SolverCG(SolverControl & solver_control,
+ std::string exec_type,
+ const AdditionalData &data = AdditionalData());
+
+ /**
+ * Constructor.
+ *
+ * @p solver_control The solver control object is then used to set the
+ * parameters and setup the CG solver from the CG factory which solves the
+ * linear system.
+ *
+ * @p exec_type The execution paradigm for the CG solver.
+ *
+ * @p preconditioner The preconditioner for the solver.
+ */
+ SolverCG(SolverControl & solver_control,
+ std::string exec_type,
+ std::shared_ptr preconditioner,
+ const AdditionalData & data = AdditionalData());
- /**
- * Constructor.
- *
- * @p solver_control The solver control object is then used to set the
- * parameters and setup the CG solver from the CG factory which solves the
- * linear system.
- *
- * @p exec_type The execution paradigm for the CG solver.
- *
- * @p preconditioner The preconditioner for the solver.
- */
- SolverCG(SolverControl & solver_control,
- std::string exec_type,
- std::shared_ptr preconditioner,
- const AdditionalData & data = AdditionalData());
protected:
/**
* Store a copy of the settings for this particular solver.
@@ -274,30 +274,31 @@ namespace GinkgoWrappers
* Constructor.
*
* @p solver_control The solver control object is then used to set the
- * parameters and setup the BICGSTAB solver from the BICGSTAB factory which solves the
- * linear system.
+ * parameters and setup the BICGSTAB solver from the BICGSTAB factory which
+ * solves the linear system.
*
* @p exec_type The execution paradigm for the BICGSTAB solver.
*/
- SolverBICGSTAB(SolverControl & solver_control,
- std::string exec_type,
- const AdditionalData & data = AdditionalData());
+ SolverBICGSTAB(SolverControl & solver_control,
+ std::string exec_type,
+ const AdditionalData &data = AdditionalData());
+
+ /**
+ * Constructor.
+ *
+ * @p solver_control The solver control object is then used to set the
+ * parameters and setup the BICGSTAB solver from the BICGSTAB factory which
+ * solves the linear system.
+ *
+ * @p exec_type The execution paradigm for the BICGSTAB solver.
+ *
+ * @p preconditioner The preconditioner for the solver.
+ */
+ SolverBICGSTAB(SolverControl & solver_control,
+ std::string exec_type,
+ std::shared_ptr preconditioner,
+ const AdditionalData & data = AdditionalData());
- /**
- * Constructor.
- *
- * @p solver_control The solver control object is then used to set the
- * parameters and setup the BICGSTAB solver from the BICGSTAB factory which solves the
- * linear system.
- *
- * @p exec_type The execution paradigm for the BICGSTAB solver.
- *
- * @p preconditioner The preconditioner for the solver.
- */
- SolverBICGSTAB(SolverControl & solver_control,
- std::string exec_type,
- std::shared_ptr preconditioner,
- const AdditionalData & data = AdditionalData());
protected:
/**
* Store a copy of the settings for this particular solver.
@@ -311,7 +312,7 @@ namespace GinkgoWrappers
* @ingroup GinkgoWrappers
*/
template
- class SolverCGS: public SolverBase
+ class SolverCGS : public SolverBase
{
public:
/**
@@ -329,25 +330,26 @@ namespace GinkgoWrappers
*
* @p exec_type The execution paradigm for the CGS solver.
*/
- SolverCGS(SolverControl & solver_control,
- std::string exec_type,
- const AdditionalData & data = AdditionalData());
+ SolverCGS(SolverControl & solver_control,
+ std::string exec_type,
+ const AdditionalData &data = AdditionalData());
+
+ /**
+ * Constructor.
+ *
+ * @p solver_control The solver control object is then used to set the
+ * parameters and setup the CGS solver from the CGS factory which solves the
+ * linear system.
+ *
+ * @p exec_type The execution paradigm for the CGS solver.
+ *
+ * @p preconditioner The preconditioner for the solver.
+ */
+ SolverCGS(SolverControl & solver_control,
+ std::string exec_type,
+ std::shared_ptr preconditioner,
+ const AdditionalData & data = AdditionalData());
- /**
- * Constructor.
- *
- * @p solver_control The solver control object is then used to set the
- * parameters and setup the CGS solver from the CGS factory which solves the
- * linear system.
- *
- * @p exec_type The execution paradigm for the CGS solver.
- *
- * @p preconditioner The preconditioner for the solver.
- */
- SolverCGS(SolverControl & solver_control,
- std::string exec_type,
- std::shared_ptr preconditioner,
- const AdditionalData & data = AdditionalData());
protected:
/**
* Store a copy of the settings for this particular solver.
@@ -361,7 +363,7 @@ namespace GinkgoWrappers
* @ingroup GinkgoWrappers
*/
template
- class SolverFCG: public SolverBase
+ class SolverFCG : public SolverBase
{
public:
/**
@@ -379,25 +381,26 @@ namespace GinkgoWrappers
*
* @p exec_type The execution paradigm for the FCG solver.
*/
- SolverFCG(SolverControl & solver_control,
- std::string exec_type,
- const AdditionalData & data = AdditionalData());
+ SolverFCG(SolverControl & solver_control,
+ std::string exec_type,
+ const AdditionalData &data = AdditionalData());
+
+ /**
+ * Constructor.
+ *
+ * @p solver_control The solver control object is then used to set the
+ * parameters and setup the FCG solver from the FCG factory which solves the
+ * linear system.
+ *
+ * @p exec_type The execution paradigm for the FCG solver.
+ *
+ * @p preconditioner The preconditioner for the solver.
+ */
+ SolverFCG(SolverControl & solver_control,
+ std::string exec_type,
+ std::shared_ptr preconditioner,
+ const AdditionalData & data = AdditionalData());
- /**
- * Constructor.
- *
- * @p solver_control The solver control object is then used to set the
- * parameters and setup the FCG solver from the FCG factory which solves the
- * linear system.
- *
- * @p exec_type The execution paradigm for the FCG solver.
- *
- * @p preconditioner The preconditioner for the solver.
- */
- SolverFCG(SolverControl & solver_control,
- std::string exec_type,
- std::shared_ptr preconditioner,
- const AdditionalData & data = AdditionalData());
protected:
/**
* Store a copy of the settings for this particular solver.
@@ -411,55 +414,55 @@ namespace GinkgoWrappers
* @ingroup GinkgoWrappers
*/
template
- class SolverGMRES: public SolverBase
+ class SolverGMRES : public SolverBase
{
public:
/**
* A standardized data struct to pipe additional data to the solver.
*/
struct AdditionalData
- {
- /**
- * Constructor. By default, set the number of temporary vectors to 30,
- * i.e. do a restart every 30 iterations.
- */
- AdditionalData(const unsigned int restart_parameter = 30);
+ {
+ /**
+ * Constructor. By default, set the number of temporary vectors to 30,
+ * i.e. do a restart every 30 iterations.
+ */
+ AdditionalData(const unsigned int restart_parameter = 30);
+
+ /**
+ * Maximum number of tmp vectors.
+ */
+ unsigned int restart_parameter;
+ };
/**
- * Maximum number of tmp vectors.
+ * Constructor.
+ *
+ * @p solver_control The solver control object is then used to set the
+ * parameters and setup the GMRES solver from the GMRES factory which solves
+ * the linear system.
+ *
+ * @p exec_type The execution paradigm for the GMRES solver.
*/
- unsigned int restart_parameter;
-
- };
+ SolverGMRES(SolverControl & solver_control,
+ std::string exec_type,
+ const AdditionalData &data = AdditionalData());
/**
* Constructor.
*
* @p solver_control The solver control object is then used to set the
- * parameters and setup the GMRES solver from the GMRES factory which solves the
- * linear system.
+ * parameters and setup the GMRES solver from the GMRES factory which solves
+ * the linear system.
*
* @p exec_type The execution paradigm for the GMRES solver.
+ *
+ * @p preconditioner The preconditioner for the solver.
*/
- SolverGMRES(SolverControl & solver_control,
- std::string exec_type,
- const AdditionalData & data = AdditionalData());
+ SolverGMRES(SolverControl & solver_control,
+ std::string exec_type,
+ std::shared_ptr preconditioner,
+ const AdditionalData & data = AdditionalData());
- /**
- * Constructor.
- *
- * @p solver_control The solver control object is then used to set the
- * parameters and setup the GMRES solver from the GMRES factory which solves the
- * linear system.
- *
- * @p exec_type The execution paradigm for the GMRES solver.
- *
- * @p preconditioner The preconditioner for the solver.
- */
- SolverGMRES(SolverControl & solver_control,
- std::string exec_type,
- std::shared_ptr preconditioner,
- const AdditionalData & data = AdditionalData());
protected:
/**
* Store a copy of the settings for this particular solver.
@@ -473,7 +476,7 @@ namespace GinkgoWrappers
* @ingroup GinkgoWrappers
*/
template
- class SolverIR: public SolverBase
+ class SolverIR : public SolverBase
{
public:
/**
@@ -491,25 +494,25 @@ namespace GinkgoWrappers
*
* @p exec_type The execution paradigm for the IR solver.
*/
- SolverIR(SolverControl & solver_control,
- std::string exec_type,
- const AdditionalData & data = AdditionalData());
+ SolverIR(SolverControl & solver_control,
+ std::string exec_type,
+ const AdditionalData &data = AdditionalData());
- /**
- * Constructor.
- *
- * @p solver_control The solver control object is then used to set the
- * parameters and setup the IR solver from the IR factory which solves the
- * linear system.
- *
- * @p exec_type The execution paradigm for the IR solver.
- *
- * @p inner_solver The Inner solver for the IR solver.
- */
- SolverIR(SolverControl & solver_control,
- std::string exec_type,
- std::shared_ptr inner_solver,
- const AdditionalData & data = AdditionalData());
+ /**
+ * Constructor.
+ *
+ * @p solver_control The solver control object is then used to set the
+ * parameters and setup the IR solver from the IR factory which solves the
+ * linear system.
+ *
+ * @p exec_type The execution paradigm for the IR solver.
+ *
+ * @p inner_solver The Inner solver for the IR solver.
+ */
+ SolverIR(SolverControl & solver_control,
+ std::string exec_type,
+ std::shared_ptr inner_solver,
+ const AdditionalData & data = AdditionalData());
protected:
/**
diff --git a/tests/ginkgo/solver.cc b/tests/ginkgo/solver.cc
index b68c414d3b..12709a4506 100644
--- a/tests/ginkgo/solver.cc
+++ b/tests/ginkgo/solver.cc
@@ -56,23 +56,27 @@ main(int argc, char **argv)
// std::shared_ptr exec = gko::CudaExecutor::create(0,
// gko::OmpExecutor::create());
// std::shared_ptr exec = gko::OmpExecutor::create();
- auto executor = "reference";
- std::shared_ptr exec = gko::ReferenceExecutor::create();
- std::shared_ptr jacobi = gko::preconditioner::Jacobi<>::build().on(exec);
- std::shared_ptr inner_cg = gko::solver::Cg<>::build()
- .with_criteria(
- gko::stop::Iteration::build().with_max_iters(45u).on(exec),
- gko::stop::ResidualNormReduction<>::build()
- .with_reduction_factor(1e-5)
- .on(exec))
- .on(exec);
- GinkgoWrappers::SolverCG<> cg_solver(control, executor);
- GinkgoWrappers::SolverBICGSTAB<> bicgstab_solver(control, executor);
- GinkgoWrappers::SolverCGS<> cgs_solver(control, executor);
- GinkgoWrappers::SolverFCG<> fcg_solver(control, executor);
- GinkgoWrappers::SolverGMRES<> gmres_solver(control, executor);
- GinkgoWrappers::SolverIR<> ir_solver_cg(control, executor, inner_cg);
- GinkgoWrappers::SolverCG<> cg_solver_with_jacobi_precond(control, executor, jacobi);
+ auto executor = "reference";
+ std::shared_ptr exec = gko::ReferenceExecutor::create();
+ std::shared_ptr jacobi =
+ gko::preconditioner::Jacobi<>::build().on(exec);
+ std::shared_ptr inner_cg =
+ gko::solver::Cg<>::build()
+ .with_criteria(gko::stop::Iteration::build().with_max_iters(45u).on(
+ exec),
+ gko::stop::ResidualNormReduction<>::build()
+ .with_reduction_factor(1e-5)
+ .on(exec))
+ .on(exec);
+ GinkgoWrappers::SolverCG<> cg_solver(control, executor);
+ GinkgoWrappers::SolverBICGSTAB<> bicgstab_solver(control, executor);
+ GinkgoWrappers::SolverCGS<> cgs_solver(control, executor);
+ GinkgoWrappers::SolverFCG<> fcg_solver(control, executor);
+ GinkgoWrappers::SolverGMRES<> gmres_solver(control, executor);
+ GinkgoWrappers::SolverIR<> ir_solver_cg(control, executor, inner_cg);
+ GinkgoWrappers::SolverCG<> cg_solver_with_jacobi_precond(control,
+ executor,
+ jacobi);
check_solver_within_range(cg_solver.solve(A, u, f),
control.last_step(),
--
2.39.5