Files
TheRock/rocm-libraries/shared/origami/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

167 lines
5.3 KiB
CMake

# Copyright Advanced Micro Devices, Inc., or its affiliates.
# SPDX-License-Identifier: MIT
cmake_minimum_required(VERSION 3.25.2)
project(Origami VERSION 1.0.0 LANGUAGES CXX)
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
set(ORIGAMI_STANDALONE ON)
else()
set(ORIGAMI_STANDALONE OFF)
endif()
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
# Set cpack license file here to avoid rocm-cmake warning
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md")
include(dependencies)
rocm_setup_version(VERSION ${PROJECT_VERSION})
option(ORIGAMI_BUILD_SHARED_LIBS "Build shared libraries." ${ORIGAMI_STANDALONE})
option(ORIGAMI_ENABLE_PYTHON "Enable Python bindings." OFF)
option(ORIGAMI_BUILD_TESTING "Build tests." OFF)
option(ORIGAMI_ENABLE_FETCH "Auto-fetch dependencies with FetchContent" ON)
find_package(hip REQUIRED)
if(ORIGAMI_BUILD_SHARED_LIBS OR (BUILD_SHARED_LIBS AND ORIGAMI_STANDALONE))
set(ORIGAMI_LIBRARY_TYPE SHARED)
else()
set(ORIGAMI_LIBRARY_TYPE STATIC)
endif()
add_library(origami ${ORIGAMI_LIBRARY_TYPE})
rocm_set_soversion(origami "${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}")
add_library(roc::origami ALIAS origami)
set_target_properties(origami PROPERTIES
POSITION_INDEPENDENT_CODE ON
CXX_VISIBILITY_PRESET hidden
VISIBILITY_INLINES_HIDDEN ON
)
target_compile_features(origami PUBLIC cxx_std_17)
include(GenerateExportHeader)
generate_export_header(origami
BASE_NAME ORIGAMI
EXPORT_MACRO_NAME ORIGAMI_EXPORT
EXPORT_FILE_NAME "${PROJECT_BINARY_DIR}/include/origami/origami_export.h"
STATIC_DEFINE ORIGAMI_STATIC
)
if(ORIGAMI_LIBRARY_TYPE STREQUAL "STATIC")
target_compile_definitions(origami PUBLIC ORIGAMI_STATIC)
endif()
add_library(origami-headers INTERFACE)
add_library(roc::origami-headers ALIAS origami-headers)
target_compile_features(origami-headers INTERFACE cxx_std_17)
target_sources(origami-headers
INTERFACE
FILE_SET HEADERS
BASE_DIRS
"${CMAKE_CURRENT_SOURCE_DIR}/include"
"${PROJECT_BINARY_DIR}/include"
FILES
"${CMAKE_CURRENT_SOURCE_DIR}/include/origami/attention.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/origami/gemm.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/origami/hardware.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/origami/heuristics.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/origami/logger.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/origami/math.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/origami/origami.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/origami/streamk.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/origami/types.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/origami/simulator/tensilelite/formocast.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/origami/simulator/tensilelite/formocast_simulator.hpp"
"${PROJECT_BINARY_DIR}/include/origami/origami_export.h"
)
target_include_directories(
origami-headers INTERFACE $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
target_link_libraries(origami-headers INTERFACE hip::host)
set_target_properties(origami-headers PROPERTIES VERIFY_INTERFACE_HEADER_SETS ON)
target_link_libraries(origami PUBLIC roc::origami-headers)
add_dependencies(origami origami-headers_verify_interface_header_sets)
target_sources(
origami
PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/src/origami/attention.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/origami/gemm.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/origami/hardware.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/origami/heuristics.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/origami/logger.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/origami/origami.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/origami/streamk.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/origami/types.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/simulator/tensilelite/formocast_simulator.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/src/simulator/tensilelite/formocast.cpp"
)
target_link_libraries(origami PRIVATE hip::host)
if(ORIGAMI_ENABLE_PYTHON)
add_subdirectory(python)
endif()
if(ORIGAMI_BUILD_TESTING OR BUILD_TESTING)
enable_testing()
add_subdirectory(tests)
endif()
rocm_install(TARGETS origami)
install(TARGETS origami-headers
EXPORT origami-targets
FILE_SET HEADERS
DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}"
COMPONENT devel
)
rocm_export_targets(
TARGETS
roc::origami
roc::origami-headers
DEPENDS
PACKAGE
hip
NAMESPACE
roc::
)
if(ORIGAMI_BUILD_TESTING OR BUILD_TESTING)
rocm_install(TARGETS origami-tests COMPONENT tests)
endif()
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/origami-config.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/origami-config.cmake" @ONLY
)
rocm_install(
FILES "${CMAKE_CURRENT_BINARY_DIR}/origami-config.cmake" DESTINATION
"${CMAKE_INSTALL_LIBDIR}/cmake/origami" COMPONENT devel
)
set(BUILD_SHARED_LIBS ${ORIGAMI_BUILD_SHARED_LIBS})
set(ORIGAMI_CONFIG_DIR "\${CPACK_PACKAGING_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}"
CACHE PATH "Path placed into ldconfig file"
)
rocm_create_package(
NAME origami
DESCRIPTION "Origami: Analytical Solution Selection for GEMM"
MAINTAINER "Origami Maintainer <origami-maintainer@amd.com>"
LDCONFIG
LDCONFIG_DIR ${ORIGAMI_CONFIG_DIR}
)