Note di rilascio di Qiskit 0.36
0.36.2
Terra 0.20.2
Preludio
Qiskit Terra 0.20.2 è una release di correzione dei bug, che risolve alcuni problemi minori individuati dopo l'ultimo rilascio della patch.
Correzioni di bug
-
È stato risolto un problema con
BackendV2-basato su classi backend false del moduloqiskit.providers.fake_provider, comeFakeMontrealV2, in cui i valori dei parametridtmedte l'attributo associatoTarget.dtnon venivano convertiti correttamente in secondi. Questo causerebbe problemi quando si utilizzano questi backend falsi con la schedulazione. Vedere #8018. -
marginal_counts()avrà successo quando verrà chiesto di marginalizzare la memoria con un parametroindicescontenente elementi non nulli. In precedenza, gli scatti la cui rappresentazione del risultato esadecimale era sufficientemente piccola potevano sollevare unValueError. Vedere il numero 8044. -
L'esportatore di OpenQASM 3 (
qiskit.qasm3) ora emette le dichiarazioniinputooutputprima delle dichiarazioni di gate. Questo è più coerente con l'attuale grammatica ANTLR di riferimento del team di OpenQASM 3. Vedere #7964. -
Corretto un bug nel passaggio
RZXCalibrationBuilderin cui l'ampiezza scalata dell'impulso di risonanza incrociata poteva sembrare parametrizzata anche dopo l'assegnazione. Questo potrebbe far sì che gli strumenti di visualizzazione degli impulsi utilizzino il formato parametrizzato invece di quello numerico previsto. Vedere il numero 8031. -
Corretto un problema con la funzione
transpile()quando viene eseguita con un backend basato suBackendV2-e si imposta l'argomento della parola chiavescheduling_method. In precedenza, la funzione non elaborava correttamente le durate predefinite delle istruzioni supportate dal backend, causando un errore. -
È stato risolto un bug nel passaggio
RZXCalibrationBuilderche a volte causava la costruzione di impulsi con durate non corrette. Vedere #7994. -
Il
SabreSwaptranspiler pass, utilizzato intranspile()quando è impostatorouting_method="sabre", non abbandonerà più sporadicamente le porte condizionate classicamente e i loro successori dai circuiti durante la fase di instradamento della transpilazione. Vedere il numero 8040. -
Statevectorconsentirà ora l'iterazione diretta attraverso i suoi valori (comefor coefficient in statevector) e riporterà correttamente la sua lunghezza sottolen. In precedenza cercava di accedere a dati fuori dai limiti e sollevava un problema diQiskitError. Vedere il numero 8039.
Aer 0.10.4
Nessuna modifica
Ignis 0.7.1
Preludio
Si tratta di un rilascio che corregge principalmente un problema di impacchettamento che causava l'inclusione della cartella docs/ , che contiene i file sorgenti utilizzati per creare la documentazione di qiskit-ignis, nel pacchetto Python.
IBM Q Fornitore 0.19.1
Nessuna modifica
0.36.1
Terra 0.20.1
Preludio
Qiskit Terra 0.20.1 è una release di bugfix che risolve i problemi identificati nella release 0.20.0.
Problemi noti
-
Deserializzazione QPY con la funzione
qpy.load()di un oggetto istanziato direttamenteUCPauliRotGatein un circuito fallirà perché l'argomento dell'asse di rotazione della classe non è memorizzato in un posto standard. Per ovviare a questo problema si possono invece utilizzare le sottoclassi:UCRXGate,UCRYGate, oUCRZGate(a seconda che si utilizzi un asse di rotazione rispettivamente di"X","Y"o"Z") che incorporano l'asse di rotazione nel costruttore della classe e funzionano correttamente in QPY. -
Fin dalla sua introduzione originale in Qiskit Terra 0.20,
XXPlusYYGateha utilizzato una convenzione angolare negativa rispetto a tutte le altre porte di rotazione. In Qiskit Terra 0.21, questo verrà corretto per essere coerente con le altre porte di rotazione. Questo non influisce su altre porte di rotazione, né suXXMinusYYGate.
Correzioni di bug
-
Fissato
Clifford,PaulieCNOTDihedralinizializzazione dell'operatore da circuiti compatibili che contengonoDelayistruzioni. Queste istruzioni vengono trattate come identità quando vengono convertite in operatori. -
Corretto un problema per cui la funzione
eval_observables()sollevava un errore se il suo argomentoquantum_stateera di tipoStateFn.eval_observablesora supporta correttamente tutti i tipi di input indicati dai suoi suggerimenti di tipo. -
Corretto un problema con la funzione di visualizzazione
dag_drawer()e il metodoDAGCircuit.draw()per cui in precedenza il cassetto falliva quando si cercava di generare una visualizzazione per un oggettoDAGCircuitche conteneva un oggettoQubitoClbitche non faceva parte di un sitoQuantumRegisteroClassicalRegister. Corretto #7915. -
Correggere la convalida dei parametri per la classe
Drag. In precedenza, non era sensibile ai grandi valori beta con segno negativo, che potevano dare origine a campioni di forma d'onda con un valore massimo superiore al limite di ampiezza di 1.0. -
La classe
QuantumInstanceutilizzata da molti algoritmi (comeVQE) codificava in modo rigido il valore di uno sleep mentre eseguiva un loop in attesa dell'aggiornamento dello stato del lavoro. Ora rispetta il valore di sonno configurato, impostato dall'attributowaitnell'inizializzatore diQuantumInstance. -
È stato risolto un problema con la funzione
scheduleper cui i chiamanti che specificano unlistdi oggettiQuantumCircuitcon una singola voce, veniva erroneamente restituito un singolo oggettoScheduleinvece di unlist. -
Corretto un problema con la funzione di visualizzazione
plot_error_mapche ne impediva il funzionamento quando veniva eseguita con un backend che aveva un errore di lettura definito nel file di backend fornitoBackendPropertieso quando viene eseguita con unBackendV2backend. Corretto #7879. -
Corretto un bug che poteva causare un tempo di esecuzione esponenziale e la non terminazione quando un'istanza
Pauliè dato al metodoinit_observables(). -
Fissato
SabreSwape per estensionetranspile()conoptimization_level=3, occasionalmente riordina le misure in modo non valido. In precedenza, se due misure scrivevano sullo stesso bit classico,SabreSwappoteva (a seconda della mappa di accoppiamento) riordinarle per produrre un circuito non equivalente. Questo comportamento era stocastico, quindi potrebbe non essere apparso in modo affidabile. Corretto #7950 -
Il
SabreSwape per estensioneSabreLayoutetranspile()dioptimization_level=3, ha ora un meccanismo di fuga che garantisce che non possa mai rimanere bloccato in un ciclo infinito. In precedenza, alcuni input potevano, con molta sfortuna, rimanere bloccati in un minimo locale stabile dello spazio di ricerca e il passaggio non avrebbe mai fatto ulteriori progressi. Ora forzerà una serie di scambi che consentono di continuare l'instradamento se rileva che non ha fatto progressi di recente. Corretto #7707. -
Corretto un problema con la deserializzazione di QPY tramite la funzione
qpy.load()della funzioneUCRXGate,UCRYGate, eUCRZGate. In precedenza, un file QPY che conteneva una qualsiasi di queste porte dava errore quando si cercava di caricare il file. Corretto #7847.
Aer 0.10.4
Nessuna modifica
Ignis 0.7.0
Nessuna modifica
IBM Q Fornitore 0.19.1
0.19.1
Correzioni di bug
- PR #1129 aggiorna il metodo
least_busy()in modo che non supporti più BaseBackend come tipo di input o output valido, poiché è stato deprecato da tempo in qiskit-terra e recentemente rimosso.
0.36.0
Terra 0.20.0
Nessuna modifica
Aer 0.10.4
Note sull'aggiornamento
- Qiskit Aer non viene più compilato con ottimizzazioni in virgola mobile non sicure. Mentre la maggior parte degli effetti dovrebbe essere localizzata a Qiskit Aer, alcuni aspetti della gestione subnormale potrebbero essere trapelati in precedenza nel codice utente a causa dell'impostazione errata della libreria della modalità "flush to zero". Questo non accadrà più.
Correzioni di bug
-
Correggere il transpiler del blocco della cache per riconoscere le superop come bloccate dalla cache. Questa è la correzione del problema 1479 <https://github.com/Qiskit/qiskit-aer/issues/1479> Ora la matrice di densità con modelli di rumore può essere parallelizzata. Per verificare questo problema è stato aggiunto un nuovo test, test_noise.TestNoise.test_kraus_gate_noise_on_QFT_cache_blocking. Questa correzione include anche la correzione del problema 1483 <https://github.com/Qiskit/qiskit-aer/issues/1483> scoperto con l'aggiunta di un nuovo caso di test. Questo corregge la misura sui chunk per statevector.
-
Corregge un bug in
NoiseModel.from_backend()che generava un errore quando T2 valore maggiore di 2 * T1 veniva fornito dal backend. Dopo questa correzione, il valore T2 viene troncato fino a 2 * T1 e viene emesso un avviso all'utente in caso di troncamento. Il bug è stato introdotto con #1391 e, prima di allora,NoiseModel.from_backend()troncava il valore di T2 fino a 2 * T1 in modo silenzioso.Per i dettagli, consultare il numero 1464.
-
device=Thrust era molto lento per un piccolo numero di qubit perché veniva sempre applicato il threading OpenMP. Questa correzione applica i thread di OpenMP allo stesso modo di device=CPU utilizzando statevector_parallel_threshold.
-
Qiskit Aer non imposterà più la modalità in virgola mobile su "flush to zero" quando viene caricato. Gli utenti downstream potrebbero aver visto in precedenza avvisi da Numpy come:
Il valore della subnormale più piccola per il tipo <class ‘numpy.float64’> è zero.
Questi non verranno più emessi e la gestione delle virgole sarà corretta.
-
È stato risolto un potenziale problema con l'esecuzione di simulazioni su circuiti che hanno l'attributo
QuantumCircuit.metadataimpostato. L'attributometadatapuò essere un qualsiasi dizionario python e in precedenza qiskit-aer tentava di serializzare JSON il contenuto dell'attributo per elaborarlo insieme al resto dell'input del circuito, anche se il contenuto non era serializzabile JSON. Questo non accade più perché l'attributoQuantumCircuit.metadatanon viene utilizzato per eseguire la simulazione, quindi ora i contenuti non vengono serializzati e sono direttamente collegati all'oggettoqiskit.result.Resultsenza tentare di serializzare il contenuto in JSON. Corretto #1435
Ignis 0.7.0
Nessuna modifica
IBM Q Fornitore 0.19.0
Nuove funzioni
- Il pacchetto qiskit-ibmq-provider ora supporta le funzionalità di IBM Quantum LiveData. Queste funzioni consentono agli utenti di osservare il comportamento in tempo reale dei backend di IBM Quantum durante l'esecuzione dei lavori. In particolare, il provider ora include una nuova scheda nel widget Jupyter del backend e supporta l'esecuzione di lavori (tramite il metodo
qiskit.providers.ibmq.IBMQBackend.run()) con il parametro live_data_enabled=True nei backend IBM Quantum consentiti. - Ora è possibile specificare un livello di registrazione diverso nella parola chiave
optionsquando si invia un lavoro Qiskit Runtime con il metodoqiskit.providers.ibmq.runtime.IBMRuntimeService.run().
Note sull'aggiornamento
- Python 3.6 il supporto è stato abbandonato poiché ha raggiunto la fine del ciclo di vita nel dicembre 2021.
- qiskit.providers.ibmq.random il servizio di numeri casuali utilizzato per accedere all'estrattore di casualità CQC non è più supportato ed è stato rimosso.
Note di deprecazione
- La parola chiave
imagenel metodoqiskit.providers.ibmq.runtime.IBMRuntimeService.run()è deprecata. Si deve invece specificare l'immagine da usare nella parola chiaveoptions.
Correzioni di bug
- Risolve il problema #190. Ora
qiskit.providers.ibmq.runtime.RuntimeEncodereqiskit.providers.ibmq.runtime.RuntimeDecodersono stati aggiornati per gestire le istanze della classe Istruzione. - Corregge il problema #74 per cui gli ndarray numpy con tipi di oggetti non potevano essere serializzati.
qiskit.providers.ibmq.runtime.RuntimeEncodereqiskit.providers.ibmq.runtime.RuntimeDecodersono stati aggiornati per gestire questi ndarray.