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,FileoFragments). - 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
|
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 non |
|
max_operations
|
Numero massimo di operazioni da includere nel circuito.
L'impostazione |
|
source_locations
|
Se |
|
group_by_scope
|
Se |
|
prune_classical_qubits
|
Se |
|
name
|
Nome del programma. Viene usato come punto di ingresso per il programma. |
|
search_path
|
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
|
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:
|
Valori restituiti
| Tipo | Descrizione |
|---|---|
|
<xref:QirInputData>
|
Programma compilato. Usare |
Eccezioni
| Tipo | Descrizione |
|---|---|
|
Se |
|
|
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
|
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:
|
Valori restituiti
| Tipo | Descrizione |
|---|---|
|
Risorse stimate. |
Eccezioni
| Tipo | Descrizione |
|---|---|
|
Se |
|
|
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
|
Un programma o un frammento OpenQASM. |
|
**kwargs
Necessario
|
Argomenti di parole chiave aggiuntivi. Opzioni comuni:
|
Valori restituiti
| Tipo | Descrizione |
|---|---|
|
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
|
Programma OpenQASM. In alternativa, è possibile specificare un chiamabile, che deve essere un chiamabile globale già importato. |
|
shots
|
Numero di colpi da eseguire. Di default è 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
|
Union[Tuple[float, float, float], PauliNoise, BitFlipNoise, PhaseFlipNoise, DepolarizingNoise, NoiseConfig]
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:
|
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 |
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 |