Skip to content

Modernize PP.jl benchmarks - #212

Merged
david-pl merged 3 commits into
QuEraComputing:bench/cross-libraryfrom
MSRudolph:bench/cross-library
Aug 31, 2026
Merged

Modernize PP.jl benchmarks#212
david-pl merged 3 commits into
QuEraComputing:bench/cross-libraryfrom
MSRudolph:bench/cross-library

Conversation

@MSRudolph

Copy link
Copy Markdown

Hi all, thanks for including PauliPropagation.jl in your benchmark. This is a PR showcasing the latest performance possible with PauliPropagation.jl. It requires version 0.8, and uses the VectorPauliSum with the PauliPropagation.Performance sub-module. Also, it performs in-place propagation, which by itself shaves off 4x and 2x (on v0.8.1, but should be similar on v0.7.3) from the baseline (see second timing column). The timings are single-threaded, min of 3 after warm-up, on an AMD Ryzen AI 7 350 CPU. The validation against ppvm matches to 1e-10.

TFIM (STEPS=10 DT=0.1 J=1 h=1 ATOL=1e-6), time in seconds:

qubitstermsbaselinein-place baselinethis PRppvm
847010.00970.00680.00120.0029
16195290.0440.0370.00410.012
24343530.240.0820.0120.025
32491770.330.140.0160.040
40640010.740.240.0340.058
48788251.240.350.0490.079
56936492.330.510.0660.106
641084732.750.650.0830.140

Heisenberg (same parameters), time in seconds:

qubitstermsbaselinein-place baselinethis PRppvm
610220.0120.00680.00100.0034
8163240.150.120.0150.052
102253532.451.210.200.69
12117484911.86.031.054.86
14291587926.413.21.689.10

@github-actionsgithub-actionsBot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

👋 Thanks for opening your first pull request against PPVM!

A quick note on contribution terms: by submitting this PR you
agree that your contribution is licensed under the
Apache License 2.0
and that you accept the
PPVM Contributor License Agreement.
Please skim those before a maintainer reviews — opening this PR
counts as your acceptance.

A few things that will speed up review:

We'll get to your PR as soon as we can. Thanks for contributing!

robpatterson13and others added 2 commits August 27, 2026 12:30
### Summary
Migrates ppvm-vihaco and vihaco-circuit-isa from vihaco 0.1.1 to vihaco
0.4.0.
### Changes
- Migrates PPVM to vihaco 0.4.0 surface/runtime instruction APIs.
- Replaces the legacy parser pipeline with v0.4 parsing and resolution.
- Generates the circuit instruction set with `vihaco::component!`.
- Enforces one-to-one source-to-runtime instruction lowering.
- Updates .sst syntax, including:
```
const.u64 0 → cpu::cpu.const u64, 0
eq.u32 → cpu::cpu.eq u32
circuit.h → circuit::circuit.h
ret → cpu::cpu.ret 0
@Label: → cpu::cpu.label @Label
```
- Resolves branch targets and function calls to runtime addresses.
- Adds bytecode v2 serialization for function tables, labels,
signatures, and main_function.
- Updates CLI, TUI, examples, embedded programs, and test fixtures.
- Adds and updates migration documentation in
`docs/changelog/vihaco-0.4.md`.
### Verification
- cargo test --workspace
- cargo check -p ppvm-vihaco
- cargo test -p ppvm-vihaco
- cargo test -p vihaco-circuit-isa
- cargo test -p ppvm-cli
- cargo test -p ppvm-tui
@david-pl

Copy link
Copy Markdown
Collaborator

@MSRudolph thanks for this! Just to note: there's not place where we run benchmarks automatically. So, the changes here won't be reflected until another manual run is done.

@david-pl
david-pl merged commit 4be9756 into QuEraComputing:bench/cross-libraryAug 31, 2026
12 of 13 checks passed
@github-actions

Copy link
Copy Markdown
PR Preview Action v1.8.1
Preview removed because the pull request was closed.
2026-08-31 08:10 UTC

Sign up for freeto 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.

3 participants

@MSRudolph@david-pl@robpatterson13