[Dune] Assertion error when running Dune greed in parallel
Guichard, Roland
r.guichard at ucl.ac.uk
Fri Jul 5 17:56:40 CEST 2019
Cool, thanks Jorrit for the nice explanation :)
Dr. Roland Guichard
Research Software Engineer
UCL-RITS
Internal Extension: 86947
External Number: 02031086947
On 5 Jul 2019, at 16:41, Jorrit Fahlke <jorrit at jorrit.de<mailto:jorrit at jorrit.de>> wrote:
Am Fr, 5. Jul 2019, 14:06:39 +0000 schrieb Guichard, Roland:
Thank you for the clarification. Some comments below:
On 5 Jul 2019, at 14:38, Jö Fahlke <jorrit.fahlke at wwu.de<mailto:jorrit.fahlke at wwu.de><mailto:jorrit.fahlke at wwu.de>> wrote:
Am Fr, 5. Jul 2019, 12:28:51 +0000 schrieb Guichard, Roland:
I see thanks.
A quick question though, does it mean that there are several MPI initializations possible within Dune and the communicator that needs to be passed to the GridPtr (from dune-fem) is responsible for handling the mesh in parallel ?
MPI_Init is only ever called once.
Yes, but potentially through multiple ways. I mean by this that for instance
the Dune::Fem::MPIManager::initialize( argc, argv ) implicitly calls the
MPIHelper::instance( argc, argv ).
And MPIHelper::instance() ensures that it will create the internal MPIHelper
singleton just once, see
- https://gitlab.dune-project.org/core/dune-common/blob/master/dune/common/parallel/mpihelper.hh#L225
- https://en.cppreference.com/w/cpp/language/storage_duration#Static_local_variables
In addition, the constructor of the MPIHelper singleton checks whether
MPI_Init() has been called previously, and if so won't call it itself, see
https://gitlab.dune-project.org/core/dune-common/blob/master/dune/common/parallel/mpihelper.hh#L249
That should catch any initializations done before MPIHelper::instance() has
been called the first time.
I understand that managers are wrappers around the MPIHelper one. However what I don’t quiet get so far is that, in the code, MPI ranks and size are retrieved using direct MPI calls:
MPI_Comm_rank(MPI_COMM_WORLD, &myRank);
MPI_Comm_size(MPI_COMM_WORLD, &numProcs);
But since the managers provide that functionality I don’t see the point in doing this. Ideally and for readability, you would access anything you need through a single manager. And this also applies to the communicator.
If by "managers" you mean "grid managers": Some of those predate Dune, so
began life on plain MPI. They could be changed to get the MPI communicator
from MPIHelper, but that's always going to be MPI_COMM_WORLD, so there's
little point. Others are actually independend of Dune, and Dune
only provides a wrapper around them. Since they don't know they're being used
from inside Dune, they can't assume the presence of Dune::MPIHelper. If their
authors chose to hardcode them to use MPI_COMM_WORLD, then that is was Dune
has to roll with.
The purpose of Dune::MPIHelper was not the provide a general C++ abstraction
over plain MPI. Instead, it was meant to provide a very basic abstraction
over the two cases of compiling with and without MPI, so the user can avoid
the #ifdef's.
But that is merely my opinion.
Though it is up to the grid manager implementation which MPI communicators are
supported. Some managers may implicitly assume MPI_COMM_WORLD, others may not
support MPI at all (which is implicitly equivalent to MPI_COMM_SELF).
Hm, do I need to understand managers in a larger scope that MPI only then ?
For yet others it may be possible to specify the communicator when
constructing the grid. So if you obtained that communicator by splitting
MPI_COMM_WORLD into two subsets of nodes, you will end up with two independent
grids, each operating within one of the subsets.
OK got that one.
Regards,
Jö.
--
Jorrit (Jö) Fahlke, Institute for Computational und Applied Mathematics,
University of Münster, Orleans-Ring 10, D-48149 Münster
Tel: +49 251 83 35146 Fax: +49 251 83 32729
This message is protected by DoubleROT13 encryption
Attempting to decode it violates the DMCA/WIPO acts
--
Jorrit (Jö) Fahlke, Institute for Computational und Applied Mathematics,
University of Münster, Orleans-Ring 10, D-48149 Münster
Tel: +49 251 83 35146 Fax: +49 251 83 32729
Interpunktion, Orthographie und Grammatik der Email ist frei erfunden.
Eine Übereinstimmung mit aktuellen oder ehemaligen Regeln wäre rein
zufällig und ist nicht beabsichtigt.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.dune-project.org/pipermail/dune/attachments/20190705/8ad05f39/attachment.htm>
More information about the Dune
mailing list