I reinstalled/upgraded the operating system on my desktop (now it is Kubuntu 12.04 64 bit) and installed the newest set of intel compilers (ver. 12.1.3 ). Then I built OpenMPI with that set of intel compilers. Everything seems to be fine and I can compile my fortran+MPI code with no problem when I invoke ifort. I should say that I do not actually invoke the "wrapper" mpi compiler. I normally just add flags as MPICOMPFLAGS=$(shell mpif90 --showme:compile) and MPILINKFLAGS=$(shell mpif90 --showme:link) in my makefile. I know it is not the recommended way of doing things but the reason I do that is that I absolutely need to be able to use different fortran compilers to build my fortran code. So far I never had problems using gfortran even though my OpenMPI build is always done with intel compilers. There seemed to be compatibility. However, after the last upgrade of the OS and compilers I can no longer do that. When I use gfortran (ver. 4.6.3) I get messages such as:
debug/main.o: In function `MAIN__':
/home/bubin/fp/pectus_prototype/./src/main.f90:6: undefined reference to `mpi_init_'
/home/bubin/fp/pectus_prototype/./src/main.f90:7: undefined reference to `mpi_comm_rank_'
/home/bubin/fp/pectus_prototype/./src/main.f90:8: undefined reference to `mpi_comm_size_'
/home/bubin/fp/pectus_prototype/./src/main.f90:12: undefined reference to `omp_get_max_threads_'
/home/bubin/fp/pectus_prototype/./src/main.f90:13: undefined reference to `omp_get_num_procs_'
/home/bubin/fp/pectus_prototype/./src/main.f90:19: undefined reference to `mpi_finalize_'
I also tried to use the fortran compiler (f95) from the latest Solaris Studio (ver 12.3) together with OpenMPI (which was again built with intel) and I do not have that problem there. The version of OpenMPI source that I have is 1.4.3 (I also tried 1.4.5 - same result)
Thus, I can compile my code with ifort or solaris studio f95, but not gfortran. As I said I never had this problem before (have used ubuntu + ifort + gfortran + sun/solaris studio for several years on my desktop computers). I wonder if there is an easy solution here, such as some compiler flags for gfortran that force compatibility. Or, perhaps, I need to rebuild OpenMPI with some other flags. I tried to google something useful but did not find anything that would help me.
One potential solution to my problem, I imagine, would be to build OpenMPI separately with intel compilers and gnu compilers (in fact it is already prebuilt with gnu compilers by the ubuntu team) and then use one of those builds depending on the fortran compiler for my code. However, that will create inconvenience because I normally use Netbeans or Solaris Studio and switch configurations while working in there (each configuration has its own set of parameters for the makefile; one of the parameter accepted by the makefile is the compiler type -- intel, gnu, or solaris).