# Makefile de GRISLI - compilo et options pour Cat (pc-226) # FT options de compilation # LK options de link # Rappel de quelques options interessantes #------------------------------------------- # faire imperativement attention a l'arithmetique # -fpe0 s'arrete sur les floating point exception (sauf underflow) # -CB Performs run-time checking on array subscript and character substring expressions # -g pour debug # -pg pour le profiling # -traceback permet de connaitre la ligne qui plante # faire man ifort pour plus d'infos # debug Segmentation Faults SIGSEGV : https://software.intel.com/en-us/articles/determining-root-cause-of-sigsegv-or-sigbus-errors # le directory dans lequel sont les compilateurs et MKL # DIRLOCAL=/usr/local variable d'environnement a definir dans .bash_profile # lit le nom du fichier param pour lancer sur r2d2 par une commande : echo jobparam | LBQ.... JOB = 'job' # mettre debug à 1 pour compiler avec options strictes debug ?= 0 # compilation avec ifort : ifeq ($(ifort),1) # librairies NCDF_INC = -I$(NETCDFHOME)/include NCDF_LIB = -L$(NETCDFHOME)/lib -lnetcdf -lnetcdff # utilisation de MKL : ifeq ($(mkl_c), 1) # MKL_LIB = -L$(MKLROOT)/lib/intel64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread -lm # MKL parallele MKL_LIB = -L$(MKLROOT)/lib/intel64 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread -lm # MKL sequentiel MKL_INC = -I$(MKLROOT)/include endif IFORT= ifort ARITHMi = -O2 -fp-model precise -mcmodel=medium -shared-intel #-qopenmp #-traceback # (normalement reproductible) ifeq ($(debug), 1) ARITHM = $(ARITHMi) -g -p -traceback -CB -warn all else ARITHM = $(ARITHMi) -diag-disable warn endif #ARITHM = -fp-model precise -warn all -CU -CA # options pour une meilleure arithmetique (normalement reproductible) # ARITHM = -03 # trop brutal ne pas utiliser FT = $(IFORT) $(ARITHM) $(MKL_INC) #-traceback -CB #-g #-pg # -g # -pg -ipo !aurel : j'ai enleve -CB LK = $(IFORT) $(ARITHM) # -traceback -CB # -g #-pg #-g # -pg F_NETCDF = $(IFORT) $(ARITHM) -c -I$(NCDF_INC) # -traceback -CB #-g #-pg -ipo # -g #FT = $(IFORT) $(ARITHM) -c -I$(NCDF_INC) # -traceback -CB #-g #-pg -ipo # -g # compilation avec gfortran et librairie BLAS else # librairies LIBSYS = /usr/lib # INCSYS = /usr/include # Ubuntu INCSYS = /usr/lib64/gfortran/modules # Fedora NCDF_INC = $(INCSYS) NCDF_LIB = -L$(LIBSYS) -lnetcdff -lnetcdf IFORT= gfortran ARITHMi = -O2 -ffree-line-length-none -mtune=native -mfpmath=sse ifeq ($(debug), 1) ARITHM = $(ARITHMi) -g -pg -Wall -fno-align-commons -p -ggdb -ffpe-trap=invalid,zero,overflow,underflow -fbacktrace -fcheck=all else ARITHM = $(ARITHMi) endif # debug : -g -CB -fp-stack-check -check all FT = $(IFORT) $(ARITHM) -c LK = $(IFORT) $(ARITHM) F_NETCDF = $(IFORT) $(ARITHM) -c -I$(NCDF_INC) endif