Bagikan melalui


Jenis profil QIR target di Azure Quantum

Artikel ini membahas berbagai jenis jenis profil QIR target yang tersedia di penyedia komputasi kuantum di Azure Quantum. Jenis profil QIR target digunakan untuk menentukan kemampuan perangkat kuantum yang dapat Anda gunakan target dengan program Q# Anda.

Profil target dan batasannya

Perangkat kuantum masih merupakan teknologi yang berkembang, dan tidak semuanya dapat menjalankan semua kode Q#. Dengan demikian, Anda perlu mengingat beberapa batasan saat mengembangkan program untuk yang berbeda targets. Saat ini, Azure Quantum dan QDK mengelola tiga profil berbeda target :

  • Unrestricted: Profil ini dapat menjalankan program QIR apa pun dalam batas memori untuk simulator atau jumlah qubit untuk komputer kuantum fisik.
  • QIR base: Profil ini dapat menjalankan program Q# apa pun yang tidak memerlukan penggunaan hasil dari pengukuran qubit untuk mengontrol alur program. Dalam program targetQ# yang ditujukan untuk QPU semacam ini, nilai jenis Result tidak mendukung perbandingan kesetaraan.
  • QIR Adaptive RI: Profil ini memiliki kemampuan terbatas untuk menggunakan hasil dari pengukuran qubit untuk mengontrol alur program. Dalam program targetQ# yang ditujukan untuk QPU semacam ini, Anda dapat membandingkan nilai jenis Result sebagai bagian dari kondisi dalam if pernyataan dalam operasi, memungkinkan pengukuran pertengahan sirkuit.

Membuat dan menjalankan aplikasi untuk Unrestrictedtarget profil

Unrestrictedtarget profil dapat menjalankan program apa pun, yang berarti Anda dapat menulis program Q# tanpa batasan fungsionalitas. Azure Quantum tidak menyediakan target profil ini. Namun, Anda dapat menjalankan Unrestricted program Q# pada simulator yang disediakan oleh QDK.

Mengonfigurasi Unrestrictedtarget profil

Di Visual Studio Code:

  1. Pilih Tampilkan -> Palet Perintah dan ketik Q#: Atur profil QIR target Azure Quantum. Tekan Enter.
  2. Pilih Tidak Dibatasi.

Di Python, Anda dapat mengatur target profil menggunakan metode .qsharp.init

qsharp.init(target_profile=qsharp.TargetProfile.Unrestricted) 

Membuat dan menjalankan aplikasi untuk QIR Basetarget profil

QIR Basetarget profil dapat menjalankan berbagai aplikasi Q#, dengan batasan bahwa mereka tidak dapat menggunakan hasil dari pengukuran qubit untuk mengontrol alur program. Lebih khusus lagi, nilai jenis Result tidak mendukung perbandingan kesetaraan.

Misalnya, operasi ini tidak dapat dijalankan pada QIR Basetarget:

    operation FlipQubitOnZero() : Unit {
        use q = Qubit();
        if M(q) == Zero {
            X(q);
        }
    }

Jika Anda mencoba menjalankan operasi ini pada QIR Basetarget, operasi akan gagal karena melakukan perbandingan menggunakan hasil pengukuran (M(q) == Zero) untuk mengontrol alur komputasi dengan if pernyataan. Hal yang sama berlaku untuk semua jenis pencabangan bersyarkat, seperti elif pernyataan dan else .

Mengonfigurasi QIR Basetarget profil

Di Visual Studio Code:

  1. Pilih Tampilkan -> Palet Perintah dan ketik Q#: Atur profil QIR target Azure Quantum. Tekan Enter.
  2. Pilih basis QIR.

Di Python, Anda dapat mengatur target profil menggunakan metode .qsharp.init

qsharp.init(target_profile=qsharp.TargetProfile.Base) 

Didukung targets

Saat ini, ini QIR Basetargets tersedia untuk Azure Quantum:

Membuat dan menjalankan aplikasi untuk QIR Adaptive RI profil targets

QIR Adaptive RI profil targets dapat menjalankan berbagai aplikasi Q#, dengan beberapa batasan. Jenis profil ini mengandaikan peningkatan atas QIR Base profil, tetapi masih tunduk pada beberapa batasan.

QIR Adaptive RI profil targets memungkinkan operasi kondisional berbasis pengukuran dan pengukuran sirkuit menengah, yang berarti bahwa qubit dapat diukur secara selektif pada titik selain pernyataan akhir program kuantum, dan output pengukuran dapat digunakan dalam operasi lain. Pengukuran sirkuit tengah memungkinkan beberapa pengukuran pada titik mana pun di seluruh program kuantum. Informasi kuantum dari qubit yang diukur runtuh ke status klasik (nol atau satu), tetapi qubit yang tidak diukur tetap dalam keadaan kuantum mereka.

Dalam Q# saat mengukur kubit, nilai jenis Result dikembalikan. Jika Anda ingin menggunakan hasil ini dalam pernyataan bersyarah, Anda harus langsung membandingkan dalam pernyataan kondisi. Blok kondisional yang sesuai mungkin tidak berisi pernyataan return atau set.

Misalnya, kode Q# berikut akan diizinkan dalam :QIR Adaptive RItarget

operation MeasureQubit(q : Qubit) : Result { 
    return M(q); 
}

operation SetToZero(q : Qubit) : Unit {
     if MeasureQubit(q) == One { X(q); }
}

Mengonfigurasi QIR Adaptive RItarget profil

Di Visual Studio Code:

  1. Pilih Tampilkan -> Palet Perintah dan ketik Q#: Atur profil QIR target Azure Quantum. Tekan Enter.
  2. Pilih QIR Adaptive RI.

Di Python, Anda dapat mengatur target profil menggunakan metode .qsharp.init

qsharp.init(target_profile=qsharp.TargetProfile.Adaptive_RI) 

Didukung targets

Saat ini, ini QIR Adaptive RItargets tersedia untuk Azure Quantum:

  • Penyedia: Quantinuum
    • Emulator Quantinuum (quantinuum.sim.h1-1e, quantinuum.sim.h2-1e)
    • QPU Quantinuum (quantinuum.qpu.h1-1, quantinuum.qpu.h2-1)