From c735866985ec8a0420aca714aaa46f592e300bcf Mon Sep 17 00:00:00 2001 From: Juan ESCOBAR <juan.escobar@aero.obs-mip.fr> Date: Fri, 3 Feb 2023 18:08:13 +0100 Subject: [PATCH] Juan 03/06/2023:ch_aer_maattanen_neutral.f90, Cray Compiler doesnt accept "+ & -1.0" syntaxe => remove "+" --- conf/profile_mesonh.ihm | 11 ++ src/MNH/ch_aer_maattanen_neutral.f90 | 62 +++---- src/Makefile | 34 ++-- src/Rules.LXcray.mk | 234 +++++++++++++++++++++++---- src/configure | 103 +++++++++++- 5 files changed, 365 insertions(+), 79 deletions(-) diff --git a/conf/profile_mesonh.ihm b/conf/profile_mesonh.ihm index 11c7060f1..249d1decb 100755 --- a/conf/profile_mesonh.ihm +++ b/conf/profile_mesonh.ihm @@ -126,6 +126,17 @@ export VERSION_NCL=${VERSION_NCL} # export MNH_MEGAN=${MNH_MEGAN} # +# Use MNH_EXPAND if VER_MNHEXP=MNHEXPAUTO +# +export VER_MNHEXP=${VER_MNHEXP} +if [ "x${VER_MNHEXP}" == "xMNHEXPAUTO" ] ;then +export VERSION_MNHEXP=${VERSION_MNHEXP} +export VERSION_FILEPP=${VERSION_FILEPP} +export FILEPP=\${SRC_MESONH}/pub/FILEPP +export PATH=\${FILEPP}/MNH_Expand_Array-\${VERSION_MNHEXP}:\${PATH} +export PATH=\${FILEPP}/FILEPP-\${VERSION_FILEPP}/bin:\${PATH} +export MANPATH=\${FILEPP}/FILEPP-\${VERSION_FILEPP}/share/man:\${MANPATH} +fi ########################################################## ########################################################## ########################################################## diff --git a/src/MNH/ch_aer_maattanen_neutral.f90 b/src/MNH/ch_aer_maattanen_neutral.f90 index 8a9c8b5d3..1396805c9 100644 --- a/src/MNH/ch_aer_maattanen_neutral.f90 +++ b/src/MNH/ch_aer_maattanen_neutral.f90 @@ -189,50 +189,50 @@ DO II = 1, SIZE(PSULF,1) & 3.3827029855551838 * PTEMP(II) - & & 3.2423555796175563e-2 * PTEMP(II)**2 + & & 7.0120069477221989e-5 * PTEMP(II)**3 + & - & 8.0286874752695141 / ZAL(II) + & + & 8.0286874752695141 / ZAL(II) & & -2.6939840579762231e-1 * LOG(PRH(II)) + & - & 1.6079879299099518 * PTEMP(II) * LOG(PRH(II)) + & + & 1.6079879299099518 * PTEMP(II) * LOG(PRH(II)) & & -1.9667486968141933e-2 * PTEMP(II)**2 * LOG(PRH(II)) + & & 5.5244755979770844e-5 * PTEMP(II)**3 * LOG(PRH(II)) + & & (7.8884704837892468 * LOG(PRH(II))) / ZAL(II) + & & 4.6374659198909596 * LOG(PRH(II))**2 - & & 8.2002809894792153e-2 * PTEMP(II) * LOG(PRH(II))**2 + & - & 8.5077424451172196e-4 * PTEMP(II)**2 * LOG(PRH(II))**2 + & + & 8.5077424451172196e-4 * PTEMP(II)**2 * LOG(PRH(II))**2 & & -2.6518510168987462e-6 * PTEMP(II)**3 * LOG(PRH(II))**2 + & & (-1.4625482500575278 * LOG(PRH(II))**2)/ZAL(II) - & & 5.2413002989192037e-1 * LOG(PRH(II))**3 + & - & 5.2755117653715865e-3 * PTEMP(II) * LOG(PRH(II))**3 + & - & -2.9491061332113830e-6 * PTEMP(II)**2 * LOG(PRH(II))**3 + & + & 5.2755117653715865e-3 * PTEMP(II) * LOG(PRH(II))**3 & + & -2.9491061332113830e-6 * PTEMP(II)**2 * LOG(PRH(II))**3 & & -2.4815454194486752e-8 * PTEMP(II)**3 * LOG(PRH(II))**3 + & & (-5.2663760117394626e-2 * LOG(PRH(II))**3) / ZAL(II) + & - & 1.6496664658266762 * LOG(ZSULF(II)) + & + & 1.6496664658266762 * LOG(ZSULF(II)) & & -8.0809397859218401e-1 * PTEMP(II) * LOG(ZSULF(II)) + & - & 8.9302927091946642e-3 * PTEMP(II)**2 * LOG(ZSULF(II)) + & + & 8.9302927091946642e-3 * PTEMP(II)**2 * LOG(ZSULF(II)) & & -1.9583649496497497e-5 * PTEMP(II)**3 * LOG(ZSULF(II)) + & - & (-8.9505572676891685 * LOG(ZSULF(II))) / ZAL(II) + & + & (-8.9505572676891685 * LOG(ZSULF(II))) / ZAL(II) & & -3.0025283601622881e+1 * LOG(PRH(II)) * LOG(ZSULF(II)) + & - & 3.0783365644763633e-1 * PTEMP(II) * LOG(PRH(II)) * LOG(ZSULF(II)) + & - & -7.4521756337984706e-4 * PTEMP(II)**2 * LOG(PRH(II)) * LOG(ZSULF(II)) + & + & 3.0783365644763633e-1 * PTEMP(II) * LOG(PRH(II)) * LOG(ZSULF(II)) & + & -7.4521756337984706e-4 * PTEMP(II)**2 * LOG(PRH(II)) * LOG(ZSULF(II)) & & -5.7651433870681853e-7 * PTEMP(II)**3 * LOG(PRH(II)) * LOG(ZSULF(II)) + & - & (1.2872868529673207 * LOG(PRH(II)) * LOG(ZSULF(II))) / ZAL(II) + & + & (1.2872868529673207 * LOG(PRH(II)) * LOG(ZSULF(II))) / ZAL(II) & & -6.1739867501526535e-1 * LOG(PRH(II))**2 * LOG(ZSULF(II)) + & - & 7.2347385705333975e-3 * PTEMP(II) * LOG(PRH(II))**2 * LOG(ZSULF(II)) + & + & 7.2347385705333975e-3 * PTEMP(II) * LOG(PRH(II))**2 * LOG(ZSULF(II)) & & -3.0640494530822439e-5 * PTEMP(II)**2 * LOG(PRH(II))**2 * LOG(ZSULF(II)) + & & 6.5944609194346214e-8 * PTEMP(II)**3 * LOG(PRH(II))**2 * LOG(ZSULF(II)) + & & (-2.8681650332461055e-2 * LOG(PRH(II))**2 * LOG(ZSULF(II))) / ZAL(II) + & - & 6.5213802375160306 * LOG(ZSULF(II))**2 + & - & -4.7907162004793016e-2 * PTEMP(II) * LOG(ZSULF(II))**2 + & + & 6.5213802375160306 * LOG(ZSULF(II))**2 & + & -4.7907162004793016e-2 * PTEMP(II) * LOG(ZSULF(II))**2 & & -1.0727890114215117e-4 * PTEMP(II)**2 * LOG(ZSULF(II))**2 + & & 5.6401818280534507e-7 * PTEMP(II)**3 * LOG(ZSULF(II))**2 + & & (5.4113070888923009e-1 * LOG(ZSULF(II))**2) / ZAL(II) + & - & 5.2062808476476330e-1 * LOG(PRH(II)) * LOG(ZSULF(II))**2 + & + & 5.2062808476476330e-1 * LOG(PRH(II)) * LOG(ZSULF(II))**2 & & -6.0696882500824584e-3 * PTEMP(II) * LOG(PRH(II)) * LOG(ZSULF(II))**2 + & - & 2.3851383302608477e-5 * PTEMP(II)**2 * LOG(PRH(II)) * LOG(ZSULF(II))**2 + & + & 2.3851383302608477e-5 * PTEMP(II)**2 * LOG(PRH(II)) * LOG(ZSULF(II))**2 & & -1.5243837103067096e-8 * PTEMP(II)**3 * LOG(PRH(II)) * LOG(ZSULF(II))**2 + & - & (-5.6543192378015687e-2 * LOG(PRH(II)) * LOG(ZSULF(II))**2) / ZAL(II) + & + & (-5.6543192378015687e-2 * LOG(PRH(II)) * LOG(ZSULF(II))**2) / ZAL(II) & & -1.1630806410696815e-1 * LOG(ZSULF(II))**3 + & - & 1.3806404273119610e-3 * PTEMP(II) * LOG(ZSULF(II))**3 + & - & -2.0199865087650833e-6 * PTEMP(II)**2 * LOG(ZSULF(II))**3 + & + & 1.3806404273119610e-3 * PTEMP(II) * LOG(ZSULF(II))**3 & + & -2.0199865087650833e-6 * PTEMP(II)**2 * LOG(ZSULF(II))**3 & & -3.0200284885763192e-9 * PTEMP(II)**3 * LOG(ZSULF(II))**3 + & & (-6.9425267104126316e-3 * LOG(ZSULF(II))**3) / ZAL(II) ! @@ -252,41 +252,41 @@ DO II = 1, SIZE(PSULF,1) & 7.5641448594711666e-7*PTEMP(II)**3*LOG(PRH(II)) + & & (-2.0668639384228818e-02*LOG(PRH(II)))/ZAL(II) - & & 3.7593072011595188e-2*LOG(PRH(II))**2 + & - & 8.0993182774415718e-4*PTEMP(II)*LOG(PRH(II))**2 + & + & 8.0993182774415718e-4*PTEMP(II)*LOG(PRH(II))**2 & & -9.5698412164297149e-6*PTEMP(II)**2*LOG(PRH(II))**2 + & & 3.7163166416110421e-8*PTEMP(II)**3*LOG(PRH(II))**2 + & & (1.1026579525210847e-2*LOG(PRH(II))**2)/ZAL(II) + & - & 1.1530844115561925e-2*LOG(PRH(II))**3 + & - & - 1.8083253906466668e-4*PTEMP(II)*LOG(PRH(II))**3 +& - & 8.0213604053330654e-7*PTEMP(II)**2*LOG(PRH(II))**3 + & + & 1.1530844115561925e-2*LOG(PRH(II))**3 & + & -1.8083253906466668e-4*PTEMP(II)*LOG(PRH(II))**3 +& + & 8.0213604053330654e-7*PTEMP(II)**2*LOG(PRH(II))**3 & & -8.5797885383051337e-10*PTEMP(II)**3*LOG(PRH(II))**3 + & - & (1.0243693899717402e-3*LOG(PRH(II))**3)/ZAL(II) + & + & (1.0243693899717402e-3*LOG(PRH(II))**3)/ZAL(II) & & -1.7248695296299649e-2*LOG(ZSULF(II)) + & - & 1.1294004162437157e-2*PTEMP(II)*LOG(ZSULF(II)) + & + & 1.1294004162437157e-2*PTEMP(II)*LOG(ZSULF(II)) & & -1.2283640163189278e-4*PTEMP(II)**2*LOG(ZSULF(II)) + & & 2.7391732258259009e-7*PTEMP(II)**3*LOG(ZSULF(II)) + & & (6.8505583974029602e-2*LOG(ZSULF(II)))/ZAL(II) + & - & 2.9750968179523635e-1*LOG(PRH(II))*LOG(ZSULF(II)) + & + & 2.9750968179523635e-1*LOG(PRH(II))*LOG(ZSULF(II)) & & -3.6681154503992296e-3*PTEMP(II)*LOG(PRH(II))*LOG(ZSULF(II)) + & & 1.0636473034653114e-5*PTEMP(II)**2*LOG(PRH(II))*LOG(ZSULF(II)) + & & 5.8687098466515866e-9*PTEMP(II)**3*LOG(PRH(II))*LOG(ZSULF(II)) + & & (-5.2028866094191509e-3*LOG(PRH(II))*LOG(ZSULF(II)))/ZAL(II) + & & 7.6971988880587231e-4*LOG(PRH(II))**2*LOG(ZSULF(II)) - & & 2.4605575820433763e-5*PTEMP(II)*LOG(PRH(II))**2*LOG(ZSULF(II)) + & - & 2.3818484400893008e-7*PTEMP(II)**2*LOG(PRH(II))**2*LOG(ZSULF(II)) + & + & 2.3818484400893008e-7*PTEMP(II)**2*LOG(PRH(II))**2*LOG(ZSULF(II)) & & -8.8474102392445200e-10*PTEMP(II)**3*LOG(PRH(II))**2*LOG(ZSULF(II)) + & & (-1.6640566678168968e-4*LOG(PRH(II))**2*LOG(ZSULF(II)))/ZAL(II) - & & 7.7390093776705471e-2*LOG(ZSULF(II))**2 + & & 5.8220163188828482e-4*PTEMP(II)*LOG(ZSULF(II))**2 + & - & 1.2291679321523287e-6*PTEMP(II)**2*LOG(ZSULF(II))**2 + & + & 1.2291679321523287e-6*PTEMP(II)**2*LOG(ZSULF(II))**2 & & -7.4690997508075749e-9*PTEMP(II)**3*LOG(ZSULF(II))**2 + & - & (-5.6357941220497648e-3*LOG(ZSULF(II))**2)/ZAL(II) + & + & (-5.6357941220497648e-3*LOG(ZSULF(II))**2)/ZAL(II) & & -4.7170109625089768e-3*LOG(PRH(II))*LOG(ZSULF(II))**2 + & - & 6.9828868534370193e-5*PTEMP(II)*LOG(PRH(II))*LOG(ZSULF(II))**2 + & + & 6.9828868534370193e-5*PTEMP(II)*LOG(PRH(II))*LOG(ZSULF(II))**2 & & -3.1738912157036403e-7*PTEMP(II)**2*LOG(PRH(II))*LOG(ZSULF(II))**2 + & & 2.3975538706787416e-10*PTEMP(II)**3*LOG(PRH(II))*LOG(ZSULF(II))**2 + & & (4.2304213386288567e-4*LOG(PRH(II))*LOG(ZSULF(II))**2)/ZAL(II) + & - & 1.3696520973423231e-3*LOG(ZSULF(II))**3 + & + & 1.3696520973423231e-3*LOG(ZSULF(II))**3 & & -1.6863387574788199e-5*PTEMP(II)*LOG(ZSULF(II))**3 + & & 2.7959499278844516e-8*PTEMP(II)**2*LOG(ZSULF(II))**3 + & & 3.9423927013227455e-11*PTEMP(II)**3*LOG(ZSULF(II))**3 + & diff --git a/src/Makefile b/src/Makefile index 1692dd7d5..3ef6c95ef 100644 --- a/src/Makefile +++ b/src/Makefile @@ -324,7 +324,7 @@ $(ECCODES_MOD) : AEC_PATH=$(CDF_PATH) cmake ${DIR_ECCODES_SRC} -DCMAKE_INSTALL_PREFIX=${DIR_ECCODES_INSTALL} -DBUILD_SHARED_LIBS=OFF \ -DENABLE_NETCDF=OFF -DENABLE_JPG=OFF -DENABLE_PYTHON=OFF -DENABLE_EXAMPLES=OFF \ -DCMAKE_Fortran_COMPILER=$(FC) -DCMAKE_C_COMPILER=$(CC) \ - -DCMAKE_Fortran_FLAGS=$(ECCODES_FFLAGS) -DCMAKE_C_FLAGS=$(ECCODES_CFLAGS) && \ + -DCMAKE_Fortran_FLAGS=$(ECCODES_FFLAGS) -DCMAKE_C_FLAGS=$(ECCODES_CFLAGS) ${EC_CONF} && \ $(MAKE) && $(MAKE) install && $(MAKE) clean eccodes_lib_clean : @@ -342,10 +342,10 @@ NETCDF_OPT ?= ${OPT_BASE_I4:-$OPT_BASE} # cdf : $(CDF_MOD) $(CDF_MOD) : - cd ${DIR_LIBAEC} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 CC="$(CC)" CFLAGS="$(HDF_OPT)" && \ + cd ${DIR_LIBAEC} && autoreconf -i && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 CC="$(CC)" CFLAGS="$(HDF_OPT)" ${CDF_CONF} && \ $(MAKE) && $(MAKE) install && $(MAKE) clean cd ${DIR_HDF} && ./configure --enable-fortran --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --with-szlib=${CDF_PATH}/include,${CDF_PATH}/lib64 \ - CC="$(CC)" CFLAGS="$(HDF_OPT)" FC="$(FC)" FCFLAGS="$(NETCDF_OPT)" LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lsz -laec -lz -ldl " && \ + CC="$(CC)" CFLAGS="$(HDF_OPT)" ${HDF_CONF} FC="$(FC)" FCFLAGS="$(NETCDF_OPT)" LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lsz -laec -lz" && \ $(MAKE) && $(MAKE) install && $(MAKE) clean cd ${DIR_CDFC} && ./configure --disable-shared --prefix=${CDF_PATH} --libdir=${CDF_PATH}/lib64 --disable-dap \ CC="$(CC)" CFLAGS="$(NETCDF_OPT)" CPPFLAGS="${INC_NETCDF}" ${CDF_CONF} LDFLAGS="-L${CDF_PATH}/lib64" LIBS="-lhdf5_hl -lhdf5 -lsz -laec -lz -ldl " && \ @@ -524,48 +524,48 @@ ARFLAGS=r # # GENERATION OF DEPENDANCE FILES : *.D # - +SPLL ?= spll %.D:%.F90 $(CPP) $(INC) $(CPPFLAGS) $< > $(OBJDIR)/$(*F).f90 - spll $(NSOURCE) $(OBJDIR)/$(*F).f90 + $(SPLL) $(NSOURCE) $(OBJDIR)/$(*F).f90 rm -f $(OBJDIR)/$(*F).f90 %.D:%.f90 $(CPP) $(INC) $(CPPFLAGS) $< > $(OBJDIR)/$(*F).f90 - spll $(NSOURCE) $(OBJDIR)/$(*F).f90 + $(SPLL) $(NSOURCE) $(OBJDIR)/$(*F).f90 rm -f $(OBJDIR)/$(*F).f90 %.D:%.fx90 $(CPP) $(INC) $(CPPFLAGS) $< > $(OBJDIR)/$(*F).fx90 - spll $(NSOURCE) $(OBJDIR)/$(*F).fx90 + $(SPLL) $(NSOURCE) $(OBJDIR)/$(*F).fx90 rm -f $(OBJDIR)/$(*F).fx90 %.D:%.f $(CPP) $(INC) $(CPPFLAGS) $< > $(OBJDIR)/$(*F).f - spll $(NSOURCE) $(OBJDIR)/$(*F).f + $(SPLL) $(NSOURCE) $(OBJDIR)/$(*F).f rm -f $(OBJDIR)/$(*F).f # # GENERATION OF OBJET FILES : *.o # -%.o:%.f90 - echo "inc=$(INC)" - $(F90) -I$(OBJDIR) $(INC) -c $(F90FLAGS) $< - -mv $(*F).o $(OBJDIR)/. || echo OK $(*F).o +#%.o:%.f90 +# echo "inc=$(INC)" +# $(F90) -I$(OBJDIR) $(INC) -c $(F90FLAGS) $< +# -mv $(*F).o $(OBJDIR)/. || echo OK $(*F).o %.o:%.f echo "inc=$(INC)" $(F77) -I$(OBJDIR) $(INC) -c $(F77FLAGS) $< -mv $(*F).o $(OBJDIR)/. || echo OK $(*F).o -%.o:%.fx90 - cp $< $(OBJDIR)/$(*F).f - $(FX90) -I$(OBJDIR) $(INC) -c $(FX90FLAGS) $(OBJDIR)/$(*F).f - -mv $(*F).o $(OBJDIR)/. || echo OK $(*F).o +#%.o:%.fx90 +# cp $< $(OBJDIR)/$(*F).f +# $(FX90) -I$(OBJDIR) $(INC) -c $(FX90FLAGS) $(OBJDIR)/$(*F).f +# -mv $(*F).o $(OBJDIR)/. || echo OK $(*F).o %.o : %.c - $(CC) $(INC) $(CFLAGS) $(CPPFLAGS) -c $< -o $(OBJDIR)/$(*F).o + $(CC) $(INC) $(CFLAGS) $(CPPFLAGS_C) -c $< -o $(OBJDIR)/$(*F).o -mv $(*F).o $(OBJDIR)/. || echo OK $(*F).o ifeq "$(DO_COMP_MASTER)" "YES" diff --git a/src/Rules.LXcray.mk b/src/Rules.LXcray.mk index 8b5a2ec2e..d21f8318d 100644 --- a/src/Rules.LXcray.mk +++ b/src/Rules.LXcray.mk @@ -1,4 +1,4 @@ -#MNH_LIC Copyright 1994-2021 CNRS, Meteo-France and Universite Paul Sabatier +#MNH_LIC Copyright 1994-2022 CNRS, Meteo-France and Universite Paul Sabatier #MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence #MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt #MNH_LIC for details. version 1. @@ -7,26 +7,41 @@ # Compiler Options # # # ########################################################## +# +# craytfn version +CFV=$(shell crayftn --version | grep -E -m1 -o ' [[:digit:]\.]{2,}( |$$)' | sed 's/\.//g' ) +# #OBJDIR_PATH=/home/escj/azertyuiopqsdfghjklm/wxcvbn/azertyuiopqsdfghjklmwxcvbn # -#OPT_BASE = -r8 -g -w -assume nosource_include -assume byterecl -fpe0 -ftz -fpic -traceback -fp-model precise -switch fe_inline_all_arg_copy_inout -OPT_BASE = -sreal64 -hpic -em -ef +OPT_BASE = -hpic -emf -h acc_model=auto_async_none:no_fast_addr:no_deep_copy -halias=none OPT_PERF0 = -O0 -g -OPT_PERF2 = -O2 -hflex_mp=intolerant -Ofp0 -hnoomp -OPT_PERF1 = -O1 -hflex_mp=intolerant -Ofp0 -hnoomp -hcpu=istanbul -hfp0 -K trap=fp -# –hcpu=Istanbul –hfp0 -#OPT_CHECK = -CB -ftrapuv +OPT_PERF1 = -G2 -O1 -hflex_mp=intolerant -Ofp0 -hnofma -hnoomp -K trap=fp -hipa0 +OPT_PERF2 = -G2 -O2 -hflex_mp=intolerant -Ofp0 -hnofma -hnoomp -hipa0 +# +OPT_NOOPENACC = -hnoacc +OPT_OPENACC = -hacc +# OPT_CHECK = -Rbc -OPT_I8 = -sdefault64 +OPT_I8 = -sinteger64 +OPT_R8 = -sreal64 +# +ifeq "$(VER_USER)" "ZSOLVER" +CPPFLAGS += -DCARTESIANGEOMETRY -DPIECEWISELINEAR +PROG_LIST += MG_MAIN MG_MAIN_MNH_ALL +endif # -# Integer 4/8 option +# Real/integer 4/8 option # +MNH_REAL ?=8 MNH_INT ?=4 # +ifneq "$(MNH_REAL)" "4" +OPT_BASE += $(OPT_R8) +endif +# OPT_BASE_I4 := $(OPT_BASE) ifeq "$(MNH_INT)" "8" -#OPT_BASE += $(OPT_I8) -OPT_BASE = -sdefault64 -hpic -em -ef +OPT_BASE += $(OPT_I8) LFI_INT ?=8 else LFI_INT ?=4 @@ -42,17 +57,89 @@ OPT0 = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK) OPT_NOCB = $(OPT_BASE) $(OPT_PERF0) CFLAGS += -g endif -ifeq "$(OPTLEVEL)" "O2PAR" -PAR= -homp -OPT = $(OPT_BASE) $(OPT_PERF2) $(PAR) -OPT0 = $(OPT_BASE) $(OPT_PERF0) $(PAR) -OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) $(PAR) +# +ifeq "$(OPTLEVEL)" "OPENACC" +MNH_BITREP_OMP=YES +CPPFLAGS += -DMNH_OPENACC -DMNH_GPUDIRECT +OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) +OPT0 = $(OPT_BASE) $(OPT_PERF0) $(OPT_OPENACC) +OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) +#CXXFLAGS = -fopenmp +#OBJS_REPROD= spll_mode_sum_ll.o +#$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) -Mvect=nosimd -Minfo=all -g +#OBJS_O1_OPENACC= spll_ice4_tendencies.o spll_turb_ver_thermo_flux.o +#OBJS_O1_OPENACC= spll_rain_ice_red.o +#$(OBJS_O1_OPENACC) : OPT = $(OPT_BASE) $(OPT_PERF0) $(OPT_OPENACC) + +#OBJS_ASYNAll=spll_turb_ver_thermo_flux.o spll_turb_ver_thermo_corr.o spll_turb_ver_dyn_flux.o \ +# spll_turb_hor_uv.o spll_turb_hor_uw.o spll_turb_hor_vw.o spll_mode_turb.o\ +# spll_turb_hor_dyn_corr.o spll_turb_hor_thermo_flux.o spll_turb_hor_sv_corr.o +# spll_mode_turb.o spll_p_abs.o spll_advection_metsv.o \ +# spll_advection_uvw.o spll_resolved_cloud.o +#$(OBJS_ASYNAll) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) -h acc_model=auto_async_all + +OBJS_CONCURRENT=spll_multigrid.o spll_turb_ver_thermo_flux.o +#spll_resolved_cloud.o +$(OBJS_CONCURRENT) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) -h concurrent -rimo + +endif +ifeq "$(OPTLEVEL)" "OPENACCNOBITREP" +#MNH_BITREP_OMP=YES +CPPFLAGS += -DMNH_OPENACC -DMNH_GPUDIRECT +OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) +OPT0 = $(OPT_BASE) $(OPT_PERF0) $(OPT_OPENACC) +OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) +#CXXFLAGS = -fopenmp +#OBJS_REPROD= spll_mode_sum_ll.o +#$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) -Mvect=nosimd -Minfo=all -g +#OBJS_O1_OPENACC= spll_ice4_tendencies.o spll_turb_ver_thermo_flux.o +#OBJS_O1_OPENACC= spll_rain_ice_red.o +#$(OBJS_O1_OPENACC) : OPT = $(OPT_BASE) $(OPT_PERF0) $(OPT_OPENACC) + +#OBJS_ASYNAll=spll_turb_ver_thermo_flux.o spll_turb_ver_thermo_corr.o spll_turb_ver_dyn_flux.o \ +# spll_turb_hor_uv.o spll_turb_hor_uw.o spll_turb_hor_vw.o spll_mode_turb.o\ +# spll_turb_hor_dyn_corr.o spll_turb_hor_thermo_flux.o spll_turb_hor_sv_corr.o +# spll_mode_turb.o spll_p_abs.o spll_advection_metsv.o \ +# spll_advection_uvw.o spll_resolved_cloud.o +#$(OBJS_ASYNAll) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) -h acc_model=auto_async_all + +OBJS_CONCURRENT=spll_multigrid.o spll_turb_ver_thermo_flux.o +# spll_resolved_cloud.o +$(OBJS_CONCURRENT) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) -h concurrent -rdimo + +endif +# + +ifeq "$(OPTLEVEL)" "OPENACCDEFONLY" +MNH_BITREP_OMP=YES +CPPFLAGS += -DMNH_OPENACC -D_FAKEOPENACC +OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_NOOPENACC) +OPT0 = $(OPT_BASE) $(OPT_PERF0) $(OPT_NOOPENACC) +OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) $(OPT_NOOPENACC) +#CXXFLAGS = -Kieee -Mnofma $(OPT_NOOPENACC) +#OBJS_REPROD= spll_mode_sum_ll.o +#$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_NOOPENACC) -Mvect=nosimd -Minfo=all -g endif +# +ifeq "$(OPTLEVEL)" "NOOPENACC" +OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_NOOPENACC) +OPT0 = $(OPT_BASE) $(OPT_PERF0) $(OPT_NOOPENACC) +OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) $(OPT_NOOPENACC) +#CXXFLAGS = -Kieee -Mnofma $(OPT_NOOPENACC) +#OBJS_REPROD= spll_mode_sum_ll.o +#$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_NOOPENACC) -Mvect=nosimd -Minfo=all -g +endif +# ifeq "$(OPTLEVEL)" "O2NOVEC" OPT = $(OPT_BASE) $(OPT_PERF2) -O vector0 OPT0 = $(OPT_BASE) $(OPT_PERF0) -O vector0 OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) -O vector0 endif +ifeq "$(OPTLEVEL)" "O2" +OPT = $(OPT_BASE) $(OPT_PERF2) +OPT0 = $(OPT_BASE) $(OPT_PERF0) +OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) +endif ifeq "$(OPTLEVEL)" "O1" OPT = $(OPT_BASE) $(OPT_PERF1) OPT0 = $(OPT_BASE) $(OPT_PERF0) @@ -60,11 +147,18 @@ OPT_NOCB = $(OPT_BASE) $(OPT_PERF1) endif # # -FC = ftn -em -ef -FCFLAGS = -em -ef -CC=gcc +FC = ftn +FCFLAGS = -emf +CC=cc +CXX=CC export FC CC FCFLAGS +ifeq "$(VER_MPI)" "MPIAUTO" +F90 = mpif90 +#CPPFLAGS_SURCOUCHE = -DUSE_MPI +else F90 = ftn +CPPFLAGS_SURCOUCHE = -DUSE_MPI +endif F90FLAGS = $(OPT) F77 = $(F90) F77FLAGS = $(OPT) @@ -78,19 +172,56 @@ LDFLAGS = -Wl,-warn-once $(PAR) $(OPT_BASE) # # preprocessing flags # -CPP = cpp -P -traditional -Wcomment +#CPP = cpp -P -Wcomment -traditional -D_OPENACC=201306 +CPP = mnh_expand -D_OPENACC=201306 # -CPPFLAGS_SURFEX = -CPPFLAGS_SURCOUCHE = -DDEV_NULL -CPPFLAGS_RAD = +CPPFLAGS_C = -DLITTLE_endian +CPPFLAGS_SURFEX = +CPPFLAGS_SURCOUCHE += -DDEV_NULL -DMNH_COMPILER_CCE +CPPFLAGS_RAD = CPPFLAGS_NEWLFI = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT} -CPPFLAGS_MNH = -DMNH -DSFX_MNH +CPPFLAGS_MNH = -DMNH=MNH -DSFX_MNH -DMNH_NO_MPI_LOGICAL48 -DMNH_COMPILER_CCE +ifeq ($(shell test $(CFV) -ge 1402 ; echo $$?),0) +CPPFLAGS_MNH += -DMNH_COMPILER_CCE_1403 +endif +CPPFLAGS_MNH += -DMNH_EXPAND -DMNH_EXPAND_LOOP -DMNH_EXPAND_OPENACC +CPPFLAGS_MNH += -imacros MNH_OPENACC_NV_CR.CPP ifdef VER_GA CPPFLAGS_SURCOUCHE += -DMNH_GA INC += -I${GA_ROOT}/include LIBS += -L${GA_ROOT}/lib -larmci -lga -lgfortran endif # +# BITREP flags +# +#if MNH_BITREP exists => compile with the BITREP library +MNH_BITREP = NO +ifeq "$(MNH_BITREP)" "YES" +CPPFLAGS_MNH += -DMNH_BITREP +endif +# +# Test of bitrep with OMP compilation +# +ifeq "$(MNH_BITREP_OMP)" "YES" +CXXFLAGS = -fopenmp +CPPFLAGS_MNH += -DMNH_BITREP_OMP +DIR_MASTER += LIB/BITREP +VPATH += LIB/BITREP +OBJS_LISTE_MASTER += br_transcendentals.o +LIBS += -lstdc++ +%.o : %.cpp + $(CXX) $(INC) $(CXXFLAGS) $(CPPFLAGS) -c $< -o $(OBJDIR)/$(*F).o +# +# Add gu.c , for Zero Floating Point Graduate UnderFlow on CPU & GPU +# +DIR_MASTER += ARCH_SRC/cray_gu +VPATH += ARCH_SRC/cray_gu +OBJS_LISTE_MASTER += gu.o +gu.o : CC=gcc +gu.o : INC= +gu.o : CPPFLAGS_C= +endif +# # LIBTOOLS flags # #if MNH_TOOLS exists => compile the tools @@ -117,6 +248,17 @@ MNH_COMPRESS=yes # MNH_GRIBAPI=no # +NETCDF_SUPPFLAGS='-emf' +ECCODES_FFLAGS='-emf -hsystem_alloc' +ECCODES_CFLAGS=' -gdwarf-4 ' +EC_CONF='-DIEEE_LE=1' +CDF_CONF= CPP=cpp +HDF_CONF= CPP=cpp +# +# Bypat nvidia70 problème +ifeq "$(CRAY_ACCEL_TARGET)" "nvidia70" +CPPFLAGS_MNH += -DTARGET_NV70 +endif ########################################################## # # # Source of MESONH PACKAGE Distribution # @@ -139,9 +281,12 @@ include Makefile.MESONH.mk ########################################################## # Juan & Maud 20/03/2008 --> Ifort 10.1.008 Bug O2 optimization #OPT_PERF1 = -O1 -OBJS_O1= spll_schu.o spll_ps2str.o spll_p_abs.o spll_ini_one_way_n.o spll_urban_solar_abs.o +OBJS_O1= spll_schu.o spll_ps2str.o spll_ini_one_way_n.o spll_urban_solar_abs.o spll_mode_ekf.o mode_ekf.mod +#spll_p_abs.o $(OBJS_O1) : OPT = $(OPT_BASE) $(OPT_PERF1) -OBJS_O0= spll_mode_gridproj.o spll_ini_dynamics.o spll_sunpos_n.o spll_ground_param_n.o +OBJS_O0= mode_gridproj.mod spll_mode_gridproj.o spll_ini_dynamics.o spll_sunpos_n.o spll_average_diag.o spll_write_lfifm1_for_diag.o \ + spll_write_aircraft_balloon.o spll_mode_write_les_n.o mode_write_les_n.mod modd_mnh_surfex_n.mod +# spll_ground_param_n.o $(OBJS_O0) : OPT = $(OPT_BASE) $(OPT_PERF0) @@ -151,10 +296,41 @@ $(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8) endif ifeq "$(MNH_INT)" "8" -OBJS_I4=spll_modd_netcdf.o +OBJS_I4=spll_modd_netcdf.o modd_netcdf.mod $(OBJS_I4) : OPT = $(OPT_BASE_I4) endif -#mpi.mod : -# ln -sf /opt/cray/mpt/5.6.3/gni/mpich2-cray/74/include/MPI.mod $(OBJDIR_MASTER)/mpi.mod +OBJS_LST = spll_condensation.o spll_turb_ver_thermo_flux.o spll_rotate_wind.o spll_mode_mnh_zwork.o mode_mnh_zwork.mod spll_contrav_device.o \ + spll_advection_metsv.o \ + spll_mym_device.o spll_myf_device.o spll_dyf_device.o \ + spll_gx_m_u_device.o spll_gy_m_v_device.o \ + spll_gravity.o spll_gravity_impl.o \ + spll_advection_uvw.o spll_resolved_cloud.o spll_mode_tools.o mode_tools.mod \ + spll_mode_rain_ice_sedimentation_split.o mode_rain_ice_sedimentation_split.mod spll_ice_adjust.o \ + spll_countjv1d_device.o spll_countjv2d_device.o spll_countjv3d_device.o \ + spll_mode_turb.o mode_turb.mod spll_phys_param_n.o spll_model_n.o spll_tridiag_tke.o \ + spll_turb_ver_thermo_corr.o spll_tke_eps_sources.o spll_turb_ver_dyn_flux.o \ + spll_turb_hor_uv.o spll_turb_hor_uw.o spll_turb_hor_vw.o \ + spll_turb_hor_dyn_corr.o spll_turb_hor_thermo_flux.o \ + spll_pressurez.o spll_p_abs.o spll_zsolver.o spll_zsolver_inv.o spll_dotprod.o \ + spll_communication.o spll_discretisation.o spll_multigrid.o spll_datatypes.o \ + spll_get_halo_start_d.o spll_get_halo_stop_d.o spll_mass_leak.o \ + spll_ppm_01_x.o spll_ppm_01_y.o spll_ppm_01_z.o \ + spll_ppm_s0_x.o spll_ppm_s0_y.o spll_ppm_s0_z.o \ + spll_mode_rain_ice_slow.o mode_rain_ice_slow.mod spll_mode_rain_ice_fast_rs.o mode_rain_ice_fast_rs.mod \ + spll_prandtl.o spll_mode_rain_ice_fast_rg.o mode_rain_ice_fast_rg.mod spll_mode_rain_ice_fast_ri.o mode_rain_ice_fast_ri.mod \ + spll_mode_rain_ice.o mode_rain_ice.mod spll_mode_rain_ice_warm.o mode_rain_ice_warm.mod \ + spll_ground_param_n.o spll_advec_ppm_algo.o \ + spll_turb_hor_sv_corr.o spll_rain_ice.o spll_mode_rain_ice_nucleation.o mode_rain_ice_nucleation.mod \ + spll_mode_prandtl.o mode_prandtl.mod spll_turb_ver.o spll_mode_repro_sum.o mode_repro_sum.mod \ + spll_tridiag_thermo.o spll_tridiag_wind.o spll_tridiag_w.o \ + spll_tridiag_tke.o spll_advec_weno_k_2_my.o spll_advec_weno_k_2_mx.o \ + spll_advec_weno_k_2_vy.o spll_advec_weno_k_2_ux.o spll_mxm_device.o \ + spll_mym_device.o spll_mzm_device.o + +#$(OBJS_LST) : OPT += -rdimo + +OPT += -rimo + +SPLL = spll_lst diff --git a/src/configure b/src/configure index f87e48137..8e7b855c4 100755 --- a/src/configure +++ b/src/configure @@ -9,7 +9,7 @@ if [ "x$XYZ" = "x" ] then # export VERSION_MASTER=${VERSION_MASTER:-MNH-V5-6} -export VERSION_BUG=${VERSION_BUG:-0} +export VERSION_BUG=${VERSION_BUG:-00} export VERSION_XYZ=${VERSION_XYZ:-${VERSION_MASTER}-${VERSION_BUG}${VER_OASIS:+-${VER_OASIS}}} export VERSION_DATE=${VERSION_DATE:-"31/01/2023"} export VERSION_LIBAEC=${VERSION_LIBAEC:-"v1.0.6"} @@ -32,6 +32,13 @@ export VERSION_NCL=${VERSION_NCL:-"ncl-6.4.0"} export VERSION_ECRAD=${VERSION_ECRAD:-"1.4.0"} export VER_ECRAD=${VERSION_ECRAD//./} +# +# Install MNH_EXPAND if VER_MNHEXP=MNHEXPAUTO +# +export VER_MNHEXP=${VER_MNHEXP:-"MNHEXPAUTO"} +export VERSION_MNHEXP=${VERSION_MNHEXP:-"MNH_EXPAND_1-2-2"} +export VERSION_FILEPP=${VERSION_FILEPP:-"1.8.0"} + export LEN_HREC=${LEN_HREC:-16} # @@ -45,6 +52,83 @@ cd ${LOCAL}/conf TARG=$(uname -s -n) # case "$TARG" in +'Linux login'*) + export ARCH=${ARCH:-LXcray} + export VER_MPI=${VER_MPI:-MPICRAY} + export OPTLEVEL=${OPTLEVEL:-OPENACC} + export MVWORK=${MVWORK:-NO} + export VER_CDF=${VER_CDF:-CDFAUTO} +if [ "${VER_MPI}" == "MPICRAY" ] +then +export MNHENV=${MNHENV:-" +module purge +module load craype-x86-trento +module load craype-network-ofi +module load PrgEnv-cray/8.3.3 +module load cce/15.0.0 +module load craype/2.7.19 +module load cray-mpich/8.1.21 +module load libfabric/1.15.2.0 +module load craype-accel-amd-gfx90a +module load rocm/5.2.3 + +export CCE_ALIAS_NONE=:on +export CCE_NO_PTR_TO_PTR_ALIAS=:on + +module list +"} +else +export MNHENV=${MNHENV:-" +module purge +module use /lus/home/NAT/gda2203/SHARED/escobar/my_modules >& /dev/null +module load craype-x86-trento +module load PrgEnv-cray/8.3.3 +module load craype/2.7.19 +module load craype-accel-amd-gfx90a +export version=5.2.3 +module load rocm/${version} +module rm craype-network-ofi cray-mpich cray-libsci cray-dsmml +module load ompij/4.1.2-cray-15.0.0-ucx_rocm + +export CCE_ALIAS_NONE=:on +export CCE_NO_PTR_TO_PTR_ALIAS=:on + +module list +"} +fi + + ;; + +'Linux login2'*) + export ARCH=${ARCH:-LXcray} + export VER_MPI=${VER_MPI:-MPICRAY} + #export VER_MPI=${VER_MPI:-MPIAUTO} + #export OPTLEVEL=${OPTLEVEL:-MANAGED02} + export OPTLEVEL=${OPTLEVEL:-OPENACC} + # export OPTLEVEL=${OPTLEVEL:-OPENACCDEFONLY} + export MVWORK=${MVWORK:-NO} + export VER_CDF=${VER_CDF:-CDFAUTO} + #export VER_USER=${VER_USER:-ZSOLVER} + export MNHENV=${MNHENV:-" +module purge +module load craype-x86-trento +module load craype-network-ofi +module load PrgEnv-cray/8.3.3 + +module load libfabric/1.15.0.0 +module load xpmem/2.4.4-2.3_2.12__gff0e1d9.shasta +module load cray-pmi/6.1.2 +module load craype-accel-amd-gfx90a +module load rocm + + +ulimit -s unlimited + + +#export CRAY_ACC_DEBUG=2 +"} + ;; + 'Linux jean-zay'*|'Linux idrsrv'*) export ARCH=${ARCH:-LXifort} export VER_MPI=${VER_MPI:-MPIINTEL} @@ -511,7 +595,22 @@ if [ "x${NEED_TOOLS}" == "xYES" ] ; then ;; esac fi - +# +# Install MNH_EXPAND if VER_MNHEXP=MNHEXPAUTO +# +if [ "x${VER_MNHEXP}" == "xMNHEXPAUTO" ] ;then + ( + cd $LOCAL/pub/FILEPP + if [ ! -d MNH_Expand_Array-${VERSION_MNHEXP} ] ; then + tar xvf ${VERSION_MNHEXP}.tar.gz + tar xvf filepp-${VERSION_FILEPP}.tar.gz + cd filepp-${VERSION_FILEPP} + FILEPP=$LOCAL/pub/FILEPP + ./configure --prefix=${FILEPP}/FILEPP-${VERSION_FILEPP} + make install + fi + ) +fi # # Generate profile_mesonh # -- GitLab