Перейти до основного вмісту

Вступ до OpenQASM

OpenQASM (відкрита квантова асемблерна мова) — це машинно-незалежний програмний інтерфейс, сумісний з QPU від IBM®, та імперативна мова програмування для опису квантових Circuit. OpenQASM використовує модель квантових Circuit для вираження квантових програм у вигляді впорядкованих послідовностей параметризованих операцій (таких як Gate, вимірювання та скидання) і класичних обчислень у реальному часі. Окрім квантових алгоритмів, OpenQASM може описувати Circuit, призначені для характеристики, перевірки або налагодження квантових процесорів.

У міру розвитку потреб розробки QPU розширювався і перелік можливостей OpenQASM; остання версія, OpenQASM 3, включає розширення: класичне керування потоком зі зворотним зв'язком, модифікатори Gate та реалізації на рівні імпульсів.

OpenQASM є вибором для широкого кола аудиторій завдяки своїй універсальності. У вступі до статті про OpenQASM 31 наведено приклади:

«Хоча OpenQASM не є мовою високого рівня, багато користувачів хотіли б вручну писати прості квантові Circuit за допомогою виразної предметно-орієнтованої мови. Дослідники, які займаються компіляцією Circuit, потребують інформації високого рівня, що зберігається в проміжних представленнях, щоб спрямовувати алгоритми оптимізації та синтезу. Експериментатори цінують зручність написання Circuit на відносно високому рівні, але часто потребують ручного коригування тактових характеристик або описів Gate на рівні імпульсів у різних точках Circuit. Інженери-апаратники, які проектують класичні контролери та генератори форм сигналів, надають перевагу мовам, які практично компілюються з урахуванням апаратних обмежень і явно відображають структуру Circuit, якою можуть скористатися контролери.»

OpenQASM є загальним форматом обміну між незалежними інструментами квантового програмного забезпечення. Для розробників, які воліють використовувати один інструмент для побудови Circuit, інший — для транспіляції тощо, OpenQASM є lingua franca, що слугує мостом між ними.

Qiskit SDK надає засоби для перетворення між OpenQASM і класом QuantumCircuit (інструкції дивись у розділах OpenQASM 2 та Qiskit і OpenQASM 3 та Qiskit).

Більше інформації можна знайти у живій специфікації OpenQASM.

Приклад коду OpenQASM: котячий стан


OPENQASM 3;
include "stdgates.inc";

const n = 3; // number of qubits
qubit[n] q; // a register 'q' of n qubits
bit[n] c; // a register 'c' of n classical bits

h q[0]; // Hadamard
for k in [0:n-1] {
cnot q[k], q[k+1]; // Controlled-NOT from control qubit q[k] to target qubit q[k+1]
}

c = measure q; // measure quantum register

Наступні кроки

Рекомендації

Footnotes

  1. Andrew W. Cross et al. "OpenQASM 3: A broader and deeper quantum assembly language," ACM Transactions on Quantum Computing, Volume 3, Issue 3 (2022). https://doi.org/10.48550/arXiv.2104.14722