Update Kokkos library in LAMMPS to v3.5.0
This commit is contained in:
@ -1,91 +0,0 @@
|
||||
#----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# CTestConfig.cmake template for Kokkos
|
||||
#
|
||||
#----------------------------------------------------------------------------------------#
|
||||
|
||||
#
|
||||
# dash-board related
|
||||
#
|
||||
set(CTEST_PROJECT_NAME "Kokkos")
|
||||
set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC")
|
||||
set(CTEST_DROP_METHOD "https")
|
||||
set(CTEST_DROP_SITE "cdash.nersc.gov")
|
||||
set(CTEST_DROP_LOCATION "/submit.php?project=${CTEST_PROJECT_NAME}")
|
||||
set(CTEST_CDASH_VERSION "1.6")
|
||||
set(CTEST_CDASH_QUERY_VERSION TRUE)
|
||||
set(CTEST_SUBMIT_RETRY_COUNT "1")
|
||||
set(CTEST_SUBMIT_RETRY_DELAY "30")
|
||||
|
||||
#
|
||||
# configure/build related
|
||||
#
|
||||
set(CTEST_BUILD_NAME "@BUILD_NAME@")
|
||||
set(CTEST_MODEL "@MODEL@")
|
||||
set(CTEST_SITE "@SITE@")
|
||||
set(CTEST_CONFIGURATION_TYPE "@BUILD_TYPE@")
|
||||
set(CTEST_SOURCE_DIRECTORY "@SOURCE_REALDIR@")
|
||||
set(CTEST_BINARY_DIRECTORY "@BINARY_REALDIR@")
|
||||
|
||||
#
|
||||
# configure/build related
|
||||
#
|
||||
set(CTEST_UPDATE_TYPE "git")
|
||||
set(CTEST_UPDATE_VERSION_ONLY ON)
|
||||
# set(CTEST_GENERATOR "")
|
||||
# set(CTEST_GENERATOR_PLATFORM "")
|
||||
|
||||
#
|
||||
# testing related
|
||||
#
|
||||
set(CTEST_TIMEOUT "7200")
|
||||
set(CTEST_TEST_TIMEOUT "7200")
|
||||
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_ERRORS "100")
|
||||
set(CTEST_CUSTOM_MAXIMUM_NUMBER_OF_WARNINGS "100")
|
||||
set(CTEST_CUSTOM_MAXIMUM_PASSED_TEST_OUTPUT_SIZE "1048576")
|
||||
|
||||
#
|
||||
# coverage related
|
||||
#
|
||||
set(CTEST_CUSTOM_COVERAGE_EXCLUDE ".*tpls/.*;/usr/.*;.*unit_test/.*;.*unit_tests/.*;.*perf_test/.*")
|
||||
|
||||
#
|
||||
# commands
|
||||
#
|
||||
if(NOT "@CHECKOUT_COMMAND@" STREQUAL "")
|
||||
set(CTEST_CHECKOUT_COMMAND "@CHECKOUT_COMMAND@")
|
||||
endif()
|
||||
set(CTEST_UPDATE_COMMAND "@GIT_EXECUTABLE@")
|
||||
set(CTEST_CONFIGURE_COMMAND "@CMAKE_COMMAND@ -DCMAKE_BUILD_TYPE=@BUILD_TYPE@ -DKokkos_ENABLE_TESTS=ON @CONFIG_ARGS@ @SOURCE_REALDIR@")
|
||||
set(CTEST_BUILD_COMMAND "@CMAKE_COMMAND@ --build @BINARY_REALDIR@ --target @TARGET@")
|
||||
if(NOT WIN32)
|
||||
set(CTEST_BUILD_COMMAND "${CTEST_BUILD_COMMAND} -- -j@BUILD_JOBS@")
|
||||
endif()
|
||||
set(CTEST_COVERAGE_COMMAND "gcov")
|
||||
set(CTEST_MEMORYCHECK_COMMAND "valgrind")
|
||||
set(CTEST_GIT_COMMAND "@GIT_EXECUTABLE@")
|
||||
|
||||
#
|
||||
# various configs
|
||||
#
|
||||
set(APPEND_VALUE @APPEND@)
|
||||
if(APPEND_VALUE)
|
||||
set(APPEND_CTEST APPEND)
|
||||
endif()
|
||||
|
||||
macro(SET_TEST_PROP VAR)
|
||||
if(NOT "${ARGS}" STREQUAL "")
|
||||
set(${VAR}_CTEST ${VAR} ${ARGN})
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
set_test_prop(START @START@)
|
||||
set_test_prop(END @END@)
|
||||
set_test_prop(STRIDE @STRIDE@)
|
||||
set_test_prop(INCLUDE @INCLUDE@)
|
||||
set_test_prop(EXCLUDE @EXCLUDE@)
|
||||
set_test_prop(INCLUDE_LABEL @INCLUDE_LABEL@)
|
||||
set_test_prop(EXCLUDE_LABEL @EXCLUDE_LABEL@)
|
||||
set_test_prop(PARALLEL_LEVEL @PARALLEL_LEVEL@)
|
||||
set_test_prop(STOP_TIME @STOP_TIME@)
|
||||
set_test_prop(COVERAGE_LABELS @LABELS@)
|
||||
@ -1,350 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
|
||||
|
||||
message(STATUS "")
|
||||
|
||||
get_cmake_property(_cached_vars CACHE_VARIABLES)
|
||||
set(KOKKOS_CMAKE_ARGS)
|
||||
set(EXCLUDED_VARIABLES "CMAKE_COMMAND" "CMAKE_CPACK_COMMAND" "CMAKE_CTEST_COMMAND" "CMAKE_ROOT"
|
||||
"CTEST_ARGS" "BUILD_NAME" "CMAKE_CXX_FLAGS" "CMAKE_BUILD_TYPE")
|
||||
list(SORT _cached_vars)
|
||||
foreach(_var ${_cached_vars})
|
||||
if(NOT "${_var}" IN_LIST EXCLUDED_VARIABLES)
|
||||
list(APPEND KOKKOS_CMAKE_ARGS ${_var})
|
||||
if("${_var}" STREQUAL "CMAKE_BUILD_TYPE")
|
||||
set(BUILD_TYPE "${CMAKE_BUILD_TYPE}")
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
|
||||
#----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# Macros and variables
|
||||
#
|
||||
#----------------------------------------------------------------------------------------#
|
||||
|
||||
macro(CHECK_REQUIRED VAR)
|
||||
if(NOT DEFINED ${VAR})
|
||||
message(FATAL_ERROR "Error! Variable '${VAR}' must be defined")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# require the build name variable
|
||||
CHECK_REQUIRED(BUILD_NAME)
|
||||
|
||||
# uses all args
|
||||
macro(SET_DEFAULT VAR)
|
||||
if(NOT DEFINED ${VAR})
|
||||
set(${VAR} ${ARGN})
|
||||
endif()
|
||||
# remove these ctest configuration variables from the defines
|
||||
# passed to the Kokkos configuration
|
||||
if("${VAR}" IN_LIST KOKKOS_CMAKE_ARGS)
|
||||
list(REMOVE_ITEM KOKKOS_CMAKE_ARGS "${VAR}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# uses first arg -- useful for selecting via priority from multiple
|
||||
# potentially defined variables, e.g.:
|
||||
#
|
||||
# set_default_arg1(BUILD_NAME ${TRAVIS_BUILD_NAME} ${BUILD_NAME})
|
||||
#
|
||||
macro(SET_DEFAULT_ARG1 VAR)
|
||||
if(NOT DEFINED ${VAR})
|
||||
foreach(_ARG ${ARGN})
|
||||
if(NOT "${_ARG}" STREQUAL "")
|
||||
set(${VAR} ${_ARG})
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
endif()
|
||||
# remove these ctest configuration variables from the defines
|
||||
# passed to the Kokkos configuration
|
||||
if("${VAR}" IN_LIST KOKKOS_CMAKE_ARGS)
|
||||
list(REMOVE_ITEM KOKKOS_CMAKE_ARGS "${VAR}")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
# determine the default working directory
|
||||
if(NOT "$ENV{WORKSPACE}" STREQUAL "")
|
||||
set(WORKING_DIR "$ENV{WORKSPACE}")
|
||||
else()
|
||||
get_filename_component(WORKING_DIR ${CMAKE_CURRENT_LIST_DIR} DIRECTORY)
|
||||
endif()
|
||||
|
||||
# determine the hostname
|
||||
execute_process(COMMAND hostname
|
||||
OUTPUT_VARIABLE HOSTNAME
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
SET_DEFAULT(HOSTNAME "$ENV{HOSTNAME}")
|
||||
|
||||
# get the number of processors
|
||||
include(ProcessorCount)
|
||||
ProcessorCount(NUM_PROCESSORS)
|
||||
|
||||
# find git
|
||||
find_package(Git QUIET)
|
||||
if(NOT GIT_EXECUTABLE)
|
||||
unset(GIT_EXECUTABLE CACHE)
|
||||
unset(GIT_EXECUTABLE)
|
||||
endif()
|
||||
|
||||
function(EXECUTE_GIT_COMMAND VAR)
|
||||
set(${VAR} "" PARENT_SCOPE)
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} ${ARGN}
|
||||
OUTPUT_VARIABLE VAL
|
||||
RESULT_VARIABLE RET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||
ERROR_QUIET)
|
||||
string(REPLACE ";" " " _CMD "${GIT_EXECUTABLE} ${ARGN}")
|
||||
set(LAST_GIT_COMMAND "${_CMD}" PARENT_SCOPE)
|
||||
if(RET EQUAL 0)
|
||||
set(${VAR} "${VAL}" PARENT_SCOPE)
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# just gets the git branch name if available
|
||||
function(GET_GIT_BRANCH_NAME VAR)
|
||||
execute_git_command(GIT_BRANCH branch --show-current)
|
||||
set(_INVALID "%D" "HEAD")
|
||||
if(NOT GIT_BRANCH OR "${GIT_BRANCH}" IN_LIST _INVALID)
|
||||
execute_git_command(GIT_BRANCH show -s --format=%D)
|
||||
if(NOT GIT_BRANCH OR "${GIT_BRANCH}" IN_LIST _INVALID)
|
||||
execute_git_command(GIT_BRANCH --describe all)
|
||||
endif()
|
||||
endif()
|
||||
#
|
||||
if(GIT_BRANCH)
|
||||
string(REPLACE " " ";" _DESC "${GIT_BRANCH}")
|
||||
# just set it to last one via loop instead of wonky cmake index manip
|
||||
foreach(_ITR ${_DESC})
|
||||
set(GIT_BRANCH "${_ITR}")
|
||||
endforeach()
|
||||
set(${VAR} "${GIT_BRANCH}" PARENT_SCOPE)
|
||||
message(STATUS "GIT BRANCH via '${LAST_GIT_COMMAND}': ${GIT_BRANCH}")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# just gets the git branch name if available
|
||||
function(GET_GIT_AUTHOR_NAME VAR)
|
||||
execute_git_command(GIT_AUTHOR show -s --format=%an)
|
||||
if(GIT_AUTHOR)
|
||||
string(LENGTH "${GIT_AUTHOR}" STRLEN)
|
||||
# if the build name gets too long, this can cause submission errors
|
||||
if(STRLEN GREATER 24)
|
||||
# remove middle initial
|
||||
string(REGEX REPLACE " [A-Z]\. " " " GIT_AUTHOR "${GIT_AUTHOR}")
|
||||
# get first and sur name
|
||||
string(REGEX REPLACE "([A-Za-z]+) ([A-Za-z]+)" "\\1" F_NAME "${GIT_AUTHOR}")
|
||||
string(REGEX REPLACE "([A-Za-z]+) ([A-Za-z]+)" "\\2" S_NAME "${GIT_AUTHOR}")
|
||||
if(S_NAME)
|
||||
set(GIT_AUTHOR "${S_NAME}")
|
||||
elseif(F_NAME)
|
||||
set(GIT_AUTHOR "${F_NAME}")
|
||||
endif()
|
||||
endif()
|
||||
# remove any spaces, quotes, periods, etc.
|
||||
string(REGEX REPLACE "[ ',;_\.\"]+" "" GIT_AUTHOR "${GIT_AUTHOR}")
|
||||
set(${VAR} "${GIT_AUTHOR}" PARENT_SCOPE)
|
||||
message(STATUS "GIT AUTHOR via '${LAST_GIT_COMMAND}': ${GIT_AUTHOR}")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# get the name of the branch
|
||||
GET_GIT_BRANCH_NAME(GIT_BRANCH)
|
||||
# get the name of the author
|
||||
GET_GIT_AUTHOR_NAME(GIT_AUTHOR)
|
||||
# author, prefer git method for consistency
|
||||
SET_DEFAULT_ARG1(AUTHOR ${GIT_AUTHOR} $ENV{GIT_AUTHOR} $ENV{AUTHOR})
|
||||
# SLUG == owner_name/repo_name
|
||||
SET_DEFAULT_ARG1(SLUG $ENV{TRAVIS_PULL_REQUEST_SLUG} $ENV{TRAVIS_REPO_SLUG} $ENV{APPVEYOR_REPO_NAME} $ENV{PULL_REQUEST_SLUG} $ENV{REPO_SLUG})
|
||||
# branch name
|
||||
SET_DEFAULT_ARG1(BRANCH $ENV{TRAVIS_PULL_REQUEST_BRANCH} $ENV{TRAVIS_BRANCH} $ENV{APPVEYOR_PULL_REQUEST_HEAD_REPO_BRANCH} $ENV{APPVEYOR_REPO_BRANCH} $ENV{GIT_BRANCH} $ENV{BRANCH_NAME} $ENV{BRANCH} ${GIT_BRANCH})
|
||||
# pull request number
|
||||
SET_DEFAULT_ARG1(PULL_REQUEST_NUM $ENV{TRAVIS_PULL_REQUEST} $ENV{CHANGE_ID} $ENV{APPVEYOR_PULL_REQUEST_NUMBER} $ENV{PULL_REQUEST_NUM})
|
||||
# get the event type, e.g. push, pull_request, api, cron, etc.
|
||||
SET_DEFAULT_ARG1(EVENT_TYPE $ENV{TRAVIS_EVENT_TYPE} ${EVENT_TYPE})
|
||||
|
||||
if("${BRANCH}" STREQUAL "")
|
||||
message(STATUS "Checked: environment variables for Travis, Appveyor, Jenkins (git plugin), BRANCH_NAME, BRANCH and 'git branch --show-current'")
|
||||
message(FATAL_ERROR "Error! Git branch could not be determined. Please provide -DBRANCH=<name>")
|
||||
endif()
|
||||
|
||||
#----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# Set default values if not provided on command-line
|
||||
#
|
||||
#----------------------------------------------------------------------------------------#
|
||||
|
||||
SET_DEFAULT(SOURCE_DIR "${WORKING_DIR}") # source directory
|
||||
SET_DEFAULT(BINARY_DIR "${WORKING_DIR}/build") # build directory
|
||||
SET_DEFAULT(BUILD_TYPE "${CMAKE_BUILD_TYPE}") # Release, Debug, etc.
|
||||
SET_DEFAULT(MODEL "Continuous") # Continuous, Nightly, or Experimental
|
||||
SET_DEFAULT(JOBS 1) # number of parallel ctests
|
||||
SET_DEFAULT(CTEST_COMMAND "${CMAKE_CTEST_COMMAND}") # just in case
|
||||
SET_DEFAULT(CTEST_ARGS "-V --output-on-failure") # extra arguments when ctest is called
|
||||
SET_DEFAULT(GIT_EXECUTABLE "git") # ctest_update
|
||||
SET_DEFAULT(TARGET "all") # build target
|
||||
SET_DEFAULT_ARG1(SITE "$ENV{SITE}"
|
||||
"${HOSTNAME}") # update site
|
||||
SET_DEFAULT_ARG1(BUILD_JOBS "$ENV{BUILD_JOBS}"
|
||||
"${NUM_PROCESSORS}") # number of parallel compile jobs
|
||||
#
|
||||
# The variable below correspond to ctest arguments, i.e. START,END,STRIDE are
|
||||
# '-I START,END,STRIDE'
|
||||
#
|
||||
SET_DEFAULT(START "")
|
||||
SET_DEFAULT(END "")
|
||||
SET_DEFAULT(STRIDE "")
|
||||
SET_DEFAULT(INCLUDE "")
|
||||
SET_DEFAULT(EXCLUDE "")
|
||||
SET_DEFAULT(INCLUDE_LABEL "")
|
||||
SET_DEFAULT(EXCLUDE_LABEL "")
|
||||
SET_DEFAULT(PARALLEL_LEVEL "")
|
||||
SET_DEFAULT(STOP_TIME "")
|
||||
SET_DEFAULT(LABELS "")
|
||||
SET_DEFAULT(NOTES "")
|
||||
|
||||
# default static build tag for Nightly
|
||||
set(BUILD_TAG "${BRANCH}")
|
||||
|
||||
if(NOT BUILD_TYPE)
|
||||
# default for kokkos if not specified
|
||||
set(BUILD_TYPE "RelWithDebInfo")
|
||||
endif()
|
||||
|
||||
# generate dynamic name if continuous or experimental model
|
||||
if(NOT "${MODEL}" STREQUAL "Nightly")
|
||||
if(EVENT_TYPE AND PULL_REQUEST_NUM)
|
||||
# e.g. pull_request/123
|
||||
if(AUTHOR)
|
||||
set(BUILD_TAG "${AUTHOR}/${EVENT_TYPE}/${PULL_REQUEST_NUM}")
|
||||
else()
|
||||
set(BUILD_TAG "${EVENT_TYPE}/${PULL_REQUEST_NUM}")
|
||||
endif()
|
||||
elseif(SLUG)
|
||||
# e.g. owner_name/repo_name
|
||||
set(BUILD_TAG "${SLUG}")
|
||||
elseif(AUTHOR)
|
||||
set(BUILD_TAG "${AUTHOR}/${BRANCH}")
|
||||
endif()
|
||||
if(EVENT_TYPE AND NOT PULL_REQUEST_NUM)
|
||||
set(BUILD_TAG "${BUILD_TAG}-${EVENT_TYPE}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# unnecessary
|
||||
string(REPLACE "/remotes/" "/" BUILD_TAG "${BUILD_TAG}")
|
||||
string(REPLACE "/origin/" "/" BUILD_TAG "${BUILD_TAG}")
|
||||
|
||||
message(STATUS "BUILD_TAG: ${BUILD_TAG}")
|
||||
|
||||
set(BUILD_NAME "[${BUILD_TAG}] [${BUILD_NAME}-${BUILD_TYPE}]")
|
||||
|
||||
# colons in build name create extra (empty) entries in CDash
|
||||
string(REPLACE ":" "-" BUILD_NAME "${BUILD_NAME}")
|
||||
# unnecessary info
|
||||
string(REPLACE "/merge]" "]" BUILD_NAME "${BUILD_NAME}")
|
||||
# consistency
|
||||
string(REPLACE "/pr/" "/pull/" BUILD_NAME "${BUILD_NAME}")
|
||||
string(REPLACE "pull_request/" "pull/" BUILD_NAME "${BUILD_NAME}")
|
||||
# miscellaneous from missing fields
|
||||
string(REPLACE "--" "-" BUILD_NAME "${BUILD_NAME}")
|
||||
string(REPLACE "-]" "]" BUILD_NAME "${BUILD_NAME}")
|
||||
|
||||
# check binary directory
|
||||
if(EXISTS ${BINARY_DIR})
|
||||
if(NOT IS_DIRECTORY "${BINARY_DIR}")
|
||||
message(FATAL_ERROR "Error! '${BINARY_DIR}' already exists and is not a directory!")
|
||||
endif()
|
||||
file(GLOB BINARY_DIR_FILES "${BINARY_DIR}/*")
|
||||
if(NOT "${BINARY_DIR_FILES}" STREQUAL "")
|
||||
message(FATAL_ERROR "Error! '${BINARY_DIR}' already exists and is not empty!")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
get_filename_component(SOURCE_REALDIR ${SOURCE_DIR} REALPATH)
|
||||
get_filename_component(BINARY_REALDIR ${BINARY_DIR} REALPATH)
|
||||
|
||||
#----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# Generate the CTestConfig.cmake
|
||||
#
|
||||
#----------------------------------------------------------------------------------------#
|
||||
|
||||
set(CONFIG_ARGS)
|
||||
foreach(_ARG ${KOKKOS_CMAKE_ARGS})
|
||||
if(NOT "${${_ARG}}" STREQUAL "")
|
||||
get_property(_ARG_TYPE CACHE ${_ARG} PROPERTY TYPE)
|
||||
if("${_ARG_TYPE}" STREQUAL "UNINITIALIZED")
|
||||
if("${${_ARG}}" STREQUAL "ON" OR "${${_ARG}}" STREQUAL "OFF")
|
||||
set(_ARG_TYPE "BOOL")
|
||||
elseif(EXISTS "${${_ARG}}" AND NOT IS_DIRECTORY "${${_ARG}}")
|
||||
set(_ARG_TYPE "FILEPATH")
|
||||
elseif(EXISTS "${${_ARG}}" AND IS_DIRECTORY "${${_ARG}}")
|
||||
set(_ARG_TYPE "PATH")
|
||||
elseif(NOT "${${_ARG}}" STREQUAL "")
|
||||
set(_ARG_TYPE "STRING")
|
||||
endif()
|
||||
endif()
|
||||
set(CONFIG_ARGS "${CONFIG_ARGS}set(${_ARG} \"${${_ARG}}\" CACHE ${_ARG_TYPE} \"\")\n")
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
file(WRITE ${BINARY_REALDIR}/initial-cache.cmake
|
||||
"
|
||||
set(CMAKE_CXX_FLAGS \"${CMAKE_CXX_FLAGS}\" CACHE STRING \"\")
|
||||
${CONFIG_ARGS}
|
||||
")
|
||||
|
||||
file(READ ${BINARY_REALDIR}/initial-cache.cmake _CACHE_INFO)
|
||||
message(STATUS "Initial cache:\n${_CACHE_INFO}")
|
||||
|
||||
# initialize the cache
|
||||
set(CONFIG_ARGS "-C ${BINARY_REALDIR}/initial-cache.cmake")
|
||||
|
||||
|
||||
# generate the CTestConfig.cmake
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_LIST_DIR}/CTestConfig.cmake.in
|
||||
${BINARY_REALDIR}/CTestConfig.cmake
|
||||
@ONLY)
|
||||
|
||||
# copy/generate the dashboard script
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_LIST_DIR}/KokkosCTest.cmake.in
|
||||
${BINARY_REALDIR}/KokkosCTest.cmake
|
||||
@ONLY)
|
||||
|
||||
# custom CTest settings go in ${BINARY_DIR}/CTestCustom.cmake
|
||||
execute_process(
|
||||
COMMAND ${CMAKE_COMMAND} -E touch CTestCustom.cmake
|
||||
WORKING_DIRECTORY ${BINARY_REALDIR}
|
||||
)
|
||||
|
||||
#----------------------------------------------------------------------------------------#
|
||||
#
|
||||
# Execute CTest
|
||||
#
|
||||
#----------------------------------------------------------------------------------------#
|
||||
|
||||
message(STATUS "")
|
||||
message(STATUS "BUILD_NAME: ${BUILD_NAME}")
|
||||
message(STATUS "Executing '${CTEST_COMMAND} -S KokkosCTest.cmake ${CTEST_ARGS}'...")
|
||||
message(STATUS "")
|
||||
|
||||
# e.g. -DCTEST_ARGS="--output-on-failure -VV" should really be -DCTEST_ARGS="--output-on-failure;-VV"
|
||||
string(REPLACE " " ";" CTEST_ARGS "${CTEST_ARGS}")
|
||||
|
||||
execute_process(
|
||||
COMMAND ${CTEST_COMMAND} -S KokkosCTest.cmake ${CTEST_ARGS}
|
||||
RESULT_VARIABLE RET
|
||||
WORKING_DIRECTORY ${BINARY_REALDIR}
|
||||
)
|
||||
|
||||
# ensure that any non-zero result variable gets propagated
|
||||
if(NOT RET EQUAL 0)
|
||||
message(FATAL_ERROR "CTest return non-zero exit code: ${RET}")
|
||||
endif()
|
||||
@ -1,261 +0,0 @@
|
||||
cmake_minimum_required(VERSION 3.16 FATAL_ERROR)
|
||||
|
||||
if(EXISTS "${CMAKE_CURRENT_LIST_DIR}/CTestConfig.cmake")
|
||||
include("${CMAKE_CURRENT_LIST_DIR}/CTestConfig.cmake")
|
||||
endif()
|
||||
|
||||
include(ProcessorCount)
|
||||
ProcessorCount(CTEST_PROCESSOR_COUNT)
|
||||
|
||||
cmake_policy(SET CMP0009 NEW)
|
||||
cmake_policy(SET CMP0011 NEW)
|
||||
|
||||
# ---------------------------------------------------------------------------- #
|
||||
# -- Commands
|
||||
# ---------------------------------------------------------------------------- #
|
||||
find_program(CTEST_CMAKE_COMMAND NAMES cmake)
|
||||
find_program(CTEST_UNAME_COMMAND NAMES uname)
|
||||
|
||||
find_program(CTEST_BZR_COMMAND NAMES bzr)
|
||||
find_program(CTEST_CVS_COMMAND NAMES cvs)
|
||||
find_program(CTEST_GIT_COMMAND NAMES git)
|
||||
find_program(CTEST_HG_COMMAND NAMES hg)
|
||||
find_program(CTEST_P4_COMMAND NAMES p4)
|
||||
find_program(CTEST_SVN_COMMAND NAMES svn)
|
||||
|
||||
find_program(VALGRIND_COMMAND NAMES valgrind)
|
||||
find_program(GCOV_COMMAND NAMES gcov)
|
||||
find_program(LCOV_COMMAND NAMES llvm-cov)
|
||||
find_program(MEMORYCHECK_COMMAND NAMES valgrind )
|
||||
|
||||
set(MEMORYCHECK_TYPE Valgrind)
|
||||
# set(MEMORYCHECK_TYPE Purify)
|
||||
# set(MEMORYCHECK_TYPE BoundsChecker)
|
||||
# set(MEMORYCHECK_TYPE ThreadSanitizer)
|
||||
# set(MEMORYCHECK_TYPE AddressSanitizer)
|
||||
# set(MEMORYCHECK_TYPE LeakSanitizer)
|
||||
# set(MEMORYCHECK_TYPE MemorySanitizer)
|
||||
# set(MEMORYCHECK_TYPE UndefinedBehaviorSanitizer)
|
||||
set(MEMORYCHECK_COMMAND_OPTIONS "--trace-children=yes --leak-check=full")
|
||||
|
||||
# ---------------------------------------------------------------------------- #
|
||||
# -- Settings
|
||||
# ---------------------------------------------------------------------------- #
|
||||
## -- Process timeout in seconds
|
||||
set(CTEST_TIMEOUT "7200")
|
||||
## -- Set output to English
|
||||
set(ENV{LC_MESSAGES} "en_EN" )
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------- #
|
||||
# -- Copy ctest configuration file
|
||||
# ---------------------------------------------------------------------------- #
|
||||
macro(COPY_CTEST_CONFIG_FILES)
|
||||
|
||||
foreach(_FILE CTestConfig.cmake CTestCustom.cmake)
|
||||
|
||||
# if current directory is not binary or source directory
|
||||
if(NOT "${CMAKE_CURRENT_LIST_DIR}" STREQUAL "${CTEST_BINARY_DIRECTORY}" AND
|
||||
NOT "${CTEST_SOURCE_DIRECTORY}" STREQUAL "${CTEST_BINARY_DIRECTORY}")
|
||||
|
||||
# if file exists in current directory
|
||||
if(EXISTS ${CMAKE_CURRENT_LIST_DIR}/${_FILE})
|
||||
configure_file(${CMAKE_CURRENT_LIST_DIR}/${_FILE}
|
||||
${CTEST_BINARY_DIRECTORY}/${_FILE} COPYONLY)
|
||||
endif()
|
||||
|
||||
# if source and binary differ
|
||||
elseif(NOT "${CTEST_SOURCE_DIRECTORY}" STREQUAL "${CTEST_BINARY_DIRECTORY}")
|
||||
|
||||
# if file exists in source directory but not in binary directory
|
||||
if(EXISTS ${CTEST_SOURCE_DIRECTORY}/${_FILE} AND
|
||||
NOT EXISTS ${CTEST_BINARY_DIRECTORY}/${_FILE})
|
||||
configure_file(${CTEST_SOURCE_DIRECTORY}/${_FILE}
|
||||
${CTEST_BINARY_DIRECTORY}/${_FILE} COPYONLY)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
endforeach()
|
||||
|
||||
endmacro()
|
||||
|
||||
ctest_read_custom_files("${CMAKE_CURRENT_LIST_DIR}")
|
||||
|
||||
message(STATUS "CTEST_MODEL: ${CTEST_MODEL}")
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# Start
|
||||
#
|
||||
message(STATUS "")
|
||||
message(STATUS "[${CTEST_BUILD_NAME}] Running START_CTEST stage...")
|
||||
message(STATUS "")
|
||||
|
||||
ctest_start(${CTEST_MODEL} TRACK ${CTEST_MODEL} ${APPEND_CTEST}
|
||||
${CTEST_SOURCE_DIRECTORY} ${CTEST_BINARY_DIRECTORY})
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# Config
|
||||
#
|
||||
copy_ctest_config_files()
|
||||
ctest_read_custom_files("${CTEST_BINARY_DIRECTORY}")
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# Update
|
||||
#
|
||||
message(STATUS "")
|
||||
message(STATUS "[${CTEST_BUILD_NAME}] Running CTEST_UPDATE stage...")
|
||||
message(STATUS "")
|
||||
|
||||
ctest_update(SOURCE "${CTEST_SOURCE_DIRECTORY}"
|
||||
RETURN_VALUE up_ret)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# Configure
|
||||
#
|
||||
message(STATUS "")
|
||||
message(STATUS "[${CTEST_BUILD_NAME}] Running CTEST_CONFIGURE stage...")
|
||||
message(STATUS "")
|
||||
|
||||
ctest_configure(BUILD "${CTEST_BINARY_DIRECTORY}"
|
||||
SOURCE ${CTEST_SOURCE_DIRECTORY}
|
||||
${APPEND_CTEST}
|
||||
OPTIONS "${CTEST_CONFIGURE_OPTIONS}"
|
||||
RETURN_VALUE config_ret)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# Echo configure log bc Damien wants to delay merging this PR for eternity
|
||||
#
|
||||
file(GLOB _configure_log "${CTEST_BINARY_DIRECTORY}/Testing/Temporary/LastConfigure*.log")
|
||||
# should only have one but loop just for safety
|
||||
foreach(_LOG ${_configure_log})
|
||||
file(READ ${_LOG} _LOG_MESSAGE)
|
||||
message(STATUS "Configure Log: ${_LOG}")
|
||||
message(STATUS "\n${_LOG_MESSAGE}\n")
|
||||
endforeach()
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# Build
|
||||
#
|
||||
message(STATUS "")
|
||||
message(STATUS "[${CTEST_BUILD_NAME}] Running CTEST_BUILD stage...")
|
||||
message(STATUS "")
|
||||
|
||||
ctest_build(BUILD "${CTEST_BINARY_DIRECTORY}"
|
||||
${APPEND_CTEST}
|
||||
RETURN_VALUE build_ret)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# Echo build log bc Damien wants to delay merging this PR for eternity
|
||||
#
|
||||
file(GLOB _build_log "${CTEST_BINARY_DIRECTORY}/Testing/Temporary/LastBuild*.log")
|
||||
# should only have one but loop just for safety
|
||||
foreach(_LOG ${_build_log})
|
||||
file(READ ${_LOG} _LOG_MESSAGE)
|
||||
message(STATUS "Build Log: ${_LOG}")
|
||||
message(STATUS "\n${_LOG_MESSAGE}\n")
|
||||
endforeach()
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# Test
|
||||
#
|
||||
message(STATUS "")
|
||||
message(STATUS "[${CTEST_BUILD_NAME}] Running CTEST_TEST stage...")
|
||||
message(STATUS "")
|
||||
|
||||
ctest_test(RETURN_VALUE test_ret
|
||||
${APPEND_CTEST}
|
||||
${START_CTEST}
|
||||
${END_CTEST}
|
||||
${STRIDE_CTEST}
|
||||
${INCLUDE_CTEST}
|
||||
${EXCLUDE_CTEST}
|
||||
${INCLUDE_LABEL_CTEST}
|
||||
${EXCLUDE_LABEL_CTEST}
|
||||
${PARALLEL_LEVEL_CTEST}
|
||||
${STOP_TIME_CTEST}
|
||||
SCHEDULE_RANDOM OFF)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# Coverage
|
||||
#
|
||||
message(STATUS "")
|
||||
message(STATUS "[${CTEST_BUILD_NAME}] Running CTEST_COVERAGE stage...")
|
||||
message(STATUS "")
|
||||
|
||||
execute_process(COMMAND ${CTEST_COVERAGE_COMMAND} ${CTEST_COVERAGE_EXTRA_FLAGS}
|
||||
WORKING_DIRECTORY ${CTEST_BINARY_DIRECTORY}
|
||||
ERROR_QUIET)
|
||||
|
||||
ctest_coverage(${APPEND_CTEST}
|
||||
${CTEST_COVERAGE_LABELS}
|
||||
RETURN_VALUE cov_ret)
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# MemCheck
|
||||
#
|
||||
message(STATUS "")
|
||||
message(STATUS "[${CTEST_BUILD_NAME}] Running CTEST_MEMCHECK stage...")
|
||||
message(STATUS "")
|
||||
|
||||
ctest_memcheck(RETURN_VALUE mem_ret
|
||||
${APPEND_CTEST}
|
||||
${START_CTEST}
|
||||
${END_CTEST}
|
||||
${STRIDE_CTEST}
|
||||
${INCLUDE_CTEST}
|
||||
${EXCLUDE_CTEST}
|
||||
${INCLUDE_LABEL_CTEST}
|
||||
${EXCLUDE_LABEL_CTEST}
|
||||
${PARALLEL_LEVEL_CTEST})
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# Submit
|
||||
#
|
||||
message(STATUS "")
|
||||
message(STATUS "[${CTEST_BUILD_NAME}] Running CTEST_SUBMIT stage...")
|
||||
message(STATUS "")
|
||||
|
||||
file(GLOB_RECURSE NOTE_FILES "${CTEST_BINARY_DIRECTORY}/*CTestNotes.cmake")
|
||||
foreach(_FILE ${NOTE_FILES})
|
||||
message(STATUS "Including CTest notes files: \"${_FILE}\"...")
|
||||
include("${_FILE}")
|
||||
endforeach()
|
||||
|
||||
# capture submit error so it doesn't fail because of a submission error
|
||||
ctest_submit(RETURN_VALUE submit_ret
|
||||
RETRY_COUNT 2
|
||||
RETRY_DELAY 10
|
||||
CAPTURE_CMAKE_ERROR submit_err)
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# Submit
|
||||
#
|
||||
message(STATUS "")
|
||||
message(STATUS "[${CTEST_BUILD_NAME}] Finished ${CTEST_MODEL} Stages (${STAGES})")
|
||||
message(STATUS "")
|
||||
|
||||
|
||||
#-------------------------------------------------------------------------#
|
||||
# Non-zero exit codes for important errors
|
||||
#
|
||||
if(NOT config_ret EQUAL 0)
|
||||
message(FATAL_ERROR "Error during configuration! Exit code: ${config_ret}")
|
||||
endif()
|
||||
|
||||
if(NOT build_ret EQUAL 0)
|
||||
message(FATAL_ERROR "Error during build! Exit code: ${build_ret}")
|
||||
endif()
|
||||
|
||||
if(NOT test_ret EQUAL 0)
|
||||
message(FATAL_ERROR "Error during testing! Exit code: ${test_ret}")
|
||||
endif()
|
||||
@ -41,6 +41,7 @@
|
||||
#cmakedefine KOKKOS_ENABLE_CUDA_LAMBDA
|
||||
#cmakedefine KOKKOS_ENABLE_CUDA_CONSTEXPR
|
||||
#cmakedefine KOKKOS_ENABLE_CUDA_LDG_INTRINSIC
|
||||
#cmakedefine KOKKOS_ENABLE_IMPL_CUDA_MALLOC_ASYNC
|
||||
#cmakedefine KOKKOS_ENABLE_HIP_RELOCATABLE_DEVICE_CODE
|
||||
#cmakedefine KOKKOS_ENABLE_HPX_ASYNC_DISPATCH
|
||||
#cmakedefine KOKKOS_ENABLE_DEBUG
|
||||
@ -49,17 +50,21 @@
|
||||
#cmakedefine KOKKOS_ENABLE_COMPILER_WARNINGS
|
||||
#cmakedefine KOKKOS_ENABLE_PROFILING_LOAD_PRINT
|
||||
#cmakedefine KOKKOS_ENABLE_TUNING
|
||||
#cmakedefine KOKKOS_ENABLE_DEPRECATED_CODE
|
||||
#cmakedefine KOKKOS_ENABLE_DEPRECATED_CODE_3
|
||||
#cmakedefine KOKKOS_ENABLE_DEPRECATION_WARNINGS
|
||||
#cmakedefine KOKKOS_ENABLE_LARGE_MEM_TESTS
|
||||
#cmakedefine KOKKOS_ENABLE_DUALVIEW_MODIFY_CHECK
|
||||
#cmakedefine KOKKOS_ENABLE_COMPLEX_ALIGN
|
||||
#cmakedefine KOKKOS_OPT_RANGE_AGGRESSIVE_VECTORIZATION
|
||||
#cmakedefine KOKKOS_ENABLE_IMPL_DESUL_ATOMICS
|
||||
#cmakedefine KOKKOS_OPT_RANGE_AGGRESSIVE_VECTORIZATION // deprecated
|
||||
#cmakedefine KOKKOS_ENABLE_AGGRESSIVE_VECTORIZATION
|
||||
|
||||
/* TPL Settings */
|
||||
#cmakedefine KOKKOS_ENABLE_HWLOC
|
||||
#cmakedefine KOKKOS_USE_LIBRT
|
||||
#cmakedefine KOKKOS_ENABLE_HBWSPACE
|
||||
#cmakedefine KOKKOS_ENABLE_LIBDL
|
||||
#cmakedefine KOKKOS_ENABLE_LIBQUADMATH
|
||||
#cmakedefine KOKKOS_IMPL_CUDA_CLANG_WORKAROUND
|
||||
|
||||
#cmakedefine KOKKOS_COMPILER_CUDA_VERSION @KOKKOS_COMPILER_CUDA_VERSION@
|
||||
@ -79,6 +84,12 @@
|
||||
#cmakedefine KOKKOS_ARCH_POWER8
|
||||
#cmakedefine KOKKOS_ARCH_POWER9
|
||||
#cmakedefine KOKKOS_ARCH_INTEL_GEN
|
||||
#cmakedefine KOKKOS_ARCH_INTEL_DG1
|
||||
#cmakedefine KOKKOS_ARCH_INTEL_GEN9
|
||||
#cmakedefine KOKKOS_ARCH_INTEL_GEN11
|
||||
#cmakedefine KOKKOS_ARCH_INTEL_GEN12LP
|
||||
#cmakedefine KOKKOS_ARCH_INTEL_XEHP
|
||||
#cmakedefine KOKKOS_ARCH_INTEL_GPU
|
||||
#cmakedefine KOKKOS_ARCH_KEPLER
|
||||
#cmakedefine KOKKOS_ARCH_KEPLER30
|
||||
#cmakedefine KOKKOS_ARCH_KEPLER32
|
||||
@ -95,6 +106,7 @@
|
||||
#cmakedefine KOKKOS_ARCH_VOLTA70
|
||||
#cmakedefine KOKKOS_ARCH_VOLTA72
|
||||
#cmakedefine KOKKOS_ARCH_TURING75
|
||||
#cmakedefine KOKKOS_ARCH_AMPERE
|
||||
#cmakedefine KOKKOS_ARCH_AMPERE80
|
||||
#cmakedefine KOKKOS_ARCH_AMPERE86
|
||||
#cmakedefine KOKKOS_ARCH_AMD_ZEN
|
||||
|
||||
@ -29,7 +29,12 @@ ELSE()
|
||||
ENDIF()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TPLCUDA DEFAULT_MSG FOUND_CUDART FOUND_CUDA_DRIVER)
|
||||
IF(KOKKOS_CXX_HOST_COMPILER_ID STREQUAL PGI)
|
||||
SET(KOKKOS_CUDA_ERROR "Using NVHPC as host compiler requires at least CMake 3.20.1")
|
||||
ELSE()
|
||||
SET(KOKKOS_CUDA_ERROR DEFAULT_MSG)
|
||||
ENDIF()
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TPLCUDA ${KOKKOS_CUDA_ERROR} FOUND_CUDART FOUND_CUDA_DRIVER)
|
||||
IF (FOUND_CUDA_DRIVER AND FOUND_CUDART)
|
||||
KOKKOS_CREATE_IMPORTED_TPL(CUDA INTERFACE
|
||||
LINK_LIBRARIES CUDA::cuda_driver CUDA::cudart
|
||||
|
||||
1
lib/kokkos/cmake/Modules/FindTPLLIBQUADMATH.cmake
Normal file
1
lib/kokkos/cmake/Modules/FindTPLLIBQUADMATH.cmake
Normal file
@ -0,0 +1 @@
|
||||
KOKKOS_FIND_IMPORTED(LIBQUADMATH HEADER quadmath.h LIBRARY quadmath)
|
||||
46
lib/kokkos/cmake/deps/quadmath.cmake
Normal file
46
lib/kokkos/cmake/deps/quadmath.cmake
Normal file
@ -0,0 +1,46 @@
|
||||
# @HEADER
|
||||
# ************************************************************************
|
||||
#
|
||||
# Kokkos v. 3.0
|
||||
# Copyright (2020) National Technology & Engineering
|
||||
# Solutions of Sandia, LLC (NTESS).
|
||||
#
|
||||
# Under the terms of Contract DE-NA0003525 with NTESS,
|
||||
# the U.S. Government retains certain rights in this software.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# 3. Neither the name of the Corporation nor the names of the
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY
|
||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE
|
||||
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
# Questions? Contact Christian R. Trott (crtrott@sandia.gov)
|
||||
#
|
||||
# ************************************************************************
|
||||
# @HEADER
|
||||
|
||||
KOKKOS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES( quadmath
|
||||
REQUIRED_HEADERS quadmath.h
|
||||
REQUIRED_LIBS_NAMES quadmath
|
||||
)
|
||||
@ -67,8 +67,13 @@ KOKKOS_ARCH_OPTION(ZEN3 HOST "AMD Zen3 architecture")
|
||||
KOKKOS_ARCH_OPTION(VEGA900 GPU "AMD GPU MI25 GFX900")
|
||||
KOKKOS_ARCH_OPTION(VEGA906 GPU "AMD GPU MI50/MI60 GFX906")
|
||||
KOKKOS_ARCH_OPTION(VEGA908 GPU "AMD GPU MI100 GFX908")
|
||||
KOKKOS_ARCH_OPTION(VEGA90A GPU "" )
|
||||
KOKKOS_ARCH_OPTION(INTEL_GEN GPU "Intel GPUs Gen9+")
|
||||
|
||||
KOKKOS_ARCH_OPTION(INTEL_DG1 GPU "Intel Iris XeMAX GPU")
|
||||
KOKKOS_ARCH_OPTION(INTEL_GEN9 GPU "Intel GPU Gen9")
|
||||
KOKKOS_ARCH_OPTION(INTEL_GEN11 GPU "Intel GPU Gen11")
|
||||
KOKKOS_ARCH_OPTION(INTEL_GEN12LP GPU "Intel GPU Gen12LP")
|
||||
KOKKOS_ARCH_OPTION(INTEL_XEHP GPU "Intel GPU Xe-HP")
|
||||
|
||||
|
||||
IF(KOKKOS_ENABLE_COMPILER_WARNINGS)
|
||||
@ -76,6 +81,12 @@ IF(KOKKOS_ENABLE_COMPILER_WARNINGS)
|
||||
"-Wall" "-Wunused-parameter" "-Wshadow" "-pedantic"
|
||||
"-Wsign-compare" "-Wtype-limits" "-Wuninitialized")
|
||||
|
||||
# NOTE KOKKOS_ prefixed variable (all uppercase) is not set yet because TPLs are processed after ARCH
|
||||
IF(Kokkos_ENABLE_LIBQUADMATH)
|
||||
# warning: non-standard suffix on floating constant [-Wpedantic]
|
||||
LIST(REMOVE_ITEM COMMON_WARNINGS "-pedantic")
|
||||
ENDIF()
|
||||
|
||||
# OpenMPTarget compilers give erroneous warnings about sign comparison in loops
|
||||
IF(KOKKOS_ENABLE_OPENMPTARGET)
|
||||
LIST(REMOVE_ITEM COMMON_WARNINGS "-Wsign-compare")
|
||||
@ -86,7 +97,7 @@ IF(KOKKOS_ENABLE_COMPILER_WARNINGS)
|
||||
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
COMPILER_ID CMAKE_CXX_COMPILER_ID
|
||||
PGI NO-VALUE-SPECIFIED
|
||||
NVHPC NO-VALUE-SPECIFIED
|
||||
GNU ${GNU_WARNINGS}
|
||||
DEFAULT ${COMMON_WARNINGS}
|
||||
)
|
||||
@ -158,16 +169,18 @@ ENDIF()
|
||||
|
||||
IF (KOKKOS_ARCH_ARMV80)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
PGI NO-VALUE-SPECIFIED
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
NVHPC NO-VALUE-SPECIFIED
|
||||
DEFAULT -march=armv8-a
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF (KOKKOS_ARCH_ARMV81)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
PGI NO-VALUE-SPECIFIED
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
NVHPC NO-VALUE-SPECIFIED
|
||||
DEFAULT -march=armv8.1-a
|
||||
)
|
||||
ENDIF()
|
||||
@ -175,8 +188,9 @@ ENDIF()
|
||||
IF (KOKKOS_ARCH_ARMV8_THUNDERX)
|
||||
SET(KOKKOS_ARCH_ARMV80 ON) #Not a cache variable
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
PGI NO-VALUE-SPECIFIED
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
NVHPC NO-VALUE-SPECIFIED
|
||||
DEFAULT -march=armv8-a -mtune=thunderx
|
||||
)
|
||||
ENDIF()
|
||||
@ -184,23 +198,28 @@ ENDIF()
|
||||
IF (KOKKOS_ARCH_ARMV8_THUNDERX2)
|
||||
SET(KOKKOS_ARCH_ARMV81 ON) #Not a cache variable
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
PGI NO-VALUE-SPECIFIED
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
NVHPC NO-VALUE-SPECIFIED
|
||||
DEFAULT -mcpu=thunderx2t99 -mtune=thunderx2t99
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF (KOKKOS_ARCH_A64FX)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
NVHPC NO-VALUE-SPECIFIED
|
||||
DEFAULT -march=armv8.2-a+sve
|
||||
Clang -march=armv8.2-a+sve -msve-vector-bits=512
|
||||
GCC -march=armv8.2-a+sve -msve-vector-bits=512
|
||||
Clang -march=armv8.2-a+sve -msve-vector-bits=512
|
||||
GCC -march=armv8.2-a+sve -msve-vector-bits=512
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF (KOKKOS_ARCH_ZEN)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Intel -mavx2
|
||||
NVHPC -tp=zen
|
||||
DEFAULT -march=znver1 -mtune=znver1
|
||||
)
|
||||
SET(KOKKOS_ARCH_AMD_ZEN ON)
|
||||
@ -209,7 +228,9 @@ ENDIF()
|
||||
|
||||
IF (KOKKOS_ARCH_ZEN2)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Intel -mavx2
|
||||
NVHPC -tp=zen2
|
||||
DEFAULT -march=znver2 -mtune=znver2
|
||||
)
|
||||
SET(KOKKOS_ARCH_AMD_ZEN2 ON)
|
||||
@ -218,7 +239,9 @@ ENDIF()
|
||||
|
||||
IF (KOKKOS_ARCH_ZEN3)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Intel -mavx2
|
||||
NVHPC -tp=zen2
|
||||
DEFAULT -march=znver3 -mtune=znver3
|
||||
)
|
||||
SET(KOKKOS_ARCH_AMD_ZEN3 ON)
|
||||
@ -227,8 +250,9 @@ ENDIF()
|
||||
|
||||
IF (KOKKOS_ARCH_WSM)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Intel -xSSE4.2
|
||||
PGI -tp=nehalem
|
||||
NVHPC -tp=px
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
DEFAULT -msse4.2
|
||||
)
|
||||
@ -238,8 +262,9 @@ ENDIF()
|
||||
IF (KOKKOS_ARCH_SNB OR KOKKOS_ARCH_AMDAVX)
|
||||
SET(KOKKOS_ARCH_AVX ON)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Intel -mavx
|
||||
PGI -tp=sandybridge
|
||||
NVHPC -tp=sandybridge
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
DEFAULT -mavx
|
||||
)
|
||||
@ -248,8 +273,9 @@ ENDIF()
|
||||
IF (KOKKOS_ARCH_HSW)
|
||||
SET(KOKKOS_ARCH_AVX2 ON)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Intel -xCORE-AVX2
|
||||
PGI -tp=haswell
|
||||
NVHPC -tp=haswell
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
DEFAULT -march=core-avx2 -mtune=core-avx2
|
||||
)
|
||||
@ -258,8 +284,9 @@ ENDIF()
|
||||
IF (KOKKOS_ARCH_BDW)
|
||||
SET(KOKKOS_ARCH_AVX2 ON)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Intel -xCORE-AVX2
|
||||
PGI -tp=haswell
|
||||
NVHPC -tp=haswell
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
DEFAULT -march=core-avx2 -mtune=core-avx2 -mrtm
|
||||
)
|
||||
@ -269,8 +296,9 @@ IF (KOKKOS_ARCH_KNL)
|
||||
#avx512-mic
|
||||
SET(KOKKOS_ARCH_AVX512MIC ON) #not a cache variable
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Intel -xMIC-AVX512
|
||||
PGI NO-VALUE-SPECIFIED
|
||||
NVHPC -tp=knl
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
DEFAULT -march=knl -mtune=knl
|
||||
)
|
||||
@ -279,6 +307,7 @@ ENDIF()
|
||||
IF (KOKKOS_ARCH_KNC)
|
||||
SET(KOKKOS_USE_ISA_KNC ON)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
DEFAULT -mmic
|
||||
)
|
||||
ENDIF()
|
||||
@ -287,8 +316,9 @@ IF (KOKKOS_ARCH_SKX)
|
||||
#avx512-xeon
|
||||
SET(KOKKOS_ARCH_AVX512XEON ON)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Intel -xCORE-AVX512
|
||||
PGI NO-VALUE-SPECIFIED
|
||||
NVHPC -tp=skylake
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
DEFAULT -march=skylake-avx512 -mtune=skylake-avx512 -mrtm
|
||||
)
|
||||
@ -304,7 +334,8 @@ ENDIF()
|
||||
|
||||
IF (KOKKOS_ARCH_POWER7)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
PGI NO-VALUE-SPECIFIED
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
NVHPC NO-VALUE-SPECIFIED
|
||||
DEFAULT -mcpu=power7 -mtune=power7
|
||||
)
|
||||
SET(KOKKOS_USE_ISA_POWERPCBE ON)
|
||||
@ -312,16 +343,16 @@ ENDIF()
|
||||
|
||||
IF (KOKKOS_ARCH_POWER8)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
PGI NO-VALUE-SPECIFIED
|
||||
NVIDIA NO-VALUE-SPECIFIED
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
NVHPC -tp=pwr8
|
||||
DEFAULT -mcpu=power8 -mtune=power8
|
||||
)
|
||||
ENDIF()
|
||||
|
||||
IF (KOKKOS_ARCH_POWER9)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
PGI NO-VALUE-SPECIFIED
|
||||
NVIDIA NO-VALUE-SPECIFIED
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
NVHPC -tp=pwr9
|
||||
DEFAULT -mcpu=power9 -mtune=power9
|
||||
)
|
||||
ENDIF()
|
||||
@ -368,7 +399,7 @@ ENDIF()
|
||||
|
||||
IF (KOKKOS_ENABLE_SYCL)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
DEFAULT -fsycl
|
||||
DEFAULT -fsycl -fno-sycl-id-queries-fit-in-int
|
||||
)
|
||||
COMPILER_SPECIFIC_OPTIONS(
|
||||
DEFAULT -fsycl-unnamed-lambda
|
||||
@ -443,20 +474,58 @@ ENDFUNCTION()
|
||||
CHECK_AMDGPU_ARCH(VEGA900 gfx900) # Radeon Instinct MI25
|
||||
CHECK_AMDGPU_ARCH(VEGA906 gfx906) # Radeon Instinct MI50 and MI60
|
||||
CHECK_AMDGPU_ARCH(VEGA908 gfx908)
|
||||
CHECK_AMDGPU_ARCH(VEGA90A gfx90a)
|
||||
|
||||
IF(KOKKOS_ENABLE_HIP AND NOT AMDGPU_ARCH_ALREADY_SPECIFIED)
|
||||
MESSAGE(SEND_ERROR "HIP enabled but no AMD GPU architecture currently enabled. "
|
||||
"Please enable one AMD GPU architecture via -DKokkos_ARCH_{..}=ON'.")
|
||||
IF(KOKKOS_CXX_COMPILER_ID STREQUAL HIPCC)
|
||||
FIND_PROGRAM(ROCM_ENUMERATOR rocm_agent_enumerator)
|
||||
EXECUTE_PROCESS(COMMAND ${ROCM_ENUMERATOR} OUTPUT_VARIABLE GPU_ARCHS)
|
||||
STRING(LENGTH "${GPU_ARCHS}" len_str)
|
||||
# enumerator always output gfx000 as the first line
|
||||
IF(${len_str} LESS 8)
|
||||
MESSAGE(SEND_ERROR "HIP enabled but no AMD GPU architecture currently enabled. "
|
||||
"Please enable one AMD GPU architecture via -DKokkos_ARCH_{..}=ON'.")
|
||||
ENDIF()
|
||||
ELSE()
|
||||
MESSAGE(SEND_ERROR "HIP enabled but no AMD GPU architecture currently enabled. "
|
||||
"Please enable one AMD GPU architecture via -DKokkos_ARCH_{..}=ON'.")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
MACRO(CHECK_MULTIPLE_INTEL_ARCH)
|
||||
IF(KOKKOS_ARCH_INTEL_GPU)
|
||||
MESSAGE(FATAL_ERROR "Specifying multiple Intel GPU architectures is not allowed!")
|
||||
ENDIF()
|
||||
SET(KOKKOS_ARCH_INTEL_GPU ON)
|
||||
ENDMACRO()
|
||||
|
||||
IF(KOKKOS_ARCH_INTEL_GEN)
|
||||
CHECK_MULTIPLE_INTEL_ARCH()
|
||||
ENDIF()
|
||||
IF(KOKKOS_ARCH_INTEL_DG1)
|
||||
CHECK_MULTIPLE_INTEL_ARCH()
|
||||
ENDIF()
|
||||
IF(KOKKOS_ARCH_INTEL_GEN9)
|
||||
CHECK_MULTIPLE_INTEL_ARCH()
|
||||
ENDIF()
|
||||
IF(KOKKOS_ARCH_INTEL_GEN11)
|
||||
CHECK_MULTIPLE_INTEL_ARCH()
|
||||
ENDIF()
|
||||
IF(KOKKOS_ARCH_INTEL_GEN12LP)
|
||||
CHECK_MULTIPLE_INTEL_ARCH()
|
||||
ENDIF()
|
||||
IF(KOKKOS_ARCH_INTEL_XEHP)
|
||||
CHECK_MULTIPLE_INTEL_ARCH()
|
||||
ENDIF()
|
||||
|
||||
IF (KOKKOS_ENABLE_OPENMPTARGET)
|
||||
SET(CLANG_CUDA_ARCH ${KOKKOS_CUDA_ARCH_FLAG})
|
||||
IF (CLANG_CUDA_ARCH)
|
||||
STRING(REPLACE "sm_" "cc" PGI_CUDA_ARCH ${CLANG_CUDA_ARCH})
|
||||
STRING(REPLACE "sm_" "cc" NVHPC_CUDA_ARCH ${CLANG_CUDA_ARCH})
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
Clang -Xopenmp-target -march=${CLANG_CUDA_ARCH} -fopenmp-targets=nvptx64-nvidia-cuda
|
||||
XL -qtgtarch=${KOKKOS_CUDA_ARCH_FLAG}
|
||||
PGI -gpu=${PGI_CUDA_ARCH}
|
||||
XL -qtgtarch=${KOKKOS_CUDA_ARCH_FLAG}
|
||||
NVHPC -gpu=${NVHPC_CUDA_ARCH}
|
||||
)
|
||||
ENDIF()
|
||||
SET(CLANG_AMDGPU_ARCH ${KOKKOS_AMDGPU_ARCH_FLAG})
|
||||
@ -465,7 +534,7 @@ IF (KOKKOS_ENABLE_OPENMPTARGET)
|
||||
Clang -Xopenmp-target=amdgcn-amd-amdhsa -march=${CLANG_AMDGPU_ARCH} -fopenmp-targets=amdgcn-amd-amdhsa
|
||||
)
|
||||
ENDIF()
|
||||
IF (KOKKOS_ARCH_INTEL_GEN)
|
||||
IF (KOKKOS_ARCH_INTEL_GPU)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
IntelLLVM -fopenmp-targets=spir64 -D__STRICT_ANSI__
|
||||
)
|
||||
@ -485,7 +554,27 @@ IF (KOKKOS_ENABLE_SYCL)
|
||||
ENDIF()
|
||||
ELSEIF(KOKKOS_ARCH_INTEL_GEN)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
DEFAULT -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device skl"
|
||||
DEFAULT -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device gen9-"
|
||||
)
|
||||
ELSEIF(KOKKOS_ARCH_INTEL_GEN9)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
DEFAULT -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device gen9"
|
||||
)
|
||||
ELSEIF(KOKKOS_ARCH_INTEL_GEN11)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
DEFAULT -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device gen11"
|
||||
)
|
||||
ELSEIF(KOKKOS_ARCH_INTEL_GEN12LP)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
DEFAULT -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device gen12lp"
|
||||
)
|
||||
ELSEIF(KOKKOS_ARCH_INTEL_DG1)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
DEFAULT -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device dg1"
|
||||
)
|
||||
ELSEIF(KOKKOS_ARCH_INTEL_XEHP)
|
||||
COMPILER_SPECIFIC_FLAGS(
|
||||
DEFAULT -fsycl-targets=spir64_gen-unknown-unknown-sycldevice -Xsycl-target-backend "-device xehp"
|
||||
)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
@ -137,7 +137,7 @@ SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n Clang 4.0.0 or higher"
|
||||
SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n GCC 5.3.0 or higher")
|
||||
SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n Intel 17.0.0 or higher")
|
||||
SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n NVCC 9.2.88 or higher")
|
||||
SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n HIPCC 3.8.0 or higher")
|
||||
SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n HIPCC 4.2.0 or higher")
|
||||
SET(KOKKOS_MESSAGE_TEXT "${KOKKOS_MESSAGE_TEXT}\n PGI 17.4 or higher\n")
|
||||
|
||||
IF(KOKKOS_CXX_COMPILER_ID STREQUAL Clang)
|
||||
@ -158,13 +158,23 @@ ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL NVIDIA)
|
||||
ENDIF()
|
||||
SET(CMAKE_CXX_EXTENSIONS OFF CACHE BOOL "Kokkos turns off CXX extensions" FORCE)
|
||||
ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL HIPCC)
|
||||
IF(KOKKOS_CXX_COMPILER_VERSION VERSION_LESS 3.8.0)
|
||||
IF(KOKKOS_CXX_COMPILER_VERSION VERSION_LESS 4.2.0)
|
||||
MESSAGE(FATAL_ERROR "${KOKKOS_MESSAGE_TEXT}")
|
||||
ENDIF()
|
||||
ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL PGI)
|
||||
IF(KOKKOS_CXX_COMPILER_VERSION VERSION_LESS 17.4)
|
||||
MESSAGE(FATAL_ERROR "${KOKKOS_MESSAGE_TEXT}")
|
||||
ENDIF()
|
||||
# Treat PGI internally as NVHPC to simplify handling both compilers.
|
||||
# Before CMake 3.20 NVHPC was identified as PGI, nvc++ is
|
||||
# backward-compatible to pgc++.
|
||||
SET(KOKKOS_CXX_COMPILER_ID NVHPC CACHE STRING INTERNAL FORCE)
|
||||
ENDIF()
|
||||
|
||||
IF(NOT DEFINED KOKKOS_CXX_HOST_COMPILER_ID)
|
||||
SET(KOKKOS_CXX_HOST_COMPILER_ID ${KOKKOS_CXX_COMPILER_ID})
|
||||
ELSEIF(KOKKOS_CXX_HOST_COMPILER_ID STREQUAL PGI)
|
||||
SET(KOKKOS_CXX_HOST_COMPILER_ID NVHPC CACHE STRING INTERNAL FORCE)
|
||||
ENDIF()
|
||||
|
||||
STRING(REPLACE "." ";" VERSION_LIST ${KOKKOS_CXX_COMPILER_VERSION})
|
||||
|
||||
@ -62,7 +62,7 @@ IF(KOKKOS_ENABLE_OPENMP)
|
||||
COMPILER_ID KOKKOS_CXX_HOST_COMPILER_ID
|
||||
Clang -Xcompiler ${ClangOpenMPFlag}
|
||||
IntelLLVM -Xcompiler -fiopenmp
|
||||
PGI -Xcompiler -mp
|
||||
NVHPC -Xcompiler -mp
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
XL -Xcompiler -qsmp=omp
|
||||
DEFAULT -Xcompiler -fopenmp
|
||||
@ -72,7 +72,7 @@ IF(KOKKOS_ENABLE_OPENMP)
|
||||
Clang ${ClangOpenMPFlag}
|
||||
IntelLLVM -fiopenmp
|
||||
AppleClang -Xpreprocessor -fopenmp
|
||||
PGI -mp
|
||||
NVHPC -mp
|
||||
Cray NO-VALUE-SPECIFIED
|
||||
XL -qsmp=omp
|
||||
DEFAULT -fopenmp
|
||||
@ -94,7 +94,7 @@ IF (KOKKOS_ENABLE_OPENMPTARGET)
|
||||
Clang ${ClangOpenMPFlag} -Wno-openmp-mapping
|
||||
IntelLLVM -fiopenmp -Wno-openmp-mapping
|
||||
XL -qsmp=omp -qoffload -qnoeh
|
||||
PGI -mp=gpu
|
||||
NVHPC -mp=gpu
|
||||
DEFAULT -fopenmp
|
||||
)
|
||||
COMPILER_SPECIFIC_DEFS(
|
||||
|
||||
@ -26,9 +26,16 @@ KOKKOS_CFG_DEPENDS(OPTIONS COMPILER_ID)
|
||||
# Put a check in just in case people are using this option
|
||||
KOKKOS_DEPRECATED_LIST(OPTIONS ENABLE)
|
||||
|
||||
# Set the Default for Desul Atomics usage.
|
||||
set(_DESUL_ATOMICS_DEFAULT ON)
|
||||
|
||||
KOKKOS_ENABLE_OPTION(CUDA_RELOCATABLE_DEVICE_CODE OFF "Whether to enable relocatable device code (RDC) for CUDA")
|
||||
KOKKOS_ENABLE_OPTION(CUDA_UVM OFF "Whether to use unified memory (UM) for CUDA by default")
|
||||
KOKKOS_ENABLE_OPTION(CUDA_LDG_INTRINSIC OFF "Whether to use CUDA LDG intrinsics")
|
||||
# As of 08/12/2021 CudaMallocAsync causes issues if UCX is used as MPI communication layer.
|
||||
KOKKOS_ENABLE_OPTION(IMPL_CUDA_MALLOC_ASYNC OFF "Whether to enable CudaMallocAsync (requires CUDA Toolkit 11.2)")
|
||||
KOKKOS_ENABLE_OPTION(DEPRECATED_CODE_3 ON "Whether code deprecated in major release 3 is available" )
|
||||
KOKKOS_ENABLE_OPTION(DEPRECATION_WARNINGS ON "Whether to emit deprecation warnings" )
|
||||
KOKKOS_ENABLE_OPTION(HIP_RELOCATABLE_DEVICE_CODE OFF "Whether to enable relocatable device code (RDC) for HIP")
|
||||
KOKKOS_ENABLE_OPTION(HPX_ASYNC_DISPATCH OFF "Whether HPX supports asynchronous dispatch")
|
||||
KOKKOS_ENABLE_OPTION(TESTS OFF "Whether to build the unit tests")
|
||||
@ -50,6 +57,9 @@ KOKKOS_ENABLE_OPTION(TUNING OFF "Whether to create bindings for tu
|
||||
KOKKOS_ENABLE_OPTION(AGGRESSIVE_VECTORIZATION OFF "Whether to aggressively vectorize loops")
|
||||
KOKKOS_ENABLE_OPTION(LAUNCH_COMPILER ON "Whether to potentially use the launch compiler")
|
||||
|
||||
# This option will go away eventually, but allows fallback to old implementation when needed.
|
||||
KOKKOS_ENABLE_OPTION(IMPL_DESUL_ATOMICS ON "Whether to use desul based atomics - option only during beta")
|
||||
|
||||
IF (KOKKOS_ENABLE_CUDA)
|
||||
SET(KOKKOS_COMPILER_CUDA_VERSION "${KOKKOS_COMPILER_VERSION_MAJOR}${KOKKOS_COMPILER_VERSION_MINOR}")
|
||||
ENDIF()
|
||||
|
||||
@ -773,7 +773,7 @@ FUNCTION(kokkos_link_tpl TARGET)
|
||||
ENDFUNCTION()
|
||||
|
||||
FUNCTION(COMPILER_SPECIFIC_OPTIONS_HELPER)
|
||||
SET(COMPILERS NVIDIA PGI XL DEFAULT Cray Intel Clang AppleClang IntelLLVM GNU HIPCC Fujitsu)
|
||||
SET(COMPILERS NVIDIA NVHPC XL XLClang DEFAULT Cray Intel Clang AppleClang IntelLLVM GNU HIPCC Fujitsu)
|
||||
CMAKE_PARSE_ARGUMENTS(
|
||||
PARSE
|
||||
"LINK_OPTIONS;COMPILE_OPTIONS;COMPILE_DEFINITIONS;LINK_LIBRARIES"
|
||||
|
||||
@ -140,7 +140,7 @@ IF (NOT KOKKOS_CXX_STANDARD_FEATURE)
|
||||
IF(KOKKOS_CXX_COMPILER_ID STREQUAL Cray)
|
||||
INCLUDE(${KOKKOS_SRC_PATH}/cmake/cray.cmake)
|
||||
kokkos_set_cray_flags(${KOKKOS_CXX_STANDARD} ${KOKKOS_CXX_INTERMEDIATE_STANDARD})
|
||||
ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL PGI)
|
||||
ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL NVHPC)
|
||||
INCLUDE(${KOKKOS_SRC_PATH}/cmake/pgi.cmake)
|
||||
kokkos_set_pgi_flags(${KOKKOS_CXX_STANDARD} ${KOKKOS_CXX_INTERMEDIATE_STANDARD})
|
||||
ELSEIF(KOKKOS_CXX_COMPILER_ID STREQUAL Intel)
|
||||
|
||||
@ -67,6 +67,12 @@ SET(PTHREAD_DEFAULT OFF)
|
||||
ENDIF()
|
||||
KOKKOS_TPL_OPTION(PTHREAD ${PTHREAD_DEFAULT} TRIBITS Pthread)
|
||||
|
||||
IF(Trilinos_ENABLE_Kokkos AND TPL_ENABLE_quadmath)
|
||||
SET(LIBQUADMATH_DEFAULT ON)
|
||||
ELSE()
|
||||
SET(LIBQUADMATH_DEFAULT OFF)
|
||||
ENDIF()
|
||||
KOKKOS_TPL_OPTION(LIBQUADMATH ${LIBQUADMATH_DEFAULT} TRIBITS quadmath)
|
||||
|
||||
#Make sure we use our local FindKokkosCuda.cmake
|
||||
KOKKOS_IMPORT_TPL(HPX INTERFACE)
|
||||
@ -78,6 +84,7 @@ KOKKOS_IMPORT_TPL(LIBDL)
|
||||
KOKKOS_IMPORT_TPL(MEMKIND)
|
||||
KOKKOS_IMPORT_TPL(PTHREAD INTERFACE)
|
||||
KOKKOS_IMPORT_TPL(ROCM INTERFACE)
|
||||
KOKKOS_IMPORT_TPL(LIBQUADMATH)
|
||||
|
||||
#Convert list to newlines (which CMake doesn't always like in cache variables)
|
||||
STRING(REPLACE ";" "\n" KOKKOS_TPL_EXPORT_TEMP "${KOKKOS_TPL_EXPORTS}")
|
||||
|
||||
46
lib/kokkos/cmake/tpls/FindTPLquadmath.cmake
Normal file
46
lib/kokkos/cmake/tpls/FindTPLquadmath.cmake
Normal file
@ -0,0 +1,46 @@
|
||||
# @HEADER
|
||||
# ************************************************************************
|
||||
#
|
||||
# Kokkos v. 3.0
|
||||
# Copyright (2020) National Technology & Engineering
|
||||
# Solutions of Sandia, LLC (NTESS).
|
||||
#
|
||||
# Under the terms of Contract DE-NA0003525 with NTESS,
|
||||
# the U.S. Government retains certain rights in this software.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions are
|
||||
# met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# 3. Neither the name of the Corporation nor the names of the
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY NTESS "AS IS" AND ANY
|
||||
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL NTESS OR THE
|
||||
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
# Questions? Contact Christian R. Trott (crtrott@sandia.gov)
|
||||
#
|
||||
# ************************************************************************
|
||||
# @HEADER
|
||||
|
||||
TRIBITS_TPL_FIND_INCLUDE_DIRS_AND_LIBRARIES( quadmath
|
||||
REQUIRED_HEADERS quadmath.h
|
||||
REQUIRED_LIBS_NAMES quadmath
|
||||
)
|
||||
Reference in New Issue
Block a user