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()