Files
TheRock/examples/cpp-sdk-user/CMakeLists.txt
T
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

174 lines
6.0 KiB
CMake

# Copyright Advanced Micro Devices, Inc.
# SPDX-License-Identifier: MIT
# Build with:
# cmake -GNinja -S. -Bbuild -DCMAKE_PREFIX_PATH=path/to/rocm
if ("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
message(FATAL_ERROR "In-source builds are not allowed. Please create a separate build directory.")
endif()
cmake_minimum_required(VERSION 3.25)
project(rocm-cpp-sdk-user LANGUAGES CXX HIP)
enable_testing()
set(CMAKE_CXX_STANDARD 17)
include(CMakeDependentOption)
# If defining a new option, ensure it is in the outer CMakeLists.txt and
# the clean_configure_test_project.cmake to ensure it is passed from the
# parent when testing.
option(THEROCK_ENABLE_BLAS "Whether hipblas/hipblaslt/rocblas are available" ON)
option(THEROCK_ENABLE_FFT "Whether the FFT libraries are available" ON)
option(THEROCK_ENABLE_HIP "Whether the HIP runtime and compiler are available" ON)
option(THEROCK_ENABLE_HIPDNN "Whether hipDNN is available" ON)
option(THEROCK_ENABLE_HIPTENSOR "Whether hipTensor is available" ON)
option(THEROCK_ENABLE_MIOPEN "Whether MIOpen is available" ON)
option(THEROCK_ENABLE_PRIM "Whether rocprim is available" ON)
option(THEROCK_ENABLE_RAND "Whether rocrand/hiprand are available" ON)
option(THEROCK_ENABLE_RCCL "Whether rccl is available" ON)
option(THEROCK_ENABLE_ROCWMMA "Whether rocwmma is available" ON)
option(THEROCK_ENABLE_ROCALUTION "Whether rocalution is available" ON)
option(THEROCK_ENABLE_LIBHIPCXX "Whether libhipcxx is available" ON)
option(THEROCK_ENABLE_SOLVER "Whether rocsolver/hipsolver are available" ON)
option(THEROCK_ENABLE_SPARSE "Whether rocsparse/hipsparse/hipsparselt are available" ON)
option(ENABLE_DEVICE_TEST "Whether to enable testing that requires a device" OFF)
set(TEST_PATH)
if(WIN32)
# On Windows, when not installed as a global assembly, the ROCM bin dir
# must be on the PATH in order to find DLLs.
set(TEST_PATH "${CMAKE_HIP_COMPILER_ROCM_ROOT}/bin")
string(APPEND TEST_PATH ";")
string(APPEND TEST_PATH "$ENV{PATH}")
message(STATUS "Using test path: ${TEST_PATH}")
endif()
if(THEROCK_ENABLE_HIP)
# TODO: Don't require HIP_PLATFORM https://github.com/ROCm/TheRock/issues/68
set(HIP_PLATFORM "amd")
find_package(hip CONFIG REQUIRED)
message(STATUS "**** HIP Configuration:")
message(STATUS " VERSION: ${hip_VERSION}")
message(STATUS " INCLUDE: ${hip_INCLUDE_DIRS}")
message(STATUS " LIBRARIES: ${hip_LIBRARIES}")
message(STATUS " GPU_TARGETS: ${GPU_TARGETS}")
endif()
if(THEROCK_ENABLE_RAND)
find_package(hiprand CONFIG REQUIRED)
find_package(rocrand CONFIG REQUIRED)
message(STATUS "hiprand version: ${hiprand_VERSION}")
message(STATUS "rocrand version: ${rocrand_VERSION}")
endif()
if(THEROCK_ENABLE_SPARSE)
find_package(hipsparselt CONFIG REQUIRED)
find_package(hipsparse CONFIG REQUIRED)
find_package(rocsparse CONFIG REQUIRED)
message(STATUS "hipsparselt version: ${hipsparselt_VERSION}")
message(STATUS "hipsparse version: ${hipsparse_VERSION}")
message(STATUS "rocsparse version: ${rocsparse_VERSION}")
endif()
if(THEROCK_ENABLE_PRIM)
find_package(rocprim CONFIG REQUIRED)
find_package(rocthrust CONFIG REQUIRED)
find_package(hipcub CONFIG REQUIRED)
message(STATUS "rocprim version: ${rocprim_VERSION}")
message(STATUS "rocthrust version: ${rocthrust_VERSION}")
message(STATUS "hipcub version: ${hipcub_VERSION}")
endif()
if(THEROCK_ENABLE_SOLVER)
find_package(hipsolver CONFIG REQUIRED)
find_package(rocsolver CONFIG REQUIRED)
message(STATUS "hipsolver version: ${hipsolver_VERSION}")
message(STATUS "rocsolver version: ${rocsolver_VERSION}")
endif()
if(THEROCK_ENABLE_RCCL)
find_package(rccl CONFIG REQUIRED)
message(STATUS "rccl version: ${rccl_VERSION}")
endif()
if(THEROCK_ENABLE_BLAS)
find_package(hipblaslt CONFIG REQUIRED)
find_package(hipblas CONFIG REQUIRED)
find_package(rocblas CONFIG REQUIRED)
message(STATUS "hipblaslt version: ${hipblaslt_VERSION}")
message(STATUS "hipblas version: ${hipblas_VERSION}")
message(STATUS "rocblas version: ${rocblas_VERSION}")
endif()
if(THEROCK_ENABLE_MIOPEN)
find_package(miopen CONFIG REQUIRED)
message(STATUS "miopen version: ${miopen_VERSION}")
endif()
if(THEROCK_ENABLE_FFT)
find_package(hipfft CONFIG REQUIRED)
find_package(rocfft CONFIG REQUIRED)
message(STATUS "hipfft version: ${hipfft_VERSION}")
message(STATUS "rocfft version: ${rocfft_VERSION}")
endif()
if(THEROCK_ENABLE_HIP)
add_executable(
hip-host-test
hip-host-test.cpp
)
target_link_libraries(hip-host-test PRIVATE hip::host)
set(_DEVICE_ORDINAL)
if(ENABLE_DEVICE_TEST)
set(_DEVICE_ORDINAL 0)
endif()
add_test(NAME hip-host-test
COMMAND hip-host-test ${_DEVICE_ORDINAL}
)
if(TEST_PATH)
set_tests_properties(
hip-host-test
PROPERTIES ENVIRONMENT "PATH=${TEST_PATH}"
)
endif()
add_executable(sample_kernel sample_kernel.hip)
set_source_files_properties(sample_kernel PROPERTIES LANGUAGE HIP)
if(ENABLE_DEVICE_TEST)
add_test(NAME sample-kernel-test COMMAND sample_kernel)
if(TEST_PATH)
set_tests_properties(
sample-kernel-test
PROPERTIES ENVIRONMENT "PATH=${TEST_PATH}"
)
endif()
endif()
endif()
if(THEROCK_ENABLE_HIPDNN)
find_package(hipdnn_backend CONFIG REQUIRED)
message(STATUS "hipdnn version: ${hipdnn_VERSION}")
endif()
if(THEROCK_ENABLE_ROCWMMA)
find_package(rocWMMA CONFIG REQUIRED)
message(STATUS "rocWMMA version: ${rocWMMA_VERSION}")
endif()
if(THEROCK_ENABLE_HIPTENSOR)
find_package(hiptensor CONFIG REQUIRED)
message(STATUS "hipTensor version: ${hiptensor_VERSION}")
endif()
if(THEROCK_ENABLE_ROCALUTION)
find_package(rocalution CONFIG REQUIRED)
message(STATUS "rocALUTION version: ${rocalution_VERSION}")
endif()
if(THEROCK_ENABLE_LIBHIPCXX)
find_package(libhipcxx CONFIG REQUIRED)
message(STATUS "libhipcxx version: ${libhipcxx_VERSION}")
endif()