Учёные-физики из России
высокопроизводительный эмулятор 34-кубитного квантового компьютера. Программа воспроизводит квантовый компьютер и может уместиться на небольшом сервере. Эмулятор можно использовать для тестирования и создания квантовых алгоритмов.
Не является демонстрацией эмулятора
Квантовые устройства создаются в единичных экземплярах и решают конкретные задачи, и их нельзя применять для разработки и отладки квантовых алгоритмов. Для подобных задач создаются квантовые эмуляторы. Однако тут у учёных возникает выбор между универсальностью и объёмом памяти. К примеру, квантовые эмуляторы на основе тензорных сетей позволяют имитировать больше сотни кубитов, но воспроизводят квантовую систему приближённо и поэтому решают только узкий класс задач. Эмуляторы на основе векторов состояния хранят все состояния системы, как в квантовом компьютере, но из-за этого выделенная оперативная память растёт экспоненциально при увеличении кубитов.
И вот учёные Российского квантового центра квантовый эмулятор на основе векторов состояния, содержащий до 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) для ускорения эмулятора и автоматическое дифференцирование для разработки вариационных алгоритмов.
Не является демонстрацией эмулятора
Квантовые устройства создаются в единичных экземплярах и решают конкретные задачи, и их нельзя применять для разработки и отладки квантовых алгоритмов. Для подобных задач создаются квантовые эмуляторы. Однако тут у учёных возникает выбор между универсальностью и объёмом памяти. К примеру, квантовые эмуляторы на основе тензорных сетей позволяют имитировать больше сотни кубитов, но воспроизводят квантовую систему приближённо и поэтому решают только узкий класс задач. Эмуляторы на основе векторов состояния хранят все состояния системы, как в квантовом компьютере, но из-за этого выделенная оперативная память растёт экспоненциально при увеличении кубитов.
И вот учёные Российского квантового центра квантовый эмулятор на основе векторов состояния, содержащий до 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) для ускорения эмулятора и автоматическое дифференцирование для разработки вариационных алгоритмов.