diff --git a/.ci/scripts/test_llama.sh b/.ci/scripts/test_llama.sh index fa9f463b8c2..94528613e33 100644 --- a/.ci/scripts/test_llama.sh +++ b/.ci/scripts/test_llama.sh @@ -75,6 +75,7 @@ cmake_install_executorch_libraries() { -DEXECUTORCH_BUILD_EXTENSION_DATA_LOADER=ON \ -DEXECUTORCH_BUILD_CUSTOM="$CUSTOM" \ -DEXECUTORCH_BUILD_OPTIMIZED=ON \ + -DEXECUTORCH_BUILD_QUANTIZED=ON \ -DEXECUTORCH_BUILD_XNNPACK="$XNNPACK" \ -DPYTHON_EXECUTABLE="$PYTHON_EXECUTABLE" \ -Bcmake-out . diff --git a/CMakeLists.txt b/CMakeLists.txt index 03b87d5656d..e963f0aaadd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -164,6 +164,8 @@ option(EXECUTORCH_BUILD_QNN "Build the Qualcomm backend" OFF) option(EXECUTORCH_BUILD_OPTIMIZED "Build the optimized kernels" OFF) +option(EXECUTORCH_BUILD_QUANTIZED "Build the quantized kernels" OFF) + option(EXECUTORCH_BUILD_SDK "Build the ExecuTorch SDK") option(EXECUTORCH_BUILD_SIZE_TEST "Build the size test" OFF) @@ -411,7 +413,9 @@ if(EXECUTORCH_BUILD_OPTIMIZED) add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/kernels/optimized) endif() -add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/kernels/quantized) +if(EXECUTORCH_BUILD_QUANTIZED) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/kernels/quantized) +endif() add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/configurations) @@ -441,7 +445,7 @@ cmake_dependent_option( EXECUTORCH_BUILD_HOST_TARGETS OFF) if(EXECUTORCH_BUILD_EXECUTOR_RUNNER) # Baseline libraries that executor_runner will link against. - set(_executor_runner_libs executorch gflags quantized_ops_lib) + set(_executor_runner_libs executorch gflags) if(EXECUTORCH_BUILD_OPTIMIZED) list(APPEND _executor_runner_libs optimized_native_cpu_ops_lib) @@ -449,6 +453,11 @@ if(EXECUTORCH_BUILD_EXECUTOR_RUNNER) list(APPEND _executor_runner_libs portable_ops_lib) endif() + # Generate lib to register quantized ops + if(EXECUTORCH_BUILD_QUANTIZED) + list(APPEND _executor_runner_libs quantized_ops_lib) + endif() + add_executable(executor_runner ${_executor_runner__srcs}) if(CMAKE_BUILD_TYPE STREQUAL "Release" AND NOT APPLE) target_link_options(executor_runner PRIVATE "LINKER:--gc-sections") diff --git a/build/Utils.cmake b/build/Utils.cmake index 7705a9add4c..39fa7317da8 100644 --- a/build/Utils.cmake +++ b/build/Utils.cmake @@ -74,6 +74,8 @@ function(executorch_print_configuration_summary) STATUS " EXECUTORCH_BUILD_QNN : ${EXECUTORCH_BUILD_QNN}") message(STATUS " EXECUTORCH_BUILD_OPTIMIZED : " "${EXECUTORCH_BUILD_OPTIMIZED}") + message(STATUS " EXECUTORCH_BUILD_QUANTIZED : " + "${EXECUTORCH_BUILD_QUANTIZED}") message( STATUS " EXECUTORCH_BUILD_SDK : ${EXECUTORCH_BUILD_SDK}") message( diff --git a/build/build_apple_frameworks.sh b/build/build_apple_frameworks.sh index f2be98c5ce0..0b6adae0a7f 100755 --- a/build/build_apple_frameworks.sh +++ b/build/build_apple_frameworks.sh @@ -22,7 +22,7 @@ CUSTOM=OFF MPS=OFF OPTIMIZED=OFF PORTABLE=OFF -QUANTIZED=ON +QUANTIZED=OFF XNNPACK=OFF HEADERS_PATH="include" EXECUTORCH_FRAMEWORK="executorch:libexecutorch.a,libexecutorch_no_prim_ops.a,libextension_apple.a,libextension_data_loader.a,libextension_module.a:$HEADERS_PATH" @@ -51,6 +51,7 @@ usage() { echo " --mps Include this flag to build the Metal Performance Shaders backend." echo " --optimized Include this flag to build the Optimized backend." echo " --portable Include this flag to build the Portable backend." + echo " --quantized Include this flag to build the Quantized backend." echo " --xnnpack Include this flag to build the XNNPACK backend." echo echo "Example:" @@ -73,6 +74,7 @@ for arg in "$@"; do --mps) MPS=ON ;; --optimized) OPTIMIZED=ON ;; --portable) PORTABLE=ON ;; + --quantized) QUANTIZED=ON ;; --xnnpack) XNNPACK=ON ;; *) if [[ -z "$SOURCE_ROOT_DIR" ]]; then @@ -135,6 +137,7 @@ cmake_build() { -DEXECUTORCH_BUILD_CUSTOM=$CUSTOM \ -DEXECUTORCH_BUILD_MPS=$MPS \ -DEXECUTORCH_BUILD_OPTIMIZED=$OPTIMIZED \ + -DEXECUTORCH_BUILD_QUANTIZED=$QUANTIZED \ -DEXECUTORCH_BUILD_XNNPACK=$XNNPACK \ ${platform_flag:+-DIOS_PLATFORM=$platform_flag} cmake --build . --config $MODE @@ -178,7 +181,7 @@ append_framework_flag "$CUSTOM" "$CUSTOM_FRAMEWORK" append_framework_flag "$MPS" "$MPS_FRAMEWORK" append_framework_flag "$OPTIMIZED" "$OPTIMIZED_FRAMEWORK" append_framework_flag "$PORTABLE" "$PORTABLE_FRAMEWORK" -append_framework_flag "ON" "$QUANTIZED_FRAMEWORK" +append_framework_flag "$QUANTIZED" "$QUANTIZED_FRAMEWORK" append_framework_flag "$XNNPACK" "$XNNPACK_FRAMEWORK" "$SOURCE_ROOT_DIR"/build/create_frameworks.sh "${FRAMEWORK_FLAGS[@]}"