Eclipse XACC 1.0.0 Release Review

Type
Release
State
Successful
End Date of the Review Period

Reviews run for a minimum of one week. The outcome of the review is decided on this date. This is the last day to make comments or ask questions about this review.

Project
Release

1.0.0

Description

XACC provides a system-level software infrastructure for heterogeneous quantum-classical computing architectures. This initial 1.0.0 release provides the first iteration of the core XACC API which decomposes the quantum-classical programming workflow into frontend, middle-end, and backend architectural layers. The frontend contributes interfaces for mapping existing and future quantum languages to a core intermediate representation (IR). The middle-end defines the interfaces that make up this IR as well as optimizations and transformations of it. The backend defines the interfaces necessary for describing backend quantum computers (and simulators/emulators) in a hardware agnostic fashion. 

This release also provides implementations of these core XACC interfaces for gate and adiabatic/annealing model quantum computation. We provide support for IBM, Rigetti, and D-Wave quantum computers. We further extend the core XACC API with support for error mitigation, circuit optimization, quantum language transpilers/compilers, quantum observables, and classical optimizers. Moreover, this release provides a prototype Python API wrapping the core C++ infrastructure. 

API Certification

The project leadership certifies that the APIs in this release are "Eclipse Quality".

Architectural Issues

The XACC architecture builds off the CppMicroServices C++ native, partial implementation of the OSGi specification. XACC is therefore extensible in a large number of critical quantum programming workflow phases. Developers are able to extend core interfaces, build them via CMake into standard UNIX shared objects/libraries, and drop them into a pre-defined folder for XACC to pick up and register at runtime. This flexibility enables sophosticated quantum applications that are by default able to run on a number of quantum computing backends. 

Non-Code Aspects

Most of the user documentation for XACC is hosted at https://xacc.readthedocs.io. 

Conforms To UI/UX Guidelines
Not applicable (project doesn't provide UI)
Usability Details

XACC provides a core C++ API for the programming, compilation, and execution of quantum-classical applications. Usability is enabled via an interface-based programming model, whereby concrete implementations are hidden behind core XACC interfaces. XACC is customizable in the sense that users/developers can extend these core interfaces for various aspects of the quantum programming workflow, and drop shared libraries containing the concrete implementation into a pre-ordained plugins folder for XACC to register and make available. XACC further enables usability and productivity through a prototype Python API exposing the same functionality available in the C++ API using pybind11. 

Communities

We have engaged the quantum programming community by hosting hands-on tutorials, conference talks, and documentation development. We have started the Eclipse Quantum Computing Software Working Group and hosted virtual meetings with experts in the field. We have published peer-reviewed papers on XACC.