On 8/12/2010 6:04 PM, Michael E. Thomadakis wrote:
On 08/12/10 18:59, Tim Prince wrote:
On 8/12/2010 3:27 PM, Ralph Castain wrote:
Ick - talk about confusing! I suppose there must be -some- rational
reason why someone would want to do this, but I can't imagine what
it would be....
I'm no expert on compiler vs lib confusion, but some of my own
experience would say that this is a bad idea regardless of whether
or not OMPI is involved. Compiler version interoperability is
usually questionable, depending upon how far apart the rev levels are.
Only answer I can offer is that you would have to try it. It will
undoubtedly be a case-by-case basis: some combinations might work,
others might fail.
On Aug 12, 2010, at 3:53 PM, Michael E. Thomadakis wrote:
Hello OpenMPI,
we have deployed OpenMPI 1.4.1 and 1.4.2 on our Intel Nehalem
cluster using Intel compilers V 11.1.059 and 11.1.072 respectively,
and one user has the following request:
Can we build OpenMPI version say O.1 against Intel compilers
version say I.1 but then built an application with OpenMPI O.1 BUT
then use a DIFFERENT Intel compiler version say I.2 to built and
run this MPI application?
I suggested to him to 1) simply try to built and run the
application with O.1 but use Intel compilers version I.X whatever
this X is and see if it has any issues.
OR 2) If the above does not work, I would build OpenMPI O.1 against
Intel version I.X so he can use THIS combination for his
hypothetical application.
He insists that I build OpenMPI O.1 with some version of Intel
compilers I.Y but then at run time he would like to use *different*
Intel run time libs at will I.Z <> I.X.
Can you provide me with a suggestion for a sane solution to this ? :-)
Best regards
Michael
Guessing at what is meant here, if you build MPI with a given version
of Intel compilers, it ought to work when the application is built
with a similar or more recent Intel compiler, or when the run-time
LD_LIBRARY_PATH refers to a similar or newer library (within reason).
There are similar constraints on glibc version. "Within reason"
works over a more restricted range when C++ is involved. Note that
the Intel linux compilers link to the gcc and glibc libraries as well
as those which come with the compiler, and the MPI could be built
with a combination of gcc and ifort to work with icc or gcc and
ifort. gfortran and ifort libraries, however, are incompatible,
except that libgomp calls can be supported by libiomp5.
The "rational" use I can see is that an application programmer would
likely wish to test a range of compilers without rebuilding MPI.
Intel documentation says there is forward compatibility testing of
libraries, at least to the extent that a build made with 10.1 would
work with 11.1 libraries.
The most recent Intel library compatibility break was between MKL 9
and 10.
Dear Tim, I offered to provide myself the combination of OMPI+ Intel
compilers so that application can use it in stable fashion. When I
inquired about this application so I can look into this I was told
that "there is NO application yet (!) that fails but just in case it
fails ..." I was asked to hack into the OMPI building process to let
OMPI use one run-time but then the MPI application using this OMPI ...
use another!
Thanks for the information on this. We indeed use Intel Compiler set
11.1.XXX + OMPI 1.4.1 and 1.4.2.
The basic motive in this hypothetical situation is to build the MPI
application ONCE and then swap run-time libs as newer compilers come
out.... I am certain that even if one can get away with it with nearby
run-time versions there is no guarantee of the stability at-infinitum.
I end up having to spent more time for technically "awkward" requests
than the reasonable ones. Reminds me when I was a teacher I had to
spent more time with all the people trying to avoid doing the work
than with the good students... hmmm :-)
According to my understanding, your application (or MPI) built with an
Intel 11.1 compiler should continue working with future Intel 11.1 and
12.x libraries. I don't expect Intel to test or support this
compatibility beyond that.
You will likely want to upgrade your OpenMPI earlier than the time when
Intel compiler changes require a new MPI build.
If the interest is in getting performance benefits of future hardware
simply by installing new dynamic libraries without rebuilding an
application, Intel MKL is the most likely favorable scenario. The MKL
with optimizations for AVX is already in beta test, and should work as
a direct replacement for the MKL in current releases.
--
Tim Prince