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?