Very clear reply,
thanks Jeff :)

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

Reply via email to