From eadb2c7371f4eaeace2463771ba7584530480590 Mon Sep 17 00:00:00 2001
From: ESCOBAR Juan <escj@nuwa>
Date: Mon, 14 Sep 2020 15:14:47 +0200
Subject: [PATCH] Juan 14/09/2020: Rules.LXnvhpc2005.mk , add support of arch
 CPU type = TP & MANAGEDO2/OPENACCO2 optlevel <=> without "-g"

---
 src/Rules.LXnvhpc2005.mk | 63 +++++++++++++++++++++++++++++-----------
 1 file changed, 46 insertions(+), 17 deletions(-)

diff --git a/src/Rules.LXnvhpc2005.mk b/src/Rules.LXnvhpc2005.mk
index 9aafd7a10..8f9f2ab8f 100644
--- a/src/Rules.LXnvhpc2005.mk
+++ b/src/Rules.LXnvhpc2005.mk
@@ -9,13 +9,18 @@
 ##########################################################
 #OBJDIR_PATH=${WORKDIR}
 #
+# Processor type
+#TP= -tp=sandybridge
+#TP= -tp=px
+TP= -tp=p7-64
+#
 #Version of CUDA
 #(8.0 at least if compute capability >= 6.0)
-CUDALEVEL=cuda10.2
+CUDALEVEL=cuda10.1
 #
 #Compute capability of GPU
 #
-OPT_CPTCAP=cc35,cc50
+OPT_CPTCAP=cc35,cc50,cc70
 #Aeropc45: cc50
 #Nuwa: cc35
 #Ouessant Firestone K80: cc35
@@ -30,7 +35,7 @@ OPT_INFO = -Minfo=accel
 #
 #PW: if -Ktrap=fp: nvprof/pgprof do not work   OPT_BASE   =  -Ktrap=fp ...
 #PW: -g: big impact on performance
-OPT_BASE   =  -Mbackslash -Mextend -Kieee -nofma
+OPT_BASE   =  $(TP) -Mbackslash -Mextend -Kieee -nofma  -Mallocatable=95
 #
 OPT_PERF0  =  -O0
 OPT_PERF1  =  -O1
@@ -39,7 +44,7 @@ OPT_PERF2  =  -O2
 OPT_MANAGED    = -Mframe -Mnostack_arrays -Mallocatable=95 -acc=host,gpu -gpu=nofma,$(OPT_CPTCAP),$(CUDALEVEL),managed $(OPT_INFO) $(OPT_PROF)
 OPT_MULTICORE  = -acc=multicore $(OPT_INFO) $(OPT_PROF)
 OPT_NOOPENACC  = -acc=host $(OPT_INFO) $(OPT_PROF)
-OPT_OPENACC    = -Mnostack_arrays -Mallocatable=95 -acc=host,gpu -gpu=nofma,$(OPT_CPTCAP),$(CUDALEVEL) $(OPT_INFO) $(OPT_PROF)
+OPT_OPENACC    = -Mnostack_arrays -Mnostack_arrays -Mallocatable=95 -acc=host,gpu -gpu=nofma,$(OPT_CPTCAP),$(CUDALEVEL) $(OPT_INFO) $(OPT_PROF)
 #
 OPT_CHECK  =  -C #-Mchkfpstk -Mchkptr
 OPT_I8     =  -i8
@@ -78,8 +83,6 @@ ifeq "$(OPTLEVEL)" "DEBUG"
 OPT       = -g $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
 OPT0      = -g $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
 OPT_NOCB  = -g $(OPT_BASE) $(OPT_PERF0)
-OBJS_DWARF3 = spll_model_n.o
-$(OBJS_DWARF3) : OPT = -g -Mdwarf2 $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
 endif
 #
 ifeq "$(OPTLEVEL)" "MANAGED"
@@ -92,6 +95,16 @@ OBJS_REPROD= spll_mode_sum_ll.o
 $(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_MANAGED) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g
 endif
 #
+ifeq "$(OPTLEVEL)" "MANAGEDO2"
+CPPFLAGS    += -DMNH_OPENACC
+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 
+endif
+#
 ifeq "$(OPTLEVEL)" "MULTICORE"
 CPPFLAGS    += -DMNH_OPENACC
 OPT       = $(OPT_BASE) $(OPT_MULTICORE) 
@@ -112,12 +125,12 @@ $(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) -Mvect=nosimd -Mi
 endif
 ifeq "$(OPTLEVEL)" "OPENACCO2"
 CPPFLAGS    += -DMNH_OPENACC
-OPT       = -g $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2)
-OPT0      = -g $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0)
-OPT_NOCB  = -g $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) 
-CXXFLAGS = -g -acc -Kieee -Mnofma $(OPT_OPENACC)
+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 -g
+$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all 
 endif
 #
 ifeq "$(OPTLEVEL)" "OPENACCDEFONLY"
@@ -125,9 +138,9 @@ CPPFLAGS    += -DMNH_OPENACC -D_FAKEOPENACC
 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)
+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
+$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all 
 endif
 #
 ifeq "$(OPTLEVEL)" "NOOPENACC"
@@ -141,6 +154,8 @@ $(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2) -Mvect=nosimd -
 endif
 #
 CC = pgcc
+CXXFLAGS += $(TP)
+CFLAGS   += $(TP)
 FC = pgf90
 ifeq "$(VER_MPI)" "MPIAUTO"
 F90 = mpif90
@@ -176,7 +191,14 @@ CPPFLAGS_MNH      += -Uvector -Upixel
 TARGET_GRIBEX=linux
 CNAME_GRIBEX=_pgf77
 GRIBAPI_CONF="CPP=cpp"
+#
+# Netcdf/HDF5 flags
+#
+#HDF_CONF= CXXFLAGS=$(TP)
+HDF_OPT ?= $(TP)
+NETCDF_OPT ?= $(TP)
 CDF_CONF="CPP=cpp"
+HDF_CONF="CPP=cpp"
 #
 # BITREP flags
 #
@@ -220,11 +242,14 @@ include Makefile.MESONH.mk
 #         etc ...                                        #
 #                                                        #
 ##########################################################
-OBJS_O1= spll_modd_isba_n.o spll_mode_construct_ll.o \
+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 \
          spll_convect_updraft.o spll_convect_updraft_shal.o \
-         spll_mode_dustopt.o spll_mode_saltopt.o
+         spll_mode_dustopt.o spll_mode_saltopt.o \
+         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
 #spll_pack_isba_patch_n.o 
 #spll_phys_param_n.o
 $(OBJS_O1) : OPT = $(OPT_BASE) $(OPT_PERF1)
@@ -232,9 +257,13 @@ $(OBJS_O1) : OPT = $(OPT_BASE) $(OPT_PERF1)
 OBJS_O0= spll_mode_mppdb.o \
          spll_fft55.o spll_fft.o spll_flat_invz.o \
          spll_mode_repro_sum.o \
-# spll_fast_terms.o 
+         spll_modd_les_n.o
+
+#         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 = $(OPT_BASE) $(OPT_PERF0)
+$(OBJS_O0) : OPT = -g $(OPT_BASE) $(OPT_PERF0)
 
 OBJS_O2= spll_mode_device.o
 $(OBJS_O2) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2)
-- 
GitLab