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
174 lines
6.0 KiB
CMake
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()
|