Pular para o conteúdo principal

Migrar do Qiskit Pulse para gates fracionárias

Com a introdução das gates fracionárias, o controle em nível de pulso em todos os processadores IBM Quantum® foi descontinuado e será removido no início de 2025. Além disso, o módulo qiskit.pulse foi descontinuado a partir do Qiskit SDK v1.3.0 e será removido no Qiskit SDK v2.0.0. Essa mudança foi motivada pelo nosso foco contínuo em experimentos em escala de utilidade e no suporte a usuários que exploram aplicações que podem levar à vantagem quântica.

Executar rotações de um e dois qubits diretamente com gates fracionárias

O caso de uso mais comum do controle em nível de pulso era construir agendamentos de pulso personalizados que modificavam os pulsos ECR ou RX para executar diretamente rotações de um e dois qubits. O processo típico era usar o RXCalibrationBuilder e o RZXCalibrationBuilder (ou RZXCalibrationBuilderNoEcho) e adicionar uma instrução RXGate ou RZXGate ao target de uma QPU; em seguida, construir um pipeline de transpilação contendo os passes do calibration builder para calibrar as rotações de um e dois qubits para um ângulo especificado. Em segundo plano, isso criava uma calibração, que é um mapeamento entre um ScheduleBlock e uma gate em um QuantumCircuit.

Agora você pode fazer isso em processadores Heron usando a nova flag use_fractional_gates. Conforme especificado no guia de gates fracionárias, tanto RX(θ)R_X(\theta) quanto RZZ(θ)R_ZZ(\theta) devem ser carregadas usando essa flag, que retorna um backend cujo atributo Target contém informações sobre essas gates.

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

Usar o Qiskit Dynamics

O módulo qiskit.pulse continha muito mais funcionalidades do que apenas executar rotações de um e dois qubits de forma mais eficiente. Grande parte do controle sobre a física do dispositivo pode ser modelada usando o pacote Qiskit Dynamics disponível no Qiskit Ecosystem. Em particular, o pacote possui sua própria representação análoga de muitos dos recursos fornecidos pelo qiskit.pulse na forma de um módulo qiskit_dynamics.signals. A documentação desse pacote contém alguns tutoriais que podem ser úteis: