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: Brian Harker (brian.harker_at_[hidden])
Date: 2008-09-22 20:15:44


Hi Gus-

Thanks for the idea. One question: how do you position INCLUDE
statements in a fortran program, because if I just straight substitute
' INCLUDE "mpif.h" ' for ' USE mpi ', I get a lot of crap telling me
my other USE statements are not positioned correctly within the scope
and nothing compiles. I have tried various positions, but I seem to
be suffering from a lot of BS. Am I overlooking something very
obvious?

On Mon, Sep 22, 2008 at 5:42 PM, Gus Correa <gus_at_[hidden]> wrote:
> 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
>>>
>>>
>>
>>
>>
>>
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>

-- 
Cheers,
Brian
brian.harker_at_[hidden]
"In science, there is only physics; all the rest is stamp-collecting."
 -Ernest Rutherford