Skip to content

Commit 80f1c1b

Browse files
Sebastian-Larssonfreddan80
authored andcommitted
Arm backend: Explicitly convert quantized value to int64
Previously, dequantizing a value with dequantize_value() in backends/arm/tosa_quant_utils.py could result in integer overflow when using numpy 2.1.3. The offending part of the formula is `qx - qargs.zp`. If the subtraction results in a value outside of the range of the dtype of `qx` the following warning is printed: "RuntimeWarning: overflow encountered in scalar subtract" With numpy 1.21.3 the dtype is implicitly convert to a dtype that can store the correct value. However, in numpy 2.1.3 there's no such conversion, leading the function to return an incorrect value. Here's a concrete example: ``` import numpy as np a = np.int8(127) b = -128 print(a-b) ``` Numpy 1.21.3: a - b = 255 Numpy 2.1.3: a - b = -1 To remedy this, explicitly convert qx to int64. Change-Id: Ie0e9e7745a424103ce650e2d58fe1a1a4cbd30e1
1 parent 3f7eb3b commit 80f1c1b

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

backends/arm/tosa_quant_utils.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ def quantize_value(x, qargs: QuantArgs, dtype=np.int8):
7171

7272

7373
def dequantize_value(qx, qargs: QuantArgs):
74-
return (qx - qargs.zp) * qargs.scale
74+
return (np.int64(qx) - qargs.zp) * qargs.scale
7575

7676

7777
def qargs_from_qnode(node: torch.fx.Node):

0 commit comments

Comments
 (0)