From 7bc9eba36116b6b6445001ed93a3baa18e81a0ef Mon Sep 17 00:00:00 2001 From: "Vinogradov, Sergei" Date: Tue, 5 Nov 2024 23:31:23 +0100 Subject: [PATCH 1/2] Fix issue with the UMF_LEVEL_ZERO_INCLUDE_DIR --- CMakeLists.txt | 58 ++++++++++++++++++++++++++++++++++++++++++++++ src/CMakeLists.txt | 58 ---------------------------------------------- 2 files changed, 58 insertions(+), 58 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 927dee47a9..e3bdcc8e2a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -218,6 +218,64 @@ if(hwloc_targ_SOURCE_DIR) endif() endif() +# Fetch L0 loader only if needed i.e.: if building L0 provider is ON and L0 +# headers are not provided by the user (via setting UMF_LEVEL_ZERO_INCLUDE_DIR). +if(UMF_BUILD_LEVEL_ZERO_PROVIDER AND (NOT UMF_LEVEL_ZERO_INCLUDE_DIR)) + include(FetchContent) + + set(LEVEL_ZERO_LOADER_REPO "https://github.com/oneapi-src/level-zero.git") + set(LEVEL_ZERO_LOADER_TAG v1.17.39) + + message( + STATUS + "Fetching L0 loader (${LEVEL_ZERO_LOADER_TAG}) from ${LEVEL_ZERO_LOADER_REPO} ..." + ) + + FetchContent_Declare( + level-zero-loader + GIT_REPOSITORY ${LEVEL_ZERO_LOADER_REPO} + GIT_TAG ${LEVEL_ZERO_LOADER_TAG} + EXCLUDE_FROM_ALL) + FetchContent_MakeAvailable(level-zero-loader) + + set(LEVEL_ZERO_INCLUDE_DIRS + ${level-zero-loader_SOURCE_DIR}/include + CACHE PATH "Path to Level Zero Headers") + message(STATUS "Level Zero include directory: ${LEVEL_ZERO_INCLUDE_DIRS}") +elseif(UMF_BUILD_LEVEL_ZERO_PROVIDER) + # Only header is needed to build UMF + set(LEVEL_ZERO_INCLUDE_DIRS ${UMF_LEVEL_ZERO_INCLUDE_DIR}) + message(STATUS "Level Zero include directory: ${LEVEL_ZERO_INCLUDE_DIRS}") +endif() + +# Fetch CUDA only if needed i.e.: if building CUDA provider is ON and CUDA +# headers are not provided by the user (via setting UMF_CUDA_INCLUDE_DIR). +if(UMF_BUILD_CUDA_PROVIDER AND (NOT UMF_CUDA_INCLUDE_DIR)) + include(FetchContent) + + set(CUDA_REPO + "https://gitlab.com/nvidia/headers/cuda-individual/cudart.git") + set(CUDA_TAG cuda-12.5.1) + + message(STATUS "Fetching CUDA ${CUDA_TAG} from ${CUDA_REPO} ...") + + FetchContent_Declare( + cuda-headers + GIT_REPOSITORY ${CUDA_REPO} + GIT_TAG ${CUDA_TAG} + EXCLUDE_FROM_ALL) + FetchContent_MakeAvailable(cuda-headers) + + set(CUDA_INCLUDE_DIRS + ${cuda-headers_SOURCE_DIR} + CACHE PATH "Path to CUDA headers") + message(STATUS "CUDA include directory: ${CUDA_INCLUDE_DIRS}") +elseif(UMF_BUILD_CUDA_PROVIDER) + # Only header is needed to build UMF + set(CUDA_INCLUDE_DIRS ${UMF_CUDA_INCLUDE_DIR}) + message(STATUS "CUDA include directory: ${CUDA_INCLUDE_DIRS}") +endif() + # This build type check is not possible on Windows when CMAKE_BUILD_TYPE is not # set, because in this case the build type is determined after a CMake # configuration is done (at the build time) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index f2d29294d5..9fabe2a08a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -16,64 +16,6 @@ set(UMF_CUDA_INCLUDE_DIR # TODO: Cleanup the compile definitions across all the CMake files set(UMF_COMMON_COMPILE_DEFINITIONS UMF_VERSION=${UMF_VERSION}) -# Fetch L0 loader only if needed i.e.: if building L0 provider is ON and L0 -# headers are not provided by the user (via setting UMF_LEVEL_ZERO_INCLUDE_DIR). -if(UMF_BUILD_LEVEL_ZERO_PROVIDER AND (NOT UMF_LEVEL_ZERO_INCLUDE_DIR)) - include(FetchContent) - - set(LEVEL_ZERO_LOADER_REPO "https://github.com/oneapi-src/level-zero.git") - set(LEVEL_ZERO_LOADER_TAG v1.17.39) - - message( - STATUS - "Fetching L0 loader (${LEVEL_ZERO_LOADER_TAG}) from ${LEVEL_ZERO_LOADER_REPO} ..." - ) - - FetchContent_Declare( - level-zero-loader - GIT_REPOSITORY ${LEVEL_ZERO_LOADER_REPO} - GIT_TAG ${LEVEL_ZERO_LOADER_TAG} - EXCLUDE_FROM_ALL) - FetchContent_MakeAvailable(level-zero-loader) - - set(LEVEL_ZERO_INCLUDE_DIRS - ${level-zero-loader_SOURCE_DIR}/include - CACHE PATH "Path to Level Zero Headers") - message(STATUS "Level Zero include directory: ${LEVEL_ZERO_INCLUDE_DIRS}") -elseif(UMF_BUILD_LEVEL_ZERO_PROVIDER) - # Only header is needed to build UMF - set(LEVEL_ZERO_INCLUDE_DIRS ${UMF_LEVEL_ZERO_INCLUDE_DIR}) - message(STATUS "Level Zero include directory: ${LEVEL_ZERO_INCLUDE_DIRS}") -endif() - -# Fetch CUDA only if needed i.e.: if building CUDA provider is ON and CUDA -# headers are not provided by the user (via setting UMF_CUDA_INCLUDE_DIR). -if(UMF_BUILD_CUDA_PROVIDER AND (NOT UMF_CUDA_INCLUDE_DIR)) - include(FetchContent) - - set(CUDA_REPO - "https://gitlab.com/nvidia/headers/cuda-individual/cudart.git") - set(CUDA_TAG cuda-12.5.1) - - message(STATUS "Fetching CUDA ${CUDA_TAG} from ${CUDA_REPO} ...") - - FetchContent_Declare( - cuda-headers - GIT_REPOSITORY ${CUDA_REPO} - GIT_TAG ${CUDA_TAG} - EXCLUDE_FROM_ALL) - FetchContent_MakeAvailable(cuda-headers) - - set(CUDA_INCLUDE_DIRS - ${cuda-headers_SOURCE_DIR} - CACHE PATH "Path to CUDA headers") - message(STATUS "CUDA include directory: ${CUDA_INCLUDE_DIRS}") -elseif(UMF_BUILD_CUDA_PROVIDER) - # Only header is needed to build UMF - set(CUDA_INCLUDE_DIRS ${UMF_CUDA_INCLUDE_DIR}) - message(STATUS "CUDA include directory: ${CUDA_INCLUDE_DIRS}") -endif() - add_subdirectory(utils) set(UMF_LIBS $) From 17d76547248fbcfb15b55ba0224d3c6bcb69eb0d Mon Sep 17 00:00:00 2001 From: "Vinogradov, Sergei" Date: Tue, 5 Nov 2024 23:31:55 +0100 Subject: [PATCH 2/2] Remove incorrect L0 test --- test/providers/provider_level_zero.cpp | 9 --------- 1 file changed, 9 deletions(-) diff --git a/test/providers/provider_level_zero.cpp b/test/providers/provider_level_zero.cpp index 9aed3ca14e..4041362f09 100644 --- a/test/providers/provider_level_zero.cpp +++ b/test/providers/provider_level_zero.cpp @@ -263,15 +263,6 @@ TEST_P(umfLevelZeroProviderTest, allocInvalidSize) { umfMemoryProviderGetLastNativeError(provider, &message, &error); ASSERT_EQ(error, ZE_RESULT_ERROR_UNSUPPORTED_SIZE); - // in case of size == 0 we should got INVALID_ARGUMENT error - // NOTE: this is invalid only for the DEVICE or SHARED allocations - if (params.memory_type != UMF_MEMORY_TYPE_HOST) { - umf_result = umfMemoryProviderAlloc(provider, 0, 0, &ptr); - ASSERT_EQ(umf_result, UMF_RESULT_ERROR_MEMORY_PROVIDER_SPECIFIC); - umfMemoryProviderGetLastNativeError(provider, &message, &error); - ASSERT_EQ(error, ZE_RESULT_ERROR_UNSUPPORTED_SIZE); - } - umfMemoryProviderDestroy(provider); }