基本使用

1. 创建isQ代码

这段代码命名为use_isqc.isq,并且放在同一个目录。

import std;


qbit q[2];

unit main(int int_[], double double_[]) {
    H(q[0]);
    H(q[1]);
    Ry(double_[0], q[0]);
    Rz(double_[1], q[1]);
    M(q[int_[0]]);
}

2. 使用isqtools调用isqc

isqtoolsisqc进行了封装,可以直接在isqtools中调用isqc进行编译或者模拟。

2.1 compilesimulate的使用

from isqtools import compile, simulate


compile("use_isqc.isq", target="qir", additional_args="")  # default
# compile("compile_test.isq", target="qcis", int_param=[0, 1], double_param=[1.1, 1.2])

res = simulate(
    "use_isqc.isq",
    shots=100,
    int_param=1,
    double_param=[1.1, 1.2],
    additional_args="--debug",
)
print("Result:", res)
Result: {'1': 43, '0': 57}
  • 通过int_paramdouble_param传入main函数的参数。
  • 通过additional_args以字符串的形式指定其他参数。
  • 编译或者模拟的一些(错误)输出会以stdout和stderr的形式打印到终端。
  • simulate模拟返回类型为python的dict

2.2 run方法

run方法集成了compliesimulate,将两步合成一步进行。

from isqtools import run


direct_res = run(
    "use_isqc.isq",
    target="qir",
    shots=100,
    int_param=[0],  # same as `int_param=0`
    double_param=[2.5, -0.5],
)
print("Result:", direct_res)
Result: {'1': 85, '0': 15}

2.3 设置isqc所在目录

默认目录为空,即在系统环境变量中寻找isqc命令。

from isqtools.utils import get_isqc_path, set_isqc_path


get_isqc_path()
''

可以自定义isqc的安装路,实现isqc的灵活调用。

set_isqc_path("~/xxx") 
get_isqc_path()
'/home/yangys/xxx'

此时再次调用编译命令,将无法找到isqc

compile("use_isqc.isq", target="qir")
/bin/sh: 1: /home/yangys/xxx/isqc: not found