Qiskit був заснований IBM Research, щоб дозволити розробку програмного забезпечення для їх послуги хмарних квантових обчислень[en], IBM Q Experience.[3][4] Також наявні внески від сторонніх учасників, як правило, з академічних установ.[5]
Первинна версія Qiskit використовує мову програмування Python. Версії для Swift[6] та JavaScript[7] були спочатку вивчені, хоча розробка цих версій зупинена.
Приклади використовуваних квантових обчислень забезпечуються набором Jupyter notebooks.[8] Приклади включають вихідний код наукових досліджень, які використовують Qiskit,[9] а також набір вправ, які допоможуть людям засвоїти ази квантового програмування. Підручник з відкритим кодом, заснований на Qiskit, доступний як допомога у квантових алгоритмах університетського рівня або як доповнення до курсу квантових обчислень.[10]
Qiskit надає можливість розробляти квантове програмне забезпечення як на рівні машинного кодуOpenQASM, так і на абстрактних рівнях, придатних для кінцевих користувачів без досвіду квантових обчислень. Ця функціональність забезпечується такими окремими компонентами.[11]
Terra
Qiskit Terra надає інструменти для створення квантової схеми на рівні квантового машинного коду або близького до нього.[12]
Це дозволяє будувати процеси, що працюють на квантовому обладнанні, виключно з точки зору квантових вентилів. Він також надає інструменти, що дозволяють оптимізувати квантові схеми для певного пристрою, а також керувати партіями завдань та запускати їх на квантових пристроях та тренажерах з віддаленим доступом.
Далі наведено простий приклад Qiskit Terra. При цьому квантова схема, яка створюється для двох кубітів, складається з квантових вентилів, необхідних для створення стану Белла[en]. Потім квантова схема закінчується квантовими вимірюваннями, які витягують біт з кожного кубіта.
Після створення квантової схеми її можна запускати на серверній системі (або квантовому обладнанні, або симуляторі). У наступному прикладі використовується локальний симулятор.
Остаточний оператор print покаже результати, повернуті серверною базою. Це словник Python, який описує бітові рядки, отримані в результаті декількох прогонів квантової схеми. У квантовій схемі, що використовується в цьому прикладі, бітові рядки '00' та '11' повинні бути єдино можливими результатами і повинні відбуватися з однаковою ймовірністю. Тому для повних результатів вибірки, як правило, розділяються приблизно порівну між ними, наприклад {'00':519, '11':505} .
Експерименти, проведені на квантовому обладнанні за допомогою Qiskit Terra, використовувались у багатьох наукових роботах,[13] наприклад, в тестах на квантову корекцію помилок[14],[15] генерацію заплутанності[16] та моделювання динаміки, далекої від рівноваги[17].
Aqua
Qiskit Aqua пропонує інструменти, якими можна користуватися без явного квантового програмування, які потрібні самому користувачу.[18] На даний момент підтримує застосування в хімії, ШІ, оптимізації та фінансах. Користувачі можуть створювати проблеми та отримувати результати, визначені за допомогою стандартних інструментів у цих доменах, таких як PySCF[en] для хімії. Потім Qiskit Aqua реалізує відповідний квантовий алгоритм.
Aer
Найближчим часом розробка квантового програмного забезпечення в основному залежатиме від моделювання малих квантових пристроїв. Для Qiskit це забезпечується компонентом Aer. Це забезпечує симулятори, розміщені локально на пристрої користувача, а також ресурси високопродуктивних обчислень, доступні через хмару.[19] Симулятори можуть також імітувати вплив шуму для простих і складних моделей шуму.[20]
Ignis
Ignis - це компонент, який містить інструменти для характеристики шуму в короткострокових пристроях, а також дозволяє проводити обчислення в присутності шуму. Сюди входять інструменти для порівняльного оцінювання короткочасних пристроїв, зменшення помилок та виправлення помилок.[21]
↑Zhukov, A. A.; Remizov, S. V.; Pogosov, W. V.; Lozovik, Yu. E. (2018). Algorithmic simulation of far-from-equilibrium dynamics using quantum computer. Quantum Information Processing. 17 (9). arXiv:1807.10149. doi:10.1007/s11128-018-2002-y. ISSN1570-0755.