Context Класс

Изолированная среда интерпретатора Q#.

Контекст предоставляет локальную среду выполнения Q#, в которой код оценивается, компилируется и выполняется в изоляции от других экземпляров контекста. Каждый контекст поддерживает собственное пространство имен кода.

Контекст имеет атрибут code который является модулем Python, содержащим все операции и типы Q#, определенные в этом контексте. Это позволяет вызывать операции Q# из Python.

Пример:


   ctx = qdk.Context()
   ctx.eval("operation Main() : Result { use q = Qubit(); X(q); MResetZ(q) }")
   assert ctx.run("Main()", 2) == [qdk.Result.One, qdk.Result.One]
   assert ctx.code.Main() == qdk.Result.One

Инициализирует новый изолированный контекст Q#.

Конструктор

Context(*, target_profile: TargetProfile = TargetProfile.Unrestricted, target_name: str | None = None, project_root: str | None = None, language_features: List[str] | None = None, _trace_circuit: bool | None = None, _is_global_context: bool = False)

Параметры Keyword-Only

Имя Описание
target_profile

Задание целевого профиля позволяет интерпретатору Q# создавать программы, совместимые с определенным целевым объектом. См. TargetProfile.

Default value: Unrestricted
target_name

Необязательное имя целевого компьютера, используемого для вывода совместимого target_profile параметра.

Default value: None
project_root

Необязательный путь к корневому каталогу с проектом Q# для включения. Он должен содержать манифест проекта qsharp.json.

Default value: None
language_features

Необязательный список флагов функций языка для включения. Они соответствуют экспериментальным или предварительным версиям языковых возможностей Q#. Допустимые значения:

  • "v2-preview-syntax": включает синтаксис предварительной версии 2 Q# . Это удаляет поддержку

форма блока выделения кубитов (use q = Qubit() { ... }), требующая формы инструкции (use q = Qubit();). Он также удаляет требование использовать set ключевое слово для изменяемых назначений переменных.

Default value: None
_trace_circuit
Default value: None
_is_global_context
Default value: False

Методы

circuit

Синтезирует канал для программы Q#. Необходимо указать выражение записи или операцию.

compile

Компилирует исходный код Q# в программу, которую можно отправить в целевой объект. Необходимо указать выражение записи или вызываемое с аргументами.

Пример:

dump_machine

Возвращает разреженный вектор состояния симулятора в качестве объекта StateDump.

eval

Оценивает исходный код Q#.

Выходные данные печатаются в консоли.

get_target_profile

Возвращает целевой профиль для этого контекста.

import_openqasm

Импортирует исходный код OpenQASM в интерпретатор этого контекста.

logical_counts

Извлекает количество логических ресурсов из исходного кода Q#. Необходимо указать выражение записи или вызываемое с аргументами.

run

Выполняет заданное выражение Q# для заданного количества снимков. Каждый снимок использует независимый экземпляр симулятора.

set_classical_seed

Задает начальное значение для генератора случайных чисел, используемого для классических операций случайного числа стандартной библиотеки. Это относится ко всему коду Q#, выполняемого, скомпилированного или предполагаемого в этом контексте.

set_quantum_seed

Задает начальное значение для генератора случайных чисел, используемого для квантовых измерений. Это относится ко всему коду Q#, выполняемого, скомпилированного или предполагаемого в этом контексте.

circuit

Синтезирует канал для программы Q#. Необходимо указать выражение записи или операцию.

circuit(entry_expr: str | Callable | GlobalCallable | Closure | None = None, *args, operation: str | None = None, generation_method: CircuitGenerationMethod | None = None, max_operations: int | None = None, source_locations: bool = False, group_by_scope: bool = True, prune_classical_qubits: bool = False) -> Circuit

Параметры

Имя Описание
entry_expr
str или Callable

Выражение записи. Кроме того, можно указать вызываемый объект, который должен быть вызываемым Q#.

Default value: None
*args
Обязательно

Аргументы для передачи вызываемому объекту, если он указан.

Параметры Keyword-Only

Имя Описание
operation
str

Операция синтезирования. Это может быть имя операции или лямбда-выражения. Операция должна принимать только кубиты или массивы кубитов в качестве параметров.

Default value: None
generation_method

Метод, используемый для создания канала. ClassicalEval оценивает классический поток управления во время создания канала. Simulate выполняет полное моделирование для трассировки канала. Static использует частичное вычисление и требует нецелевых профилейUnrestricted . По умолчанию, для None которого автоматически выбирается метод создания.

Default value: None
max_operations
int

Максимальное количество операций, включаемых в канал. По умолчанию это означает, что None ограничение не ограничено.

Default value: None
source_locations

Если Trueпараметр заметит каждую ворота с его исходным расположением.

Default value: False
group_by_scope

Если Trueоперации группируются по их содержащей области, например объявления функций или блоки цикла.

Default value: True
prune_classical_qubits

Если True, удаляет кубиты, которые никогда не используются в квантовых шлюзах (например, кубитах, используемых только в качестве классических элементов управления).

Default value: False

Возвращаемое значение

Тип Описание
<xref:Circuit>

Синтезированный канал.

Исключения

Тип Описание

Если возникает ошибка синтезирования канала.

compile

Компилирует исходный код Q# в программу, которую можно отправить в целевой объект. Необходимо указать выражение записи или вызываемое с аргументами.

Пример:

compile(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> QirInputData

Параметры

Имя Описание
entry_expr
Обязательно

Выражение Q#, которое будет использоваться в качестве точки входа для программы. Кроме того, можно указать вызываемый объект, который должен быть вызываемым Q#.

*args
Обязательно

Аргументы для передачи вызываемому объекту, если он указан.

Возвращаемое значение

Тип Описание
<xref:QirInputData>

Скомпилированная программа. Используется str() для получения строки QIR.

dump_machine

Возвращает разреженный вектор состояния симулятора в качестве объекта StateDump.

dump_machine() -> StateDump

Возвращаемое значение

Тип Описание

Состояние симулятора.

eval

Оценивает исходный код Q#.

Выходные данные печатаются в консоли.

eval(source: str, *, save_events: bool = False) -> Any

Параметры

Имя Описание
source
Обязательно

Исходный код Q# для вычисления.

Параметры Keyword-Only

Имя Описание
save_events

Если значение true, все выходные данные будут сохранены и возвращены. Если значение false, они будут напечатаны.

Default value: False

Возвращаемое значение

Тип Описание
Any

Значение, возвращаемое последней инструкцией в исходном коде, или сохраненные выходные данные, если save_events значение true.

Исключения

Тип Описание

Если возникает ошибка при оценке исходного кода.

get_target_profile

Возвращает целевой профиль для этого контекста.

get_target_profile() -> TargetProfile

import_openqasm

Импортирует исходный код OpenQASM в интерпретатор этого контекста.

import_openqasm(source: str, **kwargs: Any) -> Any

Параметры

Имя Описание
source
Обязательно
str

Программа или фрагмент OpenQASM.

**kwargs
Обязательно

Дополнительные аргументы ключевых слов. Распространенные варианты:

  • name (str): имя программы. Это используется в качестве точки входа для программы.

  • search_path (str): необязательный путь поиска для разрешения ссылок на файлы.

  • output_semantics (OutputSemantics): семантика выходных данных для компиляции.

  • program_type (ProgramType): тип компиляции программы для выполнения:

    • ProgramType.Operation (по умолчанию): источник становится операцией Q# в глобальном пространстве имен с параметрами для любых объявленных классических входных и параметров для каждого объявленного кубита, а любые явные или неявные объявления выходных данных становятся возвращаемым типом операции.

    • ProgramType.File: будет рассматривать источник ввода как автономную программу и создавать операцию в qasm_import пространстве имен, которая принимает только классические параметры, выделяет необходимые кубиты внутри и освобождает их в конце операции.

    • ProgramType.Fragments: выполняет предоставленный источник в текущем интерактивном интерпретаторе, определяя все объявленные переменные или операции в текущей области и возвращая значение последней инструкции в источнике.

Возвращаемое значение

Тип Описание
Any

Значение, возвращаемое последней инструкцией в исходном коде.

Исключения

Тип Описание

Если возникает ошибка при создании, анализе или анализе источника OpenQASM.

Если возникает ошибка компиляции программы.

logical_counts

Извлекает количество логических ресурсов из исходного кода Q#. Необходимо указать выражение записи или вызываемое с аргументами.

logical_counts(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> LogicalCounts

Параметры

Имя Описание
entry_expr
Обязательно

Выражение записи. Кроме того, можно указать вызываемый объект, который должен быть вызываемым Q#.

Возвращаемое значение

Тип Описание

Программные ресурсы с точки зрения количества логических ворот.

run

Выполняет заданное выражение Q# для заданного количества снимков. Каждый снимок использует независимый экземпляр симулятора.

run(entry_expr: str | Callable | GlobalCallable | Closure, shots: int, *args, on_result: Callable[[ShotResult], None] | None = None, save_events: bool = False, noise: Tuple[float, float, float] | PauliNoise | BitFlipNoise | PhaseFlipNoise | DepolarizingNoise | NoiseConfig | None = None, qubit_loss: float | None = None, seed: int | None = None, type: Literal['sparse', 'clifford'] | None = None, num_qubits: int | None = None) -> List[Any]

Параметры

Имя Описание
entry_expr
Обязательно

Выражение записи. Кроме того, можно указать вызываемый объект, который должен быть вызываемым Q#.

shots
Обязательно

Количество выстрелов для запуска.

*args
Обязательно

Аргументы для передачи вызываемому объекту, если он указан.

on_result
Обязательно

Функция обратного вызова, которая будет вызываться с каждым результатом.

save_events
Обязательно

Если значение true, выходные данные каждого снимка будут сохранены. Если значение false, они будут напечатаны.

noise
Обязательно

Шум, используемый в имитации.

qubit_loss
Обязательно

Вероятность потери кубитов в имитации.

seed
Обязательно

Начальное значение, используемое для генератора случайных чисел в моделировании, если таковой есть.

type
Обязательно

Тип используемого симулятора. Если не указано, будет использоваться разреженное векторное моделирование состояния по умолчанию.

num_qubits
Обязательно

Количество кубитов, используемых для типа моделирования "clifford". Если это не указано, симулятор Clifford предполагает значение по умолчанию 1000 кубитов.

Параметры Keyword-Only

Имя Описание
on_result
Default value: None
save_events
Default value: False
noise
Default value: None
qubit_loss
Default value: None
seed
Default value: None
type
Default value: None
num_qubits
Default value: None

Возвращаемое значение

Тип Описание

Список результатов или ошибок среды выполнения. Если save_events задано значение true, возвращается список ShotResult .

Исключения

Тип Описание

Если возникает ошибка, интерпретируемая входные данные.

Если количество выстрелов меньше 1.

set_classical_seed

Задает начальное значение для генератора случайных чисел, используемого для классических операций случайного числа стандартной библиотеки. Это относится ко всему коду Q#, выполняемого, скомпилированного или предполагаемого в этом контексте.

set_classical_seed(seed: int | None) -> None

Параметры

Имя Описание
seed
Обязательно

Начальное значение, используемое для классического генератора случайных чисел. Если нет, то начальное значение будет создано из энтропии.

set_quantum_seed

Задает начальное значение для генератора случайных чисел, используемого для квантовых измерений. Это относится ко всему коду Q#, выполняемого, скомпилированного или предполагаемого в этом контексте.

set_quantum_seed(seed: int | None) -> None

Параметры

Имя Описание
seed
Обязательно

Начальное значение, используемое для генератора квантовых случайных чисел. Если нет, то начальное значение будет создано из энтропии.

Атрибуты

code

code: Any