Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use c10 version of half/bfloat16 in executorch #7040

Open
wants to merge 38 commits into
base: gh/swolchok/119/base
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
906f932
Use c10 version of half/bfloat16 in executorch
swolchok Nov 23, 2024
4b91ca9
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Nov 23, 2024
bb52821
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Nov 23, 2024
8731976
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Nov 26, 2024
44dd36f
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Dec 2, 2024
4975faf
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Dec 2, 2024
a94c90a
rebase on "Use c10 version of half/bfloat16 in executorch"
swolchok Dec 8, 2024
3184b11
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Dec 10, 2024
cae460c
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Dec 17, 2024
be1e92e
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Dec 17, 2024
3e90cd0
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Dec 18, 2024
51b397d
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Dec 18, 2024
af15338
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Dec 18, 2024
25a2c08
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Dec 20, 2024
f3a41bc
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Dec 20, 2024
3206b93
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 2, 2025
4a92492
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 3, 2025
43f26e5
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 3, 2025
0730440
fix punctuation on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 3, 2025
6798650
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 3, 2025
6bbef4b
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 4, 2025
227d6bf
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 6, 2025
0a18916
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 7, 2025
e4d21ff
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 7, 2025
afd982e
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 8, 2025
29bbc88
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 9, 2025
8e9101c
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 9, 2025
ef0e952
Update on "Use c10 version of half/bfloat16 in executorch"
Jan 10, 2025
69e2672
Update on "Use c10 version of half/bfloat16 in executorch"
Jan 10, 2025
f4c5b77
Update on "Use c10 version of half/bfloat16 in executorch"
Jan 10, 2025
ac4c80b
Update on "Use c10 version of half/bfloat16 in executorch"
Jan 10, 2025
26c6211
Update on "Use c10 version of half/bfloat16 in executorch"
Jan 11, 2025
8681d7f
Update on "Use c10 version of half/bfloat16 in executorch"
Jan 11, 2025
bb69dcd
Update on "Use c10 version of half/bfloat16 in executorch"
Jan 13, 2025
5a7cba3
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 15, 2025
abe03ea
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 15, 2025
789c521
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 17, 2025
8b8987a
Update on "Use c10 version of half/bfloat16 in executorch"
swolchok Jan 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .lintrunner.toml
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,8 @@ exclude_patterns = [
# File contains @generated
'extension/llm/custom_ops/spinquant/fast_hadamard_transform_special.h',
'extension/llm/custom_ops/spinquant/test/fast_hadamard_transform_special_unstrided_cpu.h',
# Want to be able to keep c10 in sync with PyTorch core.
'runtime/core/portable_type/c10/**',
]
command = [
'python',
Expand Down Expand Up @@ -261,6 +263,8 @@ exclude_patterns = [
'extension/**',
'kernels/optimized/**',
'runtime/core/exec_aten/**',
# Want to be able to keep c10 in sync with PyTorch core.
'runtime/core/portable_type/c10/**',
'runtime/executor/tensor_parser_aten.cpp',
'scripts/**',
'test/**',
Expand Down
13 changes: 12 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -361,7 +361,7 @@ if(NOT "${_repo_dir_name}" STREQUAL "executorch")
"fix for this restriction."
)
endif()
set(_common_include_directories ${CMAKE_CURRENT_SOURCE_DIR}/..)
set(_common_include_directories ${CMAKE_CURRENT_SOURCE_DIR}/.. ${CMAKE_CURRENT_SOURCE_DIR}/runtime/core/portable_type)

#
# The `_<target>_srcs` lists are defined by including ${EXECUTORCH_SRCS_FILE}.
Expand Down Expand Up @@ -544,6 +544,7 @@ endif()
target_include_directories(
executorch_core PUBLIC ${_common_include_directories}
)
target_compile_definitions(executorch_core PUBLIC C10_USING_CUSTOM_GENERATED_MACROS)
target_compile_options(executorch_core PUBLIC ${_common_compile_options})
if(MAX_KERNEL_NUM)
target_compile_definitions(
Expand All @@ -564,6 +565,7 @@ if(EXECUTORCH_BUILD_PYBIND AND APPLE)
target_include_directories(
executorch_core_shared PUBLIC ${_common_include_directories}
)
target_compile_definitions(executorch_core_shared PUBLIC C10_USING_CUSTOM_GENERATED_MACROS)
target_compile_options(
executorch_core_shared PUBLIC ${_common_compile_options}
)
Expand All @@ -584,6 +586,7 @@ endif()
add_library(executorch ${_executorch__srcs})
target_link_libraries(executorch PRIVATE executorch_core)
target_include_directories(executorch PUBLIC ${_common_include_directories})
target_compile_definitions(executorch PUBLIC C10_USING_CUSTOM_GENERATED_MACROS)
target_compile_options(executorch PUBLIC ${_common_compile_options})
target_link_options_shared_lib(executorch)

Expand Down Expand Up @@ -617,6 +620,12 @@ endif()

# Install `executorch` library as well as `executorch-config.cmake` under
# ${CMAKE_INSTALL_PREFIX}/
install(DIRECTORY runtime/core/ DESTINATION include/executorch/runtime/core FILES_MATCHING PATTERN "*.h")
install(DIRECTORY runtime/kernel/ DESTINATION include/executorch/runtime/kernel FILES_MATCHING PATTERN "*.h")
install(DIRECTORY runtime/platform/ DESTINATION include/executorch/runtime/platform FILES_MATCHING PATTERN "*.h")
install(DIRECTORY extension/kernel_util/ DESTINATION include/executorch/extension/kernel_util FILES_MATCHING PATTERN "*.h")
install(DIRECTORY extension/tensor/ DESTINATION include/executorch/extension/tensor FILES_MATCHING PATTERN "*.h")
install(DIRECTORY extension/threadpool/ DESTINATION include/executorch/extension/threadpool FILES_MATCHING PATTERN "*.h")
install(
TARGETS executorch executorch_core
DESTINATION lib
Expand Down Expand Up @@ -775,6 +784,8 @@ if(EXECUTORCH_BUILD_PYBIND)
target_include_directories(
util PUBLIC ${_common_include_directories} ${TORCH_INCLUDE_DIRS}
)
target_compile_definitions(util PUBLIC C10_USING_CUSTOM_GENERATED_MACROS)

target_compile_options(util PUBLIC ${_pybind_compile_options})
target_link_libraries(util PRIVATE torch c10 executorch extension_tensor)

Expand Down
2 changes: 2 additions & 0 deletions backends/apple/coreml/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,8 @@ target_include_directories(
coremldelegate PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/runtime/util
)
target_include_directories(coremldelegate PRIVATE ${EXECUTORCH_ROOT}/..)
target_include_directories(coremldelegate PRIVATE ${EXECUTORCH_ROOT}/runtime/core/portable_type)
target_compile_definitions(coremldelegate PRIVATE C10_USING_CUSTOM_GENERATED_MACROS)
target_link_libraries(coremldelegate PRIVATE executorch_core)

if(EXECUTORCH_BUILD_DEVTOOLS)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -830,6 +830,7 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"C10_USING_CUSTOM_GENERATED_MACROS",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
Expand Down Expand Up @@ -911,6 +912,7 @@
DEVELOPMENT_TEAM = "";
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"C10_USING_CUSTOM_GENERATED_MACROS",
"ET_EVENT_TRACER_ENABLED=1",
"$(inherited)",
);
Expand All @@ -920,6 +922,7 @@
"$(SRCROOT)/../kvstore",
"$(SRCROOT)/../inmemoryfs",
"$(SRCROOT)/../include",
"$(SRCROOT)/../include/executorch/runtime/core/portable_type",
"$(SRCROOT)/../sdk",
"$(SRCROOT)/../util",
"$(SRCROOT)/../../third-party/nlohmann_json/single_include",
Expand Down Expand Up @@ -951,6 +954,7 @@
"$(SRCROOT)/../kvstore",
"$(SRCROOT)/../inmemoryfs",
"$(SRCROOT)/../include",
"$(SRCROOT)/../include/executorch/runtime/core/portable_type",
"$(SRCROOT)/../sdk",
"$(SRCROOT)/../util",
"$(SRCROOT)/../../third-party/nlohmann_json/single_include",
Expand Down
3 changes: 2 additions & 1 deletion backends/arm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,8 @@ endif()

include(${EXECUTORCH_ROOT}/build/Utils.cmake)

set(_common_include_directories ${EXECUTORCH_ROOT}/..)
set(_common_include_directories ${EXECUTORCH_ROOT}/.. ${EXECUTORCH_ROOT}/runtime/core/portable_type)
add_compile_definitions(C10_USING_CUSTOM_GENERATED_MACROS)

# Third-party folder and Ethos-U driver inclued
set(THIRD_PARTY_ROOT "${CMAKE_CURRENT_SOURCE_DIR}/third-party")
Expand Down
2 changes: 2 additions & 0 deletions backends/qualcomm/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ add_custom_command(
)

add_compile_options("-Wall" "-Werror" "-Wno-sign-compare")
add_compile_definitions(C10_USING_CUSTOM_GENERATED_MACROS)

# GNU emit wanring for ignored attributes Unfortunately, we use [[maybe_unused]]
# which can be ignored by GNU. So we make it a warning, not an error in GNU.
Expand All @@ -72,6 +73,7 @@ endif()
include_directories(
BEFORE ${_common_include_directories} ${QNN_SDK_ROOT}/include/QNN
${EXECUTORCH_SOURCE_DIR}/third-party/flatbuffers/include
${EXECUTORCH_SOURCE_DIR}/runtime/core/portable_type
)

set(_qnn_schema__srcs
Expand Down
2 changes: 1 addition & 1 deletion backends/xnnpack/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ if(NOT CMAKE_TOOLCHAIN_FILE MATCHES ".*(iOS|ios\.toolchain)\.cmake$")
list(TRANSFORM _xnn_executor_runner__srcs PREPEND "${EXECUTORCH_ROOT}/")
add_executable(xnn_executor_runner ${_xnn_executor_runner__srcs})
target_link_libraries(
xnn_executor_runner xnnpack_backend gflags portable_ops_lib
xnn_executor_runner xnnpack_backend gflags portable_ops_lib executorch
)
target_compile_options(xnn_executor_runner PUBLIC ${_common_compile_options})
endif()
Expand Down
17 changes: 15 additions & 2 deletions build/build_apple_frameworks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,7 @@ echo "Exporting headers"

mkdir -p "$HEADERS_PATH"

# Set BUCK2 to the path of the buck2 executable in $OUTPUT/*/buck2-bin/buck2-*
BUCK2=$(find . -type f -path '*/buck2-bin/buck2-*' | head -n 1)
BUCK2=$(find $SOURCE_ROOT_DIR -type f -path '*/buck2-bin/buck2-*' | head -n 1)
if [[ -z "$BUCK2" ]]; then
echo "Could not find buck2 executable in any buck2-bin directory under $OUTPUT"
BUCK2=$(which buck2)
Expand All @@ -201,6 +200,20 @@ check_command "$BUCK2"
//extension/tensor: \
| rsync -av --files-from=- "$SOURCE_ROOT_DIR" "$HEADERS_PATH/executorch"

# HACK: XCFrameworks don't appear to support exporting any build
# options, but we need the following:
# - runtime/core/portable/type/c10 reachable with `#include <c10/...>`
# - exported -DC10_USING_CUSTOM_GENERATED_MACROS compiler flag
# So, just patch our generated framework to do that.
sed -i '' '1i\
#define C10_USING_CUSTOM_GENERATED_MACROS
' $HEADERS_PATH/executorch/runtime/core/portable_type/c10/macros/Macros.h
sed -i '' '1i\
#define C10_USING_CUSTOM_GENERATED_MACROS
' $HEADERS_PATH/executorch/runtime/core/portable_type/c10/macros/Export.h
ln -s $HEADERS_PATH/executorch/runtime/core/portable_type/c10 "$HEADERS_PATH/"


cp "$SOURCE_ROOT_DIR/extension/apple/ExecuTorch/Exported/"*.h "$HEADERS_PATH/executorch"
cp "$SOURCE_ROOT_DIR/extension/apple/ExecuTorch/Exported/"*.modulemap "$HEADERS_PATH"

Expand Down
13 changes: 7 additions & 6 deletions build/executorch-config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,21 @@

cmake_minimum_required(VERSION 3.19)

set(_root "${CMAKE_CURRENT_LIST_DIR}/../..")
set(_root "${CMAKE_CURRENT_LIST_DIR}/../../..")
set(required_lib_list executorch executorch_core portable_kernels)
set(EXECUTORCH_LIBRARIES)
set(EXECUTORCH_INCLUDE_DIRS ${_root})
set(EXECUTORCH_INCLUDE_DIRS ${_root}/include ${_root}/include/executorch/runtime/core/portable_type ${_root}/lib)
foreach(lib ${required_lib_list})
set(lib_var "LIB_${lib}")
add_library(${lib} STATIC IMPORTED)
find_library(
${lib_var} ${lib}
HINTS "${_root}"
HINTS "${_root}/lib"
CMAKE_FIND_ROOT_PATH_BOTH
)
set_target_properties(${lib} PROPERTIES IMPORTED_LOCATION "${${lib_var}}")
target_include_directories(${lib} INTERFACE ${_root})
target_compile_definitions(${lib} INTERFACE C10_USING_CUSTOM_GENERATED_MACROS)
target_include_directories(${lib} INTERFACE ${_root}/include ${_root}/include/executorch/runtime/core/portable_type ${_root}/lib)
list(APPEND EXECUTORCH_LIBRARIES ${lib})
endforeach()

Expand Down Expand Up @@ -93,7 +94,7 @@ foreach(lib ${lib_list})
set(lib_var "LIB_${lib}")
find_library(
${lib_var} ${lib}
HINTS "${_root}"
HINTS "${_root}/lib"
CMAKE_FIND_ROOT_PATH_BOTH
)
if(NOT ${lib_var})
Expand All @@ -109,7 +110,7 @@ foreach(lib ${lib_list})
add_library(${lib} STATIC IMPORTED)
endif()
set_target_properties(${lib} PROPERTIES IMPORTED_LOCATION "${${lib_var}}")
target_include_directories(${lib} INTERFACE ${_root})
target_include_directories(${lib} INTERFACE ${_root}/include ${_root}/include/executorch/runtime/core/portable_type ${_root}/lib)
list(APPEND EXECUTORCH_LIBRARIES ${lib})
endif()
endforeach()
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"C10_USING_CUSTOM_GENERATED_MACROS",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
Expand Down Expand Up @@ -271,6 +272,10 @@
ENABLE_USER_SCRIPT_SANDBOXING = YES;
GCC_C_LANGUAGE_STANDARD = gnu17;
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"C10_USING_CUSTOM_GENERATED_MACROS",
"$(inherited)",
);
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
Expand All @@ -291,7 +296,10 @@
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES;
HEADER_SEARCH_PATHS = "$(SRCROOT)/include";
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/include",
"$(SRCROOT)/include/executorch/runtime/core/portable_type",
);
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LIBRARY_SEARCH_PATHS = (
"$(SRCROOT)/libraries",
Expand All @@ -310,7 +318,10 @@
CODE_SIGN_STYLE = Automatic;
DEVELOPMENT_TEAM = "";
ENABLE_HARDENED_RUNTIME = YES;
HEADER_SEARCH_PATHS = "$(SRCROOT)/include";
HEADER_SEARCH_PATHS = (
"$(SRCROOT)/include",
"$(SRCROOT)/include/executorch/runtime/core/portable_type",
);
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
LIBRARY_SEARCH_PATHS = (
"$(SRCROOT)/libraries",
Expand Down
3 changes: 2 additions & 1 deletion examples/arm/executor_runner/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -351,8 +351,9 @@ target_link_options( arm_executor_runner PUBLIC LINKER:-Map=arm_executor_runner.

# ET headers and generated headers includes
target_include_directories(
arm_executor_runner PRIVATE ${ET_INCLUDE_PATH} ${CMAKE_CURRENT_BINARY_DIR}
arm_executor_runner PRIVATE ${ET_INCLUDE_PATH} ${ET_DIR_PATH}/runtime/core/portable_type ${CMAKE_CURRENT_BINARY_DIR}
)
target_compile_definitions(arm_executor_runner PRIVATE C10_USING_CUSTOM_GENERATED_MACROS)

if(SEMIHOSTING)
target_compile_definitions(arm_executor_runner PUBLIC SEMIHOSTING)
Expand Down
Loading
Loading