Jenis profil target di Azure Quantum
Artikel ini membahas berbagai jenis target profil yang tersedia di penyedia komputasi kuantum di Azure Quantum. Saat ini, karena tahap pengembangan awal lapangan, perangkat kuantum memiliki beberapa keterbatasan dan persyaratan untuk program yang berjalan di atasnya.
Unit Pemrosesan Kuantum (QPU): profil yang berbeda dan batasannya
Quantum Processing Unit (QPU) adalah prosesor fisik atau simulasi yang berisi sejumlah kubit yang saling terhubung yang dapat dimanipulasi ke algoritma kuantum komputasi. Ini adalah komponen sentral dari komputer kuantum atau simulator kuantum.
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 untuk QPU:
- Full: Profil ini dapat menjalankan program Q# apa pun dalam batas memori untuk simulator atau jumlah qubit untuk komputer kuantum fisik.
- No Control Flow: 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. - Basic Measurement Feedback: 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 kondisiif
dalam pernyataan dalam operasi, memungkinkan pengukuran pertengahan sirkuit. Blok kondisional yang sesuai mungkin tidak berisi pernyataanreturn
atauset
.
Membuat dan menjalankan aplikasi untuk Full profil targets
Full profil targets dapat menjalankan program Q# apa pun, yang berarti Anda dapat menulis program tanpa batasan fungsionalitas. Azure Quantum belum menyediakan target profil ini.
Membuat dan menjalankan aplikasi untuk No Control Flow profil targets
No Control Flow profil targets 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 No Control Flowtarget:
operation SetQubitState(desired : Result, q : Qubit) : Result {
if (desired != M(q)) {
X(q);
}
}
Mencoba menjalankan operasi ini pada No Control Flowtarget akan gagal karena mengevaluasi perbandingan antara dua hasil (desired != M(q)
) untuk mengontrol alur komputasi dengan if
pernyataan. Ini akan berlaku untuk semua jenis percabangan bersyar, seperti elif
pernyataan dan else
.
Catatan
Saat ini, Anda tidak dapat mengirimkan program kuantum yang menerapkan operasi pada qubit yang telah diukur dalam No Control Flowtargets, bahkan jika Anda tidak menggunakan hasilnya untuk mengontrol alur program. Artinya, No Control Flowtargets jangan izinkan pengukuran pertengahan sirkuit.
Misalnya, kode berikut tidak dapat dijalankan pada No Control Flowtarget:
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SampleMeasuredQubit(q : Qubit) : Result {
H(MeasureQubit(q));
return M(MeasureQubit(q));
}
Saat ini, ini No Control Flowtargets tersedia untuk Azure Quantum:
Penyedia: IonQ
- Simulator IonQ (
ionq.simulator
) - IonQ QPU (
ionq.qpu
)
- Simulator IonQ (
Penyedia: Rigetti
- Rigetti Simulator (
rigetti.sim.*
) - Rigetti QPU (
rigetti.qpu.*
)
- Rigetti Simulator (
Membuat dan menjalankan aplikasi untuk Basic Measurement Feedback profil targets
Basic Measurement Feedback profil targets dapat menjalankan berbagai aplikasi Q#, dengan batasan bahwa Anda hanya dapat membandingkan nilai jenis Result
sebagai bagian dari kondisi dalam if
pernyataan dalam operasi. Jenis profil ini menandakan peningkatan atas No Control Flow profil, tetapi masih tunduk pada beberapa batasan.
Basic Measurement Feedback profil targets memungkinkan operasi kondisional berbasis pengukuran dan pengukuran pertengahan sirkuit, yang berarti bahwa qubit dapat diukur secara selektif pada titik selain pernyataan akhir program kuantum, dan output pengukuran dapat digunakan dalam operasi lain. Pengukuran pertengahan sirkuit memungkinkan beberapa pengukuran pada titik mana pun di seluruh program kuantum. Informasi kuantum dari qubit yang diukur runtuh ke keadaan klasik (nol atau satu), tetapi qubit yang tidak diukur mempertahankan status kuantumnya.
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 Basic Measurement Feedbacktarget:
operation MeasureQubit(q : Qubit) : Result {
return M(q);
}
operation SetToZero(q : Qubit) : Unit {
if MeasureQubit(q) == One { X(q); )
}
Namun, kode yang sama dengan evaluasi Boolean yang dipindahkan tidak akan diizinkan:
operation BeOne(q : Qubit) : Bool {
return M(q) == One;
}
operation SetToZeroUsingBeOne(q : Qubit) : Unit {
if BeOne(q) { X(q); }
}
SetQubitState
Operasi di No Control Flow dapat digunakan selamatargetBasic Measurement FeedbackAnda tidak menyertakan pernyataan atau set
apa pun return
dalam if
pernyataan . Ini akan berlaku untuk semua jenis percabangan bersyar, seperti elif
pernyataan dan else
. Misalnya, operasi berikut tidak dapat digunakan dalam Basic Measurement Feedbacktarget:
operation SetQubitState(desired : Result, q : Qubit) : Result {
if desired != M(q) {
X(q);
return M(q);
}
}
Saat ini, ini Basic Measurement Feedbacktargets 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
)
- Emulator Quantinuum (
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