1*523fa7a6SAndroid Build Coastguard Workerload("@fbsource//xplat/executorch/build:runtime_wrapper.bzl", "runtime") 2*523fa7a6SAndroid Build Coastguard Workerload("@fbsource//xplat/executorch/kernels/optimized:op_registration_util.bzl", "define_op_target", "is_op_disabled", "op_target") 3*523fa7a6SAndroid Build Coastguard Worker 4*523fa7a6SAndroid Build Coastguard Worker_OPTIMIZED_ATEN_OPS = ( 5*523fa7a6SAndroid Build Coastguard Worker op_target( 6*523fa7a6SAndroid Build Coastguard Worker name = "op_add", 7*523fa7a6SAndroid Build Coastguard Worker deps = [ 8*523fa7a6SAndroid Build Coastguard Worker ":binary_ops", 9*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu:scalar_utils", 10*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu/util:broadcast_util", 11*523fa7a6SAndroid Build Coastguard Worker ], 12*523fa7a6SAndroid Build Coastguard Worker ), 13*523fa7a6SAndroid Build Coastguard Worker op_target( 14*523fa7a6SAndroid Build Coastguard Worker name = "op_bmm", 15*523fa7a6SAndroid Build Coastguard Worker deps = [ 16*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/optimized:libblas", 17*523fa7a6SAndroid Build Coastguard Worker ], 18*523fa7a6SAndroid Build Coastguard Worker ), 19*523fa7a6SAndroid Build Coastguard Worker op_target( 20*523fa7a6SAndroid Build Coastguard Worker name = "op_div", 21*523fa7a6SAndroid Build Coastguard Worker deps = [ 22*523fa7a6SAndroid Build Coastguard Worker ":binary_ops", 23*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu:scalar_utils", 24*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu/util:broadcast_util", 25*523fa7a6SAndroid Build Coastguard Worker ], 26*523fa7a6SAndroid Build Coastguard Worker ), 27*523fa7a6SAndroid Build Coastguard Worker op_target(name = "op_exp"), 28*523fa7a6SAndroid Build Coastguard Worker op_target(name = "op_sigmoid"), 29*523fa7a6SAndroid Build Coastguard Worker op_target( 30*523fa7a6SAndroid Build Coastguard Worker name = "op_gelu", 31*523fa7a6SAndroid Build Coastguard Worker deps = select({ 32*523fa7a6SAndroid Build Coastguard Worker "DEFAULT": [], 33*523fa7a6SAndroid Build Coastguard Worker "ovr_config//cpu:arm64": [ 34*523fa7a6SAndroid Build Coastguard Worker "fbsource//third-party/sleef:sleef_arm", 35*523fa7a6SAndroid Build Coastguard Worker ], 36*523fa7a6SAndroid Build Coastguard Worker }), 37*523fa7a6SAndroid Build Coastguard Worker ), 38*523fa7a6SAndroid Build Coastguard Worker op_target( 39*523fa7a6SAndroid Build Coastguard Worker name = "op_le", 40*523fa7a6SAndroid Build Coastguard Worker deps = [ 41*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu:scalar_utils", 42*523fa7a6SAndroid Build Coastguard Worker ], 43*523fa7a6SAndroid Build Coastguard Worker ), 44*523fa7a6SAndroid Build Coastguard Worker op_target( 45*523fa7a6SAndroid Build Coastguard Worker name = "op_linear", 46*523fa7a6SAndroid Build Coastguard Worker deps = [ 47*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/optimized:libblas", 48*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu/util:matmul_ops_util", 49*523fa7a6SAndroid Build Coastguard Worker ], 50*523fa7a6SAndroid Build Coastguard Worker ), 51*523fa7a6SAndroid Build Coastguard Worker op_target( 52*523fa7a6SAndroid Build Coastguard Worker name = "op_log_softmax", 53*523fa7a6SAndroid Build Coastguard Worker deps = select({ 54*523fa7a6SAndroid Build Coastguard Worker "DEFAULT": [ 55*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu/util:activation_ops_util", 56*523fa7a6SAndroid Build Coastguard Worker ], 57*523fa7a6SAndroid Build Coastguard Worker "ovr_config//cpu:arm64": [ 58*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu/util:activation_ops_util", 59*523fa7a6SAndroid Build Coastguard Worker "fbsource//third-party/sleef:sleef_arm", 60*523fa7a6SAndroid Build Coastguard Worker ], 61*523fa7a6SAndroid Build Coastguard Worker }), 62*523fa7a6SAndroid Build Coastguard Worker ), 63*523fa7a6SAndroid Build Coastguard Worker op_target( 64*523fa7a6SAndroid Build Coastguard Worker name = "op_mm", 65*523fa7a6SAndroid Build Coastguard Worker deps = [ 66*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/optimized:libblas", 67*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu/util:matmul_ops_util", 68*523fa7a6SAndroid Build Coastguard Worker ], 69*523fa7a6SAndroid Build Coastguard Worker ), 70*523fa7a6SAndroid Build Coastguard Worker op_target( 71*523fa7a6SAndroid Build Coastguard Worker name = "op_mul", 72*523fa7a6SAndroid Build Coastguard Worker deps = [ 73*523fa7a6SAndroid Build Coastguard Worker ":binary_ops", 74*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu:scalar_utils", 75*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu/util:broadcast_util", 76*523fa7a6SAndroid Build Coastguard Worker "//executorch/runtime/core/exec_aten/util:tensor_util", 77*523fa7a6SAndroid Build Coastguard Worker ], 78*523fa7a6SAndroid Build Coastguard Worker ), 79*523fa7a6SAndroid Build Coastguard Worker op_target( 80*523fa7a6SAndroid Build Coastguard Worker name = "op_native_layer_norm", 81*523fa7a6SAndroid Build Coastguard Worker deps = [ 82*523fa7a6SAndroid Build Coastguard Worker ":moments_utils", 83*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu/util:normalization_ops_util", 84*523fa7a6SAndroid Build Coastguard Worker ], 85*523fa7a6SAndroid Build Coastguard Worker ), 86*523fa7a6SAndroid Build Coastguard Worker op_target(name = "op_neg"), 87*523fa7a6SAndroid Build Coastguard Worker op_target( 88*523fa7a6SAndroid Build Coastguard Worker name = "op_sub", 89*523fa7a6SAndroid Build Coastguard Worker deps = [ 90*523fa7a6SAndroid Build Coastguard Worker ":binary_ops", 91*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu:scalar_utils", 92*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/portable/cpu/util:broadcast_util", 93*523fa7a6SAndroid Build Coastguard Worker ], 94*523fa7a6SAndroid Build Coastguard Worker ), 95*523fa7a6SAndroid Build Coastguard Worker) 96*523fa7a6SAndroid Build Coastguard Worker 97*523fa7a6SAndroid Build Coastguard Workerdef define_common_targets(): 98*523fa7a6SAndroid Build Coastguard Worker """Defines targets that should be shared between fbcode and xplat. 99*523fa7a6SAndroid Build Coastguard Worker 100*523fa7a6SAndroid Build Coastguard Worker The directory containing this targets.bzl file should also contain both 101*523fa7a6SAndroid Build Coastguard Worker TARGETS and BUCK files that call this function. 102*523fa7a6SAndroid Build Coastguard Worker """ 103*523fa7a6SAndroid Build Coastguard Worker 104*523fa7a6SAndroid Build Coastguard Worker enabled_ops = [op for op in _OPTIMIZED_ATEN_OPS if not is_op_disabled(op["name"])] 105*523fa7a6SAndroid Build Coastguard Worker 106*523fa7a6SAndroid Build Coastguard Worker # Define build targets for all operators registered in the tables above. 107*523fa7a6SAndroid Build Coastguard Worker for op in enabled_ops: 108*523fa7a6SAndroid Build Coastguard Worker define_op_target(**op) 109*523fa7a6SAndroid Build Coastguard Worker 110*523fa7a6SAndroid Build Coastguard Worker aten_op_targets = [":{}".format(op["name"]) for op in enabled_ops] 111*523fa7a6SAndroid Build Coastguard Worker all_op_targets = aten_op_targets 112*523fa7a6SAndroid Build Coastguard Worker 113*523fa7a6SAndroid Build Coastguard Worker runtime.cxx_library( 114*523fa7a6SAndroid Build Coastguard Worker name = "binary_ops", 115*523fa7a6SAndroid Build Coastguard Worker exported_headers = ["binary_ops.h"], 116*523fa7a6SAndroid Build Coastguard Worker visibility = ["//executorch/kernels/optimized/cpu/..."], 117*523fa7a6SAndroid Build Coastguard Worker exported_deps = ["//executorch/runtime/core:core"], 118*523fa7a6SAndroid Build Coastguard Worker ) 119*523fa7a6SAndroid Build Coastguard Worker 120*523fa7a6SAndroid Build Coastguard Worker runtime.cxx_library( 121*523fa7a6SAndroid Build Coastguard Worker name = "cpu_optimized", 122*523fa7a6SAndroid Build Coastguard Worker srcs = [], 123*523fa7a6SAndroid Build Coastguard Worker visibility = ["//executorch/kernels/..."], 124*523fa7a6SAndroid Build Coastguard Worker exported_deps = all_op_targets, 125*523fa7a6SAndroid Build Coastguard Worker ) 126*523fa7a6SAndroid Build Coastguard Worker 127*523fa7a6SAndroid Build Coastguard Worker runtime.cxx_library( 128*523fa7a6SAndroid Build Coastguard Worker name = "moments_utils", 129*523fa7a6SAndroid Build Coastguard Worker srcs = [], 130*523fa7a6SAndroid Build Coastguard Worker exported_headers = ["moments_utils.h"], 131*523fa7a6SAndroid Build Coastguard Worker visibility = ["//executorch/kernels/optimized/..."], 132*523fa7a6SAndroid Build Coastguard Worker exported_deps = [ 133*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/optimized:libvec", 134*523fa7a6SAndroid Build Coastguard Worker "//executorch/kernels/optimized:libutils", 135*523fa7a6SAndroid Build Coastguard Worker ], 136*523fa7a6SAndroid Build Coastguard Worker ) 137