Вступ до 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
Наступні кроки
-
Дізнайся, як генерувати код OpenQASM, у посібнику IBM Quantum Composer.
-
Переглянь таблицю можливостей OpenQASM 3.
-
Прочитай довідник OpenQASM 3 Qiskit API.
-
Прочитай довідник OpenQASM 2 Qiskit API.
-
Відвідай живу специфікацію OpenQASM.