量子编译器的自动基准测试平台

arline-benchmarks的Python项目详细描述


Arline基准

Arline Benchmarks平台允许对量子电路映射/压缩的各种算法进行基准测试 在预定义的硬件类型和目标电路类的列表中彼此显示。在

演示(报表生成预览)

基准运行

Benchmarking run

乳胶报告

Report

支持的编译框架列表

安装

$ pip3 install arline-benchmarks

或者,可以在可编辑模式下本地安装Arline基准测试。 将Arline基准测试库cd克隆到源目录:

将存储库cd克隆到源目录:

^{pr2}$

我们建议在virtual environment中安装Arline基准测试。在

$ virtualenv venv
$source venv/bin/activate

如果您的计算机上没有安装virtualenv,请运行

$ pip3 install virtualenv

接下来,要安装Arline基准测试平台,请执行以下操作:

$ pip3 install .

或者,可以在编辑模式下安装Arline基准测试:

$ pip3 install -e .

TeXLive安装

自动生成LaTeX报告是Arline基准测试的重要部分。 为了启用Arline基准测试的全部功能,您需要安装TeXLive发行版。在

Ubuntu或Debian Linux:

要安装TeXLive,只需在终端中运行:

$ sudo apt install texlive-latex-extra

窗口:

在Windows上,可以通过从official website下载源代码来安装TeXLive 并遵循安装说明。在

苹果MacOS:

在MacOS上,只需从official website安装MacTex发行版。在

Linux/Windows/MacOS的替代解决方案:

TeXLive也可以作为MikTex包的一部分安装,方法是从 https://miktex.org。TeXworks前端不是必需的,可以忽略。在

入门

基准示例运行

为了运行第一个基准测试实验,执行以下命令

$cd arline_benchmarks/configs/compression/
$ bash run_and_plot.sh

执行Bash脚本run_and_plot.sh

  1. scripts/arline-benchmarks-runner-运行基准测试并将结果保存到results/output /gate_chain_report.csv
  2. arline_benhmarks/reports/plot_benchmarks.py-根据results/output /gate_chain_report.csv到{}生成带有度量的绘图
  3. scripts/arline-latex-report-generator-生成{}和 results/latex/benchmark_report.pdf报告具有基准测试结果的文件。在

配置文件configs/compression/config.jsonnet包含基准测试的完整描述。在

使用基准指标生成绘图

重新绘制绘图执行(从arline_benchmarks/configs/compression/

$ bash plot.sh

生成乳胶报告

根据上次基准测试运行重新生成LaTeX报告(从arline_benchmarks/configs/compression/

$ arline-latex-report-generator -i results -o results

如何创建自定义编译管道?

Arline基准测试的关键元素是编译管道的概念。 管道是一个编译序列stages: [stage1, stage2, stage3, ..]。在

典型的管道包括以下几个阶段:

  • 目标电路的生成
  • 逻辑量子位到物理量子位的映射
  • 特定硬件耦合拓扑的量子比特路由
  • 应用电路恒等式进行电路压缩
  • 恢复到最终硬件门集

通过堆叠各个阶段(可能对应于不同的阶段),可以轻松地创建自定义编译管道 编译器提供程序)。管道可以由任意顺序组合的无限数量的编译阶段组成。 唯一的例外是第一阶段target_analysis和最后一阶段gateset rebase stage(可选)。在

配置文件.jsonnet

管道应该在主配置文件.jsonnet中指定。 配置文件的示例位于configs/compression/config.jsonnet。在

  • 函数local pipelines_set(target, hardware, plot_group)定义要进行基准测试的编译管道列表[pipeline1, pipeline2, ...]。在

每个pipeline_i = {...}都表示为一个字典,其中包含管道的描述和 编译阶段。在

  • 目标电路生成在.jsonnet函数中定义local random_chain_cliford_t_target(...)和{}。在

  • 基准测试实验规范在字典中的配置文件末尾用键{pipelines: ..., plotter: ...}定义

API文档

API文档在这里documentation。 要生成HTML API文档,请运行以下命令:

$cd docs/
$ make html

运行测试

要运行单元测试并检查已安装的依赖项,请执行以下操作:

$ tox

文件夹结构

arline_benchmarks
│
├── arline_benchmarks            # platform classes
│   ├── config_parser            # parser of pipeline configuration
│   ├── engine                   # pipeline engine
│   ├── metrics                  # metrics for pipeline comparison
|   ├── pipeline                 # pipeline
│   ├── reports                  # LaTeX report generator
│   ├── strategies               # list of strategies for mapping/compression/rebase
│   └── targets                  # target generator
│
├── circuits                     # qasm circuits dataset
│
├── configs                      # configuration files
│   └── compression              # config .jsonnet file and .sh scripts
│
├── docs                         # documentation
│
├── scripts                      # run files
│
└── test                         # tests
    ├── qasm_files               # .qasm files for test
    └── targets                  # test for targets module

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
jstl中循环内部的java方法   java如何以编程方式查找iOS应用程序的堆内存?   java JPA列注释   http Java在Web浏览器中显示HttpResponse的内容   ssl Java如何接受我的自签名证书而不必将其添加到Java信任库   java解析bufferedReader数据,在某些字符处停止   java将具有多个属性的对象映射到另一个对象,然后收集到列表   java是否可以将抽象方法的返回类型设置为与类相同?   java Android导航抽屉,带有菜单图标而非后退按钮   如何在JavaSpringMVC中防止会话重放攻击?   是VB。NET SmtpClient API受限于Java SendMail?   跨多线程/节点的java会话管理   来自Eclipse的java maven项目   使用已解析Java DOM XML中的元素添加新元素