progress.device

This module contains the quantum network device class. It is a ready-to-use quantum network device that can be used as a programmable repeater or end node of the network.

We show below the layered architecture of a quantum network device in our architectural model:

../_images/repeater.png

The device architecture is composed of the following layers (bottom-up):

  • Physical layer: The quantum hardware (quantum memory, processor, QNICs, etc.)

  • Link Layer Protocols: The clasical control protocols to generate robust entanglement over each QNIC.

  • Quantum Hardware Abstraction Layer: The QHAL (see QHAL). It abstracts the quantum hardware resources and provides a unified interface for the NET layer.

  • NET layer: The NET layer is responsible for processing link-generated entanglement and delivering long-range entanglement to the applications. We implemented the NET layer as a programmable framework called PQ-NET (see __init__).

We point out that from the Link Layer up, all the processing and the information exchange is done via classical communication. The Physical layer is the only layer that is responsible for quantum computation. The NET layer can request quantum operations to the Physical layer through the API exposed by the QHAL.

class progress.device.QNetworkDevice(device_id, num_qnics, num_cnics, num_qbits_qnic, qproc_params=None)[source]

Bases: Node

A quantum network device that can be used as a programmable repeater or end node of the network.

Parameters:
device_idint

The ID of the device. Should be unique in the network.

num_qnicsint

The number of QNICs.

num_cnicsint

The number of classical NICs.

num_qbits_qnicint

The number of memory qubits allocated to each QNIC.

qproc_paramsdict[str, any] or None, optional

The parameters of the quantum processor of this device. See get_processor() for details. If None, a default processor is created. Defaults to None. The field num_positions can be omitted, as it is set to num_qnics * num_qbits_qnic.

Notes

The device architecture is composed of the following layers (bottom-up):
  • Physical layer: The quantum hardware (quantum memory, processor, QNICs, etc.)

  • Link Layer Protocols: The clasical control protocols to generate robust entanglement over each QNIC.

  • Quantum Hardware Abstraction Layer: The QHAL (see QHAL). It abstracts the quantum hardware resources and provides a unified interface for the NET layer.

  • NET layer: The NET layer is responsible for processing link-generated entanglement and delivering long-range entanglement to the applications. We implemented the NET layer as a programmable framework called PQ-NET (see __init__).

Ports:
  • q_{i}: The i-th QNIC of this device.

  • c_{i}: The i-th classical NIC of this device.

  • controller: The controller port of this device. It is used for controller-device communication.

Attributes:
device_idint

The ID of the device.

num_qnicsint

The number of QNICs of this device.

num_cnicsint

The number of classical NICs of this device.

qhardwareQHardware

The quantum hardware of this device.

qhalQHAL

The QHAL of this device.

net_managerNetManagerProtocol

The NET manager installed on this device.

message_routerMessageRoutingService

The message router installed on this device.