启科量子 QuSprout 正式开源

178 阅读2分钟

启科量子 QuSprout 正式开源

随着启科量子内部研发团队在量子计算后端研发方面工作的持续推进,启科量子于今日公开发布了其自主研发的量子计算模拟后端——QuSprout,宣布将其正式开源。

QuSprout 的开源旨在让更多的开发者、专家学者或爱好者参与到量子技术的研发上来,更快推动量子技术发展。
开源地址:github.com/qudoor/qusp…

编译,安装,启动服务


编译:

1. QuSprout 根目录下的thirdparty目录里面包含了大部分编译和运行 QuSprout 的第三方库,该目录下的install.sh脚本可以一键安装依赖库:

    sudo chmod a+x install.sh  
    sudo ./install.sh  
      
    Noted:   
    1. CentOS上需要使用root权限执行install.sh脚本。  
    2. 执行install.sh之前需要提前安装基本的开发工具包括gcc,g++, make, unzip。  
    3. 执行install.sh过程中,可能在不同的Linux平台会遇到个别依赖库安装失败的情况,您可以尝试解决或者在github上创建 Issue。  

2. QuSprout 根目录下有个 build_qusprout.sh 脚本文件,这个脚本文件是用来对 QuSprout 进行编译的。

3. 赋予编译脚本执行权限:

   sudo chmod a+x build_qusprout.sh  

4. 执行编译脚本,0.1.12是需要指定的编译版本号,您可以指定任意的版本号:

   sudo ./build_qusprout.sh version 0.1.12  
安装:

1. 编译完成后,会在当前目前下生成 build_v0.1.12.tar.gz 文件,0.1.12 是编译时指定的版本号。

2. QuSprout 根目录下有个 service_qusprout.sh 脚本文件,这个脚本文件是用来对 QuSprout 进行安装部署的。

3. 赋予部署脚本执行权限:

   sudo chmod a+x service_qusprout.sh  

4. 执行部署脚本, 执行时会在当前目前下查找 build_v0.1.12.tar.gz 编译文件,0.1.12 是要安装部署的版本号。 

   Shell    sudo ./service_qusprout.sh version 0.1.12    

启动:

1. 安装完成后,需要启动 qusprout 服务。

2. 启动 qusprout 服务:

   sudo ./service_qusprout.sh start qusprout  

3. service_qusprout 支持另外两个参数 stop,restart,分别对应于停止和重启服务。

QuSprout 作为 QuTrunk 的量子计算模拟后端,可以帮助完成很多算法的运行。以下示例展示了利用 QuTrunk 运行 bell-pair 量子算法:

from qutrunk.circuit import QCircuit  
from qutrunk.circuit.gates import H, CNOT, Measure  
from qutrunk.backends import BackendQuSprout  
  
  
def run_bell_pair(backend=None):  
    # Create quantum circuit  
    qc = QCircuit(backend=backend)  
  
    # Allocate quantum qubits  
    qr = qc.allocate(2)  
  
    # Apply quantum gates  
    H * qr[0]  
    CNOT * (qr[0], qr[1])  
    Measure * qr[0]  
    Measure * qr[1]  
  
    # Print quantum circuit  
    qc.print()  
    # qc.dump(file="bell_pair.qasm", format="openqasm")  
  
    # Run quantum circuit with 100 times  
    res = qc.run(shots=10000)  
  
    # Print result like:  
    #[1, 1]  
    #[{"00": 50}, {"11": 50}]  
    print(res.get_measure())  
    print(res.get_counts())  
  
    # Print quantum circuit exection information  
    print(res.excute_info())  
  
    return qc  
  
  
if __name__ == "__main__":  
    # Run locally  
    circuit = run_bell_pair(backend=BackendQuSprout())  
  
    # Draw quantum circuit  
    circuit.draw()  

运行结果为:

qreg q[2]  
creg c[2]  
H * q[0]  
MCX(1) * (q[0], q[1])  
Measure * q[0]  
Measure * q[1]  
[1, 1]  
[{"00": 4995}, {"11": 5005}]  
{"backend": "BackendQuSprout", "task_id": null, "status": "success", "arguments": {"shots": 10000}}  
      ┌───┐      ┌─┐     
q[0]: ┤ H ├──■───┤M├───  
      └───┘┌─┴──┐└╥┘┌─┐  
q[1]: ─────┤ CX ├─╫─┤M├  
           └────┘ ║ └╥┘  
 c: 2/════════════╩══╩═  
                  0  1   

开源地址:github.com/qudoor/qusp…

添加助手,邀你结识更多量子计算行业大牛7b9542cb0ea7da1c10f6a28b0e84612.jpg