Merge pull request #3045 from martin-frbg/nvidiasdk

Support NVIDIA HPC SDK 20.11 compilers on x86_64
This commit is contained in:
Martin Kroeker 2020-12-19 23:14:02 +01:00 committed by GitHub
commit 07c5e549b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 26 additions and 11 deletions

View File

@ -59,6 +59,9 @@ endif
@$(CC) --version > /dev/null 2>&1;\ @$(CC) --version > /dev/null 2>&1;\
if [ $$? -eq 0 ]; then \ if [ $$? -eq 0 ]; then \
cverinfo=`$(CC) --version | sed -n '1p'`; \ cverinfo=`$(CC) --version | sed -n '1p'`; \
if [ -z "$${cverinfo}" ]; then \
cverinfo=`$(CC) --version | sed -n '2p'`; \
fi; \
echo " C compiler ... $(C_COMPILER) (cmd & version : $${cverinfo})";\ echo " C compiler ... $(C_COMPILER) (cmd & version : $${cverinfo})";\
else \ else \
echo " C compiler ... $(C_COMPILER) (command line : $(CC))";\ echo " C compiler ... $(C_COMPILER) (command line : $(CC))";\
@ -67,6 +70,9 @@ ifeq ($(NOFORTRAN), $(filter 0,$(NOFORTRAN)))
@$(FC) --version > /dev/null 2>&1;\ @$(FC) --version > /dev/null 2>&1;\
if [ $$? -eq 0 ]; then \ if [ $$? -eq 0 ]; then \
fverinfo=`$(FC) --version | sed -n '1p'`; \ fverinfo=`$(FC) --version | sed -n '1p'`; \
if [ -z "$${fverinfo}" ]; then \
fverinfo=`$(FC) --version | sed -n '2p'`; \
fi; \
echo " Fortran compiler ... $(F_COMPILER) (cmd & version : $${fverinfo})";\ echo " Fortran compiler ... $(F_COMPILER) (cmd & version : $${fverinfo})";\
else \ else \
echo " Fortran compiler ... $(F_COMPILER) (command line : $(FC))";\ echo " Fortran compiler ... $(F_COMPILER) (command line : $(FC))";\

View File

@ -181,7 +181,7 @@ endif
# On x86_64 build getarch with march=native unless the compiler is PGI. This is required to detect AVX512 support in getarch. # On x86_64 build getarch with march=native unless the compiler is PGI. This is required to detect AVX512 support in getarch.
ifeq ($(HOSTARCH), x86_64) ifeq ($(HOSTARCH), x86_64)
ifeq ($(findstring pgcc,$(HOSTCC)),) ifeq ($(findstring pgcc,$(HOSTCC))$(findstring nvc,$(HOSTCC)),)
GETARCH_FLAGS += -march=native GETARCH_FLAGS += -march=native
endif endif
endif endif
@ -847,9 +847,19 @@ endif
endif endif
ifeq ($(C_COMPILER), PGI) ifeq ($(C_COMPILER), PGI)
PGCVERSIONGT20 := $(shell expr `$(CC) --version|sed -n "2p" |sed -e "s/[^0-9.]//g" |cut -d "." -f 1` \> 20)
PGCVERSIONGTEQ20 := $(shell expr `$(CC) --version|sed -n "2p" |sed -e "s/[^0-9.]//g" |cut -d "." -f 1` \>= 20)
PGCMINORVERSIONGE11 := $(shell expr `$(CC) --version|sed -n "2p" |sed -e "s/[^0-9.]//g" |cut -c 4-5` == 11)
PGCVERSIONCHECK := $(PGCVERSIONGT20)$(PGCVERSIONEQ20)$(PGCMINORVERSIONGE11)
ifeq ($(PGCVERSIONCHECK), $(filter $(PGCVERSIONCHECK), 110 111 011))
NEWPGI := 1
endif
ifdef BINARY64 ifdef BINARY64
ifeq ($(ARCH), x86_64) ifeq ($(ARCH), x86_64)
CCOMMON_OPT += -tp p7-64 -D__MMX__ -Mnollvm CCOMMON_OPT += -tp p7-64
ifneq ($(NEWPGI),1)
CCOMMON_OPT += -D__MMX__ -Mnollvm
endif
else else
ifeq ($(ARCH), power) ifeq ($(ARCH), power)
ifeq ($(CORE), POWER8) ifeq ($(CORE), POWER8)
@ -1040,7 +1050,7 @@ endif
else else
FCOMMON_OPT += -tp p7 FCOMMON_OPT += -tp p7
endif endif
FCOMMON_OPT += -Mrecursive FCOMMON_OPT += -Mrecursive -Kieee
ifeq ($(USE_OPENMP), 1) ifeq ($(USE_OPENMP), 1)
FCOMMON_OPT += -mp FCOMMON_OPT += -mp
endif endif

11
f_check
View File

@ -32,7 +32,7 @@ if ($compiler eq "") {
"xlf95", "xlf90", "xlf", "xlf95", "xlf90", "xlf",
"ppuf77", "ppuf95", "ppuf90", "ppuxlf", "ppuf77", "ppuf95", "ppuf90", "ppuxlf",
"pathf90", "pathf95", "pathf90", "pathf95",
"pgf95", "pgf90", "pgf77", "pgf95", "pgf90", "pgf77", "pgfortran", "nvfortran",
"flang", "egfortran", "flang", "egfortran",
"ifort"); "ifort");
@ -64,7 +64,6 @@ if ($compiler eq "") {
if (!$?) { if (!$?) {
$data = `$compiler -O2 -S ftest.f > /dev/null 2>&1 && cat ftest.s && rm -f ftest.s`; $data = `$compiler -O2 -S ftest.f > /dev/null 2>&1 && cat ftest.s && rm -f ftest.s`;
if ($data =~ /zhoge_/) { if ($data =~ /zhoge_/) {
$bu = "_"; $bu = "_";
} }
@ -87,7 +86,7 @@ if ($compiler eq "") {
if ($compiler =~ /flang/) { if ($compiler =~ /flang/) {
$vendor = FLANG; $vendor = FLANG;
$openmp = "-fopenmp"; $openmp = "-fopenmp";
} elsif ($compiler =~ /pgf/) { } elsif ($compiler =~ /pgf/ || $compiler =~ /nvf/) {
$vendor = PGI; $vendor = PGI;
$openmp = "-mp"; $openmp = "-mp";
} else { } else {
@ -123,7 +122,7 @@ if ($compiler eq "") {
$openmp = "-mp"; $openmp = "-mp";
} }
if ($data =~ /PGF/) { if ($data =~ /PGF/ || $data =~ /NVF/) {
$vendor = PGI; $vendor = PGI;
$openmp = "-mp"; $openmp = "-mp";
} }
@ -177,7 +176,7 @@ if ($compiler eq "") {
$openmp = "-mp"; $openmp = "-mp";
} }
if ($compiler =~ /pgf/) { if ($compiler =~ /pgf/ || $compiler =~ /nvf/) {
$vendor = PGI; $vendor = PGI;
$bu = "_"; $bu = "_";
$openmp = "-mp"; $openmp = "-mp";
@ -330,7 +329,7 @@ if ($link ne "") {
$flags =~ s/\@/\,/g; $flags =~ s/\@/\,/g;
$linker_L .= "-Wl,". $flags . " " ; $linker_L .= "-Wl,". $flags . " " ;
} }
if ($flags =~ /-lgomp/ && $ENV{"CC"} =~ /clang/) { if ($flags =~ /-lgomp/ && $CC =~ /clang/) {
$flags = "-lomp"; $flags = "-lomp";
} }

View File

@ -36,7 +36,7 @@ ifeq ($(TARGET_CORE), COOPERLAKE)
ifeq ($(GCCVERSIONGTEQ10), 1) ifeq ($(GCCVERSIONGTEQ10), 1)
override CFLAGS += -march=cooperlake override CFLAGS += -march=cooperlake
else else
override CFLAGS += -march=skylake-avx512 override CFLAGS += -march=skylake-avx512 -mavx512f
endif endif
ifeq ($(OSNAME), CYGWIN_NT) ifeq ($(OSNAME), CYGWIN_NT)
override CFLAGS += -fno-asynchronous-unwind-tables override CFLAGS += -fno-asynchronous-unwind-tables
@ -47,7 +47,7 @@ ifeq ($(TARGET_CORE), COOPERLAKE)
endif endif
endif endif
else ifeq ($(TARGET_CORE), SKYLAKEX) else ifeq ($(TARGET_CORE), SKYLAKEX)
override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE) -march=skylake-avx512 override CFLAGS += -DBUILD_KERNEL -DTABLE_NAME=gotoblas_$(TARGET_CORE) -march=skylake-avx512 -mavx512f
ifeq ($(OSNAME), CYGWIN_NT) ifeq ($(OSNAME), CYGWIN_NT)
override CFLAGS += -fno-asynchronous-unwind-tables override CFLAGS += -fno-asynchronous-unwind-tables
endif endif