Skip to content

Commit 545535b

Browse files
[Executorch] enable sleef consistently (#6705)
Pull Request resolved: #6524 Earlier only android platofrms had support for sleef ghstack-source-id: 252186435 @exported-using-ghexport //oss lint broken on unrelated issue @bypass-github-export-checks @exported-using-ghexport Differential Revision: [D64571782](https://our.internmc.facebook.com/intern/diff/D64571782/) Co-authored-by: Kimish Patel <[email protected]>
1 parent 70f15e6 commit 545535b

File tree

6 files changed

+91
-27
lines changed

6 files changed

+91
-27
lines changed

extension/llm/custom_ops/targets.bzl

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
2+
load(
3+
"@fbsource//xplat/executorch/kernels/optimized:lib_defs.bzl",
4+
"get_vec_preprocessor_flags",
5+
"get_vec_deps",
6+
)
27
load(
38
"@fbsource//xplat/executorch/kernels/portable:op_registration_util.bzl",
49
"get_compiler_optimization_flags",
510
)
611

7-
812
def define_common_targets():
913
"""Defines targets that should be shared between fbcode and xplat.
1014
@@ -26,6 +30,7 @@ def define_common_targets():
2630
"op_sdpa.h",
2731
"op_update_quantized_cache.h",
2832
],
33+
preprocessor_flags = get_vec_preprocessor_flags(),
2934
exported_deps = [
3035
"//executorch/runtime/kernel:kernel_includes",
3136
"//executorch/kernels/portable/cpu:scalar_utils",
@@ -38,7 +43,7 @@ def define_common_targets():
3843
deps = [
3944
"//executorch/kernels/portable/cpu/util:reduce_util",
4045
"//executorch/extension/llm/custom_ops/spinquant:fast_hadamard_transform",
41-
],
46+
] + get_vec_deps(),
4247
compiler_flags = ["-Wno-missing-prototypes", "-Wno-global-constructors"] + get_compiler_optimization_flags(),
4348
visibility = [
4449
"//executorch/...",

kernels/optimized/lib_defs.bzl

Lines changed: 37 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,16 +15,44 @@ load(
1515
# functions in order to declare the required compiler flags needed in order to
1616
# access CPU vector intrinsics.
1717

18-
def get_vec_android_preprocessor_flags():
19-
preprocessor_flags = [
20-
(
21-
"^android-arm64.*$",
22-
[
18+
def get_vec_preprocessor_flags():
19+
if not runtime.is_oss:
20+
# various ovr_configs are not available in oss
21+
preprocessor_flags = select({
22+
"ovr_config//os:linux-x86_64": [
2323
"-DET_BUILD_ARM_VEC256_WITH_SLEEF",
24-
],
25-
),
26-
]
27-
return preprocessor_flags
24+
] if not runtime.is_oss else [],
25+
"ovr_config//os:iphoneos-arm64": [
26+
"-DET_BUILD_ARM_VEC256_WITH_SLEEF",
27+
] if not runtime.is_oss else [],
28+
"ovr_config//os:macos-arm64": [
29+
"-DET_BUILD_ARM_VEC256_WITH_SLEEF",
30+
] if not runtime.is_oss else [],
31+
"ovr_config//os:android-arm64": [
32+
"-DET_BUILD_ARM_VEC256_WITH_SLEEF",
33+
] if not runtime.is_oss else [],
34+
"DEFAULT": [],
35+
})
36+
return preprocessor_flags
37+
return []
38+
39+
def get_vec_deps():
40+
if not runtime.is_oss:
41+
# various ovr_configs are not available in oss
42+
deps = select({
43+
"ovr_config//os:iphoneos-arm64": [
44+
"fbsource//third-party/sleef:sleef_arm",
45+
] if not runtime.is_oss else [],
46+
"ovr_config//os:macos-arm64": [
47+
"fbsource//third-party/sleef:sleef_arm",
48+
] if not runtime.is_oss else [],
49+
"ovr_config//os:android-arm64": [
50+
"fbsource//third-party/sleef:sleef_arm",
51+
] if not runtime.is_oss else [],
52+
"DEFAULT": [],
53+
})
54+
return deps
55+
return []
2856

2957
def get_vec_cxx_preprocessor_flags():
3058
preprocessor_flags = [

kernels/optimized/op_registration_util.bzl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,8 @@ load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
22
load("@fbsource//xplat/executorch/build:selects.bzl", "selects")
33
load(
44
"@fbsource//xplat/executorch/kernels/optimized:lib_defs.bzl",
5-
"get_vec_android_preprocessor_flags",
5+
"get_vec_preprocessor_flags",
6+
"get_vec_deps",
67
)
78
load(
89
"@fbsource//xplat/executorch/kernels/portable:op_registration_util.bzl",
@@ -94,8 +95,8 @@ def define_op_library(name, deps):
9495
compiler_flags = ["-Wno-missing-prototypes"] + get_compiler_optimization_flags(),
9596
deps = [
9697
"//executorch/runtime/kernel:kernel_includes",
97-
] + augmented_deps,
98-
fbandroid_platform_preprocessor_flags = get_vec_android_preprocessor_flags(),
98+
] + augmented_deps + get_vec_deps(),
99+
preprocessor_flags = get_vec_preprocessor_flags(),
99100
# sleef needs to be added as a direct dependency of the operator target when building for Android,
100101
# or a linker error may occur. Not sure why this happens; it seems that fbandroid_platform_deps of
101102
# dependencies are not transitive

kernels/optimized/test/targets.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
22
load(
33
"@fbsource//xplat/executorch/kernels/optimized:lib_defs.bzl",
4-
"get_vec_android_preprocessor_flags",
4+
"get_vec_preprocessor_flags",
55
"get_vec_cxx_preprocessor_flags",
66
)
77
load("@fbsource//xplat/executorch/kernels/test:util.bzl", "define_supported_features_lib")
@@ -27,7 +27,7 @@ def _lib_test_bin(name, extra_deps = [], in_cpu = False):
2727
"//executorch/kernels/optimized{}:{}".format(cpu_path, lib_root),
2828
] + extra_deps,
2929
cxx_platform_preprocessor_flags = get_vec_cxx_preprocessor_flags(),
30-
fbandroid_platform_preprocessor_flags = get_vec_android_preprocessor_flags(),
30+
preprocessor_flags = get_vec_preprocessor_flags(),
3131
)
3232

3333
def define_common_targets():

shim/xplat/executorch/kernels/optimized/lib_defs.bzl

Lines changed: 39 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,16 +16,46 @@ load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
1616
# functions in order to declare the required compiler flags needed in order to
1717
# access CPU vector intrinsics.
1818

19-
def get_vec_android_preprocessor_flags():
20-
preprocessor_flags = [
21-
(
22-
"^android-arm64.*$",
23-
[
19+
# This oopy from kernels/optimized/lib_defs.bzl is not necessary.
20+
# This file really needs to be removed
21+
def get_vec_preprocessor_flags():
22+
if not runtime.is_oss:
23+
# various ovr_configs are not available in oss
24+
preprocessor_flags = select({
25+
"ovr_config//os:iphoneos": [
2426
"-DET_BUILD_ARM_VEC256_WITH_SLEEF",
25-
],
26-
),
27-
]
28-
return preprocessor_flags
27+
] if not runtime.is_oss else [],
28+
"ovr_config//os:macos-arm64": [
29+
"-DET_BUILD_ARM_VEC256_WITH_SLEEF",
30+
] if not runtime.is_oss else [],
31+
"ovr_config//os:android-arm64": [
32+
"-DET_BUILD_ARM_VEC256_WITH_SLEEF",
33+
] if not runtime.is_oss else [],
34+
"DEFAULT": [],
35+
})
36+
return preprocessor_flags
37+
return []
38+
39+
def get_vec_deps():
40+
if not runtime.is_oss:
41+
# various ovr_configs are not available in oss
42+
deps = select({
43+
"ovr_config//os:linux-x86_64": [
44+
"fbsource//third-party/sleef:sleef",
45+
] if not runtime.is_oss else [],
46+
"ovr_config//os:iphoneos": [
47+
"fbsource//third-party/sleef:sleef_arm",
48+
] if not runtime.is_oss else [],
49+
"ovr_config//os:macos-arm64": [
50+
"fbsource//third-party/sleef:sleef_arm",
51+
] if not runtime.is_oss else [],
52+
"ovr_config//os:android-arm64": [
53+
"fbsource//third-party/sleef:sleef_arm",
54+
] if not runtime.is_oss else [],
55+
"DEFAULT": [],
56+
})
57+
return deps
58+
return []
2959

3060
def get_vec_cxx_preprocessor_flags():
3161
preprocessor_flags = [

shim/xplat/executorch/kernels/optimized/op_registration_util.bzl

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
99
load("@fbsource//xplat/executorch/build:selects.bzl", "selects")
1010
load(
1111
"@fbsource//xplat/executorch/kernels/optimized:lib_defs.bzl",
12-
"get_vec_android_preprocessor_flags",
12+
"get_vec_preprocessor_flags",
1313
)
1414

1515
def op_target(name, deps = []):
@@ -98,7 +98,7 @@ def define_op_library(name, deps):
9898
deps = [
9999
"//executorch/runtime/kernel:kernel_includes",
100100
] + augmented_deps,
101-
fbandroid_platform_preprocessor_flags = get_vec_android_preprocessor_flags(),
101+
preprocessor_flags = get_vec_preprocessor_flags(),
102102
# sleef needs to be added as a direct dependency of the operator target when building for Android,
103103
# or a linker error may occur. Not sure why this happens; it seems that fbandroid_platform_deps of
104104
# dependencies are not transitive

0 commit comments

Comments
 (0)