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>
이 커밋은 다음에 포함됨:
Jatin Chaudhary
2025-12-03 16:53:17 +00:00
커밋한 사람 GitHub
부모 f3ffd7070c
커밋 8e1aee62d0
124개의 변경된 파일1203개의 추가작업 그리고 19124개의 파일을 삭제
+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
+87
파일 보기
@@ -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()
+106
파일 보기
@@ -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)
-23
파일 보기
@@ -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.
파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다. Diff 로드
-438
파일 보기
@@ -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()
-34
파일 보기
@@ -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()
-51
파일 보기
@@ -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()
-99
파일 보기
@@ -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)
-134
파일 보기
@@ -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}")
-252
파일 보기
@@ -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()
-32
파일 보기
@@ -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()
+8 -6
파일 보기
@@ -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)
+24
파일 보기
@@ -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",
+52
파일 보기
@@ -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",
+19 -4
파일 보기
@@ -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 "";
+1 -1
파일 보기
@@ -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")
+1 -1
파일 보기
@@ -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>
+1 -2
파일 보기
@@ -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,
+1 -1
파일 보기
@@ -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>
+3 -1
파일 보기
@@ -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()
+5 -5
파일 보기
@@ -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)
+1 -1
파일 보기
@@ -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() {}
+84 -52
파일 보기
@@ -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)
+36
파일 보기
@@ -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()
+1 -2
파일 보기
@@ -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)
+1 -2
파일 보기
@@ -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)
+1 -2
파일 보기
@@ -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)
+1 -2
파일 보기
@@ -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)
+1 -2
파일 보기
@@ -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)
+1 -2
파일 보기
@@ -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)
+1 -2
파일 보기
@@ -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)
+6 -1
파일 보기
@@ -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)
+1 -1
파일 보기
@@ -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)
+1 -2
파일 보기
@@ -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)
+15 -12
파일 보기
@@ -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)
+2 -2
파일 보기
@@ -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()
+2 -2
파일 보기
@@ -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()
+7 -6
파일 보기
@@ -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
)
+4 -4
파일 보기
@@ -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()
+1 -1
파일 보기
@@ -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!"); }
+4 -2
파일 보기
@@ -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));
}
/**
+45 -41
파일 보기
@@ -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()
+5 -5
파일 보기
@@ -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
+1 -1
파일 보기
@@ -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
+1 -1
파일 보기
@@ -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));
}
}
+2
파일 보기
@@ -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>
+1
파일 보기
@@ -24,6 +24,7 @@ THE SOFTWARE.
#include <optional>
#include <resource_guards.hh>
#include <utils.hh>
#include <random>
#include <cmd_options.hh>
+1 -1
파일 보기
@@ -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>
+35 -8
파일 보기
@@ -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()
+1 -1
파일 보기
@@ -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];
+19 -20
파일 보기
@@ -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)
+5 -5
파일 보기
@@ -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));
+2 -2
파일 보기
@@ -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);
}
+4 -4
파일 보기
@@ -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);
}
}
+2 -2
파일 보기
@@ -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);
}
+17 -17
파일 보기
@@ -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;
+1 -1
파일 보기
@@ -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"
/**
+1 -1
파일 보기
@@ -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.
+1 -1
파일 보기
@@ -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"
/**
+1 -1
파일 보기
@@ -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"
/**
+3 -4
파일 보기
@@ -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()
+16 -7
파일 보기
@@ -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()
+5 -3
파일 보기
@@ -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) {
+9 -2
파일 보기
@@ -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)
+2 -2
파일 보기
@@ -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
}
+1 -2
파일 보기
@@ -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)
+16 -15
파일 보기
@@ -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()
+25 -21
파일 보기
@@ -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()
+1 -2
파일 보기
@@ -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)
+12 -2
파일 보기
@@ -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)
+1 -1
파일 보기
@@ -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];
+2 -2
파일 보기
@@ -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>
+2 -2
파일 보기
@@ -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);
+2 -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];
+2 -2
파일 보기
@@ -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) {
+1 -1
파일 보기
@@ -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));
+2 -2
파일 보기
@@ -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()
+2 -2
파일 보기
@@ -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()
+6 -6
파일 보기
@@ -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}
+2 -2
파일 보기
@@ -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()
+2
파일 보기
@@ -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) \
+9 -8
파일 보기
@@ -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));
};
}
+17 -11
파일 보기
@@ -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
+2 -2
파일 보기
@@ -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);
}
+2
파일 보기
@@ -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));
+1
파일 보기
@@ -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__
+1 -1
파일 보기
@@ -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) \
{ \
+20 -16
파일 보기
@@ -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};
+171 -98
파일 보기
@@ -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)
+11 -4
파일 보기
@@ -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];
+1 -1
파일 보기
@@ -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,
+1 -1
파일 보기
@@ -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;
+1 -1
파일 보기
@@ -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"
+1 -1
파일 보기
@@ -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));
+1 -1
파일 보기
@@ -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))
+1 -1
파일 보기
@@ -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;
+1 -1
파일 보기
@@ -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에서 너무 많은 파일이 변경되어 일부 파일이 표시되지 않았습니다 더 보기