Skip to main content
IBM Quantum Platform

Note di rilascio di Qiskit 0.9


0.9

Terra 0.8

Evidenziazioni

  • Introduzione del modulo Pulse in qiskit.pulse, che include strumenti per la creazione di comandi a impulsi, la loro programmazione su canali a impulsi, la visualizzazione e l'esecuzione su dispositivi IBM Q.
  • Miglioramento delle classi QuantumCircuit e Instruction, che consentono la composizione di sottocircuiti arbitrari in circuiti più grandi e la creazione di circuiti parametrizzati.
  • Un potente modulo Quantum Info sotto qiskit.quantum_info, che fornisce strumenti per lavorare con operatori e canali e per utilizzarli all'interno dei circuiti.
  • Nuovi passaggi di ottimizzazione del transpiler e accesso a routine di transpiling predefinite.

Nuove funzioni

  • Il nucleo della routine StochasticSwap è implementato in Cython.
  • Aggiunte le classi QuantumChannel per la manipolazione dei canali quantistici e delle mappe CPTP.
  • Supporto per circuiti parametrizzati.
  • L'interfaccia di PassManager è stata migliorata e sono state aggiunte nuove funzioni per facilitare l'interazione e l'utilizzo dei gestori di pass personalizzati.
  • Sono ora inclusi PassManagerche offrono una pipeline predeterminata di passaggi di transpiler.
  • File di configurazione utente per consentire agli ambienti locali di sovrascrivere i valori predefiniti di alcune funzioni.
  • Nuovi passaggi di transpiler: EnlargeWithAncilla, Unroll2Q, NoiseAdaptiveLayout, OptimizeSwapBeforeMeasure, RemoveDiagonalGatesBeforeMeasure, CommutativeCancellation, Collect2qBlocks, e ConsolidateBlocks.

Considerazioni sulla compatibilità

Nell'ambito del rilascio 0.8, i seguenti elementi sono stati deprecati e saranno rimossi o modificati in modo incompatibile con le versioni successive. Sebbene non siano strettamente necessarie, queste sono cose da sistemare prima del rilascio di 0.9 (a meno che non sia indicato diversamente) per evitare un cambiamento di rottura in futuro.

  • I metodi con prefisso _get nell'oggetto DAGCircuit vengono rinominati senza tale prefisso.
  • Gli elementi di couplinglist di CouplingMap sono stati trasformati da tuple a liste.
  • Le basi degli unroller devono essere esplicite e la loro violazione solleva un'informazione QiskitError.
  • Il pacchetto qiskit.tools.qcvv è deprecato e sarà rimosso in futuro. Dovreste migrare all'utilizzo di Qiskit Ignis, che sostituisce questo modulo.
  • La funzione qiskit.compile() è ora deprecata a favore dell'uso esplicito della funzione qiskit.compiler.transpile() per trasformare un circuito, seguita da qiskit.compiler.assemble() per ricavarne un Qobj. Invece di compile(...), utilizzare assemble(transpile(...), ...).
  • qiskit.converters.qobj_to_circuits() è stato deprecato e sarà rimosso in una prossima versione. Invece qiskit.assembler.disassemble() dovrebbe essere usato per estrarre gli oggetti QuantumCircuit da un Qobj compilato.
  • Lo spazio dei nomi qiskit.mapper è stato deprecato. Le classi Layout e CouplingMap sono accessibili tramite qiskit.transpiler.
  • Alcune funzioni di qiskit.tools.qi.qi sono state deprecate e spostate in qiskit.quantum_info.

Si noti che in questa versione sono state apportate alcune modifiche incompatibili con le versioni precedenti. Le note seguenti contengono informazioni su come adattarsi a questi cambiamenti.

IBM Q Fornitore

Il provider IBM Q era precedentemente incluso in Terra, ma è stato suddiviso in un pacchetto separato qiskit-ibmq-provider. Questo dovrà essere installato, sia tramite pypi con pip install qiskit-ibmq-provider che dai sorgenti per accedere a qiskit.IBMQ o qiskit.providers.ibmq. Se si installa qiskit con pip install qiskit, si installeranno automaticamente tutti i sottopacchetti del progetto Qiskit.

Componenti Cython

A partire dalla versione 0.8, il nucleo della routine di swap stocastico è ora implementato in Cython. Questo è stato fatto per migliorare significativamente le prestazioni dello swapper, tuttavia se costruite Terra dai sorgenti o lo eseguite su non-x86 o su un'altra piattaforma senza ruote precostituite e installate dai sorgenti, dovrete assicurarvi di avere Cython installato prima di installare/costruire Qiskit Terra. Questo può essere fatto facilmente con pip/pypi: pip install Cython.

Flusso di lavoro del compilatore

La funzione qiskit.compile() è stata deprecata e sostituita da una prima chiamata a qiskit.compiler.transpile() per eseguire l'ottimizzazione e la mappatura su un circuito, quindi a qiskit.compiler.assemble() per costruire un Qobj da quel circuito ottimizzato da inviare a un backend. Sebbene si tratti solo di una deprecazione, verrà emesso un avviso se si utilizza la vecchia chiamata qiskit.compile() .

parametri transpile(), assemble(), execute()

Queste funzioni sono fortemente sovraccariche e accettano un'ampia gamma di input. Possono gestire ingressi a circuito e a impulsi. Tutti i kwarg, tranne backend , per queste funzioni accettano ora anche elenchi dei tipi precedentemente accettati. Il kwarg initial_layout può ora essere fornito sia come elenco che come dizionario, ad esempio per mappare un esperimento di Bell sui qubit 13 e 14, si può fornire: initial_layout=[13, 14] o initial_layout={qr[0]: 13, qr[1]: 14}

Qobj

La classe Qobj è stata suddivisa in due sottoclassi separate a seconda del caso d'uso, PulseQobj o QasmQobj rispettivamente per i lavori a impulsi e a circuito. Se si interagisce direttamente con Qobj, potrebbe essere necessario modificare l'utilizzo di conseguenza.

Il sito qiskit.qobj.qobj_to_dict() viene rimosso. Utilizzare invece il metodo to_dict() di un oggetto Qobj.

Visualizzazione

La modifica più importante al modulo di visualizzazione è il passaggio da qiskit.tools.visualization a qiskit.visualization. Questo per indicare che il modulo di visualizzazione è più di un semplice strumento. Tuttavia, poiché questa interfaccia è stata dichiarata stabile nella release 0.7, l'interfaccia pubblica di qiskit.tools.visualization continuerà a funzionare. Questo potrebbe cambiare in una versione futura, ma in tal caso sarà deprecato prima di essere rimosso.

Le funzioni precedentemente deprecate, plot_circuit(), latex_circuit_drawer(), generate_latex_source(), e matplotlib_circuit_drawer() da qiskit.tools.visualization sono state rimosse. Al posto di queste funzioni, si dovrebbe usare la chiamata a qiskit.visualization.circuit_drawer() con gli argomenti appropriati.

Le chiavi plot_barriers e reverse_bits nel dizionario dei kwarg di style , precedentemente deprecate, sono deprecate; al loro posto si devono usare i kwarg di qiskit.visualization.circuit_drawer() plot_barriers e reverse_bits .

Le funzioni di plottaggio di Wigner plot_wigner_function, plot_wigner_curve, plot_wigner_plaquette e plot_wigner_data precedentemente presenti nel modulo qiskit.tools.visualization._state_visualization sono state rimosse. Non sono mai stati esposti attraverso l'interfaccia pubblica stabile e non sono stati ben documentati. Il codice per l'utilizzo di questa funzione è ancora accessibile attraverso il repository qiskit-tutorials.

Programma di associazione

L'API pubblica di qiskit.mapper è stata spostata in qiskit.transpiler. Sebbene sia stato deprecato solo in questa versione, sarà rimosso nella versione 0.9, quindi aggiornare l'uso di Layout e CouplingMap per importare da qiskit.transpiler invece che da qiskit.mapper prima che ciò avvenga eviterà qualsiasi sorpresa in futuro.

Aer 0.2

Nuove funzioni

  • Aggiunto gate multiplexer qiskit-aer #192
  • Aggiunta la funzione remap_noise_model a noise.utils qiskit-aer #181
  • Aggiunto il metodo __eq__ a NoiseModel, QuantumError, ReadoutError qiskit-aer #181
  • Aggiunto il supporto per le porte etichettate nei modelli di rumore qiskit-aer #175
  • Aggiunte ottimizzazioni a mcx, mcy, mcz, mcu1, mcu2, mcu3, porte a QubitVector qiskit-aer #124
  • Aggiunto gate controlled-swap ottimizzato a QubitVector qiskit-aer #142
  • Aggiunta l'ottimizzazione della gate-fusion per QasmController, che si abilita impostando fusion_enable=true qiskit-aer #136
  • Aggiunta una migliore gestione delle simulazioni fallite qiskit-aer #167
  • Aggiunta ottimizzazione del troncamento dei qubit per i qubit non utilizzati qiskit-aer #164
  • Aggiunta la possibilità di disabilitare l'errore di depolarizzazione sul modello di rumore del dispositivo qiskit-aer #131
  • Aggiunta istruzione di inizializzazione del simulatore a statevector_state qiskit-aer #117, qiskit-aer #137
  • Aggiunte mappe di accoppiamento ai simulatori qiskit-aer #93
  • Aggiunto il framework di ottimizzazione dei circuiti qiskit-aer #83
  • Aggiunti i benchmark qiskit-aer #71, qiskit-aer #177
  • Aggiunto il supporto alle ruote per Debian - distribuzioni simili a qiskit-aer #69
  • Aggiunta l'autoconfigurazione dei thread per il simulatore qasm qiskit-aer #61
  • Aggiunto metodo di simulazione basato su decomposizioni di rango dello stabilizzatore qiskit-aer #51
  • Aggiunto basis_gates kwarg a NoiseModel init qiskit-aer #175.
  • Aggiunto un parametro opzionale a NoiseModel.as_dict() per restituire dizionari che possono essere serializzati usando la libreria json standard direttamente qiskit-aer #165
  • Riformulare la gestione dei thread di qiskit-aer #50
  • Migliorare le trasformazioni del rumore qiskit-aer #162
  • Migliorare la segnalazione degli errori qiskit-aer #160
  • Migliorare l'efficienza della parallelizzazione con max_memory_mb un nuovo parametro di backend_opts qiskit-aer #61
  • Migliorare le prestazioni di u1 in statevector qiskit-aer #123

Correzioni di bug

  • Risolti i problemi di scontro di OpenMP su macOS per il componente aggiuntivo Terra qiskit-aer #46

Considerazioni sulla compatibilità

  • Opzione backend "initial_statevector" deprecata per QasmSimulator e StatevectorSimulator qiskit-aer #185
  • Rinominata l'opzione del backend "chop_threshold" in "zero_threshold" e cambiato il valore predefinito in 1e-10 qiskit-aer #185

Ignis 0.1

Nuove funzioni

  • Volume quantico
  • Attenuazione delle misure con calibrazioni tensored
  • RB simultaneo ha l'opzione di allineare le porte Clifford tra i sottoinsiemi
  • La correzione della misura può produrre una nuova calibrazione per un sottoinsieme di qubit

Considerazioni sulla compatibilità

  • RB scrive sul set minimo di registri classici (in precedenza era Q [i] ->C [i] ). Questa modifica consente la correzione della misura con RB. A meno che gli utenti non abbiano un codice di analisi esterno, questo non cambierà i risultati. I circuiti RB di 0.1 non sono compatibili con i raccordi di 0.1.1.

Acqua 0.5

Nuove funzioni

  • Implementazione dell'algoritmo HHL a supporto di LinearSystemInput
  • Componente innestabile Eigenvalues con variante EigQPE
  • Componente innestabile Reciprocal con le varianti LookupRotation e LongDivision
  • Operazioni a controllo multiplo U1 e U3 mcu1 e mcu3
  • Componente collegabile QFT derivato dal componente IQFT
  • Riassunto dei circuiti transpilati a livello di logging DEBUG
  • QuantumInstance accetta di nuovo basis_gates e coupling_map .
  • Supporto all'uso della porta cx per l'entanglement nelle forme variazionali RY e RYRZ (cz è la scelta predefinita)
  • Supporto per l'utilizzo di un'hamiltoniana del mixer arbitraria in QAOA, consentendo l'uso di QAOA in problemi di ottimizzazione vincolata [arXiv:1709.03489]
  • Aggiunta la classe base dell'algoritmo variazionale VQAlgorithm, implementata da VQE e da QSVMVariational
  • Aggiunto ising/docplex.py per generare automaticamente l'hamiltoniana di Ising dai modelli di ottimizzazione di DOcplex
  • Aggiunta la modalità 'basic-dirty-ancilla' per mct
  • Aggiunto mcmt per il cancello multicontrollato e multitarget
  • Funzionalità esposte per generare circuiti da formule logiche AND, OR, DNF (forme normali disgiuntive) e CNF (forme normali congiuntive)
  • È stata aggiunta la possibilità di generare circuiti da formule ESOP (somma esclusiva dei prodotti) con ottimizzazione opzionale basata su Quine-McCluskey e su ExactCover
  • Aggiunto LogicalExpressionOracle per la generazione di circuiti oracolo a partire da espressioni logiche booleane arbitrarie (incluso il supporto DIMACS) con possibilità di ottimizzazione
  • Aggiunto TruthTableOracle per la generazione di circuiti oracolo da tabelle di verità con possibilità di ottimizzazione
  • Aggiunto CustomCircuitOracle per generare l'oracolo da circuiti specificati dall'utente
  • Aggiunta l'implementazione dell'algoritmo di Deutsch-Jozsa
  • Aggiunta l'implementazione dell'algoritmo di Bernstein-Vazirani
  • Aggiunta l'implementazione dell'algoritmo di Simon
  • Aggiunta dell'implementazione dell'algoritmo di Shor
  • Aggiunta la possibilità opzionale per l'algoritmo di Grover di assumere uno stato iniziale personalizzato (rispetto alla sovrapposizione uniforme predefinita)
  • Aggiunta la possibilità di creare uno stato iniziale Custom utilizzando un circuito esistente
  • Aggiunto l'algoritmo di ottimizzazione ADAM (e AMSGRAD)
  • Sono state aggiunte le distribuzioni multivariate, quindi i modelli di incertezza hanno ora componenti di distribuzione univariate e multivariate
  • Aggiunta l'opzione per includere o saltare le operazioni di swap per le costruzioni di circuiti qft e iqft
  • Aggiunto risolutore di sistemi lineari classici ExactLSsolver
  • Aggiunti i parametri auto_hermitian e auto_resize all'algoritmo HHL per supportare matrici non ermitiane e non di dimensione 2n2^n per impostazione predefinita
  • Aggiunta un'altra mappa di caratteristiche, RawFeatureVector, che mappa direttamente i vettori di caratteristiche agli stati dei qubit per la classificazione
  • SVM_Classical può ora caricare i modelli addestrati da QSVM

Correzioni di bug

  • Corretto ising/docplex.py per moltiplicare correttamente i valori costanti nei vincoli
  • Corretta l'impostazione dei pacchetti per identificare correttamente i pacchetti dello spazio dei nomi che usano setuptools.find_namespace_packages

Considerazioni sulla compatibilità

  • QuantumInstance non accetta più memory .
  • Spostate la riga di comando e la GUI in repo separate (qiskit_aqua_uis)
  • Rimosso l'oracolo specifico di SAT(ora supportato da LogicalExpressionOracle)
  • Modificata l'implementazione della modalità advanced di mct: utilizzando semplici porte di h invece di ch e correggendo il vecchio passo di ricorsione in _multicx
  • Componenti random_distributions rinominato in uncertainty_models
  • Riorganizzate le costruzioni di varie porte comuni (ch, cry, mcry, mct, mcu1, mcu3, mcmt, logic_and, e logic_or) e circuiti (PhaseEstimationCircuit, BooleanLogicCircuits, FourierTransformCircuits, e StateVectorCircuits) sotto la directory circuits
  • L'algoritmo QSVMVariational è stato rinominato VQC, acronimo di Variational Quantum Classifier
  • Rinominare l'algoritmo QSVMKernel in QSVM
  • Rinominare la classe SVMInput in ClassificationInput
  • Rinominare il tipo di problema 'svm_classification' in 'classification'
  • Modificato il tipo di entangler_map usato in FeatureMap e VariationalForm in lista di liste

IBM Q Fornitore 0.1

Nuove funzioni

  • Questo è il primo rilascio come pacchetto autonomo. Se si installa Terra standalone, è necessario installare anche il pacchetto qiskit-ibmq-provider insieme a pip install qiskit-ibmq-provider , se si vuole usare i backend di IBM Q.
  • Il supporto per i lavori in formato non Qobj è stato rimosso dal provider. Prima di poter inviare le richieste in un formato precedente, è necessario convertirle in Qobj.
Questa pagina è stata utile?
Segnala un bug, un errore di battitura o richiedi contenuti su GitHub.