Skip to content

Commit

Permalink
add support for Cray compilers in CMakeLists.txt
Browse files Browse the repository at this point in the history
  • Loading branch information
tgastine committed Feb 1, 2024
1 parent c2a351d commit c1c3fc0
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 4 deletions.
47 changes: 45 additions & 2 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,22 @@ if(CMAKE_Fortran_COMPILER_ID MATCHES GNU)
set(FFLAG_FPE "-ffpe-trap=invalid,zero,overflow")
set(FFLAG_OPT "-march=native")
endif()
if(CMAKE_Fortran_COMPILER_ID MATCHES Cray)
set(FFLAG_ARCH " ")
set(FFLAG_STD "-en")
set(FFLAG_NO_STD " ")
set(FFLAG_TRACEBACK " ")
set(FFLAG_CONVERT "-h byteswapio")
set(FFLAG_PREPROCESSOR "-eZ")
set(FFLAG_WARN_ALL " ")
set(FFLAG_CHECK_ALL "-G 0 -R b")
set(FFLAG_FPE "-K trap=fp")
set(FFLAG_OPT " ")
#set(CMAKE_EXE_LINKER_FLAGS "-h dynamic")
# Remove -rdynamic option (workaround for test machine):
# https://cmake.org/pipermail/cmake/2014-November/059154.html
#set(CMAKE_SHARED_LIBRARY_LINK_Fortran_FLAGS "")
endif()
if(CMAKE_Fortran_COMPILER_ID MATCHES PGI)
set(FFLAG_ARCH "-m${ARCH}")
set(FFLAG_STD " ")
Expand Down Expand Up @@ -101,13 +117,16 @@ set(_MPI_Intel_Fortran_COMPILER_NAMES "mpiifort")
# PGI compiler names
set(_MPI_PGI_C_COMPILER_NAMES "mpipgcc|mppgcc")
set(_MPI_PGI_Fortran_COMPILER_NAMES "mpipgf|mppgf")
# Cray compiler names
set(_MPI_Cray_C_COMPILER_NAMES "cc")
set(_MPI_Cray_Fortran_COMPILER_NAMES "ftn")
# XLC MPI Compiler names
set(_MPI_XL_C_COMPILER_NAMES "mpxlc|mpxlc_r|mpixlc|mpixlc_r")
set(_MPI_XL_Fortran_COMPILER_NAMES "mpxlf|mpixlf")

# Find CC, CXX and Fortran MPI wrappers
string(REGEX MATCH "${_MPI_C_COMPILER_NAMES}|${_MPI_GNU_C_COMPILER_NAMES}|${_MPI_Intel_C_COMPILER_NAMES}|${_MPI_PGI_C_COMPILER_NAMES}|${_MPI_XL_C_COMPILER_NAMES}" MPICC_COMPILER "${CMAKE_C_COMPILER}")
string(REGEX MATCH "${_MPI_Fortran_COMPILER_NAMES}|${_MPI_GNU_Fortran_COMPILER_NAMES}|${_MPI_Intel_Fortran_COMPILER_NAMES}|${_MPI_PGI_Fortran_COMPILER_NAMES}|${_MPI_XL_Fortran_COMPILER_NAMES}" MPIFORTRAN_COMPILER "${CMAKE_Fortran_COMPILER}")
string(REGEX MATCH "${_MPI_C_COMPILER_NAMES}|${_MPI_GNU_C_COMPILER_NAMES}|${_MPI_Intel_C_COMPILER_NAMES}|${_MPI_PGI_C_COMPILER_NAMES}|${_MPI_XL_C_COMPILER_NAMES}|${_MPI_Cray_C_COMPILER_NAMES}" MPICC_COMPILER "${CMAKE_C_COMPILER}")
string(REGEX MATCH "${_MPI_Fortran_COMPILER_NAMES}|${_MPI_GNU_Fortran_COMPILER_NAMES}|${_MPI_Intel_Fortran_COMPILER_NAMES}|${_MPI_PGI_Fortran_COMPILER_NAMES}|${_MPI_XL_Fortran_COMPILER_NAMES}|${_MPI_Cray_Fortran_COMPILER_NAMES}" MPIFORTRAN_COMPILER "${CMAKE_Fortran_COMPILER}")

# Check whether compiler_options() is available
file(WRITE "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/CMakeTmp/testCompOpt.f90"
Expand Down Expand Up @@ -198,6 +217,7 @@ if(USE_LAPACKLIB MATCHES MKL OR USE_FFTLIB MATCHES MKL)
endif()
endif()


# Detect BLIS and LIBFLAME
if(USE_LAPACKLIB MATCHES LIBFLAME)
find_library(FLAME NAME flame
Expand All @@ -216,6 +236,20 @@ if(USE_LAPACKLIB MATCHES LIBFLAME)
endif()
endif()

# Detect LIBSCI (Cray)
#if(USE_LAPACKLIB MATCHES LIBSCI)
#find_library(SCI NAME sci_cray_mp
#PATHS $ENV{CRAY_LIBSCI_PREFIX}/lib
# $ENV{HOME}/local/lib
# $ENV{HOME}/local/lib64)
#if ( SCI MATCHES SCI-NOTFOUND )
#message(STATUS "LIBSCI was not found")
#set(USE_LAPACKLIB "LAPACK")
#else()
#message(STATUS "LIBSCI: '${SCI}'")
#endif()
#endif()

# Detect LAPACK
if(USE_LAPACKLIB MATCHES LAPACK)
find_package(LAPACK)
Expand Down Expand Up @@ -254,6 +288,7 @@ endif()


if( USE_FFTLIB MATCHES FFTW )
include_directories(/usr/include)
if ( FFTW3-NOTFOUND )
message(STATUS "FFTW3 was not found")
set(USE_FFTLIB "JW")
Expand All @@ -263,6 +298,14 @@ if( USE_FFTLIB MATCHES FFTW )
endif()
endif()

#if ( USE_FFTLIB MATCHES MKL )
# set(USE_DCTLIB "MKL")
#elseif( USE_FFTLIB MATCHES FFTW )
# set(USE_DCTLIB "FFTW")
#else()
# set(USE_DCTLIB "JW")
#endif()

message(STATUS "Use '${USE_FFTLIB}' for the FFTs")
message(STATUS "Use '${USE_DCTLIB}' for the DCTs")
message(STATUS "Use '${USE_LAPACKLIB}' for the LU factorisations")
Expand Down
2 changes: 2 additions & 0 deletions cmake/FindOpenMP_Fortran.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@
INCLUDE (${CMAKE_ROOT}/Modules/FindPackageHandleStandardArgs.cmake)

SET (OpenMP_Fortran_FLAG_CANDIDATES
#Cray
"-h omp"
#Future Intel
"-qopenmp"
#Gnu
Expand Down
10 changes: 8 additions & 2 deletions src/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ endif()
# Lapack
if(USE_LAPACKLIB MATCHES JW)
set(lapack algebra.f90)
elseif(USE_LAPACKLIB MATCHES LAPACK OR USE_LAPACKLIB MATCHES MKL OR USE_LAPACKLIB MATCHES LIBFLAME)
elseif(USE_LAPACKLIB MATCHES LAPACK OR USE_LAPACKLIB MATCHES MKL OR USE_LAPACKLIB MATCHES LIBFLAME OR USE_LAPACKLIB MATCHES LIBSCI)
set(lapack algebra_lapack.f90)
endif()

Expand Down Expand Up @@ -97,6 +97,8 @@ endif()
# Link LIBFLAME and BLIS
if(USE_LAPACKLIB MATCHES LIBFLAME)
target_link_libraries (${EXEC} ${FLAME} ${BLIS})
#elseif(USE_LAPACKLIB MATCHES LIBSCI)
#target_link_libraries (${EXEC} ${SCI})
endif()

if(USE_SHTNS MATCHES yes AND NOT SHTNS MATCHES SHTNS-NOTFOUND)
Expand Down Expand Up @@ -141,6 +143,10 @@ if(USE_SHTNS MATCHES yes AND NOT SHTNS MATCHES SHTNS-NOTFOUND)
target_link_libraries(${EXEC} ${SHTNS_DEPS})
else()
if(USE_FFTLIB MATCHES FFTW)
target_link_libraries(${EXEC} ${FFTW3_OMP} ${FFTW3})
if(USE_OMP)
target_link_libraries(${EXEC} ${FFTW3_OMP} ${FFTW3})
else()
target_link_libraries(${EXEC} ${FFTW3})
endif()
endif()
endif()

0 comments on commit c1c3fc0

Please sign in to comment.