OpenQASM
OpenQASM (англ. Open Quantum Assembly Language - мова квантового асемблера з відкритим кодом, вимовляється open kazm[3]) - це проміжне представлення для інструкцій квантового комп'ютера. Мова вперше була описана у статті, опублікованій у липні 2017 року,[3] а зразкова реалізація вихідного коду була випущена як частина набору програмного забезпечення Quantum Information Software (Qiskit) для використання з хмарною платформою квантових обчислень IBM Q Experience.[4] Мова має якості, подібні до традиційних мов опису апаратного забезпечення, таких як Verilog.
OpenQASM | |
---|---|
Розробник | IBM Researchd |
Останній реліз | 3.0 (5 листопада 2020)[1] |
Ліцензія | Apache License, Version 2.0d[2] |
Репозиторій вихідного коду | github.com/QISKit/openqasm |
OpenQASM визначає свою версію на початку вихідного файлу як дійсне число, як у декларації:
OPENQASM 2.0;
Версія оригінальних опублікованих реалізацій OpenQASM (наприклад, Qiskit, інфра) - це OpenQASM 3.0.
Приклади
Далі подано приклад вихідного коду OpenQASM з офіційної бібліотеки. Програма додає два чотирирозрядних числа.[5]
// quantum ripple-carry adder from Cuccaro et al, quant-ph/0410184
OPENQASM 2.0;
include "qelib1.inc";
gate majority a,b,c
{
cx c,b;
cx c,a;
ccx a,b,c;
}
gate unmaj a,b,c
{
ccx a,b,c;
cx c,a;
cx a,b;
}
qreg cin[1];
qreg a[4];
qreg b[4];
qreg cout[1];
creg ans[5];
// set input states
x a[0]; // a = 0001
x b; // b = 1111
// add a to b, storing result in b
majority cin[0],b[0],a[0];
majority a[0],b[1],a[1];
majority a[1],b[2],a[2];
majority a[2],b[3],a[3];
cx a[3],cout[0];
unmaj a[2],b[3],a[3];
unmaj a[1],b[2],a[2];
unmaj a[0],b[1],a[1];
unmaj cin[0],b[0],a[0];
measure b[0] -> ans[0];
measure b[1] -> ans[1];
measure b[2] -> ans[2];
measure b[3] -> ans[3];
measure cout[0] -> ans[4];
Примітки
- Release 3.0 — 2020.
- https://api.github.com/repos/QISKit/openqasm
- Cross, Andrew W.; Bishop, Lev S.; Smolin, John A.; Gambetta, Jay M.. «Open Quantum Assembly Language». arXiv:1707.03429.
- qiskit-openqasm: OpenQASM specification. International Business Machines. 4 липня 2017. Процитовано 6 липня 2017.
- openqasm/adder.qasm at master · QISKit/openqasm · GitHub.
Джерела
- OpenQASM on GitHub