FWIW, The MPI spec claims the entire "MPI" namespace -- so if an app defines their own "MPI" macro, technically, that's incorrect. :-)
On Aug 23, 2011, at 11:52 AM, Gus Correa wrote: > Hi Gabrielle, Jeff > > Not sure if my interjection here may help, > but user-defined macros like this, > appear in many codes we use here, combined with #ifdef > pre-processor directives. > This is certainly not new. > BTW, the name convention varies, I've seen MPI, USE_MPI, SPMD, MPP, etc. > > Sometimes this programming style can clutter the code quite a bit, > particularly when competing and nesting with other #ifdefs associated to > other macros (including _OPENMP, but certainly not only that one). > > Normally the user-MPI macro is defined one step before compilation, in a > Makefile or header file, or by configure-type scripts > that generate Makefiles, fool around with other directives > and header files, etc. > > To avoid the excess pre-processor #ifdefs on the main code, > some even dare to define a "trivial MPI library", via wrappers > to the regular MPI routines, which presumably produce > serial code when the MPI macro is not defined. > This is perhaps reminiscent of the _OPENMP macro functionality > mentioned by Gabrielle. > > Something like this (I'm not claiming this one works!): > > my_MPI_Send_wrap(...) > #ifdef I_LOVE_MPI > MPI_Send(...) > #else > return > #endif > > I wonder if grand unified serial+parallel code is really > worth the effort, or if branching out a serial version is > less of a maintenance nightmare, but that may be out of the topic > of this discussion. > > Anyway: > > Would another macro, say now part of mpi.h, be really helpful? > > Would it only replicate the functionality (and perhaps conflict with) > the user-defined macros I mentioned above, or would it be "smarter" > in some sense that I don't realize? > > Some codes and Makefiles break badly if one replaces the bare compiler > by the MPI compiler wrapper. > Instead, they set the includes and libraries separately. > This practice is not uncommon, > and may be there because in some MPI implementations > the compiler wrappers simply don't exist, as Jeff mentioned. > Would the new MPI macro help or harm in such cases? > > My two cents. > Gus Correa > > Jeff Squyres wrote: >> I unfortunately won't be at the next Forum meeting, but you might want to >> ask someone to bring it up for you. >> It might not give you exactly what you want, however, because not all >> platforms have "mpicc" (or similar) wrapper compilers. I.e., to compile an >> MPI application on some platforms, you just "cc ... -lmpi". Hence, there's >> no way for the compiler to know whether to #define MPI or not. >> Such a macro *could* be added to mpi.h (but not Fortran), but then you >> wouldn't get at least one of the use cases that you (assumedly :-) ) want: >> #if MPI >> #include <mpi.h> >> #endif >> On Aug 23, 2011, at 7:46 AM, Gabriele Fatigati wrote: >>> Can I suggest to insert this macro in next MPI 3 standard? >>> >>> I think It's very useful. >>> >>> 2011/8/23 Jeff Squyres <jsquy...@cisco.com> >>> I'm afraid not. Sorry! :-( >>> >>> We have the OPEN_MPI macro -- it'll be defined to 1 if you compile with >>> Open MPI, but that doesn't really help your portability issue. :-\ >>> >>> On Aug 23, 2011, at 5:19 AM, Gabriele Fatigati wrote: >>> >>>> Dear OpenMPi users, >>>> >>>> is there some portable MPI macro to check if a code is compiled with MPI >>>> compiler? Something like _OPENMP for OpenMP codes: >>>> >>>> #ifdef _OPENMP >>>> >>>> .... >>>> >>>> #endif >>>> >>>> >>>> it exist? >>>> >>>> #ifdef MPI >>>> >>>> >>>> .... >>>> >>>> #endif >>>> >>>> Thanks >>>> >>>> -- >>>> Ing. Gabriele Fatigati >>>> >>>> HPC specialist >>>> >>>> SuperComputing Applications and Innovation Department >>>> >>>> Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy >>>> >>>> www.cineca.it Tel: +39 051 6171722 >>>> >>>> g.fatigati [AT] cineca.it >>>> _______________________________________________ >>>> users mailing list >>>> us...@open-mpi.org >>>> http://www.open-mpi.org/mailman/listinfo.cgi/users >>> >>> -- >>> Jeff Squyres >>> jsquy...@cisco.com >>> For corporate legal information go to: >>> http://www.cisco.com/web/about/doing_business/legal/cri/ >>> >>> >>> _______________________________________________ >>> users mailing list >>> us...@open-mpi.org >>> http://www.open-mpi.org/mailman/listinfo.cgi/users >>> >>> >>> >>> -- >>> Ing. Gabriele Fatigati >>> >>> HPC specialist >>> >>> SuperComputing Applications and Innovation Department >>> >>> Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy >>> >>> www.cineca.it Tel: +39 051 6171722 >>> >>> g.fatigati [AT] cineca.it >>> _______________________________________________ >>> users mailing list >>> us...@open-mpi.org >>> http://www.open-mpi.org/mailman/listinfo.cgi/users > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/