Как мы программируем квантовые компьютеры сегодня?
Делиться

Менее 10 лет назад большинство людей знали о квантовой физике, но это была в основном теория, возможно, немного научная фантастика. Но с тех пор, как IBM выпустила Qiskit и открыла доступ к своему оборудованию, прогресс в квантовых вычислениях продолжается. Люди из разных дисциплин и с разным опытом могут писать код для квантовых вычислений и запускать его на реальных устройствах.
Несмотря на то, что за последнее десятилетие в этой области было совершено множество удивительных прорывов, программная составляющая квантовых вычислений по-прежнему очень слабо развита.
Однако каждый участник этой области, от энтузиастов и разработчиков до исследователей, признает важность создания зрелой платформы квантового программного обеспечения. Поэтому в прошлом месяце (февраль 2026 года) несколько исследовательских лабораторий и компаний запустили Альянс квантового программного обеспечения: сотрудничество, направленное на создание и поддержку сообщества разработчиков квантового программного обеспечения.
Поэтому сейчас самое подходящее время, чтобы взглянуть на структуру программного обеспечения для квантовых вычислений. В этой статье я расскажу вам о современном программировании квантовых вычислений. Мы рассмотрим проектирование алгоритмов, их выполнение, отладку и оркестровку, а также выделим основные подходы и инструменты, доступные в настоящее время.
Вычислительные модели/рабочие процессы
По своей сути, квантовое программирование — это не просто «ещё один язык», реализованный на существующих компьютерах. Квантовые компьютеры вычисляют с помощью кубитов (единиц информации, использующих суперпозицию и запутанность), что делает математические и операционные модели принципиально отличными от классических битов. Эти различия распространяются на каждый уровень программного стека, создавая новые потребности в языках программирования, компиляторах, системах выполнения и инструментах отладки.
Прежде чем говорить об инструментах, давайте сделаем шаг назад и разберемся, какие виды квантовых вычислений мы программируем сегодня. Другими словами, как сегодня можно описать квантовый алгоритм? Существуют разные способы описания квантовых алгоритмов:
1. На основе логических элементов (схемная модель)
Это наиболее широко используемый подход для общих квантовых алгоритмов, таких как поиск Гровера или квантовое преобразование Фурье. Программы выражаются в виде последовательностей квантовых вентилей, применяемых к кубитам, образуя схемы, аналогичные классическим логическим схемам. Квантовые вычисления на основе вентилей являются универсальными.
Это означает, что при наличии соответствующих логических элементов и системы коррекции ошибок можно реализовать любой квантовый алгоритм.

2. Аналоговые и специализированные модели
Не все методы квантовых вычислений используют вентили для реализации алгоритмов. Например, квантовый отжиг позволяет системе эволюционировать в сторону низкоэнергетического состояния, тем самым решая комбинаторные задачи. Другой пример — гамильтонианное моделирование и аналоговая динамика, используемые в физических симуляциях.
Эти модели часто требуют иных интерфейсов по сравнению с языками программирования схем. Представьте себе эти два подхода как универсальные вычислительные системы и встроенные системы.
3. Гибридные квантово-классические рабочие процессы
Сегодня квантовые компьютеры требуют отказоустойчивости. Но даже в будущем большинство квантовых компьютеров не будут автономными. Практические квантовые программы часто используют гибридные рабочие процессы: интенсивную классическую предварительную обработку, квантовую подпрограмму и классическую постобработку.
Для таких конвейеров требуются системы, обеспечивающие связь между различными средами и часто работающие в облаке.
Абстракции квантового программирования
Теперь, когда у нас есть общее представление о различных способах реализации квантовых алгоритмов, мы можем обсудить уровни абстракции в квантовом программировании. Квантовое программирование охватывает широкий спектр — от наборов инструкций, близких к аппаратным, до высокоуровневых алгоритмических языков.
Представления низкого и среднего уровня
Начнём снизу и будем двигаться вверх!
- QASM : аппаратно-независимый язык квантового ассемблера, используемый в качестве целевой платформы компиляции для многих фреймворков. QASM был разработан для того, чтобы программисты могли писать код для различного оборудования, используя различные языки программирования/библиотеки.
- Quil (Quantum Instruction Set Architecture) : разработанная компанией Rigetti, она представляет собой модель общей квантово-классической памяти, поддерживаемую библиотеками Python, такими как pyQuil.
- OpenPulse : Квантовые компьютеры, в некотором смысле, являются аналоговыми компьютерами. Каждый квантовый вентиль может быть реализован в виде импульса (электромагнитной волны), подаваемого на кубит. OpenPulse был разработан IBM, чтобы предоставить пользователям лучший контроль над оборудованием.
Эти языки обеспечивают точный контроль над последовательностью логических элементов, но требуют большей квалификации и нелегко в освоении.
Высокоуровневые структуры
Фреймворки в таких распространенных языках, как Python, позволяют разработчикам создавать и тестировать квантовые программы, используя абстракции, близкие к классическому программированию. Это наиболее распространенный способ реализации и исследования квантовых алгоритмов.
- Qiskit — это SDK на основе Python от IBM, который остается одним из наиболее широко используемых стеков для конструирования схем, оптимизации и выбора целевого оборудования.
- Qrisp – это новый высокоуровневый фреймворк, который переносит классические конструкции программирования (переменные, циклы, управление потоком выполнения) в генерацию квантовых схем, обрабатывая при этом низкоуровневые детали за вас.
К другим подобным платформам относятся Cirq, TKet, QuTip и PennyLane. Алгоритмы этих платформ упрощают создание квантовых алгоритмов, что является ключевым моментом в квантовом образовании и прототипировании.
#A simple Python code generating an entangled pair from qiskit import QuantumCircuit from qiskit_aer import AerSimulator from qiskit import transpile # Create a Bell state circuit qc = QuantumCircuit(2) qc.h(0) qc.cx(0, 1) qc.measure_all() # Simulate sim = AerSimulator() compiled = transpile(qc, sim) result = sim.run(compiled, shots=1024).result() print(result.get_counts())Языки, специфичные для квантовой механики
Это языки, специально созданные для выражения квантовой логики; два наиболее популярных из них:
- Q# : высокоуровневый, предметно-ориентированный язык от Microsoft, предназначенный для масштабируемых квантовых алгоритмов; он объединяет классическую и квантовую логику с проверками на этапе компиляции и системой типов, адаптированной для квантовых операций.
- Silq: высокоуровневый язык программирования для квантовых вычислений со строгой статической системой типов, разработанный в ETH Zürich.
Сложный вопрос: симуляторы или аппаратное обеспечение?
Сегодня, если вы решите написать квантовую программу, вы выберете уровень абстракции (скорее всего, Python с Qiskit или PennyLane). Затем, после того как вы создадите свою схему, вы, вероятно, зададитесь вопросом: «Где будет выполняться моя программа?»
Это очень важный вопрос! И у вас есть два варианта: вы можете запустить его на симуляторе или на реальном оборудовании.
Квантовые симуляторы
Классические симуляторы позволяют запускать квантовые схемы с приличным количеством кубитов (в основном 23-30 кубитов). Это весьма полезно для разработки перед развертыванием на реальном оборудовании.
- Многие фреймворки включают в себя встроенные симуляторы на основе векторов состояний или матриц плотности.
- Симуляторы необходимы для отладки и проверки перед запуском на реальном оборудовании.
Облачное оборудование
Однако классические компьютеры не могут моделировать более крупные квантовые системы (если бы могли, нам бы не понадобился квантовый компьютер!). К счастью, крупные облачные провайдеры теперь предоставляют доступ к настоящим квантовым процессорам:
- IBM Quantum (через среду выполнения Qiskit)
- AWS Braket
- Azure Quantum
Эти сервисы обычно предоставляют доступ к API, бэкэнды с реальными кубитами и системы планирования заданий. К сожалению, не все эти компании предоставляют бесплатный доступ, но я точно знаю, что IBM предлагает несколько бесплатных минут вычислительного времени в месяц.
Ещё один способ получить доступ к квантовому оборудованию — использовать сервисы, предоставляющие полноценную онлайн-экосистему. На таких сайтах можно приобрести токены для доступа к различному оборудованию из одного места. Примеры таких сервисов:
- Классик
- Qbraid
- Коро
Тестирование и отладка в квантовой разработке программного обеспечения
Классические программисты знают ценность модульных тестов и отладчиков. В квантовых вычислениях эти методы только начинают развиваться. Квантовые системы ведут себя иначе, и у нас до сих пор нет конкретной идеи по разработке инструментов, которые сделали бы отладку квантовых программ эффективной.
Сегодня программистам приходится всё делать вручную, и зачастую им необходимо понимать математические вычисления схемы, чтобы выяснить, что пошло не так, если результат не соответствует ожиданиям. Тестирование и отладка квантовой схемы были основной темой моей докторской диссертации. Суть моей работы заключалась в создании структурированной системы отладки схем путем классификации распространенных типов блоков схем и предложения специализированных стратегий отладки.
Подобные инструменты важны для развития программного обеспечения для квантовых вычислений. Поскольку ошибки в квантовых схемах могут быть незаметными, они могут возникать из-за неправильного порядка кубитов, некорректного вычисления или неправильной калибровки фаз! Кроме того, эти ошибки не всегда очевидны только по статистическим данным.

arXiv:2311.18202 )
Еще одна уникальная задача в разработке квантового программного обеспечения — эффективное преобразование высокоуровневой логики в аппаратно-совместимые инструкции при обеспечении корректности и точности.
Квантовые компиляторы и транспайлеры выполняют такие задачи, как отображение кубитов, разложение вентилей и подготовка для уменьшения ошибок (аналогично классическому EDA, но с ограничениями, специфичными для квантовой механики, такими как декогеренция и принцип запрета клонирования).
Где мы находимся и куда мы идём?
Хотя квантовое оборудование еще не полностью готово, мы пока не можем создавать на нем приложения реального масштаба или сложные системные симуляции, но исследователи аппаратного обеспечения работают усерднее, чем когда-либо, чтобы приблизить нас к этому. Поэтому программная часть должна догнать и стать совместимой с текущим и будущим оборудованием, чтобы мы могли его использовать. Сегодня квантовое программирование находится на захватывающем переломном этапе:
- Языки программирования и SDK делают разработку квантовых алгоритмов доступной.
- Облачные сервисы демократизируют доступ к настоящим квантовым процессорам.
- Инструменты отладки и тестирования начинают соответствовать классическим ожиданиям.
- Автоматизация проектирования и компиляторы снижают нагрузку на низкоуровневое проектирование.
Однако проблемы в области программного обеспечения остаются: как лучше всего писать квантовые программы, как их тестировать и как отлаживать, когда что-то идет не так? Потребность в более надежных методах разработки программного обеспечения в квантовом мире возрастает с каждым днем.
Итак, всем специалистам по анализу данных, интересующимся квантовыми вычислениями, я пишу, чтобы сообщить: сейчас идеальное время для исследований, экспериментов и внесения своего вклада!
Сара А. Метвалли. Все публикации Сары А. Метвалли.
Источник: towardsdatascience.com





















