OpenQASM
Лицензия | Лицензия Апач 2.0 |
---|---|
Расширения имен файлов | .qasm |
Веб-сайт | openqasm |
Открытый квантовый язык ассемблера ( OpenQASM ; произносится как открытый казм) [1] ) — язык программирования, предназначенный для описания квантовых схем и алгоритмов для выполнения на квантовых компьютерах. Он спроектирован как промежуточное представление , которое может использоваться компиляторами более высокого уровня для взаимодействия с квантовым оборудованием и позволяет описывать широкий спектр квантовых операций, а также классическое управление потоком с прямой связью на основе результатов измерений.
Язык включает в себя механизм описания явного времени выполнения инструкций и позволяет прикреплять к вентилям низкоуровневые определения для таких задач, как калибровка. [1] OpenQASM не предназначен для классических вычислений общего назначения, а аппаратные реализации языка могут не поддерживать полный спектр манипуляций с данными, описанных в спецификации. Ожидается, что компиляторы OpenQASM будут поддерживать широкий спектр классических операций с константами времени компиляции, но поддержка этих операций со значениями времени выполнения может различаться в зависимости от реализации. [2]
Язык был впервые описан в статье, опубликованной в июле 2017 года. [1] а реализация эталонного исходного кода была выпущена как часть IBM Quantum Information Software Kit ( Qiskit ) для использования с их IBM Quantum Experience облачной платформой квантовых вычислений . [3] Этот язык имеет схожие качества с традиционными языками описания аппаратного обеспечения, такими как Verilog .
OpenQASM определяет свою версию в начале исходного файла как число, как в объявлении:
ОПЕНКАСМ 3 ;
Уровень исходных опубликованных реализаций OpenQASM — OpenQASM 2.0. Версия спецификации 3.0 является текущей и ее можно посмотреть в репозитории OpenQASM на GitHub .
Примеры [ править ]
Ниже приведен пример исходного кода OpenQASM из официальной библиотеки. Программа складывает два четырехбитных числа. [4]
/*
* квантовый сумматор с пульсирующим переносом
* Cuccaro et al, quant-ph/0410184
*/
OPENQASM 3 ;
включить «stdgates.inc» ;
ворот большинство a , b , c {
cx c , b ;
сх с , а ;
ccx а , б , в ;
}
ворота unmaj а , б , c {
ccx а , б , c ;
сх с , а ;
сх а , б ;
}
кубит [ 1 ] cin ;
кубит [ 4 ] а ;
кубит [ 4 ] б ;
кубит [ 1 ] cout ;
бит [ 5 ] ответ ;
uint [ 4 ] a_in = 1 ; // a = 0001
uint [ 4 ] b_in = 15 ; // b = 1111
// инициализация кубитов
сброс cin ;
сбросить ;
сброс б ;
сбросить счетчик ;
// устанавливаем входные состояния
для i in [ 0 : 3 ] {
if ( bool ( a_in [ i ])) x a [ i ];
if ( bool ( b_in [ i ])) x b [ i ];
}
// добавляем a к b, сохраняя результат в
большинстве b cin [ 0 ], b [ 0 ], a [ 0 ];
для я в [ 0 : 2 ] { большинство a [ i ], b [ i + 1 ], a [ i + 1 ]; }
cx a [ 3 ], cout [ 0 ];
для я в [ 2 : - 1 : 0 ] { unmaj a [ я ], b [ я + 1 ], а [ я + 1 ]; }
unmaj cin [ 0 ], b [ 0 ], a [ 0 ];
мера b [ 0 : 3 ] -> ответ [ 0 : 3 ];
измерить cout [ 0 ] -> ans [ 4 ];
Ссылки [ править ]
- ^ Перейти обратно: а б с Кросс, Эндрю В.; епископ Лев С.; Смолин, Джон А.; Гамбетта, Джей М. (2017). «Открытый квантовый язык ассемблера». arXiv : 1707.03429 [ квант-ph ].
- ^ «Живая спецификация OpenQASM» . Проверено 26 декабря 2022 г.
- ^ qiskit-openqasm: спецификация OpenQASM , International Business Machines, 4 июля 2017 г. , дата обращения 6 июля 2017 г.
- ^ «openqasm/adder.qasm на мастере · openqasm/openqasm · GitHub» . Гитхаб . 29 января 2022 г.
Внешние ссылки [ править ]