Hi Brian and list
I seldom used the "use mpi" syntax before.
I have a lot of code here written in Fortran 90,
but and mpif.h is included instead "use mpi".
The MPI function calls are the same in Fortran 77 and Fortran 90 syntax,
hence there is just one line of code to change, if one wants to go fully
F90.
All works well, though.
This style is a legacy from the times when the Fortran90 interface of
MPI was not fully developed,
and the mpi.mod was broken most of the time.
That is no longer the case, though.
This mixed mode may be one way around your problem, although not ideal.
The main drawback of using the "include mpif.h" syntax
is that there is no parameter checking of the MPI function calls,
whereas the "use mpi" syntax provide some level of parameter checking
through the mpi.mod module.
If you are careful when you write your MPI calls,
and check if all parameters match the syntax requirements strictly,
this shouldn't be a problem, though.
(Nevertheless, a few days ago somebody was suffering here on the list
with a problem that was just
a missing "ierr" parameter in an MPI_Send call. Jeff found it out,
after several emails back and forth.)
If not for anything else, just for the fun of it, to see how far the
compilation goes,
I would comment out "use mpi" and replace it by "include mpif.h".
As for architecture and compiler, I have used with no problem
OpenMPI (and MPICH2 and MPICH-1) on various
x86 and x86_64 machines, both AMD and Intel, under different Linux
flavors (Fedora, CentOS, Red Hat),
in standalone machines (using SMP and shared memory),
and on a small cluster using Ethernet 100T , then using Gigabit Ethernet,
compiling it with gcc and ifort and with gcc and pgf90.
Note that I don't have icc, I use gcc and g++.
Are the icc and ifort versions that you have the same?
I don't know if different versions may not mix well, but it is a
possibility.
I tried to reproduce your problem by writing a simple hello_f90.f90
program, with the "use mpi" syntax,
and compiling it with the OpenMPI mpif90.
However, the program compiled without any problem,
and I didn't need to point to the mpi.mod directory using the "-module"
flag either,
despite my having a "gfortran-openmpi" version of mpi.mod in
/usr/lib/openmpi/.
The program runs fine too, with 2 processes, 4 processes, etc.
On your first message on this thread, your configure command declares
environment
variables for CC, CXX, F77, and FC without full paths.
I wonder if there is any chance that there are multiple versions of
Intel compilers on your
system, that somehow may be the cause for the confusion (perhaps as
early as the build time).
Also, note that mpi.mod is not an include file.
It is located in the lib directory of openmpi.
There was some confusion about this before, with a discussion about "-I"
directories, etc,
but hopefully this was clarified already.
Another thing to check is if there is any funny compiler configuration
(say in /opt/intel/fc/bla/bla/ifort.cfg).
Yet another thing I would look at are the logs for OpenMPI configure,
make, and make install,
if you saved them, to see if the Fortran90 interface was built to
completion.
Also, a suggestion is to compile with the verbose "-v" option, to see if
it spits out some
clue to what is going on.
I hope this helps.
Gus Correa
(from the stamp-collecting side of science :) )
--
---------------------------------------------------------------------
Gustavo J. Ponce Correa, PhD - Email: g...@ldeo.columbia.edu
Lamont-Doherty Earth Observatory - Columbia University
P.O. Box 1000 [61 Route 9W] - Palisades, NY, 10964-8000 - USA
---------------------------------------------------------------------
Brian Harker wrote:
Hi guys-
Still no dice. The only mpi.mod files I have are the ones generated
from my compile and build from source (and they are where they should
be), so there's definitely no confusion amongst the modules. And
specifying the fulls path to the correct mpi.mod module (like Gus
suggested with the -module option) gives no change. I am running out
of ideas and patience, as I'm sure you all are too! Perhaps openMPI
just doesn't play nice with my compiler suite and hardware
architecture...? Thanks for all the input!
On Mon, Sep 22, 2008 at 11:27 AM, Gus Correa <g...@ldeo.columbia.edu> wrote:
Hi Brian and list
I read your original posting and Jeff's answers.
Here on CentOS from Rocks Cluster I have a "native" OpenMPI, with a mpi.mod,
compiled with gfortran.
Note that I don't even have gfortran installed!
This is besides the MPI versions (MPICH2 and OpenMPI)
I installed from scratch using combinations of ifort and pgi with gcc.
It may be that mpif90 is not picking the right mpi.mod, as Jeff suggested.
Something like this may be part of your problem.
A "locate mpi.mod" should show what your system has.
Have you tried to force the directory where mpi.mod is searched for?
Something like this:
/full/path/to/openmpi/bin/mpif90 -module
/full/path/to/openmpi_mpi.mod_directory/ hello_f90.f90
The ifort man pages has the "-module" syntax details.
I hope this helps.
Gus Correa
--
---------------------------------------------------------------------
Gustavo J. Ponce Correa, PhD - Email: g...@ldeo.columbia.edu
Lamont-Doherty Earth Observatory - Columbia University
P.O. Box 1000 [61 Route 9W] - Palisades, NY, 10964-8000 - USA
---------------------------------------------------------------------
Brian Harker wrote:
Hi Gus-
Thanks for the input. I have been using full path names to both the
wrapper compilers and mpiexec from the first day I had two MPI
implementations on my machine, depending on if I want to use MPICH or
openMPI, but still the problem remains. ARGGGGGG!
On Mon, Sep 22, 2008 at 9:40 AM, Gus Correa <g...@ldeo.columbia.edu> wrote:
Hello Brian and list
My confusing experiences with multiple MPI implementations
were fixed the day I decided to use full path names to the MPI compiler
wrappers (mpicc, mpif77, etc) at compile time,
and to the MPI job launcher (mpirun, mpiexec, and so on) at run time,
and to do this in a consistent fashion (using the tools from the same
install to compile and to run the programs).
Most Linux distributions come with built in MPI implementations (often
times
more than one),
and so do commercial compilers and other tools.
You end up with a mess of different MPI versions on your "native" PATH,
as well as variety of bin, lib, and include directories containing
different
MPI stuff.
The easy way around is to use full path names, particularly if you
install
yet another MPI implementation
from scratch.
Another way is to fix your PATH on your initialization files (.cshrc,
etc)
to point to your preferred implementation (put the appropriate bin
directory
ahead of everything else).
Yet another is to install the "environment modules" package on your
system
and use it consistently.
My two cents.
Gus Correa
--
---------------------------------------------------------------------
Gustavo J. Ponce Correa, PhD - Email: g...@ldeo.columbia.edu
Lamont-Doherty Earth Observatory - Columbia University
P.O. Box 1000 [61 Route 9W] - Palisades, NY, 10964-8000 - USA
---------------------------------------------------------------------
Brian Harker wrote:
I built and installed both MPICH2 and openMPI from source, so no
distribution packages or anything. MPICH2 has the modules located in
/usr/local/include, which I assume would be found (since its in my
path), were it not for specifying -I$OPENMPI_HOME/lib at compile time,
right? I can't imagine that if you tell it where to look for the
correct modules, it would search through your path first before going
to where you tell it to go. Or am I too optimistic? Thanks again for
the input!
On Mon, Sep 22, 2008 at 8:58 AM, Jeff Squyres <jsquy...@cisco.com>
wrote:
On Sep 22, 2008, at 10:10 AM, Brian Harker wrote:
Thanks for the reply...crap, $HOME/openmpi/lib does contains all the
various lilbmpi* files as well as mpi.mod,
That should be correct.
but still get the same
error at compile-time. Yes, I made sure to specifically build openMPI
with ifort 10.1.012, and did run the --showme command right after
installation to make sure the wrapper compiler was using ifort as
well.
Ok, good.
Before posting to this mailing list, I did uninstall and re-install
openMPI several times to make sure I had a clean install. Still no
luck. :(
Ok. Have you checked around your machine to ensure that there is no
other
mpi.mod that the compiler is finding first? E.g., in your MPICH2
installation? Or is Open MPI installed by your distro, perchance? You
might want to try a "rpm -qa | grep openmpi" (or whatever your distro's
equivalent is to check already-installed packages).
--
Jeff Squyres
Cisco Systems
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users