openqasm Pacchetto

Strumenti OpenQASM per QDK.

Questo modulo fornisce funzioni per la compilazione, l'esecuzione, la stima e la generazione di circuiti da programmi OpenQASM 2.0/3.0.

Esportazioni chiave:

  • import_openqasm — importare un programma o un frammento OpenQASM nel contesto dell'interprete Q# attivo.
  • run — simulare un programma OpenQASM per uno o più scatti.
  • compile — compilare un programma OpenQASM in QIR per l'invio a una destinazione hardware.
  • circuit — sintetizzare un diagramma di circuito da un programma OpenQASM.
  • estimate — stimare le risorse quantistiche necessarie per eseguire un programma OpenQASM (deprecato; usare qre invece).
  • ProgramType — controlla la modalità di interpretazione dell'origine (Operation, Fileo Fragments).
  • OutputSemantics — controlla la semantica di output delle misurazioni durante la compilazione.
  • QasmError : generato quando un'origine OpenQASM non può essere analizzata o compilata.

Classi

OutputSemantics

Rappresenta la semantica di output per la compilazione OpenQASM 3. Ognuno ha implicazioni sull'output della compilazione e sui controlli semantici eseguiti.

ProgramType

Rappresenta il tipo di output di compilazione da creare

QasmError

Errore restituito dal parser OpenQASM.

Funzioni

circuit

Sintetizza un circuito per un programma OpenQASM. È necessario specificare una stringa di programma o un'operazione.

circuit(source: str | Callable | None = None, *args, **kwargs: Any) -> Circuit

Parametri

Nome Descrizione
source
str oppure Callable

Programma OpenQASM. In alternativa, è possibile specificare un chiamabile, che deve essere un chiamabile globale già importato.

Valore predefinito: None
*args
Necessario

Argomenti da passare all'oggetto chiamabile, se disponibile.

Parametri di sole parole chiave

Nome Descrizione
generation_method

Metodo da utilizzare per la generazione di circuiti. ClassicalEval valuta il flusso di controllo classico in fase di generazione del circuito. Simulate esegue una simulazione completa per tracciare il circuito. Static usa la valutazione parziale e richiede un profilo nonUnrestricted di destinazione. L'impostazione predefinita è None la selezione automatica del metodo di generazione.

max_operations
int

Numero massimo di operazioni da includere nel circuito. L'impostazione None predefinita è nessun limite.

source_locations

Se True, annota ogni gate con la relativa posizione di origine. Di default è False.

group_by_scope

Se True, raggruppa le operazioni in base all'ambito contenitore, ad esempio dichiarazioni di funzione o blocchi di cicli. Di default è True.

prune_classical_qubits

Se True, rimuove i qubit che non vengono mai usati in un gate quantistico (ad esempio, i qubit usati solo come controlli classici). Di default è False.

name
str

Nome del programma. Viene usato come punto di ingresso per il programma.

search_path
str

Percorso di ricerca facoltativo per la risoluzione dei riferimenti ai file.

Valori restituiti

Tipo Descrizione
<xref:Circuit>

Circuito sintetizzato.

Eccezioni

Tipo Descrizione

Se si verifica un errore durante la generazione, l'analisi o l'analisi dell'origine OpenQASM.

Se si verifica un errore durante la valutazione o la diffusione del circuito.

compile

Compila il codice sorgente OpenQASM in un programma che può essere inviato a una destinazione come QIR (Quantum Intermediate Representation). È necessario specificare un programma completo o un oggetto chiamabile con argomenti.

Esempio:

compile(source: str | Callable, *args: Any, **kwargs: Any) -> QirInputData

Parametri

Nome Descrizione
source
Necessario
str oppure Callable

Programma OpenQASM. In alternativa, è possibile specificare un chiamabile, che deve essere un chiamabile globale già importato.

*args
Necessario

Argomenti da passare all'oggetto chiamabile, se disponibile.

**kwargs
Necessario

Argomenti di parole chiave aggiuntivi per la compilazione del programma di origine. Opzioni comuni:

  • name (str): nome del circuito. Viene usato come punto di ingresso per il programma.

  • target_profile (TargetProfile): profilo di destinazione da usare per la generazione di codice.

  • search_path (str): percorso di ricerca facoltativo per la risoluzione dei riferimenti ai file.

  • output_semantics (OutputSemantics): semantica di output per la compilazione.

Valori restituiti

Tipo Descrizione
<xref:QirInputData>

Programma compilato. Usare str() per ottenere la stringa QIR.

Eccezioni

Tipo Descrizione

Se source non è né una stringa né una chiamata con un __global_callable attributo .

Se si verifica un errore durante la generazione, l'analisi o l'analisi dell'origine OpenQASM.

Se si verifica un errore durante la compilazione del programma.

estimate

Stima i requisiti delle risorse per l'esecuzione del codice sorgente OpenQASM. È necessario specificare un programma completo o un oggetto chiamabile con argomenti.

estimate(source: str | Callable, params: Dict[str, Any] | List | EstimatorParams | None = None, *args: Any, **kwargs: Any) -> EstimatorResult

Parametri

Nome Descrizione
source
Necessario
str oppure Callable

Programma OpenQASM. In alternativa, è possibile specificare un chiamabile, che deve essere un chiamabile globale già importato.

params

Parametri per configurare la stima.

Valore predefinito: None
*args
Necessario

Argomenti da passare all'oggetto chiamabile, se disponibile.

**kwargs
Necessario

Argomenti di parole chiave aggiuntivi. Opzioni comuni:

  • name (str): nome del circuito. Viene usato come punto di ingresso per il programma. Di default è 'program'.

  • search_path (str): percorso di ricerca facoltativo per la risoluzione delle importazioni.

Valori restituiti

Tipo Descrizione

Risorse stimate.

Eccezioni

Tipo Descrizione

Se source non è né una stringa né una chiamata con un __global_callable attributo .

Se si verifica un errore durante la generazione, l'analisi o l'analisi dell'origine OpenQASM.

Se si verifica un errore durante la compilazione del programma.

import_openqasm

Importa il codice sorgente OpenQASM nell'interprete QDK attivo. Per impostazione predefinita, l'importazione usa ProgramType.Operation in modo che l'origine diventi un'operazione Q# nello spazio dei nomi globale con parametri per gli input e i parametri classici dichiarati per ognuno dei qubit dichiarati, mentre qualsiasi dichiarazione di output esplicita o implicita diventa il tipo restituito dell'operazione. In alternativa, specificando ProgramType.File , l'origine di input verrà considerata come un programma autonomo e verrà creata un'operazione nello qasm_import spazio dei nomi che accetta solo i parametri classici, alloca internamente i qubit necessari e li rilascia alla fine dell'operazione. Infine, l'uso di ProgramType.Fragments esegue l'origine fornita nell'interprete interattivo corrente, definendo eventuali variabili o operazioni dichiarate nell'ambito corrente e restituendo il valore dell'ultima istruzione nell'origine.

import_openqasm(source: str, **kwargs: Any) -> Any

Parametri

Nome Descrizione
source
Necessario
str

Un programma o un frammento OpenQASM.

**kwargs
Necessario

Argomenti di parole chiave aggiuntivi. Opzioni comuni:

  • name (str): nome del programma. Viene usato come punto di ingresso per il programma.

  • search_path (str): percorso di ricerca facoltativo per la risoluzione dei riferimenti ai file.

  • output_semantics (OutputSemantics): semantica di output per la compilazione.

  • program_type (ProgramType): tipo di compilazione del programma da eseguire. Di default è ProgramType.Operation.

Valori restituiti

Tipo Descrizione
Any

Valore restituito dall'ultima istruzione nel codice sorgente.

Eccezioni

Tipo Descrizione

Se si verifica un errore durante la generazione, l'analisi o l'analisi dell'origine OpenQASM.

Se si verifica un errore durante la compilazione del programma.

run

Esegue il programma OpenQASM specificato per il numero specificato di scatti. È necessario specificare un programma completo o un oggetto chiamabile con argomenti. Ogni scatto usa un'istanza indipendente del simulatore.

run(source: str | Callable, shots: int = 1024, *args: Any, on_result: Callable[[ShotResult], None] | None = None, save_events: bool = False, noise: Tuple[float, float, float] | PauliNoise | BitFlipNoise | PhaseFlipNoise | DepolarizingNoise | NoiseConfig | None = None, qubit_loss: float | None = None, as_bitstring: bool = False, type: Literal['sparse', 'clifford'] | None = None, num_qubits: int | None = None, **kwargs: Any) -> List[Any]

Parametri

Nome Descrizione
source
Necessario
str oppure Callable

Programma OpenQASM. In alternativa, è possibile specificare un chiamabile, che deve essere un chiamabile globale già importato.

shots
int

Numero di colpi da eseguire. Di default è 1024.

Valore predefinito: 1024
*args
Necessario

Argomenti da passare all'oggetto chiamabile, se disponibile.

on_result
Necessario

Funzione di callback che verrà chiamata con ogni risultato. Supportato solo quando viene fornito un callable; genera QasmError se utilizzato in caso contrario.

save_events
Necessario

Se true, l'output di ogni colpo verrà salvato. Se false, verranno stampate. Supportato solo quando viene fornito un callable; genera QasmError se utilizzato in caso contrario.

noise
Necessario

Rumore da usare nella simulazione.

qubit_loss
Necessario

Probabilità di perdita di qubit nella simulazione.

as_bitstring
Necessario

Se true, i registri dei risultati verranno convertiti in bitstrings.

type
Necessario

Tipo di simulatore da usare. Se non specificato, verrà usata la simulazione del vettore di stato sparse predefinita.

num_qubits
Necessario

Numero di qubit da usare per il tipo di simulazione "clifford". Se non specificato, il simulatore Clifford presuppone un valore predefinito di 1000 qubit.

**kwargs
Necessario

Argomenti di parole chiave aggiuntivi per la compilazione del programma di origine. Opzioni comuni:

  • name (str): nome del circuito. Viene usato come punto di ingresso per il programma.

  • target_profile (TargetProfile): profilo di destinazione da usare per la generazione di codice.

  • search_path (str): percorso di ricerca facoltativo per la risoluzione dei riferimenti ai file.

  • output_semantics (OutputSemantics): semantica di output per la compilazione.

  • seed (int): valore di inizializzazione da usare per il generatore di numeri casuali.

Parametri di sole parole chiave

Nome Descrizione
on_result
Valore predefinito: None
save_events
Valore predefinito: False
noise
Valore predefinito: None
qubit_loss
Valore predefinito: None
as_bitstring
Valore predefinito: False
type
Valore predefinito: None
num_qubits
Valore predefinito: None

Valori restituiti

Tipo Descrizione

Elenco di risultati o errori di runtime. Se save_events è true, viene restituito un elenco di ShotResult valori.

Eccezioni

Tipo Descrizione

Se si verifica un errore durante la generazione, l'analisi o l'analisi dell'origine OpenQASM.

Se si verifica un errore durante l'interpretazione dell'input.

Se il numero di colpi è minore di 1.

Se on_result o save_events vengono usati durante l'esecuzione di programmi OpenQASM.