From 03b306da632e1daf96285c334ff20404160eb704 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Wed, 18 Jun 2025 20:06:53 -0400 Subject: [PATCH 01/30] Rebase --- backends/xnnpack/third-party/XNNPACK | 2 +- backends/xnnpack/third-party/pthreadpool | 2 +- scripts/build_apple_frameworks.sh | 45 ++++++++++++++++++++++++ third-party/ao | 2 +- 4 files changed, 48 insertions(+), 3 deletions(-) diff --git a/backends/xnnpack/third-party/XNNPACK b/backends/xnnpack/third-party/XNNPACK index 84096dd536e..4ea82e595b3 160000 --- a/backends/xnnpack/third-party/XNNPACK +++ b/backends/xnnpack/third-party/XNNPACK @@ -1 +1 @@ -Subproject commit 84096dd536edffd19337d9297634c4f5c5449bfd +Subproject commit 4ea82e595b36106653175dcb04b2aa532660d0d8 diff --git a/backends/xnnpack/third-party/pthreadpool b/backends/xnnpack/third-party/pthreadpool index c2ba5c50bb5..4fe0e1e1839 160000 --- a/backends/xnnpack/third-party/pthreadpool +++ b/backends/xnnpack/third-party/pthreadpool @@ -1 +1 @@ -Subproject commit c2ba5c50bb58d1397b693740cf75fad836a0d1bf +Subproject commit 4fe0e1e183925bf8cfa6aae24237e724a96479b8 diff --git a/scripts/build_apple_frameworks.sh b/scripts/build_apple_frameworks.sh index b98832a2266..9832ab1bf19 100755 --- a/scripts/build_apple_frameworks.sh +++ b/scripts/build_apple_frameworks.sh @@ -70,6 +70,11 @@ libquantized_kernels.a,\ libquantized_ops_lib.a,\ :" +FRAMEWORK_KERNELS_TORCHAO="kernels_torchao:\ +libtorchao_ops_executorch.a,\ +libtorchao_kernels_aarch64.a,\ +:" + usage() { echo "Usage: $0 [OPTIONS]" echo "Build frameworks for Apple platforms." @@ -83,6 +88,7 @@ usage() { echo " --optimized Only build the Optimized kernels." echo " --quantized Only build the Quantized kernels." echo " --xnnpack Only build the XNNPACK backend." + echo " --torchao Build the TorchAO kernels." echo exit 0 } @@ -144,6 +150,45 @@ for preset_index in "${!PRESETS[@]}"; do preset="${PRESETS[$preset_index]}" preset_output_dir="${OUTPUT_DIR}/${PRESETS_RELATIVE_OUT_DIR[$preset_index]}" +cmake_build() { + local platform=$1 + local platform_flag=$2 + local platform_target=$3 + local mode=$4 + echo "Building for $platform ($mode) with flag $platform_flag" + mkdir -p "$platform" && cd "$platform" || exit 1 + cmake "$SOURCE_ROOT_DIR" -G Xcode \ + -DCMAKE_BUILD_TYPE="$mode" \ + -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" \ + -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD="c++17" \ + -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY="libc++" \ + -DCMAKE_C_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ + -DCMAKE_CXX_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ + -DPYTHON_EXECUTABLE="$PYTHON" \ + -DEXECUTORCH_BUILD_COREML=$COREML \ + -DEXECUTORCH_BUILD_MPS=$MPS \ + -DEXECUTORCH_BUILD_XNNPACK=$XNNPACK \ + -DEXECUTORCH_XNNPACK_SHARED_WORKSPACE=ON \ + -DEXECUTORCH_BUILD_EXECUTOR_RUNNER=OFF \ + -DEXECUTORCH_BUILD_EXTENSION_APPLE=ON \ + -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \ + -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \ + -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \ + -DEXECUTORCH_BUILD_KERNELS_CUSTOM=$CUSTOM \ + -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=$OPTIMIZED \ + -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=$QUANTIZED \ + -DEXECUTORCH_BUILD_KERNELS_TORCHAO=$TORCHAO \ + -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="$(pwd)" \ + ${platform_flag:+-DPLATFORM=$platform_flag} \ + ${platform_target:+-DDEPLOYMENT_TARGET=$platform_target} \ + --log-level=VERBOSE + cmake --build . \ + --config "$mode" \ + --verbose + cd - +} + +for index in ${!PLATFORMS[*]}; do for mode in "${MODES[@]}"; do echo "Building preset ${preset} (${mode}) in ${preset_output_dir}..." diff --git a/third-party/ao b/third-party/ao index bc68b11f1bf..809af2e69ad 160000 --- a/third-party/ao +++ b/third-party/ao @@ -1 +1 @@ -Subproject commit bc68b11f1bf77be38721ca7dd2c477aeb5e6626e +Subproject commit 809af2e69ad9a37d5a9d099c0e1ff7b714d86cbf From b4dd92b68d0bd6baa8bc781ab8f5ea5fb9305ba7 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Sun, 18 May 2025 22:10:07 -0400 Subject: [PATCH 02/30] Updated CMakeLists for torchao --- CMakeLists.txt | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8977e5c5aa9..c15d4cbd050 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -712,6 +712,27 @@ if(EXECUTORCH_BUILD_EXECUTOR_RUNNER) target_compile_options(executor_runner PUBLIC ${_common_compile_options}) endif() +if(EXECUTORCH_BUILD_TORCHAO) + # Currently only enable this on Arm-based Macs + if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64") + set(TORCHAO_BUILD_EXECUTORCH_OPS ON) + set(TORCHAO_BUILD_CPU_AARCH64 ON) + add_subdirectory( + ${CMAKE_CURRENT_SOURCE_DIR}/third-party/ao/torchao/experimental + ${CMAKE_CURRENT_BINARY_DIR}/third-party/ao/torchao/experimental + ) + target_link_options_shared_lib(torchao_ops_executorch) + list(APPEND link_libraries torchao_ops_executorch) + if(EXECUTORCH_BUILD_MPS) + add_subdirectory( + ${CMAKE_CURRENT_SOURCE_DIR}/third-party/ao/torchao/experimental/ops/mps + ${CMAKE_CURRENT_BINARY_DIR}/third-party/ao/torchao/experimental/ops/mps) + target_link_options_shared_lib(torchao_ops_mps_executorch) + list(APPEND link_libraries torchao_ops_mps_executorch) + endif() + endif() +endif() + if(EXECUTORCH_BUILD_VULKAN) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/vulkan) endif() From b6e051878fff6d60adec47f177ccf5d124488a6d Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Sun, 18 May 2025 22:29:14 -0400 Subject: [PATCH 03/30] Fixed parameter name --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c15d4cbd050..25d51f8f7b6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -712,7 +712,7 @@ if(EXECUTORCH_BUILD_EXECUTOR_RUNNER) target_compile_options(executor_runner PUBLIC ${_common_compile_options}) endif() -if(EXECUTORCH_BUILD_TORCHAO) +if(EXECUTORCH_BUILD_KERNELS_TORCHAO) # Currently only enable this on Arm-based Macs if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64") set(TORCHAO_BUILD_EXECUTORCH_OPS ON) From e0e6e98230050fd9f973cc76e3712896d157ae7a Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Sun, 18 May 2025 23:43:24 -0400 Subject: [PATCH 04/30] added missing flag --- scripts/build_apple_frameworks.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/build_apple_frameworks.sh b/scripts/build_apple_frameworks.sh index 9832ab1bf19..ffe5b736217 100755 --- a/scripts/build_apple_frameworks.sh +++ b/scripts/build_apple_frameworks.sh @@ -136,6 +136,7 @@ for arg in "$@"; do --optimized) set_cmake_options_override "EXECUTORCH_BUILD_KERNELS_OPTIMIZED" ;; --quantized) set_cmake_options_override "EXECUTORCH_BUILD_KERNELS_QUANTIZED" ;; --xnnpack) set_cmake_options_override "EXECUTORCH_BUILD_XNNPACK" ;; + --torchao) set_cmake_options_override "EXECUTORCH_BUILD_KERNELS_TORCHAO" ;; *) echo -e "\033[31m[error] unknown option: ${arg}\033[0m" exit 1 @@ -280,7 +281,7 @@ for mode in "${MODES[@]}"; do append_framework_flag "EXECUTORCH_BUILD_KERNELS_CUSTOM" "$FRAMEWORK_KERNELS_CUSTOM" "$mode" append_framework_flag "EXECUTORCH_BUILD_KERNELS_OPTIMIZED" "$FRAMEWORK_KERNELS_OPTIMIZED" "$mode" append_framework_flag "EXECUTORCH_BUILD_KERNELS_QUANTIZED" "$FRAMEWORK_KERNELS_QUANTIZED" "$mode" - + append_framework_flag "EXECUTORCH_BUILD_KERNELS_TORCHAO" "$FRAMEWORK_KERNELS_TORCHAO" "$mode" cd "${OUTPUT_DIR}" "$SOURCE_ROOT_DIR"/scripts/create_frameworks.sh "${FRAMEWORK_FLAGS[@]}" done From f575cbf7c4ef51bcb616c3a8dcd2673976ce3f06 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Tue, 20 May 2025 00:37:59 -0400 Subject: [PATCH 05/30] updated build steps --- CMakeLists.txt | 25 ++++++++----------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 25d51f8f7b6..7b023a7df3e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -714,23 +714,14 @@ endif() if(EXECUTORCH_BUILD_KERNELS_TORCHAO) # Currently only enable this on Arm-based Macs - if(CMAKE_SYSTEM_NAME STREQUAL "Darwin" AND CMAKE_SYSTEM_PROCESSOR STREQUAL "arm64") - set(TORCHAO_BUILD_EXECUTORCH_OPS ON) - set(TORCHAO_BUILD_CPU_AARCH64 ON) - add_subdirectory( - ${CMAKE_CURRENT_SOURCE_DIR}/third-party/ao/torchao/experimental - ${CMAKE_CURRENT_BINARY_DIR}/third-party/ao/torchao/experimental - ) - target_link_options_shared_lib(torchao_ops_executorch) - list(APPEND link_libraries torchao_ops_executorch) - if(EXECUTORCH_BUILD_MPS) - add_subdirectory( - ${CMAKE_CURRENT_SOURCE_DIR}/third-party/ao/torchao/experimental/ops/mps - ${CMAKE_CURRENT_BINARY_DIR}/third-party/ao/torchao/experimental/ops/mps) - target_link_options_shared_lib(torchao_ops_mps_executorch) - list(APPEND link_libraries torchao_ops_mps_executorch) - endif() - endif() + set(TORCHAO_BUILD_EXECUTORCH_OPS ON) + set(TORCHAO_BUILD_CPU_AARCH64 ON) + + # Set ExecuTorch headers and core library so TorchAO can register ops against them + set(EXECUTORCH_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}) + set(EXECUTORCH_LIBRARIES executorch_core) + + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third-party/ao/torchao/experimental) endif() if(EXECUTORCH_BUILD_VULKAN) From 9b9aa902c71ffbb2d46a6930f2c61ab8bd9423d6 Mon Sep 17 00:00:00 2001 From: Scott Roy <161522778+metascroy@users.noreply.github.com> Date: Tue, 20 May 2025 21:10:06 -0700 Subject: [PATCH 06/30] up --- CMakeLists.txt | 31 +++++++++++++++++----------- examples/models/llama/CMakeLists.txt | 7 +++++++ tools/cmake/executorch-config.cmake | 9 ++++++++ 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7b023a7df3e..8fdc2595b8c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -252,6 +252,25 @@ if(EXECUTORCH_BUILD_PTHREADPOOL) ) endif() +if(EXECUTORCH_BUILD_KERNELS_TORCHAO) + # Currently only enable this on Arm-based Macs + set(TORCHAO_BUILD_EXECUTORCH_OPS ON) + set(TORCHAO_BUILD_CPU_AARCH64 ON) + set(TORCHAO_ENABLE_ARM_NEON_DOT ON) + + # Set ExecuTorch headers and core library so TorchAO can register ops against them + set(EXECUTORCH_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/..) + set(EXECUTORCH_LIBRARIES executorch) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third-party/ao/torchao/experimental) + target_link_options_shared_lib(torchao_ops_executorch) + list(APPEND _dep_libs torchao_ops_executorch) +endif() + +if(EXECUTORCH_BUILD_TESTS) + set(EXECUTORCH_BUILD_EXTENSION_FLAT_TENSOR ON) + include(CTest) +endif() + # TODO(dbort): Fix these warnings and remove this flag. set(_common_compile_options -Wno-deprecated-declarations -fPIC) @@ -712,18 +731,6 @@ if(EXECUTORCH_BUILD_EXECUTOR_RUNNER) target_compile_options(executor_runner PUBLIC ${_common_compile_options}) endif() -if(EXECUTORCH_BUILD_KERNELS_TORCHAO) - # Currently only enable this on Arm-based Macs - set(TORCHAO_BUILD_EXECUTORCH_OPS ON) - set(TORCHAO_BUILD_CPU_AARCH64 ON) - - # Set ExecuTorch headers and core library so TorchAO can register ops against them - set(EXECUTORCH_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}) - set(EXECUTORCH_LIBRARIES executorch_core) - - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third-party/ao/torchao/experimental) -endif() - if(EXECUTORCH_BUILD_VULKAN) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/backends/vulkan) endif() diff --git a/examples/models/llama/CMakeLists.txt b/examples/models/llama/CMakeLists.txt index b850e4e6c0b..e260f7a0ef9 100644 --- a/examples/models/llama/CMakeLists.txt +++ b/examples/models/llama/CMakeLists.txt @@ -20,6 +20,7 @@ project(llama_runner) # Duplicating options as root CMakeLists.txt option(EXECUTORCH_BUILD_KERNELS_OPTIMIZED "Build the optimized kernels" OFF) +option(EXECUTORCH_BUILD_KERNELS_TORCHAO "Build the torchao kernels" OFF) include(CMakeDependentOption) # @@ -136,6 +137,12 @@ if(EXECUTORCH_BUILD_TORCHAO) endif() endif() +if(EXECUTORCH_BUILD_KERNELS_TORCHAO) + target_link_options_shared_lib(torchao_ops_executorch) + list(APPEND link_libraries torchao_ops_executorch) + list(APPEND link_libraries torchao_kernels_aarch64) +endif() + set(XNNPACK_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../backends/xnnpack) # Extra compile option and include dir for pthreadpool if(EXECUTORCH_BUILD_PTHREADPOOL) diff --git a/tools/cmake/executorch-config.cmake b/tools/cmake/executorch-config.cmake index 6aa2f275fae..c1bb920692d 100644 --- a/tools/cmake/executorch-config.cmake +++ b/tools/cmake/executorch-config.cmake @@ -94,6 +94,8 @@ set(lib_list quantized_kernels quantized_ops_lib quantized_ops_aot_lib + torchao_ops_executorch + torchao_kernels_aarch64 ) foreach(lib ${lib_list}) # Name of the variable which stores result of the find_library search @@ -141,6 +143,13 @@ if(TARGET optimized_kernels) ) endif() +if(TARGET torchao_ops_executorch) + set_target_properties( + torchao_ops_executorch PROPERTIES INTERFACE_LINK_LIBRARIES + "executorch_core;extension_threadpool;cpuinfo;pthreadpool" + ) +endif() + if(TARGET coremldelegate) set_target_properties( coremldelegate PROPERTIES INTERFACE_LINK_LIBRARIES From 9e913c4af8b89529af4872059076c99b9f4a5350 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Tue, 27 May 2025 11:20:23 -0400 Subject: [PATCH 07/30] Work In Progress: changes to build_apple_framework.sh --- scripts/build_apple_frameworks.sh | 77 +++++++++++++++++-------------- 1 file changed, 42 insertions(+), 35 deletions(-) diff --git a/scripts/build_apple_frameworks.sh b/scripts/build_apple_frameworks.sh index ffe5b736217..692d05f31c1 100755 --- a/scripts/build_apple_frameworks.sh +++ b/scripts/build_apple_frameworks.sh @@ -152,41 +152,48 @@ for preset_index in "${!PRESETS[@]}"; do preset_output_dir="${OUTPUT_DIR}/${PRESETS_RELATIVE_OUT_DIR[$preset_index]}" cmake_build() { - local platform=$1 - local platform_flag=$2 - local platform_target=$3 - local mode=$4 - echo "Building for $platform ($mode) with flag $platform_flag" - mkdir -p "$platform" && cd "$platform" || exit 1 - cmake "$SOURCE_ROOT_DIR" -G Xcode \ - -DCMAKE_BUILD_TYPE="$mode" \ - -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" \ - -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD="c++17" \ - -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY="libc++" \ - -DCMAKE_C_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ - -DCMAKE_CXX_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ - -DPYTHON_EXECUTABLE="$PYTHON" \ - -DEXECUTORCH_BUILD_COREML=$COREML \ - -DEXECUTORCH_BUILD_MPS=$MPS \ - -DEXECUTORCH_BUILD_XNNPACK=$XNNPACK \ - -DEXECUTORCH_XNNPACK_SHARED_WORKSPACE=ON \ - -DEXECUTORCH_BUILD_EXECUTOR_RUNNER=OFF \ - -DEXECUTORCH_BUILD_EXTENSION_APPLE=ON \ - -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \ - -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \ - -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \ - -DEXECUTORCH_BUILD_KERNELS_CUSTOM=$CUSTOM \ - -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=$OPTIMIZED \ - -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=$QUANTIZED \ - -DEXECUTORCH_BUILD_KERNELS_TORCHAO=$TORCHAO \ - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="$(pwd)" \ - ${platform_flag:+-DPLATFORM=$platform_flag} \ - ${platform_target:+-DDEPLOYMENT_TARGET=$platform_target} \ - --log-level=VERBOSE - cmake --build . \ - --config "$mode" \ - --verbose - cd - + local platform=$1 + local platform_flag=$2 + local platform_target=$3 + local mode=$4 + echo "Building for $platform ($mode) with flag $platform_flag" + mkdir -p "$platform" && cd "$platform" || exit 1 + + cmake "$SOURCE_ROOT_DIR" -G Xcode \ + -DCMAKE_PREFIX_PATH=$(python -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())') \ + -DCMAKE_INSTALL_PREFIX="$OUTPUT" \ + -DEXECUTORCH_ENABLE_LOGGING=1 \ + -DCMAKE_BUILD_TYPE="$mode" \ + -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" \ + -DTORCHAO_BUILD_EXECUTORCH_OPS=ON \ + -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO \ + -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=NO \ + -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY="" \ + -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD="c++17" \ + -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY="libc++" \ + -DCMAKE_C_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ + -DCMAKE_CXX_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ + -DPYTHON_EXECUTABLE="$PYTHON" \ + -DEXECUTORCH_BUILD_COREML=$COREML \ + -DEXECUTORCH_BUILD_MPS=$MPS \ + -DEXECUTORCH_BUILD_XNNPACK=$XNNPACK \ + -DEXECUTORCH_XNNPACK_SHARED_WORKSPACE=ON \ + -DEXECUTORCH_BUILD_EXECUTOR_RUNNER=OFF \ + -DEXECUTORCH_BUILD_EXTENSION_APPLE=ON \ + -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \ + -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \ + -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \ + -DEXECUTORCH_BUILD_KERNELS_CUSTOM=$CUSTOM \ + -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=$OPTIMIZED \ + -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=$QUANTIZED \ + -DEXECUTORCH_BUILD_KERNELS_TORCHAO=$TORCHAO \ + -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="$(pwd)" \ + ${platform_flag:+-DPLATFORM=$platform_flag} \ + ${platform_target:+-DDEPLOYMENT_TARGET=$platform_target} \ + --log-level=VERBOSE + + cmake --build . --config "$mode" --target install --verbose + cd - } for index in ${!PLATFORMS[*]}; do From c16c779b02ebe4ada0ea59dd6ce230a8527a784b Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Tue, 27 May 2025 11:42:11 -0400 Subject: [PATCH 08/30] cleaned up the cmake command --- scripts/build_apple_frameworks.sh | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/scripts/build_apple_frameworks.sh b/scripts/build_apple_frameworks.sh index 692d05f31c1..2d9b49029f9 100755 --- a/scripts/build_apple_frameworks.sh +++ b/scripts/build_apple_frameworks.sh @@ -158,17 +158,13 @@ cmake_build() { local mode=$4 echo "Building for $platform ($mode) with flag $platform_flag" mkdir -p "$platform" && cd "$platform" || exit 1 - cmake "$SOURCE_ROOT_DIR" -G Xcode \ -DCMAKE_PREFIX_PATH=$(python -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())') \ - -DCMAKE_INSTALL_PREFIX="$OUTPUT" \ - -DEXECUTORCH_ENABLE_LOGGING=1 \ -DCMAKE_BUILD_TYPE="$mode" \ - -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" \ - -DTORCHAO_BUILD_EXECUTORCH_OPS=ON \ -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO \ -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=NO \ -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY="" \ + -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" \ -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD="c++17" \ -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY="libc++" \ -DCMAKE_C_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ @@ -191,8 +187,9 @@ cmake_build() { ${platform_flag:+-DPLATFORM=$platform_flag} \ ${platform_target:+-DDEPLOYMENT_TARGET=$platform_target} \ --log-level=VERBOSE - - cmake --build . --config "$mode" --target install --verbose + cmake --build . \ + --config "$mode" \ + --verbose cd - } From c0c26aa72812fc12e46e9f4c6e12ad77a1768376 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Wed, 28 May 2025 22:27:21 -0400 Subject: [PATCH 09/30] updated cmake and framework build TODO move some of these to the apple build framework --- CMakeLists.txt | 11 +++++++++++ scripts/build_apple_frameworks.sh | 1 + 2 files changed, 12 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8fdc2595b8c..ffda3dc2a34 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -257,13 +257,24 @@ if(EXECUTORCH_BUILD_KERNELS_TORCHAO) set(TORCHAO_BUILD_EXECUTORCH_OPS ON) set(TORCHAO_BUILD_CPU_AARCH64 ON) set(TORCHAO_ENABLE_ARM_NEON_DOT ON) + set(TORCHAO_BUILD_ATEN_OPS OFF) # Set ExecuTorch headers and core library so TorchAO can register ops against them set(EXECUTORCH_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/..) set(EXECUTORCH_LIBRARIES executorch) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third-party/ao/torchao/experimental) + + # Ensure torchao_ops_executorch can find and link pthreadpool + target_include_directories(torchao_ops_executorch PRIVATE ${PTHREADPOOL_SOURCE_DIR}/include) + target_link_libraries(torchao_ops_executorch PRIVATE pthreadpool) + + # Only call this on torchao_ops_executorch — pthreadpool is not a shared lib target_link_options_shared_lib(torchao_ops_executorch) + + # Ensure pthreadpool is included in the packaged framework list(APPEND _dep_libs torchao_ops_executorch) + list(APPEND _dep_libs pthreadpool) endif() if(EXECUTORCH_BUILD_TESTS) diff --git a/scripts/build_apple_frameworks.sh b/scripts/build_apple_frameworks.sh index 2d9b49029f9..695b167cbd7 100755 --- a/scripts/build_apple_frameworks.sh +++ b/scripts/build_apple_frameworks.sh @@ -163,6 +163,7 @@ cmake_build() { -DCMAKE_BUILD_TYPE="$mode" \ -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO \ -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=NO \ + -DEXECUTORCH_BUILD_PTHREADPOOL=ON \ -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY="" \ -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" \ -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD="c++17" \ From 70c6ae68f4bfef10f5f0cd5f7cc837f358aa903b Mon Sep 17 00:00:00 2001 From: Scott Roy <161522778+metascroy@users.noreply.github.com> Date: Thu, 29 May 2025 19:29:13 -0700 Subject: [PATCH 10/30] up --- CMakeLists.txt | 12 ++++++------ scripts/build_apple_frameworks.sh | 1 - 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index ffda3dc2a34..a0f42e23dcf 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -254,27 +254,27 @@ endif() if(EXECUTORCH_BUILD_KERNELS_TORCHAO) # Currently only enable this on Arm-based Macs + set(TORCHAO_BUILD_ATEN_OPS OFF) set(TORCHAO_BUILD_EXECUTORCH_OPS ON) set(TORCHAO_BUILD_CPU_AARCH64 ON) set(TORCHAO_ENABLE_ARM_NEON_DOT ON) - set(TORCHAO_BUILD_ATEN_OPS OFF) # Set ExecuTorch headers and core library so TorchAO can register ops against them set(EXECUTORCH_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/..) - set(EXECUTORCH_LIBRARIES executorch) + set(EXECUTORCH_LIBRARIES executorch pthreadpool extension_threadpool cpuinfo) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third-party/ao/torchao/experimental) - # Ensure torchao_ops_executorch can find and link pthreadpool - target_include_directories(torchao_ops_executorch PRIVATE ${PTHREADPOOL_SOURCE_DIR}/include) - target_link_libraries(torchao_ops_executorch PRIVATE pthreadpool) + # # Ensure torchao_ops_executorch can find and link pthreadpool + # target_include_directories(torchao_ops_executorch PRIVATE ${PTHREADPOOL_SOURCE_DIR}/include) + # target_link_libraries(torchao_ops_executorch PRIVATE pthreadpool) # Only call this on torchao_ops_executorch — pthreadpool is not a shared lib target_link_options_shared_lib(torchao_ops_executorch) # Ensure pthreadpool is included in the packaged framework list(APPEND _dep_libs torchao_ops_executorch) - list(APPEND _dep_libs pthreadpool) + # list(APPEND _dep_libs pthreadpool) endif() if(EXECUTORCH_BUILD_TESTS) diff --git a/scripts/build_apple_frameworks.sh b/scripts/build_apple_frameworks.sh index 695b167cbd7..44a4d8ce1a7 100755 --- a/scripts/build_apple_frameworks.sh +++ b/scripts/build_apple_frameworks.sh @@ -159,7 +159,6 @@ cmake_build() { echo "Building for $platform ($mode) with flag $platform_flag" mkdir -p "$platform" && cd "$platform" || exit 1 cmake "$SOURCE_ROOT_DIR" -G Xcode \ - -DCMAKE_PREFIX_PATH=$(python -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())') \ -DCMAKE_BUILD_TYPE="$mode" \ -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO \ -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=NO \ From 21bb1c1797bb8aa9d0b2694e104100ec9a3b7acc Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Wed, 18 Jun 2025 19:41:29 -0400 Subject: [PATCH 11/30] added torchao debug xcconfig --- .../apple_ios/LLaMA/torchao_debug.xcconfig | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig diff --git a/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig b/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig new file mode 100644 index 00000000000..cd06d1e46fe --- /dev/null +++ b/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig @@ -0,0 +1,34 @@ + +ET_PLATFORM[sdk=iphonesimulator*] = simulator +ET_PLATFORM[sdk=iphoneos*] = ios +ET_PLATFORM[sdk=macos*] = macos + +// Link the Debug version of ExecuTorch runtime to keep the logs. +// Switch to Release for better performance if logs are not needed. +OTHER_LDFLAGS = $(inherited) \ + -force_load $(BUILT_PRODUCTS_DIR)/libexecutorch_$(ET_PLATFORM).a \ + -force_load $(BUILT_PRODUCTS_DIR)/libbackend_coreml_$(ET_PLATFORM).a \ + -framework Foundation \ + -framework CoreML \ + -framework Accelerate \ + -framework Metal \ + -framework MetalPerformanceShaders \ + -framework MetalPerformanceShadersGraph \ + -force_load $(BUILT_PRODUCTS_DIR)/libbackend_mps_$(ET_PLATFORM).a \ + -force_load $(BUILT_PRODUCTS_DIR)/libbackend_xnnpack_$(ET_PLATFORM).a \ + -force_load $(BUILT_PRODUCTS_DIR)/libkernels_custom_$(ET_PLATFORM).a \ + -force_load $(BUILT_PRODUCTS_DIR)/libkernels_optimized_$(ET_PLATFORM).a \ + -force_load $(BUILT_PRODUCTS_DIR)/libkernels_quantized_$(ET_PLATFORM).a \ + -force_load $(BUILT_PRODUCTS_DIR)/libkernels_torchao_$(ET_PLATFORM).a \ + -lsqlite3 \ + @$(TEMP_DIR)/cmake/linker_flags + +// LLaMARunner requires additional dependencies built with CMake in a custom run script phase. +// Include headers and libraries from $(TEMP_DIR)/cmake for it. +HEADER_SEARCH_PATHS = $(inherited) \ + $(SRCROOT)/../../../../.. \ + $(TEMP_DIR)/cmake/include \ + $(SRCROOT)/../../../../extension/llm/tokenizers/include + +LIBRARY_SEARCH_PATHS = $(inherited) \ + $(TEMP_DIR)/cmake/lib From 82659ecfe6aa19f4e199dbf27b131cb468bd1201 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Wed, 18 Jun 2025 19:55:18 -0400 Subject: [PATCH 12/30] added temporary build scripts --- run_build.sh | 25 +++++++++++++++++++++++++ run_ios_build.sh | 15 +++++++++++++++ run_torchao_build.sh | 15 +++++++++++++++ 3 files changed, 55 insertions(+) create mode 100644 run_build.sh create mode 100644 run_ios_build.sh create mode 100644 run_torchao_build.sh diff --git a/run_build.sh b/run_build.sh new file mode 100644 index 00000000000..c9116abe3e5 --- /dev/null +++ b/run_build.sh @@ -0,0 +1,25 @@ + + +bash install_executorch.sh --clean + +bash install_executorch.sh + +pip install -e . + +cmake -DPYTHON_EXECUTABLE=python \ + -DCMAKE_INSTALL_PREFIX=cmake-out \ + -DEXECUTORCH_ENABLE_LOGGING=1 \ + -DCMAKE_BUILD_TYPE=Release \ + -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \ + -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \ + -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \ + -DEXECUTORCH_BUILD_XNNPACK=OFF \ + -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=ON \ + -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=ON \ + -DEXECUTORCH_BUILD_KERNELS_CUSTOM=ON \ + -DEXECUTORCH_BUILD_KERNELS_TORCHAO=ON \ + -DCMAKE_PREFIX_PATH=$(python -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())') \ + -Bcmake-out . + +cmake --build cmake-out -j16 --target install --config Release + diff --git a/run_ios_build.sh b/run_ios_build.sh new file mode 100644 index 00000000000..5236c66fffc --- /dev/null +++ b/run_ios_build.sh @@ -0,0 +1,15 @@ +bash install_executorch.sh --clean + +bash install_executorch.sh + +pip install -e . + +./install_requirements.sh + +# CoreML-only requirements: +./backends/apple/coreml/scripts/install_requirements.sh + +# MPS-only requirements: +./backends/apple/mps/install_requirements.sh + +./scripts/build_apple_frameworks.sh --Release --Debug --coreml --mps --xnnpack --custom --optimized --portable --quantized --torchao diff --git a/run_torchao_build.sh b/run_torchao_build.sh new file mode 100644 index 00000000000..90cbccb25f0 --- /dev/null +++ b/run_torchao_build.sh @@ -0,0 +1,15 @@ +bash install_executorch.sh --clean + +bash install_executorch.sh + +pip install -e . + +./install_requirements.sh + +# CoreML-only requirements: +./backends/apple/coreml/scripts/install_requirements.sh + +# MPS-only requirements: +./backends/apple/mps/install_requirements.sh + +./scripts/build_apple_frameworks.sh --Release --torchao \ No newline at end of file From 402a7eddee68c3bb5966185dad48a2af0f71f867 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Wed, 18 Jun 2025 20:30:20 -0400 Subject: [PATCH 13/30] aligned submodules --- examples/models/llama/CMakeLists.txt | 7 ------- 1 file changed, 7 deletions(-) diff --git a/examples/models/llama/CMakeLists.txt b/examples/models/llama/CMakeLists.txt index e260f7a0ef9..b850e4e6c0b 100644 --- a/examples/models/llama/CMakeLists.txt +++ b/examples/models/llama/CMakeLists.txt @@ -20,7 +20,6 @@ project(llama_runner) # Duplicating options as root CMakeLists.txt option(EXECUTORCH_BUILD_KERNELS_OPTIMIZED "Build the optimized kernels" OFF) -option(EXECUTORCH_BUILD_KERNELS_TORCHAO "Build the torchao kernels" OFF) include(CMakeDependentOption) # @@ -137,12 +136,6 @@ if(EXECUTORCH_BUILD_TORCHAO) endif() endif() -if(EXECUTORCH_BUILD_KERNELS_TORCHAO) - target_link_options_shared_lib(torchao_ops_executorch) - list(APPEND link_libraries torchao_ops_executorch) - list(APPEND link_libraries torchao_kernels_aarch64) -endif() - set(XNNPACK_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/../../../backends/xnnpack) # Extra compile option and include dir for pthreadpool if(EXECUTORCH_BUILD_PTHREADPOOL) From e1f9b8a3fd420254ce17f8f80355cae901a0e3ff Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Wed, 18 Jun 2025 21:14:06 -0400 Subject: [PATCH 14/30] fixed accidental changes from rebase --- run_ios_build.sh | 2 +- scripts/build_apple_frameworks.sh | 44 +------------------------------ 2 files changed, 2 insertions(+), 44 deletions(-) diff --git a/run_ios_build.sh b/run_ios_build.sh index 5236c66fffc..3f43c42078d 100644 --- a/run_ios_build.sh +++ b/run_ios_build.sh @@ -12,4 +12,4 @@ pip install -e . # MPS-only requirements: ./backends/apple/mps/install_requirements.sh -./scripts/build_apple_frameworks.sh --Release --Debug --coreml --mps --xnnpack --custom --optimized --portable --quantized --torchao +./scripts/build_apple_frameworks.sh --Release --coreml --mps --xnnpack --custom --optimized --quantized --torchao diff --git a/scripts/build_apple_frameworks.sh b/scripts/build_apple_frameworks.sh index 44a4d8ce1a7..b87c419986e 100755 --- a/scripts/build_apple_frameworks.sh +++ b/scripts/build_apple_frameworks.sh @@ -151,49 +151,6 @@ for preset_index in "${!PRESETS[@]}"; do preset="${PRESETS[$preset_index]}" preset_output_dir="${OUTPUT_DIR}/${PRESETS_RELATIVE_OUT_DIR[$preset_index]}" -cmake_build() { - local platform=$1 - local platform_flag=$2 - local platform_target=$3 - local mode=$4 - echo "Building for $platform ($mode) with flag $platform_flag" - mkdir -p "$platform" && cd "$platform" || exit 1 - cmake "$SOURCE_ROOT_DIR" -G Xcode \ - -DCMAKE_BUILD_TYPE="$mode" \ - -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_ALLOWED=NO \ - -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGNING_REQUIRED=NO \ - -DEXECUTORCH_BUILD_PTHREADPOOL=ON \ - -DCMAKE_XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY="" \ - -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" \ - -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD="c++17" \ - -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY="libc++" \ - -DCMAKE_C_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ - -DCMAKE_CXX_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ - -DPYTHON_EXECUTABLE="$PYTHON" \ - -DEXECUTORCH_BUILD_COREML=$COREML \ - -DEXECUTORCH_BUILD_MPS=$MPS \ - -DEXECUTORCH_BUILD_XNNPACK=$XNNPACK \ - -DEXECUTORCH_XNNPACK_SHARED_WORKSPACE=ON \ - -DEXECUTORCH_BUILD_EXECUTOR_RUNNER=OFF \ - -DEXECUTORCH_BUILD_EXTENSION_APPLE=ON \ - -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \ - -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \ - -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \ - -DEXECUTORCH_BUILD_KERNELS_CUSTOM=$CUSTOM \ - -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=$OPTIMIZED \ - -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=$QUANTIZED \ - -DEXECUTORCH_BUILD_KERNELS_TORCHAO=$TORCHAO \ - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="$(pwd)" \ - ${platform_flag:+-DPLATFORM=$platform_flag} \ - ${platform_target:+-DDEPLOYMENT_TARGET=$platform_target} \ - --log-level=VERBOSE - cmake --build . \ - --config "$mode" \ - --verbose - cd - -} - -for index in ${!PLATFORMS[*]}; do for mode in "${MODES[@]}"; do echo "Building preset ${preset} (${mode}) in ${preset_output_dir}..." @@ -286,6 +243,7 @@ for mode in "${MODES[@]}"; do append_framework_flag "EXECUTORCH_BUILD_KERNELS_OPTIMIZED" "$FRAMEWORK_KERNELS_OPTIMIZED" "$mode" append_framework_flag "EXECUTORCH_BUILD_KERNELS_QUANTIZED" "$FRAMEWORK_KERNELS_QUANTIZED" "$mode" append_framework_flag "EXECUTORCH_BUILD_KERNELS_TORCHAO" "$FRAMEWORK_KERNELS_TORCHAO" "$mode" + cd "${OUTPUT_DIR}" "$SOURCE_ROOT_DIR"/scripts/create_frameworks.sh "${FRAMEWORK_FLAGS[@]}" done From 3b11e4c8075632070568a9f008465aed703e9c4a Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Wed, 18 Jun 2025 21:15:04 -0400 Subject: [PATCH 15/30] added missing torchao param --- scripts/build_apple_frameworks.sh | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/build_apple_frameworks.sh b/scripts/build_apple_frameworks.sh index b87c419986e..c6fccdfd16b 100755 --- a/scripts/build_apple_frameworks.sh +++ b/scripts/build_apple_frameworks.sh @@ -106,6 +106,7 @@ set_cmake_options_override() { "-DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=OFF" "-DEXECUTORCH_BUILD_KERNELS_QUANTIZED=OFF" "-DEXECUTORCH_BUILD_XNNPACK=OFF" + "-DEXECUTORCH_BUILD_KERNELS_TORCHAO=OFF" ) fi From 06c2583d65ab49f4a9d1f70c503e5ef1ece7e4da Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Wed, 18 Jun 2025 20:06:53 -0400 Subject: [PATCH 16/30] Rebase --- scripts/build_apple_frameworks.sh | 39 +++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/scripts/build_apple_frameworks.sh b/scripts/build_apple_frameworks.sh index c6fccdfd16b..11b2b3bab15 100755 --- a/scripts/build_apple_frameworks.sh +++ b/scripts/build_apple_frameworks.sh @@ -152,6 +152,45 @@ for preset_index in "${!PRESETS[@]}"; do preset="${PRESETS[$preset_index]}" preset_output_dir="${OUTPUT_DIR}/${PRESETS_RELATIVE_OUT_DIR[$preset_index]}" +cmake_build() { + local platform=$1 + local platform_flag=$2 + local platform_target=$3 + local mode=$4 + echo "Building for $platform ($mode) with flag $platform_flag" + mkdir -p "$platform" && cd "$platform" || exit 1 + cmake "$SOURCE_ROOT_DIR" -G Xcode \ + -DCMAKE_BUILD_TYPE="$mode" \ + -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" \ + -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD="c++17" \ + -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY="libc++" \ + -DCMAKE_C_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ + -DCMAKE_CXX_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ + -DPYTHON_EXECUTABLE="$PYTHON" \ + -DEXECUTORCH_BUILD_COREML=$COREML \ + -DEXECUTORCH_BUILD_MPS=$MPS \ + -DEXECUTORCH_BUILD_XNNPACK=$XNNPACK \ + -DEXECUTORCH_XNNPACK_SHARED_WORKSPACE=ON \ + -DEXECUTORCH_BUILD_EXECUTOR_RUNNER=OFF \ + -DEXECUTORCH_BUILD_EXTENSION_APPLE=ON \ + -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \ + -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \ + -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \ + -DEXECUTORCH_BUILD_KERNELS_CUSTOM=$CUSTOM \ + -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=$OPTIMIZED \ + -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=$QUANTIZED \ + -DEXECUTORCH_BUILD_KERNELS_TORCHAO=$TORCHAO \ + -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="$(pwd)" \ + ${platform_flag:+-DPLATFORM=$platform_flag} \ + ${platform_target:+-DDEPLOYMENT_TARGET=$platform_target} \ + --log-level=VERBOSE + cmake --build . \ + --config "$mode" \ + --verbose + cd - +} + +for index in ${!PLATFORMS[*]}; do for mode in "${MODES[@]}"; do echo "Building preset ${preset} (${mode}) in ${preset_output_dir}..." From a8f3b356626e09847b68534a0c52e133c0051ec7 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Thu, 26 Jun 2025 15:43:21 -0400 Subject: [PATCH 17/30] removed accidental code inclusion due to rebase --- backends/xnnpack/third-party/XNNPACK | 2 +- backends/xnnpack/third-party/pthreadpool | 2 +- extension/llm/tokenizers | 2 +- scripts/build_apple_frameworks.sh | 111 ++++++++--------------- third-party/ao | 2 +- 5 files changed, 40 insertions(+), 79 deletions(-) diff --git a/backends/xnnpack/third-party/XNNPACK b/backends/xnnpack/third-party/XNNPACK index 4ea82e595b3..84096dd536e 160000 --- a/backends/xnnpack/third-party/XNNPACK +++ b/backends/xnnpack/third-party/XNNPACK @@ -1 +1 @@ -Subproject commit 4ea82e595b36106653175dcb04b2aa532660d0d8 +Subproject commit 84096dd536edffd19337d9297634c4f5c5449bfd diff --git a/backends/xnnpack/third-party/pthreadpool b/backends/xnnpack/third-party/pthreadpool index 4fe0e1e1839..c2ba5c50bb5 160000 --- a/backends/xnnpack/third-party/pthreadpool +++ b/backends/xnnpack/third-party/pthreadpool @@ -1 +1 @@ -Subproject commit 4fe0e1e183925bf8cfa6aae24237e724a96479b8 +Subproject commit c2ba5c50bb58d1397b693740cf75fad836a0d1bf diff --git a/extension/llm/tokenizers b/extension/llm/tokenizers index d202b36fe00..ffd2973e887 160000 --- a/extension/llm/tokenizers +++ b/extension/llm/tokenizers @@ -1 +1 @@ -Subproject commit d202b36fe006457c2139a423ef183ca4ce7c410c +Subproject commit ffd2973e8879f64c78f01a3f4aa0f77bdc5a1abe diff --git a/scripts/build_apple_frameworks.sh b/scripts/build_apple_frameworks.sh index 11b2b3bab15..b2a54f82ff7 100755 --- a/scripts/build_apple_frameworks.sh +++ b/scripts/build_apple_frameworks.sh @@ -120,28 +120,28 @@ set_cmake_options_override() { for arg in "$@"; do case $arg in - -h|--help) usage ;; - --Release) - if [[ ! " ${MODES[*]:-} " =~ \bRelease\b ]]; then - MODES+=("Release") - fi - ;; - --Debug) - if [[ ! " ${MODES[*]:-} " =~ \bDebug\b ]]; then - MODES+=("Debug") - fi - ;; - --coreml) set_cmake_options_override "EXECUTORCH_BUILD_COREML";; - --custom) set_cmake_options_override "EXECUTORCH_BUILD_KERNELS_CUSTOM" ;; - --mps) set_cmake_options_override "EXECUTORCH_BUILD_MPS" ;; - --optimized) set_cmake_options_override "EXECUTORCH_BUILD_KERNELS_OPTIMIZED" ;; - --quantized) set_cmake_options_override "EXECUTORCH_BUILD_KERNELS_QUANTIZED" ;; - --xnnpack) set_cmake_options_override "EXECUTORCH_BUILD_XNNPACK" ;; - --torchao) set_cmake_options_override "EXECUTORCH_BUILD_KERNELS_TORCHAO" ;; - *) - echo -e "\033[31m[error] unknown option: ${arg}\033[0m" - exit 1 - ;; + -h | --help) usage ;; + --Release) + if [[ ! " ${MODES[*]:-} " =~ \bRelease\b ]]; then + MODES+=("Release") + fi + ;; + --Debug) + if [[ ! " ${MODES[*]:-} " =~ \bDebug\b ]]; then + MODES+=("Debug") + fi + ;; + --coreml) set_cmake_options_override "EXECUTORCH_BUILD_COREML" ;; + --custom) set_cmake_options_override "EXECUTORCH_BUILD_KERNELS_CUSTOM" ;; + --mps) set_cmake_options_override "EXECUTORCH_BUILD_MPS" ;; + --optimized) set_cmake_options_override "EXECUTORCH_BUILD_KERNELS_OPTIMIZED" ;; + --quantized) set_cmake_options_override "EXECUTORCH_BUILD_KERNELS_QUANTIZED" ;; + --xnnpack) set_cmake_options_override "EXECUTORCH_BUILD_XNNPACK" ;; + --torchao) set_cmake_options_override "EXECUTORCH_BUILD_KERNELS_TORCHAO" ;; + *) + echo -e "\033[31m[error] unknown option: ${arg}\033[0m" + exit 1 + ;; esac done @@ -152,59 +152,20 @@ for preset_index in "${!PRESETS[@]}"; do preset="${PRESETS[$preset_index]}" preset_output_dir="${OUTPUT_DIR}/${PRESETS_RELATIVE_OUT_DIR[$preset_index]}" -cmake_build() { - local platform=$1 - local platform_flag=$2 - local platform_target=$3 - local mode=$4 - echo "Building for $platform ($mode) with flag $platform_flag" - mkdir -p "$platform" && cd "$platform" || exit 1 - cmake "$SOURCE_ROOT_DIR" -G Xcode \ - -DCMAKE_BUILD_TYPE="$mode" \ - -DCMAKE_TOOLCHAIN_FILE="$TOOLCHAIN" \ - -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LANGUAGE_STANDARD="c++17" \ - -DCMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY="libc++" \ - -DCMAKE_C_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ - -DCMAKE_CXX_FLAGS="-ffile-prefix-map=$SOURCE_ROOT_DIR=/executorch -fdebug-prefix-map=$SOURCE_ROOT_DIR=/executorch" \ - -DPYTHON_EXECUTABLE="$PYTHON" \ - -DEXECUTORCH_BUILD_COREML=$COREML \ - -DEXECUTORCH_BUILD_MPS=$MPS \ - -DEXECUTORCH_BUILD_XNNPACK=$XNNPACK \ - -DEXECUTORCH_XNNPACK_SHARED_WORKSPACE=ON \ - -DEXECUTORCH_BUILD_EXECUTOR_RUNNER=OFF \ - -DEXECUTORCH_BUILD_EXTENSION_APPLE=ON \ - -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \ - -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \ - -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \ - -DEXECUTORCH_BUILD_KERNELS_CUSTOM=$CUSTOM \ - -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=$OPTIMIZED \ - -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=$QUANTIZED \ - -DEXECUTORCH_BUILD_KERNELS_TORCHAO=$TORCHAO \ - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="$(pwd)" \ - ${platform_flag:+-DPLATFORM=$platform_flag} \ - ${platform_target:+-DDEPLOYMENT_TARGET=$platform_target} \ - --log-level=VERBOSE - cmake --build . \ - --config "$mode" \ - --verbose - cd - -} - -for index in ${!PLATFORMS[*]}; do for mode in "${MODES[@]}"; do echo "Building preset ${preset} (${mode}) in ${preset_output_dir}..." # Do NOT add options here. Update the respective presets instead. cmake -S "${SOURCE_ROOT_DIR}" \ - -B "${preset_output_dir}" \ - -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="${preset_output_dir}" \ - -DCMAKE_BUILD_TYPE="${mode}" \ - ${CMAKE_OPTIONS_OVERRIDE[@]:-} \ - --preset "${preset}" + -B "${preset_output_dir}" \ + -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="${preset_output_dir}" \ + -DCMAKE_BUILD_TYPE="${mode}" \ + ${CMAKE_OPTIONS_OVERRIDE[@]:-} \ + --preset "${preset}" cmake --build "${preset_output_dir}" \ - --config "${mode}" \ - -j$(sysctl -n hw.ncpu) + --config "${mode}" \ + -j$(sysctl -n hw.ncpu) done done @@ -214,8 +175,8 @@ mkdir -p "$HEADERS_ABSOLUTE_PATH" "$SOURCE_ROOT_DIR"/scripts/print_exported_headers.py --buck2=$(realpath "$BUCK2") --targets \ //extension/module: \ - //extension/tensor: \ -| rsync -av --files-from=- "$SOURCE_ROOT_DIR" "$HEADERS_ABSOLUTE_PATH/executorch" + //extension/tensor: | + rsync -av --files-from=- "$SOURCE_ROOT_DIR" "$HEADERS_ABSOLUTE_PATH/executorch" # HACK: XCFrameworks don't appear to support exporting any build # options, but we need the following: @@ -234,7 +195,7 @@ cp -r $HEADERS_ABSOLUTE_PATH/executorch/runtime/core/portable_type/c10/torch "$H cp "$SOURCE_ROOT_DIR/extension/apple/ExecuTorch/Exported/"*.h "$HEADERS_ABSOLUTE_PATH/executorch" -cat > "$HEADERS_ABSOLUTE_PATH/module.modulemap" << 'EOF' +cat >"$HEADERS_ABSOLUTE_PATH/module.modulemap" <<'EOF' module ExecuTorch { umbrella header "ExecuTorch/ExecuTorch.h" export * @@ -258,10 +219,10 @@ append_framework_flag() { fi if [[ -n "$mode" && "$mode" != "Release" ]]; then - local name spec - name=$(echo "$framework" | cut -d: -f1) - spec=$(echo "$framework" | cut -d: -f2-) - framework="${name}_$(echo "$mode" | tr '[:upper:]' '[:lower:]'):${spec}" + local name spec + name=$(echo "$framework" | cut -d: -f1) + spec=$(echo "$framework" | cut -d: -f2-) + framework="${name}_$(echo "$mode" | tr '[:upper:]' '[:lower:]'):${spec}" fi echo "Adding framework: ${framework}" FRAMEWORK_FLAGS+=("--framework=$framework") diff --git a/third-party/ao b/third-party/ao index 809af2e69ad..bc68b11f1bf 160000 --- a/third-party/ao +++ b/third-party/ao @@ -1 +1 @@ -Subproject commit 809af2e69ad9a37d5a9d099c0e1ff7b714d86cbf +Subproject commit bc68b11f1bf77be38721ca7dd2c477aeb5e6626e From ed0ccd3c34a24816509d524dac1bae943a4b1488 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Sat, 28 Jun 2025 17:29:33 -0400 Subject: [PATCH 18/30] updated apple framework defaults --- run_ios_build.sh | 2 +- tools/cmake/preset/apple_common.cmake | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/run_ios_build.sh b/run_ios_build.sh index 3f43c42078d..da8ccd176bb 100644 --- a/run_ios_build.sh +++ b/run_ios_build.sh @@ -12,4 +12,4 @@ pip install -e . # MPS-only requirements: ./backends/apple/mps/install_requirements.sh -./scripts/build_apple_frameworks.sh --Release --coreml --mps --xnnpack --custom --optimized --quantized --torchao +./scripts/build_apple_frameworks.sh --Release diff --git a/tools/cmake/preset/apple_common.cmake b/tools/cmake/preset/apple_common.cmake index fa2d764dd2b..a96e4ed9fc1 100644 --- a/tools/cmake/preset/apple_common.cmake +++ b/tools/cmake/preset/apple_common.cmake @@ -25,3 +25,4 @@ set_overridable_option(EXECUTORCH_BUILD_EXTENSION_TENSOR ON) set_overridable_option(EXECUTORCH_BUILD_KERNELS_CUSTOM ON) set_overridable_option(EXECUTORCH_BUILD_KERNELS_OPTIMIZED ON) set_overridable_option(EXECUTORCH_BUILD_KERNELS_QUANTIZED ON) +set_overridable_option(EXECUTORCH_BUILD_KERNELS_TORCHAO ON) From 6eebd8dcb27ddf163d570a44bdf19b8b26965c95 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Sat, 28 Jun 2025 17:29:45 -0400 Subject: [PATCH 19/30] updated torchao debug --- .../apple_ios/LLaMA/torchao_debug.xcconfig | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig b/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig index cd06d1e46fe..51e0f10e041 100644 --- a/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig +++ b/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig @@ -1,26 +1,15 @@ - ET_PLATFORM[sdk=iphonesimulator*] = simulator ET_PLATFORM[sdk=iphoneos*] = ios ET_PLATFORM[sdk=macos*] = macos -// Link the Debug version of ExecuTorch runtime to keep the logs. -// Switch to Release for better performance if logs are not needed. OTHER_LDFLAGS = $(inherited) \ -force_load $(BUILT_PRODUCTS_DIR)/libexecutorch_$(ET_PLATFORM).a \ -force_load $(BUILT_PRODUCTS_DIR)/libbackend_coreml_$(ET_PLATFORM).a \ - -framework Foundation \ - -framework CoreML \ - -framework Accelerate \ - -framework Metal \ - -framework MetalPerformanceShaders \ - -framework MetalPerformanceShadersGraph \ -force_load $(BUILT_PRODUCTS_DIR)/libbackend_mps_$(ET_PLATFORM).a \ -force_load $(BUILT_PRODUCTS_DIR)/libbackend_xnnpack_$(ET_PLATFORM).a \ -force_load $(BUILT_PRODUCTS_DIR)/libkernels_custom_$(ET_PLATFORM).a \ -force_load $(BUILT_PRODUCTS_DIR)/libkernels_optimized_$(ET_PLATFORM).a \ -force_load $(BUILT_PRODUCTS_DIR)/libkernels_quantized_$(ET_PLATFORM).a \ - -force_load $(BUILT_PRODUCTS_DIR)/libkernels_torchao_$(ET_PLATFORM).a \ - -lsqlite3 \ @$(TEMP_DIR)/cmake/linker_flags // LLaMARunner requires additional dependencies built with CMake in a custom run script phase. @@ -28,7 +17,10 @@ OTHER_LDFLAGS = $(inherited) \ HEADER_SEARCH_PATHS = $(inherited) \ $(SRCROOT)/../../../../.. \ $(TEMP_DIR)/cmake/include \ - $(SRCROOT)/../../../../extension/llm/tokenizers/include + $(SRCROOT)/../../../../extension/llm/tokenizers/include \ + $(SRCROOT)/../../../../extension/llm/tokenizers/third-party/sentencepiece \ + $(SRCROOT)/../../../../extension/llm/tokenizers/third-party/sentencepiece/src LIBRARY_SEARCH_PATHS = $(inherited) \ $(TEMP_DIR)/cmake/lib + From 8f80fdeac16c762742e134532bff8674711ba8e2 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Sat, 28 Jun 2025 17:30:30 -0400 Subject: [PATCH 20/30] updated tokenizer module --- extension/llm/tokenizers | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extension/llm/tokenizers b/extension/llm/tokenizers index ffd2973e887..d202b36fe00 160000 --- a/extension/llm/tokenizers +++ b/extension/llm/tokenizers @@ -1 +1 @@ -Subproject commit ffd2973e8879f64c78f01a3f4aa0f77bdc5a1abe +Subproject commit d202b36fe006457c2139a423ef183ca4ce7c410c From c14640725e5a0b960ca393f4556bd20d0a237c08 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Sat, 28 Jun 2025 20:46:58 -0400 Subject: [PATCH 21/30] updated debug conf --- examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig b/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig index 51e0f10e041..fd2572851ed 100644 --- a/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig +++ b/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig @@ -5,11 +5,19 @@ ET_PLATFORM[sdk=macos*] = macos OTHER_LDFLAGS = $(inherited) \ -force_load $(BUILT_PRODUCTS_DIR)/libexecutorch_$(ET_PLATFORM).a \ -force_load $(BUILT_PRODUCTS_DIR)/libbackend_coreml_$(ET_PLATFORM).a \ + -framework Foundation \ + -framework CoreML \ + -framework Accelerate \ + -framework Metal \ + -framework MetalPerformanceShaders \ + -framework MetalPerformanceShadersGraph \ -force_load $(BUILT_PRODUCTS_DIR)/libbackend_mps_$(ET_PLATFORM).a \ -force_load $(BUILT_PRODUCTS_DIR)/libbackend_xnnpack_$(ET_PLATFORM).a \ -force_load $(BUILT_PRODUCTS_DIR)/libkernels_custom_$(ET_PLATFORM).a \ -force_load $(BUILT_PRODUCTS_DIR)/libkernels_optimized_$(ET_PLATFORM).a \ -force_load $(BUILT_PRODUCTS_DIR)/libkernels_quantized_$(ET_PLATFORM).a \ + -force_load $(BUILT_PRODUCTS_DIR)/libkernels_torchao_$(ET_PLATFORM).a \ + -lsqlite3 \ @$(TEMP_DIR)/cmake/linker_flags // LLaMARunner requires additional dependencies built with CMake in a custom run script phase. From e1f0101218f7d30ba6efbebb9cdc68522e344f65 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Sat, 28 Jun 2025 20:47:46 -0400 Subject: [PATCH 22/30] added export script --- export_llama_torchao.sh | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 export_llama_torchao.sh diff --git a/export_llama_torchao.sh b/export_llama_torchao.sh new file mode 100644 index 00000000000..d4a4a03a152 --- /dev/null +++ b/export_llama_torchao.sh @@ -0,0 +1,23 @@ +# No quantization +# Set these paths to point to the downloaded files +LLAMA_CHECKPOINT=../../../.llama/checkpoints/Llama-3.2-3B-Instruct/original/consolidated.00.pth +LLAMA_PARAMS=../../../.llama/checkpoints/Llama-3.2-3B-Instruct/original/params.json + +# Set low-bit quantization parameters +QLINEAR_BITWIDTH=4 # Can be 1-8 +QLINEAR_GROUP_SIZE=128 # Must be multiple of 16 +QEMBEDDING_BITWIDTH=4 # Can be 1-8 +QEMBEDDING_GROUP_SIZE=32 # Must be multiple of 16 + +python -m extension.llm.export.export_llm \ + base.model_class="llama3_2" \ + base.checkpoint="${LLAMA_CHECKPOINT:?}" \ + base.params="${LLAMA_PARAMS:?}" \ + model.use_kv_cache=True \ + model.use_sdpa_with_kv_cache=True \ + base.metadata='"{\"get_bos_id\":128000, \"get_eos_ids\":[128009, 128001]}"' \ + export.output_name="llama3_2.pte" \ + quantization.qmode="torchao:8da${QLINEAR_BITWIDTH}w" \ + quantization.group_size=${QLINEAR_GROUP_SIZE} \ + quantization.embedding_quantize=\'torchao:${QEMBEDDING_BITWIDTH},${QEMBEDDING_GROUP_SIZE}\' \ + model.dtype_override="fp32" From 5dd6df80583c4d3f194e3427a1d47598085ea5c5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hinrik=20Sn=C3=A6r=20Gu=C3=B0mundsson?= Date: Tue, 1 Jul 2025 12:00:26 -0400 Subject: [PATCH 23/30] Update comments in CMakeLists.txt --- CMakeLists.txt | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a0f42e23dcf..5468eef677b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -253,28 +253,16 @@ if(EXECUTORCH_BUILD_PTHREADPOOL) endif() if(EXECUTORCH_BUILD_KERNELS_TORCHAO) - # Currently only enable this on Arm-based Macs set(TORCHAO_BUILD_ATEN_OPS OFF) set(TORCHAO_BUILD_EXECUTORCH_OPS ON) set(TORCHAO_BUILD_CPU_AARCH64 ON) set(TORCHAO_ENABLE_ARM_NEON_DOT ON) - - # Set ExecuTorch headers and core library so TorchAO can register ops against them set(EXECUTORCH_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/..) set(EXECUTORCH_LIBRARIES executorch pthreadpool extension_threadpool cpuinfo) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third-party/ao/torchao/experimental) - - # # Ensure torchao_ops_executorch can find and link pthreadpool - # target_include_directories(torchao_ops_executorch PRIVATE ${PTHREADPOOL_SOURCE_DIR}/include) - # target_link_libraries(torchao_ops_executorch PRIVATE pthreadpool) - - # Only call this on torchao_ops_executorch — pthreadpool is not a shared lib target_link_options_shared_lib(torchao_ops_executorch) - - # Ensure pthreadpool is included in the packaged framework list(APPEND _dep_libs torchao_ops_executorch) - # list(APPEND _dep_libs pthreadpool) endif() if(EXECUTORCH_BUILD_TESTS) From 276232e12e5d750d9d6001b826c1395373431969 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Mon, 28 Jul 2025 19:39:30 -0400 Subject: [PATCH 24/30] updated bash formatting --- scripts/build_apple_frameworks.sh | 41 +++++++++++-------------------- 1 file changed, 14 insertions(+), 27 deletions(-) diff --git a/scripts/build_apple_frameworks.sh b/scripts/build_apple_frameworks.sh index 1023b37997d..4d6518da797 100755 --- a/scripts/build_apple_frameworks.sh +++ b/scripts/build_apple_frameworks.sh @@ -160,8 +160,8 @@ set_cmake_options_override() { "-DEXECUTORCH_BUILD_MPS=OFF" "-DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=OFF" "-DEXECUTORCH_BUILD_KERNELS_QUANTIZED=OFF" - "-DEXECUTORCH_BUILD_XNNPACK=OFF" "-DEXECUTORCH_BUILD_KERNELS_TORCHAO=OFF" + "-DEXECUTORCH_BUILD_XNNPACK=OFF" ) fi @@ -218,14 +218,14 @@ for preset_index in "${!PRESETS[@]}"; do # Do NOT add options here. Update the respective presets instead. cmake -S "${SOURCE_ROOT_DIR}" \ -B "${preset_output_dir}" \ - --fresh \ -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="${preset_output_dir}" \ -DCMAKE_BUILD_TYPE="${mode}" \ ${CMAKE_OPTIONS_OVERRIDE[@]:-} \ --preset "${preset}" cmake --build "${preset_output_dir}" \ - --config "${mode}" + --config "${mode}" \ + -j$(sysctl -n hw.ncpu) done done @@ -238,7 +238,7 @@ mkdir -p "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_MODULE_NAME" "$SOURCE_ROOT_DIR"/scripts/print_exported_headers.py --buck2=$(realpath "$BUCK2") --targets \ //extension/module: \ //extension/tensor: \ -| rsync -av --files-from=- "$SOURCE_ROOT_DIR" "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_MODULE_NAME" + rsync -av --files-from=- "$SOURCE_ROOT_DIR" "$HEADERS_ABSOLUTE_PATH/executorch" # HACK: XCFrameworks don't appear to support exporting any build # options, but we need the following: @@ -248,31 +248,18 @@ mkdir -p "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_MODULE_NAME" sed -i '' '1i\ #define C10_USING_CUSTOM_GENERATED_MACROS ' \ -"$FRAMEWORK_EXECUTORCH_HEADERS_PATH/executorch/runtime/core/portable_type/c10/c10/macros/Macros.h" \ -"$FRAMEWORK_EXECUTORCH_HEADERS_PATH/executorch/runtime/core/portable_type/c10/c10/macros/Export.h" \ -"$FRAMEWORK_EXECUTORCH_HEADERS_PATH/executorch/runtime/core/portable_type/c10/torch/headeronly/macros/Export.h" + "$HEADERS_ABSOLUTE_PATH/executorch/runtime/core/portable_type/c10/c10/macros/Macros.h" \ + "$HEADERS_ABSOLUTE_PATH/executorch/runtime/core/portable_type/c10/c10/macros/Export.h" \ + "$HEADERS_ABSOLUTE_PATH/executorch/runtime/core/portable_type/c10/torch/standalone/macros/Export.h" cp -r $FRAMEWORK_EXECUTORCH_HEADERS_PATH/executorch/runtime/core/portable_type/c10/c10 "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/" cp -r $FRAMEWORK_EXECUTORCH_HEADERS_PATH/executorch/runtime/core/portable_type/c10/torch "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/" cp "$SOURCE_ROOT_DIR/extension/apple/$FRAMEWORK_EXECUTORCH_MODULE_NAME/Exported/"*.h "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_MODULE_NAME" -cat > "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/module.modulemap" << EOF -module ${FRAMEWORK_EXECUTORCH_MODULE_NAME} { - umbrella header "${FRAMEWORK_EXECUTORCH_MODULE_NAME}/${FRAMEWORK_EXECUTORCH_MODULE_NAME}.h" - export * -} -EOF - -# FRAMEWORK_EXECUTORCH_LLM - -mkdir -p "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME" - -cp "$SOURCE_ROOT_DIR/extension/llm/apple/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME/Exported/"*.h "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME" - -cat > "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME/module.modulemap" << EOF -module ${FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME} { - umbrella header "${FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME}.h" +cat > "$HEADERS_ABSOLUTE_PATH/module.modulemap" << 'EOF' +module ExecuTorch { + umbrella header "ExecuTorch/ExecuTorch.h" export * } EOF @@ -294,10 +281,10 @@ append_framework_flag() { fi if [[ -n "$mode" && "$mode" != "Release" ]]; then - local name spec - name=$(echo "$framework" | cut -d: -f1) - spec=$(echo "$framework" | cut -d: -f2-) - framework="${name}_$(echo "$mode" | tr '[:upper:]' '[:lower:]'):${spec}" + local name spec + name=$(echo "$framework" | cut -d: -f1) + spec=$(echo "$framework" | cut -d: -f2-) + framework="${name}_$(echo "$mode" | tr '[:upper:]' '[:lower:]'):${spec}" fi echo "Adding framework: ${framework}" FRAMEWORK_FLAGS+=("--framework=$framework") From 58b24c2368e7ea04d5b331c64e8227c303bc1827 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Mon, 28 Jul 2025 19:45:58 -0400 Subject: [PATCH 25/30] Removed dev scripts --- .../apple_ios/LLaMA/torchao_debug.xcconfig | 34 ------------------- run_build.sh | 25 -------------- run_ios_build.sh | 15 -------- run_torchao_build.sh | 15 -------- 4 files changed, 89 deletions(-) delete mode 100644 examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig delete mode 100644 run_build.sh delete mode 100644 run_ios_build.sh delete mode 100644 run_torchao_build.sh diff --git a/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig b/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig deleted file mode 100644 index fd2572851ed..00000000000 --- a/examples/demo-apps/apple_ios/LLaMA/torchao_debug.xcconfig +++ /dev/null @@ -1,34 +0,0 @@ -ET_PLATFORM[sdk=iphonesimulator*] = simulator -ET_PLATFORM[sdk=iphoneos*] = ios -ET_PLATFORM[sdk=macos*] = macos - -OTHER_LDFLAGS = $(inherited) \ - -force_load $(BUILT_PRODUCTS_DIR)/libexecutorch_$(ET_PLATFORM).a \ - -force_load $(BUILT_PRODUCTS_DIR)/libbackend_coreml_$(ET_PLATFORM).a \ - -framework Foundation \ - -framework CoreML \ - -framework Accelerate \ - -framework Metal \ - -framework MetalPerformanceShaders \ - -framework MetalPerformanceShadersGraph \ - -force_load $(BUILT_PRODUCTS_DIR)/libbackend_mps_$(ET_PLATFORM).a \ - -force_load $(BUILT_PRODUCTS_DIR)/libbackend_xnnpack_$(ET_PLATFORM).a \ - -force_load $(BUILT_PRODUCTS_DIR)/libkernels_custom_$(ET_PLATFORM).a \ - -force_load $(BUILT_PRODUCTS_DIR)/libkernels_optimized_$(ET_PLATFORM).a \ - -force_load $(BUILT_PRODUCTS_DIR)/libkernels_quantized_$(ET_PLATFORM).a \ - -force_load $(BUILT_PRODUCTS_DIR)/libkernels_torchao_$(ET_PLATFORM).a \ - -lsqlite3 \ - @$(TEMP_DIR)/cmake/linker_flags - -// LLaMARunner requires additional dependencies built with CMake in a custom run script phase. -// Include headers and libraries from $(TEMP_DIR)/cmake for it. -HEADER_SEARCH_PATHS = $(inherited) \ - $(SRCROOT)/../../../../.. \ - $(TEMP_DIR)/cmake/include \ - $(SRCROOT)/../../../../extension/llm/tokenizers/include \ - $(SRCROOT)/../../../../extension/llm/tokenizers/third-party/sentencepiece \ - $(SRCROOT)/../../../../extension/llm/tokenizers/third-party/sentencepiece/src - -LIBRARY_SEARCH_PATHS = $(inherited) \ - $(TEMP_DIR)/cmake/lib - diff --git a/run_build.sh b/run_build.sh deleted file mode 100644 index c9116abe3e5..00000000000 --- a/run_build.sh +++ /dev/null @@ -1,25 +0,0 @@ - - -bash install_executorch.sh --clean - -bash install_executorch.sh - -pip install -e . - -cmake -DPYTHON_EXECUTABLE=python \ - -DCMAKE_INSTALL_PREFIX=cmake-out \ - -DEXECUTORCH_ENABLE_LOGGING=1 \ - -DCMAKE_BUILD_TYPE=Release \ - -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \ - -DEXECUTORCH_BUILD_EXTENSION_MODULE=ON \ - -DEXECUTORCH_BUILD_EXTENSION_TENSOR=ON \ - -DEXECUTORCH_BUILD_XNNPACK=OFF \ - -DEXECUTORCH_BUILD_KERNELS_QUANTIZED=ON \ - -DEXECUTORCH_BUILD_KERNELS_OPTIMIZED=ON \ - -DEXECUTORCH_BUILD_KERNELS_CUSTOM=ON \ - -DEXECUTORCH_BUILD_KERNELS_TORCHAO=ON \ - -DCMAKE_PREFIX_PATH=$(python -c 'from distutils.sysconfig import get_python_lib; print(get_python_lib())') \ - -Bcmake-out . - -cmake --build cmake-out -j16 --target install --config Release - diff --git a/run_ios_build.sh b/run_ios_build.sh deleted file mode 100644 index da8ccd176bb..00000000000 --- a/run_ios_build.sh +++ /dev/null @@ -1,15 +0,0 @@ -bash install_executorch.sh --clean - -bash install_executorch.sh - -pip install -e . - -./install_requirements.sh - -# CoreML-only requirements: -./backends/apple/coreml/scripts/install_requirements.sh - -# MPS-only requirements: -./backends/apple/mps/install_requirements.sh - -./scripts/build_apple_frameworks.sh --Release diff --git a/run_torchao_build.sh b/run_torchao_build.sh deleted file mode 100644 index 90cbccb25f0..00000000000 --- a/run_torchao_build.sh +++ /dev/null @@ -1,15 +0,0 @@ -bash install_executorch.sh --clean - -bash install_executorch.sh - -pip install -e . - -./install_requirements.sh - -# CoreML-only requirements: -./backends/apple/coreml/scripts/install_requirements.sh - -# MPS-only requirements: -./backends/apple/mps/install_requirements.sh - -./scripts/build_apple_frameworks.sh --Release --torchao \ No newline at end of file From 6a00da3597479893505a2c7ecadf71c4c63a1acb Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Tue, 29 Jul 2025 18:43:49 -0400 Subject: [PATCH 26/30] reverted to existing changes --- scripts/build_apple_frameworks.sh | 31 ++++++++++++++++++++++--------- 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/scripts/build_apple_frameworks.sh b/scripts/build_apple_frameworks.sh index 4d6518da797..7e85e2b4b88 100755 --- a/scripts/build_apple_frameworks.sh +++ b/scripts/build_apple_frameworks.sh @@ -218,14 +218,14 @@ for preset_index in "${!PRESETS[@]}"; do # Do NOT add options here. Update the respective presets instead. cmake -S "${SOURCE_ROOT_DIR}" \ -B "${preset_output_dir}" \ + --fresh \ -DCMAKE_ARCHIVE_OUTPUT_DIRECTORY="${preset_output_dir}" \ -DCMAKE_BUILD_TYPE="${mode}" \ ${CMAKE_OPTIONS_OVERRIDE[@]:-} \ --preset "${preset}" cmake --build "${preset_output_dir}" \ - --config "${mode}" \ - -j$(sysctl -n hw.ncpu) + --config "${mode}" done done @@ -238,7 +238,7 @@ mkdir -p "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_MODULE_NAME" "$SOURCE_ROOT_DIR"/scripts/print_exported_headers.py --buck2=$(realpath "$BUCK2") --targets \ //extension/module: \ //extension/tensor: \ - rsync -av --files-from=- "$SOURCE_ROOT_DIR" "$HEADERS_ABSOLUTE_PATH/executorch" +| rsync -av --files-from=- "$SOURCE_ROOT_DIR" "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_MODULE_NAME" # HACK: XCFrameworks don't appear to support exporting any build # options, but we need the following: @@ -248,18 +248,31 @@ mkdir -p "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_MODULE_NAME" sed -i '' '1i\ #define C10_USING_CUSTOM_GENERATED_MACROS ' \ - "$HEADERS_ABSOLUTE_PATH/executorch/runtime/core/portable_type/c10/c10/macros/Macros.h" \ - "$HEADERS_ABSOLUTE_PATH/executorch/runtime/core/portable_type/c10/c10/macros/Export.h" \ - "$HEADERS_ABSOLUTE_PATH/executorch/runtime/core/portable_type/c10/torch/standalone/macros/Export.h" +"$FRAMEWORK_EXECUTORCH_HEADERS_PATH/executorch/runtime/core/portable_type/c10/c10/macros/Macros.h" \ +"$FRAMEWORK_EXECUTORCH_HEADERS_PATH/executorch/runtime/core/portable_type/c10/c10/macros/Export.h" \ +"$FRAMEWORK_EXECUTORCH_HEADERS_PATH/executorch/runtime/core/portable_type/c10/torch/headeronly/macros/Export.h" cp -r $FRAMEWORK_EXECUTORCH_HEADERS_PATH/executorch/runtime/core/portable_type/c10/c10 "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/" cp -r $FRAMEWORK_EXECUTORCH_HEADERS_PATH/executorch/runtime/core/portable_type/c10/torch "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/" cp "$SOURCE_ROOT_DIR/extension/apple/$FRAMEWORK_EXECUTORCH_MODULE_NAME/Exported/"*.h "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_MODULE_NAME" -cat > "$HEADERS_ABSOLUTE_PATH/module.modulemap" << 'EOF' -module ExecuTorch { - umbrella header "ExecuTorch/ExecuTorch.h" +cat > "$FRAMEWORK_EXECUTORCH_HEADERS_PATH/module.modulemap" << EOF +module ${FRAMEWORK_EXECUTORCH_MODULE_NAME} { + umbrella header "${FRAMEWORK_EXECUTORCH_MODULE_NAME}/${FRAMEWORK_EXECUTORCH_MODULE_NAME}.h" + export * +} +EOF + +# FRAMEWORK_EXECUTORCH_LLM + +mkdir -p "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME" + +cp "$SOURCE_ROOT_DIR/extension/llm/apple/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME/Exported/"*.h "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME" + +cat > "$FRAMEWORK_EXECUTORCH_LLM_HEADERS_PATH/$FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME/module.modulemap" << EOF +module ${FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME} { + umbrella header "${FRAMEWORK_EXECUTORCH_LLM_MODULE_NAME}.h" export * } EOF From 435ffa134f9fbb56020ba6e3d2e42bef17e35da8 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Tue, 29 Jul 2025 18:45:33 -0400 Subject: [PATCH 27/30] removed dev script --- export_llama_torchao.sh | 23 ----------------------- 1 file changed, 23 deletions(-) delete mode 100644 export_llama_torchao.sh diff --git a/export_llama_torchao.sh b/export_llama_torchao.sh deleted file mode 100644 index d4a4a03a152..00000000000 --- a/export_llama_torchao.sh +++ /dev/null @@ -1,23 +0,0 @@ -# No quantization -# Set these paths to point to the downloaded files -LLAMA_CHECKPOINT=../../../.llama/checkpoints/Llama-3.2-3B-Instruct/original/consolidated.00.pth -LLAMA_PARAMS=../../../.llama/checkpoints/Llama-3.2-3B-Instruct/original/params.json - -# Set low-bit quantization parameters -QLINEAR_BITWIDTH=4 # Can be 1-8 -QLINEAR_GROUP_SIZE=128 # Must be multiple of 16 -QEMBEDDING_BITWIDTH=4 # Can be 1-8 -QEMBEDDING_GROUP_SIZE=32 # Must be multiple of 16 - -python -m extension.llm.export.export_llm \ - base.model_class="llama3_2" \ - base.checkpoint="${LLAMA_CHECKPOINT:?}" \ - base.params="${LLAMA_PARAMS:?}" \ - model.use_kv_cache=True \ - model.use_sdpa_with_kv_cache=True \ - base.metadata='"{\"get_bos_id\":128000, \"get_eos_ids\":[128009, 128001]}"' \ - export.output_name="llama3_2.pte" \ - quantization.qmode="torchao:8da${QLINEAR_BITWIDTH}w" \ - quantization.group_size=${QLINEAR_GROUP_SIZE} \ - quantization.embedding_quantize=\'torchao:${QEMBEDDING_BITWIDTH},${QEMBEDDING_GROUP_SIZE}\' \ - model.dtype_override="fp32" From 16b89842fd147658835c9780635e805913e99260 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Tue, 29 Jul 2025 18:55:07 -0400 Subject: [PATCH 28/30] fixed submodules --- backends/vulkan/third-party/Vulkan-Headers | 2 +- backends/vulkan/third-party/volk | 2 +- backends/xnnpack/third-party/XNNPACK | 2 +- backends/xnnpack/third-party/pthreadpool | 2 +- extension/llm/tokenizers | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/backends/vulkan/third-party/Vulkan-Headers b/backends/vulkan/third-party/Vulkan-Headers index 0c5928795a6..10739e8e00a 160000 --- a/backends/vulkan/third-party/Vulkan-Headers +++ b/backends/vulkan/third-party/Vulkan-Headers @@ -1 +1 @@ -Subproject commit 0c5928795a66e93f65e5e68a36d8daa79a209dc2 +Subproject commit 10739e8e00a7b6f74d22dd0a547f1406ff1f5eb9 diff --git a/backends/vulkan/third-party/volk b/backends/vulkan/third-party/volk index b3bc21e584f..49ba6858c13 160000 --- a/backends/vulkan/third-party/volk +++ b/backends/vulkan/third-party/volk @@ -1 +1 @@ -Subproject commit b3bc21e584f97400b6884cb2a541a56c6a5ddba3 +Subproject commit 49ba6858c13516019d699d94c31d5814025dd005 diff --git a/backends/xnnpack/third-party/XNNPACK b/backends/xnnpack/third-party/XNNPACK index 4ea82e595b3..52208356940 160000 --- a/backends/xnnpack/third-party/XNNPACK +++ b/backends/xnnpack/third-party/XNNPACK @@ -1 +1 @@ -Subproject commit 4ea82e595b36106653175dcb04b2aa532660d0d8 +Subproject commit 52208356940a7c7d3597cf386d500a0f776f7bd0 diff --git a/backends/xnnpack/third-party/pthreadpool b/backends/xnnpack/third-party/pthreadpool index 4fe0e1e1839..c2ba5c50bb5 160000 --- a/backends/xnnpack/third-party/pthreadpool +++ b/backends/xnnpack/third-party/pthreadpool @@ -1 +1 @@ -Subproject commit 4fe0e1e183925bf8cfa6aae24237e724a96479b8 +Subproject commit c2ba5c50bb58d1397b693740cf75fad836a0d1bf diff --git a/extension/llm/tokenizers b/extension/llm/tokenizers index d202b36fe00..f09feca1584 160000 --- a/extension/llm/tokenizers +++ b/extension/llm/tokenizers @@ -1 +1 @@ -Subproject commit d202b36fe006457c2139a423ef183ca4ce7c410c +Subproject commit f09feca15849a790c05b3b7855e7c62ce26ba94b From 03f584ab84ef8b2e8871d4aceffd22e1f5035e4a Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Tue, 29 Jul 2025 19:24:20 -0400 Subject: [PATCH 29/30] updated link name --- CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5874e13bc18..e735d113de7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -287,7 +287,7 @@ if(EXECUTORCH_BUILD_KERNELS_TORCHAO) set(EXECUTORCH_LIBRARIES executorch pthreadpool extension_threadpool cpuinfo) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third-party/ao/torchao/experimental) - target_link_options_shared_lib(torchao_ops_executorch) + executorch_target_link_options_shared_lib(torchao_ops_executorch) list(APPEND _dep_libs torchao_ops_executorch) endif() From eab0f73553e54a768ada3b490216097d7afbc8f9 Mon Sep 17 00:00:00 2001 From: hinriksnaer Date: Wed, 30 Jul 2025 13:34:59 -0400 Subject: [PATCH 30/30] changed dependency reference in torchao build --- CMakeLists.txt | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e735d113de7..e5f0361a330 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -283,12 +283,18 @@ if(EXECUTORCH_BUILD_KERNELS_TORCHAO) set(TORCHAO_BUILD_EXECUTORCH_OPS ON) set(TORCHAO_BUILD_CPU_AARCH64 ON) set(TORCHAO_ENABLE_ARM_NEON_DOT ON) - set(EXECUTORCH_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/..) - set(EXECUTORCH_LIBRARIES executorch pthreadpool extension_threadpool cpuinfo) + + list(APPEND TORCHAO_INCLUDE_DIRS + ${EXECUTORCH_ROOT}/backends/xnnpack/third-party/pthreadpool/include + ${EXECUTORCH_ROOT}/backends/xnnpack/third-party/cpuinfo/include + ${EXECUTORCH_ROOT}/third-party/ao + ) + + set(EXECUTORCH_INCLUDE_DIRS ${TORCHAO_INCLUDE_DIRS}) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/third-party/ao/torchao/experimental) executorch_target_link_options_shared_lib(torchao_ops_executorch) - list(APPEND _dep_libs torchao_ops_executorch) + list(APPEND _executorch_kernels torchao_ops_executorch) endif() if(EXECUTORCH_BUILD_TESTS)