Введение

Компьютерное программирование для квантовых компьютеров

Квантовое программирование — это процесс разработки или составления последовательностей инструкций, называемых квантовыми схемами, с использованием квантовых вентилей, переключателей и операторов для манипулирования квантовой системой с целью получения желаемого результата или результатов заданного эксперимента. Алгоритмы квантовых схем могут быть реализованы на интегральных схемах, выполнены с помощью измерительного оборудования или записаны на языке программирования для использования с квантовым компьютером или квантовым процессором. В системах, основанных на квантовых процессорах, языки квантового программирования позволяют выражать квантовые алгоритмы, используя высокоуровневые конструкции. Эта область глубоко укоренена в философии открытого исходного кода, поэтому большая часть квантового программного обеспечения, обсуждаемого в этой статье, свободно доступна как программное обеспечение с открытым исходным кодом. Квантовые компьютеры, такие как те, которые основаны на протоколе 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 году Селингер и Валирон определили строго типизированное лямбда-исчисление для квантовых вычислений с системой типов, основанной на линейной логике.