Discussion:
[OMPI users] libmpi_cxx
Arthur H. Edwards
2018-03-29 03:32:07 UTC
Permalink
I have built openmpi 3.0 on an ubuntu 16.04 system I have used --with-cuda. There is no libmpi_cxx.so generated, yet the code I'm using requires it. There is a libmpi_cxx.so in the ubuntu installed version. Any insight, or instruction on how to configure so that the build generates this library would be greatly appreciated.

Art Edwards
--
Arthur H. Edwards
***@fastmail.fm
Gilles Gouaillardet
2018-03-29 03:43:47 UTC
Permalink
Arthur,

Try to
configure --enable-mpi-xxx

Note c++ bindings have been removed from the MPI standard long time ago, so you might want to consider modernizing your app.

Cheers,

Gilles
Post by Arthur H. Edwards
I have built openmpi 3.0 on an ubuntu 16.04 system I have used --with-cuda. There is no libmpi_cxx.so generated, yet the code I'm using requires it. There is a libmpi_cxx.so in the ubuntu installed version. Any insight, or instruction on how to configure so that the build generates this library would be greatly appreciated.
Art Edwards
--
Arthur H. Edwards
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
dpchoudh .
2018-03-29 05:08:06 UTC
Permalink
Hello Gilles and all

Sorry if this is a bit off topic, but I am curious as to why
C++bindings were dropped? Any pointers would be appreciated.

Best regards
Durga

$man why dump woman?
man: too many arguments


On Wed, Mar 28, 2018 at 11:43 PM, Gilles Gouaillardet
Post by Gilles Gouaillardet
Arthur,
Try to
configure --enable-mpi-xxx
Note c++ bindings have been removed from the MPI standard long time ago, so you might want to consider modernizing your app.
Cheers,
Gilles
Post by Arthur H. Edwards
I have built openmpi 3.0 on an ubuntu 16.04 system I have used --with-cuda. There is no libmpi_cxx.so generated, yet the code I'm using requires it. There is a libmpi_cxx.so in the ubuntu installed version. Any insight, or instruction on how to configure so that the build generates this library would be greatly appreciated.
Art Edwards
--
Arthur H. Edwards
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
Maxime Boissonneault
2018-03-29 11:14:22 UTC
Permalink
Hi Durga,
This is only my interpretation, but they were never that appealing, nor
very C++-like, and people mostly kept using the C interface.

If you want to have a real C++ interface for MPI, have a look at Boost
MPI (http://www.boost.org/doc/libs/1_64_0/doc/html/mpi.html )
If the C++ MPI bindings had been similar to Boost MPI, they would
probably have been adopted more widely and may still be alive.
--
---------------------------------
Maxime Boissonneault
Analyste de calcul - Calcul Québec, Université Laval
Président - Comité de coordination du soutien à la recherche de Calcul Québec
Team lead - Research Support National Team, Compute Canada
Instructeur Software Carpentry
Ph. D. en physique
Post by dpchoudh .
Hello Gilles and all
Sorry if this is a bit off topic, but I am curious as to why
C++bindings were dropped? Any pointers would be appreciated.
Best regards
Durga
$man why dump woman?
man: too many arguments
On Wed, Mar 28, 2018 at 11:43 PM, Gilles Gouaillardet
Post by Gilles Gouaillardet
Arthur,
Try to
configure --enable-mpi-xxx
Note c++ bindings have been removed from the MPI standard long time ago, so you might want to consider modernizing your app.
Cheers,
Gilles
Post by Arthur H. Edwards
I have built openmpi 3.0 on an ubuntu 16.04 system I have used --with-cuda. There is no libmpi_cxx.so generated, yet the code I'm using requires it. There is a libmpi_cxx.so in the ubuntu installed version. Any insight, or instruction on how to configure so that the build generates this library would be greatly appreciated.
Art Edwards
--
Arthur H. Edwards
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
Jeff Squyres (jsquyres)
2018-03-29 15:20:57 UTC
Permalink
If the C++ MPI bindings had been similar to Boost MPI, they would probably have been adopted more widely and may still be alive.
FYI: the initial C++ bindings that were proposed (by me!) to the MPI Forum were a full-blown class library called OOMPI (Object Oriented MPI). After much debate, the MPI Fourm decided (rightfully, IMNSHO) that standardizing on a class library would basically be a whole new specification -- the C++ behaviors were quite different than the C/Fortran behaviors. Indeed, OOMPI was not so much *bindings* as they were *new functionality*.

Ultimately, this is why the "minimal" C++ bindings were adopted: they provided very little additional behavior compared to the C or Fortran bindings. The idea was that using the few native-language features that the C++ bindings provided would allow 3rd parties to create more interesting / useful / C++-natural functionality (such as class libraries).

This obviously didn't happen.

When each of Boost and other C++ MPI applications opted to use the underlying C bindings, these were nails in the coffin for the MPI C++ bindings. Hence the deprecation in 2009 and the removal in 2012.
--
Jeff Squyres
***@cisco.com
Jeff Hammond
2018-03-30 04:39:37 UTC
Permalink
Elemental has very nice C++ wrappers to MPI features. If C++ is your
thing, you may want to take a look (https://github.com/elemental/Elemental/
)

There are a few other good projects you can find on GitHub that wrap MPI in
modern C++ syntax. None are complete AFAIK but I don’t think that matters
to most apps.

There is essentially no advantage to C++ bindings over C ones in C++. The
real benefit would come from integration in the guts, which isn’t possible
since MPI libraries are written in C.

Once the networking TS is approved, we may see more interesting things
happen in this space. The OFI group is trying to make the networking TS
better in the direction of HPC features, too.

Jeff
On Mar 29, 2018, at 7:14 AM, Maxime Boissonneault <
Post by Maxime Boissonneault
If the C++ MPI bindings had been similar to Boost MPI, they would
probably have been adopted more widely and may still be alive.
FYI: the initial C++ bindings that were proposed (by me!) to the MPI Forum
were a full-blown class library called OOMPI (Object Oriented MPI). After
much debate, the MPI Fourm decided (rightfully, IMNSHO) that standardizing
on a class library would basically be a whole new specification -- the C++
behaviors were quite different than the C/Fortran behaviors. Indeed, OOMPI
was not so much *bindings* as they were *new functionality*.
Ultimately, this is why the "minimal" C++ bindings were adopted: they
provided very little additional behavior compared to the C or Fortran
bindings. The idea was that using the few native-language features that
the C++ bindings provided would allow 3rd parties to create more
interesting / useful / C++-natural functionality (such as class libraries).
This obviously didn't happen.
When each of Boost and other C++ MPI applications opted to use the
underlying C bindings, these were nails in the coffin for the MPI C++
bindings. Hence the deprecation in 2009 and the removal in 2012.
--
Jeff Squyres
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
--
Jeff Hammond
***@gmail.com
http://jeffhammond.github.io/
Jeff Squyres (jsquyres)
2018-03-29 10:53:55 UTC
Permalink
You need to configure with --enable-mpi-cxx -- the Open MPI C++ bindings are not built by default.

Can I ask what software you are using that requires the MPI C++ bindings?

I ask because the MPI C++ bindings were deprecated in the MPI-2.2 standard in 2009, and were formally deleted from the MPI 3.0 standard in 2012. Open MPI stopped building the C++ bindings by default in Open MPI v2.0.0 in July of 2016.

The C++ bindings were deprecated and eventually deleted from the MPI standard for a few reasons:

1. The MPI Forum (the standards body that maintains the MPI standard document) was not able to find many real-world applications that used them.
2. There wasn't a lot of C++ expertise on the MPI Forum -- e.g., there were at least a few cases of changes made to the C++ bindings in the late 90s/early 2000s that were incorrect.
3. The C++ bindings were intended to be a baseline for more complex C++ behavior (e.g., class libraries). This never materialized. Indeed, there were some high-profile C++ applications that simply used the MPI C bindings.

As such, the Forum decided that the C++ bindings were not worth the continued effort.

The Open MPI developer community literally just started discussing when we should finally actually delete the MPI C++ bindings from Open MPI just the other day. As part of this, we wanted to ask the user community: who is still using the MPI C++ bindings? For example, if we removed the MPI C++ bindings in Open MPI v4.0, would you be ok still using Open MPI <=v3.x for your C++ bindings-enabled application(s)?
Post by Arthur H. Edwards
I have built openmpi 3.0 on an ubuntu 16.04 system I have used --with-cuda. There is no libmpi_cxx.so generated, yet the code I'm using requires it. There is a libmpi_cxx.so in the ubuntu installed version. Any insight, or instruction on how to configure so that the build generates this library would be greatly appreciated.
Art Edwards
--
Arthur H. Edwards
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
--
Jeff Squyres
***@cisco.com
Loading...