Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: Re: [OMPI devel] wrapper compiler
From: Jeff Squyres (jsquyres) (jsquyres_at_[hidden])
Date: 2014-02-25 08:25:11


This is a classic symptom of getting the wrong wrapper compiler -- e.g., using an MPICH wrapper compiler but an Open MPI mpirun (or vice versa). Make sure that your wrapper compiler matches the mpirun that you're using -- e.g., check your PATH and LD_LIBRARY_PATH values.

On Feb 25, 2014, at 5:17 AM, Wolfgang Kallies <w.kallies_at_[hidden]> wrote:

> Hello,
>
> I am currently implementing MPI in a program I use at work.
>
> The program uses Ipopt and for testing purposes I reduced it to this:
>
> program test
> use mpi
> ...
> call MPI_INIT(ierrmpi)
> call MPI_COMM_RANK(MPI_COMM_WORLD, myid, ierrmpi)
> call MPI_COMM_SIZE(MPI_COMM_WORLD, numprocs, ierrmpi)
>
> write(*,*)'old IDs:',myid,'of process',numprocs
> if(myid.eq.0)then
> write(*,*)'new IDs:',myid,'of process',numproc
> ...
> endif
> 555 call MPI_FINALIZE(ierrmpi)
> end
>
> Using the MPI-Wrapper Compiler I got a result like this:
>
> old IDs: 0 of process 1
> new IDs: 0 of process 1
> old IDs: 0 of process 1
> new IDs: 0 of process 1
> old IDs: 0 of process 1
> new IDs: 0 of process 1
> old IDs: 0 of process 1
> new IDs: 0 of process 1
>
> Without the wrapper compiler, setting the flags manually, I get what should be there:
> old IDs: 3 of process 4
> old IDs: 0 of process 4
> new IDs: 0 of process 4
> old IDs: 2 of process 4
> old IDs: 1 of process 4
>
> I am using Openmpi 1.5.4 with gfortran 4.4.7.
>
> My new old makefile, that gave me the odd results looked like this:
>
> EXECUTABLE = octopus
> NEW_FILES = variables.o test.o readxypulse.o writexypulse.o singlespin_te.o \
> rotation.o readoptparam.o OCT2.o dcar2pol.o\
> OCT2frprmninit.o OCT2frprmn.o OCT2te.o conv2uni.o\
> OCT2grad.o OCT2linmin.o f1dim.o OCT2mnbrak.o brent.o\
> crossproduct.o dpol2car.o readparam.o conv3uni.o\
> ranking.o backrotation.o genpulse.o normalize.o\
> convert2bruker.o help.o readtable.o addphase.o\
> integrate.o car2pol.o pol2car.o\
> Ipopt.o
> FC = mpif90
> FFLAGS = -O3 -fomit-frame-pointer -ffixed-line-length-none
> F77LINKFLAGS = -Wl,--rpath -Wl,/kain/aksg3/wkallies/project-coop/Ipopt-3.10.3/build/lib
> IPOPTLIBDIR = ${exec_prefix}/lib/
> exec_prefix = ${prefix}
> prefix = /kain/aksg3/wkallies/project-coop/Ipopt-3.10.3/build
> LIBS = -L$(IPOPTLIBDIR) -lipopt -ldl -lcoinmumps -lpthread -lcoinhsl -lcoinlapack -lcoinmetis -lcoinblas -lstdc++ -lm
>
> all: dummy
>
> dummy:$(EXECUTABLE)
>
> toinc=-I`echo /kain/aksg3/wkallies/project-coop/Ipopt-3.10.3/build/include/coin`
>
> $(EXECUTABLE):$(NEW_FILES)
> $(FC) $(F77LINKFLAGS) $(FFLAGS) $(toinc) -o $@ $^ $(LIBS)
> rm *.o *.mod
>
> %.o:%.f
> $(FC) $(FFLAGS) $(toinc) -c -o $@ $^
>
> clean:
> rm *.o *.mod octopus
>
> The new one is provided here:
>
>
> EXECUTABLE = octopus
> NEW_FILES = variables.o test.o readxypulse.o writexypulse.o singlespin_te.o \
> rotation.o readoptparam.o OCT2.o dcar2pol.o\
> OCT2frprmninit.o OCT2frprmn.o OCT2te.o conv2uni.o\
> OCT2grad.o OCT2linmin.o f1dim.o OCT2mnbrak.o brent.o\
> crossproduct.o dpol2car.o readparam.o conv3uni.o\
> ranking.o backrotation.o genpulse.o normalize.o\
> convert2bruker.o help.o readtable.o addphase.o\
> integrate.o car2pol.o pol2car.o\
> Ipopt.o
> FC = gfortran
> FFLAGS = -O3 -ffixed-line-length-none -I/usr/include/openmpi-x86_64 -pthread -m64 -I/usr/lib64/openmpi/lib -L/usr/lib64/openmpi/lib -lmpi_f90 -lmpi_f77 -lmpi -ldl
> F77LINKFLAGS = -Wl,--rpath -Wl,/kain/aksg3/wkallies/project-coop/Ipopt-3.10.3/build/lib
> IPOPTLIBDIR = ${exec_prefix}/lib/
> exec_prefix = ${prefix}
> prefix = /kain/aksg3/wkallies/project-coop/Ipopt-3.10.3/build
> LIBS = -L$(IPOPTLIBDIR) -lipopt -ldl -lcoinmumps -lpthread -lcoinhsl -lcoinlapack -lcoinmetis -lcoinblas -lstdc++ -lm
>
> all: dummy
>
> dummy:$(EXECUTABLE)
>
> toinc=-I`echo /kain/aksg3/wkallies/project-coop/Ipopt-3.10.3/build/include/coin`
>
> $(EXECUTABLE):$(NEW_FILES)
> $(FC) $(F77LINKFLAGS) $(FFLAGS) $(toinc) -o $@ $^ $(LIBS)
> rm *.o *.mod
>
> %.o:%.f
> $(FC) $(FFLAGS) $(toinc) -c -o $@ $^
>
> clean:
> rm *.o *.mod octopus
>
>
> Is there a reason why I can't use the wrapper compiler?
>
>
>
> _______________________________________________
> devel mailing list
> devel_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/devel

-- 
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/