跳转到主要内容

PyQIR解析、生成和评估量子中间表示。

项目描述

PyQIR

pyqir包提供生成QIR以及解析和分析QIR的简便方法。

QIR生成旨在用于自动化代码翻译过程,使代码能够通过Python将某些格式的数据转换为QIR;即,这是一个低级API,旨在作为到现有Python框架的桥梁,以便生成QIR,而不是直接由最终用户消费。它旨在用作算法和应用程序开发的框架。

安装

该软件包已发布在PyPI上,可以通过pip进行安装

pip install pyqir

示例

PyQIR示例可以在本存储库的示例文件夹中找到。

生成

以下代码在测量每个量子比特之前创建Bell对的QIR,并返回结果。执行时,未优化的QIR将在终端中显示。

from pyqir import BasicQisBuilder, SimpleModule

module = SimpleModule("Bell", num_qubits=2, num_results=2)
qis = BasicQisBuilder(module.builder)

qis.h(module.qubits[0])
qis.cx(module.qubits[0], module.qubits[1])

qis.mz(module.qubits[0], module.results[0])
qis.mz(module.qubits[1], module.results[1])

print(module.ir())

QIR输出将类似于

; ModuleID = 'Bell'
source_filename = "Bell"

%Qubit = type opaque
%Result = type opaque

define void @main() #0 {
entry:
  call void @__quantum__qis__h__body(%Qubit* null)
  call void @__quantum__qis__cnot__body(%Qubit* null, %Qubit* inttoptr (i64 1 to %Qubit*))
  call void @__quantum__qis__mz__body(%Qubit* null, %Result* null)
  call void @__quantum__qis__mz__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* inttoptr (i64 1 to %Result*))
  ret void
}

declare void @__quantum__qis__h__body(%Qubit*)

declare void @__quantum__qis__cnot__body(%Qubit*, %Qubit*)

declare void @__quantum__qis__mz__body(%Qubit*, %Result* writeonly) #1

attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="custom" "required_num_qubits"="2" "required_num_results"="2" }
attributes #1 = { "irreversible" }

!llvm.module.flags = !{!0, !1, !2, !3}

!0 = !{i32 1, !"qir_major_version", i32 1}
!1 = !{i32 7, !"qir_minor_version", i32 0}
!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
!3 = !{i32 1, !"dynamic_result_management", i1 false}

贡献

您可以通过多种方式为PyQIR做出贡献,无论是通过贡献功能还是参与讨论;我们重视所有形式的贡献!请参阅此文档以获取如何参与的指南和想法。

向此存储库提交拉取请求需要同意贡献者许可协议(CLA),声明您有权并且实际上确实授予我们使用您的贡献的权利。CLA机器人将自动确定您是否需要提供CLA,并相应地装饰PR。只需遵循机器人提供的说明即可。您只需这样做一次。

项目详情


下载文件

下载适用于您平台的应用程序。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

此版本没有可用的源分发文件。请参阅生成分发存档的教程。

构建分发

pyqir-0.10.5-cp38-abi3-win_amd64.whl (1.7 MB 查看散列值)

上传时间 CPython 3.8+ Windows x86-64

pyqir-0.10.5-cp38-abi3-manylinux_2_31_x86_64.whl (2.3 MB 查看散列值)

上传时间 CPython 3.8+ manylinux: glibc 2.31+ x86-64

pyqir-0.10.5-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl (3.4 MB 查看散列值)

上传时间 CPython 3.8+ macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64

支持