QDK Python paketiyle kuantum benzetimleri çalıştırma

Microsoft Quantum Development Kit (QDK) Python paketi, kuantum programlarını test etmek ve geliştirmek için kullanabileceğiniz yerel kuantum simülatörlerini içerir. Bu makalede simülatörlerin nasıl yükleneceği ve Q# veya Jupyter Notebook içinde OpenQASM, Qiskit, QIR ve Python programlarının nasıl çalıştırılacağı açıklanmaktadır.

Paket dört QDKPython birincil simülatör içerir:

  • Seyrek simülatör
  • Dengeleyici simülatörü
  • GPU simülatör
  • CPU simülatör

Kuantum simülatörleri hakkında QDK daha fazla bilgi için bkz. içindeki QDKkuantum simülatörlerine genel bakış.

Visual Studio Code uzantısında Q# veya QDK programlarını doğrudan çalıştırmak için bkz. QDK.

Prerequisites

Bu makaledeki Jupyter Notebook örneklerini izlemek için şu araçları yükleyin:

Simülatörleri yükleme

Python ve Jupyter Notebook'ta kuantum simülatörlerini kullanmak için, jupyter ekstrasıyla qdkPython paketinin en son sürümünü yükleyin:

pip install --upgrade "qdk[jupyter]"

Simülatörler jupyter ekstraya ihtiyaç duymaz, ancak ekstra, simülasyon sonuçlarını Jupyter Notebook'ta görselleştirmek için qdk.widgets modülünü ekler.

Kullandığınız kuantum programlama çerçevesini ve Python API'yi temel alan bir simülatör seçin.

Seyrek simülatörü çağır

Seyrek simülatör, OpenQASM, Qiskit ve Q# programlarını destekler. Bu tablo, her çerçevede qdk paketi ile 10 çekimin nasıl çalıştırılacağını gösterir.

Programlama çerçevesi Python API (Uygulama Programlama Arayüzü) Örnek çağrı
Q# qsharp.run qsharp.run("MyQsharpProgram()", shots=10)
OpenQASM openqasm.run openqasm.run(my_qasm_program, shots=10)
Qiskit qiskit.QSharpBackend QSharpBackend().run(my_qiskit_program, shots=10)

Note

Seyrek simülatör, Q# ve noise programları için OpenQASM parametresi aracılığıyla gürültü modellerini destekler, ancak Qiskit programları için desteklemez.

Örneğin, VS Code'daki bir Jupyter not defterinde Bell pair Q# programını çalıştırmak için şu adımları izleyin:

  1. VS Code'da Görüntüle> öğesini seçin.

  2. Create: New Jupyter Notebook girin. Boş bir not defteri dosyası yeni bir sekmede açılır.

  3. İlk hücrede, qdk paketinden qsharp modülünü içe aktarın.

    from qdk import qsharp
    
  4. Yeni bir hücrede, Q# kodunu yazmak için %%qsharp magic komutunu kullanın.

    %%qsharp
    
    operation Main() : (Result, Result) {
        use (q1, q2) = (Qubit(), Qubit());
        PrepareBellPair(q1, q2);
        (MResetZ(q1), MResetZ(q2))
    }
    
    operation PrepareBellPair(q1 : Qubit, q2 : Qubit) : Unit {
        H(q1);
        CNOT(q1, q2);
    }
    
  5. Yeni bir hücre oluşturun. Q# programını seyrek simülatörde çalıştırmak için qsharp modülündeki run işlevini çağırın ve çekim sayısını belirtin.

    qsharp.run("Main()", shots=10)
    

Dengeleyici simülatörünü çağırın

Dengeleyici simülatörü geniş, Clifford-baskın devreleri verimli bir şekilde çalıştırır. Dengeleyici dallanma, $T$ ve $T^\dagger$ kapıları ve keyfi açılı Clifford döndürmeleri gibi sınırlı sayıda işlem dışıPauli işlemi de destekler. Dal sayısı non-Clifford işlemlerin sayısıyla katlanarak artabileceğinden, önemli ölçüde non-Clifford evrimi olan devreler için tam durum simülatörü kullanın.

Dengeleyici simülatörü, OpenQASM, Qiskit, QIR ve Q# programlarını destekler. Bu tablo her framework'te 10 çalıştırmanın nasıl yapılacağını gösterir.

Programlama çerçevesi Python API (Uygulama Programlama Arayüzü) Örnek çağrı
Q# qsharp.run qsharp.run("MyQsharpProgram()", type="stabilizer", shots=10)
OpenQASM openqasm.run openqasm.run(my_qasm_program, type="stabilizer", shots=10)
Qiskit qiskit.NeutralAtomBackend NeutralAtomBackend().run(my_qiskit_program, simulator_type="stabilizer", shots=10)
QIR simulation.NeutralAtomDevice simulation.NeutralAtomDevice().simulate(my_qir, type="stabilizer", shots=10)
QIR simulation.run_qir simulation.run_qir(my_qir, type="stabilizer", shots=10)

ve NeutralAtomDevice API'leri NeutralAtomBackend özellikle nötr atom kuantum bilgisayarlarında simülasyonlar içindir. Daha fazla bilgi için bkz . Nötr atom cihazı simülatörüne genel bakış.

Örneğin, bu Python kod stabilizatör simülatöründe Clifford programını OpenQASM $T$ olmayan bir kapıyla çalıştırır:

from qdk.openqasm import run

qasm_code = """
include "stdgates.inc";
qubit[1] q;
bit[1] result;

h q[0];
t q[0];
h q[0];
result = measure q;
"""

run(qasm_code, type="stabilizer", shots=1000)

Note

"stabilizer" ve "clifford" her ikisi de dengeleyici simülatörünü seçer. API, parametresinin type veya simulator_typeolup olmadığını belirler.

$T$ kapısı stabilizer dalları oluşturur. Son ölçüm, bu dallar arasındaki girişimi örnekler.

GPU ve CPU simülatörlerini çağırın

GPU ve Qiskit simülatörleri, QIR ve CPU programlarını destekler. Bu tabloda, her çerçevede qdk paketiyle GPU simülatöründe 10 çekimin nasıl çalıştırılacağı gösterilmektedir. Simülatörü kullanmak için, simülatör türü parametresinde cpu değerini gpu ile değiştirin.

Programlama çerçevesi Python API (Uygulama Programlama Arayüzü) Örnek çağrı
Qiskit qiskit.NeutralAtomBackend NeutralAtomBackend().run(my_qiskit_program, simulator_type="gpu", shots=10)
QIR simulation.NeutralAtomDevice simulation.NeutralAtomDevice().simulate(my_qir, type="gpu", shots=10)
QIR simulation.run_qir simulation.run_qir(my_qir, type="gpu", shots=10)

Örneğin, bu Python kod basit bir OpenQASM programını QIR'ye dönüştürür ve QIR öğesini GPU simülatöründe çalıştırır:

from qdk.openqasm import compile
from qdk.simulation import run_qir

qasm_code = """
    include "stdgates.inc";
    qubit[2] q;
    reset q;
    h q[0];
    cx q[0], q[1];
    bit c = measure q[1];
    """

qir = compile(qasm_code)
run_qir(qir, type="gpu", shots=10)