CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
258 lines
12 KiB
CMake
258 lines
12 KiB
CMake
# Copyright (c) Advanced Micro Devices, Inc., or its affiliates.
|
|
#
|
|
# SPDX-License-Identifier: MIT
|
|
|
|
# Common Tests - Test independent of all platforms
|
|
set(TEST_SRC
|
|
floatMath.cc
|
|
anyAll.cc
|
|
ballot.cc
|
|
clz.cc
|
|
ffs.cc
|
|
funnelshift.cc
|
|
brev.cc
|
|
popc.cc
|
|
ldg.cc
|
|
threadfence_system.cc
|
|
syncthreadsand.cc
|
|
syncthreadscount.cc
|
|
syncthreadsor.cc
|
|
deviceAllocation.cc
|
|
Atomic_func.cc
|
|
DoublePrecisionIntrinsics.cc
|
|
DoublePrecisionMathDevice.cc
|
|
DoublePrecisionMathHost.cc
|
|
IntegerIntrinsics.cc
|
|
SinglePrecisionIntrinsics.cc
|
|
SinglePrecisionMathDevice.cc
|
|
SinglePrecisionMathHost.cc
|
|
SimpleAtomicsTest.cc
|
|
hipTestAtomicAdd.cc
|
|
hipStdComplex.cc
|
|
hipTestClock.cc
|
|
hip_trig.cc
|
|
hipDeviceMemcpy.cc
|
|
hipTestIncludeMath.cc
|
|
hipTestDotFunctions.cc
|
|
hipTestDeviceSymbol.cc
|
|
hipTestNew.cc
|
|
hipThreadFence.cc
|
|
hipTestDevice.cc
|
|
hipTestDeviceLimit.cc
|
|
hipTestDeviceDouble.cc
|
|
hipTestHost.cc
|
|
hadd.cc
|
|
)
|
|
if(HIP_PLATFORM MATCHES "nvidia")
|
|
set_source_files_properties(hipTestHost.cc PROPERTIES COMPILE_OPTIONS "--expt-relaxed-constexpr")
|
|
endif()
|
|
|
|
# AMD only tests
|
|
set(AMD_TEST_SRC
|
|
unsafeAtomicAddDevice.cc
|
|
mbcnt.cc
|
|
bitExtract.cc
|
|
bitInsert.cc
|
|
floatTM.cc
|
|
hipMathFunctions.cc
|
|
hmax_hmin.cc
|
|
hipBfloat16.cc
|
|
hipVectorTypesHost.cc
|
|
hipVectorTypesDevice.cc
|
|
hipTestHalf.cc
|
|
hipTestHalfConstexpr.cc
|
|
hipComplex.cc
|
|
hipTestFMA.cc
|
|
hipTestNativeHalf.cc
|
|
hip_test_make_type.cc
|
|
bfloat16.cc
|
|
AtomicsWithRandomActiveLanesInWavefront.cc
|
|
fp16_ops.cc
|
|
fp8_host.cc
|
|
fp8_e8m0.cc
|
|
fp6_ocp.cc
|
|
fp4_ocp.cc
|
|
memcpy_async.cc
|
|
bfloat16_atomic_test.cc
|
|
fp16_atomic_test.cc
|
|
)
|
|
|
|
# The OCP host reference (fcbx packed bitfield structs in amd_hip_ocp_host.hpp)
|
|
# relies on Itanium bitfield packing and fails a static_assert under the MSVC
|
|
# bitfield ABI on Windows. Only compile the fp4/fp6/fp8 OCP tests on non-Windows
|
|
# until the header is made portable.
|
|
if(NOT WIN32)
|
|
list(APPEND AMD_TEST_SRC ext_ocp_fp6.cc ext_ocp_fp8.cc ext_ocp_fp4.cc)
|
|
endif()
|
|
|
|
set(AMD_ARCH_SPEC_TEST_SRC
|
|
AtomicAdd_Coherent.cc
|
|
AtomicAdd_NonCoherent.cc
|
|
BuiltIns_fmax.cc
|
|
BuiltIns_fmin.cc
|
|
unsafeAtomicAdd_RTC.cc
|
|
unsafeAtomicAdd_Coherent.cc
|
|
unsafeAtomicAdd_NonCoherent.cc
|
|
)
|
|
|
|
set(AMD_GFX940_SPEC_TEST_SRC
|
|
fp8_fnuz.cc
|
|
)
|
|
|
|
set(AMD_OCP_TEST_SRC
|
|
fp8_ocp.cc
|
|
)
|
|
|
|
if (HIP_PLATFORM MATCHES "amd")
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/kerDevAllocMultCO.code
|
|
COMMAND ${CMAKE_HIP_COMPILER} ${HIP_DEVICE_BUILD_FLAGS_NO_ARCH} ${OFFLOAD_ARCH_LIST} --cuda-device-only
|
|
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/kerDevAllocMultCO.cc
|
|
-o ${CMAKE_CURRENT_BINARY_DIR}/kerDevAllocMultCO.code
|
|
-I${HIP_INCLUDE_DIR}
|
|
${HIP_PATH_OPT}
|
|
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kerDevAllocMultCO.cc
|
|
COMMENT "Compiling kerDevAllocMultCO.code")
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/kerDevWriteMultCO.code
|
|
COMMAND ${CMAKE_HIP_COMPILER} ${HIP_DEVICE_BUILD_FLAGS_NO_ARCH} ${OFFLOAD_ARCH_LIST} --cuda-device-only
|
|
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/kerDevWriteMultCO.cc
|
|
-o ${CMAKE_CURRENT_BINARY_DIR}/kerDevWriteMultCO.code
|
|
-I${HIP_INCLUDE_DIR}
|
|
${HIP_PATH_OPT}
|
|
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kerDevWriteMultCO.cc
|
|
COMMENT "Compiling kerDevWriteMultCO.code")
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/kerDevFreeMultCO.code
|
|
COMMAND ${CMAKE_HIP_COMPILER} ${HIP_DEVICE_BUILD_FLAGS_NO_ARCH} ${OFFLOAD_ARCH_LIST} --cuda-device-only
|
|
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/kerDevFreeMultCO.cc
|
|
-o ${CMAKE_CURRENT_BINARY_DIR}/kerDevFreeMultCO.code
|
|
-I${HIP_INCLUDE_DIR}
|
|
${HIP_PATH_OPT}
|
|
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kerDevFreeMultCO.cc
|
|
COMMENT "Compiling kerDevFreeMultCO.code")
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/kerDevAllocSingleKer.code
|
|
COMMAND ${CMAKE_HIP_COMPILER} ${HIP_DEVICE_BUILD_FLAGS_NO_ARCH} ${OFFLOAD_ARCH_LIST} --cuda-device-only
|
|
-x hip ${CMAKE_CURRENT_SOURCE_DIR}/kerDevAllocSingleKer.cc
|
|
-o ${CMAKE_CURRENT_BINARY_DIR}/kerDevAllocSingleKer.code
|
|
-I${HIP_INCLUDE_DIR}
|
|
${HIP_PATH_OPT}
|
|
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kerDevAllocSingleKer.cc
|
|
COMMENT "Compiling kerDevAllocSingleKer.code")
|
|
else()
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/kerDevAllocMultCO.code
|
|
COMMAND ${CMAKE_HIP_COMPILER} --fatbin ${OFFLOAD_ARCH_LIST}
|
|
-x cu ${CMAKE_CURRENT_SOURCE_DIR}/kerDevAllocMultCO.cc
|
|
-o ${CMAKE_CURRENT_BINARY_DIR}/kerDevAllocMultCO.code
|
|
-I${HIP_INCLUDE_DIR}
|
|
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kerDevAllocMultCO.cc
|
|
COMMENT "Compiling kerDevAllocMultCO.code")
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/kerDevWriteMultCO.code
|
|
COMMAND ${CMAKE_HIP_COMPILER} --fatbin ${OFFLOAD_ARCH_LIST}
|
|
-x cu ${CMAKE_CURRENT_SOURCE_DIR}/kerDevWriteMultCO.cc
|
|
-o ${CMAKE_CURRENT_BINARY_DIR}/kerDevWriteMultCO.code
|
|
-I${HIP_INCLUDE_DIR}
|
|
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kerDevWriteMultCO.cc
|
|
COMMENT "Compiling kerDevWriteMultCO.code")
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/kerDevFreeMultCO.code
|
|
COMMAND ${CMAKE_HIP_COMPILER} --fatbin ${OFFLOAD_ARCH_LIST}
|
|
-x cu ${CMAKE_CURRENT_SOURCE_DIR}/kerDevFreeMultCO.cc
|
|
-o ${CMAKE_CURRENT_BINARY_DIR}/kerDevFreeMultCO.code
|
|
-I${HIP_INCLUDE_DIR}
|
|
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kerDevFreeMultCO.cc
|
|
COMMENT "Compiling kerDevFreeMultCO.code")
|
|
add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/kerDevAllocSingleKer.code
|
|
COMMAND ${CMAKE_HIP_COMPILER} --fatbin ${OFFLOAD_ARCH_LIST}
|
|
-x cu ${CMAKE_CURRENT_SOURCE_DIR}/kerDevAllocSingleKer.cc
|
|
-o ${CMAKE_CURRENT_BINARY_DIR}/kerDevAllocSingleKer.code
|
|
-I${HIP_INCLUDE_DIR}
|
|
-I${CMAKE_CURRENT_SOURCE_DIR}/../../include
|
|
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/kerDevAllocSingleKer.cc
|
|
COMMENT "Compiling kerDevAllocSingleKer.code")
|
|
endif()
|
|
add_custom_target(kerDevAllocMultCO_code DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/kerDevAllocMultCO.code)
|
|
add_custom_target(kerDevWriteMultCO_code DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/kerDevWriteMultCO.code)
|
|
add_custom_target(kerDevFreeMultCO_code DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/kerDevFreeMultCO.code)
|
|
add_custom_target(kerDevAllocSingleKer_code DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/kerDevAllocSingleKer.code)
|
|
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)
|
|
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS ${CMAKE_CURRENT_BINARY_DIR}/kerDevWriteMultCO.code)
|
|
set_property(GLOBAL APPEND PROPERTY G_INSTALL_CUSTOM_TARGETS ${CMAKE_CURRENT_BINARY_DIR}/kerDevAllocMultCO.code)
|
|
|
|
# Accepted archs to compile this cmake file
|
|
set(ACCEPTED_OFFLOAD_ARCHS gfx90a gfx942)
|
|
set(ACCEPTED_GFX940_ARCH gfx942)
|
|
set(ACCEPTED_OCP_ARCH gfx1200 gfx1201 gfx950)
|
|
function(CheckAcceptedArchs OFFLOAD_ARCH_STR_LOCAL)
|
|
set(ARCH_CHECK -1 PARENT_SCOPE)
|
|
set(ARCH_GFX940 -1 PARENT_SCOPE)
|
|
set(ARCH_OCP -1 PARENT_SCOPE)
|
|
string(REGEX MATCHALL "--offload-arch=gfx[0-9a-z]+" OFFLOAD_ARCH_LIST ${OFFLOAD_ARCH_STR_LOCAL})
|
|
foreach(OFFLOAD_ARCH IN LISTS OFFLOAD_ARCH_LIST)
|
|
string(REGEX MATCHALL "--offload-arch=(gfx[0-9a-z]+)" matches ${OFFLOAD_ARCH})
|
|
if (CMAKE_MATCH_COUNT EQUAL 1)
|
|
if (CMAKE_MATCH_1 IN_LIST ACCEPTED_OFFLOAD_ARCHS)
|
|
set(ARCH_CHECK 1 PARENT_SCOPE)
|
|
endif() # CMAKE_MATCH_1
|
|
if (CMAKE_MATCH_1 IN_LIST ACCEPTED_GFX940_ARCH)
|
|
set(ARCH_GFX940 1 PARENT_SCOPE)
|
|
endif()
|
|
if (CMAKE_MATCH_1 IN_LIST ACCEPTED_OCP_ARCH)
|
|
set(ARCH_OCP 1 PARENT_SCOPE)
|
|
endif()
|
|
endif() # CMAKE_MATCH_COUNT
|
|
endforeach() # OFFLOAD_ARCH_LIST
|
|
endfunction() # CheckAcceptedArchs
|
|
|
|
if(HIP_PLATFORM MATCHES "amd")
|
|
# Do not enable arch specific tests for ASAN.
|
|
if (DEFINED OFFLOAD_ARCH_STR AND NOT (ENABLE_ADDRESS_SANITIZER OR THEROCK_SANITIZER STREQUAL "ASAN" OR THEROCK_SANITIZER STREQUAL "HOST_ASAN"))
|
|
CheckAcceptedArchs(${OFFLOAD_ARCH_STR})
|
|
elseif(DEFINED $ENV{HCC_AMDGPU_TARGET})
|
|
CheckAcceptedArchs($ENV{HCC_AMDGPU_TARGET})
|
|
else()
|
|
set(ARCH_CHECK -1)
|
|
set(ARCH_GFX940 -1)
|
|
set(ARCH_OCP -1)
|
|
endif()
|
|
set(TEST_SRC ${TEST_SRC} ${AMD_TEST_SRC})
|
|
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})
|
|
set_source_files_properties(AtomicAdd_Coherent_withunsafeflag.cc PROPERTIES COMPILE_OPTIONS "-munsafe-fp-atomics")
|
|
set_source_files_properties(AtomicAdd_NonCoherent_withunsafeflag.cc PROPERTIES COMPILE_OPTIONS "-munsafe-fp-atomics")
|
|
set_source_files_properties(AtomicAdd_Coherent_withnoUnsafeflag.cc PROPERTIES COMPILE_OPTIONS "-mno-unsafe-fp-atomics")
|
|
set_source_files_properties(AtomicAdd_NonCoherent_withnoUnsafeflag.cc PROPERTIES COMPILE_OPTIONS "-mno-unsafe-fp-atomics")
|
|
set_source_files_properties(unsafeAtomicAdd_Coherent_withunsafeflag.cc PROPERTIES COMPILE_OPTIONS "-munsafe-fp-atomics")
|
|
set_source_files_properties(unsafeAtomicAdd_NonCoherent_withunsafeflag.cc PROPERTIES COMPILE_OPTIONS "-munsafe-fp-atomics")
|
|
set_source_files_properties(unsafeAtomicAdd_Coherent_withnounsafeflag.cc PROPERTIES COMPILE_OPTIONS "-mno-unsafe-fp-atomics")
|
|
set_source_files_properties(unsafeAtomicAdd_NonCoherent_withnounsafeflag.cc PROPERTIES COMPILE_OPTIONS "-mno-unsafe-fp-atomics")
|
|
set_source_files_properties(hipMathFunctions.cc PROPERTIES COMPILE_FLAGS "-Xclang -fallow-half-arguments-and-returns")
|
|
file(GLOB AtomicAdd_files CONFIGURE_DEPENDS *AtomicAdd_*_*.cc)
|
|
set_property(SOURCE ${AtomicAdd_files} PROPERTY COMPILE_FLAGS --save-temps)
|
|
file(GLOB unsafeAtomicAdd_files CONFIGURE_DEPENDS *unsafeAtomicAdd_*_*.cc)
|
|
set_property(SOURCE ${unsafeAtomicAdd_files} PROPERTY COMPILE_FLAGS --save-temps)
|
|
endif()
|
|
if(${ARCH_GFX940} GREATER_EQUAL 0)
|
|
set(TEST_SRC ${TEST_SRC} ${AMD_GFX940_SPEC_TEST_SRC})
|
|
endif()
|
|
if(${ARCH_OCP} GREATER_EQUAL 0)
|
|
set(TEST_SRC ${TEST_SRC} ${AMD_OCP_TEST_SRC})
|
|
endif()
|
|
hip_add_exe_to_target(NAME UnitDeviceTests
|
|
TEST_SRC ${TEST_SRC}
|
|
TEST_TARGET_NAME build_tests
|
|
LINKER_LIBS hiprtc::hiprtc)
|
|
elseif(HIP_PLATFORM MATCHES "nvidia")
|
|
hip_add_exe_to_target(NAME UnitDeviceTests
|
|
TEST_SRC ${TEST_SRC}
|
|
TEST_TARGET_NAME build_tests
|
|
COMPILE_OPTIONS --Wno-deprecated-declarations)
|
|
endif()
|
|
|
|
add_dependencies(UnitDeviceTests kerDevAllocMultCO_code kerDevWriteMultCO_code kerDevFreeMultCO_code kerDevAllocSingleKer_code)
|