qat.experimental.pipelines.compile module

Experimental Qblox compile pipeline.

Wires together the experimental frontend, middleend, and backend for the experimental Qblox target, using a CanonicalSystemData instance rather than the legacy QuantumHardwareModel/PhysicalHardwareModel used by production pipelines such as QbloxCompilePipeline1.

There is no BaseModelLoader that produces CanonicalSystemData (it can be materialised from a supported source payload through materialise()), so this pipeline cannot be wired up through a qatconfig HARDWARE/hardware_loader entry. Instantiate it directly instead:

from qat.experimental.pipelines.compile import (
    ExperimentalQbloxCompilePipeline,
    ExperimentalQbloxCompilePipelineConfig,
)

pipeline = ExperimentalQbloxCompilePipeline(
    config=ExperimentalQbloxCompilePipelineConfig(),
    model=canonical_system_data,
)

The program passed to compile() must be a QuantumInstructionBuilder (PuRR IR) because the experimental frontend currently exposes only the PuRR importer.

The inherited target_data argument carries the Qblox limits used by the backend and lowering pipeline.

class ExperimentalQbloxCompilePipeline(config, model=None, loader=None, target_data=None, engine=None)

Bases: UpdateablePipeline

Compiles programs for the experimental Qblox target using the frontend, middleend, and backend stack.

This pipeline is for compilation purposes only and does not execute programs.

Parameters:
  • config (PipelineConfig) – The pipeline configuration with the name of the pipeline, and any additional parameters that can be configured in the pipeline.

  • model (QuantumHardwareModel | PhysicalHardwareModel | None) – The hardware model to feed into the pipeline. Defaults to None.

  • loader (BaseModelLoader | None) – The hardware loader used to load the hardware model which can be used to later refresh the hardware model. Defaults to None.

  • target_data (TargetData | None) – The data concerning the target device, defaults to None

  • engine (NativeEngine | None) – The engine to use for the pipeline, defaults to None.

Raises:

ValueError – If neither model nor loader is provided.

class ExperimentalQbloxCompilePipelineConfig(**data)

Bases: PipelineConfig

Configuration for ExperimentalQbloxCompilePipeline.

Parameters:

name – The name of the pipeline, defaults to “experimental_qblox”.

Create a new model by parsing and validating input data from keyword arguments.

Raises [ValidationError][pydantic_core.ValidationError] if the input data cannot be validated to form a valid model.

self is explicitly positional-only to allow self as a field name.

model_config: ClassVar[ConfigDict] = {}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

name: str