Вступ до 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.