Skip to content

Rust native core data model #13264

@mtreinish

Description

@mtreinish

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.

Sub-issues

Metadata

Metadata

Assignees

No one assigned

    Labels

    RustThis PR or issue is related to Rust code in the repositoryperformance

    Type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions