Skip to content

Commit d858cd9

Browse files
authored
Add optional offset arg to quantized_conv1d_nlc and precompute it AOT (#19344)
Differential Revision: D103893688 Pull Request resolved: #19344
1 parent d5ba603 commit d858cd9

8 files changed

Lines changed: 13 additions & 4 deletions

backends/cadence/aot/functions.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@
399399
- arg_meta: null
400400
kernel_name: impl::generic::quantized_conv1d_ncl_per_tensor_out
401401

402-
- func: cadence::quantized_conv1d_nlc.per_tensor_out(Tensor input, Tensor weight, Tensor bias, int[] stride, SymInt[] padding, int[] dilation, int groups, int input_zero_point, int weight_zero_point, float bias_scale, float out_scale, int out_zero_point, int out_multiplier, int out_shift, *, Tensor(a!) out) -> Tensor(a!)
402+
- func: cadence::quantized_conv1d_nlc.per_tensor_out(Tensor input, Tensor weight, Tensor bias, int[] stride, SymInt[] padding, int[] dilation, int groups, int input_zero_point, int weight_zero_point, float bias_scale, float out_scale, int out_zero_point, int out_multiplier, int out_shift, Tensor? offset=None, *, Tensor(a!) out) -> Tensor(a!)
403403
kernels:
404404
- arg_meta: null
405405
kernel_name: impl::generic::quantized_conv1d_nlc_per_tensor_out

backends/cadence/aot/functions_hifi.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -574,7 +574,7 @@
574574
- arg_meta: null
575575
kernel_name: impl::HiFi::quantized_conv1d_ncl_per_tensor_out
576576

577-
- func: cadence::quantized_conv1d_nlc.per_tensor_out(Tensor input, Tensor weight, Tensor bias, int[] stride, SymInt[] padding, int[] dilation, int groups, int input_zero_point, int weight_zero_point, float bias_scale, float out_scale, int out_zero_point, int out_multiplier, int out_shift, *, Tensor(a!) out) -> Tensor(a!)
577+
- func: cadence::quantized_conv1d_nlc.per_tensor_out(Tensor input, Tensor weight, Tensor bias, int[] stride, SymInt[] padding, int[] dilation, int groups, int input_zero_point, int weight_zero_point, float bias_scale, float out_scale, int out_zero_point, int out_multiplier, int out_shift, Tensor? offset=None, *, Tensor(a!) out) -> Tensor(a!)
578578
kernels:
579579
- arg_meta: null
580580
kernel_name: impl::HiFi::quantized_conv1d_nlc_per_tensor_out

backends/cadence/aot/ops_registrations.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -263,10 +263,10 @@ def register_fake(
263263
"quantized_conv1d_nlc.out(Tensor input, Tensor weight, Tensor bias, int[] stride, SymInt[] padding, int[] dilation, int groups, int input_zero_point, Tensor weight_zero_point, Tensor bias_scale, float out_scale, int out_zero_point, Tensor out_multiplier, Tensor out_shift, *, Tensor(a!) out) -> Tensor(a!)"
264264
)
265265
lib.define(
266-
"quantized_conv1d_nlc.per_tensor(Tensor input, Tensor weight, Tensor bias, int[] stride, SymInt[] padding, int[] dilation, int groups, int input_zero_point, int weight_zero_point, float bias_scale, float out_scale, int out_zero_point, int out_multiplier, int out_shift) -> (Tensor Z)"
266+
"quantized_conv1d_nlc.per_tensor(Tensor input, Tensor weight, Tensor bias, int[] stride, SymInt[] padding, int[] dilation, int groups, int input_zero_point, int weight_zero_point, float bias_scale, float out_scale, int out_zero_point, int out_multiplier, int out_shift, Tensor? offset=None) -> (Tensor Z)"
267267
)
268268
lib.define(
269-
"quantized_conv1d_nlc.per_tensor_out(Tensor input, Tensor weight, Tensor bias, int[] stride, SymInt[] padding, int[] dilation, int groups, int input_zero_point, int weight_zero_point, float bias_scale, float out_scale, int out_zero_point, int out_multiplier, int out_shift, *, Tensor(a!) out) -> Tensor(a!)"
269+
"quantized_conv1d_nlc.per_tensor_out(Tensor input, Tensor weight, Tensor bias, int[] stride, SymInt[] padding, int[] dilation, int groups, int input_zero_point, int weight_zero_point, float bias_scale, float out_scale, int out_zero_point, int out_multiplier, int out_shift, Tensor? offset=None, *, Tensor(a!) out) -> Tensor(a!)"
270270
)
271271
lib.define(
272272
"quantized_depthwise_conv1d_ncl.per_tensor(Tensor input, Tensor weight, Tensor bias, int[] stride, SymInt[] padding, int[] dilation, int groups, int input_zero_point, int weight_zero_point, float bias_scale, float out_scale, int out_zero_point, int out_multiplier, int out_shift) -> (Tensor Z)"
@@ -1305,6 +1305,7 @@ def quantized_conv1d_nlc_per_tensor_meta(
13051305
output_zero_point: int,
13061306
out_multiplier: int,
13071307
out_shift: int,
1308+
offset: Optional[torch.Tensor] = None,
13081309
) -> torch.Tensor:
13091310
torch._check(bias.dtype == torch.int32, lambda: "expected int32")
13101311
# NLC format: input is [N, L, C], weight is [OC, K, IC/groups]

backends/cadence/generic/operators/op_quantized_conv1d_nlc.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,6 +256,7 @@ ::executorch::aten::Tensor& quantized_conv1d_nlc_per_tensor_out(
256256
int64_t output_zero_point,
257257
__ET_UNUSED int64_t out_multiplier,
258258
__ET_UNUSED int64_t out_shift,
259+
__ET_UNUSED const ::executorch::aten::optional<Tensor>& offset,
259260
Tensor& out) {
260261
(void)ctx;
261262
quantized_conv1d_nlc(

backends/cadence/generic/operators/op_quantized_conv1d_nlc.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ ::executorch::aten::Tensor& quantized_conv1d_nlc_per_tensor_out(
5454
int64_t output_zero_point,
5555
int64_t out_multiplier,
5656
int64_t out_shift,
57+
const ::executorch::aten::optional<Tensor>& offset,
5758
Tensor& out);
5859

5960
} // namespace native

backends/cadence/generic/operators/op_quantized_depthwise_conv1d_nlc.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ ::executorch::aten::Tensor& quantized_depthwise_conv1d_nlc_per_tensor_out(
5757
output_zero_point,
5858
out_multiplier,
5959
out_shift,
60+
::executorch::aten::optional<Tensor>(),
6061
out);
6162
}
6263

backends/cadence/hifi/operators/op_quantized_conv1d_nlc.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,7 @@ void quantized_conv1d_nlc_per_tensor_out(
238238
int64_t output_zero_point,
239239
int64_t out_multiplier,
240240
int64_t out_shift,
241+
__ET_UNUSED const ::executorch::aten::optional<Tensor>& offset,
241242
Tensor& out) {
242243
// HiFi nnlib kernels only support dilation=1.
243244
// Fall back to generic implementation for dilation > 1.
@@ -258,6 +259,7 @@ void quantized_conv1d_nlc_per_tensor_out(
258259
output_zero_point,
259260
out_multiplier,
260261
out_shift,
262+
offset,
261263
out);
262264
return;
263265
}
@@ -284,6 +286,7 @@ void quantized_conv1d_nlc_per_tensor_out(
284286
output_zero_point,
285287
out_multiplier,
286288
out_shift,
289+
offset,
287290
out);
288291
} else {
289292
xa_opt_quantized_conv1d_nlc_asym8sxsym8s_asym8s(
@@ -320,6 +323,7 @@ void quantized_conv1d_nlc_per_tensor_out(
320323
output_zero_point,
321324
out_multiplier,
322325
out_shift,
326+
offset,
323327
out);
324328
} else {
325329
xa_opt_quantized_conv1d_nlc_asym8uxsym8u_asym8u(

backends/cadence/hifi/operators/op_quantized_depthwise_conv1d_nlc.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ void quantized_depthwise_conv1d_nlc_per_tensor_out(
206206
output_zero_point,
207207
out_multiplier,
208208
out_shift,
209+
::executorch::aten::optional<Tensor>(),
209210
out);
210211
return;
211212
}

0 commit comments

Comments
 (0)