Skip to content

Releases: quantumlib/Qualtran

Qualtran v0.5

10 Sep 22:01
77f789a
Compare
Choose a tag to compare

This preview release of Qualtran contains many improvements and new bloqs.

This is the last planned release before the 1.0 release of Qualtran. 1.0 will bring stronger stability guarantees to the core Qualtran framework: namely everything in the qualtran namespace outside of qualtran.bloqs. The library of bloqs will continue to be extended and edited for greater breadth and accuracy. This development release contains some backwards-incompatible changes to prepare for 1.0. Read on for more information

Bartiq and QREF integration

This release includes interoperability with Bartiq via the QREF format implemented by @mstechly in #1194. Interoperability between quantum algorithms tooling is crucial to accelerate progress in the field.

Qualtran software paper

We've authored a manuscript describing the design of Qualtran, some important algorithmic primitives contained in qualtran.bloqs, and case studies on problems of interest. If you use Qualtran in your own work, please cite:

Expressing and Analyzing Quantum Algorithms with Qualtran. arXiv:2409.04643.

Gate counting and leaf bloqs

We've unified the gate counting framework under the qualtran.resource_counting framework.

  • The _t_complexity_ annotation is deprecated. Please continue to annotate callees with build_call_graph or use my_static_costs to provide a static override.
  • The cirq_interop.t_complexity function no longer uses any custom logic. Rather, it goes via qualtran.resource.estimation tools; specifically the QECGatesCost cost key. There should be no observable change to the computed costs. #1313 #1359 #1323 #1333
  • Toffoli is now an atomic, leaf bloq #1388
  • CSwap is now an atomic leaf bloq #1393
  • And will become an atomic leaf bloq #1347
  • The GraphvizCallGraph.from_bloq helper method can draw call graphs with costs #1254

Tensor simulation overhaul

The tensor simulation protocol was changed to support efficient simulation of a larger class of circuits, including shallow-but-wide circuits. Qualtran can simulate a 2x32-qubit adder using only 6 qubit's worth of RAM for a specific input/output ket following the changes.

  • Overhaul implemented in #1070. Tensor simulation will always try to flatten as much as possible before starting the contraction. The semantics of my_tensors have changed. If you are overriding this method to support tensor simulation, consider relying directly on the decomposition or read the documentation for full details on how to implement the new method.
  • Changes to .flatten in #1061. Flattening will no longer raise an error if a bloq doesn't have a decomposition. .flatten() with no arguments will flatten as much as possible.

Physical cost models

The qualtran.surface_code module has been refactored so both Beverland- and Gidney-derived models follow the same interface.

  • Code changes in #1141 #1154 #1157 #1183 #1185
  • qualtran.resource_estimation.GateCounts is used directly. AlgorithmSummary and MagicCount dataclasses have been removed as redundant.

Other framework changes

  • The bit_tools module has been removed and replaced with QDType features by @charlesyuan314 in #1041. Please migrate your code to use QDType methods to convert between bits. New, vectorized from_bits and to_bits by @anurudhp in #1199
  • Greedy topological sort of the binst graph to minimize qubit allocations / deallocations by @tanujkhattar in #1099
  • Cirq interop overhaul/bugfixes @tanujkhattar in #1100
  • QFxp: use integer values for classical sim instead of fxpmath.Fxp by @anurudhp in #1204
  • Change return type of build_call_graph to set | dict by @dstrain115 in #1356 #1392
  • pretty_name is deprecated #1340. Use __str__.
  • Bloq.supports_decompose_bloq has been removed in #1382. Use try/except.
  • BoundedQUInt has been renamed to BQUInt by @fdmalone in #1363
  • Better support for symbolics in Signature by @anurudhp in #1353 and @mpharrigan in #1301
  • param ctrl_spec of get_ctrl_system will always be non-None by @anurudhp in #1209
  • Zero-bitsize connections are explicitly not allowed by @mpharrigan in #1105

New and updated bloqs

Read more

Qualtran v0.4

03 Jun 23:52
5f56f82
Compare
Choose a tag to compare

We're pleased to announce the latest beta release of Qualtran: v0.4.0. This release includes many improvements and fixes throughout the library, but some highlights include:

Highlights

  • Support for arbitrary CostKeys: compute gate counts, qubit counts, or define your own cost
  • Many more bloqs support symbolic parameters and cost estimates
  • Bugfixes for using Qualtran on Windows
  • Better control for how bloqs display themselves in diagrams
  • Mypy type-checking is enabled and enforced library-wide.

Full Changelog: v0.3.0...v0.4.0

Qualtran v0.3.0

25 Apr 17:13
3728fe8
Compare
Choose a tag to compare

This is an incremental beta release of Qualtran.

Highlights

  • Quantum data types. Registers now have types.
  • T-complexity protocol improvements.
  • More bloqs!

Full Changelog: v0.2.0...v0.3.0

Qualtran v0.2.0

08 Feb 21:06
fb1708f
Compare
Choose a tag to compare

This is an incremental beta release of Qualtran.

Highlights include:

  • Improved Cirq interoperability, and the absorption of the-package-formerly-known-as Cirq-FT into the Qualtran repository.
  • More chemistry bloqs.
  • The Adjoint protocol

Full Changelog: v0.1.0...v0.2.0

Qualtran v0.1.0

25 Jul 21:19
bcf6159
Compare
Choose a tag to compare

This is the initial, experimental preview release of Qualtran