Вот почему квантовые вычисления могут стать большим прорывом для языка Julia.

Насколько хороша Джулия для квантовой революции!

В мире языков программирования восходит новая звезда. В последние годы язык Julia набирает популярность благодаря своей универсальности и простоте использования. И он может получить большой импульс из неожиданного источника: квантовых вычислений.

В статье, опубликованной в конце октября 2020 года, группа исследователей из Китайской академии наук и Университета Ватерлоо предложила использовать язык Julia в качестве инструмента для разработки квантовых алгоритмов. В документе под названием «Yao.jl: Extensible, Efficient Framework for Quantum Algorithm Design» представлен набор инструментов, которые квантовые программисты могут использовать для разработки и тестирования квантовых алгоритмов с такими функциями, как поддержка графического процессора, механизм автоматического дифференцирования и современный уровень техники. производительность.

Авторы статьи считают, что Julia хорошо подходит для квантовых вычислений благодаря своему высокоуровневому синтаксису, который позволяет легко выражать квантовые алгоритмы. Кроме того, они утверждают, что компилятор Just-In-Time (JIT) Джулии можно использовать для компиляции квантовых программ в эффективный нативный код, что важно для запуска квантовых алгоритмов на реальном оборудовании.

Хотя еще неизвестно, станет ли язык Julia стандартом для квантового программирования, нет никаких сомнений в том, что у него есть потенциал. Если вам интересно узнать больше о квантовых вычислениях или вам просто интересно узнать об этом появляющемся новом языке программирования, обязательно прочитайте статью.

Вы также можете посмотреть это видео о Yao.jl с JuliaCon 2019, в котором рассказывается об использовании пакета:

Правка: мой соавтор и я рады сообщить, что предварительные заказы на нашу новую книгу «Ускоренный курс Джулии» уже доступны:



Так что же такое квантовые вычисления и как я могу начать делать это в Джулии? 🧐

На самом базовом уровне традиционные вычисления работают в пространстве нулей и единиц. Это идея, которая занимает центральное место в нашем опыте работы с компьютерами, поскольку каждую программу в мире можно разбить на двоичные файлы. Однако это изменилось с появлением квантовых вычислений. В квантовых вычислениях существует идея, что мы не ограничены только 0 и 1 в любой момент, и на самом деле [00, 01, 10, 11] могут сосуществовать, тогда как традиционные вычисления требуют, чтобы у нас было только одно активное состояние. .

Если вы похожи на меня, вы можете почесать голову и подумать: «Как это вообще полезно»? Ну, есть много разных случаев, когда квантовые вычисления можно использовать для решения множества различных действительно сложных математических задач, которые в противном случае было бы невозможно решить. Я избавлю вас от необходимости смотреть на математическую задачу прямо сейчас и вместо этого предлагаю вам посмотреть видео ниже для обзора квантовых вычислений.

Давайте поиграем с очень простым примером использования Yao:

julia> using Yao
julia> ArrayReg(rand(ComplexF64, 2^3))
ArrayReg{2, ComplexF64, Array...}
active qubits: 3/3
nlevel: 2

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

Далее создадим квантовый блок:

julia> chain(2, put(1=>H), put(2=>X))
nqubits: 2
chain
├─ put on (1)
│  └─ H
└─ put on (2)
└─ X

Вы можете спросить, что здесь делает цепочка функций, вот что говорится в разделе справки:

Возвращает ChainBlock, который связывает список блоков с одинаковым количеством

куды. Пусть G_i будет последовательностью блоков n-кудитов, матричное представление

цепочки блоков (G_1, G_2, …, G_m) составляет

G_m G_{m-1}\ldots G_1

Это почти эквивалентно умножению матриц, за исключением того, что порядок

перевернутый. Мы делаем его порядок отличным от обычного матричного умножения

потому что квантовые схемы могут быть более естественно представлены в этой форме.

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

Я предлагаю вам ознакомиться с Руководством по быстрому запуску Yao.jl, если вы хотите узнать больше и увидеть множество других примеров.

Использование Julia для квантовых вычислений на AWS ✨

Мало того, что в пространстве квантовых вычислений с открытым исходным кодом происходит множество разработок, крупные игроки, такие как Amazon, также удваивают ставки на сервисы (такие как Amazon Braket), которые обеспечивают квантовые вычисления в облаке. Если вы хотите поиграть с этим сервисом от Julia, ознакомьтесь с недавно анонсированным https://github.com/awslabs/Braket.jl, который предоставляет интерфейс для работы с сервисом.

15 ноября 2022 года AWS анонсировала и выпустила интерфейс для работы с Julia и сервисом AWS Braket:



Хотя пакет все еще является экспериментальным, в объявлении говорилось:

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

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

Подводим итоги 🎁

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

Если вы хотите поддержать экосистему Julia Quantum, рассмотрите возможность поставить звезду на Yao.jl и Braket.jl.