From 09791a2d4be99c0c22af0ac7e32dae2c9d23253e Mon Sep 17 00:00:00 2001 From: Juan Escobar <escj@aero.obs-mip.fr> Date: Fri, 20 Jul 2018 14:33:39 +0200 Subject: [PATCH] Juan 20/07/2018:Rules.LXifort.mk , add compilation for AVX512 on skylake+knl --- src/Rules.LXifort.mk | 60 ++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 58 insertions(+), 2 deletions(-) diff --git a/src/Rules.LXifort.mk b/src/Rules.LXifort.mk index e4c14811a..0a7b094f2 100644 --- a/src/Rules.LXifort.mk +++ b/src/Rules.LXifort.mk @@ -9,7 +9,7 @@ ########################################################## #OBJDIR_PATH=/home/escj/azertyuiopqsdfghjklm/wxcvbn/azertyuiopqsdfghjklmwxcvbn # -OPT_BASE = -g -w -assume nosource_include -assume byterecl -fpe0 -ftz -fpic -traceback -fp-model precise -switch fe_inline_all_arg_copy_inout -fno-common +OPT_BASE = -g -w -assume nosource_include -assume byterecl -fpe0 -ftz -fpic -traceback -fp-model precise -switch fe_inline_all_arg_copy_inout -fno-common OPT_PERF0 = -O0 OPT_PERF2 = -O2 OPT_PERF3 = -O3 -xHost @@ -53,6 +53,17 @@ OPT = $(OPT_BASE) $(OPT_PERF2) OPT0 = $(OPT_BASE) $(OPT_PERF0) OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) endif +ifeq "$(OPTLEVEL)" "CORE_AVX2" +OPT = $(OPT_BASE) $(OPT_PERF2) -xCORE-AVX2 +OPT0 = $(OPT_BASE) $(OPT_PERF0) -xCORE-AVX2 +OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) -xCORE-AVX2 +endif +ifeq "$(OPTLEVEL)" "MIC_AVX512" +OPT = $(OPT_BASE) $(OPT_PERF2) -xMIC-AVX512 +OPT0 = $(OPT_BASE) $(OPT_PERF0) -xMIC-AVX512 +OPT_NOCB = $(OPT_BASE) $(OPT_PERF2) -xMIC-AVX512 +endif + ifeq "$(OPTLEVEL)" "O2PAR" PAR= -parallel -diag-file -par-report2 OPT = $(OPT_BASE) $(OPT_PERF2) $(PAR) @@ -69,6 +80,51 @@ OPT = $(OPT_BASE) $(OPT_PERF3) OPT0 = $(OPT_BASE) $(OPT_PERF0) OPT_NOCB = $(OPT_BASE) $(OPT_PERF3) endif + +ifeq "$(OPTLEVEL)" "O3_MIC_AVX512_full" +OPT_BASE = -xMIC-AVX512 -g -w -assume nosource_include -assume byterecl -fpic -traceback -switch fe_inline_all_arg_copy_inout -r8 -align array64byte +OPT_NOAVX512 = -O2 -g -w -assume nosource_include -assume byterecl -fpe0 -ftz -fp-model precise -fpic -traceback -switch fe_inline_all_arg_copy_inout -r8 -align array64byte +OPT = $(OPT_BASE) $(OPT_PERF3) +OPT0 = $(OPT_BASE) $(OPT_PERF0) +OPT_NOCB = $(OPT_BASE) $(OPT_PERF3) +OBJS_NOAVX512 = spll_mode_construct_ll.o spll_av_patch_pgd_1d.o spll_ecume_flux.o spll_fft.o \ + spll_mode_repro_sum.o spll_tridiag_thermo.o spll_tridz.o spll_isba_fluxes.o \ + spll_surface_aero_cond.o spll_swni.o spll_swr.o \ + spll_ini_les_n.o +$(OBJS_NOAVX512) : OPT = $(OPT_NOAVX512) +OBJS_REPROD= spll_mode_sum_ll.o +$(OBJS_REPROD) : OPT = $(OPT_NOAVX512) +endif + +ifeq "$(OPTLEVEL)" "O3_CORE_AVX2_full" +OPT_BASE = -xCORE-AVX2 -g -w -assume nosource_include -assume byterecl -fpic -traceback -switch fe_inline_all_arg_copy_inout -r8 -align array64byte +OPT_NOAVX2 = -O2 -g -w -assume nosource_include -assume byterecl -fpe0 -ftz -fp-model precise -fpic -traceback -switch fe_inline_all_arg_copy_inout -r8 -align array64byte +OPT = $(OPT_BASE) $(OPT_PERF3) +OPT0 = $(OPT_BASE) $(OPT_PERF0) +OPT_NOCB = $(OPT_BASE) $(OPT_PERF3) +OBJS_NOAVX2 = spll_mode_construct_ll.o spll_av_patch_pgd_1d.o spll_ecume_flux.o spll_fft.o \ + spll_mode_repro_sum.o spll_tridiag_thermo.o spll_tridz.o spll_isba_fluxes.o \ + spll_ini_les_n.o +$(OBJS_NOAVX2) : OPT = $(OPT_NOAVX2) +OBJS_REPROD= spll_mode_sum_ll.o +$(OBJS_REPROD) : OPT = $(OPT_NOAVX2) +endif + +ifeq "$(OPTLEVEL)" "O3_CORE_AVX512_full" +OPT_BASE = -xCORE-AVX512 -g -w -assume nosource_include -assume byterecl -fpic -traceback -switch fe_inline_all_arg_copy_inout -r8 -align array64byte +OPT_NOAVX512 = -O2 -g -w -assume nosource_include -assume byterecl -fpe0 -ftz -fp-model precise -fpic -traceback -switch fe_inline_all_arg_copy_inout -r8 -align array64byte +OPT = $(OPT_BASE) $(OPT_PERF3) +OPT0 = $(OPT_BASE) $(OPT_PERF0) +OPT_NOCB = $(OPT_BASE) $(OPT_PERF3) +OBJS_NOAVX512 = spll_mode_construct_ll.o spll_av_patch_pgd_1d.o spll_ecume_flux.o spll_fft.o \ + spll_mode_repro_sum.o spll_tridiag_thermo.o spll_tridz.o spll_isba_fluxes.o \ + spll_surface_aero_cond.o spll_swni.o spll_swr.o \ + spll_ini_les_n.o spll_mode_exchange_ll.o spll_update_nhalo1d.o +$(OBJS_NOAVX512) : OPT = $(OPT_NOAVX512) +OBJS_REPROD= spll_mode_sum_ll.o +$(OBJS_REPROD) : OPT = $(OPT_NOAVX512) +endif + # # CC = gcc @@ -165,7 +221,7 @@ include Makefile.MESONH.mk # Juan & Maud 20/03/2008 --> Ifort 10.1.008 Bug O2 optimization ifneq "$(OPTLEVEL)" "DEBUG" OPT_PERF1 = -O1 -OBJS_O1= spll_mode_snow3l.o spll_schu.o spll_ps2str.o spll_p_abs.o spll_ini_one_way_n.o spll_urban_solar_abs.o +OBJS_O1= spll_mode_snow3l.o spll_schu.o spll_ps2str.o spll_p_abs.o spll_ini_one_way_n.o spll_urban_solar_abs.o spll_aeroopt_get.o spll_ch_get_rates.o $(OBJS_O1) : OPT = $(OPT_BASE) $(OPT_PERF1) endif -- GitLab