Scientific journal
Scientific Review. Technical science
ISSN 2500-0799
ПИ №ФС77-57440

ANALYSIS OF THE ADVANTAGES AND DISADVANTAGES OF QUANTUM EMULATORS ON THE EXAMPLE OF INTERACTION WITH THE USER

Tretyak M.A. 1 Schekaturin A.E. 1 Pilipenko I.A. 1 Kravchenko V.O. 1 Cherkesova L.V. 1
1 Don State Technical University
3527 KB
This article examined the most popular quantum emulators used for quantum computing and allowing to emulate the process of a quantum computer. Work was done to study quantum emulators, identify and describe their individual characteristics, make recommendations for a more convenient start to work with them, as well as describe their advantages and disadvantages. The task of emulators is to provide the user with the ability to debug and run programs or circuits designed to work on a quantum computer. To solve this problem, it is necessary to emulate logical quantum gates, which are the basic element of a quantum computer. They transform the incoming qubit states to the weekend ones according to a certain law, and unlike many classical logic gates, they are always reversible. At this crucial moment, emulators are the same, but there are differences in interfaces, completeness of documentation, etc. This article will be devoted to user interaction. Due to the fact that working with real quantum computers is available only to a narrow circle of researchers, emulators are simply necessary to test hypotheses or algorithms.
qubit
emulator
gate
quantum computer
quantum programming

Современного человека компьютерами уже не удивишь. Они стали чем-то обыденным, давно интегрировались в жизнь, с их помощью можно выполнить широкий ряд задач, реализация которых еще в прошлом веке считалась бы чем-то научно-фантастическим. Рост производительности достигается за счет увеличения количества транзисторов на кристалле процессора, что является достаточно дорогостоящим способом [1]. И несмотря на бурное развитие классических компьютеров, уже сейчас существуют ряд задач, которые они не в состоянии решить [2]. Они обычно требуют экспоненциального роста вычислений относительно входных данных. С рядом подобных задач может справиться квантовый компьютер, чья производительность многократно превосходит возможности классических компьютеров. Это связано с тем, что в процессоре цифрового компьютера все вычисления строятся на основе битов, способных находиться в двух состояниях: 1 либо 0. То есть вся работа сводится к анализу огромного количества данных на предмет соответствия заданным условиям. В основу же квантового компьютера положены кубиты. Кубитом называют квантовые биты, особенностью которых является возможность находиться в состоянии 1 или 0, а также одновременного нахождения в состоянии 1 и 0. Такое состояние называется суперпозицией. Возможности квантового компьютера превосходят возможности классического, так как нет необходимости искать нужный ответ среди множества [3]. В этом случае ответ выбирается из уже имеющихся вариантов с определенной долей вероятности соответствия [4; 5].

Существует такое понятие, как «квантовое превосходство» – это потенциальная способность квантовых вычислительных устройств решать проблемы, которые классические компьютеры практически не могут, или им потребуется для этого слишком много времени [6]. В той же статье BBC [6] был дан критерий наступления квантового превосходства, по мнению авторов, это – порог вычислительной мощности в 50 кубитов. И хотя квантовое превосходство уже было достигнуто [6], до промышленного производства таких процессоров ещё далеко. Но прикоснуться к будущему IT-сферы возможно уже сегодня, благодаря эмуляторам квантовых компьютеров или облачным платформам, которые взаимодействуют с квантовым компьютером. Различие между эмулятором и облачной платформой заключается в том, что облачная платформа передаёт код программы существующему квантовому компьютеру, после чего передаёт результат обратно пользователю, в то время как эмулятор, пользуясь ресурсами цифрового компьютера, воспроизводит работу идеального квантового компьютера с данной ему программой.

В этой статье мы рассмотрим достоинства и недостатки нескольких эмуляторов, которые, на наш взгляд, лучше всего подходят для обучения квантовому программированию, а именно Quantum Development Kit [7], Quantum Computing Playground [8], jQuantum [9], QuEST [10], Quantum Programming Studio [11], Q-Kit [12]. Однако разнообразие квантовых эмуляторов гораздо больше, и их список представлен на информационном портале Quantiki [13]. В качестве примера работы эмулятора взят алгоритм Шора для числа 15.

1. Quantum Development Kit (QDK) был предложен компанией Microsoft в качестве решения, содержащего огромный инструментарий, необходимый для быстрого изучения основ квантового программирования. Этому способствует собственный язык Q#, разработанный компанией Microsoft специально для реализации квантовых вычислений. Microsoft QDK ориентирован в первую очередь на разработчиков, проявляющих интерес к квантовым вычислениям и желающих изучать квантовое программирование, даже если они не являются специалистами по квантовой физике.

Примечательной особенностью Quantum Development Kit является предоставленная разработчикам возможность вести проект в среде разработки, что весьма удобно для создания больших проектов. QDK интегрирован в среду разработки Microsoft Visual Studio (VS), что станет существенным плюсом для тех, кто уже с ней работал и знаком с процессом построения проекта в ней. На данный момент с помощью QDK можно эмулировать 30 логических кубитов для написания программ на цифровом компьютере. QDK поддерживает написание программ с использованием нескольких языков программирования, таких как Python, Q# или С#. При этом разработка программ может происходить как в VS или VS Code, так и в Notebook Jupyter, используя ядро Q#. Однако QDK не имеет графической оболочки, что может вызвать неудобство для людей, не имеющих опыта программирования. Но взамен графической оболочки и основной документации по QDK Microsoft предлагает сборник учебных пособий Quantum Katas [14], в котором представлены элементы квантовых вычислений, а также руководство по программированию на Q# [15; 16], что делает этот вариант наиболее удобным для новичков.

Подходы к разработке квантовых программ для QDK:

1. Разработка с помощью Python. Данный пакет позволяет использовать функции, написанные на языке квантового программирования Q#, программируя при этом на Python.

2. Разработка с помощью Notebook Jupyter. Jupyter предлагает вести разработку квантовых программ из браузера, создавая так называемые заметки, инструкции и другие составляющие квантовой программы. При этом код находится в записной книжке, состоящей из специальных ячеек, запуск которых компилирует код написанный на Q#, и выводит результат операции. Jupyter предоставляет возможность компиляции и моделирования методов, использующихся в Q#.

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

На рис. 1 представлен пример кода, написанный на языке программирования Q# в среде разработки Microsoft Visual Studio.

tret1.tif

Рис. 1. Реализация алгоритма Шора в эмуляторе Microsoft QDK

tret2.tif

Рис. 2. Результат алгоритма Шора в эмуляторе QDK

Результат работы квантовой программы выводится в командную строку. На рис. 2 представлен пример такого вывода.

Достоинства Quantum Development Kit:

– QDK позволяет реализовывать сложные квантовые алгоритмы наравне с написанием программ для классических цифровых компьютеров;

– профилирование;

– открытый исходный код;

– есть возможность оценки и контроля вычислительных ресурсов;

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

– возможность написания модульных тестов для тестирования квантовых программ;

– можно вычислить идентификатор кубита, поместив точку останова в код;

– есть возможность работы в облаке Azure с поддержкой до 40 кубитов [17];

– широкий набор примеров реализации алгоритмов на Q# при помощи QDK;

– большой набор библиотек квантового вычисления с открытым исходным кодом.

Недостатки Quantum Development Kit:

– программа, написанная на Q#, не имеет возможности самоанализа;

– нет инструментов для изображения схемы;

– вычисления в облаке Azure не доступны в России;

– возможны ошибки производительности при работе с Jupyter.

2. Quantum Computing Playground (QCP), созданный WebGL Chrome в экспериментальных целях, имеет свой собственный язык сценариев и обладает удобным графическим веб-интерфейсом IDE. При этом Quantum Computing Playground способен имитировать квантовые регистры до 22 кубитов. Для начала работы с эмулятором QCP разработчики предлагают изучить основы синтаксиса языка программирования QScript, а также встроенные команды и математические функции, которые приведены в образцах программ. При этом эмулятор обладает руководством по написанию кода и работы с некоторыми гейтами, а также описанием алгоритмов Шора и Гровера.

Quantum Computing Playground предоставляет возможность использовать отладчик, который позволяет отслеживать поведение написанной программы, а также возможность сохранения кода по URL-адресу. Данный эмулятор вряд ли подойдет человеку без опыта программирования ввиду недостаточного объема обучающего материала. На рис. 3 представлена реализация алгоритма Шора в веб-эмуляторе QCP.

tret3.tif

Рис. 3. Реализация алгоритма Шора в Quantum Computing Playground

tret4.tif

Рис. 4. Результат алгоритма Шора в эмуляторе Quantum Computing Palyground

В эмуляторе реализован графический способ наблюдения за состояниями кубитов в 2D или 3D, где точки описывают суперпозицию кубитов, а их цвет или высота полос описывают амплитуду и фазу заданной суперпозиции. На рис. 4 представлен результат работы квантового алгоритма Шора.

Достоинства Quantum Computing Palyground:

– открытый исходный код [18];

– поддержка отладки кода программы, написанного на собственном языке программирования QScript;

– кроссплатформенность.

Недостатки Quantum Computing Palyground:

– при наличии большого объема кода или использования большого числа искусственных кубитов замедлит работу шейдеров программы;

– высокое потребление оперативной и графической памяти.

3. JQuantum – это специализированная программа, взаимодействующая с виртуальной Java-машиной, предназначенная для моделирования процессов, запускаемых только на квантовом компьютере. Проще говоря – для создания программ и визуализации результатов работы алгоритмов, написанных для квантового компьютера. Основной задачей JQuantum является обеспечение прозрачности работы программного кода квантового компьютера. JQuantum помогает визуализировать код, что очень удобно для людей, которые не знакомы с низкоуровневыми языками программирования квантового компьютера, такими как OpenQASM для IBM и т.п. При этом сам эмулятор может использовать максимум 15 кубитов при создании схемы.

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

Для того чтобы работать с квантовыми вычислениями в среде разработки от компании JetBrains Intellij IDEA, необходимо импортировать библиотеку quantum, в которой хранится множество функций и гейтов квантового программирования. Данная особенность будет удобна для программирования квантового компьютера на высокоуровневом языке программирования Java или стремительно набирающем популярность языке Kotlin, который полностью совместим с Java.

На панели управления (представленной на рис. 5) слева расположен инструмент инициализации регистров, в котором нам предлагается указать их начальные состояния, а также их количество. Там же расположены команды контроля выполнения квантовой программы. Можно запускать схему пошагово, производя отладку на каждом этапе, при этом в окне вывода результатов видны промежуточные значения выполнения схемы. Можно вернуться к предыдущему шагу, запустить всю схему целиком с окончательным выводом результата или же инициализировать схему заново, для нового запуска квантовой программы, – очень вариативно.

tret5.tif

Рис. 5. Реализация схемы алгоритма Шора в эмуляторе JQuantum

tret6.tif

Рис. 6. Результат работы алгоритма Шора в эмуляторе JQuantum

На панели проектирования схемы представлен набор основных гейтов, использующихся при написании квантовых программ, а также инструменты редактирования схемы. Рабочая область представляет собой набор инициализированных кубитов, на которых располагаются гейты. Окно вывода позволяет пользователю следить за состоянием регистров x и y, выводя в них результаты выполнения квантовой программы в процессе ее работы. На рис. 5 представлен пример квантовой схемы алгоритма Шора в эмуляторе JQuantum.

На рис. 6 представлен результат работы схемы алгоритма Шора в эмуляторе JQuantum. Результат работы схемы выводится в регистре y в двоичной и целочисленной записи числа.

Достоинства JQuantum:

– исходный код [19] находится в открытом доступе;

– кроссплатформенность. JQuantum может стабильно работать с версии Java 5, которая находится в свободном доступе на сайте Oracle;

– эмулятор можно запустить как апплет из браузера или предварительно установив исполняемый файл jar на рабочий стол;

– повторяемость экспериментов;

– чрезвычайная надежность вычислений;

– масштабируемость.

Недостатки JQuantum:

– данная библиотека не может работать в экстремальном масштабе;

– эмулятор не решает проблем, связанных с оптимизацией времени работы программы, сравнимого с теоретическими квантовыми компьютерами;

– для стабильного использования эмулятора необходимо установить Java 5+;

– для изменения схемы необходима полная или частичная инициализация гейтов схемы;

– не полный набор гейтов, требующий создания недостающих из уже имеющихся;

– нет возможности запуска программ на реальном квантовом компьютере.

4. QuEST – это первый GPU-симулятор универсальных квантовых цепей с открытым исходным кодом, гибрид OpenMP и MPI. Созданный как библиотека C, он разработан таким образом, что пользовательский код может быть легко развернут на любой платформе от ноутбука до суперкомпьютера. QuEST способен моделировать общие квантовые схемы общих однокубитных и многокубитных управляемых вентилей в чистых и смешанных состояниях, представленных в виде векторов состояний и матриц плотности, и в присутствии декогеренции [20]. На рис. 7.1 и 7.2 представлена реализация алгоритма Шора, написанного на языке программирования C++.

tret7a.tif

Рис. 7.1. Реализация алгоритма Шора в эмуляторе QuEST

tret7b.tif

Рис. 7.2. Реализация алгоритма Шора в эмуляторе QuEST

tret8.tif

Рис. 8. Результат работы алгоритма Шора в эмуляторе QuEST

tret9.tif

Рис. 9. Реализация схемы алгоритма Шора в эмуляторе QPS

Достоинства QuEST:

– низкое потребление оперативной памяти на небольшом количестве кубитов [20];

– открытый исходный код;

– кроссплатформенность;

– распределение вычислений на несколько ядер процессора;

– возможность перенести вычисления на графический процессор.

Недостатки QuEST:

– нет инструментов для графического представления схемы;

– вся документация представлена только на английском языке.

5. Quantum Programming Studio (QPS) – это графический пользовательский веб-интерфейс для разработки квантовых алгоритмов и выполнения их на симуляторах или на реальных квантовых компьютерах, разработанный группой Quantastica в 2019 г.

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

Данный эмулятор предназначен как для специалистов, так и для людей, которые только начинают постигать азы квантового программирования.

На рис. 9 представлен пример алгоритма Шора в эмуляторе Quantum Programming Studio.

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

Достоинства квантового эмулятора QPS:

– QPS является веб-приложением и, как следствие, доступен для любого устройства с выходом в Интернет;

– кроссплатформенность;

– возможность экспорта кода на другие языки;

– наглядное построение схем;

– возможность запустить программу на квантовом компьютере;

– открытый исходный код.

tret10.tif

Рис. 10. Результат схемы алгоритма Шора в эмуляторе QPS

Недостатки квантового эмулятора QPS:

– QPS является веб-приложением, и, как следствие, нет возможности автономной работы;

– запуск схемы с 24 кубитами и больше приведёт к падению браузера;

– сравнительно небольшое количество заранее реализованных алгоритмов.

6. Quantum-Kit (Q-Kit) – это графический симулятор квантовых цепей. Он позволяет строить и проектировать квантовые схемы, визуализируя влияние операций с квантовыми гейтами в виде распределений квантовых состояний или на блоховскую сферу.

Q-Kit – бесценный инструмент в интуитивном понимании квантовых цепей, таких как квантовая телепортация, факторизация Шора или алгоритмы поиска Гровера. Это позволяет экспериментировать с различными квантовыми алгоритмами путем моделирования кубитов для изучения сложных квантовых систем на компьютере, а не в лаборатории. Это также позволяет тестировать квантовое программное обеспечение на эмуляторе перед запуском onquantum-оборудования. Q-Kit имеет приложения не только для исследования, разработки и проверки квантовых алгоритмов, но и для интуитивного понимания квантовых схем, как высокоуровневого предшественника квантового программирования.

Данный эмулятор хорошо подойдёт для тех, кто только начал разбираться с квантовым программированием, ввиду простого интерфейса и наглядности вычислений. На рис. 11 представлена реализация алгоритма Шора в среде эмулятора Q-Kit.

tret11.tif

Рис. 11. Реализация схемы алгоритма Шора в эмуляторе Q-Kit

tret12.tif

Рис. 12. Результат работы схемы алгоритма Шора в эмуляторе Q-Kit

На рис. 12 представлен результат работы схемы алгоритма Шора.

Достоинства квантового эмулятора Q-Kit:

– удобный интерфейс;

– относительная быстрота работы схем [21];

– простое построение схем;

– кроссплатформенность;

– большое количество встроенных алгоритмов и гейтов;

– возможность создавать собственные гейты.

Недостатки квантового эмулятора Q-Kit:

– ограничение в 20 кубит;

– присутствие визуальных багов;

– отсутствует встроенный язык.

На сегодняшний день имеется большое количество разнообразных эмуляторов квантовых компьютеров, которые могут стать хорошим инструментом в руках человека, исследующего квантовые вычисления. На просторах Интернета хранится огромное число методических пособий, руководств и документов, описывающих принципы работы с квантовыми эмуляторами [22].

В таблице приведены обобщенные результаты данного исследования.

Сравнительная таблица платформ

 

QDK

QCP

JQuantum

QuEST

QPS

Quantum-Kit

Поддерживаемые платформы

Windows, macOS,

Linux

Web

Windows

Windows, macOS, Linux

Web

Windows, macOS, Linux

Исходный код

(+)

(+)

(+)

(+)

(+)

(-)

Графическое приложение или библиотека

Библиотека Q#

Web-приложение

Графическое приложение

Библиотека для C++

Web-прило-жение

Графическое приложение

Количество логических кубитов

32

22

15

29

24

30

Количество реализованных гейтов

17

21

16

29

30

21

Возможность создать свои гейты

(+)

(+)

(-)

(+)

(+)

(+)

Наличие внутреннего языка программирования

(+)

(+)

(+)

(+)

(+)

(-)

Документация

(+)

(-)

(+)

(+)

(+)

(-)

Выводы

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

– для тех, кто только начинает изучать квантовые вычисления, хорошо подойдут QPS, jQuantum, QCP, с примерами квантовых алгоритмов;

– для тех, кто знаком с программированием на разных языках, QDK, QuEST и jQuantum – отличный выбор для начала и продолжения работы с квантовыми вычислениями;

– для изучения поведения схем отлично подойдут Q-kit, JQuantum, QPS;

– а QPS – хороший инструмент для изучения квантовых языков программирования в общем виде.

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