Skip to content

Commit 192da36

Browse files
kirklandsignfacebook-github-bot
authored andcommitted
Use optimized library if op available (#324)
Summary: Pull Request resolved: #324 Some models (transformer models) has ops like bmm and optimized library providers a better performance than portable. With optimized: https://www.internalfb.com/intern/aibench/details/125435623160736 (750 ms per iteration) With portable: https://www.internalfb.com/intern/aibench/details/521699054450309 (1200 ms per iteration) Reviewed By: mergennachin Differential Revision: D49240517 fbshipit-source-id: 7cbc9dfe9ddf7eeff28daa41a0965a74f913497d
1 parent a07832d commit 192da36

File tree

2 files changed

+33
-4
lines changed

2 files changed

+33
-4
lines changed

kernels/optimized/targets.bzl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ def define_common_targets():
3434
et_operator_library(
3535
name = "optimized_oplist",
3636
ops_schema_yaml_target = ":optimized.yaml",
37+
visibility = [
38+
"@EXECUTORCH_CLIENTS",
39+
],
3740
)
3841

3942
# Used mainly for operator testing. In practice, a generated lib specific

sdk/runners/targets.bzl

Lines changed: 30 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ load(
44
"CXX",
55
)
66
load("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime")
7+
load("@fbsource//xplat/executorch/codegen:codegen.bzl", "executorch_generated_lib")
78
load("@fbsource//xplat/executorch/extension/pybindings:pybindings.bzl", "MODELS_ATEN_OPS_ATEN_MODE_GENERATED_LIB", "MODELS_ATEN_OPS_LEAN_MODE_GENERATED_LIB")
89

910
def define_common_targets():
@@ -13,11 +14,34 @@ def define_common_targets():
1314
TARGETS and BUCK files that call this function.
1415
"""
1516

16-
# Test driver for models, uses all portable kernels.
17-
for aten_mode in (True, False):
17+
executorch_generated_lib(
18+
name = "generated_op_lib_for_runner",
19+
deps = [
20+
"//executorch/kernels/optimized:optimized_operators",
21+
"//executorch/kernels/optimized:optimized_oplist",
22+
"//executorch/kernels/portable:executorch_aten_ops",
23+
"//executorch/kernels/portable:executorch_custom_ops",
24+
"//executorch/kernels/portable:operators",
25+
],
26+
custom_ops_aten_kernel_deps = [
27+
"//executorch/kernels/portable:operators_aten",
28+
],
29+
functions_yaml_target = "//executorch/kernels/optimized:optimized.yaml",
30+
custom_ops_yaml_target = "//executorch/kernels/portable:custom_ops.yaml",
31+
fallback_yaml_target = "//executorch/kernels/portable:functions.yaml",
32+
define_static_targets = True,
33+
)
34+
35+
# Test driver for models, uses one of the following kernels:
36+
# (1) all portable kernels
37+
# (2) aten kernels
38+
# (3) optimized kernels, with portable kernels as fallback
39+
for kernel_mode in ["portable", "aten", "optimized"]:
40+
aten_mode = kernel_mode == "aten"
1841
aten_suffix = ("_aten" if aten_mode else "")
42+
binary_name = "executor_runner" if kernel_mode == "portable" else ("executor_runner_" + kernel_mode)
1943
runtime.cxx_binary(
20-
name = "executor_runner" + aten_suffix,
44+
name = binary_name,
2145
srcs = ["executor_runner.cpp"],
2246
deps = [
2347
"//executorch/runtime/executor/test:test_backend_compiler_lib" + aten_suffix,
@@ -31,7 +55,9 @@ def define_common_targets():
3155
] + (MODELS_ATEN_OPS_ATEN_MODE_GENERATED_LIB if aten_mode else [
3256
"//executorch/configurations:executor_cpu_optimized",
3357
"//executorch/kernels/quantized:generated_lib",
34-
] + MODELS_ATEN_OPS_LEAN_MODE_GENERATED_LIB),
58+
] + (MODELS_ATEN_OPS_LEAN_MODE_GENERATED_LIB if kernel_mode == "portable" else [
59+
":generated_op_lib_for_runner",
60+
])),
3561
preprocessor_flags = ["-DUSE_ATEN_LIB"] if aten_mode else [],
3662
external_deps = [
3763
"gflags",

0 commit comments

Comments
 (0)