Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove pulse and its dependencies in Qiskit 2.0 #13662

Open
25 tasks
eliarbel opened this issue Jan 14, 2025 · 0 comments
Open
25 tasks

Remove pulse and its dependencies in Qiskit 2.0 #13662

eliarbel opened this issue Jan 14, 2025 · 0 comments
Labels
Changelog: Removal Include in the Removed section of the changelog mod: pulse Related to the Pulse module
Milestone

Comments

@eliarbel
Copy link
Contributor

Background

This issue is for tracking the work required for removing pulse and all its dependencies within Qiskit. For convenience, qiskit/utils/deprecate_pulse.py defines a few decorators for deprecating pulse code, namely deprecate_pulse_func, deprecate_pulse_dependency and deprecate_pulse_arg. All pulse deprecations were marked with these decorators (mostly in #13164), so it should be rather easy to locate the code that need to be removed by searching for deprecate_pulse within the codebase.

Details

Most of the changes here are just code removal, but certain cases require special handling for supporting the fact that we don't have pulse anymore. For example, we would want QPY to still be able to load a payload with pulse data in it (likely leading to a partially-specified circuit), possibly notifying the user that pulse data cannot be represented in Qiskit thus it will be ignored. So I think it makes sense to expect that we'll end up having a few PRs for handling all the removal with the vast majority done in one PR with few additional ones to implement specific changes. Furthermore, I think it would help to work against a dedicated branch so we can make progress in parallel without breaking anything in Qiskit main.

Here are the major things that we need to address. If we work against a single branch, we can mark the progress against that branch:

  • Pulse itself - qiskit/pulse
  • Pulse visualization - visualization/pulse_v2
  • Transpiler and circuit related
    • Passes: PulseGates, RXCalibrationBuilder, RZXCalibrationBuilder, EchoRZXWeylDecomposition, ValidatePulseGates
    • Deprecated args e.g. in generate_preset_pass_manager(), PassManagerConfig, generate_scheduling()
    • Target - calibration and instruction schedule map support
    • DAGCircuit and DagDependency - calibrations support (also in Rust)
    • QuantumCircuit - calibrations support
  • qpy
    • Drop support for ScheduleBlock in dump()
    • Gracefully ignore schedule blocks when loading payloads containing pulse data
  • qobj - remove QobjToInstructionConverter
  • assembler/scheduler/compiler
    • Remove sequence(), schedule(), schdule_circuit(), assemble_schedules(), ScheduleConfig() and scheduling related methods
    • deprecated args in transpile() and convert_to_target()
  • Providers
    • GenericBackendV2 - make pulse-agnostic (no pulse_channel and custom calibrations in init)
    • All pulse-supporting fake backends
    • Remove inst_map, calibration and *_channel methods everywhere, including BackendV2 and BackendV2Converter
    • PulseDefaults
  • Testing
    • Module unit tests (tests/python/pulse)
    • Visualization tests (test/python/visualization/pulse_v2)
    • Transpiler related
  • deprecate_pulse.py in qiskit/utils

Note that we'll need to remove more code than what is directly deprecated by the deprecate_pulse_* decorators since these were used to ensure deprecation warning coverage but without necessarily marking every piece of code that need to be removed (for example deprecating only the root of a class hierarchy or just the entry point of deprecated logic).

@eliarbel eliarbel added Changelog: Removal Include in the Removed section of the changelog mod: pulse Related to the Pulse module labels Jan 14, 2025
@eliarbel eliarbel added this to the 2.0.0 milestone Jan 14, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changelog: Removal Include in the Removed section of the changelog mod: pulse Related to the Pulse module
Projects
None yet
Development

No branches or pull requests

1 participant