tree fbd247244d2a686ff4a48c0ecb698f7a59455d24
parent 9a222ebbf78a1cd7c874bed4d1dbb19c0d8c2eca
parent f998e600df29e682b71fdde880096babc1c6699d
author Ben Vanik <ben.vanik@gmail.com> 1678226276 -0800
committer GitHub <noreply@github.com> 1678226276 -0800
gpgsig -----BEGIN PGP SIGNATURE-----
 
 wsBcBAABCAAQBQJkB7NkCRBK7hj4Ov3rIwAA8rIIAJgbEFgPfn+jKE/fupNTXq1L
 Dn0PGqxaAMv+rvS5EuFAezCgXIGcTDZeFhpGdoWXJcaU+rr9lCBpqHId104uLlYo
 XmeEXpKuYHtiDHA5dUHBVjUJE9Gn3z94budd0+2ZoFClHP4aZxk5ddViFbc/rNzq
 Mpw/VpAEhwIKiYCwPMPeZqTWKgTgSo9zBozdxcZOGytBOTlRgi0/Ll5RdOTm2ybj
 E6r7VnCw3pty6nQ2UTHMsPsGee44p+dw1f7x6bDxo8GcSMwiJ69S2Y+/1DrvywhJ
 w77HlRiNl/X1UlDZIilV4TXXd0c4ja8xqOCp0nRpf6WBb2pR8aY4hmvEp5TPaEA=
 =bPfi
 -----END PGP SIGNATURE-----
 

Adding state functionality to iree-run-trace and improving ergonomics. (#12534)

In order to support executing pipelines where outputs of one call are
passed into another the trace replay functionality has grown slightly
closer to turing complete (and loops are definitely coming :) by
obtaining input/output control, numpy npy file access, and a blackboard
for temporary values. A test demonstrating the file format and some
`--help` info has been added to `iree-run-trace` to at least have a
reference not generated by python and ensure it mostly works.

---

The new `!input.get`/`!input.take`/`!output.set`/`!output.push` macros
can be used in any source sequence such as function call arguments.
These will either get (assign semantics) or take (move semantics) a
value from the input list and set or push a value to the output list.
`iree-run-trace` now supports the same `--input=`/`--output=` flags as
`iree-run-module` and they define the input/output handling for the
whole trace pipeline as if calling a single function.

```yaml
type: call
function: module.fn
# pass the first two `--input=` flag values and a constant
args:
- !input.take 0
- !input.take 1
- !hal.buffer_view 4xf32=0,1,2,3
# store the two results into `--output=` 0 and 1 (pushing)
results:
- !output.set 0
- !output.push
```

---

In addition to the input/output lists there's also a user-defined
blackboard that provides storage for the duration of the trace. Slots
can be set by using `!blackboard.set`/`!blackboard.push` on any target
sequence such as function call results and later retrieved in any source
sequence with `!blackboard.get`/`!blackboard.take`.

```yaml
# save call results to the blackboard
type: call
function: module.return_two_things
results:
- !blackboard.push
- !blackboard.push
---
# load prior results from the blackboard
type: call
function: module.consume_three_things
args:
- !input.take 0
- !blackboard.take 0
- !blackboard.take 1
```

---

The `--input=` and `--output=`-style works for pipeline-style traces
while larger traces may need programmatic control over I/O and the
blackboard. The `numpy_load` and `numpy_save` events have been added
which allow for loading or saving one or more `arrays` to a .npy file
`path`. This can be used to stream outputs during processing by using
the `append: true` node when saving or sharding to different files.

```yaml
# load blackboard slot 3 and 4 from a .npy file
type: numpy_load
path: input.npy
arrays:
- !blackboard.set 3
- !blackboard.set 4
---
# save a few arrays to a .npy file
type: numpy_save
path: output.npy
append: false
arrays:
- !blackboard.get 3
- !input.get 0
- !hal.buffer_view 4xf32=0,1,2,3
```

---

There's some helpers that'd be useful to add (enqueue/dequeue, pop, etc)
that could make it easier to write more complex pipelines. The
blackboard could also be changed to using a hash table so that string
keys could be used instead of just ordinals.

Fixes #12525.
Fixes #12526.