diff --git a/.cmake-format b/.cmake-format index 57ad821ef8..c1a8e85a83 100644 --- a/.cmake-format +++ b/.cmake-format @@ -9,31 +9,31 @@ with section("parse"): "pargs": 0, "flags": [], 'kwargs': { - 'NAME': '*', - 'SRCS': '*', - 'LIBS': '*' , + 'NAME': '*', + 'SRCS': '*', + 'LIBS': '*' , 'LIBDIRS': '*'}}, 'add_umf_executable': { "pargs": 0, "flags": [], 'kwargs': { - 'NAME': '*', - 'SRCS': '*', + 'NAME': '*', + 'SRCS': '*', 'LIBS': '*'}}, 'add_umf_test': { "pargs": 0, "flags": [], 'kwargs': { - 'NAME': '*', - 'SRCS': '*', + 'NAME': '*', + 'SRCS': '*', 'LIBS': '*'}}, 'add_umf_library': { "pargs": 0, "flags": [], 'kwargs': { - 'NAME': '*', - 'TYPE': '*', - 'SRCS': '*', + 'NAME': '*', + 'TYPE': '*', + 'SRCS': '*', 'LIBS': '*', 'LINUX_MAP_FILE': '*', 'WINDOWS_DEF_FILE': '*'}}, @@ -43,7 +43,20 @@ with section("parse"): 'kwargs': { 'LABELS': '*', 'PASS_REGULAR_EXPRESSION': '*'}}, - } + 'build_umf_test': { + "pargs": 0, + "flags": [], + 'kwargs': { + 'NAME': '*', + 'SRCS': '*', + 'LIBS': '*' }}, + 'add_umf_ipc_test': { + "pargs": 0, + "flags": [], + 'kwargs': { + 'TEST': '*', + 'SRC_DIR': '*'}}, + } # Override configurations per-command where available override_spec = {} diff --git a/CMakeLists.txt b/CMakeLists.txt index 70ac087991..ac7bcbf933 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -10,6 +10,10 @@ list(APPEND CMAKE_MODULE_PATH "${UMF_CMAKE_SOURCE_DIR}/cmake") # Use full path of the helpers module (to omit potential conflicts with others) include(${UMF_CMAKE_SOURCE_DIR}/cmake/helpers.cmake) +# --------------------------------------------------------------------------- # +# Set UMF version variables, define project, and add basic modules +# --------------------------------------------------------------------------- # + # We use semver aligned version, set via git tags. We parse git output to # establish the version of UMF to be used in CMake, Win dll's, and within the # code (e.g. in logger). We have 3-component releases (e.g. 1.5.1) plus release @@ -22,6 +26,12 @@ project( umf VERSION ${UMF_CMAKE_VERSION} LANGUAGES C) +if(UMF_CMAKE_VERSION VERSION_EQUAL "0.0.0") + message( + WARNING + "UMF version is set to 0.0.0, which most likely is not expected! " + "Please checkout the git tags to get a proper version.") +endif() if(PROJECT_VERSION_PATCH GREATER 0) # set extra variable for Windows dll metadata @@ -33,6 +43,10 @@ include(CMakePackageConfigHelpers) include(GNUInstallDirs) find_package(PkgConfig) +# --------------------------------------------------------------------------- # +# Set UMF build options (and CACHE variables) +# --------------------------------------------------------------------------- # + # Define a list to store the names of all options set(UMF_OPTIONS_LIST "") list(APPEND UMF_OPTIONS_LIST CMAKE_BUILD_TYPE) @@ -43,7 +57,6 @@ macro(umf_option) option(${ARGV}) endmacro() -# Build Options umf_option(UMF_BUILD_SHARED_LIBRARY "Build UMF as shared library" OFF) umf_option(UMF_BUILD_LEVEL_ZERO_PROVIDER "Build Level Zero memory provider" ON) umf_option(UMF_BUILD_CUDA_PROVIDER "Build CUDA memory provider" ON) @@ -56,9 +69,8 @@ umf_option(UMF_BUILD_GPU_TESTS "Build UMF GPU tests" OFF) umf_option(UMF_BUILD_BENCHMARKS "Build UMF benchmarks" OFF) umf_option(UMF_BUILD_BENCHMARKS_MT "Build UMF multithreaded benchmarks" OFF) umf_option(UMF_BUILD_EXAMPLES "Build UMF examples" ON) -umf_option(UMF_BUILD_FUZZTESTS "Build UMF fuzz tests" OFF) umf_option(UMF_BUILD_GPU_EXAMPLES "Build UMF GPU examples" OFF) -umf_option(UMF_DEVELOPER_MODE "Enable additional developer checks" OFF) +umf_option(UMF_BUILD_FUZZTESTS "Build UMF fuzz tests" OFF) umf_option( UMF_DISABLE_HWLOC "Disable hwloc and UMF features requiring it (OS provider, memtargets, topology discovery)" @@ -67,9 +79,6 @@ umf_option( UMF_LINK_HWLOC_STATICALLY "Link UMF with HWLOC library statically (proxy library will be disabled on Windows+Debug build)" OFF) -umf_option( - UMF_FORMAT_CODE_STYLE - "Add clang, cmake, and black -format-check and -format-apply targets" OFF) set(UMF_HWLOC_NAME "hwloc" CACHE STRING "Custom name for hwloc library w/o extension") @@ -81,6 +90,10 @@ set(UMF_INSTALL_RPATH "Set the runtime search path to the directory with dependencies (e.g. hwloc)" ) +umf_option(UMF_DEVELOPER_MODE "Enable additional developer checks" OFF) +umf_option( + UMF_FORMAT_CODE_STYLE + "Add clang, cmake, and black -format-check and -format-apply targets" OFF) # Only a part of skips is treated as a failure now. TODO: extend to all tests umf_option(UMF_TESTS_FAIL_ON_SKIP "Treat skips in tests as fail" OFF) umf_option(UMF_USE_ASAN "Enable AddressSanitizer checks" OFF) @@ -100,6 +113,11 @@ set_property(CACHE UMF_PROXY_LIB_BASED_ON_POOL PROPERTY STRINGS ${KNOWN_PROXY_LIB_POOLS}) list(APPEND UMF_OPTIONS_LIST UMF_PROXY_LIB_BASED_ON_POOL) +# --------------------------------------------------------------------------- # +# Setup required variables, definitions; fetch dependencies; include +# sub_directories based on build options; set flags; etc. +# --------------------------------------------------------------------------- # + if(UMF_BUILD_TESTS AND DEFINED ENV{CI} AND NOT UMF_TESTS_FAIL_ON_SKIP) @@ -711,7 +729,7 @@ if(UMF_FORMAT_CODE_STYLE) add_custom_target( cmake-format-apply COMMAND ${CMAKE_FORMAT} --in-place ${format_cmake_list} - COMMENT "Format Cmake files using cmake-format") + COMMENT "Format CMake files using cmake-format") endif() if(BLACK) diff --git a/benchmark/ubench.c b/benchmark/ubench.c index 845dc881db..dfd28ea1fc 100644 --- a/benchmark/ubench.c +++ b/benchmark/ubench.c @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2023-2024 Intel Corporation + * Copyright (C) 2023-2025 Intel Corporation * * Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception @@ -452,7 +452,7 @@ static int create_level_zero_params(ze_context_handle_t *context, int ret = utils_ze_init_level_zero(); if (ret != 0) { - fprintf(stderr, "Failed to init Level 0!\n"); + fprintf(stderr, "Failed to init Level Zero!\n"); return ret; } diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 986ad56412..5911a073fa 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,4 +1,4 @@ -# Copyright (C) 2024 Intel Corporation +# Copyright (C) 2024-2025 Intel Corporation # Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception @@ -154,7 +154,7 @@ if(UMF_BUILD_GPU_EXAMPLES else() message( STATUS - "IPC Level 0 example requires UMF_BUILD_GPU_EXAMPLES, UMF_BUILD_LEVEL_ZERO_PROVIDER and UMF_BUILD_LIBUMF_POOL_DISJOINT to be turned ON - skipping" + "IPC Level Zero example requires UMF_BUILD_GPU_EXAMPLES, UMF_BUILD_LEVEL_ZERO_PROVIDER and UMF_BUILD_LIBUMF_POOL_DISJOINT to be turned ON - skipping" ) endif() diff --git a/examples/ipc_level_zero/ipc_level_zero.c b/examples/ipc_level_zero/ipc_level_zero.c index 9579244abf..87dbbd0226 100644 --- a/examples/ipc_level_zero/ipc_level_zero.c +++ b/examples/ipc_level_zero/ipc_level_zero.c @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception @@ -104,7 +104,7 @@ int main(void) { const size_t BUFFER_PATTERN = 0x42; int ret = init_level_zero(); if (ret != 0) { - fprintf(stderr, "ERROR: Failed to init Level 0!\n"); + fprintf(stderr, "ERROR: Failed to init Level Zero!\n"); return ret; } diff --git a/examples/level_zero_shared_memory/level_zero_shared_memory.c b/examples/level_zero_shared_memory/level_zero_shared_memory.c index b0f646861d..d4c49b8a0f 100644 --- a/examples/level_zero_shared_memory/level_zero_shared_memory.c +++ b/examples/level_zero_shared_memory/level_zero_shared_memory.c @@ -1,6 +1,6 @@ /* * - * Copyright (C) 2024 Intel Corporation + * Copyright (C) 2024-2025 Intel Corporation * * Under the Apache License v2.0 with LLVM Exceptions. See LICENSE.TXT. * SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception @@ -27,7 +27,7 @@ int main(void) { // Initialize Level Zero int ret = init_level_zero(); if (ret != 0) { - fprintf(stderr, "Failed to init Level 0!\n"); + fprintf(stderr, "Failed to init Level Zero!\n"); return ret; } diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 7eed07e09e..918e874c65 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -31,8 +31,11 @@ set(UMF_TEST_DIR ${CMAKE_CURRENT_SOURCE_DIR}) set(UMF_UTILS_DIR ${UMF_CMAKE_SOURCE_DIR}/src/utils) function(build_umf_test) - # Parameters: * NAME - a name of the test * SRCS - source files * LIBS - - # libraries to be linked with + # Parameters: + # + # * NAME - a name of the test + # * SRCS - source files + # * LIBS - libraries to be linked with set(oneValueArgs NAME) set(multiValueArgs SRCS LIBS) cmake_parse_arguments( @@ -108,8 +111,11 @@ function(build_umf_test) endfunction() function(add_umf_test) - # Parameters: * NAME - a name of the test * SRCS - source files * LIBS - - # libraries to be linked with + # Parameters: + # + # * NAME - a name of the test + # * SRCS - source files + # * LIBS - libraries to be linked with set(oneValueArgs NAME) set(multiValueArgs SRCS LIBS) cmake_parse_arguments( @@ -120,12 +126,9 @@ function(add_umf_test) ${ARGN}) build_umf_test( - NAME - ${ARG_NAME} - SRCS - ${ARG_SRCS} - LIBS - ${ARG_LIBS}) + NAME ${ARG_NAME} + SRCS ${ARG_SRCS} + LIBS ${ARG_LIBS}) set(TEST_NAME umf-${ARG_NAME}) set(TEST_TARGET_NAME umf_test-${ARG_NAME}) @@ -491,8 +494,10 @@ add_umf_test( add_umf_test(NAME ipc_negative SRCS ipc_negative.cpp) function(add_umf_ipc_test) - # Parameters: * TEST - a name of the test * SRC_DIR - source files directory - # path + # Parameters: + # + # * TEST - a name of the test + # * SRC_DIR - source files directory path set(oneValueArgs TEST SRC_DIR) cmake_parse_arguments( ARG @@ -526,64 +531,42 @@ endfunction() if(LINUX) if(NOT UMF_DISABLE_HWLOC AND UMF_POOL_SCALABLE_ENABLED) build_umf_test( - NAME - ipc_os_prov_consumer - SRCS - ipc_os_prov_consumer.c - common/ipc_common.c - common/ipc_os_prov_common.c) + NAME ipc_os_prov_consumer + SRCS ipc_os_prov_consumer.c common/ipc_common.c + common/ipc_os_prov_common.c) build_umf_test( - NAME - ipc_os_prov_producer - SRCS - ipc_os_prov_producer.c - common/ipc_common.c - common/ipc_os_prov_common.c) + NAME ipc_os_prov_producer + SRCS ipc_os_prov_producer.c common/ipc_common.c + common/ipc_os_prov_common.c) add_umf_ipc_test(TEST ipc_os_prov_anon_fd) add_umf_ipc_test(TEST ipc_os_prov_shm) if(UMF_PROXY_LIB_ENABLED AND UMF_BUILD_SHARED_LIBRARY) build_umf_test( - NAME - ipc_os_prov_proxy - SRCS - ipc_os_prov_proxy.c - common/ipc_common.c - LIBS - ${UMF_UTILS_FOR_TEST}) + NAME ipc_os_prov_proxy + SRCS ipc_os_prov_proxy.c common/ipc_common.c + LIBS ${UMF_UTILS_FOR_TEST}) add_umf_ipc_test(TEST ipc_os_prov_proxy) endif() build_umf_test( - NAME - ipc_devdax_prov_consumer - SRCS - ipc_devdax_prov_consumer.c - common/ipc_common.c - common/ipc_os_prov_common.c) + NAME ipc_devdax_prov_consumer + SRCS ipc_devdax_prov_consumer.c common/ipc_common.c + common/ipc_os_prov_common.c) build_umf_test( - NAME - ipc_devdax_prov_producer - SRCS - ipc_devdax_prov_producer.c - common/ipc_common.c - common/ipc_os_prov_common.c) + NAME ipc_devdax_prov_producer + SRCS ipc_devdax_prov_producer.c common/ipc_common.c + common/ipc_os_prov_common.c) add_umf_ipc_test(TEST ipc_devdax_prov) build_umf_test( - NAME - ipc_file_prov_consumer - SRCS - ipc_file_prov_consumer.c - common/ipc_common.c - common/ipc_os_prov_common.c) + NAME ipc_file_prov_consumer + SRCS ipc_file_prov_consumer.c common/ipc_common.c + common/ipc_os_prov_common.c) build_umf_test( - NAME - ipc_file_prov_producer - SRCS - ipc_file_prov_producer.c - common/ipc_common.c - common/ipc_os_prov_common.c) + NAME ipc_file_prov_producer + SRCS ipc_file_prov_producer.c common/ipc_common.c + common/ipc_os_prov_common.c) add_umf_ipc_test(TEST ipc_file_prov) add_umf_ipc_test(TEST ipc_file_prov_fsdax) endif() @@ -594,29 +577,17 @@ if(LINUX) AND UMF_BUILD_LEVEL_ZERO_PROVIDER AND UMF_BUILD_LIBUMF_POOL_DISJOINT) build_umf_test( - NAME - ipc_level_zero_prov_consumer - SRCS - providers/ipc_level_zero_prov_consumer.c - common/ipc_common.c - providers/ipc_level_zero_prov_common.c - ${UMF_UTILS_DIR}/utils_level_zero.cpp - LIBS - ze_loader - disjoint_pool - ${UMF_UTILS_FOR_TEST}) + NAME ipc_level_zero_prov_consumer + SRCS providers/ipc_level_zero_prov_consumer.c common/ipc_common.c + providers/ipc_level_zero_prov_common.c + ${UMF_UTILS_DIR}/utils_level_zero.cpp + LIBS ze_loader disjoint_pool ${UMF_UTILS_FOR_TEST}) build_umf_test( - NAME - ipc_level_zero_prov_producer - SRCS - providers/ipc_level_zero_prov_producer.c - common/ipc_common.c - providers/ipc_level_zero_prov_common.c - ${UMF_UTILS_DIR}/utils_level_zero.cpp - LIBS - ze_loader - disjoint_pool - ${UMF_UTILS_FOR_TEST}) + NAME ipc_level_zero_prov_producer + SRCS providers/ipc_level_zero_prov_producer.c common/ipc_common.c + providers/ipc_level_zero_prov_common.c + ${UMF_UTILS_DIR}/utils_level_zero.cpp + LIBS ze_loader disjoint_pool ${UMF_UTILS_FOR_TEST}) add_umf_ipc_test(TEST ipc_level_zero_prov SRC_DIR providers) endif() @@ -624,29 +595,15 @@ if(LINUX) AND UMF_BUILD_CUDA_PROVIDER AND UMF_BUILD_LIBUMF_POOL_DISJOINT) build_umf_test( - NAME - ipc_cuda_prov_consumer - SRCS - providers/ipc_cuda_prov_consumer.c - common/ipc_common.c - providers/ipc_cuda_prov_common.c - providers/cuda_helpers.cpp - LIBS - cuda - disjoint_pool - ${UMF_UTILS_FOR_TEST}) + NAME ipc_cuda_prov_consumer + SRCS providers/ipc_cuda_prov_consumer.c common/ipc_common.c + providers/ipc_cuda_prov_common.c providers/cuda_helpers.cpp + LIBS cuda disjoint_pool ${UMF_UTILS_FOR_TEST}) build_umf_test( - NAME - ipc_cuda_prov_producer - SRCS - providers/ipc_cuda_prov_producer.c - common/ipc_common.c - providers/ipc_cuda_prov_common.c - providers/cuda_helpers.cpp - LIBS - cuda - disjoint_pool - ${UMF_UTILS_FOR_TEST}) + NAME ipc_cuda_prov_producer + SRCS providers/ipc_cuda_prov_producer.c common/ipc_common.c + providers/ipc_cuda_prov_common.c providers/cuda_helpers.cpp + LIBS cuda disjoint_pool ${UMF_UTILS_FOR_TEST}) add_umf_ipc_test(TEST ipc_cuda_prov SRC_DIR providers) endif() else() @@ -732,7 +689,7 @@ if(LINUX else() message( STATUS - "IPC Level 0 example requires UMF_BUILD_GPU_EXAMPLES, UMF_BUILD_LEVEL_ZERO_PROVIDER and UMF_BUILD_LIBUMF_POOL_DISJOINT to be turned ON - skipping" + "IPC Level Zero example requires UMF_BUILD_GPU_EXAMPLES, UMF_BUILD_LEVEL_ZERO_PROVIDER and UMF_BUILD_LIBUMF_POOL_DISJOINT to be turned ON - skipping" ) endif()