В нашем блоге Q# мы часто сосредотачиваемся на инструментах, включенных в Quantum Development Kit, новых функциях или конкретных приложениях. На этот раз давайте сделаем шаг назад и посмотрим на рабочий процесс квантовой разработки программного обеспечения, этапы, через которые квантовая программа переходит от идеи до полной реализации, и инструменты, предлагаемые QDK для каждого этапа.

Вот диаграмма, которая показывает этапы разработки квантового программного обеспечения на одной картинке.

Давайте рассмотрим каждый шаг более подробно.

Написание квантового кода

Наиболее узнаваемой частью QDK, вероятно, является Q# - предметно-ориентированный язык программирования, который мы создали для выражения квантовых программ. (Ознакомьтесь с постом, в котором мы обсуждаем, почему мы решили создать Q#)

QDK включает расширения для Visual Studio и VS Code. Хотя от них не требуется писать и запускать программы Q#, они делают работу более плавной, предлагая такие полезные функции, как подсветка синтаксиса и IntelliSense.

QDK также включает версию Q# Jupyter Notebooks - интерактивную среду разработки, которая предлагает, помимо других удобных функций, богатый набор инструментов визуализации программ.

Используйте библиотеки, чтобы код оставался на высоком уровне

Квантовые библиотеки, входящие в состав Quantum Development Kit, помогают поддерживать высокий уровень кода, выполняя большую часть тяжелой работы по реализации за вас, чтобы вы могли сосредоточиться на логике своих алгоритмов.

Они включают в себя как «стандартные» библиотеки, реализующие шаблоны, общие для многих квантовых алгоритмов, так и специализированные библиотеки, такие как Microsoft.Quantum.Numerics и Microsoft.Quantum.Chemistry, которые позволяют детализировать более конкретные приложения.

Интегрируйте с классическим ПО

Квантовые программы не существуют в вакууме; они обычно являются частями гибридных рабочих процессов, которые объединяют классические библиотеки и инструменты с использованием квантовых компьютеров для ускорения решения конкретных подзадач, которые хорошо подходят для квантовых вычислений. Например, инструменты квантовой разработки для химии в значительной степени полагаются на пакеты моделирования классической химии, такие как NWChem, для вычисления входных данных для квантовой части программы.

Quantum Development Kit позволяет интегрировать программы Q# с Python и .NET, позволяя разработчику квантовых программ пользоваться преимуществами многих достижений, достигнутых в классических вычислениях за последние 70 лет.

Запускайте квантовый код в симуляции

Предыдущие шаги очень похожи на классический рабочий процесс разработки, но есть некоторые аспекты, которые очень специфичны для квантовых вычислений. После того, как вы написали свою программу, вы захотите использовать симуляторы - классические программы, моделирующие поведение квантовой системы, чтобы вы могли запустить небольшой экземпляр своей программы и посмотреть, что она делает, без реального доступа к оборудованию.

QDK включает в себя множество симуляторов, от симулятора с полным состоянием, который идеально имитирует квантовую систему, до новых экспериментальных симуляторов, предназначенных для моделирования зашумленных систем.

Симуляторы ограничены по размеру и/или возможностям программ, которые они могут моделировать. Однако они очень полезны для тестирования ваших квантовых программ и экспериментов с такими вещами, как исправление ошибок.

Оценивайте необходимые ресурсы

В конечном итоге вам придется запускать квантовые программы на квантовом оборудовании, чтобы пользоваться преимуществами квантовых вычислений. Однако прежде чем вы это сделаете, вам нужно выяснить, может ли ваша программа работать на существующем оборудовании. Вы можете использовать оценщики ресурсов QDK, чтобы сказать вам, сколько кубитов вам нужно и сколько времени займет ваша программа.

Вы также можете использовать оценку ресурсов немного по-другому: применительно к алгоритмам, которые, как мы знаем, не подходят для устройств NISQ, она информирует нас о жизнеспособности этих алгоритмов в долгосрочной перспективе, позволяя проверять и оптимизировать их за годы до того, как достаточно мощное квантовое оборудование станет доступным.

Запустите код на квантовом оборудовании!

Наконец, вы проверили правильность своей программы и оценили ее пригодность для работы на оборудовании, к которому у вас есть доступ. Последний шаг - использовать Azure Quantum для запуска вашей программы на квантовом оборудовании!

Что наиболее важно, вы используете один и тот же код Q# на всех этапах рабочего процесса. В краткосрочной перспективе вам, возможно, придется настроить некоторые части кода, чтобы учесть текущие аппаратные ограничения. Вы можете думать об этом как о переписывании частей высокоуровневого кода на ассемблере для ускорения части классической программы. Но в конечном итоге вы сможете переключаться между различными симуляторами и поставщиками оборудования без каких-либо изменений кода.

Рабочий процесс в действии

Хотите увидеть этот рабочий процесс в действии? Посмотрите недавний выпуск Azure Friday, в котором наша коллега, Мария Михайлова, показывает все этапы разработки квантового программного обеспечения в живой демонстрации, завершающейся запуском кода Q# в Azure Quantum!

Комментарии (0)