qsharp 模块
Q# 解释器公共 API。
此模块是包中 qdk Q# 解释器功能的公共图面。
密钥导出:
- 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、 BitFlipNoise、 PhaseFlipNoise — 模拟的噪音模型。
类
| BitFlipNoise |
模拟中使用的位翻转噪音。 创建新的 BitFlipNoise 实例。 位翻转通道应用概率 Pauli-X 错误 |
| CircuitGenerationMethod |
Q# 解释器公共 API。 此模块是包中 密钥导出:
|
| DepolarizingNoise |
模拟中使用的去极化噪音。 创建新的 DepolarizingNoise 实例。 反极化通道应用 Pauli-X、Pauli-Y 或 Pauli-Z 错误,每个错误 |
| Pauli |
Q# Pauli 运算符。 |
| PauliNoise |
要用于模拟的 Pauli 噪音表示为 Pauli-X、Pauli-Y 和 Pauli-Z 错误的概率 创建具有给定错误概率的新 PauliNoise 实例。 |
| PhaseFlipNoise |
模拟中使用的相位翻转噪音。 创建新的 PhaseFlipNoise 实例。 相位翻转通道应用概率 Pauli-Z 错误 |
| 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
|
条目表达式。 或者,可以提供可调用方,这必须是 Q# 可调用的。 默认值: None
|
|
*args
必需
|
要传递给可调用项的参数(如果提供)。 |
仅限关键字的参数
| 名称 | 说明 |
|---|---|
|
operation
|
要合成的操作。 这可以是操作的名称或 lambda 表达式。 该操作必须仅采用量子比特或量子比特数组作为参数。 默认值: None
|
|
generation_method
|
用于生成线路的方法。
ClassicalEval 评估线路生成时的传统控制流。
Simulate 运行完整的模拟来跟踪线路。
Static 使用部分评估,需要非 默认值: None
|
|
max_operations
|
要包括在线路中的最大操作数。
默认值: None
|
|
source_locations
|
如果 默认值: False
|
|
group_by_scope
|
如果 默认值: True
|
|
prune_classical_qubits
|
如果 默认值: False
|
返回
| 类型 | 说明 |
|---|---|
|
<xref:Circuit>
|
合成线路。 |
例外
| 类型 | 说明 |
|---|---|
|
如果合成线路时出错。 |
compile
将 Q# 源代码编译为可提交到目标的程序。 必须提供条目表达式或具有参数的可调用项。
Example:
compile(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> QirInputData
参数
| 名称 | 说明 |
|---|---|
|
entry_expr
必需
|
将用作程序的入口点的 Q# 表达式。 或者,可以提供可调用方,这必须是 Q# 可调用的。 |
|
*args
必需
|
要传递给可调用项的参数(如果提供)。 |
返回
| 类型 | 说明 |
|---|---|
|
<xref:QirInputData>
|
已编译的程序。 用于 |
dump_circuit
转储显示模拟器的当前状态的线路。
此线路将包含已在模拟器中应用到当前点的入口。
要求使用 trace_circuit=True 初始化解释器。
dump_circuit() -> Circuit
返回
| 类型 | 说明 |
|---|---|
|
<xref:Circuit>
|
当前线路跟踪。 |
例外
| 类型 | 说明 |
|---|---|
|
如果未使用解释器初始化 |
dump_machine
dump_operation
estimate
估计 Q# 源代码的资源。 必须提供条目表达式或具有参数的可调用项。
自版本以来已弃用此版本: 函数使用旧版资源估算器 API。 改用 qdk.qre。
estimate(entry_expr: str | Callable | GlobalCallable | Closure, params: Dict[str, Any] | List | EstimatorParams | None = None, *args) -> EstimatorResult
参数
| 名称 | 说明 |
|---|---|
|
entry_expr
必需
|
条目表达式。 或者,可以提供可调用方,这必须是 Q# 可调用的。 |
|
params
|
用于配置物理估计的参数。 默认值: 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
|
默认值: Ellipsis
|
仅限关键字的参数
| 名称 | 说明 |
|---|---|
|
error_budget
|
默认值: 0.01
|
|
max_factories
|
默认值: None
|
|
logical_depth_factor
|
默认值: None
|
|
max_physical_qubits
|
默认值: None
|
|
max_duration
|
默认值: None
|
|
error_budget_pruning
|
默认值: False
|
eval
评估 Q# 源代码。
输出打印到控制台。
eval(source: str, *, save_events: bool = False) -> Any
参数
| 名称 | 说明 |
|---|---|
|
source
必需
|
要评估的 Q# 源代码。 |
仅限关键字的参数
| 名称 | 说明 |
|---|---|
|
save_events
|
如果为 true,将保存并返回所有输出。 如果为 false,则会打印它们。 默认值: False
|
返回
| 类型 | 说明 |
|---|---|
|
源代码中最后一个语句返回的值,或保存的输出(如果 |
例外
| 类型 | 说明 |
|---|---|
|
如果评估源代码时出错。 |
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
仅限关键字的参数
| 名称 | 说明 |
|---|---|
|
target_profile
|
设置目标配置文件允许 Q# 解释器生成与特定目标兼容的程序。 请参阅 TargetProfile。 默认值: Unrestricted
|
|
target_name
|
用于推断兼容target_profile设置的目标计算机的可选名称。 默认值: None
|
|
project_root
|
包含 Q# 项目的根目录的可选路径。 它必须包含 qsharp.json 项目清单。 默认值: None
|
|
language_features
|
要启用的语言功能标志的可选列表。 它们对应于实验性或预览版 Q# 语言功能。 有效值为:
默认值: None
|
|
trace_circuit
|
启用在执行期间跟踪线路。 dump_circuit函数返回线路需要传递 True。 线路函数不受此参数的影响,并且将始终生成线路。 默认值: 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 个量子比特。 |
仅限关键字的参数
| 名称 | 说明 |
|---|---|
|
on_result
|
默认值: None
|
|
save_events
|
默认值: False
|
|
noise
|
默认值: None
|
|
qubit_loss
|
默认值: None
|
|
seed
|
默认值: None
|
|
type
|
默认值: None
|
|
num_qubits
|
默认值: None
|
返回
| 类型 | 说明 |
|---|---|
|
结果或运行时错误的列表。 如果 |
例外
| 类型 | 说明 |
|---|---|
|
如果解释输入时出错。 |
|
|
如果拍摄次数小于 1。 |
set_classical_seed
设置用于标准库经典随机数运算的随机数生成器的种子。 这适用于执行、编译或估计的所有 Q# 代码。
set_classical_seed(seed: int | None) -> None
参数
| 名称 | 说明 |
|---|---|
|
seed
必需
|
用于经典随机数生成器的种子。 如果为 None,则种子将从 entropy 生成。 |
set_quantum_seed
设置用于量子度量的随机数生成器的种子。 这适用于执行、编译或估计的所有 Q# 代码。
set_quantum_seed(seed: int | None) -> None
参数
| 名称 | 说明 |
|---|---|
|
seed
必需
|
要用于量子随机数生成器的种子。 如果为 None,则种子将从 entropy 生成。 |