Files
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

746 lines
22 KiB
CMake

# Copyright Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT
if(THEROCK_ENABLE_RAND)
# amdsmi is Linux-only and only declared when THEROCK_ENABLE_CORE_AMDSMI is ON
# (see core/CMakeLists.txt). Benchmarks depend on primbench which requires
# amd_smi, so they must be disabled when amdsmi is unavailable (e.g., the
# prim-isolated CI group THEROCK_ENABLE_ALL=OFF / THEROCK_ENABLE_PRIM=ON).
if(WIN32 OR NOT TARGET amdsmi)
set(_primlibs_benchmark_enable "OFF")
set(_primlibs_benchmark_deps)
set(_primlibs_benchmark_includes)
else()
set(_primlibs_benchmark_enable ${THEROCK_BUILD_TESTING})
set(_primlibs_benchmark_deps amdsmi)
set(_primlibs_benchmark_includes therock_primlibs_benchmark_deps.cmake)
endif()
##############################################################################
# rocRAND
##############################################################################
set(_rand_subproject_names)
therock_cmake_subproject_declare(rocRAND
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/rocrand"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/rocRAND"
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
-DBUILD_TEST=${THEROCK_BUILD_TESTING}
-DBUILD_BENCHMARK=${_primlibs_benchmark_enable}
CMAKE_INCLUDES
${_primlibs_benchmark_includes}
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
therock-googletest
${_primlibs_benchmark_deps}
RUNTIME_DEPS
hip-clr
TEST_SUBPROJECTS
hipRAND
)
therock_cmake_subproject_glob_c_sources(rocRAND
SUBDIRS
.
)
therock_cmake_subproject_provide_package(rocRAND rocrand lib/cmake/rocrand)
therock_cmake_subproject_activate(rocRAND)
list(APPEND _rand_subproject_names rocRAND)
##############################################################################
# hipRAND
##############################################################################
# Note: hipRAND has no benchmarks
therock_cmake_subproject_declare(hipRAND
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/hiprand"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/hipRAND"
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
-DBUILD_TEST=${THEROCK_BUILD_TESTING}
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
therock-googletest
RUNTIME_DEPS
hip-clr
rocRAND
TEST_SUBPROJECTS
)
therock_cmake_subproject_glob_c_sources(hipRAND
SUBDIRS
.
)
therock_cmake_subproject_provide_package(hipRAND hiprand lib/cmake/hiprand)
therock_cmake_subproject_activate(hipRAND)
list(APPEND _rand_subproject_names hipRAND)
##############################################################################
# rand artifact
##############################################################################
therock_provide_artifact(rand
DESCRIPTOR artifact-rand.toml
COMPONENTS
dbg
dev
doc
lib
run
test
SUBPROJECT_DEPS ${_rand_subproject_names}
)
endif(THEROCK_ENABLE_RAND)
if(THEROCK_ENABLE_PRIM)
##############################################################################
# rocPRIM
##############################################################################
therock_cmake_subproject_declare(rocPRIM
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/rocprim"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/rocPRIM"
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
-DBUILD_TEST=OFF
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
RUNTIME_DEPS
hip-clr
TEST_SUBPROJECTS
hipCUB
rocThrust
rocSPARSE
)
therock_cmake_subproject_glob_c_sources(rocPRIM
SUBDIRS
.
)
therock_cmake_subproject_provide_package(rocPRIM rocprim lib/cmake/rocprim)
therock_cmake_subproject_activate(rocPRIM)
# amdsmi is Linux-only and only declared when THEROCK_ENABLE_CORE_AMDSMI is ON
# (see core/CMakeLists.txt). Benchmarks depend on primbench which requires
# amd_smi, so they must be disabled when amdsmi is unavailable (e.g., the
# prim-isolated CI group THEROCK_ENABLE_ALL=OFF / THEROCK_ENABLE_PRIM=ON).
if(WIN32 OR NOT TARGET amdsmi)
set(_primlibs_benchmark_enable "OFF")
set(_primlibs_benchmark_deps)
set(_primlibs_benchmark_includes)
else()
set(_primlibs_benchmark_enable ${THEROCK_BUILD_TESTING})
set(_primlibs_benchmark_deps amdsmi)
set(_primlibs_benchmark_includes therock_primlibs_benchmark_deps.cmake)
endif()
if(THEROCK_BUILD_TESTING)
##############################################################################
# rocPRIM tests
##############################################################################
# rocPRIM_tests declared as a separate target to stop the tests from clogging up the critical build path for libs
# that depend on rocPRIM.
# Passing BACKGROUND_BUILD ensures that the tests aren't built (too) concurrently with other projects that are demanding.
therock_cmake_subproject_declare(rocPRIM_tests
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/rocprim"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/rocPRIM_tests"
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
-DBUILD_TEST=ON
-DBUILD_BENCHMARK=${_primlibs_benchmark_enable}
-DUSE_SYSTEM_LIB=ON
CMAKE_INCLUDES
${_primlibs_benchmark_includes}
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
therock-googletest
rocPRIM
${_primlibs_benchmark_deps}
RUNTIME_DEPS
hip-clr
TEST_SUBPROJECTS
)
therock_cmake_subproject_glob_c_sources(rocPRIM_tests
SUBDIRS
.
)
therock_cmake_subproject_activate(rocPRIM_tests)
endif()
therock_cmake_subproject_declare(hipCUB
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/hipcub"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/hipCUB"
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
-DBUILD_TEST=${THEROCK_BUILD_TESTING}
-DBUILD_BENCHMARK=${_primlibs_benchmark_enable}
CMAKE_INCLUDES
${_primlibs_benchmark_includes}
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
rocPRIM
therock-googletest
${_primlibs_benchmark_deps}
RUNTIME_DEPS
hip-clr
TEST_SUBPROJECTS
rocPRIM
)
therock_cmake_subproject_glob_c_sources(hipCUB
SUBDIRS
.
)
therock_cmake_subproject_provide_package(hipCUB hipcub lib/cmake/hipcub)
therock_cmake_subproject_activate(hipCUB)
therock_cmake_subproject_declare(rocThrust
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/rocthrust"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/rocThrust"
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
-DBUILD_TEST=${THEROCK_BUILD_TESTING}
-DBUILD_BENCHMARK=${_primlibs_benchmark_enable}
CMAKE_INCLUDES
${_primlibs_benchmark_includes}
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
rocPRIM
rocRAND
therock-googletest
${_primlibs_benchmark_deps}
RUNTIME_DEPS
hip-clr
${THEROCK_BUNDLED_SQLITE3}
TEST_SUBPROJECTS
rocPRIM
)
therock_cmake_subproject_glob_c_sources(rocThrust
SUBDIRS
.
)
therock_cmake_subproject_provide_package(rocThrust rocthrust lib/cmake/rocthrust)
therock_cmake_subproject_activate(rocThrust)
set(_prim_subproject_deps
rocPRIM
hipCUB
rocThrust
)
if(THEROCK_BUILD_TESTING)
list(APPEND _prim_subproject_deps rocPRIM_tests)
endif()
therock_provide_artifact(prim
DESCRIPTOR artifact-prim.toml
COMPONENTS
dbg
dev
doc
test
SUBPROJECT_DEPS
${_prim_subproject_deps}
)
endif(THEROCK_ENABLE_PRIM)
if(THEROCK_ENABLE_FFT)
if(WIN32)
# TODO(#36): enable once `rocfft_aot_helper.exe` can access hiprtc0605.dll
# "The code execution cannot proceed because hiprtc0605.dll was not found."
set(_fft_kernel_cache_enable "OFF")
else()
set(_fft_kernel_cache_enable "ON")
endif()
##############################################################################
# rocFFT
##############################################################################
set(_fft_subproject_names)
therock_cmake_subproject_declare(rocFFT
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/rocfft"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/rocFFT"
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
-DBUILD_CLIENTS=OFF
-DBUILD_SHARED_LIBS=ON
-DUSE_HIPRAND=ON
-DROCFFT_KERNEL_CACHE_ENABLE=${_fft_kernel_cache_enable}
-DBUILD_CLIENTS_TESTS=${THEROCK_BUILD_TESTING}
-DBUILD_CLIENTS_BENCH=${THEROCK_BUILD_TESTING}
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
therock-googletest
therock-fftw3
therock-fftw3f
RUNTIME_DEPS
hip-clr
hipRAND
TEST_SUBPROJECTS
hipFFT
)
therock_cmake_subproject_glob_c_sources(rocFFT
SUBDIRS
.
)
therock_cmake_subproject_provide_package(rocFFT rocfft lib/cmake/rocfft)
therock_cmake_subproject_activate(rocFFT)
list(APPEND _fft_subproject_names rocFFT)
##############################################################################
# hipFFT
##############################################################################
therock_cmake_subproject_declare(hipFFT
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/hipfft"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/hipFFT"
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
-DBUILD_SHARED_LIBS=ON
-DBUILD_CLIENTS_TESTS=${THEROCK_BUILD_TESTING}
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
therock-googletest
therock-fftw3
therock-fftw3f
RUNTIME_DEPS
hip-clr
rocFFT
TEST_SUBPROJECTS
)
therock_cmake_subproject_glob_c_sources(hipFFT
SUBDIRS
.
)
therock_cmake_subproject_provide_package(hipFFT hipfft lib/cmake/hipfft)
therock_cmake_subproject_activate(hipFFT)
list(APPEND _fft_subproject_names hipFFT)
##############################################################################
# fft artifact
##############################################################################
therock_provide_artifact(fft
DESCRIPTOR artifact-fft.toml
COMPONENTS
dbg
dev
doc
lib
run
test
SUBPROJECT_DEPS ${_fft_subproject_names}
)
endif(THEROCK_ENABLE_FFT)
if(THEROCK_ENABLE_BLAS)
add_subdirectory(support)
add_subdirectory(BLAS)
endif()
if(THEROCK_ENABLE_ROCWMMA)
set(_rocwmma_build_samples ON)
set(_rocwmma_build_tests ${THEROCK_BUILD_TESTING})
set(_rocwmma_enable_benchmarks ${THEROCK_ROCWMMA_ENABLE_BENCHMARKS})
set(_rocwmma_artifact_components dbg dev lib test)
# rocWMMA intentionally supports only targets with MFMA/WMMA instructions.
# Use the same target filtering metadata as CK to recognize all-filtered
# shards, but keep the host/API subproject declared for downstream users.
# For those shards, omit only target-dependent samples/tests/benchmarks so
# they do not publish an untransformed rocwmma_test_generic artifact.
if(THEROCK_AMDGPU_TARGETS AND NOT "${THEROCK_AMDGPU_TARGETS}" MATCHES "-NOTFOUND$")
therock_filter_amdgpu_targets(
_rocwmma_gpu_targets rocWMMA ${THEROCK_AMDGPU_TARGETS})
if(NOT _rocwmma_gpu_targets)
string(JOIN " " _rocwmma_requested_targets ${THEROCK_AMDGPU_TARGETS})
message(STATUS
"rocWMMA: no supported GPU targets remain after filtering "
"(${_rocwmma_requested_targets}); disabling samples, tests, "
"and benchmarks.")
set(_rocwmma_build_samples OFF)
set(_rocwmma_build_tests OFF)
set(_rocwmma_enable_benchmarks OFF)
list(REMOVE_ITEM _rocwmma_artifact_components test)
endif()
endif()
##############################################################################
# rocWMMA
##############################################################################
# Configure optional dependencies
set(_rocwmma_optional_deps)
if(_rocwmma_enable_benchmarks)
list(APPEND _rocwmma_optional_deps rocm_smi_lib)
endif()
therock_cmake_subproject_declare(rocWMMA
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/rocwmma"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/rocWMMA"
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
"-DROCWMMA_BUILD_SAMPLES=$<BOOL:${_rocwmma_build_samples}>"
"-DROCWMMA_BUILD_TESTS=$<BOOL:${_rocwmma_build_tests}>"
"-DROCWMMA_VALIDATE_WITH_ROCBLAS=ON"
"-DROCWMMA_BENCHMARK_WITH_ROCBLAS=$<BOOL:${_rocwmma_enable_benchmarks}>"
"-DROCWMMA_BUILD_BENCHMARK_TESTS=$<BOOL:${_rocwmma_enable_benchmarks}>"
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON # Needed for Ninja build
-DROCWMMA_USE_SYSTEM_GOOGLETEST=ON # Use therock-googletest
CMAKE_INCLUDES
therock_explicit_finders.cmake
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
therock-googletest
RUNTIME_DEPS
hip-clr
rocBLAS
${_rocwmma_optional_deps}
TEST_SUBPROJECTS
)
therock_cmake_subproject_glob_c_sources(rocWMMA
SUBDIRS
.
)
therock_cmake_subproject_provide_package(rocWMMA rocwmma lib/cmake/rocwmma)
therock_cmake_subproject_activate(rocWMMA)
therock_provide_artifact(rocwmma
DESCRIPTOR artifact-rocwmma.toml
COMPONENTS
${_rocwmma_artifact_components}
SUBPROJECT_DEPS
rocWMMA
)
endif(THEROCK_ENABLE_ROCWMMA)
if(THEROCK_ENABLE_ROCALUTION)
##############################################################################
# rocALUTION
##############################################################################
therock_cmake_subproject_declare(rocALUTION
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/rocalution"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/rocALUTION"
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
-DSUPPORT_HIP=ON
-DSUPPORT_MPI=OFF
-DBUILD_CLIENTS_TESTS=${THEROCK_BUILD_TESTING}
-DBUILD_CLIENTS_BENCHMARKS=OFF
-DBUILD_CLIENTS_SAMPLES=OFF
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON # Needed for Ninja build
CMAKE_INCLUDES
therock_explicit_finders.cmake
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
rocPRIM
therock-googletest
RUNTIME_DEPS
hip-clr
rocBLAS
rocSPARSE
rocRAND
)
therock_cmake_subproject_glob_c_sources(rocALUTION
SUBDIRS
.
)
therock_cmake_subproject_provide_package(rocALUTION rocalution lib/cmake/rocalution)
therock_cmake_subproject_activate(rocALUTION)
therock_provide_artifact(rocalution
DESCRIPTOR artifact-rocalution.toml
COMPONENTS
dbg
dev
lib
test
SUBPROJECT_DEPS
rocALUTION
)
endif(THEROCK_ENABLE_ROCALUTION)
if(THEROCK_ENABLE_LIBHIPCXX)
##############################################################################
# libhipcxx
##############################################################################
set(libhipcxx_runtime_deps)
if(NOT WIN32)
# Required on Linux.
list(APPEND libhipcxx_runtime_deps amdsmi)
endif()
therock_cmake_subproject_declare(libhipcxx
# TODO: use this in case libhipcx is moved to e.g. rocm-libraries
#EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/libhipcxx"
EXTERNAL_SOURCE_DIR "${THEROCK_SOURCE_DIR}/math-libs/libhipcxx"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/libhipcxx"
BACKGROUND_BUILD
DEFAULT_GPU_TARGETS
gfx942 # Fixes issue with empty target list for unsupported architectures.
CMAKE_ARGS
-DLIBHIPCXX_COPY_TO_BUILD=ON
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON # Needed for Ninja build?
-DCMAKE_CXX_STANDARD=17
CMAKE_INCLUDES
therock_explicit_finders.cmake
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
RUNTIME_DEPS
amd-llvm
hip-clr
${libhipcxx_runtime_deps}
TEST_SUBPROJECTS
)
therock_cmake_subproject_glob_c_sources(libhipcxx
SUBDIRS
.
)
therock_cmake_subproject_require_host_program(libhipcxx lit)
therock_cmake_subproject_provide_package(libhipcxx libhipcxx lib/cmake/libhipcxx)
therock_cmake_subproject_activate(libhipcxx)
therock_provide_artifact(libhipcxx
DESCRIPTOR artifact-libhipcxx.toml
COMPONENTS
dbg
dev
lib
test
SUBPROJECT_DEPS
libhipcxx
)
endif(THEROCK_ENABLE_LIBHIPCXX)
# Most libraries need to depend on the profiler, but is conditionally only used
# on Posix.
set(optional_profiler_deps)
if(THEROCK_FLAG_INCLUDE_PROFILER)
list(APPEND optional_profiler_deps roctracer rocprofiler-sdk)
endif()
# composable_kernel only supports a subset of gfx targets (per its own
# rocm_check_target_ids allowlist). The per-arch EXCLUDE_TARGET_PROJECTS
# mechanism in cmake/therock_amdgpu_targets.cmake removes unsupported arches
# from the CK subproject's GPU_TARGETS at activate time. If no targets remain
# after that filter (e.g. a single-arch shard for a CK-unsupported arch),
# declaring CK with an empty GPU_TARGETS list breaks CK's own HIP try-compile
# with "HIP_ARCHITECTURES is empty", so flip the global gate off here and let
# MIOpen build with MIOPEN_USE_COMPOSABLEKERNEL=OFF.
# See https://github.com/ROCm/TheRock/issues/4836
set(_ck_enabled ${THEROCK_ENABLE_COMPOSABLE_KERNEL})
if(_ck_enabled)
therock_filter_amdgpu_targets(_ck_targets composable_kernel ${THEROCK_AMDGPU_TARGETS})
if(NOT _ck_targets)
message(STATUS
"composable_kernel: no supported gfx targets remain after filtering "
"(THEROCK_AMDGPU_TARGETS='${THEROCK_AMDGPU_TARGETS}'); skipping subproject.")
set(_ck_enabled OFF)
endif()
endif()
# composable_kernel now lives in math-libs but MIOpen (in ml-libs) gates its CK
# usage on _ck_enabled. math-libs is configured before ml-libs, so push the
# resolved value to the parent scope where ml-libs will inherit it.
set(_ck_enabled ${_ck_enabled} PARENT_SCOPE)
if(_ck_enabled)
##############################################################################
# Composable_kernel
##############################################################################
therock_cmake_subproject_declare(composable_kernel
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/composablekernel"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/composable_kernel"
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
"-DBUILD_TESTING=${THEROCK_BUILD_TESTING}"
-DMIOPEN_REQ_LIBS_ONLY=ON
"-DHIPTENSOR_REQ_LIBS_ONLY=$<NOT:$<BOOL:${THEROCK_COMPOSABLE_KERNEL_FOR_MIOPEN_ONLY}>>"
CMAKE_INCLUDES
therock_explicit_finders.cmake
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
RUNTIME_DEPS
hip-clr
rocm-half
rocRAND
${THEROCK_BUNDLED_BZIP2}
${optional_profiler_deps}
)
therock_cmake_subproject_provide_package(composable_kernel composable_kernel lib/cmake/composable_kernel)
therock_cmake_subproject_activate(composable_kernel)
therock_provide_artifact(composable-kernel
DESCRIPTOR artifact-composable-kernel.toml
COMPONENTS
dbg
dev
doc
lib
SUBPROJECT_DEPS
composable_kernel
)
endif()
if(_ck_enabled AND THEROCK_ENABLE_HIPTENSOR)
##############################################################################
# hipTensor
##############################################################################
therock_cmake_subproject_declare(hipTensor
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/hiptensor"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/hipTensor"
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
"-DHIPTENSOR_BUILD_TESTS=$<BOOL:${THEROCK_BUILD_TESTING}>"
-DHIPTENSOR_USE_SYSTEM_GOOGLETEST=ON # Use therock-googletest
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON # Needed for Ninja build
CMAKE_INCLUDES
therock_explicit_finders.cmake
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
therock-googletest
composable_kernel
RUNTIME_DEPS
hip-clr
)
therock_cmake_subproject_glob_c_sources(hipTensor
SUBDIRS
.
)
therock_cmake_subproject_provide_package(hipTensor hiptensor lib/cmake/hiptensor)
therock_cmake_subproject_activate(hipTensor)
therock_provide_artifact(hiptensor
DESCRIPTOR artifact-hiptensor.toml
COMPONENTS
dbg
dev
lib
test
SUBPROJECT_DEPS
hipTensor
)
endif()
if(THEROCK_ENABLE_HIPTHREADS)
##############################################################################
# hipthreads
##############################################################################
therock_cmake_subproject_declare(hipthreads
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_LIBRARIES_SOURCE_DIR}/projects/hipthreads"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/hipthreads"
BACKGROUND_BUILD
# libhipthreads.a is a static archive of device bitcode that is identical
# regardless of which per-arch shard builds it. Build all test targets once
# and publish a single target-neutral (_generic) artifact (see TARGET_NEUTRAL
# on therock_provide_artifact below) so per-arch CI upload races are harmless.
USE_TEST_AMDGPU_TARGETS
CMAKE_ARGS
-DHIPTHREADS_COPY_TO_BUILD=ON
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON
-DCMAKE_CXX_STANDARD=17
# hipThreads compiles with -Werror plus strict warnings (-Wshadow,
# -Wold-style-cast, ...). The HIP runtime headers are included with -I
# (not -isystem) and trip those warnings, so disable -Werror here.
-DDISABLE_WERROR=ON
CMAKE_INCLUDES
therock_explicit_finders.cmake
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
libhipcxx
RUNTIME_DEPS
hip-clr
hipcc
)
therock_cmake_subproject_glob_c_sources(hipthreads
SUBDIRS
.
)
therock_cmake_subproject_require_host_program(hipthreads lit)
therock_cmake_subproject_activate(hipthreads)
therock_provide_artifact(hipthreads
TARGET_NEUTRAL
DESCRIPTOR artifact-hipthreads.toml
COMPONENTS
dev
test
SUBPROJECT_DEPS
hipthreads
)
endif(THEROCK_ENABLE_HIPTHREADS)