Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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:
- Python Python 3.10 veya üzeri ve pip içeren bir ortam
- Visual Studio Code'nin en son sürümü (VS Code)
- VS Code'da uzantınınPython ve Jupyter uzantısının en son sürümleri
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:
VS Code'da Görüntüle> öğesini seçin.
Create: New Jupyter Notebook girin. Boş bir not defteri dosyası yeni bir sekmede açılır.
İlk hücrede,
qdkpaketindenqsharpmodülünü içe aktarın.from qdk import qsharpYeni bir hücrede, Q# kodunu yazmak için
%%qsharpmagic 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); }Yeni bir hücre oluşturun. Q# programını seyrek simülatörde çalıştırmak için
qsharpmodülündekiruniş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
NeutralAtomDeviceAPI'leriNeutralAtomBackendö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)