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
167 lines
5.3 KiB
CMake
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}
|
|
)
|