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 <g...@ldeo.columbia.edu> 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: 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 >>> >>> >> >> >> >> > > _______________________________________________ > users mailing list > us...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/users > -- Cheers, Brian brian.har...@gmail.com "In science, there is only physics; all the rest is stamp-collecting." -Ernest Rutherford