Notas de la versión de Qiskit 0.24
0.24.1
Terra 0.16.4
No cambia
Aer 0.7.6
No cambia
Ignis 0.5.2
No cambia
Aqua 0.8.2
No cambia
IBM Proveedor Q 0.12.2
Notas de actualización
qiskit.providers.ibmq.IBMQBackend.defaults()ahora devuelve los valores predeterminados de pulso para el backend si el backend soporta pulso. Sin embargo, es posible que su proveedor no admita el pulso aunque el backend sí lo haga. La banderaopen_pulseen la configuración del backend indica si el proveedor lo soporta.
0.24.0
Terra 0.16.4
No cambia
Aer 0.7.6
Nuevas funciones
- Esta es la primera versión de qiskit-aer que publica binarios precompilados en PyPI para Linux en aarch64 ( arm64 ). A partir de esta versión, se publicarán y soportarán los paquetes Linux aarch64.
Corrección de errores
- Se corrige un error #1153 por el que siempre se aplicaba ruido en las compuertas condicionales independientemente de si la compuerta condicional se aplicaba realmente en función del valor del registro clásico. Ahora el ruido en una puerta condicional sólo se aplicará en el caso en que se aplique la puerta condicional.
- Solucionado el problema nº 1126 : error al informar de la medición de un único qubit. El error se producía al copiar el valor medido en la estructura de datos de salida.
- Anteriormente existía un desajuste entre el número de qubits que los objetos Aer backend indicaban por defecto que eran compatibles y el número máximo de qubits que el simulador podía ejecutar realmente. Esto se debió a un desajuste entre el código Python utilizado para calcular el número máximo de qubits y el código C++ utilizado para una comprobación en tiempo de ejecución del número máximo de qubits basada en la memoria disponible. Esto se ha corregido, así que por defecto ahora los backends de Aer permitirán ejecutar circuitos que quepan en toda la memoria disponible del sistema. Correcciones nº 1114
No cambia
Ignis 0.5.2
No cambia
Aqua 0.8.2
No cambia
IBM Proveedor Q 0.12.0
Preludio
qiskit.providers.ibmq.IBMQBackend.run()toma ahora uno o más métodosQuantumCircuitoSchedule. Uso deQasmQobjyPulseQobjha quedado obsoleto. Las opciones de configuración del tiempo de ejecución, como el número de disparos, pueden establecerse a través del métodorun()o del métodoqiskit.providers.ibmq.IBMQBackend.set_options(). El primero se utiliza como ajuste único para el trabajo, y el segundo para todos los trabajos enviados al backend. Si una opción se establece en ambos lugares, el valor establecido enrun()tiene prioridad.- IBM Las credenciales de Quantum se cargan ahora sólo desde las secciones del archivo
qiskitrcque empiezan por 'ibmq'.
Nuevas funciones
-
Python 3.9 en esta versión. Ya puedes ejecutar el proveedor Qiskit IBMQ utilizando Python 3.9.
-
qiskit.providers.ibmq.AccountProvider.backends()tiene ahora un nuevo parámetro min_num_qubits que permite filtrar por el número mínimo de qubits. -
qiskit.providers.ibmq.IBMQBackend.run()toma ahora uno o más métodosQuantumCircuitoSchedule. Las opciones de configuración del tiempo de ejecución, como el número de disparos, pueden establecerse a través del métodorun()o del métodoqiskit.providers.ibmq.IBMQBackend.set_options(). El primero se utiliza como ajuste único para el trabajo, y el segundo para todos los trabajos enviados al backend. Si una opción se establece en ambos lugares, el valor establecido enrun()tiene prioridad. Por ejemplo:from qiskit import IBMQ, transpile from qiskit.test.reference_circuits import ReferenceCircuits provider = IBMQ.load_account() backend = provider.get_backend('ibmq_vigo') circuits = transpile(ReferenceCircuits.bell(), backend=backend) default_shots = backend.options.shots # Returns the backend default of 1024 shots. backend.set_options(shots=2048) # All jobs will now have use 2048 shots. backend.run(circuits) # This runs with 2048 shots. backend.run(circuits, shots=8192) # This runs with 8192 shots. backend.run(circuits) # This again runs with 2048 shots. -
qiskit.providers.ibmq.experiment.Experimenttiene ahora tres atributos adicionales, hub, grupo y proyecto, que identifican al proveedor utilizado para crear el experimento. -
Ahora puede asignar un
experiment_ida un trabajo al enviarlo medianteqiskit.providers.ibmq.IBMQBackend.run(). Puede utilizar este nuevo campo para agrupar una colección de trabajos que pertenezcan al mismo experimento. También se ha actualizado el métodoqiskit.providers.ibmq.IBMQBackendService.jobs()para permitir el filtrado porexperiment_id. -
qiskit.providers.ibmq.experiment.Experimenttiene ahora dos atributos adicionales:- nivel_compartido: El nivel en el que se comparte el experimento que determina quién puede verlo al listar experimentos. Esto se puede actualizar.
- owner: El ID del usuario que subió el experimento. Lo establece el servidor y no se puede actualizar.
-
El método
qiskit.providers.ibmq.experimentservice.ExperimentService.experiments()acepta ahorahub,group, yprojectcomo palabras clave de filtrado. -
Los métodos
qiskit.providers.ibmq.experiment.ExperimentService.experiments()yqiskit.providers.ibmq.experiment.ExperimentService.analysis_results()admiten ahora un parámetrolimitque permite limitar el número de experimentos y resultados de análisis devueltos. -
El método
qiskit.providers.ibmq.experimentservice.ExperimentService.experiments()acepta ahoraexclude_mineymine_onlycomo palabras clave de filtrado. -
El método
qiskit.providers.ibmq.experimentservice.ExperimentService.experiments()acepta ahoraexclude_publicypublic_onlycomo palabras clave de filtrado. -
qiskit.providers.ibmq.managed.IBMQJobManager.run()ahora acepta un únicoQuantumCircuitoScheduleademás de una lista de ellos. -
La función
least_busy()omite ahora los backends que están operativos pero en pausa, es decir, que aceptan trabajos pero no los procesan. -
Ahora se puede hacer pickle de una instancia de
IBMQJob, siempre que no contenga datos personalizados que no se puedan hacer pickle (por ejemplo, en la cabecera Qobj). -
Ahora puede utilizar los dos nuevos métodos,
qiskit.providers.ibmq.AccountProvider.services()yqiskit.providers.ibmq.AccountProvider.service()para averiguar qué servicios están disponibles en su cuenta y obtener una instancia de un servicio concreto. -
El método
qiskit.providers.ibmq.IBMQBackend.reservations()ahora siempre devuelve los modos de programación de reservas, incluso para las reservas que no se poseen.
Notas de actualización
-
Se han eliminado una serie de métodos y funciones anteriormente obsoletos, entre ellos:
qiskit.providers.ibmq.job.IBMQJob.to_dict()qiskit.providers.ibmq.job.IBMQJob.from_dict()- Qconfig.py soporte
- Uso de URL proxy que no incluyen protocolos
-
Un nuevo parámetro,
limit, es ahora el primer parámetro de los métodosqiskit.providers.ibmq.experiment.ExperimentService.experiments()yqiskit.providers.ibmq.experiment.ExperimentService.analysis_results(). Estelimittiene un valor por defecto de 10, lo que significa que por defecto sólo se devolverán 10 experimentos y resultados de análisis. -
IBM Las credenciales de Quantum se cargan ahora sólo desde las secciones del archivo
qiskitrcque empiezan por 'ibmq'. Esto permite utilizar el archivoqiskitrcpara otras funciones.
Notas sobre características en desuso
-
Uso de
QasmQobjyPulseQobjen el métodoqiskit.providers.ibmq.IBMQBackend.run()ha quedado obsoleto.QuantumCircuityScheduleen su lugar. -
El atributo
backendsdeqiskit.providers.ibmq.AccountProviderha pasado a denominarsebackend(sigular). Por compatibilidad con versiones anteriores, puede seguir utilizandobackends, pero está obsoleto y se eliminará en una versión futura. El métodoqiskit.providers.ibmq.AccountProvider.backends()permanece inalterado. Por ejemplo:backend = provider.backend.ibmq_vigo # This is the new syntax. backend = provider.backends.ibmq_vigo # This is deprecated. backends = provider.backends() # This continues to work as before. -
El atributo
IBMQJobclient_versionha quedado obsoleto. Sin embargo, puede seguir leyendo el valor del atributo. -
"La palabra clave
validate_qobjenqiskit.providers.ibmq.IBMQBackend.run()está obsoleta y se eliminará en una futura versión. Si confías en esta validación de esquemas, deberías extraer los esquemas de Qiskit/ibmq-schemas y validar directamente tus cargas útiles con ellos.
Corrección de errores
- Soluciona el problema por el que un trabajo podía quedar en el estado
CREATINGsi el envío del trabajo fallaba a mitad de camino. - Soluciona el problema por el que el uso del widget del backend de Jupyter fallaba si las puertas base del backend no incluían las tradicionales u1, u2, y u3. Correcciones #844
- Corrige el bucle infinito que se producía al pasar una instancia de
IBMQRandomServicea un proceso hijo. - Se soluciona el problema por el que aparecía
TypeErrorsi el servidor devolvía un código de error pero los datos de respuesta no tenían el formato esperado.