Support compilation with the Cray C and Fortran compilers (#3712)
* Add support for the Cray Fortran compiler
This commit is contained in:
parent
096ae6f2bd
commit
85fd3c4279
|
@ -1190,7 +1190,6 @@ FCOMMON_OPT += -i8
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
|
ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
|
||||||
ifndef BINARY64
|
ifndef BINARY64
|
||||||
FCOMMON_OPT += -n32
|
FCOMMON_OPT += -n32
|
||||||
|
@ -1200,11 +1199,9 @@ endif
|
||||||
ifeq ($(CORE), LOONGSON3R3)
|
ifeq ($(CORE), LOONGSON3R3)
|
||||||
FCOMMON_OPT += -loongson3 -static
|
FCOMMON_OPT += -loongson3 -static
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CORE), LOONGSON3R4)
|
ifeq ($(CORE), LOONGSON3R4)
|
||||||
FCOMMON_OPT += -loongson3 -static
|
FCOMMON_OPT += -loongson3 -static
|
||||||
endif
|
endif
|
||||||
|
|
||||||
else
|
else
|
||||||
ifndef BINARY64
|
ifndef BINARY64
|
||||||
FCOMMON_OPT += -m32
|
FCOMMON_OPT += -m32
|
||||||
|
@ -1212,7 +1209,6 @@ else
|
||||||
FCOMMON_OPT += -m64
|
FCOMMON_OPT += -m64
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(USE_OPENMP), 1)
|
ifeq ($(USE_OPENMP), 1)
|
||||||
FEXTRALIB += -lstdc++
|
FEXTRALIB += -lstdc++
|
||||||
FCOMMON_OPT += -mp
|
FCOMMON_OPT += -mp
|
||||||
|
@ -1220,7 +1216,6 @@ endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(C_COMPILER), OPEN64)
|
ifeq ($(C_COMPILER), OPEN64)
|
||||||
|
|
||||||
ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
|
ifeq ($(ARCH), $(filter $(ARCH),mips64 mips))
|
||||||
ifndef BINARY64
|
ifndef BINARY64
|
||||||
CCOMMON_OPT += -n32
|
CCOMMON_OPT += -n32
|
||||||
|
@ -1230,13 +1225,10 @@ endif
|
||||||
ifeq ($(CORE), LOONGSON3R3)
|
ifeq ($(CORE), LOONGSON3R3)
|
||||||
CCOMMON_OPT += -loongson3 -static
|
CCOMMON_OPT += -loongson3 -static
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifeq ($(CORE), LOONGSON3R4)
|
ifeq ($(CORE), LOONGSON3R4)
|
||||||
CCOMMON_OPT += -loongson3 -static
|
CCOMMON_OPT += -loongson3 -static
|
||||||
endif
|
endif
|
||||||
|
|
||||||
else
|
else
|
||||||
|
|
||||||
ifndef BINARY64
|
ifndef BINARY64
|
||||||
CCOMMON_OPT += -m32
|
CCOMMON_OPT += -m32
|
||||||
else
|
else
|
||||||
|
@ -1282,6 +1274,19 @@ FCOMMON_OPT += -openmp
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
ifeq ($(F_COMPILER), CRAY)
|
||||||
|
CCOMMON_OPT += -DF_INTERFACE_INTEL
|
||||||
|
FCOMMON_OPT += -hnopattern
|
||||||
|
ifdef INTERFACE64
|
||||||
|
ifneq ($(INTERFACE64), 0)
|
||||||
|
FCOMMON_OPT += -s integer64
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
ifneq ($(USE_OPENMP), 1)
|
||||||
|
FCOMMON_OPT += -O noomp
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
ifdef BINARY64
|
ifdef BINARY64
|
||||||
ifdef INTERFACE64
|
ifdef INTERFACE64
|
||||||
ifneq ($(INTERFACE64), 0)
|
ifneq ($(INTERFACE64), 0)
|
||||||
|
@ -1565,6 +1570,11 @@ endif
|
||||||
|
|
||||||
ifeq ($(F_COMPILER),NAG)
|
ifeq ($(F_COMPILER),NAG)
|
||||||
LAPACK_FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 ,$(FFLAGS))
|
LAPACK_FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 ,$(FFLAGS))
|
||||||
|
FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 ,$(FFLAGS))
|
||||||
|
endif
|
||||||
|
ifeq ($(F_COMPILER),CRAY)
|
||||||
|
LAPACK_FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 ,$(FFLAGS))
|
||||||
|
FFLAGS := $(filter-out -msse3 -mssse3 -msse4.1 -mavx -mavx2 -mskylake-avx512 ,$(FFLAGS))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LAPACK_CFLAGS = $(CFLAGS)
|
LAPACK_CFLAGS = $(CFLAGS)
|
||||||
|
|
|
@ -222,6 +222,17 @@ if (${F_COMPILER} STREQUAL "COMPAQ")
|
||||||
endif ()
|
endif ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if (${F_COMPILER} STREQUAL "CRAY")
|
||||||
|
set(CCOMMON_OPT "${CCOMMON_OPT} -DF_INTERFACE_INTEL")
|
||||||
|
set(FCOMMON_OPT "${FCOMMON_OPT} -hnopattern")
|
||||||
|
if (INTERFACE64)
|
||||||
|
set (FCOMMON_OPT "${FCOMMON_OPT} -s integer64")
|
||||||
|
endif ()
|
||||||
|
if (NOT USE_OPENMP)
|
||||||
|
set(FCOMMON_OPT "${FCOMMON_OPT} -O noomp")
|
||||||
|
endif ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
# from the root Makefile - this is for lapack-netlib to compile the correct secnd file.
|
# from the root Makefile - this is for lapack-netlib to compile the correct secnd file.
|
||||||
if (${F_COMPILER} STREQUAL "GFORTRAN")
|
if (${F_COMPILER} STREQUAL "GFORTRAN")
|
||||||
set(TIMER "INT_ETIME")
|
set(TIMER "INT_ETIME")
|
||||||
|
|
|
@ -559,6 +559,14 @@ if (${CMAKE_SYSTEM_NAME} STREQUAL "Windows")
|
||||||
endforeach ()
|
endforeach ()
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
|
if ("${F_COMPILER}" STREQUAL "NAG" OR "${F_COMPILER}" STREQUAL "CRAY")
|
||||||
|
set(FILTER_FLAGS "-msse3;-mssse3;-msse4.1;-mavx;-mavx2,-mskylake-avx512")
|
||||||
|
foreach (FILTER_FLAG ${FILTER_FLAGS})
|
||||||
|
string(REPLACE ${FILTER_FLAG} "" LAPACK_FFLAGS ${LAPACK_FFLAGS})
|
||||||
|
string(REPLACE ${FILTER_FLAG} "" LAPACK_FPFLAGS ${LAPACK_FPFLAGS})
|
||||||
|
endforeach ()
|
||||||
|
endif ()
|
||||||
|
|
||||||
if ("${F_COMPILER}" STREQUAL "GFORTRAN")
|
if ("${F_COMPILER}" STREQUAL "GFORTRAN")
|
||||||
# lapack-netlib is rife with uninitialized warnings -hpa
|
# lapack-netlib is rife with uninitialized warnings -hpa
|
||||||
set(LAPACK_FFLAGS "${LAPACK_FFLAGS} -Wno-maybe-uninitialized")
|
set(LAPACK_FFLAGS "${LAPACK_FFLAGS} -Wno-maybe-uninitialized")
|
||||||
|
|
9
f_check
9
f_check
|
@ -45,7 +45,7 @@ if [ -z "$compiler" ]; then
|
||||||
pathf90 pathf95
|
pathf90 pathf95
|
||||||
pgf95 pgf90 pgf77 pgfortran nvfortran
|
pgf95 pgf90 pgf77 pgfortran nvfortran
|
||||||
flang egfortran
|
flang egfortran
|
||||||
ifort nagfor ifx"
|
ifort nagfor ifx ftn crayftn"
|
||||||
|
|
||||||
for list in $lists; do
|
for list in $lists; do
|
||||||
for p in $path; do
|
for p in $path; do
|
||||||
|
@ -82,6 +82,10 @@ else
|
||||||
vendor=FUJITSU
|
vendor=FUJITSU
|
||||||
openmp='-Kopenmp'
|
openmp='-Kopenmp'
|
||||||
;;
|
;;
|
||||||
|
*Cray*)
|
||||||
|
vendor=CRAY
|
||||||
|
openmp='-fopenmp'
|
||||||
|
;;
|
||||||
*GNU*|*GCC*)
|
*GNU*|*GCC*)
|
||||||
|
|
||||||
v="${data#*GCC: *\) }"
|
v="${data#*GCC: *\) }"
|
||||||
|
@ -295,6 +299,9 @@ fi
|
||||||
if [ "$vendor" = "NAG" ]; then
|
if [ "$vendor" = "NAG" ]; then
|
||||||
link=`$compiler $openmp -dryrun ftest2.f 2>&1 && rm -f a.out a.exe`
|
link=`$compiler $openmp -dryrun ftest2.f 2>&1 && rm -f a.out a.exe`
|
||||||
fi
|
fi
|
||||||
|
if [ "$vendor" = "CRAY" ]; then
|
||||||
|
link=`$compiler $openmp -hnopattern ftest2.f 2>&1 && rm -f a.out a.exe`
|
||||||
|
fi
|
||||||
linker_L=""
|
linker_L=""
|
||||||
linker_l=""
|
linker_l=""
|
||||||
linker_a=""
|
linker_a=""
|
||||||
|
|
10
f_check.pl
10
f_check.pl
|
@ -34,7 +34,7 @@ if ($compiler eq "") {
|
||||||
"pathf90", "pathf95",
|
"pathf90", "pathf95",
|
||||||
"pgf95", "pgf90", "pgf77", "pgfortran", "nvfortran",
|
"pgf95", "pgf90", "pgf77", "pgfortran", "nvfortran",
|
||||||
"flang", "egfortran",
|
"flang", "egfortran",
|
||||||
"ifort", "nagfor", "ifx");
|
"ifort", "nagfor", "ifx", "ftn", "crayftn");
|
||||||
|
|
||||||
OUTER:
|
OUTER:
|
||||||
foreach $lists (@lists) {
|
foreach $lists (@lists) {
|
||||||
|
@ -76,6 +76,11 @@ if ($compiler eq "") {
|
||||||
$vendor = FUJITSU;
|
$vendor = FUJITSU;
|
||||||
$openmp = "-Kopenmp";
|
$openmp = "-Kopenmp";
|
||||||
|
|
||||||
|
} elsif ($data =~ /Cray/) {
|
||||||
|
|
||||||
|
$vendor = CRAY;
|
||||||
|
$openmp = "-fopenmp";
|
||||||
|
|
||||||
} elsif ($data =~ /GNU/ || $data =~ /GCC/ ) {
|
} elsif ($data =~ /GNU/ || $data =~ /GCC/ ) {
|
||||||
|
|
||||||
$data =~ s/\(+.*?\)+//g;
|
$data =~ s/\(+.*?\)+//g;
|
||||||
|
@ -309,6 +314,9 @@ if (!$?) {
|
||||||
if ( $vendor eq "NAG") {
|
if ( $vendor eq "NAG") {
|
||||||
$link = `$compiler $openmp -dryrun ftest2.f 2>&1 && rm -f a.out a.exe`;
|
$link = `$compiler $openmp -dryrun ftest2.f 2>&1 && rm -f a.out a.exe`;
|
||||||
}
|
}
|
||||||
|
if ( $vendor eq "CRAY") {
|
||||||
|
$link = `$compiler $openmp -hnopattern ftest2.f 2>&1 && rm -f a.out a.exe`;
|
||||||
|
}
|
||||||
$linker_L = "";
|
$linker_L = "";
|
||||||
$linker_l = "";
|
$linker_l = "";
|
||||||
$linker_a = "";
|
$linker_a = "";
|
||||||
|
|
Loading…
Reference in New Issue