Skip to content

Add IBM Heron R2 device profile #15

Description

@kateebonner

Preamble

This issue is part of unitaryHACK26. You have to be registered to complete this issue. Learn more about the Pull Request process here and about unitaryHACK rules here! A note about AI Slop: while we are open to collaboration with LLMs for unitaryHACK, fully AI-generated PRs are not acceptable. It is at the maintainers' discretion whether or not LLM-generated PRs are the right fit for the issues, and those that appear fully AI-generated may be immediately rejected. Read unitaryHACK's full AI Policy here.

Background

Stretto currently only has one device profile: HeronR3(). The IBM Heron R2 is the previous generation processor, deployed across three active systems: ibm_fez, ibm_kingston, and ibm_marrakesh (all 156-qubit, heavy-hex). Adding HeronR2() lets users benchmark Stretto compilation against R2 hardware and compare results with R3.

The pattern to follow is HeronR3() — a no-argument function returning a TransmonDevice with representative median values for the processor type, not any specific machine. The three R2 systems run the same processor and share the same profile; per-machine calibration differences are noise that doesn't belong here.

Minimal Reproducible Example

Today, R2 users have no matching profile:

using Stretto

# ❌ No R2 profile — R3 is the only option
result = compile_block(qft_circuit(2), HeronR3(), [1, 2])

After this issue is resolved:

using Stretto

# ✅ Compile against the Heron R2 processor profile
result = compile_block(qft_circuit(2), HeronR2(), [1, 2])

What to implement

Add a HeronR2() function to src/profiles.jl following the exact same pattern as HeronR3().

Known published specs for Heron R2 (arXiv:2410.00916):

  • CZ gate duration: 68 ns, median error: 2.848×10⁻³ (0.28%)
  • T1: ~218 μs, T2: ~264 μs (medians across qubits)
  • Topology: heavy-hex, 156 qubits (model the first 8 in a linear chain, same as R3)
  • Native gates: CZ, SX, X

Parameters not in published papers (qubit frequencies, anharmonicity, coupling strength) need to be sourced from IBM Quantum Platform calibration data. All three R2 systems use the same processor — pick whichever you have access to (ibm_fez, ibm_kingston, or ibm_marrakesh) and use median values across qubits:

  1. Create a free account at quantum.cloud.ibm.com
  2. Navigate to any R2 system under Compute Resources
  3. Read qubit frequencies (GHz), anharmonicity (GHz), and coupling strengths (GHz) from the calibration table

Add a test verifying the profile constructs correctly and that compile_block(qft_circuit(2), HeronR2(), [1, 2]) returns a BlockResult with fidelity in [0, 1].

Out of scope

  • Modeling more than 8 qubits in the linear chain
  • Heron R1 (ibm_torino, 133 qubits) — separate issue if needed
  • Machine-specific calibration (if you need per-machine values, construct a TransmonDevice directly)

Why this matters

Having multiple device profiles lets users compare Stretto's compilation quality across hardware generations and makes Stretto results more useful on Metriq, where benchmarks are tracked per device. It also makes the profiles module a real reference rather than a single example.

Getting started

Metadata

Metadata

Labels

enhancementNew feature or requestunitaryHACKunitaryHACK 2026 bounty

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions