Microsoft анонсировала промежуточное представление QIR (квантовое промежуточное представление), разработанное на основе LLVM – популярный промежуточный язык с открытым исходным кодом. Оно выполняет роль общего интерфейса между языками программирования и целевыми платформами квантовых вычислений.
Немного о LLVM
Проект LLVM – это набор модульных и многократно используемых технологий компилятора и инструментальных цепочек. LLVM разработан на основе независимого от языка промежуточного представления (IR). Он является переносимым языком ассемблера высокого уровня и может быть оптимизирован с помощью различных преобразований за несколько проходов.
LLVM начинался как исследовательский проект в Университете Иллинойса. Целью проекта была разработка современной стратегии компиляции на основе SSA. Новый компилятор должен был поддерживать как статическую, так и динамическую компиляцию произвольных языков программирования.
С тех пор LLVM превратился в зонтичный проект, состоящий из ряда подпроектов. Многие из этих проектов являются частью других коммерческих стартапов и стартапов с открытым исходным кодом, а также широко используются в академических исследованиях.
Код в проекте LLVM находится под лицензией «Apache 2.0 с исключениями LLVM».
Что такое QIR
QIR используется в качестве общего интерфейса между многими языками и целевыми платформами квантовых вычислений. Хотя он поддерживает Q#, QIR не является специфическим для Q#: любой язык программирования для квантовых вычислений на основе вентилей может быть представлен в QIR. Точно так же QIR не зависит от оборудования. Он не определяет квантовую инструкцию или набор вентилей, оставляя это на усмотрение целевой вычислительной среды.
Квантовый логический вентиль (квантовый логический элемент) представляет собой базовую квантовую схему, работающую на небольшом количестве кубитов. Они являются строительными блоками квантовых схем, как классические логические вентили для обычных цифровых схем.
LLVM предоставляет QIR все возможности для описания разнообразных классических вычислений, полностью интегрированных с квантовыми вычислениями. Использование LLVM упрощает интеграцию со многими классическими языками и инструментами, которые уже поддерживаются цепочкой инструментов LLVM. Он также способствует разработке общих оптимизаций и преобразований кода, не зависящих от языка и серверной части.
Microsoft опубликовала черновик спецификации QIR, доступный в новом языковом репозитории Q# на GitHub. Компания выпустила расширение компилятора, которое генерирует QIR из Q#. Его можно найти в ветви feature/QIR репозитория компилятора Q#. Также были опубликованы инструкции по использованию расширения.
Промежуточное представление (ПП)
Обычный шаблон в компиляторах начинает работу с исходного языка в промежуточное представление. Эта промежуточная форма предназначена для представления множества различных исходных языков. Когда известна фактическая целевая платформа выполнения, ПП может быть скомпилировано в исполняемый код.
Такой подход позволяет исходным языкам применять общий набор оптимизаторов и исполняемых генераторов. Это также упрощает компиляцию единого исходного языка для множества различных целей. Промежуточное представление обеспечивает общую платформу для совместного использования между источниками и целевыми объектами и допускает повторное использование в машинах компилятора.
Как выглядит QIR
Поскольку QIR основан на LLVM, он выглядит как LLVM. Простой код Q# для генерации пары Bell:
При компиляции в QIR:
В этом фрагменте видны несколько функций QIR:
- операции в Q# (или любом другом квантовом языке программирования) представлены функциями LLVM;
- функции LLVM, имена которых начинаются с __quantum__qis__, зарезервированы для представления операций в используемом наборе квантовых команд;
- кубиты представлены как указатели на именованный тип непрозрачной структуры %Qubit.
QIR наследует все возможности LLVM для выражения циклов, условных выражений и другого сложного потока управления, а также способность LLVM выражать произвольные классические вычисления.
Применение
Приложение, поддерживаемое QIR, включает компилятор Clang на основе LLVM для компиляции QIR в исполняемый машинный код. Таким образом, путем реализации функций квантового набора команд, создается симулятор на C или C++.
Другое применение – использовать стандартную «проходную» инфраструктуру LLVM для написания квантовых оптимизаторов, работающих с QIR. Независимо от источника и цели проекта, разработанные оптимизаторы работают со множеством различных языков вычислений и вычислительных платформ.
QIR уже был предоставлен партнерам для получения обратной связи. Например, специалист по квантовым компьютерам из Окриджской национальной лаборатории и проект XACC Алекс Маккаски говорит: «ORNL тесно сотрудничает с командой Microsoft, чтобы обеспечить компиляцию программ Q# высокого уровня для разнообразного набора платформ квантового оборудования OLCF посредством интеграции с фреймворк XACC».
Microsoft ожидает большего прогресса во взаимодействии классических и квантовых вычислений на аппаратном уровне. Цель QIR – создать единое представление, которое можно использовать как для существующих систем, так и для более мощных систем в будущем.
Компания заявила, что по мере развития возможностей квантовых вычислений большинство крупномасштабных приложений будут использовать преимущества совместной работы как классических, так и квантовых ресурсов.
Напомним, что в июле прошлого года Microsoft расширила набор инструментов Quantum Development Kit и открыла код дополнений для редакторов Visual Studio и VS Code. Теперь в этих редакторах можно комфортно программировать на Q# – языке для квантовых компьютеров.