Ученые разработали первые отладочные инструменты для программ квантовых компьютеров

Квантовые вычисления

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

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

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

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

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

Третья трудность заключается в том, что у современных квантовых программистов еще нет выработанных инструкций и руководств, которые описывают, что им необходимо проверять во время отладки квантовых программ и где именно. Как уже упоминалось выше, квантовые алгоритмы существуют сейчас в виде математических уравнений, и процесс программирования заключается в переводе этих уравнений в диаграммы схем квантовых вычислительных цепей, которые в процессе выполнения программы формируются внутри квантовой системы. “Все это походит на программирование первых классических компьютеров 50 лет назад” – пишут исследователи, – “И, в скором будущем будут разработаны правила, определяющие, какие образы и структуры в квантовых программах подлежат проверке программистами при отладке”.

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