Representasi perantara kuantum

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

Apa itu representasi perantara?

Pola umum dalam kompiler klasik adalah memulai dengan mengkompilasi bahasa sumber menjadi representasi perantara. Representasi perantara adalah - seperti namanya - 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 front-end, 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 penyusunan 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 berbagai .targets Representasi perantara menyediakan platform umum yang dapat dibagikan di banyak sumber dan targets dan 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 seperangkat aturan untuk mewakili konstruksi kuantum di LLVM, namun tidak memerlukan ekstensi atau modifikasi 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 sedang 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 QIR Alliance?

QIR Alliance adalah upaya bersama untuk mengembangkan representasi perantara kuantum maju 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 masa depan.

SDK dan bahasa kuantum 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 perantara yang bekerja dengan perangkat keras kuantum saat ini dan masa depan.

Dengan kerja dan kemitraan kolektif mereka, QIR Alliance 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 teknologi kompilator mutakhir 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.

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

Quantum Intermediate Representation Seperti apa tampilannya?

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 arbitrer.

Untuk informasi selengkapnya, watch sesi pengembang Microsoft dari peristiwa 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.

Langkah berikutnya