Introduzione alla transpilazione
La transpilazione è il processo che consiste nel riscrivere un dato circuito di input in modo che corrisponda alla topologia di uno specifico dispositivo quantistico e nell'ottimizzare le istruzioni del circuito per l'esecuzione su computer quantistici soggetti a rumore. La presente documentazione illustra gli strumenti e i flussi di lavoro per la transpilazione locale a disposizione di tutti gli utenti di Qiskit. Se utilizzi primitive e ti interessano solo le opzioni di transpilazione predefinite fornite dal servizio di comput IBM Quantum, consulta l'argomento " Tecniche di mitigazione e soppressione degli errori ".
Il processo di trasposizione prende un circuito che contiene le vostre istruzioni:

La trasposizione lo trasforma in modo da utilizzare solo le istruzioni disponibili su un backend prescelto e ottimizza tali istruzioni per ridurre al minimo gli effetti del rumore:

Componente centrale dell'SDK Qiskit, il transpiler è progettato per essere modulare ed estensibile. Il suo uso principale è quello di scrivere nuove trasformazioni circuitali (note come passaggi del transpiler) e combinarle con altri passaggi esistenti, riducendo notevolmente la profondità e la complessità dei circuiti quantistici. I passaggi concatenati e in quale ordine hanno un effetto importante sul risultato finale. Questa pipeline è determinata dai parametri PassManager e StagedPassManager oggetti. L'oggetto StagedPassManager orchestra l'esecuzione di uno o più PassManagers e ne determina l'ordine di esecuzione, mentre l'oggetto PassManager è semplicemente un insieme di uno o più passaggi. Pensate a StagedPassManager come al direttore di un'orchestra, a PassManagers come alle diverse sezioni di strumenti e agli oggetti di Pass come ai singoli musicisti. In questo modo, è possibile comporre circuiti quantistici efficienti dal punto di vista hardware che consentono di eseguire lavori su scala industriale mantenendo il rumore gestibile.
Per ulteriori informazioni sugli stadi del gestore dei passaggi, consultare l'argomento Stadi del transpiler.
Architettura del set di istruzioni
Oltre a ridurre la profondità e la complessità dei circuiti quantistici, il transpiler è progettato per trasformare le istruzioni contenute in un dato QuantumCircuit in modo che obbediscano all'Instruction Set Architecture (ISA) di un particolare backend. I circuiti che rispettano l'ISA sono costituiti solo da istruzioni supportate dal backend, come le porte base disponibili nell'hardware, le misure, i reset e le operazioni di flusso di controllo Target, come le porte di base disponibili nell'hardware, le misure, i reset e le operazioni di flusso di controllo, e rispettano i vincoli specificati dalla connettività dell'hardware, vale a dire le porte di destinazione CouplingMap. Quando si invia un lavoro a un backend IBM Quantum®, i circuiti devono rispettare l'ISA del backend.
Fasi del transpiler
La pipeline di transpiler precostituita di Qiskit è composta da sei fasi fondamentali:
init- Questo passaggio esegue tutti i passaggi iniziali necessari prima che il circuito possa essere incorporato. Ciò comporta in genere lo srotolamento delle istruzioni personalizzate e la conversione del circuito in tutte le porte a uno o due qubit. Per impostazione predefinita, convalida le istruzioni del circuito e traduce le porte a più qubit in porte a uno o due qubit.layout- Questo passaggio applica un layout, mappando i qubit virtuali del circuito ai qubit fisici della QPU.routing- Questo passaggio viene eseguito dopo l'applicazione di un layout e inietta porte (cioè SWAP) nel circuito originale per renderlo compatibile con la connettività della QPU (mappa di accoppiamento).translation- Questo passaggio traduce le porte del circuito nella serie di istruzioni di base della QPU.optimization- Questo passaggio esegue un ciclo di ottimizzazione per trovare decomposizioni più efficienti del circuito quantistico fino a quando non viene soddisfatta una condizione (come una profondità fissa).scheduling- Questa fase serve per qualsiasi passaggio di schedulazione consapevole dell'hardware. Se l'utente specifica un metodo di schedulazione, questa fase tiene conto di tutti i tempi morti del circuito.
Se si personalizza un flusso di lavoro di transpilazione, utilizzare queste fasi come linea guida durante lo sviluppo.
Transpilare con gestori di passaggi
Il modo consigliato per transpilare un circuito è quello di creare uno staged pass manager e poi eseguire il suo metodo run con il circuito in ingresso. È possibile utilizzare la funzione generate_preset_pass_manager per generare un gestore di pass in fase di elaborazione con valori predefiniti ragionevoli.
Gli utenti più esperti possono personalizzare una serie di oggetti PassManager e StagedPassManager e determinare l'ordine di esecuzione di ogni fase. Ciò può modificare drasticamente il circuito di uscita finale. In effetti, un approccio personalizzato alla trasposizione di un algoritmo quantistico spesso produce una soppressione degli errori più efficiente rispetto all'approccio predefinito. Un approccio personalizzato prevede la riscrittura dei circuiti quantistici per soddisfare i vincoli hardware e sopprimere gli effetti del rumore. Il flusso logico di questa catena di strumenti è personalizzabile e non deve essere necessariamente lineare. Il processo di transpilazione può preparare cicli iterativi, rami condizionali e altri comportamenti complessi. Un buon punto di partenza per sviluppare una serie di passaggi personalizzati è esaminare la sequenza predefinita di trasformazioni.
Per una panoramica sul transpiling con i gestori di pass, vedere Transpilare con i gestori di pass.
Transpilazione predefinita
Per un modo più semplice, ma meno personalizzabile, di utilizzare il transpiler "pronto all'uso", utilizzare la qiskit.compiler.transpile funzione. Questo genera ed esegue uno degli oggetti StagedPassManager preimpostati basandosi, tra le altre opzioni, su un optimization_level flag che può essere impostato su 0, 1, 2 o 3. Livelli più elevati generano circuiti più ottimizzati a scapito di tempi di transpilazione più lunghi.
Passi successivi
- Per imparare a usare la funzione
generate_preset_passmanager, iniziare con l'argomento Impostazioni predefinite e opzioni di configurazione della transpilazione. - Continuate a conoscere la transpilazione con l'argomento Stadi del transpiler.
- Prova la guida Confronta le impostazioni del transpiler.
- Provate un esempio end-to-end che utilizza i circuiti transpilati nell'esercitazione Stima dell'energia allo stato solido della catena di Heisenberg con VQE.
- Consulta la documentazione dell'API Transpile.
- Impara come trasporre i circuiti.