Квантовое промежуточное представление

Quantum Intermediate Representation (QIR) — это промежуточное представление, которое служит общим интерфейсом между языками и платформами квантового программирования и targetплатформами квантовых вычислений. QIR задает набор правил для представления квантовых программ с использованием не зависящего от языка и оборудования формата в LLVM IR. QIR — это проект, разработанный Альянсом QIR, членом которого является корпорация Майкрософт.

Что такое промежуточное представление?

В классических компиляторах часто используется такой шаблон: начать с компиляции исходного языка в промежуточное представление. Промежуточное представление (как можно понять из названия) представляет собой промежуточный шаг в преобразовании инструкций из исходного кода в машинный язык.

Промежуточное представление выступает в качестве абстрактного представления программы. Все программы, независимо от языка, на котором они написаны, преобразуются в это промежуточное представление так называемым интерфейсным компилятором, а серверный компонент отвечает за преобразование этого промежуточного представления в машинное представление. Таким образом, промежуточное представление позволяет отделить исходные языки от аппаратных платформ и обеспечивает модульность при создании компилятора, благодаря чему каждый новый язык требует только поддержку новой интерфейсной части на всех платформах, для которых доступна серверная часть.

Промежуточное представление обычно предназначено для представления множества различных исходных языков. Кроме того, на этом промежуточном уровне также можно выполнить некоторую оптимизацию и переупорядочение цепи, что повышает эффективность окончательной реализации. После того как окончательная target платформа выполнения будет известна, промежуточное представление можно скомпилировать в фактический исполняемый код.

Такой подход позволяет многим исходным языкам совместно использовать общий набор оптимизаторов и генераторов исполняемого кода. Это также упрощает компиляцию одного исходного языка для множества различных targets. Промежуточное представление предоставляет общую платформу, которую можно совместно использовать во многих источниках и targets позволяет много повторно использовать в механизмах компилятора.

Что такое Quantum Intermediate Representation?

QIR — это промежуточное представление квантовых программ, разработанное Альянсом QIR, в который входит корпорация Майкрософт. Он предоставляет общий интерфейс, поддерживающий множество языков и target платформ для квантовых вычислений. QIR можно рассматривать как универсальный язык среднего уровня, который обеспечивает обмен данными между высокоуровневыми языками и компьютерами. Хотя Q# компилируется в QIR, QIR используется не только в Q#: любая платформа квантового программирования может использовать QIR для представления квантовой программы. Он не зависит от оборудования, что означает, что он не указывает квантовую инструкцию или набор шлюзов, оставляя их в вычислительной target среде.

Представление QIR основано на популярном классическом компиляторе LLVM с открытым кодом. LLVM — это коллекция модульных и повторно используемых технологий компиляторов и цепочки инструментов, принятых широким набором языков. QIR задает набор правил для представления квантовых конструкций в LLVM, но не требует каких-либо расширений или изменений в LLVM.

Тот факт, что LLVM является базовой цепочкой инструментов, означает, что QIR может обрабатывать как классическую, так и квантовую логику. Эта функция важна для гибридных квантово-классических алгоритмов, которые становятся все более важными для приложений квантовых вычислений. Кроме того, она позволяет использовать средства компиляции и оптимизации для классических вычислений и, следовательно, сократить затраты на переводы.

Многие ведущие отрасли квантовых вычислений уже используют QIR. Например, NVIDIA, Ок-Риджская национальная лаборатория, Quantinuum, Quantum Circuits Inc. и Rigetti Computing создают цепочки инструментов, использующие QIR.

Дополнительные сведения см. в спецификации QIR. Если вас интересуют средства и проекты компиляторов, использующие QIR, ознакомьтесь с этими репозиториями QIR.

Что такое альянс QIR?

Альянс QIR является совместными усилиями по разработке перспективного квантового промежуточного представления с целью обеспечения полного взаимодействия в квантовой экосистеме, сокращения усилий по разработке от всех сторон и обеспечения представления, подходящего для текущих и будущих разнородных квантовых процессоров.

Квантовые пакеты SDK и языки появляются и развиваются очень быстро, как и новые квантовые процессоры с уникальными возможностями. Чтобы обеспечить взаимодействие между новыми языками и новыми возможностями оборудования, экосистеме необходимо разработать и совместно использовать промежуточное представление, которое работает с нынешним и будущим квантовым оборудованием.

Благодаря своей коллективной работе и партнерству, Альянс QIR стремится:

  • Сокращение необходимых усилий по разработке для всех сторон путем обеспечения взаимодействия между разными платформами и языками.
  • Поддержка разработки общих библиотек при разработке квантовых приложений и квантовых компиляторов.
  • Создание передовой технологии компиляторов и использование существующих инструментов, библиотек и учебных материалов для высокопроизводительных вычислений.
  • Поддержка инкрементной и прогрессивной эволюции взаимодействий классических и квантовых вычислений на аппаратном уровне.
  • Обеспечение гибкости для легкого внедрения новых технологий таким образом, чтобы сделать возможным эксперименты с различными и уникальными аппаратными возможностями.

Альянс QIR был в создан в рамках работы Linux Foundation’s Joint Development Foundation над открытыми стандартами. В число основателей входят корпорация Майкрософт, а также Компания Quantinuum (ранее Honeywell), Национальная лаборатория Oak Ridge, Quantum Circuits Inc. и Rigetti Computing.

Как выглядит Quantum Intermediate Representation ?

Так как представление QIR основано на LLVM, QIR очень похоже на LLVM.

Например, рассмотрим следующий код Q#для создания пары Белла:

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

При компиляции в QIR он преобразуется в:

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
}

В этом фрагменте кода используется несколько функций QIR:

  • Операции в Q# (или любом другом языке квантового программирования) представлены функциями LLVM.
  • Кубиты представлены в виде указателей на именованный непрозрачный тип структуры с именем %Qubit.

Хотя представление QIR для операции CreateBellPair выглядит просто, QIR наследует все возможности LLVM для выражения циклов, условных операторов и других сложных потоков управления. QIR также наследует способность LLVM выражать произвольные классические вычисления.

Дополнительные сведения см. в докладе для разработчиков Майкрософт на мероприятии Q2B за 2021 год.

Почему это Quantum Intermediate Representation важно?

QIR — это обязательное средство при запуске квантовых алгоритмов на реальном оборудовании. Но промежуточные представления могут играть важную роль, даже если вы просто хотите разрабатывать алгоритмы на более теоретическом уровне.

Например, одним из приложений, включенных QIR, является использование компилятора Clang, интерфейсного интерфейса языка C для LLVM, для компиляции QIR в исполняемый машинный код для классического target. Это обеспечивает простое создание симулятора в C или C++ путем реализации квантовых инструкций, которые могут упростить создание квантовых симуляторов.

Кроме того, вы можете использовать промежуточное представление для создания кода, который позже предоставляется в качестве входных данных в квантовый симулятор, а не реальное устройство, который потенциально может использовать язык, отличный от исходного кода. Так вы можете легко сравнивать и оценивать различные языки или симуляторы с помощью общей платформы.

С точки зрения оптимизации кода существуют шаги оптимизации, которые можно выполнить на промежуточном уровне, что может сделать общую реализацию алгоритма более эффективной. Исследование этой оптимизации входного кода помогает лучше понять, где можно сделать алгоритмы более эффективными и как улучшить языки квантового программирования.

Другое приложение — использовать стандартную инфраструктуру LLVM pass для создания оптимизаторов квантового кода, работающих с QIR. Независимый от языка и оборудования подход QIR позволяет почти свободно повторно использовать эти оптимизаторы для различных языков вычислений и вычислительных платформ.

Дальнейшие действия