Впервые в России физики разработали программу, которая точно симитировала работу 34-кубитного квантового компьютера. Ученые упростили существующие алгоритмы и добились высокой скорости и стабильности вычислений. Программа умещается на небольшом сервере. Ее можно использовать для тестирования и создания квантовых алгоритмов.
Квантовые устройства создаются в единичных экземплярах и решают конкретные задачи, поэтому их нельзя применить для разработки и отладки квантовых алгоритмов. Для этих целей ученые создают квантовые эмуляторы — программы, которые имитируют квантовый процессор на классическом компьютере. При этом физикам приходится делать выбор между универсальностью и объемом памяти. Например, квантовые эмуляторы на основе тензорных сетей позволяют имитировать больше сотни кубитов, но воспроизводят квантовую систему приближенно и поэтому могут решать только узкий класс задач. Эмуляторы на основе векторов состояния хранят все состояния системы, как в квантовом компьютере, но из-за этого выделяемая для них оперативная память растет экспоненциально с увеличением числа кубитов. Задача ученых при создании таких вычислителей — оптимизировать время работы и объем затрачиваемой оперативной памяти.
Физики Илья Лучников (Ilia A. Luchnikov), Олег Татаркин (Oleg E. Tatarkin) и Алексей Федоров (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. Все алгоритмы работали корректно, решив соответствующие квантовые задачи. Таким образом, разработанный квантовый эмулятор может точно имитировать средних размеров квантовый компьютер на небольшом сервере.
По словам первого автора работы Ильи Лучникова (Ilya A. Luchnikov):
«В эмуляторе нет хитроумной физики. Это программный продукт, который аккуратно написан и пишется, легко будет поддерживаться, удобен в использовании. Это история про реализацию продукта. Однако, он первый в России, который может моделировать системы такого масштаба, до 34 кубитов и более».
Ученые планируют добавить вычислительный модуль на графических процессорах GPU для ускорения эмулятора, автоматическое дифференцирование для разработки вариационных алгоритмов. С совершенствованием эмулятора у них появятся новые возможности, но уже сейчас его можно использовать для отладки и разработки квантовых алгоритмов.
Стоит отметить, что создание квантовых алгоритмов имеет практическое значение, поскольку существующие зачастую слишком сложны для квантовых вычислителей.