Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] C++ Exceptions
From: Gabriele Fatigati (g.fatigati_at_[hidden])
Date: 2008-10-28 10:36:00


Very clear reply,
thanks Jeff :)

2008/10/28 Jeff Squyres <jsquyres_at_[hidden]>:
> 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.fatigati_at_[hidden]
>> _______________________________________________
>> users mailing list
>> users_at_[hidden]
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
>
>
> --
> Jeff Squyres
> Cisco Systems
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> 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.fatigati_at_[hidden]