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¶
Install the core package and the backend you intend to use.
Write, run and read the results of your first distributed program.
Ranks, the communicator block, circuits, and how a program is executed.
What each backend targets, what it supports, and how to configure it.
qsend/qrecv, qscatter/qgather and expose/unexpose in detail.
Every public class, method and configuration field.
What is tested, how to run it, and how to add a test of your own.
Documentation contents¶
Getting started
User guide
Backends
Development
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