Российские физики разработали высокопроизводительный эмулятор 34-кубитного квантового компьютера. Программа точно воспроизводит квантовый компьютер и умещается на небольшом сервере. Ее можно использовать для тестирования и создания квантовых алгоритмов. Препринт работы опубликован на сайте arXiv.org.
Квантовые устройства создаются в единичных экземплярах и решают конкретные задачи, поэтому их нельзя применить для разработки и отладки квантовых алгоритмов. Для этих целей ученые создают квантовые эмуляторы — программы, которые имитируют квантовый процессор на классическом компьютере. При этом физикам приходится делать выбор между универсальностью и объемом памяти. Например, квантовые эмуляторы на основе тензорных сетей позволяют имитировать больше сотни кубитов, но воспроизводят квантовую систему приближенно и поэтому решают только узкий класс задач. Эмуляторы на основе векторов состояния хранят все состояния системы, как в квантовом компьютере, но из-за этого выделяемая для них оперативная память растет экспоненциально с увеличением числа кубитов. Задача ученых при создании таких вычислителей — оптимизировать время работы.
Физики из Российского квантового центра под руководством Алексея Федорова (Aleksey K. Fedorov) создали высокопроизводительный квантовый эмулятор на основе векторов состояния, который может содержать до 34 кубитов. Его основные особенности, помимо высокой производительности, — легкая поддержка кода и возможность добавления новых алгоритмов.
Чтобы создать эмулятор, авторы написали программу с нуля без использования библиотек линейной алгебры. Дело в том, что вычислитель на основе векторов состояния хранит в оперативной памяти все квантовые состояния системы. Для системы с n кубитами — это массив комплексных чисел размером 2n. Также его можно представить как матрицу размерности 2×2×2 х ... x 2×2 (всего n множителей). Квантовые состояния системы физики меняли с помощью квантовых вентилей, которые выполняют логические операции над кубитами. Например, вентиль отрицания меняет состояние кубита с 1 на 0 и наоборот. Математически это можно представить как умножение большой матрицы состояний на маленькую матрицу преобразования — вентиль. Библиотеки линейной алгебры, которые часто применяются при создании эмуляторов, оптимизированы под умножение больших матриц на большие матрицы, и поэтому здесь не эффективны. Ученые же учли особенность системы и написали код без них.
Для экономии необходимой оперативной памяти, которая растет экспоненциально при увеличении числа кубитов, авторы не создавали копию матрицы состояний при умножении ее на матрицу вентиля, а изменяли ее саму.
Еще одной технической особенностью работы стало использование современного языка программирования Rust, который позволяет добиться такой же высокой производительности, как при использовании C/C++, но на нем проще добавлять новый функционал в вычислитель и поддерживать корректность работы. Дополнительно авторы создали два модуля: поддержки языка для квантовых схем OpenQASM 2.0 и программирования на языке Python.
Для проверки эффективности эмулятора физики протестировали 10 квантовых алгоритмов, среди которых квантовое преобразование Фурье, квантовая нейронная сеть, модель Изинга и другие. Вычисления запускались на одном процессоре Intel i9-10920X с оперативной памятью 256 гигабайт для разного числа кубитов. Максимальное число кубитов, которое поместилось в память, — 34. Все алгоритмы работали корректно, решив соответствующие квантовые задачи. Таким образом, разработанный квантовый эмулятор может точно имитировать квантовый компьютер средних размеров на небольшом сервере.
Ученые планируют добавить вычислительный модуль на графических процессорах (GPU) для ускорения эмулятора, автоматическое дифференцирование для разработки вариационных алгоритмов. С совершенствованием эмулятора у физиков появятся новые возможности, но уже сейчас вычислитель можно использовать для отладки и разработки квантовых алгоритмов.
Стоит отметить, что создание новых квантовых алгоритмов имеет практическое значение, поскольку существующие зачастую слишком сложны для квантовых вычислителей.