写点什么

谷歌发布 Cirq:一个用于量子计算的 Python 开源库

  • 2018-08-01
  • 本文字数:1079 字

    阅读完需:约 4 分钟

Cirq 旨在让嘈杂中型量子计算机(Noisy Intermediate Scale Quantum,NISQ)算法的编写、操作和优化变得更容易。Cirq 还支持在本地模拟器上运行这些程序,并计划支持未来的量子硬件和量子云处理器。

NISQ 计算机将成为第一批在不久的将来可用的量子计算机,包括微软、谷歌、IBM、英特尔等在内的多家公司已经宣布开发 NISQ。NISQ 计算机由 50-100 个量子比特组成,让研究人员能够证明量子霸权,尽管它们的用途将受到量子门噪声以及后续将要出现的纠错算法效率的限制。

根据谷歌 AI 量子团队工程师 Alan Ho 和 Dave Bacon 透露,NISQ 计算机编程的主要障碍之一是如何正确地映射算法和硬件,从而可以完全将量子位用于解决问题最困难的部分,以及处理特定的处理器约束,因为如果没有正确处理这些问题,可能会导致计算错误。这正是 Cirq 发挥作用的地方。

Cirq 为用户提供了对量子电路的精确控制,使用原生的门指定门的行为,将这些门适当地放置在设备上,以及在量子硬件的约束内调度这些门的时序。数据结构经过优化,可用于编写和编译这些量子电路,从而让用户能够充分利用 NISQ 架构。

以下是最简单的“hello world”程序:

复制代码
import cirq
# Pick a qubit.
qubit = cirq.GridQubit(0, 0)
# Create a circuit
circuit = cirq.Circuit.from_ops(
cirq.X(qubit)**0.5, # Square root of NOT.
cirq.measure(qubit, key='m') # Measurement.
)
print("Circuit:")
print(circuit)
# Simulate the circuit several times.
simulator = cirq.google.XmonSimulator()
result = simulator.run(circuit, repetitions=20)
print("Results:")
print(result)

如你所见,Cirq 提供了高级语法来管理典型的量子计算抽象,例如电路、量子位上的逻辑运算或度量。正如上面的代码片段所示,Cirq 提供了对本地模拟的支持,但根据谷歌的说法,Cirq 的高级指令也可以转换为谷歌 Bristlecone 处理器的量子电路,并将用于访问云端版本(当云端 Bristlecone 处理器可用时)。 谷歌提供了更完整的教程,将指导你完成创建量子变分算法的过程,同时还有Cirq 的官方文档。此外,谷歌正在发布OpenFermion-Cirq,一个用于创建低深度量子算法的平台,创建的算法主要针对量子化学问题,通过将化学问题的细节(例如模拟分子和复杂材料的特性)转换为Cirq 电路来创建量子算法。

Cirq 托管在 GitHub 上,可以使用 pip 安装在 Linux、Mac OS X 和 Windows 上:

复制代码
python -m pip install --upgrade pip
python -m pip install cirq

Cirq 早期采用者包括 Zapata Computing QC Ware Quantum Benchmark 等。

查看英文原文 Google Cirq: a Python Open Source Library for Quantum Computing

2018-08-01 07:083113
用户头像

发布了 731 篇内容, 共 451.6 次阅读, 收获喜欢 2002 次。

关注

评论

发布
暂无评论
发现更多内容

2.3.1 理解动态代理 -《SSM深入解析与项目实战》

谙忆

为什么会是Docker?

架构精进之路

Docker

Flink 中的应用部署:当前状态与新应用模式

Apache Flink

flink

Serverless:为我们到底带来了什么

刘宇

Serverless 云原生

统一软件开发过程(RUP)的概念和方法

雯雯写代码

Vue项目起步

JackWangGeek

Vue

【写作群星榜】8.1~8.14 写作平台优秀作者 & 文章排名

InfoQ写作社区官方

写作平台 排行榜 热门活动

中本聪原始比特币论文解读:点对点的电子现金系统

韩超

比特币 区块链

Maven的爱恨情仇

xcbeyond

Java maven

Facebook开源的数据Mock:Memisis详解

陈磊@Criss

微服务框架 - 模块功能设计篇

superman

Junit执行单元测试用例成功,mvn test却失败的问题和解决方法

陈磊@Criss

6种快速统计代码执行时间的方法

Bruce Duan

java统计时间 currentTimeMillis nanoTime StopWatch

[修复 Webpack 官方 Bug] 提取CSS时的依赖图修正

分一

大前端 webpack 编译优化 源码刨析

图解23种设计模式——前方高能,前端切图仔请务必抓好方向盘

执鸢者

typescript 大前端 设计模式

芯片破壁者(十二.下):青瓦台魔咒与半导体“死亡谷”

脑极体

重磅消息,我国数字人民币将在京津冀等具备条件地区试点

CECBC

数字货币 货币

2.3.2 JDK动态代理 -《SSM深入解析与项目实战》

谙忆

从北京降雨的复盘中,我发现了企业SD-WAN网络的秘密

脑极体

手撕二分查找及其变种,就是干!

我是程序员小贱

NetPerf揭示容器间是高速路还是林荫小路

陈磊@Criss

实用心理学—没用你打我!

代码制造者

职场 职场搞笑 信息技术 人工

微服务框架-模块需求篇

superman

Windows AD 保姆级配置NTP服务器教程

BigYoung

时间 AD ntp Windows Server 2012 R2

微博基于 Flink 的机器学习实践

Apache Flink

flink

用Ant实现Java项目的自动构建和部署

陈磊@Criss

Swagger 这一个文章就够了

陈磊@Criss

Django的Models更新时,不触发Signals解决办法

BigYoung

django singals 信号机制 update 更新

源码分析 | 咋嘞?你的IDEA过期了吧!加个Jar包就破解了,为什么?

小傅哥

Java 字节码插桩 asm bytebuddy

从实际案例讲 Deno 的应用场景

keelii

Java typescript deno

LeetCode题解:88. 合并两个有序数组,splice合并数组+sort排序,JavaScript,详细注释

Lee Chen

大前端 LeetCode

谷歌发布Cirq:一个用于量子计算的Python开源库_开源_Sergio De Simone_InfoQ精选文章