[Dune] MPI Handling in dgfparser

Andreas Dedner dedner at mathematik.uni-freiburg.de
Fri Jul 14 14:16:05 CEST 2006


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.
Auch gabs frueher Schwierigkeiten, wenn mpi gefunden wurde, dann aber in
den LIBS -lmpi nicht eingetragen war.
Ich will das DGF-Grid so umschreiben, dass MPI_COMM_WORLD ein template
type bekommt, dann ist auch das Problem mit dem int-Annahme geloest.
Wir sind allerdings alle hier in Fr naechste Woche auf einer Konferenz,
daher erwartet bis dahin nix von hier.
Gruss Andreas

Markus Blatt wrote:
> Hi,
> 
> as some of you might habe noticed I changed some of the defines in the
> dgfparser to make it work work with lam-mpi. As I already feared this
> broke quite some tests in the grid check. (see:
> <http://www.dune-project.org/checklog?display=log&revision=2006-07-14T00%3A00%2B0200&mode=build&module=test-alu3dgrid&path=%2Fdune-grid%2Fgrid%2Ftest&tag=Head%20Build&host=hal%20%28Linux%20i686%2C%20gcc%203.4%29> ) 
> 
> The error seems now that there is no mpi.h included in the dgfparser's
> header files and therefore MPI_Comm and MPI_COMM_WORLD are not
> defined.
> 
> As it is quite easy to include them conditionally if MPI is installed
> ,by:
> #ifdef HAVE_MPI
> #include"mpi.h"
> #endif
> 
> I am wondering whether there is a reason for not doing this in the
> dgfparser header files.
> 
> It would be really nice if somebody could explain me what the rational
> behind the defines of MPI_Comm, MPI_COMM_WORLD, MPI_Init,
> MPI_Finalize, ... was.
> 
> Was it intended to be able to compile a programm in sequential mode even
> if Dune is configured with mpi-support. If so, how was this supposed
> to work?
> 
> Looking forward to some enlightenment.
> 
> Cheers,
> 
> Markus




More information about the Dune mailing list