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.
Target profil 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 Q# yang ditargetkan 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 Q# yang ditargetkan untuk QPU semacam ini, Anda dapat membandingkan nilai jenis
Result
sebagai bagian dari kondisi dalamif
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:
- Pilih Tampilkan -> Palet Perintah dan ketik Q#: Atur profil QIR target Azure Quantum. Tekan Enter.
- 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:
- Pilih Tampilkan -> Palet Perintah dan ketik Q#: Atur profil QIR target Azure Quantum. Tekan Enter.
- 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:
Penyedia: IonQ
Penyedia: Rigetti
- Rigetti Simulator (
rigetti.sim.*
) - Rigetti QPU (
rigetti.qpu.*
)
- Rigetti Simulator (
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:
- Pilih Tampilkan -> Palet Perintah dan ketik Q#: Atur profil QIR target Azure Quantum. Tekan Enter.
- 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: