make hip-tests compileable with TheRock (#1624)
## Motivation Resolved: SWDEV-566226 The current implementation of agents inside of rocprof-systems keeps just the minimal necessary set of information required for populating the `info_agent` table inside of rocpd database. There is a sufficient amount of data that is being left out from database, so this change should fix that and store the additional agent information as an `extdata` row inside of `info_agent` table. ## Technical Details This PR introduces additional filed inside of `agent` structure inside which is representing the JSON formatted string of all the additional information we can acquire about particular agent. This data is processed and added during the initial fetching of agents, and afterwards pushed inside of the database. --------- Co-authored-by: David Galiffi <David.Galiffi@amd.com> * SWDEV-557412 - Incorporate proper chunk offset when remapping virtual memory (#1848) * SWDEV-557412 - Incorporate proper offset when remapping virtual memory * Fix condition to check if VMHeap allocation address matches a chunk address * Move offset calculation outside if/else block --------- Co-authored-by: JeniferC99 <150404595+JeniferC99@users.noreply.github.com> * SWDEV-567852 - Clean-up hip::init() (#1948) * SWDEV-559267 - Use CLPrint to DevLogPrintf with Log Level - detail debug. (#1160) * SWDEV-548892 - Stop using ocml isinf wrapper (#1854) * SWDEV-562708 - change default maximum SVM size to 256GB (#1731) * SWDEV-503089 - Fix and enable disabled HIP tests from math group (#1319) * SWDEV-503089 - Fix and enable disabled HIP tests from math group * SWDEV-503089 - Move single precision reduced run to a common function * SWDEV-548892 - Stop using ockl steadyctr function (#1882) Directly use the builtin * Implement PTL support (#1957) * Implement PTL support Signed-off-by: adapryor <Adam.pryor@amd.com> (cherry picked from commit 45bc31292e7940a3b8fca044ef7df22047b95733) Signed-off-by: Maisam Arif <Maisam.Arif@amd.com> --------- Signed-off-by: adapryor <Adam.pryor@amd.com> Signed-off-by: Maisam Arif <Maisam.Arif@amd.com> Co-authored-by: Maisam Arif <Maisam.Arif@amd.com> * SWDEV-558080 - Add recommended granularity (#1176) * Add recommended granularity * Improve granularity testing * Update based on feedback * Fix and enable VMM tests on cuda (#1855) * Fix and enable VMM tests on cuda * Minor syntax fixes --------- Co-authored-by: Rahul Manocha <rmanocha@amd.com> * [rocprofiler-systems] Add support for ompt_callback_thread_begin (#1681) * Add thread_begin callback * Make OMPT callbacks that are instant have start_ts = end_ts * SWDEV-567514: Remove default stream wait (#1977) - when virtual map command is called - can create deadlock Signed-off-by: sdashmiz <shadi.dashmiz@amd.com> * Fix flaky test Unit_hipStreamAddCallback_StrmSyncTiming (#2022) * Review comments * skip the 3 failing tests to merge hip-tests rocm-systems PR --------- Signed-off-by: Bindhiya Kanangot Balakrishnan <Bindhiya.KanangotBalakrishnan@amd.com> Signed-off-by: adapryor <Adam.pryor@amd.com> Signed-off-by: Maisam Arif <Maisam.Arif@amd.com> Signed-off-by: sdashmiz <shadi.dashmiz@amd.com> Co-authored-by: GunaShekar <agunashe@amd.com> Co-authored-by: agunashe <ajay.gunashekar@amd.com> Co-authored-by: Ethan Trinh <Ethan.Trinh@amd.com> Co-authored-by: JeniferC99 <150404595+JeniferC99@users.noreply.github.com> Co-authored-by: Victor Zhang <111778801+victzhan@users.noreply.github.com> Co-authored-by: German Andryeyev <56892148+gandryey@users.noreply.github.com> Co-authored-by: usrihari123 <srihari.u@amd.com> Co-authored-by: Bindhiya Kanangot Balakrishnan <Bindhiya.KanangotBalakrishnan@amd.com> Co-authored-by: anujshuk-amd <anujshuk@amd.com> Co-authored-by: itrowbri <Ian.Trowbridge@amd.com> Co-authored-by: marantic-amd <marantic@amd.com> Co-authored-by: David Galiffi <David.Galiffi@amd.com> Co-authored-by: cadolphe-amd <chris.adolphe@amd.com> Co-authored-by: Karthik Jayaprakash <54370791+kjayapra-amd@users.noreply.github.com> Co-authored-by: Matt Arsenault <Matthew.Arsenault@amd.com> Co-authored-by: Todd tiantuo Li <88386084+lttamd@users.noreply.github.com> Co-authored-by: amilanov-amd <Aleksandar.Milanov@amd.com> Co-authored-by: Adam Pryor <61172547+adam360x@users.noreply.github.com> Co-authored-by: Maisam Arif <Maisam.Arif@amd.com> Co-authored-by: AidanBeltonS <abeltons@amd.com> Co-authored-by: Rahul Manocha <153310294+manocharahul@users.noreply.github.com> Co-authored-by: Rahul Manocha <rmanocha@amd.com> Co-authored-by: Kian Cossettini <Kian.Cossettini@amd.com> Co-authored-by: Shadi Dashmiz <94885391+shadidashmiz@users.noreply.github.com> Co-authored-by: Ioannis Assiouras <38722728+iassiour@users.noreply.github.com> Co-authored-by: Ajay GunaShekar <86270081+agunashe@users.noreply.github.com>
이 커밋은 다음에 포함됨:
+116
-145
@@ -1,16 +1,52 @@
|
||||
cmake_minimum_required(VERSION 3.16.8)
|
||||
cmake_minimum_required(VERSION 3.20)
|
||||
|
||||
# to skip the simple compiler test
|
||||
set(CMAKE_C_COMPILER_WORKS 1)
|
||||
set(CMAKE_CXX_COMPILER_WORKS 1)
|
||||
|
||||
project(hiptests)
|
||||
project(hiptests LANGUAGES C CXX HIP)
|
||||
|
||||
option(ENABLE_ADDRESS_SANITIZER "Option to enable ASAN build" OFF)
|
||||
option(BUILD_SHARED_LIBS "Option for testing shared libraries" ON)
|
||||
|
||||
option(BUILD_UNIT_TESTS "Build unit tests" ON)
|
||||
option(BUILD_PERF_TESTS "Build perf tests" OFF)
|
||||
option(BUILD_STRESS_TESTS "Build stress tests" OFF)
|
||||
option(TEST_CLOCK_CYCLE "Option to use clock64" OFF)
|
||||
if (TEST_CLOCK_CYCLE)
|
||||
option(GENERATE_COVERATE "Generate coverage" OFF)
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
set(CMAKE_HIP_STANDARD 17)
|
||||
set(CMAKE_HIP_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_INSTALL_RPATH "$ORIGIN;$ORIGIN/../../lib")
|
||||
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||
|
||||
find_package(hip REQUIRED)
|
||||
find_package(hiprtc)
|
||||
find_package(Git)
|
||||
find_package(Python 3 COMPONENTS Interpreter REQUIRED)
|
||||
find_program(HIPCONFIG_EXEC hipconfig REQUIRED)
|
||||
# hip root dir is 3 levels down the hip-config.cmake file path
|
||||
set(HIP_PATH ${hip_DIR}/../../../)
|
||||
if(NOT DEFINED ROCM_PATH)
|
||||
set(ROCM_PATH "/opt/rocm")
|
||||
if(NOT EXISTS "${ROCM_PATH}")
|
||||
set(ROCM_PATH ${HIP_PATH})
|
||||
endif()
|
||||
endif()
|
||||
if(UNIX)
|
||||
find_program(ROCM_AGENT_ENUMERATOR_EXEC rocm_agent_enumerator REQUIRED)
|
||||
find_program(GCC_EXEC gcc)
|
||||
find_program(GXX_EXEC g++)
|
||||
else() # Win32
|
||||
find_program(LLVM_RC_EXEC NAMES llvm-rc llvm-rc.exe
|
||||
PATHS ${HIP_PATH} ${HIP_PATH}../lc/bin ${ROCM_PATH})
|
||||
endif()
|
||||
find_program(CLANG_CPP_EXEC NAMES clang-cpp clang-cpp.exe
|
||||
PATHS ${HIP_PATH} ${HIP_PATH}../lc/bin ${ROCM_PATH}/llvm/bin)
|
||||
message(STATUS "HIP Lib path: ${HIP_LIB_INSTALL_DIR}")
|
||||
|
||||
# used by clang to find hip
|
||||
set(HIP_PATH_OPT "--hip-path=${HIP_PATH}")
|
||||
|
||||
if(TEST_CLOCK_CYCLE)
|
||||
add_definitions(-DTEST_CLOCK_CYCLE)
|
||||
endif()
|
||||
|
||||
@@ -26,60 +62,13 @@ if(NOT HIP_PLATFORM STREQUAL "amd" AND NOT HIP_PLATFORM STREQUAL "nvidia")
|
||||
message(FATAL_ERROR "Unexpected HIP_PLATFORM: " ${HIP_PLATFORM})
|
||||
endif()
|
||||
|
||||
if(HIP_PLATFORM STREQUAL "amd")
|
||||
if(UNIX AND DEFINED ROCM_PATH)
|
||||
# Read -DROCM_PATH and set CXX_FLAGS for amd platform only
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --rocm-path=${ROCM_PATH}")
|
||||
endif()
|
||||
|
||||
if(DEFINED HIP_PATH)
|
||||
# Read -DHIP_PATH and set CXX_FLAGS for amd platform only
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --hip-path=${HIP_PATH}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Read -DHIP_PATH
|
||||
# If not set read env{HIP_PATH} only on Windows
|
||||
if(WIN32)
|
||||
if(NOT DEFINED HIP_PATH)
|
||||
if(DEFINED ENV{HIP_PATH})
|
||||
set(HIP_PATH $ENV{HIP_PATH} CACHE STRING "HIP Path")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED HIP_PATH)
|
||||
if(DEFINED ROCM_PATH)
|
||||
set(HIP_PATH ${ROCM_PATH})
|
||||
else()
|
||||
set(HIP_PATH "/opt/rocm")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED ROCM_PATH)
|
||||
set(ROCM_PATH "/opt/rocm")
|
||||
endif()
|
||||
|
||||
message(STATUS "HIP_PATH: ${HIP_PATH}")
|
||||
message(STATUS "ROCM_PATH: ${ROCM_PATH}")
|
||||
|
||||
if (WIN32)
|
||||
set(HIPCC_EXEC "hipcc.exe")
|
||||
set(HIPCONFIG_EXEC "hipconfig.exe")
|
||||
else()
|
||||
set(HIPCC_EXEC "hipcc")
|
||||
set(HIPCONFIG_EXEC "hipconfig")
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_COMPILER "${HIP_PATH}/bin/${HIPCC_EXEC}")
|
||||
set(CMAKE_CXX_COMPILER "${HIP_PATH}/bin/${HIPCC_EXEC}")
|
||||
execute_process(COMMAND ${HIP_PATH}/bin/${HIPCONFIG_EXEC} --version
|
||||
execute_process(COMMAND ${HIPCONFIG_EXEC} --version
|
||||
OUTPUT_VARIABLE HIP_VERSION
|
||||
RESULT_VARIABLE result
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
if(result AND NOT result EQUAL 0)
|
||||
message(FATAL_ERROR "Failure trying to obtain HIP version via command: ${HIP_PATH}/bin/${HIPCONFIG_EXEC} --version: ${result}")
|
||||
message(FATAL_ERROR "Failure trying to obtain HIP version via command: ${HIPCONFIG_EXEC} --version: ${result}")
|
||||
endif()
|
||||
|
||||
if(NOT WIN32)
|
||||
@@ -93,9 +82,6 @@ if(NOT WIN32)
|
||||
endif() # end BUILD_SHARED_LIBS
|
||||
endif() # end win32
|
||||
|
||||
# enforce c++17
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --std=c++17")
|
||||
|
||||
# Address sanitizer options
|
||||
if(ENABLE_ADDRESS_SANITIZER)
|
||||
message(STATUS "Building catch tests with Address Sanitizer options")
|
||||
@@ -118,43 +104,34 @@ else()
|
||||
set(HIP_PACKAGING_VERSION_PATCH ${HIP_VERSION_PATCH}-${HIP_VERSION_GITHASH})
|
||||
endif()
|
||||
|
||||
if(NOT DEFINED CATCH2_PATH)
|
||||
if(DEFINED ENV{CATCH2_PATH})
|
||||
set(CATCH2_PATH $ENV{CATCH2_PATH} CACHE STRING "Catch2 Path")
|
||||
else()
|
||||
set(CATCH2_PATH "${CMAKE_CURRENT_LIST_DIR}/external/Catch2")
|
||||
endif()
|
||||
endif()
|
||||
message(STATUS "Catch2 Path: ${CATCH2_PATH}")
|
||||
|
||||
# Set JSON Parser path
|
||||
if(NOT DEFINED JSON_PARSER)
|
||||
if(DEFINED ENV{JSON_PARSER})
|
||||
set(JSON_PARSER $ENV{JSON_PARSER} CACHE STRING "JSON Parser Path")
|
||||
else()
|
||||
set(JSON_PARSER "${CMAKE_CURRENT_LIST_DIR}/external/picojson")
|
||||
endif()
|
||||
find_package(Catch2 3.8.1 QUIET)
|
||||
if(Catch2_FOUND)
|
||||
message(STATUS "Catch2 v3.8.1 found: ${Catch2_DIR}")
|
||||
# for packaging
|
||||
set(CATCH_ADD_TESTS_SCRIPT ${Catch2_DIR}/CatchAddTests.cmake)
|
||||
file(GLOB CATCH_LIBS "${Catch2_DIR}/../../*Catch2*")
|
||||
else()
|
||||
# Setup catch2 manually
|
||||
include(FetchContent)
|
||||
FetchContent_Declare(
|
||||
Catch2
|
||||
DOWNLOAD_EXTRACT_TIMESTAMP OFF
|
||||
URL "https://rocm-third-party-deps.s3.us-east-2.amazonaws.com/Catch2-3.8.1.tar.gz"
|
||||
URL_HASH SHA256=18b3f70ac80fccc340d8c6ff0f339b2ae64944782f8d2fca2bd705cf47cadb79
|
||||
)
|
||||
FetchContent_MakeAvailable(Catch2)
|
||||
# for packaging
|
||||
set(CATCH_ADD_TESTS_SCRIPT ${Catch2_SOURCE_DIR}/extras/CatchAddTests.cmake)
|
||||
set(CATCH_LIBS $<TARGET_FILE:Catch2>)
|
||||
endif()
|
||||
|
||||
message(STATUS "Searching Catch2 in: ${CMAKE_CURRENT_LIST_DIR}/external")
|
||||
find_package(Catch2 REQUIRED
|
||||
PATHS
|
||||
${CMAKE_CURRENT_LIST_DIR}/external
|
||||
PATH_SUFFIXES
|
||||
Catch2/cmake/Catch2
|
||||
)
|
||||
include(Catch)
|
||||
include(cmake/hip-tests.cmake)
|
||||
include(CTest)
|
||||
|
||||
# path used for generating the *_include.cmake file
|
||||
set(CATCH2_INCLUDE ${CATCH2_PATH}/cmake/Catch2/catch_include.cmake.in)
|
||||
|
||||
include_directories(
|
||||
${CATCH2_PATH}
|
||||
"./include"
|
||||
"./kernels"
|
||||
${HIP_PATH}/include
|
||||
${JSON_PARSER}
|
||||
"${CMAKE_CURRENT_LIST_DIR}/external/picojson"
|
||||
)
|
||||
|
||||
option(RTC_TESTING "Run tests using HIP RTC to compile the kernels" OFF)
|
||||
@@ -171,22 +148,13 @@ foreach(json IN LISTS JSON_FILES)
|
||||
file(COPY ${json}
|
||||
DESTINATION ${HIP_TEST_CONFIG_BINARY_DIR})
|
||||
endforeach()
|
||||
set(CATCH_SCRIPT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CATCH_BUILD_DIR}/script)
|
||||
file(COPY ./external/Catch2/cmake/Catch2/CatchAddTests.cmake
|
||||
DESTINATION ${CATCH_SCRIPT_BINARY_DIR})
|
||||
file(COPY ./external/Catch2/cmake/Catch2/catch_include.cmake
|
||||
DESTINATION ${CATCH_SCRIPT_BINARY_DIR})
|
||||
set(ADD_SCRIPT_PATH ${CATCH_SCRIPT_BINARY_DIR}/CatchAddTests.cmake)
|
||||
set(CATCH_INCLUDE_PATH ${CATCH_SCRIPT_BINARY_DIR}/catch_include.cmake)
|
||||
|
||||
if (WIN32)
|
||||
configure_file(catchProp_in_rc.in ${CMAKE_CURRENT_BINARY_DIR}/catchProp.rc @ONLY)
|
||||
cmake_path(SET LLVM_RC_PATH "${HIP_PATH}/../lc/bin/llvm-rc.exe")
|
||||
cmake_path(SET LLVM_RC_PATH NORMALIZE "${LLVM_RC_PATH}")
|
||||
|
||||
# generates the .res files to be used by executables to populate the properties
|
||||
# expects LC folder with clang, llvm-rc to be present one level up of HIP
|
||||
execute_process(COMMAND ${LLVM_RC_PATH} ${CMAKE_CURRENT_BINARY_DIR}/catchProp.rc
|
||||
execute_process(COMMAND ${LLVM_RC_EXEC} ${CMAKE_CURRENT_BINARY_DIR}/catchProp.rc
|
||||
OUTPUT_VARIABLE RC_OUTPUT)
|
||||
set(PROP_RC ${CMAKE_CURRENT_BINARY_DIR})
|
||||
# When args to linker exceeds max chars.
|
||||
@@ -197,12 +165,10 @@ if (WIN32)
|
||||
endif()
|
||||
|
||||
if(HIP_PLATFORM STREQUAL "amd")
|
||||
add_compile_options(-Wall -Wextra -Wvla -Werror -Wno-deprecated -Wno-option-ignored)
|
||||
endif()
|
||||
|
||||
cmake_policy(PUSH)
|
||||
if(POLICY CMP0037)
|
||||
cmake_policy(SET CMP0037 OLD)
|
||||
if(WIN32)
|
||||
set(win_disable_warnings -Wno-ignored-attributes -Wno-microsoft-cast)
|
||||
endif()
|
||||
add_compile_options(${HIP_PATH_OPT} -std=c++17 -x hip -Wall -Wextra -Wvla -Wno-deprecated -Wno-option-ignored -Wno-unused-parameter ${win_disable_warnings}) # -Werror)
|
||||
endif()
|
||||
|
||||
# Turn off CMAKE_HIP_ARCHITECTURES Feature if cmake version is 3.21+
|
||||
@@ -220,8 +186,14 @@ message(STATUS "CMAKE HIP ARCHITECTURES: ${CMAKE_HIP_ARCHITECTURES}")
|
||||
# preference to pass arch -
|
||||
# OFFLOAD_ARCH_STR
|
||||
# rocm_agent_enumerator
|
||||
if(NOT DEFINED OFFLOAD_ARCH_STR
|
||||
AND EXISTS "${ROCM_PATH}/bin/rocm_agent_enumerator"
|
||||
if(DEFINED OFFLOAD_ARCH_STR)
|
||||
string(REPLACE "--offload-arch=" "" HIP_GPU_ARCH_LIST ${OFFLOAD_ARCH_STR})
|
||||
elseif(DEFINED GPU_TARGETS)
|
||||
foreach(_hip_gpu_arch ${GPU_TARGETS})
|
||||
set(OFFLOAD_ARCH_STR "--offload-arch=${_hip_gpu_arch} ${OFFLOAD_ARCH_STR}")
|
||||
endforeach()
|
||||
elseif(NOT DEFINED OFFLOAD_ARCH_STR
|
||||
AND EXISTS "${ROCM_AGENT_ENUMERATOR_EXEC}"
|
||||
AND HIP_PLATFORM STREQUAL "amd" AND UNIX)
|
||||
execute_process(COMMAND "${ROCM_PATH}/bin/rocm_agent_enumerator"
|
||||
OUTPUT_VARIABLE HIP_GPU_ARCH
|
||||
@@ -240,16 +212,16 @@ if(NOT DEFINED OFFLOAD_ARCH_STR
|
||||
else()
|
||||
message(STATUS "ROCm Agent Enumerator found no valid architectures")
|
||||
endif()
|
||||
elseif(DEFINED OFFLOAD_ARCH_STR)
|
||||
string(REPLACE "--offload-arch=" "" HIP_GPU_ARCH_LIST ${OFFLOAD_ARCH_STR})
|
||||
endif()
|
||||
|
||||
if(DEFINED OFFLOAD_ARCH_STR)
|
||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OFFLOAD_ARCH_STR} ")
|
||||
endif()
|
||||
# Trim any trailing spaces, this trips up the cxx function call
|
||||
string(STRIP "${OFFLOAD_ARCH_STR}" OFFLOAD_ARCH_STR)
|
||||
|
||||
message(STATUS "Using offload arch string: ${OFFLOAD_ARCH_STR}")
|
||||
if(DEFINED OFFLOAD_ARCH_STR)
|
||||
set(CMAKE_HIP_FLAGS "${CMAKE_HIP_FLAGS} ${OFFLOAD_ARCH_STR}")
|
||||
endif()
|
||||
|
||||
find_package(Git)
|
||||
# get hip-tests commit short hash
|
||||
execute_process(COMMAND ${GIT_EXECUTABLE} rev-parse --short HEAD
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||
@@ -276,9 +248,8 @@ if(WIN32)
|
||||
set(configToUse "config_amd_windows")
|
||||
set(config_file ${CMAKE_SOURCE_DIR}/hipTestMain/config/${configToUse})
|
||||
set(json_file ${HIP_TEST_CONFIG_BINARY_DIR}/${configToUse}.json)
|
||||
set(CLANG_CPP "${HIP_PATH}/../lc/bin/clang-cpp.exe")
|
||||
|
||||
set(cmd "${CLANG_CPP} -P -DGITHASH=\"${HIP_VERSION_GITHASH}\" ${config_file}>${json_file}")
|
||||
set(cmd "${CLANG_CPP_EXEC} -P -DGITHASH=\"${HIP_VERSION_GITHASH}\" ${config_file}>${json_file}")
|
||||
message(${cmd})
|
||||
execute_process(COMMAND cmd.exe /C ${cmd}
|
||||
RESULT_VARIABLE json_result)
|
||||
@@ -288,7 +259,7 @@ else()
|
||||
foreach(arch ${hip_gpu_arch_list})
|
||||
set(config_file ${CMAKE_SOURCE_DIR}/hipTestMain/config/${configToUse})
|
||||
set(json_file ${HIP_TEST_CONFIG_BINARY_DIR}/${configToUse}_${arch}.json)
|
||||
set(cmd "${ROCM_PATH}/llvm/bin/clang-cpp -P -D${arch} -DGITHASH=\\\"${HIP_VERSION_GITHASH}\\\" ${config_file}>${json_file}")
|
||||
set(cmd "${CLANG_CPP_EXEC} -P -D${arch} -DGITHASH=\\\"${HIP_VERSION_GITHASH}\\\" ${config_file}>${json_file}")
|
||||
message(${cmd})
|
||||
execute_process(COMMAND bash -c ${cmd}
|
||||
RESULT_VARIABLE json_result)
|
||||
@@ -306,7 +277,13 @@ file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${CATCH_BUILD_DIR}/catchInfo.txt ${_catch
|
||||
# allows user to run ctest from catch_tests level
|
||||
set(_subdirs ${_autogen} "subdirs(..)\n")
|
||||
file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${CATCH_BUILD_DIR}/CTestTestfile.cmake ${_subdirs})
|
||||
find_package(Python3 COMPONENTS Interpreter REQUIRED)
|
||||
|
||||
set(CATCH_SCRIPT_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/${CATCH_BUILD_DIR}/script)
|
||||
file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/cmake/hip-tests.cmake
|
||||
DESTINATION ${CATCH_SCRIPT_BINARY_DIR})
|
||||
file(COPY ${CATCH_ADD_TESTS_SCRIPT}
|
||||
DESTINATION ${CATCH_SCRIPT_BINARY_DIR})
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_SCRIPT_TARGETS ${CATCH_ADD_TESTS_SCRIPT})
|
||||
|
||||
# copy python script and headers to catch test package
|
||||
set(CATCH_INCLUDE_DIR include)
|
||||
@@ -318,7 +295,6 @@ file(COPY ./unit/compileAndCaptureOutput.py
|
||||
|
||||
file(COPY ./include/hip_test_common.hh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${CATCH_BUILD_DIR}/${CATCH_INCLUDE_DIR})
|
||||
file(COPY ./include/hip_test_context.hh DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${CATCH_BUILD_DIR}/${CATCH_INCLUDE_DIR})
|
||||
file(COPY ./external/Catch2/catch.hpp DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/${CATCH_BUILD_DIR}/${CATCH_INCLUDE_DIR})
|
||||
|
||||
# Enable device lambda on nvidia platforms
|
||||
if(HIP_PLATFORM STREQUAL "nvidia")
|
||||
@@ -329,43 +305,38 @@ endif()
|
||||
# Disable CXX extensions (gnu++11 etc)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
add_custom_target(build_tests)
|
||||
add_custom_target(build_tests ALL)
|
||||
|
||||
# Tests folder
|
||||
add_subdirectory(unit ${CATCH_BUILD_DIR}/unit)
|
||||
add_subdirectory(ABM ${CATCH_BUILD_DIR}/ABM)
|
||||
add_subdirectory(kernels ${CATCH_BUILD_DIR}/kernels)
|
||||
add_subdirectory(hipTestMain ${CATCH_BUILD_DIR}/hipTestMain)
|
||||
add_subdirectory(stress ${CATCH_BUILD_DIR}/stress)
|
||||
add_subdirectory(TypeQualifiers ${CATCH_BUILD_DIR}/TypeQualifiers)
|
||||
add_subdirectory(perftests ${CATCH_BUILD_DIR}/perftests)
|
||||
add_subdirectory(multiproc ${CATCH_BUILD_DIR}/multiproc)
|
||||
add_subdirectory(performance ${CATCH_BUILD_DIR}/performance)
|
||||
if(BUILD_UNIT_TESTS)
|
||||
add_subdirectory(unit ${CATCH_BUILD_DIR}/unit)
|
||||
add_subdirectory(ABM ${CATCH_BUILD_DIR}/ABM)
|
||||
add_subdirectory(kernels ${CATCH_BUILD_DIR}/kernels)
|
||||
add_subdirectory(hipTestMain ${CATCH_BUILD_DIR}/hipTestMain)
|
||||
add_subdirectory(TypeQualifiers ${CATCH_BUILD_DIR}/TypeQualifiers)
|
||||
if(UNIX)
|
||||
add_subdirectory(multiproc ${CATCH_BUILD_DIR}/multiproc)
|
||||
endif()
|
||||
endif()
|
||||
if(BUILD_PERF_TESTS)
|
||||
add_subdirectory(perftests ${CATCH_BUILD_DIR}/perftests)
|
||||
add_subdirectory(performance ${CATCH_BUILD_DIR}/performance)
|
||||
endif()
|
||||
if(BUILD_STRESS_TESTS)
|
||||
add_subdirectory(stress ${CATCH_BUILD_DIR}/stress)
|
||||
endif()
|
||||
|
||||
add_custom_target(gen_coverage
|
||||
if(GENERATE_COVERATE)
|
||||
add_custom_target(gen_coverage
|
||||
COMMAND ${CMAKE_COMMAND} -B build/
|
||||
COMMAND ${CMAKE_COMMAND} --build build/
|
||||
COMMAND ./build/generateHipAPICoverage ${HIP_PATH}/include
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/../utils/coverage
|
||||
COMMENT "Generating Test Coverage Report")
|
||||
|
||||
cmake_policy(POP)
|
||||
endif()
|
||||
|
||||
# packaging the tests
|
||||
# make package_test to generate packages for test
|
||||
set(BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/packages/)
|
||||
add_subdirectory(packaging)
|
||||
if(UNIX)
|
||||
add_custom_target(package_test COMMAND ${CMAKE_COMMAND} .
|
||||
COMMAND rm -rf *.deb *.rpm *.tar.gz
|
||||
COMMAND make package
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
else()
|
||||
file(TO_NATIVE_PATH ${PROJECT_BINARY_DIR} CATCH_BINARY_DIR)
|
||||
add_custom_target(package_test COMMAND ${CMAKE_COMMAND} .
|
||||
COMMAND cpack
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
|
||||
endif()
|
||||
|
||||
# Doxygen documentation
|
||||
# check if doxygen is installed
|
||||
|
||||
@@ -0,0 +1,87 @@
|
||||
include(Catch)
|
||||
|
||||
###############################################################################
|
||||
# current staging
|
||||
# function to be called by all tests
|
||||
function(hip_add_exe_to_target)
|
||||
set(options)
|
||||
set(args NAME TEST_TARGET_NAME PLATFORM COMPILE_OPTIONS)
|
||||
set(list_args TEST_SRC LINKER_LIBS COMMON_SHARED_SRC PROPERTY)
|
||||
cmake_parse_arguments(
|
||||
PARSE_ARGV 0
|
||||
"" # variable prefix
|
||||
"${options}"
|
||||
"${args}"
|
||||
"${list_args}"
|
||||
)
|
||||
foreach(SRC_NAME ${TEST_SRC})
|
||||
|
||||
if(NOT STANDALONE_TESTS EQUAL "1")
|
||||
set(_EXE_NAME ${_NAME})
|
||||
set(SRC_NAME ${TEST_SRC})
|
||||
else()
|
||||
# strip extension of src and use exe name as src name
|
||||
get_filename_component(_EXE_NAME ${SRC_NAME} NAME_WLE)
|
||||
endif()
|
||||
|
||||
# Create shared lib of all tests
|
||||
set_source_files_properties(${SRC_NAME} PROPERTIES LANGUAGE HIP)
|
||||
set_source_files_properties(${COMMON_SHARED_SRC} PROPERTIES LANGUAGE HIP)
|
||||
if(NOT RTC_TESTING)
|
||||
add_executable(${_EXE_NAME} EXCLUDE_FROM_ALL ${SRC_NAME} ${COMMON_SHARED_SRC} $<TARGET_OBJECTS:Main_Object> $<TARGET_OBJECTS:KERNELS>)
|
||||
else ()
|
||||
add_executable(${_EXE_NAME} EXCLUDE_FROM_ALL ${SRC_NAME} ${COMMON_SHARED_SRC} $<TARGET_OBJECTS:Main_Object>)
|
||||
if(HIP_PLATFORM STREQUAL "amd")
|
||||
target_link_libraries(${_EXE_NAME} hiprtc::hiprtc)
|
||||
else()
|
||||
target_link_libraries(${_EXE_NAME} nvrtc)
|
||||
endif()
|
||||
endif()
|
||||
set_target_properties(${_EXE_NAME} PROPERTIES LINKER_LANGUAGE HIP)
|
||||
|
||||
if (DEFINED _PROPERTY)
|
||||
set_property(TARGET ${_EXE_NAME} PROPERTY ${_PROPERTY})
|
||||
endif()
|
||||
if(UNIX)
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} stdc++fs)
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} -ldl)
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} pthread)
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} rt)
|
||||
else()
|
||||
# res files are built resource files using rc files.
|
||||
# use llvm-rc exe to build the res files
|
||||
# Thes are used to populate the properties of the built executables
|
||||
if(EXISTS "${PROP_RC}/catchProp.res")
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} "${PROP_RC}/catchProp.res")
|
||||
endif()
|
||||
#set_property(TARGET ${_EXE_NAME} PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded")
|
||||
endif()
|
||||
|
||||
if(DEFINED _LINKER_LIBS)
|
||||
target_link_libraries(${_EXE_NAME} ${_LINKER_LIBS})
|
||||
endif()
|
||||
|
||||
# Add dependency on build_tests to build it on this custom target
|
||||
add_dependencies(${_TEST_TARGET_NAME} ${_EXE_NAME})
|
||||
|
||||
if (DEFINED _COMPILE_OPTIONS)
|
||||
target_compile_options(${_EXE_NAME} PUBLIC ${_COMPILE_OPTIONS})
|
||||
endif()
|
||||
target_link_libraries(${_EXE_NAME} Catch2::Catch2)
|
||||
target_link_libraries(${_EXE_NAME} hip::host hip::device)
|
||||
|
||||
foreach(arg IN LISTS _UNPARSED_ARGUMENTS)
|
||||
message(WARNING "Unparsed arguments: ${arg}")
|
||||
endforeach()
|
||||
# add binary to global list of binaries to install
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS ${_EXE_NAME})
|
||||
catch_discover_tests("${_EXE_NAME}" DISCOVERY_MODE PRE_TEST PROPERTIES SKIP_REGULAR_EXPRESSION "HIP_SKIP_THIS_TEST")
|
||||
file(GLOB CTEST_INC_FILES "${CMAKE_CURRENT_BINARY_DIR}/${_EXE_NAME}-*_include.cmake")
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CTEST_INCLUDE_FILES ${CTEST_INC_FILES})
|
||||
|
||||
if(NOT STANDALONE_TESTS EQUAL "1")
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
@@ -0,0 +1,106 @@
|
||||
import glob
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
|
||||
if len(sys.argv) > 1:
|
||||
build_folder = sys.argv[1]
|
||||
install_folder = sys.argv[2]
|
||||
#print(f"In relative_paths.py [1]: build folder: {build_folder}")
|
||||
#print(f"In relative_paths.py [2]: install folder: {install_folder}")
|
||||
else:
|
||||
print(f"Args not provided. Please provide arg1-build folder-catch_tests, arg2-install folder")
|
||||
exit(1)
|
||||
|
||||
install_folder = os.path.abspath(install_folder)
|
||||
install_catch_tests = os.path.join(install_folder, "catch_tests")
|
||||
install_script = os.path.join(install_catch_tests, "script")
|
||||
|
||||
modified_msg = """
|
||||
# File has been updated by hip-tests/catch folder for portability
|
||||
"""
|
||||
ctest_current_str = """
|
||||
get_filename_component(FULL_FILE_PATH ${CMAKE_CURRENT_LIST_FILE} REALPATH)
|
||||
get_filename_component(CTEST_CURRENT_DIR ${FULL_FILE_PATH} DIRECTORY)
|
||||
get_filename_component(EXE_PATH ${CTEST_CURRENT_DIR}/.. REALPATH)
|
||||
"""
|
||||
if os.name == 'posix':
|
||||
library_path_str = """
|
||||
set(LIB_PATH ${EXE_PATH}/../../../lib)
|
||||
file(GLOB HIP_LIBS "${LIB_PATH}/libamdhip64*")
|
||||
if(HIP_LIBS)
|
||||
set(LIB_PATH ${LIB_PATH} ${LIB_PATH}/rocm_sysdeps/lib)
|
||||
else()
|
||||
set(LIB_PATH "/opt/rocm/lib")
|
||||
endif()
|
||||
"""
|
||||
ctest_current_str = ctest_current_str + library_path_str
|
||||
|
||||
inc_cmake_pattern = "_include.cmake"
|
||||
ctesttest_pattern = "CTestTestfile.cmake"
|
||||
|
||||
def make_test_files_portable(filenames):
|
||||
"""
|
||||
changes the absolute paths with relative paths
|
||||
filenames - list of files to perform the workaround
|
||||
"""
|
||||
for filename in filenames:
|
||||
try:
|
||||
filename = os.path.abspath(filename)
|
||||
# Read the entire content of the file
|
||||
with open(filename, 'r') as file:
|
||||
file_content = file.read()
|
||||
#print(f"**Done reading now parsing", filename)
|
||||
# 1 replace abs path with filename. Make relative
|
||||
old_text=os.path.dirname(os.path.abspath(filename))
|
||||
abs_dir_path = os.path.join(old_text, '')
|
||||
old_text = abs_dir_path.replace("\\", "/")
|
||||
if modified_msg not in file_content:
|
||||
file_content = modified_msg + file_content
|
||||
# Perform the replacement
|
||||
modified_content = file_content.replace(old_text, '')
|
||||
if inc_cmake_pattern in filename:
|
||||
# 2 get folder path relative to the current *_include.cmake
|
||||
if r"get_filename_component(FULL_FILE_PATH" not in modified_content:
|
||||
modified_content = ctest_current_str + modified_content
|
||||
# 3 CTEST_FILE to have parameterized relative file
|
||||
test_cmake_pattern = r"\[==\[(\w+-[a-f0-9]+_tests.cmake)\]==\]"
|
||||
replace_test_pattern = r"${CTEST_CURRENT_DIR}/\1"
|
||||
modified_content = re.sub(test_cmake_pattern, replace_test_pattern, modified_content)
|
||||
# 4 script to use CatchAddTests.cmake from build rather than src
|
||||
add_test_pattern = r'include\(".*CatchAddTests\.cmake"\)'
|
||||
replace_add_test_pattern = 'include("${CTEST_CURRENT_DIR}/CatchAddTests.cmake")'
|
||||
modified_content = re.sub(add_test_pattern, replace_add_test_pattern, modified_content)
|
||||
# 5 use exe from previous folder
|
||||
exe_pattern = r"TEST_EXECUTABLE\s+\[==\[(.*?)\]==\]"
|
||||
replace_exe_pattern = r'TEST_EXECUTABLE ${EXE_PATH}/\1'
|
||||
modified_content = re.sub(exe_pattern, replace_exe_pattern, modified_content)
|
||||
# 6 include _ctest.cmake file with path
|
||||
ctest_test_pattern = r'include\("(.*?_tests\.cmake)"\)'
|
||||
replace_ctest_pattern = r'include("${CTEST_CURRENT_DIR}/\1")'
|
||||
modified_content = re.sub(ctest_test_pattern, replace_ctest_pattern, modified_content)
|
||||
# 7 use script folder as cwd
|
||||
cwd_pattern = r"TEST_WORKING_DIR\s+\[==\[(.*?)\]==\]"
|
||||
replace_cwd_pattern = r'TEST_WORKING_DIR ${EXE_PATH}'
|
||||
modified_content = re.sub(cwd_pattern, replace_cwd_pattern, modified_content)
|
||||
# 8 modify ld_library_path
|
||||
if os.name == 'posix':
|
||||
lib_path_pattern = r"TEST_DL_PATHS\s+\[==\[(.*?)\]==\]"
|
||||
replace_lib_path_pattern = r'TEST_DL_PATHS ${LIB_PATH}'
|
||||
modified_content = re.sub(lib_path_pattern, replace_lib_path_pattern, modified_content)
|
||||
|
||||
filename = os.path.basename(filename)
|
||||
install_path = os.path.join(install_script, filename)
|
||||
# Write the modified content back to the file
|
||||
with open(install_path, 'w') as file:
|
||||
file.write(modified_content)
|
||||
#print(f"**Done parsing now writing into", install_path)
|
||||
except IOError as e:
|
||||
print(f"Error: '{e}'")
|
||||
sys.exit({e})
|
||||
except Exception as e:
|
||||
print(f"An error occurred: {e}")
|
||||
sys.exit({e})
|
||||
|
||||
inccmake_files = glob.glob(build_folder + "/**/*"+inc_cmake_pattern, recursive=True)
|
||||
make_test_files_portable(inccmake_files)
|
||||
@@ -1,23 +0,0 @@
|
||||
Boost Software License - Version 1.0 - August 17th, 2003
|
||||
|
||||
Permission is hereby granted, free of charge, to any person or organization
|
||||
obtaining a copy of the software and accompanying documentation covered by
|
||||
this license (the "Software") to use, reproduce, display, distribute,
|
||||
execute, and transmit the Software, and to prepare derivative works of the
|
||||
Software, and to permit third-parties to whom the Software is furnished to
|
||||
do so, all subject to the following:
|
||||
|
||||
The copyright notices in the Software and this entire statement, including
|
||||
the above license grant, this restriction and the following disclaimer,
|
||||
must be included in all copies of the Software, in whole or in part, and
|
||||
all derivative works of the Software, unless such copies or derivative
|
||||
works are solely in the form of machine-executable object code generated by
|
||||
a source language processor.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
|
||||
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
|
||||
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.
|
||||
-17358
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
Diff 로드
@@ -1,438 +0,0 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
Catch
|
||||
-----
|
||||
|
||||
This module defines a function to help use the Catch test framework.
|
||||
|
||||
The :command:`catch_discover_tests` discovers tests by asking the compiled test
|
||||
executable to enumerate its tests. This does not require CMake to be re-run
|
||||
when tests change. However, it may not work in a cross-compiling environment,
|
||||
and setting test properties is less convenient.
|
||||
|
||||
This command is intended to replace use of :command:`add_test` to register
|
||||
tests, and will create a separate CTest test for each Catch test case. Note
|
||||
that this is in some cases less efficient, as common set-up and tear-down logic
|
||||
cannot be shared by multiple test cases executing in the same instance.
|
||||
However, it provides more fine-grained pass/fail information to CTest, which is
|
||||
usually considered as more beneficial. By default, the CTest test name is the
|
||||
same as the Catch name; see also ``TEST_PREFIX`` and ``TEST_SUFFIX``.
|
||||
|
||||
.. command:: catch_discover_tests
|
||||
|
||||
Automatically add tests with CTest by querying the compiled test executable
|
||||
for available tests::
|
||||
|
||||
catch_discover_tests(target
|
||||
[TEST_SPEC arg1...]
|
||||
[EXTRA_ARGS arg1...]
|
||||
[WORKING_DIRECTORY dir]
|
||||
[TEST_PREFIX prefix]
|
||||
[TEST_SUFFIX suffix]
|
||||
[PROPERTIES name1 value1...]
|
||||
[TEST_LIST var]
|
||||
[REPORTER reporter]
|
||||
[OUTPUT_DIR dir]
|
||||
[OUTPUT_PREFIX prefix}
|
||||
[OUTPUT_SUFFIX suffix]
|
||||
)
|
||||
|
||||
``catch_discover_tests`` sets up a post-build command on the test executable
|
||||
that generates the list of tests by parsing the output from running the test
|
||||
with the ``--list-test-names-only`` argument. This ensures that the full
|
||||
list of tests is obtained. Since test discovery occurs at build time, it is
|
||||
not necessary to re-run CMake when the list of tests changes.
|
||||
However, it requires that :prop_tgt:`CROSSCOMPILING_EMULATOR` is properly set
|
||||
in order to function in a cross-compiling environment.
|
||||
|
||||
Additionally, setting properties on tests is somewhat less convenient, since
|
||||
the tests are not available at CMake time. Additional test properties may be
|
||||
assigned to the set of tests as a whole using the ``PROPERTIES`` option. If
|
||||
more fine-grained test control is needed, custom content may be provided
|
||||
through an external CTest script using the :prop_dir:`TEST_INCLUDE_FILES`
|
||||
directory property. The set of discovered tests is made accessible to such a
|
||||
script via the ``<target>_TESTS`` variable.
|
||||
|
||||
The options are:
|
||||
|
||||
``target``
|
||||
Specifies the Catch executable, which must be a known CMake executable
|
||||
target. CMake will substitute the location of the built executable when
|
||||
running the test.
|
||||
|
||||
``TEST_SPEC arg1...``
|
||||
Specifies test cases, wildcarded test cases, tags and tag expressions to
|
||||
pass to the Catch executable with the ``--list-test-names-only`` argument.
|
||||
|
||||
``EXTRA_ARGS arg1...``
|
||||
Any extra arguments to pass on the command line to each test case.
|
||||
|
||||
``WORKING_DIRECTORY dir``
|
||||
Specifies the directory in which to run the discovered test cases. If this
|
||||
option is not provided, the current binary directory is used.
|
||||
|
||||
``TEST_PREFIX prefix``
|
||||
Specifies a ``prefix`` to be prepended to the name of each discovered test
|
||||
case. This can be useful when the same test executable is being used in
|
||||
multiple calls to ``catch_discover_tests()`` but with different
|
||||
``TEST_SPEC`` or ``EXTRA_ARGS``.
|
||||
|
||||
``TEST_SUFFIX suffix``
|
||||
Similar to ``TEST_PREFIX`` except the ``suffix`` is appended to the name of
|
||||
every discovered test case. Both ``TEST_PREFIX`` and ``TEST_SUFFIX`` may
|
||||
be specified.
|
||||
|
||||
``PROPERTIES name1 value1...``
|
||||
Specifies additional properties to be set on all tests discovered by this
|
||||
invocation of ``catch_discover_tests``.
|
||||
|
||||
``TEST_LIST var``
|
||||
Make the list of tests available in the variable ``var``, rather than the
|
||||
default ``<target>_TESTS``. This can be useful when the same test
|
||||
executable is being used in multiple calls to ``catch_discover_tests()``.
|
||||
Note that this variable is only available in CTest.
|
||||
|
||||
``REPORTER reporter``
|
||||
Use the specified reporter when running the test case. The reporter will
|
||||
be passed to the Catch executable as ``--reporter reporter``.
|
||||
|
||||
``OUTPUT_DIR dir``
|
||||
If specified, the parameter is passed along as
|
||||
``--out dir/<test_name>`` to Catch executable. The actual file name is the
|
||||
same as the test name. This should be used instead of
|
||||
``EXTRA_ARGS --out foo`` to avoid race conditions writing the result output
|
||||
when using parallel test execution.
|
||||
|
||||
``OUTPUT_PREFIX prefix``
|
||||
May be used in conjunction with ``OUTPUT_DIR``.
|
||||
If specified, ``prefix`` is added to each output file name, like so
|
||||
``--out dir/prefix<test_name>``.
|
||||
|
||||
``OUTPUT_SUFFIX suffix``
|
||||
May be used in conjunction with ``OUTPUT_DIR``.
|
||||
If specified, ``suffix`` is added to each output file name, like so
|
||||
``--out dir/<test_name>suffix``. This can be used to add a file extension to
|
||||
the output e.g. ".xml".
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# TARGET_LIST TEST_SET
|
||||
function(catch_discover_tests_compile_time_detection TARGET TEST_SET)
|
||||
cmake_parse_arguments(
|
||||
""
|
||||
""
|
||||
"TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST;REPORTER;OUTPUT_DIR;OUTPUT_PREFIX;OUTPUT_SUFFIX"
|
||||
"TEST_SPEC;EXTRA_ARGS;PROPERTIES"
|
||||
${ARGN}
|
||||
)
|
||||
|
||||
if(NOT _WORKING_DIRECTORY)
|
||||
set(_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
endif()
|
||||
if(NOT _TEST_LIST)
|
||||
set(_TEST_LIST ${TARGET}_TESTS)
|
||||
endif()
|
||||
|
||||
## Generate a unique name based on the extra arguments
|
||||
string(SHA1 args_hash "${_TEST_SPEC} ${_EXTRA_ARGS} ${_REPORTER} ${_OUTPUT_DIR} ${_OUTPUT_PREFIX} ${_OUTPUT_SUFFIX}")
|
||||
string(SUBSTRING ${args_hash} 0 7 args_hash)
|
||||
|
||||
# Define rule to generate test list for aforementioned test executable
|
||||
set(ctest_include_file "${CMAKE_CURRENT_BINARY_DIR}/${TEST_SET}_include-${args_hash}.cmake")
|
||||
set(ctest_tests_file "${CMAKE_CURRENT_BINARY_DIR}/${TEST_SET}_tests-${args_hash}.cmake")
|
||||
|
||||
foreach(EXE_NAME ${TARGET})
|
||||
|
||||
add_custom_command(
|
||||
TARGET ${EXE_NAME} POST_BUILD
|
||||
COMMAND "${CMAKE_COMMAND}"
|
||||
-D "TEST_TARGET=${EXE_NAME}"
|
||||
-D "TEST_EXECUTABLE=$<TARGET_FILE:${EXE_NAME}>"
|
||||
-D "TEST_EXECUTOR=${crosscompiling_emulator}"
|
||||
-D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}"
|
||||
-D "TEST_SPEC=${_TEST_SPEC}"
|
||||
-D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}"
|
||||
-D "TEST_PROPERTIES=${_PROPERTIES}"
|
||||
-D "TEST_PREFIX=${_TEST_PREFIX}"
|
||||
-D "TEST_SUFFIX=${_TEST_SUFFIX}"
|
||||
-D "TEST_LIST=${_TEST_LIST}"
|
||||
-D "TEST_REPORTER=${_REPORTER}"
|
||||
-D "TEST_OUTPUT_DIR=${_OUTPUT_DIR}"
|
||||
-D "TEST_OUTPUT_PREFIX=${_OUTPUT_PREFIX}"
|
||||
-D "TEST_OUTPUT_SUFFIX=${_OUTPUT_SUFFIX}"
|
||||
-D "CTEST_FILE=${ctest_tests_file}"
|
||||
-P "${_CATCH_DISCOVER_TESTS_SCRIPT}"
|
||||
VERBATIM
|
||||
)
|
||||
endforeach()
|
||||
|
||||
file(RELATIVE_PATH ctestincludepath ${CMAKE_CURRENT_BINARY_DIR} ${ctest_include_file})
|
||||
file(RELATIVE_PATH ctestfilepath ${CMAKE_CURRENT_BINARY_DIR} ${ctest_tests_file})
|
||||
|
||||
file(WRITE "${ctest_include_file}"
|
||||
"if(EXISTS \"${ctestfilepath}\")\n"
|
||||
" include(\"${ctestfilepath}\")\n"
|
||||
"else()\n"
|
||||
" message(WARNING \"Test ${TARGET} not built yet.\")\n"
|
||||
"endif()\n"
|
||||
)
|
||||
|
||||
if(NOT ${CMAKE_VERSION} VERSION_LESS "3.10.0")
|
||||
# Add discovered tests to directory TEST_INCLUDE_FILES
|
||||
set_property(DIRECTORY
|
||||
APPEND PROPERTY TEST_INCLUDE_FILES "${ctestincludepath}"
|
||||
)
|
||||
else()
|
||||
# Add discovered tests as directory TEST_INCLUDE_FILE if possible
|
||||
get_property(test_include_file_set DIRECTORY PROPERTY TEST_INCLUDE_FILE SET)
|
||||
if (NOT ${test_include_file_set})
|
||||
set_property(DIRECTORY
|
||||
PROPERTY TEST_INCLUDE_FILE "${ctestincludepath}"
|
||||
)
|
||||
else()
|
||||
message(FATAL_ERROR
|
||||
"Cannot set more than one TEST_INCLUDE_FILE"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
endfunction()
|
||||
|
||||
###############################################################################
|
||||
|
||||
|
||||
|
||||
|
||||
#------------------------------------------------------------------------------
|
||||
# current staging
|
||||
function(catch_discover_tests TARGET)
|
||||
cmake_parse_arguments(
|
||||
""
|
||||
""
|
||||
"TEST_PREFIX;TEST_SUFFIX;WORKING_DIRECTORY;TEST_LIST;REPORTER;OUTPUT_DIR;OUTPUT_PREFIX;OUTPUT_SUFFIX"
|
||||
"TEST_SPEC;EXTRA_ARGS;PROPERTIES"
|
||||
${ARGN}
|
||||
)
|
||||
|
||||
if(NOT _WORKING_DIRECTORY)
|
||||
set(_WORKING_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
endif()
|
||||
get_property(crosscompiling_emulator
|
||||
TARGET ${TARGET}
|
||||
PROPERTY CROSSCOMPILING_EMULATOR
|
||||
)
|
||||
## Generate a unique name based on the extra arguments
|
||||
string(SHA1 args_hash "${_TEST_SPEC} ${_EXTRA_ARGS} ${_REPORTER} ${_OUTPUT_DIR} ${_OUTPUT_PREFIX} ${_OUTPUT_SUFFIX}")
|
||||
string(SUBSTRING ${args_hash} 0 7 args_hash)
|
||||
# Define rule to generate test list for aforementioned test executable
|
||||
set(ctest_include_file_build "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_include_build-${args_hash}.cmake")
|
||||
set(ctest_include_file_install "${CMAKE_CURRENT_BINARY_DIR}/${TARGET}_include_install-${args_hash}.cmake")
|
||||
set(ctest_tests_file_name "${TARGET}_tests-${args_hash}.cmake")
|
||||
set(ctest_tests_file "${CMAKE_CURRENT_BINARY_DIR}/${ctest_tests_file_name}")
|
||||
file(RELATIVE_PATH ctest_include_rel_path ${CMAKE_CURRENT_BINARY_DIR} ${ctest_include_file_build})
|
||||
file(RELATIVE_PATH ctest_file_rel_path ${CMAKE_CURRENT_BINARY_DIR} ${ctest_tests_file})
|
||||
file(RELATIVE_PATH _CATCH_ADD_TEST_SCRIPT ${CMAKE_CURRENT_BINARY_DIR} ${ADD_SCRIPT_PATH})
|
||||
file(RELATIVE_PATH CATCH_INCLUDE_PATH ${CMAKE_CURRENT_BINARY_DIR} ${CATCH_INCLUDE_PATH})
|
||||
if(NOT ${CMAKE_VERSION} VERSION_LESS "3.10.0")
|
||||
# write build time include file
|
||||
file(WRITE ${ctest_include_file_build} "set(_TARGET_EXECUTABLE ${TARGET})\n")
|
||||
file(APPEND ${ctest_include_file_build} "set(TARGET ${TARGET})\n")
|
||||
file(APPEND ${ctest_include_file_build} "set(_TEST_LIST ${TARGET}_TESTS)\n")
|
||||
file(APPEND ${ctest_include_file_build} "set(ctestfilepath ${ctest_file_rel_path})\n")
|
||||
file(APPEND ${ctest_include_file_build} "set(_CATCH_ADD_TEST_SCRIPT ${_CATCH_ADD_TEST_SCRIPT})\n")
|
||||
file(APPEND ${ctest_include_file_build} "set(crosscompiling_emulator ${crosscompiling_emulator})\n")
|
||||
file(APPEND ${ctest_include_file_build} "set(_PROPERTIES ${_PROPERTIES})\n")
|
||||
file(APPEND ${ctest_include_file_build} "include(${CATCH_INCLUDE_PATH})\n")
|
||||
# Add discovered tests to directory TEST_INCLUDE_FILES
|
||||
set_property(DIRECTORY
|
||||
APPEND PROPERTY TEST_INCLUDE_FILES "${ctest_include_rel_path}"
|
||||
)
|
||||
|
||||
# write install time include file
|
||||
file(WRITE ${ctest_include_file_install} "set(_TARGET_EXECUTABLE ${TARGET})\n")
|
||||
file(APPEND ${ctest_include_file_install} "set(TARGET ${TARGET})\n")
|
||||
file(APPEND ${ctest_include_file_install} "set(_TEST_LIST ${TARGET}_TESTS)\n")
|
||||
file(APPEND ${ctest_include_file_install} "set(ctestfilepath script/${ctest_tests_file_name})\n")
|
||||
file(APPEND ${ctest_include_file_install} "set(_CATCH_ADD_TEST_SCRIPT script/CatchAddTests.cmake)\n")
|
||||
file(APPEND ${ctest_include_file_install} "set(crosscompiling_emulator ${crosscompiling_emulator})\n")
|
||||
file(APPEND ${ctest_include_file_install} "set(_PROPERTIES ${_PROPERTIES})\n")
|
||||
file(APPEND ${ctest_include_file_install} "include(script/catch_include.cmake)\n")
|
||||
|
||||
set_property(GLOBAL
|
||||
APPEND PROPERTY G_INSTALL_CTEST_INCLUDE_FILES "${ctest_include_file_install}"
|
||||
)
|
||||
endif()
|
||||
|
||||
endfunction()
|
||||
|
||||
###############################################################################
|
||||
|
||||
set(_CATCH_DISCOVER_TESTS_SCRIPT
|
||||
${CMAKE_CURRENT_LIST_DIR}/CatchAddTests.cmake
|
||||
CACHE INTERNAL "Catch2 full path to CatchAddTests.cmake helper file"
|
||||
)
|
||||
|
||||
|
||||
###############################################################################
|
||||
# function to be called by all tests
|
||||
function(hip_add_exe_to_target_compile_time_detection)
|
||||
set(options)
|
||||
# NAME EventTest, TEST_SRC src, TEST_TARGET_NAME build_tests
|
||||
set(args NAME TEST_TARGET_NAME PLATFORM COMPILE_OPTIONS)
|
||||
set(list_args TEST_SRC LINKER_LIBS COMMON_SHARED_SRC PROPERTY)
|
||||
cmake_parse_arguments(
|
||||
PARSE_ARGV 0
|
||||
"" # variable prefix
|
||||
"${options}"
|
||||
"${args}"
|
||||
"${list_args}"
|
||||
)
|
||||
|
||||
foreach(SRC_NAME ${TEST_SRC})
|
||||
if(NOT STANDALONE_TESTS EQUAL "1")
|
||||
set(_EXE_NAME ${_NAME})
|
||||
# take the entire source set for building the executable
|
||||
set(SRC_NAME ${TEST_SRC})
|
||||
else()
|
||||
# strip extension of src and use exe name as src name
|
||||
get_filename_component(_EXE_NAME ${SRC_NAME} NAME_WLE)
|
||||
endif()
|
||||
|
||||
if(NOT RTC_TESTING)
|
||||
add_executable(${_EXE_NAME} EXCLUDE_FROM_ALL ${SRC_NAME} ${COMMON_SHARED_SRC} $<TARGET_OBJECTS:Main_Object> $<TARGET_OBJECTS:KERNELS>)
|
||||
else ()
|
||||
add_executable(${_EXE_NAME} EXCLUDE_FROM_ALL ${SRC_NAME} ${COMMON_SHARED_SRC} $<TARGET_OBJECTS:Main_Object>)
|
||||
if(HIP_PLATFORM STREQUAL "amd")
|
||||
target_link_libraries(${_EXE_NAME} hiprtc)
|
||||
else()
|
||||
target_link_libraries(${_EXE_NAME} nvrtc)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
|
||||
if(UNIX)
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} stdc++fs)
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} -ldl)
|
||||
else()
|
||||
# res files are built resource files using rc files.
|
||||
# use llvm-rc exe to build the res files
|
||||
# Thes are used to populate the properties of the built executables
|
||||
if(EXISTS "${PROP_RC}/catchProp.res")
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} "${PROP_RC}/catchProp.res")
|
||||
endif()
|
||||
#set(_LINKER_LIBS ${_LINKER_LIBS} -noAutoResponse)
|
||||
endif()
|
||||
|
||||
if(DEFINED _LINKER_LIBS)
|
||||
target_link_libraries(${_EXE_NAME} ${_LINKER_LIBS})
|
||||
endif()
|
||||
|
||||
# Add dependency on build_tests to build it on this custom target
|
||||
add_dependencies(${_TEST_TARGET_NAME} ${_EXE_NAME})
|
||||
# add_dependencies(${_TEST_TARGET_NAME} ${_EXE_NAME})
|
||||
|
||||
if (DEFINED _PROPERTY)
|
||||
set_property(TARGET ${_EXE_NAME} PROPERTY ${_PROPERTY})
|
||||
endif()
|
||||
|
||||
if (DEFINED _COMPILE_OPTIONS)
|
||||
target_compile_options(${_EXE_NAME} PUBLIC ${_COMPILE_OPTIONS})
|
||||
endif()
|
||||
foreach(arg IN LISTS _UNPARSED_ARGUMENTS)
|
||||
message(WARNING "Unparsed arguments: ${arg}")
|
||||
endforeach()
|
||||
get_property(crosscompiling_emulator
|
||||
TARGET ${_EXE_NAME}
|
||||
PROPERTY CROSSCOMPILING_EMULATOR
|
||||
)
|
||||
set(_EXE_NAME_LIST ${_EXE_NAME_LIST} ${_EXE_NAME})
|
||||
if(NOT STANDALONE_TESTS EQUAL "1")
|
||||
break()
|
||||
endif()
|
||||
endforeach()
|
||||
catch_discover_tests("${_EXE_NAME_LIST}" "${_NAME}" PROPERTIES SKIP_REGULAR_EXPRESSION "HIP_SKIP_THIS_TEST")
|
||||
endfunction()
|
||||
|
||||
###############################################################################
|
||||
# current staging
|
||||
# function to be called by all tests
|
||||
function(hip_add_exe_to_target)
|
||||
set(options)
|
||||
set(args NAME TEST_TARGET_NAME PLATFORM COMPILE_OPTIONS)
|
||||
set(list_args TEST_SRC LINKER_LIBS COMMON_SHARED_SRC PROPERTY)
|
||||
cmake_parse_arguments(
|
||||
PARSE_ARGV 0
|
||||
"" # variable prefix
|
||||
"${options}"
|
||||
"${args}"
|
||||
"${list_args}"
|
||||
)
|
||||
foreach(SRC_NAME ${TEST_SRC})
|
||||
|
||||
if(NOT STANDALONE_TESTS EQUAL "1")
|
||||
set(_EXE_NAME ${_NAME})
|
||||
set(SRC_NAME ${TEST_SRC})
|
||||
else()
|
||||
# strip extension of src and use exe name as src name
|
||||
get_filename_component(_EXE_NAME ${SRC_NAME} NAME_WLE)
|
||||
endif()
|
||||
|
||||
# Create shared lib of all tests
|
||||
if(NOT RTC_TESTING)
|
||||
add_executable(${_EXE_NAME} EXCLUDE_FROM_ALL ${SRC_NAME} ${COMMON_SHARED_SRC} $<TARGET_OBJECTS:Main_Object> $<TARGET_OBJECTS:KERNELS>)
|
||||
else ()
|
||||
add_executable(${_EXE_NAME} EXCLUDE_FROM_ALL ${SRC_NAME} ${COMMON_SHARED_SRC} $<TARGET_OBJECTS:Main_Object>)
|
||||
if(HIP_PLATFORM STREQUAL "amd")
|
||||
target_link_libraries(${_EXE_NAME} hiprtc)
|
||||
else()
|
||||
target_link_libraries(${_EXE_NAME} nvrtc)
|
||||
endif()
|
||||
endif()
|
||||
if (DEFINED _PROPERTY)
|
||||
set_property(TARGET ${_EXE_NAME} PROPERTY ${_PROPERTY})
|
||||
endif()
|
||||
if(UNIX)
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} stdc++fs)
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} -ldl)
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} pthread)
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} rt)
|
||||
else()
|
||||
# res files are built resource files using rc files.
|
||||
# use llvm-rc exe to build the res files
|
||||
# Thes are used to populate the properties of the built executables
|
||||
if(EXISTS "${PROP_RC}/catchProp.res")
|
||||
set(_LINKER_LIBS ${_LINKER_LIBS} "${PROP_RC}/catchProp.res")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(DEFINED _LINKER_LIBS)
|
||||
target_link_libraries(${_EXE_NAME} ${_LINKER_LIBS})
|
||||
endif()
|
||||
|
||||
# Add dependency on build_tests to build it on this custom target
|
||||
add_dependencies(${_TEST_TARGET_NAME} ${_EXE_NAME})
|
||||
|
||||
if (DEFINED _COMPILE_OPTIONS)
|
||||
target_compile_options(${_EXE_NAME} PUBLIC ${_COMPILE_OPTIONS})
|
||||
endif()
|
||||
|
||||
foreach(arg IN LISTS _UNPARSED_ARGUMENTS)
|
||||
message(WARNING "Unparsed arguments: ${arg}")
|
||||
endforeach()
|
||||
# add binary to global list of binaries to install
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS ${_EXE_NAME})
|
||||
catch_discover_tests("${_EXE_NAME}" PROPERTIES SKIP_REGULAR_EXPRESSION "HIP_SKIP_THIS_TEST")
|
||||
|
||||
if(NOT STANDALONE_TESTS EQUAL "1")
|
||||
break()
|
||||
endif()
|
||||
|
||||
endforeach()
|
||||
|
||||
endfunction()
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
|
||||
####### Expanded from @PACKAGE_INIT@ by configure_package_config_file() #######
|
||||
####### Any changes to this file will be overwritten by the next CMake run ####
|
||||
####### The input file was Catch2Config.cmake.in ########
|
||||
|
||||
get_filename_component(PACKAGE_PREFIX_DIR "${CMAKE_CURRENT_LIST_DIR}/../../../" ABSOLUTE)
|
||||
|
||||
macro(set_and_check _var _file)
|
||||
set(${_var} "${_file}")
|
||||
if(NOT EXISTS "${_file}")
|
||||
message(FATAL_ERROR "File or directory ${_file} referenced by variable ${_var} does not exist !")
|
||||
endif()
|
||||
endmacro()
|
||||
|
||||
macro(check_required_components _NAME)
|
||||
foreach(comp ${${_NAME}_FIND_COMPONENTS})
|
||||
if(NOT ${_NAME}_${comp}_FOUND)
|
||||
if(${_NAME}_FIND_REQUIRED_${comp})
|
||||
set(${_NAME}_FOUND FALSE)
|
||||
endif()
|
||||
endif()
|
||||
endforeach()
|
||||
endmacro()
|
||||
|
||||
####################################################################################
|
||||
|
||||
|
||||
# Avoid repeatedly including the targets
|
||||
if(NOT TARGET Catch2::Catch2)
|
||||
# Provide path for scripts
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
|
||||
|
||||
include(${CMAKE_CURRENT_LIST_DIR}/Catch2Targets.cmake)
|
||||
endif()
|
||||
@@ -1,51 +0,0 @@
|
||||
# This is a basic version file for the Config-mode of find_package().
|
||||
# It is used by write_basic_package_version_file() as input file for configure_file()
|
||||
# to create a version-file which can be installed along a config.cmake file.
|
||||
#
|
||||
# The created file sets PACKAGE_VERSION_EXACT if the current version string and
|
||||
# the requested version string are exactly the same and it sets
|
||||
# PACKAGE_VERSION_COMPATIBLE if the current version is >= requested version,
|
||||
# but only if the requested major version is the same as the current one.
|
||||
# The variable CVF_VERSION must be set before calling configure_file().
|
||||
|
||||
|
||||
set(PACKAGE_VERSION "2.13.6")
|
||||
|
||||
if(PACKAGE_VERSION VERSION_LESS PACKAGE_FIND_VERSION)
|
||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||
else()
|
||||
|
||||
if("2.13.6" MATCHES "^([0-9]+)\\.")
|
||||
set(CVF_VERSION_MAJOR "${CMAKE_MATCH_1}")
|
||||
else()
|
||||
set(CVF_VERSION_MAJOR "2.13.6")
|
||||
endif()
|
||||
|
||||
if(PACKAGE_FIND_VERSION_MAJOR STREQUAL CVF_VERSION_MAJOR)
|
||||
set(PACKAGE_VERSION_COMPATIBLE TRUE)
|
||||
else()
|
||||
set(PACKAGE_VERSION_COMPATIBLE FALSE)
|
||||
endif()
|
||||
|
||||
if(PACKAGE_FIND_VERSION STREQUAL PACKAGE_VERSION)
|
||||
set(PACKAGE_VERSION_EXACT TRUE)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
||||
# if the installed project requested no architecture check, don't perform the check
|
||||
if("FALSE")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# if the installed or the using project don't have CMAKE_SIZEOF_VOID_P set, ignore it:
|
||||
if("${CMAKE_SIZEOF_VOID_P}" STREQUAL "" OR "" STREQUAL "")
|
||||
return()
|
||||
endif()
|
||||
|
||||
# check that the installed version has the same 32/64bit-ness as the one which is currently searching:
|
||||
if(NOT CMAKE_SIZEOF_VOID_P STREQUAL "")
|
||||
math(EXPR installedBits " * 8")
|
||||
set(PACKAGE_VERSION "${PACKAGE_VERSION} (${installedBits}bit)")
|
||||
set(PACKAGE_VERSION_UNSUITABLE TRUE)
|
||||
endif()
|
||||
@@ -1,99 +0,0 @@
|
||||
# Generated by CMake
|
||||
|
||||
if("${CMAKE_MAJOR_VERSION}.${CMAKE_MINOR_VERSION}" LESS 2.5)
|
||||
message(FATAL_ERROR "CMake >= 2.6.0 required")
|
||||
endif()
|
||||
cmake_policy(PUSH)
|
||||
cmake_policy(VERSION 2.6...3.17)
|
||||
#----------------------------------------------------------------
|
||||
# Generated CMake target import file.
|
||||
#----------------------------------------------------------------
|
||||
|
||||
# Commands may need to know the format version.
|
||||
set(CMAKE_IMPORT_FILE_VERSION 1)
|
||||
|
||||
# Protect against multiple inclusion, which would fail when already imported targets are added once more.
|
||||
set(_targetsDefined)
|
||||
set(_targetsNotDefined)
|
||||
set(_expectedTargets)
|
||||
foreach(_expectedTarget Catch2::Catch2)
|
||||
list(APPEND _expectedTargets ${_expectedTarget})
|
||||
if(NOT TARGET ${_expectedTarget})
|
||||
list(APPEND _targetsNotDefined ${_expectedTarget})
|
||||
endif()
|
||||
if(TARGET ${_expectedTarget})
|
||||
list(APPEND _targetsDefined ${_expectedTarget})
|
||||
endif()
|
||||
endforeach()
|
||||
if("${_targetsDefined}" STREQUAL "${_expectedTargets}")
|
||||
unset(_targetsDefined)
|
||||
unset(_targetsNotDefined)
|
||||
unset(_expectedTargets)
|
||||
set(CMAKE_IMPORT_FILE_VERSION)
|
||||
cmake_policy(POP)
|
||||
return()
|
||||
endif()
|
||||
if(NOT "${_targetsDefined}" STREQUAL "")
|
||||
message(FATAL_ERROR "Some (but not all) targets in this export set were already defined.\nTargets Defined: ${_targetsDefined}\nTargets not yet defined: ${_targetsNotDefined}\n")
|
||||
endif()
|
||||
unset(_targetsDefined)
|
||||
unset(_targetsNotDefined)
|
||||
unset(_expectedTargets)
|
||||
|
||||
|
||||
# Compute the installation prefix relative to this file.
|
||||
get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
|
||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
|
||||
get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH)
|
||||
if(_IMPORT_PREFIX STREQUAL "/")
|
||||
set(_IMPORT_PREFIX "")
|
||||
endif()
|
||||
|
||||
# Create imported target Catch2::Catch2
|
||||
add_library(Catch2::Catch2 INTERFACE IMPORTED)
|
||||
|
||||
set_target_properties(Catch2::Catch2 PROPERTIES
|
||||
INTERFACE_COMPILE_FEATURES "cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_defaulted_functions;cxx_deleted_functions;cxx_final;cxx_lambdas;cxx_noexcept;cxx_override;cxx_range_for;cxx_rvalue_references;cxx_static_assert;cxx_strong_enums;cxx_trailing_return_types;cxx_unicode_literals;cxx_user_literals;cxx_variadic_macros"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include"
|
||||
)
|
||||
|
||||
if(CMAKE_VERSION VERSION_LESS 3.0.0)
|
||||
message(FATAL_ERROR "This file relies on consumers using CMake 3.0.0 or greater.")
|
||||
endif()
|
||||
|
||||
# Load information for each installed configuration.
|
||||
get_filename_component(_DIR "${CMAKE_CURRENT_LIST_FILE}" PATH)
|
||||
file(GLOB CONFIG_FILES "${_DIR}/Catch2Targets-*.cmake")
|
||||
foreach(f ${CONFIG_FILES})
|
||||
include(${f})
|
||||
endforeach()
|
||||
|
||||
# Cleanup temporary variables.
|
||||
set(_IMPORT_PREFIX)
|
||||
|
||||
# Loop over all imported files and verify that they actually exist
|
||||
foreach(target ${_IMPORT_CHECK_TARGETS} )
|
||||
foreach(file ${_IMPORT_CHECK_FILES_FOR_${target}} )
|
||||
if(NOT EXISTS "${file}" )
|
||||
message(FATAL_ERROR "The imported target \"${target}\" references the file
|
||||
\"${file}\"
|
||||
but this file does not exist. Possible reasons include:
|
||||
* The file was deleted, renamed, or moved to another location.
|
||||
* An install or uninstall procedure did not complete successfully.
|
||||
* The installation package was faulty and contained
|
||||
\"${CMAKE_CURRENT_LIST_FILE}\"
|
||||
but not all the files it references.
|
||||
")
|
||||
endif()
|
||||
endforeach()
|
||||
unset(_IMPORT_CHECK_FILES_FOR_${target})
|
||||
endforeach()
|
||||
unset(_IMPORT_CHECK_TARGETS)
|
||||
|
||||
# This file does not depend on other imported targets which have
|
||||
# been exported from the same project but in a separate export set.
|
||||
|
||||
# Commands beyond this point should not need to know the version.
|
||||
set(CMAKE_IMPORT_FILE_VERSION)
|
||||
cmake_policy(POP)
|
||||
@@ -1,134 +0,0 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
set(prefix "${TEST_PREFIX}")
|
||||
set(suffix "${TEST_SUFFIX}")
|
||||
set(spec ${TEST_SPEC})
|
||||
set(extra_args ${TEST_EXTRA_ARGS})
|
||||
set(properties ${TEST_PROPERTIES})
|
||||
set(reporter ${TEST_REPORTER})
|
||||
set(output_dir ${TEST_OUTPUT_DIR})
|
||||
set(output_prefix ${TEST_OUTPUT_PREFIX})
|
||||
set(output_suffix ${TEST_OUTPUT_SUFFIX})
|
||||
set(script)
|
||||
set(suite)
|
||||
set(tests)
|
||||
|
||||
function(add_command NAME)
|
||||
set(_args "")
|
||||
# use ARGV* instead of ARGN, because ARGN splits arrays into multiple arguments
|
||||
math(EXPR _last_arg ${ARGC}-1)
|
||||
foreach(_n RANGE 1 ${_last_arg})
|
||||
set(_arg "${ARGV${_n}}")
|
||||
if(_arg MATCHES "[^-./:a-zA-Z0-9_]")
|
||||
set(_args "${_args} [==[${_arg}]==]") # form a bracket_argument
|
||||
else()
|
||||
set(_args "${_args} ${_arg}")
|
||||
endif()
|
||||
endforeach()
|
||||
set(script "${script}${NAME}(${_args})\n" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
|
||||
if(WIN32)
|
||||
set(TEST_EXECUTABLE ${TEST_EXECUTABLE}.exe)
|
||||
endif()
|
||||
get_filename_component(TEST_EXECUTABLE ${TEST_EXECUTABLE} ABSOLUTE)
|
||||
|
||||
execute_process(
|
||||
COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" ${spec} --list-test-names-only
|
||||
OUTPUT_VARIABLE output
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY "${TEST_WORKING_DIR}"
|
||||
)
|
||||
# Catch --list-test-names-only reports the number of tests, so 0 is... surprising
|
||||
if(${result} EQUAL 0)
|
||||
message(WARNING
|
||||
"Test executable '${TEST_EXECUTABLE}' contains no tests!\n"
|
||||
)
|
||||
elseif(${result} LESS 0)
|
||||
message(FATAL_ERROR
|
||||
"Error running test executable '${TEST_EXECUTABLE}':\n"
|
||||
" Result: ${result}\n"
|
||||
" Output: ${output}\n"
|
||||
)
|
||||
endif()
|
||||
|
||||
string(REPLACE "\n" ";" output "${output}")
|
||||
|
||||
# Run test executable to get list of available reporters
|
||||
execute_process(
|
||||
COMMAND ${TEST_EXECUTOR} "${TEST_EXECUTABLE}" ${spec} --list-reporters
|
||||
OUTPUT_VARIABLE reporters_output
|
||||
RESULT_VARIABLE reporters_result
|
||||
WORKING_DIRECTORY "${TEST_WORKING_DIR}"
|
||||
)
|
||||
if(${reporters_result} EQUAL 0)
|
||||
message(WARNING
|
||||
"Test executable '${TEST_EXECUTABLE}' contains no reporters!\n"
|
||||
)
|
||||
elseif(${reporters_result} LESS 0)
|
||||
message(FATAL_ERROR
|
||||
"Error running test executable '${TEST_EXECUTABLE}':\n"
|
||||
" Result: ${reporters_result}\n"
|
||||
" Output: ${reporters_output}\n"
|
||||
)
|
||||
endif()
|
||||
string(FIND "${reporters_output}" "${reporter}" reporter_is_valid)
|
||||
if(reporter AND ${reporter_is_valid} EQUAL -1)
|
||||
message(FATAL_ERROR
|
||||
"\"${reporter}\" is not a valid reporter!\n"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Prepare reporter
|
||||
if(reporter)
|
||||
set(reporter_arg "--reporter ${reporter}")
|
||||
endif()
|
||||
|
||||
# Prepare output dir
|
||||
if(output_dir AND NOT IS_ABSOLUTE ${output_dir})
|
||||
set(output_dir "${TEST_WORKING_DIR}/${output_dir}")
|
||||
if(NOT EXISTS ${output_dir})
|
||||
file(MAKE_DIRECTORY ${output_dir})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
# Parse output
|
||||
foreach(line ${output})
|
||||
set(test ${line})
|
||||
# Escape characters in test case names that would be parsed by Catch2
|
||||
set(test_name ${test})
|
||||
foreach(char , [ ])
|
||||
string(REPLACE ${char} "\\${char}" test_name ${test_name})
|
||||
endforeach(char)
|
||||
# ...add output dir
|
||||
if(output_dir)
|
||||
string(REGEX REPLACE "[^A-Za-z0-9_]" "_" test_name_clean ${test_name})
|
||||
set(output_dir_arg "--out ${output_dir}/${output_prefix}${test_name_clean}${output_suffix}")
|
||||
endif()
|
||||
|
||||
# ...and add to script
|
||||
add_command(add_test
|
||||
"${prefix}${test}${suffix}"
|
||||
${TEST_EXECUTOR}
|
||||
"${TEST_EXECUTABLE}"
|
||||
"${test_name}"
|
||||
${extra_args}
|
||||
"${reporter_arg}"
|
||||
"${output_dir_arg}"
|
||||
)
|
||||
add_command(set_tests_properties
|
||||
"${prefix}${test}${suffix}"
|
||||
PROPERTIES
|
||||
${properties}
|
||||
)
|
||||
list(APPEND tests "${prefix}${test}${suffix}")
|
||||
endforeach()
|
||||
|
||||
# Create a list of all discovered tests, which users may use to e.g. set
|
||||
# properties on the tests
|
||||
add_command(set ${TEST_LIST} ${tests})
|
||||
|
||||
# Write CTest script
|
||||
file(WRITE "${CTEST_FILE}" "${script}")
|
||||
@@ -1,252 +0,0 @@
|
||||
#==================================================================================================#
|
||||
# supported macros #
|
||||
# - TEST_CASE, #
|
||||
# - TEMPLATE_TEST_CASE #
|
||||
# - SCENARIO, #
|
||||
# - TEST_CASE_METHOD, #
|
||||
# - CATCH_TEST_CASE, #
|
||||
# - CATCH_TEMPLATE_TEST_CASE #
|
||||
# - CATCH_SCENARIO, #
|
||||
# - CATCH_TEST_CASE_METHOD. #
|
||||
# #
|
||||
# Usage #
|
||||
# 1. make sure this module is in the path or add this otherwise: #
|
||||
# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") #
|
||||
# 2. make sure that you've enabled testing option for the project by the call: #
|
||||
# enable_testing() #
|
||||
# 3. add the lines to the script for testing target (sample CMakeLists.txt): #
|
||||
# project(testing_target) #
|
||||
# set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake.modules/") #
|
||||
# enable_testing() #
|
||||
# #
|
||||
# find_path(CATCH_INCLUDE_DIR "catch.hpp") #
|
||||
# include_directories(${INCLUDE_DIRECTORIES} ${CATCH_INCLUDE_DIR}) #
|
||||
# #
|
||||
# file(GLOB SOURCE_FILES "*.cpp") #
|
||||
# add_executable(${PROJECT_NAME} ${SOURCE_FILES}) #
|
||||
# #
|
||||
# include(ParseAndAddCatchTests) #
|
||||
# ParseAndAddCatchTests(${PROJECT_NAME}) #
|
||||
# #
|
||||
# The following variables affect the behavior of the script: #
|
||||
# #
|
||||
# PARSE_CATCH_TESTS_VERBOSE (Default OFF) #
|
||||
# -- enables debug messages #
|
||||
# PARSE_CATCH_TESTS_NO_HIDDEN_TESTS (Default OFF) #
|
||||
# -- excludes tests marked with [!hide], [.] or [.foo] tags #
|
||||
# PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME (Default ON) #
|
||||
# -- adds fixture class name to the test name #
|
||||
# PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME (Default ON) #
|
||||
# -- adds cmake target name to the test name #
|
||||
# PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS (Default OFF) #
|
||||
# -- causes CMake to rerun when file with tests changes so that new tests will be discovered #
|
||||
# #
|
||||
# One can also set (locally) the optional variable OptionalCatchTestLauncher to precise the way #
|
||||
# a test should be run. For instance to use test MPI, one can write #
|
||||
# set(OptionalCatchTestLauncher ${MPIEXEC} ${MPIEXEC_NUMPROC_FLAG} ${NUMPROC}) #
|
||||
# just before calling this ParseAndAddCatchTests function #
|
||||
# #
|
||||
# The AdditionalCatchParameters optional variable can be used to pass extra argument to the test #
|
||||
# command. For example, to include successful tests in the output, one can write #
|
||||
# set(AdditionalCatchParameters --success) #
|
||||
# #
|
||||
# After the script, the ParseAndAddCatchTests_TESTS property for the target, and for each source #
|
||||
# file in the target is set, and contains the list of the tests extracted from that target, or #
|
||||
# from that file. This is useful, for example to add further labels or properties to the tests. #
|
||||
# #
|
||||
#==================================================================================================#
|
||||
|
||||
if (CMAKE_MINIMUM_REQUIRED_VERSION VERSION_LESS 2.8.8)
|
||||
message(FATAL_ERROR "ParseAndAddCatchTests requires CMake 2.8.8 or newer")
|
||||
endif()
|
||||
|
||||
option(PARSE_CATCH_TESTS_VERBOSE "Print Catch to CTest parser debug messages" OFF)
|
||||
option(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS "Exclude tests with [!hide], [.] or [.foo] tags" OFF)
|
||||
option(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME "Add fixture class name to the test name" ON)
|
||||
option(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME "Add target name to the test name" ON)
|
||||
option(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS "Add test file to CMAKE_CONFIGURE_DEPENDS property" OFF)
|
||||
|
||||
function(ParseAndAddCatchTests_PrintDebugMessage)
|
||||
if(PARSE_CATCH_TESTS_VERBOSE)
|
||||
message(STATUS "ParseAndAddCatchTests: ${ARGV}")
|
||||
endif()
|
||||
endfunction()
|
||||
|
||||
# This removes the contents between
|
||||
# - block comments (i.e. /* ... */)
|
||||
# - full line comments (i.e. // ... )
|
||||
# contents have been read into '${CppCode}'.
|
||||
# !keep partial line comments
|
||||
function(ParseAndAddCatchTests_RemoveComments CppCode)
|
||||
string(ASCII 2 CMakeBeginBlockComment)
|
||||
string(ASCII 3 CMakeEndBlockComment)
|
||||
string(REGEX REPLACE "/\\*" "${CMakeBeginBlockComment}" ${CppCode} "${${CppCode}}")
|
||||
string(REGEX REPLACE "\\*/" "${CMakeEndBlockComment}" ${CppCode} "${${CppCode}}")
|
||||
string(REGEX REPLACE "${CMakeBeginBlockComment}[^${CMakeEndBlockComment}]*${CMakeEndBlockComment}" "" ${CppCode} "${${CppCode}}")
|
||||
string(REGEX REPLACE "\n[ \t]*//+[^\n]+" "\n" ${CppCode} "${${CppCode}}")
|
||||
|
||||
set(${CppCode} "${${CppCode}}" PARENT_SCOPE)
|
||||
endfunction()
|
||||
|
||||
# Worker function
|
||||
function(ParseAndAddCatchTests_ParseFile SourceFile TestTarget)
|
||||
# If SourceFile is an object library, do not scan it (as it is not a file). Exit without giving a warning about a missing file.
|
||||
if(SourceFile MATCHES "\\\$<TARGET_OBJECTS:.+>")
|
||||
ParseAndAddCatchTests_PrintDebugMessage("Detected OBJECT library: ${SourceFile} this will not be scanned for tests.")
|
||||
return()
|
||||
endif()
|
||||
# According to CMake docs EXISTS behavior is well-defined only for full paths.
|
||||
get_filename_component(SourceFile ${SourceFile} ABSOLUTE)
|
||||
if(NOT EXISTS ${SourceFile})
|
||||
message(WARNING "Cannot find source file: ${SourceFile}")
|
||||
return()
|
||||
endif()
|
||||
ParseAndAddCatchTests_PrintDebugMessage("parsing ${SourceFile}")
|
||||
file(STRINGS ${SourceFile} Contents NEWLINE_CONSUME)
|
||||
|
||||
# Remove block and fullline comments
|
||||
ParseAndAddCatchTests_RemoveComments(Contents)
|
||||
|
||||
# Find definition of test names
|
||||
# https://regex101.com/r/JygOND/1
|
||||
string(REGEX MATCHALL "[ \t]*(CATCH_)?(TEMPLATE_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([ \t\n]*\"[^\"]*\"[ \t\n]*(,[ \t\n]*\"[^\"]*\")?(,[ \t\n]*[^\,\)]*)*\\)[ \t\n]*\{+[ \t]*(//[^\n]*[Tt][Ii][Mm][Ee][Oo][Uu][Tt][ \t]*[0-9]+)*" Tests "${Contents}")
|
||||
|
||||
if(PARSE_CATCH_TESTS_ADD_TO_CONFIGURE_DEPENDS AND Tests)
|
||||
ParseAndAddCatchTests_PrintDebugMessage("Adding ${SourceFile} to CMAKE_CONFIGURE_DEPENDS property")
|
||||
set_property(
|
||||
DIRECTORY
|
||||
APPEND
|
||||
PROPERTY CMAKE_CONFIGURE_DEPENDS ${SourceFile}
|
||||
)
|
||||
endif()
|
||||
|
||||
# check CMP0110 policy for new add_test() behavior
|
||||
if(POLICY CMP0110)
|
||||
cmake_policy(GET CMP0110 _cmp0110_value) # new add_test() behavior
|
||||
else()
|
||||
# just to be thorough explicitly set the variable
|
||||
set(_cmp0110_value)
|
||||
endif()
|
||||
|
||||
foreach(TestName ${Tests})
|
||||
# Strip newlines
|
||||
string(REGEX REPLACE "\\\\\n|\n" "" TestName "${TestName}")
|
||||
|
||||
# Get test type and fixture if applicable
|
||||
string(REGEX MATCH "(CATCH_)?(TEMPLATE_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)[ \t]*\\([^,^\"]*" TestTypeAndFixture "${TestName}")
|
||||
string(REGEX MATCH "(CATCH_)?(TEMPLATE_)?(TEST_CASE_METHOD|SCENARIO|TEST_CASE)" TestType "${TestTypeAndFixture}")
|
||||
string(REGEX REPLACE "${TestType}\\([ \t]*" "" TestFixture "${TestTypeAndFixture}")
|
||||
|
||||
# Get string parts of test definition
|
||||
string(REGEX MATCHALL "\"+([^\\^\"]|\\\\\")+\"+" TestStrings "${TestName}")
|
||||
|
||||
# Strip wrapping quotation marks
|
||||
string(REGEX REPLACE "^\"(.*)\"$" "\\1" TestStrings "${TestStrings}")
|
||||
string(REPLACE "\";\"" ";" TestStrings "${TestStrings}")
|
||||
|
||||
# Validate that a test name and tags have been provided
|
||||
list(LENGTH TestStrings TestStringsLength)
|
||||
if(TestStringsLength GREATER 2 OR TestStringsLength LESS 1)
|
||||
message(FATAL_ERROR "You must provide a valid test name and tags for all tests in ${SourceFile}")
|
||||
endif()
|
||||
|
||||
# Assign name and tags
|
||||
list(GET TestStrings 0 Name)
|
||||
if("${TestType}" STREQUAL "SCENARIO")
|
||||
set(Name "Scenario: ${Name}")
|
||||
endif()
|
||||
if(PARSE_CATCH_TESTS_ADD_FIXTURE_IN_TEST_NAME AND "${TestType}" MATCHES "(CATCH_)?TEST_CASE_METHOD" AND TestFixture )
|
||||
set(CTestName "${TestFixture}:${Name}")
|
||||
else()
|
||||
set(CTestName "${Name}")
|
||||
endif()
|
||||
if(PARSE_CATCH_TESTS_ADD_TARGET_IN_TEST_NAME)
|
||||
set(CTestName "${TestTarget}:${CTestName}")
|
||||
endif()
|
||||
# add target to labels to enable running all tests added from this target
|
||||
set(Labels ${TestTarget})
|
||||
if(TestStringsLength EQUAL 2)
|
||||
list(GET TestStrings 1 Tags)
|
||||
string(TOLOWER "${Tags}" Tags)
|
||||
# remove target from labels if the test is hidden
|
||||
if("${Tags}" MATCHES ".*\\[!?(hide|\\.)\\].*")
|
||||
list(REMOVE_ITEM Labels ${TestTarget})
|
||||
endif()
|
||||
string(REPLACE "]" ";" Tags "${Tags}")
|
||||
string(REPLACE "[" "" Tags "${Tags}")
|
||||
else()
|
||||
# unset tags variable from previous loop
|
||||
unset(Tags)
|
||||
endif()
|
||||
|
||||
list(APPEND Labels ${Tags})
|
||||
|
||||
set(HiddenTagFound OFF)
|
||||
foreach(label ${Labels})
|
||||
string(REGEX MATCH "^!hide|^\\." result ${label})
|
||||
if(result)
|
||||
set(HiddenTagFound ON)
|
||||
break()
|
||||
endif(result)
|
||||
endforeach(label)
|
||||
if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_LESS "3.9")
|
||||
ParseAndAddCatchTests_PrintDebugMessage("Skipping test \"${CTestName}\" as it has [!hide], [.] or [.foo] label")
|
||||
else()
|
||||
ParseAndAddCatchTests_PrintDebugMessage("Adding test \"${CTestName}\"")
|
||||
if(Labels)
|
||||
ParseAndAddCatchTests_PrintDebugMessage("Setting labels to ${Labels}")
|
||||
endif()
|
||||
|
||||
# Escape commas in the test spec
|
||||
string(REPLACE "," "\\," Name ${Name})
|
||||
|
||||
# Work around CMake 3.18.0 change in `add_test()`, before the escaped quotes were necessary,
|
||||
# only with CMake 3.18.0 the escaped double quotes confuse the call. This change is reverted in 3.18.1
|
||||
# And properly introduced in 3.19 with the CMP0110 policy
|
||||
if(_cmp0110_value STREQUAL "NEW" OR ${CMAKE_VERSION} VERSION_EQUAL "3.18")
|
||||
ParseAndAddCatchTests_PrintDebugMessage("CMP0110 set to NEW, no need for add_test(\"\") workaround")
|
||||
else()
|
||||
ParseAndAddCatchTests_PrintDebugMessage("CMP0110 set to OLD adding \"\" for add_test() workaround")
|
||||
set(CTestName "\"${CTestName}\"")
|
||||
endif()
|
||||
|
||||
# Handle template test cases
|
||||
if("${TestTypeAndFixture}" MATCHES ".*TEMPLATE_.*")
|
||||
set(Name "${Name} - *")
|
||||
endif()
|
||||
|
||||
# Add the test and set its properties
|
||||
add_test(NAME "${CTestName}" COMMAND ${OptionalCatchTestLauncher} $<TARGET_FILE:${TestTarget}> ${Name} ${AdditionalCatchParameters})
|
||||
# Old CMake versions do not document VERSION_GREATER_EQUAL, so we use VERSION_GREATER with 3.8 instead
|
||||
if(PARSE_CATCH_TESTS_NO_HIDDEN_TESTS AND ${HiddenTagFound} AND ${CMAKE_VERSION} VERSION_GREATER "3.8")
|
||||
ParseAndAddCatchTests_PrintDebugMessage("Setting DISABLED test property")
|
||||
set_tests_properties("${CTestName}" PROPERTIES DISABLED ON)
|
||||
else()
|
||||
set_tests_properties("${CTestName}" PROPERTIES FAIL_REGULAR_EXPRESSION "No tests ran"
|
||||
LABELS "${Labels}")
|
||||
endif()
|
||||
set_property(
|
||||
TARGET ${TestTarget}
|
||||
APPEND
|
||||
PROPERTY ParseAndAddCatchTests_TESTS "${CTestName}")
|
||||
set_property(
|
||||
SOURCE ${SourceFile}
|
||||
APPEND
|
||||
PROPERTY ParseAndAddCatchTests_TESTS "${CTestName}")
|
||||
endif()
|
||||
|
||||
|
||||
endforeach()
|
||||
endfunction()
|
||||
|
||||
# entry point
|
||||
function(ParseAndAddCatchTests TestTarget)
|
||||
message(DEPRECATION "ParseAndAddCatchTest: function deprecated because of possibility of missed test cases. Consider using 'catch_discover_tests' from 'Catch.cmake'")
|
||||
ParseAndAddCatchTests_PrintDebugMessage("Started parsing ${TestTarget}")
|
||||
get_target_property(SourceFiles ${TestTarget} SOURCES)
|
||||
ParseAndAddCatchTests_PrintDebugMessage("Found the following sources: ${SourceFiles}")
|
||||
foreach(SourceFile ${SourceFiles})
|
||||
ParseAndAddCatchTests_ParseFile(${SourceFile} ${TestTarget})
|
||||
endforeach()
|
||||
ParseAndAddCatchTests_PrintDebugMessage("Finished parsing ${TestTarget}")
|
||||
endfunction()
|
||||
@@ -1,32 +0,0 @@
|
||||
# when ctest is ran, each submodule includes this file to generate the <submodule>_tests.cmake file.
|
||||
# <submodule>_tests.cmake contains the add_test macro which runs the individual test.
|
||||
|
||||
get_filename_component(_cmake_path cmake ABSOLUTE)
|
||||
execute_process(
|
||||
COMMAND "${_cmake_path}"
|
||||
-D "TEST_TARGET=${TARGET}"
|
||||
-D "TEST_EXECUTABLE=${_TARGET_EXECUTABLE}"
|
||||
-D "TEST_EXECUTOR=${crosscompiling_emulator}"
|
||||
-D "TEST_WORKING_DIR=${_WORKING_DIRECTORY}"
|
||||
-D "TEST_SPEC=${_TEST_SPEC}"
|
||||
-D "TEST_EXTRA_ARGS=${_EXTRA_ARGS}"
|
||||
-D "TEST_PROPERTIES=${_PROPERTIES}"
|
||||
-D "TEST_PREFIX=${_TEST_PREFIX}"
|
||||
-D "TEST_SUFFIX=${_TEST_SUFFIX}"
|
||||
-D "TEST_LIST=${_TEST_LIST}"
|
||||
-D "TEST_REPORTER=${_REPORTER}"
|
||||
-D "TEST_OUTPUT_DIR=${_OUTPUT_DIR}"
|
||||
-D "TEST_OUTPUT_PREFIX=${_OUTPUT_PREFIX}"
|
||||
-D "TEST_OUTPUT_SUFFIX=${_OUTPUT_SUFFIX}"
|
||||
-D "CTEST_FILE=${ctestfilepath}"
|
||||
-P "${_CATCH_ADD_TEST_SCRIPT}"
|
||||
OUTPUT_VARIABLE output
|
||||
RESULT_VARIABLE result
|
||||
WORKING_DIRECTORY "${TEST_WORKING_DIR}"
|
||||
)
|
||||
|
||||
|
||||
if(EXISTS "${ctestfilepath}")
|
||||
# include the generated ctest file for execution
|
||||
include(${ctestfilepath})
|
||||
endif()
|
||||
@@ -22,9 +22,11 @@ if(CMAKE_BUILD_TYPE MATCHES "^Debug$")
|
||||
add_definitions(-DHT_LOG_ENABLE)
|
||||
endif()
|
||||
|
||||
add_library(Main_Object EXCLUDE_FROM_ALL OBJECT main.cc hip_test_context.cc hip_test_features.cc)
|
||||
if(HIP_PLATFORM MATCHES "amd")
|
||||
set_property(TARGET Main_Object PROPERTY CXX_STANDARD 17)
|
||||
else()
|
||||
target_compile_options(Main_Object PUBLIC -std=c++17)
|
||||
endif()
|
||||
set(MAIN_SRC
|
||||
main.cc
|
||||
hip_test_context.cc
|
||||
hip_test_features.cc)
|
||||
add_library(Main_Object EXCLUDE_FROM_ALL OBJECT ${MAIN_SRC})
|
||||
set_source_files_properties(${MAIN_SRC} PROPERTIES LANGUAGE HIP)
|
||||
#set_property(TARGET Main_Object PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded")
|
||||
target_link_libraries(Main_Object PRIVATE Catch2::Catch2)
|
||||
|
||||
@@ -70,6 +70,30 @@
|
||||
"Unit_hipGraphInstantiateWithFlags_DependencyGraphDeviceCtxtChg",
|
||||
"=== SWDEV-553920 disabled until multi device graph issues are resolved ===",
|
||||
"Unit_hipGraphUpload_Functional_multidevice_test",
|
||||
"========Rock_Linux_Failures_on_gfx94X===========================================",
|
||||
"Unit_hipMemcpyHtoAAsync_BasicTstsWithDiffStreams",
|
||||
"Unit_hipHostRegister_DirectReferenceMultGpu - int",
|
||||
"Unit_hipMemcpy3DPeerAsync_BasicFunctional",
|
||||
"Unit_hipStreamQuery_WithPendingWork",
|
||||
"Unit_hipExtStreamCreateWithCUMask_NegTst",
|
||||
"Unit_hipGraphMemFreeNodeGetParams_InvalidArgs",
|
||||
"Unit_hipGraphMem_Alloc_Free_NodeGetParams_Negative",
|
||||
"Unit_hipFreeAsync_capturehipFreeAsync",
|
||||
"Unit_hipLaunchHostFunc_streams",
|
||||
"Unit_Device_memcpy_Positive - unsigned long",
|
||||
"Unit_Device_memcpy_Positive - double",
|
||||
"Unit_hipMemAdvise_TstAlignedAllocMem_XNACK",
|
||||
"Unit_dynamic_loading_device_kernels_from_library",
|
||||
"Unit_hipDrvLaunchKernelEx_With_CooperativeKernelWithArgs",
|
||||
"Unit_hipModuleGetFunctionCount_Functional",
|
||||
"Unit_BuiltInAtomicAdd_NonCoherentGlobalMemWithRtc",
|
||||
"Unit_atomicAdd_system_Positive_Peer_GPUs - unsigned long long",
|
||||
"Unit_hipMultiThreadDevice_SerialPyramid",
|
||||
"Unit_Device___clzll_Sanity_Positive - unsigned long long int",
|
||||
"Unit_Test_makechar_functionality",
|
||||
"Unit_Rtc_ReduceRandom",
|
||||
"Unit_test_generic_target_only_in_regular_fatbin",
|
||||
"Unit_test_generic_target_only_in_compressed_fatbin",
|
||||
"=== special values test, fix: comment out [HEX_DBL(-, 1, fffffffffffff, +, 31), HEX_DBL(+, 1, fffffffffffff, +, 31)]",
|
||||
"Unit_Device_sinpi_Accuracy_Positive - double",
|
||||
"Unit_Device_cospi_Accuracy_Positive - double",
|
||||
|
||||
@@ -698,6 +698,58 @@
|
||||
"Unit_hipClock_Positive_Basic",
|
||||
"====================================================",
|
||||
"Unit_hipEventRecord",
|
||||
"========Rock_Window_Failures_on_gfx1151===========================================",
|
||||
"Unit_hipMemVmm_Uncached",
|
||||
"Unit_Uuid_FntlTstsFor_SetEnv_HIP_VISIBLE_DEVICES",
|
||||
"Unit_UUID_setEnv_Thread",
|
||||
"Unit_hipTexRefSetArray_Positive",
|
||||
"Unit_hipTexRefSetArray_CheckData",
|
||||
"Unit_hipTexRefSetArray_Negative",
|
||||
"Unit_hipTexRefGetArray_Positive",
|
||||
"Unit_hipTexRefGetArray_Negative",
|
||||
"Unit_hipTexRefGetBorderColor_Negative",
|
||||
"Unit_hipTexRefSetBorderColor_Negative",
|
||||
"Unit_hipTexRefGetAddress_Positive",
|
||||
"Unit_hipTexRefGetAddress_Negative",
|
||||
"Unit_hipTexRefGetAddress_AdressNotSet",
|
||||
"Unit_hipTexRefSetAddress_Basic",
|
||||
"Unit_hipTexRefSetAddress_Positive",
|
||||
"Unit_hipTexRefSetAddress_Negative",
|
||||
"Unit_hipTexRefGetFormat_Basic",
|
||||
"Unit_hipTexRefGetFormat_Positive",
|
||||
"Unit_hipTexRefGetFormat_Negative",
|
||||
"Unit_hipTexRefSetFormat_Positive",
|
||||
"Unit_hipTexRefSetFormat_Negative",
|
||||
"Unit_hipTexRefSetAddress2D_Negative_Parameters",
|
||||
"Unit_hipTexRefSetAddress2D_Positive",
|
||||
"Unit_hipTexRefSetMaxAnisotropy_Negative_Parameters",
|
||||
"Unit_hipTexRefSetMaxAnisotropy_Positive",
|
||||
"Unit_hipTexRefGetMaxAnisotropy_Negative_Parameters",
|
||||
"Unit_hipTexRefGetMaxAnisotropy_Positive",
|
||||
"Unit_hipTexRefSetFlags_Negative_Parameters",
|
||||
"Unit_hipTexRefSetFlags_Positive",
|
||||
"Unit_hipTexRefGetFlags_Negative_Parameters",
|
||||
"Unit_hipTexRefGetFlags_Positive",
|
||||
"Unit_hipTexRefSetAddressMode_Negative_Parameters",
|
||||
"Unit_hipTexRefSetAddressMode_Positive",
|
||||
"Unit_hipTexRefGetAddressMode_Negative_Parameters",
|
||||
"Unit_hipTexRefGetAddressMode_Positive",
|
||||
"Unit_hipModuleGetTexRef_Negative_Parameters",
|
||||
"Unit_hipModuleGetFunctionCount_Functional",
|
||||
"Unit_hipMalloc_Allocate90PercentOfDeviceMemory",
|
||||
"Unit_hipModuleLaunchKernel_Positive_Basic",
|
||||
"Unit_hipModuleLaunchKernel_Positive_Parameters",
|
||||
"Unit_hipModuleLaunchCooperativeKernel_Positive_Basic",
|
||||
"Unit_hipModuleLaunchCooperativeKernel_Positive_Parameters",
|
||||
"Unit_hipModuleLaunchCooperativeKernel_Negative_Parameters",
|
||||
"Unit_hipModuleLaunchCooperativeKernelMultiDevice_Positive_Basic",
|
||||
"Unit_hipModuleLaunchCooperativeKernelMultiDevice_Negative_Parameters",
|
||||
"Unit_hipModuleLaunchCooperativeKernelMultiDevice_Negative_MultiKernelSameDevice",
|
||||
"Unit_hipExtModuleLaunchKernel_Positive_Parameters",
|
||||
"Unit_hip_linker_spirv_input",
|
||||
"========mlsejenkins_Window_Failures_on_gfx1201===========================================",
|
||||
"Unit_hipMemPoolSetAttribute_EventDependencies",
|
||||
"Unit_hipStreamSynchronize_NullStreamSynchronization",
|
||||
#endif
|
||||
"=== Following tests disabled as it should be a local perf test",
|
||||
"Performance_hipExtLaunchKernelGGL_QueryGPUFrequency",
|
||||
|
||||
@@ -58,12 +58,27 @@ std::string TestContext::substringFound(std::vector<std::string> list, std::stri
|
||||
|
||||
std::string TestContext::getCurrentArch() {
|
||||
#if HT_LINUX
|
||||
const char* cmd =
|
||||
"/opt/rocm/bin/rocm_agent_enumerator | awk '$0 != \"gfx000\"' | xargs | sed -e 's/ /;/g' | "
|
||||
"tr -d '\n'";
|
||||
constexpr std::string_view rocm_agent_enum = "rocm_agent_enumerator";
|
||||
std::filesystem::path default_rocm_bin_path = "/opt/rocm";
|
||||
std::string command{};
|
||||
if (const char *env_rocm_path = std::getenv("ROCM_PATH")) {
|
||||
command += env_rocm_path;
|
||||
} else {
|
||||
command += default_rocm_bin_path;
|
||||
}
|
||||
command += "/bin/";
|
||||
command += rocm_agent_enum;
|
||||
if (!std::filesystem::exists(command)) {
|
||||
return "";
|
||||
}
|
||||
|
||||
command += " | awk '$0 != "
|
||||
"\"gfx000\"' | xargs | sed -e 's/ /;/g' | "
|
||||
"tr -d '\n'";
|
||||
|
||||
std::array<char, 1024> buffer;
|
||||
std::string result;
|
||||
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(cmd, "r"), pclose);
|
||||
std::unique_ptr<FILE, decltype(&pclose)> pipe(popen(command.c_str(), "r"), pclose);
|
||||
if (!pipe) {
|
||||
printf("popen() failed!");
|
||||
return "";
|
||||
|
||||
@@ -36,7 +36,7 @@ int main(int argc, char** argv) {
|
||||
|
||||
Catch::Session session;
|
||||
|
||||
using namespace Catch::clara;
|
||||
using namespace Catch::Clara;
|
||||
// clang-format off
|
||||
auto cli = session.cli()
|
||||
| Opt(cmd_options.iterations, "iterations")
|
||||
|
||||
@@ -24,7 +24,7 @@ THE SOFTWARE.
|
||||
#pragma clang diagnostic ignored "-Wsign-compare"
|
||||
#include "hip_test_context.hh"
|
||||
|
||||
#include <catch.hpp>
|
||||
#include <catch2/catch_all.hpp>
|
||||
#include <atomic>
|
||||
#include <chrono>
|
||||
#include <cstring>
|
||||
|
||||
@@ -24,7 +24,6 @@ THE SOFTWARE.
|
||||
#include <hip/hip_runtime.h>
|
||||
#include <hip/hiprtc.h>
|
||||
#include <kernel_mapping.hh>
|
||||
#include <catch.hpp>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <iostream>
|
||||
@@ -126,7 +125,7 @@ inline hiprtcProgram compileRTC(std::string& rtcKernel, std::string& kernelNameE
|
||||
kernelFile.close();
|
||||
|
||||
std::string kernelCode{stringStream.str()};
|
||||
INFO("RTC Kernel Code:\n" << kernelCode)
|
||||
INFO("RTC Kernel Code:\n" << kernelCode);
|
||||
|
||||
hiprtcProgram rtcProgram;
|
||||
hiprtcCreateProgram(&rtcProgram, kernelCode.c_str(), (fileName + ".cu").c_str(), 0, nullptr,
|
||||
|
||||
@@ -26,7 +26,7 @@ THE SOFTWARE.
|
||||
#include <resource_guards.hh>
|
||||
#include <hip/hip_cooperative_groups.h>
|
||||
#include <hip/hip_fp16.h>
|
||||
#include <limits>
|
||||
#include <random>
|
||||
#include <cmath>
|
||||
#include <iostream>
|
||||
#include <ios>
|
||||
|
||||
@@ -4,5 +4,7 @@ if(NOT RTC_TESTING)
|
||||
)
|
||||
|
||||
add_library(KERNELS EXCLUDE_FROM_ALL OBJECT ${TEST_SRC})
|
||||
target_compile_options(KERNELS PUBLIC -std=c++17)
|
||||
set_source_files_properties(${TEST_SRC} PROPERTIES LANGUAGE HIP)
|
||||
#set_property(TARGET KERNELS PROPERTY MSVC_RUNTIME_LIBRARY "MultiThreaded")
|
||||
target_link_libraries(KERNELS PRIVATE Catch2::Catch2)
|
||||
endif()
|
||||
|
||||
@@ -19,11 +19,11 @@ set(TEST_SRC
|
||||
|
||||
if(UNIX)
|
||||
add_custom_target(dummy_kernel.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER}
|
||||
--genco ${CMAKE_CURRENT_SOURCE_DIR}/dummy_kernel.cpp
|
||||
COMMAND ${CMAKE_HIP_COMPILER}
|
||||
--cuda-device-only -x hip ${CMAKE_CURRENT_SOURCE_DIR}/dummy_kernel.cpp
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../multiproc/dummy_kernel.code
|
||||
-I${HIP_PATH}/include/ -I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
||||
--hip-path=${HIP_PATH})
|
||||
-I${HIP_INCLUDE_DIR}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
set_property(GLOBAL APPEND PROPERTY
|
||||
G_INSTALL_CUSTOM_TARGETS ${CMAKE_CURRENT_BINARY_DIR}/dummy_kernel.code)
|
||||
endif()
|
||||
@@ -39,7 +39,7 @@ elseif(HIP_PLATFORM MATCHES "amd")
|
||||
hip_add_exe_to_target(NAME MultiProc
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS hiprtc)
|
||||
LINKER_LIBS hiprtc::hiprtc)
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
|
||||
@@ -20,6 +20,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
|
||||
extern "C" __global__ void dummy_ker() {}
|
||||
|
||||
@@ -26,6 +26,7 @@ cmake_minimum_required(VERSION 3.16.8)
|
||||
set(CMAKE_C_COMPILER_WORKS 1)
|
||||
set(CMAKE_CXX_COMPILER_WORKS 1)
|
||||
include(GNUInstallDirs)
|
||||
set(CPACK_CMAKE_GENERATOR "Ninja")
|
||||
|
||||
#############################
|
||||
# Packaging steps
|
||||
@@ -66,6 +67,7 @@ get_property(INSTALL_EXE_TARGETS GLOBAL PROPERTY G_INSTALL_EXE_TARGETS)
|
||||
get_property(INSTALL_CUSTOM_TARGETS GLOBAL PROPERTY G_INSTALL_CUSTOM_TARGETS)
|
||||
get_property(INSTALL_SRC_FILES GLOBAL PROPERTY G_INSTALL_SRC_FILES)
|
||||
get_property(INSTALL_HEADER_FILES GLOBAL PROPERTY G_INSTALL_HEADER_FILES)
|
||||
get_property(INSTALL_SCRIPT_FILES GLOBAL PROPERTY G_INSTALL_SCRIPT_TARGETS)
|
||||
# Create top level CTestTestfile.cmake
|
||||
file(WRITE ${PROJECT_BINARY_DIR}/${CATCH_BUILD_DIR}/script/CTestTestfile.cmake ${_autogen})
|
||||
foreach(CTEST_INCLUDE_FILE ${INSTALL_CTEST_INCLUDE_FILES})
|
||||
@@ -77,67 +79,86 @@ file(WRITE ${PROJECT_BINARY_DIR}/${CATCH_BUILD_DIR}/script/windows/CTestTestfile
|
||||
"${_autogen}\nsubdirs(${CATCH_BUILD_DIR})")
|
||||
|
||||
if(NOT WIN32)
|
||||
set(INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/hip)
|
||||
set(CPACK_GENERATOR "TGZ;DEB;RPM" CACHE STRING "Linux package types for catch tests")
|
||||
set(CPACK_BINARY_DEB "ON")
|
||||
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
|
||||
set(CPACK_DEBIAN_PACKAGE_PROVIDES "catch")
|
||||
set(CPACK_BINARY_RPM "ON")
|
||||
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
|
||||
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/opt")
|
||||
if (CPACK_PACKAGE_VERSION MATCHES "local" )
|
||||
#If building locally default value will cause build failure
|
||||
#DEBUG SYMBOL pacaking require SOURCE_DIR to be small
|
||||
set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX ${CPACK_INSTALL_PREFIX})
|
||||
endif()
|
||||
set(INSTALL_DIR ${CMAKE_INSTALL_DATADIR}/hip)
|
||||
execute_process(COMMAND rpmbuild --version
|
||||
RESULT_VARIABLE rpm_found
|
||||
OUTPUT_VARIABLE rpm_ver)
|
||||
if (rpm_found EQUAL "0" AND NOT rpm_ver STREQUAL "")
|
||||
set(CPACK_GENERATOR "TGZ;DEB;RPM" CACHE STRING "Linux package types for catch tests")
|
||||
else()
|
||||
# skip rpm on Rock since rpm build package not installed
|
||||
set(CPACK_GENERATOR "TGZ;DEB" CACHE STRING "Linux package types for catch tests")
|
||||
endif()
|
||||
set(CPACK_BINARY_DEB "ON")
|
||||
set(CPACK_DEBIAN_FILE_NAME "DEB-DEFAULT")
|
||||
set(CPACK_DEBIAN_PACKAGE_PROVIDES "catch")
|
||||
set(CPACK_BINARY_RPM "ON")
|
||||
set(CPACK_RPM_FILE_NAME "RPM-DEFAULT")
|
||||
set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/opt")
|
||||
if (CPACK_PACKAGE_VERSION MATCHES "local" )
|
||||
#If building locally default value will cause build failure
|
||||
#DEBUG SYMBOL pacaking require SOURCE_DIR to be small
|
||||
set(CPACK_RPM_BUILD_SOURCE_DIRS_PREFIX ${CPACK_INSTALL_PREFIX})
|
||||
endif()
|
||||
|
||||
if (DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
|
||||
set(CPACK_DEBIAN_PACKAGE_RELEASE $ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
|
||||
if (DEFINED ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
|
||||
set(CPACK_DEBIAN_PACKAGE_RELEASE $ENV{CPACK_DEBIAN_PACKAGE_RELEASE})
|
||||
else()
|
||||
set(CPACK_DEBIAN_PACKAGE_RELEASE "local")
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE})
|
||||
set(CPACK_RPM_PACKAGE_RELEASE $ENV{CPACK_RPM_PACKAGE_RELEASE})
|
||||
else()
|
||||
set(CPACK_RPM_PACKAGE_RELEASE "local")
|
||||
endif()
|
||||
|
||||
execute_process( COMMAND rpm --eval %{?dist}
|
||||
RESULT_VARIABLE PROC_RESULT
|
||||
OUTPUT_VARIABLE EVAL_RESULT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||
# Add os distribution tag to rpm package name . For deb package its set from build env
|
||||
if ( PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "" )
|
||||
string(APPEND CPACK_RPM_PACKAGE_RELEASE "%{?dist}")
|
||||
endif()
|
||||
set(CPACK_SOURCE_GENERATOR "TGZ")
|
||||
# Install license file
|
||||
set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/../LICENSE.md" )
|
||||
install(FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION ${INSTALL_DIR})
|
||||
set(CPACK_RPM_PACKAGE_LICENSE "MIT")
|
||||
else()
|
||||
set(CPACK_DEBIAN_PACKAGE_RELEASE "local")
|
||||
endif()
|
||||
|
||||
if(DEFINED ENV{CPACK_RPM_PACKAGE_RELEASE})
|
||||
set(CPACK_RPM_PACKAGE_RELEASE $ENV{CPACK_RPM_PACKAGE_RELEASE})
|
||||
else()
|
||||
set(CPACK_RPM_PACKAGE_RELEASE "local")
|
||||
endif()
|
||||
|
||||
execute_process( COMMAND rpm --eval %{?dist}
|
||||
RESULT_VARIABLE PROC_RESULT
|
||||
OUTPUT_VARIABLE EVAL_RESULT
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE )
|
||||
# Add os distribution tag to rpm package name . For deb package its set from build env
|
||||
if ( PROC_RESULT EQUAL "0" AND NOT EVAL_RESULT STREQUAL "" )
|
||||
string(APPEND CPACK_RPM_PACKAGE_RELEASE "%{?dist}")
|
||||
endif()
|
||||
|
||||
set(CPACK_SOURCE_GENERATOR "TGZ")
|
||||
# Install license file
|
||||
|
||||
set ( CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/../LICENSE.md" )
|
||||
install(FILES ${CPACK_RESOURCE_FILE_LICENSE} DESTINATION ${INSTALL_DIR})
|
||||
set(CPACK_RPM_PACKAGE_LICENSE "MIT")
|
||||
|
||||
else()
|
||||
# windows packaging
|
||||
set(INSTALL_DIR .)
|
||||
set(CPACK_INSTALL_PREFIX "")
|
||||
set(CPACK_SYSTEM_NAME "")
|
||||
set(CPACK_GENERATOR "ZIP" CACHE STRING "Windows package types for catch tests")
|
||||
set(CPACK_TEST_ZIP "ON")
|
||||
set(CPACK_ZIP_TEST_PACKAGE_NAME "catch")
|
||||
# windows packaging
|
||||
set(INSTALL_DIR ${CMAKE_INSTALL_PREFIX})
|
||||
set(CPACK_INSTALL_PREFIX "")
|
||||
set(CPACK_SYSTEM_NAME "")
|
||||
set(CPACK_GENERATOR "ZIP" CACHE STRING "Windows package types for catch tests")
|
||||
set(CPACK_TEST_ZIP "ON")
|
||||
set(CPACK_ZIP_TEST_PACKAGE_NAME "catch")
|
||||
set(CPACK_PKG_DIRS
|
||||
${CMAKE_BINARY_DIR}/_CPack_Packages/${CPACK_GENERATOR}/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME})
|
||||
set(CPACK_INSTALL_PREFIX ${CPACK_PKG_DIRS})
|
||||
if(${CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT})
|
||||
set(INSTALL_DIR ${CPACK_PKG_DIRS})
|
||||
else()
|
||||
set(INSTALL_DIR ${CMAKE_INSTALL_PREFIX})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
set(INSTALL_DIR_TESTS ${INSTALL_DIR}/${CATCH_BUILD_DIR})
|
||||
set(INSTALL_DIR_SCRIPT ${INSTALL_DIR}/${CATCH_BUILD_DIR}/script)
|
||||
set(INSTALL_DIR_SRC ${INSTALL_DIR}/${CATCH_BUILD_DIR}/src)
|
||||
set(INSTALL_DIR_HEADERS ${INSTALL_DIR}/${CATCH_BUILD_DIR}/headers)
|
||||
|
||||
# install catch library
|
||||
foreach(CATCH_LIB ${CATCH_LIBS})
|
||||
install(FILES ${CATCH_LIB} DESTINATION ${INSTALL_DIR_TESTS})
|
||||
endforeach()
|
||||
|
||||
# install catch scripts
|
||||
install(FILES
|
||||
${ADD_SCRIPT_PATH}
|
||||
${CATCH_INCLUDE_PATH}
|
||||
DESTINATION ${INSTALL_DIR_SCRIPT})
|
||||
foreach(CATCH_SCRIPT_FILE ${INSTALL_SCRIPT_FILES})
|
||||
install(FILES ${CATCH_SCRIPT_FILE} DESTINATION ${INSTALL_DIR_SCRIPT})
|
||||
endforeach()
|
||||
|
||||
# install cmake include files
|
||||
foreach(CTEST_INCLUDE_FILE ${INSTALL_CTEST_INCLUDE_FILES})
|
||||
install(FILES ${CTEST_INCLUDE_FILE} DESTINATION ${INSTALL_DIR_SCRIPT})
|
||||
@@ -172,4 +193,15 @@ install(FILES ${PROJECT_BINARY_DIR}/${CATCH_BUILD_DIR}/catchInfo.txt DESTINATION
|
||||
install(DIRECTORY
|
||||
${HIP_TEST_CONFIG_BINARY_DIR}
|
||||
DESTINATION ${INSTALL_DIR_TESTS})
|
||||
# workaround to make the built test binaries portable
|
||||
# CPACK_GENERATOR executes this packaging/CMakeLists.txt multiple times
|
||||
# there is no way to check which generator is being used.
|
||||
# So had to be written in a config file for each generator to replace and execute
|
||||
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/catch_package.cmake.in
|
||||
${CMAKE_CURRENT_BINARY_DIR}/catch_package.cmake @ONLY)
|
||||
# called during cpack
|
||||
set(CPACK_PRE_BUILD_SCRIPTS "${CMAKE_CURRENT_BINARY_DIR}/catch_package.cmake")
|
||||
# called during install and cpack. But skipped in cpack step
|
||||
install(SCRIPT "${CMAKE_CURRENT_BINARY_DIR}/catch_package.cmake")
|
||||
|
||||
include(CPack)
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
# cmake variables are replaced since cpack cannot find them
|
||||
# but cpack can understand cpack variables
|
||||
# this file gets executed by each CPACK_GENERATOR.
|
||||
# During standalone install step
|
||||
if(NOT DEFINED CPACK_GENERATOR)
|
||||
get_filename_component(ABS_INSTALL_PATH "${CMAKE_INSTALL_PREFIX}" ABSOLUTE)
|
||||
get_filename_component(ABS_CPACK_INSTALL "@CPACK_INSTALL_PREFIX@" ABSOLUTE)
|
||||
if("${ABS_INSTALL_PATH}" STREQUAL "${ABS_CPACK_INSTALL}")
|
||||
return()
|
||||
endif()
|
||||
if(NOT WIN32)
|
||||
set(CPACK_PKG_DIRS ${CMAKE_INSTALL_PREFIX}/@INSTALL_DIR@)
|
||||
else()
|
||||
set(CPACK_PKG_DIRS ${CMAKE_INSTALL_PREFIX})
|
||||
endif()
|
||||
else()
|
||||
if(NOT WIN32)
|
||||
set(CPACK_PKG_DIRS
|
||||
@PROJECT_BINARY_DIR@/_CPack_Packages/Linux/${CPACK_GENERATOR}/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME}/${CPACK_INSTALL_PREFIX}/@INSTALL_DIR@)
|
||||
else()
|
||||
set(CPACK_PKG_DIRS
|
||||
@CMAKE_BINARY_DIR@/_CPack_Packages/${CPACK_GENERATOR}/${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION}-${CPACK_SYSTEM_NAME})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
execute_process(COMMAND @Python_EXECUTABLE@
|
||||
@CMAKE_SOURCE_DIR@/cmake/relative_paths.py @CATCH_BUILD_DIR@ ${CPACK_PKG_DIRS}
|
||||
OUTPUT_VARIABLE workaround_out
|
||||
RESULT_VARIABLE workaround_res)
|
||||
if(NOT ${workaround_res} EQUAL 0)
|
||||
message(FATAL_ERROR
|
||||
"Error performing workaround using relative_paths.py :\n"
|
||||
" Result: ${workaround_res}\n"
|
||||
" Output: ${workaround_out}\n"
|
||||
)
|
||||
endif()
|
||||
@@ -30,5 +30,4 @@ set(TEST_SRC
|
||||
|
||||
hip_add_exe_to_target(NAME EventPerformance
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
@@ -24,5 +24,4 @@ set(TEST_SRC
|
||||
|
||||
hip_add_exe_to_target(NAME ExamplePerformance
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
@@ -34,5 +34,4 @@ endif()
|
||||
|
||||
hip_add_exe_to_target(NAME KernelLaunchPerformance
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
@@ -49,5 +49,4 @@ set(TEST_SRC
|
||||
|
||||
hip_add_exe_to_target(NAME MemcpyPerformance
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
@@ -35,5 +35,4 @@ set(TEST_SRC
|
||||
|
||||
hip_add_exe_to_target(NAME MemsetPerformance
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
@@ -59,5 +59,4 @@ endif()
|
||||
|
||||
hip_add_exe_to_target(NAME StreamPerformance
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
@@ -27,5 +27,4 @@ endif()
|
||||
|
||||
hip_add_exe_to_target(NAME WarpSyncPerformance
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
@@ -46,7 +46,12 @@ if(HIP_PLATFORM MATCHES "amd")
|
||||
TEST_TARGET_NAME perf_test)
|
||||
else()
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}")
|
||||
find_package(NUMA)
|
||||
find_package(NUMA QUIET)
|
||||
if(NUMA_FOUND)
|
||||
set(NUMA "${NUMA_LIBRARIES}")
|
||||
else()
|
||||
find_library(NUMA NAMES numa REQUIRED)
|
||||
endif()
|
||||
if(NUMA_FOUND)
|
||||
# Test code still use libnuma apis
|
||||
set(TEST_SRC ${TEST_SRC} hipPerfHostNumaAlloc.cc)
|
||||
|
||||
@@ -6,4 +6,4 @@ set(TEST_SRC
|
||||
hip_add_exe_to_target(NAME module_stress
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME stress_test
|
||||
LINKER_LIBS hiprtc)
|
||||
LINKER_LIBS hiprtc::hiprtc)
|
||||
|
||||
@@ -6,5 +6,4 @@ set(TEST_SRC
|
||||
|
||||
hip_add_exe_to_target(NAME stream_stress
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME stress_test
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
TEST_TARGET_NAME stress_test)
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
# THE SOFTWARE.
|
||||
|
||||
add_subdirectory(rtc)
|
||||
add_subdirectory(deviceLib)
|
||||
add_subdirectory(graph)
|
||||
add_subdirectory(memory)
|
||||
add_subdirectory(stream)
|
||||
@@ -39,28 +38,32 @@ add_subdirectory(context)
|
||||
add_subdirectory(device_memory)
|
||||
add_subdirectory(warp)
|
||||
add_subdirectory(dynamicLoading)
|
||||
add_subdirectory(c_compilation)
|
||||
add_subdirectory(g++)
|
||||
#add_subdirectory(gcc) # TODO link error TheRock build
|
||||
add_subdirectory(module)
|
||||
add_subdirectory(channelDescriptor)
|
||||
add_subdirectory(executionControl)
|
||||
add_subdirectory(math)
|
||||
add_subdirectory(vector_types)
|
||||
add_subdirectory(atomics)
|
||||
add_subdirectory(complex)
|
||||
add_subdirectory(p2p)
|
||||
add_subdirectory(gcc)
|
||||
add_subdirectory(syncthreads)
|
||||
add_subdirectory(threadfence)
|
||||
add_subdirectory(virtualMemoryManagement)
|
||||
add_subdirectory(c_compilation)
|
||||
|
||||
# TODO Rock build failures
|
||||
if(UNIX)
|
||||
add_subdirectory(math)
|
||||
# TODO compute build failures
|
||||
add_subdirectory(deviceLib)
|
||||
add_subdirectory(syncthreads)
|
||||
endif()
|
||||
if(HIP_PLATFORM STREQUAL "amd")
|
||||
add_subdirectory(callback)
|
||||
add_subdirectory(clock)
|
||||
add_subdirectory(hip_specific)
|
||||
# Vulkan interop APIs currently undefined for Nvidia
|
||||
add_subdirectory(vulkan_interop)
|
||||
add_subdirectory(gl_interop) # Disabled on NVIDIA due to defect - EXSWHTEC-246
|
||||
add_subdirectory(callback)
|
||||
add_subdirectory(clock)
|
||||
add_subdirectory(hip_specific)
|
||||
# Vulkan interop APIs currently undefined for Nvidia
|
||||
add_subdirectory(vulkan_interop)
|
||||
add_subdirectory(gl_interop) # Disabled on NVIDIA due to defect - EXSWHTEC-246
|
||||
endif()
|
||||
add_subdirectory(synchronization)
|
||||
add_subdirectory(launchBounds)
|
||||
|
||||
@@ -34,7 +34,7 @@ elseif(HIP_PLATFORM MATCHES "amd")
|
||||
hip_add_exe_to_target(NAME AssertionTest
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS hiprtc)
|
||||
LINKER_LIBS hiprtc::hiprtc)
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
@@ -54,4 +54,4 @@ set_property(GLOBAL APPEND PROPERTY G_INSTALL_SRC_FILES ${NEGATIVE_TEST_SRC})
|
||||
# COMMAND ${Python3_EXECUTABLE} ../compileAndCaptureOutput.py
|
||||
# ./src ${HIP_PLATFORM} ${HIP_PATH}
|
||||
# static_assert_kernels_negative.cc 2)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -62,7 +62,7 @@ if(HIP_PLATFORM MATCHES "amd")
|
||||
hip_add_exe_to_target(NAME AtomicsTest
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS hiprtc)
|
||||
LINKER_LIBS hiprtc::hiprtc)
|
||||
|
||||
if(UNIX)
|
||||
set(EXPECTED_ERRORS 40)
|
||||
@@ -147,4 +147,4 @@ if(UNIX)
|
||||
# ./src ${HIP_PLATFORM} ${HIP_PATH}
|
||||
# atomicExch_system_negative_kernels.cc 40)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -22,18 +22,19 @@ set(TEST_SRC
|
||||
hipGetDeviceProp.cc
|
||||
)
|
||||
|
||||
set (PLATFORM_DEFINE __HIP_PLATFORM_AMD__)
|
||||
|
||||
if(HIP_PLATFORM MATCHES "nvidia")
|
||||
set (PLATFORM_DEFINE __HIP_PLATFORM_NVIDIA__)
|
||||
set(PLATFORM_DEFINE __HIP_PLATFORM_NVIDIA__)
|
||||
else()
|
||||
set(PLATFORM_DEFINE __HIP_PLATFORM_AMD__)
|
||||
endif()
|
||||
|
||||
# Creating Custom object file
|
||||
add_custom_target(devprop_c_custom
|
||||
COMMAND ${HIP_PATH}/bin/hipcc
|
||||
-c -Wno-deprecated-declarations ${CMAKE_CURRENT_SOURCE_DIR}/hipGetDeviceProp.c
|
||||
-I${HIP_PATH}/include
|
||||
COMMAND ${CMAKE_C_COMPILER}
|
||||
-c -Wno-deprecated-declarations -x c ${CMAKE_CURRENT_SOURCE_DIR}/hipGetDeviceProp.c
|
||||
-I${HIP_INCLUDE_DIR}
|
||||
-D${PLATFORM_DEFINE}
|
||||
--hip-path=${HIP_PATH}
|
||||
-o hipGetDeviceProp.o
|
||||
BYPRODUCTS hipGetDeviceProp.o
|
||||
)
|
||||
|
||||
@@ -29,11 +29,11 @@ set(TEST_SRC
|
||||
if(UNIX)
|
||||
set(TEST_SRC ${TEST_SRC} hipKernelNameRefByPtr.cc)
|
||||
|
||||
add_custom_target(SimpleKernel.code COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/SimpleKernel.cc
|
||||
add_custom_target(SimpleKernel.code COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/SimpleKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/callback/SimpleKernel.code
|
||||
-I${HIP_PATH}/include -I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
||||
--hip-path=${HIP_PATH})
|
||||
-I${HIP_INCLUDE_DIR}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS ${CMAKE_CURRENT_BINARY_DIR}/SimpleKernel.code)
|
||||
endif()
|
||||
|
||||
|
||||
@@ -20,6 +20,6 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
|
||||
extern "C" __global__ void simple_kernel() { printf("Hello World!"); }
|
||||
|
||||
@@ -74,8 +74,10 @@ TEST_CASE("Unit_hipApiName_Positive_Basic") {
|
||||
* - Platform specific (AMD)
|
||||
*/
|
||||
TEST_CASE("Unit_hipApiName_Negative_ReservedIds") {
|
||||
REQUIRE_THAT(hipApiName(std::numeric_limits<uint32_t>::min()), Catch::Equals(kUnknownApi));
|
||||
REQUIRE_THAT(hipApiName(std::numeric_limits<uint32_t>::max()), Catch::Equals(kUnknownApi));
|
||||
REQUIRE_THAT(hipApiName(std::numeric_limits<uint32_t>::min()),
|
||||
Catch::Matchers::Equals(kUnknownApi));
|
||||
REQUIRE_THAT(hipApiName(std::numeric_limits<uint32_t>::max()),
|
||||
Catch::Matchers::Equals(kUnknownApi));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -18,7 +18,15 @@ if(HIP_PLATFORM MATCHES "amd")
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
set(OFFLOAD_ARCH_GENERIC_STR "--offload-arch=gfx9-generic --offload-arch=gfx9-4-generic:sramecc+:xnack- --offload-arch=gfx9-4-generic:sramecc-:xnack- --offload-arch=gfx9-4-generic:xnack+ --offload-arch=gfx10-1-generic --offload-arch=gfx10-3-generic --offload-arch=gfx11-generic --offload-arch=gfx12-generic")
|
||||
set(OFFLOAD_ARCH_GENERIC_STR
|
||||
--offload-arch=gfx9-generic
|
||||
--offload-arch=gfx9-4-generic:sramecc+:xnack-
|
||||
--offload-arch=gfx9-4-generic:sramecc-:xnack-
|
||||
--offload-arch=gfx9-4-generic:xnack+
|
||||
--offload-arch=gfx10-1-generic
|
||||
--offload-arch=gfx10-3-generic
|
||||
--offload-arch=gfx11-generic
|
||||
--offload-arch=gfx12-generic)
|
||||
|
||||
set(DISABLE_GENERIC_TARGET_ONLY)
|
||||
|
||||
@@ -30,40 +38,34 @@ if(HIP_PLATFORM MATCHES "amd")
|
||||
set(GENERIC_TARGET_ONLY_COMPRESSED_EXE hipSquareGenericTargetOnlyCompressed)
|
||||
|
||||
set(LIBFS)
|
||||
set(HIP_GENERIC_RPATH)
|
||||
if(WIN32)
|
||||
set(GENERIC_TARGET_ONLY_EXE ${GENERIC_TARGET_ONLY_EXE}.exe)
|
||||
set(GENERIC_TARGET_ONLY_COMPRESSED_EXE ${GENERIC_TARGET_ONLY_COMPRESSED_EXE}.exe)
|
||||
else()
|
||||
set(LIBFS -lstdc++fs)
|
||||
set(HIP_GENERIC_RPATH
|
||||
-Wl,-rpath,'$$ORIGIN/../lib:${HIP_PATH}/lib')
|
||||
if(NOT WIN32)
|
||||
set(LIBFS -lstdc++fs)
|
||||
endif()
|
||||
|
||||
add_custom_target(hipSquareGenericTargetOnly ALL
|
||||
COMMAND ${CMAKE_CXX_COMPILER} -DNO_GENERIC_TARGET_ONLY_TEST --std=c++17 -mcode-object-version=6 -w "${OFFLOAD_ARCH_GENERIC_STR}"
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hipSquareGenericTarget.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../hipTestMain/hip_test_context.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../hipTestMain/hip_test_features.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../hipTestMain/main.cc
|
||||
${HIP_GENERIC_RPATH}
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/${GENERIC_TARGET_ONLY_EXE}
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../external/Catch2
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../external/picojson ${LIBFS})
|
||||
add_custom_target(hipSquareGenericTargetOnlyCompressed ALL
|
||||
COMMAND ${CMAKE_CXX_COMPILER} -DNO_GENERIC_TARGET_ONLY_TEST -DGENERIC_COMPRESSED --std=c++17 -mcode-object-version=6 --offload-compress -w "${OFFLOAD_ARCH_GENERIC_STR}"
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hipSquareGenericTarget.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../hipTestMain/hip_test_context.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../hipTestMain/hip_test_features.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../hipTestMain/main.cc
|
||||
${HIP_GENERIC_RPATH}
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/${GENERIC_TARGET_ONLY_COMPRESSED_EXE}
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../external/Catch2
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../external/picojson ${LIBFS})
|
||||
set_source_files_properties(hipSquareGenericTarget.cc PROPERTIES LANGUAGE HIP)
|
||||
add_executable(${GENERIC_TARGET_ONLY_EXE}
|
||||
hipSquareGenericTarget.cc
|
||||
$<TARGET_OBJECTS:Main_Object>)
|
||||
target_compile_options(${GENERIC_TARGET_ONLY_EXE} PUBLIC -w ${OFFLOAD_ARCH_GENERIC_STR})
|
||||
target_link_libraries(${GENERIC_TARGET_ONLY_EXE} hip::host hip::device)
|
||||
target_compile_definitions(${GENERIC_TARGET_ONLY_EXE} PRIVATE NO_GENERIC_TARGET_ONLY_TEST)
|
||||
if(NOT USE_PREBUILT_CATCH)
|
||||
target_link_libraries(${GENERIC_TARGET_ONLY_EXE} Catch2::Catch2WithMain)
|
||||
endif()
|
||||
|
||||
add_executable(${GENERIC_TARGET_ONLY_COMPRESSED_EXE}
|
||||
hipSquareGenericTarget.cc
|
||||
$<TARGET_OBJECTS:Main_Object>)
|
||||
target_compile_definitions(${GENERIC_TARGET_ONLY_COMPRESSED_EXE} PRIVATE GENERIC_COMPRESSED NO_GENERIC_TARGET_ONLY_TEST)
|
||||
target_compile_options(${GENERIC_TARGET_ONLY_COMPRESSED_EXE} PUBLIC --offload-compress -w ${OFFLOAD_ARCH_GENERIC_STR})
|
||||
target_link_libraries(${GENERIC_TARGET_ONLY_COMPRESSED_EXE} hip::host hip::device)
|
||||
if(NOT USE_PREBUILT_CATCH)
|
||||
target_link_libraries(${GENERIC_TARGET_ONLY_COMPRESSED_EXE} Catch2::Catch2WithMain)
|
||||
endif()
|
||||
if (WIN32)
|
||||
set(GENERIC_TARGET_ONLY_EXE ${GENERIC_TARGET_ONLY_EXE}.exe)
|
||||
set(GENERIC_TARGET_ONLY_COMPRESSED_EXE ${GENERIC_TARGET_ONLY_COMPRESSED_EXE}.exe)
|
||||
endif()
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS ${CMAKE_CURRENT_BINARY_DIR}/${GENERIC_TARGET_ONLY_EXE})
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS ${CMAKE_CURRENT_BINARY_DIR}/${GENERIC_TARGET_ONLY_COMPRESSED_EXE})
|
||||
else()
|
||||
@@ -77,12 +79,14 @@ if(HIP_PLATFORM MATCHES "amd")
|
||||
hip_add_exe_to_target(NAME hipSquareGenericTarget
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests)
|
||||
set_target_properties(hipSquareGenericTarget PROPERTIES COMPILE_FLAGS "-mcode-object-version=6 ${DISABLE_GENERIC_TARGET_ONLY} -w ${OFFLOAD_ARCH_GENERIC_STR}")
|
||||
set_target_properties(hipSquareGenericTarget PROPERTIES COMPILE_FLAGS "-mcode-object-version=6 ${DISABLE_GENERIC_TARGET_ONLY}")
|
||||
target_compile_options(hipSquareGenericTarget PUBLIC ${OFFLOAD_ARCH_GENERIC_STR})
|
||||
|
||||
hip_add_exe_to_target(NAME hipSquareGenericTargetCompressed
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests)
|
||||
set_target_properties(hipSquareGenericTargetCompressed PROPERTIES COMPILE_FLAGS " -DGENERIC_COMPRESSED ${DISABLE_GENERIC_TARGET_ONLY} -mcode-object-version=6 --offload-compress -w ${OFFLOAD_ARCH_GENERIC_STR}")
|
||||
set_target_properties(hipSquareGenericTargetCompressed PROPERTIES COMPILE_FLAGS " -DGENERIC_COMPRESSED ${DISABLE_GENERIC_TARGET_ONLY} -mcode-object-version=6 --offload-compress")
|
||||
target_compile_options(hipSquareGenericTargetCompressed PUBLIC ${OFFLOAD_ARCH_GENERIC_STR})
|
||||
|
||||
add_dependencies(hipSquareGenericTarget hipSquareGenericTargetCompressed)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
@@ -93,15 +97,15 @@ if(HIP_PLATFORM MATCHES "amd")
|
||||
# SWDEV-548807 skip building hipSpirvTest
|
||||
if(false)
|
||||
add_custom_target(hipSpirvTest ALL
|
||||
COMMAND ${CMAKE_CXX_COMPILER} ${CMAKE_CURRENT_SOURCE_DIR}/hipSpirvTest.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../hipTestMain/hip_test_context.cc
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/../../hipTestMain/main.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} -x hip ${CMAKE_CURRENT_SOURCE_DIR}/hipSpirvTest.cc
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/../../hipTestMain/hip_test_context.cc
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/../../hipTestMain/main.cc
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../external/Catch2
|
||||
-I${Catch2_SOURCE_DIR}/src
|
||||
-I${Catch2_BINARY_DIR}/generated-includes
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../external/picojson
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH} --offload-arch=amdgcnspirv
|
||||
--offload-arch=amdgcnspirv
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/compiler/hipSpirvTest)
|
||||
add_dependencies(CompilerTest hipSpirvTest)
|
||||
endif()
|
||||
|
||||
endif()
|
||||
|
||||
@@ -99,17 +99,17 @@ TEST_CASE("Unit_test_generic_target_in_regular_fatbin") {
|
||||
#ifdef GENERIC_COMPRESSED
|
||||
TEST_CASE("Unit_test_generic_target_only_in_compressed_fatbin") {
|
||||
#ifdef __linux__
|
||||
char* cmd =
|
||||
const char* cmd =
|
||||
"chmod u+x ./hipSquareGenericTargetOnlyCompressed && ./hipSquareGenericTargetOnlyCompressed";
|
||||
#else
|
||||
char* cmd = "hipSquareGenericTargetOnlyCompressed.exe";
|
||||
const char* cmd = "hipSquareGenericTargetOnlyCompressed.exe";
|
||||
#endif
|
||||
#else // else GENERIC_COMPRESSED
|
||||
TEST_CASE("Unit_test_generic_target_only_in_regular_fatbin ") {
|
||||
TEST_CASE("Unit_test_generic_target_only_in_regular_fatbin") {
|
||||
#ifdef __linux__
|
||||
char* cmd = "chmod u+x ./hipSquareGenericTargetOnly && ./hipSquareGenericTargetOnly";
|
||||
const char* cmd = "chmod u+x ./hipSquareGenericTargetOnly && ./hipSquareGenericTargetOnly";
|
||||
#else
|
||||
char* cmd = "hipSquareGenericTargetOnly.exe";
|
||||
const char* cmd = "hipSquareGenericTargetOnly.exe";
|
||||
#endif
|
||||
#endif // GENERIC_COMPRESSED
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ set(TEST_SRC
|
||||
if(HIP_PLATFORM MATCHES "nvidia")
|
||||
set(LINKER_LIBS nvrtc)
|
||||
elseif(HIP_PLATFORM MATCHES "amd")
|
||||
set(LINKER_LIBS hiprtc)
|
||||
set(LINKER_LIBS hiprtc::hiprtc)
|
||||
endif()
|
||||
|
||||
hip_add_exe_to_target(NAME ComplexTest
|
||||
|
||||
@@ -69,6 +69,6 @@ __global__ void CastComplexTypeKernel(T1* const output_val, T2 const input_val)
|
||||
|
||||
template <typename T> void CompareValues(T actual_val, T ref_val, double margin) {
|
||||
if (!std::isnan(ref_val)) {
|
||||
REQUIRE_THAT(actual_val, Catch::WithinAbs(ref_val, margin));
|
||||
REQUIRE_THAT(actual_val, Catch::Matchers::WithinAbs(ref_val, margin));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19,6 +19,8 @@ THE SOFTWARE.
|
||||
#include "cooperative_groups_common.hh"
|
||||
#include "cg_common_kernels.hh"
|
||||
|
||||
#include <random>
|
||||
|
||||
#include <cmd_options.hh>
|
||||
#include <cpu_grid.h>
|
||||
#include <resource_guards.hh>
|
||||
|
||||
@@ -20,6 +20,7 @@ THE SOFTWARE.
|
||||
#include "cooperative_groups_common.hh"
|
||||
#include "cg_common_kernels.hh"
|
||||
|
||||
#include <random>
|
||||
#include <bitset>
|
||||
#include <optional>
|
||||
#include <resource_guards.hh>
|
||||
|
||||
@@ -24,6 +24,7 @@ THE SOFTWARE.
|
||||
#include <optional>
|
||||
#include <resource_guards.hh>
|
||||
#include <utils.hh>
|
||||
#include <random>
|
||||
|
||||
#include <cmd_options.hh>
|
||||
|
||||
|
||||
@@ -20,8 +20,8 @@ THE SOFTWARE.
|
||||
#include "cooperative_groups_common.hh"
|
||||
#include "cg_common_kernels.hh"
|
||||
|
||||
#include <bitset>
|
||||
#include <array>
|
||||
#include <random>
|
||||
|
||||
#include <cmd_options.hh>
|
||||
#include <cpu_grid.h>
|
||||
|
||||
@@ -49,28 +49,53 @@ if(UNIX)
|
||||
)
|
||||
endif()
|
||||
|
||||
set_source_files_properties(hipGetDeviceCount.cc PROPERTIES COMPILE_FLAGS -std=c++17)
|
||||
set_source_files_properties(hipDeviceGetUuid.cc PROPERTIES COMPILE_FLAGS -std=c++17)
|
||||
|
||||
add_executable(getDeviceCount EXCLUDE_FROM_ALL getDeviceCount_exe.cc)
|
||||
set_source_files_properties(getDeviceCount_exe.cc PROPERTIES LANGUAGE HIP)
|
||||
set_target_properties(getDeviceCount PROPERTIES LINKER_LANGUAGE HIP)
|
||||
target_link_libraries(getDeviceCount hip::host hip::device)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS getDeviceCount)
|
||||
|
||||
add_executable(chkUUIDFrmChildProc_Exe EXCLUDE_FROM_ALL chkUUIDFrmChildProc_Exe.cc)
|
||||
add_executable(chkUUIDInGrandChild_Exe EXCLUDE_FROM_ALL chkUUIDInGrandChild_Exe.cc)
|
||||
add_executable(setuuidGetDevCount EXCLUDE_FROM_ALL setuuidGetDevCount_Exe.cc)
|
||||
|
||||
set_source_files_properties(chkUUIDFrmChildProc_Exe.cc PROPERTIES LANGUAGE HIP)
|
||||
set_source_files_properties(chkUUIDInGrandChild_Exe.cc PROPERTIES LANGUAGE HIP)
|
||||
set_source_files_properties(setuuidGetDevCount_Exe.cc PROPERTIES LANGUAGE HIP)
|
||||
set_target_properties(chkUUIDFrmChildProc_Exe PROPERTIES LINKER_LANGUAGE HIP)
|
||||
set_target_properties(chkUUIDInGrandChild_Exe PROPERTIES LINKER_LANGUAGE HIP)
|
||||
set_target_properties(setuuidGetDevCount PROPERTIES LINKER_LANGUAGE HIP)
|
||||
target_link_libraries(chkUUIDFrmChildProc_Exe hip::host hip::device)
|
||||
target_link_libraries(chkUUIDInGrandChild_Exe hip::host hip::device)
|
||||
target_link_libraries(setuuidGetDevCount hip::host hip::device)
|
||||
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS
|
||||
chkUUIDFrmChildProc_Exe
|
||||
chkUUIDInGrandChild_Exe
|
||||
setuuidGetDevCount)
|
||||
|
||||
if(UNIX)
|
||||
add_executable(getUUIDfrmRocinfo EXCLUDE_FROM_ALL getUUIDfrmRocinfo_Exe.cc)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS getUUIDfrmRocinfo)
|
||||
add_dependencies(build_tests getUUIDfrmRocinfo)
|
||||
add_executable(getUUIDfrmRocinfo EXCLUDE_FROM_ALL getUUIDfrmRocinfo_Exe.cc)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS getUUIDfrmRocinfo)
|
||||
add_dependencies(build_tests getUUIDfrmRocinfo)
|
||||
set_source_files_properties(getUUIDfrmRocinfo_Exe.cc PROPERTIES LANGUAGE HIP)
|
||||
set_target_properties(getUUIDfrmRocinfo PROPERTIES LINKER_LANGUAGE HIP)
|
||||
target_link_libraries(getUUIDfrmRocinfo hip::host hip::device)
|
||||
endif()
|
||||
add_executable(multipleUUID EXCLUDE_FROM_ALL multipleUUID_Exe.cc)
|
||||
add_executable(setEnvInChildProc EXCLUDE_FROM_ALL setEnvInChildProc_Exe.cc)
|
||||
add_executable(uuidList EXCLUDE_FROM_ALL uuidList.cc)
|
||||
|
||||
set_source_files_properties(multipleUUID_Exe.cc PROPERTIES LANGUAGE HIP)
|
||||
set_source_files_properties(setEnvInChildProc_Exe.cc PROPERTIES LANGUAGE HIP)
|
||||
set_source_files_properties(uuidList.cc PROPERTIES LANGUAGE HIP)
|
||||
set_target_properties(multipleUUID PROPERTIES LINKER_LANGUAGE HIP)
|
||||
set_target_properties(setEnvInChildProc PROPERTIES LINKER_LANGUAGE HIP)
|
||||
set_target_properties(uuidList PROPERTIES LINKER_LANGUAGE HIP)
|
||||
target_link_libraries(multipleUUID hip::host hip::device)
|
||||
target_link_libraries(setEnvInChildProc hip::host hip::device)
|
||||
target_link_libraries(uuidList hip::host hip::device)
|
||||
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS
|
||||
multipleUUID
|
||||
setEnvInChildProc
|
||||
@@ -85,8 +110,7 @@ set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS
|
||||
endif()
|
||||
hip_add_exe_to_target(NAME DeviceTest
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
TEST_TARGET_NAME build_tests)
|
||||
add_dependencies(build_tests getDeviceCount chkUUIDFrmChildProc_Exe chkUUIDInGrandChild_Exe setuuidGetDevCount multipleUUID setEnvInChildProc uuidList)
|
||||
#Disabled below two executable due to the defect ticket SWDEV-467665
|
||||
if(0)
|
||||
@@ -97,4 +121,7 @@ if(HIP_PLATFORM MATCHES "amd")
|
||||
add_executable(hipDeviceSetGetScratchExe EXCLUDE_FROM_ALL hipDeviceSetGetScratchExe.cc)
|
||||
add_dependencies(DeviceTest hipDeviceSetGetScratchExe)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS hipDeviceSetGetScratchExe)
|
||||
set_source_files_properties(hipDeviceSetGetScratchExe.cc PROPERTIES LANGUAGE HIP)
|
||||
set_target_properties(hipDeviceSetGetScratchExe PROPERTIES LINKER_LANGUAGE HIP)
|
||||
target_link_libraries(hipDeviceSetGetScratchExe hip::host hip::device)
|
||||
endif()
|
||||
|
||||
@@ -17,7 +17,7 @@ OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
|
||||
#define HIP_CHECK(error) \
|
||||
{ \
|
||||
|
||||
@@ -186,7 +186,7 @@ bool verifyAdd_divValue(T* gpuData, int len, bool* activeLanes, T* divergentValu
|
||||
if (activeLanes[i]) val += divergentValue[i];
|
||||
}
|
||||
if (std::is_same<T, float>::value) {
|
||||
REQUIRE(val == Approx(gpuData[0]));
|
||||
REQUIRE(val == Catch::Approx(gpuData[0]));
|
||||
return true;
|
||||
}
|
||||
return val == gpuData[0];
|
||||
@@ -199,7 +199,7 @@ bool verifySub_divValue(T* gpuData, int len, bool* activeLanes, T* divergentValu
|
||||
if (activeLanes[i]) val -= divergentValue[i];
|
||||
}
|
||||
if (std::is_same<T, float>::value) {
|
||||
REQUIRE(val == Approx(gpuData[1]));
|
||||
REQUIRE(val == Catch::Approx(gpuData[1]));
|
||||
return true;
|
||||
}
|
||||
return val == gpuData[1];
|
||||
@@ -213,7 +213,7 @@ bool verifyMax_divValue(T* gpuData, int len, bool* activeLanes, T* divergentValu
|
||||
}
|
||||
|
||||
if (std::is_same<T, float>::value) {
|
||||
REQUIRE(val == Approx(gpuData[2]));
|
||||
REQUIRE(val == Catch::Approx(gpuData[2]));
|
||||
return true;
|
||||
}
|
||||
return val == gpuData[2];
|
||||
@@ -227,7 +227,7 @@ bool verifyMin_divValue(T* gpuData, int len, bool* activeLanes, T* divergentValu
|
||||
}
|
||||
|
||||
if (std::is_same<T, float>::value) {
|
||||
REQUIRE(val == Approx(gpuData[3]));
|
||||
REQUIRE(val == Catch::Approx(gpuData[3]));
|
||||
return true;
|
||||
}
|
||||
return val == gpuData[3];
|
||||
|
||||
@@ -85,7 +85,7 @@ set(AMD_TEST_SRC
|
||||
AtomicsWithRandomActiveLanesInWavefront.cc
|
||||
fp16_ops.cc
|
||||
fp8_host.cc
|
||||
fp8_e8m0.cc
|
||||
# fp8_e8m0.cc # TODO, reenable it, disabling this test due to failure seen on TheRock,
|
||||
fp6_ocp.cc
|
||||
fp4_ocp.cc
|
||||
)
|
||||
@@ -120,29 +120,29 @@ set(AMD_GFX1200_SPEC_TEST_SRC
|
||||
# Note to pass arch use format like -DOFFLOAD_ARCH_STR="--offload-arch=gfx900 --offload-arch=gfx906"
|
||||
# having space at the start/end of OFFLOAD_ARCH_STR can cause build failures
|
||||
add_custom_target(kerDevAllocMultCO.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kerDevAllocMultCO.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/kerDevAllocMultCO.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/deviceLib/kerDevAllocMultCO.code
|
||||
-I${HIP_PATH}/include/
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH})
|
||||
-I${HIP_INCLUDE_DIR}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
add_custom_target(kerDevWriteMultCO.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kerDevWriteMultCO.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/kerDevWriteMultCO.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/deviceLib/kerDevWriteMultCO.code
|
||||
-I${HIP_PATH}/include/
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH})
|
||||
-I${HIP_INCLUDE_DIR}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
add_custom_target(kerDevFreeMultCO.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kerDevFreeMultCO.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/kerDevFreeMultCO.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/deviceLib/kerDevFreeMultCO.code
|
||||
-I${HIP_PATH}/include/
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH})
|
||||
-I${HIP_INCLUDE_DIR}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
add_custom_target(kerDevAllocSingleKer.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/kerDevAllocSingleKer.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/kerDevAllocSingleKer.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/deviceLib/kerDevAllocSingleKer.code
|
||||
-I${HIP_PATH}/include/
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH})
|
||||
-I${HIP_INCLUDE_DIR}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS ${CMAKE_CURRENT_BINARY_DIR}/kerDevAllocSingleKer.code)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS ${CMAKE_CURRENT_BINARY_DIR}/kerDevFreeMultCO.code)
|
||||
@@ -185,7 +185,6 @@ if(HIP_PLATFORM MATCHES "amd")
|
||||
set(ARCH_GFX1200 -1)
|
||||
endif()
|
||||
set(TEST_SRC ${TEST_SRC} ${AMD_TEST_SRC})
|
||||
set_source_files_properties(floatTM.cc PROPERTIES COMPILE_FLAGS -std=c++17)
|
||||
set_source_files_properties(bfloat16.cc PROPERTIES COMPILE_FLAGS "-DHIP_ENABLE_WARP_SYNC_BUILTINS")
|
||||
if(${ARCH_CHECK} GREATER_EQUAL 0)
|
||||
set(TEST_SRC ${TEST_SRC} ${AMD_ARCH_SPEC_TEST_SRC})
|
||||
@@ -212,7 +211,7 @@ endif()
|
||||
hip_add_exe_to_target(NAME UnitDeviceTests
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS hiprtc)
|
||||
LINKER_LIBS hiprtc::hiprtc)
|
||||
elseif(HIP_PLATFORM MATCHES "nvidia")
|
||||
hip_add_exe_to_target(NAME UnitDeviceTests
|
||||
TEST_SRC ${TEST_SRC}
|
||||
@@ -220,4 +219,4 @@ elseif(HIP_PLATFORM MATCHES "nvidia")
|
||||
COMPILE_OPTIONS --Wno-deprecated-declarations)
|
||||
endif()
|
||||
|
||||
add_dependencies(build_tests kerDevAllocMultCO.code kerDevWriteMultCO.code kerDevFreeMultCO.code kerDevAllocSingleKer.code)
|
||||
add_dependencies(UnitDeviceTests kerDevAllocMultCO.code kerDevWriteMultCO.code kerDevFreeMultCO.code kerDevAllocSingleKer.code)
|
||||
|
||||
@@ -73,7 +73,7 @@ void fp16_arith_cpu(const std::vector<float>& a, const std::vector<float>& b,
|
||||
TEST_CASE("Unit_fp16_arith") {
|
||||
constexpr size_t num_of_ops = 18;
|
||||
constexpr size_t iters = 100;
|
||||
Catch::Generators::RandomFloatingGenerator<float> input1_gen(2.2f, 10.f);
|
||||
Catch::Generators::RandomFloatingGenerator<float> input1_gen(2.2f, 10.f, /*seed*/ 0x1234);
|
||||
constexpr float input2 = 1.1f;
|
||||
for (size_t iter = 0; iter < iters; iter++) {
|
||||
auto input1 = input1_gen.get();
|
||||
@@ -98,7 +98,7 @@ TEST_CASE("Unit_fp16_arith") {
|
||||
for (size_t i = 0; i < out.size(); i++) {
|
||||
INFO("Iter: " << i << " In1: " << in1[i] << " CPU res: " << cpuout[i]
|
||||
<< " GPU res: " << out[i]);
|
||||
REQUIRE(out[i] == Approx(cpuout[i]).epsilon(0.1));
|
||||
REQUIRE(out[i] == Catch::Approx(cpuout[i]).epsilon(0.1));
|
||||
}
|
||||
HIP_CHECK(hipFree(dout));
|
||||
HIP_CHECK(hipFree(din1));
|
||||
@@ -153,7 +153,7 @@ void fp162_arith_cpu(std::vector<float2>& a, std::vector<float2>& b, std::vector
|
||||
TEST_CASE("Unit_fp162_arith") {
|
||||
constexpr size_t num_of_ops = 18;
|
||||
constexpr size_t iters = 100;
|
||||
Catch::Generators::RandomFloatingGenerator<float> input1_gen(2.2f, 10.f);
|
||||
Catch::Generators::RandomFloatingGenerator<float> input1_gen(2.2f, 10.f, /* seed */ 0x1234);
|
||||
for (size_t iter = 0; iter < iters; iter++) {
|
||||
auto input1 = input1_gen.get();
|
||||
auto input2 = input1_gen.get();
|
||||
@@ -178,8 +178,8 @@ TEST_CASE("Unit_fp162_arith") {
|
||||
for (size_t i = 0; i < out.size(); i++) {
|
||||
INFO("Iter: " << i << " In1: " << in1[i].x << " - " << in1[i].y << " CPU res: " << cpuout[i].x
|
||||
<< " - " << cpuout[i].y << " GPU res: " << out[i].x << " - " << out[i].y);
|
||||
REQUIRE(out[i].x == Approx(cpuout[i].x).epsilon(0.1));
|
||||
REQUIRE(out[i].y == Approx(cpuout[i].y).epsilon(0.1));
|
||||
REQUIRE(out[i].x == Catch::Approx(cpuout[i].x).epsilon(0.1));
|
||||
REQUIRE(out[i].y == Catch::Approx(cpuout[i].y).epsilon(0.1));
|
||||
}
|
||||
HIP_CHECK(hipFree(dout));
|
||||
HIP_CHECK(hipFree(din1));
|
||||
|
||||
@@ -786,7 +786,7 @@ TEMPLATE_TEST_CASE("Unit_fp8_fnuz_correctness_device", "", float, double) {
|
||||
|
||||
INFO("Original: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&orig)));
|
||||
INFO("Cvt back: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&cvt1)));
|
||||
REQUIRE(cvt1 == Approx(orig));
|
||||
REQUIRE(cvt1 == Catch::Approx(orig));
|
||||
REQUIRE(cvt2 == cvt1);
|
||||
}
|
||||
|
||||
@@ -1086,7 +1086,7 @@ TEMPLATE_TEST_CASE("Unit_fp8_fnuz_correctness_device", "", float, double) {
|
||||
|
||||
INFO("Original: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&orig)));
|
||||
INFO("Cvt back: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&cvt1)));
|
||||
REQUIRE(cvt1 == Approx(orig));
|
||||
REQUIRE(cvt1 == Catch::Approx(orig));
|
||||
REQUIRE(cvt2 == cvt1);
|
||||
}
|
||||
|
||||
|
||||
@@ -177,7 +177,7 @@ TEMPLATE_TEST_CASE("Unit_fp8_ocp_correctness", "", float, double) {
|
||||
|
||||
INFO("Original: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&orig)));
|
||||
INFO("Cvt back: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&cvt1)));
|
||||
REQUIRE(cvt1 == Approx(orig));
|
||||
REQUIRE(cvt1 == Catch::Approx(orig));
|
||||
REQUIRE(cvt2 == cvt1);
|
||||
}
|
||||
}
|
||||
@@ -447,7 +447,7 @@ TEMPLATE_TEST_CASE("Unit_fp8_ocp_correctness", "", float, double) {
|
||||
|
||||
INFO("Original: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&orig)));
|
||||
INFO("Cvt back: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&cvt1)));
|
||||
REQUIRE(cvt1 == Approx(orig));
|
||||
REQUIRE(cvt1 == Catch::Approx(orig));
|
||||
REQUIRE(cvt1 == cvt2);
|
||||
}
|
||||
}
|
||||
@@ -787,7 +787,7 @@ TEMPLATE_TEST_CASE("Unit_fp8_fnuz_correctness", "", float, double) {
|
||||
|
||||
INFO("Original: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&orig)));
|
||||
INFO("Cvt back: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&cvt1)));
|
||||
REQUIRE(cvt1 == Approx(orig));
|
||||
REQUIRE(cvt1 == Catch::Approx(orig));
|
||||
REQUIRE(cvt2 == cvt1);
|
||||
}
|
||||
}
|
||||
@@ -1065,7 +1065,7 @@ TEMPLATE_TEST_CASE("Unit_fp8_fnuz_correctness", "", float, double) {
|
||||
|
||||
INFO("Original: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&orig)));
|
||||
INFO("Cvt back: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&cvt1)));
|
||||
REQUIRE(cvt1 == Approx(orig));
|
||||
REQUIRE(cvt1 == Catch::Approx(orig));
|
||||
REQUIRE(cvt1 == cvt2);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -752,7 +752,7 @@ TEMPLATE_TEST_CASE("Unit_fp8_ocp_correctness_device", "", float, double) {
|
||||
|
||||
INFO("Original: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&orig)));
|
||||
INFO("Cvt back: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&cvt1)));
|
||||
REQUIRE(cvt1 == Approx(orig));
|
||||
REQUIRE(cvt1 == Catch::Approx(orig));
|
||||
REQUIRE(cvt2 == cvt1);
|
||||
}
|
||||
|
||||
@@ -1044,7 +1044,7 @@ TEMPLATE_TEST_CASE("Unit_fp8_ocp_correctness_device", "", float, double) {
|
||||
|
||||
INFO("Original: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&orig)));
|
||||
INFO("Cvt back: " << std::bitset<32>(*reinterpret_cast<const unsigned int*>(&cvt1)));
|
||||
REQUIRE(cvt1 == Approx(orig));
|
||||
REQUIRE(cvt1 == Catch::Approx(orig));
|
||||
REQUIRE(cvt2 == cvt1);
|
||||
}
|
||||
|
||||
|
||||
@@ -92,41 +92,41 @@ template <typename V> bool TestVectorType() {
|
||||
V f1 = MakeVector<V>(1);
|
||||
V f2 = MakeVector<V>(1);
|
||||
V f3 = f1 + f2;
|
||||
REQUIRE(f3 == v2);
|
||||
REQUIRE((f3 == v2));
|
||||
f2 = f3 - f1;
|
||||
REQUIRE(f2 == v1);
|
||||
REQUIRE((f2 == v1));
|
||||
f1 = f2 * f3;
|
||||
REQUIRE(f1 == v2);
|
||||
REQUIRE((f1 == v2));
|
||||
f2 = f1 / f3;
|
||||
REQUIRE(f2 == v1);
|
||||
REQUIRE((f2 == v1));
|
||||
integer_binary_tests(f1, f2, f3);
|
||||
|
||||
f1 = MakeVector<V>(2);
|
||||
f2 = MakeVector<V>(1);
|
||||
f1 += f2;
|
||||
REQUIRE(f1 == v3);
|
||||
REQUIRE((f1 == v3));
|
||||
f1 -= f2;
|
||||
REQUIRE(f1 == v2);
|
||||
REQUIRE((f1 == v2));
|
||||
f1 *= f2;
|
||||
REQUIRE(f1 == v2);
|
||||
REQUIRE((f1 == v2));
|
||||
f1 /= f2;
|
||||
REQUIRE(f1 == v2);
|
||||
REQUIRE((f1 == v2));
|
||||
|
||||
integer_unary_tests(f1, f2);
|
||||
|
||||
f1 = v2;
|
||||
f2 = f1++;
|
||||
REQUIRE(f1 == v3);
|
||||
REQUIRE(f2 == v2);
|
||||
REQUIRE((f1 == v3));
|
||||
REQUIRE((f2 == v2));
|
||||
f2 = f1--;
|
||||
REQUIRE(f2 == v3);
|
||||
REQUIRE(f1 == v2);
|
||||
REQUIRE((f2 == v3));
|
||||
REQUIRE((f1 == v2));
|
||||
f2 = ++f1;
|
||||
REQUIRE(f1 == v3);
|
||||
REQUIRE(f2 == v3);
|
||||
REQUIRE((f1 == v3));
|
||||
REQUIRE((f2 == v3));
|
||||
f2 = --f1;
|
||||
REQUIRE(f1 == v2);
|
||||
REQUIRE(f2 == v2);
|
||||
REQUIRE((f1 == v2));
|
||||
REQUIRE((f2 == v2));
|
||||
|
||||
REQUIRE(constructor_tests<V>() == true);
|
||||
|
||||
@@ -134,7 +134,7 @@ template <typename V> bool TestVectorType() {
|
||||
f2 = v4;
|
||||
f3 = v3;
|
||||
REQUIRE(!(f1 == f2));
|
||||
REQUIRE(f1 != f2);
|
||||
REQUIRE((f1 != f2));
|
||||
|
||||
using T = typename V::value_type;
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
#include "./defs.h"
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,7 +17,7 @@ OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
#include "./defs.h"
|
||||
/**
|
||||
* This kernel allocates and deallocates memory in every thread.
|
||||
|
||||
@@ -17,7 +17,7 @@ OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
#include "./defs.h"
|
||||
|
||||
/**
|
||||
|
||||
@@ -17,7 +17,7 @@ OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
#include "./defs.h"
|
||||
|
||||
/**
|
||||
|
||||
@@ -28,7 +28,7 @@ set(TEST_SRC
|
||||
if(HIP_PLATFORM MATCHES "nvidia")
|
||||
set(LINKER_LIBS nvrtc)
|
||||
elseif(HIP_PLATFORM MATCHES "amd")
|
||||
set(LINKER_LIBS hiprtc)
|
||||
set(LINKER_LIBS hiprtc::hiprtc)
|
||||
endif()
|
||||
|
||||
if(HIP_PLATFORM MATCHES "amd")
|
||||
@@ -41,8 +41,7 @@ elseif (HIP_PLATFORM MATCHES "nvidia")
|
||||
hip_add_exe_to_target(NAME DeviceMemoryTest
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS ${LINKER_LIBS}
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
LINKER_LIBS ${LINKER_LIBS})
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
@@ -63,4 +62,4 @@ set_property(GLOBAL APPEND PROPERTY G_INSTALL_SRC_FILES ${NEGATIVE_TEST_SRC})
|
||||
# COMMAND ${Python3_EXECUTABLE} ../compileAndCaptureOutput.py
|
||||
# ./src ${HIP_PLATFORM} ${HIP_PATH}
|
||||
# memset_negative_kernels.cc 4)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -32,12 +32,21 @@ hip_add_exe_to_target(NAME dynamicLoading
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
if(HIP_PLATFORM MATCHES "amd")
|
||||
add_custom_target(libLazyLoad.so COMMAND ${CMAKE_CXX_COMPILER} -fPIC -lpthread -shared ${OFFLOAD_ARCH_STR} ${CMAKE_CURRENT_SOURCE_DIR}/liblazyLoad.cc -I${CMAKE_CURRENT_SOURCE_DIR}/../../include -I${CMAKE_CURRENT_SOURCE_DIR}/../../external/Catch2 -L${HIP_PATH}/${CMAKE_INSTALL_LIBDIR} --hip-path=${HIP_PATH} -o libLazyLoad.so)
|
||||
add_custom_target(libLazyLoad.so COMMAND ${CMAKE_HIP_COMPILER} -fPIC -lpthread -shared
|
||||
${OFFLOAD_ARCH_LIST} -x hip ${CMAKE_CURRENT_SOURCE_DIR}/liblazyLoad.cc
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT}
|
||||
-I${Catch2_SOURCE_DIR}/src -I${Catch2_BINARY_DIR}/generated-includes
|
||||
-o libLazyLoad.so)
|
||||
elseif(HIP_PLATFORM MATCHES "nvidia")
|
||||
add_custom_target(libLazyLoad.so COMMAND ${CMAKE_CXX_COMPILER} -Xcompiler -fPIC -lpthread -Wno-deprecated-declarations -shared ${CMAKE_CURRENT_SOURCE_DIR}/liblazyLoad.cc -I${CMAKE_CURRENT_SOURCE_DIR}/../../include -I${CMAKE_CURRENT_SOURCE_DIR}/../../external/Catch2 -I${HIP_PATH}/include/ -o libLazyLoad.so)
|
||||
add_custom_target(libLazyLoad.so COMMAND ${CMAKE_CUDA_COMPILER} -Xcompiler -fPIC -lpthread -Wno-deprecated-declarations -shared
|
||||
-x cu ${CMAKE_CURRENT_SOURCE_DIR}/liblazyLoad.cc -I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
||||
-I${Catch2_SOURCE_DIR}/src -I${Catch2_BINARY_DIR}/generated-includes -I${HIP_PATH}/include/ -o libLazyLoad.so)
|
||||
endif()
|
||||
|
||||
add_custom_target(bit_extract_kernel.code COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} ${CMAKE_CURRENT_SOURCE_DIR}/bit_extract_kernel.cpp -o ${CMAKE_CURRENT_BINARY_DIR}/../dynamicLoading/bit_extract_kernel.code -I${HIP_PATH}/include/ -I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH} -L${HIP_PATH}/${CMAKE_INSTALL_LIBDIR})
|
||||
add_custom_target(bit_extract_kernel.code COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/bit_extract_kernel.cpp ${HIP_PATH_OPT}
|
||||
${OFFLOAD_ARCH_LIST} -o ${CMAKE_CURRENT_BINARY_DIR}/../dynamicLoading/bit_extract_kernel.code
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
|
||||
add_custom_target(vecadd.cc COMMAND cp ${CMAKE_CURRENT_SOURCE_DIR}/vecadd.cc ${CMAKE_CURRENT_BINARY_DIR}/../dynamicLoading/)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS
|
||||
@@ -47,10 +56,10 @@ set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS
|
||||
)
|
||||
|
||||
if(HIP_PLATFORM MATCHES "amd")
|
||||
hip_add_exe_to_target(NAME Dynamic
|
||||
TEST_SRC ${LINUX_TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS ${CMAKE_DL_LIBS})
|
||||
hip_add_exe_to_target(NAME Dynamic
|
||||
TEST_SRC ${LINUX_TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS ${CMAKE_DL_LIBS})
|
||||
endif()
|
||||
add_dependencies(build_tests bit_extract_kernel.code libLazyLoad.so vecadd.cc)
|
||||
endif()
|
||||
|
||||
@@ -32,8 +32,8 @@ THE SOFTWARE.
|
||||
}
|
||||
|
||||
__global__ static void addition(float* C, float* A, float* B, size_t N) {
|
||||
size_t offset = hipBlockIdx_x * hipBlockDim_x + hipThreadIdx_x;
|
||||
size_t stride = hipBlockDim_x * hipGridDim_x;
|
||||
size_t offset = blockIdx.x * blockDim.x + threadIdx.x;
|
||||
size_t stride = blockDim.x * gridDim.x;
|
||||
|
||||
for (size_t i = offset; i < N; i += stride) {
|
||||
C[i] = A[i] + B[i];
|
||||
@@ -121,7 +121,9 @@ __global__ static void test_gws(uint* buf, uint bufSize, int64_t* tmpBuf, int64_
|
||||
tmpBuf[blockIdx.x] = sum;
|
||||
}
|
||||
|
||||
gg.sync();
|
||||
// TODO: remove syncthreads with grid sync when compiler issue is fixed
|
||||
// gg.sync();
|
||||
__syncthreads();
|
||||
|
||||
if (offset == 0) {
|
||||
for (uint i = 1; i < gridDim.x; ++i) {
|
||||
|
||||
@@ -17,6 +17,14 @@ endif()
|
||||
|
||||
add_executable(hipGetLastErrorEnv_Exe EXCLUDE_FROM_ALL hipGetLastErrorEnv_Exe.cc)
|
||||
add_executable(hipPeekAtLastErrorEnv_Exe EXCLUDE_FROM_ALL hipPeekAtLastErrorEnv_Exe.cc)
|
||||
|
||||
set_source_files_properties(hipGetLastErrorEnv_Exe.cc PROPERTIES LANGUAGE HIP)
|
||||
set_source_files_properties(hipPeekAtLastErrorEnv_Exe.cc PROPERTIES LANGUAGE HIP)
|
||||
set_target_properties(hipGetLastErrorEnv_Exe PROPERTIES LINKER_LANGUAGE HIP)
|
||||
set_target_properties(hipPeekAtLastErrorEnv_Exe PROPERTIES LINKER_LANGUAGE HIP)
|
||||
target_link_libraries(hipGetLastErrorEnv_Exe hip::host hip::device)
|
||||
target_link_libraries(hipPeekAtLastErrorEnv_Exe hip::host hip::device)
|
||||
|
||||
if(HIP_PLATFORM MATCHES "amd")
|
||||
set(AMD_SRC
|
||||
hipExtGetLastError.cc
|
||||
@@ -25,8 +33,7 @@ if(HIP_PLATFORM MATCHES "amd")
|
||||
endif()
|
||||
hip_add_exe_to_target(NAME ErrorHandlingTest
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
add_dependencies(ErrorHandlingTest hipGetLastErrorEnv_Exe hipPeekAtLastErrorEnv_Exe)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS hipGetLastErrorEnv_Exe hipPeekAtLastErrorEnv_Exe)
|
||||
|
||||
@@ -74,9 +74,9 @@ TEST_CASE("Unit_hipGetErrorName_Negative_Parameters") {
|
||||
const char* error_string = hipGetErrorName(static_cast<hipError_t>(-1));
|
||||
REQUIRE(error_string != nullptr);
|
||||
#if HT_NVIDIA
|
||||
REQUIRE_THAT(error_string, Catch::Equals("cudaErrorUnknown"));
|
||||
REQUIRE_THAT(error_string, Catch::Matchers::Equals("cudaErrorUnknown"));
|
||||
#elif HT_AMD
|
||||
REQUIRE_THAT(error_string, Catch::Equals("hipErrorUnknown"));
|
||||
REQUIRE_THAT(error_string, Catch::Matchers::Equals("hipErrorUnknown"));
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -24,5 +24,4 @@ endif()
|
||||
|
||||
hip_add_exe_to_target(NAME ExecutionControlTest
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
@@ -1,19 +1,20 @@
|
||||
# AMD specific test
|
||||
if(HIP_PLATFORM MATCHES "amd")
|
||||
if(UNIX)
|
||||
set(TEST_SRC
|
||||
hipMalloc.cc
|
||||
)
|
||||
# Creating Custom object file
|
||||
add_custom_target(malloc_custom COMMAND g++ -c ${CMAKE_CURRENT_SOURCE_DIR}/hipMalloc.cpp -I${HIP_PATH}/include -D__HIP_PLATFORM_AMD__ -o malloc.o BYPRODUCTS malloc.o)
|
||||
add_library(malloc_gpp OBJECT IMPORTED)
|
||||
set_property(TARGET malloc_gpp PROPERTY IMPORTED_OBJECTS "${CMAKE_CURRENT_BINARY_DIR}/malloc.o")
|
||||
if(HIP_PLATFORM MATCHES "amd" AND UNIX AND GPP_EXEC)
|
||||
set(TEST_SRC
|
||||
hipMalloc.cc
|
||||
)
|
||||
|
||||
hip_add_exe_to_target(NAME gppTests
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS malloc_gpp)
|
||||
add_custom_target(malloc_custom COMMAND ${GPP_EXEC} -c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hipMalloc.cpp -I${HIP_INCLUDE_DIR}
|
||||
-D__HIP_PLATFORM_AMD__ -o malloc.o BYPRODUCTS malloc.o)
|
||||
add_library(malloc_gpp OBJECT IMPORTED)
|
||||
set_property(TARGET malloc_gpp PROPERTY IMPORTED_OBJECTS
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/malloc.o")
|
||||
|
||||
add_dependencies(gppTests malloc_custom)
|
||||
endif()
|
||||
hip_add_exe_to_target(NAME gppTests
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS malloc_gpp)
|
||||
|
||||
add_dependencies(gppTests malloc_custom)
|
||||
endif()
|
||||
|
||||
@@ -1,28 +1,32 @@
|
||||
# Common Tests - Test independent of all platforms
|
||||
if(HIP_PLATFORM MATCHES "amd")
|
||||
if(UNIX)
|
||||
set(TEST_SRC
|
||||
gccTest.cc
|
||||
gpu.cpp
|
||||
)
|
||||
# Creating Custom object file
|
||||
add_custom_command(OUTPUT LaunchKernel.o COMMAND gcc -c -Wno-deprecated-declarations ${CMAKE_CURRENT_SOURCE_DIR}/LaunchKernel.c -I${HIP_PATH}/include -D__HIP_PLATFORM_AMD__ -o LaunchKernel.o)
|
||||
add_custom_target(LaunchKernel_custom DEPENDS LaunchKernel.o)
|
||||
add_custom_command(OUTPUT hipMalloc.o COMMAND gcc -c -Wno-deprecated-declarations ${CMAKE_CURRENT_SOURCE_DIR}/hipMalloc.c -I${HIP_PATH}/include -D__HIP_PLATFORM_AMD__ -o hipMalloc.o)
|
||||
add_custom_target(hipMalloc_custom DEPENDS hipMalloc.o)
|
||||
if(HIP_PLATFORM MATCHES "amd" AND UNIX AND GCC_EXEC)
|
||||
set(TEST_SRC
|
||||
gccTest.cc
|
||||
gpu.cpp
|
||||
)
|
||||
# Creating Custom object file
|
||||
add_custom_command(OUTPUT LaunchKernel.o COMMAND ${GCC_EXEC} -c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/LaunchKernel.c -Wno-deprecated-declarations -I${HIP_INCLUDE_DIR}
|
||||
-D__HIP_PLATFORM_AMD__ -o LaunchKernel.o)
|
||||
add_custom_target(LaunchKernel_custom DEPENDS LaunchKernel.o)
|
||||
add_custom_command(OUTPUT hipMalloc.o COMMAND ${GCC_EXEC} -c
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/hipMalloc.c -Wno-deprecated-declarations -I${HIP_INCLUDE_DIR}
|
||||
-D__HIP_PLATFORM_AMD__ -o hipMalloc.o)
|
||||
add_custom_target(hipMalloc_custom DEPENDS hipMalloc.o)
|
||||
|
||||
add_library(LaunchKernel_lib OBJECT IMPORTED)
|
||||
add_library(hipMalloc_lib OBJECT IMPORTED)
|
||||
add_library(LaunchKernel_lib OBJECT IMPORTED)
|
||||
add_library(hipMalloc_lib OBJECT IMPORTED)
|
||||
|
||||
set_property(TARGET LaunchKernel_lib PROPERTY IMPORTED_OBJECTS "${CMAKE_CURRENT_BINARY_DIR}/LaunchKernel.o")
|
||||
set_property(TARGET hipMalloc_lib PROPERTY IMPORTED_OBJECTS "${CMAKE_CURRENT_BINARY_DIR}/hipMalloc.o")
|
||||
set_property(TARGET LaunchKernel_lib PROPERTY IMPORTED_OBJECTS
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/LaunchKernel.o")
|
||||
set_property(TARGET hipMalloc_lib PROPERTY IMPORTED_OBJECTS
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/hipMalloc.o")
|
||||
|
||||
|
||||
hip_add_exe_to_target(NAME gccTests
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS LaunchKernel_lib hipMalloc_lib)
|
||||
hip_add_exe_to_target(NAME gccTests
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS LaunchKernel_lib hipMalloc_lib)
|
||||
|
||||
add_dependencies(gccTests LaunchKernel_custom hipMalloc_custom)
|
||||
endif()
|
||||
add_dependencies(gccTests LaunchKernel_custom hipMalloc_custom)
|
||||
endif()
|
||||
|
||||
@@ -75,8 +75,7 @@ endif()
|
||||
# Create test executable
|
||||
hip_add_exe_to_target(NAME GLInteropTest
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
# Link dependencies
|
||||
target_link_libraries(GLInteropTest OpenGL::GL GLUT::GLUT)
|
||||
|
||||
@@ -181,7 +181,11 @@ if(HIP_PLATFORM MATCHES "amd")
|
||||
set(TEST_SRC ${TEST_SRC} ${AMD_SRC})
|
||||
endif()
|
||||
|
||||
add_custom_target(add_Kernel.code COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} ${CMAKE_CURRENT_SOURCE_DIR}/add_Kernel.cpp -o ${CMAKE_CURRENT_BINARY_DIR}/../graph/add_Kernel.code -I${HIP_PATH}/include/ -I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH})
|
||||
add_custom_target(add_Kernel.code COMMAND ${CMAKE_HIP_COMPILER}
|
||||
--cuda-device-only ${OFFLOAD_ARCH_LIST} -x hip ${CMAKE_CURRENT_SOURCE_DIR}/add_Kernel.cpp
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../graph/add_Kernel.code
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
set_property(GLOBAL APPEND PROPERTY
|
||||
G_INSTALL_CUSTOM_TARGETS ${CMAKE_CURRENT_BINARY_DIR}/add_Kernel.code)
|
||||
|
||||
@@ -190,7 +194,13 @@ hip_add_exe_to_target(NAME GraphsTest2
|
||||
TEST_TARGET_NAME build_tests)
|
||||
|
||||
if(HIP_PLATFORM MATCHES "amd")
|
||||
add_custom_target(hipMatMul COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} ${CMAKE_CURRENT_SOURCE_DIR}/hipMatMul.cc -o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/graph/hipMatMul.code -I${CMAKE_CURRENT_SOURCE_DIR}/../../../../include/ -I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH})
|
||||
add_custom_target(hipMatMul COMMAND ${CMAKE_HIP_COMPILER}
|
||||
--cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/hipMatMul.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/graph/hipMatMul.code
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../../../include/
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
add_dependencies(build_tests hipMatMul)
|
||||
set_property(GLOBAL APPEND PROPERTY
|
||||
G_INSTALL_CUSTOM_TARGETS ${CMAKE_CURRENT_BINARY_DIR}/hipMatMul.code)
|
||||
|
||||
@@ -16,7 +16,7 @@ LIABILITY, WHETHER INN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
extern "C" __global__ void Add(int* a, int* b, int* c) {
|
||||
size_t tx = (blockIdx.x * blockDim.x + threadIdx.x);
|
||||
c[tx] = a[tx] + b[tx];
|
||||
|
||||
@@ -61,7 +61,7 @@ void MemcpyFromSymbolShell(F f, const void* symbol, size_t offset, const std::ve
|
||||
|
||||
std::vector<T> symbol_values(expected.size());
|
||||
HIP_CHECK(hipMemcpy(symbol_values.data(), dst_alloc.ptr(), size, hipMemcpyDefault));
|
||||
REQUIRE_THAT(expected, Catch::Equals(symbol_values));
|
||||
REQUIRE_THAT(expected, Catch::Matchers::Equals(symbol_values));
|
||||
}
|
||||
|
||||
template <typename T, typename F>
|
||||
@@ -82,7 +82,7 @@ void MemcpyToSymbolShell(F f, const void* symbol, size_t offset, const std::vect
|
||||
|
||||
std::vector<T> symbol_values(set_values.size());
|
||||
HIP_CHECK(hipMemcpyFromSymbol(symbol_values.data(), symbol, size, offset * sizeof(T)));
|
||||
REQUIRE_THAT(set_values, Catch::Equals(symbol_values));
|
||||
REQUIRE_THAT(set_values, Catch::Matchers::Equals(symbol_values));
|
||||
}
|
||||
|
||||
template <typename F>
|
||||
|
||||
@@ -634,7 +634,7 @@ TEST_CASE("Unit_hipGetProcAddress_GraphAPIs_KernelNodeSetGetParams") {
|
||||
// Validating hipGraphKernelNodeGetParams API
|
||||
HIP_CHECK(dyn_hipGraphKernelNodeGetParams_ptr(kernelNode, &receivedKernelNodeParams));
|
||||
|
||||
REQUIRE(receivedKernelNodeParams.func == addOneKernel);
|
||||
REQUIRE((receivedKernelNodeParams.func == addOneKernel));
|
||||
REQUIRE(receivedKernelNodeParams.gridDim.x == 1);
|
||||
REQUIRE(receivedKernelNodeParams.gridDim.y == 1);
|
||||
REQUIRE(receivedKernelNodeParams.gridDim.z == 1);
|
||||
@@ -661,7 +661,7 @@ TEST_CASE("Unit_hipGetProcAddress_GraphAPIs_KernelNodeSetGetParams") {
|
||||
|
||||
HIP_CHECK(dyn_hipGraphKernelNodeGetParams_ptr(kernelNode, &receivedKernelNodeParams));
|
||||
|
||||
REQUIRE(receivedKernelNodeParams.func == addTwoKernel);
|
||||
REQUIRE((receivedKernelNodeParams.func == addTwoKernel));
|
||||
REQUIRE(receivedKernelNodeParams.gridDim.x == 2);
|
||||
REQUIRE(receivedKernelNodeParams.gridDim.y == 1);
|
||||
REQUIRE(receivedKernelNodeParams.gridDim.z == 1);
|
||||
|
||||
@@ -29,13 +29,14 @@ THE SOFTWARE.
|
||||
#include <hip_test_checkers.hh>
|
||||
#include <hip_test_kernels.hh>
|
||||
|
||||
#include <numeric>
|
||||
|
||||
#define N 1024
|
||||
|
||||
#ifdef __linux__
|
||||
#include <unistd.h>
|
||||
#include <fstream>
|
||||
#include <iterator>
|
||||
#include <algorithm>
|
||||
#include <string>
|
||||
|
||||
__device__ int globalIn[N];
|
||||
|
||||
@@ -20,9 +20,9 @@ THE SOFTWARE.
|
||||
/*
|
||||
This code object should be automatically built via "make build_tests".
|
||||
In case it's missing, please type the following to generate it,
|
||||
/opt/rocm/hip/bin/hipcc --genco hipMatMul.cc -o hipMatMul.code
|
||||
/opt/rocm/hip/bin/hipcc --cuda-device-only hipMatMul.cc -o hipMatMul.code
|
||||
*/
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
__device__ int deviceGlobal = 1;
|
||||
|
||||
extern "C" __global__ void matmulK(int* A, int* B, int* C, int N) {
|
||||
|
||||
@@ -182,7 +182,7 @@ TEST_CASE("Unit_hipStreamCapture_ExtModuleLaunchKernel") {
|
||||
if (stat(GraphModuleLaunchKernel::fileName, &fileStat) || !(fileStat.st_mode & S_IFREG)) {
|
||||
FAIL("module file " << GraphModuleLaunchKernel::fileName << " doesn't exist! aborted! \n"
|
||||
<< "To generate the file, type\n"
|
||||
<< "/opt/rocm/hip/bin/hipcc --genco hipMatMul.cc -o hipMatMul.code");
|
||||
<< "/opt/rocm/hip/bin/hipcc --cuda-device-only hipMatMul.cc -o hipMatMul.code");
|
||||
return;
|
||||
}
|
||||
HIPCHECK(hipSetDevice(0));
|
||||
|
||||
@@ -27,7 +27,7 @@ set(TEST_SRC
|
||||
hip_add_exe_to_target(NAME HipSpecificTest
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS hiprtc
|
||||
LINKER_LIBS hiprtc::hiprtc
|
||||
PROPERTY CXX_STANDARD 17)
|
||||
if(UNIX)
|
||||
file(GLOB NEGATIVE_TEST_SRC
|
||||
@@ -40,4 +40,4 @@ set_property(GLOBAL APPEND PROPERTY G_INSTALL_SRC_FILES ${NEGATIVE_TEST_SRC})
|
||||
# COMMAND ${Python3_EXECUTABLE} ../compileAndCaptureOutput.py
|
||||
# ./src ${HIP_PLATFORM} ${HIP_PATH}
|
||||
# hip_hc_8pk_negative_kernels.cc 90)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -31,7 +31,7 @@ elseif(HIP_PLATFORM MATCHES "amd")
|
||||
hip_add_exe_to_target(NAME LaunchBoundsTest
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS hiprtc)
|
||||
LINKER_LIBS hiprtc::hiprtc)
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
@@ -59,4 +59,4 @@ set_property(GLOBAL APPEND PROPERTY G_INSTALL_SRC_FILES ${NEGATIVE_TEST_SRC})
|
||||
# ./src ${HIP_PLATFORM} ${HIP_PATH}
|
||||
# launch_bounds_parse_error_kernels.cc 0 0)
|
||||
#endif()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -1,14 +1,14 @@
|
||||
set(TEST_SRC
|
||||
loadlib_rtc.cc
|
||||
loadlib_co.cc
|
||||
#loadlib_co.cc TODO
|
||||
library_negative.cc
|
||||
)
|
||||
|
||||
add_custom_target(library_code_load.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${CMAKE_CURRENT_SOURCE_DIR}/library_code_load.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../library/library_code_load.code ${OFFLOAD_ARCH_STR}
|
||||
-I${HIP_PATH}/include/ -I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
||||
--rocm-path=${ROCM_PATH})
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only -x hip ${CMAKE_CURRENT_SOURCE_DIR}/library_code_load.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../library/library_code_load.code ${OFFLOAD_ARCH_LIST}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT})
|
||||
set_property(GLOBAL APPEND PROPERTY
|
||||
G_INSTALL_CUSTOM_TARGETS ${CMAKE_CURRENT_BINARY_DIR}/library_code_load.code)
|
||||
|
||||
@@ -16,7 +16,7 @@ if(HIP_PLATFORM MATCHES "amd")
|
||||
hip_add_exe_to_target(NAME LibraryTests
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS hiprtc)
|
||||
LINKER_LIBS hiprtc::hiprtc)
|
||||
else()
|
||||
hip_add_exe_to_target(NAME LibraryTests
|
||||
TEST_SRC ${TEST_SRC}
|
||||
|
||||
@@ -46,7 +46,7 @@ elseif(HIP_PLATFORM MATCHES "amd")
|
||||
half_precision_arithmetic.cc
|
||||
half_precision_comparison.cc
|
||||
)
|
||||
set(LINKER_LIBS hiprtc)
|
||||
set(LINKER_LIBS hiprtc::hiprtc)
|
||||
endif()
|
||||
|
||||
find_package(Boost 1.70.0)
|
||||
@@ -191,4 +191,4 @@ set_property(GLOBAL APPEND PROPERTY G_INSTALL_SRC_FILES ${NEGATIVE_TEST_SRC})
|
||||
# COMMAND ${Python3_EXECUTABLE} ../compileAndCaptureOutput.py
|
||||
# ./src ${HIP_PLATFORM} ${HIP_PATH}
|
||||
# casting_half_float_negative_kernels.cc 18)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -26,6 +26,8 @@ THE SOFTWARE.
|
||||
|
||||
#include <hip/hip_cooperative_groups.h>
|
||||
|
||||
#include <random>
|
||||
|
||||
namespace cg = cooperative_groups;
|
||||
|
||||
#define MATH_UNARY_KERNEL_DEF(func_name) \
|
||||
|
||||
@@ -22,12 +22,13 @@ THE SOFTWARE.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <catch.hpp>
|
||||
#include <catch2/catch_all.hpp>
|
||||
#include <catch2/matchers/catch_matchers_floating_point.hpp>
|
||||
|
||||
// Define a new MatcherBase class with a public 'describe' member function because
|
||||
// Catch::MatcherBase::describe is protected and thus can't be used via a pointer to
|
||||
// Catch::MatcherBase.
|
||||
template <typename T> class MatcherBase : public Catch::MatcherBase<T> {
|
||||
template <typename T> class MatcherBase : public Catch::Matchers::MatcherBase<T> {
|
||||
public:
|
||||
virtual std::string describe() const = 0;
|
||||
virtual ~MatcherBase() = default;
|
||||
@@ -62,22 +63,22 @@ template <typename T, typename Matcher> class ValidatorBase : public MatcherBase
|
||||
|
||||
template <typename T> auto ULPValidatorBuilderFactory(int64_t ulps) {
|
||||
return [=](T target, auto&&...) {
|
||||
return std::make_unique<ValidatorBase<T, Catch::Matchers::Floating::WithinUlpsMatcher>>(
|
||||
target, Catch::WithinULP(target, ulps));
|
||||
return std::make_unique<ValidatorBase<T, Catch::Matchers::WithinUlpsMatcher>>(
|
||||
target, Catch::Matchers::WithinULP(target, ulps));
|
||||
};
|
||||
};
|
||||
|
||||
template <typename T> auto AbsValidatorBuilderFactory(double margin) {
|
||||
return [=](T target, auto&&...) {
|
||||
return std::make_unique<ValidatorBase<T, Catch::Matchers::Floating::WithinAbsMatcher>>(
|
||||
target, Catch::WithinAbs(target, margin));
|
||||
return std::make_unique<ValidatorBase<T, Catch::Matchers::WithinAbsMatcher>>(
|
||||
target, Catch::Matchers::WithinAbs(target, margin));
|
||||
};
|
||||
}
|
||||
|
||||
template <typename T> auto RelValidatorBuilderFactory(T margin) {
|
||||
return [=](T target, auto&&...) {
|
||||
return std::make_unique<ValidatorBase<T, Catch::Matchers::Floating::WithinRelMatcher>>(
|
||||
target, Catch::WithinRel(target, margin));
|
||||
return std::make_unique<ValidatorBase<T, Catch::Matchers::WithinRelMatcher>>(
|
||||
target, Catch::Matchers::WithinRel(target, margin));
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -135,23 +135,29 @@ hip_add_exe_to_target(NAME MemoryTest1
|
||||
|
||||
if(UNIX)
|
||||
# link libnuma for numa_available(), numa_max_node(), move_pages(), etc.
|
||||
find_library(NUMA_LIB numa)
|
||||
if(NUMA_LIB)
|
||||
target_link_libraries(MemoryTest1 ${NUMA_LIB})
|
||||
find_package(NUMA QUIET)
|
||||
if(NUMA_FOUND)
|
||||
set(NUMA "${NUMA_LIBRARIES}")
|
||||
else()
|
||||
message(WARNING "libnuma not found; HostNuma tests will fail to link")
|
||||
find_library(NUMA NAMES numa REQUIRED)
|
||||
endif()
|
||||
target_link_libraries(MemoryTest1 ${NUMA})
|
||||
endif()
|
||||
|
||||
if(HIP_PLATFORM MATCHES "amd")
|
||||
set_source_files_properties(hipHostRegister.cc PROPERTIES COMPILE_FLAGS -std=c++17)
|
||||
set_source_files_properties(hipHostRegister_exe.cc PROPERTIES LANGUAGE HIP)
|
||||
add_executable(hipHostRegisterPerf EXCLUDE_FROM_ALL hipHostRegister_exe.cc)
|
||||
set_target_properties(hipHostRegisterPerf PROPERTIES LINKER_LANGUAGE HIP)
|
||||
add_dependencies(build_tests hipHostRegisterPerf)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS hipHostRegisterPerf)
|
||||
target_link_libraries(hipHostRegisterPerf hip::host hip::device)
|
||||
if(UNIX)
|
||||
set_source_files_properties(hipMemAdvise_AlignedAllocMem_Exe.cc PROPERTIES LANGUAGE HIP)
|
||||
add_executable(hipMemAdviseTstAlignedAllocMem EXCLUDE_FROM_ALL hipMemAdvise_AlignedAllocMem_Exe.cc)
|
||||
set_target_properties(hipMemAdviseTstAlignedAllocMem PROPERTIES LINKER_LANGUAGE HIP)
|
||||
add_dependencies(MemoryTest1 hipMemAdviseTstAlignedAllocMem)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS hipMemAdviseTstAlignedAllocMem)
|
||||
target_link_libraries(hipMemAdviseTstAlignedAllocMem hip::host hip::device)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
@@ -277,12 +283,12 @@ set(TEST_SRC
|
||||
memoryCommon.cc
|
||||
)
|
||||
|
||||
hip_add_exe_to_target(NAME InlineVarTest
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests COMMON_SHARED_SRC ${COMMON_SHARED_SRC})
|
||||
|
||||
set_target_properties(InlineVarTest PROPERTIES COMPILE_FLAGS -fgpu-rdc)
|
||||
set_target_properties(InlineVarTest PROPERTIES LINK_FLAGS -fgpu-rdc)
|
||||
#hip_add_exe_to_target(NAME InlineVarTest
|
||||
# TEST_SRC ${TEST_SRC}
|
||||
# TEST_TARGET_NAME build_tests COMMON_SHARED_SRC ${COMMON_SHARED_SRC})
|
||||
#
|
||||
# set_target_properties(InlineVarTest PROPERTIES COMPILE_FLAGS -fgpu-rdc)
|
||||
# set_target_properties(InlineVarTest PROPERTIES LINK_FLAGS -fgpu-rdc)
|
||||
endif()
|
||||
|
||||
set(TEST_SRC
|
||||
|
||||
@@ -335,7 +335,7 @@ TEST_CASE("Unit_hipArrayCreate_BadNumberChannelElement") {
|
||||
hipArray_t array;
|
||||
|
||||
INFO("Format: " << formatToString(desc.Format) << " NumChannels: " << desc.NumChannels
|
||||
<< " Height: " << desc.Height)
|
||||
<< " Height: " << desc.Height);
|
||||
HIP_CHECK_ERROR(hipArrayCreate(&array, &desc), hipErrorInvalidValue);
|
||||
}
|
||||
|
||||
@@ -360,6 +360,6 @@ TEST_CASE("Unit_hipArrayCreate_BadChannelFormat") {
|
||||
|
||||
hipArray_t array;
|
||||
|
||||
INFO("Format: " << formatToString(desc.Format) << " Height: " << desc.Height)
|
||||
INFO("Format: " << formatToString(desc.Format) << " Height: " << desc.Height);
|
||||
HIP_CHECK_ERROR(hipArrayCreate(&array, &desc), hipErrorInvalidValue);
|
||||
}
|
||||
|
||||
@@ -679,6 +679,7 @@ TEST_CASE("Unit_hipGetProcAddress_MemoryApisArrayRelated") {
|
||||
desc3d.Width = 8;
|
||||
desc3d.Height = 4;
|
||||
desc3d.Depth = 2;
|
||||
desc3d.Flags = 0;
|
||||
|
||||
HIP_CHECK(hipArray3DCreate(&array3d, &desc3d));
|
||||
HIP_CHECK(dyn_hipArray3DCreate_ptr(&array3d_ptr, &desc3d));
|
||||
@@ -715,6 +716,7 @@ TEST_CASE("Unit_hipGetProcAddress_MemoryApisArrayRelated") {
|
||||
gd_desc3d.Width = 16;
|
||||
gd_desc3d.Height = 4;
|
||||
gd_desc3d.Depth = 8;
|
||||
gd_desc3d.Flags = 0;
|
||||
|
||||
HIP_CHECK(hipArray3DCreate(&gd_array3d, &gd_desc3d));
|
||||
HIP_CHECK(hipArray3DCreate(&gd_array3d_ptr, &gd_desc3d));
|
||||
|
||||
@@ -27,6 +27,7 @@ THE SOFTWARE.
|
||||
#include <cstring>
|
||||
#include <vector>
|
||||
#include <limits>
|
||||
#include <random>
|
||||
#include <hip_test_checkers.hh>
|
||||
#include <hip_test_kernels.hh>
|
||||
#ifdef __HIP_PLATFORM_NVIDIA__
|
||||
|
||||
@@ -23,7 +23,7 @@ THE SOFTWARE.
|
||||
#include <stdlib.h>
|
||||
#include <iostream>
|
||||
#include "hip/hip_runtime_api.h"
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
|
||||
#define HIP_CHECK(error) \
|
||||
{ \
|
||||
|
||||
@@ -97,37 +97,37 @@ void checkMemset(T value, size_t count, MemsetType memsetType, bool async = fals
|
||||
switch (memsetType) {
|
||||
case hipMemsetTypeDefault:
|
||||
if (!async) {
|
||||
INFO("Testing hipMemset call")
|
||||
INFO("Testing hipMemset call");
|
||||
HIP_MEMSET_CHECK(hipMemset, devPtr, value, count, false);
|
||||
} else {
|
||||
INFO("Testing hipMemsetAsync call")
|
||||
INFO("Testing hipMemsetAsync call");
|
||||
HIP_MEMSET_CHECK(hipMemsetAsync, devPtr, value, count, true);
|
||||
}
|
||||
break;
|
||||
case hipMemsetTypeD8:
|
||||
if (!async) {
|
||||
INFO("Testing hipMemsetD8 call")
|
||||
INFO("Testing hipMemsetD8 call");
|
||||
HIP_MEMSET_CHECK_DTYPE(hipMemsetD8, devPtr, value, count, false);
|
||||
} else {
|
||||
INFO("Testing hipMemsetD8Async call")
|
||||
INFO("Testing hipMemsetD8Async call");
|
||||
HIP_MEMSET_CHECK_DTYPE(hipMemsetD8Async, devPtr, value, count, true);
|
||||
}
|
||||
break;
|
||||
case hipMemsetTypeD16:
|
||||
if (!async) {
|
||||
INFO("Testing hipMemsetD16 call")
|
||||
INFO("Testing hipMemsetD16 call");
|
||||
HIP_MEMSET_CHECK_DTYPE(hipMemsetD16, devPtr, value, count, false);
|
||||
} else {
|
||||
INFO("Testing hipMemsetD16Async call")
|
||||
INFO("Testing hipMemsetD16Async call");
|
||||
HIP_MEMSET_CHECK_DTYPE(hipMemsetD16Async, devPtr, value, count, true);
|
||||
}
|
||||
break;
|
||||
case hipMemsetTypeD32:
|
||||
if (!async) {
|
||||
INFO("Testing hipMemsetD32 call")
|
||||
INFO("Testing hipMemsetD32 call");
|
||||
HIP_MEMSET_CHECK_DTYPE(hipMemsetD32, devPtr, value, count, false);
|
||||
} else {
|
||||
INFO("Testing hipMemsetD32Async call")
|
||||
INFO("Testing hipMemsetD32Async call");
|
||||
HIP_MEMSET_CHECK_DTYPE(hipMemsetD32Async, devPtr, value, count, true);
|
||||
}
|
||||
break;
|
||||
@@ -262,10 +262,10 @@ template <typename T> void checkMemset2D(T value, size_t width, size_t height, b
|
||||
}
|
||||
|
||||
if (!async) {
|
||||
INFO("Testing hipMemset2D call")
|
||||
INFO("Testing hipMemset2D call");
|
||||
HIP_CHECK(hipMemset2D(devPtr, pitch, value, width * elementSize, height));
|
||||
} else {
|
||||
INFO("Testing hipMemset2DAsync call")
|
||||
INFO("Testing hipMemset2DAsync call");
|
||||
HIP_CHECK(hipMemset2DAsync(devPtr, pitch, value, width * elementSize, height, stream));
|
||||
HIP_CHECK(hipStreamSynchronize(stream));
|
||||
}
|
||||
@@ -355,7 +355,7 @@ template <typename T> void partialMemsetTest2D(T valA, T valB, size_t width, siz
|
||||
checkMemset2D(valA, width, height, async, pitch, devPtr);
|
||||
|
||||
// Set partial region to be second value.
|
||||
INFO("Setting partial square region")
|
||||
INFO("Setting partial square region");
|
||||
checkMemset2D(valB, subWidth, subHeight, async, pitch, devPtr);
|
||||
|
||||
auto hostPtr = get_device_data_2D<T>(devPtr, pitch, width, height);
|
||||
@@ -424,7 +424,7 @@ void check_device_data_3D(hipPitchedPtr& devPitchedPtr, T value, hipExtent exten
|
||||
for (size_t j = 0; j < height; j++) {
|
||||
for (size_t i = 0; i < width; i++) {
|
||||
idx = devPitchedPtr.pitch * height * k + devPitchedPtr.pitch * j + i;
|
||||
INFO("idx=" << idx << " hostPtr[idx]=" << hostPtr[idx] << " value=" << value)
|
||||
INFO("idx=" << idx << " hostPtr[idx]=" << hostPtr[idx] << " value=" << value);
|
||||
HIP_ASSERT(hostPtr[idx] == value);
|
||||
}
|
||||
}
|
||||
@@ -441,10 +441,10 @@ void checkMemset3D(hipPitchedPtr& devPitchedPtr, T value, hipExtent extent, bool
|
||||
HIP_CHECK(hipMalloc3D(&devPitchedPtr, extent));
|
||||
}
|
||||
if (!async) {
|
||||
INFO("Testing hipMemset3D call")
|
||||
INFO("Testing hipMemset3D call");
|
||||
HIP_CHECK(hipMemset3D(devPitchedPtr, value, extent));
|
||||
} else {
|
||||
INFO("Testing hipMemset3DAsync call")
|
||||
INFO("Testing hipMemset3DAsync call");
|
||||
HIP_CHECK(hipMemset3DAsync(devPitchedPtr, value, extent, stream));
|
||||
HIP_CHECK(hipStreamSynchronize(stream));
|
||||
}
|
||||
@@ -531,9 +531,13 @@ void partialMemsetTest3D(T valA, T valB, size_t width, size_t height, size_t dep
|
||||
hipExtent subExtent = make_hipExtent(subWidth * sizeof(T), subHeight, subDepth);
|
||||
|
||||
// Set entire region to be first value.
|
||||
INFO("Setting full cuboid region") { checkMemset3D(devPitchedPtr, valA, extent, async); }
|
||||
INFO("Setting full cuboid region");
|
||||
checkMemset3D(devPitchedPtr, valA, extent, async);
|
||||
|
||||
// Set partial region to be second value.
|
||||
INFO("Setting partial cuboid region") { checkMemset3D(devPitchedPtr, valB, subExtent, async); }
|
||||
INFO("Setting partial cuboid region");
|
||||
checkMemset3D(devPitchedPtr, valB, subExtent, async);
|
||||
|
||||
auto pitch = devPitchedPtr.pitch;
|
||||
auto hostPtr = get_device_data_3D<T>(devPitchedPtr, extent);
|
||||
T comparVal{0};
|
||||
|
||||
@@ -39,39 +39,55 @@ set(TEST_SRC
|
||||
)
|
||||
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/get_function_module.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} --std=c++17 ${CMAKE_CURRENT_SOURCE_DIR}/get_function_module.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/get_function_module.cc
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-o get_function_module.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/get_function_module.cc)
|
||||
add_custom_target(get_function_module ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/get_function_module.code)
|
||||
#target_link_libraries(get_function_module.code hip::host hip::device)
|
||||
|
||||
if (NOT WIN32)
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/launch_kernel_module.code
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/launch_kernel_module.cc
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-o launch_kernel_module.code
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/launch_kernel_module.cc)
|
||||
#target_link_libraries(launch_kernel_module.code hip::host hip::device)
|
||||
add_custom_target(launch_kernel_module ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/launch_kernel_module.code)
|
||||
|
||||
add_custom_target(coopKernel.code
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/coopKernel.cpp
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/coopKernel.code
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
#target_link_libraries(coopKernel.code hip::host hip::device)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/launch_kernel_module.code
|
||||
${CMAKE_CURRENT_BINARY_DIR}/coopKernel.code)
|
||||
endif()
|
||||
|
||||
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/launch_kernel_module.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} --std=c++17 ${CMAKE_CURRENT_SOURCE_DIR}/launch_kernel_module.cc
|
||||
-o launch_kernel_module.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/launch_kernel_module.cc)
|
||||
add_custom_target(launch_kernel_module ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/launch_kernel_module.code)
|
||||
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/get_global_test_module.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} --std=c++17 ${CMAKE_CURRENT_SOURCE_DIR}/get_global_test_module.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/get_global_test_module.cc
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-o get_global_test_module.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/get_global_test_module.cc)
|
||||
add_custom_target(get_global_test_module ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/get_global_test_module.code)
|
||||
#target_link_libraries(get_global_test_module.code hip::host hip::device)
|
||||
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/get_tex_ref_module.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} --std=c++17 ${CMAKE_CURRENT_SOURCE_DIR}/get_tex_ref_module.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/get_tex_ref_module.cc
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-o get_tex_ref_module.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/get_tex_ref_module.cc)
|
||||
add_custom_target(get_tex_ref_module ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/get_tex_ref_module.code)
|
||||
|
||||
add_custom_target(coopKernel.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/coopKernel.cpp
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/coopKernel.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
#target_link_libraries(get_tex_ref_module.code hip::host hip::device)
|
||||
|
||||
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/not_a_module.txt
|
||||
COMMAND ${CMAKE_COMMAND} -E copy
|
||||
@@ -87,18 +103,15 @@ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/empty_file.txt
|
||||
add_custom_target(empty_file ALL DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/empty_file.txt)
|
||||
|
||||
add_custom_target(empty_module
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/empty_module.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/empty_module.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/empty_module.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/get_function_module.code
|
||||
${CMAKE_CURRENT_BINARY_DIR}/launch_kernel_module.code
|
||||
${CMAKE_CURRENT_BINARY_DIR}/get_global_test_module.code
|
||||
${CMAKE_CURRENT_BINARY_DIR}/get_tex_ref_module.code
|
||||
${CMAKE_CURRENT_BINARY_DIR}/coopKernel.code
|
||||
${CMAKE_CURRENT_BINARY_DIR}/not_a_module.txt
|
||||
${CMAKE_CURRENT_BINARY_DIR}/empty_file.txt
|
||||
${CMAKE_CURRENT_BINARY_DIR}/empty_module.code
|
||||
@@ -120,67 +133,91 @@ if(BUILD_SHARED_LIBS)
|
||||
endif()
|
||||
|
||||
add_custom_target(copyKernel.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} -mcode-object-version=5 --genco ${OFFLOAD_ARCH_STR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/copyKernel.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} -mcode-object-version=5 --cuda-device-only
|
||||
${OFFLOAD_ARCH_LIST} -x hip ${CMAKE_CURRENT_SOURCE_DIR}/copyKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/copyKernel.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
#target_link_libraries(copyKernel.code hip::host hip::device)
|
||||
|
||||
add_custom_target(copyKernel.s
|
||||
COMMAND ${CMAKE_CXX_COMPILER} -mcode-object-version=5 -S ${CMAKE_CURRENT_SOURCE_DIR}/copyKernel.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} -mcode-object-version=5 -S -x hip ${CMAKE_CURRENT_SOURCE_DIR}/copyKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/copyKernel.s
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
#target_link_libraries(copyKernel.s hip::host hip::device)
|
||||
|
||||
add_custom_target(addKernel.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} -mcode-object-version=5 --genco ${OFFLOAD_ARCH_STR}
|
||||
COMMAND ${CMAKE_HIP_COMPILER} -mcode-object-version=5 --cuda-device-only -x hip ${OFFLOAD_ARCH_LIST}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/addKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/addKernel.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
#target_link_libraries(addKernel.code hip::host hip::device)
|
||||
|
||||
add_custom_target(addKernel.spv
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco --offload-arch=amdgcnspirv
|
||||
--no-gpu-bundle-output
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/addKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/addKernel.spv
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
# TODO - Rock build failure from clang
|
||||
if(NOT WIN32)
|
||||
add_custom_target(addKernel.spv
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only --offload-arch=amdgcnspirv
|
||||
--no-gpu-bundle-output
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/addKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/addKernel.spv
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
#target_link_libraries(addKernel.spv hip::host hip::device)
|
||||
|
||||
add_custom_target(addKernel-bundle.spv
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only --offload-arch=amdgcnspirv
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/addKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/addKernel-bundle.spv
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
#target_link_libraries(addKernel-bundle.spv hip::host hip::device)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/addKernel.spv
|
||||
${CMAKE_CURRENT_BINARY_DIR}/addKernel-bundle.spv)
|
||||
endif()
|
||||
|
||||
add_custom_target(addKernel-bundle.spv
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco --offload-arch=amdgcnspirv
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/addKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/addKernel-bundle.spv
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
|
||||
add_custom_target(copyKernelCompressed.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} -mcode-object-version=5 --offload-compress --genco ${OFFLOAD_ARCH_STR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/copyKernel.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} -mcode-object-version=5 --offload-compress --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/copyKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/copyKernelCompressed.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
#target_link_libraries(copyKernelCompressed.code hip::host hip::device)
|
||||
|
||||
set(OFFLOAD_ARCH_GENERIC_STR "--offload-arch=gfx9-generic --offload-arch=gfx9-4-generic:sramecc+:xnack- --offload-arch=gfx9-4-generic:sramecc-:xnack- --offload-arch=gfx9-4-generic:xnack+ --offload-arch=gfx10-1-generic --offload-arch=gfx10-3-generic --offload-arch=gfx11-generic --offload-arch=gfx12-generic")
|
||||
set(OFFLOAD_ARCH_GENERIC_STR
|
||||
--offload-arch=gfx9-generic
|
||||
--offload-arch=gfx9-4-generic:sramecc+:xnack-
|
||||
--offload-arch=gfx9-4-generic:sramecc-:xnack-
|
||||
--offload-arch=gfx9-4-generic:xnack+
|
||||
--offload-arch=gfx10-1-generic
|
||||
--offload-arch=gfx10-3-generic
|
||||
--offload-arch=gfx11-generic
|
||||
--offload-arch=gfx12-generic
|
||||
)
|
||||
#set(OFFLOAD_ARCH_GENERIC_STR "--offload-arch=gfx9-generic --offload-arch=gfx9-4-generic:sramecc+:xnack- --offload-arch=gfx9-4-generic:sramecc-:xnack- --offload-arch=gfx9-4-generic:xnack+ --offload-arch=gfx10-1-generic --offload-arch=gfx10-3-generic --offload-arch=gfx11-generic --offload-arch=gfx12-generic")
|
||||
add_custom_target(copyKernelGenericTarget.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} -mcode-object-version=6 --genco ${OFFLOAD_ARCH_GENERIC_STR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/copyKernel.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} -mcode-object-version=6 --cuda-device-only ${OFFLOAD_ARCH_GENERIC_STR}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/copyKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/copyKernelGenericTarget.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
#target_link_libraries(copyKernelGenericTarget.code hip::host hip::device)
|
||||
|
||||
add_custom_target(copyKernelGenericTargetCompressed.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} -mcode-object-version=6 --offload-compress --genco ${OFFLOAD_ARCH_GENERIC_STR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/copyKernel.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} -mcode-object-version=6 --offload-compress --cuda-device-only
|
||||
${OFFLOAD_ARCH_GENERIC_STR}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/copyKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/copyKernelGenericTargetCompressed.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${HIP_INCLUDE_DIR} ${HIP_PATH_OPT}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
#target_link_libraries(copyKernelGenericTargetCompressed.code hip::host hip::device)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/copyKernel.code
|
||||
${CMAKE_CURRENT_BINARY_DIR}/copyKernel.s
|
||||
${CMAKE_CURRENT_BINARY_DIR}/addKernel.code
|
||||
${CMAKE_CURRENT_BINARY_DIR}/addKernel.spv
|
||||
${CMAKE_CURRENT_BINARY_DIR}/addKernel-bundle.spv
|
||||
${CMAKE_CURRENT_BINARY_DIR}/copyKernelCompressed.code
|
||||
${CMAKE_CURRENT_BINARY_DIR}/copyKernelGenericTarget.code
|
||||
${CMAKE_CURRENT_BINARY_DIR}/copyKernelGenericTargetCompressed.code
|
||||
@@ -192,59 +229,60 @@ set(TEST_SRC
|
||||
hipKerArgOptimization.cc)
|
||||
|
||||
add_custom_target(copiousArgKernel.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/copiousArgKernel.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(copiousArgKernel.code hip::host hip::device)
|
||||
|
||||
add_custom_target(copiousArgKernel0.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-mllvm -amdgpu-kernarg-preload-count=0
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/copiousArgKernel0.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(copiousArgKernel0.code hip::host hip::device)
|
||||
|
||||
add_custom_target(copiousArgKernel1.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-mllvm -amdgpu-kernarg-preload-count=1
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/copiousArgKernel1.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(copiousArgKernel1.code hip::host hip::device)
|
||||
|
||||
add_custom_target(copiousArgKernel2.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-mllvm -amdgpu-kernarg-preload-count=2
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/copiousArgKernel2.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(copiousArgKernel2.code hip::host hip::device)
|
||||
|
||||
add_custom_target(copiousArgKernel3.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-mllvm -amdgpu-kernarg-preload-count=3
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/copiousArgKernel3.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(copiousArgKernel3.code hip::host hip::device)
|
||||
|
||||
add_custom_target(copiousArgKernel16.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-mllvm -amdgpu-kernarg-preload-count=16
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/copiousArgKernel16.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(copiousArgKernel16.code hip::host hip::device)
|
||||
|
||||
add_custom_target(copiousArgKernel17.code
|
||||
COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR}
|
||||
COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only ${OFFLOAD_ARCH_LIST}
|
||||
-mllvm -amdgpu-kernarg-preload-count=17
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/copiousArgKernel.cc
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../../unit/module/copiousArgKernel17.code
|
||||
-I${HIP_PATH}/include/ --hip-path=${HIP_PATH}
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include)
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(copiousArgKernel17.code hip::host hip::device)
|
||||
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/copiousArgKernel.code
|
||||
${CMAKE_CURRENT_BINARY_DIR}/copiousArgKernel0.code
|
||||
@@ -258,7 +296,7 @@ endif()
|
||||
endif()
|
||||
|
||||
if(HIP_PLATFORM MATCHES "amd")
|
||||
set(RTCLIB "hiprtc")
|
||||
set(RTCLIB "hiprtc::hiprtc")
|
||||
else()
|
||||
set(RTCLIB "nvrtc")
|
||||
endif()
|
||||
@@ -267,12 +305,14 @@ hip_add_exe_to_target(NAME ModuleTest
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests
|
||||
LINKER_LIBS ${RTCLIB}
|
||||
COMMON_SHARED_SRC ${COMMON_SHARED_SRC}
|
||||
COMPILE_OPTIONS -std=c++17)
|
||||
COMMON_SHARED_SRC ${COMMON_SHARED_SRC})
|
||||
|
||||
if(NOT WIN32)
|
||||
add_dependencies(ModuleTest coopKernel.code)
|
||||
add_dependencies(ModuleTest launch_kernel_module)
|
||||
endif()
|
||||
|
||||
add_dependencies(ModuleTest coopKernel.code)
|
||||
add_dependencies(ModuleTest get_function_module)
|
||||
add_dependencies(ModuleTest launch_kernel_module)
|
||||
add_dependencies(ModuleTest get_global_test_module)
|
||||
add_dependencies(ModuleTest get_tex_ref_module)
|
||||
add_dependencies(ModuleTest not_a_module)
|
||||
@@ -282,8 +322,11 @@ add_dependencies(ModuleTest empty_module)
|
||||
if(HIP_PLATFORM MATCHES "amd")
|
||||
add_dependencies(build_tests copyKernel.code copyKernel.s)
|
||||
add_dependencies(build_tests addKernel.code)
|
||||
add_dependencies(build_tests addKernel.spv)
|
||||
add_dependencies(build_tests addKernel-bundle.spv)
|
||||
# TODO - Rock build failure from clang
|
||||
if(NOT WIN32)
|
||||
add_dependencies(build_tests addKernel.spv)
|
||||
add_dependencies(build_tests addKernel-bundle.spv)
|
||||
endif()
|
||||
add_dependencies(build_tests copyKernelCompressed.code)
|
||||
add_dependencies(build_tests copyKernelGenericTarget.code)
|
||||
add_dependencies(build_tests copyKernelGenericTargetCompressed.code)
|
||||
@@ -295,7 +338,10 @@ endif()
|
||||
endif()
|
||||
|
||||
add_executable(hipGetFuncBySymbol_exe EXCLUDE_FROM_ALL hipGetFuncBySymbol_exe.cc)
|
||||
set_source_files_properties(hipGetFuncBySymbol_exe.cc PROPERTIES LANGUAGE HIP)
|
||||
set_target_properties(hipGetFuncBySymbol_exe PROPERTIES LINKER_LANGUAGE HIP)
|
||||
add_dependencies(build_tests hipGetFuncBySymbol_exe)
|
||||
target_link_libraries(hipGetFuncBySymbol_exe hip::host hip::device)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS hipGetFuncBySymbol_exe)
|
||||
|
||||
# Common Tests - Test independent of all platforms
|
||||
@@ -318,15 +364,35 @@ endif()
|
||||
hip_add_exe_to_target(NAME module
|
||||
TEST_SRC ${TEST_SRC}
|
||||
TEST_TARGET_NAME build_tests)
|
||||
add_custom_target(managed_kernel.code COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} ${CMAKE_CURRENT_SOURCE_DIR}/managed_kernel.cpp -o ${CMAKE_CURRENT_BINARY_DIR}/../module/managed_kernel.code -I${HIP_PATH}/include -I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH})
|
||||
add_custom_target(managed_kernel.code COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only
|
||||
${OFFLOAD_ARCH_LIST} -x hip ${CMAKE_CURRENT_SOURCE_DIR}/managed_kernel.cpp
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../module/managed_kernel.code
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(managed_kernel.code hip::host hip::device)
|
||||
|
||||
add_custom_target(vcpy_kernel.code COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} ${CMAKE_CURRENT_SOURCE_DIR}/vcpy_kernel.cpp -o ${CMAKE_CURRENT_BINARY_DIR}/../module/vcpy_kernel.code -I${HIP_PATH}/include -I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH})
|
||||
add_custom_target(vcpy_kernel.code COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only
|
||||
${OFFLOAD_ARCH_LIST} -x hip ${CMAKE_CURRENT_SOURCE_DIR}/vcpy_kernel.cpp
|
||||
-o ${CMAKE_CURRENT_BINARY_DIR}/../module/vcpy_kernel.code
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(vcpy_kernel.code hip::host hip::device)
|
||||
|
||||
add_custom_target(matmul.code COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} ${CMAKE_CURRENT_SOURCE_DIR}/matmul.cpp -o ${CMAKE_CURRENT_BINARY_DIR}/../module/matmul.code -I${HIP_PATH}/include -I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH})
|
||||
add_custom_target(matmul.code COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only
|
||||
-x hip ${OFFLOAD_ARCH_LIST} ${CMAKE_CURRENT_SOURCE_DIR}/matmul.cpp -o
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../module/matmul.code
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(matmul.code hip::host hip::device)
|
||||
|
||||
add_custom_target(kernel_count.code COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} ${CMAKE_CURRENT_SOURCE_DIR}/kernel_count.cpp -o ${CMAKE_CURRENT_BINARY_DIR}/../module/kernel_count.code -I${HIP_PATH}/include -I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH})
|
||||
add_custom_target(kernel_count.code COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only
|
||||
${OFFLOAD_ARCH_LIST} -x hip ${CMAKE_CURRENT_SOURCE_DIR}/kernel_count.cpp -o
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../module/kernel_count.code
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(kernel_count.code hip::host hip::device)
|
||||
|
||||
add_custom_target(emptyModuleCount.code COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} ${CMAKE_CURRENT_SOURCE_DIR}/emptyModuleCount.cpp -o ${CMAKE_CURRENT_BINARY_DIR}/../module/emptyModuleCount.code -I${HIP_PATH}/include -I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH})
|
||||
add_custom_target(emptyModuleCount.code COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only
|
||||
${OFFLOAD_ARCH_LIST} -x hip ${CMAKE_CURRENT_SOURCE_DIR}/emptyModuleCount.cpp -o
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../module/emptyModuleCount.code
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(emptyModuleCount.code hip::host hip::device)
|
||||
|
||||
add_dependencies(ModuleTest managed_kernel.code)
|
||||
add_dependencies(ModuleTest vcpy_kernel.code)
|
||||
@@ -334,7 +400,11 @@ add_dependencies(ModuleTest matmul.code)
|
||||
add_dependencies(ModuleTest kernel_count.code)
|
||||
add_dependencies(ModuleTest emptyModuleCount.code)
|
||||
|
||||
add_custom_target(kernel_composite_test.code COMMAND ${CMAKE_CXX_COMPILER} --genco ${OFFLOAD_ARCH_STR} ${CMAKE_CURRENT_SOURCE_DIR}/kernel_composite_test.cpp -o ${CMAKE_CURRENT_BINARY_DIR}/../module/kernel_composite_test.code -I${HIP_PATH}/include -I${CMAKE_CURRENT_SOURCE_DIR}/../../include --hip-path=${HIP_PATH})
|
||||
add_custom_target(kernel_composite_test.code COMMAND ${CMAKE_HIP_COMPILER} --cuda-device-only
|
||||
${OFFLOAD_ARCH_LIST} -x hip ${CMAKE_CURRENT_SOURCE_DIR}/kernel_composite_test.cpp -o
|
||||
${CMAKE_CURRENT_BINARY_DIR}/../module/kernel_composite_test.code
|
||||
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include ${HIP_PATH_OPT})
|
||||
#target_link_libraries(kernel_composite_test.code hip::host hip::device)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/kernel_composite_test.code
|
||||
${CMAKE_CURRENT_BINARY_DIR}/matmul.code
|
||||
@@ -344,7 +414,10 @@ set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS
|
||||
${CMAKE_CURRENT_BINARY_DIR}/emptyModuleCount.code
|
||||
)
|
||||
add_executable(testhipModuleLoadUnloadFunc_exe EXCLUDE_FROM_ALL testhipModuleLoadUnloadFunc_exe.cc)
|
||||
set_source_files_properties(testhipModuleLoadUnloadFunc_exe.cc PROPERTIES LANGUAGE HIP)
|
||||
set_target_properties(testhipModuleLoadUnloadFunc_exe PROPERTIES LINKER_LANGUAGE HIP)
|
||||
set_property(GLOBAL APPEND PROPERTY G_INSTALL_EXE_TARGETS testhipModuleLoadUnloadFunc_exe)
|
||||
target_link_libraries(testhipModuleLoadUnloadFunc_exe hip::host hip::device)
|
||||
|
||||
add_dependencies(module managed_kernel.code vcpy_kernel.code matmul.code kernel_composite_test.code
|
||||
testhipModuleLoadUnloadFunc_exe)
|
||||
|
||||
@@ -18,7 +18,7 @@ OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
#include <hip/hip_cooperative_groups.h>
|
||||
|
||||
using namespace cooperative_groups;
|
||||
@@ -29,7 +29,10 @@ __global__ void cooperativeKernelEx(int* output, int totalThreads) {
|
||||
if (tid < totalThreads) {
|
||||
output[tid] = tid * 3;
|
||||
}
|
||||
grid.sync();
|
||||
// TODO: remove syncthreads with grid sync when compiler issue is fixed
|
||||
// grid.sync();
|
||||
__syncthreads();
|
||||
|
||||
if (tid == 0) {
|
||||
output[0] = 2222;
|
||||
}
|
||||
@@ -51,7 +54,9 @@ __global__ void argKernel(int* val) { *val = 100; }
|
||||
*/
|
||||
__global__ void coopEmptykernel() {
|
||||
cooperative_groups::grid_group grid = cooperative_groups::this_grid();
|
||||
grid.sync();
|
||||
// TODO: remove syncthreads with grid sync when compiler issue is fixed
|
||||
// grid.sync();
|
||||
__syncthreads();
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -86,7 +91,9 @@ __global__ void coopFillArrayKernel(int* arr, int* output, int N) {
|
||||
else if (blockIdx.x == 9)
|
||||
arr[9] = 100;
|
||||
|
||||
grid.sync();
|
||||
// TODO: remove syncthreads with grid sync when compiler issue is fixed
|
||||
// grid.sync();
|
||||
__syncthreads();
|
||||
|
||||
for (int i = 0; i < N; i++) {
|
||||
output[blockIdx.x] = output[blockIdx.x] + arr[i];
|
||||
|
||||
@@ -17,7 +17,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
|
||||
extern "C" __global__ void kernelMultipleArgsSaxpy(int a1, int a2, int* x1, int b1, int b2, int* x2,
|
||||
int c1, int c2, int* x3, int d1, int d2, int* x4,
|
||||
|
||||
@@ -19,7 +19,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
|
||||
extern "C" __global__ void copy_ker(int* Ad, int* Bd, size_t size) {
|
||||
int myId = threadIdx.x + blockDim.x * blockIdx.x;
|
||||
|
||||
@@ -19,7 +19,7 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
#include "hip/hip_runtime_api.h"
|
||||
|
||||
#include "hipModuleGetGlobal.hh"
|
||||
|
||||
@@ -113,7 +113,7 @@ TEST_CASE("Unit_hipExtLaunchMultiKernelMultiDevice_Functional", "[multigpu]") {
|
||||
launchParamsList[i].args = args + i * NUM_KERNEL_ARGS;
|
||||
}
|
||||
|
||||
INFO("info: launch vector_square kernel with")
|
||||
INFO("info: launch vector_square kernel with");
|
||||
INFO("hipExtLaunchMultiKernelMultiDevice API\n");
|
||||
HIP_CHECK(hipExtLaunchMultiKernelMultiDevice(launchParamsList, nGpu, 0));
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
|
||||
#define ARR_SIZE (32 * 32)
|
||||
#define SIZE (ARR_SIZE * sizeof(int))
|
||||
|
||||
@@ -16,7 +16,7 @@ LIABILITY, WHETHER INN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
constexpr int GLOBAL_BUF_SIZE = 2048;
|
||||
|
||||
__device__ float deviceGlobalFloat;
|
||||
|
||||
@@ -16,7 +16,7 @@ LIABILITY, WHETHER INN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR INN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
*/
|
||||
#include "hip/hip_runtime.h"
|
||||
#include <hip/hip_runtime.h>
|
||||
|
||||
extern "C" __device__ void hello_world_2(float* a, float* b) {
|
||||
int tx = threadIdx.x;
|
||||
|
||||
이 Diff에서 너무 많은 파일이 변경되어 일부 파일이 표시되지 않았습니다 더 보기
새 이슈에서 참조
사용자 차단