From 19f9867f96fd8b7a3aaf5a1a2d3fe02511730c43 Mon Sep 17 00:00:00 2001 From: Tobias Ribizel Date: Fri, 5 Feb 2021 13:26:12 +0100 Subject: [PATCH] add stopping criterion norm2 call --- core/solver/bicg.cpp | 5 +++-- core/solver/bicgstab.cpp | 5 +++-- core/solver/cg.cpp | 3 ++- core/solver/cgs.cpp | 5 +++-- core/solver/fcg.cpp | 3 ++- 5 files changed, 13 insertions(+), 8 deletions(-) diff --git a/core/solver/bicg.cpp b/core/solver/bicg.cpp index 264ac0b3b75..52f866c8efe 100644 --- a/core/solver/bicg.cpp +++ b/core/solver/bicg.cpp @@ -186,14 +186,15 @@ void Bicg::apply_impl(const LinOp *b, LinOp *x) const /* Memory movement summary: * Per iteration: - * 13.5n * values + matrix/preconditioner storage + * 14n * values + matrix/preconditioner storage * Two iterations: - * 27n * values + matrix/preconditioner storage + conj storage + * 28n * values + matrix/preconditioner storage + conj storage * 2x SpMV: 4n * values + storage + conj storage * 2x Preconditioner: 4n * values + storage + conj storage * 2x dot 4n * 1x step 1 (axpys) 6n * 1x step 2 (axpys) 9n + * 1x norm2 residual n */ while (true) { get_preconditioner()->apply(r.get(), z.get()); diff --git a/core/solver/bicgstab.cpp b/core/solver/bicgstab.cpp index 1d3071912fe..114415f46ed 100644 --- a/core/solver/bicgstab.cpp +++ b/core/solver/bicgstab.cpp @@ -139,9 +139,9 @@ void Bicgstab::apply_impl(const LinOp *b, LinOp *x) const /* Memory movement summary: * Per iteration: - * 14.5n * values + matrix/preconditioner storage + * 15.5n * values + matrix/preconditioner storage * Two iterations: - * 29n * values + 2 * matrix/preconditioner storage + * 31n * values + 2 * matrix/preconditioner storage * 2x SpMV: 4n * values + 2 * storage * 2x Preconditioner: 4n * values + 2 * storage * 3x dot 6n @@ -149,6 +149,7 @@ void Bicgstab::apply_impl(const LinOp *b, LinOp *x) const * 1x step 1 (fused axpys) 4n * 1x step 2 (axpy) 3n * 1x step 3 (fused axpys) 7n + * 2x norm2 residual 2n */ while (true) { ++iter; diff --git a/core/solver/cg.cpp b/core/solver/cg.cpp index 7ee32b687c9..4340b6023b9 100644 --- a/core/solver/cg.cpp +++ b/core/solver/cg.cpp @@ -129,12 +129,13 @@ void Cg::apply_impl(const LinOp *b, LinOp *x) const int iter = -1; /* Memory movement summary: - * 17n * values + matrix/preconditioner storage + * 18n * values + matrix/preconditioner storage * 1x SpMV: 2n * values + storage * 1x Preconditioner: 2n * values + storage * 2x dot 4n * 1x step 1 (axpy) 3n * 1x step 2 (axpys) 6n + * 1x norm2 residual n */ while (true) { get_preconditioner()->apply(r.get(), z.get()); diff --git a/core/solver/cgs.cpp b/core/solver/cgs.cpp index ef9e5029253..38e62e5f60c 100644 --- a/core/solver/cgs.cpp +++ b/core/solver/cgs.cpp @@ -140,15 +140,16 @@ void Cgs::apply_impl(const LinOp *b, LinOp *x) const int iter = 0; /* Memory movement summary: * Per iteration: - * 13.5n * values + matrix/preconditioner storage + * 14n * values + matrix/preconditioner storage * Two iterations: - * 27n * values + 2 * matrix/preconditioner storage + * 28n * values + 2 * matrix/preconditioner storage * 2x SpMV: 4n * values + 2 * storage * 2x Preconditioner: 4n * values + 2 * storage * 2x dot 4n * 1x step 1 (fused axpys) 5n * 1x step 2 (fused axpys) 4n * 1x step 3 (axpys) 6n + * 1x norm2 residual n */ while (true) { r->compute_dot(r_tld.get(), rho.get()); diff --git a/core/solver/fcg.cpp b/core/solver/fcg.cpp index 7104368e711..33e8a683a49 100644 --- a/core/solver/fcg.cpp +++ b/core/solver/fcg.cpp @@ -131,12 +131,13 @@ void Fcg::apply_impl(const LinOp *b, LinOp *x) const int iter = -1; /* Memory movement summary: - * 20n * values + matrix/preconditioner storage + * 21n * values + matrix/preconditioner storage * 1x SpMV: 2n * values + storage * 1x Preconditioner: 2n * values + storage * 3x dot 6n * 1x step 1 (axpy) 3n * 1x step 2 (fused axpys) 7n + * 1x norm2 residual n */ while (true) { get_preconditioner()->apply(r.get(), z.get());