• Qiskit 安装指南


    内容参考官方文档 https://qiskit.org/documentation/install.html

    1. conda create -n name_of_my_env python=3

      创建虚拟环境,如果后面要下载qiskit[visualization],这里的python要安装3.6版本,不然后面安装pywinpty时,会有冲突,目前3.7和3.8版本都有问题。

    2. conda activate name_of_my_env

      激活虚拟环境,然后在虚拟环境里安包

    3. pip install qiskit

      这里可以直接安装,目前的qiskit已经到了0.16版本,目前有人安装的时候numpy的版本可能不匹配,需要安装对应版本。

    4. pip install qiskit[visualization]

      如果希望能够把线路图画出来,那么需要安装visualization,安装python3.6版本就不会有冲突。

    至此,Qiskit的安装成功,如果要检验的话,这里有一段最为简单的代码,使用的是IBM的量子模拟器,如果你安装成功,将能直接运行得到答案。

    import numpy as np
    from qiskit import(
      QuantumCircuit,
      execute,
      Aer)
    from qiskit.visualization import plot_histogram
    
    # Use Aer's qasm_simulator
    simulator = Aer.get_backend('qasm_simulator')
    
    # Create a Quantum Circuit acting on the q register
    circuit = QuantumCircuit(2, 2)
    
    # Add a H gate on qubit 0
    circuit.h(0)
    
    # Add a CX (CNOT) gate on control qubit 0 and target qubit 1
    circuit.cx(0, 1)
    
    # Map the quantum measurement to the classical bits
    circuit.measure([0,1], [0,1])
    
    # Execute the circuit on the qasm simulator
    job = execute(circuit, simulator, shots=1000)
    
    # Grab results from the job
    result = job.result()
    
    # Returns counts
    counts = result.get_counts(circuit)
    print("
    Total count for 00 and 11 are:",counts)
    
    # Draw the circuit
    circuit.draw()
    

    关于python的小伙伴,有一个常用的网页交互的小伙伴,Jupyter notebook。

    关于安装,因为我直接采用的就是anaconda,所以直接就安装好了,不过现在直接使用jupyter notebook有一个问题,那就是,不能找到我们先前创造的conda环境,这里就需要进一步的配置。

    1. conda install ipykernel

      在base的环境里安装ipykernel,问y/n的那就都y了

    2. python -m ipykernel install --user --name 环境名称 --display-name "在jupyter中显示的环境名称"

      前一个环境名称是刚刚conda创建的虚拟环境的名字,后一个是jupyter中显示的名字,可以和前面的不一样。

    这个时候再打开jupyter notebook : jupyter notebook,在new的地方就能看见新的环境了。

    执行一下先前的代码,得到结果:

    目前我们使用的是simulator,但是我们选择IBM一定是眼馋他的量子计算机,而不仅仅是个模拟,所以我们的下一步,就是想要来连上我们的真机器。

    1. 创建一个IBM的账号 https://quantum-computing.ibm.com/login

    2. 在My Account的地方复制自己的API token

    3. 运行以下语句:把引号中的字符串替换成自己的token

      from qiskit import IBMQ
      IBMQ.save_account('MY_API_TOKEN')
      
    4. 运行以下语句:

      IBMQ.load_account() # Load account from disk 前面我们已经把账号存好了,现在直接加载下来就好。
      IBMQ.providers()    # List all available providers
      

    不过这里可能出现一下问题

    SSLEOFError: EOF occurred in violation of protocol (_ssl.c:852)

    我搜到的解决方法有:

    pip install ndg-httpsclient
    pip install pyopenssl
    pip install pyasn1
    

    但是这样也可能解决不了问题,因为ssl的问题还有可能是开了代理,当你关了代理的时候,SSLEOFError的问题就解决了。

    这个时候你再查一查有哪些机器是可以给你用的,得到结果:

    [<AccountProvider for IBMQ(hub='ibm-q', group='open', project='main')>]
    

    这个时候,我们已经愉快地和真的机器有了联系。

    我们重跑上面的代码,但是这次我们选择真的机器来跑,IBM有不止一个的机器还有自己的名字:ibmq_qasm_simulator,ibmq_16_melbourne,ibmq_ourense,ibmqx2,ibmq_vigo等等

    import numpy as np
    from qiskit import(
      QuantumCircuit,
      execute,
      Aer)
    from qiskit.visualization import plot_histogram
    
    from qiskit import IBMQ
    
    provider = IBMQ.load_account()
    backend = provider.get_backend('ibmq_16_melbourne')
    
    # Create a Quantum Circuit acting on the q register
    circuit = QuantumCircuit(2, 2)
    
    # Add a H gate on qubit 0
    circuit.h(0)
    
    # Add a CX (CNOT) gate on control qubit 0 and target qubit 1
    circuit.cx(0, 1)
    
    # Map the quantum measurement to the classical bits
    circuit.measure([0,1], [0,1])
    
    # Execute the circuit on the qasm simulator
    job = execute(circuit, backend, shots=1000)
    
    # Grab results from the job
    result = job.result()
    
    # Returns counts
    counts = result.get_counts(circuit)
    print("
    Total count for 00 and 11 are:",counts)
    
    # Draw the circuit
    circuit.draw()
    

    在真的机器上跑要等一会,排个队,等前面的人跑完了再轮到你,让我们来看看这个期待的结果:

    因为有噪声的存在,所以原本不该出现的01,10也会产生,这也是真机和模拟器的区别。

  • 相关阅读:
    杭州电acm理工大舞台版
    String.Split()功能
    android layout物业介绍
    讨厌OpenSSL
    Android Bundle类别
    多项式回归
    如何直接串行电缆以及空调制解调器串行电缆之间的区别?
    为什么写科技博客是情侣如此重要?
    SSH框架总结(帧分析+环境结构+示例源代码下载)
    RapidXml用法
  • 原文地址:https://www.cnblogs.com/zmzzzz/p/14012960.html
Copyright © 2020-2023  润新知