our_knp/altai-objects/CMakeLists.txt

33 lines
2.1 KiB
CMake

cmake_minimum_required(VERSION 3.25)
foreach(app altai_infer altai_objects bench_conv)
add_executable(${app} ${app}.cpp)
target_compile_features(${app} PRIVATE cxx_std_17)
target_link_libraries(${app} PRIVATE KNP::BaseFramework::Core)
endforeach()
option(KNP_BUILD_ALTAI_CUDA "Build restricted AltAI/Delta CUDA inference backend using NVRTC" OFF)
if(KNP_BUILD_ALTAI_CUDA)
file(GLOB cuda_python_roots "$ENV{HOME}/anvenv/lib/python*/site-packages/nvidia")
list(GET cuda_python_roots 0 cuda_python_default)
set(KNP_CUDA_PYTHON_ROOT "${cuda_python_default}" CACHE PATH "NVIDIA CUDA Python package root")
find_path(KNP_CUDA_INCLUDE cuda.h HINTS "${KNP_CUDA_PYTHON_ROOT}/cuda_runtime/include" REQUIRED)
find_path(KNP_NVRTC_INCLUDE nvrtc.h HINTS "${KNP_CUDA_PYTHON_ROOT}/cuda_nvrtc/include" REQUIRED)
find_file(KNP_NVRTC_LIBRARY NAMES libnvrtc.so.12 libnvrtc.so HINTS "${KNP_CUDA_PYTHON_ROOT}/cuda_nvrtc/lib" REQUIRED)
find_library(KNP_DRIVER_LIBRARY NAMES cuda REQUIRED)
add_library(knp-altai-cuda-backend SHARED gpu/altai_cuda_backend.cpp)
target_compile_features(knp-altai-cuda-backend PRIVATE cxx_std_17)
target_include_directories(knp-altai-cuda-backend PRIVATE ${KNP_CUDA_INCLUDE} ${KNP_NVRTC_INCLUDE})
target_link_libraries(knp-altai-cuda-backend PRIVATE KNP::Backends::CPUSingleThreaded ${KNP_NVRTC_LIBRARY} ${KNP_DRIVER_LIBRARY})
set_target_properties(knp-altai-cuda-backend PROPERTIES BUILD_RPATH "${KNP_CUDA_PYTHON_ROOT}/cuda_nvrtc/lib;${CMAKE_BINARY_DIR}/bin")
add_executable(altai_cuda_probe gpu/cuda_probe.cpp)
target_compile_features(altai_cuda_probe PRIVATE cxx_std_17)
target_include_directories(altai_cuda_probe PRIVATE ${KNP_CUDA_INCLUDE} ${KNP_NVRTC_INCLUDE})
target_link_libraries(altai_cuda_probe PRIVATE ${KNP_NVRTC_LIBRARY} ${KNP_DRIVER_LIBRARY})
set_target_properties(altai_cuda_probe PROPERTIES BUILD_RPATH "${KNP_CUDA_PYTHON_ROOT}/cuda_nvrtc/lib")
endif()
if(KNP_BUILD_ALTAI_CUDA)
add_executable(altai_cuda_parity gpu/cuda_parity.cpp)
target_compile_features(altai_cuda_parity PRIVATE cxx_std_17)
target_link_libraries(altai_cuda_parity PRIVATE KNP::BaseFramework::Core)
endif()