Repository navigation
TAIDL-TO v2.10
Changes since v2.9 (the checks on what a call passes, with an instruction's constraints and state updates, plus the lines a generation prints, the Docker scripts, and the TAIDL v2.14 pin):
- Refused a call's non-integer values and divisions by zero by name (#164)
- Parsed a loop expression with TAIDL's arithmetic (#166)
- Refused a window outside its buffer and computed a looped region start (#170)
- Refused a tile unlike its region at each call, reshaping one of its element count (#172)
- Checked a semantics' shapes and looped values at each call (#175)
- Checked an instruction's constraints at each call (#177)
- Ran an instruction's state updates at each call (#179)
- Restored the lines a generation prints (#181)
- Held the identity, matmul and softmax outputs to their shape (#183)
- Refused by name a word the table of lowered words leaves out (#184)
- Restored the pretty form of eight elementwise words (#185)
- Brought the Docker scripts to one form across the repositories (#187)
- Moved to TAIDL v2.14 (#188)
What changes for users:
- An instruction checks what a call passes as the kernel is compiled, at every iteration of the loops around the call, and refuses by name a value that is neither an integer nor a loop expression, a division by zero, a window outside its buffer, a region size that is not positive, a tile unlike its region, and a semantics whose shapes or attributes disagree at the call's values or one of whose dimensions is not positive.
- A loop expression is read with TAIDL's arithmetic, brackets, floor division and remainders included, and a region start can be computed from a looped attribute.
- An instruction's constraints are checked at each call, and its state updates run at each call, so a spec with a state update now gets an oracle.
- The calls inside a loop are traced when the outermost loop ends, so a call refused there raises from the
end_loopthat closes the outermost loop, and a loop around a call whose instruction updates the state, or whose semantics holds a value that changes over the loop, is unrolled. - An expression in a semantics can read an attribute given as a loop expression.
- A tile that holds its region's element count in another shape is read or written in row-major order, so
mini_trn'sload_cmruns at anyn. - A generation prints its steps again, ending with
The oracle API is located at <dir>/. docker/cleanup.shgoes on past a container it cannot remove and ends with status 1, and a faileddocker psis read as finding no container.- TAIDL-TO pins TAIDL v2.14, which the other repositories of ACT v2.3 pin.
start_looprefuses a bound that is not an integer and a variable that an enclosing loop already holds, anddebugrefuses an unknown buffer and an index or a window outside its buffer.debugprints the whole buffer ford1[:]and refuses the empty indexd1[], which printed it before.
This release:
- The version is 2.10 in
pyproject.toml,taidl_to/__init__.pyand the README's install line. README.mdgains a section on what a call refuses, which also says that a call checks its constraints against the state it finds and then runs its state updates in order.tests/pytest.shpasses on the CPU (463 tests) and with--platform GPU.