Quil (установить инструкцию по архитектуре)
Quil — это архитектура квантового набора команд , которая впервые представила общую квантовую/классическую модель памяти. Он был представлен Робертом Смитом, Майклом Кертисом и Уильямом Зенгом в книге «Практическая архитектура квантового набора команд» . [1] Многие квантовые алгоритмы (включая квантовую телепортацию , квантовую коррекцию ошибок , моделирование, [2] [3] и алгоритмы оптимизации [4] ) требуют архитектуры с общей памятью . Quil разрабатывается для сверхпроводящих квантовых процессоров, разработанных Rigetti Computing, через API квантового программирования Forest . [5] [6] Библиотека Python под названием pyQuil
был введен для разработки программ Quil с конструкциями более высокого уровня. Quil Серверная часть также поддерживается другими средами квантового программирования. [7] [8]
абстрактная квантовая машина Базовая
В статье, представленной Смитом, Кертисом и Зенгом, Квил определяет набор команд для квантовой абстрактной машины (QAM), похожей на машину Тьюринга, но более практичной для выполнения «реальных» задач. [1] Состояние QAM можно представить в виде 6- кортежа . где:
- это (квантовое) состояние фиксированного, но произвольного количества кубитов индексируется с использованием индексации с отсчетом от 0 .
- это классическое запоминание числа классических битов, индексированных с использованием индексации, отсчитываемой от 0.
- фиксированный, но произвольный список статических вентилей ( квантовых вентилей, не зависящих от параметров, например вентиля Адамара ).
- фиксированный, но произвольный список параметрических элементов (вентилей, которые зависят от ряда сложных параметров, таких как элемент фазового сдвига угла ). параметра , который требует полного определения
- последовательность инструкций Quil, которые должны быть выполнены, представляющие программу. Длина обозначается .
- целочисленный счетчик программы, указывающий на следующую команду, которая будет выполнена. всегда начинается с 0 (указывает на инструкцию) и заканчивается на указывающий на остановку программы (обратите внимание, что последняя инструкция имеет индекс .) Счетчик программы увеличивается после каждой инструкции, за исключением специальных инструкций потока управления (условные и безусловные переходы и специальные инструкции).
HALT
инструкция, которая останавливает программу, устанавливая к .
Семантика тензорных КАМ определяется с использованием произведений гильбертовых пространств и линейных отображений между ними. [1]
Особенности [ править ]
В Quil есть поддержка определения возможно параметризованных гейтов в матричной форме (язык не включает способ проверки унитарности матриц , что является необходимым условием физической реализуемости определенных гейтов) и их применения на кубитах. Язык также поддерживает макроопределения возможных параметризованных квантовых схем и их расширение, измерение кубитов и запись результатов в классическую память, синхронизацию с классическими компьютерами с WAIT
инструкция, приостанавливающая выполнение программы Quil до тех пор, пока классическая программа не завершит свое выполнение, условное и безусловное ветвление , поддержка прагм , а также включение файлов для использования в качестве библиотек (в качестве одной из библиотек предоставляется стандартный набор гейтов. )
Ригетти QVM [ править ]
Компания Rigetti Computing разработала квантовую виртуальную машину на Common Lisp , которая имитирует определенную квантовую абстрактную машину на классическом компьютере и способна анализировать и выполнять программы Quil с возможным удаленным выполнением через HTTP. [9]
Пример [ править ]
Следующий пример демонстрирует классический поток управления, необходимый для телепортации кубита квантовой из регистра 2 в регистр 1: [10] [11]
# Declare classical memory
DECLARE ro BIT[2]
# Create Bell Pair
H 0
CNOT 0 1
# Teleport
CNOT 2 0
H 2
MEASURE 2 ro[0]
MEASURE 0 ro[1]
# Classically communicate measurements
JUMP-UNLESS @SKIP ro[1]
X 1
LABEL @SKIP
JUMP-UNLESS @END ro[0]
Z 1
LABEL @END
примеры реализации квантового преобразования Фурье и вариационного квантового собственного решателя В статье приведены .
Ссылки [ править ]
- ↑ Перейти обратно: Перейти обратно: а б с Смит, Роберт С.; Кертис, Майкл Дж.; Цзэн, Уильям Дж. (10 августа 2016 г.). «Практическая архитектура квантового набора команд». arXiv : 1608.03355 [ квант-ph ].
- ^ МакКлин, Джаррод Р.; Ромеро, Джонатан; Бэббуш, Райан; Аспуру-Гузик, Алан (4 февраля 2016 г.). «Теория вариационных гибридных квантово-классических алгоритмов». Новый журнал физики . 18 (2): 023023. arXiv : 1509.04279 . Бибкод : 2016NJPh...18b3023M . дои : 10.1088/1367-2630/18/2/023023 . ISSN 1367-2630 . S2CID 92988541 .
- ^ Рубин, Николас К. (21 октября 2016 г.). «Гибридный классический/квантовый подход для крупномасштабных исследований квантовых систем с помощью теории вложения матрицы плотности». arXiv : 1610.06910 [ квант-ph ].
- ^ Фархи, Эдвард; Голдстоун, Джеффри; Гутманн, Сэм (14 ноября 2014 г.). «Квантовый приближенный алгоритм оптимизации». arXiv : 1411.4028 [ квант-ph ].
- ^ «Rigetti запускает комплексную службу квантовых вычислений и фабрику квантовых микросхем» . IEEE Spectrum: Новости технологий, техники и науки . 26 июня 2017 года . Проверено 6 июля 2017 г.
- ^ «Ригетти незаметно выпускает бета-версию платформы Forest для квантового программирования в облаке | Отчет о квантовых вычислениях» . QuantumComputingReport.com . 8 марта 2017 года . Проверено 6 июля 2017 г.
- ^ «Ускоритель XACC Ригетти» . ornl-qci.github.io . Проверено 6 июля 2017 г.
- ^ Дойрон, Ник (07 марта 2017 г.), jsquil: Инструкции по квантовому компьютеру для разработчиков JavaScript , получено 6 июля 2017 г.
- ^ Высокопроизводительная квантовая виртуальная машина @rigetti.: rigetti/qvm , Rigetti Computing, 26 апреля 2019 г. , получено 28 апреля 2019 г.
- ^ Нильсен, Майкл А.; Чуанг, Исаак Л. (2000). Квантовые вычисления и квантовая информация . Издательство Кембриджского университета. п. 27. ISBN 978-0-521-63503-5 .
- ^ Вычисления, Ригетти (28 мая 2019 г.). «Документация pyQuil» (PDF) . Документация pyQuil . Проверено 6 июня 2019 г.