In this challenge you will implement one or several quantum algorithms and obtain and analyze the estimates of resources required for running them on fault tolerant quantum computers.
This challenge is organized as a part of the Quantum Resource Estimation Workshop at QCE’24. It aims to highlight the significance of quantum resource estimation in quantum algorithms research and to encourage experimentation with and adoption of automated tools that perform resource estimation.
Quantum resource estimation is the area of quantum information science that aims to answer the question “How many physical qubits and how much time is necessary to execute a quantum algorithm under specific assumptions about the hardware platform used?” The estimates of the answers are done under realistic assumptions about architecture of fault tolerant quantum computers, such as physical qubit parameters and error correction schemes used.
Getting these kinds of resource estimates serves at least three purposes. First, we can use it to deduce the conditions that quantum hardware needs to meet to offer practical quantum advantage. Second, resource estimation clarifies which algorithms truly give quantum advantage over their classical counterparts, and which ones do not. Third, it allows us to compare the efficiency of different algorithms that solve the same problem long before they become viable to run on quantum machines. Being able to answer such questions gives us essential information for defining our vision for the future of quantum computing.
In this challenge, your goal is to obtain resource estimates for a quantum algorithm of your choice.
Choose a quantum algorithm (for example, quantum state preparation, arbitrary unitary implementation, reversible quantum computing algorithms such as integer comparison or arithmetic, Grover’s search for solving a specific problem, qRAM, etc.) to explore.
Implement it using one or several of the toolkits that include automatic quantum resource estimation tools (see the list of tools eligible for this challenge and the documentation/getting started examples below)
Get the logical and physical resource estimates for your implementation.
Keep exploring!
If you've implemented an algorithm described in a paper that includes the analysis of logical resource counts, compare the logical resource estimates produced by the tool with the numbers obtained theoretically. (If the results you get are different from the theoretical ones, it doesn’t mean they’re wrong! Different estimates are done under different underlying assumptions about code execution, which can be an interesting topic to explore.)
Get the resource estimates for using your algorithm for solving the problem for increasing input sizes.
Compare efficiency of different implementations of the same algorithm.
Compare resource requirements for running the algorithm under different assumptions about the parameters of the hardware platform it could run on, using different error correction schemes, and so on. How does changing assumptions impact the resource estimates?
Compare the resource estimates obtained using several different tools.
Submit your project by filling out the form by Monday, July 29, 2024 AoE: https://forms.gle/qFAyw54tupasYPBp8. Project submissions must include:
A 3-page pdf file describing your project: the question you aimed to answer, the algorithm you chose, the approach you took to doing resource estimates, the results you obtained, and the interesting observations you made.
A link to your project’s GitHub repo containing the code and the results of your work.
You’re welcome to publish a writeup of your work as a blog post!
Projects will be evaluated by a judging panel of resource estimation experts based on their creativity, technical merit, and educational value.
The authors of projects deemed complete will be invited to present their work in one of a series of online presentations held in early August. The authors of the best projects based on the writeup and presentation will be invited to present their work at the Quantum Resource Estimation workshop held as part of IEEE Quantum Week 2024! Unfortunately, the invitation does not include covering registration and travel costs.
May 13th – Challenge announced
Late May – Online tutorials on the QRE tools
July 29th – Submissions due
August 1st - 9th – Online project presentations
August 15th – Winners announced
September 16th - 20th – Winners’ project presentations at IEEE Quantum Week 2024, Montréal, Canada
The projects will be evaluated based on their creativity, scientific merit, and presentation (this includes code quality).
Each project must use one or more of the resource estimation tools listed below to get resource estimates of an algorithm.
You can build your project on top of existing work (for example, a project you did for another event or for a class). In this case, you need to specify which parts of the project were “premade” and which ones - created specifically for this challenge.
If you have any questions regarding the challenge or the topic of QRE in general, please join QRE discord.
Brian Goldsmith made a presentation with an overview of the QRE tools below, you can find the recording of his talk here.
Azure Quantum Resource Estimator allows you to estimate logical and physical resources required to run algorithms on a fault-tolerant quantum computer. The tool supports three main ways to provide algorithm input to the resource estimation logic:
Use Q# code with Azure Quantum Development Kit, standalone or with Python classical host
Use Qiskit code with Azure Quantum service (requires an Azure account)
Convert logical-level resource counts into physical-level resource counts using Python
Introduction to Azure Quantum Resource Estimator challenge (video)
Documentation:
Introduction to Resource Estimator (official documentation)
Beverland et al. "Assessing requirements to scale to practical quantum advantage" (details the theoretical background for Azure Quantum Resource Estimator)
Examples of applications with resource estimates done using AQRE:
Small random circuit (Q# + Python Jupyter Notebook)
Shor and Ekerå-Håstad integer factorization algorithms (standalone Q# in VS Code)
Double-factorized chemistry algorithm (Q# + Python project)
Ising, Heisenberg, and Hubbard model Hamiltonian simulation (Q# + Python Jupyter Notebooks)
Get resource estimates of Qiskit code (quantum multiplier) with Azure Quantum service
Use precalculated logical estimates for unimplemented Q# operations
BenchQ is an open-source package for costing and compilation that allows users to make hardware-specific physical resource estimates. The package can be pip installed using:
pip install benchq
and the github repository can be found at:
https://github.com/zapatacomputing/benchq
A short video overview can be found here: https://www.youtube.com/watch?v=OhswkXjEZ4Q.
BenchQ has two modes of use:
Coarse mode: for an input logical quantum circuit, this simply models the costs of translating the circuit to a particular “layout” and then models the costs of implementing the laid-out circuit using the surface code. This approach is helpful when one wants to get a rough sense for the physical qubit counts and runtimes for a particular hardware model.
Detailed mode: for an input logical quantum circuit, this mode compiles fragments of the circuit down to a logical layout (using various methods of graph state compilation) and then models the costs of implementing the laid-out circuit using the surface code. This approach is helpful when one wants to accurately cost a quantum algorithm and learn the detailed accounting of the resource usages. These include: time and space spent on distillation, injection, routing, data operations, etc.
Examples:
pyLIQTR is an open source package developed by MIT Lincoln laboratory. pyLIQTR can be installed using:
pip install pyliqtr
and the github repository can be found at:
https://github.com/isi-usc-edu/pyLIQTR
pyLIQTR includes a number of quantum algorithm implementations and application instances. The majority of the algorithm implementations are based on the Quantum Signal Processing (QSP) and Quantum Singular Value Transform (QSVT) paradigm. Full circuit implementations can be constructed using these algorithms, which can then be analyzed, or output in the OpenQasm2 format.
pyLIQTR also contains jupyter notebook demonstrations of specific application instances. These include:
The 2-dimensional Fermi-Hubbard Model
The Heisenberg Model
Quantum Chemistry for Homogeneous Catalysis
Quantum Chemistry using local basis functions
Quantum Chemistry using periodic basis functions
For these problems, pyLIQTR provides utilities for Hamiltonian creation, block-encoding to a quantum oracle, and generation of a quantum circuit to implement quantum dynamics or ground state estimation.
Qᴜᴀʟᴛʀᴀɴ is an open-source Python library containing: 1) a set of abstractions for representing quantum programs, 2) a library of quantum algorithms expressed in that language, and 3) a suite of tools for reasoning about those algorithms and their costs.
Qualtran is hosted on GitHub (https://github.com/quantumlib/Qualtran) with documentation at https://qualtran.readthedocs.io/. It can be installed from source or with pip install qualtran.
Quantum operations and subroutines are subclasses of the Bloq interface and can be composed into algorithms. These composite bloqs are stored as a directed acyclic graph where quantum data (with quantum data types) flows between bloqs. This representation is natural for quantum programs but also lets you inspect your algorithm and compute its costs.
Qualtran comes with a library of existing primitives and algorithms including algorithms for simulating chemical systems, modular arithmetic operations for doing Shor’s factoring, and building block components like QROM, Quantum Variable Rotations, and state preparation.
Given an algorithm, you can use methods to compute T Complexities, do classical or quantum simulation (if applicable), produce circuit diagrams or call graphs, and translate logical costs to physical costs for a target architecture.
We know that QRE is a relatively new area within the realm of quantum computing and it might not be easy to learn about it - as far as we know it’s not covered in any textbook. The tools listed above include great resources for learning, but here are some others which you might find useful – either as a source of knowledge or inspiration for a project!
https://arxiv.org/abs/2402.12434 – great introduction into what QRE is all about
https://www.mustythoughts.com/qre-workshops - summary of the QRE workshops at QCE’23
https://arxiv.org/abs/2310.03011 - review paper + talk (https://www.youtube.com/watch?v=uPX1q3VU18s)