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

Implementation of manual classical variables: RFC 0019 #10922

Closed
20 of 21 tasks
jakelishman opened this issue Oct 2, 2023 · 3 comments · Fixed by #12421
Closed
20 of 21 tasks

Implementation of manual classical variables: RFC 0019 #10922

jakelishman opened this issue Oct 2, 2023 · 3 comments · Fixed by #12421
Assignees
Labels
mod: circuit Related to the core of the `QuantumCircuit` class or the circuit library mod: qasm3 Related to OpenQASM 3 import or export mod: qpy Related to QPY serialization mod: transpiler Issues and PRs related to Transpiler priority: high type: epic A theme of work that contain sub-tasks type: feature request New feature or request
Milestone

Comments

@jakelishman
Copy link
Member

jakelishman commented Oct 2, 2023

What should we add?

This is the tracking epic for RFC 0019: Variable-declaration and storage representation in Qiskit. Details of the proposal are in the linked document. Since the tasklist doesn't show linked PRs, I'm just assigning myself to issues as I open a PR that closes them to give a neater visual indication.

Required

  1. jakelishman
  2. mod: circuit
    jakelishman
  3. mod: circuit
    jakelishman
  4. mod: circuit
    jakelishman
  5. mod: circuit
    jakelishman
  6. jakelishman
  7. jakelishman
  8. mod: qasm3
    jakelishman
  9. mod: qpy
    jakelishman
  10. mod: transpiler type: qa
    jakelishman
  11. mod: circuit
    jakelishman
  12. documentation
    jakelishman

Long term required, not necessary for 0.45

  1. mod: visualization
    jakelishman
@jakelishman jakelishman added type: feature request New feature or request priority: high type: epic A theme of work that contain sub-tasks mod: qpy Related to QPY serialization mod: transpiler Issues and PRs related to Transpiler mod: qasm3 Related to OpenQASM 3 import or export mod: circuit Related to the core of the `QuantumCircuit` class or the circuit library labels Oct 2, 2023
@jakelishman jakelishman added this to the 0.45.0 milestone Oct 2, 2023
@jakelishman jakelishman self-assigned this Oct 2, 2023
@jakelishman
Copy link
Member Author

jakelishman commented Oct 2, 2023

Current dependency DAG of the created PRs, where an arrow from A to B means "A depends on B".

In theory all the links are clickable, but I found it finicky unless you control/command-click to open in a new tab.

stateDiagram-v2

direction BT

classDef merged fill:#8250df,color:white,
classDef unmerged fill:#1f883d,color:white


state "<a href='https://github.com/Qiskit/qiskit/pull/10944'><span style='color:white'>Add representation to <pre>Var</pre> (#10944)
</span></a>" as 10944
state "<a href='https://github.com/Qiskit/qiskit/pull/10946'><span style='color:white'>Add <pre>Store</pre> instruction (#10946)
</span></a>" as 10946
state "<a href='https://github.com/Qiskit/qiskit/pull/10962'><span style='color:white'>Add <pre>QuantumCircuit</pre> var-handling methods (#10962)
</span></a>" as 10962
state "<a href='https://github.com/Qiskit/qiskit/pull/10963'><span style='color:white'><pre>QuantumCircuit</pre> copy methods (#10963)
</span></a>" as 10963
state "<a href='https://github.com/Qiskit/qiskit/pull/10974'><span style='color:white'><pre>QuantumCircuit</pre> append control flow (#10974)
</span></a>" as 10974
state "<a href='https://github.com/Qiskit/qiskit/pull/10975'><span style='color:white'><pre>ControlFlowOp</pre> write-detection helper (#10975)
</span></a>" as 10975
state "<a href='https://github.com/Qiskit/qiskit/pull/10977'><span style='color:white'>Control-flow builder support (#10977)
</span></a>" as 10977


class keyMerged merged
class keyUnmerged unmerged

keyUnmerged --> keyMerged

class 10944 merged
class 10946 merged
class 10962 merged
class 10963 merged
class 10974 merged
class 10975 unmerged
class 10977 unmerged

10946 --> 10944
10962 --> 10946
10963 --> 10962
10974 --> 10963
10975 --> 10974
10977 --> 10974

@jakelishman jakelishman changed the title Implementation of manual classical variables: RFC 14 Implementation of manual classical variables: RFC 15 Oct 3, 2023
@jakelishman
Copy link
Member Author

Pushing this from 0.45 because there are some further internal API considerations about how the transpiler should reason about classical-memory access. The system is already at the limits of special casing, and with me needing / wanting to add in a read/write memory-access split for variables into the transpiler, there's more considerations to be made about how downstream passes will work. There's no immediate dependents on this work being in 0.45, because it's all internal stepping stones for Qiskit 1.0 work, not stuff that's supported immediately on hardware.

@jakelishman jakelishman modified the milestones: 0.45.0, 1.0.0 Oct 5, 2023
@kdk kdk changed the title Implementation of manual classical variables: RFC 15 Implementation of manual classical variables: RFC 50 Oct 30, 2023
@1ucian0 1ucian0 changed the title Implementation of manual classical variables: RFC 50 Implementation of manual classical variables: RFC 0019 Nov 21, 2023
@mtreinish mtreinish modified the milestones: 1.0.0, 1.1.0 Jan 23, 2024
@jakelishman
Copy link
Member Author

All merged PRs are reverted by #11667 for 1.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
mod: circuit Related to the core of the `QuantumCircuit` class or the circuit library mod: qasm3 Related to OpenQASM 3 import or export mod: qpy Related to QPY serialization mod: transpiler Issues and PRs related to Transpiler priority: high type: epic A theme of work that contain sub-tasks type: feature request New feature or request
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants