<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1252">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Benson and Dan, thanks.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Martin Ruefenacht, Derek Schafer, and I plan to submit a proposal for a new language interface (not language binding) for C++17/20 when MPI-5 convenes.  The aim is to generate more performance and productivity.  </div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
My group is also working on two separate themes with colleagues at PNNL and LLNL on exploratory C++ interfaces for MPI for specific learning/prototyping.  I am sure we will publish some joint papers before MPI-5 starts with these colleagues.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
We are likely to extend that thinking to Python also.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Martin and I are hoping to form a WG around these OO languages.  We also, want to do a type theory for the entire standard; there are many explicit and implicit types in MPI (not just containment by integers or such).  This has become clear as Martin and Jeff
 Squyres developed the Python technology for the MPI-4 document itself.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Note that (much) more can be done with Fortran-2018 too that goes beyond the imperative language binding that is pretty much identical to the LIS.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
One hope is that we can separate out the language interfaces from the main standard, and let them have space to develop properly and be extended to more languages than C and Fortran.</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Among other learning, some whole classes of helper objects may fall by the wayside in a modern C++ language interface, such as MPI_Info.  </div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Tony</div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div>
<div style="font-family: Calibri, Arial, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="Signature">
<div>
<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:#000000; font-family:Calibri,Helvetica,sans-serif">
<p style="margin-top: 0px; margin-bottom: 0px;">Anthony Skjellum, PhD</p>
<p style="margin-top: 0px; margin-bottom: 0px;">Professor of Computer Science and Chair of Excellence</p>
<p style="margin-top: 0px; margin-bottom: 0px;">Director, SimCenter</p>
<p style="margin-top: 0px; margin-bottom: 0px;">University of Tennessee at Chattanooga (UTC)</p>
<p style="margin-top: 0px; margin-bottom: 0px;">tony-skjellum@utc.edu  [or skjellum@gmail.com]</p>
<p style="margin-top: 0px; margin-bottom: 0px;">cell: 205-807-4968</p>
<p style="margin-top: 0px; margin-bottom: 0px;"><br>
</p>
</div>
</div>
</div>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> mpi-forum <mpi-forum-bounces@lists.mpi-forum.org> on behalf of Dan Holmes via mpi-forum <mpi-forum@lists.mpi-forum.org><br>
<b>Sent:</b> Sunday, April 25, 2021 10:10 AM<br>
<b>To:</b> Benson Muite <benson_muite@emailplus.org><br>
<b>Cc:</b> Dan Holmes <danholmes@chi.scot>; MPI Forum <mpi-forum@lists.mpi-forum.org><br>
<b>Subject:</b> Re: [Mpi-forum] MPI supported languages</font>
<div> </div>
</div>
<div class="" style="word-wrap:break-word; line-break:after-white-space">Hi Benson Muite,
<div class=""><br class="">
</div>
<div class="">Thanks for this good list of unofficial bindings and projects using MPI or MPI-like interfaces.</div>
<div class=""><br class="">
</div>
<div class="">The short answer to your question is: yes, there is an effort underway to provide better support for other programming languages.</div>
<div class=""><br class="">
</div>
<div class="">Some work was done for the MPI-4.0 release of MPI (due this year) to firm up some of the key semantic terms, which will aid us when attempting to express those semantics in new languages. That work is continuing and more results from that are
 targeted at the upcoming MPI-4.1 and future versions of MPI. Figuring out the dividing line between what is currently being expressed (semantics) and what is dictated by the current mechanism of expression (C or Fortran) is a first step towards new forms of
 expression.</div>
<div class=""><br class="">
</div>
<div class="">Beyond that work, additional language expertise will be needed from some folks who are regular users of these other programming languages so that appropriate expressions of the essential MPI semantics are chosen — language mechanisms that “fit”
 with the normal/natural ways that a typical programmer would recognise. One possible strategy that has been discussed is to split the MPI Standard into a single MPI Core Standard and multiple MPI Bindings for <language> Standards. This might happen as early
 as MPI-5.0 (perhaps 5-10 years away) depending on how controversial it turns out to be and the rate of progress, which will depend heavily on the amount of interest and sustained contribution from a community of users.<br class="">
<div class="">
<div dir="auto" class="" style="color:rgb(0,0,0); letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none; word-wrap:break-word; line-break:after-white-space">
<div style="color:rgb(0,0,0); font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<br class="x_Apple-interchange-newline">
Cheers,</div>
<div style="color:rgb(0,0,0); font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
Dan.</div>
<div style="color:rgb(0,0,0); font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
—</div>
<div style="color:rgb(0,0,0); font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
Dr Daniel Holmes PhD</div>
Executive Director<br class="">
Chief Technology Officer<br class="">
<div style="color:rgb(0,0,0); font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
CHI Ltd</div>
<div style="color:rgb(0,0,0); font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<a href="mailto:danholmes@chi.scot" class="">danholmes@chi.scot</a></div>
<div class="" style="color:rgb(0,0,0); font-family:Helvetica; font-size:12px; font-style:normal; font-variant-caps:normal; font-weight:normal; letter-spacing:normal; text-align:start; text-indent:0px; text-transform:none; white-space:normal; word-spacing:0px; text-decoration:none">
<br class="">
</div>
</div>
<br class="x_Apple-interchange-newline">
</div>
<div><br class="">
<blockquote type="cite" class="">
<div class="">On 25 Apr 2021, at 09:36, Benson Muite via mpi-forum <<a href="mailto:mpi-forum@lists.mpi-forum.org" class="">mpi-forum@lists.mpi-forum.org</a>> wrote:</div>
<br class="x_Apple-interchange-newline">
<div class="">
<div class="">MPI has official bindings for C and Fortran. There are unoffical bindings in<br class="">
<br class="">
C# - <a href="https://github.com/rogancarr/MpiDotNet" class="">https://github.com/rogancarr/MpiDotNet</a><br class="">
D - <a href="https://github.com/DlangScience/OpenMPI" class="">https://github.com/DlangScience/OpenMPI</a>)<br class="">
Go - <a href="https://pkg.go.dev/github.com/cpmech/gosl/mpi" class="">https://pkg.go.dev/github.com/cpmech/gosl/mpi</a> and
<a href="https://github.com/marcusthierfelder/mpi" class="">https://github.com/marcusthierfelder/mpi</a><br class="">
Java - <a href="https://www.open-mpi.org/" class="">https://www.open-mpi.org/</a><br class="">
Julia - <a href="https://github.com/JuliaParallel/MPI.jl" class="">https://github.com/JuliaParallel/MPI.jl</a><br class="">
Lua - <a href="https://github.com/jzrake/lua-mpi" class="">https://github.com/jzrake/lua-mpi</a> and
<a href="https://peter.colberg.org/lua-mpi" class="">https://peter.colberg.org/lua-mpi</a><br class="">
Ocaml - <a href="https://github.com/xavierleroy/ocamlmpi" class="">https://github.com/xavierleroy/ocamlmpi</a><br class="">
Perl - <a href="https://metacpan.org/pod/Parallel::MPI" class="">https://metacpan.org/pod/Parallel::MPI</a><br class="">
Python - <a href="https://bitbucket.org/mpi4py/mpi4py" class="">https://bitbucket.org/mpi4py/mpi4py</a><br class="">
R - <a href="https://github.com/RBigData/pbdMPI" class="">https://github.com/RBigData/pbdMPI</a> and
<a href="https://cran.r-project.org/package=Rmpi" class="">https://cran.r-project.org/package=Rmpi</a><br class="">
Ruby - <a href="https://github.com/gfd-dennou-club/ruby-mpi" class="">https://github.com/gfd-dennou-club/ruby-mpi</a><br class="">
Rust - <a href="https://lib.rs/crates/mpi" class="">https://lib.rs/crates/mpi</a><br class="">
Scala - <a href="https://github.com/mpokorny/scampi" class="">https://github.com/mpokorny/scampi</a><br class="">
<br class="">
<br class="">
It is also used as a possible backend for among other PGAS languages XcalableMP -
<a href="https://xcalablemp.org/" class="">https://xcalablemp.org/</a><br class="">
<br class="">
Some people did not expect MPI to be used by many developers directly. Are there any thoughts on how better support for other programming languages and MPI as a backend might be improved in future?<br class="">
_______________________________________________<br class="">
mpi-forum mailing list<br class="">
<a href="mailto:mpi-forum@lists.mpi-forum.org" class="">mpi-forum@lists.mpi-forum.org</a><br class="">
https://lists.mpi-forum.org/mailman/listinfo/mpi-forum<br class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</body>
</html>