Lumaktaw sa pangunahing nilalaman

Panimula sa transpilation

Isang pangkalahatang-tanaw ng transpilation at mga kaugnay na tool na gagamitin, lokal man o sa cloud.

Ang transpilation ay ang proseso ng pagsusulat muli ng isang ibinigay na input circuit para tumugma sa topology ng isang partikular na quantum device, at pag-optimize ng mga instruksyon ng circuit para sa pagpapatupad sa mga maingay na quantum computer. Saklaw ng dokumentasyong ito ang mga tool at workflow para sa lokal na transpilation na available sa lahat ng Qiskit user, pati na rin ang cloud-based na Qiskit Transpiler Service na available sa mga gumagamit ng Premium Plan, Flex Plan, at On-Prem (sa pamamagitan ng IBM Quantum Platform API) Plan. Kung gumagamit ka ng mga primitive at interesado ka lang sa mga default na opsyon ng transpilation na ibinibigay ng serbisyong Qiskit Runtime, basahin ang paksa na I-configure ang runtime compilation para sa Qiskit Runtime.

Ang proseso ng transpilation ay kumukuha ng isang circuit na naglalaman ng iyong mga instruksyon:

Isang two-qubit quantum circuit na naglalaman ng isang Hadamard at dalawang CNOT gates.

Pagkatapos, binabago ito ng transpilation para gamitin lamang ang mga instruksyong available sa isang piniling backend, at ino-optimize ang mga instruksyong iyon para mabawasan ang mga epekto ng ingay:

Ang parehong two-qubit quantum circuit pagkatapos ng transpilation. Naglalaman ito ng RZ, X, SX, at ECR gates.


Bilang isang sentral na bahagi ng Qiskit SDK, ang Transpiler ay dinisenyo para sa modularidad at extensibility. Ang pangunahing gamit nito ay ang pagsulat ng mga bagong circuit transformation (kilala bilang transpiler passes), at pagsasama ng mga ito sa iba pang mga kasalukuyang passes, na lubos na nagpapababa ng depth at complexity ng mga quantum circuit. Ang mga passes na pinagsama-sama at ang pagkakasunod-sunod ng mga ito ay may malaking epekto sa huling resulta. Ang pipeline na ito ay tinutukoy ng mga object na PassManager at StagedPassManager. Ang StagedPassManager ang nag-oorkestra ng pagpapatupad ng isa o higit pang PassManagers at tinutukoy ang pagkakasunod-sunod ng pagpapatupad ng mga ito, habang ang PassManager object ay isang koleksyon lamang ng isa o higit pang passes. Isipin ang StagedPassManager bilang ang konduktor sa isang orkestra, ang PassManagers bilang iba't ibang seksyon ng instrumento, at ang mga Pass object bilang mga indibidwal na musikero. Sa ganitong paraan, maaari kang mag-compose ng mga hardware-efficient na quantum circuit na nagbibigay-daan sa iyo na magsagawa ng utility-scale na trabaho habang pinananatiling mapamahalaan ang ingay.

Hanapin ang karagdagang impormasyon tungkol sa mga yugto ng pass manager sa paksa na Mga yugto ng Transpiler.

Instruction set architecture​

Bukod sa pagbababa ng depth at complexity ng mga quantum circuit, ang Transpiler ay dinisenyo para baguhin ang mga instruksyon na nasa loob ng isang ibinigay na QuantumCircuit para sumunod sa Instruction Set Architecture (ISA) ng isang partikular na backend. Ang mga circuit na sumusunod sa ISA ay binubuo lamang ng mga instruksyong sinusuportahan ng Target ng backend, tulad ng mga available na basis gate ng hardware, measurements, resets, at mga operasyon ng control flow, at sumusunod sa mga hadlang na tinukoy ng koneksyon ng hardware, iyon ay, ang CouplingMap ng target. Kapag nagpapadala ng trabaho sa isang IBM Quantum® backend, ang mga circuit ay dapat sumunod sa ISA ng backend.

Mga yugto ng Transpiler​

Ang prebuilt na transpiler pipeline ng Qiskit ay binubuo ng anim na pangunahing yugto:

  1. init - Ang pass na ito ay nagpapatakbo ng anumang paunang mga pass na kinakailangan bago ma-embed ang circuit. Karaniwang kinabibilangan ito ng pag-unroll ng mga custom na instruksyon at pag-convert ng circuit sa lahat ng single- at two-qubit gates. Bilang default, bine-validate nito ang mga instruksyon ng circuit at isinasalin ang mga multi-qubit gate sa single- at two-qubit gates.
  2. layout - Ang pass na ito ay naglalapat ng isang layout, na ini-map ang mga virtual qubit sa iyong circuit sa mga pisikal na qubit ng QPU.
  3. routing - Ang pass na ito ay tumatakbo pagkatapos mailapat ang isang layout at mag-iiniksyon ng mga gate (iyon ay, SWAPs) sa orihinal na circuit para maging compatible ito sa koneksyon ng QPU (coupling map).
  4. translation - Ang pass na ito ay nagsasalin ng mga gate sa circuit sa basis set ng mga instruksyon ng QPU.
  5. optimization - Ang pass na ito ay nagpapatakbo ng optimization loop para mahanap ang mas mahusay na mga decomposition ng quantum circuit hanggang matugunan ang isang kondisyon (tulad ng isang nakatakdang depth).
  6. scheduling - Ang yugtong ito ay para sa anumang hardware-aware scheduling passes. Kung tinukoy ng user ang isang paraan ng scheduling, isinasaalang-alang ng yugtong ito ang lahat ng idle time sa circuit.

Kung kino-customize mo ang isang transpilation workflow, gamitin ang mga yugtong ito bilang gabay sa panahon ng pagbuo.

Mag-transpile gamit ang mga pass manager​

Ang inirerekomendang paraan ng pag-transpile ng isang circuit ay ang lumikha ng staged pass manager at pagkatapos ay i-execute ang run method nito gamit ang iyong circuit bilang input. Maaari mong gamitin ang function na generate_preset_pass_manager para makabuo ng staged pass manager na may makatwirang mga default.

Ang mas advanced na mga user ay maaaring mag-customize ng isang set ng mga object na PassManager at StagedPassManager at matukoy ang pagkakasunod-sunod ng pagpapatakbo ng bawat yugto. Maaari itong lubos na magbago ng huling output circuit. Sa katunayan, ang isang custom na diskarte sa pag-transpile ng isang quantum algorithm ay kadalasang nagbubunga ng mas mahusay na error suppression kaysa sa default na diskarte. Ang isang custom na diskarte ay kinabibilangan ng pagsusulat muli ng mga quantum circuit para tumugma sa mga hadlang ng hardware at sugpuin ang mga epekto ng ingay. Ang daloy ng lohika para sa tool chain na ito ay maaaring i-customize at hindi kailangang linear. Ang proseso ng transpilation ay maaaring maghanda ng mga iterative loop, conditional branch, at iba pang kumplikadong gawi. Isang magandang panimulang punto kapag nagde-develop ng set ng mga custom na pass ay ang suriin ang default na pagkakasunod-sunod ng mga transformation.

Para sa pangkalahatang-tanaw ng pag-transpile gamit ang mga pass manager, tingnan ang Mag-transpile gamit ang mga pass manager.

Default na transpilation​

Para sa isang mas simple, ngunit hindi gaanong mako-customize, na paraan ng paggamit ng Transpiler "out-of-the-box", gamitin ang function na qiskit.compiler.transpile. Nagbubunga at nagpapatakbo ito ng isa sa mga preset na object na StagedPassManager batay sa, bukod sa iba pang mga opsyon, isang optimization_level flag na maaaring itakda sa 0, 1, 2, o 3. Ang mas mataas na antas ay nagbubunga ng mas na-optimize na mga circuit ngunit mas matagal ang transpilation.

Mga susunod na hakbang​

Mga Rekomendasyon