The Quantum Software group at IQC
As a growing array of quantum technologies are developed, we will need “quantum software”. We’ll need software for the systems controlling the quantum hardware, and we’ll need software to be run on the quantum hardware.
The main focus of our quantum software group is to develop a range of tools for the synthesis and optimization of quantum software to be run on fault-tolerant quantum computing hardware. See stage 4 in Figure 1 of this nice survey by Devoret and Schoelkopf. Some of our tools may also be applied to physical layer gates.
This page overviews the activities of our group and points to tools that we have developed over the years.
University of Waterloo
University of Toronto
Jacob Marks, Tomas J.-O'Connor and Vlad Gheorghiu
New Journal of Physics 19, 113022 (2017).
O. Di Matteo, M. Mosca
Quantum Science and Technology 1 (1) (2016)
N. Abdessaied, M. Amy, M. Soeken, R. Drechsler
M. Amy, O. Di Matteo, V. Gheorghiu, M. Mosca, A. Parent, J. Schanck
N. Abdessaied, M. Amy, R. Drechsler, M. Soeken
M. Amy, M. Roetteler, K. Svore
Version 1.0-rc2 - Release Candidate 2, 6 September 2017
Quantum++ is a modern C++11 general purpose quantum computing library, composed solely of template header files. Quantum++ is written in standard C++11 and has very low external dependencies, using only the Eigen 3 linear algebra header-only template library and, if available, the OpenMP multi-processing library.
Quantum++ is not restricted to qubit systems or specific quantum information processing tasks, being capable of simulating arbitrary quantum processes. The main design factors taken in consideration were the ease of use, high portability, and high performance. The library's simulation capabilities are only restricted by the amount of available physical memory. On a typical machine (Intel i5 8Gb RAM) Quantum++ can successfully simulate the evolution of 25 qubits in a pure state or of 12 qubits in a mixed state reasonably fast.
Version 1.2.0 - 27 May 2016
pQCS, short for "parallel quantum circuit synthesis", is a tool which leverages parallel collision finding algorithms to exactly synthesize multi-qubit circuits with optimal T-count. The details of the algorithm can be found in Olivia Di Matteo's MSc thesis.
pQCS is written in C++11, and comes in two 'flavours'. The first uses OpenMP for parallelization (making it suitable for use on a multi-core personal computer), and the second uses Boost.MPI (for use on clusters). pQCS has been tested extensively on Linux and Mac OS X. New features are actively under development.