Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: [OMPI devel] wrapper compiler
From: Wolfgang Kallies (w.kallies_at_[hidden])
Date: 2014-02-25 05:17:12


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?