Files
powdr/executor
Georg Wiese c1bc7184ed Witgen: Remember which machine answers to which lookup / permutation (#1154)
With this PR, we remember the mapping from Lookup / Permutation Identity
to Machine. This is cleaner, lets us save some work when calling a
machine and allows us to fail earlier if no machine can answer the call
(at machine extraction time, rather than runtime.

Changes:
- `Machine::process_plookup()`: Instead of passing in `right` and
`kind`, machines now only receive an `IdentityId`. If the machine needs
to access any of the expressions, references to it have to be stored
with the machine.
- `Machine::identities()`: New function that lets us ask the machine for
which identities it feels respondible.
- The `Machines` struct now stores the mapping from `IdentityId` to
machine index, allowing us to replace the loop of trying all machines
with a simple call to `Machines::call()`.
- The identity kind is now also stored in `Identity::id`. Previously,
this only stored a `usize` which is not necessarily unique. As mentioned
above, this change could be merged as part of a separate PR.

#### Benchmark Results:

```
executor-benchmark/keccak
                        time:   [8.7242 s 8.9755 s 9.3876 s]
                        change: [-4.7814% +0.8652% +7.4252%] (p = 0.79 > 0.05)
                        No change in performance detected.

executor-benchmark/many_chunks_chunk_0
                        time:   [38.731 s 39.313 s 40.081 s]
                        change: [-5.6906% -3.9986% -1.8421%] (p = 0.00 < 0.05)
                        Performance has improved.
```
2024-03-25 19:27:09 +00:00
..