Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deprecate the C++ bindings #150

Closed
mpiforumbot opened this issue Jul 24, 2016 · 46 comments
Closed

Deprecate the C++ bindings #150

mpiforumbot opened this issue Jul 24, 2016 · 46 comments

Comments

@mpiforumbot
Copy link
Collaborator

mpiforumbot commented Jul 24, 2016

Originally by jsquyres on 2009-04-06 13:38:13 -0500


Let's deprecate the C++ bindings in MPI-2.2 so that they can be removed in MPI-3.0.

History

The MPI C++ bindings were added in MPI-2.0.

They have not added as much value as we thought they would, and we have spent a considerable amount of time maintaining them. Better C++ MPI bindings have emerged elsewhere (e.g., Boost.MPI). So let's deprecate the C++ bindings

Proposed Solution

Add the following sentence in multiple places throughout the MPI-2.1 standard:

The C++ language bindings have been deprecated.

  • In section 2.6, "Language Binding", p15:40, before the sentence starting "Defined here..."
  • At the very beginning of section 2.6.4, "C++ Binding Issues", p18:40.
  • At the beginning of chapter 16, "Language Bindings", p449:18.

Also add the following text to the end of Chapter 15, "Deprecated Functions":

15.2 Deprecated since MPI-2.2

The entire set of C++ language bindings have been deprecated.

Rationale. The C++ bindings add minimal functionality over the C bindings while incurring a significant amount of maintenance to the MPI specification. Since the C++ bindings are effectively a one-to-one mapping of the C bindings, it should be relatively easy to convert existing C++ MPI applications to use the MPI C bindings. Additionally, there are third party packages available that provide C++ class library functionality (i.e., C++-specific functionality layered on top of the MPI C bindings) that are likely more expressive and/or natural to C++ programmers and are not suitable for standardization in this specification.

-ADDED AS RESULT OF CHICAGO MEETING*

Additionally, change the \mpicppemptybind Latex macro so that every C++ binding shows up as deprecated throughout the text. Here is the diff showing what was agreed upon at the Chicago meeting (obviously, "XYZ" will need to be replaced with the actual section number), and I have attached a PDF showing a sample output:

#!diff
Index: mpi-macs.tex
===================================================================
--- mpi-macs.tex    (revision 220)
+++ mpi-macs.tex    (working copy)
@@ -576,7 +576,8 @@
 %\newcommand{\mpicppbindS}[1]{{\raggedright \hangindent
 %7em\hangafter=1\tt #1 \par \vspace{0.1in``` 
 \newcommand{\mpicppemptybind}[2]{{\raggedright \hangindent
-7em\hangafter=1\tt #2 #1 \par \vspace{0.1in}}}
+    7em\hangafter=1\{ \tt #2 #1 \rm{\it (binding deprecated, see Section~\ref{sec:deprecated-cxx-bindings})} \} \par \vspace{0.1in} }}

%% (where \label{sec:deprecated-cxx-bindings} is used for the appropriate section, i.e., the 15.2 above.)

 %special macro for no including C binding in index
 \newcommand{\mpiskipbind}[1]{{\raggedright \hangindent
}}}

p 545:1 Change "A.4 C++ Bindings" to "A.4 C++ Bindings (deprecated)"

## Impact on Implementations

None.  Note that even if the C++ bindings are removed in future versions of the MPI spec, implementations can continue to include their C++ bindings indefinitely.

## Impact on Applications / Users

None (right now).

## Alternative Solutions

Don't deprecate the C++ bindings.

## Entry for the Change Log

Section 2.6 on page 15, Section 2.6.4 on page 18, and Section 16.1 on page 449.[[BR]]
The C++ language bindings have been deprecated and may be removed in a future version of the MPI specification.
@mpiforumbot
Copy link
Collaborator Author

Originally by tdd on 2009-04-07 07:10:13 -0500


Reviewed proposal looks fine to me.

@mpiforumbot
Copy link
Collaborator Author

Originally by gropp on 2009-04-07 08:57:50 -0500


Reviewed and ok. However, in at least one place, I'd like to see a rationale - just deprecating it without comment will leave everyone guessing. At the very least, we should say whether the MPI Forum plans to develop an alternative C++ binding or abandon any MPI Forum blessed C++ binding.

@mpiforumbot
Copy link
Collaborator Author

Originally by goodell on 2009-04-07 09:18:11 -0500


Section A.4.14 needs to be addressed. It is currently an empty list of deprecated C++ bindings. Presumably you need to delete this section otherwise you will need to include the entirety of the C++ binding in this section after this change.

I also would like to see a rationale somewhere, although I'm not sure that I have a good suggestion for where.

Also, you must pick a change-log entry, the ticket has ambiguous instructions to the chapter authors right now. I also prefer the latter choice of change-log entry.

-Dave

@mpiforumbot
Copy link
Collaborator Author

Originally by tdd on 2009-04-07 09:26:16 -0500


I was feeling a little concerned as to whether the forum really knows the number of users/ISV's that might get affected by deprecating and eventually removing the C++ bindings. So I sent some email internally to Sun and there is an opinion that the number is non-zero. I am still trying to find if it is a significant non-zero or not. But currently I've been told the following uses the C++ bindings: StarCCM+, lammps (Sandia), and Sequoia UMT benchmark (LLNL).

It seems to me that the forum should take a survey of users, ISV's and possibly the open source community (via Slashdot or Freashmeat).

There was another concern that the BOOST implementation that might be a reasonable replace has a set of issues itself. For example it only supports the majority of MPI 1.1.

@mpiforumbot
Copy link
Collaborator Author

Originally by hubertritzdorf on 2009-04-07 09:33:41 -0500


When I remember correctly, we have a small number of C++ users which combine
Fortran and C++ code. I'm currently not aware whether they use the MPI C++
binding.

@mpiforumbot
Copy link
Collaborator Author

Originally by erezh on 2009-04-07 09:39:09 -0500


okay with me; I would like to see a rational and alternative to users who are using the C++ bindings.

@mpiforumbot
Copy link
Collaborator Author

Originally by jsquyres on 2009-04-07 10:07:22 -0500


Replying to goodell:

Section A.4.14 needs to be addressed. It is currently an empty list of deprecated C++ bindings. Presumably you need to delete this section otherwise you will need to include the entirety of the C++ binding in this section after this change.

This table was already removed in #11 (which is already passed).

I also would like to see a rationale somewhere, although I'm not sure that I have a good suggestion for where.

Yes; good suggestion from you and others -- I added a rationale section in the deprecated chapter. We can move it elsewhere (or add xrefs to it?) if people want.

Also, you must pick a change-log entry, the ticket has ambiguous instructions to the chapter authors right now. I also prefer the latter choice of change-log entry.

Fair enough; done. I picked the latter as well.

Please re-review!

@mpiforumbot
Copy link
Collaborator Author

Originally by htor on 2009-04-07 10:19:50 -0500


I'm fine with this now - reviewed ok.

@mpiforumbot
Copy link
Collaborator Author

Originally by goodell on 2009-04-07 10:35:22 -0500


The rationale needs some work.

Text consistency:
"3rd party" --> "third party"
"1-to-1" --> "one-to-one"

Also, I don't think that we use "ABI" anywhere else in the standard. This needs a definition or at least to be fully expanded.

I think "have added" --> "add" reads better in the rationale.

I think that "that is likely more expressive" --> "that are likely more expressive" and "and is not suitable" --> "and are not suitable" reads better (changing the verb to match up with "packages" instead of "functionality").

I'm also not sure that you want to claim that converting C++ binding usage to C binding usage is easy. Users may feel that you are belittling the potentially substantial effort involved in making those changes to their software.

@mpiforumbot
Copy link
Collaborator Author

Originally by jsquyres on 2009-04-07 11:26:25 -0500


Put in a bunch of changes from Dave's comments.

Please re-review!

@mpiforumbot
Copy link
Collaborator Author

Originally by goodell on 2009-04-07 11:32:40 -0500


Reviewed ok.

@mpiforumbot
Copy link
Collaborator Author

Originally by gropp on 2009-04-07 12:27:40 -0500


Reviewed fine. I added a missing period in the first sentence of the proposed change.

@mpiforumbot
Copy link
Collaborator Author

Originally by tdd on 2009-04-07 12:49:54 -0500


Reviewed ok.

@mpiforumbot
Copy link
Collaborator Author

Originally by erezh on 2009-04-07 13:30:02 -0500


OK!

@mpiforumbot
Copy link
Collaborator Author

Originally by tdd on 2009-04-08 08:16:01 -0500


Replying to tdd:

I was feeling a little concerned as to whether the forum really knows the number of users/ISV's that might get affected by deprecating and eventually removing the C++ bindings. So I sent some email internally to Sun and there is an opinion that the number is non-zero. I am still trying to find if it is a significant non-zero or not. But currently I've been told the following uses the C++ bindings: StarCCM+, lammps (Sandia), and Sequoia UMT benchmark (LLNL).

Wanted to update that I checked the lammps and UMT code and they DO NOT use the MPI C++ bindings. They use the C bindings in C++ code. I am trying to confirm whether StarCCM+ uses C++ bindings too. I've also contacted Kanan of HP to see if they have any input on this issue. I am still searching for codes that use the C++ bindings but so far I probably owe Jeff Squyres +5 beers.

@mpiforumbot
Copy link
Collaborator Author

Originally by hubertritzdorf on 2009-04-08 08:55:07 -0500


It's ok for me.

@mpiforumbot
Copy link
Collaborator Author

Originally by jsquyres on 2009-04-08 14:08:49 -0500


Per discussion in Chicago (had to leave the meeting before I could record it on the ticket here -- it was agreed that this change could come in after the ticket was transitioned to "had 1st reading"), it was agreed to alter the LaTeX macro "mpicppemptybind" to add a notice to all C++ bindings throughout the document that that binding is deprecated. The rationale is that all other deprecated functions are in a special chapter -- we are deprecating the C++ bindings but not [yet] removing them from the rest of the document. So we should at least put a note by every binding.

Here is a suggestion for the new value of the LaTeX macro in mpi-macs.tex; the general form was agreed upon in Chicago as being "the least sucky". I leave it to LaTeX wizards to reformat/change this macro if desired.

\newcommand{\mpicppemptybind}[2]{{\raggedright \hangindent
    7em\hangafter=1\{ \tt #2 #1 \rm{\it (binding deprecated, see section
    XYZ)} \} \par \vspace{0.1in} }}

@mpiforumbot
Copy link
Collaborator Author

Originally by tdd on 2009-04-21 09:42:30 -0500


Replying to tdd:

Replying to tdd:

I was feeling a little concerned as to whether the forum really knows the number of users/ISV's that might get affected by deprecating and eventually removing the C++ bindings. So I sent some email internally to Sun and there is an opinion that the number is non-zero. I am still trying to find if it is a significant non-zero or not. But currently I've been told the following uses the C++ bindings: StarCCM+, lammps (Sandia), and Sequoia UMT benchmark (LLNL).

Wanted to update that I checked the lammps and UMT code and they DO NOT use the MPI C++ bindings. They use the C bindings in C++ code. I am trying to confirm whether StarCCM+ uses C++ bindings too. I've also contacted Kanan of HP to see if they have any input on this issue. I am still searching for codes that use the C++ bindings but so far I probably owe Jeff Squyres +5 beers.

Hopefully my last update to this ticket. I've contacted CD-Adapco and was told they wrapped the C-bindings with their own C++ code so no issue for them. HP (Kanaan) replied and said they have a handful of ISV's that use the bindings but did not have any issues with the bindings being removed since they can still support the old bindings in their product.

After further internal investigation within Sun I believe there is not a significant base of C++ binding usage and we would probably adopt HP's tactic of supporting the old C++ binding.

Sun does not have any issue with this ticket and voting for deprecation of the C++ bindings.

@mpiforumbot
Copy link
Collaborator Author

Originally by davesolt on 2009-05-12 08:46:36 -0500


HP-MPI queried about 30 ISV applications and only Abaqus/Std and Exp use the C++ interfaces.

@mpiforumbot
Copy link
Collaborator Author

Originally by jsquyres on 2009-06-09 07:45:49 -0500


Attachment added: pt2pt-final-chicago.pdf (403.4 KiB)
Final / agreed upon form from Chicago meeting

@mpiforumbot
Copy link
Collaborator Author

Originally by RolfRabenseifner on 2009-06-12 10:18:23 -0500


The Change-Log entry does not fiit to the usual form.

The form should be:

Section 2.6 on page 15, Section 2.6.4 on page 18, and Section 16.1 on page 449.[[BR]]
The C++ language bindings have been deprecated and will be removed in a future version of the MPI specification.

@mpiforumbot mpiforumbot added this to the 2009/07/27 Chicago milestone Jul 24, 2016
@mpiforumbot
Copy link
Collaborator Author

Originally by RolfRabenseifner on 2009-08-03 14:13:39 -0500


Attachment added: ticket150.pdf (478.2 KiB)
contains all modifictions for this ticket

@mpiforumbot
Copy link
Collaborator Author

Originally by htor on 2009-08-22 14:43:56 -0500


PDF reviewed OK (I'm not sure if we want to mention the deprecation for each item listed in A.4, however, it seems to be a relict from the macro and doesn't harm)

@mpiforumbot
Copy link
Collaborator Author

Originally by jsquyres on 2009-08-24 17:58:03 -0500


ticket150.pdf reviewed ok.

@mpiforumbot
Copy link
Collaborator Author

Originally by RolfRabenseifner on 2009-08-26 06:42:22 -0500


The text-output of "make reviewchangeonlydoc" and "make cleandoc/cleanbwdoc/bookprintingdoc" are on all pages and lines identical with one exception:

On page 570:47-48 the page-breaking is different.
This continues until p584.

I do not know the reason.

This is not a real problem, because the rest of the standard could be
reviewed page by page.

@mpiforumbot
Copy link
Collaborator Author

Originally by RolfRabenseifner on 2009-08-28 16:32:08 -0500


Bill solved this prooblem.

@mpiforumbot
Copy link
Collaborator Author

Originally by jsquyres on 2009-08-31 14:17:33 -0500


Still need more PDF reviews (Torsten H and Rolf R did already; thanks!):

  • Terry D
  • Bill G
  • Hubert R
  • Dave G

@mpiforumbot
Copy link
Collaborator Author

Originally by gropp on 2009-08-31 16:46:34 -0500


Reviewed master copy and ok.

@mpiforumbot
Copy link
Collaborator Author

Originally by goodell on 2009-09-01 06:58:59 -0500


Are the curly braces around the deprecated C++ bindings going to be present in the final standard? Or are they just an artifact of the review copy? They look strange to me. Modulo this issue the PDF looks good to me.

@mpiforumbot
Copy link
Collaborator Author

Originally by hubertritzdorf on 2009-09-01 08:30:13 -0500


PDF review: OK

@mpiforumbot
Copy link
Collaborator Author

Originally by RolfRabenseifner on 2009-09-01 08:35:12 -0500


Replying to goodell:

Are the curly braces around the deprecated C++ bindings going to be present in the final standard? Or are they just an artifact of the review copy? They look strange to me. Modulo this issue the PDF looks good to me.

Yes, the curly braces stay. They have been part of the ticket's solution,
see first attachment of this ticket.

Now, 5 okays are there and I would propose to set this ticket to "Complete".

@mpiforumbot
Copy link
Collaborator Author

Originally by jsquyres on 2009-09-01 22:26:14 -0500


Replying to goodell:

Are the curly braces around the deprecated C++ bindings going to be present in the final standard? Or are they just an artifact of the review copy? They look strange to me. Modulo this issue the PDF looks good to me.

Yes, (unfortunately) this is what the Forum opted for when we had a beauty contest of a few different styles of how to mark the bindings as deprecated (I think this was late on a Wednesday morning of a Chicago meeting).

@mpiforumbot
Copy link
Collaborator Author

Originally by jsquyres on 2009-09-02 03:04:58 -0500


Got enough reviews. I'm marking this as both "Ticket complete" states and closing the ticket.

@mpiforumbot
Copy link
Collaborator Author

Originally by chsi on 2009-09-03 04:50:07 -0500


It seems as if "MPI::User_function" in chapter 5.9.5 seems to be overlooked - it is not marked as deprecated.

@mpiforumbot
Copy link
Collaborator Author

Originally by jsquyres on 2009-09-03 05:12:09 -0500


Good call -- Terry Dontje just found another C++ typedef in the IO chapter that wasn't deprecated. Closer inspection shows that we forgot to put the "deprecated" magic in the C++ typedef latex macro. It's being fixed right now...

@mpiforumbot
Copy link
Collaborator Author

Originally by hubertritzdorf on 2009-09-03 12:00:40 -0500


Does this also include the

MPI::{Comm,Win,File}::Errhandler_function

definitions in the master document (page 295, 296, 298) ?

tterraz pushed a commit to melissa-sa/melissa that referenced this issue Mar 10, 2021
Move the regression test for issue #105 (MPI C++ bindings broken by a
Melissa header) from the Melissa tests into the find-and-link test for
the Melissa C++ bindings. Moreover, the test is modified and uses only
the MPI C bindings because the C++ MPI bindings were deprecated in the
MPI 2.2 standard released in 2009 and may not be present at all.

mpi-forum/mpi-forum-historic#150
yhmtsai added a commit to ginkgo-project/ginkgo that referenced this issue Mar 21, 2023
yhmtsai added a commit to ginkgo-project/ginkgo that referenced this issue Mar 22, 2023
yhmtsai added a commit to ginkgo-project/ginkgo that referenced this issue Mar 22, 2023
langmm added a commit to astro-friedel/yggcpp that referenced this issue Apr 10, 2023
…pi-forum/mpi-forum-historic#150)

Update CMake for Mac
Add options for compiling with ASAN & UBSAN
Remove nproc in favor of proc.size()
Close ZMQ sockets in reverse order to prevent access after removal/move of subsequent vector entries
tcojean pushed a commit to ginkgo-project/ginkgo that referenced this issue Jun 15, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant