Discussion:
[OMPI users] Question concerning compatibility of languages used with building OpenMPI and languages OpenMPI uses to build MPI binaries.
Michael Thomadakis
2017-09-18 19:51:16 UTC
Permalink
Dear OpenMPI list,

As far as I know, when we build OpenMPI itself with GNU or Intel compilers
we expect that the subsequent MPI application binary will use the same
compiler set and run-times.

Would it be possible to build OpenMPI with the GNU tool chain but then
subsequently instruct the OpenMPI compiler wrappers to use the Intel
compiler set? Would there be any issues with compiling C++ / Fortran or
corresponding OMP codes ?

In general, what is clean way to build OpenMPI with a GNU compiler set but
then instruct the wrappers to use Intel compiler set?

Thanks!
Michael
n8tm via users
2017-09-18 20:21:00 UTC
Permalink
On Linux and Mac, Intel c and c++ are sufficiently compatible with gcc and g++ that this should be possible.  This is not so for Fortran libraries or Windows. 





Sent via the Samsung Galaxy S8 active, an AT&T 4G LTE smartphone
-------- Original message --------From: Michael Thomadakis <***@gmail.com> Date: 9/18/17 3:51 PM (GMT-05:00) To: ***@lists.open-mpi.org Subject: [OMPI users] Question concerning compatibility of languages used with building OpenMPI and languages OpenMPI uses to build MPI binaries.
Dear OpenMPI list,
As far as I know, when we build OpenMPI itself with GNU or Intel compilers we expect that the subsequent MPI application binary will use the same compiler set and run-times.
Would it be possible to build OpenMPI with the GNU tool chain but then subsequently instruct the OpenMPI compiler wrappers to use the Intel compiler set? Would there be any issues with compiling C++ / Fortran or corresponding OMP codes ? 
In general, what is clean way to build OpenMPI with a GNU compiler set but then instruct the wrappers to use Intel compiler set?
Thanks!Michael
Jeff Squyres (jsquyres)
2017-09-18 20:55:57 UTC
Permalink
FWIW, we always encourage you to use the same compiler to build Open MPI and your application.

Compatibility between gcc and Intel *usually* works for C and C++, but a) doesn't work for Fortran, and b) there have been bugs in the past where C/C++ compatibility broke in corner cases. My $0.02: avoid these issues if you can and just have multiple installations of Open MPI.

See the FAQ for how to modify the wrapper compilers:

https://www.open-mpi.org/faq/?category=mpi-apps#override-wrappers-after-v1.0
On Linux and Mac, Intel c and c++ are sufficiently compatible with gcc and g++ that this should be possible. This is not so for Fortran libraries or Windows.
Sent via the Samsung Galaxy S8 active, an AT&T 4G LTE smartphone
-------- Original message --------
Date: 9/18/17 3:51 PM (GMT-05:00)
Subject: [OMPI users] Question concerning compatibility of languages used with building OpenMPI and languages OpenMPI uses to build MPI binaries.
Dear OpenMPI list,
As far as I know, when we build OpenMPI itself with GNU or Intel compilers we expect that the subsequent MPI application binary will use the same compiler set and run-times.
Would it be possible to build OpenMPI with the GNU tool chain but then subsequently instruct the OpenMPI compiler wrappers to use the Intel compiler set? Would there be any issues with compiling C++ / Fortran or corresponding OMP codes ?
In general, what is clean way to build OpenMPI with a GNU compiler set but then instruct the wrappers to use Intel compiler set?
Thanks!
Michael
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
--
Jeff Squyres
***@cisco.com
Michael Thomadakis
2017-09-18 20:57:44 UTC
Permalink
Thanks for the note. How about OMP runtimes though?

Michael
Post by n8tm via users
On Linux and Mac, Intel c and c++ are sufficiently compatible with gcc and
g++ that this should be possible. This is not so for Fortran libraries or
Windows.
Sent via the Samsung Galaxy S8 active, an AT&T 4G LTE smartphone
-------- Original message --------
Date: 9/18/17 3:51 PM (GMT-05:00)
Subject: [OMPI users] Question concerning compatibility of languages used
with building OpenMPI and languages OpenMPI uses to build MPI binaries.
Dear OpenMPI list,
As far as I know, when we build OpenMPI itself with GNU or Intel compilers
we expect that the subsequent MPI application binary will use the same
compiler set and run-times.
Would it be possible to build OpenMPI with the GNU tool chain but then
subsequently instruct the OpenMPI compiler wrappers to use the Intel
compiler set? Would there be any issues with compiling C++ / Fortran or
corresponding OMP codes ?
In general, what is clean way to build OpenMPI with a GNU compiler set but
then instruct the wrappers to use Intel compiler set?
Thanks!
Michael
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
Gilles Gouaillardet
2017-09-19 00:35:54 UTC
Permalink
Even if i do not fully understand the question, keep in mind Open MPI
does not use OpenMP, so from that point of view, Open MPI is
independant of the OpenMP runtime.

Let me emphasize on what Jeff already wrote : use different installs
of Open MPI (and you can use modules or lmod in order to choose
between them easily) and always use the compilers that were used to
build Open MPI. This is mandatory is you use Fortran bindings (use mpi
and use mpi_f08), and you'd better keep yourself out of trouble with
C/C++ and mpif.h

Cheers,

Gilles

On Tue, Sep 19, 2017 at 5:57 AM, Michael Thomadakis
Post by Michael Thomadakis
Thanks for the note. How about OMP runtimes though?
Michael
Post by n8tm via users
On Linux and Mac, Intel c and c++ are sufficiently compatible with gcc and
g++ that this should be possible. This is not so for Fortran libraries or
Windows.
Sent via the Samsung Galaxy S8 active, an AT&T 4G LTE smartphone
-------- Original message --------
Date: 9/18/17 3:51 PM (GMT-05:00)
Subject: [OMPI users] Question concerning compatibility of languages used
with building OpenMPI and languages OpenMPI uses to build MPI binaries.
Dear OpenMPI list,
As far as I know, when we build OpenMPI itself with GNU or Intel compilers
we expect that the subsequent MPI application binary will use the same
compiler set and run-times.
Would it be possible to build OpenMPI with the GNU tool chain but then
subsequently instruct the OpenMPI compiler wrappers to use the Intel
compiler set? Would there be any issues with compiling C++ / Fortran or
corresponding OMP codes ?
In general, what is clean way to build OpenMPI with a GNU compiler set but
then instruct the wrappers to use Intel compiler set?
Thanks!
Michael
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
Jeff Hammond
2017-09-19 00:47:55 UTC
Permalink
Please separate C and C++ here. C has a standard ABI. C++ doesn't.

Jeff

On Mon, Sep 18, 2017 at 5:39 PM Gilles Gouaillardet <
Post by Gilles Gouaillardet
Even if i do not fully understand the question, keep in mind Open MPI
does not use OpenMP, so from that point of view, Open MPI is
independant of the OpenMP runtime.
Let me emphasize on what Jeff already wrote : use different installs
of Open MPI (and you can use modules or lmod in order to choose
between them easily) and always use the compilers that were used to
build Open MPI. This is mandatory is you use Fortran bindings (use mpi
and use mpi_f08), and you'd better keep yourself out of trouble with
C/C++ and mpif.h
Cheers,
Gilles
On Tue, Sep 19, 2017 at 5:57 AM, Michael Thomadakis
Post by Michael Thomadakis
Thanks for the note. How about OMP runtimes though?
Michael
On Mon, Sep 18, 2017 at 3:21 PM, n8tm via users <
Post by n8tm via users
On Linux and Mac, Intel c and c++ are sufficiently compatible with gcc
and
Post by Michael Thomadakis
Post by n8tm via users
g++ that this should be possible. This is not so for Fortran libraries
or
Post by Michael Thomadakis
Post by n8tm via users
Windows.
Sent via the Samsung Galaxy S8 active, an AT&T 4G LTE smartphone
-------- Original message --------
Date: 9/18/17 3:51 PM (GMT-05:00)
Subject: [OMPI users] Question concerning compatibility of languages
used
Post by Michael Thomadakis
Post by n8tm via users
with building OpenMPI and languages OpenMPI uses to build MPI binaries.
Dear OpenMPI list,
As far as I know, when we build OpenMPI itself with GNU or Intel
compilers
Post by Michael Thomadakis
Post by n8tm via users
we expect that the subsequent MPI application binary will use the same
compiler set and run-times.
Would it be possible to build OpenMPI with the GNU tool chain but then
subsequently instruct the OpenMPI compiler wrappers to use the Intel
compiler set? Would there be any issues with compiling C++ / Fortran or
corresponding OMP codes ?
In general, what is clean way to build OpenMPI with a GNU compiler set
but
Post by Michael Thomadakis
Post by n8tm via users
then instruct the wrappers to use Intel compiler set?
Thanks!
Michael
_______________________________________________
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 Hammond
***@gmail.com
http://jeffhammond.github.io/
Dave Love
2017-09-20 12:55:56 UTC
Permalink
Post by Jeff Hammond
Please separate C and C++ here. C has a standard ABI. C++ doesn't.
Jeff
[For some value of "standard".] I've said the same about C++, but the
current GCC manual says its C++ ABI is "industry standard", and at least
Intel document compatibility with recent GCC on GNU/Linux. It's
standard enough to have changed for C++11 (?), with resulting grief in
package repos, for instance.
--
Fifty years of programming language research, and we end up with C++ ???
— Richard O'Keefe
Jeff Hammond
2017-09-20 21:45:06 UTC
Permalink
Post by Dave Love
Post by Jeff Hammond
Please separate C and C++ here. C has a standard ABI. C++ doesn't.
Jeff
[For some value of "standard".] I've said the same about C++, but the
current GCC manual says its C++ ABI is "industry standard", and at least
Intel document compatibility with recent GCC on GNU/Linux. It's
standard enough to have changed for C++11 (?), with resulting grief in
package repos, for instance.
I may have used imprecise language. As a matter of practice, I switch C
compilers all the time without recompiling MPI and life is good. Switching
between Clang with libc++ and GCC with libstd++ does not produce happiness.

Jeff
--
Jeff Hammond
***@gmail.com
http://jeffhammond.github.io/
Michael Thomadakis
2017-09-20 22:07:41 UTC
Permalink
This discussion started getting into an interesting question: ABI
standardization for portability by language. It makes sense to have ABI
standardization for portability of objects across environments. At the same
time it does mean that everyone follows the exact same recipe for low level
implementation details but there may be unnecessarily restrictive at times.
Post by Jeff Hammond
Post by Dave Love
Post by Jeff Hammond
Please separate C and C++ here. C has a standard ABI. C++ doesn't.
Jeff
[For some value of "standard".] I've said the same about C++, but the
current GCC manual says its C++ ABI is "industry standard", and at least
Intel document compatibility with recent GCC on GNU/Linux. It's
standard enough to have changed for C++11 (?), with resulting grief in
package repos, for instance.
I may have used imprecise language. As a matter of practice, I switch C
compilers all the time without recompiling MPI and life is good. Switching
between Clang with libc++ and GCC with libstd++ does not produce happiness.
Jeff
--
Jeff Hammond
http://jeffhammond.github.io/
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
Jeff Squyres (jsquyres)
2017-09-21 15:31:15 UTC
Permalink
Don't forget that there's a lot more to "binary portability" between MPI implementations than just the ABI (wire protocols, run-time interfaces, ...etc.). This is the main (set of) reasons that ABI standardization of the MPI specification never really took off -- so much would need to be standardized that it could (would) remove a lot of optimization / value-add that each MPI implementation (particularly those tuned for a specific environment) can do specifically because such things are *not* standardized.

I.e.: all things being equal, the optimization and performance benefits that are achieved by real-world MPI implementations have been deemed more important than binary compatibility.
This discussion started getting into an interesting question: ABI standardization for portability by language. It makes sense to have ABI standardization for portability of objects across environments. At the same time it does mean that everyone follows the exact same recipe for low level implementation details but there may be unnecessarily restrictive at times.
Post by Jeff Hammond
Please separate C and C++ here. C has a standard ABI. C++ doesn't.
Jeff
[For some value of "standard".] I've said the same about C++, but the
current GCC manual says its C++ ABI is "industry standard", and at least
Intel document compatibility with recent GCC on GNU/Linux. It's
standard enough to have changed for C++11 (?), with resulting grief in
package repos, for instance.
I may have used imprecise language. As a matter of practice, I switch C compilers all the time without recompiling MPI and life is good. Switching between Clang with libc++ and GCC with libstd++ does not produce happiness.
Jeff
--
Jeff Hammond
http://jeffhammond.github.io/
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
--
Jeff Squyres
***@cisco.com
Jeff Hammond
2017-09-22 21:41:23 UTC
Permalink
There is already a nice solution for the useful special case of ABI
portability where one wants to use more than one MPI library with an
application binary, but only one MPI library for a given application
invocation:

https://github.com/cea-hpc/wi4mpi

They document support for the Intel MPI and Open-MPI, which imply a much
larger support matrix when one takes https://www.mpich.org/abi/ into
account. Plus, there is another popular MPICH derivative that is binary
compatible in my experience, even though it isn't listed there.

Hammond
Post by Jeff Squyres (jsquyres)
Don't forget that there's a lot more to "binary portability" between MPI
implementations than just the ABI (wire protocols, run-time interfaces,
...etc.). This is the main (set of) reasons that ABI standardization of
the MPI specification never really took off -- so much would need to be
standardized that it could (would) remove a lot of optimization / value-add
that each MPI implementation (particularly those tuned for a specific
environment) can do specifically because such things are *not* standardized.
Post by Jeff Squyres (jsquyres)
I.e.: all things being equal, the optimization and performance benefits
that are achieved by real-world MPI implementations have been deemed more
important than binary compatibility.
Post by Jeff Squyres (jsquyres)
On Sep 20, 2017, at 6:07 PM, Michael Thomadakis <
This discussion started getting into an interesting question: ABI
standardization for portability by language. It makes sense to have ABI
standardization for portability of objects across environments. At the same
time it does mean that everyone follows the exact same recipe for low level
implementation details but there may be unnecessarily restrictive at times.
Post by Jeff Squyres (jsquyres)
Post by Jeff Hammond
Please separate C and C++ here. C has a standard ABI. C++ doesn't.
Jeff
[For some value of "standard".] I've said the same about C++, but the
current GCC manual says its C++ ABI is "industry standard", and at least
Intel document compatibility with recent GCC on GNU/Linux. It's
standard enough to have changed for C++11 (?), with resulting grief in
package repos, for instance.
I may have used imprecise language. As a matter of practice, I switch
C compilers all the time without recompiling MPI and life is good.
Switching between Clang with libc++ and GCC with libstd++ does not produce
happiness.
Post by Jeff Squyres (jsquyres)
Jeff
--
Jeff Hammond
http://jeffhammond.github.io/
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
--
Jeff Squyres
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
--
Jeff Hammond
***@gmail.com
http://jeffhammond.github.io/

Michael Thomadakis
2017-09-19 01:13:57 UTC
Permalink
Hello OpenMPI team,

Thank you for the insightful feedback. I am not claiming in any way that it
is a meaningful practice to build the OpenMPI stack with one compiler and
then just try to convince / force it to use another compilation environment
to build MPI applications. There are occasions though that one *may only
have an OpenMPI* stack built, say, by GNU compilers but for efficiency of
execution of the resulting MPI applications try to use Intel / PGI
compilers with the same OpenMPI stack to compile MPI applications.

It is too much unnecessary trouble to use the same MPI stack with different
compilation environments.

Thank you,
Michael

On Mon, Sep 18, 2017 at 7:35 PM, Gilles Gouaillardet <
Post by Gilles Gouaillardet
Even if i do not fully understand the question, keep in mind Open MPI
does not use OpenMP, so from that point of view, Open MPI is
independant of the OpenMP runtime.
Let me emphasize on what Jeff already wrote : use different installs
of Open MPI (and you can use modules or lmod in order to choose
between them easily) and always use the compilers that were used to
build Open MPI. This is mandatory is you use Fortran bindings (use mpi
and use mpi_f08), and you'd better keep yourself out of trouble with
C/C++ and mpif.h
Cheers,
Gilles
On Tue, Sep 19, 2017 at 5:57 AM, Michael Thomadakis
Post by Michael Thomadakis
Thanks for the note. How about OMP runtimes though?
Michael
On Mon, Sep 18, 2017 at 3:21 PM, n8tm via users <
Post by n8tm via users
On Linux and Mac, Intel c and c++ are sufficiently compatible with gcc
and
Post by Michael Thomadakis
Post by n8tm via users
g++ that this should be possible. This is not so for Fortran libraries
or
Post by Michael Thomadakis
Post by n8tm via users
Windows.
Sent via the Samsung Galaxy S8 active, an AT&T 4G LTE smartphone
-------- Original message --------
Date: 9/18/17 3:51 PM (GMT-05:00)
Subject: [OMPI users] Question concerning compatibility of languages
used
Post by Michael Thomadakis
Post by n8tm via users
with building OpenMPI and languages OpenMPI uses to build MPI binaries.
Dear OpenMPI list,
As far as I know, when we build OpenMPI itself with GNU or Intel
compilers
Post by Michael Thomadakis
Post by n8tm via users
we expect that the subsequent MPI application binary will use the same
compiler set and run-times.
Would it be possible to build OpenMPI with the GNU tool chain but then
subsequently instruct the OpenMPI compiler wrappers to use the Intel
compiler set? Would there be any issues with compiling C++ / Fortran or
corresponding OMP codes ?
In general, what is clean way to build OpenMPI with a GNU compiler set
but
Post by Michael Thomadakis
Post by n8tm via users
then instruct the wrappers to use Intel compiler set?
Thanks!
Michael
_______________________________________________
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
Michael Thomadakis
2017-09-19 01:18:13 UTC
Permalink
OMP is yet another source of incompatibility between GNU and Intel
environments. So compiling say Fortran OMP code into a library and trying
to link it with Intel Fortran codes just aggravates the problem.
Michael

On Mon, Sep 18, 2017 at 7:35 PM, Gilles Gouaillardet <
Post by Gilles Gouaillardet
Even if i do not fully understand the question, keep in mind Open MPI
does not use OpenMP, so from that point of view, Open MPI is
independant of the OpenMP runtime.
Let me emphasize on what Jeff already wrote : use different installs
of Open MPI (and you can use modules or lmod in order to choose
between them easily) and always use the compilers that were used to
build Open MPI. This is mandatory is you use Fortran bindings (use mpi
and use mpi_f08), and you'd better keep yourself out of trouble with
C/C++ and mpif.h
Cheers,
Gilles
On Tue, Sep 19, 2017 at 5:57 AM, Michael Thomadakis
Post by Michael Thomadakis
Thanks for the note. How about OMP runtimes though?
Michael
On Mon, Sep 18, 2017 at 3:21 PM, n8tm via users <
Post by n8tm via users
On Linux and Mac, Intel c and c++ are sufficiently compatible with gcc
and
Post by Michael Thomadakis
Post by n8tm via users
g++ that this should be possible. This is not so for Fortran libraries
or
Post by Michael Thomadakis
Post by n8tm via users
Windows.
Sent via the Samsung Galaxy S8 active, an AT&T 4G LTE smartphone
-------- Original message --------
Date: 9/18/17 3:51 PM (GMT-05:00)
Subject: [OMPI users] Question concerning compatibility of languages
used
Post by Michael Thomadakis
Post by n8tm via users
with building OpenMPI and languages OpenMPI uses to build MPI binaries.
Dear OpenMPI list,
As far as I know, when we build OpenMPI itself with GNU or Intel
compilers
Post by Michael Thomadakis
Post by n8tm via users
we expect that the subsequent MPI application binary will use the same
compiler set and run-times.
Would it be possible to build OpenMPI with the GNU tool chain but then
subsequently instruct the OpenMPI compiler wrappers to use the Intel
compiler set? Would there be any issues with compiling C++ / Fortran or
corresponding OMP codes ?
In general, what is clean way to build OpenMPI with a GNU compiler set
but
Post by Michael Thomadakis
Post by n8tm via users
then instruct the wrappers to use Intel compiler set?
Thanks!
Michael
_______________________________________________
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 Hammond
2017-09-19 02:58:17 UTC
Permalink
Intel compilers support GOMP runtime interoperability, although I don't
believe it is the default. You can use the Intel/LLVM OpenMP runtime with
GCC such that all three OpenMP compilers work together.

Fortran is a legit problem, although if somebody builds a standalone
Fortran 2015 implementation of the MPI interface, it would be decoupled
from the MPI library compilation.

Jeff
Post by Michael Thomadakis
OMP is yet another source of incompatibility between GNU and Intel
environments. So compiling say Fortran OMP code into a library and trying
to link it with Intel Fortran codes just aggravates the problem.
Michael
On Mon, Sep 18, 2017 at 7:35 PM, Gilles Gouaillardet <
Post by Gilles Gouaillardet
Even if i do not fully understand the question, keep in mind Open MPI
does not use OpenMP, so from that point of view, Open MPI is
independant of the OpenMP runtime.
Let me emphasize on what Jeff already wrote : use different installs
of Open MPI (and you can use modules or lmod in order to choose
between them easily) and always use the compilers that were used to
build Open MPI. This is mandatory is you use Fortran bindings (use mpi
and use mpi_f08), and you'd better keep yourself out of trouble with
C/C++ and mpif.h
Cheers,
Gilles
On Tue, Sep 19, 2017 at 5:57 AM, Michael Thomadakis
Post by Michael Thomadakis
Thanks for the note. How about OMP runtimes though?
Michael
On Mon, Sep 18, 2017 at 3:21 PM, n8tm via users <
Post by n8tm via users
On Linux and Mac, Intel c and c++ are sufficiently compatible with gcc
and
Post by Michael Thomadakis
Post by n8tm via users
g++ that this should be possible. This is not so for Fortran
libraries or
Post by Michael Thomadakis
Post by n8tm via users
Windows.
Sent via the Samsung Galaxy S8 active, an AT&T 4G LTE smartphone
-------- Original message --------
Date: 9/18/17 3:51 PM (GMT-05:00)
Subject: [OMPI users] Question concerning compatibility of languages
used
Post by Michael Thomadakis
Post by n8tm via users
with building OpenMPI and languages OpenMPI uses to build MPI binaries.
Dear OpenMPI list,
As far as I know, when we build OpenMPI itself with GNU or Intel
compilers
Post by Michael Thomadakis
Post by n8tm via users
we expect that the subsequent MPI application binary will use the same
compiler set and run-times.
Would it be possible to build OpenMPI with the GNU tool chain but then
subsequently instruct the OpenMPI compiler wrappers to use the Intel
compiler set? Would there be any issues with compiling C++ / Fortran or
corresponding OMP codes ?
In general, what is clean way to build OpenMPI with a GNU compiler set
but
Post by Michael Thomadakis
Post by n8tm via users
then instruct the wrappers to use Intel compiler set?
Thanks!
Michael
_______________________________________________
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
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
--
Jeff Hammond
***@gmail.com
http://jeffhammond.github.io/
Dave Love
2017-09-20 13:00:25 UTC
Permalink
Post by Jeff Hammond
Intel compilers support GOMP runtime interoperability, although I don't
believe it is the default. You can use the Intel/LLVM OpenMP runtime with
GCC such that all three OpenMP compilers work together.
For what it's worth, it's trivial to make a shim with a compatible
soname (packaged for Fedora but hasn't got past review).
Post by Jeff Hammond
Fortran is a legit problem, although if somebody builds a standalone
Fortran 2015 implementation of the MPI interface, it would be decoupled
from the MPI library compilation.
Unfortunately gfortran isn't even compatible with itself, as Jeff
doubtless knows -- the module file format is tied to the compiler major
version and the libgfortran soname has been changed recently (rather
than versioning symbols, similarly to openmpi).
Gilles Gouaillardet
2017-09-20 13:26:08 UTC
Permalink
Fortran is a legit problem, although if somebody builds a standalone Fortran
2015 implementation of the MPI interface, it would be decoupled from the MPI
library compilation.
Is this even doable without making any assumptions ?
For example, how should the MPI C library handle MPI_INTEGER if the
datatype size if it is not known at build time ?
it is likely to be 4 (most common case), but might be 8 (if the
infamous -i8 option, or its equivalent, is used)

Cheers,

Gilles
Jeff Hammond
2017-09-20 21:39:55 UTC
Permalink
On Wed, Sep 20, 2017 at 6:26 AM, Gilles Gouaillardet <
Post by Michael Thomadakis
Post by Jeff Hammond
Fortran is a legit problem, although if somebody builds a standalone
Fortran
Post by Jeff Hammond
2015 implementation of the MPI interface, it would be decoupled from the
MPI
Post by Jeff Hammond
library compilation.
Is this even doable without making any assumptions?
Fortran 2015 and MPI 3.1 implies a very large number of assumptions
already. What beyond this do you think needs to be assumed?
Post by Michael Thomadakis
For example, how should the MPI C library handle MPI_INTEGER if the
datatype size if it is not known at build time?
One could convert from INTEGER to integer(c_int) in Fortran code, at which
point the conversion to C would be trivial (and safe).

If you wanted to be defensive against 64-bit INTEGER, then you'd convert
from INTEGER to integer(c_int64_t) and handle the large count on the C side
using the techniques demonstrated by the BigMPI project.

If we end up standardizing some of the large-count fixes proposed by
BigMPI, then these two scenarios would degenerate to just converting
INTEGER to integer(kind=MPI_COUNT_KIND) and calling the large-count C
function.
Post by Michael Thomadakis
it is likely to be 4 (most common case), but might be 8 (if the
infamous -i8 option, or its equivalent, is used)
I assume that anyone who is using Fortran 2003 or later has the good sense
to never use compiler flags to change the size of the INTEGER type, because
this is evil.

Jeff
Post by Michael Thomadakis
Cheers,
Gilles
_______________________________________________
users mailing list
https://lists.open-mpi.org/mailman/listinfo/users
--
Jeff Hammond
***@gmail.com
http://jeffhammond.github.io/
Thomas Jahns
2017-09-21 15:19:03 UTC
Permalink
I assume that anyone who is using Fortran 2003 or later has the good sense to
never use compiler flags to change the size of the INTEGER type, because this
is evil.
Actually, only changing INTEGER size without adjusting REAL size is evil (i.e.
breaks assumptions spelled out in the Fortran standard). Since default kind
integer is the Fortran equivalent of size_t in many regards, it's only
reasonable to move Fortran ahead by adjusting both default kind REAL and INTEGER
to 8byte.

Regards, Thomas
n8tm via users
2017-09-19 00:25:31 UTC
Permalink
I think Jeff squires summed it up.


Sent via the Samsung Galaxy S8 active, an AT&T 4G LTE smartphone
-------- Original message --------From: Michael Thomadakis <***@gmail.com> Date: 9/18/17 4:57 PM (GMT-05:00) To: Open MPI Users <***@lists.open-mpi.org> Cc: n8tm <***@aol.com> Subject: Re: [OMPI users] Question concerning compatibility of languages used with building OpenMPI and languages OpenMPI uses to build MPI binaries.
Thanks for the note. How about OMP runtimes though?
Michael
On Mon, Sep 18, 2017 at 3:21 PM, n8tm via users <***@lists.open-mpi.org> wrote:
On Linux and Mac, Intel c and c++ are sufficiently compatible with gcc and g++ that this should be possible.  This is not so for Fortran libraries or Windows. 





Sent via the Samsung Galaxy S8 active, an AT&T 4G LTE smartphone
-------- Original message --------From: Michael Thomadakis <***@gmail.com> Date: 9/18/17 3:51 PM (GMT-05:00) To: ***@lists.open-mpi.org Subject: [OMPI users] Question concerning compatibility of languages used with building OpenMPI and languages OpenMPI uses to build MPI binaries.
Dear OpenMPI list,
As far as I know, when we build OpenMPI itself with GNU or Intel compilers we expect that the subsequent MPI application binary will use the same compiler set and run-times.
Would it be possible to build OpenMPI with the GNU tool chain but then subsequently instruct the OpenMPI compiler wrappers to use the Intel compiler set? Would there be any issues with compiling C++ / Fortran or corresponding OMP codes ? 
In general, what is clean way to build OpenMPI with a GNU compiler set but then instruct the wrappers to use Intel compiler set?
Thanks!Michael

_______________________________________________

users mailing list

***@lists.open-mpi.org

https://lists.open-mpi.org/mailman/listinfo/users
Loading...