Skip to content

Commit e2c0ece

Browse files
committed
* Fix ceiling division formula
Signed-off-by: Gideon Kassa <gkassa@nvidia.com>
1 parent a7c8075 commit e2c0ece

3 files changed

Lines changed: 4 additions & 2 deletions

File tree

‎changelog.d/bugfix-cdiv.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
Fixed bug in ceiling division calculations. It used to be computed using `(x + y - 1) // y` and
2+
`(x - 1) // y + 1`, which give incorrect values for when both x and y are negative numbers.

‎src/cuda/tile/_ir/ops_utils.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class MathOpDef:
4444
"sub": MathOpDef(lambda x, y: x - y, _RD_BASIC, support_flush_to_zero=True),
4545
"mul": MathOpDef(lambda x, y: x * y, _RD_BASIC, support_flush_to_zero=True),
4646
"floordiv": MathOpDef(lambda x, y: x // y),
47-
"cdiv": MathOpDef(lambda x, y: (x + y - 1) // y),
47+
"cdiv": MathOpDef(lambda x, y: -((-x) // y)),
4848
"truediv": MathOpDef(lambda x, y: x / y, _RD_TRUEDIV, support_flush_to_zero=True),
4949
"mod": MathOpDef(lambda x, y: x % y),
5050
"pow": MathOpDef(lambda x, y: x ** y),

‎src/cuda/tile/_stub.py‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3694,7 +3694,7 @@ def cdiv(x, y, /) -> TileOrScalar:
36943694
3
36953695
2
36963696
"""
3697-
return (x - 1) // y + 1
3697+
return -((-x) // y)
36983698

36993699

37003700
# ======== Comparison ==============

0 commit comments

Comments
 (0)