From 4055744fbd04e3469427cfb360a0062f4fdcd1dc Mon Sep 17 00:00:00 2001 From: Yevhenii Havrylko Date: Mon, 11 Mar 2024 18:35:22 -0400 Subject: [PATCH 01/12] Use ldd linker --- CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index eb1346a423..2a412ef5fb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,6 +12,10 @@ set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE BOTH) set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY BOTH) # set_property(GLOBAL PROPERTY GLOBAL_DEPENDS_DEBUG_MODE 1) +if (UNIX) + add_link_options("-fuse-ld=lld") +endif() + # Option to generate code coverage report using llvm-cov and lcov. option(DPCTL_GENERATE_COVERAGE "Build dpctl with coverage instrumentation" From 1eb17ec995c61679a93c4bc342e71aa76ceba88a Mon Sep 17 00:00:00 2001 From: Yevhenii Havrylko Date: Thu, 14 Mar 2024 17:37:41 -0400 Subject: [PATCH 02/12] Organize sycl interface test CMakeList.txt --- libsyclinterface/tests/CMakeLists.txt | 42 ++++++++++----------------- 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/libsyclinterface/tests/CMakeLists.txt b/libsyclinterface/tests/CMakeLists.txt index 4a991340e7..b76fe16dce 100644 --- a/libsyclinterface/tests/CMakeLists.txt +++ b/libsyclinterface/tests/CMakeLists.txt @@ -8,14 +8,6 @@ set(CMAKE_CTEST_COMMAND ctest --progress --output-on-failure -j 4) add_custom_target(check COMMAND ${CMAKE_COMMAND} -E env DPCTL_VERBOSITY=warning ${CMAKE_CTEST_COMMAND}) enable_testing() -include_directories( - ${CMAKE_SOURCE_DIR}/include - ${CMAKE_SOURCE_DIR}/helper/include - ${GTEST_INCLUDE_DIR} - ${LEVEL_ZERO_INCLUDE_DIR} -) -link_directories(${GTEST_LIB_DIR}) - # Copy the spir-v input files to test build directory set(spirv-test-files multi_kernel.spv @@ -76,18 +68,23 @@ if(_dpctl_sycl_targets) ) endif() +target_link_libraries(dpctl_c_api_tests + ${CMAKE_THREAD_LIBS_INIT} + GTest::gtest_main + GTest::GTest + DPCTLSyclInterface + ${IntelSyclCompiler_OPENCL_LIBRARY} + # Seems to work without it... + ${CMAKE_DL_LIBS} +) +target_include_directories(dpctl_c_api_tests + PRIVATE + "${CMAKE_CURRENT_SOURCE_DIR}/../helper/include" + "${CMAKE_CURRENT_SOURCE_DIR}/../include" + ${LEVEL_ZERO_INCLUDE_DIR} +) + if(DPCTL_GENERATE_COVERAGE) - target_include_directories(dpctl_c_api_tests - PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../helper/include" - PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../include" - ) - target_link_libraries(dpctl_c_api_tests - ${CMAKE_THREAD_LIBS_INIT} - GTest::GTest - DPCTLSyclInterface - ${IntelSyclCompiler_OPENCL_LIBRARY} - ${CMAKE_DL_LIBS} - ) set(object_arg "-object;") add_custom_target(run-c-api-tests COMMAND ${CMAKE_COMMAND} -E env DPCTL_VERBOSITY=warning ${CMAKE_CURRENT_BINARY_DIR}/dpctl_c_api_tests @@ -160,13 +157,6 @@ if(DPCTL_GENERATE_COVERAGE) COMMAND_EXPAND_LISTS DEPENDS run-c-api-tests ) -else() - target_link_libraries(dpctl_c_api_tests - ${CMAKE_THREAD_LIBS_INIT} - GTest::GTest - DPCTLSyclInterface - ${IntelSyclCompiler_OPENCL_LIBRARY} - ) endif() gtest_discover_tests(dpctl_c_api_tests) From 6a9f9b0e34b4b7cce07c64b334dada785f22a430 Mon Sep 17 00:00:00 2001 From: Yevhenii Havrylko Date: Mon, 11 Mar 2024 17:53:27 -0400 Subject: [PATCH 03/12] Move syclinterface headers into subfolder --- libsyclinterface/include/{ => syclinterface}/Config/.gitignore | 0 .../include/{ => syclinterface}/Config/dpctl_config.h.in | 0 libsyclinterface/include/{ => syclinterface}/Support/DllExport.h | 0 libsyclinterface/include/{ => syclinterface}/Support/ExternC.h | 0 .../include/{ => syclinterface}/Support/MemOwnershipAttrs.h | 0 libsyclinterface/include/{ => syclinterface}/dpctl_data_types.h | 0 .../include/{ => syclinterface}/dpctl_device_selection.hpp | 0 .../include/{ => syclinterface}/dpctl_error_handler_type.h | 0 libsyclinterface/include/{ => syclinterface}/dpctl_service.h | 0 .../include/{ => syclinterface}/dpctl_sycl_context_interface.h | 0 .../include/{ => syclinterface}/dpctl_sycl_device_interface.h | 0 .../include/{ => syclinterface}/dpctl_sycl_device_manager.h | 0 .../{ => syclinterface}/dpctl_sycl_device_selector_interface.h | 0 .../include/{ => syclinterface}/dpctl_sycl_enum_types.h | 0 .../include/{ => syclinterface}/dpctl_sycl_event_interface.h | 0 .../{ => syclinterface}/dpctl_sycl_kernel_bundle_interface.h | 0 .../include/{ => syclinterface}/dpctl_sycl_kernel_interface.h | 0 .../include/{ => syclinterface}/dpctl_sycl_platform_interface.h | 0 .../include/{ => syclinterface}/dpctl_sycl_platform_manager.h | 0 .../include/{ => syclinterface}/dpctl_sycl_queue_interface.h | 0 .../include/{ => syclinterface}/dpctl_sycl_queue_manager.h | 0 .../include/{ => syclinterface}/dpctl_sycl_type_casters.hpp | 0 libsyclinterface/include/{ => syclinterface}/dpctl_sycl_types.h | 0 .../include/{ => syclinterface}/dpctl_sycl_usm_interface.h | 0 libsyclinterface/include/{ => syclinterface}/dpctl_utils.h | 0 libsyclinterface/include/{ => syclinterface}/dpctl_vector.h | 0 26 files changed, 0 insertions(+), 0 deletions(-) rename libsyclinterface/include/{ => syclinterface}/Config/.gitignore (100%) rename libsyclinterface/include/{ => syclinterface}/Config/dpctl_config.h.in (100%) rename libsyclinterface/include/{ => syclinterface}/Support/DllExport.h (100%) rename libsyclinterface/include/{ => syclinterface}/Support/ExternC.h (100%) rename libsyclinterface/include/{ => syclinterface}/Support/MemOwnershipAttrs.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_data_types.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_device_selection.hpp (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_error_handler_type.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_service.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_context_interface.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_device_interface.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_device_manager.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_device_selector_interface.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_enum_types.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_event_interface.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_kernel_bundle_interface.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_kernel_interface.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_platform_interface.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_platform_manager.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_queue_interface.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_queue_manager.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_type_casters.hpp (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_types.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_sycl_usm_interface.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_utils.h (100%) rename libsyclinterface/include/{ => syclinterface}/dpctl_vector.h (100%) diff --git a/libsyclinterface/include/Config/.gitignore b/libsyclinterface/include/syclinterface/Config/.gitignore similarity index 100% rename from libsyclinterface/include/Config/.gitignore rename to libsyclinterface/include/syclinterface/Config/.gitignore diff --git a/libsyclinterface/include/Config/dpctl_config.h.in b/libsyclinterface/include/syclinterface/Config/dpctl_config.h.in similarity index 100% rename from libsyclinterface/include/Config/dpctl_config.h.in rename to libsyclinterface/include/syclinterface/Config/dpctl_config.h.in diff --git a/libsyclinterface/include/Support/DllExport.h b/libsyclinterface/include/syclinterface/Support/DllExport.h similarity index 100% rename from libsyclinterface/include/Support/DllExport.h rename to libsyclinterface/include/syclinterface/Support/DllExport.h diff --git a/libsyclinterface/include/Support/ExternC.h b/libsyclinterface/include/syclinterface/Support/ExternC.h similarity index 100% rename from libsyclinterface/include/Support/ExternC.h rename to libsyclinterface/include/syclinterface/Support/ExternC.h diff --git a/libsyclinterface/include/Support/MemOwnershipAttrs.h b/libsyclinterface/include/syclinterface/Support/MemOwnershipAttrs.h similarity index 100% rename from libsyclinterface/include/Support/MemOwnershipAttrs.h rename to libsyclinterface/include/syclinterface/Support/MemOwnershipAttrs.h diff --git a/libsyclinterface/include/dpctl_data_types.h b/libsyclinterface/include/syclinterface/dpctl_data_types.h similarity index 100% rename from libsyclinterface/include/dpctl_data_types.h rename to libsyclinterface/include/syclinterface/dpctl_data_types.h diff --git a/libsyclinterface/include/dpctl_device_selection.hpp b/libsyclinterface/include/syclinterface/dpctl_device_selection.hpp similarity index 100% rename from libsyclinterface/include/dpctl_device_selection.hpp rename to libsyclinterface/include/syclinterface/dpctl_device_selection.hpp diff --git a/libsyclinterface/include/dpctl_error_handler_type.h b/libsyclinterface/include/syclinterface/dpctl_error_handler_type.h similarity index 100% rename from libsyclinterface/include/dpctl_error_handler_type.h rename to libsyclinterface/include/syclinterface/dpctl_error_handler_type.h diff --git a/libsyclinterface/include/dpctl_service.h b/libsyclinterface/include/syclinterface/dpctl_service.h similarity index 100% rename from libsyclinterface/include/dpctl_service.h rename to libsyclinterface/include/syclinterface/dpctl_service.h diff --git a/libsyclinterface/include/dpctl_sycl_context_interface.h b/libsyclinterface/include/syclinterface/dpctl_sycl_context_interface.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_context_interface.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_context_interface.h diff --git a/libsyclinterface/include/dpctl_sycl_device_interface.h b/libsyclinterface/include/syclinterface/dpctl_sycl_device_interface.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_device_interface.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_device_interface.h diff --git a/libsyclinterface/include/dpctl_sycl_device_manager.h b/libsyclinterface/include/syclinterface/dpctl_sycl_device_manager.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_device_manager.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_device_manager.h diff --git a/libsyclinterface/include/dpctl_sycl_device_selector_interface.h b/libsyclinterface/include/syclinterface/dpctl_sycl_device_selector_interface.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_device_selector_interface.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_device_selector_interface.h diff --git a/libsyclinterface/include/dpctl_sycl_enum_types.h b/libsyclinterface/include/syclinterface/dpctl_sycl_enum_types.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_enum_types.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_enum_types.h diff --git a/libsyclinterface/include/dpctl_sycl_event_interface.h b/libsyclinterface/include/syclinterface/dpctl_sycl_event_interface.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_event_interface.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_event_interface.h diff --git a/libsyclinterface/include/dpctl_sycl_kernel_bundle_interface.h b/libsyclinterface/include/syclinterface/dpctl_sycl_kernel_bundle_interface.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_kernel_bundle_interface.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_kernel_bundle_interface.h diff --git a/libsyclinterface/include/dpctl_sycl_kernel_interface.h b/libsyclinterface/include/syclinterface/dpctl_sycl_kernel_interface.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_kernel_interface.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_kernel_interface.h diff --git a/libsyclinterface/include/dpctl_sycl_platform_interface.h b/libsyclinterface/include/syclinterface/dpctl_sycl_platform_interface.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_platform_interface.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_platform_interface.h diff --git a/libsyclinterface/include/dpctl_sycl_platform_manager.h b/libsyclinterface/include/syclinterface/dpctl_sycl_platform_manager.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_platform_manager.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_platform_manager.h diff --git a/libsyclinterface/include/dpctl_sycl_queue_interface.h b/libsyclinterface/include/syclinterface/dpctl_sycl_queue_interface.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_queue_interface.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_queue_interface.h diff --git a/libsyclinterface/include/dpctl_sycl_queue_manager.h b/libsyclinterface/include/syclinterface/dpctl_sycl_queue_manager.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_queue_manager.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_queue_manager.h diff --git a/libsyclinterface/include/dpctl_sycl_type_casters.hpp b/libsyclinterface/include/syclinterface/dpctl_sycl_type_casters.hpp similarity index 100% rename from libsyclinterface/include/dpctl_sycl_type_casters.hpp rename to libsyclinterface/include/syclinterface/dpctl_sycl_type_casters.hpp diff --git a/libsyclinterface/include/dpctl_sycl_types.h b/libsyclinterface/include/syclinterface/dpctl_sycl_types.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_types.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_types.h diff --git a/libsyclinterface/include/dpctl_sycl_usm_interface.h b/libsyclinterface/include/syclinterface/dpctl_sycl_usm_interface.h similarity index 100% rename from libsyclinterface/include/dpctl_sycl_usm_interface.h rename to libsyclinterface/include/syclinterface/dpctl_sycl_usm_interface.h diff --git a/libsyclinterface/include/dpctl_utils.h b/libsyclinterface/include/syclinterface/dpctl_utils.h similarity index 100% rename from libsyclinterface/include/dpctl_utils.h rename to libsyclinterface/include/syclinterface/dpctl_utils.h diff --git a/libsyclinterface/include/dpctl_vector.h b/libsyclinterface/include/syclinterface/dpctl_vector.h similarity index 100% rename from libsyclinterface/include/dpctl_vector.h rename to libsyclinterface/include/syclinterface/dpctl_vector.h From f6f666a7ffc583d551fbfcd9dacbc45fd115151f Mon Sep 17 00:00:00 2001 From: Yevhenii Havrylko Date: Thu, 14 Mar 2024 17:38:13 -0400 Subject: [PATCH 04/12] Update relative position of libsyclinterface include files --- docs/CMakeLists.txt | 2 +- libsyclinterface/tests/CMakeLists.txt | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt index ff3fbcb7cd..d707d746c7 100644 --- a/docs/CMakeLists.txt +++ b/docs/CMakeLists.txt @@ -26,7 +26,7 @@ function(_setup_doxygen) if(DPCTL_ENABLE_DOXYGEN_HTML) set(GENERATE_HTML "YES") endif() - set(DOXYGEN_INPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../libsyclinterface/include) + set(DOXYGEN_INPUT_DIR ${CMAKE_CURRENT_SOURCE_DIR}/../libsyclinterface/include/syclinterface) set(DOXYGEN_OUTPUT_DIR ${DOC_OUTPUT_DIR}/doxygen) set(DOXYGEN_INDEX_FILE ${DOXYGEN_OUTPUT_DIR}/xml/index.xml) set(DOXYFILE_IN ${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in) diff --git a/libsyclinterface/tests/CMakeLists.txt b/libsyclinterface/tests/CMakeLists.txt index b76fe16dce..771aec7fd1 100644 --- a/libsyclinterface/tests/CMakeLists.txt +++ b/libsyclinterface/tests/CMakeLists.txt @@ -80,7 +80,7 @@ target_link_libraries(dpctl_c_api_tests target_include_directories(dpctl_c_api_tests PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../helper/include" - "${CMAKE_CURRENT_SOURCE_DIR}/../include" + "${CMAKE_CURRENT_SOURCE_DIR}/../include/syclinterface" ${LEVEL_ZERO_INCLUDE_DIR} ) From d1288ac09d26d7e4b8c3dcc39a2c67f25d425355 Mon Sep 17 00:00:00 2001 From: Yevhenii Havrylko Date: Mon, 11 Mar 2024 18:20:09 -0400 Subject: [PATCH 05/12] Remove relative path include in capi --- dpctl/apis/include/dpctl_capi.h | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/dpctl/apis/include/dpctl_capi.h b/dpctl/apis/include/dpctl_capi.h index 4f005195d5..e6b212d7c3 100644 --- a/dpctl/apis/include/dpctl_capi.h +++ b/dpctl/apis/include/dpctl_capi.h @@ -33,20 +33,20 @@ #else #define CYTHON_EXTERN_C #endif -#include "../_sycl_device.h" -#include "../_sycl_device_api.h" -#include "../_sycl_context.h" -#include "../_sycl_context_api.h" -#include "../_sycl_event.h" -#include "../_sycl_event_api.h" -#include "../_sycl_queue.h" -#include "../_sycl_queue_api.h" -#include "../memory/_memory.h" -#include "../memory/_memory_api.h" -#include "../tensor/_usmarray.h" -#include "../tensor/_usmarray_api.h" -#include "../program/_program.h" -#include "../program/_program_api.h" +#include "dpctl/_sycl_device.h" +#include "dpctl/_sycl_device_api.h" +#include "dpctl/_sycl_context.h" +#include "dpctl/_sycl_context_api.h" +#include "dpctl/_sycl_event.h" +#include "dpctl/_sycl_event_api.h" +#include "dpctl/_sycl_queue.h" +#include "dpctl/_sycl_queue_api.h" +#include "dpctl/memory/_memory.h" +#include "dpctl/memory/_memory_api.h" +#include "dpctl/tensor/_usmarray.h" +#include "dpctl/tensor/_usmarray_api.h" +#include "dpctl/program/_program.h" +#include "dpctl/program/_program_api.h" // clang-format on From c5b7494019b1ae82c1f92ac2e611f401200375fd Mon Sep 17 00:00:00 2001 From: Yevhenii Havrylko Date: Mon, 11 Mar 2024 18:34:03 -0400 Subject: [PATCH 06/12] Use library dependency in CMake --- CMakeLists.txt | 11 ++- dpctl/CMakeLists.txt | 119 ++++++++------------------------ dpctl/cmake/copy_existing.cmake | 3 - dpctl/memory/CMakeLists.txt | 1 + dpctl/program/CMakeLists.txt | 1 + dpctl/tensor/CMakeLists.txt | 18 ++--- dpctl/utils/CMakeLists.txt | 16 +---- libsyclinterface/CMakeLists.txt | 56 ++++++--------- 8 files changed, 67 insertions(+), 158 deletions(-) delete mode 100644 dpctl/cmake/copy_existing.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a412ef5fb..23d3ba0630 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -51,9 +51,14 @@ endif() add_subdirectory(libsyclinterface) -file(GLOB _dpctl_capi_headers dpctl/apis/include/*.h*) -install(FILES ${_dpctl_capi_headers} - DESTINATION dpctl/include +add_library(DpctlCAPI INTERFACE) +target_include_directories(DpctlCAPI INTERFACE ${CMAKE_CURRENT_SOURCE_DIR}/dpctl/apis/include) +target_link_libraries(DpctlCAPI INTERFACE DPCTLSyclInterfaceHeaders) + +install(DIRECTORY + ${CMAKE_CURRENT_SOURCE_DIR}/dpctl/apis/include/ + DESTINATION ${CMAKE_INSTALL_PREFIX}/dpctl/include + FILES_MATCHING REGEX "\\.h(pp)?$" ) # Define CMAKE_INSTALL_xxx: LIBDIR, INCLUDEDIR diff --git a/dpctl/CMakeLists.txt b/dpctl/CMakeLists.txt index 3125eae07d..e221c6e1ef 100644 --- a/dpctl/CMakeLists.txt +++ b/dpctl/CMakeLists.txt @@ -74,64 +74,6 @@ endif() # at build time create include/ directory and copy header files over set(DPCTL_INCLUDE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/include) -add_custom_target(_build_time_create_dpctl_include ALL - COMMAND ${CMAKE_COMMAND} -E make_directory ${DPCTL_INCLUDE_DIR} - COMMAND ${CMAKE_COMMAND} -E make_directory ${DPCTL_INCLUDE_DIR}/syclinterface - COMMAND ${CMAKE_COMMAND} -E make_directory ${DPCTL_INCLUDE_DIR}/syclinterface/Support - COMMAND ${CMAKE_COMMAND} -E make_directory ${DPCTL_INCLUDE_DIR}/syclinterface/Config - DEPENDS DPCTLSyclInterface -) - -set(_copied_header_files) -file(GLOB _syclinterface_h ${CMAKE_SOURCE_DIR}/libsyclinterface/include/*.h*) -foreach(hf ${_syclinterface_h}) - get_filename_component(_header_name ${hf} NAME) - set(_target_header_file ${DPCTL_INCLUDE_DIR}/syclinterface/${_header_name}) - list(APPEND _copied_header_files ${_target_header_file}) - add_custom_command(OUTPUT ${_target_header_file} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${hf} ${_target_header_file} - DEPENDS ${hf} _build_time_create_dpctl_include - VERBATIM - ) -endforeach() - -file(GLOB _syclinterface_Support_h ${CMAKE_SOURCE_DIR}/libsyclinterface/include/Support/*.h) -foreach(hf ${_syclinterface_Support_h}) - get_filename_component(_header_name ${hf} NAME) - set(_target_header_file ${DPCTL_INCLUDE_DIR}/syclinterface/Support/${_header_name}) - list(APPEND _copied_header_files ${_target_header_file}) - add_custom_command(OUTPUT ${_target_header_file} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${hf} ${_target_header_file} - DEPENDS ${hf} _build_time_create_dpctl_include - ) -endforeach() - -file(GLOB _syclinterface_Config_h ${CMAKE_SOURCE_DIR}/libsyclinterface/include/Config/*.h) -foreach(hf ${_syclinterface_Config_h}) - get_filename_component(_header_name ${hf} NAME) - set(_target_header_file ${DPCTL_INCLUDE_DIR}/syclinterface/Config/${_header_name}) - list(APPEND _copied_header_files ${_target_header_file}) - add_custom_command(OUTPUT ${_target_header_file} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${hf} ${_target_header_file} - DEPENDS ${hf} _build_time_create_dpctl_include - ) -endforeach() - -file(GLOB _apis_h ${CMAKE_CURRENT_SOURCE_DIR}/apis/include/*) -foreach(hf ${_apis_h}) - get_filename_component(_header_name ${hf} NAME) - set(_target_header_file ${DPCTL_INCLUDE_DIR}/${_header_name}) - list(APPEND _copied_header_files ${_target_header_file}) - add_custom_command(OUTPUT ${_target_header_file} - COMMAND ${CMAKE_COMMAND} -E copy_if_different ${hf} ${_target_header_file} - DEPENDS ${hf} _build_time_create_dpctl_include - ) -endforeach() - -add_custom_target( - _build_time_create_dpctl_include_copy ALL - DEPENDS ${_copied_header_files} -) set(CMAKE_INSTALL_RPATH "$ORIGIN") @@ -140,7 +82,6 @@ function(build_dpctl_ext _trgt _src _dest) cmake_parse_arguments(BUILD_DPCTL_EXT "${options}" "" "" ${ARGN}) add_cython_target(${_trgt} ${_src} CXX OUTPUT_VAR _generated_src) set(_cythonize_trgt "${_trgt}_cythonize_pyx") - add_custom_target(${_cythonize_trgt} DEPENDS ${_src}) Python_add_library(${_trgt} MODULE WITH_SOABI ${_generated_src}) if (BUILD_DPCTL_EXT_SYCL) add_sycl_to_target(TARGET ${_trgt} SOURCES ${_generated_src}) @@ -158,8 +99,7 @@ function(build_dpctl_ext _trgt _src _dest) ) endif() endif() - target_include_directories(${_trgt} PRIVATE ${NumPy_INCLUDE_DIR} ${DPCTL_INCLUDE_DIR}) - add_dependencies(${_trgt} _build_time_create_dpctl_include_copy ${_cythonize_trgt}) + target_link_libraries(${_trgt} PRIVATE Python::NumPy) if (DPCTL_GENERATE_COVERAGE) target_compile_definitions(${_trgt} PRIVATE CYTHON_TRACE=1 CYTHON_TRACE_NOGIL=1) # target_compile_options(${_trgt} PRIVATE -fno-sycl-use-footer) @@ -171,35 +111,32 @@ function(build_dpctl_ext _trgt _src _dest) get_filename_component(_generated_src_dir ${_generated_src} DIRECTORY) set(_generated_public_h "${_generated_src_dir}/${_name_wle}.h") set(_generated_api_h "${_generated_src_dir}/${_name_wle}_api.h") - set(_copy_trgt "${_trgt}_copy_capi_include") - add_custom_target( - ${_copy_trgt} ALL - COMMAND ${CMAKE_COMMAND} - -DSOURCE_FILE=${_generated_public_h} - -DDEST=${CMAKE_CURRENT_SOURCE_DIR} - -P ${CMAKE_SOURCE_DIR}/dpctl/cmake/copy_existing.cmake - COMMAND ${CMAKE_COMMAND} - -DSOURCE_FILE=${_generated_api_h} - -DDEST=${CMAKE_CURRENT_SOURCE_DIR} - -P ${CMAKE_SOURCE_DIR}/dpctl/cmake/copy_existing.cmake - DEPENDS ${_trgt} - VERBATIM - COMMENT "Copying Cython-generated headers to dpctl" - ) - if (DPCTL_GENERATE_COVERAGE) - set(_copy_cxx_trgt "${_trgt}_copy_cxx") - add_custom_target( - ${_copy_cxx_trgt} ALL - COMMAND ${CMAKE_COMMAND} - -DSOURCE_FILE=${_generated_src} - -DDEST=${CMAKE_CURRENT_SOURCE_DIR} - -P ${CMAKE_SOURCE_DIR}/dpctl/cmake/copy_existing.cmake - DEPENDS ${_trgt} - VERBATIM - COMMENT "Copying Cython-generated source to dpctl" - ) - endif() - install(TARGETS ${_trgt} LIBRARY DESTINATION ${_dest}) + + # TODO: create separate folder inside build folder that contains only + # headers related to this target and appropriate folder structure to + # eliminate shadow dependencies + get_filename_component(_generated_src_dir_dir ${_generated_src_dir} DIRECTORY) + # TODO: do not set directory if we did not generate header + target_include_directories(${_trgt} INTERFACE ${_generated_src_dir_dir}) + + install(TARGETS ${_trgt} + LIBRARY DESTINATION ${_dest}) + install(FILES + ${_generated_api_h} + DESTINATION ${CMAKE_INSTALL_PREFIX}/dpctl/include/${_dest} + OPTIONAL) + install(FILES + ${_generated_public_h} + DESTINATION ${CMAKE_INSTALL_PREFIX}/dpctl/include/${_dest} + OPTIONAL) + + # Create target with headers only, because python is managing all the + # library imports at runtime + set(_trgt_headers ${_trgt}_headers) + add_library(${_trgt_headers} INTERFACE) + add_dependencies(${_trgt_headers} ${_trgt}) + get_target_property(_trgt_headers_dir ${_trgt} INTERFACE_INCLUDE_DIRECTORIES) + target_include_directories(${_trgt_headers} INTERFACE ${_trgt_headers_dir}) endfunction() file(GLOB _cython_sources ${CMAKE_CURRENT_SOURCE_DIR}/*.pyx) @@ -207,6 +144,7 @@ list(REMOVE_ITEM _cython_sources ${CMAKE_CURRENT_SOURCE_DIR}/_sycl_queue.pyx) foreach(_cy_file ${_cython_sources}) get_filename_component(_trgt ${_cy_file} NAME_WLE) build_dpctl_ext(${_trgt} ${_cy_file} "dpctl") + target_link_libraries(DpctlCAPI INTERFACE ${_trgt}_headers) endforeach() set(_cy_file ${CMAKE_CURRENT_SOURCE_DIR}/_sycl_queue.pyx) @@ -214,6 +152,7 @@ get_filename_component(_trgt ${_cy_file} NAME_WLE) build_dpctl_ext(${_trgt} ${_cy_file} "dpctl" SYCL) # _sycl_queue include _host_task_util.hpp target_include_directories(${_trgt} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) +target_link_libraries(DpctlCAPI INTERFACE ${_trgt}_headers) add_subdirectory(program) add_subdirectory(memory) diff --git a/dpctl/cmake/copy_existing.cmake b/dpctl/cmake/copy_existing.cmake deleted file mode 100644 index 242dc29257..0000000000 --- a/dpctl/cmake/copy_existing.cmake +++ /dev/null @@ -1,3 +0,0 @@ -if (EXISTS ${SOURCE_FILE}) - configure_file(${SOURCE_FILE} ${DEST} COPYONLY) -endif() diff --git a/dpctl/memory/CMakeLists.txt b/dpctl/memory/CMakeLists.txt index c4f6d8469f..68f57ce35c 100644 --- a/dpctl/memory/CMakeLists.txt +++ b/dpctl/memory/CMakeLists.txt @@ -3,4 +3,5 @@ file(GLOB _cython_sources *.pyx) foreach(_cy_file ${_cython_sources}) get_filename_component(_trgt ${_cy_file} NAME_WLE) build_dpctl_ext(${_trgt} ${_cy_file} "dpctl/memory") + target_link_libraries(DpctlCAPI INTERFACE ${_trgt}_headers) endforeach() diff --git a/dpctl/program/CMakeLists.txt b/dpctl/program/CMakeLists.txt index f10706ed9d..3e7598c817 100644 --- a/dpctl/program/CMakeLists.txt +++ b/dpctl/program/CMakeLists.txt @@ -3,4 +3,5 @@ file(GLOB _cython_sources *.pyx) foreach(_cy_file ${_cython_sources}) get_filename_component(_trgt ${_cy_file} NAME_WLE) build_dpctl_ext(${_trgt} ${_cy_file} "dpctl/program") + target_link_libraries(DpctlCAPI INTERFACE ${_trgt}_headers) endforeach() diff --git a/dpctl/tensor/CMakeLists.txt b/dpctl/tensor/CMakeLists.txt index 88a45b7419..fe7f85be09 100644 --- a/dpctl/tensor/CMakeLists.txt +++ b/dpctl/tensor/CMakeLists.txt @@ -3,8 +3,11 @@ foreach(_cy_file ${_cython_sources}) get_filename_component(_trgt ${_cy_file} NAME_WLE) build_dpctl_ext(${_trgt} ${_cy_file} "dpctl/tensor") target_include_directories(${_trgt} PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/include) + target_link_libraries(DpctlCAPI INTERFACE ${_trgt}_headers) endforeach() +# TODO: do we need to write this dependencies explicitly? Does it even work this +# way? add_custom_target(_usmarray_deps SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/_slicing.pxi ${CMAKE_CURRENT_SOURCE_DIR}/_types.pxi @@ -12,16 +15,6 @@ add_custom_target(_usmarray_deps SOURCES ) add_dependencies(_usmarray _usmarray_deps) -add_custom_target(_dpctl4pybind11_deps - DEPENDS - _usmarray_copy_capi_include - _memory_copy_capi_include - _sycl_device_copy_capi_include - _sycl_queue_copy_capi_include - _sycl_context_copy_capi_include - _sycl_event_copy_capi_include -) - if(WIN32) if (${CMAKE_VERSION} VERSION_LESS "3.23") # this is a work-around for target_link_options inserting option after -link option, cause @@ -242,7 +235,6 @@ foreach(python_module_name ${_py_trgts}) target_link_options(${python_module_name} PRIVATE -fsycl-device-code-split=per_kernel) target_include_directories(${python_module_name} PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/../include ${CMAKE_CURRENT_SOURCE_DIR}/libtensor/include ${CMAKE_CURRENT_SOURCE_DIR}/libtensor/source/ ) @@ -270,6 +262,8 @@ foreach(python_module_name ${_py_trgts}) -fsycl-targets=${_dpctl_sycl_targets} ) endif() - add_dependencies(${python_module_name} _dpctl4pybind11_deps) + # TODO: update source so they refernece individual libraries instead of + # dpctl4pybind11.hpp. It will allow to simplify dependency tree + target_link_libraries(${python_module_name} PRIVATE DpctlCAPI) install(TARGETS ${python_module_name} DESTINATION "dpctl/tensor") endforeach() diff --git a/dpctl/utils/CMakeLists.txt b/dpctl/utils/CMakeLists.txt index 8830b74b86..04a9eb2a4d 100644 --- a/dpctl/utils/CMakeLists.txt +++ b/dpctl/utils/CMakeLists.txt @@ -5,16 +5,6 @@ foreach(_cy_file ${_cython_sources}) build_dpctl_ext(${_trgt} ${_cy_file} "dpctl/utils") endforeach() -add_custom_target(_dpctl4pybind11_header_ready - DEPENDS - _usmarray_copy_capi_include - _memory_copy_capi_include - _sycl_device_copy_capi_include - _sycl_queue_copy_capi_include - _sycl_context_copy_capi_include - _sycl_event_copy_capi_include -) - set(python_module_name _device_queries) set(_module_src ${CMAKE_CURRENT_SOURCE_DIR}/src/device_queries.cpp) pybind11_add_module(${python_module_name} MODULE @@ -44,9 +34,5 @@ if(_dpctl_sycl_targets) -fsycl-targets=${_dpctl_sycl_targets} ) endif() -target_include_directories(${python_module_name} - PRIVATE - ${CMAKE_CURRENT_SOURCE_DIR}/../include -) -add_dependencies(${python_module_name} _dpctl4pybind11_header_ready) +target_link_libraries(${python_module_name} PRIVATE DpctlCAPI) install(TARGETS ${python_module_name} DESTINATION "dpctl/utils") diff --git a/libsyclinterface/CMakeLists.txt b/libsyclinterface/CMakeLists.txt index e84959c1c3..827ce30782 100644 --- a/libsyclinterface/CMakeLists.txt +++ b/libsyclinterface/CMakeLists.txt @@ -95,8 +95,8 @@ message(STATUS "LIB_ZE: ${LIBZE_LOADER_FILENAME}") message(STATUS "LIB_CL: ${LIBCL_LOADER_FILENAME}") configure_file( - ${CMAKE_CURRENT_SOURCE_DIR}/include/Config/dpctl_config.h.in - ${CMAKE_CURRENT_SOURCE_DIR}/include/Config/dpctl_config.h + ${CMAKE_CURRENT_SOURCE_DIR}/include/syclinterface/Config/dpctl_config.h.in + ${CMAKE_CURRENT_SOURCE_DIR}/include/syclinterface/Config/dpctl_config.h ) # Set the C++ standard to C++17 @@ -226,11 +226,12 @@ if(DPCTL_GENERATE_COVERAGE) endif() target_include_directories(DPCTLSyclInterface - PUBLIC - ${CMAKE_CURRENT_SOURCE_DIR}/include/ - ${CMAKE_CURRENT_SOURCE_DIR}/include/Support - ${CMAKE_CURRENT_SOURCE_DIR}/include/Config + # PUBLIC PRIVATE + ${CMAKE_CURRENT_SOURCE_DIR}/include/syclinterface + ${CMAKE_CURRENT_SOURCE_DIR}/include/syclinterface/Support + ${CMAKE_CURRENT_SOURCE_DIR}/include/syclinterface/Config + # PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/helper/include/ ${SYCL_INCLUDE_DIR} ) @@ -267,43 +268,28 @@ if(DPCTL_ENABLE_L0_PROGRAM_CREATION) ) endif() -# Install all headers - -file(GLOB MAIN_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/*.h" "${CMAKE_CURRENT_SOURCE_DIR}/include/*.hpp") -file(GLOB SUPPORT_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/Support/*.h") -file(GLOB CONFIG_HEADERS "${CMAKE_CURRENT_SOURCE_DIR}/include/Config/*.h") - -set_target_properties(DPCTLSyclInterface - PROPERTIES PUBLIC_HEADER - "${MAIN_HEADERS}" +target_include_directories(DPCTLSyclInterface INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/include +) +add_library(DPCTLSyclInterfaceHeaders INTERFACE) +add_dependencies(DPCTLSyclInterfaceHeaders DPCTLSyclInterface) +target_include_directories(DPCTLSyclInterfaceHeaders INTERFACE + ${CMAKE_CURRENT_SOURCE_DIR}/include ) - -if (SKBUILD) - set(_lib_destination dpctl) - set(_include_destination dpctl/include/syclinterface) -else() - set(_lib_destination ${CMAKE_INSTALL_PREFIX}/lib) - set(_include_destination ${CMAKE_INSTALL_PREFIX}/include) -endif() install(TARGETS DPCTLSyclInterface LIBRARY - DESTINATION ${_lib_destination} + DESTINATION ${CMAKE_INSTALL_PREFIX}/dpctl ARCHIVE - DESTINATION ${_lib_destination} + DESTINATION ${CMAKE_INSTALL_PREFIX}/dpctl RUNTIME - DESTINATION ${_lib_destination} - PUBLIC_HEADER - DESTINATION ${_include_destination} + DESTINATION ${CMAKE_INSTALL_PREFIX}/dpctl ) -install( - FILES ${SUPPORT_HEADERS} - DESTINATION ${_include_destination}/Support -) -install( - FILES ${CONFIG_HEADERS} - DESTINATION ${_include_destination}/Config +install(DIRECTORY + ${CMAKE_CURRENT_SOURCE_DIR}/include/ + DESTINATION ${CMAKE_INSTALL_PREFIX}/dpctl/include + FILES_MATCHING REGEX "\\.h(pp)?$" ) # Add sub-directory to build the dpctl C API test cases From 6f83a4383be0303289177a727818ebc4b98547e7 Mon Sep 17 00:00:00 2001 From: Yevhenii Havrylko Date: Thu, 14 Mar 2024 14:21:13 -0400 Subject: [PATCH 07/12] Update headers path in package data --- setup.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/setup.py b/setup.py index c20683217f..74595b1681 100644 --- a/setup.py +++ b/setup.py @@ -190,10 +190,10 @@ def _get_cmdclass(): "tensor/libtensor/include/kernels/*.h*", "tensor/libtensor/include/utils/*.h*", "tensor/include/dlpack/*.*", - "_sycl*.h", - "memory/_memory*.h", - "program/_program*.h", - "tensor/_usmarray*.h", + "include/dpctl/_sycl*.h", + "include/dpctl/memory/_memory*.h", + "include/dpctl/program/_program*.h", + "include/dpctl/tensor/_usmarray*.h", "*.pxd", "memory/*.pxd", "tensor/*.pxd", From 98fd0d33f2a1b68827dbd2ec0522a123dce5b603 Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Fri, 15 Mar 2024 16:21:37 -0500 Subject: [PATCH 08/12] Fix spacing --- dpctl/CMakeLists.txt | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/dpctl/CMakeLists.txt b/dpctl/CMakeLists.txt index e221c6e1ef..dc329fea31 100644 --- a/dpctl/CMakeLists.txt +++ b/dpctl/CMakeLists.txt @@ -85,19 +85,19 @@ function(build_dpctl_ext _trgt _src _dest) Python_add_library(${_trgt} MODULE WITH_SOABI ${_generated_src}) if (BUILD_DPCTL_EXT_SYCL) add_sycl_to_target(TARGET ${_trgt} SOURCES ${_generated_src}) - if(_dpctl_sycl_targets) - # make fat binary + if(_dpctl_sycl_targets) + # make fat binary target_compile_options( ${_trgt} PRIVATE -fsycl-targets=${_dpctl_sycl_targets} ) - target_link_options( - ${_trgt} - PRIVATE - -fsycl-targets=${_dpctl_sycl_targets} - ) - endif() + target_link_options( + ${_trgt} + PRIVATE + -fsycl-targets=${_dpctl_sycl_targets} + ) + endif() endif() target_link_libraries(${_trgt} PRIVATE Python::NumPy) if (DPCTL_GENERATE_COVERAGE) From 8ca5ead8e859a608df69e432a2d6b2264525ae67 Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Fri, 15 Mar 2024 16:21:51 -0500 Subject: [PATCH 09/12] When building for coverage, ensure CXX are installed next to PYX This is blog by Stefan Behnel, maintainer of Cython, http://blog.behnel.de/posts/coverage-analysis-for-cython-modules.html --- dpctl/CMakeLists.txt | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/dpctl/CMakeLists.txt b/dpctl/CMakeLists.txt index dc329fea31..c7ac3b32ad 100644 --- a/dpctl/CMakeLists.txt +++ b/dpctl/CMakeLists.txt @@ -129,6 +129,14 @@ function(build_dpctl_ext _trgt _src _dest) ${_generated_public_h} DESTINATION ${CMAKE_INSTALL_PREFIX}/dpctl/include/${_dest} OPTIONAL) + if (DPCTL_GENERATE_COVERAGE) + get_filename_component(_original_src_dir ${_src} DIRECTORY) + file(RELATIVE_PATH _rel_dir ${CMAKE_SOURCE_DIR} ${_original_src_dir}) + install(FILES + ${_generated_src} + DESTINATION ${CMAKE_INSTALL_PREFIX}/${_rel_dir} + ) + endif() # Create target with headers only, because python is managing all the # library imports at runtime From bdb3a5c7b79487b95ba8f8524af7759659bc0d9a Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Fri, 15 Mar 2024 16:23:30 -0500 Subject: [PATCH 10/12] For Cython sources that are built as SYCL, use no-use-sycl-footer --- dpctl/CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dpctl/CMakeLists.txt b/dpctl/CMakeLists.txt index c7ac3b32ad..fb33b0f8b7 100644 --- a/dpctl/CMakeLists.txt +++ b/dpctl/CMakeLists.txt @@ -102,7 +102,9 @@ function(build_dpctl_ext _trgt _src _dest) target_link_libraries(${_trgt} PRIVATE Python::NumPy) if (DPCTL_GENERATE_COVERAGE) target_compile_definitions(${_trgt} PRIVATE CYTHON_TRACE=1 CYTHON_TRACE_NOGIL=1) - # target_compile_options(${_trgt} PRIVATE -fno-sycl-use-footer) + if (BUILD_DPCTL_EXT_SYCL) + target_compile_options(${_trgt} PRIVATE -fno-sycl-use-footer) + endif() endif() target_link_libraries(${_trgt} PRIVATE DPCTLSyclInterface) set(_linker_options "LINKER:${DPCTL_LDFLAGS}") From 508a45ec685af675870bf25f3152933f4c70c9f4 Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Fri, 15 Mar 2024 16:25:55 -0500 Subject: [PATCH 11/12] Add comment around setting CYTHON_FLAGS variable --- dpctl/CMakeLists.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dpctl/CMakeLists.txt b/dpctl/CMakeLists.txt index fb33b0f8b7..f94e436a35 100644 --- a/dpctl/CMakeLists.txt +++ b/dpctl/CMakeLists.txt @@ -1,5 +1,7 @@ find_package(Python REQUIRED COMPONENTS Development.Module NumPy) +# -t is to only Cythonize sources with timestamps newer than existing CXX files (if present) +# -w is to set working directory (and correctly set __pyx_f[] array of filenames) set(CYTHON_FLAGS "-t -w \"${CMAKE_SOURCE_DIR}\"") find_package(Cython REQUIRED) From 1757afe8947bd8f725bdda9160ee6ddd9504c0c7 Mon Sep 17 00:00:00 2001 From: Oleksandr Pavlyk Date: Sat, 16 Mar 2024 07:51:21 -0500 Subject: [PATCH 12/12] Add subfolders from libtensor/include/kernels to package_data --- setup.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/setup.py b/setup.py index 74595b1681..6404297dda 100644 --- a/setup.py +++ b/setup.py @@ -188,6 +188,9 @@ def _get_cmdclass(): "include/syclinterface/Config/*.h", "include/syclinterface/Support/*.h", "tensor/libtensor/include/kernels/*.h*", + "tensor/libtensor/include/kernels/sorting/*.h*", + "tensor/libtensor/include/kernels/elementwise_functions/*.h*", + "tensor/libtensor/include/kernels/linalg/*.h*", "tensor/libtensor/include/utils/*.h*", "tensor/include/dlpack/*.*", "include/dpctl/_sycl*.h",