diff --git a/ports/cpuinfo/add-clog-cmake.patch b/ports/cpuinfo/add-clog-cmake.patch new file mode 100644 index 0000000000..7e9bd63ab6 --- /dev/null +++ b/ports/cpuinfo/add-clog-cmake.patch @@ -0,0 +1,13 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index b260162..d63e180 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -929,3 +929,7 @@ IF(CPUINFO_BUILD_PKG_CONFIG) + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig") + + ENDIF() ++ ++IF(CPUINFO_BUILD_CLOG) ++add_subdirectory(deps/clog) ++ENDIF() +\ No newline at end of file diff --git a/ports/cpuinfo/portfile.cmake b/ports/cpuinfo/portfile.cmake index dd52c6c5e5..a55bb7a83d 100644 --- a/ports/cpuinfo/portfile.cmake +++ b/ports/cpuinfo/portfile.cmake @@ -6,14 +6,17 @@ endif() vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO pytorch/cpuinfo - REF 5e63739504f0f8e18e941bd63b2d6d42536c7d90 - SHA512 6a61f4574661a55771c2ec31bb0919a51d0bd8c770477b254a5c14dc5323716af275c7fe3abc5aa96720d7cc929559ca66f614265d3940e076b8db2fa15c8e36 + REF 33ed0be77d7767d0e2010e2c3cf972ef36c7c307 + SHA512 41775802b5a33f1bb0cb2c5dd126180e25d281a57c934d94247130c31ec7bf1dbf269ed9e8e946be1bdeeb09f0c17fee42048f71b4beb44c65df18cfb0cddc3b HEAD_REF master + PATCHES + add-clog-cmake.patch ) vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS FEATURES tools CPUINFO_BUILD_TOOLS + clog CPUINFO_BUILD_CLOG ) set(LINK_OPTIONS "") @@ -37,6 +40,7 @@ vcpkg_cmake_configure( -DCPUINFO_BUILD_UNIT_TESTS=OFF -DCPUINFO_BUILD_MOCK_TESTS=OFF -DCPUINFO_BUILD_BENCHMARKS=OFF + -DCLOG_BUILD_TESTS=OFF OPTIONS_DEBUG -DCPUINFO_LOG_LEVEL=debug OPTIONS_RELEASE diff --git a/ports/cpuinfo/vcpkg.json b/ports/cpuinfo/vcpkg.json index f546ba0119..f617de0e75 100644 --- a/ports/cpuinfo/vcpkg.json +++ b/ports/cpuinfo/vcpkg.json @@ -1,7 +1,6 @@ { "name": "cpuinfo", - "version-date": "2022-07-19", - "port-version": 3, + "version-date": "2025-07-25", "description": "CPU INFOrmation library (x86/x86-64/ARM/ARM64, Linux/Windows/Android/macOS/iOS)", "homepage": "https://github.com/pytorch/cpuinfo", "license": "BSD-2-Clause", @@ -17,6 +16,10 @@ } ], "features": { + "clog": { + "description": "Build clog support", + "supports": "!uwp" + }, "tools": { "description": "Build cpuinfo command-line tools", "supports": "!uwp" diff --git a/ports/fbgemm/fix-cmakelists.patch b/ports/fbgemm/fix-cmakelists.patch index 316c3b0cd7..6ca3e5472a 100644 --- a/ports/fbgemm/fix-cmakelists.patch +++ b/ports/fbgemm/fix-cmakelists.patch @@ -1,5 +1,5 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index 0243f68..ccf7331 100644 +index 0243f68..bbe98e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -94,13 +94,12 @@ project(fbgemm VERSION 0.1 LANGUAGES CXX C) @@ -21,7 +21,7 @@ index 0243f68..ccf7331 100644 option(FBGEMM_BUILD_TESTS "Build fbgemm unit tests" ON) option(FBGEMM_BUILD_BENCHMARKS "Build fbgemm benchmarks" ON) option(FBGEMM_BUILD_DOCS "Build fbgemm documentation" OFF) -@@ -178,7 +177,7 @@ add_dependencies(fbgemm_autovec defs.bzl) +@@ -178,11 +177,12 @@ add_dependencies(fbgemm_autovec defs.bzl) # 2) MSVC uses /MD in default cxx compiling flags, # Need to change it to /MT in static case if(MSVC) @@ -30,7 +30,20 @@ index 0243f68..ccf7331 100644 if(FBGEMM_LIBRARY_TYPE STREQUAL "static") target_compile_definitions(fbgemm_generic PRIVATE ASMJIT_STATIC) target_compile_definitions(fbgemm_avx2 PRIVATE ASMJIT_STATIC) -@@ -199,7 +198,6 @@ if(MSVC) + target_compile_definitions(fbgemm_avx512 PRIVATE ASMJIT_STATIC) ++if(FALSE) + foreach(flag_var + CMAKE_CXX_FLAGS CMAKE_CXX_FLAGS_DEBUG CMAKE_CXX_FLAGS_RELEASE + CMAKE_CXX_FLAGS_MINSIZEREL CMAKE_CXX_FLAGS_RELWITHDEBINFO) +@@ -190,6 +190,7 @@ if(MSVC) + string(REGEX REPLACE "/MD" "/MT" ${flag_var} "${${flag_var}}") + endif(${flag_var} MATCHES "/MD") + endforeach(flag_var) ++endif() + endif() + target_compile_options(fbgemm_avx2 PRIVATE "/arch:AVX2") + target_compile_options(fbgemm_avx512 PRIVATE "/arch:AVX512") +@@ -199,7 +200,6 @@ if(MSVC) else(MSVC) string(APPEND CMAKE_CXX_FLAGS " -Wall") string(APPEND CMAKE_CXX_FLAGS " -Wextra") @@ -38,27 +51,25 @@ index 0243f68..ccf7331 100644 string(APPEND CMAKE_CXX_FLAGS " -Wno-deprecated-declarations") string(APPEND CMAKE_CXX_FLAGS " -Wunknown-pragmas") string(APPEND CMAKE_CXX_FLAGS " -Wimplicit-fallthrough") -@@ -247,7 +245,8 @@ message(WARNING "CMAKE_CXX_FLAGS_DEBUG is ${CMAKE_CXX_FLAGS_DEBUG}") +@@ -247,6 +247,8 @@ message(WARNING "CMAKE_CXX_FLAGS_DEBUG is ${CMAKE_CXX_FLAGS_DEBUG}") message(WARNING "CMAKE_CXX_FLAGS_RELEASE is ${CMAKE_CXX_FLAGS_RELEASE}") message(WARNING "==========") --if(NOT TARGET asmjit) +find_package(asmjit CONFIG REQUIRED) # target 'asmjit::asmjit' -+if(FALSE) ++add_library(asmjit ALIAS asmjit::asmjit) + if(NOT TARGET asmjit) # Download asmjit from github if ASMJIT_SRC_DIR is not specified. if(NOT DEFINED ASMJIT_SRC_DIR) - set(ASMJIT_SRC_DIR "${FBGEMM_SOURCE_DIR}/external/asmjit" -@@ -280,7 +279,8 @@ if(NOT TARGET asmjit) +@@ -280,6 +282,8 @@ if(NOT TARGET asmjit) endif() endif() --if(NOT TARGET cpuinfo) +find_package(cpuinfo CONFIG REQUIRED) # target 'cpuinfo::cpuinfo' -+if(FALSE) ++add_library(cpuinfo ALIAS cpuinfo::cpuinfo) + if(NOT TARGET cpuinfo) #Download cpuinfo from github if CPUINFO_SOURCE_DIR is not specified. if(NOT DEFINED CPUINFO_SOURCE_DIR) - set(CPUINFO_SOURCE_DIR "${FBGEMM_SOURCE_DIR}/external/cpuinfo" -@@ -301,26 +301,26 @@ endif() +@@ -301,26 +305,26 @@ endif() target_include_directories(fbgemm_generic BEFORE PUBLIC $ PUBLIC $ @@ -93,7 +104,7 @@ index 0243f68..ccf7331 100644 if(FBGEMM_LIBRARY_TYPE STREQUAL "default") add_library(fbgemm -@@ -338,6 +338,7 @@ elseif(FBGEMM_LIBRARY_TYPE STREQUAL "shared") +@@ -338,6 +342,7 @@ elseif(FBGEMM_LIBRARY_TYPE STREQUAL "shared") set_property(TARGET fbgemm_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET fbgemm_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) set_property(TARGET fbgemm_autovec PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -101,7 +112,24 @@ index 0243f68..ccf7331 100644 elseif(FBGEMM_LIBRARY_TYPE STREQUAL "static") add_library(fbgemm STATIC $ -@@ -364,15 +365,10 @@ target_include_directories(fbgemm BEFORE +@@ -346,11 +351,11 @@ elseif(FBGEMM_LIBRARY_TYPE STREQUAL "static") + $) + #MSVC need to define FBGEMM_STATIC for fbgemm_generic also to + #avoid generating _dllimport functions. +- target_compile_definitions(fbgemm_generic PRIVATE FBGEMM_STATIC) +- target_compile_definitions(fbgemm_avx2 PRIVATE FBGEMM_STATIC) +- target_compile_definitions(fbgemm_avx512 PRIVATE FBGEMM_STATIC) +- target_compile_definitions(fbgemm_autovec PRIVATE FBGEMM_STATIC) +- target_compile_definitions(fbgemm PRIVATE FBGEMM_STATIC) ++ target_compile_definitions(fbgemm_generic PUBLIC FBGEMM_STATIC) ++ target_compile_definitions(fbgemm_avx2 PUBLIC FBGEMM_STATIC) ++ target_compile_definitions(fbgemm_avx512 PUBLIC FBGEMM_STATIC) ++ target_compile_definitions(fbgemm_autovec PUBLIC FBGEMM_STATIC) ++ target_compile_definitions(fbgemm PUBLIC FBGEMM_STATIC) + else() + message(FATAL_ERROR "Unsupported library type ${FBGEMM_LIBRARY_TYPE}") + endif() +@@ -364,20 +369,15 @@ target_include_directories(fbgemm BEFORE PUBLIC $ PUBLIC $) @@ -119,12 +147,44 @@ index 0243f68..ccf7331 100644 endif() install( -@@ -391,7 +387,7 @@ install( - DESTINATION share/cmake/fbgemm - FILE fbgemmLibraryConfig.cmake) + TARGETS fbgemm +- EXPORT fbgemmLibraryConfig ++ EXPORT unofficial-fbgemm-config-targets + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) #For windows +@@ -387,11 +387,16 @@ install( + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}/fbgemm") + + install( +- EXPORT fbgemmLibraryConfig +- DESTINATION share/cmake/fbgemm +- FILE fbgemmLibraryConfig.cmake) ++ EXPORT unofficial-fbgemm-config-targets ++ FILE unofficial-fbgemm-config-targets.cmake ++ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/fbgemmLibrary) -if(MSVC) ++include(CMakePackageConfigHelpers) ++configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/fbgemmLibraryConfig.cmake" INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/fbgemmLibrary) ++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/fbgemmLibraryConfig.cmake DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/fbgemmLibrary) ++ ++ +if(FALSE) if(FBGEMM_LIBRARY_TYPE STREQUAL "shared") install( FILES $ $ +diff --git a/Config.cmake.in b/Config.cmake.in +new file mode 100644 +index 0000000..e2e187d +--- /dev/null ++++ b/Config.cmake.in +@@ -0,0 +1,8 @@ ++@PACKAGE_INIT@ ++ ++include(CMakeFindDependencyMacro) ++find_dependency(asmjit) ++find_dependency(cpuinfo) ++ ++ ++include ( "${CMAKE_CURRENT_LIST_DIR}/unofficial-fbgemm-config-targets.cmake" ) diff --git a/ports/fbgemm/portfile.cmake b/ports/fbgemm/portfile.cmake index 4fb824858f..36002515e8 100644 --- a/ports/fbgemm/portfile.cmake +++ b/ports/fbgemm/portfile.cmake @@ -20,7 +20,7 @@ vcpkg_cmake_configure( ) vcpkg_cmake_install() vcpkg_copy_pdbs() -vcpkg_cmake_config_fixup(PACKAGE_NAME fbgemmLibrary CONFIG_PATH share/cmake/${PORT}) +vcpkg_cmake_config_fixup(PACKAGE_NAME fbgemmLibrary) # this internal header is required by pytorch file(INSTALL "${SOURCE_PATH}/src/RefImplementations.h" diff --git a/ports/fbgemm/vcpkg.json b/ports/fbgemm/vcpkg.json index 838a0d2cab..2df593a477 100644 --- a/ports/fbgemm/vcpkg.json +++ b/ports/fbgemm/vcpkg.json @@ -1,6 +1,7 @@ { "name": "fbgemm", "version": "1.0.0", + "port-version": 1, "description": "FB (Facebook) + GEMM (General Matrix-Matrix Multiplication)", "homepage": "https://code.fb.com/ml-applications/fbgemm/", "license": "BSD-3-Clause", diff --git a/ports/libtorch/add-include-chrono.patch b/ports/libtorch/add-include-chrono.patch deleted file mode 100644 index 0375ba860e..0000000000 --- a/ports/libtorch/add-include-chrono.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff --git a/torch/csrc/jit/runtime/logging.h b/torch/csrc/jit/runtime/logging.h -index 5499ecf..269168e 100644 ---- a/torch/csrc/jit/runtime/logging.h -+++ b/torch/csrc/jit/runtime/logging.h -@@ -1,5 +1,6 @@ - #pragma once - -+#include - #include - #include - #include diff --git a/ports/libtorch/clang-cl.patch b/ports/libtorch/clang-cl.patch deleted file mode 100644 index 4c19683197..0000000000 --- a/ports/libtorch/clang-cl.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff --git a/c10/util/Exception.h b/c10/util/Exception.h -index 2dd1001..b3f3d60 100644 ---- a/c10/util/Exception.h -+++ b/c10/util/Exception.h -@@ -233,12 +233,16 @@ struct C10_API WarnAlways { - // IndexError when they cross to Python. - class C10_API IndexError : public Error { - using Error::Error; -+public: -+ inline IndexError(SourceLocation source_location, std::string msg) : Error(source_location,msg) {}; - }; - - // Used in ATen for invalid values. These turn into - // ValueError when they cross to Python. - class C10_API ValueError : public Error { - using Error::Error; -+public: -+ inline ValueError(SourceLocation source_location, std::string msg) : Error(source_location,msg) {}; - }; - - // Used in ATen for invalid types. These turn into -diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt -index cf349c2..f7a595e 100644 ---- a/caffe2/CMakeLists.txt -+++ b/caffe2/CMakeLists.txt -@@ -830,7 +830,7 @@ if(BUILD_CAFFE2 AND NOT MSVC) - target_compile_options(torch_cpu PRIVATE "-Wno-sign-compare") - endif() - --if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND NOT USE_VULKAN AND NOT USE_IOS AND NOT USE_PYTORCH_METAL AND NOT USE_COREML_DELEGATE) -+if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang" AND NOT USE_VULKAN AND NOT USE_IOS AND NOT USE_PYTORCH_METAL AND NOT USE_COREML_DELEGATE AND NOT MSVC) - target_compile_options_if_supported(torch_cpu "-Wmissing-prototypes") - target_compile_options_if_supported(torch_cpu "-Werror=missing-prototypes") - get_target_property(TORCH_CPU_SOURCES torch_cpu SOURCES) -diff --git a/functorch/csrc/dim/arena.h b/functorch/csrc/dim/arena.h -index 3251321..cb09b7c 100644 ---- a/functorch/csrc/dim/arena.h -+++ b/functorch/csrc/dim/arena.h -@@ -8,7 +8,7 @@ - #include - #include "minpybind.h" - --#ifdef _WIN32 -+#if defined(_WIN32) && !defined(__clang__) - #include - // https://stackoverflow.com/questions/355967/how-to-use-msvc-intrinsics-to-get-the-equivalent-of-this-gcc-code - inline unsigned int __builtin_clz(unsigned int x) { diff --git a/ports/libtorch/cmake-fixes.patch b/ports/libtorch/cmake-fixes.patch deleted file mode 100644 index 8d618714ef..0000000000 --- a/ports/libtorch/cmake-fixes.patch +++ /dev/null @@ -1,254 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 3a48eaf..7b8bc7c 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -1049,8 +1049,7 @@ if(USE_MIMALLOC) - set(MI_BUILD_OBJECT OFF) - set(MI_BUILD_TESTS OFF) - add_definitions(-DUSE_MIMALLOC) -- add_subdirectory(third_party/mimalloc) -- include_directories(third_party/mimalloc/include) -+ find_package(mimalloc REQUIRED) - endif() - - # ---[ Main build -diff --git a/aten/src/ATen/native/quantized/cpu/qnnpack/CMakeLists.txt b/aten/src/ATen/native/quantized/cpu/qnnpack/CMakeLists.txt -index fd6b7ff..d185233 100644 ---- a/aten/src/ATen/native/quantized/cpu/qnnpack/CMakeLists.txt -+++ b/aten/src/ATen/native/quantized/cpu/qnnpack/CMakeLists.txt -@@ -368,7 +368,7 @@ elseif(NOT TARGET pthreadpool AND USE_SYSTEM_PTHREADPOOL) - if(NOT PTHREADPOOL_LIBRARY) - message(FATAL_ERROR "Cannot find pthreadpool") - endif() -- message("-- Found pthreadpool: ${PTHREADPOOL_LIBRARY}") -+ message("-- Found pthreadpool cpu qnnpack: ${PTHREADPOOL_LIBRARY}") - set_target_properties(pthreadpool PROPERTIES - IMPORTED_LOCATION "${PTHREADPOOL_LIBRARY}") - add_library(pthreadpool_interface INTERFACE) -diff --git a/c10/CMakeLists.txt b/c10/CMakeLists.txt -index feebad7..ad407e1 100644 ---- a/c10/CMakeLists.txt -+++ b/c10/CMakeLists.txt -@@ -109,8 +109,7 @@ else() - endif() - - if(USE_MIMALLOC) -- target_link_libraries(c10 PRIVATE "mimalloc-static") -- add_dependencies(c10 mimalloc-static) -+ target_link_libraries(c10 PRIVATE "mimalloc") - endif() - - if(ANDROID) -diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake -index c3abce5..63f665f 100644 ---- a/cmake/Dependencies.cmake -+++ b/cmake/Dependencies.cmake -@@ -285,7 +285,7 @@ endif() - set(AT_FFTW_ENABLED 0) - set(USE_FFTW OFF) - if(USE_FFTW OR NOT MKL_FOUND) -- find_library(LIBFFTW3 fftw3) -+ find_library(LIBFFTW3 NAMES fftw3 REQUIRED) - if(LIBFFTW3) - find_path(FFTW3_INCLUDE_DIR NAMES fftw3.h ONLY_CMAKE_FIND_ROOT_PATH) - if(FFTW3_INCLUDE_DIR) -@@ -415,8 +415,8 @@ if(INTERN_BUILD_MOBILE OR NOT DISABLE_NNPACK_AND_FAMILY) - - if(NOT TARGET pthreadpool) - if(USE_SYSTEM_PTHREADPOOL) -- add_library(pthreadpool SHARED IMPORTED) -- find_library(PTHREADPOOL_LIBRARY pthreadpool) -+ add_library(pthreadpool UNKNOWN IMPORTED) -+ find_library(PTHREADPOOL_LIBRARY pthreadpool PATH_SUFFIXES lib) - set_property(TARGET pthreadpool PROPERTY IMPORTED_LOCATION "${PTHREADPOOL_LIBRARY}") - if(NOT PTHREADPOOL_LIBRARY) - message(FATAL_ERROR "Cannot find pthreadpool") -@@ -450,13 +450,15 @@ endif() - - # ---[ Caffe2 uses cpuinfo library in the thread pool - if(NOT TARGET cpuinfo AND USE_SYSTEM_CPUINFO) -- add_library(cpuinfo SHARED IMPORTED) -- find_library(CPUINFO_LIBRARY cpuinfo) -+ add_library(cpuinfo UNKNOWN IMPORTED) -+ find_library(CPUINFO_LIBRARY NAMES cpuinfo REQUIRED) -+ find_library(CLOG_LIBRARY NAMES clog REQUIRED) - if(NOT CPUINFO_LIBRARY) - message(FATAL_ERROR "Cannot find cpuinfo") - endif() - message("Found cpuinfo: ${CPUINFO_LIBRARY}") - set_target_properties(cpuinfo PROPERTIES IMPORTED_LOCATION "${CPUINFO_LIBRARY}") -+ target_link_libraries(cpuinfo INTERFACE "${CLOG_LIBRARY}") - elseif(NOT TARGET cpuinfo) - if(NOT DEFINED CPUINFO_SOURCE_DIR) - set(CPUINFO_SOURCE_DIR "${CMAKE_CURRENT_LIST_DIR}/../third_party/cpuinfo" CACHE STRING "cpuinfo source directory") -@@ -659,8 +661,8 @@ if(USE_XNNPACK AND NOT USE_SYSTEM_XNNPACK) - include_directories(SYSTEM ${XNNPACK_INCLUDE_DIR}) - list(APPEND Caffe2_DEPENDENCY_LIBS XNNPACK) - elseif(NOT TARGET XNNPACK AND USE_SYSTEM_XNNPACK) -- add_library(XNNPACK SHARED IMPORTED) -- find_library(XNNPACK_LIBRARY XNNPACK) -+ add_library(XNNPACK UNKNOWN IMPORTED) -+ find_library(XNNPACK_LIBRARY NAMES XNNPACK REQUIRED) - set_property(TARGET XNNPACK PROPERTY IMPORTED_LOCATION "${XNNPACK_LIBRARY}") - if(NOT XNNPACK_LIBRARY) - message(FATAL_ERROR "Cannot find XNNPACK") -@@ -858,7 +860,7 @@ endif() - - # ---[ LMDB - if(USE_LMDB) -- find_package(LMDB) -+ find_package(LMDB REQUIRED) - if(LMDB_FOUND) - include_directories(SYSTEM ${LMDB_INCLUDE_DIR}) - list(APPEND Caffe2_DEPENDENCY_LIBS ${LMDB_LIBRARIES}) -@@ -1002,8 +1004,9 @@ if(NOT TARGET fp16 AND NOT USE_SYSTEM_FP16) - "${FP16_SOURCE_DIR}" - "${CONFU_DEPENDENCIES_BINARY_DIR}/FP16") - elseif(NOT TARGET fp16 AND USE_SYSTEM_FP16) -- add_library(fp16 STATIC "/usr/include/fp16.h") -- set_target_properties(fp16 PROPERTIES LINKER_LANGUAGE C) -+ find_path(FP16_INCLUDE_DIR NAMES fp16.h PATH_SUFFIXES include) -+ add_library(fp16 INTERFACE) -+ target_include_directories(fp16 INTERFACE "${FP16_INCLUDE_DIR}") - endif() - list(APPEND Caffe2_DEPENDENCY_LIBS fp16) - -@@ -1127,7 +1130,7 @@ if(BUILD_PYTHON) - # Observers are required in the python build - caffe2_update_option(USE_OBSERVERS ON) - else() -- message(WARNING "Python dependencies not met. Not compiling with python. Suppress this warning with -DBUILD_PYTHON=OFF") -+ message(FATAL_ERROR "Python dependencies not met. Not compiling with python. Suppress this warning with -DBUILD_PYTHON=OFF") - caffe2_update_option(BUILD_PYTHON OFF) - endif() - endif() -@@ -1231,7 +1234,7 @@ endif() - # ---[ LLVM - if(USE_LLVM) - message(STATUS "Looking for LLVM in ${USE_LLVM}") -- find_package(LLVM PATHS ${USE_LLVM} NO_DEFAULT_PATH) -+ find_package(LLVM) - - if(LLVM_FOUND) - message(STATUS "Found LLVM ${LLVM_PACKAGE_VERSION}") -@@ -1244,8 +1247,10 @@ endif(USE_LLVM) - - # ---[ cuDNN - if(USE_CUDNN) -+ find_package(CUDNN REQUIRED) - set(CUDNN_FRONTEND_INCLUDE_DIR ${CMAKE_CURRENT_LIST_DIR}/../third_party/cudnn_frontend/include) - target_include_directories(torch::cudnn INTERFACE ${CUDNN_FRONTEND_INCLUDE_DIR}) -+ target_include_directories(torch::cudnn INTERFACE "${CUDNN_INCLUDE_DIR}") - endif() - - # ---[ HIP -@@ -1555,7 +1560,10 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX) - set_target_properties(onnx_proto PROPERTIES CXX_STANDARD 17) - endif() - endif() -- add_subdirectory(${CMAKE_CURRENT_LIST_DIR}/../third_party/foxi EXCLUDE_FROM_ALL) -+ -+ # setup foxi -+ find_library(FOXI_LOADER_LIBPATH NAMES foxi_loader REQUIRED) -+ list(APPEND Caffe2_DEPENDENCY_LIBS "${FOXI_LOADER_LIBPATH}") - - add_definitions(-DONNX_NAMESPACE=${ONNX_NAMESPACE}) - if(NOT USE_SYSTEM_ONNX) -@@ -1573,23 +1581,13 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX) - target_compile_options(onnx PRIVATE -Wno-deprecated-declarations) - endif() - else() -- add_library(onnx SHARED IMPORTED) -- find_library(ONNX_LIBRARY onnx) -- if(NOT ONNX_LIBRARY) -- message(FATAL_ERROR "Cannot find onnx") -- endif() -- set_property(TARGET onnx PROPERTY IMPORTED_LOCATION ${ONNX_LIBRARY}) -- add_library(onnx_proto SHARED IMPORTED) -- find_library(ONNX_PROTO_LIBRARY onnx_proto) -- if(NOT ONNX_PROTO_LIBRARY) -- message(FATAL_ERROR "Cannot find onnx") -- endif() -- set_property(TARGET onnx_proto PROPERTY IMPORTED_LOCATION ${ONNX_PROTO_LIBRARY}) -- message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}") -- list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx) -+ find_package(ONNX CONFIG REQUIRED) -+ set(ONNX_LIBRARY ONNX::onnx) -+ set(ONNX_PROTO_LIBRARY ONNX::onnx_proto) -+ list(APPEND Caffe2_DEPENDENCY_LIBS ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}) - endif() - include_directories(${FOXI_INCLUDE_DIRS}) -- list(APPEND Caffe2_DEPENDENCY_LIBS foxi_loader) -+ list(APPEND Caffe2_DEPENDENCY_LIBS "${FOXI_LOADER_LIBPATH}") - # Recover the build shared libs option. - set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS}) - endif() -@@ -1834,8 +1832,8 @@ endif() - # - set(TEMP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) - set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libs" FORCE) --add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt) -- -+#add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt) -+find_package(fmt REQUIRED) - # Disable compiler feature checks for `fmt`. - # - # CMake compiles a little program to check compiler features. Some of our build -@@ -1843,7 +1841,6 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt) - # CMAKE_CXX_FLAGS in ways that break feature checks. Since we already know - # `fmt` is compatible with a superset of the compilers that PyTorch is, it - # shouldn't be too bad to just disable the checks. --set_target_properties(fmt-header-only PROPERTIES INTERFACE_COMPILE_FEATURES "") - - list(APPEND Caffe2_DEPENDENCY_LIBS fmt::fmt-header-only) - set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS} CACHE BOOL "Build shared libs" FORCE) -diff --git a/cmake/Modules/FindLMDB.cmake b/cmake/Modules/FindLMDB.cmake -index 2f0adb1..8a817fd 100644 ---- a/cmake/Modules/FindLMDB.cmake -+++ b/cmake/Modules/FindLMDB.cmake -@@ -12,12 +12,8 @@ - # Copyright 2013 Conrad Steenberg - # Aug 31, 2013 - --if(MSVC) -- find_package(LMDB NO_MODULE) --else() -- find_path(LMDB_INCLUDE_DIR NAMES lmdb.h PATHS "$ENV{LMDB_DIR}/include") -- find_library(LMDB_LIBRARIES NAMES lmdb PATHS "$ENV{LMDB_DIR}/lib" ) --endif() -+find_path(LMDB_INCLUDE_DIR NAMES lmdb.h PATHS "$ENV{LMDB_DIR}/include") -+find_library(LMDB_LIBRARIES NAMES lmdb PATHS "$ENV{LMDB_DIR}/lib" ) - - include(FindPackageHandleStandardArgs) - find_package_handle_standard_args(LMDB DEFAULT_MSG LMDB_INCLUDE_DIR LMDB_LIBRARIES) -diff --git a/cmake/public/cuda.cmake b/cmake/public/cuda.cmake -index 32f3ba3..4112937 100644 ---- a/cmake/public/cuda.cmake -+++ b/cmake/public/cuda.cmake -@@ -67,8 +67,8 @@ if(NOT CMAKE_CUDA_COMPILER_VERSION STREQUAL CUDAToolkit_VERSION OR - "V${CUDAToolkit_VERSION} in '${CUDAToolkit_INCLUDE_DIR}'") - endif() - --if(NOT TARGET CUDA::nvToolsExt) -- message(FATAL_ERROR "Failed to find nvToolsExt") -+if(NOT TARGET CUDA::nvToolsExt AND TARGET CUDA::nvtx3) -+ add_library(CUDA::nvToolsExt ALIAS CUDA::nvtx3) - endif() - - message(STATUS "Caffe2: CUDA detected: " ${CUDA_VERSION}) -diff --git a/cmake/public/utils.cmake b/cmake/public/utils.cmake -index 4d48c0f..ebdd39a 100644 ---- a/cmake/public/utils.cmake -+++ b/cmake/public/utils.cmake -@@ -185,9 +185,9 @@ endfunction() - macro(caffe2_update_option variable value) - if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO) - get_property(__help_string CACHE ${variable} PROPERTY HELPSTRING) -- set(${variable} ${value} CACHE BOOL ${__help_string} FORCE) -+ set("${variable}" "${value}" CACHE BOOL "${__help_string}" FORCE) - else() -- set(${variable} ${value}) -+ set("${variable}" "${value}") - endif() - endmacro() - diff --git a/ports/libtorch/cuda-adjustments.patch b/ports/libtorch/cuda-adjustments.patch deleted file mode 100644 index 0403ea67c1..0000000000 --- a/ports/libtorch/cuda-adjustments.patch +++ /dev/null @@ -1,63 +0,0 @@ -diff --git a/cmake/Modules_CUDA_fix/upstream/FindCUDA.cmake b/cmake/Modules_CUDA_fix/upstream/FindCUDA.cmake -index 420ee63..8bc24a0 100644 ---- a/cmake/Modules_CUDA_fix/upstream/FindCUDA.cmake -+++ b/cmake/Modules_CUDA_fix/upstream/FindCUDA.cmake -@@ -1691,14 +1691,6 @@ function(CUDA_LINK_SEPARABLE_COMPILATION_OBJECTS output_file cuda_target options - # If -ccbin, --compiler-bindir has been specified, don't do anything. Otherwise add it here. - list( FIND nvcc_flags "-ccbin" ccbin_found0 ) - list( FIND nvcc_flags "--compiler-bindir" ccbin_found1 ) -- if( ccbin_found0 LESS 0 AND ccbin_found1 LESS 0 AND CUDA_HOST_COMPILER ) -- # Match VERBATIM check below. -- if(CUDA_HOST_COMPILER MATCHES "\\$\\(VCInstallDir\\)") -- list(APPEND nvcc_flags -ccbin "\"${CUDA_HOST_COMPILER}\"") -- else() -- list(APPEND nvcc_flags -ccbin "${CUDA_HOST_COMPILER}") -- endif() -- endif() - - # Create a list of flags specified by CUDA_NVCC_FLAGS_${CONFIG} and CMAKE_${CUDA_C_OR_CXX}_FLAGS* - set(config_specific_flags) -diff --git a/cmake/Modules_CUDA_fix/upstream/FindCUDA/run_nvcc.cmake b/cmake/Modules_CUDA_fix/upstream/FindCUDA/run_nvcc.cmake -index 9293df3..8c12015 100644 ---- a/cmake/Modules_CUDA_fix/upstream/FindCUDA/run_nvcc.cmake -+++ b/cmake/Modules_CUDA_fix/upstream/FindCUDA/run_nvcc.cmake -@@ -126,13 +126,6 @@ list(APPEND CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS_${build_configuration}}) - # Any -ccbin existing in CUDA_NVCC_FLAGS gets highest priority - list( FIND CUDA_NVCC_FLAGS "-ccbin" ccbin_found0 ) - list( FIND CUDA_NVCC_FLAGS "--compiler-bindir" ccbin_found1 ) --if( ccbin_found0 LESS 0 AND ccbin_found1 LESS 0 AND CUDA_HOST_COMPILER ) -- if (CUDA_HOST_COMPILER STREQUAL "@_CUDA_MSVC_HOST_COMPILER@" AND DEFINED CCBIN) -- set(CCBIN -ccbin "${CCBIN}") -- else() -- set(CCBIN -ccbin "${CUDA_HOST_COMPILER}") -- endif() --endif() - - # cuda_execute_process - Executes a command with optional command echo and status message. - # -diff --git a/cmake/Modules_CUDA_fix/upstream/FindCUDA/select_compute_arch.cmake b/cmake/Modules_CUDA_fix/upstream/FindCUDA/select_compute_arch.cmake -index d917738..6d0d4fa 100644 ---- a/cmake/Modules_CUDA_fix/upstream/FindCUDA/select_compute_arch.cmake -+++ b/cmake/Modules_CUDA_fix/upstream/FindCUDA/select_compute_arch.cmake -@@ -30,7 +30,6 @@ endif() - set(CUDA_KNOWN_GPU_ARCHITECTURES "Kepler" "Maxwell") - - # This list will be used for CUDA_ARCH_NAME = Common option (enabled by default) --set(CUDA_COMMON_GPU_ARCHITECTURES "3.5" "5.0") - - # This list is used to filter CUDA archs when autodetecting - set(CUDA_ALL_GPU_ARCHITECTURES "3.5" "5.0") -diff --git a/cmake/public/cuda.cmake b/cmake/public/cuda.cmake -index 4112937..5964429 100644 ---- a/cmake/public/cuda.cmake -+++ b/cmake/public/cuda.cmake -@@ -41,9 +41,6 @@ set(CUDAToolkit_ROOT "${CUDA_TOOLKIT_ROOT_DIR}") - # Pass clang as host compiler, which according to the docs - # Must be done before CUDA language is enabled, see - # https://cmake.org/cmake/help/v3.15/variable/CMAKE_CUDA_HOST_COMPILER.html --if("${CMAKE_CXX_COMPILER_ID}" MATCHES "Clang") -- set(CMAKE_CUDA_HOST_COMPILER "${CMAKE_C_COMPILER}") --endif() - enable_language(CUDA) - if("X${CMAKE_CUDA_STANDARD}" STREQUAL "X" ) - set(CMAKE_CUDA_STANDARD ${CMAKE_CXX_STANDARD}) diff --git a/ports/libtorch/fix-api-export.patch b/ports/libtorch/fix-api-export.patch deleted file mode 100644 index bf5bf01b8d..0000000000 --- a/ports/libtorch/fix-api-export.patch +++ /dev/null @@ -1,39 +0,0 @@ -diff --git a/aten/src/ATen/Context.h b/aten/src/ATen/Context.h -index 285c6f7..1040acc 100644 ---- a/aten/src/ATen/Context.h -+++ b/aten/src/ATen/Context.h -@@ -28,7 +28,7 @@ namespace at { - - class Tensor; - --enum class TORCH_API Float32MatmulPrecision { HIGHEST, HIGH, MEDIUM }; -+enum class Float32MatmulPrecision { HIGHEST, HIGH, MEDIUM }; - - class TORCH_API Context { - public: -diff --git a/aten/src/ATen/core/function_schema.h b/aten/src/ATen/core/function_schema.h -index c48e9b0..cd8d4dd 100644 ---- a/aten/src/ATen/core/function_schema.h -+++ b/aten/src/ATen/core/function_schema.h -@@ -206,7 +206,7 @@ inline bool operator!=(const Argument& lhs, const Argument& rhs) { - return !(lhs == rhs); - } - --enum struct TORCH_API SchemaArgType { input, output }; -+enum struct SchemaArgType { input, output }; - - /** - * struct SchemaArgument -diff --git a/torch/csrc/jit/runtime/static/native_ops.cpp b/torch/csrc/jit/runtime/static/native_ops.cpp -index 7f3cbcf..fe80ab1 100644 ---- a/torch/csrc/jit/runtime/static/native_ops.cpp -+++ b/torch/csrc/jit/runtime/static/native_ops.cpp -@@ -1055,7 +1055,7 @@ namespace { - execution is completed, future is marked as complete to - indicate aten::wait() to proceed - */ --class TORCH_API ForkedSubgraphSRLauncher { -+class ForkedSubgraphSRLauncher { - public: - ForkedSubgraphSRLauncher( - std::shared_ptr smodule, diff --git a/ports/libtorch/fix-aten-cutlass.patch b/ports/libtorch/fix-aten-cutlass.patch deleted file mode 100644 index f40972ab15..0000000000 --- a/ports/libtorch/fix-aten-cutlass.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 80bbfc6b..eead313d 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -560,6 +560,8 @@ if(MSVC) - - string(APPEND CMAKE_CXX_FLAGS " /FS") - string(APPEND CMAKE_CUDA_FLAGS " -Xcompiler /FS") -+ # CUTLASS_CONSTEXPR_IF_CXX17 must be constexpr. Correct the __cplusplus value -+ string(APPEND CMAKE_CUDA_FLAGS " -Xcompiler /Zc:__cplusplus") - endif(MSVC) - - string(APPEND CMAKE_CUDA_FLAGS " -Xfatbin -compress-all") -diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt -index 93021a74..0755c890 100644 ---- a/aten/src/ATen/CMakeLists.txt -+++ b/aten/src/ATen/CMakeLists.txt -@@ -437,7 +437,13 @@ if(NOT MSVC AND NOT EMSCRIPTEN AND NOT INTERN_BUILD_MOBILE) - endif() - - if(USE_CUDA AND NOT USE_ROCM) -- list(APPEND ATen_CUDA_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/../../../third_party/cutlass/include) -+ find_package(NvidiaCutlass CONFIG REQUIRED) -+ get_target_property(CUTLASS_INCLUDE_DIRS nvidia::cutlass::cutlass INTERFACE_INCLUDE_DIRECTORIES) -+ list(APPEND ATen_CUDA_INCLUDE ${CUTLASS_INCLUDE_DIRS}) -+ if(MSVC) -+ # CUTLASS_CONSTEXPR_IF_CXX17 must be constexpr. Correct the __cplusplus value with MSVC -+ add_compile_options($<$:"-Xcompiler /Zc:__cplusplus">) -+ endif() - if($ENV{ATEN_STATIC_CUDA}) - list(APPEND ATen_CUDA_DEPENDENCY_LIBS - ${CUDA_LIBRARIES} diff --git a/ports/libtorch/fix-build-error-with-fmt11.patch b/ports/libtorch/fix-build-error-with-fmt11.patch deleted file mode 100644 index 3521262481..0000000000 --- a/ports/libtorch/fix-build-error-with-fmt11.patch +++ /dev/null @@ -1,36 +0,0 @@ -diff --git a/torch/csrc/distributed/c10d/socket.cpp b/torch/csrc/distributed/c10d/socket.cpp -index 51ea05fa..3c3fbb39 100644 ---- a/torch/csrc/distributed/c10d/socket.cpp -+++ b/torch/csrc/distributed/c10d/socket.cpp -@@ -29,6 +29,7 @@ - - #include - #include -+#include - - #include - #include -diff --git a/torch/csrc/profiler/standalone/execution_trace_observer.cpp b/torch/csrc/profiler/standalone/execution_trace_observer.cpp -index 93d9e2d1..ea241a8b 100644 ---- a/torch/csrc/profiler/standalone/execution_trace_observer.cpp -+++ b/torch/csrc/profiler/standalone/execution_trace_observer.cpp -@@ -10,6 +10,7 @@ - #endif // _WIN32 - - #include -+#include - #include - #include - #include -diff --git a/torch/csrc/profiler/util.cpp b/torch/csrc/profiler/util.cpp -index 180555f9..1358c9ab 100644 ---- a/torch/csrc/profiler/util.cpp -+++ b/torch/csrc/profiler/util.cpp -@@ -5,6 +5,7 @@ - #include - #include - #include -+#include - - #ifdef USE_KINETO - #include diff --git a/ports/libtorch/fix-build.patch b/ports/libtorch/fix-build.patch deleted file mode 100644 index d2bf943e79..0000000000 --- a/ports/libtorch/fix-build.patch +++ /dev/null @@ -1,156 +0,0 @@ -diff --git a/c10/cuda/CMakeLists.txt b/c10/cuda/CMakeLists.txt -index c0628d0..5dfb7f2 100644 ---- a/c10/cuda/CMakeLists.txt -+++ b/c10/cuda/CMakeLists.txt -@@ -74,7 +74,11 @@ add_subdirectory(test) - # Note: for now, we will put all export path into one single Caffe2Targets group - # to deal with the cmake deployment need. Inside the Caffe2Targets set, the - # individual libraries like libc10.so and libcaffe2.so are still self-contained. --install(TARGETS c10_cuda EXPORT Caffe2Targets DESTINATION lib) -+install(TARGETS c10_cuda EXPORT Caffe2Targets -+ RUNTIME DESTINATION bin -+ ARCHIVE DESTINATION lib -+ LIBRARY DESTINATION lib -+ ) - foreach(file ${C10_CUDA_HEADERS}) - get_filename_component( dir ${file} DIRECTORY ) - install( FILES ${file} DESTINATION include/c10/cuda/${dir} ) -diff --git a/c10/util/Exception.h b/c10/util/Exception.h -index ecbc7c1..2dd1001 100644 ---- a/c10/util/Exception.h -+++ b/c10/util/Exception.h -@@ -14,6 +14,9 @@ - #define __func__ __FUNCTION__ - #endif - -+#ifdef _MSC_VER -+#pragma warning(suppress : 4251) -+#endif - namespace c10 { - - /// The primary ATen error class. -diff --git a/pyproject.toml b/pyproject.toml -index eb764cb..c70f317 100644 ---- a/pyproject.toml -+++ b/pyproject.toml -@@ -4,11 +4,9 @@ requires = [ - "wheel", - "astunparse", - "numpy", -- "ninja", - "pyyaml", -- "cmake", - "typing-extensions", -- "requests", -+# "requests", - ] - # Use legacy backend to import local packages in setup.py - build-backend = "setuptools.build_meta:__legacy__" -diff --git a/setup.py b/setup.py -index 7016441..a6416c7 100644 ---- a/setup.py -+++ b/setup.py -@@ -263,7 +263,7 @@ from tools.setup_helpers.env import build_type, IS_DARWIN, IS_LINUX, IS_WINDOWS - ################################################################################ - - VERBOSE_SCRIPT = True --RUN_BUILD_DEPS = True -+RUN_BUILD_DEPS = False - # see if the user passed a quiet flag to setup.py arguments and respect - # that in our parts of the build - EMIT_BUILD_WARNING = False -@@ -307,9 +307,9 @@ else: - - # Constant known variables used throughout this file - cwd = os.path.dirname(os.path.abspath(__file__)) --lib_path = os.path.join(cwd, "torch", "lib") -+lib_path = os.path.join(cwd, "../../@TARGET_TRIPLET@/", "lib") - third_party_path = os.path.join(cwd, "third_party") --caffe2_build_dir = os.path.join(cwd, "build") -+caffe2_build_dir = os.path.join(cwd, "../../@TARGET_TRIPLET@") - - # CMAKE: full path to python library - if IS_WINDOWS: -@@ -759,7 +759,7 @@ class build_ext(setuptools.command.build_ext.build_ext): - with open(filename) as f: - return json.load(f) - -- ninja_files = glob.glob("build/*compile_commands.json") -+ ninja_files = glob.glob("../../@TARGET_TRIPLET@/*compile_commands.json") - cmake_files = glob.glob("torch/lib/build/*/compile_commands.json") - all_commands = [entry for f in ninja_files + cmake_files for entry in load(f)] - -diff --git a/third_party/nvfuser/csrc/instrumentation.h b/third_party/nvfuser/csrc/instrumentation.h -index cd57825..75e81e9 100644 ---- a/third_party/nvfuser/csrc/instrumentation.h -+++ b/third_party/nvfuser/csrc/instrumentation.h -@@ -2,7 +2,7 @@ - - #include - --#include -+#include - - // NOLINTNEXTLINE(modernize-deprecated-headers) - #include -diff --git a/tools/setup_helpers/env.py b/tools/setup_helpers/env.py -index d87e97a..6c52f39 100644 ---- a/tools/setup_helpers/env.py -+++ b/tools/setup_helpers/env.py -@@ -19,7 +19,7 @@ CONDA_DIR = os.path.join(os.path.dirname(sys.executable), "..") - - IS_64BIT = struct.calcsize("P") == 8 - --BUILD_DIR = "build" -+BUILD_DIR = "../../@TARGET_TRIPLET@" - - - def check_env_flag(name: str, default: str = "") -> bool: -diff --git a/torch/lib/libshm/CMakeLists.txt b/torch/lib/libshm/CMakeLists.txt -index 20158a9..7d3c475 100644 ---- a/torch/lib/libshm/CMakeLists.txt -+++ b/torch/lib/libshm/CMakeLists.txt -@@ -71,6 +71,10 @@ target_link_libraries(torch_shm_manager PRIVATE shm) - set_target_properties(torch_shm_manager PROPERTIES - INSTALL_RPATH "${_rpath_portable_origin}/../lib") - --install(TARGETS shm LIBRARY DESTINATION ${LIBSHM_INSTALL_LIB_SUBDIR}) -+install(TARGETS shm -+ RUNTIME DESTINATION bin -+ ARCHIVE DESTINATION lib -+ LIBRARY DESTINATION lib -+) - install(FILES libshm.h DESTINATION "include") - install(TARGETS torch_shm_manager DESTINATION "bin") -diff --git a/torch/lib/libshm_windows/CMakeLists.txt b/torch/lib/libshm_windows/CMakeLists.txt -index df2a106..b86e0b6 100644 ---- a/torch/lib/libshm_windows/CMakeLists.txt -+++ b/torch/lib/libshm_windows/CMakeLists.txt -@@ -19,9 +19,12 @@ target_include_directories(shm PRIVATE - target_link_libraries(shm torch c10) - - --install(TARGETS shm DESTINATION "${LIBSHM_INSTALL_LIB_SUBDIR}") -+install(TARGETS shm -+ LIBRARY DESTINATION "${LIBSHM_INSTALL_LIB_SUBDIR}" -+ ARCHIVE DESTINATION "${LIBSHM_INSTALL_LIB_SUBDIR}" -+ RUNTIME DESTINATION "${LIBSHM_INSTALL_BIN_SUBDIR}") - install(FILES libshm.h DESTINATION "include") - - if(MSVC AND BUILD_SHARED_LIBS) -- install(FILES $ DESTINATION "${LIBSHM_INSTALL_LIB_SUBDIR}" OPTIONAL) -+ install(FILES $ DESTINATION "${LIBSHM_INSTALL_BIN_SUBDIR}" OPTIONAL) - endif() -diff --git a/torch/utils/cpp_extension.py b/torch/utils/cpp_extension.py -index 6600eb3..15ddc8c 100644 ---- a/torch/utils/cpp_extension.py -+++ b/torch/utils/cpp_extension.py -@@ -38,7 +38,7 @@ SHARED_FLAG = '/DLL' if IS_WINDOWS else '-shared' - - _HERE = os.path.abspath(__file__) - _TORCH_PATH = os.path.dirname(os.path.dirname(_HERE)) --TORCH_LIB_PATH = os.path.join(_TORCH_PATH, 'lib') -+TORCH_LIB_PATH = os.path.join(_TORCH_PATH, '../../../@TARGET_TRIPLET@', 'lib') - - - SUBPROCESS_DECODE_ARGS = ('oem',) if IS_WINDOWS else () diff --git a/ports/libtorch/fix-calculate-minloglevel.patch b/ports/libtorch/fix-calculate-minloglevel.patch deleted file mode 100644 index 7c7d1ffdc1..0000000000 --- a/ports/libtorch/fix-calculate-minloglevel.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/c10/util/Logging.cpp b/c10/util/Logging.cpp -index 306dac5..dca802c 100644 ---- a/c10/util/Logging.cpp -+++ b/c10/util/Logging.cpp -@@ -272,7 +272,7 @@ void UpdateLoggingLevelsFromFlags() { - - void ShowLogInfoToStderr() { - FLAGS_logtostderr = 1; -- FLAGS_minloglevel = std::min(FLAGS_minloglevel, google::GLOG_INFO); -+ FLAGS_minloglevel = std::min(FLAGS_minloglevel, static_cast(google::GLOG_INFO)); - } - } // namespace c10 - diff --git a/ports/libtorch/fix-cmake.patch b/ports/libtorch/fix-cmake.patch new file mode 100644 index 0000000000..436efdebed --- /dev/null +++ b/ports/libtorch/fix-cmake.patch @@ -0,0 +1,404 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 07edb30..1ca26e3 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1247,8 +1247,7 @@ if(USE_MIMALLOC) + set(MI_BUILD_OBJECT OFF) + set(MI_BUILD_TESTS OFF) + add_definitions(-DUSE_MIMALLOC) +- add_subdirectory(third_party/mimalloc) +- include_directories(third_party/mimalloc/include) ++ find_package(mimalloc CONFIG REQUIRED) + endif() + + if(USE_MIMALLOC AND USE_MIMALLOC_ON_MKL) +@@ -1316,10 +1315,7 @@ if(BUILD_SHARED_LIBS) + DIRECTORY ${PROJECT_SOURCE_DIR}/cmake/Modules_CUDA_fix + DESTINATION share/cmake/Caffe2/ + COMPONENT dev) +- install( +- FILES ${PROJECT_SOURCE_DIR}/cmake/Modules/FindCUDAToolkit.cmake +- DESTINATION share/cmake/Caffe2/ +- COMPONENT dev) ++ + install( + FILES ${PROJECT_SOURCE_DIR}/cmake/Modules/FindCUSPARSELT.cmake + DESTINATION share/cmake/Caffe2/ +diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt +index 085af37..1c61f27 100644 +--- a/aten/src/ATen/CMakeLists.txt ++++ b/aten/src/ATen/CMakeLists.txt +@@ -515,7 +515,7 @@ if(NOT EMSCRIPTEN AND NOT INTERN_BUILD_MOBILE) + list(APPEND ATen_THIRD_PARTY_INCLUDE ${CMAKE_BINARY_DIR}/include) + link_directories(${CMAKE_BINARY_DIR}/sleef/lib) + else() +- add_library(sleef SHARED IMPORTED) ++ add_library(sleef UNKNOWN IMPORTED) + find_library(SLEEF_LIBRARY sleef) + if(NOT SLEEF_LIBRARY) + message(FATAL_ERROR "Cannot find sleef") +@@ -523,7 +523,7 @@ if(NOT EMSCRIPTEN AND NOT INTERN_BUILD_MOBILE) + message("Found sleef: ${SLEEF_LIBRARY}") + set_target_properties(sleef PROPERTIES IMPORTED_LOCATION "${SLEEF_LIBRARY}") + endif() +- list(APPEND ATen_CPU_DEPENDENCY_LIBS sleef) ++ list(APPEND ATen_CPU_DEPENDENCY_LIBS ${SLEEF_LIBRARY}) + + if(NOT MSVC) + set(CMAKE_C_FLAGS_DEBUG ${OLD_CMAKE_C_FLAGS_DEBUG}) +@@ -534,8 +534,8 @@ if(USE_CUDA AND NOT USE_ROCM) + add_definitions(-DCUTLASS_ENABLE_TENSOR_CORE_MMA=1) + add_definitions(-DCUTLASS_ENABLE_SM90_EXTENDED_MMA_SHAPES=1) + add_definitions(-DCUTE_SM90_EXTENDED_MMA_SHAPES_ENABLED) +- list(APPEND ATen_CUDA_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/../../../third_party/cutlass/include) +- list(APPEND ATen_CUDA_INCLUDE ${CMAKE_CURRENT_SOURCE_DIR}/../../../third_party/cutlass/tools/util/include) ++ find_package(NvidiaCutlass CONFIG REQUIRED) ++ list(APPEND ATen_CUDA_DEPENDENCY_LIBS nvidia::cutlass::cutlass) + if($ENV{ATEN_STATIC_CUDA}) + list(APPEND ATen_CUDA_DEPENDENCY_LIBS + ${CUDA_LIBRARIES} +diff --git a/c10/CMakeLists.txt b/c10/CMakeLists.txt +index 34577ca..5462cfe 100644 +--- a/c10/CMakeLists.txt ++++ b/c10/CMakeLists.txt +@@ -121,8 +121,7 @@ if(NOT BUILD_LIBTORCHLESS) + endif() + + if(USE_MIMALLOC) +- target_link_libraries(c10 PRIVATE "mimalloc-static") +- add_dependencies(c10 mimalloc-static) ++ target_link_libraries(c10 PRIVATE "mimalloc") + endif() + + if(LINUX) +@@ -163,7 +162,7 @@ if(NOT BUILD_LIBTORCHLESS) + # Note: for now, we will put all export path into one single Caffe2Targets group + # to deal with the cmake deployment need. Inside the Caffe2Targets set, the + # individual libraries like libc10.so and libcaffe2.so are still self-contained. +- install(TARGETS c10 EXPORT Caffe2Targets DESTINATION lib) ++ install(TARGETS c10 EXPORT Caffe2Targets RUNTIME DESTINATION bin LIBRARY DESTINATION lib ARCHIVE DESTINATION lib) + endif() + + install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR} +@@ -173,5 +172,5 @@ install(FILES ${CMAKE_BINARY_DIR}/c10/macros/cmake_macros.h + DESTINATION include/c10/macros) + + if(MSVC AND C10_BUILD_SHARED_LIBS) +- install(FILES $ DESTINATION lib OPTIONAL) ++ install(FILES $ DESTINATION bin OPTIONAL) + endif() +diff --git a/c10/cuda/CMakeLists.txt b/c10/cuda/CMakeLists.txt +index 3327dab..4a0476f 100644 +--- a/c10/cuda/CMakeLists.txt ++++ b/c10/cuda/CMakeLists.txt +@@ -82,7 +82,7 @@ if(NOT BUILD_LIBTORCHLESS) + # Note: for now, we will put all export path into one single Caffe2Targets group + # to deal with the cmake deployment need. Inside the Caffe2Targets set, the + # individual libraries like libc10.so and libcaffe2.so are still self-contained. +-install(TARGETS c10_cuda EXPORT Caffe2Targets DESTINATION lib) ++install(TARGETS c10_cuda EXPORT Caffe2Targets RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") + + endif() + +diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt +index d2d23b7..51930dd 100644 +--- a/caffe2/CMakeLists.txt ++++ b/caffe2/CMakeLists.txt +@@ -86,7 +86,7 @@ endif() + # ---[ Caffe2 build + # Note: the folders that are being commented out have not been properly + # addressed yet. +- ++if(FALSE) + if(NOT MSVC AND USE_XNNPACK) + if(NOT TARGET fxdiv) + set(FXDIV_BUILD_TESTS OFF CACHE BOOL "") +@@ -96,6 +96,7 @@ if(NOT MSVC AND USE_XNNPACK) + "${CMAKE_BINARY_DIR}/FXdiv") + endif() + endif() ++endif() + + add_subdirectory(core) + add_subdirectory(serialize) +@@ -557,7 +558,7 @@ if(USE_CUDA) + endif() + + target_link_libraries(caffe2_nvrtc PRIVATE caffe2::nvrtc ${DELAY_LOAD_FLAGS}) +- install(TARGETS caffe2_nvrtc DESTINATION "${TORCH_INSTALL_LIB_DIR}") ++ install(TARGETS caffe2_nvrtc RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") + if(USE_NCCL) + list(APPEND Caffe2_GPU_SRCS + ${TORCH_SRC_DIR}/csrc/cuda/nccl.cpp) +@@ -1134,7 +1135,7 @@ if(USE_XPU) + endif() + endif() + +-if(NOT MSVC AND USE_XNNPACK) ++if(FALSE) + TARGET_LINK_LIBRARIES(torch_cpu PRIVATE fxdiv) + endif() + +@@ -1251,11 +1252,11 @@ if(USE_KINETO) + ${TORCH_ROOT}/third_party/kineto/libkineto/src) + endif() + +-target_include_directories(torch_cpu PRIVATE +- ${TORCH_ROOT}/third_party/cpp-httplib) ++target_link_libraries(torch_cpu PRIVATE httplib::httplib nlohmann_json::nlohmann_json) ++if(APPLE) ++ target_link_libraries(torch_cpu PUBLIC "-framework CoreFoundation" "-framework CFNetwork") + +-target_include_directories(torch_cpu PRIVATE +- ${TORCH_ROOT}/third_party/nlohmann/include) ++endif() + + install(DIRECTORY "${TORCH_SRC_DIR}/csrc" + DESTINATION ${TORCH_INSTALL_INCLUDE_DIR}/torch +@@ -1536,17 +1537,17 @@ endif() + + caffe2_interface_library(torch torch_library) + +-install(TARGETS torch_cpu torch_cpu_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") ++install(TARGETS torch_cpu torch_cpu_library EXPORT Caffe2Targets RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") + + if(USE_CUDA) +- install(TARGETS torch_cuda torch_cuda_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") ++ install(TARGETS torch_cuda torch_cuda_library EXPORT Caffe2Targets RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") + elseif(USE_ROCM) +- install(TARGETS torch_hip torch_hip_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") ++ install(TARGETS torch_hip torch_hip_library EXPORT Caffe2Targets RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") + elseif(USE_XPU) +- install(TARGETS torch_xpu torch_xpu_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") ++ install(TARGETS torch_xpu torch_xpu_library EXPORT Caffe2Targets RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") + endif() + +-install(TARGETS torch torch_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") ++install(TARGETS torch torch_library EXPORT Caffe2Targets RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") + + target_link_libraries(torch PUBLIC torch_cpu_library) + +@@ -1685,7 +1686,7 @@ if(BUILD_SHARED_LIBS) + target_link_libraries(torch_global_deps torch::nvtoolsext) + endif() + endif() +- install(TARGETS torch_global_deps DESTINATION "${TORCH_INSTALL_LIB_DIR}") ++ install(TARGETS torch_global_deps RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") + endif() + + # ---[ Caffe2 HIP sources. +diff --git a/cmake/Codegen.cmake b/cmake/Codegen.cmake +index 724d993..f743939 100644 +--- a/cmake/Codegen.cmake ++++ b/cmake/Codegen.cmake +@@ -36,11 +36,13 @@ endfunction() + ################################################################################ + + # -- [ Deterine commit hash +-execute_process( +- COMMAND "${Python_EXECUTABLE}" -c "from tools.generate_torch_version import get_sha;print(get_sha('.'), end='')" +- OUTPUT_VARIABLE COMMIT_SHA +- WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/.. +-) ++if(NOT DEFINED COMMIT_SHA) ++ execute_process( ++ COMMAND "${Python_EXECUTABLE}" -c "from tools.generate_torch_version import get_sha;print(get_sha('.'), end='')" ++ OUTPUT_VARIABLE COMMIT_SHA ++ WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}/.. ++ ) ++endif() + + # ---[ Write the macros file + configure_file( +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index 5227204..9acaf75 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -46,6 +46,7 @@ if(USE_CUDA) + # A helper variable recording the list of Caffe2 dependent libraries + # torch::cudart is dealt with separately, due to CUDA_ADD_LIBRARY + # design reason (it adds CUDA_LIBRARIES itself). ++ find_package(NvidiaCutlass CONFIG REQUIRED) + set(Caffe2_PUBLIC_CUDA_DEPENDENCY_LIBS ) + if(NOT CAFFE2_USE_NVRTC) + caffe2_update_option(USE_NVRTC OFF) +@@ -378,6 +379,9 @@ if(INTERN_BUILD_MOBILE OR NOT DISABLE_NNPACK_AND_FAMILY) + set(USE_PTHREADPOOL ON CACHE BOOL "" FORCE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DUSE_PTHREADPOOL") + ++ find_package(unofficial-pthreadpool CONFIG REQUIRED) ++ add_library(pthreadpool ALIAS unofficial::pthreadpool) ++ + if(NOT TARGET pthreadpool) + if(USE_SYSTEM_PTHREADPOOL) + add_library(pthreadpool SHARED IMPORTED) +@@ -412,6 +416,9 @@ endif() + if(NOT CMAKE_SYSTEM_PROCESSOR MATCHES "^(s390x|ppc64le)$") + # ---[ Caffe2 uses cpuinfo library in the thread pool + # ---[ But it doesn't support s390x/powerpc and thus not used on s390x/powerpc ++ find_package(cpuinfo CONFIG REQUIRED) ++ add_library(cpuinfo ALIAS cpuinfo::cpuinfo) ++ add_library(clog ALIAS cpuinfo::clog) + if(NOT TARGET cpuinfo AND USE_SYSTEM_CPUINFO) + add_library(cpuinfo SHARED IMPORTED) + find_library(CPUINFO_LIBRARY cpuinfo) +@@ -476,8 +483,10 @@ endif() + + # ---[ NNPACK + if(USE_NNPACK) +- include(${CMAKE_CURRENT_LIST_DIR}/External/nnpack.cmake) +- if(NNPACK_FOUND) ++ ++ find_package(unofficial-nnpack CONFIG REQUIRED) ++ add_library(nnpack ALIAS unofficial::nnpack::nnpack) ++ if(nnpack_FOUND) + if(TARGET nnpack) + # ---[ NNPACK is being built together with Caffe2: explicitly specify dependency + list(APPEND Caffe2_DEPENDENCY_LIBS nnpack) +@@ -492,6 +501,12 @@ if(USE_NNPACK) + endif() + + # ---[ XNNPACK ++if(USE_XNNPACK) ++ find_package(unofficial-xnnpack CONFIG REQUIRED) ++ add_library(XNNPACK ALIAS unofficial::xnnpack::XNNPACK) ++ add_library(microkernels-prod ALIAS unofficial::xnnpack::microkernels-prod) ++ list(APPEND Caffe2_DEPENDENCY_LIBS XNNPACK microkernels-prod) ++endif() + if(USE_XNNPACK AND NOT USE_SYSTEM_XNNPACK) + if(NOT DEFINED XNNPACK_SOURCE_DIR) + set(XNNPACK_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/XNNPACK" CACHE STRING "XNNPACK source directory") +@@ -702,7 +717,7 @@ if(BUILD_TEST OR BUILD_MOBILE_BENCHMARK OR BUILD_MOBILE_TEST) + endif() + + # ---[ FBGEMM +-if(USE_FBGEMM) ++if(FALSE) + set(CAFFE2_THIRD_PARTY_ROOT "${PROJECT_SOURCE_DIR}/third_party") + if(NOT DEFINED FBGEMM_SOURCE_DIR) + set(FBGEMM_SOURCE_DIR "${CAFFE2_THIRD_PARTY_ROOT}/fbgemm" CACHE STRING "FBGEMM source directory") +@@ -755,6 +770,9 @@ endif() + + if(USE_FBGEMM) + caffe2_update_option(USE_FBGEMM ON) ++ find_package(fbgemmLibrary REQUIRED) ++ list(APPEND Caffe2_DEPENDENCY_LIBS fbgemm) ++ + else() + caffe2_update_option(USE_FBGEMM OFF) + message(WARNING +@@ -804,6 +822,8 @@ if(USE_ITT) + endif() + + # ---[ Caffe2 depends on FP16 library for half-precision conversions ++find_package(unofficial-fp16 CONFIG REQUIRED) ++add_library(fp16 ALIAS unofficial::fp16::fp16) + if(NOT TARGET fp16 AND NOT USE_SYSTEM_FP16) + set(CAFFE2_THIRD_PARTY_ROOT "${PROJECT_SOURCE_DIR}/third_party") + # PSIMD is required by FP16 +@@ -1155,6 +1175,7 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE) + if(MSVC) + message(WARNING "Tensorpipe cannot be used on Windows.") + else() ++ if(FALSE) + if(USE_CUDA) + set(TP_USE_CUDA ON CACHE BOOL "" FORCE) + set(TP_ENABLE_CUDA_IPC ON CACHE BOOL "" FORCE) +@@ -1177,6 +1198,9 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE) + if(CMAKE_VERSION VERSION_GREATER_EQUAL "4.0.0") + unset(CMAKE_POLICY_VERSION_MINIMUM) + endif() ++ endif() ++ find_package(unofficial-tensorpipe CONFIG REQUIRED) ++ add_library(tensorpipe ALIAS unofficial::tensorpipe::tensorpipe) + + list(APPEND Caffe2_DEPENDENCY_LIBS tensorpipe) + list(APPEND Caffe2_DEPENDENCY_LIBS nlohmann) +@@ -1329,7 +1353,7 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX) + caffe2_interface_library(onnx onnx_library) + endif() + list(APPEND Caffe2_DEPENDENCY_WHOLE_LINK_LIBS onnx_library) +- else() ++ elseif(FALSE) + add_library(onnx SHARED IMPORTED) + find_library(ONNX_LIBRARY onnx) + if(NOT ONNX_LIBRARY) +@@ -1345,6 +1369,8 @@ if(CAFFE2_CMAKE_BUILDING_WITH_MAIN_REPO AND NOT INTERN_DISABLE_ONNX) + message("-- Found onnx: ${ONNX_LIBRARY} ${ONNX_PROTO_LIBRARY}") + list(APPEND Caffe2_DEPENDENCY_LIBS onnx_proto onnx) + endif() ++ find_package(ONNX CONFIG REQUIRED) ++ list(APPEND Caffe2_DEPENDENCY_LIBS ONNX::onnx ONNX::onnx_proto) + # Recover the build shared libs option. + set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS}) + endif() +@@ -1515,6 +1541,9 @@ if(NOT INTERN_BUILD_MOBILE) + endif() + + if(USE_KLEIDIAI) ++ find_package(KleidiAI CONFIG REQUIRED) ++ list(APPEND Caffe2_DEPENDENCY_LIBS KleidiAI::kleidiai) ++ elseif(FALSE) + if(CMAKE_C_COMPILER_ID STREQUAL "Clang" AND CMAKE_C_COMPILER_VERSION VERSION_LESS "11" ) + message(WARNING "KleidiAI: Using non-supported Clang version. Expected 11 or newer, received ${CMAKE_C_COMPILER_VERSION}.") + endif() +@@ -1586,6 +1615,7 @@ endif() + # + set(TEMP_BUILD_SHARED_LIBS ${BUILD_SHARED_LIBS}) + set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared libs" FORCE) ++if(0) + add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt) + + # Disable compiler feature checks for `fmt`. +@@ -1596,7 +1626,8 @@ add_subdirectory(${PROJECT_SOURCE_DIR}/third_party/fmt) + # `fmt` is compatible with a superset of the compilers that PyTorch is, it + # shouldn't be too bad to just disable the checks. + set_target_properties(fmt-header-only PROPERTIES INTERFACE_COMPILE_FEATURES "") +- ++endif() ++find_package(fmt REQUIRED) + list(APPEND Caffe2_DEPENDENCY_LIBS fmt::fmt-header-only) + set(BUILD_SHARED_LIBS ${TEMP_BUILD_SHARED_LIBS} CACHE BOOL "Build shared libs" FORCE) + +@@ -1745,13 +1776,10 @@ if(USE_KINETO) + endif() + endif() + +-# Include google/FlatBuffers +-include(${CMAKE_CURRENT_LIST_DIR}/FlatBuffers.cmake) + +-# Include cpp-httplib +-add_library(httplib INTERFACE IMPORTED) +-target_include_directories(httplib SYSTEM INTERFACE ${PROJECT_SOURCE_DIR}/third_party/cpp-httplib) ++find_package(FlatBuffers REQUIRED) ++add_library(flatbuffers ALIAS flatbuffers::flatbuffers) ++find_package(httplib REQUIRED) ++find_package(nlohmann_json REQUIRED) ++add_library(nlohmann ALIAS nlohmann_json) + +-# Include nlohmann-json +-add_library(nlohmann INTERFACE IMPORTED) +-include_directories(nlohmann SYSTEM INTERFACE ${PROJECT_SOURCE_DIR}/third_party/nlohmann/include) +diff --git a/torch/CMakeLists.txt b/torch/CMakeLists.txt +index 8b8ebdc..1777c0e 100644 +--- a/torch/CMakeLists.txt ++++ b/torch/CMakeLists.txt +@@ -59,18 +59,7 @@ set(TORCH_PYTHON_INCLUDE_DIRECTORIES + ${CMAKE_BINARY_DIR} + ${CMAKE_BINARY_DIR}/aten/src + ${CMAKE_BINARY_DIR}/caffe2/aten/src +- ${CMAKE_BINARY_DIR}/third_party +- ${CMAKE_BINARY_DIR}/third_party/onnx +- + ${TORCH_ROOT}/third_party/valgrind-headers +- +- ${TORCH_ROOT}/third_party/gloo +- ${TORCH_ROOT}/third_party/onnx +- ${TORCH_ROOT}/third_party/flatbuffers/include +- ${TORCH_ROOT}/third_party/kineto/libkineto/include +- ${TORCH_ROOT}/third_party/cpp-httplib +- ${TORCH_ROOT}/third_party/nlohmann/include +- + ${TORCH_SRC_DIR}/csrc + ${TORCH_SRC_DIR}/csrc/api/include + ${TORCH_SRC_DIR}/lib diff --git a/ports/libtorch/fix-dist-cuda.patch b/ports/libtorch/fix-dist-cuda.patch new file mode 100644 index 0000000000..65e4bc1f08 --- /dev/null +++ b/ports/libtorch/fix-dist-cuda.patch @@ -0,0 +1,22 @@ +diff --git a/cmake/Dependencies.cmake b/cmake/Dependencies.cmake +index 9acaf75..4f44d3e 100644 +--- a/cmake/Dependencies.cmake ++++ b/cmake/Dependencies.cmake +@@ -1205,6 +1205,8 @@ if(USE_DISTRIBUTED AND USE_TENSORPIPE) + list(APPEND Caffe2_DEPENDENCY_LIBS tensorpipe) + list(APPEND Caffe2_DEPENDENCY_LIBS nlohmann) + if(USE_CUDA) ++ add_library(tensorpipe_cuda ALIAS unofficial::tensorpipe::tensorpipe_cuda) ++ + list(APPEND Caffe2_CUDA_DEPENDENCY_LIBS tensorpipe_cuda) + elseif(USE_ROCM) + message(WARNING "TensorPipe doesn't yet support ROCm") +@@ -1279,7 +1281,7 @@ if(USE_GLOO) + endif() + # Pick the right dependency depending on USE_CUDA + list(APPEND Caffe2_DEPENDENCY_LIBS gloo) +- if(USE_CUDA) ++ if(FALSE) + list(APPEND Caffe2_CUDA_DEPENDENCY_LIBS gloo_cuda) + elseif(USE_ROCM) + list(APPEND Caffe2_HIP_DEPENDENCY_LIBS gloo_hip) diff --git a/ports/libtorch/fix-glog.patch b/ports/libtorch/fix-glog.patch index 4db040b17c..429c933fd5 100644 --- a/ports/libtorch/fix-glog.patch +++ b/ports/libtorch/fix-glog.patch @@ -1,8 +1,21 @@ diff --git a/c10/util/Logging.cpp b/c10/util/Logging.cpp -index ff8e1d6cc..306dac51f 100644 ---- a/c10/util/Logging.cpp +index c463658..a523040 100644 +--- a/c10/util/Logging.cpp +++ b/c10/util/Logging.cpp -@@ -218,24 +218,11 @@ C10_DEFINE_int( +@@ -362,7 +362,7 @@ void UpdateLoggingLevelsFromFlags() { + + void ShowLogInfoToStderr() { + FLAGS_logtostderr = 1; +- FLAGS_minloglevel = std::min(FLAGS_minloglevel, google::GLOG_INFO); ++ FLAGS_minloglevel = std::min(FLAGS_minloglevel, google::GLOG_INFO); + } + } // namespace c10 + +diff --git a/c10/util/Logging.cpp b/c10/util/Logging.cpp +index a523040..04375b6 100644 +--- a/c10/util/Logging.cpp ++++ b/c10/util/Logging.cpp +@@ -295,23 +295,13 @@ C10_DEFINE_int( google::GLOG_WARNING, "The minimum log level that caffe2 will output."); @@ -20,11 +33,10 @@ index ff8e1d6cc..306dac51f 100644 namespace { void initGoogleLogging(char const* name) { --#if !defined(_MSC_VER) -- // This trick can only be used on UNIX platforms + #if !defined(_MSC_VER) + // This trick can only be used on UNIX platforms - if (!::google::glog_internal_namespace_::IsGoogleLoggingInitialized()) --#endif + if (!::google::IsGoogleLoggingInitialized()) + #endif { ::google::InitGoogleLogging(name); - #if !defined(_MSC_VER) diff --git a/ports/libtorch/fix-msvc-ICE.patch b/ports/libtorch/fix-msvc-ICE.patch deleted file mode 100644 index c6f768459e..0000000000 --- a/ports/libtorch/fix-msvc-ICE.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/aten/src/ATen/cpu/vec/vec_base.h b/aten/src/ATen/cpu/vec/vec_base.h -index f68e9c6eb..c42a9b8bb 100644 ---- a/aten/src/ATen/cpu/vec/vec_base.h -+++ b/aten/src/ATen/cpu/vec/vec_base.h -@@ -150,9 +150,8 @@ public: - // versions GCC/Clang have buggy determinations on whether or not an - // identifier is odr-used or not, and in any case it's hard to tell if - // a variable is odr-used or not. So best to just cut the problem at the root. -- static constexpr size_type size_T = sizeof(T); // Workaround to compile with VS2022. - static constexpr size_type size() { -- return VECTOR_WIDTH / size_T; -+ return VECTOR_WIDTH / sizeof(T); - } - Vectorized() : values{static_cast(0)} {} - Vectorized(T val) { diff --git a/ports/libtorch/fix-osx.patch b/ports/libtorch/fix-osx.patch new file mode 100644 index 0000000000..f864151b69 --- /dev/null +++ b/ports/libtorch/fix-osx.patch @@ -0,0 +1,16 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 463788e..1ca26e3 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -796,7 +796,10 @@ if(NOT CMAKE_BUILD_TYPE) + endif() + + # The below means we are cross compiling for arm64 or x86_64 on MacOSX +-if(NOT IOS ++if(TRUE) ++ message(STATUS "Using custom protoc executable: ${PROTOBUF_PROTOC_EXECUTABLE}") ++ message(STATUS "Using custom caffe2 protoc executable: ${CAFFE2_CUSTOM_PROTOC_EXECUTABLE}") ++elseif(NOT IOS + AND CMAKE_SYSTEM_NAME STREQUAL "Darwin" + AND CMAKE_OSX_ARCHITECTURES MATCHES "^(x86_64|arm64)$") + set(CROSS_COMPILING_MACOSX TRUE) diff --git a/ports/libtorch/fix-pytorch-pr-156630.patch b/ports/libtorch/fix-pytorch-pr-156630.patch new file mode 100644 index 0000000000..47dd78ad19 --- /dev/null +++ b/ports/libtorch/fix-pytorch-pr-156630.patch @@ -0,0 +1,29 @@ +diff --git a/aten/src/ATen/native/cuda/SegmentReduce.cu b/aten/src/ATen/native/cuda/SegmentReduce.cu +index 04bec04..3ea8af2 100644 +--- a/aten/src/ATen/native/cuda/SegmentReduce.cu ++++ b/aten/src/ATen/native/cuda/SegmentReduce.cu +@@ -1,5 +1,6 @@ + #define TORCH_ASSERT_ONLY_METHOD_OPERATORS + #include ++#include + + #include + #include +@@ -17,6 +18,10 @@ + #include + #endif + ++// SegmentReduce compilation with CUDA-12.9 causes NVCC crash on Windows ++// See https://github.com/pytorch/pytorch/issues/156181 ++#if !defined(_WIN32) || CUDART_VERSION < 12090 ++ + namespace at::native { + + namespace { +@@ -600,3 +605,5 @@ REGISTER_DISPATCH( + &_segment_reduce_offsets_backward_cuda_kernel); + + } // namespace at::native ++ ++#endif // !defined(_WIN32) || CUDART_VERSION < 12090 +\ No newline at end of file diff --git a/ports/libtorch/fix-sleef.patch b/ports/libtorch/fix-sleef.patch deleted file mode 100644 index 8b42b745e2..0000000000 --- a/ports/libtorch/fix-sleef.patch +++ /dev/null @@ -1,84 +0,0 @@ -diff --git a/aten/src/ATen/CMakeLists.txt b/aten/src/ATen/CMakeLists.txt -index f3281d3cb..c8b6ed30e 100644 ---- a/aten/src/ATen/CMakeLists.txt -+++ b/aten/src/ATen/CMakeLists.txt -@@ -418,7 +418,7 @@ if(NOT MSVC AND NOT EMSCRIPTEN AND NOT INTERN_BUILD_MOBILE) - list(APPEND ATen_THIRD_PARTY_INCLUDE ${CMAKE_BINARY_DIR}/include) - link_directories(${CMAKE_BINARY_DIR}/sleef/lib) - else() -- add_library(sleef SHARED IMPORTED) -+ add_library(sleef UNKNOWN IMPORTED) - find_library(SLEEF_LIBRARY sleef) - if(NOT SLEEF_LIBRARY) - message(FATAL_ERROR "Cannot find sleef") -@@ -426,7 +426,7 @@ if(NOT MSVC AND NOT EMSCRIPTEN AND NOT INTERN_BUILD_MOBILE) - message("Found sleef: ${SLEEF_LIBRARY}") - set_target_properties(sleef PROPERTIES IMPORTED_LOCATION "${SLEEF_LIBRARY}") - endif() -- list(APPEND ATen_CPU_DEPENDENCY_LIBS sleef) -+ list(APPEND ATen_CPU_DEPENDENCY_LIBS ${SLEEF_LIBRARY}) - - set(CMAKE_C_FLAGS_DEBUG ${OLD_CMAKE_C_FLAGS_DEBUG}) - set(CMAKE_CXX_FLAGS ${OLD_CMAKE_CXX_FLAGS}) -diff --git a/aten/src/ATen/cpu/vec/vec256/vec256_bfloat16.h b/aten/src/ATen/cpu/vec/vec256/vec256_bfloat16.h -index f3281d3cb..c8b6ed30e 100644 ---- a/aten/src/ATen/cpu/vec/vec256/vec256_bfloat16.h -+++ b/aten/src/ATen/cpu/vec/vec256/vec256_bfloat16.h -@@ -21,6 +21,17 @@ inline namespace CPU_CAPABILITY { - - #if defined(CPU_CAPABILITY_AVX2) && !defined(_MSC_VER) - -+#ifndef SLEEF_CONST -+#if (defined(__GNUC__) || defined(__CLANG__)) && !defined(__INTEL_COMPILER) -+#define SLEEF_CONST const -+#else -+#define SLEEF_CONST -+#endif -+#define SLEEF_CONST_OLD SLEEF_CONST -+#else -+#define SLEEF_CONST_OLD -+#endif -+ - // bfloat16 conversion - static inline void cvtbf16_fp32(const __m128i& a, __m256& o) { - o = _mm256_castsi256_ps(_mm256_slli_epi32(_mm256_cvtepu16_epi32(a), 16)); -@@ -266,7 +277,7 @@ public: - } - return b; - } -- Vectorized map(const __m256 (*const vop)(__m256)) const { -+ Vectorized map(SLEEF_CONST __m256 (*SLEEF_CONST_OLD vop)(__m256)) const { - __m256 lo, hi; - cvt_to_fp32(values, lo, hi); - const auto o1 = vop(lo); - diff --git a/aten/src/ATen/cpu/vec/vec256/vec256_bfloat16.h b/aten/src/ATen/cpu/vec/vec256/vec256_bfloat16.h -index f3281d3cb..c8b6ed30e 100644 ---- a/aten/src/ATen/cpu/vec/vec512/vec512_bfloat16.h -+++ b/aten/src/ATen/cpu/vec/vec512/vec512_bfloat16.h -@@ -18,6 +18,17 @@ inline namespace CPU_CAPABILITY { - - #if defined(CPU_CAPABILITY_AVX512) && !defined(_MSC_VER) - -+#ifndef SLEEF_CONST -+#if (defined(__GNUC__) || defined(__CLANG__)) && !defined(__INTEL_COMPILER) -+#define SLEEF_CONST const -+#else -+#define SLEEF_CONST -+#endif -+#define SLEEF_CONST_OLD SLEEF_CONST -+#else -+#define SLEEF_CONST_OLD -+#endif -+ - // bfloat16 conversion - static inline void cvtbf16_fp32(const __m256i& a, __m512& o) { - o = _mm512_castsi512_ps(_mm512_slli_epi32(_mm512_cvtepu16_epi32(a), 16)); -@@ -345,7 +356,7 @@ public: - } - #pragma clang diagnostic push - #pragma clang diagnostic ignored "-Wignored-qualifiers" -- Vectorized map(const __m512 (*const vop)(__m512)) const { -+ Vectorized map(SLEEF_CONST __m512 (*SLEEF_CONST_OLD vop)(__m512)) const { - __m512 lo, hi; - cvt_to_fp32(values, lo, hi); - const auto o1 = vop(lo); diff --git a/ports/libtorch/fix-vulkan.patch b/ports/libtorch/fix-vulkan.patch new file mode 100644 index 0000000000..0842aa009b --- /dev/null +++ b/ports/libtorch/fix-vulkan.patch @@ -0,0 +1,43 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1ca26e3..7d3442c 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1104,7 +1104,8 @@ if(NOT MSVC) + else() + # Define export functions for AOTI. + add_compile_definitions(EXPORT_AOTI_FUNCTIONS) +- ++ # needed for vulkan compile ++ add_compile_definitions(_USE_MATH_DEFINES) # math.h macros like M_PI, M_SQRT2, M_2_SQRTPI, etc. + # skip unwanted includes from windows.h + add_compile_definitions(WIN32_LEAN_AND_MEAN) + # Windows SDK broke compatibility since version 25131, but introduced this +diff --git a/aten/src/ATen/native/vulkan/api/Allocator.h b/aten/src/ATen/native/vulkan/api/Allocator.h +index a89c333..a9a41ef 100644 +--- a/aten/src/ATen/native/vulkan/api/Allocator.h ++++ b/aten/src/ATen/native/vulkan/api/Allocator.h +@@ -50,7 +50,11 @@ + #pragma clang diagnostic ignored "-Winconsistent-missing-destructor-override" + #endif /* __clang__ */ + +-#include ++#if __has_include() ++#include ++#else ++#include ++#endif + + #ifdef __clang__ + #pragma clang diagnostic pop +diff --git a/aten/src/ATen/native/vulkan/api/QueryPool.cpp b/aten/src/ATen/native/vulkan/api/QueryPool.cpp +index 9c0c7fb..ae4a81f 100644 +--- a/aten/src/ATen/native/vulkan/api/QueryPool.cpp ++++ b/aten/src/ATen/native/vulkan/api/QueryPool.cpp +@@ -9,6 +9,7 @@ + #include + #include + #include ++#include + + namespace at { + namespace native { diff --git a/ports/libtorch/force-cuda-include.patch b/ports/libtorch/force-cuda-include.patch deleted file mode 100644 index 8e5366426f..0000000000 --- a/ports/libtorch/force-cuda-include.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/cmake/public/cuda.cmake b/cmake/public/cuda.cmake -index 5964429..d528597 100644 ---- a/cmake/public/cuda.cmake -+++ b/cmake/public/cuda.cmake -@@ -57,6 +57,7 @@ find_package(CUDAToolkit REQUIRED) - - cmake_policy(POP) - -+set(CUDAToolkit_INCLUDE_DIR "${CUDA_INCLUDE_DIRS}") - if(NOT CMAKE_CUDA_COMPILER_VERSION STREQUAL CUDAToolkit_VERSION OR - NOT CUDA_INCLUDE_DIRS STREQUAL CUDAToolkit_INCLUDE_DIR) - message(FATAL_ERROR "Found two conflicting CUDA installs:\n" diff --git a/ports/libtorch/fxdiv.patch b/ports/libtorch/fxdiv.patch deleted file mode 100644 index 3ad5701887..0000000000 --- a/ports/libtorch/fxdiv.patch +++ /dev/null @@ -1,45 +0,0 @@ -diff --git a/aten/src/ATen/native/quantized/cpu/qnnpack/CMakeLists.txt b/aten/src/ATen/native/quantized/cpu/qnnpack/CMakeLists.txt -index d185233..11f285b 100644 ---- a/aten/src/ATen/native/quantized/cpu/qnnpack/CMakeLists.txt -+++ b/aten/src/ATen/native/quantized/cpu/qnnpack/CMakeLists.txt -@@ -389,12 +389,12 @@ if(NOT TARGET fxdiv AND NOT USE_SYSTEM_FXDIV) - "${FXDIV_SOURCE_DIR}" - "${CONFU_DEPENDENCIES_BINARY_DIR}/fxdiv") - elseif(NOT TARGET fxdiv AND USE_SYSTEM_FXDIV) -- find_file(FXDIV_HDR fxdiv.h PATH_SUFFIXES include) -+ find_path(FXDIV_HDR fxdiv.h PATH_SUFFIXES include) - if(NOT FXDIV_HDR) - message(FATAL_ERROR "Cannot find fxdiv") - endif() -- add_library(fxdiv STATIC "${FXDIV_HDR}") -- set_property(TARGET fxdiv PROPERTY LINKER_LANGUAGE C) -+ add_library(fxdiv INTERFACE IMPORTED) -+ target_include_directories(fxdiv INTERFACE "${FXDIV_HDR}") - endif() - target_link_libraries(pytorch_qnnpack PRIVATE fxdiv) - -diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt -index f7a595e..47faec5 100644 ---- a/caffe2/CMakeLists.txt -+++ b/caffe2/CMakeLists.txt -@@ -108,12 +108,19 @@ endif() - # addressed yet. - - if(NOT MSVC AND USE_XNNPACK) -- if(NOT TARGET fxdiv) -+ if(NOT TARGET fxdiv AND NOT USE_SYSTEM_FXDIV) - set(FXDIV_BUILD_TESTS OFF CACHE BOOL "") - set(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "") - add_subdirectory( - "${FXDIV_SOURCE_DIR}" - "${CMAKE_BINARY_DIR}/FXdiv") -+ elseif(NOT TARGET fxdiv AND USE_SYSTEM_FXDIV) -+ find_path(FXDIV_HDR fxdiv.h PATH_SUFFIXES include) -+ if(NOT FXDIV_HDR) -+ message(FATAL_ERROR "Cannot find fxdiv") -+ endif() -+ add_library(fxdiv INTERFACE IMPORTED) -+ target_include_directories(fxdiv INTERFACE "${FXDIV_HDR}") - endif() - endif() - diff --git a/ports/libtorch/more-fixes.patch b/ports/libtorch/more-fixes.patch deleted file mode 100644 index 84400781f7..0000000000 --- a/ports/libtorch/more-fixes.patch +++ /dev/null @@ -1,320 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 7b8bc7c..fa6da32 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -383,7 +383,7 @@ if(WIN32) - NAMES uv libuv - HINTS $ENV{CONDA_PREFIX}\\Library $ENV{PREFIX}\\Library - PATH_SUFFIXES lib -- NO_DEFAULT_PATH) -+ ) - if(NOT libuv_tmp_LIBRARY) - set(USE_DISTRIBUTED OFF) - set(USE_GLOO OFF) -@@ -1151,10 +1151,6 @@ if(BUILD_SHARED_LIBS) - ${PROJECT_SOURCE_DIR}/cmake/Modules_CUDA_fix - DESTINATION share/cmake/Caffe2/ - COMPONENT dev) -- install(FILES -- ${PROJECT_SOURCE_DIR}/cmake/Modules/FindCUDAToolkit.cmake -- DESTINATION share/cmake/Caffe2/ -- COMPONENT dev) - install(FILES - ${PROJECT_SOURCE_DIR}/cmake/Modules/FindCUSPARSELT.cmake - DESTINATION share/cmake/Caffe2/ -diff --git a/aten/src/ATen/native/vulkan/api/Allocator.h b/aten/src/ATen/native/vulkan/api/Allocator.h -index d0c8bdf..50df97a 100644 ---- a/aten/src/ATen/native/vulkan/api/Allocator.h -+++ b/aten/src/ATen/native/vulkan/api/Allocator.h -@@ -47,7 +47,7 @@ - #pragma clang diagnostic ignored "-Wunused-variable" - #endif /* __clang__ */ - --#include -+#include - - #ifdef __clang__ - #pragma clang diagnostic pop -diff --git a/aten/src/ATen/native/vulkan/ops/Clamp.cpp b/aten/src/ATen/native/vulkan/ops/Clamp.cpp -index dc22b98..f91fbf6 100644 ---- a/aten/src/ATen/native/vulkan/ops/Clamp.cpp -+++ b/aten/src/ATen/native/vulkan/ops/Clamp.cpp -@@ -1,3 +1,6 @@ -+#define _USE_MATH_DEFINES -+#include -+ - #include - #include - -diff --git a/c10/CMakeLists.txt b/c10/CMakeLists.txt -index ad407e1..bbca41b 100644 ---- a/c10/CMakeLists.txt -+++ b/c10/CMakeLists.txt -@@ -139,7 +139,11 @@ endif() - # Note: for now, we will put all export path into one single Caffe2Targets group - # to deal with the cmake deployment need. Inside the Caffe2Targets set, the - # individual libraries like libc10.so and libcaffe2.so are still self-contained. --install(TARGETS c10 EXPORT Caffe2Targets DESTINATION lib) -+install(TARGETS c10 EXPORT Caffe2Targets -+ RUNTIME DESTINATION bin -+ ARCHIVE DESTINATION lib -+ ARCHIVE DESTINATION lib -+ ) - install(DIRECTORY ${CMAKE_CURRENT_LIST_DIR} - DESTINATION include - FILES_MATCHING PATTERN "*.h") -diff --git a/caffe2/CMakeLists.txt b/caffe2/CMakeLists.txt -index 74d0d55..cf349c2 100644 ---- a/caffe2/CMakeLists.txt -+++ b/caffe2/CMakeLists.txt -@@ -632,7 +632,11 @@ if(USE_CUDA) - - target_link_libraries(caffe2_nvrtc ${CUDA_NVRTC} ${CUDA_CUDA_LIB} ${CUDA_NVRTC_LIB} ${DELAY_LOAD_FLAGS}) - target_include_directories(caffe2_nvrtc PRIVATE ${CUDA_INCLUDE_DIRS}) -- install(TARGETS caffe2_nvrtc DESTINATION "${TORCH_INSTALL_LIB_DIR}") -+ install(TARGETS caffe2_nvrtc -+ RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" -+ LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ) - if(USE_NCCL) - list(APPEND Caffe2_GPU_SRCS - ${TORCH_SRC_DIR}/csrc/cuda/nccl.cpp) -@@ -694,7 +698,11 @@ if(USE_ROCM) - add_library(caffe2_nvrtc SHARED ${ATen_NVRTC_STUB_SRCS}) - target_link_libraries(caffe2_nvrtc ${PYTORCH_HIP_HCC_LIBRARIES} ${ROCM_HIPRTC_LIB}) - target_compile_definitions(caffe2_nvrtc PRIVATE USE_ROCM __HIP_PLATFORM_HCC__) -- install(TARGETS caffe2_nvrtc DESTINATION "${TORCH_INSTALL_LIB_DIR}") -+ install(TARGETS caffe2_nvrtc -+ RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" -+ LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ) - endif() - - if(NOT NO_API AND NOT BUILD_LITE_INTERPRETER) -@@ -1013,7 +1021,11 @@ elseif(USE_CUDA) - CUDA::culibos ${CMAKE_DL_LIBS}) - endif() - set_source_files_properties(${CMAKE_CURRENT_SOURCE_DIR}/../aten/src/ATen/native/cuda/LinearAlgebraStubs.cpp PROPERTIES COMPILE_FLAGS "-DBUILD_LAZY_CUDA_LINALG") -- install(TARGETS torch_cuda_linalg DESTINATION "${TORCH_INSTALL_LIB_DIR}") -+ install(TARGETS torch_cuda_linalg -+ RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" -+ LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ) - endif() - - if(USE_PRECOMPILED_HEADERS) -@@ -1475,14 +1487,26 @@ endif() - - caffe2_interface_library(torch torch_library) - --install(TARGETS torch_cpu torch_cpu_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") -+install(TARGETS torch_cpu torch_cpu_library EXPORT Caffe2Targets -+ RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" -+ LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") - - if(USE_CUDA) -- install(TARGETS torch_cuda torch_cuda_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") -+ install(TARGETS torch_cuda torch_cuda_library EXPORT Caffe2Targets -+ RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" -+ LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") - elseif(USE_ROCM) -- install(TARGETS torch_hip torch_hip_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") -+ install(TARGETS torch_hip torch_hip_library EXPORT Caffe2Targets -+ RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" -+ LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") - endif() --install(TARGETS torch torch_library EXPORT Caffe2Targets DESTINATION "${TORCH_INSTALL_LIB_DIR}") -+install(TARGETS torch torch_library EXPORT Caffe2Targets -+ RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" -+ LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") - - target_link_libraries(torch PUBLIC torch_cpu_library) - -@@ -1499,11 +1523,11 @@ endif() - - # Install PDB files for MSVC builds - if(MSVC AND BUILD_SHARED_LIBS) -- install(FILES $ DESTINATION "${TORCH_INSTALL_LIB_DIR}" OPTIONAL) -+ install(FILES $ DESTINATION "${TORCH_INSTALL_BIN_DIR}" OPTIONAL) - if(USE_CUDA) -- install(FILES $ DESTINATION "${TORCH_INSTALL_LIB_DIR}" OPTIONAL) -+ install(FILES $ DESTINATION "${TORCH_INSTALL_BIN_DIR}" OPTIONAL) - elseif(USE_ROCM) -- install(FILES $ DESTINATION "${TORCH_INSTALL_LIB_DIR}" OPTIONAL) -+ install(FILES $ DESTINATION "${TORCH_INSTALL_BIN_DIR}" OPTIONAL) - endif() - endif() - -@@ -1577,7 +1601,10 @@ if(BUILD_SHARED_LIBS) - target_link_libraries(torch_global_deps TBB::tbb) - endif() - -- install(TARGETS torch_global_deps DESTINATION "${TORCH_INSTALL_LIB_DIR}") -+ install(TARGETS torch_global_deps -+ RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" -+ LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") - endif() - - # ---[ Caffe2 HIP sources. -diff --git a/cmake/Modules/FindCUSPARSELT.cmake b/cmake/Modules/FindCUSPARSELT.cmake -index 8727f44..1e41281 100644 ---- a/cmake/Modules/FindCUSPARSELT.cmake -+++ b/cmake/Modules/FindCUSPARSELT.cmake -@@ -24,13 +24,13 @@ list(APPEND CMAKE_PREFIX_PATH ${CUSPARSELT_ROOT}) - set(CUSPARSELT_INCLUDE_DIR $ENV{CUSPARSELT_INCLUDE_DIR} CACHE PATH "Folder containing NVIDIA cuSPARSELt header files") - - find_path(CUSPARSELT_INCLUDE_PATH cusparseLt.h -- HINTS ${CUSPARSELT_INCLUDE_DIR} -+ HINTS ${CUSPARSELT_INCLUDE_DIR} ENV CUDA_PATH - PATH_SUFFIXES cuda/include cuda include) - - set(CUSPARSELT_LIBRARY $ENV{CUSPARSELT_LIBRARY} CACHE PATH "Path to the cusparselt library file (e.g., libcusparseLt.so)") - --find_library(CUSPARSELT_LIBRARY_PATH libcusparseLt.so -- PATHS ${CUSPARSELT_LIBRARY} -+find_library(CUSPARSELT_LIBRARY_PATH cusparseLt -+ PATHS ${CUSPARSELT_LIBRARY} ENV CUDA_PATH - PATH_SUFFIXES lib lib64 cuda/lib cuda/lib64 lib/x64) - - find_package_handle_standard_args(CUSPARSELT DEFAULT_MSG CUSPARSELT_LIBRARY_PATH CUSPARSELT_INCLUDE_PATH) -diff --git a/cmake/Modules/FindMAGMA.cmake b/cmake/Modules/FindMAGMA.cmake -index d2bff53..3af9012 100644 ---- a/cmake/Modules/FindMAGMA.cmake -+++ b/cmake/Modules/FindMAGMA.cmake -@@ -30,18 +30,13 @@ FIND_PATH(MAGMA_INCLUDE_DIR magma.h - HINTS $ENV{MAGMA_HOME} /usr/local/magma - PATH_SUFFIXES include) - --IF (MAGMA_LIBRARIES) -- SET(MAGMA_FOUND TRUE) --ELSE (MAGMA_LIBRARIES) -- SET(MAGMA_FOUND FALSE) --ENDIF (MAGMA_LIBRARIES) -- --add_library(torch::magma INTERFACE IMPORTED) --set_property(TARGET torch::magma -- PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${MAGMA_INCLUDE_DIR}") --set_property(TARGET torch::magma -- PROPERTY INTERFACE_LINK_LIBRARIES "${MAGMA_LIBRARIES}") -- -+if(NOT TARGET torch::magma) -+ add_library(torch::magma INTERFACE IMPORTED) -+ set_property(TARGET torch::magma -+ PROPERTY INTERFACE_INCLUDE_DIRECTORIES "${MAGMA_INCLUDE_DIR}") -+ set_property(TARGET torch::magma -+ PROPERTY INTERFACE_LINK_LIBRARIES "${MAGMA_LIBRARIES}") -+endif() - # Check for Magma V2 - include(CheckPrototypeDefinition) - check_prototype_definition(magma_get_sgeqrf_nb -@@ -53,3 +48,5 @@ if(MAGMA_V2) - set_property(TARGET torch::magma - PROPERTY INTERFACE_COMPILE_DEFINITIONS "MAGMA_V2") - endif(MAGMA_V2) -+ -+find_package_handle_standard_args(MAGMA REQUIRED_VARS MAGMA_INCLUDE_DIR MAGMA_LIBRARIES) -\ No newline at end of file -diff --git a/test/cpp/jit/CMakeLists.txt b/test/cpp/jit/CMakeLists.txt -index 2376f1b..a8ae436 100644 ---- a/test/cpp/jit/CMakeLists.txt -+++ b/test/cpp/jit/CMakeLists.txt -@@ -124,7 +124,7 @@ endif() - set(JIT_TEST_DEPENDENCIES torch gtest jitbackend_test backend_with_compiler) - - if(MSVC) -- list(APPEND JIT_TEST_DEPENDENCIES onnx_library) -+ list(APPEND JIT_TEST_DEPENDENCIES onnx) - endif(MSVC) - - target_link_libraries(test_jit PRIVATE ${JIT_TEST_DEPENDENCIES}) -diff --git a/third_party/nvfuser/CMakeLists.txt b/third_party/nvfuser/CMakeLists.txt -index b148418..7b96083 100644 ---- a/third_party/nvfuser/CMakeLists.txt -+++ b/third_party/nvfuser/CMakeLists.txt -@@ -158,7 +158,10 @@ endif() - target_include_directories(${NVFUSER_CODEGEN} - PUBLIC $) - set_property(TARGET ${NVFUSER_CODEGEN} PROPERTY CXX_STANDARD 17) --install(TARGETS ${NVFUSER_CODEGEN} EXPORT NvfuserTargets DESTINATION "${TORCH_INSTALL_LIB_DIR}") -+install(TARGETS ${NVFUSER_CODEGEN} EXPORT NvfuserTargets -+ RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" -+ LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") - # installing nvfuser python tests - install(DIRECTORY "${NVFUSER_ROOT}/python_tests/" - DESTINATION "${TORCH_ROOT}/test/_nvfuser" -diff --git a/torch/CMakeLists.txt b/torch/CMakeLists.txt -index 62ee4c1..f75073c 100644 ---- a/torch/CMakeLists.txt -+++ b/torch/CMakeLists.txt -@@ -107,7 +107,7 @@ set(TORCH_PYTHON_LINK_FLAGS "") - - if(MSVC) - string(APPEND TORCH_PYTHON_LINK_FLAGS " /NODEFAULTLIB:LIBCMT.LIB") -- list(APPEND TORCH_PYTHON_LINK_LIBRARIES ${PYTHON_LIBRARIES} onnx_library) -+ list(APPEND TORCH_PYTHON_LINK_LIBRARIES ${PYTHON_LIBRARIES} onnx) - if(NOT CMAKE_BUILD_TYPE MATCHES "Release") - string(APPEND TORCH_PYTHON_LINK_FLAGS " /DEBUG:FULL") - endif() -@@ -374,7 +374,10 @@ if(NOT TORCH_PYTHON_LINK_FLAGS STREQUAL "") - set_target_properties(torch_python PROPERTIES LINK_FLAGS ${TORCH_PYTHON_LINK_FLAGS}) - endif() - --install(TARGETS torch_python DESTINATION "${TORCH_INSTALL_LIB_DIR}") -+install(TARGETS torch_python -+ RUNTIME DESTINATION "${TORCH_INSTALL_BIN_DIR}" -+ LIBRARY DESTINATION "${TORCH_INSTALL_LIB_DIR}" -+ ARCHIVE DESTINATION "${TORCH_INSTALL_LIB_DIR}") - - # Generate torch/version.py from the appropriate CMake cache variables. - if(${CMAKE_BUILD_TYPE} STREQUAL "Debug") -diff --git a/torch/csrc/cuda/shared/nvtx.cpp b/torch/csrc/cuda/shared/nvtx.cpp -index 4fb72c5..1abe1b7 100644 ---- a/torch/csrc/cuda/shared/nvtx.cpp -+++ b/torch/csrc/cuda/shared/nvtx.cpp -@@ -1,7 +1,7 @@ - #ifdef _WIN32 - #include // _wgetenv for nvtx - #endif --#include -+#include - #include - - namespace torch::cuda::shared { -diff --git a/torch/csrc/jit/tensorexpr/llvm_codegen.h b/torch/csrc/jit/tensorexpr/llvm_codegen.h -index 7ab506f..2ee3b68 100644 ---- a/torch/csrc/jit/tensorexpr/llvm_codegen.h -+++ b/torch/csrc/jit/tensorexpr/llvm_codegen.h -@@ -41,9 +41,9 @@ class TORCH_API LLVMCodeGen : public CodeGen { - // users can continue to call this kernel using `call` and `call_raw`. - void cleanup_memory(); - -- TORCH_API void call(const std::vector& args) override; -- TORCH_API void call_raw(const std::vector& args) override; -- TORCH_API void call_with_numel(void** args, int64_t numel) override; -+ void call(const std::vector& args) override; -+ void call_raw(const std::vector& args) override; -+ void call_with_numel(void** args, int64_t numel) override; - - at::Tensor empty_strided( - c10::IntArrayRef size, -diff --git a/torch/csrc/profiler/stubs/cuda.cpp b/torch/csrc/profiler/stubs/cuda.cpp -index dec8757..3bb368a 100644 ---- a/torch/csrc/profiler/stubs/cuda.cpp -+++ b/torch/csrc/profiler/stubs/cuda.cpp -@@ -1,6 +1,6 @@ - #include - --#include -+#include - - #include - #include diff --git a/ports/libtorch/no-abs-path.patch b/ports/libtorch/no-abs-path.patch deleted file mode 100644 index 7468556e8a..0000000000 --- a/ports/libtorch/no-abs-path.patch +++ /dev/null @@ -1,25 +0,0 @@ -diff --git a/caffe2/core/macros.h.in b/caffe2/core/macros.h.in -index 997752ede3..7209b9a63e 100644 ---- a/caffe2/core/macros.h.in -+++ b/caffe2/core/macros.h.in -@@ -35,7 +35,7 @@ - // Useful build settings that are recorded in the compiled binary - #define CAFFE2_BUILD_STRINGS { \ - {"TORCH_VERSION", "${TORCH_VERSION}"}, \ -- {"CXX_COMPILER", "${CMAKE_CXX_COMPILER}"}, \ -+ {"CXX_COMPILER", "${cxx_compiler}"}, \ - {"CXX_FLAGS", "${CMAKE_CXX_FLAGS}"}, \ - {"BUILD_TYPE", "${CMAKE_BUILD_TYPE}"}, \ - {"BLAS_INFO", "${BLAS_INFO}"}, \ -diff --git a/cmake/Codegen.cmake b/cmake/Codegen.cmake -index 6fa2ab6ea1..07c449c02b 100644 ---- a/cmake/Codegen.cmake -+++ b/cmake/Codegen.cmake -@@ -36,6 +36,7 @@ endfunction() - ################################################################################ - - # ---[ Write the macros file -+cmake_path(GET CMAKE_CXX_COMPILER FILENAME cxx_compiler) - configure_file( - ${CMAKE_CURRENT_LIST_DIR}/../caffe2/core/macros.h.in - ${CMAKE_BINARY_DIR}/caffe2/core/macros.h) diff --git a/ports/libtorch/portfile.cmake b/ports/libtorch/portfile.cmake index 24d5130f23..4b068236eb 100644 --- a/ports/libtorch/portfile.cmake +++ b/ports/libtorch/portfile.cmake @@ -1,285 +1,240 @@ -vcpkg_download_distfile( - CUDNN_9_FIX - URLS https://github.com/pytorch/pytorch/commit/e14026bc2a6cd80bedffead77a5d7b75a37f8e67.patch?full_index=1 - SHA512 9569547b44b61f9559f0e7ab91f2be51657ece4f5462b6860cb5eae8d23d01187d6af046b369a77a228fe4d7153f5c683b686e84c1296a662f83e5f1f281bc7e - FILENAME libtorch-cudnn-9-fix-e14026bc2a6cd80bedffead77a5d7b75a37f8e67.patch -) - -vcpkg_download_distfile( - CUDA_THRUST_MISSING_HEADER_FIX - URLS https://github.com/pytorch/pytorch/commit/2a440348958b3f0a2b09458bd76fe5959b371c0c.patch?full_index=1 - SHA512 eff10d81b1c635108ad1b95a430865a76ab3f2079be74e61e06876942ac1fd43a274fc1c73e43c2c01b9ce5aca648213ef75c13c28b8ffa40497e4e26d5e3b16 - FILENAME libtorch-cuda-thrust-missing-header-2a440348958b3f0a2b09458bd76fe5959b371c0c.patch -) - -vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) - -vcpkg_from_github( - OUT_SOURCE_PATH SOURCE_PATH - REPO pytorch/pytorch - REF "v${VERSION}" - SHA512 a8961d78ad785b13c959a0612563a60e0de17a7c8bb9822ddea9a24072796354d07e81c47b6cc8761b21a6448845b088cf80e1661d9e889b0ed5474d3dc76756 - HEAD_REF master - PATCHES - "${CUDNN_9_FIX}" - "${CUDA_THRUST_MISSING_HEADER_FIX}" - cmake-fixes.patch - more-fixes.patch - fix-build.patch - clang-cl.patch - cuda-adjustments.patch - fix-api-export.patch - fxdiv.patch - protoc.patch - fix-sleef.patch - fix-glog.patch - fix-msvc-ICE.patch - fix-calculate-minloglevel.patch - force-cuda-include.patch - fix-aten-cutlass.patch - fix-build-error-with-fmt11.patch - no-abs-path.patch - add-include-chrono.patch -) - -file(REMOVE_RECURSE "${SOURCE_PATH}/caffe2/core/macros.h") # We must use generated header files - -vcpkg_from_github( - OUT_SOURCE_PATH src_kineto - REPO pytorch/kineto - REF 49e854d805d916b2031e337763928d2f8d2e1fbf - SHA512 ae63d48dc5b8ac30c38c2ace60f16834c7e9275fa342dc9f109d4fbc87b7bd674664f6413c36d0c1ab5a7da786030a4108d83daa4502b2f30239283ea3acdb16 - HEAD_REF main - PATCHES - kineto.patch -) -file(COPY "${src_kineto}/" DESTINATION "${SOURCE_PATH}/third_party/kineto") - -vcpkg_from_github( - OUT_SOURCE_PATH src_cudnn - REPO NVIDIA/cudnn-frontend # new port ? - REF 12f35fa2be5994c1106367cac2fba21457b064f4 - SHA512 a7e4bf58f82ca0b767df35da1b3588e2639ea2ef22ed0c47e989fb4cde5a28b0605b228b42fcaefbdf721bfbb91f2a9e7d41352ff522bd80b63db6d27e44ec20 - HEAD_REF main -) -file(COPY "${src_cudnn}/" DESTINATION "${SOURCE_PATH}/third_party/cudnn_frontend") - - -file(REMOVE - "${SOURCE_PATH}/cmake/Modules/FindBLAS.cmake" - "${SOURCE_PATH}/cmake/Modules/FindLAPACK.cmake" - "${SOURCE_PATH}/cmake/Modules/FindCUDA.cmake" - "${SOURCE_PATH}/cmake/Modules/FindCUDAToolkit.cmake" - "${SOURCE_PATH}/cmake/Modules/Findpybind11.cmake" -) - -find_program(FLATC NAMES flatc PATHS "${CURRENT_HOST_INSTALLED_DIR}/tools/flatbuffers" REQUIRED NO_DEFAULT_PATH NO_CMAKE_PATH) -message(STATUS "Using flatc: ${FLATC}") - -vcpkg_execute_required_process( - COMMAND ${FLATC} --cpp --no-prefix --scoped-enums --gen-mutable mobile_bytecode.fbs - LOGNAME codegen-flatc-mobile_bytecode - WORKING_DIRECTORY "${SOURCE_PATH}/torch/csrc/jit/serialization" -) - -find_program(PROTOC NAMES protoc PATHS "${CURRENT_HOST_INSTALLED_DIR}/tools/protobuf" REQUIRED NO_DEFAULT_PATH NO_CMAKE_PATH) -message(STATUS "Using protoc: ${PROTOC}") - -x_vcpkg_get_python_packages( - PYTHON_VERSION 3 - PACKAGES typing-extensions pyyaml numpy - OUT_PYTHON_VAR PYTHON3 -) -#set(PYTHON3 "${CURRENT_HOST_INSTALLED_DIR}/tools/python3/python${VCPKG_HOST_EXECUTABLE_SUFFIX}") -message(STATUS "Using Python3: ${PYTHON3}") - -vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS - FEATURES - dist USE_DISTRIBUTED # MPI, Gloo, TensorPipe - zstd USE_ZSTD - fbgemm USE_FBGEMM - opencv USE_OPENCV - # These are alternatives ! - # tbb USE_TBB - # tbb AT_PARALLEL_NATIVE_TBB # AT_PARALLEL_ are alternatives - # openmp USE_OPENMP - # openmp AT_PARALLEL_OPENMP # AT_PARALLEL_ are alternatives - leveldb USE_LEVELDB - opencl USE_OPENCL - cuda USE_CUDA - cuda USE_CUDNN - cuda USE_NCCL - cuda USE_SYSTEM_NCCL - cuda USE_NVRTC - cuda AT_CUDA_ENABLED - cuda AT_CUDNN_ENABLED - cuda USE_MAGMA - vulkan USE_VULKAN - #vulkan USE_VULKAN_SHADERC_RUNTIME - vulkan USE_VULKAN_RELAXED_PRECISION - rocm USE_ROCM # This is an alternative to cuda not a feature! (Not in vcpkg.json!) -> disabled - llvm USE_LLVM - mpi USE_MPI - nnpack USE_NNPACK # todo: check use of `DISABLE_NNPACK_AND_FAMILY` - nnpack AT_NNPACK_ENABLED - qnnpack USE_QNNPACK # todo: check use of `USE_PYTORCH_QNNPACK` -# No feature in vcpkg yet so disabled. -> Requires numpy build by vcpkg itself - python BUILD_PYTHON - python USE_NUMPY -) - -if("dist" IN_LIST FEATURES) - if(VCPKG_TARGET_IS_LINUX OR VCPKG_TARGET_IS_OSX) - list(APPEND FEATURE_OPTIONS -DUSE_TENSORPIPE=ON) - endif() - if(VCPKG_TARGET_IS_WINDOWS OR VCPKG_TARGET_IS_OSX) - list(APPEND FEATURE_OPTIONS -DUSE_LIBUV=ON) - endif() - list(APPEND FEATURE_OPTIONS -DUSE_GLOO=${VCPKG_TARGET_IS_LINUX}) -endif() - -if(VCPKG_TARGET_IS_ANDROID OR VCPKG_TARGET_IS_IOS) - list(APPEND FEATURE_OPTIONS -DINTERN_BUILD_MOBILE=ON) -else() - list(APPEND FEATURE_OPTIONS -DINTERN_BUILD_MOBILE=OFF) -endif() - -string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" USE_STATIC_RUNTIME) - -vcpkg_cmake_configure( - SOURCE_PATH "${SOURCE_PATH}" - DISABLE_PARALLEL_CONFIGURE - OPTIONS - ${FEATURE_OPTIONS} - -DProtobuf_PROTOC_EXECUTABLE:FILEPATH=${PROTOC} - -DCAFFE2_CUSTOM_PROTOC_EXECUTABLE:FILEPATH=${PROTOC} - -DPYTHON_EXECUTABLE:FILEPATH=${PYTHON3} - #-DPython3_EXECUTABLE:FILEPATH=${PYTHON3} - -DCAFFE2_STATIC_LINK_CUDA=ON - -DCAFFE2_USE_MSVC_STATIC_RUNTIME=${USE_STATIC_RUNTIME} - -DBUILD_CUSTOM_PROTOBUF=OFF - -DUSE_LITE_PROTO=OFF - -DBUILD_TEST=OFF - -DATEN_NO_TEST=ON - -DUSE_SYSTEM_LIBS=ON - -DUSE_METAL=OFF - -DUSE_PYTORCH_METAL=OFF - -DUSE_PYTORCH_METAL_EXPORT=OFF - -DUSE_GFLAGS=ON - -DUSE_GLOG=ON - -DUSE_LMDB=ON - -DUSE_ITT=OFF - -DUSE_ROCKSDB=ON - -DUSE_OBSERVERS=OFF - -DUSE_PYTORCH_QNNPACK=OFF - -DUSE_KINETO=OFF - -DUSE_ROCM=OFF - -DUSE_NUMA=OFF - -DUSE_SYSTEM_ONNX=ON - -DUSE_SYSTEM_FP16=ON - -DUSE_SYSTEM_EIGEN_INSTALL=ON - -DUSE_SYSTEM_CPUINFO=ON - -DUSE_SYSTEM_PTHREADPOOL=ON - -DUSE_SYSTEM_PYBIND11=ON - -DUSE_SYSTEM_ZSTD=ON - -DUSE_SYSTEM_GLOO=ON - -DUSE_SYSTEM_NCCL=ON - -DUSE_SYSTEM_LIBS=ON - -DUSE_SYSTEM_FXDIV=ON - -DUSE_SYSTEM_SLEEF=ON - -DBUILD_JNI=${VCPKG_TARGET_IS_ANDROID} - -DUSE_NNAPI=${VCPKG_TARGET_IS_ANDROID} - ${BLAS_OPTIONS} - # BLAS=MKL not supported in this port - -DUSE_MKLDNN=OFF - -DUSE_MKLDNN_CBLAS=OFF - #-DCAFFE2_USE_MKL=ON - #-DAT_MKL_ENABLED=ON - -DAT_MKLDNN_ENABLED=OFF - -DUSE_OPENCL=ON - -DUSE_NUMPY=ON - -DUSE_KINETO=OFF # - OPTIONS_RELEASE - -DPYTHON_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/python311.lib - OPTIONS_DEBUG - -DPYTHON_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/python311_d.lib - MAYBE_UNUSED_VARIABLES - USE_NUMA - USE_SYSTEM_BIND11 - MKLDNN_CPU_RUNTIME - PYTHON_LIBRARY -) - -vcpkg_cmake_install() -vcpkg_copy_pdbs() - -vcpkg_cmake_config_fixup(PACKAGE_NAME caffe2 CONFIG_PATH "share/cmake/Caffe2" DO_NOT_DELETE_PARENT_CONFIG_PATH) -vcpkg_cmake_config_fixup(PACKAGE_NAME torch CONFIG_PATH "share/cmake/Torch") -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/torch/TorchConfig.cmake" "/../../../" "/../../") -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/caffe2/Caffe2Config.cmake" "/../../../" "/../../") -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/caffe2/Caffe2Config.cmake" - "set(Caffe2_MAIN_LIBS torch_library)" - "set(Caffe2_MAIN_LIBS torch_library)\nfind_dependency(Eigen3)") - - - -# Traverse the folder and remove "some" empty folders -function(cleanup_once folder) - if(NOT IS_DIRECTORY "${folder}") - return() - endif() - file(GLOB paths LIST_DIRECTORIES true "${folder}/*") - list(LENGTH paths count) - # 1. remove if the given folder is empty - if(count EQUAL 0) - file(REMOVE_RECURSE "${folder}") - message(STATUS "Removed ${folder}") - return() - endif() - # 2. repeat the operation for hop 1 sub-directories - foreach(path ${paths}) - cleanup_once(${path}) - endforeach() -endfunction() - -# Some folders may contain empty folders. They will become empty after `cleanup_once`. -# Repeat given times to delete new empty folders. -function(cleanup_repeat folder repeat) - if(NOT IS_DIRECTORY "${folder}") - return() - endif() - while(repeat GREATER_EQUAL 1) - math(EXPR repeat "${repeat} - 1" OUTPUT_FORMAT DECIMAL) - cleanup_once("${folder}") - endwhile() -endfunction() - -cleanup_repeat("${CURRENT_PACKAGES_DIR}/include" 5) -cleanup_repeat("${CURRENT_PACKAGES_DIR}/lib/site-packages" 13) - -file(REMOVE_RECURSE - "${CURRENT_PACKAGES_DIR}/debug/include" - "${CURRENT_PACKAGES_DIR}/debug/share" -) - -vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") - -# Cannot build python bindings yet -#if("python" IN_LIST FEATURES) -# set(ENV{USE_SYSTEM_LIBS} 1) -# vcpkg_replace_string("${SOURCE_PATH}/setup.py" "@TARGET_TRIPLET@" "${TARGET_TRIPLET}-rel") -# vcpkg_replace_string("${SOURCE_PATH}/tools/setup_helpers/env.py" "@TARGET_TRIPLET@" "${TARGET_TRIPLET}-rel") -# vcpkg_replace_string("${SOURCE_PATH}/torch/utils/cpp_extension.py" "@TARGET_TRIPLET@" "${TARGET_TRIPLET}-rel") -# vcpkg_python_build_and_install_wheel(SOURCE_PATH "${SOURCE_PATH}" OPTIONS -x) -#endif() - -set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled) # torch_global_deps.dll is empty.c and just for linking deps - -set(config "${CURRENT_PACKAGES_DIR}/share/torch/TorchConfig.cmake") -file(READ "${config}" contents) -string(REGEX REPLACE "set\\\(NVTOOLEXT_HOME[^)]+" "set(NVTOOLEXT_HOME \"\$ENV{CUDA_PATH}\"" contents "${contents}") -#string(REGEX REPLACE "set\\\(NVTOOLEXT_HOME[^)]+" "set(NVTOOLEXT_HOME \"\${CMAKE_CURRENT_LIST_DIR}/../../tools/cuda/\"" contents "${contents}") -string(REGEX REPLACE "\\\${NVTOOLEXT_HOME}/lib/x64/nvToolsExt64_1.lib" "" contents "${contents}") -file(WRITE "${config}" "${contents}") - -vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/torch/csrc/autograd/custom_function.h" "struct TORCH_API Function" "struct Function") +vcpkg_check_linkage(ONLY_DYNAMIC_LIBRARY) + +vcpkg_from_github( + OUT_SOURCE_PATH SOURCE_PATH + REPO pytorch/pytorch + REF "v${VERSION}" + SHA512 a9fc2252af9031c2cd46dde558c491aea8bc322fb80157a7760f300a44b759d4bfe866f030fbb974b80493057cfff4dd512498f99a100ed6d05bf620258ed37e + HEAD_REF master + PATCHES + fix-cmake.patch + fix-osx.patch + fix-vulkan.patch + fix-glog.patch + fix-pytorch-pr-156630.patch # https://github.com/pytorch/pytorch/pull/156630 + fix-dist-cuda.patch + ) + +file(REMOVE_RECURSE "${SOURCE_PATH}/caffe2/core/macros.h") # We must use generated header files + +vcpkg_from_github( + OUT_SOURCE_PATH src_kineto + REPO pytorch/kineto + REF d9753139d181b9ff42872465aac0e5d3018be415 + SHA512 f037fac78e566c40108acf9eace55a8f67a2c5b71f298fd3cd17bf22cf05240c260fd89f017fa411656a7505ec9073a06a3048e191251d5cfc4b52c237b37d0b + HEAD_REF main + PATCHES + kineto.patch +) +file(COPY "${src_kineto}/" DESTINATION "${SOURCE_PATH}/third_party/kineto") + +vcpkg_from_github( + OUT_SOURCE_PATH src_cudnn + REPO NVIDIA/cudnn-frontend # new port ? + REF 2533f5e5c1877fd76266133c1479ef1643ce3a8b # 1.6.1 + SHA512 8caacdf9f7dbd6ce55507f5f7165db8640b681e2a7dfd6a841de8eaa3489cff5ba41d11758cc464320b2ff9a491f8234e1749580cf43cac702f07cf82611e084 + HEAD_REF main +) +file(COPY "${src_cudnn}/" DESTINATION "${SOURCE_PATH}/third_party/cudnn_frontend") + + +file(REMOVE + "${SOURCE_PATH}/cmake/Modules/FindBLAS.cmake" + "${SOURCE_PATH}/cmake/Modules/FindLAPACK.cmake" + "${SOURCE_PATH}/cmake/Modules/FindCUDA.cmake" + "${SOURCE_PATH}/cmake/Modules/FindCUDAToolkit.cmake" + "${SOURCE_PATH}/cmake/Modules/Findpybind11.cmake" +) + +find_program(FLATC NAMES flatc PATHS "${CURRENT_HOST_INSTALLED_DIR}/tools/flatbuffers" REQUIRED NO_DEFAULT_PATH NO_CMAKE_PATH) +message(STATUS "Using flatc: ${FLATC}") + +vcpkg_execute_required_process( + COMMAND ${FLATC} --cpp --no-prefix --scoped-enums --gen-mutable mobile_bytecode.fbs + LOGNAME codegen-flatc-mobile_bytecode + WORKING_DIRECTORY "${SOURCE_PATH}/torch/csrc/jit/serialization" +) + +find_program(PROTOC NAMES protoc PATHS "${CURRENT_HOST_INSTALLED_DIR}/tools/protobuf" REQUIRED NO_DEFAULT_PATH NO_CMAKE_PATH) +message(STATUS "Using protoc: ${PROTOC}") + +x_vcpkg_get_python_packages( + PYTHON_VERSION 3 + PACKAGES typing-extensions pyyaml + # numpy + OUT_PYTHON_VAR PYTHON3 +) + +message(STATUS "Using Python3: ${PYTHON3}") + +vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS + FEATURES + dist USE_DISTRIBUTED # MPI, Gloo, TensorPipe + zstd USE_ZSTD + fbgemm USE_FBGEMM + opencv USE_OPENCV + opencl USE_OPENCL + mkldnn USE_MKLDNN + cuda USE_CUDA + cuda USE_CUDNN + cuda USE_NCCL + cuda USE_SYSTEM_NCCL + cuda USE_NVRTC + cuda AT_CUDA_ENABLED + cuda AT_CUDNN_ENABLED + cuda USE_MAGMA + vulkan USE_VULKAN + vulkan USE_VULKAN_RELAXED_PRECISION + rocm USE_ROCM # This is an alternative to cuda not a feature! (Not in vcpkg.json!) -> disabled + llvm USE_LLVM + mpi USE_MPI + nnpack USE_NNPACK # todo: check use of `DISABLE_NNPACK_AND_FAMILY` +# No feature in vcpkg yet so disabled. -> Requires numpy build by vcpkg itself + python BUILD_PYTHON + python USE_NUMPY + glog USE_GLOG + gflags USE_GFLAGS +) + +if("dist" IN_LIST FEATURES) + if(VCPKG_TARGET_IS_LINUX OR VCPKG_TARGET_IS_OSX) + list(APPEND FEATURE_OPTIONS -DUSE_TENSORPIPE=ON) + endif() + if(VCPKG_TARGET_IS_OSX) + list(APPEND FEATURE_OPTIONS -DUSE_LIBUV=ON) + endif() + list(APPEND FEATURE_OPTIONS -DUSE_GLOO=${VCPKG_TARGET_IS_LINUX}) +endif() + +if("cuda" IN_LIST FEATURES) + vcpkg_find_cuda(OUT_CUDA_TOOLKIT_ROOT cuda_toolkit_root) + list(APPEND FEATURE_OPTIONS + "-DCMAKE_CUDA_COMPILER=${NVCC}" + "-DCUDAToolkit_ROOT=${cuda_toolkit_root}" + ) +endif() + +if("vulkan" IN_LIST FEATURES) # Vulkan::glslc in FindVulkan.cmake + find_program(GLSLC NAMES glslc PATHS "${CURRENT_HOST_INSTALLED_DIR}/tools/shaderc" REQUIRED) + message(STATUS "Using glslc: ${GLSLC}") + list(APPEND FEATURE_OPTIONS "-DVulkan_GLSLC_EXECUTABLE:FILEPATH=${GLSLC}") +endif() + +set(TARGET_IS_MOBILE OFF) +if(VCPKG_TARGET_IS_ANDROID OR VCPKG_TARGET_IS_IOS) + set(TARGET_IS_MOBILE ON) +endif() + +set(TARGET_IS_APPLE OFF) +if(VCPKG_TARGET_IS_IOS OR VCPKG_TARGET_IS_OSX) + set(TARGET_IS_APPLE ON) +endif() + +string(COMPARE EQUAL "${VCPKG_CRT_LINKAGE}" "static" USE_STATIC_RUNTIME) +vcpkg_cmake_configure( + SOURCE_PATH "${SOURCE_PATH}" + DISABLE_PARALLEL_CONFIGURE + OPTIONS + ${FEATURE_OPTIONS} + -DProtobuf_PROTOC_EXECUTABLE:FILEPATH=${PROTOC} + -DCAFFE2_CUSTOM_PROTOC_EXECUTABLE:FILEPATH=${PROTOC} + -DPython_EXECUTABLE:FILEPATH=${PYTHON3} + -DPython3_EXECUTABLE:FILEPATH=${PYTHON3} + -DBUILD_PYTHON=OFF + -DUSE_NUMPY=OFF + -DCAFFE2_STATIC_LINK_CUDA=ON + -DCAFFE2_USE_MSVC_STATIC_RUNTIME=${USE_STATIC_RUNTIME} + -DBUILD_CUSTOM_PROTOBUF=OFF + -DBUILD_PYTHON=OFF + -DUSE_LITE_PROTO=OFF + -DBUILD_TEST=OFF + -DATEN_NO_TEST=ON + -DUSE_SYSTEM_LIBS=ON + -DUSE_METAL=OFF + -DUSE_FLASH_ATTENTION=OFF + -DUSE_PYTORCH_METAL=OFF + -DUSE_PYTORCH_METAL_EXPORT=OFF + -DUSE_PYTORCH_QNNPACK:BOOL=OFF + -DUSE_ITT=OFF + -DUSE_ROCKSDB=ON + -DUSE_OBSERVERS=OFF + -DUSE_KINETO=OFF + -DUSE_ROCM=OFF + -DUSE_NUMA=OFF + -DUSE_SYSTEM_LIBS=ON + -DBUILD_JNI=${VCPKG_TARGET_IS_ANDROID} + -DUSE_NNAPI=${VCPKG_TARGET_IS_ANDROID} + ${BLAS_OPTIONS} + # BLAS=MKL not supported in this port + -DUSE_MKLDNN=OFF + -DUSE_MKLDNN_CBLAS=OFF + #-DCAFFE2_USE_MKL=ON + #-DAT_MKL_ENABLED=ON + -DAT_MKLDNN_ENABLED=OFF + -DUSE_OPENCL=ON + -DUSE_KINETO=OFF # + # Should be enabled in-future along with the "python" feature (currently disabled) + # OPTIONS_RELEASE + # -DPYTHON_LIBRARY=${CURRENT_INSTALLED_DIR}/lib/python311.lib + # OPTIONS_DEBUG + # -DPYTHON_LIBRARY=${CURRENT_INSTALLED_DIR}/debug/lib/python311_d.lib + MAYBE_UNUSED_VARIABLES + USE_NUMA + USE_SYSTEM_BIND11 + MKLDNN_CPU_RUNTIME + PYTHON_LIBRARY +) + +vcpkg_cmake_install() +vcpkg_copy_pdbs() + +vcpkg_cmake_config_fixup(PACKAGE_NAME Caffe2 CONFIG_PATH "share/cmake/Caffe2" DO_NOT_DELETE_PARENT_CONFIG_PATH) +vcpkg_cmake_config_fixup(PACKAGE_NAME torch CONFIG_PATH "share/cmake/Torch" DO_NOT_DELETE_PARENT_CONFIG_PATH) +vcpkg_cmake_config_fixup(PACKAGE_NAME ATen CONFIG_PATH "share/cmake/ATen" ) + +vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/share/torch/TorchConfig.cmake" "/../../../" "/../../") + +# Traverse the folder and remove "some" empty folders +function(cleanup_once folder) + if(NOT IS_DIRECTORY "${folder}") + return() + endif() + file(GLOB paths LIST_DIRECTORIES true "${folder}/*") + list(LENGTH paths count) + # 1. remove if the given folder is empty + if(count EQUAL 0) + file(REMOVE_RECURSE "${folder}") + message(STATUS "Removed ${folder}") + return() + endif() + # 2. repeat the operation for hop 1 sub-directories + foreach(path ${paths}) + cleanup_once(${path}) + endforeach() +endfunction() + +# Some folders may contain empty folders. They will become empty after `cleanup_once`. +# Repeat given times to delete new empty folders. +function(cleanup_repeat folder repeat) + if(NOT IS_DIRECTORY "${folder}") + return() + endif() + while(repeat GREATER_EQUAL 1) + math(EXPR repeat "${repeat} - 1" OUTPUT_FORMAT DECIMAL) + cleanup_once("${folder}") + endwhile() +endfunction() + +cleanup_repeat("${CURRENT_PACKAGES_DIR}/include" 5) +cleanup_repeat("${CURRENT_PACKAGES_DIR}/lib/site-packages" 13) + +file(REMOVE_RECURSE + "${CURRENT_PACKAGES_DIR}/debug/include" + "${CURRENT_PACKAGES_DIR}/debug/share" +) + +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE") + + +set(VCPKG_POLICY_DLLS_WITHOUT_EXPORTS enabled) # torch_global_deps.dll is empty.c and just for linking deps + diff --git a/ports/libtorch/protoc.patch b/ports/libtorch/protoc.patch deleted file mode 100644 index 9690ed6155..0000000000 --- a/ports/libtorch/protoc.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index fa6da328b..80bbfc6bb 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -686,7 +686,7 @@ if(NOT CMAKE_BUILD_TYPE) - endif() - - # The below means we are cross compiling for arm64 or x86_64 on MacOSX --if(NOT IOS AND CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_OSX_ARCHITECTURES MATCHES "^(x86_64|arm64)$") -+if(0) - set(CROSS_COMPILING_MACOSX TRUE) - # We need to compile a universal protoc to not fail protobuf build - # We set CMAKE_TRY_COMPILE_TARGET_TYPE to STATIC_LIBRARY (vs executable) to succeed the cmake compiler check for cross-compiling diff --git a/ports/libtorch/vcpkg.json b/ports/libtorch/vcpkg.json index 927b56b6c1..4a62c0c2e8 100644 --- a/ports/libtorch/vcpkg.json +++ b/ports/libtorch/vcpkg.json @@ -1,16 +1,19 @@ { "name": "libtorch", - "version": "2.1.2", - "port-version": 12, + "version": "2.7.1", "description": "Tensors and Dynamic neural networks in Python with strong GPU acceleration", "homepage": "https://pytorch.org/", "license": null, "supports": "(windows & !static) | osx | linux", "dependencies": [ "blas", + "cpp-httplib", "cpuinfo", "eigen3", - "fftw3", + { + "name": "fbgemm", + "platform": "x64" + }, "flatbuffers", { "name": "flatbuffers", @@ -18,14 +21,12 @@ }, "fmt", "foxi", - "foxi", "fp16", "gemmlowp", - "gflags", - "glog", "lapack", "lmdb", "mimalloc", + "nlohmann-json", "onnx", "onnx-optimizer", "opencl", @@ -36,6 +37,7 @@ "host": true }, "pthreadpool", + "pybind11", "sleef", { "name": "vcpkg-cmake", @@ -52,21 +54,43 @@ "xnnpack" ], "default-features": [ + "gflags", + "glog", "opencv", "zstd" ], "features": { "cuda": { "description": "Build with CUDA GPU backend", + "supports": "(windows & x64 & !staticcrt) | (linux & x64)", "dependencies": [ "cuda", "cudnn", + { + "name": "gloo", + "features": [ + "cuda" + ], + "platform": "linux" + }, "magma", - "nvidia-cutlass" + { + "name": "nccl", + "platform": "linux" + }, + "nvidia-cutlass", + { + "name": "tensorpipe", + "features": [ + "cuda" + ], + "platform": "linux" + } ] }, "dist": { "description": "Use distributed with MPI, Gloo, libuv, TensorPipe", + "supports": "linux | windows", "dependencies": [ { "name": "gloo", @@ -86,15 +110,20 @@ }, { "name": "tensorpipe", - "platform": "linux | osx" + "platform": "linux" } ] }, - "leveldb": { - "description": "Build with LevelDB", + "gflags": { + "description": "Build with gflags", "dependencies": [ - "leveldb", - "snappy" + "gflags" + ] + }, + "glog": { + "description": "Build with glog", + "dependencies": [ + "glog" ] }, "llvm": { @@ -125,6 +154,10 @@ "vulkan": { "description": "Build with Vulkan GPU backend", "dependencies": [ + { + "name": "shaderc", + "host": true + }, "vulkan", "vulkan-loader", "vulkan-memory-allocator" diff --git a/ports/qnnpack/use-packages.patch b/ports/qnnpack/use-packages.patch index 2591e13315..7cdb68d335 100644 --- a/ports/qnnpack/use-packages.patch +++ b/ports/qnnpack/use-packages.patch @@ -1,5 +1,5 @@ diff --git a/CMakeLists.txt b/CMakeLists.txt -index a5ddc49..05e1279 100644 +index 932f9e7..187be72 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -13,8 +13,6 @@ PROJECT(QNNPACK C CXX ASM) @@ -11,12 +11,7 @@ index a5ddc49..05e1279 100644 OPTION(QNNPACK_BUILD_TESTS "Build QNNPACK unit tests" ON) OPTION(QNNPACK_BUILD_BENCHMARKS "Build QNNPACK benchmarks" ON) -@@ -53,11 +51,11 @@ SET(CONFU_DEPENDENCIES_SOURCE_DIR "${CMAKE_SOURCE_DIR}/deps" - SET(CONFU_DEPENDENCIES_BINARY_DIR "${CMAKE_BINARY_DIR}/deps" - CACHE PATH "Confu-style dependencies binary directory") - --IF(NOT DEFINED CLOG_SOURCE_DIR) -+IF(FALSE) +@@ -60,7 +58,7 @@ IF(NOT DEFINED CLOG_SOURCE_DIR) SET(CLOG_SOURCE_DIR "${PROJECT_SOURCE_DIR}/deps/clog") ENDIF() @@ -25,7 +20,7 @@ index a5ddc49..05e1279 100644 MESSAGE(STATUS "Downloading cpuinfo to ${CONFU_DEPENDENCIES_SOURCE_DIR}/cpuinfo (define CPUINFO_SOURCE_DIR to avoid it)") CONFIGURE_FILE(cmake/DownloadCpuinfo.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/cpuinfo-download/CMakeLists.txt") EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . -@@ -67,7 +65,7 @@ IF(NOT DEFINED CPUINFO_SOURCE_DIR) +@@ -70,7 +68,7 @@ IF(NOT DEFINED CPUINFO_SOURCE_DIR) SET(CPUINFO_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/cpuinfo" CACHE STRING "cpuinfo source directory") ENDIF() @@ -34,7 +29,7 @@ index a5ddc49..05e1279 100644 MESSAGE(STATUS "Downloading FP16 to ${CONFU_DEPENDENCIES_SOURCE_DIR}/fp16 (define FP16_SOURCE_DIR to avoid it)") CONFIGURE_FILE(cmake/DownloadFP16.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/fp16-download/CMakeLists.txt") EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . -@@ -77,7 +75,7 @@ IF(NOT DEFINED FP16_SOURCE_DIR) +@@ -80,7 +78,7 @@ IF(NOT DEFINED FP16_SOURCE_DIR) SET(FP16_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/fp16" CACHE STRING "FP16 source directory") ENDIF() @@ -43,7 +38,7 @@ index a5ddc49..05e1279 100644 MESSAGE(STATUS "Downloading FXdiv to ${CONFU_DEPENDENCIES_SOURCE_DIR}/fxdiv (define FXDIV_SOURCE_DIR to avoid it)") CONFIGURE_FILE(cmake/DownloadFXdiv.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/fxdiv-download/CMakeLists.txt") EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . -@@ -87,7 +85,7 @@ IF(NOT DEFINED FXDIV_SOURCE_DIR) +@@ -90,7 +88,7 @@ IF(NOT DEFINED FXDIV_SOURCE_DIR) SET(FXDIV_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/fxdiv" CACHE STRING "FXdiv source directory") ENDIF() @@ -52,7 +47,7 @@ index a5ddc49..05e1279 100644 MESSAGE(STATUS "Downloading PSimd to ${CONFU_DEPENDENCIES_SOURCE_DIR}/psimd (define PSIMD_SOURCE_DIR to avoid it)") CONFIGURE_FILE(cmake/DownloadPSimd.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/psimd-download/CMakeLists.txt") EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . -@@ -97,7 +95,7 @@ IF(NOT DEFINED PSIMD_SOURCE_DIR) +@@ -100,7 +98,7 @@ IF(NOT DEFINED PSIMD_SOURCE_DIR) SET(PSIMD_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/psimd" CACHE STRING "PSimd source directory") ENDIF() @@ -61,7 +56,7 @@ index a5ddc49..05e1279 100644 MESSAGE(STATUS "Downloading pthreadpool to ${CONFU_DEPENDENCIES_SOURCE_DIR}/pthreadpool (define PTHREADPOOL_SOURCE_DIR to avoid it)") CONFIGURE_FILE(cmake/DownloadPThreadPool.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/pthreadpool-download/CMakeLists.txt") EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . -@@ -107,7 +105,7 @@ IF(NOT DEFINED PTHREADPOOL_SOURCE_DIR) +@@ -110,7 +108,7 @@ IF(NOT DEFINED PTHREADPOOL_SOURCE_DIR) SET(PTHREADPOOL_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/pthreadpool" CACHE STRING "pthreadpool source directory") ENDIF() @@ -70,7 +65,7 @@ index a5ddc49..05e1279 100644 MESSAGE(STATUS "Downloading Google Test to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest (define GOOGLETEST_SOURCE_DIR to avoid it)") CONFIGURE_FILE(cmake/DownloadGoogleTest.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googletest-download/CMakeLists.txt") EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . -@@ -117,7 +115,7 @@ IF(QNNPACK_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR) +@@ -120,7 +118,7 @@ IF(QNNPACK_BUILD_TESTS AND NOT DEFINED GOOGLETEST_SOURCE_DIR) SET(GOOGLETEST_SOURCE_DIR "${CONFU_DEPENDENCIES_SOURCE_DIR}/googletest" CACHE STRING "Google Test source directory") ENDIF() @@ -79,7 +74,7 @@ index a5ddc49..05e1279 100644 MESSAGE(STATUS "Downloading Google Benchmark to ${CONFU_DEPENDENCIES_SOURCE_DIR}/googlebenchmark (define GOOGLEBENCHMARK_SOURCE_DIR to avoid it)") CONFIGURE_FILE(cmake/DownloadGoogleBenchmark.cmake "${CONFU_DEPENDENCIES_BINARY_DIR}/googlebenchmark-download/CMakeLists.txt") EXECUTE_PROCESS(COMMAND "${CMAKE_COMMAND}" -G "${CMAKE_GENERATOR}" . -@@ -229,15 +227,7 @@ IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i[3-6]86|x86_64)$" OR IOS_ARCH MATCHES "^(i +@@ -232,15 +230,7 @@ IF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(i[3-6]86|x86_64)$" OR IOS_ARCH MATCHES "^(i LIST(APPEND QNNPACK_UKERNELS ${QNNPACK_X86_SSE2_UKERNELS}) ENDIF() @@ -96,89 +91,55 @@ index a5ddc49..05e1279 100644 SET_TARGET_PROPERTIES(qnnpack PROPERTIES C_STANDARD 99 C_EXTENSIONS YES) -@@ -272,7 +262,7 @@ TARGET_INCLUDE_DIRECTORIES(qnnpack PRIVATE src) +@@ -274,6 +264,10 @@ TARGET_INCLUDE_DIRECTORIES(qnnpack PUBLIC include) + TARGET_INCLUDE_DIRECTORIES(qnnpack PRIVATE src) SET_TARGET_PROPERTIES(qnnpack PROPERTIES PUBLIC_HEADER include/qnnpack.h) - # ---[ Configure clog --IF(NOT TARGET clog) -+IF(FALSE) - SET(CLOG_BUILD_TESTS OFF CACHE BOOL "") - SET(CLOG_RUNTIME_TYPE "${CPUINFO_RUNTIME_TYPE}" CACHE STRING "") - ADD_SUBDIRECTORY( -@@ -281,10 +271,9 @@ IF(NOT TARGET clog) - # We build static version of clog but a dynamic library may indirectly depend on it - SET_PROPERTY(TARGET clog PROPERTY POSITION_INDEPENDENT_CODE ON) - ENDIF() --TARGET_LINK_LIBRARIES(qnnpack PRIVATE clog) - - # ---[ Configure cpuinfo --IF(NOT TARGET cpuinfo) -+IF(FALSE) - SET(CPUINFO_BUILD_TOOLS OFF CACHE BOOL "") - SET(CPUINFO_BUILD_UNIT_TESTS OFF CACHE BOOL "") - SET(CPUINFO_BUILD_MOCK_TESTS OFF CACHE BOOL "") -@@ -293,17 +282,19 @@ IF(NOT TARGET cpuinfo) - "${CPUINFO_SOURCE_DIR}" - "${CONFU_DEPENDENCIES_BINARY_DIR}/cpuinfo") - ENDIF() --TARGET_LINK_LIBRARIES(qnnpack PRIVATE cpuinfo) -+ +find_package(cpuinfo CONFIG REQUIRED) -+target_link_libraries(qnnpack PUBLIC cpuinfo::clog cpuinfo::cpuinfo) ++add_library(cpuinfo ALIAS cpuinfo::cpuinfo) ++add_library(clog ALIAS cpuinfo::clog) ++ + # ---[ Configure clog + IF(NOT TARGET clog) + SET(CLOG_BUILD_TESTS OFF CACHE BOOL "") +@@ -299,6 +293,8 @@ ENDIF() + TARGET_LINK_LIBRARIES(qnnpack PRIVATE cpuinfo) # ---[ Configure pthreadpool --IF(NOT TARGET pthreadpool) -+IF(FALSE) ++find_package(unofficial-pthreadpool CONFIG REQUIRED) ++add_library(pthreadpool ALIAS unofficial::pthreadpool) + IF(NOT TARGET pthreadpool) SET(PTHREADPOOL_BUILD_TESTS OFF CACHE BOOL "") SET(PTHREADPOOL_BUILD_BENCHMARKS OFF CACHE BOOL "") - ADD_SUBDIRECTORY( - "${PTHREADPOOL_SOURCE_DIR}" - "${CONFU_DEPENDENCIES_BINARY_DIR}/pthreadpool") - ENDIF() --IF(QNNPACK_CUSTOM_THREADPOOL) -+IF(FALSE) - # Depend on pthreadpool interface, but not on implementation. - # This is used when QNNPACK user (e.g. Caffe2) provides its own threadpool implementation. - TARGET_LINK_LIBRARIES(qnnpack PUBLIC pthreadpool_interface) -@@ -312,34 +303,38 @@ ELSE() +@@ -315,6 +311,8 @@ ELSE() ENDIF() # ---[ Configure FXdiv --IF(NOT TARGET fxdiv) -+IF(FALSE) ++find_package(unofficial-fxdiv CONFIG REQUIRED) ++add_library(fxdiv ALIAS unofficial::fxdiv::fxdiv) + IF(NOT TARGET fxdiv) SET(FXDIV_BUILD_TESTS OFF CACHE BOOL "") SET(FXDIV_BUILD_BENCHMARKS OFF CACHE BOOL "") - ADD_SUBDIRECTORY( - "${FXDIV_SOURCE_DIR}" - "${CONFU_DEPENDENCIES_BINARY_DIR}/fxdiv") - ENDIF() --TARGET_LINK_LIBRARIES(qnnpack PRIVATE fxdiv) -+find_path(FXDIV_INCLUDE_DIRS "fxdiv.h") -+target_include_directories(qnnpack PRIVATE ${FXDIV_INCLUDE_DIRS}) +@@ -325,6 +323,8 @@ ENDIF() + TARGET_LINK_LIBRARIES(qnnpack PRIVATE fxdiv) # ---[ Configure psimd --IF(NOT TARGET psimd) -+IF(FALSE) ++find_package(unofficial-psimd CONFIG REQUIRED) ++add_library(psimd ALIAS unofficial::psimd::psimd) + IF(NOT TARGET psimd) ADD_SUBDIRECTORY( "${PSIMD_SOURCE_DIR}" - "${CONFU_DEPENDENCIES_BINARY_DIR}/psimd") - ENDIF() --TARGET_LINK_LIBRARIES(qnnpack PRIVATE psimd) -+find_path(PSIMD_INCLUDE_DIRS "psimd.h") -+target_include_directories(qnnpack PRIVATE ${PSIMD_INCLUDE_DIRS}) +@@ -333,6 +333,8 @@ ENDIF() + TARGET_LINK_LIBRARIES(qnnpack PRIVATE psimd) # ---[ Configure FP16 --IF(NOT TARGET fp16) -+IF(FALSE) ++find_package(unofficial-fp16 CONFIG REQUIRED) ++add_library(fp16 ALIAS unofficial::fp16::fp16) + IF(NOT TARGET fp16) SET(FP16_BUILD_TESTS OFF CACHE BOOL "") SET(FP16_BUILD_BENCHMARKS OFF CACHE BOOL "") - ADD_SUBDIRECTORY( - "${FP16_SOURCE_DIR}" - "${CONFU_DEPENDENCIES_BINARY_DIR}/fp16") - ENDIF() --TARGET_LINK_LIBRARIES(qnnpack PRIVATE fp16) -+find_path(FP16_INCLUDE_DIRS "fp16.h") -+target_include_directories(qnnpack PRIVATE ${FP16_INCLUDE_DIRS}) +@@ -343,6 +345,7 @@ ENDIF() + TARGET_LINK_LIBRARIES(qnnpack PRIVATE fp16) INSTALL(TARGETS qnnpack + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} diff --git a/ports/qnnpack/vcpkg.json b/ports/qnnpack/vcpkg.json index a22b2306e6..95b027e111 100644 --- a/ports/qnnpack/vcpkg.json +++ b/ports/qnnpack/vcpkg.json @@ -1,13 +1,18 @@ { "name": "qnnpack", "version-date": "2021-02-26", - "port-version": 3, + "port-version": 5, "description": "Quantized Neural Network PACKage - mobile-optimized implementation of quantized neural network operators", "homepage": "https://github.com/pytorch/QNNPACK", "license": "BSD-3-Clause", "supports": "!windows", "dependencies": [ - "cpuinfo", + { + "name": "cpuinfo", + "features": [ + "clog" + ] + }, "fp16", "fxdiv", "psimd", diff --git a/ports/xnnpack/fix-build.patch b/ports/xnnpack/fix-build.patch deleted file mode 100644 index a455c96ee6..0000000000 --- a/ports/xnnpack/fix-build.patch +++ /dev/null @@ -1,94 +0,0 @@ -diff --git a/CMakeLists.txt b/CMakeLists.txt -index 95df99eae0..7e969cfbb8 100644 ---- a/CMakeLists.txt -+++ b/CMakeLists.txt -@@ -704,7 +704,7 @@ IF(MSVC) - TARGET_COMPILE_DEFINITIONS(operator-utils PRIVATE "restrict=") - TARGET_COMPILE_DEFINITIONS(XNNPACK PRIVATE "restrict=") - ENDIF() -- -+ if(0) - TARGET_COMPILE_OPTIONS(microkernels-all PRIVATE "$<$>:/O2>") - TARGET_COMPILE_OPTIONS(microkernels-prod PRIVATE "$<$>:/O2>") - TARGET_COMPILE_OPTIONS(hardware-config PRIVATE "$<$>:/O2>") -@@ -723,6 +723,7 @@ IF(MSVC) - TARGET_COMPILE_OPTIONS(operators PRIVATE "$<$>:/O1>") - TARGET_COMPILE_OPTIONS(XNNPACK PRIVATE "$<$>:/O1>") - ENDIF() -+ endif() - ELSE() - TARGET_COMPILE_OPTIONS(microkernels-all PRIVATE "$<$>:-O2>") - TARGET_COMPILE_OPTIONS(microkernels-prod PRIVATE "$<$>:-O2>") -@@ -797,8 +798,8 @@ IF(NOT TARGET clog) - # We build static version of clog but a dynamic library may indirectly depend on it - SET_PROPERTY(TARGET clog PROPERTY POSITION_INDEPENDENT_CODE ON) - ELSE() -- ADD_LIBRARY(clog STATIC IMPORTED) -- FIND_LIBRARY(CLOG_LIBRARY clog) -+ ADD_LIBRARY(clog UNKNOWN IMPORTED) -+ FIND_LIBRARY(CLOG_LIBRARY NAMES clog REQUIRED) - IF(NOT CLOG_LIBRARY) - MESSAGE(FATAL_ERROR "Cannot find clog") - ENDIF() -@@ -817,8 +818,8 @@ IF(NOT TARGET cpuinfo) - "${CPUINFO_SOURCE_DIR}" - "${CMAKE_BINARY_DIR}/cpuinfo") - ELSE() -- ADD_LIBRARY(cpuinfo SHARED IMPORTED) -- FIND_LIBRARY(CPUINFO_LIBRARY cpuinfo) -+ ADD_LIBRARY(cpuinfo UNKNOWN IMPORTED) -+ FIND_LIBRARY(CPUINFO_LIBRARY NAMES cpuinfo REQUIRED) - IF(NOT CPUINFO_LIBRARY) - MESSAGE(FATAL_ERROR "Cannot find cpuinfo") - ENDIF() -@@ -841,13 +842,15 @@ IF(NOT TARGET pthreadpool) - "${PTHREADPOOL_SOURCE_DIR}" - "${CMAKE_BINARY_DIR}/pthreadpool") - ELSE() -- ADD_LIBRARY(pthreadpool SHARED IMPORTED) -- FIND_LIBRARY(PTHREADPOOL_LIBRARY pthreadpool) -+ ADD_LIBRARY(pthreadpool UNKNOWN IMPORTED) -+ FIND_LIBRARY(PTHREADPOOL_LIBRARY NAMES pthreadpool REQUIRED) -+ find_path(PTHREADPOOL_INCLUDE NAMES pthreadpool.h REQUIRED PATH_SUFFIXES include) -+ target_include_directories(pthreadpool INTERFACE "${PTHREADPOOL_INCLUDE}") - IF(NOT PTHREADPOOL_LIBRARY) - MESSAGE(FATAL_ERROR "Cannot find pthreadpool") - ENDIF() - SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_LOCATION "${PTHREADPOOL_LIBRARY}") -- SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_IMPLIB "${PTHREADPOOL_LIBRARY}") -+ #SET_PROPERTY(TARGET pthreadpool PROPERTY IMPORTED_IMPLIB "${PTHREADPOOL_LIBRARY}") - ENDIF() - ENDIF() - TARGET_LINK_LIBRARIES(microkernels-all PRIVATE pthreadpool) -@@ -881,12 +884,12 @@ IF(NOT TARGET fxdiv) - "${FXDIV_SOURCE_DIR}" - "${CMAKE_BINARY_DIR}/FXdiv") - ELSE() -- FIND_FILE(FXDIV_HDR fxdiv.h PATH_SUFFIXES include) -+ FIND_PATH(FXDIV_HDR fxdiv.h PATH_SUFFIXES include) - IF(NOT FXDIV_HDR) - MESSAGE(FATAL_ERROR "Cannot find fxdiv") - ENDIF() -- ADD_LIBRARY(fxdiv STATIC "${FXDIV_HDR}") -- SET_PROPERTY(TARGET fxdiv PROPERTY LINKER_LANGUAGE C) -+ ADD_LIBRARY(fxdiv INTERFACE IMPORTED) -+ target_include_directories(fxdiv INTERFACE "${FXDIV_HDR}") - ENDIF() - ENDIF() - TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fxdiv) -@@ -905,12 +908,12 @@ IF(NOT TARGET fp16) - "${FP16_SOURCE_DIR}" - "${CMAKE_BINARY_DIR}/FP16") - ELSE() -- FIND_FILE(FP16_HDR fp16.h PATH_SUFFIXES include) -+ FIND_PATH(FP16_HDR fp16.h PATH_SUFFIXES include REQUIRED) - IF(NOT FP16_HDR) - MESSAGE(FATAL_ERROR "Cannot find fp16") - ENDIF() -- ADD_LIBRARY(fp16 STATIC "${FP16_HDR}") -- SET_PROPERTY(TARGET fp16 PROPERTY LINKER_LANGUAGE C) -+ ADD_LIBRARY(fp16 INTERFACE IMPORTED) -+ target_include_directories(fp16 INTERFACE "${FP16_HDR}") - ENDIF() - ENDIF() - TARGET_LINK_LIBRARIES(microkernels-all PRIVATE fp16) diff --git a/ports/xnnpack/fix-cmake.patch b/ports/xnnpack/fix-cmake.patch new file mode 100644 index 0000000000..c02163947b --- /dev/null +++ b/ports/xnnpack/fix-cmake.patch @@ -0,0 +1,94 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 856a47d..06f5ea9 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -1040,14 +1040,14 @@ IF(XNNPACK_BUILD_ALL_MICROKERNELS) + ENDIF() + TARGET_INCLUDE_DIRECTORIES(datatype PRIVATE include src) + TARGET_INCLUDE_DIRECTORIES(microkernels-prod PRIVATE include src) +-TARGET_INCLUDE_DIRECTORIES(hardware-config PRIVATE include src ${CPUINFO_SOURCE_DIR}/include) ++TARGET_INCLUDE_DIRECTORIES(hardware-config PRIVATE include src) + TARGET_INCLUDE_DIRECTORIES(indirection PRIVATE include src) + TARGET_INCLUDE_DIRECTORIES(microparams-init PRIVATE include src) + TARGET_INCLUDE_DIRECTORIES(normalization PRIVATE include src) + TARGET_INCLUDE_DIRECTORIES(packing PRIVATE include src) + TARGET_INCLUDE_DIRECTORIES(logging PRIVATE include src) + IF(XNNPACK_BUILD_LIBRARY) +- TARGET_INCLUDE_DIRECTORIES(XNNPACK PUBLIC include) ++ TARGET_INCLUDE_DIRECTORIES(XNNPACK PUBLIC $ $) + TARGET_INCLUDE_DIRECTORIES(XNNPACK PRIVATE src) + TARGET_INCLUDE_DIRECTORIES(allocator PRIVATE include src) + TARGET_INCLUDE_DIRECTORIES(cache PRIVATE include src) +@@ -1085,6 +1085,8 @@ IF(XNNPACK_BUILD_WITH_LIBM) + ENDIF() + + # ---[ Configure cpuinfo ++find_package(cpuinfo CONFIG REQUIRED) ++add_library(cpuinfo ALIAS cpuinfo::cpuinfo) + IF(NOT TARGET cpuinfo) + IF(NOT XNNPACK_USE_SYSTEM_LIBS) + SET(CPUINFO_BUILD_TOOLS OFF CACHE BOOL "") +@@ -1111,6 +1113,8 @@ IF(XNNPACK_BUILD_LIBRARY) + ENDIF() + + # ---[ Configure pthreadpool ++find_package(unofficial-pthreadpool CONFIG REQUIRED) ++add_library(pthreadpool ALIAS unofficial::pthreadpool) + IF(NOT TARGET pthreadpool) + IF(NOT XNNPACK_USE_SYSTEM_LIBS) + SET(PTHREADPOOL_BUILD_TESTS OFF CACHE BOOL "") +@@ -1135,6 +1139,8 @@ ENDIF() + TARGET_LINK_LIBRARIES(xnnpack-base INTERFACE pthreadpool) + + # ---[ Configure FXdiv ++find_package(unofficial-fxdiv CONFIG REQUIRED) ++add_library(fxdiv ALIAS unofficial::fxdiv::fxdiv) + IF(NOT TARGET fxdiv) + IF(NOT XNNPACK_USE_SYSTEM_LIBS) + SET(FXDIV_BUILD_TESTS OFF CACHE BOOL "") +@@ -1162,14 +1168,27 @@ IF(XNNPACK_BUILD_LIBRARY) + ENDIF() + + IF(XNNPACK_BUILD_LIBRARY) +- INSTALL(TARGETS XNNPACK microkernels-prod ++ INSTALL(TARGETS XNNPACK microkernels-prod xnnpack-base allocator cache hardware-config indirection memory microkernel-utils microparams-init mutex normalization operators operator-run operator-utils packing subgraph datatype reference-ukernels logging ++ EXPORT unofficial-xnnpack-config-targets ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + PUBLIC_HEADER DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) ++ INSTALL(EXPORT unofficial-xnnpack-config-targets NAMESPACE unofficial::xnnpack:: ++ FILE unofficial-xnnpack-config-targets.cmake ++ DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/unofficial-xnnpack) # share/xnnpack ++ ++include(CMakePackageConfigHelpers) ++configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in "${CMAKE_CURRENT_BINARY_DIR}/unofficial-xnnpack-config.cmake" INSTALL_DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/unofficial-xnnpack) ++install(FILES ${CMAKE_CURRENT_BINARY_DIR}/unofficial-xnnpack-config.cmake DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/unofficial-xnnpack) ++ ++ + ENDIF() + + # ---[ Configure KleidiAI + IF(XNNPACK_ENABLE_KLEIDIAI) ++ find_package(KleidiAI CONFIG REQUIRED) ++ add_library(kleidiai ALIAS KleidiAI::kleidiai) + IF(NOT TARGET kleidiai) + IF(NOT XNNPACK_USE_SYSTEM_LIBS) + SET(KLEIDIAI_BUILD_TESTS OFF CACHE BOOL "") +diff --git a/Config.cmake.in b/Config.cmake.in +new file mode 100644 +index 0000000..8dc60b4 +--- /dev/null ++++ b/Config.cmake.in +@@ -0,0 +1,11 @@ ++@PACKAGE_INIT@ ++ ++include(CMakeFindDependencyMacro) ++find_dependency(unofficial-fxdiv) ++find_dependency(cpuinfo) ++find_dependency(unofficial-pthreadpool) ++if(@XNNPACK_ENABLE_KLEIDIAI@) ++ find_dependency(KleidiAI) ++endif() ++ ++include ( "${CMAKE_CURRENT_LIST_DIR}/unofficial-xnnpack-config-targets.cmake" ) diff --git a/ports/xnnpack/portfile.cmake b/ports/xnnpack/portfile.cmake index 11470028d6..8e96321e5b 100644 --- a/ports/xnnpack/portfile.cmake +++ b/ports/xnnpack/portfile.cmake @@ -5,16 +5,18 @@ endif() vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO google/XNNPACK - REF 51a987591a6fc9f0fc0707077f53d763ac132cbf # 2022-12-22 - SHA512 1742ad4de3aa1a67cd5a3cbf15d82afc2cc8569a2abac92542f748a440ef37fef4e9d9c302b7b2813e3176934b637c761c1c0956d20ab1ba28b280d9b121d91b + REF 51a0103656eff6fc9bfd39a4597923c4b542c883 # 2024-12-03 + SHA512 ecb859935996416ce51b2b9ffd5a8c3cc5e933dfab96b7b68c8a52e05227ce3416ffa81e8a3fcef8349aa85147aa1c6a07138c7fc8e87a02ad577e1da9126827 HEAD_REF master PATCHES - fix-build.patch + fix-cmake.patch ) +vcpkg_find_acquire_program(PYTHON3) vcpkg_cmake_configure( SOURCE_PATH "${SOURCE_PATH}" OPTIONS + "-DPython_EXECUTABLE=${PYTHON3}" -DXNNPACK_USE_SYSTEM_LIBS=ON -DXNNPACK_ENABLE_ASSEMBLY=ON -DXNNPACK_ENABLE_MEMOPT=ON @@ -24,9 +26,7 @@ vcpkg_cmake_configure( ) vcpkg_cmake_install() vcpkg_copy_pdbs() +vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-${PORT}) file(INSTALL "${SOURCE_PATH}/LICENSE" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include" - "${CURRENT_PACKAGES_DIR}/debug/bin" - "${CURRENT_PACKAGES_DIR}/debug/share" -) +file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include") diff --git a/ports/xnnpack/vcpkg.json b/ports/xnnpack/vcpkg.json index 19831ed7ba..124b80917f 100644 --- a/ports/xnnpack/vcpkg.json +++ b/ports/xnnpack/vcpkg.json @@ -1,18 +1,31 @@ { "name": "xnnpack", - "version-date": "2022-12-22", + "version-date": "2024-08-20", "description": "High-efficiency floating-point neural network inference operators for mobile, server, and Web", "homepage": "https://github.com/google/XNNPACK", "license": "BSD-3-Clause", "supports": "!(arm & windows) & !uwp & !arm32", "dependencies": [ - "cpuinfo", + { + "name": "cpuinfo", + "features": [ + "clog" + ] + }, "fp16", "fxdiv", + { + "name": "kleidiai", + "platform": "arm64" + }, "pthreadpool", { "name": "vcpkg-cmake", "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true } ] } diff --git a/scripts/ci.feature.baseline.txt b/scripts/ci.feature.baseline.txt index fbde7d5d47..ece1e66707 100644 --- a/scripts/ci.feature.baseline.txt +++ b/scripts/ci.feature.baseline.txt @@ -1333,8 +1333,7 @@ librsvg:x64-uwp = cascade libsm:arm64-uwp = cascade libsm:x64-uwp = cascade libtorch:x86-windows = cascade -libtorch[vulkan] = cascade # no vulkan sdk installed -libtorch(uwp | (arm & windows) | (arm64 & osx)) = cascade +libtorch(uwp | (arm & windows)) = cascade libwebp[all,vwebp](uwp) = cascade libwebp[vwebp](android) = cascade libwebp[vwebp-sdl](android | osx | uwp | (windows & static)) = cascade diff --git a/versions/baseline.json b/versions/baseline.json index d3fe387d6f..373b01a656 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -2133,8 +2133,8 @@ "port-version": 0 }, "cpuinfo": { - "baseline": "2022-07-19", - "port-version": 3 + "baseline": "2025-07-25", + "port-version": 0 }, "cr": { "baseline": "2020-04-26", @@ -2866,7 +2866,7 @@ }, "fbgemm": { "baseline": "1.0.0", - "port-version": 0 + "port-version": 1 }, "fbthrift": { "baseline": "2025.05.19.00", @@ -5509,8 +5509,8 @@ "port-version": 2 }, "libtorch": { - "baseline": "2.1.2", - "port-version": 12 + "baseline": "2.7.1", + "port-version": 0 }, "libtorrent": { "baseline": "2.0.11", @@ -7754,7 +7754,7 @@ }, "qnnpack": { "baseline": "2021-02-26", - "port-version": 3 + "port-version": 5 }, "qoi": { "baseline": "2023-08-10", @@ -10521,7 +10521,7 @@ "port-version": 1 }, "xnnpack": { - "baseline": "2022-12-22", + "baseline": "2024-08-20", "port-version": 0 }, "xorg-macros": { diff --git a/versions/c-/cpuinfo.json b/versions/c-/cpuinfo.json index d2a0178a07..f2891a05c8 100644 --- a/versions/c-/cpuinfo.json +++ b/versions/c-/cpuinfo.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "1a3c239a30cc457f10b8d6cca995bc2c7db9b150", + "version-date": "2025-07-25", + "port-version": 0 + }, { "git-tree": "f1b7e10e1de1dcd09118adc19c5bc831417dcc8c", "version-date": "2022-07-19", diff --git a/versions/f-/fbgemm.json b/versions/f-/fbgemm.json index 499dedbe81..883c6509c3 100644 --- a/versions/f-/fbgemm.json +++ b/versions/f-/fbgemm.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "86dc5f7bb07a7e785aef6627e4af57f51c9c87d0", + "version": "1.0.0", + "port-version": 1 + }, { "git-tree": "e055c95b9158e871ada9e49d4dfc92c618f995f2", "version": "1.0.0", diff --git a/versions/l-/libtorch.json b/versions/l-/libtorch.json index 8d799d43d8..5d219119d3 100644 --- a/versions/l-/libtorch.json +++ b/versions/l-/libtorch.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "b79f7f4e0fc9c9dbfe7528a0c7c96ee8f811f753", + "version": "2.7.1", + "port-version": 0 + }, { "git-tree": "42cff2032d0a7670edde067c822897cc6be1cf85", "version": "2.1.2", diff --git a/versions/q-/qnnpack.json b/versions/q-/qnnpack.json index e5789c3c28..13743a7e36 100644 --- a/versions/q-/qnnpack.json +++ b/versions/q-/qnnpack.json @@ -1,5 +1,15 @@ { "versions": [ + { + "git-tree": "3066be09481d88681b8a20480053585f173c9821", + "version-date": "2021-02-26", + "port-version": 5 + }, + { + "git-tree": "6cfef60767e1bc650df581901e4d14e132d5fdea", + "version-date": "2021-02-26", + "port-version": 4 + }, { "git-tree": "cee68bf91e46cc783fe3f03d4525e02c0793389c", "version-date": "2021-02-26", diff --git a/versions/x-/xnnpack.json b/versions/x-/xnnpack.json index 21835a86ee..8bcb2d60e6 100644 --- a/versions/x-/xnnpack.json +++ b/versions/x-/xnnpack.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "8f49750bf854bc25fa46d069eca34aece7a5867f", + "version-date": "2024-08-20", + "port-version": 0 + }, { "git-tree": "7a84132ceac551e5ba3da8117fdc23f4f1571fd2", "version-date": "2022-12-22",