Skip to content
Snippets Groups Projects
Commit 5f56b45b authored by Wautelet Philippe's avatar Wautelet Philippe
Browse files

Philippe 12/10/2021: add Rules.LXnvhpc.mk rules file

parent 980a66cf
No related branches found
No related tags found
No related merge requests found
#MNH_LIC Copyright 1994-2021 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.
##########################################################
# #
# Compiler Options #
# #
##########################################################
#OBJDIR_PATH=${WORKDIR}
#
# Processor type
#TP= -tp=sandybridge, haswell, skylake
#all x86 TP= -tp=px
#Pentium4 64-bit: p7-64
#Nuwa n375: Xeon E5-2680 v2: Ivy Bridge => between Sandy bridge and Haswell => sandybridge
#aeropc45-3: Xeon W-2265: Cascade Lake (version amelioree de Skylake) => skylake
#TP= -tp=sandybridge
#TP= -tp=skylake
#TP= -tp=p7-64
TP= -tp=px
#
#Version of CUDA
#(8.0 at least if compute capability >= 6.0)
CUDALEVEL=cuda11.4
#
#Compute capability of GPU
#
OPT_CPTCAP=
#Aeropc45: cc50
#Nuwa: cc35
#Ouessant Firestone K80: cc35
#Ouessant Minsky P100: cc60
#Nuwa V100: cc70
#OPT_CPTCAP= cc35,cc50,cc60,cc70
OPT_CPTCAP= cc35
#
#Compiler info level
#OPT_INFO = -Minfo=ftn,accel,inline,ipa,loop,lre,mp,opt,par,unified,vect,ccff
OPT_INFO = -Minfo=accel
#
#Compiler profiling options
# OPT_PROF = -Mprof=dwarf
#
#PW: if -Ktrap=fp: nvprof/pgprof do not work OPT_BASE = -Ktrap=fp ...
#PW: -Ktrap=fp raises false alarms with NVHPC 21.7
#PW: -g: big impact on performance
OPT_BASE = $(TP) -Mbackslash -Mextend -Kieee -Mnofma -Mallocatable=95 -g
#
OPT_PERF0 = -O0
OPT_PERF1 = -O1
OPT_PERF2 = -O2
#
OPT_MANAGED = -Mframe -Mnostack_arrays -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 = -Mframe -Mnostack_arrays -acc=host,gpu,verystrict -gpu=nofma,lineinfo,$(OPT_CPTCAP),$(CUDALEVEL) $(OPT_INFO) $(OPT_PROF)
OPT_OPENACC_PCAST = -Mframe -Mnostack_arrays -acc=host,gpu,verystrict -gpu=autocompare,nofma,lineinfo,$(OPT_CPTCAP),$(CUDALEVEL) $(OPT_INFO) $(OPT_PROF)
#
OPT_CHECK = -C #-Mchkfpstk -Mchkptr
OPT_I8 = -i8
OPT_R8 = -r8
#
ifeq "$(VER_USER)" "ZSOLVER"
CPPFLAGS += -DCARTESIANGEOMETRY -DOVERLAPCOMMS -DPIECEWISELINEAR
PROG_LIST += MG_MAIN MG_MAIN_MNH_ALL
endif
#
IGNORE_OBJS += pgprof.o
#
# 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)
LFI_INT ?=8
else
LFI_INT ?=4
endif
#
#
OPT = $(OPT_BASE) $(OPT_PERF2)
OPT0 = $(OPT_BASE) $(OPT_PERF0)
OPT_NOCB = $(OPT_BASE) $(OPT_PERF2)
#
ifeq "$(OPTLEVEL)" "DEBUG"
OPT = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
OPT0 = $(OPT_BASE) $(OPT_PERF0) $(OPT_CHECK)
OPT_NOCB = $(OPT_BASE) $(OPT_PERF0)
endif
#
ifeq "$(OPTLEVEL)" "MANAGED"
CPPFLAGS += -DMNH_OPENACC
# CPPFLAGS += -DMNH_OPENACC -ta=tesla
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)
endif
#
ifeq "$(OPTLEVEL)" "MULTICORE"
CPPFLAGS += -DMNH_OPENACC
OPT = $(OPT_BASE) $(OPT_MULTICORE)
OPT0 = $(OPT_BASE) $(OPT_MULTICORE) $(OPT_PERF0)
OPT_NOCB = $(OPT_BASE) $(OPT_MULTICORE)
CXXFLAGS = -acc -Kieee -Mnofma $(OPT_MULTICORE)
endif
#
ifeq "$(OPTLEVEL)" "OPENACCO0"
CPPFLAGS += -DMNH_OPENACC
# CPPFLAGS += -DMNH_OPENACC -ta=tesla
OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0)
OPT0 = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0)
OPT_NOCB = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0)
CXXFLAGS = -acc -Kieee -Mnofma $(OPT_OPENACC)
OBJS_REPROD= spll_mode_sum_ll.o
$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF0) -Mvect=nosimd -Minfo=all -g
endif
#
ifeq "$(OPTLEVEL)" "OPENACC"
CPPFLAGS += -DMNH_OPENACC
# CPPFLAGS += -DMNH_OPENACC -ta=tesla
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_O1_OPENACC= spll_ice4_tendencies.o spll_turb_ver_thermo_flux.o
$(OBJS_O1_OPENACC) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF1)
endif
#
ifeq "$(OPTLEVEL)" "OPENACC_PCAST"
CPPFLAGS += -DMNH_OPENACC
# CPPFLAGS += -DMNH_OPENACC -ta=tesla
OPT = $(OPT_BASE) $(OPT_OPENACC_PCAST) $(OPT_PERF2)
OPT0 = $(OPT_BASE) $(OPT_OPENACC_PCAST) $(OPT_PERF0)
OPT_NOCB = $(OPT_BASE) $(OPT_OPENACC_PCAST) $(OPT_PERF2)
CXXFLAGS = -acc -Kieee -Mnofma $(OPT_OPENACC_PCAST)
OBJS_REPROD= spll_mode_sum_ll.o
$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_OPENACC_PCAST) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g
endif
#
ifeq "$(OPTLEVEL)" "OPENACCDEFONLY"
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)
OBJS_REPROD= spll_mode_sum_ll.o
$(OBJS_REPROD) : OPT = $(OPT_BASE) $(OPT_NOOPENACC) $(OPT_PERF2) -Mvect=nosimd -Minfo=all -g
endif
#
ifeq "$(OPTLEVEL)" "NOOPENACC"
#CPPFLAGS += -D_OPT_LINEARIZED_LOOPS
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
#
CC = nvc
CXXFLAGS += $(TP)
CFLAGS += $(TP)
FC = nvfortran
ifeq "$(VER_MPI)" "MPIAUTO"
F90 = mpif90
CC = mpicc
CXX = mpicxx
else
F90 = nvfortran
CC = nvc
CXX = nvc++
endif
#
F77FLAGS = $(OPT)
F77 = $(F90)
F90FLAGS = $(OPT)
FX90 = $(F90)
FX90FLAGS = $(OPT)
#
LDFLAGS = -Wl,-warn-once $(OPT)
#
# preprocessing flags
#
CPP = cpp -P -traditional -Wcomment -D_OPENACC=201711
# CPP = pgfortran -E -Mcpp=noline
#
CPPFLAGS_SURFEX =
CPPFLAGS_SURCOUCHE +=
CPPFLAGS_RAD =
CPPFLAGS_NEWLFI = -DSWAPIO -DLINUX -DLFI_INT=${LFI_INT}
CPPFLAGS_MNH = -DMNH -DMNH_PGI -DSFX_MNH
CPPFLAGS_MNH += -Uvector -Upixel
#
# BITREP flags
#
#if MNH_BITREP exists => compile with the BITREP library
MNH_BITREP = YES
ifeq "$(MNH_BITREP)" "YES"
CPPFLAGS_MNH += -DMNH_BITREP
endif
#
# LIBTOOLS flags
#
#if MNH_TOOLS exists => compile the tools
MNH_TOOLS = yes
#
## IOLFI flag
#
#if MNH_IOLFI exists => compile the NEWLFI library (for LFI files)
MNH_IOLFI=yes
#
## COMPRESS flag
#
#if MNH_COMPRESS exists => compile the COMPRESS library (for LFI files)
MNH_COMPRESS=yes
#
## S4PY flag
#
#if MNH_S4PY exists => compile the libs4py library (for epygram)
#MNH_S4PY=no
#
## ecCodes or grib_api selection
#MNH_GRIBAPI: if set to no: use ecCodes
# if set to yes: use grib_api (deprecated library)
#
MNH_GRIBAPI=no
#
##########################################################
# #
# Source of MESONH PACKAGE Distribution #
# #
##########################################################
#DIR_SURFEX += ARCH_SRC/surfex.MNH-462
OBJS_NOCB += spll_isba.o
#
include Makefile.MESONH.mk
#
##########################################################
# #
# extra VPATH, Compilation flag modification #
# systeme module , etc ... #
# external precompiled module librairie #
# 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 \
spll_convect_updraft.o spll_convect_updraft_shal.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)
OBJS_O0= spll_mode_mppdb.o \
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_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_O2= spll_mode_device.o
$(OBJS_O2) : OPT = $(OPT_BASE) $(OPT_OPENACC) $(OPT_PERF2)
ifneq "$(findstring 8,$(LFI_INT))" ""
OBJS_I8=spll_NEWLFI_ALL.o
$(OBJS_I8) : OPT = $(OPT_BASE) $(OPT_PERF2) $(OPT_I8)
endif
ifeq "$(MNH_INT)" "8"
OBJS_I4=spll_modd_netcdf.o
$(OBJS_I4) : OPT = $(OPT_BASE_I4)
endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment