Komputasi hibrid terintegrasi
Komputasi hibrid terintegrasi menyatukan proses klasik dan kuantum, memungkinkan kode klasik mengontrol eksekusi operasi kuantum berdasarkan pengukuran pertengahan sirkuit sementara qubit fisik tetap hidup. Menggunakan teknik pemrograman umum, seperti kondisional berlapis, perulangan, dan panggilan fungsi, satu program kuantum dapat menjalankan masalah kompleks, mengurangi jumlah bidikan yang diperlukan. Menggunakan teknik penggunaan kembali qubit, program yang lebih besar dapat berjalan pada mesin yang menggunakan jumlah qubit yang lebih kecil.
Penting
Komputasi kuantum hibrid terintegrasi saat ini tidak didukung oleh ekstensi Modern (Modern Quantum Development Kit QDK) untuk Visual Studio Code, bersama dengan komponen lain dalam contoh di halaman ini, seperti kernel IQ#, %azure
perintah ajaib, atau qsharp.azure
modul. Untuk menjalankan pekerjaan hibrid terintegrasi, gunakan Microsoft Quantum Development Kit (QDK Klasik). Untuk informasi selengkapnya, lihat Lanjutkan bekerja di QDK Klasik.
Untuk diskusi selengkapnya, lihat:
- Granade & Weibe, "Menggunakan Random Walks untuk Estimasi Fase Iteratif".
- Lubinski, dkk., "Memajukan Hybrid Quantum–Classical Computation with Real-Time Execution"
Didukung targets
Saat ini, model komputasi hibrid terintegrasi di Azure Quantum didukung di Quantinuumtargets.
Quantinuum
Fitur yang didukung | Catatan |
---|---|
Perulangan klasik | Perulangan terikat saja |
Alur kontrol arbitrer | Penggunaan percabangan if/else |
Pengukuran pertengahan sirkuit | Menggunakan sumber daya register klasik |
Penggunaan kembali qubit | T/A |
Komputasi klasik real time | Aritmatika bilangan bulat tidak bertanda 32-bit Menggunakan sumber daya register klasik |
Mulai
Untuk mulai menjelajahi pemrograman hibrid terintegrasi, sebaiknya telusuri sampel dalam artikel ini, atau jelajahi tab komputasi kuantum Hibrid di galeri Sampel portal Azure Quantum.
Mengirimkan pekerjaan hibrid terintegrasi
Saat mengirimkan pekerjaan hibrid terintegrasi, Anda perlu menambahkan target parameter kemampuan setelah menentukan target. Selain itu, program hibrid terintegrasi di Azure Quantum dijalankan dan dikelola sama seperti pekerjaan kuantum reguler. Setiap pekerjaan memiliki SATU ID pekerjaan dan hasilnya adalah satu histogram.
Penting
Komputasi kuantum hibrid terintegrasi saat ini tidak didukung oleh ekstensi Modern (Modern Quantum Development Kit QDK) untuk Visual Studio Code, bersama dengan komponen lain dalam contoh di halaman ini, seperti kernel IQ#, %azure
perintah ajaib, atau qsharp.azure
modul. Untuk menjalankan pekerjaan hibrid terintegrasi, gunakan Microsoft Quantum Development Kit (QDK Klasik). Untuk informasi selengkapnya, lihat Lanjutkan bekerja di QDK Klasik.
I Q#
Saat menggunakan kernel IQ# di Jupyter Notebook, gunakan %azure.target-perintah ajaib kemampuan dengan AdaptiveExecution
parameter .
%azure.target quantinuum.sim.h1-1e
%azure.target-capability AdaptiveExecution
Python + Q#
Saat menggunakan paket python qsharp , gunakan qsharp.azure.target_capability
fungsi dengan AdaptiveExecution
parameter .
qsharp.azure.target("quantinuum.sim.h1-1e")
qsharp.azure.target_capability("AdaptiveExecution")
Azure CLI
Saat menggunakan Azure CLI untuk mengirimkan pekerjaan, tambahkan --target-capability
parameter dengan nilai AdaptiveExecution
.
az quantum job submit \
--target-capability AdaptiveExecution \
--target-id quantinuum.sim.h1-1e \
--job-name IterativePhaseEstimation \
--shots 100 \
--output table
Mengirimkan pekerjaan hibrid terintegrasi dalam sesi
Anda dapat menggabungkan beberapa pekerjaan hibrid terintegrasi dalam sesi menggunakan Q# dan Python. Saat mengirimkan sesi, tambahkan targetCapability
parameter input dengan nilai AdaptiveExecution
.
with target.open_session(name="Q# session") as session:
target.submit(input_data=QuantumOperation, name="Job 1", input_params={"count":100, "targetCapability":"AdaptiveExecution"}) # First job submission
target.submit(input_data=QuantumOperation, name="Job 2", input_params={"count":200, "targetCapability":"AdaptiveExecution"}) # Second job submission
target.submit(input_data=QuantumOperation, name="Job 3", input_params={"count":300, "targetCapability":"AdaptiveExecution"}) # Third job submission
Untuk informasi selengkapnya, lihat Mulai menggunakan sesi.
Catatan
Meskipun sesi tersedia untuk semua penyedia perangkat keras komputasi kuantum, perhatikan bahwa pekerjaan komputasi kuantum hibrid terintegrasi saat ini didukung di Quantinuum targets.
Memperkirakan biaya pekerjaan hibrid terintegrasi
Anda dapat memperkirakan biaya menjalankan pekerjaan hibrid terintegrasi pada perangkat keras Quantinuum dengan menjalankannya di emulator terlebih dahulu.
Setelah berhasil berjalan di emulator:
- Di ruang kerja Azure Quantum Anda, pilih Manajemen pekerjaan.
- Pilih pekerjaan yang Anda kirimkan.
- Di popup Detail pekerjaan , pilih Estimasi Biaya untuk melihat berapa banyak eHQC (kredit emulator Quantinuum) yang digunakan. Jumlah ini diterjemahkan langsung ke jumlah HQC (kredit kuantum Quantinuum) yang diperlukan untuk menjalankan pekerjaan pada perangkat keras Quantinuum.
Catatan
Quantinuum membuka seluruh sirkuit dan menghitung biaya pada semua jalur kode, baik dijalankan secara kondisional atau tidak.
Sampel hibrid terintegrasi
Sampel berikut menunjukkan kumpulan fitur saat ini untuk komputasi hibrid terintegrasi.
- Memverifikasi status GHZ yang terjerat
- Pengulangan tiga kubit
- Estimasi fase berulang
Prasyarat
- Jika Anda baru menggunakan Azure Quantum, Anda memerlukan langganan Azure dan ruang kerja Azure Quantum untuk menjalankan sampel terhadap perangkat keras kuantum. Untuk informasi selengkapnya, lihat Buat ruang kerja Azure Quantum.
- Visual Studio Code dan Quantum Development Kit pengaturan di lingkungan lokal Anda. Untuk informasi selengkapnya, lihat Menyiapkan Quantum Development Kit.
- Pastikan visual Studio Code memiliki versi terbaru ( Quantum Development Kit 0.27.258160).
- Di Visual Studio Code, pilih Ctrl + Shift + X dan cari "Microsoft Quantum Development Kit".
Sampel dalam artikel ini disiapkan untuk dijalankan di Visual Studio (VS) Code dan menggunakan antarmuka baris perintah (CLI) Azure bawaan untuk mengirimkan pekerjaan ke Azure Quantum. Untuk menjalankan versi Jupyter Notebook dari sampel ini dan sampel lainnya, masuk ke ruang kerja portal Azure Anda dan lihat sampel dari tab komputasi kuantum Hibrid di galeri Sampel. Anda dapat menjalankan notebook di cloud atau mengunduhnya dan menjalankannya secara lokal.
Untuk memecahkan masalah dengan program hibrid terintegrasi, lihat Pemecahan masalah hibrid terintegrasi.
Dalam sampel ini, Anda akan menemukan cara memadukan instruksi klasik dan kuantum dalam program yang sama, semuanya sepenuhnya diproses oleh backend komputasi kuantum.
Fitur yang perlu diperhatikan tentang sampel ini:
- Pengukuran loop dan qubit terjadi sementara qubit tetap koheren.
- Rutinitas ini mencampur operasi komputasi klasik dan kuantum.
- Anda tidak perlu belajar memprogram perangkat keras berkinerja tinggi khusus yang berjalan di samping QPU (seperti FPGA).
- Menjalankan program yang setara tanpa fitur hibrid terintegrasi akan memerlukan pengembalian setiap hasil pengukuran menengah dan kemudian menjalankan pasca-pemrosesan pada data.
Membuat proyek Visual Studio Code
Di Visual Studio Code, buat proyek aplikasi konsol mandiri baru Q# bernama CheckGHZ.
- Pilih Lihat > Perintah Pallete >Q#: Buat aplikasi konsol Mandiri proyek > baru
Ganti konfigurasi di CheckGHZ.csproj dengan yang berikut:
<Project Sdk="Microsoft.Quantum.Sdk/0.27.258160"> <PropertyGroup> <OutputType>Exe</OutputType> <TargetFramework>net6.0</TargetFramework> <ExecutionTarget>quantinuum</ExecutionTarget> <TargetCapability>AdaptiveExecution</TargetCapability> </PropertyGroup> </Project>
Ganti kode di Program.qs dengan yang berikut:
namespace Microsoft.Quantum.Samples { open Microsoft.Quantum.Measurement; open Microsoft.Quantum.Intrinsic; /// # Summary /// Counts the number of times measurements of a prepared GHZ state did not match the expected correlations. @EntryPoint() // The EntryPoint attribute is used to mark that this operation is where a quantum program will start running. operation CheckGHZ() : Int { use q = Qubit[3]; mutable mismatch = 0; for _ in 1..10 { // Prepare the GHZ state. H(q[0]); CNOT(q[0], q[1]); CNOT(q[1], q[2]); // Measures and resets the 3 qubits let (r0, r1, r2) = (MResetZ(q[0]), MResetZ(q[1]), MResetZ(q[2])); // Adjusts classical value based on qubit measurement results if not (r0 == r1 and r1 == r2) { set mismatch += 1; } } return mismatch; } }
Dari jendela terminal di Visual Studio Code, sambungkan ke ruang kerja Azure Quantum Anda dan atur sumber daya default.
az login
Catatan
ID langganan Azure, grup sumber daya, dan nama ruang kerja Anda dapat dicantumkan di jendela terminal setelah masuk dengan menjalankan daftar ruang kerja kuantum az. Secara bergantian, Anda dapat menemukannya di portal Azure di halaman Gambaran Umum ruang kerja Azure Quantum Anda.
az account set --subscription <MySubscriptionID> az quantum workspace set --resource-group <MyResourceGroup> --workspace <MyWorkspace> --location <MyLocation>
Kirim pekerjaan dan lihat hasilnya. Eksekusi ini menggunakan sekitar 10,65 eHQC (unit penagihan emulator Quantinuum)
az quantum job submit \ --target-id quantinuum.sim.h1-1e \ --job-name CheckGHZ \ --target-capability AdaptiveExecution \ --shots 50
az quantum job output \ -o table \ --job-id [job-id]
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk