Vai al contenuto principale

Migra da Qiskit Pulse ai gate frazionari

Con l'introduzione dei gate frazionari, il controllo a livello di pulse su tutti i processori IBM Quantum® è stato deprecato e verrà rimosso all'inizio del 2025. Inoltre, il modulo qiskit.pulse è stato deprecato a partire da Qiskit SDK v1.3.0 e verrà rimosso in Qiskit SDK v2.0.0. Questa modifica è stata motivata dal nostro continuo focus su esperimenti a scala utility e sul supporto agli utenti che esplorano applicazioni che potrebbero portare al vantaggio quantistico.

Esegui rotazioni su singolo e due qubit direttamente con i gate frazionari​

Il caso d'uso più comune del controllo a livello di pulse era la costruzione di schedule di pulse personalizzate che modificano i pulse ECR o RX per eseguire direttamente rotazioni su singolo e due qubit. Il processo tipico consisteva nell'usare RXCalibrationBuilder e RZXCalibrationBuilder (o RZXCalibrationBuilderNoEcho) e aggiungere un'istruzione RXGate o RZXGate al target di un QPU, per poi costruire una pipeline di transpilazione contenente i pass del calibration builder, al fine di calibrare le rotazioni su singolo e due qubit per un angolo specificato. In background, questo creava una calibrazione, ovvero una mappa tra un ScheduleBlock e un gate in un QuantumCircuit.

Ora puoi ottenere lo stesso risultato sui processori Heron usando il nuovo flag use_fractional_gates. Come specificato nella guida ai gate frazionari, sia RX(θ)R_X(\theta) che RZZ(θ)R_ZZ(\theta) devono essere caricati usando questo flag, che restituisce un backend il cui attributo Target contiene le informazioni su questi gate.

service = QiskitRuntimeService()
backend = service.backend('ibm_torino', use_fractional_gates=True)

Usa Qiskit Dynamics​

Il modulo qiskit.pulse conteneva molte più funzionalità rispetto alla semplice esecuzione più efficiente di rotazioni su singolo e due qubit. Gran parte del controllo sulla fisica del dispositivo può essere modellata usando il pacchetto Qiskit Dynamics, disponibile nell'ecosistema Qiskit. In particolare, il pacchetto offre una rappresentazione analoga di molte delle funzionalità fornite da qiskit.pulse, sotto forma di un modulo qiskit_dynamics.signals. La documentazione di questo pacchetto contiene alcuni tutorial che potrebbero essere utili: