Введение
Компьютерное программирование для квантовых компьютеров
Квантовое программирование — это процесс разработки или составления последовательностей инструкций, называемых квантовыми схемами, с использованием квантовых вентилей, переключателей и операторов для манипулирования квантовой системой с целью получения желаемого результата или результатов заданного эксперимента. Алгоритмы квантовых схем могут быть реализованы на интегральных схемах, выполнены с помощью измерительного оборудования или записаны на языке программирования для использования с квантовым компьютером или квантовым процессором. В системах, основанных на квантовых процессорах, языки квантового программирования позволяют выражать квантовые алгоритмы, используя высокоуровневые конструкции. Эта область глубоко укоренена в философии открытого исходного кода, поэтому большая часть квантового программного обеспечения, обсуждаемого в этой статье, свободно доступна как программное обеспечение с открытым исходным кодом. Квантовые компьютеры, такие как те, которые основаны на протоколе KLM, модели линейно-оптического квантового вычисления (LOQC), используют квантовые алгоритмы (схемы), реализованные с помощью электроники, интегральных схем, измерительного оборудования, датчиков и/или другими физическими средствами. Другие схемы, предназначенные для экспериментов с квантовыми системами, могут быть основаны на измерительном оборудовании и датчиках.
Комплекты квантовых инструкций
Квантовые наборы инструкций используются для преобразования алгоритмов высокого уровня в физические инструкции, которые могут быть выполнены на квантовых процессорах. Иногда эти инструкции специфичны для конкретной аппаратной платформы, например, ионных ловушек или сверхпроводящих кубитов.
cQASM
cQASM, также известный как общий QASM, — это квантовый язык ассемблера, не зависящий от конкретной аппаратной платформы, который обеспечивает совместимость между всеми инструментами квантовой компиляции и моделирования. Он был разработан лабораторией QCA в TUDelft.
Плитка
Quil — это архитектура набора команд для квантовых вычислений, впервые представившая модель совместной квантовой и классической памяти. Она была представлена Робертом Смитом, Майклом Кертисом и Уильямом Зенгом в работе «Практическая архитектура набора команд для квантовых вычислений». Многие квантовые алгоритмы (включая квантовую телепортацию, квантовую коррекцию ошибок, моделирование и алгоритмы оптимизации) требуют архитектуры с совместной памятью.
OpenQASM
OpenQASM — это промежуточное представление, разработанное IBM для использования с Qiskit и IBM Q Experience.
Черная птица
Blackbird — это квантовый набор инструкций и промежуточное представление, используемое Xanadu Quantum Technologies и Strawberry Fields. Он разработан для представления квантовых программ с непрерывными переменными, которые могут выполняться на фотонном квантовом оборудовании.
Комплекты для разработки квантового программного обеспечения
Комплекты разработки квантового программного обеспечения предоставляют наборы инструментов для создания и манипулирования квантовыми программами. Они также позволяют моделировать квантовые программы или подготавливать их для выполнения на облачных квантовых устройствах и локально размещенных квантовых устройствах.
SDK с доступом к квантовым процессорам
Следующие комплекты для разработки программного обеспечения можно использовать для запуска квантовых схем на прототипных квантовых устройствах, а также на симуляторах.
Персеваль
Проект с открытым исходным кодом, разработанный Quandela [fr] для проектирования фотонных квантовых схем и разработки квантовых алгоритмов на основе Python. Симуляции запускаются либо на компьютере пользователя, либо в облаке. Perceval также используется для подключения к облачному фотонному квантовому процессору Quandela.
Океан
Комплект инструментов с открытым исходным кодом, разработанный D Wave. Написанный преимущественно на языке программирования Python, он позволяет пользователям формулировать задачи в формате модели Изинга и квадратичной неограниченной двоичной оптимизации (QUBO). Результаты можно получить, отправляя задачи на онлайн-квантовый компьютер в Leap – квантовую среду приложений D Wave в реальном времени, на квантовые компьютеры, принадлежащие клиентам, или используя классические сэмплеры.
Проект Q
Проект с открытым исходным кодом, разработанный в Институте теоретической физики при ETH, использующий язык программирования Python для создания и манипулирования квантовыми схемами. Результаты получаются либо с помощью симулятора, либо отправкой задач на квантовые устройства IBM.
Кискит
Проект с открытым исходным кодом, разработанный IBM. Квантовые схемы создаются и манипулируются с использованием Python. Результаты можно получить, используя симуляторы, работающие на устройстве пользователя, симуляторы, предоставляемые IBM, или прототипы квантовых устройств, предоставляемые IBM. Помимо возможности создания программ с использованием базовых квантовых операций, в специализированных пакетах доступны инструменты более высокого уровня для разработки алгоритмов и проведения тестов производительности. Qiskit основан на стандарте OpenQASM для представления квантовых схем, а также поддерживает управление на уровне импульсов квантовых систем посредством стандарта QiskitPulse.
Кибо
API с открытым исходным кодом для квантового моделирования, управления квантовым оборудованием и калибровки, разработанный несколькими исследовательскими лабораториями, включая QRC, CQT и INFN. Qibo – это модульный фреймворк, включающий в себя несколько бэкендов для квантового моделирования и управления аппаратным обеспечением. Цель данного проекта – предоставление платформенно-независимого фреймворка для управления квантовым оборудованием с драйверами для различных приборов и инструментами для квантовой калибровки, характеризации и верификации. Этот фреймворк ориентирован на квантовые устройства, размещаемые локально, упрощая разработку программного обеспечения, необходимого в лабораториях.
Лес
Проект с открытым исходным кодом, разработанный Rigetti, использующий язык программирования Python для создания и манипулирования квантовыми схемами. Результаты получаются либо с помощью симуляторов, либо с использованием прототипов квантовых устройств, предоставляемых Rigetti. Помимо возможности создания программ, основанных на базовых квантовых операциях, в пакете Grove доступны алгоритмы более высокого уровня. Forest базируется на наборе инструкций Quil.
- Я не могу.
Среда квантового программирования и оптимизирующий компилятор, разработанные компанией Cambridge Quantum Computing, предназначенные для симуляторов и нескольких квантовых аппаратных сред, выпущенные в декабре 2018 года.
Поля клубники
Библиотека Python с открытым исходным кодом, разработанная Xanadu Quantum Technologies для проектирования, моделирования и оптимизации квантовых оптических схем с непрерывными переменными (CV). Предоставляются три симулятора: один в фоковском базисе, один, использующий гауссовскую формулировку квантовой оптики, и один, использующий библиотеку машинного обучения TensorFlow. Strawberry Fields также является библиотекой для запуска программ на квантово-фотонном оборудовании Xanadu.
ПенниЛэйн
Библиотека Python с открытым исходным кодом, разработанная Xanadu Quantum Technologies для дифференцируемого программирования квантовых компьютеров. PennyLane позволяет пользователям создавать модели, используя TensorFlow, NumPy или PyTorch, и подключать их к квантовым вычислительным бэкендам, предоставляемым IBMQ, Google Quantum, Rigetti, Quantinuum и Alpine Quantum Technologies.
Комплект квантовой разработки
Проект, разработанный Microsoft в рамках .NET Framework. Квантовые программы можно разрабатывать и запускать в Visual Studio и VSCode, используя квантовый язык программирования Q#. Программы, разработанные с помощью QDK, могут выполняться на Microsoft Azure Quantum и на квантовых компьютерах Quantinuum.
QCL
Язык квантовых вычислений (QCL) — один из первых реализованных языков квантового программирования. Наиболее важной особенностью QCL является поддержка операторов и функций, определяемых пользователем. Его синтаксис напоминает синтаксис языка программирования C, а классические типы данных схожи с примитивными типами данных в C. В одной программе можно комбинировать классический и квантовый код.
Псевдокод квантовый
Псевдокод, предложенный Э. Книллом, является первым формализованным языком для описания квантовых алгоритмов. Он был представлен и, более того, тесно связан с моделью квантового компьютера, известной как Квантовая машина случайного доступа (QRAM).
- Что?
Язык, разработанный Microsoft для использования с комплектом разработки Quantum.
- Что?
Q|SI> — это платформа, встроенная в язык Net, поддерживающая квантовое программирование в квантовом расширении языка while. Эта платформа включает в себя компилятор языка while для квантовых вычислений и набор инструментов для моделирования квантовых вычислений, оптимизации квантовых схем, анализа завершения квантовых программ и верификации квантовых программ.
qGCL
Квантовый охраняемый язык команд (qGCL) был определён П. Зулиани в своей докторской диссертации. Он основан на языке команд с защитой, разработанном Эдсгером Дейкстрой. Его можно описать как язык для спецификации квантовых программ.
QMASM
Quantum Macro Assembler (QMASM) - это язык низкого уровня, предназначенный для квантовых отжигателей, таких как D-Wave.
Строительные леса
Scaffold — это язык, похожий на C, который компилируется в QASM и OpenQASM. Он создан на базе инфраструктуры компилятора LLVM для оптимизации кода Scaffold перед генерацией целевого набора инструкций.
Сильк
Silq — язык программирования высокого уровня для квантовых вычислений с мощной статической системой типов, разработанный в ETH Zürich.
LQP
Логика квантовых программ (LQP) — это динамическая квантовая логика, способная выражать важные особенности квантовых измерений и унитарной эволюции многочастичных состояний, а также предоставляет логические характеристики различных видов запутанности. Эта логика использовалась для спецификации и верификации корректности различных протоколов в квантовых вычислениях.
Функциональные языки
Ведутся работы по разработке функциональных языков программирования для квантовых вычислений. Функциональные языки программирования хорошо подходят для формального анализа программ. Примерами служат QPL Селингера и язык QML, подобный Haskell, разработанный Altenkirch и Grattage. Языки квантового программирования высшего порядка, основанные на лямбда-исчислении, были предложены ван Тондером, Селингером и Валироном, а также Арриги и Доуэком.
QFC и QPL
QFC и QPL — два тесно связанных языка квантового программирования, разработанные Питером Селингером. Они различаются только синтаксисом: QFC использует синтаксис блок-схем, а QPL — текстовый синтаксис. Эти языки поддерживают классическое управление потоком, но могут оперировать как квантовыми, так и классическими данными. Селинджер предоставляет денотационную семантику для этих языков в категории супероператоров.
QML
QML — это квантовый язык программирования, созданный Altenkirch и Grattage, синтаксически близкий к Haskell.
- Что?
LIQUi|> (произносится как "ликвид") — это расширение для квантового моделирования языка программирования F#. В настоящее время оно разрабатывается группой квантовых архитектур и вычислений (QuArC) в рамках инициативы StationQ в Microsoft Research. LIQUi|> призвано предоставить возможность теоретикам экспериментировать с разработкой квантовых алгоритмов до появления в распоряжении физических квантовых компьютеров. Оно включает в себя язык программирования, алгоритмы оптимизации и планирования, а также квантовые симуляторы. LIQUi|> позволяет преобразовывать квантовый алгоритм, представленный в виде программы высокого уровня, в машинные инструкции низкого уровня для квантового устройства.
Квантовые ламбда-калькули
Квантовые лямбда-исчисления являются расширениями классического лямбда-исчисления, введенного Алонзо Черчем и Стивеном Коулом Клине в 1930-х годах. Цель квантовых лямбда-исчислений – расширить квантовые языки программирования теорией функций высшего порядка. Первая попытка определить квантовое лямбда-исчисление была предпринята Филипом Меймином в 1996 году. Его лямбда q-исчисление достаточно мощно, чтобы выразить любое квантовое вычисление. Однако этот язык может эффективно решать NP-полные задачи, и поэтому представляется строго сильнее стандартных квантовых вычислительных моделей (таких как квантовая машина Тьюринга или модель квантовой схемы). Следовательно, лямбда q-исчисление Меймина, вероятно, не может быть реализовано на физическом устройстве. В 2003 году Андре ван Тондер определил расширение лямбда-исчисления, подходящее для доказательства корректности квантовых программ. Он также предоставил реализацию на языке программирования Scheme. В 2004 году Селингер и Валирон определили строго типизированное лямбда-исчисление для квантовых вычислений с системой типов, основанной на линейной логике.
In 2003, André van Tonder defined an extension of the lambda calculus suitable for proving correctness of quantum programs. He also provided an implementation in the Scheme programming language. In 2004, Selinger and Valiron defined a strongly typed lambda calculus for quantum computation with a type system based on linear logic.