diff --git a/projects/hipblaslt/next-cmake/CMakeLists.txt b/projects/hipblaslt/next-cmake/CMakeLists.txt index 70f4c345500..84188fee395 100644 --- a/projects/hipblaslt/next-cmake/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/CMakeLists.txt @@ -52,19 +52,21 @@ endif() set(HIPBLASLT_ENABLE_DEVICE ON CACHE BOOL "Build hipBLASLt device libraries.") set(HIPBLASLT_ENABLE_CLIENT ON CACHE BOOL "Build hipBLASLt client apps.") cmake_dependent_option(HIPBLASLT_ENABLE_HOST "Build hipBLASLt host library." ON "HIPBLASLT_ENABLE_CLIENT" OFF) +set(TENSILELITE_ENABLE_CLIENT OFF CACHE BOOL "Build the tensilelite client.") +set(TENSILELITE_ENABLE_HOST ON CACHE BOOL "Build the tensilelite host library.") set(HIPBLASLT_ENABLE_COVERAGE OFF CACHE BOOL "Build gcov support") if(HIPBLASLT_ENABLE_CLIENT) set(HIPBLASLT_BUILD_TESTING ON CACHE BOOL "Build hipblaslt client tests.") set(HIPBLASLT_ENABLE_SAMPLES ON CACHE BOOL "Build client samples.") # rocm-smi is not presently available on Windows so we do not require it. - cmake_dependent_option(HIPBLASLT_REQUIRE_ROCM_SMI "Require rocm_smi." ON "NOT WIN32" OFF) + cmake_dependent_option(HIPBLASLT_ENABLE_ROCM_SMI "Require rocm_smi." ON "NOT WIN32" OFF) endif() set(HIPBLASLT_ENABLE_ASAN OFF CACHE BOOL "Build hipBLASLt with address sanitizer enabled.") set(HIPBLASLT_ENABLE_LAZY_LOAD ON CACHE BOOL "Enable lazy loading of runtime code oject files to reduce ram usage.") -if(HIPBLASLT_ENABLE_HOST) +if(HIPBLASLT_ENABLE_HOST OR TENSILELITE_ENABLE_HOST) set(HIPBLASLT_BUILD_SHARED_LIBS ON CACHE BOOL "Build the hipblaslt library as shared vs static") set(HIPBLASLT_ENABLE_HIP ON CACHE BOOL "Use the HIP runtime.") set(HIPBLASLT_ENABLE_MSGPACK ON CACHE BOOL "Use msgpack for parsing configuration files.") @@ -125,7 +127,7 @@ if(HIPBLASLT_ENABLE_HOST) set(rocTracer) endif() endif() -if(HIPBLASLT_REQUIRE_ROCM_SMI) +if(HIPBLASLT_ENABLE_ROCM_SMI) find_package(rocm_smi REQUIRED) else() find_package(rocm_smi) @@ -212,6 +214,57 @@ if(HIPBLASLT_ENABLE_ROCROLLER AND NOT TARGET roc::rocroller) endif() endif() +if(TENSILELITE_ENABLE_HOST OR HIPBLASLT_ENABLE_HOST) + add_library(tensilelite-host OBJECT) + add_library(tensilelite::tensilelite-host ALIAS tensilelite-host) + + set_target_properties(tensilelite-host PROPERTIES + POSITION_INDEPENDENT_CODE ON + ) + + target_compile_features(tensilelite-host PUBLIC cxx_std_17) + target_compile_definitions(tensilelite-host + PUBLIC + $ + __HIP_PLATFORM_AMD__ + ) + + if(HIPBLASLT_ENABLE_HIP) + target_compile_definitions(tensilelite-host PUBLIC $) + endif() + + if(HIPBLASLT_ENABLE_LLVM) + target_link_libraries(tensilelite-host PRIVATE LLVMObjectYAML) + target_include_directories(tensilelite-host PRIVATE ${LLVM_INCLUDE_DIRS}) + target_compile_definitions(tensilelite-host PUBLIC TENSILE_YAML) + endif() + + if(HIPBLASLT_ENABLE_MSGPACK) + if(msgpack-cxx_FOUND) + target_link_libraries(tensilelite-host PRIVATE msgpack-cxx) + else() + target_link_libraries(tensilelite-host PRIVATE msgpackc) + endif() + target_compile_definitions(tensilelite-host PRIVATE TENSILE_MSGPACK) + endif() + + target_include_directories(tensilelite-host + PUBLIC + $ + $ + PRIVATE + "${CMAKE_CURRENT_BINARY_DIR}/include" + ) + + target_link_libraries(tensilelite-host + PUBLIC + rocisa::rocisa-cpp + hip::device + ) + + add_subdirectory(rocisa/rocisa-cpp) +endif() + if(HIPBLASLT_ENABLE_HOST) if(HIPBLASLT_BUILD_SHARED_LIBS) add_library(hipblaslt SHARED) @@ -229,13 +282,13 @@ if(HIPBLASLT_ENABLE_HOST) target_link_libraries(hipblaslt PUBLIC roc::${hipblas_target} - PRIVATE hip::device - rocisa::rocisa-cpp + PRIVATE + tensilelite-host ${CMAKE_DL_LIBS} ${rocTracer} ) - + if(HIPBLASLT_ENABLE_ASAN) hipblaslt_target_configure_sanitizers(hipblaslt PRIVATE) endif() @@ -243,8 +296,6 @@ if(HIPBLASLT_ENABLE_HOST) target_compile_features(hipblaslt PUBLIC cxx_std_17) # I would like to make this configurable target_compile_definitions(hipblaslt - PRIVATE - TENSILE_DEFAULT_SERIALIZATION PUBLIC ROCM_USE_FLOAT16 __HIP_PLATFORM_AMD__ @@ -258,19 +309,6 @@ if(HIPBLASLT_ENABLE_HOST) target_compile_definitions(hipblaslt PRIVATE ROCBLASLT_TENSILE_LAZY_LOAD) endif() - if(HIPBLASLT_ENABLE_HIP) - target_compile_definitions(hipblaslt PRIVATE TENSILE_USE_HIP) - endif() - - if(HIPBLASLT_ENABLE_MSGPACK) - if(msgpack-cxx_FOUND) - target_link_libraries(hipblaslt PRIVATE msgpack-cxx) - else() - target_link_libraries(hipblaslt PRIVATE msgpackc) - endif() - target_compile_definitions(hipblaslt PRIVATE TENSILE_MSGPACK) - endif() - if(HIPBLASLT_ENABLE_MARKER) target_compile_definitions(hipblaslt PRIVATE HIPBLASLT_ENABLE_MARKER) endif() @@ -280,7 +318,6 @@ if(HIPBLASLT_ENABLE_HOST) $ $ $ - $ $ PRIVATE "${ROCBLASLT_LIB_DIR}/include" @@ -292,11 +329,10 @@ if(HIPBLASLT_ENABLE_HOST) PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/host-library ) - - add_subdirectory(rocisa/rocisa-cpp) - add_subdirectory(host-library) endif() +add_subdirectory(host-library) + if(HIPBLASLT_ENABLE_DEVICE) add_subdirectory(device-library) endif() @@ -304,7 +340,13 @@ endif() if(HIPBLASLT_ENABLE_CLIENT) add_subdirectory(clients) endif() +if(TENSILELITE_ENABLE_CLIENT) + add_subdirectory(tensilelite-client) +endif() +if(TENSILELITE_ENABLE_CLIENT) + target_link_libraries(tensilelite-client PRIVATE tensilelite::tensilelite-host) +endif() if(HIPBLASLT_ENABLE_HOST) # work around code object stripping failure if using /usr/bin/strip diff --git a/projects/hipblaslt/next-cmake/README.rst b/projects/hipblaslt/next-cmake/README.rst index c1dba748a6b..25652b77681 100644 --- a/projects/hipblaslt/next-cmake/README.rst +++ b/projects/hipblaslt/next-cmake/README.rst @@ -12,11 +12,12 @@ Quick Start Guide This section describes how to configure and build the |project_name| project. We assume the user has a ROCm installation, Python 3.8 or newer and CMake 3.25.0 or newer. -The |project_name| project consists of three components: +The |project_name| project consists of four components: 1. host library 2. device libraries 3. client applications +4. tensilelite client Each component has a corresponding subdirectory. The host and device libraries are independently configurable and buildable but the client applications require the host library build time and the @@ -89,6 +90,8 @@ Options * `HIPBLASLT_ENABLE_HOST`: Enables generation of host library (default: `ON`) * `HIPBLASLT_ENABLE_DEVICE`: Enables generation of device libraries (default: `ON`) * `HIPBLASLT_ENABLE_CLIENT`: Enables generation of client applications (default: `ON`) +* `TENSILELITE_ENABLE_HOST`: Enables generation of tensilelite host (default: `ON`) +* `TENSILELITE_ENABLE_CLIENT`: Enables generation of tensilelite client application (default: `OFF`) * `HIPBLASLT_ENABLE_LAZY_LOAD` Enable lazy loading of runtime code oject files to reduce init costs (default: `ON`) * `GPU_TARGETS:` Semicolon separated list of gfx targets to build @@ -119,16 +122,18 @@ CMake Targets * `roc::hipblaslt` * `rocisa::rocisa-cpp` +* `tensilelite::tensilelite-client` --------------- Physical Design --------------- -|project_name| consists of three components: +|project_name| consists of four components: 1. host library 2. device libraries 3. client applications +4. tensilelite client Each component has a corresponding directory. The host and device libraries are independently configurable and diff --git a/projects/hipblaslt/next-cmake/clients/CMakeLists.txt b/projects/hipblaslt/next-cmake/clients/CMakeLists.txt index f6771419239..687c6a5069f 100755 --- a/projects/hipblaslt/next-cmake/clients/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/clients/CMakeLists.txt @@ -71,6 +71,7 @@ target_link_libraries(hipblaslt-bench PRIVATE hip::device hipblaslt-clients-common + OpenMP::OpenMP_CXX ) if(HIPBLASLT_ENABLE_OPENMP) diff --git a/projects/hipblaslt/next-cmake/host-library/include/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/include/CMakeLists.txt index 787456b20fc..dc42d56ae4f 100644 --- a/projects/hipblaslt/next-cmake/host-library/include/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/include/CMakeLists.txt @@ -1,3 +1,6 @@ -add_subdirectory(hipblaslt) -add_subdirectory(rocblaslt) +if(HIPBLASLT_ENABLE_HOST) + add_subdirectory(hipblaslt) + add_subdirectory(rocblaslt) +endif() + add_subdirectory(tensilelite) diff --git a/projects/hipblaslt/next-cmake/host-library/include/tensilelite/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/include/tensilelite/CMakeLists.txt index 9bdfa7fad2f..45084414ab9 100644 --- a/projects/hipblaslt/next-cmake/host-library/include/tensilelite/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/include/tensilelite/CMakeLists.txt @@ -37,7 +37,7 @@ add_subdirectory(analytical) set(_CMAKE_CURRENT_SOURCE_DIR "${TEMP_TENSILE_HOST_SOURCE_DIR}/include") -target_sources(hipblaslt +target_sources(tensilelite-host PRIVATE "${_CMAKE_CURRENT_SOURCE_DIR}/Tensile/AMDGPU.hpp" "${_CMAKE_CURRENT_SOURCE_DIR}/Tensile/AMDGPUPredicates.hpp" diff --git a/projects/hipblaslt/next-cmake/host-library/include/tensilelite/Serialization/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/include/tensilelite/Serialization/CMakeLists.txt index dcb9f73d4bc..08b96dc3d66 100644 --- a/projects/hipblaslt/next-cmake/host-library/include/tensilelite/Serialization/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/include/tensilelite/Serialization/CMakeLists.txt @@ -23,7 +23,7 @@ set(_CMAKE_CURRENT_SOURCE_DIR "${TEMP_TENSILE_HOST_SOURCE_DIR}/include/Tensile") -target_sources(hipblaslt +target_sources(tensilelite-host PRIVATE "${_CMAKE_CURRENT_SOURCE_DIR}/Serialization/Base.hpp" "${_CMAKE_CURRENT_SOURCE_DIR}/Serialization/Containers.hpp" diff --git a/projects/hipblaslt/next-cmake/host-library/include/tensilelite/analytical/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/include/tensilelite/analytical/CMakeLists.txt index d1363f92a05..ee5d414b91c 100644 --- a/projects/hipblaslt/next-cmake/host-library/include/tensilelite/analytical/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/include/tensilelite/analytical/CMakeLists.txt @@ -23,7 +23,7 @@ set(_CMAKE_CURRENT_SOURCE_DIR "${TEMP_TENSILE_HOST_SOURCE_DIR}/include/Tensile/analytical") -target_sources(hipblaslt +target_sources(tensilelite-host PRIVATE "${_CMAKE_CURRENT_SOURCE_DIR}/AnalyticalGemm.hpp" "${_CMAKE_CURRENT_SOURCE_DIR}/Hardware.hpp" diff --git a/projects/hipblaslt/next-cmake/host-library/include/tensilelite/hip/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/include/tensilelite/hip/CMakeLists.txt index aedfe1c4b79..a00788a7697 100644 --- a/projects/hipblaslt/next-cmake/host-library/include/tensilelite/hip/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/include/tensilelite/hip/CMakeLists.txt @@ -23,7 +23,7 @@ set(_CMAKE_CURRENT_SOURCE_DIR "${TEMP_TENSILE_HOST_SOURCE_DIR}/include") -target_sources(hipblaslt +target_sources(tensilelite-host PRIVATE "${_CMAKE_CURRENT_SOURCE_DIR}/Tensile/hip/HipHardware.hpp" "${_CMAKE_CURRENT_SOURCE_DIR}/Tensile/hip/HipSolutionAdapter.hpp" diff --git a/projects/hipblaslt/next-cmake/host-library/include/tensilelite/llvm/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/include/tensilelite/llvm/CMakeLists.txt index f942caaa6da..f1aeb11fc9b 100644 --- a/projects/hipblaslt/next-cmake/host-library/include/tensilelite/llvm/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/include/tensilelite/llvm/CMakeLists.txt @@ -23,7 +23,7 @@ set(_CMAKE_CURRENT_SOURCE_DIR "${TEMP_TENSILE_HOST_SOURCE_DIR}/include/Tensile") -target_sources(hipblaslt +target_sources(tensilelite-host PRIVATE "${_CMAKE_CURRENT_SOURCE_DIR}/llvm/Loading.hpp" "${_CMAKE_CURRENT_SOURCE_DIR}/llvm/YAML.hpp" diff --git a/projects/hipblaslt/next-cmake/host-library/include/tensilelite/msgpack/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/include/tensilelite/msgpack/CMakeLists.txt index f759a5bd3bd..c6e4b9028be 100644 --- a/projects/hipblaslt/next-cmake/host-library/include/tensilelite/msgpack/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/include/tensilelite/msgpack/CMakeLists.txt @@ -23,7 +23,7 @@ set(_CMAKE_CURRENT_SOURCE_DIR "${TEMP_TENSILE_HOST_SOURCE_DIR}/include/Tensile") -target_sources(hipblaslt +target_sources(tensilelite-host PRIVATE "${_CMAKE_CURRENT_SOURCE_DIR}/msgpack/Loading.hpp" "${_CMAKE_CURRENT_SOURCE_DIR}/msgpack/MessagePack.hpp" diff --git a/projects/hipblaslt/next-cmake/host-library/src/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/src/CMakeLists.txt index 787456b20fc..dc42d56ae4f 100644 --- a/projects/hipblaslt/next-cmake/host-library/src/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/src/CMakeLists.txt @@ -1,3 +1,6 @@ -add_subdirectory(hipblaslt) -add_subdirectory(rocblaslt) +if(HIPBLASLT_ENABLE_HOST) + add_subdirectory(hipblaslt) + add_subdirectory(rocblaslt) +endif() + add_subdirectory(tensilelite) diff --git a/projects/hipblaslt/next-cmake/host-library/src/tensilelite/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/src/tensilelite/CMakeLists.txt index 1a13b62776b..5a7472c4dfb 100644 --- a/projects/hipblaslt/next-cmake/host-library/src/tensilelite/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/src/tensilelite/CMakeLists.txt @@ -21,9 +21,23 @@ # # ######################################################################## +if(HIPBLASLT_ENABLE_LLVM) + add_subdirectory(llvm) +endif() + +if(HIPBLASLT_ENABLE_MSGPACK) + add_subdirectory(msgpack) +endif() + +if(HIPBLASLT_ENABLE_HIP) + add_subdirectory(hip) +endif() + +add_subdirectory(analytical) + set(_CMAKE_CURRENT_SOURCE_DIR "${TEMP_TENSILE_HOST_SOURCE_DIR}/source") -target_sources(hipblaslt +target_sources(tensilelite-host PRIVATE "${_CMAKE_CURRENT_SOURCE_DIR}/Activation.cpp" "${_CMAKE_CURRENT_SOURCE_DIR}/AMDGPU.cpp" @@ -45,17 +59,3 @@ target_sources(hipblaslt "${_CMAKE_CURRENT_SOURCE_DIR}/Tensile.cpp" "${_CMAKE_CURRENT_SOURCE_DIR}/Utils.cpp" ) - -if(HIPBLASLT_ENABLE_LLVM) - add_subdirectory(llvm) -endif() - -if(HIPBLASLT_ENABLE_MSGPACK) - add_subdirectory(msgpack) -endif() - -if(HIPBLASLT_ENABLE_HIP) - add_subdirectory(hip) -endif() - -add_subdirectory(analytical) diff --git a/projects/hipblaslt/next-cmake/host-library/src/tensilelite/analytical/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/src/tensilelite/analytical/CMakeLists.txt index 5861253a3ba..dbdf6d20717 100644 --- a/projects/hipblaslt/next-cmake/host-library/src/tensilelite/analytical/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/src/tensilelite/analytical/CMakeLists.txt @@ -23,7 +23,7 @@ set(_CMAKE_CURRENT_SOURCE_DIR "${TEMP_TENSILE_HOST_SOURCE_DIR}/source/analytical") -target_sources(hipblaslt +target_sources(tensilelite-host PRIVATE "${_CMAKE_CURRENT_SOURCE_DIR}/AnalyticalGemm.cpp" "${_CMAKE_CURRENT_SOURCE_DIR}/Hardware.cpp" diff --git a/projects/hipblaslt/next-cmake/host-library/src/tensilelite/hip/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/src/tensilelite/hip/CMakeLists.txt index 5a6d44374c4..1e554875fb3 100644 --- a/projects/hipblaslt/next-cmake/host-library/src/tensilelite/hip/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/src/tensilelite/hip/CMakeLists.txt @@ -23,7 +23,7 @@ set(_CMAKE_CURRENT_SOURCE_DIR "${TEMP_TENSILE_HOST_SOURCE_DIR}/source") -target_sources(hipblaslt +target_sources(tensilelite-host PRIVATE "${_CMAKE_CURRENT_SOURCE_DIR}/hip/HipSolutionAdapter.cpp" "${_CMAKE_CURRENT_SOURCE_DIR}/hip/HipHardware.cpp" diff --git a/projects/hipblaslt/next-cmake/host-library/src/tensilelite/llvm/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/src/tensilelite/llvm/CMakeLists.txt index 90d51b09569..f38b33d3126 100644 --- a/projects/hipblaslt/next-cmake/host-library/src/tensilelite/llvm/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/src/tensilelite/llvm/CMakeLists.txt @@ -23,8 +23,8 @@ set(_CMAKE_CURRENT_SOURCE_DIR "${TEMP_TENSILE_HOST_SOURCE_DIR}/source") -target_sources(hipblaslt +target_sources(tensilelite-host PRIVATE - ${_CMAKE_CURRENT_SOURCE_DIR}/llvm/YAML.cpp" - ${_CMAKE_CURRENT_SOURCE_DIR}/llvm/Loading.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/llvm/YAML.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/llvm/Loading.cpp" ) diff --git a/projects/hipblaslt/next-cmake/host-library/src/tensilelite/msgpack/CMakeLists.txt b/projects/hipblaslt/next-cmake/host-library/src/tensilelite/msgpack/CMakeLists.txt index 131ebb2cd83..7a411afcda1 100644 --- a/projects/hipblaslt/next-cmake/host-library/src/tensilelite/msgpack/CMakeLists.txt +++ b/projects/hipblaslt/next-cmake/host-library/src/tensilelite/msgpack/CMakeLists.txt @@ -23,7 +23,7 @@ set(_CMAKE_CURRENT_SOURCE_DIR "${TEMP_TENSILE_HOST_SOURCE_DIR}/source") -target_sources(hipblaslt +target_sources(tensilelite-host PRIVATE "${_CMAKE_CURRENT_SOURCE_DIR}/msgpack/MessagePack.cpp" ) diff --git a/projects/hipblaslt/next-cmake/tensilelite-client/CMakeLists.txt b/projects/hipblaslt/next-cmake/tensilelite-client/CMakeLists.txt new file mode 100644 index 00000000000..7a4a90f2493 --- /dev/null +++ b/projects/hipblaslt/next-cmake/tensilelite-client/CMakeLists.txt @@ -0,0 +1,59 @@ +# ######################################################################## +# Copyright (C) 2025 Advanced Micro Devices, Inc. +# +# MIT License +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# 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 AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# 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. +# +# ######################################################################## + +set(TENSILELITE_CLIENT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../../tensilelite/Tensile/Source/client") +set(_CMAKE_CURRENT_SOURCE_DIR ${TENSILELITE_CLIENT_DIR}) +find_package(Boost COMPONENTS program_options filesystem REQUIRED) +add_executable(tensilelite-client "${_CMAKE_CURRENT_SOURCE_DIR}/main.cpp") +target_link_libraries(tensilelite-client + PRIVATE + hip::device + hip::host + tensilelite::tensilelite-host + rocisa::rocisa-cpp + Boost::program_options + Boost::filesystem + OpenMP::OpenMP_CXX +) +if(rocm_smi_FOUND) + target_link_libraries(tensilelite-client PRIVATE rocm_smi64) +endif() +target_include_directories(tensilelite-client PRIVATE "${_CMAKE_CURRENT_SOURCE_DIR}/include") +target_compile_definitions(tensilelite-client PRIVATE TENSILE_DEFAULT_SERIALIZATION) + +set_target_properties(tensilelite-client + PROPERTIES + CXX_STANDARD 17 + CXX_STANDARD_REQUIRED ON + CXX_EXTENSIONS OFF +) + +if(HIPBLASLT_ENABLE_ASAN) + hipblaslt_target_configure_sanitizers(tensilelite-client PRIVATE) +endif() + +add_subdirectory(include) +add_subdirectory(src) + diff --git a/projects/hipblaslt/next-cmake/tensilelite-client/include/CMakeLists.txt b/projects/hipblaslt/next-cmake/tensilelite-client/include/CMakeLists.txt new file mode 100644 index 00000000000..11d52cd9eae --- /dev/null +++ b/projects/hipblaslt/next-cmake/tensilelite-client/include/CMakeLists.txt @@ -0,0 +1,57 @@ +# ######################################################################## +# Copyright (C) 2025 Advanced Micro Devices, Inc. +# +# MIT License +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# 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 AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# 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. +# +# ######################################################################## + +set(_CMAKE_CURRENT_SOURCE_DIR "${TENSILELITE_CLIENT_DIR}/include") + +target_sources(tensilelite-client + PRIVATE + "${_CMAKE_CURRENT_SOURCE_DIR}/TypedId.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/MetaResultReporter.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/HardwareMonitorListener.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/ClientProblemFactory.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/ResultReporter.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/DataInitialization.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/TensorDataManipulation.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/ResultReporter_fwd.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/ResultComparison.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/LogReporter.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/RunListener.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/MetaRunListener.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/Rotating.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/ProgressListener.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/Utility.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/LibraryUpdateReporter.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/SolutionIterator.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/PerformanceReporter.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/HardwareMonitor_fwd.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/ResultFileReporter.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/BenchmarkTimer.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/TimingEvents.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/ReferenceValidator.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/Reference.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/HardwareMonitor.hpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/CSVStackFile.hpp" +) + diff --git a/projects/hipblaslt/next-cmake/tensilelite-client/src/CMakeLists.txt b/projects/hipblaslt/next-cmake/tensilelite-client/src/CMakeLists.txt new file mode 100644 index 00000000000..1af1d052025 --- /dev/null +++ b/projects/hipblaslt/next-cmake/tensilelite-client/src/CMakeLists.txt @@ -0,0 +1,49 @@ +# ######################################################################## +# Copyright (C) 2025 Advanced Micro Devices, Inc. +# +# MIT License +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to deal +# in the Software without restriction, including without limitation the rights +# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +# copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# 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 AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# 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. +# +# ######################################################################## + +set(_CMAKE_CURRENT_SOURCE_DIR "${TENSILELITE_CLIENT_DIR}/source") + +target_sources(tensilelite-client + PRIVATE + "${_CMAKE_CURRENT_SOURCE_DIR}/BenchmarkTimer.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/ClientProblemFactory.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/DataInitialization.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/PerformanceReporter.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/HardwareMonitorListener.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/TimingEvents.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/HardwareMonitor.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/ReferenceValidator.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/ResultFileReporter.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/ResultReporter.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/MetaRunListener.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/Reference.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/ProgressListener.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/TypedId.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/Rotating.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/CSVStackFile.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/SolutionIterator.cpp" + "${_CMAKE_CURRENT_SOURCE_DIR}/LibraryUpdateReporter.cpp" +) +