Skip to content

Commit 0db4858

Browse files
authored
Merge pull request #62 from twhite-cray/cray
Added support for HPE Cray Fortran.
2 parents c854323 + d34a938 commit 0db4858

File tree

6 files changed

+867
-12
lines changed

6 files changed

+867
-12
lines changed

CMakeLists.txt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,12 +97,16 @@ ENDIF(NOT DEFINED CMAKE_Fortran_COMPILER_SUPPORTS_F08)
9797
#OPTION(USE_MPI "Use the MPI library for parallelization" OFF)
9898
#OPTION(USE_OPENMP "Use OpenMP for parallelization" OFF)
9999

100+
IF(CMAKE_Fortran_COMPILER_ID MATCHES "Cray")
101+
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${HIPFORT_COMPILER_FLAGS}")
102+
ELSE(CMAKE_Fortran_COMPILER_ID MATCHES "Cray")
100103
IF(CMAKE_Fortran_COMPILER_SUPPORTS_F08)
101104
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${HIPFORT_COMPILER_FLAGS} -std=f2008")
102105
ELSE(CMAKE_Fortran_COMPILER_SUPPORTS_F08)
103106
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} ${HIPFORT_COMPILER_FLAGS} -std=f2003")
104107
ENDIF(CMAKE_Fortran_COMPILER_SUPPORTS_F08)
105-
108+
ENDIF(CMAKE_Fortran_COMPILER_ID MATCHES "Cray")
109+
106110
# Set compile flags for DEBUG, # RELEASE, or TESTING.
107111
INCLUDE(${CMAKE_MODULE_PATH}/SetFortranFlags.cmake)
108112
message("-- Done setting FortranFlags")

bin/hipfc

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -388,7 +388,12 @@ if [ "$UNAMEP" == "ppc64le" ] ; then
388388
HOST_TARGET="ppc64le-linux-gnu"
389389
fi
390390

391-
FCARGS="-cpp -I$HIPFORT/include/$TARGET_ARCH"
391+
if [[ "$HIPFORT_COMPILER" == *"ftn" ]] ; then
392+
FCARGS="-eT -J$HIPFORT/include/$TARGET_ARCH"
393+
else
394+
FCARGS="-cpp -I$HIPFORT/include/$TARGET_ARCH"
395+
fi
396+
392397
if [ $GEN_OBJECT_ONLY ] ; then
393398
FCARGS=" -c $FCARGS"
394399
HIPCC_OPTS=" -c $HIPCC_OPTS"

cmake/Modules/SetFortranFlags.cmake

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ ENDIF(CMAKE_Fortran_FLAGS_RELEASE AND CMAKE_Fortran_FLAGS_TESTING AND CMAKE_Fort
5151
### GENERAL FLAGS ###
5252
#####################
5353

54+
IF(NOT CMAKE_Fortran_COMPILER_ID MATCHES "Cray")
55+
5456
# Don't add underscores in symbols for C-compatability
5557
SET_COMPILE_FLAG(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}"
5658
Fortran "-fno-underscoring")
@@ -69,6 +71,8 @@ SET_COMPILE_FLAG(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS}"
6971
"-ta=host" # Portland Group
7072
)
7173

74+
ENDIF(NOT CMAKE_Fortran_COMPILER_ID MATCHES "Cray")
75+
7276
###################
7377
### DEBUG FLAGS ###
7478
###################
@@ -84,22 +88,26 @@ SET_COMPILE_FLAG(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG}"
8488
# Turn on all warnings
8589
SET_COMPILE_FLAG(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG}"
8690
Fortran "-warn all" # Intel
91+
"-m2" # HPE Cray
8792
"/warn:all" # Intel Windows
8893
"-Wall" # GNU
8994
# Portland Group (on by default)
9095
)
9196

9297
# Traceback
98+
IF(NOT CMAKE_Fortran_COMPILER_ID MATCHES "Cray")
9399
SET_COMPILE_FLAG(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG}"
94100
Fortran "-traceback" # Intel/Portland Group
95101
"/traceback" # Intel Windows
96102
"-fbacktrace" # GNU (gfortran)
97103
"-ftrace=full" # GNU (g95)
98104
)
105+
ENDIF(NOT CMAKE_Fortran_COMPILER_ID MATCHES "Cray")
99106

100107
# Check array bounds
101108
SET_COMPILE_FLAG(CMAKE_Fortran_FLAGS_DEBUG "${CMAKE_Fortran_FLAGS_DEBUG}"
102109
Fortran "-check bounds" # Intel
110+
"-hbounds" # HPE Cray
103111
"/check:bounds" # Intel Windows
104112
"-fcheck=bounds" # GNU (New style)
105113
"-fbounds-check" # GNU (Old style)
@@ -122,6 +130,8 @@ SET_COMPILE_FLAG(CMAKE_Fortran_FLAGS_TESTING "${CMAKE_Fortran_FLAGS_TESTING}"
122130

123131
# NOTE: agressive optimizations (-O3) are already turned on by default
124132

133+
IF(NOT CMAKE_Fortran_COMPILER_ID MATCHES "Cray")
134+
125135
# Unroll loops
126136
SET_COMPILE_FLAG(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE}"
127137
Fortran "-funroll-loops" # GNU
@@ -158,3 +168,5 @@ SET_COMPILE_FLAG(CMAKE_Fortran_FLAGS_RELEASE "${CMAKE_Fortran_FLAGS_RELEASE}"
158168
"/Qvec-report0" # Intel Windows
159169
"-Mvect" # Portland Group
160170
)
171+
172+
ENDIF(NOT CMAKE_Fortran_COMPILER_ID MATCHES "Cray")

lib/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11

2+
IF(NOT CMAKE_Fortran_COMPILER_ID MATCHES "Cray")
23
set(CMAKE_Fortran_FLAGS "${CMAKE_Fortran_FLAGS} -fno-underscoring")
4+
ENDIF(NOT CMAKE_Fortran_COMPILER_ID MATCHES "Cray")
35
file(GLOB HIPFORT_SRC_HIP "${CMAKE_CURRENT_SOURCE_DIR}/hipfort/*.f*")
46
#file(GLOB HIPFORT_SRC_amdgcn "${CMAKE_CURRENT_SOURCE_DIR}/modules-amdgcn/*.f*")
57
#file(GLOB HIPFORT_SRC_nvptx "${CMAKE_CURRENT_SOURCE_DIR}/modules-nvptx/*.f*")

0 commit comments

Comments
 (0)