Skip to content

TAIDL-TO v2.10

Choose a tag to compare

@DEVANSH-DVJ DEVANSH-DVJ released this 18 Oct 00:55
· 6 commits to master since this release
e310ef2

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_loop that 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's load_cm runs at any n.
  • A generation prints its steps again, ending with The oracle API is located at <dir>/.
  • docker/cleanup.sh goes on past a container it cannot remove and ends with status 1, and a failed docker ps is read as finding no container.
  • TAIDL-TO pins TAIDL v2.14, which the other repositories of ACT v2.3 pin.
  • start_loop refuses a bound that is not an integer and a variable that an enclosing loop already holds, and debug refuses an unknown buffer and an index or a window outside its buffer.
  • debug prints the whole buffer for d1[:] and refuses the empty index d1[], which printed it before.

This release:

  • The version is 2.10 in pyproject.toml, taidl_to/__init__.py and the README's install line.
  • README.md gains 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.sh passes on the CPU (463 tests) and with --platform GPU.