Enabling Multi-threading in Heterogeneous Quantum-Classical Programming Models

by   Akihiro Hayashi, et al.

In this paper, we address some of the key limitations to realizing a generic heterogeneous parallel programming model for quantum-classical heterogeneous platforms. We discuss our experience in enabling user-level multi-threading in QCOR as well as challenges that need to be addressed for programming future quantum-classical systems. Specifically, we discuss our design and implementation of introducing C++-based parallel constructs to enable 1) parallel execution of a quantum kernel with std::thread and 2) asynchronous execution with std::async. To do so, we provide a detailed overview of the current implementation of the QCOR programming model and runtime, and discuss how we add 1) thread-safety to some of its user-facing API routines, and 2) increase parallelism in QCOR by removing data races that inhibit multi-threading so as to better utilize available computing resources. We also present preliminary performance results with the Quantum++ back end on a single-node Ryzen9 3900X machine that has 12 physical cores (24 hardware threads) with 128GB of RAM. The results show that running two Bell kernels with 12 threads per kernel in parallel outperforms running the kernels one after the other each with 24 threads (1.63x improvement). In addition, we observe the same trend when running two Shor's algorthm kernels in parallel (1.22x faster than executing the kernels one after the other). It is worth noting that the trends remain the same even when we only use physical cores instead of threads. We believe that our design, implementation, and results will open up an opportunity not only for 1) enabling quicker prototyping of parallel/asynchrony-aware quantum-classical algorithms on quantum circuit simulators in the short-term, but also for 2) realizing a generic heterogeneous parallel programming model for quantum-classical heterogeneous platforms in the long-term.


page 1

page 3


Extending C++ for Heterogeneous Quantum-Classical Computing

We present qcor - a language extension to C++ and compiler implementatio...

Introducing the Quantum Research Kernels: Lessons from Classical Parallel Computing

Quantum computing represents a paradigm shift for computation requiring ...

Closing the Performance Gap with Modern C++

On the way to Exascale, programmers face the increasing challenge of hav...

XACC: A System-Level Software Infrastructure for Heterogeneous Quantum-Classical Computing

Quantum programming techniques and software have advanced significantly ...

Microarchitectures for Heterogeneous Superconducting Quantum Computers

Noisy Intermediate-Scale Quantum Computing (NISQ) has dominated headline...

Prediction of Parallel Speed-ups for Las Vegas Algorithms

We propose a probabilistic model for the parallel execution of Las Vegas...

A Newcomer In The PGAS World – UPC++ vs UPC: A Comparative Study

A newcomer in the Partitioned Global Address Space (PGAS) 'world' has ar...

Please sign up or login with your details

Forgot password? Click here to reset