We present ongoing work on Guppy, a domain-specific language embedded in Python that allows users to write high-level hybrid quantum programs with complex control flow in Pythonic syntax, aiming to run them on actual quantum hardware.
В данной статье представлен Guppy — предметно-ориентированный язык (DSL), встроенный в Python, позволяющий пользователям писать высокоуровневые гибридные квантовые программы со сложным управлением потоком выполнения, используя синтаксис Python, с целью запуска этих программ на реальном квантовом оборудовании.
Доминирование Python в квантовых вычислениях: Согласно последним исследованиям, более 90% исследователей и практиков в области квантовых вычислений используют Python, однако существующие фреймворки ограничены абстракцией уровня схем и имеют ограниченную поддержку высокоуровневого управления потоком выполнения.
Требования к реальным квантово-классическим вычислениям: Алгоритмы, такие как протоколы повторения до успеха (repeat-until-success), требуют обработки классических данных в реальном времени на основе результатов квантовых измерений. Эта потребность будет расти с развитием квантовых устройств следующего поколения.
Ограничения существующих подходов:
Большинство Python-фреймворков строят представление квантовых программ путём отслеживания интерпретатора Python, что не позволяет захватить синтаксис управления потоком выполнения Python
Условные операторы и циклы должны выражаться через высокоуровневые комбинаторы или другие синтаксические конструкции
Отсутствует система линейных типов для предотвращения ошибок квантового программирования
Разработать язык программирования, который сохраняет преимущества дружественного синтаксиса Python и экосистемы, при этом поддерживая сложные квантово-классические гибридные вычисления.
Предложен DSL Guppy: Предметно-ориентированный язык, встроенный в Python, поддерживающий написание квантово-классических гибридных программ с использованием синтаксиса Python
Реализована система линейных типов: Система линейных типов Qubit, которая захватывает ошибки квантового программирования на этапе компиляции (например, нарушение теоремы о запрете клонирования)
Поддержка сложного управления потоком выполнения: Встроенная поддержка условных операторов, циклов и других структур управления потоком выполнения на основе результатов измерений
Статическая компиляция в Hugr IR: Компиляция в новое промежуточное представление квантовых программ Hugr, поддерживающее выражение и оптимизацию квантово-классических программ
Взаимодействие с Python: Интеграция с экосистемой Python через выражения py(...)
Управление потоком выполнения в стиле Python: Поддержка операторов if, for, while, break, continue, return
Строгая система типов: Требует аннотаций типов, переменные должны быть присвоены и иметь уникальный статический тип во всех путях управления потоком выполнения
Базовые типы: Поддержка bool, int, float, None и соответствующих операций
import networkx as nx
g = nx.erdos_renyi_graph(20, 0.25)
@guppy
def apply_graph(qs: list[Qubit]) -> list[Qubit]:
for i, j in py(g.edges()): # Выражение py() вызывает код Python
qs = qs.apply(zz, (i, j))
return qs
@guppy
def rus(q: Qubit, tries: int) -> Qubit:
for _ in range(tries):
a, b = h(Qubit()), h(Qubit())
b, a = cx(b, tdg(a))
if not measure(t(a)):
discard(b)
continue
q, b = cx(z(t(q)), b)
if measure(t(b)):
break
q = x(q)
return q
В данной статье цитируется 27 связанных источников, охватывающих:
Языки квантового программирования (Q#, Silq, Proto-Quipper и др.)
Python-фреймворки для квантовых вычислений (Qiskit, Cirq, PyQuil и др.)
Технологии компиляторов (MLIR, LLVM, AutoGraph)
Теория квантовых вычислений (линейные типы, оптимизация квантовых схем)
Резюме: Это высококачественная системная статья, предлагающая инновационное проектирование языка квантового программирования. Хотя работа находится на ранней стадии, она демонстрирует хороший технический потенциал и практические перспективы. Рекомендуется, чтобы последующие работы сосредоточились на крупномасштабной верификации, оптимизации производительности и улучшении пользовательского опыта.