Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] Configure and Build ok, but mpi module not recognized?
From: Gus Correa (gus_at_[hidden])
Date: 2008-09-22 19:42:25


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: gus_at_[hidden]
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 <gus_at_[hidden]> 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: gus_at_[hidden]
>>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 <gus_at_[hidden]> 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: gus_at_[hidden]
>>>>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 <jsquyres_at_[hidden]>
>>>>>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
>>>>>>users_at_[hidden]
>>>>>>http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>>>>
>>>>>>
>>>>>>
>>>>>>            
>>>>>>
>>>>>
>>>>>          
>>>>>
>>>>_______________________________________________
>>>>users mailing list
>>>>users_at_[hidden]
>>>>http://www.open-mpi.org/mailman/listinfo.cgi/users
>>>>
>>>>
>>>>        
>>>>
>>>
>>>
>>>      
>>>
>>_______________________________________________
>>users mailing list
>>users_at_[hidden]
>>http://www.open-mpi.org/mailman/listinfo.cgi/users
>>
>>    
>>
>
>
>
>  
>