Вступ до транспіляції
Транспіляція — це процес перетворення заданої вхідної схеми відповідно до топології конкретного квантового пристрою та оптимізації інструкцій схеми для виконання на шумних квантових комп'ютерах. Ця документація охоплює інструменти та робочі процеси для локальної транспіляції, доступної всім користувачам Qiskit. Якщо ти використовуєш примітиви та цікавишся лише стандартними параметрами транспіляції, наданими IBM Quantum Compute Service, прочитай розділ Методи зменшення та придушення помилок.
Процес транспіляції приймає схему, що містить твої інструкції:
Потім транспіляція перетворює її так, що використовуються лише інструкції, доступні на вибраному бекенді, і оптимізує ці інструкції для мінімізації ефектів шуму:
Транспілятор є центральним компонентом Qiskit SDK, розробленим з урахуванням модульності та розширюваності. Його основне призначення — написання нових перетворень схем (відомих як проходи транспілятора) та їх поєднання з іншими наявними проходами, що значно зменшує глибину та складність квантових схем. Те, які проходи об'єднуються та в якому порядку, суттєво впливає на кінцевий результат. Цей конвеєр визначається об'єктами PassManager та StagedPassManager. StagedPassManager координує виконання одного або декількох PassManagers та визначає порядок їх виконання, тоді як об'єкт PassManager є лише набором одного або кількох проходів. Уяви StagedPassManager як диригента оркестру, PassManagers — як різні групи інструментів, а об'єкти Pass — як окремих музикантів. Таким чином ти можеш створювати апаратно-ефективні квантові схеми, що дозволяють виконувати роботу утилітарного масштабу, зберігаючи керованість шуму.
Більше інформації про етапи менеджера проходів дивись у розділі Етапи транспілятора.
Архітектура набору інструкцій
Крім зменшення глибини та складності квантових схем, транспілятор призначений для перетворення інструкцій, що містяться в заданій QuantumCircuit, відповідно до Архітектури набору інструкцій (ISA) конкретного бекенду. Схеми, що відповідають ISA, містять лише інструкції, підтримувані Target бекенду, такі як доступні базові вентилі апаратного забезпечення, вимірювання, скидання та операції керування потоком, і відповідають обмеженням, заданим зв'язністю апаратного забезпечення, тобто CouplingMap цілі. При поданні завдання на бекенд IBM Quantum® схеми повинні відповідати ISA бекенду.
Етапи транспілятора
Вбудований конвеєр транспілятора Qiskit складається з шести основних етапів:
-
init— цей прохід виконує всі початкові проходи, необхідні перед вбудовуванням схеми. Зазвичай це передбачає розгортання кастомних інструкцій та перетворення схеми до однокубітних і двокубітних вентилів. За замовчуванням перевіряються інструкції схеми та багатокубітні вентилі перетворюються на однокубітні та двокубітні. -
layout— цей прохід застосовує розмітку, відображаючи віртуальні кубіти в твоїй схемі на фізичні кубіти QPU. -
routing— цей прохід виконується після застосування розмітки та вставляє вентилі (тобто SWAP) у вихідну схему, щоб зробити її сумісною зі зв'язністю QPU (картою зв'язків). -
translation— цей прохід перетворює вентилі в схемі на базовий набір інструкцій QPU. -
optimization— цей прохід виконує цикл оптимізації для пошуку більш ефективних розкладень квантової схеми до виконання умови (наприклад, фіксованої глибини). -
scheduling— цей етап призначений для проходів планування, що враховують особливості апаратного забезпечення. Якщо користувач задає метод планування, цей етап враховує весь час простою в схемі.
Якщо ти налаштовуєш робочий процес транспіляції, використовуй ці етапи як орієнтир у процесі розробки.
Транспіляція за допомогою менеджерів проходів
Рекомендований спосіб транспіляції схеми — створити поетапний менеджер проходів і виконати його метод run, передавши схему як вхідні дані. Ти можеш використовувати функцію generate_preset_pass_manager для генерації поетапного менеджера проходів з розумними стандартними параметрами.
Більш досвідчені користувачі можуть налаштовувати набір об'єктів PassManager та StagedPassManager і визначати порядок виконання кожного етапу. Це може суттєво змінити кінцеву вихідну схему. Фактично кастомний підхід до транспіляції квантового алгоритму часто дає більш ефективне придушення помилок, ніж стандартний підхід. Кастомний підхід передбачає переписування квантових схем відповідно до обмежень апаратного забезпечення та придушення ефектів шуму. Логіку цього ланцюжка інструментів можна налаштовувати, і вона не обов'язково має бути лінійною. Процес транспіляції може готувати ітеративні цикли, умовні розгалуження та інші складні сценарії поведінки. Гарна відправна точка при розробці набору кастомних проходів — вивчити стандартну послідовність перетворень.
Огляд транспіляції за допомогою менеджерів проходів дивись у розділі Транспіляція за допомогою менеджерів проходів.
Стандартна транспіляція
Для простішого, але менш настроюваного способу використання транспілятора "з коробки" використовуй функцію qiskit.compiler.transpile. Вона генерує та запускає один з наперед визначених об'єктів StagedPassManager на основі, зокрема, прапорця optimization_level, який можна встановити на 0, 1, 2 або 3. Вищі рівні генерують більш оптимізовані схеми ціною збільшення часу транспіляції.
Наступні кроки
- Щоб дізнатися, як використовувати функцію
generate_preset_passmanager, почни з розділу Стандартні налаштування транспіляції та параметри конфігурації. - Продовж вивчення транспіляції з розділом Етапи транспілятора.
- Спробуй посібник Порівняння налаштувань транспілятора.
- Спробуй наскрізний приклад, що використовує транспільовані схеми, у навчальному посібнику Оцінка енергії основного стану ланцюжка Гайзенберга за допомогою VQE.
- Переглянь документацію API транспіляції.
- Дізнайся як транспілювати схеми.