From 7ea314f0eb3123cae7d1b4740ed3cf6bb94c1e6b Mon Sep 17 00:00:00 2001 From: cyy Date: Tue, 14 Jul 2026 08:28:49 +0800 Subject: [PATCH 1/4] Remove redundant shim includes and std type aliases --- .../fusion_g3/operators/op_dequantize.cpp | 6 ++-- extension/llm/custom_ops/op_sdpa.h | 28 +++++++++---------- extension/llm/custom_ops/op_update_cache.cpp | 4 +-- kernels/optimized/cpu/op_gelu.cpp | 5 ++-- kernels/optimized/cpu/op_linear.cpp | 2 +- .../optimized/cpu/op_native_layer_norm.cpp | 4 +-- kernels/portable/cpu/op_any.cpp | 2 +- kernels/portable/cpu/op_as_strided_copy.cpp | 2 +- kernels/portable/cpu/op_cumsum.cpp | 2 +- kernels/portable/cpu/op_full_like.cpp | 2 +- kernels/portable/cpu/op_gelu.cpp | 3 +- kernels/portable/cpu/op_mean.cpp | 6 ++-- kernels/portable/cpu/op_native_group_norm.cpp | 4 +-- kernels/portable/cpu/op_native_layer_norm.cpp | 4 +-- kernels/portable/cpu/op_prod.cpp | 4 +-- kernels/portable/cpu/op_sum.cpp | 4 +-- kernels/portable/cpu/op_var.cpp | 8 +++--- kernels/portable/cpu/op_var_mean.cpp | 6 ++-- kernels/portable/cpu/util/copy_ops_util.cpp | 2 +- kernels/portable/cpu/util/copy_ops_util.h | 2 +- kernels/portable/cpu/util/distance_util.cpp | 2 +- kernels/portable/cpu/util/distance_util.h | 2 +- kernels/portable/cpu/util/kernel_ops_util.cpp | 2 +- kernels/portable/cpu/util/kernel_ops_util.h | 2 +- kernels/portable/cpu/util/reduce_util.cpp | 16 +++++------ kernels/portable/cpu/util/reduce_util.h | 16 +++++------ runtime/core/exec_aten/exec_aten.h | 5 ---- .../core/exec_aten/util/scalar_type_util.h | 2 -- 28 files changed, 68 insertions(+), 79 deletions(-) diff --git a/backends/cadence/fusion_g3/operators/op_dequantize.cpp b/backends/cadence/fusion_g3/operators/op_dequantize.cpp index 821df71d994..55ac2afa906 100644 --- a/backends/cadence/fusion_g3/operators/op_dequantize.cpp +++ b/backends/cadence/fusion_g3/operators/op_dequantize.cpp @@ -23,8 +23,6 @@ using ::executorch::aten::Tensor; using ::executorch::runtime::Error; using ::executorch::runtime::KernelRuntimeContext; -template -using optional = std::optional; /* ScalarType in Executorch do not have support for below data types. * So, creating a placeholder for these data types. Once, ScalarTypes is * updated to have support for below data types, these can be removed and @@ -296,7 +294,7 @@ Tensor& dequantize_impl( const auto* input_data_ptr = input.const_data_ptr(); \ ET_CHECK_MSG( \ *axis == 0, "Axis must be 0 for a single dimensional tensors"); \ - const optional dim; \ + const std::optional dim; \ torch::executor::apply_over_dim( \ [input_data_ptr, out_data_ptr, zero_point_data, scale_data]( \ size_t numel, size_t stride, size_t base_ix) { \ @@ -502,7 +500,7 @@ Tensor& dequantize_impl( const auto* input_data_ptr = input.const_data_ptr(); \ ET_CHECK_MSG( \ *axis == 0, "Axis must be 0 for a single dimensional tensors"); \ - const optional dim; \ + const std::optional dim; \ torch::executor::apply_over_dim( \ [input_data_ptr, out_data_ptr, zero_point_data, scale_data]( \ size_t numel, size_t stride, size_t base_ix) { \ diff --git a/extension/llm/custom_ops/op_sdpa.h b/extension/llm/custom_ops/op_sdpa.h index 9d357eb6ea1..915126359fa 100644 --- a/extension/llm/custom_ops/op_sdpa.h +++ b/extension/llm/custom_ops/op_sdpa.h @@ -24,11 +24,11 @@ Tensor& sdpa_with_kv_cache_out( Tensor& value_cache, const int64_t start_pos, const int64_t seq_len, - const optional& attn_mask, + const std::optional& attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, + const std::optional scale, Tensor& output); Tensor& custom_sdpa_out( @@ -37,11 +37,11 @@ Tensor& custom_sdpa_out( const Tensor& k, const Tensor& v, const int64_t start_pos, - const optional& attn_mask, + const std::optional& attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, + const std::optional scale, Tensor& output); Tensor& flash_attention_kernel_out( @@ -49,11 +49,11 @@ Tensor& flash_attention_kernel_out( const Tensor& query, const Tensor& key, const Tensor& value, - const optional& attn_mask, + const std::optional& attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, + const std::optional scale, Tensor& output); Tensor& custom_quantized_sdpa_out( @@ -62,17 +62,17 @@ Tensor& custom_quantized_sdpa_out( const Tensor& k, const Tensor& v, const int64_t start_pos, - const optional& attn_mask, + const std::optional& attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, - const optional& q_zero_points, - const optional& q_scales, - const optional& k_zero_points, - const optional& k_scales, - const optional& v_zero_points, - const optional& v_scales, + const std::optional scale, + const std::optional& q_zero_points, + const std::optional& q_scales, + const std::optional& k_zero_points, + const std::optional& k_scales, + const std::optional& v_zero_points, + const std::optional& v_scales, const bool is_seq_at_dim_1, Tensor& output); } // namespace native diff --git a/extension/llm/custom_ops/op_update_cache.cpp b/extension/llm/custom_ops/op_update_cache.cpp index 7ab994deb5f..215cb276a28 100644 --- a/extension/llm/custom_ops/op_update_cache.cpp +++ b/extension/llm/custom_ops/op_update_cache.cpp @@ -26,7 +26,7 @@ bool validate_cache_params( const Tensor& quantized_cache, int64_t start_pos, int64_t seq_length, - const optional& indices = nullopt) { + const std::optional& indices = std::nullopt) { ET_CHECK_OR_RETURN_FALSE( quantized_cache.dim() == 4, "quantized cache must be a 4D tensor"); @@ -94,7 +94,7 @@ Tensor& update_cache_impl( Tensor& cache, const int64_t start_pos, Tensor& output, - const optional& indices = nullopt) { + const std::optional& indices = std::nullopt) { (void)ctx; ET_CHECK_MSG( diff --git a/kernels/optimized/cpu/op_gelu.cpp b/kernels/optimized/cpu/op_gelu.cpp index a36d3c259c6..2649c50424b 100644 --- a/kernels/optimized/cpu/op_gelu.cpp +++ b/kernels/optimized/cpu/op_gelu.cpp @@ -23,7 +23,6 @@ namespace native { using Tensor = executorch::aten::Tensor; using ScalarType = executorch::aten::ScalarType; -using string_view = std::string_view; namespace { @@ -41,7 +40,7 @@ template void gelu( executorch::runtime::KernelRuntimeContext& context, const Tensor& input, - string_view approximate, + std::string_view approximate, Tensor& output) { const CTYPE* in_data = input.const_data_ptr(); CTYPE* out_data = output.mutable_data_ptr(); @@ -91,7 +90,7 @@ void gelu( Tensor& opt_gelu_out( KernelRuntimeContext& context, const Tensor& input, - string_view approximate, + std::string_view approximate, Tensor& out) { (void)context; ET_KERNEL_CHECK( diff --git a/kernels/optimized/cpu/op_linear.cpp b/kernels/optimized/cpu/op_linear.cpp index b855665475b..8ccdc31f92c 100644 --- a/kernels/optimized/cpu/op_linear.cpp +++ b/kernels/optimized/cpu/op_linear.cpp @@ -74,7 +74,7 @@ Tensor& opt_linear_out( RuntimeContext& ctx, const Tensor& in, const Tensor& mat2, - const optional& bias, + const std::optional& bias, Tensor& out) { ET_KERNEL_CHECK(ctx, check_linear_args(in, mat2, out), InvalidArgument, out); diff --git a/kernels/optimized/cpu/op_native_layer_norm.cpp b/kernels/optimized/cpu/op_native_layer_norm.cpp index 5fac9faf25e..eecf1317610 100644 --- a/kernels/optimized/cpu/op_native_layer_norm.cpp +++ b/kernels/optimized/cpu/op_native_layer_norm.cpp @@ -27,8 +27,8 @@ template void layer_norm( const Tensor& input, IntArrayRef normalized_shape, - const optional& weight, - const optional& bias, + const std::optional& weight, + const std::optional& bias, CTYPE eps, Tensor& out, Tensor& mean, diff --git a/kernels/portable/cpu/op_any.cpp b/kernels/portable/cpu/op_any.cpp index 0f3a36b6ba7..1acf484d3f0 100644 --- a/kernels/portable/cpu/op_any.cpp +++ b/kernels/portable/cpu/op_any.cpp @@ -54,7 +54,7 @@ Tensor& any_all_out(KernelRuntimeContext& ctx, const Tensor& in, Tensor& out) { Tensor& any_dims_out( KernelRuntimeContext& ctx, const Tensor& in, - optional> dim_list, + std::optional> dim_list, bool keepdim, Tensor& out) { (void)ctx; diff --git a/kernels/portable/cpu/op_as_strided_copy.cpp b/kernels/portable/cpu/op_as_strided_copy.cpp index 060e3cf0761..556813b5fef 100644 --- a/kernels/portable/cpu/op_as_strided_copy.cpp +++ b/kernels/portable/cpu/op_as_strided_copy.cpp @@ -21,7 +21,7 @@ Tensor& as_strided_copy_out( const Tensor& in, ArrayRef size, ArrayRef stride, - optional storage_offset, + std::optional storage_offset, Tensor& out) { (void)ctx; diff --git a/kernels/portable/cpu/op_cumsum.cpp b/kernels/portable/cpu/op_cumsum.cpp index 3a518d30715..e6374d7d66d 100644 --- a/kernels/portable/cpu/op_cumsum.cpp +++ b/kernels/portable/cpu/op_cumsum.cpp @@ -90,7 +90,7 @@ Tensor& cumsum_out( KernelRuntimeContext& ctx, const Tensor& self, int64_t dim, - optional enforced_dtype, + std::optional enforced_dtype, Tensor& out) { (void)ctx; diff --git a/kernels/portable/cpu/op_full_like.cpp b/kernels/portable/cpu/op_full_like.cpp index 5fefd53c30b..32b4d720d53 100644 --- a/kernels/portable/cpu/op_full_like.cpp +++ b/kernels/portable/cpu/op_full_like.cpp @@ -21,7 +21,7 @@ Tensor& full_like_out( KernelRuntimeContext& ctx, const Tensor& in, const Scalar& fill_value, - optional memory_format, + std::optional memory_format, Tensor& out) { (void)ctx; diff --git a/kernels/portable/cpu/op_gelu.cpp b/kernels/portable/cpu/op_gelu.cpp index 0489d3d12b4..8daec086dde 100644 --- a/kernels/portable/cpu/op_gelu.cpp +++ b/kernels/portable/cpu/op_gelu.cpp @@ -19,12 +19,11 @@ namespace native { using Tensor = executorch::aten::Tensor; using ScalarType = executorch::aten::ScalarType; -using string_view = std::string_view; Tensor& gelu_out( KernelRuntimeContext& ctx, const Tensor& in, - string_view approximate, + std::string_view approximate, Tensor& out) { (void)ctx; diff --git a/kernels/portable/cpu/op_mean.cpp b/kernels/portable/cpu/op_mean.cpp index 9d905753250..bd8733e4229 100644 --- a/kernels/portable/cpu/op_mean.cpp +++ b/kernels/portable/cpu/op_mean.cpp @@ -24,9 +24,9 @@ using ScalarType = executorch::aten::ScalarType; Tensor& mean_dim_out( KernelRuntimeContext& ctx, const Tensor& in, - optional> dim_list, + std::optional> dim_list, bool keepdim, - optional dtype, + std::optional dtype, Tensor& out) { (void)ctx; @@ -123,7 +123,7 @@ Tensor& mean_dim_out( Tensor& mean_dtype_out( KernelRuntimeContext& ctx, const Tensor& in, - optional dtype, + std::optional dtype, Tensor& out) { return mean_dim_out(ctx, in, ArrayRef(), false, dtype, out); } diff --git a/kernels/portable/cpu/op_native_group_norm.cpp b/kernels/portable/cpu/op_native_group_norm.cpp index 7a2b40cba1a..7ec411f1355 100644 --- a/kernels/portable/cpu/op_native_group_norm.cpp +++ b/kernels/portable/cpu/op_native_group_norm.cpp @@ -24,8 +24,8 @@ namespace { template void group_norm( const Tensor& input, - const optional& weight, - const optional& bias, + const std::optional& weight, + const std::optional& bias, int64_t sN, int64_t sC, int64_t sHxW, diff --git a/kernels/portable/cpu/op_native_layer_norm.cpp b/kernels/portable/cpu/op_native_layer_norm.cpp index b35796f3328..1e0ee3b82e0 100644 --- a/kernels/portable/cpu/op_native_layer_norm.cpp +++ b/kernels/portable/cpu/op_native_layer_norm.cpp @@ -24,8 +24,8 @@ template void layer_norm( const Tensor& input, IntArrayRef normalized_shape, - const optional& weight, - const optional& bias, + const std::optional& weight, + const std::optional& bias, CTYPE eps, Tensor& out, Tensor& mean, diff --git a/kernels/portable/cpu/op_prod.cpp b/kernels/portable/cpu/op_prod.cpp index ba76a1f200c..e195d3c6504 100644 --- a/kernels/portable/cpu/op_prod.cpp +++ b/kernels/portable/cpu/op_prod.cpp @@ -20,7 +20,7 @@ using ScalarType = executorch::aten::ScalarType; Tensor& prod_out( KernelRuntimeContext& ctx, const Tensor& in, - optional dtype, + std::optional dtype, Tensor& out) { (void)ctx; @@ -53,7 +53,7 @@ Tensor& prod_int_out( const Tensor& in, int64_t dim, bool keepdim, - optional dtype, + std::optional dtype, Tensor& out) { (void)ctx; diff --git a/kernels/portable/cpu/op_sum.cpp b/kernels/portable/cpu/op_sum.cpp index 194d909a9e3..a6a1c417933 100644 --- a/kernels/portable/cpu/op_sum.cpp +++ b/kernels/portable/cpu/op_sum.cpp @@ -25,9 +25,9 @@ using ScalarType = executorch::aten::ScalarType; Tensor& sum_dim_out( KernelRuntimeContext& ctx, const Tensor& in, - optional> dim_list, + std::optional> dim_list, bool keepdim, - optional dtype, + std::optional dtype, Tensor& out) { (void)ctx; diff --git a/kernels/portable/cpu/op_var.cpp b/kernels/portable/cpu/op_var.cpp index 202d7df80bc..3901fdd8376 100644 --- a/kernels/portable/cpu/op_var.cpp +++ b/kernels/portable/cpu/op_var.cpp @@ -24,7 +24,7 @@ void compute_variance( KernelRuntimeContext& ctx, const Tensor& in, Tensor& out, - optional> dim_list, + std::optional> dim_list, const size_t num, const double denominator) { CTYPE_OUT* out_data = out.mutable_data_ptr(); @@ -62,7 +62,7 @@ void compute_variance( Tensor& var_out( KernelRuntimeContext& ctx, const Tensor& in, - optional> dim_list, + std::optional> dim_list, bool unbiased, bool keepdim, Tensor& out) { @@ -105,8 +105,8 @@ Tensor& var_out( Tensor& var_correction_out( KernelRuntimeContext& ctx, const Tensor& in, - optional> dim_list, - const optional& correction, + std::optional> dim_list, + const std::optional& correction, bool keepdim, Tensor& out) { (void)ctx; diff --git a/kernels/portable/cpu/op_var_mean.cpp b/kernels/portable/cpu/op_var_mean.cpp index dbb88f2f32d..9f285f8f4b0 100644 --- a/kernels/portable/cpu/op_var_mean.cpp +++ b/kernels/portable/cpu/op_var_mean.cpp @@ -24,7 +24,7 @@ void compute_var_mean( const Tensor& in, Tensor& var_out, Tensor& mean_out, - optional> dim_list, + std::optional> dim_list, const size_t num, const double denominator) { CTYPE_OUT* var_data = var_out.mutable_data_ptr(); @@ -102,8 +102,8 @@ void compute_var_mean( std::tuple var_mean_correction_out( KernelRuntimeContext& ctx, const Tensor& in, - optional> dim_list, - const optional& correction, + std::optional> dim_list, + const std::optional& correction, bool keepdim, Tensor& out0, Tensor& out1) { diff --git a/kernels/portable/cpu/util/copy_ops_util.cpp b/kernels/portable/cpu/util/copy_ops_util.cpp index 16c0a32c62b..b1eb1760fbd 100644 --- a/kernels/portable/cpu/util/copy_ops_util.cpp +++ b/kernels/portable/cpu/util/copy_ops_util.cpp @@ -43,7 +43,7 @@ bool check_as_strided_copy_args( const Tensor& in, ArrayRef size, ArrayRef stride, - optional storage_offset, + std::optional storage_offset, Tensor& out) { ET_LOG_AND_RETURN_IF_FALSE(tensors_have_same_dtype(in, out)); ET_CHECK_OR_RETURN_FALSE( diff --git a/kernels/portable/cpu/util/copy_ops_util.h b/kernels/portable/cpu/util/copy_ops_util.h index af2e8c83cad..68f3309b044 100644 --- a/kernels/portable/cpu/util/copy_ops_util.h +++ b/kernels/portable/cpu/util/copy_ops_util.h @@ -58,7 +58,7 @@ bool check_as_strided_copy_args( const Tensor& in, ArrayRef size, ArrayRef stride, - optional storage_offset, + std::optional storage_offset, Tensor& out); template diff --git a/kernels/portable/cpu/util/distance_util.cpp b/kernels/portable/cpu/util/distance_util.cpp index e7f146e2e9d..a3cf4cf318e 100644 --- a/kernels/portable/cpu/util/distance_util.cpp +++ b/kernels/portable/cpu/util/distance_util.cpp @@ -32,7 +32,7 @@ bool check_cdist_args( const Tensor& x1, const Tensor& x2, double p, - optional compute_mode, + std::optional compute_mode, const Tensor& out) { ET_LOG_AND_RETURN_IF_FALSE(tensors_have_same_dtype(x1, x2)); ET_LOG_AND_RETURN_IF_FALSE(tensors_have_same_dtype(x1, out)); diff --git a/kernels/portable/cpu/util/distance_util.h b/kernels/portable/cpu/util/distance_util.h index a54e02dab28..32f9d91a290 100644 --- a/kernels/portable/cpu/util/distance_util.h +++ b/kernels/portable/cpu/util/distance_util.h @@ -127,7 +127,7 @@ bool check_cdist_args( const Tensor& x1, const Tensor& x2, double p, - optional compute_mode, + std::optional compute_mode, const Tensor& out); } // namespace executor diff --git a/kernels/portable/cpu/util/kernel_ops_util.cpp b/kernels/portable/cpu/util/kernel_ops_util.cpp index 2e0ceee07e5..484d7e74fd4 100644 --- a/kernels/portable/cpu/util/kernel_ops_util.cpp +++ b/kernels/portable/cpu/util/kernel_ops_util.cpp @@ -507,7 +507,7 @@ void get_convolution_out_target_size( bool check_cumsum_args( const Tensor& in, int64_t dim, - optional dtype, + std::optional dtype, Tensor& out) { ET_LOG_AND_RETURN_IF_FALSE(dim_is_valid(dim, in.dim())); diff --git a/kernels/portable/cpu/util/kernel_ops_util.h b/kernels/portable/cpu/util/kernel_ops_util.h index db6ce070542..a6f95d0899e 100644 --- a/kernels/portable/cpu/util/kernel_ops_util.h +++ b/kernels/portable/cpu/util/kernel_ops_util.h @@ -445,7 +445,7 @@ void get_convolution_out_target_size( bool check_cumsum_args( const Tensor& self, int64_t dim, - optional enforced_dtype, + std::optional enforced_dtype, Tensor& out); bool check_max_pool2d_with_indices_args( diff --git a/kernels/portable/cpu/util/reduce_util.cpp b/kernels/portable/cpu/util/reduce_util.cpp index afeb56f719f..d622e758a4e 100644 --- a/kernels/portable/cpu/util/reduce_util.cpp +++ b/kernels/portable/cpu/util/reduce_util.cpp @@ -319,9 +319,9 @@ Error resize_reduction_out( */ bool check_reduction_args( const Tensor& in, - const optional>& dim_list, + const std::optional>& dim_list, bool keepdim, - optional dtype, + std::optional dtype, Tensor& out) { if (dtype.has_value()) { ET_LOG_AND_RETURN_IF_FALSE(dtype.value() == out.scalar_type()); @@ -339,9 +339,9 @@ bool check_reduction_args( */ bool check_reduction_args_single_dim( const Tensor& in, - optional dim, + std::optional dim, bool keepdim, - optional dtype, + std::optional dtype, Tensor& out, bool allow_empty_dim) { if (dtype.has_value()) { @@ -369,9 +369,9 @@ bool check_reduction_args_single_dim( bool check_mean_dim_args( const Tensor& in, - optional> dim_list, + std::optional> dim_list, bool keepdim, - optional dtype, + std::optional dtype, Tensor& out) { ET_LOG_AND_RETURN_IF_FALSE( check_reduction_args(in, dim_list, keepdim, dtype, out)); @@ -402,7 +402,7 @@ bool check_amin_amax_args( bool check_argmin_argmax_args( const Tensor& in, - optional dim, + std::optional dim, bool keepdim, Tensor& out) { ET_LOG_AND_RETURN_IF_FALSE( @@ -432,7 +432,7 @@ bool check_min_max_args( bool check_prod_out_args( const Tensor& in, - optional dtype, + std::optional dtype, Tensor& out) { if (dtype.has_value()) { ET_LOG_AND_RETURN_IF_FALSE(dtype.value() == out.scalar_type()); diff --git a/kernels/portable/cpu/util/reduce_util.h b/kernels/portable/cpu/util/reduce_util.h index f800fb6f736..bf61b0d9090 100644 --- a/kernels/portable/cpu/util/reduce_util.h +++ b/kernels/portable/cpu/util/reduce_util.h @@ -755,24 +755,24 @@ inline Error resize_reduction_out( #ifndef USE_ATEN_LIB bool check_reduction_args( const Tensor& in, - const optional>& dim_list, + const std::optional>& dim_list, bool keepdim, - optional dtype, + std::optional dtype, Tensor& out); bool check_reduction_args_single_dim( const Tensor& in, - optional dim, + std::optional dim, bool keepdim, - optional dtype, + std::optional dtype, Tensor& out, bool allow_empty_dim = false); bool check_mean_dim_args( const Tensor& in, - optional> dim_list, + std::optional> dim_list, bool keepdim, - optional dtype, + std::optional dtype, Tensor& out); bool check_amin_amax_args( @@ -783,7 +783,7 @@ bool check_amin_amax_args( bool check_argmin_argmax_args( const Tensor& in, - optional dim, + std::optional dim, bool keepdim, Tensor& out); @@ -796,7 +796,7 @@ bool check_min_max_args( bool check_prod_out_args( const Tensor& in, - optional dtype, + std::optional dtype, Tensor& out); #endif diff --git a/runtime/core/exec_aten/exec_aten.h b/runtime/core/exec_aten/exec_aten.h index ac4fb9a126e..b81c10d2247 100644 --- a/runtime/core/exec_aten/exec_aten.h +++ b/runtime/core/exec_aten/exec_aten.h @@ -14,7 +14,6 @@ #include // @manual #include // @manual #include // @manual -#include // @manual #include #ifdef USE_ATEN_LIB #include // @manual @@ -27,7 +26,6 @@ #include // @manual #include // @manual #include // @manual -#include // @manual #include // @manual #include // @manual #include // @manual @@ -35,7 +33,6 @@ #include // @manual #include // @manual #include // @manual -#include // @manual #include #else // use executor #include // @manual @@ -44,11 +41,9 @@ #include // @manual #include // @manual #include // @manual -#include // @manual #include // @manual #include // @manual #include // @manual -#include // @manual #include // @manual #include // @manual diff --git a/runtime/core/exec_aten/util/scalar_type_util.h b/runtime/core/exec_aten/util/scalar_type_util.h index 3e8e36b442e..9c4d9c83b9e 100644 --- a/runtime/core/exec_aten/util/scalar_type_util.h +++ b/runtime/core/exec_aten/util/scalar_type_util.h @@ -47,11 +47,9 @@ using ScalarType = at::ScalarType; } // namespace executorch #else // !USE_ATEN_LIB #include -#include namespace executorch { namespace aten { using ScalarType = torch::executor::ScalarType; -using string_view = std::string_view; } // namespace aten } // namespace executorch #endif // USE_ATEN_LIB From 31d5596b7764268839ecf67fe2c9116f3e1439e6 Mon Sep 17 00:00:00 2001 From: cyy Date: Fri, 17 Jul 2026 08:20:58 +0800 Subject: [PATCH 2/4] Keep string_view.h include for codegen'd torch::executor::string_view --- runtime/core/exec_aten/exec_aten.h | 1 + 1 file changed, 1 insertion(+) diff --git a/runtime/core/exec_aten/exec_aten.h b/runtime/core/exec_aten/exec_aten.h index b81c10d2247..a7a64d74f3a 100644 --- a/runtime/core/exec_aten/exec_aten.h +++ b/runtime/core/exec_aten/exec_aten.h @@ -44,6 +44,7 @@ #include // @manual #include // @manual #include // @manual +#include // @manual #include // @manual #include // @manual From 35c1c70a2be8d6a58dd9d6eab9fb0aaad1c35212 Mon Sep 17 00:00:00 2001 From: cyy Date: Fri, 17 Jul 2026 08:42:22 +0800 Subject: [PATCH 3/4] Restore executorch::aten::string_view as ET_DEPRECATED, include directly --- backends/cadence/fusion_g3/operators/op_dequantize.cpp | 1 + runtime/core/exec_aten/util/scalar_type_util.h | 2 ++ 2 files changed, 3 insertions(+) diff --git a/backends/cadence/fusion_g3/operators/op_dequantize.cpp b/backends/cadence/fusion_g3/operators/op_dequantize.cpp index 55ac2afa906..993ce07f42a 100644 --- a/backends/cadence/fusion_g3/operators/op_dequantize.cpp +++ b/backends/cadence/fusion_g3/operators/op_dequantize.cpp @@ -11,6 +11,7 @@ #include #include #include +#include #include diff --git a/runtime/core/exec_aten/util/scalar_type_util.h b/runtime/core/exec_aten/util/scalar_type_util.h index 9c4d9c83b9e..7a18d94bacc 100644 --- a/runtime/core/exec_aten/util/scalar_type_util.h +++ b/runtime/core/exec_aten/util/scalar_type_util.h @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -50,6 +51,7 @@ using ScalarType = at::ScalarType; namespace executorch { namespace aten { using ScalarType = torch::executor::ScalarType; +using string_view ET_DEPRECATED = std::string_view; } // namespace aten } // namespace executorch #endif // USE_ATEN_LIB From fb93bdfdd55871a27d62fa42cbe2789738a3912b Mon Sep 17 00:00:00 2001 From: cyy Date: Sat, 18 Jul 2026 16:15:29 +0800 Subject: [PATCH 4/4] Restore optional.h include for codegen'd code, use std::optional in sdpa ops --- extension/llm/custom_ops/op_sdpa.cpp | 82 ++++++++++++------------ extension/llm/custom_ops/op_sdpa_aot.cpp | 48 +++++++------- extension/llm/custom_ops/op_sdpa_impl.h | 16 ++--- runtime/core/exec_aten/exec_aten.h | 1 + 4 files changed, 74 insertions(+), 73 deletions(-) diff --git a/extension/llm/custom_ops/op_sdpa.cpp b/extension/llm/custom_ops/op_sdpa.cpp index 500101076c2..6e37cb36e6a 100644 --- a/extension/llm/custom_ops/op_sdpa.cpp +++ b/extension/llm/custom_ops/op_sdpa.cpp @@ -33,7 +33,7 @@ bool validate_flash_attention_args( const Tensor& query, const Tensor& key, const Tensor& value, - const optional& attn_mask) { + const std::optional& attn_mask) { ET_CHECK_OR_RETURN_FALSE(query.dim() == 4, "query must be a 4D tensor"); ET_CHECK_OR_RETURN_FALSE(key.dim() == 4, "key must be a 4D tensor"); ET_CHECK_OR_RETURN_FALSE(value.dim() == 4, "value must be a 4D tensor"); @@ -247,11 +247,11 @@ Tensor& flash_attention_kernel_out( const Tensor& query, const Tensor& key, const Tensor& value, - const optional& attn_mask, + const std::optional& attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, + const std::optional scale, Tensor& output) { (void)ctx; ET_KERNEL_CHECK( @@ -284,12 +284,12 @@ Tensor& flash_attention_kernel_out( is_causal, attn_mask, scale, - nullopt, - nullopt, - nullopt, - nullopt, - nullopt, - nullopt); + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt); } else if (seq_len >= 192) { sdpa::impl::cpu_flash_attention( ctx, @@ -301,12 +301,12 @@ Tensor& flash_attention_kernel_out( is_causal, attn_mask, scale, - nullopt, - nullopt, - nullopt, - nullopt, - nullopt, - nullopt); + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt); } else { sdpa::impl::cpu_flash_attention( ctx, @@ -318,12 +318,12 @@ Tensor& flash_attention_kernel_out( is_causal, attn_mask, scale, - nullopt, - nullopt, - nullopt, - nullopt, - nullopt, - nullopt); + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt, + std::nullopt); } }); return output; @@ -335,18 +335,18 @@ Tensor& custom_sdpa_out_impl( const Tensor& k, const Tensor& v, const int64_t start_pos, - const optional& attn_mask, + const std::optional& attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, + const std::optional scale, Tensor& output, - const optional& q_zero_points = nullopt, - const optional& q_scales = nullopt, - const optional& k_zero_points = nullopt, - const optional& k_scales = nullopt, - const optional& v_zero_points = nullopt, - const optional& v_scales = nullopt, + const std::optional& q_zero_points = std::nullopt, + const std::optional& q_scales = std::nullopt, + const std::optional& k_zero_points = std::nullopt, + const std::optional& k_scales = std::nullopt, + const std::optional& v_zero_points = std::nullopt, + const std::optional& v_scales = std::nullopt, bool is_seq_at_dim_2 = false) { ET_KERNEL_CHECK_MSG( ctx, @@ -492,17 +492,17 @@ Tensor& custom_quantized_sdpa_out( const Tensor& k, const Tensor& v, const int64_t start_pos, - const optional& attn_mask, + const std::optional& attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, - const optional& q_zero_points, - const optional& q_scales, - const optional& k_zero_points, - const optional& k_scales, - const optional& v_zero_points, - const optional& v_scales, + const std::optional scale, + const std::optional& q_zero_points, + const std::optional& q_scales, + const std::optional& k_zero_points, + const std::optional& k_scales, + const std::optional& v_zero_points, + const std::optional& v_scales, const bool is_seq_at_dim_2, Tensor& output) { return custom_sdpa_out_impl( @@ -546,11 +546,11 @@ Tensor& custom_sdpa_out( const Tensor& k, const Tensor& v, const int64_t start_pos, - const optional& attn_mask, + const std::optional& attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, + const std::optional scale, Tensor& output) { return custom_sdpa_out_impl( ctx, q, k, v, start_pos, attn_mask, dropout_p, is_causal, scale, output); @@ -580,11 +580,11 @@ Tensor& sdpa_with_kv_cache_out( Tensor& value_cache, const int64_t start_pos, const int64_t seq_len, - const optional& attn_mask, + const std::optional& attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, + const std::optional scale, Tensor& output) { (void)ctx; ET_KERNEL_CHECK( diff --git a/extension/llm/custom_ops/op_sdpa_aot.cpp b/extension/llm/custom_ops/op_sdpa_aot.cpp index 5bbf22d336e..8e3afcfc5a2 100644 --- a/extension/llm/custom_ops/op_sdpa_aot.cpp +++ b/extension/llm/custom_ops/op_sdpa_aot.cpp @@ -27,11 +27,11 @@ Tensor& sdpa_with_kv_cache_out_no_context( const int64_t seq_len, // @lint-ignore CLANGTIDY facebook-hte-ConstantArgumentPassByValue // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional attn_mask, + const std::optional attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, + const std::optional scale, Tensor& output); at::Tensor sdpa_with_kv_cache_aten( @@ -57,11 +57,11 @@ Tensor& custom_sdpa_out_no_context( const int64_t start_pos, // @lint-ignore CLANGTIDY facebook-hte-ConstantArgumentPassByValue // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional attn_mask, + const std::optional attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, + const std::optional scale, Tensor& output); at::Tensor custom_sdpa_aten( @@ -84,17 +84,17 @@ Tensor& custom_quantized_sdpa_out_no_context( const int64_t start_pos, // @lint-ignore CLANGTIDY facebook-hte-ConstantArgumentPassByValue // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional attn_mask, + const std::optional attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, - const optional q_zero_points, - const optional q_scales, - const optional k_zero_points, - const optional k_scales, - const optional v_zero_points, - const optional v_scales, + const std::optional scale, + const std::optional q_zero_points, + const std::optional q_scales, + const std::optional k_zero_points, + const std::optional k_scales, + const std::optional v_zero_points, + const std::optional v_scales, const bool is_seq_at_dim_2, Tensor& output); @@ -153,11 +153,11 @@ Tensor& sdpa_with_kv_cache_out_no_context( const int64_t seq_len, // @lint-ignore CLANGTIDY facebook-hte-ConstantArgumentPassByValue // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional attn_mask, + const std::optional attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, + const std::optional scale, Tensor& output) { executorch::runtime::KernelRuntimeContext context{}; return torch::executor::native::sdpa_with_kv_cache_out( @@ -215,11 +215,11 @@ Tensor& custom_sdpa_out_no_context( const int64_t start_pos, // @lint-ignore CLANGTIDY facebook-hte-ConstantArgumentPassByValue // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional attn_mask, + const std::optional attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, + const std::optional scale, Tensor& output) { executorch::aten::RuntimeContext context{}; return torch::executor::native::custom_sdpa_out( @@ -260,17 +260,17 @@ Tensor& custom_quantized_sdpa_out_no_context( const int64_t start_pos, // @lint-ignore CLANGTIDY facebook-hte-ConstantArgumentPassByValue // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional attn_mask, + const std::optional attn_mask, const double dropout_p, const bool is_causal, // @lint-ignore CLANGTIDY facebook-hte-ParameterMightThrowOnCopy - const optional scale, - const optional q_zero_points, - const optional q_scales, - const optional k_zero_points, - const optional k_scales, - const optional v_zero_points, - const optional v_scales, + const std::optional scale, + const std::optional q_zero_points, + const std::optional q_scales, + const std::optional k_zero_points, + const std::optional k_scales, + const std::optional v_zero_points, + const std::optional v_scales, const bool is_seq_at_dim_2, Tensor& output) { executorch::aten::RuntimeContext context{}; diff --git a/extension/llm/custom_ops/op_sdpa_impl.h b/extension/llm/custom_ops/op_sdpa_impl.h index 9c479569505..90750bfc114 100644 --- a/extension/llm/custom_ops/op_sdpa_impl.h +++ b/extension/llm/custom_ops/op_sdpa_impl.h @@ -613,14 +613,14 @@ void cpu_flash_attention( const Tensor& value, double dropout_p, bool is_causal, - const optional& attn_mask, - const optional& scale, - const optional& q_zero_points, - const optional& q_scales, - const optional& k_zero_points, - const optional& k_scales, - const optional& v_zero_points, - const optional& v_scales, + const std::optional& attn_mask, + const std::optional& scale, + const std::optional& q_zero_points, + const std::optional& q_scales, + const std::optional& k_zero_points, + const std::optional& k_scales, + const std::optional& v_zero_points, + const std::optional& v_scales, const SeqDim seq_dim = SeqDim::TWO, const int64_t start_pos = 0, const int64_t num_keys_for_causal_attention = -1) { diff --git a/runtime/core/exec_aten/exec_aten.h b/runtime/core/exec_aten/exec_aten.h index a7a64d74f3a..d3c447df8db 100644 --- a/runtime/core/exec_aten/exec_aten.h +++ b/runtime/core/exec_aten/exec_aten.h @@ -41,6 +41,7 @@ #include // @manual #include // @manual #include // @manual +#include // @manual #include // @manual #include // @manual #include // @manual