4个版本

0.1.1 2024年8月15日
0.1.0 2024年8月1日
0.1.0-alpha.22024年6月11日
0.1.0-alpha.12024年5月24日

#97 in 编程语言

Download history 129/week @ 2024-05-23 51/week @ 2024-05-30 122/week @ 2024-06-06 49/week @ 2024-06-13 13/week @ 2024-06-20 4/week @ 2024-06-27 23/week @ 2024-07-04 10/week @ 2024-07-11 134/week @ 2024-08-01 24/week @ 2024-08-08

每月 158 次下载
用于 tket2-hseries

Apache-2.0

415KB
9K SLoC

tket2:硬件无关量子编译器

build_status msrv codecov

TKET2是由Quantinuum开发的开源量子编译器。TKET2设计的核心是其硬件无关性,这使得研究人员和量子软件开发者能够利用其强大的编译功能,为多种不同的量子架构提供支持。

电路使用hugr crate中定义的HUGR IR进行表示。TKET2通过以下方式增强Hugr:

  • Circuit trait,提供用于操作表示量子电路的HUGRs的高级接口
  • 带有量子操作的HUGR扩展
  • 一个可组合的电路优化传递系统
  • 一些内置的重写实用工具和传递,用于常见的优化

此crate通过其序列编码与tket1电路互操作。

使用TKET2

在TKET2中定义电路目前是通过使用低级的hugr Builder API或从JSON文件加载tket1电路来完成的。

use tket2::{Circuit, Hugr};

// Load a tket1 circuit.
let mut circ: Hugr = tket2::json::load_tk1_json_file("test_files/barenco_tof_5.json").unwrap();

assert_eq!(circ.qubit_count(), 9);
assert_eq!(circ.num_gates(), 170);

// Traverse the circuit and print the gates.
for command in circ.commands() {
    println!("{:?}", command.optype());
}

// Render the circuit as a mermaid diagram.
println!("{}", circ.mermaid_string());

// Optimise the circuit.
tket2::passes::apply_greedy_commutation(&mut circ);

请在此处阅读API文档

特性

  • portmatching 通过portmatching crate启用模式匹配。

  • rewrite-tracing 添加了对电路重写应用的跟踪。

最近更改

请参阅CHANGELOG以获取更改列表。最低支持的rust版本只有在主要版本发布时才会更改。

开发TKET2

请参阅DEVELOPMENT.md以获取设置开发环境的说明。

许可

本项目采用Apache License 2.0许可(LICENSEhttps://apache.ac.cn/licenses/LICENSE-2.0)。

依赖项

约17MB
约296K SLoC