Personalización de las estimaciones de recursos en las características de la máquina
En este artículo se muestra cómo personalizar los target parámetros del estimador de recursos de Azure Quantum para que coincidan con las características de la máquina que está targetrealizando. El estimador de recursos usa estos parámetros para calcular los recursos necesarios para ejecutar un algoritmo cuántico en un equipo cuántico.
Nota
Si tiene algún problema mientras trabaja con el Estimador de recursos, consulte la página Solución de problemas.
Parámetros de destino
El estimador de recursos calcula la estimación de recursos, como el número de cúbits y el tiempo de ejecución, que sería necesario para implementar un algoritmo cuántico determinado mediante una tecnología de cúbit determinada y con un conjunto fijo de opciones arquitectónicas.
Por lo tanto, el estimador de recursos toma un conjunto de entradas, con valores predefinidos para empezar fácilmente:
- Un modelo de cúbit físico,
qubitParams
, que son las propiedades de los cúbits físicos subyacentes. - Un esquema
qecScheme
de corrección de errores cuánticos (QEC), , que es el esquema de corrección de errores cuánticos asumido. - Un presupuesto de errores,
errorBudget
, que es el error permitido general, es decir, el número de veces que el programa puede no obtener respuestas. - Restricciones en el nivel de componente,
constraints
, que son el número de ciclos lógicos y el número de copias de fábrica de T. - Unidades de destilación,
distillationUnitSpecifications
, para especificar algoritmos de destilación de fábricas de T.
Nota
Además de los target parámetros, si el programa cuántico contiene argumentos, el estimador de recursos puede tomar argumentos de operación como entrada. Para más información, consulte Obtención del máximo partido del estimador de recursos de Azure Quantum.
Parámetros de cúbit físicos
Cuando el estimador de recursos modela las suposiciones de cúbit físico, usa dos conjuntos de instrucciones físicas diferentes para operar los cúbits. El conjunto de instrucciones físicas puede ser basado en puertas o de Majorana. Un conjunto de instrucciones basado en puertas proporciona una medida de un solo cúbit, puertas de un solo cúbit (por ejemplo, puertas T) y puertas de dos cúbits. Un conjunto de instrucciones de Majorana proporciona una puerta T física, una medida de un solo cúbit y operaciones de medida conjunta de dos cúbits.
Puede elegir entre seis parámetros de cúbit predefinidos, cuatro de los cuales tienen conjuntos de instrucciones basados en puertas y dos tienen un conjunto de instrucciones de Majorana. Estos modelos de cúbits abarcan una gama de tiempos de operación y tasas de error, lo que permite una exploración suficiente de los costos de recursos necesarios para lograr aplicaciones cuánticas prácticas.
Modelo de cúbits | Instrucción física | Descripción |
---|---|---|
qubit_gate_ns_e3 , qubit_gate_ns_e4 |
Basado en puertas | Los tiempos de operación y las fidelidades pueden corresponder a versiones futuras de cúbits transmon superconductores, o cúbits de número, que normalmente tienen tiempos de funcionamiento en el régimen nanosegundo. Para estos cúbits, se supone que las operaciones de puerta y medición toman 50 ns y 100 n, respectivamente. Se supone que las tasas de error de un solo cúbit y de dos cúbits son $10^{-3}$ como realistas targety $10^{-4}$ como optimista target para un sistema de escalado vertical. |
qubit_gate_us_e3 , qubit_gate_us_e4 |
Basado en puertas | Los tiempos de operación y las fidelidades pueden corresponder a versiones futuras de cúbits basados en iones, que normalmente tienen tiempos de operaciones en el régimen microsegundo. En función de las suposiciones típicas para cúbits de ion, se supone que las operaciones de puerta y medición toman 100 μs. La tasa de errores para las puertas clifford de un solo cúbit es de $10^{-3}$ como realista target y $10^$ como optimistatarget, mientras que la tasa de errores para las puertas no clifford (puerta T) de un solo cúbit es $10^{-4}{-6}$. Para las puertas de dos cúbits, la tasa de errores es $10^{-3}$ como realista target y $10^{-4}$ como optimista target. |
qubit_maj_ns_e4 , qubit_maj_ns_e6 |
Majorana | Los tiempos de operación y las fidelidades pueden corresponder a versiones mejoradas futuras de cúbits de Majorana. Para estos cúbits, se supone que las operaciones de medición y puerta toman 100 ns. Para tener en cuenta la protección topológica en el hardware, se supone que las tasas de error de medición conjunta de un solo cúbit y dos cúbits (velocidades de error clifford) son $10^{-4}$ como realista targety $10^{-6}$ como optimista target. Las operaciones que no son clifford en esta arquitectura no tienen protección topológica, la tasa de errores de las puertas T físicas que no son Clifford es del 5 %. |
Para especificar parámetros de cúbit predefinidos, seleccione el nombre del modelo de cúbits para el qubitParams
parámetro en los parámetros de nivel superior, por ejemplo:
{
"qubitParams": { "name": "qubit_gate_ns_e3" }
}
Nota
Si no se proporciona ningún valor para el qubitParams
parámetro , qubit_gate_ns_e3
se elige como parámetros de cúbit predeterminados.
Como referencia, los parámetros de cúbit predefinidos completos son los siguientes:
{
"qubitParams": {
"name": "qubit_gate_ns_e3",
"instructionSet": "GateBased",
"oneQubitMeasurementTime": "100 ns",
"oneQubitGateTime": "50 ns",
"twoQubitGateTime": "50 ns",
"tGateTime": "50 ns",
"oneQubitMeasurementErrorRate": 1e-3,
"oneQubitGateErrorRate": 1e-3,
"twoQubitGateErrorRate": 1e-3,
"tGateErrorRate": 1e-3
}
}
{
"qubitParams": {
"name": "qubit_gate_ns_e4",
"instructionSet": "GateBased",
"oneQubitMeasurementTime": "100 ns",
"oneQubitGateTime": "50 ns",
"twoQubitGateTime": "50 ns",
"tGateTime": "50 ns",
"oneQubitMeasurementErrorRate": 1e-4,
"oneQubitGateErrorRate": 1e-4,
"twoQubitGateErrorRate": 1e-4,
"tGateErrorRate": 1e-4
}
}
{
"qubitParams": {
"name": "qubit_gate_us_e3",
"instructionSet": "GateBased",
"oneQubitMeasurementTime": "100 µs",
"oneQubitGateTime": "100 µs",
"twoQubitGateTime": "100 µs",
"tGateTime": "100 µs",
"oneQubitMeasurementErrorRate": 1e-3,
"oneQubitGateErrorRate": 1e-3,
"twoQubitGateErrorRate": 1e-3,
"tGateErrorRate": 1e-6
}
}
{
"qubitParams": {
"name": "qubit_gate_us_e4",
"instructionSet": "GateBased",
"oneQubitMeasurementTime": "100 µs",
"oneQubitGateTime": "100 µs",
"twoQubitGateTime": "100 µs",
"tGateTime": "100 µs",
"oneQubitMeasurementErrorRate": 1e-4,
"oneQubitGateErrorRate": 1e-4,
"twoQubitGateErrorRate": 1e-4,
"tGateErrorRate": 1e-6
}
}
{
"qubitParams": {
"name": "qubit_maj_ns_e4",
"instructionSet": "Majorana",
"oneQubitMeasurementTime": "100 ns",
"twoQubitJointMeasurementTime": "100 ns",
"tGateTime": "100 ns",
"oneQubitMeasurementErrorRate": 1e-4,
"twoQubitJointMeasurementErrorRate": 1e-4,
"tGateErrorRate": 0.05
}
}
{
"qubitParams": {
"name": "qubit_maj_ns_e6",
"instructionSet": "Majorana",
"oneQubitMeasurementTime": "100 ns",
"twoQubitJointMeasurementTime": "100 ns",
"tGateTime": "100 ns",
"oneQubitMeasurementErrorRate": 1e-6,
"twoQubitJointMeasurementErrorRate": 1e-6,
"tGateErrorRate": 0.01
}
}
Personalización de parámetros de cúbit predefinidos
Puede personalizar los parámetros de cúbit predefinidos especificando el nombre y actualizando cualquiera de los demás valores. Por ejemplo, para reducir la tasa de errores de la medida conjunta de dos cúbits en qubit_maj_ns_e4
, escriba:
{
"qubitParams": {
"name": "qubit_maj_ns_e4",
"twoQubitJointMeasurementErrorRate": 1e-5
}
}
Parámetros de cúbit para cúbits basados en puertas
Campo | Descripción |
---|---|
name |
Nombre del modelo de cúbits |
instructionSet |
Tecnología de cúbit subyacente (basada en puertas o Majorana) |
oneQubitMeasurementTime |
Tiempo de operación para la medición de un solo cúbit ($t_{\rm meas}$) en ns |
oneQubitGateTime |
Tiempo de operación para la puerta de un solo cúbit ($t_{\rm gate}$) en ns |
twoQubitGateTime |
Tiempo de operación para la puerta de dos cúbits en ns |
tGateTime |
Tiempo de operación para la puerta no Clifford de un solo cúbit en ns |
oneQubitMeasurementErrorRate |
Tasa de errores para la medición de un solo cúbit |
oneQubitGateErrorRate |
Tasa de errores para la puerta clifford de un solo cúbit ($p$) |
twoQubitGateErrorRate |
Tasa de errores para la puerta clifford de dos cúbits |
tGateErrorRate |
Tasa de errores para preparar el estado no Clifford de un solo cúbit ($p_T$) |
idleErrorRate |
Tasa de errores correspondiente al idling |
Una plantilla mínima para el conjunto de instrucciones basado en puertas con todos los valores necesarios es:
{
"qubitParams": {
"instructionSet": "GateBased",
"oneQubitMeasurementTime": <time string>,
"oneQubitGateTime": <time string>,
"oneQubitMeasurementErrorRate": <double>,
"oneQubitGateErrorRate": <double>
}
}
Cuando no se especifica, los valores de twoQubitGateTime
y tGateTime
de forma predeterminada son oneQubitGateTime
, los valores de twoQubitGateErrorRate
y tGateErrorRate
el valor predeterminado oneQubitGateErrorRate
es y el valor predeterminado oneQubitMeasurementErrorRate
de idleErrorRate
para .
Parámetros de cúbit para cúbits de Majorana
Campo | Descripción |
---|---|
name |
Nombre del modelo de cúbits |
instructionSet |
Tecnología de cúbit subyacente (basada en puertas o Majorana) |
oneQubitMeasurementTime |
Tiempo de operación para la medición de un solo cúbit ($t_{\rm meas}$) en ns |
twoQubitJointMeasurementTime |
Tiempo de operación para la medición de dos cúbits en ns |
tGateTime |
Tiempo de operación para la puerta no Clifford de un solo cúbit en ns |
oneQubitMeasurementErrorRate |
Tasa de errores para la medición de un solo cúbit |
twoQubitJointMeasurementErrorRate |
Tasa de errores para la medición de dos cúbits |
tGateErrorRate |
Tasa de errores para preparar el estado no Clifford de un solo cúbit ($p_T$) |
idleErrorRate |
Tasa de errores correspondiente al idling |
Una plantilla mínima para el conjunto de instrucciones basado en Majorana con todos los valores necesarios es:
{
"qubitParams": {
"instructionSet": "Majorana",
"oneQubitMeasurementTime": <time string>,
"oneQubitMeasurementErrorRate": <double>,
"tGateErrorRate": <double>
}
}
Para oneQubitMeasurementErrorRate
y twoQubitJointMeasurementErrorRate
, puede especificar las tasas de error correspondientes a lecturas de medidas, readout
y procesamiento de medidas, process
. Estos valores pueden ser <double>
números o pares de números.
{
"oneQubitMeasurementErrorRate": {
"process": <double>,
"readout": <double>
}
}
y
{
"twoQubitJointMeasurementErrorRate": {
"process": <double>,
"readout": <double>
}
}
[|NOTA] Si especifica un valor numérico único para las tasas de error de un solo cúbit y de dos cúbits en la medida de cúbits de Majorana, las tasas de error de lectura y proceso pueden ser iguales.
Cuando no se especifica, los valores de twoQubitJointMeasurementTime
y de forma predeterminada son oneQubitGateTime
, y el valor de twoQubitJointMeasurementErrorRate
(tanto como readout
process
) y idleErrorRate
el valor predeterminado de oneQubitMeasurementErrorRate
tGateTime
.
Importante
Todos los valores que no se especifican tomarán un valor predeterminado, por ejemplo, especificando "qubit": {"oneQubitGateTime":"200 ns"}
modelarán un cúbit basado en la puerta en el que el tiempo de la puerta de dos cúbits y el tiempo de la puerta de un cúbit son 200 ns. En el caso de las unidades, debe especificar cadenas de tiempo, que son números de punto flotante de precisión doble, seguidos de un espacio y la unidad de tiempo para estos valores, siempre que sea posible que los sufijos de hora sean ns
, µs
(o us
), ms
y s
.
Esquemas de corrección de errores cuánticos
Para ejecutar aplicaciones cuánticas de escala práctica, las operaciones cuánticas deben tener tasas de error bajas. Esta tasa targets de errores suele estar fuera de las funcionalidades de los cúbits físicos sin procesar. Para superar esta limitación, la corrección cuántica de errores (QEC) y el cálculo tolerante a errores son dos técnicas cruciales que forman los bloques de creación de equipos cuánticos a gran escala. En primer lugar, QEC nos permite componer varios cúbits físicos propensos a errores y crear un cúbit lógico más confiable que conserva la información cuántica mejor que los cúbits físicos subyacentes.
La distancia del código de corrección de errores (o simplemente la distancia de código para abreviar) es un parámetro que controla el número de errores que se pueden corregir. Por lo tanto, la tasa de errores de los cúbits lógicos y el número de cúbits físicos necesarios para codificarlos. Tanto la precisión como el número de cúbits físicos aumentan con la distancia del código. El objetivo es encontrar la distancia mínima del código que puede lograr la tasa de errores necesaria establecida para una aplicación determinada.
El estimador de recursos usa la fórmula siguiente para modelar tasas de errores lógicos mediante un modelo exponencial,
$$ P = a\left(\frac{p}{p^*}\right)^{\frac{d+1}{2}} $$
donde $d$ es la distancia del código, $p$ es la tasa de errores físicos y $p^*$ es el umbral de corrección de errores cuánticos. La tasa de errores físicos $p$ se extrae de los parámetros de cúbit como la tasa de errores en el peor de los casos, cualquier operación física de Clifford en el dispositivo.
En concreto, $p = {}$ max(oneQubitMeasurementErrorRate
, oneQubitGateErrorRate
, twoQubitGateErrorRate
) para parámetros de cúbit con un conjunto de instrucciones basado en la puerta y $p = {}$ max(oneQubitMeasurementErrorRate
, twoQubitJointMeasurementErrorRate
) para parámetros de cúbit con un conjunto de instrucciones Majorana. Normalmente, los esquemas de QEC tienen un umbral de tasa de errores $p^*$ por debajo del cual la corrección de errores suprime los errores.
Protocolo QEC | Instrucción de cúbit físico | Descripción |
---|---|---|
surface_code |
GateBased y Majorana | El código de superficie basado en puertas se basa en arXiv:1208.0928 y arXiv:1009.3686. El código de superficie majorana se basa en arXiv:1909.03002 y arXiv:2007.00307. |
floquet_code |
Majorana | El código de floquet se basa en arXiv:2202.11829. |
Puede especificar esquemas QEC predefinidos seleccionando el nombre del esquema QEC para el qecScheme
parámetro en los parámetros de nivel superior, por ejemplo:
{
"qecScheme": { "name": "surface_code" }
}
Nota
Si no se proporciona ningún valor para el qecScheme
parámetro , surface_code
para el cúbit basado en la puerta se elige como el QEC predeterminado.
Los parámetros exactos de cada esquema QEC predefinido (incluido un factor previo de cruce $a$, que se puede extraer numéricamente para simulaciones) son los siguientes.
{
"qubitParams": {
"instructionSet": "GateBased",
}
"qecScheme": {
"name": "surface_code",
"errorCorrectionThreshold": 0.01,
"crossingPrefactor": 0.03,
"logicalCycleTime": "(4 * twoQubitGateTime + 2 * oneQubitMeasurementTime) * codeDistance",
"physicalQubitsPerLogicalQubit": "2 * codeDistance * codeDistance"
}
}
{
"qubitParams": {
"instructionSet": "Majorana",
}
"qecScheme": {
"name": "surface_code",
"errorCorrectionThreshold": 0.0015,
"crossingPrefactor": 0.08,
"logicalCycleTime": "20 * oneQubitMeasurementTime * codeDistance",
"physicalQubitsPerLogicalQubit": "2 * codeDistance * codeDistance"
}
}
{
"qubitParams": {
"instructionSet": "Majorana",
}
"qecScheme": {
"name": "floquet_code",
"errorCorrectionThreshold": 0.01,
"crossingPrefactor": 0.07,
"logicalCycleTime": "3 * oneQubitMeasurementTime * codeDistance",
"physicalQubitsPerLogicalQubit": "4 * codeDistance * codeDistance + 8 * (codeDistance - 1)"
}
}
Personalización de esquemas de QEC predefinidos
Puede personalizar esquemas de QEC predefinidos especificando el nombre y actualizando cualquiera de los demás valores. Por ejemplo, para aumentar el factor previo de cruce en el código de floquet, escriba:
{
"qecScheme": {
"name": "floquet_code",
// only override this value
"crossingPrefactor": 0.08
}
}
Personalización de los esquemas de QEC
El estimador de recursos puede abstraer un esquema QEC personalizado basado en la fórmula anterior proporcionando valores para el crossingPrefactor
$a$ y el errorCorrectionThreshold
$p^*$. Además, debe especificar , logicalCycleTime
es decir, el tiempo para ejecutar una sola operación lógica, que depende de la distancia del código y de las suposiciones de tiempo de operación física de los cúbits físicos subyacentes. Por último, una segunda fórmula calcula , physicalQubitsPerLogicalQubit
es decir, el número de cúbits físicos necesarios para codificar un cúbit lógico en función de la distancia del código.
Puede usar el código siguiente como plantilla para esquemas QEC:
{
"qecScheme": {
"crossingPrefactor": <double>,
"errorCorrectionThreshold": <double>,
"logicalCycleTime": <formula string>,
"physicalQubitsPerLogicalQubit": <formula string>
}
}
Dentro de las fórmulas, puede usar las variables oneQubitGateTime
, twoQubitGateTime
, oneQubitMeasurementTime
y twoQubitJointMeasurementTime
, cuyos valores se toman del campo correspondiente de los parámetros de cúbit físico, así como la variable eccDistance
para la distancia de código calculada para el cúbit lógico, en función de las propiedades de cúbit físico, el umbral de corrección de errores y el prefactor de cruce. Las variables de tiempo y eccDistance
se pueden usar para describir la logicalCycleTime
fórmula. Para la fórmula physicalQubitsPerLogicalQubit
solo eccDistance
se puede usar .
Presupuesto de errores
El presupuesto total de errores $\epsilon$ establece el error tolerado general para el algoritmo, es decir, la probabilidad de error permitida del algoritmo. Su valor global debe estar comprendido entre 0 y 1 y el valor predeterminado es 0,001, que corresponde al 0,1 %. En otras palabras, el algoritmo puede producir un error máximo de una vez en 1000 ejecuciones. Este parámetro es muy específico de la aplicación.
Por ejemplo, si ejecuta el algoritmo de Shor para factorizar enteros, se puede tolerar un valor grande para el presupuesto de errores, ya que se puede comprobar que las salidas son realmente los factores primos de la entrada. Por otro lado, es posible que se necesite un presupuesto de errores más pequeño en el caso de un algoritmo que resuelva un problema con una solución, que no se puede comprobar de forma eficaz.
Puede especificar el presupuesto de errores estableciendo un número entre 0 y 1, por ejemplo:
{
"errorBudget": 0.1
}
El presupuesto de errores corresponde a la suma de tres partes:
$$ \epsilon = \epsilon_{\log} + \epsilon_{\rm dis} + \epsilon_{\rm syn} $$
Si no se especifica más, el presupuesto de errores $\epsilon$ se distribuye uniformemente y se aplica a los errores $\epsilon_{\log}$ para implementar cúbits lógicos, el presupuesto de errores $\epsilon_{\rm dis}$ produce estados T a través de la destilación y un presupuesto de errores $\epsilon_{\rm syn}$ para sintetizar puertas de rotación con ángulos arbitrarios.
Tenga en cuenta que para la destilación y la síntesis de rotación, los presupuestos de errores respectivos $\epsilon_{\rm dis}$ y $\epsilon_{\rm syn}$ se distribuyen uniformemente entre todos los estados T necesarios y todas las puertas de rotación necesarias, respectivamente. Si no hay puertas de rotación en el algoritmo de entrada, el presupuesto de errores se distribuye uniformemente a errores lógicos y errores de estado T.
Además, puede especificar individualmente cada componente del conjunto de errores. La suma de todos los valores debe ser 1.
{
"errorBudget": {
"logical": <double>, // Required
"tStates": <double>, // Optional
"rotations": <double> // Optional
}
}
Si un algoritmo cuántico no contiene estados T o rotaciones, los valores de tstates
y rotations
pueden ser 0 respectivamente.
Restricciones
Puede usar constraints
parámetros para aplicar restricciones en el nivel de componente de fábrica de T . Al ajustar las restricciones, puede optimizar las estimaciones para reducir el número de cúbits o para reducir el runtime.
{
"constraints": {
"logicalDepthFactor": <double>, // control execution time
"maxTFactories": <int>, // control number of T factories
"maxDuration": <time string>, // control runtime
"maxPhysicalQubits": <int> // control number of physical qubits
}
}
Profundidad lógica: Si
logicalDepthFactor
tiene un valor mayor que 1, el número inicial de ciclos lógicos, también denominado profundidad lógica, se multiplica por este número. Al reducir la profundidad lógica, puede aumentar el número de invocación de la fábrica de T en un tiempo determinado, lo que da lugar a menos copias de fábrica T necesarias para producir el mismo número de estados T. Al reducir el número de copias de fábrica de T, el tiempo de ejecución del algoritmo aumenta en consecuencia. El factor de escala del tiempo de ejecución total puede ser mayor, ya que la tasa de errores lógicas necesaria aumenta debido al número adicional de ciclos.Número máximo de copias de fábrica T: Puede establecer un límite en el número de copias de fábrica de T mediante
maxTFactories
. El estimador de recursos determina los recursos necesarios seleccionando el número óptimo de copias de fábrica de T que minimiza el número de cúbits físicos usados, sin tener en cuenta la sobrecarga de tiempo. ElmaxTFactories
parámetro limita el número máximo de copias y, por tanto, ajusta el número de ciclos lógicos en consecuencia. Para más información, consulte Estimación física de fábrica de T.Tiempo de ejecución máximo y número máximo de cúbits físicos: Puede especificar la duración máxima del tiempo de ejecución del programa cuántico o el número máximo de cúbits físicos que usará el algoritmo con
maxDuration
los parámetros ymaxPhysicalQubits
. El estimador de recursos acepta solo una de esas restricciones en el momento, pero no dos. Si se especifica uno de ellos, el estimador de recursos intenta encontrar la mejor estimación para la gratuita entre las soluciones restringidas por el número máximo especificado. Si el valor proporcionado es demasiado pequeño para encontrar una solución feasable, el estimador de recursos devuelve un error. Si no se especifican nimaxDuration
maxPhysicalQubits
restricciones, el estimador de recursos tiene como objetivo encontrar una solución con el menor tiempo.
Sugerencia
Puede usar maxDuration
y maxPhysicalQubits
para influir en el espacio de la solución, lo que podría encontrar soluciones con un tiempo de ejecución más largo, pero un número menor de cúbits en comparación con las soluciones sin estas restricciones. Existe un equilibrio entre el tiempo de ejecución y el número de cúbits, y esta compensación se puede administrar eficazmente para algunos algoritmos, con efectos variables en distintos algoritmos. En la tabla IV de [arXiv:2211.07629] se muestra el uso efectivo del equilibrio entre el número de cúbits y el tiempo de ejecución para los algoritmos de dinámica cuántica. Se observa que los algoritmos de química cuántica y factorización tienen relaciones de factor pequeñas, lo que da lugar a intervalos estrechos tanto para el número de cúbits como para el tiempo de ejecución. Por lo tanto, los intervalos para el número de cúbits y el tiempo de ejecución en estos algoritmos son bastante estrechos.
Unidades de destilación
Puede proporcionar especificaciones personalizadas para los algoritmos de destilación de fábricas de T con el distillationUnitSpecifications
parámetro . La especificación puede ser predefinida o personalizada. Para especificar una especificación predefinida, seleccione el nombre de la unidad de destilación: 15-1 RM
o 15-1 space-efficient
.
{
"distillationUnitSpecifications": [
"name": <string>,
]
}
En ambos casos, la notación 15-1 significa 15 estados de entrada T y 1 estado de salida T. La unidad de destilación 15-1 space-efficient
usa menos cúbits que 15-1 RM
, pero requiere más runtime. Para obtener más información, consulte Tabla VI.
Nota
El uso de unidades de destilación predefinidas proporciona un mejor rendimiento en comparación con los personalizados.
Personalización de las unidades de destilación
Puede definir las unidades de destilación personalizadas de la siguiente manera:
{
"distillationUnitSpecifications": [
"displayName": <string>,
"numInputTs": <int>,
"numOutputTs": <int>,
"failureProbabilityFormula": <string>,
"outputErrorRateFormula": <string>,
"physicalQubitSpecification": <protocol specific parameters>,
"logicalQubitSpecification": <protocol specific parameters>,
"logicalQubitSpecificationFirstRoundOverride": <protocol specific parameters>, // Only if "logicalQubitSpecification"
]
}
Se espera que todos los parámetros numéricos sean positivos. displayName
especifica cómo se mostrará la unidad de destilación en los resultados de salida.
Se debe proporcionar al menos uno de los parámetros physicalQubitSpecification
o logicalQubitSpecification
. Si solo se proporciona el anterior, la unidad de destilación se puede aplicar a cúbits físicos. Si solo se proporciona este último, la unidad de destilación se puede aplicar a cúbits lógicos. Si se proporcionan ambos, la unidad de destilación se puede aplicar a ambos tipos de cúbits.
El parámetro logicalQubitSpecificationFirstRoundOverride
solo se puede proporcionar si logicalQubitSpecification
se especifica . Si es así, invalida los valores de logicalQubitSpecification
en caso de aplicarse en la primera ronda de destilación. El valor <protocol specific parameters>
necesario para logicalQubitSpecificationFirstRoundOverride
debe seguir el esquema :
{
"numUnitQubits": <int>,
"durationInQubitCycleTime": <double>
}
Las fórmulas de failureProbabilityFormula
y outputErrorRateFormula
son fórmulas personalizadas con operaciones aritméticas básicas, constantes y solo tres parámetros:
cliffordErrorRate
, también se indica comoc
.readoutErrorRate
, también se indica comor
.inputErrorRate
, también se indica comoz
.
Consulte los ejemplos siguientes de fórmulas personalizadas con notación larga y corta. En estos ejemplos se muestran las fórmulas usadas de forma predeterminada en la implementación estándar.
Parámetro | Fórmula larga | Fórmula corta |
---|---|---|
failureProbabilityFormula |
{"Custom": "15.0 * inputErrorRate + 356.0 * cliffordErrorRate"} |
{"Custom": "15.0 * z + 356.0 * c"} |
outputErrorRateFormula |
{"Custom": "35.0 * inputErrorRate ^ 3 + 7.1 * cliffordErrorRate"} |
{"Custom": "35.0 * z ^ 3 + 7.1 * c"} |
Pasos siguientes
- Descripción de los resultados del estimador de recursos
- Obtenga información sobre cómo funciona el estimador de recursos
- Sacar el máximo partido del estimador de recursos
- Ejecución de la primera estimación de recursos
- Uso de distintos SDK e IDE con el estimador de recursos
- Tutorial: Envío de un programa QIR al estimador de recursos
- Ejemplo: Estimación de recursos con Q# y VS Code