Skip to content

Commit ab2d436

Browse files
haijiegJay Gu
authored andcommitted
Add release notes for v1.5
Signed-off-by: Jay Gu <jagu@nvidia.com>
1 parent 7132db9 commit ab2d436

17 files changed

Lines changed: 94 additions & 39 deletions

CHANGELOG.md

Lines changed: 72 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,80 @@
1-
<!--- SPDX-FileCopyrightText: Copyright (c) <2025> NVIDIA CORPORATION & AFFILIATES. All rights reserved. -->
1+
<!--- SPDX-FileCopyrightText: Copyright (c) <2026> NVIDIA CORPORATION & AFFILIATES. All rights reserved. -->
22
<!--- SPDX-License-Identifier: Apache-2.0 -->
33

44
Release Notes
55
=============
66

7+
{#release-1-5-0}
8+
1.5.0 (2026-07-08)
9+
------------------
10+
11+
This release adds finer control over kernel specialization by making selected
12+
array shape dimensions compile-time constants and declaring scalar divisibility
13+
assumptions. Autotuning is faster and can isolate hanging kernels.
14+
The supported Python subset now includes tuple comprehensions,
15+
tuple-valued kernel arguments, enums, dictionaries, and variadic keyword
16+
parameters.
17+
18+
### Features
19+
- Add {py:func}`ct.assume_divisible_by(x, divisor) <cuda.tile.assume_divisible_by>`,
20+
a compiler hint that declares an integer scalar to be divisible by a constant.
21+
The compiler propagates this fact through arithmetic, which can prove the
22+
alignment of derived indices and pointer offsets and enable wider memory
23+
operations.
24+
- Add support for specializing array shape dimensions to their launch-time
25+
values, making them compile-time constants inside the kernel. Use
26+
{py:class}`ct.ArrayAnnotation <cuda.tile.ArrayAnnotation>` as `Annotated`
27+
metadata and list the dimensions to specialize, for example,
28+
`Annotated[ct.Array, ct.ArrayAnnotation(static_shape_dims=(0, -1))]`.
29+
- Add the `single_run_timeout_sec` argument to
30+
{py:func}`ct.tune.exhaustive_search()
31+
<cuda.tile.tune.exhaustive_search>` to prevent a hanging kernel from stalling
32+
the entire search.
33+
- Add support for passing Python tuples as kernel arguments. Elements may be
34+
arrays, scalars, lists, or nested tuples. Annotations may apply to the entire
35+
tuple or individual elements: `ct.Constant[tuple[int, float]]` makes the
36+
whole tuple compile-time constant, while `tuple[ct.Constant[int], float]`
37+
makes only the first element constant.
38+
39+
### Python features
40+
- Add support for tuple comprehensions.
41+
- Add support for the `in` and `not in` operators on tuples.
42+
- Add limited support for dictionaries, variadic keyword parameters in
43+
user-defined functions (for example, `def foo(**kwargs)`), and dictionary
44+
unpacking (for example, `foo(x, **y)`).
45+
- Add comparison and constructor support for Python `enum.Enum` inside kernels.
46+
Enum members can be compared with `==` and `!=` and constructed from a
47+
constant value, such as `Color(0)`.
48+
- Add support for printing dataclass instances.
49+
- Allow frozen dataclass instances to be used as globals in device code.
50+
51+
### Bug Fixes
52+
- Fix a bug in automatic propagation of divisibility when an assumed variable
53+
created in a block is used outside that block.
54+
- Fix a bug where strictly typed numeric constants
55+
(for example, `ct.uint32(-3)`, `ct.int8(300)`, and `ct.float16(0.2)`) were not
56+
converted according to their dtype. Out-of-range integers are now wrapped to
57+
the dtype's range, and floating-point values are rounded or clamped according
58+
to the dtype's precision and range.
59+
- Honor wrappers installed on user-defined functions, including wrappers added
60+
by decorators that use `functools.wraps()`.
61+
- Reject repeated axes in the `order` arguments of `load()`, `store()`, and
62+
`num_tiles()`.
63+
64+
### Enhancements
65+
- Extend {py:func}`ct.arange() <cuda.tile.arange>` with optional `start` and
66+
`step` arguments: `ct.arange(size, start=0, step=1, dtype=...)`. `size` must
67+
be a constant integer, while `start` and `step` may be dynamic values. For
68+
example, `ct.arange(8, start=7, step=-1, dtype=ct.int32)`
69+
creates a reversed range.
70+
- Improve exhaustive search performance by stopping early for slow
71+
configurations.
72+
73+
### ABI Changes
74+
- Introduce {py:class}`calling convention v2
75+
<cuda.tile.compilation.CallingConvention>` for kernels with static shape
76+
annotations or tuple arguments.
77+
778
{#release-1-4-0}
879
1.4.0 (2026-05-26)
980
------------------

changelog.d/arange.md

Lines changed: 0 additions & 4 deletions
This file was deleted.

changelog.d/assume-divby.md

Lines changed: 0 additions & 4 deletions
This file was deleted.

changelog.d/dict.md

Lines changed: 0 additions & 2 deletions
This file was deleted.

changelog.d/enum.md

Lines changed: 0 additions & 4 deletions
This file was deleted.

changelog.d/exhaustive_search_benchmark.md

Lines changed: 0 additions & 3 deletions
This file was deleted.

changelog.d/fix-axis-order-check.md

Lines changed: 0 additions & 2 deletions
This file was deleted.

changelog.d/fix-decorator.md

Lines changed: 0 additions & 2 deletions
This file was deleted.

changelog.d/fix-strictly-typed-constant.md

Lines changed: 0 additions & 5 deletions
This file was deleted.

changelog.d/fix_assume_div_pass.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)