Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Prepare for client-only zkvm usage #908

Merged
merged 24 commits into from
Oct 2, 2023
Merged

Prepare for client-only zkvm usage #908

merged 24 commits into from
Oct 2, 2023

Conversation

flaub
Copy link
Member

@flaub flaub commented Sep 26, 2023

This doesn't yet change any default feature flags, so should still be fairly minimal.

The planned set of PRs include:

  • add release process to build r0vm for all major targets
    • use cargo zigbuild on linux to build with a specific glibc for max compat with older linux distros
    • use something like https://github.com/cargo-bins/release-pr to automatically build/publish binaries on a per-release basis
  • update cargo risczero install or adjust docs to have users do cargo binstall cargo-risczero (depending on whether we package r0vm as standalone or combined with cargo-risczero)

@flaub flaub self-assigned this Sep 26, 2023
bytemuck::cast_slice(&self.seal)
/// Return the seal for this receipt, as a vector of bytes.
pub fn get_seal_bytes(&self) -> Vec<u8> {
self.seal.iter().flat_map(|x| x.to_le_bytes()).collect()
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Possibly breaking change (on big-endian systems)

Comment on lines +51 to +52
pub(crate) segment_limit_po2: Option<u32>,
pub(crate) session_limit: Option<u64>,
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Possibly breaking change

risc0/zkvm/Cargo.toml Outdated Show resolved Hide resolved
@github-actions
Copy link

Benchmark for Linux-cuda

    <details open>
      <summary>Click to hide benchmark</summary>
      Benchmarks have changed between the two branches, unable to diff.
    </details>

Benchmark for Linux-default f87f936

Click to hide benchmark
Test Base PR %
fib/100/execute 4.7±0.13ms 4.6±0.19ms -2.13%
fib/100/prove 2.7±0.43s 2.5±0.46s -7.41%
fib/100/total 2.3±0.33s 2.1±0.15s -8.70%
fib/1000/execute 5.3±0.09ms 5.2±0.06ms -1.89%
fib/1000/prove 2.5±0.27s 2.5±0.49s 0.00%
fib/1000/total 2.4±0.34s 2.1±0.18s -12.50%
fib/10000/execute 10.3±0.04ms 10.1±0.13ms -1.94%
fib/10000/prove 7.5±0.71s 7.2±0.29s -4.00%
fib/10000/total 7.5±0.51s 6.5±0.29s -13.33%

Benchmark for macOS-default f87f936

Click to hide benchmark
Test Base PR %
fib/100/execute 2.8±0.10ms 2.8±0.09ms 0.00%
fib/100/prove 3.7±0.05s 3.6±0.06s -2.70%
fib/100/total 3.7±0.06s 3.6±0.07s -2.70%
fib/1000/execute 3.1±0.11ms 3.1±0.08ms 0.00%
fib/1000/prove 3.7±0.08s 3.7±0.06s 0.00%
fib/1000/total 3.7±0.06s 3.7±0.05s 0.00%
fib/10000/execute 6.2±0.12ms 6.2±0.10ms 0.00%
fib/10000/prove 15.0±0.16s 15.0±0.15s 0.00%
fib/10000/total 15.1±0.20s 15.0±0.10s -0.66%

Benchmark for macOS-metal

    <details open>
      <summary>Click to hide benchmark</summary>
      Benchmarks have changed between the two branches, unable to diff.
    </details>

mothran added a commit that referenced this pull request Sep 26, 2023
@github-actions
Copy link

Benchmark for Linux-cuda af328ed

Click to hide benchmark
Test Base PR %
fib/100/execute 5.2±0.12ms 5.1±0.12ms -1.92%
fib/100/prove 707.3±5.33ms 676.7±1.58ms -4.33%
fib/100/total 716.7±3.25ms 681.3±2.29ms -4.94%
fib/1000/execute 5.8±0.11ms 5.7±0.12ms -1.72%
fib/1000/prove 738.5±2.81ms 702.4±1.90ms -4.89%
fib/1000/total 752.9±5.37ms 709.9±1.47ms -5.71%
fib/10000/execute 12.1±0.13ms 12.0±0.10ms -0.83%
fib/10000/prove 2.9±0.02s 2.6±0.01s -10.34%
fib/10000/total 2.9±0.01s 2.6±0.00s -10.34%

Benchmark for Linux-default

    <details open>
      <summary>Click to hide benchmark</summary>
      Benchmarks have changed between the two branches, unable to diff.
    </details>

Benchmark for macOS-default

    <details open>
      <summary>Click to hide benchmark</summary>
      Benchmarks have changed between the two branches, unable to diff.
    </details>

Benchmark for macOS-metal af328ed

Click to hide benchmark
Test Base PR %
fib/100/execute 2.8±0.08ms 2.7±0.10ms -3.57%
fib/100/prove 803.0±4.98ms 797.6±4.68ms -0.67%
fib/100/total 826.4±7.35ms 824.5±4.83ms -0.23%
fib/1000/execute 3.1±0.03ms 3.0±0.11ms -3.23%
fib/1000/prove 820.2±5.38ms 818.4±5.51ms -0.22%
fib/1000/total 843.9±4.44ms 840.2±6.85ms -0.44%
fib/10000/execute 6.1±0.06ms 6.0±0.07ms -1.64%
fib/10000/prove 3.1±0.01s 3.1±0.02s 0.00%
fib/10000/total 3.1±0.01s 3.1±0.01s 0.00%

@github-actions
Copy link

Benchmark for Linux-cuda 0bf2dd8

Click to hide benchmark
Test Base PR %
fib/100/execute 5.2±0.14ms 5.0±0.08ms -3.85%
fib/100/prove 828.0±1.71ms 824.6±11.38ms -0.41%
fib/100/total 843.6±1.75ms 806.9±34.01ms -4.35%
fib/1000/execute 5.9±0.09ms 5.7±0.10ms -3.39%
fib/1000/prove 855.1±20.19ms 848.4±2.73ms -0.78%
fib/1000/total 865.2±1.93ms 826.8±43.24ms -4.44%
fib/10000/execute 12.1±0.14ms 11.7±0.14ms -3.31%
fib/10000/prove 2.9±0.01s 2.5±0.01s -13.79%
fib/10000/total 3.0±0.01s 2.5±0.00s -16.67%

Benchmark for Linux-default

    <details open>
      <summary>Click to hide benchmark</summary>
      Benchmarks have changed between the two branches, unable to diff.
    </details>

Benchmark for macOS-default 0bf2dd8

Click to hide benchmark
Test Base PR %
fib/100/execute 2.8±0.13ms 2.8±0.13ms 0.00%
fib/100/prove 3.7±0.06s 3.6±0.09s -2.70%
fib/100/total 3.7±0.06s 3.6±0.07s -2.70%
fib/1000/execute 3.1±0.07ms 3.0±0.10ms -3.23%
fib/1000/prove 3.7±0.07s 3.7±0.08s 0.00%
fib/1000/total 3.7±0.06s 3.7±0.07s 0.00%
fib/10000/execute 6.1±0.20ms 6.1±0.06ms 0.00%
fib/10000/prove 15.1±0.22s 15.1±0.13s 0.00%
fib/10000/total 15.1±0.09s 15.0±0.15s -0.66%

Benchmark for macOS-metal

    <details open>
      <summary>Click to hide benchmark</summary>
      Benchmarks have changed between the two branches, unable to diff.
    </details>

@github-actions
Copy link

Benchmark for Linux-cuda 4a27432

Click to hide benchmark
Test Base PR %
fib/100/execute 5.1±0.10ms 5.0±0.11ms -1.96%
fib/100/prove 1095.0±13.86ms 702.8±14.50ms -35.82%
fib/100/total 1088.9±13.00ms 699.6±3.90ms -35.75%
fib/1000/execute 5.7±0.11ms 5.7±0.12ms 0.00%
fib/1000/prove 1119.5±15.10ms 731.2±4.03ms -34.69%
fib/1000/total 1117.7±6.71ms 732.8±5.02ms -34.44%
fib/10000/execute 11.8±0.22ms 11.7±0.11ms -0.85%
fib/10000/prove 3.4±0.03s 2.9±0.02s -14.71%
fib/10000/total 3.4±0.01s 2.9±0.02s -14.71%

Benchmark for Linux-default 4a27432

Click to hide benchmark
Test Base PR %
fib/100/execute 6.9±0.50ms 6.9±0.62ms 0.00%
fib/100/prove 5.0±0.02s 5.0±0.03s 0.00%
fib/100/total 5.1±0.03s 5.0±0.02s -1.96%
fib/1000/execute 8.2±0.61ms 7.9±0.71ms -3.66%
fib/1000/prove 5.1±0.03s 5.1±0.02s 0.00%
fib/1000/total 5.1±0.03s 5.1±0.04s 0.00%
fib/10000/execute 15.0±0.56ms 15.0±0.50ms 0.00%
fib/10000/prove 20.9±0.10s 20.8±0.06s -0.48%
fib/10000/total 21.0±0.28s 20.9±0.11s -0.48%

Benchmark for macOS-default 4a27432

Click to hide benchmark
Test Base PR %
fib/100/execute 2.8±0.19ms 2.8±0.18ms 0.00%
fib/100/prove 3.6±0.04s 3.6±0.06s 0.00%
fib/100/total 3.6±0.05s 3.6±0.08s 0.00%
fib/1000/execute 3.0±0.12ms 3.0±0.09ms 0.00%
fib/1000/prove 3.7±0.08s 3.7±0.07s 0.00%
fib/1000/total 3.7±0.06s 3.7±0.05s 0.00%
fib/10000/execute 6.1±0.09ms 5.9±0.07ms -3.28%
fib/10000/prove 15.1±0.18s 15.0±0.13s -0.66%
fib/10000/total 15.0±0.14s 15.0±0.05s 0.00%

Benchmark for macOS-metal

    <details open>
      <summary>Click to hide benchmark</summary>
      Benchmarks have changed between the two branches, unable to diff.
    </details>

@flaub flaub marked this pull request as ready for review September 28, 2023 23:24
@flaub flaub changed the title risc0-zkvm default feature flags: client Prepare for client-only zkvm usage Sep 28, 2023
@github-actions
Copy link

Benchmark for Linux-cuda 2991bbf

Click to hide benchmark
Test Base PR %
fib/100/execute 5.2±0.11ms 5.1±0.13ms -1.92%
fib/100/prove 845.3±22.79ms 655.3±3.87ms -22.48%
fib/100/total 829.3±11.35ms 658.0±2.79ms -20.66%
fib/1000/execute 5.8±0.16ms 5.8±0.07ms 0.00%
fib/1000/prove 867.0±16.75ms 683.2±1.66ms -21.20%
fib/1000/total 875.9±14.97ms 690.5±2.40ms -21.17%
fib/10000/execute 12.2±0.18ms 11.8±0.19ms -3.28%
fib/10000/prove 3.5±0.02s 2.5±0.01s -28.57%
fib/10000/total 3.5±0.02s 2.5±0.01s -28.57%

Benchmark for Linux-default 2991bbf

Click to hide benchmark
Test Base PR %
fib/100/execute 7.0±0.49ms 6.8±0.48ms -2.86%
fib/100/prove 5.0±0.04s 5.0±0.02s 0.00%
fib/100/total 5.0±0.02s 5.0±0.02s 0.00%
fib/1000/execute 7.9±0.47ms 7.8±0.40ms -1.27%
fib/1000/prove 5.1±0.03s 5.0±0.03s -1.96%
fib/1000/total 5.1±0.03s 5.1±0.01s 0.00%
fib/10000/execute 15.1±0.57ms 15.0±0.49ms -0.66%
fib/10000/prove 20.9±0.13s 20.8±0.10s -0.48%
fib/10000/total 21.0±0.12s 20.9±0.10s -0.48%

Benchmark for macOS-default 2991bbf

Click to hide benchmark
Test Base PR %
fib/100/execute 2.8±0.14ms 2.7±0.14ms -3.57%
fib/100/prove 3.6±0.08s 3.6±0.09s 0.00%
fib/100/total 3.6±0.04s 3.6±0.06s 0.00%
fib/1000/execute 3.1±0.07ms 3.1±0.10ms 0.00%
fib/1000/prove 3.7±0.03s 3.6±0.06s -2.70%
fib/1000/total 3.7±0.04s 3.7±0.06s 0.00%
fib/10000/execute 6.1±0.12ms 5.9±0.09ms -3.28%
fib/10000/prove 15.0±0.09s 14.9±0.13s -0.67%
fib/10000/total 15.1±0.22s 15.1±0.21s 0.00%

Benchmark for macOS-metal 2991bbf

Click to hide benchmark
Test Base PR %
fib/100/execute 2.9±0.10ms 2.7±0.13ms -6.90%
fib/100/prove 799.2±4.90ms 796.7±4.75ms -0.31%
fib/100/total 823.6±6.75ms 819.2±4.68ms -0.53%
fib/1000/execute 3.0±0.06ms 3.0±0.12ms 0.00%
fib/1000/prove 816.6±4.35ms 815.2±3.97ms -0.17%
fib/1000/total 843.4±4.95ms 836.4±5.92ms -0.83%
fib/10000/execute 6.0±0.05ms 6.0±0.05ms 0.00%
fib/10000/prove 3.1±0.01s 3.0±0.01s -3.23%
fib/10000/total 3.1±0.01s 3.0±0.01s -3.23%

@flaub
Copy link
Member Author

flaub commented Sep 29, 2023

@mothran Once this PR lands, I think we can begin to test how to get Bonsai to use the client API ahead of (or in parallel to) the other planned PRs to get the binary distributed for end users.

Copy link
Contributor

@nategraf nategraf left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this factoring quite a bit

pub segments: u32,

/// The data publicly committed by the guest program.
pub journal: Bytes,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe this should be Option<Bytes> since an exit code other than Paused or Halted will not have a journal. Empty bytes also seems reasonable.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There was a Slack discussion about how "empty journal" hashes to SHA256([]) whereas "no journal" "hashes" to 0. If we want to retain this distinction we probably need a way to represent it here (which Option<Bytes> makes sense for that to me).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually the hashing distinction was only really relevant to the way the circuit generates the 'output' digest.

I guess Option<Bytes> is slightly better for the API, but we should make that change in all the other APIs as well (this is just the client/server API, which is kind of a private API).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I tried making this change but seems to be non-trivial so I'm going to kick this to a future PR.

let program = Program::load_elf(&MULTI_TEST_ELF, GUEST_MAX_MEM as u32).unwrap();
let image = MemoryImage::new(&program, PAGE_SIZE as u32).unwrap();
let binary = image.into();
TestClient::new().execute(env, binary).unwrap();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In CI, do we want to make sure these tests all run both with in-process execution and with sub-process execution? (Same question for prover tests).

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There are existing tests for the in-process which is actually more extensive. What I was shooting for in these tests is to get coverage for the client/server message passing specifically. Admittedly these tests are incomplete; there should be more to cover more cases.

I've been pondering how we could get a common collection of tests to be run in in-process or sub-process mode, but the best I can come up with is to use an integration test to ensure that r0vm gets built. These tests are a compromise, it doesn't actually spin up a separate process, it uses a separate thread instead. But it does use all the same messages.

Comment on lines +298 to +301
pub journal: Bytes,

/// The [ExitCode] of the session.
pub exit_code: ExitCode,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of journal and exit_code, it'd be nice to have this be ReceiptMetadata, which essentially represents the set of public claims about an execution. For composition, being able to get the ReceiptMetadata for an execution is very useful because it allows starting execution and proving for one program as soon as all of it's dependencies have been executed, rather than waiting for dependencies to be proven.

One downside to this would be pushing the journal one layer down, which is the main field a developer is likely interested in. One option would be to have these fields be top-level in SessionInfo and have a get_metadata method that constructs the ReceiptMetadata struct if needed.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is a really good point, I like the idea of having a get_metadata. I'll play around with this.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this idea, but it turns out that the executor doesn't yet have the smarts to construct a ReceiptMetadata. Also, I don't know how we can construct one without running the entire program since only the final segment is guaranteed to have outputs and the final output digest.

Comment on lines 294 to 295
/// The number of segments.
pub segments: u32,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Segments seems less useful if the cycle count or po2 for the segments is not known. I may be known by context, if the client requested a specific po2. It would be nice if enough information is included here to additional know (at least an upper bound on) the number of cycles this represents.

Copy link
Member

@tzerrell tzerrell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice!

let receipt = bincode::deserialize(&receipt_bytes)?;
Ok(receipt)
let receipt_pb = pb::core::Receipt::decode(receipt_bytes)?;
receipt_pb.try_into()
}

/// TODO
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not something that needs to be solved within this PR, but I want to note that this architecture is not yet fully documented and we'll need to finish its docs before the next release.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tracking in #929

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I actually think client/server is largely transparent to end users. We do need to describe the public bits and how to install the server, but I don't think we need to (or necessarily should) document the internal part since it's undergoing changes and won't be relevant (and in fact confusing) to the majority of users.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 makes sense. I do think that anything that shows up on docs.rs shouldn't have docs that just say "TODO". (Minimally something like "Internal component")

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If you see a TODO, could you mark it or link to it? I probably missed those

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The line this comment is on is one of them. I think they were introduced in a different client/server PR -- I noticed them when reviewing by reading through the generated docs, not on the PR proper. Also lines 66, 100, 137, 177, and 215 of this file, and lines 178, 183, and 189 of https://github.com/risc0/risc0/blob/main/risc0/zkvm/src/host/api/server.rs (as of commit 7a1581f160729b544025afaca525ee3a39394b6e).

pub segments: u32,

/// The data publicly committed by the guest program.
pub journal: Bytes,
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There was a Slack discussion about how "empty journal" hashes to SHA256([]) whereas "no journal" "hashes" to 0. If we want to retain this distinction we probably need a way to represent it here (which Option<Bytes> makes sense for that to me).

@flaub flaub enabled auto-merge (squash) September 30, 2023 03:50
@github-actions
Copy link

Benchmark for Linux-cuda 7b0166a

Click to hide benchmark
Test Base PR %
fib/100/execute 5.0±0.09ms 5.0±0.10ms 0.00%
fib/100/prove 716.7±3.32ms 675.3±1.84ms -5.78%
fib/100/total 715.0±4.36ms 679.7±2.04ms -4.94%
fib/1000/execute 5.7±0.09ms 5.7±0.09ms 0.00%
fib/1000/prove 751.0±5.96ms 705.3±2.24ms -6.09%
fib/1000/total 751.1±1.76ms 714.1±3.31ms -4.93%
fib/10000/execute 12.0±0.13ms 11.9±0.07ms -0.83%
fib/10000/prove 2.9±0.02s 2.5±0.01s -13.79%
fib/10000/total 2.9±0.02s 2.5±0.01s -13.79%

Benchmark for Linux-default

    <details open>
      <summary>Click to hide benchmark</summary>
      Benchmarks have changed between the two branches, unable to diff.
    </details>

Benchmark for macOS-default 7b0166a

Click to hide benchmark
Test Base PR %
fib/100/execute 2.8±0.17ms 2.8±0.21ms 0.00%
fib/100/prove 3.6±0.06s 3.6±0.07s 0.00%
fib/100/total 3.7±0.04s 3.6±0.06s -2.70%
fib/1000/execute 3.1±0.12ms 3.0±0.16ms -3.23%
fib/1000/prove 3.7±0.06s 3.6±0.07s -2.70%
fib/1000/total 3.7±0.07s 3.6±0.04s -2.70%
fib/10000/execute 6.2±0.07ms 6.1±0.09ms -1.61%
fib/10000/prove 15.1±0.23s 15.0±0.11s -0.66%
fib/10000/total 15.0±0.10s 14.9±0.14s -0.67%

Benchmark for macOS-metal 7b0166a

Click to hide benchmark
Test Base PR %
fib/100/execute 2.8±0.10ms 2.8±0.06ms 0.00%
fib/100/prove 804.0±3.86ms 802.8±4.79ms -0.15%
fib/100/total 827.9±6.23ms 827.6±9.57ms -0.04%
fib/1000/execute 3.1±0.05ms 3.0±0.16ms -3.23%
fib/1000/prove 823.1±3.96ms 820.1±3.00ms -0.36%
fib/1000/total 848.6±5.70ms 845.1±4.73ms -0.41%
fib/10000/execute 6.1±0.09ms 6.0±0.08ms -1.64%
fib/10000/prove 3.1±0.01s 3.1±0.02s 0.00%
fib/10000/total 3.1±0.01s 3.1±0.01s 0.00%

@flaub flaub disabled auto-merge October 1, 2023 22:46
@github-actions
Copy link

github-actions bot commented Oct 1, 2023

Benchmark for Linux-cuda b5fbe17

Click to hide benchmark
Test Base PR %
fib/100/execute 5.3±0.13ms 5.0±0.10ms -5.66%
fib/100/prove 717.7±7.36ms 664.2±2.73ms -7.45%
fib/100/total 718.6±3.95ms 669.7±2.00ms -6.80%
fib/1000/execute 5.9±0.08ms 5.7±0.09ms -3.39%
fib/1000/prove 748.7±4.61ms 693.1±2.69ms -7.43%
fib/1000/total 752.6±4.75ms 699.5±1.86ms -7.06%
fib/10000/execute 11.9±0.08ms 11.7±0.18ms -1.68%
fib/10000/prove 3.0±0.02s 2.6±0.01s -13.33%
fib/10000/total 3.0±0.02s 2.6±0.01s -13.33%

Benchmark for Linux-default b5fbe17

Click to hide benchmark
Test Base PR %
fib/100/execute 6.9±0.47ms 6.9±0.33ms 0.00%
fib/100/prove 5.1±0.03s 5.1±0.02s 0.00%
fib/100/total 5.1±0.02s 5.1±0.02s 0.00%
fib/1000/execute 8.0±0.53ms 7.8±0.38ms -2.50%
fib/1000/prove 5.1±0.04s 5.1±0.02s 0.00%
fib/1000/total 5.1±0.03s 5.1±0.03s 0.00%
fib/10000/execute 14.6±0.64ms 14.3±0.63ms -2.05%
fib/10000/prove 21.0±0.13s 20.9±0.13s -0.48%
fib/10000/total 21.0±0.15s 20.9±0.08s -0.48%

Benchmark for macOS-default b5fbe17

Click to hide benchmark
Test Base PR %
fib/100/execute 2.7±0.12ms 2.7±0.15ms 0.00%
fib/100/prove 3.7±0.06s 3.6±0.06s -2.70%
fib/100/total 3.7±0.06s 3.6±0.07s -2.70%
fib/1000/execute 3.0±0.12ms 3.0±0.09ms 0.00%
fib/1000/prove 3.7±0.05s 3.7±0.07s 0.00%
fib/1000/total 3.6±0.05s 3.6±0.09s 0.00%
fib/10000/execute 6.1±0.10ms 6.0±0.06ms -1.64%
fib/10000/prove 15.1±0.20s 15.0±0.10s -0.66%
fib/10000/total 15.1±0.20s 15.0±0.16s -0.66%

Benchmark for macOS-metal b5fbe17

Click to hide benchmark
Test Base PR %
fib/100/execute 2.8±0.06ms 2.7±0.07ms -3.57%
fib/100/prove 807.8±3.51ms 804.6±4.10ms -0.40%
fib/100/total 829.9±6.40ms 823.6±3.93ms -0.76%
fib/1000/execute 3.0±0.09ms 3.0±0.06ms 0.00%
fib/1000/prove 825.2±4.42ms 824.5±5.83ms -0.08%
fib/1000/total 849.3±4.64ms 847.2±6.74ms -0.25%
fib/10000/execute 6.1±0.11ms 6.0±0.12ms -1.64%
fib/10000/prove 3.1±0.02s 3.1±0.02s 0.00%
fib/10000/total 3.1±0.01s 3.1±0.01s 0.00%

@github-actions
Copy link

github-actions bot commented Oct 2, 2023

Benchmark for Linux-cuda

    <details open>
      <summary>Click to hide benchmark</summary>
      Benchmarks have changed between the two branches, unable to diff.
    </details>

Benchmark for Linux-default 743f0ba

Click to hide benchmark
Test Base PR %
fib/100/execute 4.8±0.20ms 4.8±0.15ms 0.00%
fib/100/prove 4.2±1.61s 2.4±0.33s -42.86%
fib/100/total 2.5±0.61s 2.1±0.20s -16.00%
fib/1000/execute 6.0±1.02ms 5.4±0.07ms -10.00%
fib/1000/prove 2.4±0.36s 2.3±0.33s -4.17%
fib/1000/total 2.8±0.61s 1986.5±99.19ms -29.05%
fib/10000/execute 10.4±0.20ms 10.3±0.25ms -0.96%
fib/10000/prove 7.4±0.60s 6.8±0.21s -8.11%
fib/10000/total 7.5±0.51s 7.5±0.46s 0.00%

Benchmark for macOS-default 743f0ba

Click to hide benchmark
Test Base PR %
fib/100/execute 2.7±0.08ms 2.7±0.13ms 0.00%
fib/100/prove 3.7±0.05s 3.6±0.05s -2.70%
fib/100/total 3.7±0.08s 3.6±0.04s -2.70%
fib/1000/execute 3.1±0.10ms 3.0±0.11ms -3.23%
fib/1000/prove 3.7±0.04s 3.7±0.06s 0.00%
fib/1000/total 3.7±0.08s 3.6±0.07s -2.70%
fib/10000/execute 6.1±0.05ms 6.1±0.10ms 0.00%
fib/10000/prove 15.0±0.07s 15.0±0.15s 0.00%
fib/10000/total 15.0±0.13s 15.0±0.13s 0.00%

Benchmark for macOS-metal

    <details open>
      <summary>Click to hide benchmark</summary>
      Benchmarks have changed between the two branches, unable to diff.
    </details>

@flaub flaub merged commit 3e78293 into main Oct 2, 2023
20 checks passed
@flaub flaub deleted the flaub/versions branch October 2, 2023 00:38
Copy link
Member Author

flaub commented Oct 2, 2023

Merge Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants