Skip to content

Commit

Permalink
Mention Stim in README and bump version.
Browse files Browse the repository at this point in the history
  • Loading branch information
Krastanov committed Jun 20, 2021
1 parent 7c98cec commit 308359e
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 2 deletions.
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "QuantumClifford"
uuid = "0525e862-1e90-11e9-3e4d-1b39d7109de1"
authors = ["Stefan Krastanov <[email protected]>"]
version = "0.2.9"
version = "0.2.10"

[deps]
Combinatorics = "861a8166-3701-5b0c-9a16-15d98fcdc6aa"
Expand Down
26 changes: 25 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,31 @@ julia> CNOT * S"-XX

## Quick Benchmarks

Fast, in-place, (mostly) allocation free implementations. Operations on states are very efficient. Operations modifying the Clifford operators themselves are not yet as efficient.
Fast, in-place, allocation free implementations.

#### Comparison against other Clifford simulators

The only other simulator of similar performance I know of is [Stim](https://github.com/quantumlib/Stim). In particular, Stim implements convenient tracking of Pauli frames, that makes simulating the performance of error correcting codes blazingly fast (which are possible in QuantumClifford.jl, but no convenient interface is provided for that yet).

The "low level" functionality is equaly fast in Stim and in QuantumClifford:

```
# QuantumClifford.jl
julia> a = random_pauli(1_000_000_000);
julia> b = random_pauli(1_000_000_000);
julia> @btime a*b;
101.032 ms (4 allocations: 238.42 MiB)
```

```
# Stim
In []: a = PauliString.random(1_000_000_000);
In []: b = PauliString.random(1_000_000_000);
In []: %timeit a*b
214 ms ± 4.65 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
```

Of note is that Stim achieved this performance through high-quality C++ SIMD code of significant sophistication, while QuantumClifford.jl is implemented in pure Julia.

#### Canonicalization of a random 100-qubit stabilizer

Expand Down

0 comments on commit 308359e

Please sign in to comment.