qsharp Модуль

Общедоступный API интерпретатора Q#.

Этот модуль представляет собой общедоступную поверхность для функций интерпретатора Q# в пакете qdk .

Экспорт ключей:

  • init — инициализировать или сбросить интерпретатор Q#.
  • eval — вычисляет выражение Q# и возвращает его значение.
  • run — выполните выражение записи Q# для одного или нескольких снимков.
  • compile — компилируйте источник Q# в QIR для отправки оборудования.
  • circuit — синтезирование схемы цепи из кода Q#.
  • estimate — оцените квантовые ресурсы (не рекомендуется; используйте qre вместо этого).
  • logical_counts — извлечение логических ворот из кода Q#.
  • dump_machine — возвращает текущее состояние симулятора StateDumpв виде.
  • dump_circuit — возвращает трассировку трассировки (требуется trace_circuit=True в init).
  • dump_operation — вычисляет унитарную матрицу операции Q#.
  • set_quantum_seed, set_classical_seed — управление семенами RNG.
  • estimate_custom — запустите универсальный средство оценки ресурсов с использованием пользовательского алгоритма, кубита и параметров кода.
  • QSharpError — возникает при компиляции Q# или ошибках среды выполнения.
  • TargetProfile — перечисление целевого профиля компиляции.
  • Result, Pauli — примитивные типы Q#.
  • CircuitGenerationMethod — определяет, как синтезируются каналы.
  • StateDump, ShotResult — типы выходных данных интерпретатора.
  • PauliNoise, DepolarizingNoise, BitFlipNoisePhaseFlipNoise модели шума для моделирования.

Классы

BitFlipNoise

Битовый шум перевернутого для использования в имитации.

Создает новый экземпляр BitFlipNoise.

Битовый канал перевернутого канала применяет ошибку Pauli-X с вероятностью p.

CircuitGenerationMethod

Общедоступный API интерпретатора Q#.

Этот модуль представляет собой общедоступную поверхность для функций интерпретатора Q# в пакете qdk .

Экспорт ключей:

  • init — инициализировать или сбросить интерпретатор Q#.
  • eval — вычисляет выражение Q# и возвращает его значение.
  • run — выполните выражение записи Q# для одного или нескольких снимков.
  • compile — компилируйте источник Q# в QIR для отправки оборудования.
  • circuit — синтезирование схемы цепи из кода Q#.
  • estimate — оцените квантовые ресурсы (не рекомендуется; используйте qre вместо этого).
  • logical_counts — извлечение логических ворот из кода Q#.
  • dump_machine — возвращает текущее состояние симулятора StateDumpв виде.
  • dump_circuit — возвращает трассировку трассировки (требуется trace_circuit=True в init).
  • dump_operation — вычисляет унитарную матрицу операции Q#.
  • set_quantum_seed, set_classical_seed — управление семенами RNG.
  • estimate_custom — запустите универсальный средство оценки ресурсов с использованием пользовательского алгоритма, кубита и параметров кода.
  • QSharpError — возникает при компиляции Q# или ошибках среды выполнения.
  • TargetProfile — перечисление целевого профиля компиляции.
  • Result, Pauli — примитивные типы Q#.
  • CircuitGenerationMethod — определяет, как синтезируются каналы.
  • StateDump, ShotResult — типы выходных данных интерпретатора.
  • PauliNoise, DepolarizingNoise, BitFlipNoisePhaseFlipNoise модели шума для моделирования.
DepolarizingNoise

Деполяризующий шум, используемый в имитации.

Создает новый экземпляр DepolarizingNoise.

Деполяризирующий канал применяет Паули-X, Паули-Y или Pauli-Z ошибки с вероятностью p / 3.

Pauli

Оператор Q# Pauli.

PauliNoise

Шум Паули, используемый в имитации, представлен как вероятности Паули-X, Паули-Y и Pauli-Z ошибок

Создает новый PauliNoise экземпляр с заданными вероятностями ошибки.

PhaseFlipNoise

Этап переворачиваемого шума для использования в имитации.

Создает новый экземпляр PhaseFlipNoise.

Фазовый канал флип-канала применяет ошибку Pauli-Z с вероятностью p.

QSharpError

Ошибка, возвращенная интерпретатором Q#.

Result

Результат измерения Q#.

ShotResult

Один результат выстрела.

StateDump

Дамп состояния, возвращенный интерпретатором Q#.

TargetProfile

Целевой профиль Q#.

Целевой профиль описывает возможности оборудования или симулятора, который будет использоваться для запуска программы 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_circuit

Дампает канал, показывающий текущее состояние симулятора.

Этот канал будет содержать шлюзы, которые были применены в симуляторе до текущей точки.

Требуется, чтобы интерпретатор был инициализирован с помощью trace_circuit=True.

dump_circuit() -> Circuit

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

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

Текущая трассировка канала.

Исключения

Тип Описание

Если интерпретатор не был инициализирован с помощью trace_circuit=True

dump_machine

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

dump_machine() -> StateDump

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

Тип Описание

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

dump_operation

Возвращает квадратную матрицу сложных чисел, представляющую выполненную операцию.

dump_operation(operation: str, num_qubits: int) -> List[List[complex]]

Параметры

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

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

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

Количество используемых кубитов.

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

Тип Описание

Матрица, представляющая операцию.

estimate

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

Не рекомендуется с версии This: функция использует устаревший API оценки ресурсов. Вместо этого используйте qdk.qre.

estimate(entry_expr: str | Callable | GlobalCallable | Closure, params: Dict[str, Any] | List | EstimatorParams | None = None, *args) -> EstimatorResult

Параметры

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

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

params

Параметры для настройки физической оценки.

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

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

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

Тип Описание

Предполагаемые ресурсы.

estimate_custom

estimate_custom(algorithm, qubit, qec, factories=Ellipsis, *, error_budget=0.01, max_factories=None, logical_depth_factor=None, max_physical_qubits=None, max_duration=None, error_budget_pruning=False)

Параметры

Имя Описание
algorithm
Обязательно
qubit
Обязательно
qec
Обязательно
factories
Default value: Ellipsis

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

Имя Описание
error_budget
Default value: 0.01
max_factories
Default value: None
logical_depth_factor
Default value: None
max_physical_qubits
Default value: None
max_duration
Default value: None
error_budget_pruning
Default value: False

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.

Исключения

Тип Описание

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

init

Инициализирует интерпретатор Q#.

init(*, 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) -> Config

Параметры 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

Включает трассировку канала во время выполнения. Передача True требуется для dump_circuit функции для возврата канала. Функция каналане влияет на этот параметр и всегда создает канал.

Default value: None

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

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

Конфигурация интерпретатора Q#.

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
Обязательно

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