NetQMPI

NetQMPI brings the classical MPI (Message Passing Interface) programming model to Distributed Quantum Computing (DQC). Following a Single-Program, Multiple-Data (SPMD) paradigm, you write one script that runs across N quantum nodes and coordinates them through message-passing primitives — including quantum-aware ones such as qsend(), qrecv() and quantum collectives — without manually orchestrating entanglement, teleportation or classical messaging.

NetQMPI is backend-agnostic: the same, unmodified application runs on a quantum-network simulator, an HPC emulator or a circuit simulator, simply by selecting a backend on the command line.

from netqmpi.sdk.environment import Environment

def main(env: Environment = None):
    comm = env.comm

    with comm:
        circuit = env.create_circuit(num_qubits=1, num_clbits=1)

        if comm.rank == 0:
            circuit.h(0)                                    # prepare |+>
            comm.qsend(circuit, [0], comm.get_next_rank(0))  # and give it away
        else:
            comm.qrecv(circuit, [0], comm.get_prev_rank(comm.rank))
            circuit.measure(0, 0)
netqmpi -n 2 app.py --cunqa      # HPC vQPU emulation      (reference backend)
netqmpi -n 2 app.py --netqasm    # quantum-network simulation
netqmpi -n 2 app.py --aer        # circuit simulation
netqmpi -n 2 app.py --qoala      # node execution environment

CUNQA is the reference backend, and what the shipped examples are written against. Aer now implements the whole primitive set as well — point-to-point transfers, the rooted collectives and the telegate window — which makes it the fast way to check a program’s logic before committing it to a network simulation. NetQASM covers everything but the telegate window; Qoala covers point-to-point transfers. See the backend guide for the full matrix.


Where to start

Installation

Install the core package and the backend you intend to use.

Installation
Quick start

Write, run and read the results of your first distributed program.

Quick start
Core concepts

Ranks, the communicator block, circuits, and how a program is executed.

Core concepts
Backends

What each backend targets, what it supports, and how to configure it.

Backends
Communication primitives

qsend/qrecv, qscatter/qgather and expose/unexpose in detail.

Communication primitives
API reference

Every public class, method and configuration field.

API reference
Test suite

What is tested, how to run it, and how to add a test of your own.

The test suite

Documentation contents


Citing NetQMPI

If you use NetQMPI in your research, please cite:

NetQMPI: An MPI-Inspired Library for Programming Distributed Quantum Applications Over Quantum Networks Using NetQASM SDK. F. Javier Cardama, Jorge Vázquez-Pérez, Tomás F. Pena, Andrés Gómez. IEEE Access, Vol. 14, 2026, pp. 125459-125475. DOI: 10.1109/ACCESS.2026.3723566

Emulating NetQMPI applications with CUNQA: A Decoupled Architecture for HPC Environments. Jorge Vázquez-Pérez, F. Javier Cardama, Tomás F. Pena, Andrés Gómez. Proceedings of the IEEE International Conference on Distributed Computer Systems (ICDCS 2026). DOI: 10.1109/ICDCSW72724.2026.00045

NetQIR: An Extension of QIR for Distributed Quantum Computing. F. Javier Cardama, Jorge Vázquez-Pérez, C. Piñeiro, T. F. Pena, J. C. Pichel, Andrés Gómez. Future Generation Computer Systems, Vol. 174, 2026, Article 107989. DOI: 10.1016/j.future.2025.107989