-
Notifications
You must be signed in to change notification settings - Fork 2.6k
Description
Since the 1.2 and 1.3 release we have an increasing amount of Qiskit's internal data model expose to rust. This has led to anything not defined as a rust-native object with a python interface on top as becoming a potential bottleneck as it limits what we're able to do in pure rust. For example, creating bit objects is often the bottleneck for circuit construction/synthesis and in #13238 creating UnitaryGate
objects is taking ~60% of the time to construct the circuit (and those are just containers that wrap a numpy array we already created). This issue is for tracking the last pieces necessary to fully create a circuit through a default transpilation pipeline without needing to call Python. The current list of work items is:
### Tasks
- [ ] https://github.com/Qiskit/qiskit/issues/13267
- [ ] https://github.com/Qiskit/qiskit/issues/13269
- [ ] https://github.com/Qiskit/qiskit/issues/12966
- [ ] https://github.com/Qiskit/qiskit/issues/13270
- [ ] https://github.com/Qiskit/qiskit/issues/13271
- [ ] https://github.com/Qiskit/qiskit/issues/13274
- [ ] https://github.com/Qiskit/qiskit/issues/13275
- [ ] https://github.com/Qiskit/qiskit/issues/13272
It should be noted this doesn't preclude extending the data model from Python as is supported now, we have provisions in place already for things where the data model supported this like custom instructions and gates, and we should still support these use cases. It's more about ensuring we have a complete core data model in rust so that we can do manipulations of the qiskit defined pieces in rust without needing Python.