From: Peter Munch Date: Wed, 3 Jun 2020 15:42:09 +0000 (+0200) Subject: Fix distribution of levels in pft X-Git-Tag: v9.3.0-rc1~1470^2 X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F10453%2Fhead;p=dealii.git Fix distribution of levels in pft --- diff --git a/source/grid/tria_description.cc b/source/grid/tria_description.cc index 5e5c61b475..bcec7bcb31 100644 --- a/source/grid/tria_description.cc +++ b/source/grid/tria_description.cc @@ -227,6 +227,10 @@ namespace TriangulationDescription construction_data.smoothing = tria.get_mesh_smoothing(); construction_data.settings = settings; + const bool construct_multigrid = + settings & + TriangulationDescription::Settings::construct_multigrid_hierarchy; + Assert( !(settings & TriangulationDescription::Settings::construct_multigrid_hierarchy) || @@ -254,7 +258,8 @@ namespace TriangulationDescription std::vector vertices_owned_by_locally_owned_cells_on_level( tria.n_vertices()); for (auto cell : tria.cell_iterators_on_level(level)) - if (cell->level_subdomain_id() == my_rank || + if ((construct_multigrid && + (cell->level_subdomain_id() == my_rank)) || (cell->active() && cell->subdomain_id() == my_rank)) add_vertices_of_cell_to_vertices_owned_by_locally_owned_cells( cell, vertices_owned_by_locally_owned_cells_on_level); @@ -358,7 +363,8 @@ namespace TriangulationDescription std::vector vertices_owned_by_locally_owned_cells_on_level( tria.n_vertices()); for (auto cell : tria.cell_iterators_on_level(level)) - if (cell->level_subdomain_id() == my_rank || + if ((construct_multigrid && + (cell->level_subdomain_id() == my_rank)) || (cell->active() && cell->subdomain_id() == my_rank)) add_vertices_of_cell_to_vertices_owned_by_locally_owned_cells( cell, vertices_owned_by_locally_owned_cells_on_level); diff --git a/tests/fullydistributed_grids/copy_serial_tria_01.mpirun=5.output b/tests/fullydistributed_grids/copy_serial_tria_01.mpirun=5.output index 0ea95b8bd7..9151232433 100644 --- a/tests/fullydistributed_grids/copy_serial_tria_01.mpirun=5.output +++ b/tests/fullydistributed_grids/copy_serial_tria_01.mpirun=5.output @@ -1,14 +1,14 @@ DEAL:0:2d::n_levels: 4 -DEAL:0:2d::n_cells: 255 -DEAL:0:2d::n_active_cells: 192 +DEAL:0:2d::n_cells: 106 +DEAL:0:2d::n_active_cells: 80 DEAL:0:2d:: DEAL:0:2d::n_dofs: 833 DEAL:0:2d::n_locally_owned_dofs: 189 DEAL:0:2d:: DEAL:0:3d::n_levels: 4 -DEAL:0:3d::n_cells: 4095 -DEAL:0:3d::n_active_cells: 3584 +DEAL:0:3d::n_cells: 1639 +DEAL:0:3d::n_active_cells: 1435 DEAL:0:3d:: DEAL:0:3d::n_dofs: 31841 DEAL:0:3d::n_locally_owned_dofs: 6945 diff --git a/tests/fullydistributed_grids/copy_serial_tria_04.mpirun=4.output b/tests/fullydistributed_grids/copy_serial_tria_04.mpirun=4.output index 27e9c8c351..838a77602b 100644 --- a/tests/fullydistributed_grids/copy_serial_tria_04.mpirun=4.output +++ b/tests/fullydistributed_grids/copy_serial_tria_04.mpirun=4.output @@ -1,21 +1,21 @@ DEAL:0:1d::n_levels: 5 -DEAL:0:1d::n_cells: 248 -DEAL:0:1d::n_active_cells: 128 +DEAL:0:1d::n_cells: 80 +DEAL:0:1d::n_active_cells: 42 DEAL:0:1d:: DEAL:0:1d::n_dofs: 257 DEAL:0:1d::n_locally_owned_dofs: 65 DEAL:0:1d:: DEAL:0:2d::n_levels: 4 -DEAL:0:2d::n_cells: 5440 -DEAL:0:2d::n_active_cells: 4096 +DEAL:0:2d::n_cells: 1876 +DEAL:0:2d::n_active_cells: 1416 DEAL:0:2d:: DEAL:0:2d::n_dofs: 16641 DEAL:0:2d::n_locally_owned_dofs: 4225 DEAL:0:2d:: DEAL:0:3d::n_levels: 4 -DEAL:0:3d::n_cells: 37440 -DEAL:0:3d::n_active_cells: 32768 +DEAL:0:3d::n_cells: 15680 +DEAL:0:3d::n_active_cells: 13728 DEAL:0:3d:: DEAL:0:3d::n_dofs: 274625 DEAL:0:3d::n_locally_owned_dofs: 70785 diff --git a/tests/fullydistributed_grids/copy_serial_tria_04.mpirun=5.output b/tests/fullydistributed_grids/copy_serial_tria_04.mpirun=5.output index 4b93e5d7ce..86d904f4a6 100644 --- a/tests/fullydistributed_grids/copy_serial_tria_04.mpirun=5.output +++ b/tests/fullydistributed_grids/copy_serial_tria_04.mpirun=5.output @@ -1,21 +1,21 @@ DEAL:0:1d::n_levels: 5 -DEAL:0:1d::n_cells: 248 -DEAL:0:1d::n_active_cells: 128 +DEAL:0:1d::n_cells: 65 +DEAL:0:1d::n_active_cells: 34 DEAL:0:1d:: DEAL:0:1d::n_dofs: 257 DEAL:0:1d::n_locally_owned_dofs: 53 DEAL:0:1d:: DEAL:0:2d::n_levels: 4 -DEAL:0:2d::n_cells: 5440 -DEAL:0:2d::n_active_cells: 4096 +DEAL:0:2d::n_cells: 1600 +DEAL:0:2d::n_active_cells: 1208 DEAL:0:2d:: DEAL:0:2d::n_dofs: 16641 DEAL:0:2d::n_locally_owned_dofs: 3409 DEAL:0:2d:: DEAL:0:3d::n_levels: 4 -DEAL:0:3d::n_cells: 37440 -DEAL:0:3d::n_active_cells: 32768 +DEAL:0:3d::n_cells: 14352 +DEAL:0:3d::n_active_cells: 12566 DEAL:0:3d:: DEAL:0:3d::n_dofs: 274625 DEAL:0:3d::n_locally_owned_dofs: 57409 diff --git a/tests/fullydistributed_grids/memory_consumption_01.cc b/tests/fullydistributed_grids/memory_consumption_01.cc new file mode 100644 index 0000000000..0df6a307bd --- /dev/null +++ b/tests/fullydistributed_grids/memory_consumption_01.cc @@ -0,0 +1,82 @@ +// --------------------------------------------------------------------- +// +// Copyright (C) 2019 - 2020 by the deal.II authors +// +// This file is part of the deal.II library. +// +// The deal.II library is free software; you can use it, redistribute +// it, and/or modify it under the terms of the GNU Lesser General +// Public License as published by the Free Software Foundation; either +// version 2.1 of the License, or (at your option) any later version. +// The full text of the license can be found in the file LICENSE.md at +// the top level directory of deal.II. +// +// --------------------------------------------------------------------- + + +// Monitor memory consumption. + +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include "./tests.h" + +using namespace dealii; + +template +void +test(MPI_Comm comm) +{ + // create serial triangulation + Triangulation basetria; + + GridGenerator::subdivided_hyper_cube(basetria, 10); + basetria.refine_global(2); + + GridTools::partition_triangulation_zorder( + Utilities::MPI::n_mpi_processes(comm), basetria); + + // create instance of pft + parallel::fullydistributed::Triangulation tria_pft(comm); + + // register dynamic construction data + auto construction_data = + TriangulationDescription::Utilities::create_description_from_triangulation( + basetria, comm); + + // actually create triangulation + tria_pft.create_triangulation(construction_data); + + auto min_max_avg = + Utilities::MPI::min_max_avg(tria_pft.memory_consumption(), comm); + + Assert((min_max_avg.min / min_max_avg.max >= 0.75), + ExcMessage("Memory consumption difference is too big!")); + + deallog << "OK!" << std::endl; +} + +int +main(int argc, char *argv[]) +{ + Utilities::MPI::MPI_InitFinalize mpi_initialization(argc, argv, 1); + mpi_initlog(); + + const MPI_Comm comm = MPI_COMM_WORLD; + + { + deallog.push("2d"); + test<2>(comm); + deallog.pop(); + } +} diff --git a/tests/fullydistributed_grids/memory_consumption_01.mpirun=5.output b/tests/fullydistributed_grids/memory_consumption_01.mpirun=5.output new file mode 100644 index 0000000000..ac9cbd9864 --- /dev/null +++ b/tests/fullydistributed_grids/memory_consumption_01.mpirun=5.output @@ -0,0 +1,2 @@ + +DEAL:2d::OK! diff --git a/tests/serialization/parallel_fullydistributed_construction_data_1.output b/tests/serialization/parallel_fullydistributed_construction_data_1.output index eead08ef3d..2331d0e2e7 100644 --- a/tests/serialization/parallel_fullydistributed_construction_data_1.output +++ b/tests/serialization/parallel_fullydistributed_construction_data_1.output @@ -1,14 +1,14 @@ -DEAL:0::0 0 0 0 1 0 0 0 2 0 0 1 0 0 4294967295 0 0 2 0 0 0 0 0 1 0 0 0.00000000000000000e+00 1 1.00000000000000000e+00 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 4 0 1 0 0 4294967294 0 4294967295 0 0 2 0 0 0 0 0 1 1 2 0 4 0 5 0 0 0 0 4294967295 1 0 0 0 4 0 5 1 0 0 0 4294967295 1 0 1 1 0 0 +DEAL:0::0 0 0 0 1 0 0 0 2 0 0 1 0 0 4294967295 0 0 2 0 0 0 0 0 1 0 0 0.00000000000000000e+00 1 1.00000000000000000e+00 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 4 0 1 0 0 4294967294 4294967294 4294967295 0 0 2 0 0 0 0 0 1 1 2 0 4 0 5 0 0 0 0 4294967295 1 0 0 0 4 0 5 1 0 0 0 4294967295 1 0 1 1 0 0 -DEAL:0::0 0 0 0 1 0 0 0 2 0 0 1 0 0 4294967295 0 0 2 0 0 0 0 0 1 0 0 0.00000000000000000e+00 1 1.00000000000000000e+00 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 4 0 1 0 0 4294967294 0 4294967295 0 0 2 0 0 0 0 0 1 1 2 0 4 0 5 0 0 0 0 4294967295 1 0 0 0 4 0 5 1 0 0 0 4294967295 1 0 1 1 0 0 +DEAL:0::0 0 0 0 1 0 0 0 2 0 0 1 0 0 4294967295 0 0 2 0 0 0 0 0 1 0 0 0.00000000000000000e+00 1 1.00000000000000000e+00 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 4 0 1 0 0 4294967294 4294967294 4294967295 0 0 2 0 0 0 0 0 1 1 2 0 4 0 5 0 0 0 0 4294967295 1 0 0 0 4 0 5 1 0 0 0 4294967295 1 0 1 1 0 0 -DEAL:0::0 0 0 0 1 0 0 0 4 0 0 1 2 3 0 0 4294967295 0 0 4 0 0 0 0 0 2 0 0 0.00000000000000000e+00 0.00000000000000000e+00 2 1.00000000000000000e+00 0.00000000000000000e+00 2 0.00000000000000000e+00 1.00000000000000000e+00 2 1.00000000000000000e+00 1.00000000000000000e+00 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 4 0 2 0 0 4294967294 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 0 0 4 0 0 0 0 0 1 0 2 0 3 0 4 0 4 0 6 0 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 0 0 2 0 4 0 6 1 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 1 0 2 0 4 0 6 2 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 0 0 3 0 4 0 6 3 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 1 0 3 0 0 0 +DEAL:0::0 0 0 0 1 0 0 0 4 0 0 1 2 3 0 0 4294967295 0 0 4 0 0 0 0 0 2 0 0 0.00000000000000000e+00 0.00000000000000000e+00 2 1.00000000000000000e+00 0.00000000000000000e+00 2 0.00000000000000000e+00 1.00000000000000000e+00 2 1.00000000000000000e+00 1.00000000000000000e+00 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 4 0 2 0 0 4294967294 4294967294 4294967295 4 4294967295 4294967295 4294967295 4294967295 0 0 4 0 0 0 0 0 1 0 2 0 3 0 4 0 4 0 6 0 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 0 0 2 0 4 0 6 1 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 1 0 2 0 4 0 6 2 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 0 0 3 0 4 0 6 3 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 1 0 3 0 0 0 -DEAL:0::0 0 0 0 1 0 0 0 4 0 0 1 2 3 0 0 4294967295 0 0 4 0 0 0 0 0 2 0 0 0.00000000000000000e+00 0.00000000000000000e+00 2 1.00000000000000000e+00 0.00000000000000000e+00 2 0.00000000000000000e+00 1.00000000000000000e+00 2 1.00000000000000000e+00 1.00000000000000000e+00 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 4 0 2 0 0 4294967294 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 0 0 4 0 0 0 0 0 1 0 2 0 3 0 4 0 4 0 6 0 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 0 0 2 0 4 0 6 1 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 1 0 2 0 4 0 6 2 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 0 0 3 0 4 0 6 3 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 1 0 3 0 0 0 +DEAL:0::0 0 0 0 1 0 0 0 4 0 0 1 2 3 0 0 4294967295 0 0 4 0 0 0 0 0 2 0 0 0.00000000000000000e+00 0.00000000000000000e+00 2 1.00000000000000000e+00 0.00000000000000000e+00 2 0.00000000000000000e+00 1.00000000000000000e+00 2 1.00000000000000000e+00 1.00000000000000000e+00 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 4 0 2 0 0 4294967294 4294967294 4294967295 4 4294967295 4294967295 4294967295 4294967295 0 0 4 0 0 0 0 0 1 0 2 0 3 0 4 0 4 0 6 0 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 0 0 2 0 4 0 6 1 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 1 0 2 0 4 0 6 2 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 0 0 3 0 4 0 6 3 0 0 0 4294967295 4 4294967295 4294967295 4294967295 4294967295 2 0 1 0 3 0 0 0 -DEAL:0::0 0 0 0 1 0 0 0 8 0 0 1 2 3 4 5 6 7 0 0 4294967295 0 0 8 0 0 0 0 0 3 0 0 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 4 0 3 0 0 4294967294 0 4294967295 0 0 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 6 0 0 0 0 0 1 0 2 0 3 0 4 0 5 0 8 0 4 0 7 0 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 2 0 4 0 4 0 7 1 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 2 0 4 0 4 0 7 2 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 3 0 4 0 4 0 7 3 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 3 0 4 0 4 0 7 4 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 2 0 5 0 4 0 7 5 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 2 0 5 0 4 0 7 6 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 3 0 5 0 4 0 7 7 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 3 0 5 0 0 0 +DEAL:0::0 0 0 0 1 0 0 0 8 0 0 1 2 3 4 5 6 7 0 0 4294967295 0 0 8 0 0 0 0 0 3 0 0 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 4 0 3 0 0 4294967294 4294967294 4294967295 0 0 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 6 0 0 0 0 0 1 0 2 0 3 0 4 0 5 0 8 0 4 0 7 0 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 2 0 4 0 4 0 7 1 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 2 0 4 0 4 0 7 2 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 3 0 4 0 4 0 7 3 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 3 0 4 0 4 0 7 4 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 2 0 5 0 4 0 7 5 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 2 0 5 0 4 0 7 6 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 3 0 5 0 4 0 7 7 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 3 0 5 0 0 0 -DEAL:0::0 0 0 0 1 0 0 0 8 0 0 1 2 3 4 5 6 7 0 0 4294967295 0 0 8 0 0 0 0 0 3 0 0 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 4 0 3 0 0 4294967294 0 4294967295 0 0 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 6 0 0 0 0 0 1 0 2 0 3 0 4 0 5 0 8 0 4 0 7 0 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 2 0 4 0 4 0 7 1 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 2 0 4 0 4 0 7 2 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 3 0 4 0 4 0 7 3 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 3 0 4 0 4 0 7 4 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 2 0 5 0 4 0 7 5 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 2 0 5 0 4 0 7 6 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 3 0 5 0 4 0 7 7 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 3 0 5 0 0 0 +DEAL:0::0 0 0 0 1 0 0 0 8 0 0 1 2 3 4 5 6 7 0 0 4294967295 0 0 8 0 0 0 0 0 3 0 0 0.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 0.00000000000000000e+00 3 0.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 0.00000000000000000e+00 1.00000000000000000e+00 3 0.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 3 1.00000000000000000e+00 1.00000000000000000e+00 1.00000000000000000e+00 1 0 0 0 0 2 0 0 0 1 0 0 0 0 0 4 0 3 0 0 4294967294 4294967294 4294967295 0 0 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 0 0 6 0 0 0 0 0 1 0 2 0 3 0 4 0 5 0 8 0 4 0 7 0 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 2 0 4 0 4 0 7 1 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 2 0 4 0 4 0 7 2 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 3 0 4 0 4 0 7 3 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 3 0 4 0 4 0 7 4 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 2 0 5 0 4 0 7 5 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 2 0 5 0 4 0 7 6 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 0 0 3 0 5 0 4 0 7 7 0 0 0 4294967295 12 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 6 4294967295 4294967295 4294967295 4294967295 4294967295 4294967295 3 0 1 0 3 0 5 0 0 0 DEAL:0::OK