diff --git a/examples/cmake/FindCUDA.cmake b/examples/cmake/FindCUDA.cmake new file mode 100644 index 000000000..92ef5c830 --- /dev/null +++ b/examples/cmake/FindCUDA.cmake @@ -0,0 +1,35 @@ +# Copyright (C) 2024 Intel Corporation +# Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT. +# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception + +message(STATUS "Checking for module 'cuda' using find_library()") + +find_library(CUDA_LIBRARY NAMES libcuda cuda) +set(CUDA_LIBRARIES ${CUDA_LIBRARY}) + +get_filename_component(CUDA_LIB_DIR ${CUDA_LIBRARIES} DIRECTORY) +set(CUDA_LIBRARY_DIRS ${CUDA_LIB_DIR}) + +if(WINDOWS) + find_file(CUDA_DLL NAMES "bin/cuda.dll" "cuda.dll") + get_filename_component(CUDA_DLL_DIR ${CUDA_DLL} DIRECTORY) + set(CUDA_DLL_DIRS ${CUDA_DLL_DIR}) +endif() + +if(CUDA_LIBRARY) + message(STATUS " Found cuda using find_library()") + message(STATUS " CUDA_LIBRARIES = ${CUDA_LIBRARIES}") + message(STATUS " CUDA_INCLUDE_DIRS = ${CUDA_INCLUDE_DIRS}") + message(STATUS " CUDA_LIBRARY_DIRS = ${CUDA_LIBRARY_DIRS}") + if(WINDOWS) + message(STATUS " CUDA_DLL_DIRS = ${CUDA_DLL_DIRS}") + endif() +else() + set(MSG_NOT_FOUND "cuda NOT found (set CMAKE_PREFIX_PATH to point the " + "location)") + if(CUDA_FIND_REQUIRED) + message(FATAL_ERROR ${MSG_NOT_FOUND}) + else() + message(WARNING ${MSG_NOT_FOUND}) + endif() +endif() diff --git a/examples/cuda_shared_memory/CMakeLists.txt b/examples/cuda_shared_memory/CMakeLists.txt index a30621887..8a5300910 100644 --- a/examples/cuda_shared_memory/CMakeLists.txt +++ b/examples/cuda_shared_memory/CMakeLists.txt @@ -21,6 +21,8 @@ if(NOT LIBHWLOC_FOUND) find_package(LIBHWLOC 2.3.0 REQUIRED hwloc) endif() +find_package(CUDA REQUIRED cuda) + include(FetchContent) set(CUDA_REPO "https://gitlab.com/nvidia/headers/cuda-individual/cudart.git") @@ -43,17 +45,23 @@ set(CUDA_INCLUDE_DIRS ${cuda-headers_SOURCE_DIR} CACHE PATH "Path to CUDA headers") message(STATUS "CUDA include directory: ${CUDA_INCLUDE_DIRS}") + # build the example set(EXAMPLE_NAME umf_example_cuda_shared_memory) add_executable(${EXAMPLE_NAME} cuda_shared_memory.c) target_include_directories( ${EXAMPLE_NAME} PRIVATE ${CUDA_INCLUDE_DIRS} ${LIBUMF_INCLUDE_DIRS} ${UMF_EXAMPLE_DIR}/common) -target_link_directories(${EXAMPLE_NAME} PRIVATE ${LIBUMF_LIBRARY_DIRS} - ${LIBHWLOC_LIBRARY_DIRS}) +target_link_directories( + ${EXAMPLE_NAME} + PRIVATE + ${LIBUMF_LIBRARY_DIRS} + ${LIBHWLOC_LIBRARY_DIRS} + ${CUDA_LIBRARY_DIRS}) target_link_options(${EXAMPLE_NAME} PRIVATE "-Wl,--start-group") -target_link_libraries(${EXAMPLE_NAME} PRIVATE stdc++ libdisjoint_pool.a cuda - ${LIBUMF_LIBRARIES}) +target_link_libraries( + ${EXAMPLE_NAME} PRIVATE stdc++ libdisjoint_pool.a ${CUDA_LIBRARIES} + ${LIBUMF_LIBRARIES}) # an optional part - adds a test of this example add_test(