Notas de la versión de Qiskit 0.36
0.36.2
Terra 0.20.2
Preludio
Qiskit Terra 0.20.2 es una versión de corrección de errores, que aborda algunos problemas menores identificados desde la última versión del parche.
Corrección de errores
-
Se ha corregido un problema con
BackendV2-basadas en clases backend falsas del móduloqiskit.providers.fake_providercomoFakeMontrealV2, donde los valores de los parámetrosdtmydty el atributo asociadoTarget.dtno se convertían correctamente a segundos. Esto causaría problemas al utilizar estos backends falsos con la programación. Ver #8018. -
marginal_counts()ahora tendrá éxito cuando se le pida que margine la memoria con un parámetroindicesque contenga elementos distintos de cero. Anteriormente, los disparos cuya representación hexadecimal del resultado era suficientemente pequeña podían plantear unValueError. Ver #8044. -
El exportador OpenQASM 3 (
qiskit.qasm3) mostrará ahora las declaracionesinputooutputantes que las declaraciones de puerta. Esto es más coherente con la gramática ANTLR de referencia actual del equipo de OpenQASM 3. Ver #7964. -
Se ha corregido un error en el
RZXCalibrationBuilderpor el que la amplitud del pulso de resonancia cruzada escalada podía parecer parametrizada incluso después de la asignación. Esto podría hacer que las herramientas de visualización de pulsos utilizaran el formato parametrizado en lugar del numérico esperado. Ver #8031. -
Se ha corregido un problema con la función
transpile()cuando se ejecutaba con un backend basado enBackendV2-y se establecía el argumento de la palabra clavescheduling_method. Anteriormente, la función no procesaba correctamente las duraciones por defecto de las instrucciones soportadas por el backend, lo que provocaba un error. -
Se ha corregido un error en el
RZXCalibrationBuilderque provocaba que los pulsos se construyeran a veces con duraciones incorrectas. Ver #7994. -
El
SabreSwaptranspiler pass, utilizado entranspile()cuandorouting_method="sabre"está configurado, ya no eliminará esporádicamente las puertas condicionadas clásicamente y sus sucesoras de los circuitos durante la fase de enrutamiento de la transpilación. Ver #8040. -
Statevectorpermitirá ahora la iteración directa a través de sus valores (comofor coefficient in statevector) e informará correctamente de su longitud enlen. Antes intentaba acceder a datos fuera de los límites y lanzaba un errorQiskitError. Ver #8039.
Aer 0.10.4
No cambia
Ignis 0.7.1
Preludio
Se trata de una corrección de errores que soluciona principalmente un problema de empaquetado que provocaba que el directorio docs/ , que contiene los archivos fuente utilizados para crear la documentación de qiskit-ignis, se incluyera en el paquete Python.
IBM Proveedor Q 0.19.1
No cambia
0.36.1
Terra 0.20.1
Preludio
Qiskit Terra 0.20.1 es una versión de corrección de errores que resuelve los problemas identificados en la versión 0.20.0.
Problemas conocidos
-
QPY deserialización con la
qpy.load()de un objeto instanciado directamenteUCPauliRotGateen un circuito fallará porque el argumento del eje de rotación de la clase no se almacena en un lugar estándar. Para evitarlo, puedes utilizar las subclases:UCRXGate,UCRYGateoUCRZGate(dependiendo de si estás utilizando un eje de rotación de"X","Y", o"Z"respectivamente) que incorpora el eje de rotación en el constructor de la clase y funcionará correctamente en QPY. -
Desde su introducción original en Qiskit Terra 0.20,
XXPlusYYGateha utilizado una convención de ángulo negativo en comparación con todas las demás puertas de rotación. En Qiskit Terra 0.21, esto se corregirá para que sea coherente con las demás puertas de rotación. Esto no afecta a ninguna otra puerta de rotación, ni aXXMinusYYGate.
Corrección de errores
-
Fijo
Clifford,PauliyCNOTDihedralinicialización de operadores de circuitos compatibles que contienenDelayinstrucciones. Estas instrucciones se tratan como identidades al convertirlas en operadores. -
Se ha corregido un problema por el que la función
eval_observables()provocaba un error si su argumentoquantum_stateera del tipoStateFn.eval_observablesahora admite correctamente todos los tipos de entrada indicados por sus sugerencias de tipo. -
Solucionado un problema con la función de visualización
dag_drawer()y el métodoDAGCircuit.draw()donde anteriormente el cajón fallaba al intentar generar una visualización para unDAGCircuitque contenía un objetoQubitoClbitque no formaba parte deQuantumRegisteroClassicalRegister. Corregido #7915. -
Corregida la validación de parámetros para la clase
Drag. Anteriormente, no era sensible a los valores beta grandes con signo negativo, lo que podía haber dado lugar a muestras de forma de onda con un valor máximo superior al límite de amplitud de 1.0. -
La clase
QuantumInstanceutilizada por muchos algoritmos (comoVQE) codificaba de forma rígida el valor de un sleep mientras esperaba en bucle a que se actualizara el estado del trabajo. Ahora respeta el valor de reposo configurado según el atributowaiten el inicializador deQuantumInstance. -
Se ha solucionado un problema con la función
schedulepor el que las personas que especificaban unlistde objetosQuantumCircuitcon una única entrada se devolvía incorrectamente un único objetoScheduleen lugar de unlist. -
Se ha solucionado un problema con la función de visualización de
plot_error_mapque impedía que funcionara cuando se ejecutaba con un backend que tenía definido un error de lectura en el backend proporcionadoBackendPropertieso cuando se ejecutaba con unBackendV2backend. Corregido #7879. -
Se ha corregido un error que podía dar lugar a un tiempo de ejecución exponencial y a la no terminación cuando una
Paulial métodoinit_observables(). -
Fijo
SabreSwapy, por extensióntranspile()conoptimization_level=3, reordenando ocasionalmente las mediciones de forma no válida. Antes, si dos medidas escribían en el mismo bit clásico,SabreSwappodía (dependiendo del mapa de acoplamiento) reordenarlas para producir un circuito no equivalente. Este comportamiento era estocástico, por lo que puede no haber aparecido de forma fiable. Corregido #7950 -
El
SabreSwaptranspiler pass, y por extensiónSabreLayoutytranspile()enoptimization_level=3, dispone ahora de un mecanismo de escape para garantizar que nunca pueda quedarse atascado en un bucle infinito. Antes, ciertas entradas podían, con mucha mala suerte, quedarse atascadas en un mínimo local estable del espacio de búsqueda y la pasada nunca avanzaría más. Ahora forzará una serie de intercambios que permitan continuar el enrutamiento si detecta que no ha avanzado recientemente. Corregido #7707. -
Se ha corregido un problema con la deserialización de QPY a través de la función
qpy.load()de la funciónUCRXGate,UCRYGateyUCRZGate. Anteriormente, un archivo QPY que contenía alguna de estas puertas daba error al intentar cargar el archivo. Corregido #7847.
Aer 0.10.4
No cambia
Ignis 0.7.0
No cambia
IBM Proveedor Q 0.19.1
0.19.1
Corrección de errores
- PR #1129 actualiza el método
least_busy()para que ya no admita BaseBackend como tipo válido de entrada o salida, ya que hace tiempo que está obsoleto en qiskit-terra y ha sido eliminado recientemente.
0.36.0
Terra 0.20.0
No cambia
Aer 0.10.4
Notas de actualización
- Qiskit Aer ya no se compila con optimizaciones inseguras de coma flotante. Aunque la mayoría de los efectos deberían haberse localizado en Qiskit Aer, algunos aspectos del manejo subnormal pueden haberse filtrado previamente al código de usuario por la configuración incorrecta del modo "flush to zero" por parte de la biblioteca. Esto ya no ocurrirá.
Corrección de errores
-
Arreglar el transpilador de bloqueo de caché para que reconozca que la superop está bloqueada en caché. Esta es la solución para el problema 1479 <https://github.com/Qiskit/qiskit-aer/issues/1479> ahora density_matrix con modelos de ruido puede ser paralelizado. Se añade una nueva prueba, test_noise.TestNoise.test_kraus_gate_noise_on_QFT_cache_blocking para verificar este problema. Además, esta corrección incluye la corrección del problema 1483 <https://github.com/Qiskit/qiskit-aer/issues/1483> descubierto mediante la adición de un nuevo caso de prueba. Esto fija la medida sobre trozos para el vector de estado.
-
Corrige un error en
NoiseModel.from_backend()que provocaba un error cuando T2 valor superior a 2 * T1 era suministrado por el backend. Después de esta corrección, pasa a truncar T2 valor hasta 2 \ * T1 y emitir una advertencia al usuario si trunca. El error se introdujo en #1391 y, antes de eso,NoiseModel.from_backend()había truncado el valor de T2 hasta 2 * T1 silenciosamente.Para más detalles, véase el número 1464.
-
device=Thrust era muy lento para un número pequeño de qubits porque siempre se aplicaba OpenMP threading. Esta corrección se aplica a OpenMP threads igual que device=CPU usando statevector_parallel_threshold.
-
Qiskit Aer ya no establecerá el modo de punto flotante a "ras a cero" cuando se carga. Los usuarios posteriores pueden haber visto previamente advertencias de Numpy como:
El valor de la subnormalidad más pequeña para el tipo <class ‘numpy.float64’> es cero.
Ahora ya no se emitirán, y el manejo del punto flotante será correcto.
-
Se ha corregido un posible problema con la ejecución de simulaciones en circuitos que tienen el atributo
QuantumCircuit.metadataestablecido. El atributometadatapuede ser cualquier diccionario python y anteriormente qiskit-aer intentaba serializar JSON el contenido del atributo para procesarlo con el resto de la entrada del circuito, incluso si el contenido no era serializable JSON. Esto ya no ocurre porque el atributoQuantumCircuit.metadatano se utiliza para ejecutar la simulación, por lo que ahora los contenidos no se serializan y en su lugar se adjuntan directamente al objetoqiskit.result.Resultsin intentar serializar el contenido en JSON. Corregido #1435
Ignis 0.7.0
No cambia
IBM Proveedor Q 0.19.0
Nuevas funciones
- El paquete qiskit-ibmq-provider es ahora compatible con las funciones de IBM Quantum LiveData. Estas funciones permiten a los usuarios observar el comportamiento en tiempo real de los backends de IBM Quantum mientras se ejecutan los trabajos. En concreto, el proveedor incluye ahora una nueva pestaña en el widget del backend relacionado con Jupyter y admite la ejecución de trabajos (a través del método
qiskit.providers.ibmq.IBMQBackend.run()) con el parámetro live_data_enabled=True en los backends permitidos de IBM Quantum. - Ahora puede especificar un nivel de registro diferente en la palabra clave
optionsal enviar un trabajo Qiskit Runtime con el métodoqiskit.providers.ibmq.runtime.IBMRuntimeService.run().
Notas de actualización
- Python 3.6 se ha suprimido el soporte, ya que ha llegado al final de su vida útil en diciembre de 2021.
- qiskit.providers.ibmq.random el servicio de números aleatorios que se utilizaba para acceder al extractor de aleatoriedad CQC ya no es compatible y ha sido eliminado.
Notas sobre características en desuso
- La palabra clave
imageen el métodoqiskit.providers.ibmq.runtime.IBMRuntimeService.run()está obsoleta. En su lugar, debe especificar la imagen que desea utilizar en la palabra claveoptions.
Corrección de errores
- Soluciona el problema #190. Ahora
qiskit.providers.ibmq.runtime.RuntimeEncoderyqiskit.providers.ibmq.runtime.RuntimeDecoderhan sido actualizados para manejar instancias de la clase Instrucción. - Corrige el problema #74 por el que las ndarrays de numpy con tipos de objeto no podían serializarse.
qiskit.providers.ibmq.runtime.RuntimeEncoderyqiskit.providers.ibmq.runtime.RuntimeDecoderse han actualizado para manejar estos ndarrays.