From ca0b1f1dd04817d2af34e2ecd03f213f07d00e7b Mon Sep 17 00:00:00 2001 From: Juan ESCOBAR <juan.escobar@aero.obs-mip.fr> Date: Fri, 16 Dec 2022 14:09:29 +0100 Subject: [PATCH] Juan 16/12/2022:Makefile & CO:New spll_lst/spll_new command for 1 time compilation in master & user mode --- bin/spll_lst | 9 +- bin/spll_new | 174 +++++++++++++++++++++++++++++++++++++++ src/Makefile | 16 ++-- src/Rules.LXcray.mk | 45 +++++----- src/Rules.LXnvhpc2202.mk | 80 +++++++++++------- 5 files changed, 263 insertions(+), 61 deletions(-) create mode 100755 bin/spll_new diff --git a/bin/spll_lst b/bin/spll_lst index 372f3cac0..5d8e69438 100755 --- a/bin/spll_lst +++ b/bin/spll_lst @@ -140,8 +140,13 @@ fi dep=`egrep -i "^[[:space:]]*use " $spllfile | sed -e 's/,/ /g' | awk '{ print '${TOCASE}'($2)".mod"}' | sort -u ` mod=`egrep -i "^[[:space:]]*module " $spllfile | sed -e 's/,/ /g' | awk '{ print '${TOCASE}'($2)".mod"}' | sort -u | grep -iv procedure ` -echo $mod : $spllbase.o >> $DIRNAME/$BASENAME2.D -echo $spllbase.o : $spllfile $dep >> $DIRNAME/$BASENAME2.D +if [ "x$mod" != "x" ] +then +echo $spllbase.o : >> $DIRNAME/$BASENAME2.D +echo $mod : $spllfile $dep >> $DIRNAME/$BASENAME2.D +else +echo $spllbase.o : $spllfile $dep >> $DIRNAME/$BASENAME2.D +fi if [ "$SUF" = "f90" ] then diff --git a/bin/spll_new b/bin/spll_new new file mode 100755 index 000000000..1db545d54 --- /dev/null +++ b/bin/spll_new @@ -0,0 +1,174 @@ +#!/bin/bash +#MNH_LIC Copyright 1994-2019 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. +#set -x +if [ $# -ne 2 ] +then +echo ERROR USAGE :: spll NSOURCE file +exit 1 +fi +NSOURCE=$1 +file=$2 +DIRNAME=`dirname $file` +BASENAME=`basename $file` +SUF=`echo $BASENAME | awk -F'.' '{print$2}'` +BASENAME2=`basename $BASENAME .$SUF` +LOCAL=$PWD +TOCASE=${TOCASE-"tolower"} +# +export PERL5LIB=$SRC_MESONH/bin +export FILE_WITHOUT_INTERFACE_NEDEED="\ +rttov.*.F90|rttvi.F90|tstrad.*.F90|\ +ch_f77.fx90|nband_model.fx90|BASIC.f90|mode_tmat.f90|\ +ini_cmfshall.f90|mode_double_double.f90|mode_fgau.f90|\ +extern_usersurc_ll.f90|\ +extern_userio.f90|fmreadwrit.f90|fm_read_ll.f90|poub.f90|\ +mode_glt.*.F90|\ +rrtm_.*.F90|srtm_.*.F90|\ +libs4py.f90|\ +ec_meminfo.F90" +# + +if [ "$SUF" = "f" ] +then + +echo "!depfile:$BASENAME2.D" > $DIRNAME/spll_$BASENAME +cat $file >> $DIRNAME/spll_$BASENAME +echo "#" $file > $DIRNAME/$BASENAME2.D + +else + +TMP=/tmp/split.${USER}.$$ +mkdir $TMP +trap "[ -d $TMP ] && rm -rf $TMP" 0 + +export LOC_INTFBDIR=$TMP +export INTFBDIR=$TMP + +#cp $file $TMP/fichier_a_split.f90 +cp $file $TMP/$BASENAME +echo DIRNAME=$DIRNAME BASENAME=$BASENAME + +# +# Split des sources +# +( +cd $TMP +spl ${BASENAME} > liste_file +) +# +#generation de l'interface +# +( +cd $TMP +if [ "`ls modi_* 2>/dev/null`" = "" ] +then +if [ "`echo $BASENAME | egrep -i $FILE_WITHOUT_INTERFACE_NEDEED `" = "" ] +then + for sfile in `cat liste_file` + do + if [ "`egrep -i '^ *module|^ *program' $sfile`" = "" ] + then + if [ "$SUF" = "f90" ] + then + if [ "${CHECK_MODI}" != "" ] + then + #echo "HELLO JUAN OK :: $sfile " + BASENAME_MODI=$( basename $sfile .$SUF ) + echo "!auto_modi_in_contains" > $sfile.tmp + echo "module modi_${BASENAME_MODI}" >> $sfile.tmp + echo " contains " >> $sfile.tmp + cat $sfile >> $sfile.tmp + echo "end module modi_${BASENAME_MODI}" >> $sfile.tmp + mv $sfile.tmp $sfile + else + make_intfbl_f90.pl $sfile + fi + elif [ "$SUF" = "fx90" ] + then + make_intfbl_f77.pl $sfile + fi + fi + done +fi +fi +ls -1 $TMP > liste_file +egrep -v "liste_file" liste_file > liste_file2 +) +# +# génération des dependances +# +( +cd $TMP +echo "#=========== $BASENAME2.$SUF dependence ==========================" > $DIRNAME/$BASENAME2.D + +for sfile in `cat liste_file2` +do +# +# preparation of splitted file +# +base=`echo $sfile | awk -F'.' '{print$1}'` +spllbase="spll_$base" +spllfile="$spllbase.$SUF" +echo "#---------------------- splitted $spllfile dependence -----------" >> $DIRNAME/$BASENAME2.D +# +echo "!depfile:$BASENAME2.D" > $spllfile +# + if [ "`grep -l '^[^\!]*\$n' $sfile`" != "" ] + then +# clonage of "$n" file + let iloop=0 + while [ $iloop -lt $NSOURCE ] + do + let iloop=iloop+1 + sed -e 's/$n/'$iloop'/g' $sfile >> $spllfile + done + else + cat $sfile >> $spllfile + fi +# +# if splitted file differente of old one, update ... +# + +if [ "`diff $spllfile $DIRNAME/$spllfile 2>&1 `" != "" ] +then + cp $spllfile $DIRNAME/$spllfile + touch $DIRNAME/$BASENAME2.D +fi +dep=`egrep -i "^[[:space:]]*use " $spllfile | sed -e 's/,/ /g' | awk '{ print '${TOCASE}'($2)".mod"}' | sort -u ` +mod=`egrep -i "^[[:space:]]*module " $spllfile | sed -e 's/,/ /g' | awk '{ print '${TOCASE}'($2)".mod"}' | sort -u | grep -iv procedure ` + +if [ "x$mod" != "x" ] +then +echo $spllbase.o : >> $DIRNAME/$BASENAME2.D +echo $mod : $spllfile $dep >> $DIRNAME/$BASENAME2.D +else +echo $spllbase.o : $spllfile $dep >> $DIRNAME/$BASENAME2.D +fi + +if [ "$SUF" = "f90" ] +then +echo " "' $(F90) -I$(OBJDIR)/MOD $(INC) -c $(F90FLAGS) $<' >> $DIRNAME/$BASENAME2.D +else +echo " "' cp $< $(OBJDIR)/$(*F).f ' >> $DIRNAME/$BASENAME2.D +echo " "' $(FX90) -I$(OBJDIR)/MOD $(INC) -c $(FX90FLAGS) $(OBJDIR)/$(*F).f ' >> $DIRNAME/$BASENAME2.D +echo " "' rm $(OBJDIR)/$(*F).f ' >> $DIRNAME/$BASENAME2.D +fi +echo " -mv $spllbase.o"' $(OBJDIR)/. || '"echo OK $spllbase.o " >> $DIRNAME/$BASENAME2.D +for filemod in $mod +do +echo " -mv $filemod "' $(OBJDIR)/MOD/. || '"echo OK $filemod " >> $DIRNAME/$BASENAME2.D +done + +unset dep mod + +done +touch $DIRNAME/$BASENAME2.D + +) +rm -fr $TMP + +fi + diff --git a/src/Makefile b/src/Makefile index 7d41aea42..ef8e3f155 100644 --- a/src/Makefile +++ b/src/Makefile @@ -549,20 +549,20 @@ SPLL ?= spll # 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) -c $< -o $(OBJDIR)/$(*F).o diff --git a/src/Rules.LXcray.mk b/src/Rules.LXcray.mk index dca9106d0..7e2e711f0 100644 --- a/src/Rules.LXcray.mk +++ b/src/Rules.LXcray.mk @@ -78,8 +78,9 @@ OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) # 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 +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)" "OPENACCNOBITREP" @@ -102,8 +103,9 @@ OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) $(OPT_OPENACC) # 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 +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 # @@ -279,11 +281,11 @@ 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_ini_one_way_n.o spll_urban_solar_abs.o spll_mode_ekf.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_average_diag.o spll_write_lfifm1_for_diag.o \ - spll_write_aircraft_balloon.o spll_mode_write_les_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) @@ -294,18 +296,19 @@ $(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 -OBJS_LST = spll_condensation.o spll_turb_ver_thermo_flux.o spll_rotate_wind.o spll_mode_mnh_zwork.o spll_contrav_device.o \ +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 spll_mode_rain_ice_sedimentation_split.o spll_ice_adjust.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 spll_phys_param_n.o spll_model_n.o spll_tridiag_tke.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 \ @@ -314,16 +317,20 @@ OBJS_LST = spll_condensation.o spll_turb_ver_thermo_flux.o spll_rotate_wind.o sp 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 spll_mode_rain_ice_fast_rs.o \ - spll_prandtl.o spll_mode_rain_ice_fast_rg.o spll_mode_rain_ice_fast_ri.o \ - spll_mode_rain_ice.o spll_mode_rain_ice_warm.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 \ - spll_mode_prandtl.o spll_turb_ver.o spll_mode_repro_sum.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_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 - +#$(OBJS_LST) : OPT += -rdimo + +OPT += -rimo + SPLL = spll_lst diff --git a/src/Rules.LXnvhpc2202.mk b/src/Rules.LXnvhpc2202.mk index 698193af6..eb9ad893b 100644 --- a/src/Rules.LXnvhpc2202.mk +++ b/src/Rules.LXnvhpc2202.mk @@ -22,7 +22,7 @@ TP= -tp=px # #Version of CUDA #(8.0 at least if compute capability >= 6.0) -CUDALEVEL=cuda11.4 +CUDALEVEL=cuda11.0 # #Compute capability of GPU # @@ -87,6 +87,15 @@ OPT = $(OPT_BASE) $(OPT_PERF2) OPT0 = $(OPT_BASE) $(OPT_PERF0) OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) # +# +# List of Files with compilation problem in O2 +# +OBJS_REPROD= spll_mode_sum_ll.o mode_sum_ll.mod + +OBJS_O1_OPENACC= spll_ice4_tendencies.o spll_turb_ver_thermo_flux.o spll_mode_device.o mode_device.mod spll_mppdb_check3d_real_mg.o \ + spll_mppdb_check0d_real_mg.o spll_mode_turb.o mode_turb.mod spll_modd_les_n.o modd_les_n.mod +# +# ifeq "$(OPTLEVEL)" "DEBUG" OPT = -g $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK) OPT0 = -g $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK) @@ -99,7 +108,6 @@ OPT = -g $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF2) OPT0 = -g $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF0) OPT_NOCB = -g $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF2) CXXFLAGS = -g -acc -Kieee -Mnofma $(OPT_MANAGED) -OBJS_REPROD= spll_mode_sum_ll.o $(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g endif # @@ -109,12 +117,10 @@ OPT = $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF2) OPT0 = $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF0) OPT_NOCB = $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF2) CXXFLAGS = -acc -Kieee -Mnofma $(OPT_MANAGED) -gpu=nofma -OBJS_REPROD= spll_mode_sum_ll.o $(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -OBJS_OPENACC = spll_modd_halo_d.o +OBJS_OPENACC = spll_modd_halo_d.o modd_halo_d.mod $(OBJS_OPENACC) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) -OBJS_O1_MANAGED= spll_ice4_tendencies.o spll_turb_ver_thermo_flux.o spll_turb_hor_dyn_corr.o spll_mode_turb.o -$(OBJS_O1_MANAGED) : OPT = $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF1) +$(OBJS_O1_OPENACC) : OPT = $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF1) endif # ifeq "$(OPTLEVEL)" "MULTICORE" @@ -124,16 +130,16 @@ OPT0 = $(OPT_BASE) $(OPT_MULTICORE) $(OPT_PERF0) OPT_NOCB = $(OPT_BASE) $(OPT_MULTICORE) CXXFLAGS = -acc -Kieee -Mnofma $(OPT_MULTICORE) endif -# + ifeq "$(OPTLEVEL)" "OPENACC" CPPFLAGS += -DMNH_OPENACC -DMNH_GPUDIRECT # -imacros MNH_OPENACC_SHUMAN_MACRO.CPP -OPT = -g $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0) -OPT0 = -g $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0) -OPT_NOCB = -g $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0) -CXXFLAGS = -g -acc -Kieee -Mnofma $(OPT_OPENACC) -OBJS_REPROD= spll_mode_sum_ll.o -$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g +OPT = -gopt $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) +OPT0 = -gopt $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0) +OPT_NOCB = -gopt $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) +CXXFLAGS = -gopt -acc -Kieee -Mnofma $(OPT_OPENACC) +$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -gopt +$(OBJS_O1_OPENACC) : OPT = -gopt $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF1) endif ifeq "$(OPTLEVEL)" "OPENACCO2" CPPFLAGS += -DMNH_OPENACC -DMNH_GPUDIRECT @@ -141,10 +147,17 @@ OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) OPT0 = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0) OPT_NOCB = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) CXXFLAGS = -acc -Kieee -Mnofma $(OPT_OPENACC) -OBJS_REPROD= spll_mode_sum_ll.o $(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -OBJS_O1_OPENACC= spll_ice4_tendencies.o spll_turb_ver_thermo_flux.o spll_mode_device.o spll_mppdb_check3d_real_mg.o \ - spll_mppdb_check0d_real_mg.o spll_mode_turb.o +$(OBJS_O1_OPENACC) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF1) +endif +ifeq "$(OPTLEVEL)" "OPENACCO2NOBITREP" +MNH_BITREP = NO +CPPFLAGS += -DMNH_OPENACC -DMNH_GPUDIRECT +OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) +OPT0 = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0) +OPT_NOCB = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) +CXXFLAGS = -acc -Kieee -Mnofma $(OPT_OPENACC) +$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all $(OBJS_O1_OPENACC) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF1) endif # @@ -154,7 +167,6 @@ OPT = -g $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF0) OPT0 = -g $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF0) OPT_NOCB = -g $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF0) CXXFLAGS = -Kieee -Mnofma $(OPT_NOOPENACC) -OBJS_REPROD= spll_mode_sum_ll.o $(OBJS_REPROD) : OPT = -g $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all endif # @@ -164,7 +176,6 @@ OPT = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2) OPT0 = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF0) OPT_NOCB = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2) CXXFLAGS = -Kieee -Mnofma $(OPT_NOOPENACC) -OBJS_REPROD= spll_mode_sum_ll.o $(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g endif # @@ -208,7 +219,7 @@ CPPFLAGS_MNH += -DMNH_EXPAND -DMNH_EXPAND_OPENACC # BITREP flags # #if MNH_BITREP exists => compile with the BITREP library -MNH_BITREP = YES +MNH_BITREP ?= YES ifeq "$(MNH_BITREP)" "YES" CPPFLAGS_MNH += -DMNH_BITREP endif @@ -263,11 +274,12 @@ include Makefile.MESONH.mk # etc ... # # # ########################################################## -OBJS_O1 += spll_modd_isba_n.o spll_mode_construct_ll.o \ - spll_init_surf_atm_n.o spll_mode_scatter_ll.o spll_convert_patch_teb.o \ - spll_define_mask_n.o spll_del1dfield_ll.o spll_mode_fm.o spll_mode_gather_ll.o \ +ifneq "$(OPTLEVEL)" "DEBUG" +OBJS_O1 += spll_modd_isba_n.o modd_isba_n.mod spll_mode_construct_ll.o mode_construct_ll.mod \ + spll_init_surf_atm_n.o spll_mode_scatter_ll.o mode_scatter_ll.mod spll_convert_patch_teb.o \ + spll_define_mask_n.o spll_del1dfield_ll.o spll_mode_fm.o mode_fm.mod spll_mode_gather_ll.o mode_gather_ll.mod \ spll_convect_updraft.o spll_convect_updraft_shal.o \ - spll_mode_dustopt.o spll_mode_saltopt.o \ + spll_mode_dustopt.o mode_dustopt.mod spll_mode_saltopt.o mode_saltopt.mod \ spll_aeroopt_get.o spll_write_lfifm1_for_diag_supp.o spll_write_lfifm1_for_diag.o spll_write_lfifm_n.o \ #spll_unpack_1d_2d_from2d.o @@ -275,22 +287,24 @@ OBJS_O1 += spll_modd_isba_n.o spll_mode_construct_ll.o \ #spll_phys_param_n.o $(OBJS_O1) : OPT = $(OPT_BASE) $(OPT_PERF1) -OBJS_O0= spll_mode_mppdb.o \ +OBJS_O0= spll_mode_mppdb.o mode_mppdb.mod \ spll_fft55.o spll_fft.o spll_flat_invz.o \ - spll_mode_repro_sum.o \ - spll_modd_les_n.o \ - spll_default_desfm_n.o -#default_desfmn: workaround a nvhpc 21.9 bug (run stall in default_desfmn) - + spll_mode_repro_sum.o mode_repro_sum.mod \ + spll_modd_les_n.o modd_les_n.mod \ + spll_default_desfm_n.o \ + spll_modd_pack_gr_field_n.o modd_pack_gr_field_n.mod +$(OBJS_O0) : OPT = -g $(OPT_BASE) $(OPT_PERF0) +#default_desfmn: workaround a nvhpc 21.9 bug (run stall in default_desfmn) # spll_fast_terms.o # spll_modd_ch_solver_n.o \ # spll_modd_dummy_gr_field_n.o spll_modd_dyn_n.o # spll_mode_sum_ll.o -$(OBJS_O0) : OPT = -g $(OPT_BASE) $(OPT_PERF0) -OBJS_O2= spll_mode_device.o + +OBJS_O2= spll_mode_device.o mode_device.mod $(OBJS_O2) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) +endif ifneq "$(findstring 8,$(LFI_INT))" "" OBJS_I8=spll_NEWLFI_ALL.o @@ -298,6 +312,8 @@ $(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 + +SPLL = spll_new -- GitLab