Cara mengirimkan sirkuit dengan Qiskit ke Azure Quantum
Pelajari cara mengirimkan sirkuit kuantum Qiskit menggunakan azure-quantum
Python paket. Anda dapat mengirimkan sirkuit Qiskit ke Azure Quantum menggunakan notebook Azure Quantum, yang memiliki paket bawaan azure-quantum
Python , atau dari komputer lokal Anda. Anda juga dapat menguji sirkuit Anda menggunakan simulator jarang lokal.
Untuk informasi selengkapnya, lihat Sirkuit kuantum.
Prasyarat
Untuk detail penginstalan, lihat Menyiapkan ekstensi QDK.
Ruang kerja Azure Quantum di langganan Azure Anda. Untuk membuat ruang kerja, lihat Membuat ruang kerja Azure Quantum.
Lingkungan Python dengan Python dan Pip terinstal.
Visual Studio Code dengan Ekstensi Azure Quantum Development Kit, Python, dan Jupyter terinstal.
Paket Azure Quantum
azure-quantum
Python dengan tag [qiskit].python -m pip install --upgrade azure-quantum[qiskit] qsharp ipykernel
Penting
Pastikan Anda memiliki versi terbaru Qiskit. Untuk informasi selengkapnya, lihat Python azure-quantum.
Catatan
Jika kernel Python Jupyter
ipykernel
tidak terdeteksi, VISUAL Code akan meminta Anda untuk menginstalnya.
Membuat Jupyter Notebook
- Di Visual Studio Code, pilih > Perintah dan pilih Buat: Notebook Jupyter Baru.
- Di kanan atas, Visual Studio Code akan mendeteksi dan menampilkan versi Python dan lingkungan virtual Python yang dipilih untuk buku catatan. Jika Anda memiliki beberapa Python lingkungan, Anda mungkin perlu memilih kernel menggunakan pemilih kernel di kanan atas. Jika tidak ada lingkungan yang terdeteksi, lihat Jupyter Notebooks di VISUAL Code untuk informasi penyiapan.
Memuat impor yang diperlukan
Di sel pertama buku catatan Anda, jalankan kode berikut untuk memuat impor yang diperlukan:
import azure.quantum
from azure.quantum import Workspace
from qiskit import QuantumCircuit
from qiskit.visualization import plot_histogram
from azure.quantum.qiskit import AzureQuantumProvider
Menyambungkan ke layanan Azure Quantum
Untuk menyambungkan ke layanan Azure Quantum, Anda memerlukan ID sumber daya dan lokasi ruang kerja Azure Quantum Anda.
Masuk ke akun Azure Anda, https://portal.azure.com,
Pilih ruang kerja Azure Quantum Anda, dan navigasikan ke Gambaran Umum.
Salin parameter di bidang .
Tambahkan sel baru di buku catatan Anda dan gunakan informasi akun Anda untuk membuat Workspace
dan AzureQuantumProvider
objek untuk menyambungkan ke ruang kerja Azure Quantum Anda.
workspace = Workspace(
resource_id = "", # Add the resourceID of your workspace
location = "" # Add the location of your workspace (for example "westus")
)
provider = AzureQuantumProvider(workspace)
Mencantumkan semua backend
Anda sekarang dapat mencetak semua backend komputasi kuantum yang tersedia di ruang kerja Anda:
print("This workspace's targets:")
for backend in provider.backends():
print("- " + backend.name())
This workspace's targets:
- ionq.qpu
- ionq.qpu.aria-1
- ionq.simulator
- microsoft.estimator
- quantinuum.hqs-lt-s1
- quantinuum.hqs-lt-s1-apival
- quantinuum.hqs-lt-s2
- quantinuum.hqs-lt-s2-apival
- quantinuum.hqs-lt-s1-sim
- quantinuum.hqs-lt-s2-sim
- quantinuum.qpu.h1-1
- quantinuum.sim.h1-1sc
- quantinuum.sim.h1-1e
- rigetti.sim.qvm
- rigetti.qpu.ankaa-3
Menjalankan sirkuit sederhana
Pertama, buat sirkuit Qiskit sederhana untuk dijalankan.
# Create a Quantum Circuit acting on the q register
circuit = QuantumCircuit(3, 3)
circuit.name = "Qiskit Sample - 3-qubit GHZ circuit"
circuit.h(0)
circuit.cx(0, 1)
circuit.cx(1, 2)
circuit.measure([0,1,2], [0, 1, 2])
# Print out the circuit
circuit.draw()
┌───┐ ┌─┐
q_0: ┤ H ├──■───────┤M├──────
└───┘┌─┴─┐ └╥┘┌─┐
q_1: ─────┤ X ├──■───╫─┤M├───
└───┘┌─┴─┐ ║ └╥┘┌─┐
q_2: ──────────┤ X ├─╫──╫─┤M├
└───┘ ║ ║ └╥┘
c: 3/════════════════╩══╩══╩═
0 1 2
target Pilih untuk menjalankan program Anda
Jalankan di simulator IonQ
Sebelum berjalan pada perangkat keras nyata, mari kita uji sirkuit di simulator. Gunakan get_backend
untuk membuat Backend
objek untuk menyambungkan ke backend Simulator IonQ:
simulator_backend = provider.get_backend("ionq.simulator")
Backend IonQ mendukung gerbang dari set gerbang yang ditentukan dan dikompilasi agar dapat berjalan secara optimal di perangkat keras. Jika sirkuit Anda berisi gerbang yang tidak ada dalam daftar ini, Anda perlu mentranspilasi ke dalam yang didukung gateset
menggunakan transpile
fungsi yang disediakan oleh Qiskit:
from qiskit import transpile
circuit = transpile(circuit, simulator_backend)
Fungsi transpile mengembalikan objek sirkuit baru di mana gerbang didekomposisikan ke dalam gerbang yang didukung pada backend yang ditentukan.
Anda sekarang dapat menjalankan program melalui layanan Azure Quantum dan mendapatkan hasilnya. Sel berikut mengirimkan pekerjaan yang menjalankan sirkuit dengan 100 bidikan:
job = simulator_backend.run(circuit, shots=8)
job_id = job.id()
print("Job id", job_id)
Job id 00000000-0000-0000-0000-000000000000
Untuk menunggu sampai pekerjaan selesai dan mengembalikan hasilnya, jalankan:
result = job.result()
print(result)
Result(backend_name='ionq.simulator', backend_version='1', qobj_id='Qiskit Sample - 3-qubit GHZ circuit', job_id='00000000-0000-0000-0000-000000000000', success=True, results=[ExperimentResult(shots=8, success=True, meas_level=2, data=ExperimentResultData(counts={'000': 4, '111': 4}, memory=['000', '000', '000', '000', '111', '111', '111', '111'], probabilities={'000': 0.5, '111': 0.5}), header=QobjExperimentHeader(name='Qiskit Sample - 3-qubit GHZ circuit', num_qubits=3, metadata={}), status=JobStatus.DONE, name='Qiskit Sample - 3-qubit GHZ circuit')], date=None, status=None, header=None, error_data=None)
Karena hasilnya adalah objek asli paket Qiskit, Anda dapat menggunakan Qiskit result.get_counts
dan plot_histogram
untuk memvisualisasikan hasilnya. Untuk memastikan bahwa semua kemungkinan label bitstring diwakili, tambahkan ke counts
.
counts = {format(n, "03b"): 0 for n in range(8)}
counts.update(result.get_counts(circuit))
print(counts)
plot_histogram(counts)
{'000': 4, '001': 0, '010': 0, '011': 0, '100': 0, '101': 0, '110': 0, '111': 4}
Anda juga dapat menggunakan get_memory()
fungsi untuk menampilkan data bidikan individual dari pekerjaan
result.get_memory(circuit)
['000', '000', '000', '000', '111', '111', '111', '111']
Catatan
Pada IonQ targets, jika Anda mengirimkan pekerjaan dengan jumlah bidikan ganjil, hasilnya akan dibulatkan ke angka genap berikutnya. Misalnya, jika Anda menentukan 9 bidikan, hasilnya akan menampilkan data untuk 8 bidikan.
Memperkirakan biaya pekerjaan
Sebelum menjalankan pekerjaan di QPU, Anda harus memperkirakan berapa biaya yang harus dijalankan.
Untuk detail harga terbaru, lihat Harga IonQ, atau temukan ruang kerja Anda dan lihat opsi harga di tab "Penyedia" ruang kerja melalui: aka.ms/aq/myworkspaces.
Menjalankan di IonQ QPU
Untuk terhubung ke perangkat keras nyata ( Unit Prosesor Quantum (QPU)), cukup berikan nama target"ionq.qpu.aria-1"
ke get_backend
metode :
qpu_backend = provider.get_backend("ionq.qpu.aria-1")
Kirim sirkuit untuk dijalankan di Azure Quantum, dapatkan hasilnya, dan jalankan plot_histogram
untuk memplot hasilnya.
Catatan
Waktu yang diperlukan untuk menjalankan sirkuit di QPU dapat bervariasi bergantung pada waktu antrean saat ini.
# Submit the circuit to run on Azure Quantum
job = qpu_backend.run(circuit, shots=100)
job_id = job.id()
print("Job id", job_id)
# Get the job results (this method waits for the Job to complete):
result = job.result()
print(result)
counts = {format(n, "03b"): 0 for n in range(8)}
counts.update(result.get_counts(circuit))
print(counts)
plot_histogram(counts)
Job id 00000000-0000-0000-0000-000000000000
Job Status: job has successfully run
Result(backend_name='ionq.qpu.aria-1', backend_version='1', qobj_id='Qiskit Sample - 3-qubit GHZ circuit', job_id='00000000-0000-0000-0000-000000000000', success=True, results=[ExperimentResult(shots=1024, success=True, meas_level=2, data=ExperimentResultData(counts={'0': 505, '1': 6, '2': 1, '3': 1, '4': 1, '5': 10, '6': 11, '7': 488}, probabilities={'0': 0.4932, '1': 0.0059, '2': 0.001, '3': 0.001, '4': 0.001, '5': 0.0098, '6': 0.0117, '7': 0.4766}), header=QobjExperimentHeader(name='Qiskit Sample - 3-qubit GHZ circuit', num_qubits='3', qiskit='True'))])
{'000': 505, '001': 6, '010': 1, '011': 1, '100': 1, '101': 10, '110': 11, '111': 488}
Penting
Mengirimkan beberapa sirkuit pada satu pekerjaan saat ini tidak didukung. Sebagai solusinya, Anda dapat memanggil backend.run
metode untuk mengirimkan setiap sirkuit secara asinkron, lalu mengambil hasil setiap pekerjaan. Contohnya:
jobs = []
for circuit in circuits:
jobs.append(backend.run(circuit, shots=N))
results = []
for job in jobs:
results.append(job.result())
Prasyarat
- Akun Azure dengan langganan aktif. Jika Anda tidak memiliki akun Azure, daftarkan secara gratis dan daftar untuk langganan prabayar.
- Ruang kerja Azure Quantum. Untuk informasi selengkapnya, lihat Buat ruang kerja Azure Quantum.
Membuat buku catatan baru di ruang kerja Anda
- Masuk ke portal Azure lalu pilih ruang kerja yang Anda buat di langkah sebelumnya.
- Di panel kiri, pilih Notebook.
- Klik Notebook Saya lalu klik Tambahkan Baru.
- Ketik nama untuk file, misalnya Qiskit.ipynb, lalu klik Buat file.
Saat buku catatan baru Anda terbuka, buku catatan akan secara otomatis membuat kode untuk sel pertama, berdasarkan informasi langganan dan ruang kerja Anda.
from azure.quantum import Workspace
workspace = Workspace (
resource_id = "", # Add your resource_id
location = "" # Add your workspace location (for example, "westus")
)
Catatan
Kecuali dinyatakan lain, Anda harus menjalankan setiap sel saat Anda membuatnya untuk menghindari masalah kompilasi.
Klik ikon segitiga "putar" di sebelah kiri sel untuk menjalankan kode.
Memuat impor yang diperlukan
Pertama, Anda perlu mengimpor beberapa modul tambahan.
Klik + Kode untuk menambahkan sel baru, lalu tambahkan dan jalankan kode berikut:
from qiskit import QuantumCircuit
from qiskit.visualization import plot_histogram
from azure.quantum.qiskit import AzureQuantumProvider
Menyambungkan ke layanan Azure Quantum
Selanjutnya, buat AzureQuantumProvider
objek menggunakan Workspace
objek dari sel sebelumnya untuk menyambungkan ke ruang kerja Azure Quantum Anda. Tambahkan sel baru dengan kode berikut:
provider = AzureQuantumProvider(workspace)
Menentukan sirkuit sederhana
Di sel baru, buat objek circuit
. Contoh ini adalah generator bit acak kuantum sederhana. Tambahkan kode berikut untuk menentukan dan menampilkan sirkuit:
# Create a Quantum Circuit acting on the q register
circuit = QuantumCircuit(3, 3)
circuit.name = "Qiskit Sample - 3-qubit GHZ circuit"
circuit.h(0)
circuit.cx(0, 1)
circuit.cx(1, 2)
circuit.measure([0, 1, 2], [0, 1, 2])
# Print out the circuit
circuit.draw()
┌───┐ ┌─┐
q_0: ┤ H ├──■───────┤M├──────
└───┘┌─┴─┐ └╥┘┌─┐
q_1: ─────┤ X ├──■───╫─┤M├───
└───┘┌─┴─┐ ║ └╥┘┌─┐
q_2: ──────────┤ X ├─╫──╫─┤M├
└───┘ ║ ║ └╥┘
c: 3/════════════════╩══╩══╩═
0 1 2
Cantumkan semua targets
Anda sekarang dapat menampilkan semua komputasi targetskuantum , atau backend, yang tersedia di ruang kerja Anda. Tambahkan sel baru dan jalankan baris berikut:
print("This workspace's targets:")
for backend in provider.backends():
print("- " + backend.name())
This workspace's targets:
- ionq.simulator
- ionq.qpu.aria-1
- microsoft.estimator
- quantinuum.qpu.h1-1
- quantinuum.sim.h1-1sc
- quantinuum.sim.h1-1e
- rigetti.sim.qvm
- rigetti.qpu.ankaa-3
target Pilih untuk menjalankan program Anda
Untuk memeriksa kode Anda sebelum menjalankannya di perangkat keras kuantum yang sebenarnya, Anda dapat menggunakan simulator kuantum IonQ, ionq.simulator
.
Tambahkan sel baru dan buat objek untuk mewakili simulator targetkuantum IonQ :
# Get IonQ quantum simulator target:
simulator_backend = provider.get_backend("ionq.simulator")
Jalankan di simulator IonQ
Untuk menjalankan sirkuit Anda pada simulator, tambahkan kode berikut. Contoh ini menggunakan run
metode target untuk mengirimkan pekerjaan Anda, lalu memantau status pekerjaan.
# Submit the circuit to run on Azure Quantum
job = simulator_backend.run(circuit, shots=8)
job_id = job.id()
print("Job id", job_id)
Ketika pekerjaan berhasil berjalan, dapatkan hasil pekerjaan dan tampilkan:
# Get the job results:
result = job.result()
print(result)
Result(backend_name='ionq.simulator', backend_version='1', qobj_id='Qiskit Sample - 3-qubit GHZ circuit', job_id='00000000-0000-0000-0000-000000000000', success=True, results=[ExperimentResult(shots=8, success=True, meas_level=2, data=ExperimentResultData(counts={'000': 4, '111': 4}, memory=['000', '000', '000', '000', '111', '111', '111', '111'], probabilities={'000': 0.5, '111': 0.5}), header=QobjExperimentHeader(name='Qiskit Sample - 3-qubit GHZ circuit', num_qubits=3, metadata={}), status=JobStatus.DONE, name='Qiskit Sample - 3-qubit GHZ circuit')], date=None, status=None, header=None, error_data=None)
Karena jenis result
ini adalah objek native ke paket Qiskit, Anda dapat menggunakan result.get_counts
dan plot_histogram
Qiskit untuk memvisualisasikan hasilnya. Untuk memastikan bahwa semua kemungkinan label bitstring diwakili, tambahkan ke counts
.
counts = {format(n, "03b"): 0 for n in range(8)}
counts.update(result.get_counts(circuit))
print(counts)
plot_histogram(counts)
{'000': 4, '001': 0, '010': 0, '011': 0, '100': 0, '101': 0, '110': 0, '111': 4}
Anda juga dapat menggunakan get_memory()
fungsi untuk menampilkan data bidikan individual dari pekerjaan
result.get_memory(circuit)
['000', '000', '000', '000', '111', '111', '111', '111']
Catatan
Pada IonQ targets, jika Anda mengirimkan pekerjaan dengan jumlah bidikan ganjil, hasilnya akan dibulatkan ke angka genap berikutnya. Misalnya, jika Anda menentukan 9 bidikan, hasilnya akan menampilkan data untuk 8 bidikan.
Memperkirakan biaya pekerjaan
Sebelum menjalankan pekerjaan pada perangkat keras kuantum aktual , atau unit pemrosesan kuantum (QPU), Anda harus memperkirakan berapa biaya yang harus dijalankan.
Untuk detail harga terbaru, lihat Harga IonQ, atau temukan ruang kerja Anda dan lihat opsi harga di panel Penyedia ruang kerja Anda.
Menjalankan di IonQ QPU
Setelah Anda berhasil menjalankan pekerjaan Anda pada simulator IonQ dan memperkirakan biaya QPU, saatnya untuk menjalankan sirkuit Anda pada perangkat keras.
Catatan
Waktu yang diperlukan untuk menjalankan sirkuit di QPU dapat bervariasi bergantung pada waktu antrean saat ini. Anda dapat melihat waktu antrean rata-rata untuk a target dengan memilih bilah Penyedia ruang kerja Anda.
Gunakan metode dan operasi run
yang sama seperti yang telah Anda gunakan sebelumnya dengan API Validator untuk mengirimkan dan memantau pekerjaan Anda:
# Submit the circuit to run on Azure Quantum
job = qpu_backend.run(circuit, shots=100)
job_id = job.id()
print("Job id", job_id)
Setelah pekerjaan selesai, dapatkan hasil pekerjaan seperti sebelumnya dan tampilkan dalam bagan:
result = job.result()
print(result)
counts = {format(n, "03b"): 0 for n in range(8)}
counts.update(result.get_counts(circuit))
print(counts)
plot_histogram(counts)
Job id 910b5ac8-98cd-11ec-b3ba-00155d5528cf
Job Status: job has successfully run
Result(backend_name='ionq.simulator', backend_version='1', qobj_id='Qiskit Sample - 3-qubit GHZ circuit', job_id='Job id 54e8c740-98d9-11ec-b382-00155d957f5d', success=True, results=[ExperimentResult(shots=1024, success=True, meas_level=2, data=ExperimentResultData(counts={'0': 505, '1': 6, '2': 1, '3': 1, '4': 1, '5': 10, '6': 11, '7': 488}, probabilities={'0': 0.4932, '1': 0.0059, '2': 0.001, '3': 0.001, '4': 0.001, '5': 0.0098, '6': 0.0117, '7': 0.4766}), header=QobjExperimentHeader(name='Qiskit Sample - 3-qubit GHZ circuit', num_qubits='3', qiskit='True'))])
{'000': 505, '001': 6, '010': 1, '011': 1, '100': 1, '101': 10, '110': 11, '111': 488}
Penting
Mengirimkan beberapa sirkuit pada satu pekerjaan saat ini tidak didukung. Sebagai solusinya, Anda dapat memanggil backend.run
metode untuk mengirimkan setiap sirkuit secara asinkron, lalu mengambil hasil setiap pekerjaan. Contohnya:
jobs = []
for circuit in circuits:
jobs.append(backend.run(circuit, shots=N))
results = []
for job in jobs:
results.append(job.result())
Prasyarat
Untuk detail penginstalan, lihat Menyiapkan ekstensi QDK.
Lingkungan Python dengan Python dan Pip terinstal.
Visual Studio Code dengan Kit Pengembangan Azure Quantum dan Python ekstensi terinstal.
Paket Azure Quantum
qsharp
Python denganqiskit
tag danwidget
.python pip install "qsharp[qiskit,widgets]>=1.9"
Menjalankan sirkuit dasar
Di Visual Studio Code, buka file baru Python untuk menentukan dan menjalankan sirkuit dasar menggunakan simulator jarang bawaan dalam paket Qsharp.
# load the required imports
from qiskit.circuit.random import random_circuit
from qsharp.interop.qiskit import QSharpBackend
# define and display the circuit
circuit = random_circuit(2, 2, measure=True)
print(circuit)
# run the circuit using the built-in sparse simulator
backend = QSharpBackend()
job = backend.run(circuit)
counts = job.result().get_counts()
print(counts)
Untuk menjalankan program, pilih ikon Jalankan di kanan atas, dan pilih Jalankan Python file. Output ditampilkan di jendela terminal baru.
┌─────────────────────────┐┌─┐
q_0: ─■───────────┤0 ├┤M├───
│P(0.79983) │ (XX-YY)(1.9337,1.7385) │└╥┘┌─┐
q_1: ─■───────────┤1 ├─╫─┤M├
└─────────────────────────┘ ║ └╥┘
c: 2/═════════════════════════════════════════╩══╩═
0 1
{'11': 680, '00': 344}
Hasilkan QIR untuk sirkuit
Dengan menggunakan sirkuit yang sama, Anda dapat menghasilkan QIR yang digunakan untuk berjalan pada perangkat keras kuantum.
Catatan
Saat menghasilkan QIR, semua register harus sudah diukur. Jika ada register yang tidak digunakan, kesalahan akan muncul. Selain itu, mencoba menghasilkan QIR ketika profil diatur ke Unrestricted
menimbulkan kesalahan. Profil Unrestricted
hanya valid untuk simulasi. TargetProfile.Base atau TargetProfile.Adaptive_RI
harus digunakan.
target_profile
dapat diambil alih dalam panggilan backend.qir(...)
untuk beralih profil.
Mengimpor
QSharpError
danTargetProfile
from qsharp import QSharpError, TargetProfile
Ubah output untuk menghasilkan QIR
print(backend.qir(circuit, target_profile=TargetProfile.Adaptive_RI))
Kode Anda sekarang akan terlihat seperti ini:
# load the required imports
from qiskit.circuit.random import random_circuit
from qsharp.interop.qiskit import QSharpBackend
from qsharp import QSharpError, TargetProfile
# define and display the circuit
circuit = random_circuit(2, 2, measure=True)
print(circuit)
# generate QIR for the circuit
print(backend.qir(circuit, target_profile=TargetProfile.Adaptive_RI))
dengan output:
┌────────────┐ ┌─┐
q_0: ┤ Rx(2.7195) ├─■───────────┤M├───
└──┬─────┬───┘ │U1(5.5924) └╥┘┌─┐
q_1: ───┤ Tdg ├─────■────────────╫─┤M├
└─────┘ ║ └╥┘
c: 2/════════════════════════════╩══╩═
0 1
%Result = type opaque
%Qubit = type opaque
define void @ENTRYPOINT__main() #0 {
block_0:
call void @__quantum__qis__rx__body(double 2.7194945105768586, %Qubit* inttoptr (i64 0 to %Qubit*))
call void @__quantum__qis__rz__body(double 2.796204066686262, %Qubit* inttoptr (i64 0 to %Qubit*))
call void @__quantum__qis__t__adj(%Qubit* inttoptr (i64 1 to %Qubit*))
call void @__quantum__qis__cx__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Qubit* inttoptr (i64 1 to %Qubit*))
call void @__quantum__qis__rz__body(double -2.796204066686262, %Qubit* inttoptr (i64 1 to %Qubit*))
call void @__quantum__qis__cx__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Qubit* inttoptr (i64 1 to %Qubit*))
call void @__quantum__qis__rz__body(double 2.796204066686262, %Qubit* inttoptr (i64 1 to %Qubit*))
call void @__quantum__qis__m__body(%Qubit* inttoptr (i64 0 to %Qubit*), %Result* inttoptr (i64 0 to %Result*))
call void @__quantum__qis__m__body(%Qubit* inttoptr (i64 1 to %Qubit*), %Result* inttoptr (i64 1 to %Result*))
call void @__quantum__rt__array_record_output(i64 2, i8* null)
call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 1 to %Result*), i8* null)
call void @__quantum__rt__result_record_output(%Result* inttoptr (i64 0 to %Result*), i8* null)
ret void
}
declare void @__quantum__qis__rx__body(double, %Qubit*)
declare void @__quantum__qis__rz__body(double, %Qubit*)
declare void @__quantum__qis__t__adj(%Qubit*)
declare void @__quantum__qis__cx__body(%Qubit*, %Qubit*)
declare void @__quantum__qis__m__body(%Qubit*, %Result*) #1
declare void @__quantum__rt__array_record_output(i64, i8*)
declare void @__quantum__rt__result_record_output(%Result*, i8*)
attributes #0 = { "entry_point" "output_labeling_schema" "qir_profiles"="adaptive_profile" "required_num_qubits"="2" "required_num_results"="2" }
attributes #1 = { "irreversible" }
; module flags
!llvm.module.flags = !{!0, !1, !2, !3, !4, !5, !6, !7, !8, !9, !10}
!0 = !{i32 1, !"qir_major_version", i32 1}
!1 = !{i32 7, !"qir_minor_version", i32 0}
!2 = !{i32 1, !"dynamic_qubit_management", i1 false}
!3 = !{i32 1, !"dynamic_result_management", i1 false}
!4 = !{i32 1, !"classical_ints", i1 true}
!5 = !{i32 1, !"qubit_resetting", i1 true}
!6 = !{i32 1, !"classical_floats", i1 false}
!7 = !{i32 1, !"backwards_branching", i1 false}
!8 = !{i32 1, !"classical_fixed_points", i1 false}
!9 = !{i32 1, !"user_functions", i1 false}
!10 = !{i32 1, !"multiple_target_branching", i1 false}
Tidak semua program dapat berjalan pada semua piranti keras. Di sini Anda dapat mencoba target profil Base
, tetapi kami akan mendapatkan kesalahan terperinci tentang bagian program mana yang tidak didukung.
try:
backend.qir(qc, target_profile=TargetProfile.Base)
except QSharpError as e:
print(e)