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

205 lines
6.3 KiB
CMake

# Copyright Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT
if(THEROCK_ENABLE_RCCL)
# 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()
# RCCL can optionally use amdsmi/rocm_smi_lib on Linux, but those may not be
# enabled/declared depending on feature selection.
set(_rccl_optional_runtime_deps)
if(NOT WIN32)
if(TARGET amdsmi)
list(APPEND _rccl_optional_runtime_deps amdsmi)
endif()
if(TARGET rocm_smi_lib)
list(APPEND _rccl_optional_runtime_deps rocm_smi_lib)
endif()
endif()
##############################################################################
# rccl
##############################################################################
set(_rccl_subproject_names)
therock_cmake_subproject_declare(rccl
# Build all GPU targets in a single target-neutral artifact as long as the
# host code isn't fully target agnostic.
USE_TEST_AMDGPU_TARGETS
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_SYSTEMS_SOURCE_DIR}/projects/rccl"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/rccl"
# High latency LTO link of a single library.
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
"-DEXPLICIT_ROCM_VERSION=${ROCM_MAJOR_VERSION}.${ROCM_MINOR_VERSION}.${ROCM_PATCH_VERSION}"
# TODO(#56): Enable once reworked.
-DENABLE_MSCCLPP=OFF
-DENABLE_MSCCL_KERNEL=OFF
-DBUILD_TESTS=${THEROCK_BUILD_TESTING}
CMAKE_INCLUDES
therock_explicit_finders.cmake
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
therock-fmt
therock-googletest
RUNTIME_DEPS
hip-clr
hipify
rocprofiler-register
${_rccl_optional_runtime_deps}
${optional_profiler_deps}
)
therock_cmake_subproject_glob_c_sources(rccl
SUBDIRS
src
)
therock_cmake_subproject_provide_package(rccl RCCL lib/cmake/rccl)
therock_cmake_subproject_activate(rccl)
list(APPEND _rccl_subproject_names rccl)
if(THEROCK_BUILD_TESTING)
set(_rccl_tests_optional_deps)
if(THEROCK_ENABLE_MPI)
set(_rccl_tests_optional_deps "therock-openmpi")
endif()
therock_cmake_subproject_declare(rccl-tests
USE_TEST_AMDGPU_TARGETS
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_SYSTEMS_SOURCE_DIR}/projects/rccl-tests"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/rccl-tests"
BACKGROUND_BUILD
CMAKE_ARGS
-DHIP_PLATFORM=amd
-DROCM_PATH=
# -DROCM_DIR=
"-DEXPLICIT_ROCM_VERSION=${ROCM_MAJOR_VERSION}.${ROCM_MINOR_VERSION}.${ROCM_PATCH_VERSION}"
-DUSE_MPI=${THEROCK_ENABLE_MPI}
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
RUNTIME_DEPS
hip-clr
hipify
rccl
${_rccl_tests_optional_deps}
)
therock_cmake_subproject_glob_c_sources(rccl-tests
SUBDIRS
src
)
therock_cmake_subproject_activate(rccl-tests)
list(APPEND _rccl_subproject_names rccl-tests)
endif(THEROCK_BUILD_TESTING)
therock_provide_artifact(rccl
TARGET_NEUTRAL
DESCRIPTOR artifact-rccl.toml
COMPONENTS
dbg
dev
doc
lib
run
test
SUBPROJECT_DEPS
${_rccl_subproject_names}
)
endif()
if(THEROCK_ENABLE_ROCSHMEM)
##############################################################################
# rocSHMEM
##############################################################################
set(_rocshmem_subproject_names)
# amdsmi is optional: only available on Linux and when explicitly enabled.
set(_rocshmem_optional_runtime_deps)
if(NOT WIN32)
if(TARGET amdsmi)
list(APPEND _rocshmem_optional_runtime_deps amdsmi)
endif()
endif()
therock_cmake_subproject_declare(rocshmem
# rocshmem uses .hip_fatbin/.hip_gpubin_* ELF sections for device code
# instead of .hipFatBinSegment, making it incompatible with kpack injection.
# Build all GPU targets in a single target-neutral artifact as a workaround.
USE_TEST_AMDGPU_TARGETS
EXTERNAL_SOURCE_DIR "${THEROCK_ROCM_SYSTEMS_SOURCE_DIR}/projects/rocshmem"
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/rocshmem"
# High latency LTO link of a single library.
BACKGROUND_BUILD
CMAKE_ARGS
-DCMAKE_VERBOSE_MAKEFILE=OFF
-DUSE_RO=ON
-DUSE_IPC=ON
-DUSE_GDA=ON
-DGDA_MLX5=ON
-DGDA_BNXT=ON
-DGDA_IONIC=ON
# When using MPI (e.g. for bootsrapping or using RO) it only works with Open MPI and is
# incompatible with MPICH, Intel MPI, or MVAPICH.
# The loading mechanisms for using MPI is using dlopen() at run-time. It only support
# Open MPI 5.x.x and 4.1.x symbols.
# There is no compile time dependency to MPI.
-DUSE_EXTERNAL_MPI=OFF
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DHIP_PLATFORM=amd
-DROCM_PATH=
-DROCM_DIR=
"-DEXPLICIT_ROCM_VERSION=${ROCM_MAJOR_VERSION}.${ROCM_MINOR_VERSION}.${ROCM_PATCH_VERSION}"
-DBUILD_FUNCTIONAL_TESTS=${THEROCK_BUILD_TESTING}
-DBUILD_UNIT_TESTS=${THEROCK_BUILD_TESTING}
# Register functional/unit tests with CTest and install the relocatable
# bin/rocshmem/**/CTestTestfile.cmake files (with quick/standard/
# comprehensive/full tier labels) that test_runner.py drives via ctest.
-DBUILD_CTESTS=${THEROCK_BUILD_TESTING}
-DSOURCE_DIR=${_source_dir}
-DPATCHELF=${PATCHELF}
-DPython3_EXECUTABLE=${Python3_EXECUTABLE}
CMAKE_INCLUDES
therock_explicit_finders.cmake
COMPILER_TOOLCHAIN
amd-hip
BUILD_DEPS
rocm-cmake
therock-fmt
therock-googletest
RUNTIME_DEPS
hip-clr
${THEROCK_BUNDLED_NUMACTL}
${_rocshmem_optional_runtime_deps}
)
therock_cmake_subproject_glob_c_sources(rocshmem
SUBDIRS
src
)
therock_cmake_subproject_provide_package(rocshmem ROCSHMEM lib/cmake/rocshmem)
therock_cmake_subproject_activate(rocshmem)
list(APPEND _rocshmem_subproject_names rocshmem)
therock_provide_artifact(rocshmem
TARGET_NEUTRAL
DESCRIPTOR artifact-rocshmem.toml
COMPONENTS
dbg
dev
doc
lib
run
test
SUBPROJECT_DEPS
${_rocshmem_subproject_names}
)
endif(THEROCK_ENABLE_ROCSHMEM)