-
Notifications
You must be signed in to change notification settings - Fork 56
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: support for streamed computations and their proofs (#1209)
* feat: support for streamed computations and their proofs Introduce the `Op::Recv` LEM operator, which awaits for data to be received by the channel terminal at LEM interpretation time. This operator is used to implement the logic for the `StreamIn` continuation, which receives the argument to be applied to the (chaining) callable object. The result will be available once the (new) `StreamOut` continuation is reached. When that happens, the computation can be resumed by supplying two pieces of data through the channel: * A flag to tell if the machine should stutter while in `StreamOut` * The next argument to be consumed in the incoming `StreamIn` state Note: the second message should not be be sent if the machine is set to stutter with the first message. There is a test to show that we're now able to construct proofs of computations that grow incrementally by starting from where we had stopped. We don't need to start the folding process from the beginning. * optimize: skip new `StreamIn` ocurrences Prepare the next call directly from `StreamOut` without having to go through `StreamIn` again. Since `StreamIn` only occurs in the very first frame after this optimization, it was renamed to `StreamStart`. And `StreamOut`, which now serves as literal point for pause while supporting both input and output, was renamed to `StreamPause`.
- Loading branch information
1 parent
ddf26a1
commit 54e9292
Showing
30 changed files
with
623 additions
and
98 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
54e9292
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Benchmarks
Table of Contents
Overview
This benchmark report shows the Fibonacci GPU benchmark.
NVIDIA L4
Intel(R) Xeon(R) CPU @ 2.20GHz
32 vCPUs
125 GB RAM
Workflow run: https://github.com/lurk-lab/lurk-rs/actions/runs/8329857022
Benchmark Results
LEM Fibonacci Prove - rc = 100
ref=ddf26a125ef85f83df299e3cf6e8836b06ef050a
ref=54e92922b8de887c547e48320fd5c6b8bc622652
num-100
1.46 s
(✅ 1.00x)1.46 s
(✅ 1.01x slower)num-200
2.78 s
(✅ 1.00x)2.78 s
(✅ 1.00x slower)LEM Fibonacci Prove - rc = 600
ref=ddf26a125ef85f83df299e3cf6e8836b06ef050a
ref=54e92922b8de887c547e48320fd5c6b8bc622652
num-100
1.83 s
(✅ 1.00x)1.84 s
(✅ 1.01x slower)num-200
3.03 s
(✅ 1.00x)3.01 s
(✅ 1.01x faster)Made with criterion-table