qsharp Módulo
API pública del intérprete de Q#.
Este módulo es la superficie pública para la funcionalidad del intérprete de Q# dentro del qdk paquete.
Exportaciones de claves:
- init : inicialice o restablezca el intérprete de Q#.
- eval : evalúe una expresión de Q# y devuelva su valor.
- run : ejecute una expresión de entrada de Q# para una o varias capturas.
- compile : compile el origen de Q# en QIR para el envío de hardware.
- circuit : sintetiza un diagrama de circuitos a partir del código de Q#.
- estimate : calcule los recursos cuánticos (en desuso; use qre en su lugar).
- logical_counts : extraiga recuentos de puertas lógicas del código de Q#.
- dump_machine: devuelve el estado actual del simulador como .StateDump
-
dump_circuit : devuelve el circuito rastreado (requiere
trace_circuit=Trueen init). - dump_operation : calcula la matriz unitaria de una operación de Q#.
- set_quantum_seed, set_classical_seed — controlar las semillas de RNG.
- estimate_custom : ejecute el estimador de recursos genérico con parámetros de código, cúbit y algoritmo proporcionados por el usuario.
- QSharpError : se genera en errores de compilación o tiempo de ejecución de Q#.
- TargetProfile : enumeración de perfil de destino de compilación.
- Result, Pauli : tipos primitivos de Q#.
- CircuitGenerationMethod : controla cómo se sintetizan los circuitos.
- StateDump, ShotResult : tipos de salida del intérprete.
- PauliNoise, DepolarizingNoise, BitFlipNoise, PhaseFlipNoise : modelos de ruido para la simulación.
Clases
| BitFlipNoise |
Ruido de volteo de bits que se va a usar en la simulación. Crea una nueva instancia de BitFlipNoise. El canal de volteo de bits aplica un error de Pauli-X con probabilidad |
| CircuitGenerationMethod |
API pública del intérprete de Q#. Este módulo es la superficie pública para la funcionalidad del intérprete de Q# dentro del Exportaciones de claves:
|
| DepolarizingNoise |
Ruido de despolarización que se va a usar en la simulación. Crea una nueva instancia de DepolarizingNoise. El canal de despolarización aplica Pauli-X, Pauli-Y o Pauli-Z errores cada uno con probabilidad |
| Pauli |
Operador Q# Pauli. |
| PauliNoise |
El ruido de Pauli que se va a usar en la simulación representada como probabilidades de los errores de Pauli-X, Pauli-Y y Pauli-Z Crea una nueva PauliNoise instancia con las probabilidades de error especificadas. |
| PhaseFlipNoise |
Ruido de volteo de fase que se va a usar en la simulación. Crea una nueva instancia de PhaseFlipNoise. El canal de volteo de fase aplica un error de Pauli-Z con probabilidad |
| QSharpError |
Error devuelto por el intérprete de Q#. |
| Result |
Resultado de la medición de Q#. |
| ShotResult |
Un único resultado de una toma. |
| StateDump |
Volcado de estado devuelto por el intérprete de Q#. |
| TargetProfile |
Un perfil de destino de Q#. Un perfil de destino describe las funcionalidades del hardware o simulador que se usará para ejecutar el programa Q#. |
Funciones
circuit
Sintetiza un circuito para un programa de Q#. Se debe proporcionar una expresión de entrada o una operación.
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
| Nombre | Description |
|---|---|
|
entry_expr
|
Expresión de entrada. Como alternativa, se puede proporcionar un invocable, que debe ser un Q# al que se puede llamar. Valor predeterminado: None
|
|
*args
Requerido
|
Argumentos que se van a pasar al invocable, si se proporciona uno. |
Parámetros de palabra clave únicamente
| Nombre | Description |
|---|---|
|
operation
|
Operación que se va a sintetizar. Puede ser un nombre de una operación o una expresión lambda. La operación solo debe tomar cúbits o matrices de cúbits como parámetros. Valor predeterminado: None
|
|
generation_method
|
Método que se va a usar para la generación de circuitos.
ClassicalEval evalúa el flujo de control clásico en el tiempo de generación del circuito.
Simulate ejecuta una simulación completa para realizar un seguimiento del circuito.
Static usa la evaluación parcial y requiere un perfil que no Valor predeterminado: None
|
|
max_operations
|
Número máximo de operaciones que se van a incluir en el circuito.
El valor predeterminado es Valor predeterminado: None
|
|
source_locations
|
Si Valor predeterminado: False
|
|
group_by_scope
|
Si Valor predeterminado: True
|
|
prune_classical_qubits
|
Si Valor predeterminado: False
|
Devoluciones
| Tipo | Description |
|---|---|
|
<xref:Circuit>
|
Circuito sintetizado. |
Excepciones
| Tipo | Description |
|---|---|
|
Si hay un error al sintetizar el circuito. |
compile
Compila el código fuente de Q# en un programa que se puede enviar a un destino. Se debe proporcionar una expresión de entrada o un invocable con argumentos.
Ejemplo:
compile(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> QirInputData
Parámetros
| Nombre | Description |
|---|---|
|
entry_expr
Requerido
|
Expresión de Q# que se usará como punto de entrada para el programa. Como alternativa, se puede proporcionar un invocable, que debe ser un Q# al que se puede llamar. |
|
*args
Requerido
|
Argumentos que se van a pasar al invocable, si se proporciona uno. |
Devoluciones
| Tipo | Description |
|---|---|
|
<xref:QirInputData>
|
Programa compilado. Use |
dump_circuit
Volca un circuito que muestra el estado actual del simulador.
Este circuito contendrá las puertas que se han aplicado en el simulador hasta el punto actual.
Requiere que el intérprete se inicialice con trace_circuit=True.
dump_circuit() -> Circuit
Devoluciones
| Tipo | Description |
|---|---|
|
<xref:Circuit>
|
Seguimiento del circuito actual. |
Excepciones
| Tipo | Description |
|---|---|
|
Si el intérprete no se inicializó con |
dump_machine
Devuelve el vector de estado disperso del simulador como un objeto StateDump.
dump_machine() -> StateDump
Devoluciones
| Tipo | Description |
|---|---|
|
Estado del simulador. |
dump_operation
Devuelve una matriz cuadrada de números complejos que representa la operación realizada.
dump_operation(operation: str, num_qubits: int) -> List[List[complex]]
Parámetros
| Nombre | Description |
|---|---|
|
operation
Requerido
|
La operación que se va a realizar, que debe funcionar en una lista de cúbits. |
|
num_qubits
Requerido
|
Número de cúbits que se van a usar. |
Devoluciones
| Tipo | Description |
|---|---|
|
Matriz que representa la operación. |
estimate
Calcula los recursos para el código fuente de Q#. Se debe proporcionar una expresión de entrada o un invocable con argumentos.
En desuso desde la versión This: function usa la API del estimador de recursos heredado. Utilice qdk.qre en su lugar.
estimate(entry_expr: str | Callable | GlobalCallable | Closure, params: Dict[str, Any] | List | EstimatorParams | None = None, *args) -> EstimatorResult
Parámetros
| Nombre | Description |
|---|---|
|
entry_expr
Requerido
|
Expresión de entrada. Como alternativa, se puede proporcionar un invocable, que debe ser un Q# al que se puede llamar. |
|
params
|
Parámetros para configurar la estimación física. Valor predeterminado: None
|
|
*args
Requerido
|
Argumentos que se van a pasar al invocable, si se proporciona uno. |
Devoluciones
| Tipo | Description |
|---|---|
|
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
| Nombre | Description |
|---|---|
|
algorithm
Requerido
|
|
|
qubit
Requerido
|
|
|
qec
Requerido
|
|
|
factories
|
Valor predeterminado: Ellipsis
|
Parámetros de palabra clave únicamente
| Nombre | Description |
|---|---|
|
error_budget
|
Valor predeterminado: 0.01
|
|
max_factories
|
Valor predeterminado: None
|
|
logical_depth_factor
|
Valor predeterminado: None
|
|
max_physical_qubits
|
Valor predeterminado: None
|
|
max_duration
|
Valor predeterminado: None
|
|
error_budget_pruning
|
Valor predeterminado: False
|
eval
Evalúa el código fuente de Q#.
La salida se imprime en la consola.
eval(source: str, *, save_events: bool = False) -> Any
Parámetros
| Nombre | Description |
|---|---|
|
source
Requerido
|
Código fuente de Q# que se va a evaluar. |
Parámetros de palabra clave únicamente
| Nombre | Description |
|---|---|
|
save_events
|
Si es true, se guardarán y devolverán todas las salidas. Si es false, se imprimirán. Valor predeterminado: False
|
Devoluciones
| Tipo | Description |
|---|---|
|
Valor devuelto por la última instrucción del código fuente o la salida guardada si |
Excepciones
| Tipo | Description |
|---|---|
|
Si se produce un error al evaluar el código fuente. |
init
Inicializa el intérprete 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 de palabra clave únicamente
| Nombre | Description |
|---|---|
|
target_profile
|
Establecer el perfil de destino permite al intérprete de Q# generar programas compatibles con un destino específico. Consulte TargetProfile. Valor predeterminado: Unrestricted
|
|
target_name
|
Nombre opcional de la máquina de destino que se va a usar para deducir la configuración de target_profile compatible. Valor predeterminado: None
|
|
project_root
|
Ruta de acceso opcional a un directorio raíz con un proyecto de Q# que se va a incluir. Debe contener un manifiesto de proyecto qsharp.json. Valor predeterminado: None
|
|
language_features
|
Lista opcional de marcas de características de idioma que se van a habilitar. Se corresponden con las características del lenguaje Q# experimentales o en versión preliminar. Los valores válidos son:
Valor predeterminado: None
|
|
trace_circuit
|
Habilita el seguimiento del circuito durante la ejecución. Se requiere pasar True para que la función dump_circuit devuelva un circuito. La función de circuitoNO se ve afectada por este parámetro y siempre generará un circuito. Valor predeterminado: None
|
Devoluciones
| Tipo | Description |
|---|---|
|
<xref:Config>
|
Configuración del intérprete de Q#. |
logical_counts
Extrae los recuentos de recursos lógicos del código fuente de Q#. Se debe proporcionar una expresión de entrada o un invocable con argumentos.
logical_counts(entry_expr: str | Callable | GlobalCallable | Closure, *args) -> LogicalCounts
Parámetros
| Nombre | Description |
|---|---|
|
entry_expr
Requerido
|
Expresión de entrada. Como alternativa, se puede proporcionar un invocable, que debe ser un Q# al que se puede llamar. |
Devoluciones
| Tipo | Description |
|---|---|
|
Recursos de programa en términos de recuentos de puertas lógicas. |
run
Ejecuta la expresión Q# dada para el número determinado de capturas. Cada captura usa una instancia independiente del 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
| Nombre | Description |
|---|---|
|
entry_expr
Requerido
|
Expresión de entrada. Como alternativa, se puede proporcionar un invocable, que debe ser un Q# al que se puede llamar. |
|
shots
Requerido
|
Número de tomas que se van a ejecutar. |
|
*args
Requerido
|
Argumentos que se van a pasar al invocable, si se proporciona uno. |
|
on_result
Requerido
|
Función de devolución de llamada a la que se llamará con cada resultado. |
|
save_events
Requerido
|
Si es true, se guardará la salida de cada captura. Si es false, se imprimirán. |
|
noise
Requerido
|
Ruido que se va a usar en la simulación. |
|
qubit_loss
Requerido
|
Probabilidad de pérdida de cúbits en la simulación. |
|
seed
Requerido
|
Inicialización que se va a usar para el generador de números aleatorios en la simulación, si existe. |
|
type
Requerido
|
Tipo de simulador que se va a usar. Si no se especifica, se usará la simulación de vector de estado dispersa predeterminada. |
|
num_qubits
Requerido
|
Número de cúbits que se van a usar para el tipo de simulación "clifford". Si no se especifica, el simulador de Clifford supone un valor predeterminado de 1000 cúbits. |
Parámetros de palabra clave únicamente
| Nombre | Description |
|---|---|
|
on_result
|
Valor predeterminado: None
|
|
save_events
|
Valor predeterminado: False
|
|
noise
|
Valor predeterminado: None
|
|
qubit_loss
|
Valor predeterminado: None
|
|
seed
|
Valor predeterminado: None
|
|
type
|
Valor predeterminado: None
|
|
num_qubits
|
Valor predeterminado: None
|
Devoluciones
| Tipo | Description |
|---|---|
|
Una lista de resultados o errores en tiempo de ejecución. Si |
Excepciones
| Tipo | Description |
|---|---|
|
Si hay un error al interpretar la entrada. |
|
|
Si el número de tomas es menor que 1. |
set_classical_seed
Establece el valor de inicialización del generador de números aleatorios usado para las operaciones de números aleatorios clásicos de la biblioteca estándar. Esto se aplica a todo el código de Q# ejecutado, compilado o estimado.
set_classical_seed(seed: int | None) -> None
Parámetros
| Nombre | Description |
|---|---|
|
seed
Requerido
|
Inicialización que se va a usar para el generador de números aleatorios clásico. Si No, la inicialización se generará a partir de la entropía. |
set_quantum_seed
Establece el valor de inicialización del generador de números aleatorios que se usa para las medidas cuánticas. Esto se aplica a todo el código de Q# ejecutado, compilado o estimado.
set_quantum_seed(seed: int | None) -> None
Parámetros
| Nombre | Description |
|---|---|
|
seed
Requerido
|
Inicialización que se va a usar para el generador de números aleatorios cuánticos. Si No, la inicialización se generará a partir de la entropía. |