⏳ Estimated Reading Time: 3 min
Kuantum hesaplamaya başlarken en kritik adımlardan biri, yazdığınız devreleri nerede çalıştıracağınızı bilmektir. Qiskit, hem simülasyon hem de gerçek kuantum cihazlarına erişim sağlayan esnek bir framework sunar. Bu yazıda, IBM Quantum Lab üzerinden bu backend'leri nasıl kullanacağınızı, simülasyon ile gerçek cihazlar arasındaki farkları örneklerle açıklayacağım.
1. Qiskit Backend Nedir?
- Simülatörler: Klasik bilgisayarlarda kuantum davranışını taklit eder.
- Gerçek Cihazlar: IBM'in fiziksel kuantum işlemcilerine (örneğin ibm_nairobi, ibm_kyoto) bağlanır.
2. Simülasyon ile Gerçek Cihaz Arasındaki Farklar
Özellik | Simülatör | Gerçek Cihaz |
---|---|---|
Hız: | Küçük devrelerde hızlı | Kuyruk nedeniyle yavaş |
Doğruluk: | Mükemmel (gürültüsüz) | Gürültü ve hatalar mevcut |
Kullanım Amacı: | Test ve debug | Gerçek dünya deneyimi |
Qubit Sayısı | 100+ qubit simüle edilebilir | Genellikle 5-1000 qubit (cihaza bağlı) |
Maliyet: | Ücretsiz | IBM Quantum Credits gerekebilir |
3. Simülatör Kullanımı (Örnek Kod)
4. Gerçek Cihaz Kullanımı (IBM Quantum Lab)
from qiskit import QuantumCircuit, transpile, QuantumRegister, ClassicalRegister # QuantumRegister eklendifrom qiskit_ibm_runtime import QiskitRuntimeService, Samplerfrom qiskit.visualization import plot_histogram# IBM Quantum hesabına bağlanservice = QiskitRuntimeService(channel="ibm_quantum", token="bb253074cfea8aab13ca797_XYZ")# Kullanılabilir bir backend seçbackend = service.least_busy(operational=True, simulator=False)print(f"Seçilen backend: {backend}")
Seçilen backend: <IBMBackend('ibm_kyiv')>
# Kuantum ve klasik register’ları açıkça tanımlaqr = QuantumRegister(1, 'q') # 1 kubitlik kuantum register, adı 'q'cr = ClassicalRegister(1, 'c0') # 1 bitlik klasik register, adı 'c0'circuit = QuantumCircuit(qr, cr) # Devreye register’ları eklecircuit.h(0) # Hadamard kapısı ile süperpozisyoncircuit.measure(0, 0) # 0. kubit’i c0’a ölç# Devreyi backend’in ISA’sına uygun hale getir (transpile)isa_circuit = transpile(circuit, backend=backend)# Transpile edilmiş devreyi çiz (isteğe bağlı)isa_circuit.draw(output='mpl')# Sampler’ı oluştursampler = Sampler(mode=backend)# Transpile edilmiş devreyi liste içinde çalıştırjob = sampler.run([isa_circuit], shots=1024)# Sonuçları alresult = job.result()quasi_dist = result[0].data.c0.get_counts() # 'c0' artık tanımlı# Sonuçları histogram olarak görselleştirplot_histogram(quasi_dist)
Çıktı:
Bundan sonraki yazılarımda Python kernellerini de paylaşacağım. İlgili kerneli indirmek için:
0 Comments
Konuyla ilgili yorum giriniz.