[Dune] MPI Handling in dgfparser
Thimo Neubauer
thimo.neubauer at iwr.uni-heidelberg.de
Sat Jul 15 13:44:32 CEST 2006
Hi,
On Fri, Jul 14, 2006 at 02:16:05PM +0200, Andreas Dedner wrote:
> Die Idee war ein und denselben Code benutzen zu koennen, falls
> 1) kein mpi gefunden wurde
> 2) mpi gefunden wurde aber nicht benutzt wird
> 3) mpi gefunden wurde und parallel gearbeitet wird
> Seit der --enable-mpi flag existiert hat sich das ganze entschaerft -
> deswegen wurde er ja auch eingefuerht.
> Ich wuerd allerdings trotzdem gern schreiben:
> MPISTART
> ...
> grid("name.dgf",MPI_COMM_WORLD);
> ...
> MPIEND
>
> statt
> #if HAVE_MPI
> MPI_Init();
> #endif
> ...
> #if HAVE_MPI
> grid("name",MPI_COMM_WORLD;
> #else
> grid("name");
> #endif
> ...
> #if HAVE_MPI
> MPI_End();
> #endif
> Wahrscheinlich weil ich finde wir muessen dem Anwedner nicht zu viele
> defines zumuten.
How about wrapping the MPI-startup in a helper class? This would allow
for something as easy to write as the first pattern (and without any
defines):
MPIHelper mpihelper;
grid("name", mpihelper::MPI_COMM_WORLD);
// or grid("name", mpihelper)
With active MPI the helper does the classic RAII (resource acquisition
is initialization), i.e. calls MPI_Init() in the constructor and
MPI_End() in the destructor. Without MPI an empty dummy
initialization is used and the -1 semantic of MPI_COMM_WORLD could
also be expressed in a simple way.
Just my 2 cents
Cheers
Thimo
More information about the Dune
mailing list