Hi everybody,
I am trying to compile FDS5 (parallel version) on Suse Linux 11.3 (64
bit) with openmpi and gcc (gcc-4_5-branch revision 160292), not using
the Intel Fortran compiler. I did manage to do that with FDS4 last
year and adapted the FDS5 makefile accordingly (see below).
The compilation works and I receive a new fds5_mpi.
When running I get
user@pc4:~/fds5/transrun/bla> mpirun -np 2 ../../bin/fds5_mpi t1.fds
mpirun noticed that job rank 0 with PID 5518 on node pc4.site exited
on signal 11 (Segmentation fault).
1 additional process aborted (not shown)
Would anyone know why there is this segmentation fault, could advise
on how to modify the makefile or suggest a different way to compile
FDS5 without using Intel Fortran compiler (if possible at all).
Regards,
firefox
-----------------------
# Makefile for Fire Dynamics Simulator (FDS), Version 5
# To use this makefile, select the appropriate compiler and OS from
the list below. For example, to
# compile the 64 bit parallel version (MPI) of FDS under Linux with
OpenMP using the Intel compilers type:
#
# make openmp_mpi_intel_linux_64
# A make utility for windows may be downloaded from
http://gnuwin32.sourceforge.net/packages/make.htm
# The variable VPATH defines where the source code is relative to the
current directory
VPATH = .
# Definition of the non-MPI or MPI object variables
# note: objf_serial and objf_mpi contain only Fortran routines ie not
isob.c
objf_serial = prec.o mpis.o smvv.o cons.o devc.o data.o type.o mesh.o
func.o irad.o \
ieva.o pois.o scrc.o radi.o evac.o part.o vege.o ctrl.o
turb.o dump.o hvac.o read.o \
mass.o wall.o fire.o divg.o init.o velo.o pres.o main.o
obj_serial = isob.o $(objf_serial)
objf_mpi = prec.o mpip.o smvv.o cons.o devc.o data.o type.o mesh.o
func.o irad.o \
ieva.o pois.o scrc.o radi.o evac.o part.o vege.o ctrl.o
turb.o dump.o hvac.o read.o \
mass.o wall.o fire.o divg.o init.o velo.o pres.o main.o
obj_mpi = isob.o $(objf_mpi)
# General Purpose Rules
no_target:
@echo \******** You did not specify a make target \********
@echo Please read the comments at the top of the makefile
setup:
%.o : %.mod
.SUFFIXES: .c .f90 .o .obj
# Files which have OpenMP compiler directives have to be compiled
# by using the FOPENMPFLAG
# read.f90 has to be compiled without optimization, otherwise
# errors occure when reading .fds files.
func.o: FFLAGS += $(FOPENMPFLAGS)
part.o: FFLAGS += $(FOPENMPFLAGS)
turb.o: FFLAGS += $(FOPENMPFLAGS)
mass.o: FFLAGS += $(FOPENMPFLAGS)
fire.o: FFLAGS += $(FOPENMPFLAGS)
divg.o: FFLAGS += $(FOPENMPFLAGS)
velo.o: FFLAGS += $(FOPENMPFLAGS)
pres.o: FFLAGS += $(FOPENMPFLAGS)
read.o: FOPTIMIZATIONFLAGS = -O0
.f90.o:
$(FCOMPL) -c $(FOPTIMIZATIONFLAGS) $(FFLAGS) $<
.f90.obj:
$(FCOMPL) -c $(FOPTIMIZATIONFLAGS) $(FFLAGS) $<
.c.o:
$(CCOMPL) -c $(CFLAGS) $<
.c.obj:
$(CCOMPL) -c $(CFLAGS) $<
#*** Compiler Specific Rules ***
all: INCLUDEDIR = /usr/lib64/mpi/gcc/openmpi/include
all: FFLAGS = -I $(INCLUDEDIR)
all: CFLAGS = -I $(INCLUDEDIR)
all: LFLAGS = -L /usr/lib64/mpi/gcc/openmpi/lib64 -lmpi -lmpi_f90 -
shared
all: obj = fds5_mpi
all: FCOMPL = gfortran
all: CCOMPL = gcc
all: FOPTIMIZATIONFLAGS = -O2
all: FOPENMPFLAGS = -fopenmp
all: setup $(obj_mpi)
$(FCOMPL) -o $(obj) $(FOPTIMIZATIONFLAGS) $(FFLAGS) $(LFLAGS) $
(FOPENMPFLAGS)
#*** End Compiler Specific Rules ***
# *** Object Dependencies ***
smvv.o : isob.o
cons.o : prec.o
mpis.o : prec.o
type.o : prec.o cons.o
devc.o : prec.o
pois.o : prec.o cons.o
mesh.o : prec.o type.o
data.o : prec.o func.o cons.o
func.o : prec.o cons.o type.o mesh.o devc.o
ctrl.o : prec.o cons.o type.o mesh.o func.o
turb.o : func.o prec.o cons.o mesh.o
scrc.o : prec.o cons.o mesh.o func.o pois.o
irad.o : func.o prec.o cons.o type.o mesh.o
ieva.o : func.o prec.o cons.o type.o mesh.o
fire.o : func.o prec.o cons.o type.o mesh.o
hvac.o : func.o prec.o cons.o type.o mesh.o ctrl.o
wall.o : func.o prec.o cons.o type.o mesh.o hvac.o
velo.o : func.o prec.o cons.o type.o mesh.o turb.o
evac.o : func.o prec.o cons.o type.o mesh.o ieva.o data.o
divg.o : func.o prec.o cons.o type.o mesh.o scrc.o evac.o
mass.o : func.o prec.o cons.o type.o mesh.o turb.o
radi.o : func.o prec.o cons.o type.o mesh.o irad.o
pres.o : func.o prec.o cons.o type.o mesh.o pois.o velo.o scrc.o
part.o : func.o prec.o cons.o type.o mesh.o devc.o data.o
vege.o : func.o prec.o cons.o type.o mesh.o devc.o part.o
read.o : func.o prec.o cons.o type.o mesh.o devc.o ctrl.o irad.o
evac.o hvac.o scrc.o data.o
init.o : func.o prec.o cons.o type.o mesh.o devc.o irad.o pois.o
data.o
dump.o : func.o prec.o cons.o type.o mesh.o devc.o evac.o smvv.o
isob.c turb.o scrc.o data.o
main.o : func.o prec.o cons.o type.o mesh.o devc.o smvv.o isob.c
mass.o divg.o velo.o wall.o fire.o irad.o ieva.o radi.o evac.o part.o
vege.o dump.o read.o init.o pres.o pois.o ctrl.o turb.o hvac.o scrc.o
data.o
#*** Clean Target to remove Object and Module files ***
.PHONY : clean
clean:
-rm -f *.o *.mod