The simple solver with logging example..
This example depends on simple-solver, minimal-cuda-solver.
Let's declare a logger which prints to std::cout instead of printing to a file. We log all events except for all linop factory and polymorphic object events. Events masks are group of events which are provided for convenience.
Add stream_logger only to the ResidualNorm criterion Factory Note that the logger will get automatically propagated to every criterion generated from this factory.
First we add facilities to only print to a file. It's possible to select events, using masks, e.g. only iterations mask: gko::log::Logger::iteration_complete_mask. See the documentation of Logger class for more information.
This adds a simple logger that only reports convergence state at the end of the solver. Specifically it captures the last residual norm, the final number of iterations, and the converged or not converged status.
Add another logger which puts all the data in an object, we can later retrieve this object in our code. Here we only have want Executor and criterion check completed events.
Print the residual of the last criterion check event (where convergence happened)
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2142280] with Bytes[8]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2143410] with Bytes[8]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x21480a0] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x21482f0] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x21484d0] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x21486b0] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2148010] with Bytes[8]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2148a60] with Bytes[8]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x21482b0] with Bytes[8]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2148a40] with Bytes[8]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2147c90] with Bytes[1]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2148ee0] with Bytes[2]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2148e50] with Bytes[8]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2147ce0] with Bytes[8]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 0 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149550] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149730] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 1 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149980] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149b80] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 2 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149290] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149690] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 3 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149890] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149ae0] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 4 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149200] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149310] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 5 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149890] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149cc0] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 6 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149450] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x21494f0] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 7 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149730] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x21497d0] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 8 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149200] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x21492a0] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 9 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149620] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x21496c0] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 10 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149450] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149760] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 11 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149860] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149900] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 12 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x21499a0] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x21493d0] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 13 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149490] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149580] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 14 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149b50] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x21499c0] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 15 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149a70] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149340] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 16 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149970] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149b10] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 17 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149780] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149890] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 18 with ID 1 and finalized set to 1. It changed
one RHS 0, stopped the iteration process 0
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149620] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149cf0] with Bytes[152]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[gko::stop::residual_norm::residual_norm_operation<gko::matrix::Dense<double>
const*&,
gko::matrix::Dense<double>*,
double&,
unsigned char&,
bool&,
gko::array<gko::stopping_status>*&,
gko::array<bool>*,
bool*,
bool*&>,0x7ffd93d14b90] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> check completed
for stop::Criterion[
gko::stop::ResidualNorm<double>,0x2148db0] at iteration 19 with ID 1 and finalized set to 1. It changed
one RHS 1, stopped the iteration process 1
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149890] with Bytes[152]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149340] with Bytes[152]
Last
memory copied was of size 98 FROM executor 0x21400d0 pointer 2143e90 TO executor 0x21400d0 pointer 2149340
Residual = [
8.1654e-19
-1.51449e-17
2.23854e-17
-1.0842e-19
6.09864e-20
-1.92446e-18
1.97867e-18
-4.58075e-18
-1.55854e-18
-2.64274e-17
4.20128e-17
-8.71427e-18
-2.62919e-18
-5.49947e-17
5.51893e-17
-1.57022e-16
-4.2034e-17
-8.71951e-16
1.37837e-15
];
Solution (x):
19 1
0.252218
0.108645
0.0662811
0.0630433
0.0384088
0.0396536
0.0402648
0.0338935
0.0193098
0.0234653
0.0211499
0.0196413
0.0199151
0.0181674
0.0162722
0.0150714
0.0107016
0.0121141
0.0123025
[LOG] >>> allocation started on Executor[
gko::ReferenceExecutor,0x21400d0] with Bytes[8]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149bb0] with Bytes[8]
[LOG] >>> allocation started on Executor[
gko::ReferenceExecutor,0x21400d0] with Bytes[8]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149870] with Bytes[8]
[LOG] >>> allocation started on Executor[
gko::ReferenceExecutor,0x21400d0] with Bytes[8]
[LOG] >>> allocation completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149500] with Bytes[8]
[LOG] >>> Operation[
gko::matrix::csr::advanced_spmv_operation<
gko::matrix::Dense<double> const*,
gko::matrix::Csr<double, int> const*,
gko::matrix::Dense<double> const*,
gko::matrix::Dense<double> const*,
gko::matrix::Dense<double>*>,0x7ffd93d14e50] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[
gko::matrix::csr::advanced_spmv_operation<
gko::matrix::Dense<double> const*,
gko::matrix::Csr<double, int> const*,
gko::matrix::Dense<double> const*,
gko::matrix::Dense<double> const*,
gko::matrix::Dense<double>*>,0x7ffd93d14e50] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[
gko::matrix::dense::compute_norm2_operation<
gko::matrix::Dense<double> const*,
gko::matrix::Dense<double>*>,0x7ffd93d14f70] started on Executor[
gko::ReferenceExecutor,0x21400d0]
[LOG] >>> Operation[
gko::matrix::dense::compute_norm2_operation<
gko::matrix::Dense<double> const*,
gko::matrix::Dense<double>*>,0x7ffd93d14f70] completed on Executor[
gko::ReferenceExecutor,0x21400d0]
Residual norm sqrt(r^T r):
1 1
2.10788e-15
[LOG] >>> free started on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149500]
[LOG] >>> free completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149500]
[LOG] >>> free started on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149870]
[LOG] >>> free completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149870]
[LOG] >>> free started on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149bb0]
[LOG] >>> free completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2149bb0]
[LOG] >>> free started on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2143e90]
[LOG] >>> free completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2143e90]
[LOG] >>> free started on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2143590]
[LOG] >>> free completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2143590]
[LOG] >>> free started on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2142b10]
[LOG] >>> free completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2142b10]
[LOG] >>> free started on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2143c30]
[LOG] >>> free completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2143c30]
[LOG] >>> free started on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2143790]
[LOG] >>> free completed on Executor[
gko::ReferenceExecutor,0x21400d0] at Location[0x2143790]