← Back to Benchmarks
Tier 2 Maximum — KLT MPS

54-Qubit MPS RCS

6×9 grid  ·  Depth 6  ·  MPS(χ=16)  ·  Tier 2 limit (N 21–54, d≤6)

58.2 s
Wall-clock time
54
Qubits
2,048
Distinct outcomes

What this benchmark tests

This is the Tier 2 maximum: 54 qubits at depth 6 using the KLT MPS engine. At depth 6, the entanglement entropy per qubit is 0.960 bits — approaching saturation — which places this circuit firmly in the regime where MPS requires approximation. The truncation error of 0.449 reflects controlled bond-dimension compression across 6 entangling layers.

The circuit uses a 6×9 nearest-neighbour grid with alternating horizontal and vertical CX layers (Sycamore-style topology), interleaved with random RZ/RX rotations on all qubits. 2,048 distinct bitstring outcomes were produced from 2,048 shots — confirming the distribution is highly spread across the full Hilbert space.

Result: 54 qubits, depth 6, KLT MPS(χ=16), 2,048 shots — completed in 58.2 seconds end-to-end on a 4 vCPU / 8 GB RAM cloud instance. No GPU, no quantum hardware.

Result summary

Circuit topology6×9 grid (54 qubits)
Circuit depth6
Simulation modeKLT MPS (χ=16)
Bond dimension16
Truncation error0.449
Shots2,048
Distinct outcomes2,048 / 2,048  ✓
Mean entropy0.960 bits/qubit
Wall-clock time58.2 s
TierTier 2 (N 21–54, depth ≤6)
Hardware4 vCPU / 8 GB RAM — CPU only

Reproduce this result

Install the Qumulator SDK and run the following. Use mode='tensor' with bond_dim=16 to invoke the KLT MPS engine used in this benchmark.

pip install qumulator
import os, time, math, random
from qumulator import QumulatorClient

client = QumulatorClient(
    api_url=os.environ["QUMULATOR_API_URL"],
    api_key=os.environ["QUMULATOR_API_KEY"],
)

# Tier 2 max: 54-qubit depth-6 RCS on a 6x9 nearest-neighbour grid
N, ROWS, COLS, DEPTH = 54, 6, 9, 6
rng = random.Random(2)

eng = client.circuit.engine(n_qubits=N, mode='tensor', bond_dim=16)

h_even = [(r*COLS+c, r*COLS+c+1) for r in range(ROWS) for c in range(0, COLS-1, 2)]
h_odd  = [(r*COLS+c, r*COLS+c+1) for r in range(ROWS) for c in range(1, COLS-1, 2)]
v_even = [(r*COLS+c, (r+1)*COLS+c) for r in range(0, ROWS-1, 2) for c in range(COLS)]
v_odd  = [(r*COLS+c, (r+1)*COLS+c) for r in range(1, ROWS-1, 2) for c in range(COLS)]
layers = [h_even, v_even, h_odd, v_odd]

for d in range(DEPTH):
    for q in range(N):
        eng.apply('rz', q, params=[rng.uniform(0, 2 * math.pi)])
        eng.apply('rx', q, params=[rng.uniform(0, 2 * math.pi)])
    for q0, q1 in layers[d % 4]:
        eng.apply('cx', [q0, q1])

t0 = time.time()
result = eng.run(shots=2048, seed=2, return_entropy_map=True)
elapsed = time.time() - t0

print(f"Elapsed       : {elapsed:.1f}s")
print(f"Trunc error   : {result.trunc_error:.4f}")
print(f"Mean S        : {sum(result.entropy_map)/N:.3f} bits/qubit")
print(f"Distinct      : {len(result.counts)} / {result.shots}")
About the benchmark numbers: The 58.2 s figure is the full end-to-end SDK wall-clock time measured against the Cloud Run engine (4 vCPU / 8 GB RAM), including API submission, job scheduling, simulation, and result retrieval.

MPS at depth 6: approximation in action

At depth 6, the entanglement entropy (0.960 bits/qubit) exceeds what bond dimension χ=16 can represent exactly — log2(16) = 4 bits per bond. The MPS engine compresses bond matrices using SVD truncation, discarding singular values below the threshold. The cumulative truncation error of 0.449 is the sum of all discarded singular values across the full simulation — a measure of how much information was approximated away.

Despite this approximation, the output distribution is well-spread: all 2,048 shots produced distinct bitstrings, indicating the circuit is generating near-uniform random sampling across 254 possible outcomes — consistent with a highly scrambled quantum state.

Compare with Tier 1 (exact statevector) which uses zero approximation but is limited to N≤20. The MPS engine trades exactness for qubit scale — enabling simulation 2.7× as many qubits at a comparable wall-clock time.
← Back to Benchmarks