qsharp Módulo

API pública do interpretador de Q#.

Este módulo é a superfície pública para a funcionalidade do interpretador de Q# dentro do qdk pacote.

Principais exportações:

Classes

BitFlipNoise

O ruído de inverter bits a ser usado na simulação.

Cria uma nova instância BitFlipNoise.

O canal de inversão de bits aplica um erro de Pauli-X com probabilidade p.

CircuitGenerationMethod

API pública do interpretador de Q#.

Este módulo é a superfície pública para a funcionalidade do interpretador de Q# dentro do qdk pacote.

Principais exportações:

DepolarizingNoise

O ruído despolarizador a ser usado na simulação.

Cria uma nova instância DepolarizingNoise.

O canal de despolarização aplica Pauli-X, Pauli-Y ou Pauli-Z erros cada um com probabilidade p / 3.

Pauli

Um operador Pauli Q#.

PauliNoise

O ruído Pauli a ser usado na simulação representado como probabilidades de Pauli-X, Pauli-Y e Pauli-Z erros

Cria uma nova PauliNoise instância com as probabilidades de erro fornecidas.

PhaseFlipNoise

A fase inverte o ruído a ser usado na simulação.

Cria uma nova instância PhaseFlipNoise.

O canal de inversão de fase aplica um erro de Pauli-Z com probabilidade p.

QSharpError

Um erro retornado do interpretador de Q#.

Result

Um resultado de medida de Q#.

ShotResult

Um único resultado de um tiro.

StateDump

Um despejo de estado retornado do interpretador Q#.

TargetProfile

Um perfil de destino Q#.

Um perfil de destino descreve os recursos do hardware ou simulador que serão usados para executar o programa Q#.

Funções

circuit

Sintetiza um circuito para um programa Q#. Uma expressão de entrada ou uma operação devem ser fornecidas.

circuit(entry_expr: str | Callable | GlobalCallable | Closure | None = None, *args, operation: str | None = None, generation_method: CircuitGenerationMethod | None = None, max_operations: int | None = None, source_locations: bool = False, group_by_scope: bool = True, prune_classical_qubits: bool = False) -> Circuit

Parâmetros

Nome Description
entry_expr

Uma expressão de entrada. Como alternativa, um callable pode ser fornecido, que deve ser um callable Q#.

Valor padrão: None
*args
Obrigatório

Os argumentos a serem passados para o callable, se um for fornecido.

Parâmetros somente de palavra-chave

Nome Description
operation
str

A operação a ser sintetizada. Pode ser um nome de uma operação ou uma expressão lambda. A operação deve usar apenas qubits ou matrizes de qubits como parâmetros.

Valor padrão: None
generation_method

O método a ser usado para geração de circuito. ClassicalEval avalia o fluxo de controle clássico no tempo de geração do circuito. Simulate executa uma simulação completa para rastrear o circuito. Static usa a avaliação parcial e requer um perfil que não seja deUnrestricted destino. Padrão para o None qual seleciona automaticamente o método de geração.

Valor padrão: None
max_operations
int

O número máximo de operações a serem incluídas no circuito. Padrões para None o qual significa nenhum limite.

Valor padrão: None
source_locations

Se True, anota cada portão com sua localização de origem.

Valor padrão: False
group_by_scope

Se True, agrupa as operações por seu escopo de contenção, como declarações de função ou blocos de loop.

Valor padrão: True
prune_classical_qubits

Se True, remove qubits que nunca são usados em um portão quântico (por exemplo, qubits usados apenas como controles clássicos).

Valor padrão: False

Retornos

Tipo Description
<xref:Circuit>

O circuito sintetizado.

Exceções

Tipo Description

Se houver um erro ao sintetizar o circuito.

compile

Compila o código-fonte Q# em um programa que pode ser enviado para um destino. Uma expressão de entrada ou uma chamada com argumentos deve ser fornecida.

Exemplo:

compile(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> QirInputData

Parâmetros

Nome Description
entry_expr
Obrigatório

A expressão Q# que será usada como o ponto de entrada do programa. Como alternativa, um callable pode ser fornecido, que deve ser um callable Q#.

*args
Obrigatório

Os argumentos a serem passados para o callable, se um for fornecido.

Retornos

Tipo Description
<xref:QirInputData>

O programa compilado. Use str() para obter a cadeia de caracteres QIR.

dump_circuit

Despeja um circuito mostrando o estado atual do simulador.

Esse circuito conterá os portões que foram aplicados no simulador até o ponto atual.

Requer que o interpretador seja inicializado com trace_circuit=True.

dump_circuit() -> Circuit

Retornos

Tipo Description
<xref:Circuit>

O rastreamento de circuito atual.

Exceções

Tipo Description

Se o interpretador não foi inicializado com trace_circuit=True

dump_machine

Retorna o vetor de estado esparso do simulador como um objeto StateDump.

dump_machine() -> StateDump

Retornos

Tipo Description

O estado do simulador.

dump_operation

Retorna uma matriz quadrada de números complexos que representam a operação executada.

dump_operation(operation: str, num_qubits: int) -> List[List[complex]]

Parâmetros

Nome Description
operation
Obrigatório

A operação a ser executada, que deve operar em uma lista de qubits.

num_qubits
Obrigatório

O número de qubits a serem usados.

Retornos

Tipo Description

A matriz que representa a operação.

estimate

Estima recursos para o código-fonte Q#. Uma expressão de entrada ou uma chamada com argumentos deve ser fornecida.

Preterida desde a versão This: a função usa a API herdada do Avaliador de Recursos. Use qdk.qre em seu lugar.

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

Parâmetros

Nome Description
entry_expr
Obrigatório

A expressão de entrada. Como alternativa, um callable pode ser fornecido, que deve ser um callable Q#.

params

Os parâmetros para configurar a estimativa física.

Valor padrão: None
*args
Obrigatório

Os argumentos a serem passados para o callable, se um for fornecido.

Retornos

Tipo Description

Os recursos estimados.

estimate_custom

estimate_custom(algorithm, qubit, qec, factories=Ellipsis, *, error_budget=0.01, max_factories=None, logical_depth_factor=None, max_physical_qubits=None, max_duration=None, error_budget_pruning=False)

Parâmetros

Nome Description
algorithm
Obrigatório
qubit
Obrigatório
qec
Obrigatório
factories
Valor padrão: Ellipsis

Parâmetros somente de palavra-chave

Nome Description
error_budget
Valor padrão: 0.01
max_factories
Valor padrão: None
logical_depth_factor
Valor padrão: None
max_physical_qubits
Valor padrão: None
max_duration
Valor padrão: None
error_budget_pruning
Valor padrão: False

eval

Avalia o código-fonte Q#.

A saída é impressa no console.

eval(source: str, *, save_events: bool = False) -> Any

Parâmetros

Nome Description
source
Obrigatório

O código-fonte Q# a ser avaliado.

Parâmetros somente de palavra-chave

Nome Description
save_events

Se for true, toda a saída será salva e retornada. Se forem falsas, elas serão impressas.

Valor padrão: False

Retornos

Tipo Description
Any

O valor retornado pela última instrução no código-fonte ou a saída salva, se save_events for true.

Exceções

Tipo Description

Se houver um erro ao avaliar o código-fonte.

init

Inicializa o interpretador de Q#.

init(*, target_profile: TargetProfile = TargetProfile.Unrestricted, target_name: str | None = None, project_root: str | None = None, language_features: List[str] | None = None, trace_circuit: bool | None = None) -> Config

Parâmetros somente de palavra-chave

Nome Description
target_profile

Definir o perfil de destino permite que o interpretador de Q# gere programas compatíveis com um destino específico. Consulte TargetProfile.

Valor padrão: Unrestricted
target_name

Um nome opcional do computador de destino a ser usado para inferir a configuração de target_profile compatível.

Valor padrão: None
project_root

Um caminho opcional para um diretório raiz com um projeto Q# a ser incluído. Ele deve conter um manifesto qsharp.json projeto.

Valor padrão: None
language_features

Uma lista opcional de sinalizadores de recursos de idioma a serem habilitados. Eles correspondem a recursos experimentais ou de linguagem Q# de visualização. Os valores válidos são:

  • "v2-preview-syntax": habilita a sintaxe de visualização do Q# v2. Isso remove o suporte para o formulário de bloco de alocação de qubit com escopo (use q = Qubit() { ... }), exigindo o formulário de instrução em vez disso (use q = Qubit();). Ele também remove o requisito de usar a set palavra-chave para atribuições de variáveis mutáveis.
Valor padrão: None
trace_circuit

Habilita o rastreamento de circuito durante a execução. Passar True é necessário para que a função dump_circuit retorne um circuito. A função de circuitoNÃO é afetada por esse parâmetro e sempre gerará um circuito.

Valor padrão: None

Retornos

Tipo Description
<xref:Config>

A configuração do interpretador de Q#.

logical_counts

Extrai contagens de recursos lógicos do código-fonte Q#. Uma expressão de entrada ou uma chamada com argumentos deve ser fornecida.

logical_counts(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> LogicalCounts

Parâmetros

Nome Description
entry_expr
Obrigatório

A expressão de entrada. Como alternativa, um callable pode ser fornecido, que deve ser um callable Q#.

Retornos

Tipo Description

Recursos do programa em termos de contagens de portões lógicas.

run

Executa a expressão de Q# fornecida para o número determinado de capturas. Cada captura usa uma instância independente do simulador.

run(entry_expr: str | Callable | GlobalCallable | Closure, shots: int, *args, 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, seed: int | None = None, type: Literal['sparse', 'clifford'] | None = None, num_qubits: int | None = None) -> List[Any]

Parâmetros

Nome Description
entry_expr
Obrigatório

A expressão de entrada. Como alternativa, um callable pode ser fornecido, que deve ser um callable Q#.

shots
Obrigatório

O número de tiros a serem executados.

*args
Obrigatório

Os argumentos a serem passados para o callable, se um for fornecido.

on_result
Obrigatório

Uma função de retorno de chamada que será chamada com cada resultado.

save_events
Obrigatório

Se for true, a saída de cada tiro será salva. Se forem falsas, elas serão impressas.

noise
Obrigatório

O ruído a ser usado na simulação.

qubit_loss
Obrigatório

A probabilidade de perda de qubit na simulação.

seed
Obrigatório

A semente a ser usada para o gerador de número aleatório na simulação, se houver.

type
Obrigatório

O tipo de simulador a ser usado. Se não for especificado, a simulação de vetor de estado esparso padrão será usada.

num_qubits
Obrigatório

O número de qubits a serem usados para o tipo de simulação "clifford". Se não for especificado, o simulador Clifford assumirá um padrão de 1000 qubits.

Parâmetros somente de palavra-chave

Nome Description
on_result
Valor padrão: None
save_events
Valor padrão: False
noise
Valor padrão: None
qubit_loss
Valor padrão: None
seed
Valor padrão: None
type
Valor padrão: None
num_qubits
Valor padrão: None

Retornos

Tipo Description

Uma lista de resultados ou erros de runtime. Se save_events for true, uma lista de ShotResult será retornada.

Exceções

Tipo Description

Se houver um erro ao interpretar a entrada.

Se o número de tiros for menor que 1.

set_classical_seed

Define a semente do gerador de número aleatório usado para operações de número aleatório clássico da biblioteca padrão. Isso se aplica a todos os códigos Q# executados, compilados ou estimados.

set_classical_seed(seed: int | None) -> None

Parâmetros

Nome Description
seed
Obrigatório

A semente a ser usada para o gerador de número aleatório clássico. Se None, a semente será gerada a partir da entropia.

set_quantum_seed

Define a semente do gerador de número aleatório usado para medidas quânticas. Isso se aplica a todos os códigos Q# executados, compilados ou estimados.

set_quantum_seed(seed: int | None) -> None

Parâmetros

Nome Description
seed
Obrigatório

A semente a ser usada para o gerador de número aleatório quântico. Se None, a semente será gerada a partir da entropia.