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:

Komputasi kuantum hibrid terintegrasi

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:

  1. Di ruang kerja Azure Quantum Anda, pilih Manajemen pekerjaan.
  2. Pilih pekerjaan yang Anda kirimkan.
  3. 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.

Estimasi biaya

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

  1. Di Visual Studio Code, buat proyek aplikasi konsol mandiri baru Q# bernama CheckGHZ.

    1. Pilih Lihat > Perintah Pallete >Q#: Buat aplikasi konsol Mandiri proyek > baru
  2. 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>
    
  3. 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;
        }
    }
    
  4. 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>
    
  5. 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]
    

Output GHZ

Langkah berikutnya

Komputasi hibrid terdistribusi