qat.pipelines.base module

class AbstractPipeline

Bases: ABC

An abstraction of pipelines used in QAT to compile and execute quantum programs.

A pipeline is composed of many different components used to specify how a quantum program is compiled and executed. On the compilation front, there is the:

  1. Model: Contains calibration information surrounding the QPU.

  2. TargetData: Contains information about the target device.

  3. Frontend: Compiles a high-level language-specific, but target-agnostic, input (e.g., QASM, QIR, …) to QAT’s intermediate representation (IR), QatIR.

  4. Middleend: Takes the QatIR and performs a sequences of passes that validate and optimise the IR, and prepare it for codegen.

  5. Backend: Handles code generation to allow the program to be executed on the target.

On the execution front, there is the:

  1. Engine: Communicates the compiled program with the target devices, and returns the results.

  2. Runtime: Manages the execution of the program, including the engine and the post- processing of the results.

abstract property backend: BaseBackend
abstract property engine: NativeEngine
abstract property frontend: BaseFrontend
abstract property middleend: BaseMiddleend
abstract property model: QuantumHardwareModel
abstract property name: str
abstract property runtime: BaseRuntime
abstract property target_data: TargetData