Jeff, another question: how can i check if MPI Exceptions are enabled? 2008/10/28 Jeff Squyres <jsquy...@cisco.com>: > Your question is quite timely -- we had a long discussion about C++ > exceptions just last week at the MPI Forum... :-) > > OMPI disables MPI throwing exceptions by default because it can cause a > [slight] performance penalty in some compilers. You can enable it by adding > --enable-cxx-exceptions to the OMPI configure command line. The issue is > that C++ exceptions have to pass through C (and possibly Fortran) code, so > the compiler has to add some extra instrumentation in each function call to > all the exceptions to pass through (my understanding only, which may not be > entirely correct). Here's what happens: > > application (in C, C++, or Fortran) > -> calls MPI_Foo() > -> an error occurs, OMPI calls its error handling routines > -> if MPI::ERRORS_THROW_EXCEPTIONS was set, this triggers a function > pointer call into libmpi_cxx.* > -> the underlying C++ function then invokes "throw ..." to throw the MPI > exception > -> the exception leaves the C++ code and goes into OMPI's C code > -> the exception has to travel through the C code back up to the > application > -> the exceptions it keeps going upward until it is either caught or the > application aborts > > Hence, you have to tell C and Fortran compilers to enable this "pass > exceptions through" behavior. With the GNU compilers, you have to specify > -fexceptions when you compile C / Fortran codes. There's a bug in the OMPI > v1.2 series that we just discovered last week while doing 1.3 release > testing (this is actually what triggered the long discussion and code fixes > about C++ exceptions last week) such that you need to manually specify the > exceptions flags for your compiler. Something like this: > > ./configure --enable-cxx-exceptions \ > CFLAGS=-fexceptions CXXFLAGS=-fexceptions FFLAGS=-fexceptions > FCFLAGS=-fexceptions \ > --with-wrapper-cflags=-fexceptions \ > --with-wrapper-cxxflags=-fexceptions \ > --with-wrapper-fflags=-fexceptions \ > --with-wrapper-fcflags=-fexceptions \ > ...your other configure arguments... > > In the v1.3 series, this is fixed such that you only need to specify: > > ./configure --enable-cxx-exceptions ... > > ...although in checking all the technical data for this e-mail, I found a > mistake in our commits from last week on the SVN trunk; I just committed a > fix in r19819 (sorry for the configure-changing commit in the middle of the > day, folks!). The v1.3 branch will be updated to get this fix shortly. > > It is unlikely that we'll port this fix back to the 1.2 series, so you'll > need to enable all the extra flags if you want exception support. > > Hopefully that all made sense... :-) > > > > On Oct 28, 2008, at 9:26 AM, Gabriele Fatigati wrote: > >> Dear OpenMPi developers, >> >> i'm developing parallel C++ application under OpenMPI 1.2.5. At the >> moment, i'm using MPI Exception Handlers, but some processors returns >> the error below: >> >> "MPI 2 C++ exception throwing is disabled, MPI::mpi_errno has the error >> code" >> >> Why this, and why only in some nodes? >> >> Thanks in advance, >> >> -- >> Ing. Gabriele Fatigati >> >> CINECA Systems & Tecnologies Department >> >> Supercomputing Group >> >> Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy >> >> www.cineca.it Tel: +39 051 6171722 >> >> g.fatig...@cineca.it >> _______________________________________________ >> users mailing list >> us...@open-mpi.org >> http://www.open-mpi.org/mailman/listinfo.cgi/users > > > -- > Jeff Squyres > Cisco Systems > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users > >
-- Ing. Gabriele Fatigati CINECA Systems & Tecnologies Department Supercomputing Group Via Magnanelli 6/3, Casalecchio di Reno (BO) Italy www.cineca.it Tel: +39 051 6171722 g.fatig...@cineca.it