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

[Oxidize BasisTranslator]: Move the rest of the BasisTranslator to Rust. #13237

Merged
merged 12 commits into from
Oct 31, 2024

Conversation

raynelfss
Copy link
Contributor

@raynelfss raynelfss commented Sep 27, 2024

Fixes #12246

Summary

This is the final act of the efforts to move the BasisTranslator transpiler pass into Rust. With many of the parts of this pass already living in Rust, the following commits attempt to bring in the final changes to allow complete operation of this pass in the Rust space (with of course some interaction with Python.)

Details and comments

The way this works is by keeping the original BasisTranslator python class, and have it call a rust-space counterpart of the run method (now called base_run) which will perform all of the operations leveraging the existent Rust API's available for the Target (#12292), EquivalenceLibrary(#12585) and the BasisTranslator methods basis_search (#12811) and compose_transforms(#13137).

All of the inner methods will have private visibility and will not be accessible to Python as they're intended to be internal by design.

By removing the extra layers of conversion we should be seeing a considerable speed-up, alongside all of the other incremental improvements we have made.

Changes:

  • Add the pyo3 class/struct BasisTranslator that will contain all of the main data used by the transpiler pass to perform its operation. Ammended by 81bdec4 in favor of a pyfunction.
  • Convert the target_basis into a set manually from python before sending it into the Rust space.
  • Remove the exposure of basis_search and compose_transforms to python.
  • Change basis_search so that it accepts references to HashSet instances instead of accepting a HashSet<&str> instance.
  • Change inner method's visibility for basis_search and compose_transform modules in rust.
  • Expose the exception imports from Target to the accelerate crate.
  • Expose DAGCircuit::copy_empty_like to the rest of the crates.
  • Remove all of the unused imports in the Python-side BasisTranslator.

Blockers:

Once these changes have merged this branch will be properly rebased.

@raynelfss raynelfss added on hold Can not fix yet performance Changelog: None Do not include in changelog Rust This PR or issue is related to Rust code in the repository labels Sep 27, 2024
@raynelfss raynelfss added this to the 1.3.0 milestone Sep 27, 2024
@raynelfss raynelfss requested a review from a team as a code owner September 27, 2024 23:27
@qiskit-bot
Copy link
Collaborator

One or more of the following people are relevant to this code:

  • @Qiskit/terra-core

@coveralls
Copy link

coveralls commented Sep 27, 2024

Pull Request Test Coverage Report for Build 11614982733

Details

  • 570 of 651 (87.56%) changed or added relevant lines in 2 files are covered.
  • 25 unchanged lines in 5 files lost coverage.
  • Overall coverage decreased (-0.03%) to 88.72%

Changes Missing Coverage Covered Lines Changed/Added Lines %
crates/accelerate/src/basis/basis_translator/mod.rs 568 649 87.52%
Files with Coverage Reduction New Missed Lines %
qiskit/transpiler/target.py 1 93.84%
crates/accelerate/src/two_qubit_decompose.rs 1 92.09%
crates/qasm2/src/lex.rs 5 91.73%
crates/circuit/src/dag_node.rs 6 80.2%
crates/qasm2/src/parse.rs 12 97.15%
Totals Coverage Status
Change from base Build 11613885904: -0.03%
Covered Lines: 76371
Relevant Lines: 86081

💛 - Coveralls

@raynelfss
Copy link
Contributor Author

raynelfss commented Sep 28, 2024

Here's what the benchmarks look like across the board. I'd like to have better ones to show so if you'd like to suggest one I should run please leave it in a comment:


basis_translator

Change Before [43feab3] After [14efd38] Ratio Benchmark (Parameter)
- 61.9±0.6ms 18.3±0.2ms 0.3 passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['u', 'cx', 'id'])
- 77.0±0.3ms 20.9±0.1ms 0.27 passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['rz', 'x', 'sx', 'cx', 'id'])
- 173±1ms 44.0±0.4ms 0.25 passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['u', 'cx', 'id'])
- 247±2ms 60.9±1ms 0.25 passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['u', 'cx', 'id'])
- 222±0.9ms 51.0±1ms 0.23 passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['rz', 'x', 'sx', 'cx', 'id'])
- 305±1ms 67.0±1ms 0.22 passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['rz', 'x', 'sx', 'cx', 'id'])
- 122±1ms 25.1±0.2ms 0.21 passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])
- 374±2ms 65.9±1ms 0.18 passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])
- 540±4ms 94.3±2ms 0.17 passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])

SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
PERFORMANCE INCREASED.


utility scale

Change Before [43feab3] After [14efd38] Ratio Benchmark (Parameter)
- 137±2ms 124±0.6ms 0.9 utility_scale.UtilityScaleBenchmarks.time_bv_100('cz')
- 6.86±0.1ms 6.15±0.08ms 0.9 utility_scale.UtilityScaleBenchmarks.time_bvlike('ecr')
- 6.91±0.07ms 6.14±0.01ms 0.89 utility_scale.UtilityScaleBenchmarks.time_bvlike('cx')
- 392±2ms 345±2ms 0.88 utility_scale.UtilityScaleBenchmarks.time_qaoa('cx')
- 1.39±0.01s 1.22±0s 0.88 utility_scale.UtilityScaleBenchmarks.time_qft('ecr')
- 1.40±0.01s 1.22±0s 0.87 utility_scale.UtilityScaleBenchmarks.time_qft('cz')
- 192±0.6ms 164±1ms 0.85 utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('cx')
- 585±7ms 484±3ms 0.83 utility_scale.UtilityScaleBenchmarks.time_qaoa('cz')
- 264±3ms 220±0.7ms 0.83 utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('cz')
- 269±1ms 224±2ms 0.83 utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('ecr')
- 569±3ms 468±2ms 0.82 utility_scale.UtilityScaleBenchmarks.time_qaoa('ecr')
- 1.31±0.01s 1.04±0.01s 0.79 utility_scale.UtilityScaleBenchmarks.time_qv('cx')
- 1.78±0.01s 1.39±0s 0.78 utility_scale.UtilityScaleBenchmarks.time_qv('cz')
- 1.70±0.01s 1.33±0.01s 0.78 utility_scale.UtilityScaleBenchmarks.time_qv('ecr')

SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
PERFORMANCE INCREASED.


randomized benchmarking

Change Before [43feab3] <oxidize-basis-translator~1^2> After [14efd38] Ratio Benchmark (Parameter)
- 9.25±0s 4.36±0.02s 0.47 randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile([0, 1])
- 9.29±0.02s 4.38±0.01s 0.47 randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile_single_thread([0, 1])
- 4.54±0.01s 1.68±0.01s 0.37 randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile([0])
- 4.54±0.02s 1.68±0s 0.37 randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile_single_thread([0])

SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
PERFORMANCE INCREASED.

Fixes Port `BasisTranslator` to Rust Qiskit#12246

This is the final act of the efforts to move the `BasisTranslator` transpiler pass into Rust. With many of the parts of this pass already living in Rust, the following commits attempt to bring in the final changes to allow complete operation of this pass in the Rust space (with of course some interaction with Python.)

Methodology:
The way this works is by keeping the original `BasisTranslator` python class, and have it store the rust-space counterpart (now called `CoreBasisTranslator`) which will perform all of the operations leveraging the existent Rust API's available for the `Target` (Qiskit#12292), `EquivalenceLibrary`(Qiskit#12585) and the `BasisTranslator` methods `basis_search` (Qiskit#12811) and `compose_transforms`(Qiskit#13137).

All of the inner methods will have private visibility and will not be accessible to `Python` as they're intended to be internal by design.

By removing the extra layers of conversion we should be seeing a considerable speed-up, alongside all of the other incremental improvements we have made.

Changes:

- Add the pyo3 class/struct `BasisTranslator` that will contain allof the main data used by the transpiler pass to perform its operation.
- Convert the `target_basis` into a set manually from python before sending it into the Rust space.
- Remove the exposure of `basis_search` and `compose_transforms` to python.
- Change `basis_search` so that it accepts references to `HashSet` instances instead of accepting a `HashSet<&str>` instance.
- Change inner method's visibility for `basis_search` and `compose_transform` modules in rust.
- Expose the exception imports from `Target` to the `accelerate` crate.
- Expose `DAGCircuit::copy_empty_like` to the rest of the crates.
- Remove all of the unused imports in the Python-side `BasisTranslator`.

Blockers:
- [ ] Qiskit#12811
@raynelfss raynelfss force-pushed the oxidize-basis-translator branch from 14efd38 to 3c00fdd Compare October 8, 2024 15:01
@raynelfss raynelfss removed the on hold Can not fix yet label Oct 8, 2024
raynelfss and others added 4 commits October 8, 2024 11:47
- Remove extra copies of `target`, `target_basis`, `equiv_lib`, and `min_qubits`.
- Remove unnecessary mutability in `apply_transforms` and `replace_node`.
- Using this method avoids the creation of a datastructure in rust and the overhead of deserializing rust structures which can be overly slow due to multiple cloning. With this update, since the `BasisTranslator` never mutates, it is better to not store anything in Rust.
@raynelfss
Copy link
Contributor Author

The latest updates remove the intermediate struct which also resolves the overhead of deserialization when performing multithreaded operations, here are some benchmarks after the update vs the latest main:

All benchmarks that improved (that I could find):

Change Before [90e92a4] After [82d22f1] Ratio Benchmark (Parameter)
- 1.37±0.01s 1.23±0.01s 0.90 utility_scale.UtilityScaleBenchmarks.time_qft('cz')
- 382±2ms 339±4ms 0.89 utility_scale.UtilityScaleBenchmarks.time_qaoa('cx')
- 1.36±0.01s 1.21±0.01s 0.89 utility_scale.UtilityScaleBenchmarks.time_qft('ecr')
- 183±3ms 164±1ms 0.89 utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('cx')
- 245±2ms 217±3ms 0.89 utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('cz')
- 250±2ms 220±2ms 0.88 utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('ecr')
- 560±3ms 480±5ms 0.86 utility_scale.UtilityScaleBenchmarks.time_qaoa('cz')
- 1.20±0.01s 1.03±0s 0.86 utility_scale.UtilityScaleBenchmarks.time_qv('cx')
- 550±1ms 465±3ms 0.84 utility_scale.UtilityScaleBenchmarks.time_qaoa('ecr')
- 1.62±0.01s 1.37±0.01s 0.84 utility_scale.UtilityScaleBenchmarks.time_qv('cz')
- 1.60±0.01s 1.33±0.01s 0.83 utility_scale.UtilityScaleBenchmarks.time_qv('ecr')
- 6.31±0.01s 4.96±0s 0.79 randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile_single_thread([0, 1])
- 2.53±0.01s 2.01±0.01s 0.79 randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile_single_thread([0])
- 59.0±0.5ms 18.0±0.2ms 0.31 passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['u', 'cx', 'id'])
- 73.8±0.5ms 20.7±0.06ms 0.28 passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['rz', 'x', 'sx', 'cx', 'id'])
- 169±0.8ms 43.2±1ms 0.26 passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['u', 'cx', 'id'])
- 243±2ms 59.9±1ms 0.25 passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['u', 'cx', 'id'])
- 213±3ms 49.3±2ms 0.23 passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['rz', 'x', 'sx', 'cx', 'id'])
- 297±3ms 66.9±1ms 0.23 passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['rz', 'x', 'sx', 'cx', 'id'])
- 120±1ms 25.0±0.09ms 0.21 passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])
- 367±5ms 66.5±0.7ms 0.18 passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])
- 521±5ms 94.6±2ms 0.18 passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])

SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
PERFORMANCE INCREASED.

@ElePT ElePT self-assigned this Oct 21, 2024
Copy link
Contributor

@ElePT ElePT left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks a lot Ray! I think that the PR looks good, I just left a couple of very high-level comments and a reminder that a merge conflict has come up :)


#[allow(clippy::too_many_arguments)]
#[pyfunction(name = "base_run", signature = (dag, equiv_lib, qargs_with_non_global_operation, min_qubits, target_basis=None, target=None, non_global_operations=None))]
fn run(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Have you considered moving these functions to a new basis_translator.rs file? I know it's also the way the target code is structured but I personally find looking for source code in mod.rs super counter-intuitive.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could do that, but I wanted to keep the main functions as part of the module of basis_translator. Since we have more functions that have their own directories within the module, it made sense for me to keep the main functionality in the mod.rs file. If it's better to have it all be part of a basis_translator.rs file and to ditch the module file structure, I could do that. But I'd like to keep at least the basis folder for all basis-related transpiler passes that end up in Rust.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would for sure advocate for keeping the basis folder, and a module structure, it's really just the source code being in mod.rs that bugs me. This might be my problem because I mentally associate mod.rs to __init__.py, and it's anyway a minor suggestion that could be applied in a follow-up.

crates/accelerate/src/basis/basis_translator/mod.rs Outdated Show resolved Hide resolved
Ok((out_dag, is_updated))
}

fn replace_node(
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you think it would make sense to eventually expose this functionality as a DAGCircuit method?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not quite sure, especially because of the instr_map argument (Which could easily be changed to work with another DAGCircuit and Param collection). One thing I'm certain of is that if we do add it, we need to change the name as it is a little misleading because we're not replacing any nodes but rather copying over nodes.

@ElePT
Copy link
Contributor

ElePT commented Oct 28, 2024

Another note: it might be nice to add a release note pointing out the performance improvements in the transpiler pass! I know we don't do this consistently, but given that you have run a lot of benchmarks and the improvement is great, I think it would be a good addition.

raynelfss and others added 3 commits October 29, 2024 13:52
- Use `QuantumCircuit._has_calibration_for()` when trying to obtain calibrations from a `QuantumCircuit` due to the deprecation of the `Pulse` package.
@raynelfss
Copy link
Contributor Author

Latest benchmark run (after #13141 merged)

Change Before [5e39fc1] After [e369460] Ratio Benchmark (Parameter)
- 12.6±0.4ms 11.4±0.1ms 0.91 transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm(2)
- 15.9±0.2ms 14.4±0.4ms 0.91 transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(3)
- 1.49±0.02s 1.35±0.01s 0.91 utility_scale.UtilityScaleBenchmarks.time_qft('ecr')
- 15.4±0.09ms 13.7±0.1ms 0.89 transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(2)
- 48.3±0.8ms 43.0±0.5ms 0.89 transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(3)
- 325±4ms 289±2ms 0.89 utility_scale.UtilityScaleBenchmarks.time_qaoa('cx')
- 141±2ms 125±1ms 0.88 utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('cx')
- 19.9±0.6ms 17.2±0.3ms 0.87 transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm(1)
- 33.3±0.6ms 28.8±0.3ms 0.87 transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(2)
- 239±4ms 206±0.7ms 0.86 transpiler_levels.TranspilerLevelBenchmarks.time_quantum_volume_transpile_50_x_20(2)
- 169±1ms 145±1ms 0.86 utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('cz')
- 455±3ms 388±3ms 0.85 utility_scale.UtilityScaleBenchmarks.time_qaoa('cz')
- 17.1±0.4ms 14.2±0.1ms 0.84 transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm(0)
- 25.3±0.1ms 21.3±0.08ms 0.84 transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(1)
- 444±5ms 374±0.9ms 0.84 utility_scale.UtilityScaleBenchmarks.time_qaoa('ecr')
- 171±2ms 144±1ms 0.84 utility_scale.UtilityScaleBenchmarks.time_square_heisenberg('ecr')
- 22.0±0.1ms 18.3±0.3ms 0.83 transpiler_levels.TranspilerLevelBenchmarks.time_transpile_from_large_qasm_backend_with_prop(0)
- 879±10ms 734±2ms 0.83 utility_scale.UtilityScaleBenchmarks.time_qv('cx')
- 1.73±0s 1.40±0.01s 0.81 randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile([0])
- 4.54±0.08s 3.68±0.03s 0.81 randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile_single_thread([0, 1])
- 1.10±0s 890±7ms 0.81 utility_scale.UtilityScaleBenchmarks.time_qv('cz')
- 1.06±0.01s 851±2ms 0.81 utility_scale.UtilityScaleBenchmarks.time_qv('ecr')
- 4.58±0.06s 3.69±0.02s 0.8 randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile([0, 1])
- 1.76±0.01s 1.39±0s 0.79 randomized_benchmarking.RandomizedBenchmarkingBenchmark.time_ibmq_backend_transpile_single_thread([0])
- 21.4±0.5ms 16.6±0.2ms 0.78 transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(1)
- 115±0.9ms 85.6±0.7ms 0.75 transpiler_levels.TranspilerLevelBenchmarks.time_quantum_volume_transpile_50_x_20(1)
- 102±0.5ms 69.9±0.7ms 0.69 transpiler_levels.TranspilerLevelBenchmarks.time_quantum_volume_transpile_50_x_20(0)
- 18.2±0.4ms 12.4±0.2ms 0.68 transpiler_levels.TranspilerLevelBenchmarks.time_transpile_qv_14_x_14(0)
- 45.9±0.8ms 15.3±0.2ms 0.33 passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['u', 'cx', 'id'])
- 56.8±0.6ms 17.6±0.8ms 0.31 passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['rz', 'x', 'sx', 'cx', 'id'])
- 130±0.4ms 38.3±0.7ms 0.29 passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['u', 'cx', 'id'])
- 188±1ms 52.8±0.2ms 0.28 passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['u', 'cx', 'id'])
- 161±2ms 43.4±0.3ms 0.27 passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['rz', 'x', 'sx', 'cx', 'id'])
- 227±2ms 60.5±1ms 0.27 passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['rz', 'x', 'sx', 'cx', 'id'])
- 91.2±2ms 22.4±0.7ms 0.25 passes.MultipleBasisPassBenchmarks.time_basis_translator(5, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])
- 278±4ms 61.2±0.2ms 0.22 passes.MultipleBasisPassBenchmarks.time_basis_translator(14, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])
- 393±4ms 84.5±0.3ms 0.21 passes.MultipleBasisPassBenchmarks.time_basis_translator(20, 1024, ['rx', 'ry', 'rz', 'r', 'rxx', 'id'])

SOME BENCHMARKS HAVE CHANGED SIGNIFICANTLY.
PERFORMANCE INCREASED.

ElePT
ElePT previously approved these changes Oct 31, 2024
Copy link
Contributor

@ElePT ElePT left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Alright, I think this looks good to merge. We can leave the release note suggestion for the release preparation PR if you'd like.

@raynelfss raynelfss added this pull request to the merge queue Oct 31, 2024
Merged via the queue into Qiskit:main with commit f3bac5a Oct 31, 2024
17 checks passed
@raynelfss raynelfss deleted the oxidize-basis-translator branch October 31, 2024 20:31
raynelfss added a commit to raynelfss/qiskit that referenced this pull request Nov 19, 2024
raynelfss added a commit to raynelfss/qiskit that referenced this pull request Nov 21, 2024
raynelfss added a commit to raynelfss/qiskit that referenced this pull request Nov 25, 2024
raynelfss added a commit to raynelfss/qiskit that referenced this pull request Nov 27, 2024
raynelfss added a commit to raynelfss/qiskit that referenced this pull request Nov 27, 2024
github-merge-queue bot pushed a commit that referenced this pull request Nov 28, 2024
* Initial: Change version to 3.0
- Move loose release notes.

* Update cargo dependencies in `Cargo.lock`

* 1st round (to be rebased)

* Apply suggestions from code review

Co-authored-by: Rebecca Dimock <[email protected]>

* Apply suggestions from code review

Co-authored-by: Julien Gacon <[email protected]>

* Check for typos in any release notes.

Co-authored-by: Rebecca Dimock <[email protected]>
Co-authored-by: Julien Gacon <[email protected]>
Co-authored-by: Elena Peña Tapia <[email protected]>

* Add missing release note for #13237

* Move new missing release note to 1.3 folder

* Apply suggestions from code review

Co-authored-by: Rebecca Dimock <[email protected]>

* Apply code suggestions from code review
Co-authored-by: Rebecca Dimock <[email protected]>
Co-authored-by: Julien Gacon <[email protected]>

* More code review comments

Co-authored-by: Rebecca Dimock <[email protected]>

* Add prelude note

* Fix: Incorrent indentation of prelude release note.

* Fix: Spelling errors and broken links.

* Move release note to 1.3 folder

* Update prepare-1.3.0-7c45598775fc2bbf.yaml

Co-authored-by: Elena Peña Tapia <[email protected]>

* Move release notes from 1.1, 1.2 into their respective folders.

* Apply suggestions from code review

Co-authored-by: Matthew Treinish <[email protected]>

* Apply suggestions from code review

Co-authored-by: Matthew Treinish <[email protected]>

* More review comments

Co-authored-by: Matthew Treinish <[email protected]>

* Move latest release note

* Fix a couple of sphinx formatting errors

* Change wording on prelude

* Update releasenotes/notes/1.3/deprecate-basic-simulator-configuration-9d782925196993e9.yaml

* Update releasenotes/notes/1.3/pauli-evo-plugins-612850146c3f7d49.yaml

Co-authored-by: Julien Gacon <[email protected]>

* More corrections on release notes

Co-authored-by: Julien Gacon <[email protected]>
Co-authored-by: Alexander Ivrii <[email protected]>

* Apply suggestions to prelude note

Co-authored-by: Matthew Treinish <[email protected]>

* Consolidate transpiler pass port related release notes

* Move in new release note

* Modify new release note

* Add missing transpiler passes to the Rust epic
- Restored some deleted release notes.
- Fix formatting issues.

* Remove stray release notes

* Fix: Use plot directive effectively

* Remove all 1.2 release notes and build from 1.3.0b1

Due to how we end up branching 1.2.0 without a tag this is confusing
reno's version detection because on the stable/1.3 branch there is no
tag before 1.3.0b1 associated with any of the release notes for 1.2.0.
This commit just removes all the release notes to fix this.

Additionally, this corrects the earliest-version field in the sphinx
directive for reno so we include the notes associated with 1.3.0b1.

* Update transpiler pass porting note

* Copy edit most release notes

* Fix typos

* Slight reword in oxidize-transppiler-passes release note

---------

Co-authored-by: Rebecca Dimock <[email protected]>
Co-authored-by: Julien Gacon <[email protected]>
Co-authored-by: Elena Peña Tapia <[email protected]>
Co-authored-by: Matthew Treinish <[email protected]>
Co-authored-by: Alexander Ivrii <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changelog: None Do not include in changelog performance priority: high Rust This PR or issue is related to Rust code in the repository
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Port BasisTranslator to Rust
4 participants