interop Pacchetto

Classi

PeakUsageGreedyQubitManager

Un qubit manager che monitora separatamente i qubit di calcolo e di memoria.

È costituito da due gestioni qubit indipendenti per ogni tipo di qubit. Ogni responsabile usa una strategia di allocazione greedy da cirq.GreedyQubitManager.

I qubit di un tipo, dopo essere stati liberati, non possono essere riutilizzati come qubit di tipo diverso. Di conseguenza, il numero di qubit di picco è uguale alla somma dei conteggi dei qubit di picco per ogni tipo.

Inizializzare PeakUsageGreedyQubitManager.

PopBlock

Segnala la fine del blocco ripetuto corrente nella traccia.

PushBlock

Segnala l'inizio di un blocco ripetuto nella traccia.

ReadFromMemoryGate

Sposta gli stati qubit dal registro MEMORY al registro COMPUTE.

Si supponga che i qubit COMPUTE siano preparati in 0 stato. Lascia i qubit MEMORY in 0 stato.

Inizializza ReadFromMemoryGate.

TypedQubit

Qubit con tipo.

Inizializza il qubit tipizzato.

WriteToMemoryGate

Sposta gli stati qubit dal registro COMPUTE al registro MEMORY.

Si supponga che i qubit MEMORY siano preparati nello stato 0. Lascia i qubit COMPUTE in 0 stato.

Inizializza WriteToMemoryGate.

Enumerazioni

QubitType

Tipo qubit.

Ogni qubit logico può essere un qubit di calcolo o di memoria. I qubit di calcolo possono essere usati normalmente.

I qubit di memoria hanno una restrizione che i controlli non possono essere applicati. Le uniche operazioni consentite sui qubit di memoria sono letture/scritture, in cui lo stato viene spostato dalla memoria al controllo di calcolo o dal calcolo al gate di memoria.

Si presuppone che quando viene applicata la correzione degli errori, i qubit di memoria vengono codificati con uno schema di correzione degli errori più efficiente che richiede meno risorse, ma non consente l'applicazione gate (ad esempio, i codici superficie yoked, https://arxiv.org/abs/2312.04522).

Funzioni

assert_qubits_type

Asserisce che i qubit hanno specificato il tipo, ma solo se sono TypedQubits.

assert_qubits_type(qs: Sequence[Qid], qubit_type: QubitType) -> None

Parametri

Nome Descrizione
qs
Necessario
qubit_type
Necessario

read_from_memory

Operazione per leggere i qubit dalla memoria.

read_from_memory(memory_qubits: Sequence[Qid], compute_qubits: Sequence[Qid]) -> Operation

Parametri

Nome Descrizione
memory_qubits
Necessario
compute_qubits
Necessario

trace_from_cirq

Convertire un circuito Cirq in una traccia di stima delle risorse.

Scorre tutti i momenti e le operazioni nel circuito, convertendo ogni gate in operazioni di traccia. Le porte con un _to_trace metodo vengono convertite direttamente; altre vengono scomposte in modo ricorsivo tramite i protocolli o _decompose_ di _decompose_with_context_ Cirq.

trace_from_cirq(circuit: cirq.CIRCUIT_LIKE, *, classical_control_probability: float = 0.5, rotation_threshold: float = 1e-06, track_memory_qubits: bool = True) -> Trace

Parametri

Nome Descrizione
circuit
Necessario

Circuito Cirq da convertire.

classical_control_probability
Necessario

Probabilità che un'operazione controllata in modo classico sia inclusa nella traccia. Il valore predefinito è 0,5.

rotation_threshold
Necessario

Gli esponenti di rotazione con valore assoluto inferiore a questa soglia vengono considerati come identity e omessi dalla traccia. Questo vale per le rotazioni a qubit singolo (RX, RY, RZ) e per i componenti di rotazione delle scomposizione controllate-Z. Il valore predefinito è 1e-6.

track_memory_qubits
Necessario

Se True, i qubit di memoria vengono rilevati separatamente dai qubit di calcolo. Se False, tutti i qubit vengono considerati come qubit di calcolo. Inoltre, se true, le istruzioni di lettura da memoria e scrittura in memoria vengono mantenute nella traccia, altrimenti vengono decompilette nelle istruzioni SWAP e RESET. Il valore predefinito è True.

Parametri di sole parole chiave

Nome Descrizione
classical_control_probability
Valore predefinito: 0.5
rotation_threshold
Valore predefinito: 1e-06
track_memory_qubits
Valore predefinito: True

Valori restituiti

Tipo Descrizione

Traccia che rappresenta un profilo di esecuzione del circuito.

trace_from_entry_expr

Convertire un'espressione di immissione Q# in una traccia di stima delle risorse.

Valuta l'espressione di immissione per ottenere i conteggi logici, quindi compila una traccia contenente le operazioni quantistiche corrispondenti.

trace_from_entry_expr(entry_expr: str | Callable | LogicalCounts, *args) -> Trace

Parametri

Nome Descrizione
entry_expr
Necessario
<xref:<xref:qdk.qre.interop.str | Callable | LogicalCounts>>

Stringa di espressione di voce Q#, conteggi logici chiamabili o pre-calcolati.

*args
Necessario

Argomenti da passare all'oggetto chiamabile, se disponibile.

Valori restituiti

Tipo Descrizione

Traccia che rappresenta il profilo di risorsa del programma.

trace_from_entry_expr_cached

Convertire un'espressione di immissione Q# in una traccia, con memorizzazione nella cache facoltativa.

Se viene fornito cache_path ed esiste, la traccia viene caricata dal disco. In caso contrario, la traccia viene calcolata tramite trace_from_entry_expr e, facoltativamente, scritta in cache_path.

trace_from_entry_expr_cached(entry_expr: str | Callable | LogicalCounts, cache_path: Path | None, *args) -> Trace

Parametri

Nome Descrizione
entry_expr
Necessario
<xref:<xref:qdk.qre.interop.str | Callable | LogicalCounts>>

Stringa di espressione di voce Q#, conteggi logici chiamabili o pre-calcolati.

cache_path
Necessario
<xref:Optional>[<xref:Path>]

Percorso per la lettura/scrittura della traccia memorizzata nella cache. Se Nessuno, la memorizzazione nella cache è disabilitata.

Valori restituiti

Tipo Descrizione

Traccia che rappresenta il profilo di risorsa del programma.

trace_from_qir

Convertire un programma QIR in una traccia di stima delle risorse.

Analizza il modulo QIR, estrae i controlli quantistici e compila una traccia che può essere usata per la stima delle risorse. I rami condizionali vengono risolti seguendo sempre il percorso false (presupponendo che i risultati della misurazione siano Zero).

trace_from_qir(input: str | bytes) -> Trace

Parametri

Nome Descrizione
input
Necessario

Input QIR come testo LLVM IR (str) o bitcode (byte).

Valori restituiti

Tipo Descrizione

Traccia contenente le operazioni quantistice del programma QIR.

write_to_memory

Operazione per scrivere qubit in memoria.

write_to_memory(memory_qubits: Sequence[Qid], compute_qubits: Sequence[Qid]) -> Operation

Parametri

Nome Descrizione
memory_qubits
Necessario
compute_qubits
Necessario