Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 67 additions & 25 deletions projects/hipblaslt/next-cmake/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -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.")
Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
$<BUILD_INTERFACE:TENSILE_DEFAULT_SERIALIZATION>
__HIP_PLATFORM_AMD__
)

if(HIPBLASLT_ENABLE_HIP)
target_compile_definitions(tensilelite-host PUBLIC $<BUILD_INTERFACE:TENSILE_USE_HIP>)
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
$<BUILD_INTERFACE:${TEMP_TENSILE_HOST_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
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)
Expand All @@ -229,22 +282,20 @@ 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()

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__
Expand All @@ -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()
Expand All @@ -280,7 +318,6 @@ if(HIPBLASLT_ENABLE_HOST)
$<BUILD_INTERFACE:${HIPBLASLT_LIB_DIR}/src/include>
$<BUILD_INTERFACE:${HIPBLASLT_LIB_DIR}/include>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/host-library/include>
$<BUILD_INTERFACE:${TEMP_TENSILE_HOST_SOURCE_DIR}/include>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
PRIVATE
"${ROCBLASLT_LIB_DIR}/include"
Expand All @@ -292,19 +329,24 @@ 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()

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
Expand Down
9 changes: 7 additions & 2 deletions projects/hipblaslt/next-cmake/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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

Expand Down Expand Up @@ -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
Expand Down
1 change: 1 addition & 0 deletions projects/hipblaslt/next-cmake/clients/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ target_link_libraries(hipblaslt-bench
PRIVATE
hip::device
hipblaslt-clients-common
OpenMP::OpenMP_CXX
)

if(HIPBLASLT_ENABLE_OPENMP)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
add_subdirectory(hipblaslt)
add_subdirectory(rocblaslt)
if(HIPBLASLT_ENABLE_HOST)
add_subdirectory(hipblaslt)
add_subdirectory(rocblaslt)
endif()

add_subdirectory(tensilelite)
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
add_subdirectory(hipblaslt)
add_subdirectory(rocblaslt)
if(HIPBLASLT_ENABLE_HOST)
add_subdirectory(hipblaslt)
add_subdirectory(rocblaslt)
endif()

add_subdirectory(tensilelite)
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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)
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Original file line number Diff line number Diff line change
Expand Up @@ -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"
)
Loading