Bagikan melalui


Representasi perantara kuantum

Quantum Intermediate Representation (QIR) adalah representasi perantara yang berfungsi sebagai antarmuka umum antara bahasa/kerangka kerja pemrograman kuantum dan platform komputasi kuantum yang ditargetkan. QIR menentukan sekumpulan aturan untuk mewakili program kuantum menggunakan format agnostik bahasa dan perangkat keras dalam RUN LLVM. QIR adalah proyek yang dikembangkan oleh Aliansi QIR di mana Microsoft adalah salah satu anggotanya.

Apa itu representasi perantara?

Pola umum dalam kompilator klasik adalah memulai dengan mengkompilasi bahasa sumber menjadi representasi perantara. Representasi perantara adalah - seperti namanya menunjukkan - langkah perantara dalam konversi instruksi dari kode sumber ke bahasa mesin.

Representasi perantara bertindak sebagai representasi abstrak dari suatu program. Semua program, terlepas dari bahasa tempat mereka ditulis, diterjemahkan ke dalam representasi perantara ini oleh apa yang disebut kompilator ujung depan, sementara komponen back-end bertanggung jawab untuk menerjemahkan representasi menengah tersebut ke dalam representasi mesin. Representasi perantara memungkinkan untuk memisahkan bahasa sumber dari platform perangkat keras dan memungkinkan untuk membangun kompilator dengan cara modular, di mana setiap bahasa baru hanya memerlukan ujung depan baru untuk didukung di semua platform tempat back end tersedia.

Representasi perantara biasanya dirancang untuk memungkinkan banyak bahasa sumber yang berbeda diwakili. Selain itu, pada tingkat menengah ini juga dimungkinkan untuk melakukan beberapa pengoptimalan dan pengaturan ulang sirkuit yang membuat implementasi akhir lebih efisien. Setelah platform eksekusi akhir target diketahui, representasi perantara dapat dikompilasi ke kode yang dapat dieksekusi aktual.

Pendekatan ini memungkinkan banyak bahasa sumber untuk berbagi sekumpulan pengoptimal umum dan generator yang dapat dieksekusi. Ini juga memudahkan untuk mengkompilasi satu bahasa sumber untuk banyak yang berbeda targets. Representasi perantara menyediakan platform umum yang dapat dibagikan di banyak sumber dan targets memungkinkan banyak penggunaan kembali dalam mesin kompilator.

Apa itu Quantum Intermediate Representation?

QIR adalah representasi perantara untuk program kuantum yang dikembangkan oleh QIR Alliance, tempat Microsoft berada. Ini menyediakan antarmuka umum yang mendukung banyak bahasa dan target platform untuk komputasi kuantum. Anda dapat menganggap QIR sebagai bahasa lapisan menengah universal yang memungkinkan komunikasi antara bahasa dan mesin tingkat tinggi. Meskipun Q# dikompilasi ke QIR, QIR tidak spesifik untuk Q#: kerangka kerja pemrograman kuantum apa pun dapat memanfaatkan QIR untuk mewakili program kuantum. Ini adalah perangkat keras-agnostik, yang berarti bahwa ia tidak menentukan instruksi kuantum atau set gerbang, meninggalkannya ke target lingkungan komputasi.

QIR didasarkan pada kompilator klasik LLVM sumber terbuka yang populer. LLVM adalah kumpulan teknologi pengkompilasi dan toolchain modular dan dapat digunakan kembali yang telah diadaptasi oleh berbagai bahasa. QIR menentukan sekumpulan aturan untuk mewakili konstruksi kuantum di LLVM, namun tidak memerlukan ekstensi atau modifikasi apa pun pada LLVM.

Fakta bahwa LLVM adalah toolchain yang mendasarinya berarti bahwa QIR secara alami dapat memproses logika klasik dan kuantum. Fitur ini sangat penting untuk algoritma kuantum hibrid-klasik, yang telah menjadi semakin penting untuk aplikasi komputasi kuantum. Selain itu, ini memungkinkan Anda untuk memanfaatkan alat kompilasi dan pengoptimalan dari industri komputasi klasik, dan, oleh karena itu, untuk mengurangi biaya terjemahan penulisan.

Banyak industri komputasi kuantum terkemuka telah mengadopsi QIR. Misalnya, NVIDIA, Oak Ridge National Laboratory, Quantinuum, Quantum Circuits Inc., dan Rigetti Computing adalah membangun toolchain yang memanfaatkan QIR.

Untuk informasi selengkapnya, lihat Spesifikasi QIR. Jika Anda tertarik dengan alat dan proyek kompilator yang menggunakan QIR, silakan lihat repositori QIR ini.

Apa itu Aliansi QIR?

Aliansi QIR adalah upaya bersama untuk mengembangkan representasi perantara kuantum berwawasan ke depan dengan tujuan untuk memungkinkan interoperabilitas penuh dalam ekosistem kuantum, mengurangi upaya pengembangan dari semua pihak, dan memberikan representasi yang cocok untuk prosesor kuantum heterogen saat ini dan di masa mendatang.

Quantum SDK dan bahasa muncul dan berkembang dengan cepat, bersama dengan prosesor kuantum baru dengan kemampuan yang unik dan berbeda satu sama lain. Untuk memberikan interoperabilitas antara bahasa baru dan kemampuan perangkat keras baru, sangat penting bagi ekosistem untuk mengembangkan dan berbagi representasi menengah yang berfungsi dengan perangkat keras kuantum saat ini dan masa depan.

Dengan kerja dan kemitraan kolektif mereka, Aliansi QIR bertujuan untuk:

  • Kurangi upaya pengembangan yang diperlukan untuk semua pihak dengan mempromosikan interoperabilitas antara kerangka kerja dan bahasa yang berbeda.
  • Aktifkan pengembangan pustaka bersama baik untuk pengembangan aplikasi kuantum, maupun untuk pengembangan kompilator kuantum.
  • Bangun di atas teknologi kompilator canggih dan manfaatkan alat, pustaka, dan pembelajaran yang ada dari komputasi berkinerja tinggi.
  • Memungkinkan evolusi inkremental dan progresif dalam bagaimana komputasi klasik dan kuantum dapat berinteraksi di tingkat perangkat keras.
  • Memberikan fleksibilitas untuk dengan mudah menghubungkan teknologi yang muncul dengan cara yang memungkinkan eksperimen dengan kemampuan perangkat keras yang berbeda dan berbeda.

Aliansi QIR adalah bagian dari pekerjaan Yayasan Pengembangan Bersama Linux Foundation pada standar terbuka. Anggota pendiri termasuk Microsoft, serta Quantinuum (sebelumnya Honeywell), Laboratorium Nasional Oak Ridge, Quantum Circuits Inc. dan Rigetti Computing.

Seperti apa tampilannya Quantum Intermediate Representation ?

Karena QIR didasarkan pada LLVM, QIR terlihat seperti LLVM.

Misalnya, pertimbangkan kode berikut Q# untuk menghasilkan pasangan Bell:

operation CreateBellPair(q1 : Qubit, q2 : Qubit) : Unit {
    H(q1);
    CNOT(q1, q2);
}

Ketika dikompilasi ke QIR, ini menjadi:

define void @CreateBellPair__body(%Qubit* %q1, %Qubit* %q2) {
entry:
  call void @__quantum__qis__h(%Qubit* %q1)
  call void @__quantum__qis__cnot(%Qubit* %q1, %Qubit* %q2)
  ret void
}

Dalam cuplikan ini, Anda dapat melihat beberapa fitur QIR:

  • Operasi dalam (atau bahasa pemrograman kuantum lainnya) diwakili Q# oleh fungsi LLVM.
  • Qubit direpresentasikan sebagai penunjuk ke jenis struktur buram bernama yang disebut %Qubit.

Meskipun QIR untuk CreateBellPair operasi ini sangat sederhana, QIR mewarisi semua kemampuan LLVM untuk mengekspresikan perulangan, kondisional, dan alur kontrol kompleks lainnya. QIR juga mewarisi kemampuan LLVM untuk mengekspresikan komputasi klasik sewenang-wenang.

Untuk informasi selengkapnya, tonton sesi pengembang Microsoft dari acara Q2B 2021.

Mengapa penting Quantum Intermediate Representation ?

QIR adalah alat penting saat menjalankan algoritma kuantum pada perangkat keras nyata. Tetapi representasi perantara dapat memainkan peran penting bahkan jika Anda hanya ingin mengembangkan algoritma pada tingkat yang lebih teoritis.

Misalnya, satu aplikasi yang diaktifkan oleh QIR adalah menggunakan pengkompilasi Clang, front end bahasa C untuk LLVM, untuk mengkompilasi QIR ke dalam kode mesin yang dapat dieksekusi untuk klasik target. Ini menyediakan jalur mudah untuk membangun simulator di C atau C++ dengan menerapkan instruksi kuantum, yang dapat menyederhanakan pembuatan simulator kuantum.

Selain itu, Anda dapat menggunakan representasi perantara untuk menghasilkan kode yang kemudian disediakan sebagai input ke dalam simulator kuantum - alih-alih perangkat nyata - yang berpotensi menggunakan bahasa yang berbeda dari kode sumber. Dengan cara ini, Anda dapat dengan mudah membandingkan dan menjadi tolok ukur berbagai bahasa atau simulator menggunakan kerangka kerja umum.

Dalam hal pengoptimalan kode, ada langkah-langkah pengoptimalan yang dapat dilakukan pada tingkat menengah yang dapat membuat implementasi algoritma keseluruhan lebih efisien. Menyelidiki pengoptimalan kode input ini dapat membantu Anda mendapatkan pemahaman yang lebih baik tentang di mana membuat algoritma lebih efisien dan cara meningkatkan bahasa pemrograman kuantum.

Aplikasi lain adalah menggunakan infrastruktur "pass" LLVM standar untuk membuat pengoptimal kode kuantum yang beroperasi di QIR. Pendekatan QIR yang independen dengan bahasa dan perangkat keras memungkinkan penggunaan kembali pengoptimal tersebut untuk berbagai bahasa komputasi dan platform komputasi tanpa upaya.