diff --git a/releasenotes/notes/1.3/optimize-1q-gates-decomposition-ce111961b6782ee0.yaml b/releasenotes/notes/1.3/optimize-1q-gates-decomposition-ce111961b6782ee0.yaml index dbb095827b00..eebc80fa586b 100644 --- a/releasenotes/notes/1.3/optimize-1q-gates-decomposition-ce111961b6782ee0.yaml +++ b/releasenotes/notes/1.3/optimize-1q-gates-decomposition-ce111961b6782ee0.yaml @@ -6,7 +6,3 @@ features_transpiler: contain a :class:`.ControlFlowOp`. This was possible before using the :meth:`.DAGCircuit.op_nodes` method and passing the :class:`.ControlFlowOp` class as a filter, but this new function will perform the operation faster. - - | - Ported the entirety of the :class:`.Optimize1qGatesDecomposition` transpiler - pass to Rust. This improves the runtime performance of the pass between 5x - to 10x. diff --git a/releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml b/releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml deleted file mode 100644 index 5bbf1bdb18df..000000000000 --- a/releasenotes/notes/1.3/oxidize-basis-translator-e246a99118bd9486.yaml +++ /dev/null @@ -1,7 +0,0 @@ -features_transpiler: - - | - The :class:`.BasisTranslator` transpiler pass has been reimplemented - to work purely in Rust, taking advantage of all the other structures - that currently exist there, such as the :class:`.Target`, :class:`.EquivalenceLibrary`, - and the :class:`.DAGCircuit`. The pass itself now runs - 3x to 5x faster than it did in Python. \ No newline at end of file diff --git a/releasenotes/notes/1.3/oxidize-commutation-analysis-d2fc81feb6ca80aa.yaml b/releasenotes/notes/1.3/oxidize-commutation-analysis-d2fc81feb6ca80aa.yaml deleted file mode 100644 index 967a65bcebab..000000000000 --- a/releasenotes/notes/1.3/oxidize-commutation-analysis-d2fc81feb6ca80aa.yaml +++ /dev/null @@ -1,4 +0,0 @@ ---- -features_transpiler: - - | - Added a Rust implementation of :class:`.CommutationAnalysis` in :func:`.analyze_commutations`. diff --git a/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml b/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml new file mode 100644 index 000000000000..82bd98b12444 --- /dev/null +++ b/releasenotes/notes/1.3/oxidize-transpiler-passes-16f2f1c57612e74a.yaml @@ -0,0 +1,53 @@ +--- +features_transpiler: + - | + Most of the transpiler passes required by the preset pass manager have + been ported into Rust. + + * The :class:`.ConsolidateBlocks` pass will now run the equivalent of the + :class:`.Collect2qBlocks` pass internally if it was not run in a pass + manager prior to the pass. Previously, + :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` had to be run before + :class:`.ConsolidateBlocks` for :class:`.ConsolidateBlocks` to do + anything. By doing the collection internally, the overhead from the pass + is reduced. If :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` are + run prior to :class:`.ConsolidateBlocks,` the collected runs by those + passes from the property set are used and there is no change in behavior + for the pass. The pass now runs up to 3x faster than it did with Python. + + * The :class:`.BasisTranslator` transpiler pass has been reimplemented + to work purely from Rust, taking advantage of all the other structures + that currently exist there, such as the :class:`.Target`, :class:`.EquivalenceLibrary`, + and the :class:`.DAGCircuit`. The pass itself now runs + 3x to 5x faster than it did in Python. + + * Added a Rust implementation of :class:`.CommutationAnalysis` in :func:`.analyze_commutations`. + Testing on ASV benchmarks reveals increased performance of up to 3x compared to Python. + + * Port most of the logic of the transpiler pass :class:`~.ElidePermutations` + to Rust. On certain tests the demostrated speedup is between 5x and 10x from + its previous Python implementation. + + * Ported the entirety of the :class:`.Optimize1qGatesDecomposition` transpiler + pass to Rust. This improves the runtime performance of the pass between 5x + to 10x. + + * The :class:`.CommutationChecker` class has been reimplemented in + Rust. This retains the same functionality as before but is now + significantly faster in most cases. Depending on the circuit type + we can observe a speedup of 5x. + + * Added circuit library functions :func:`.pauli_feature_map`, :func:`.z_feature_map`, + :func:`.zz_feature_map` to construct Pauli feature map circuits. These functions + are approximately 8x faster than the current circuit library objects, + :class:`.PauliFeatureMap`, :class:`.ZFeatureMap`, and :class:`.ZZFeatureMap`, + and will replace them in the future. Note, that the new functions return a plain + :class:`.QuantumCircuit` instead of a :class:`.BlueprintCircuit`. From multiple benchmarks + a speedup of up to 8x was observed, in comparison to Python. + + The functions can be used as drop-in replacement:: + + from qiskit.circuit.library import pauli_feature_map, PauliFeatureMap + + fm = pauli_feature_map(20, paulis=["z", "xx", "yyy"]) + also_fm = PauliFeatureMap(20, paulis=["z", "xx", "yyy"]).decompose() diff --git a/releasenotes/notes/1.3/port-elide-permutations-ed91c3d9cef2fec6.yaml b/releasenotes/notes/1.3/port-elide-permutations-ed91c3d9cef2fec6.yaml deleted file mode 100644 index 705e82f0fb6e..000000000000 --- a/releasenotes/notes/1.3/port-elide-permutations-ed91c3d9cef2fec6.yaml +++ /dev/null @@ -1,5 +0,0 @@ ---- -features_transpiler: - - | - Port most of the logic of the transpiler pass :class:`~.ElidePermutations` - to Rust. diff --git a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml index bc7a71c88b5c..16007a719c5b 100644 --- a/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml +++ b/releasenotes/notes/1.3/prepare-1.3.0-7c45598775fc2bbf.yaml @@ -37,4 +37,5 @@ prelude: > improvements to the :class:`.HighLevelSynthesis` transpiler pass, which can now take into account idle auxiliary qubits to find the best available decomposition for a given gate. - * The minimum supported Python version is now 3.9 as Python 3.8 went end of life in 2024-10. Official support for Python 3.13 support was also added in this release. + * The minimum supported Python version is now 3.9 as Python 3.8 went end of life in 2024-10. + Official support for Python 3.13 support was also added in this release. diff --git a/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml b/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml deleted file mode 100644 index df337c4b0916..000000000000 --- a/releasenotes/notes/1.3/rust-commutation-checker-c738e67efa9d292f.yaml +++ /dev/null @@ -1,6 +0,0 @@ ---- -features_transpiler: - - | - The :class:`.CommutationChecker` class has been reimplemented in - Rust. This retains the same functionality as before but is now - significantly faster in most cases. diff --git a/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml b/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml deleted file mode 100644 index a7cecf92e5c7..000000000000 --- a/releasenotes/notes/1.3/rust-consolidation-a791a00380fc78b8.yaml +++ /dev/null @@ -1,13 +0,0 @@ ---- -features_transpiler: - - | - The :class:`.ConsolidateBlocks` pass will now run the equivalent of the - :class:`.Collect2qBlocks` pass internally if it was not run in a pass - manager prior to the pass. Previously, - :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` had to be run before - :class:`.ConsolidateBlocks` for :class:`.ConsolidateBlocks` to do - anything. By doing the collection internally, the overhead from the pass - is reduced. If :class:`.Collect2qBlocks` or :class:`.Collect1qRuns` are - run prior to :class:`.ConsolidateBlocks,` the collected runs by those - passes from the property set are used and there is no change in behavior - for the pass. diff --git a/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml b/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml deleted file mode 100644 index 103e792381ab..000000000000 --- a/releasenotes/notes/1.3/rust-paulifm-1dc7b1c2dc756614.yaml +++ /dev/null @@ -1,16 +0,0 @@ ---- -features_circuits: - - | - Added circuit library functions :func:`.pauli_feature_map`, :func:`.z_feature_map`, - :func:`.zz_feature_map` to construct Pauli feature map circuits. These functions - are approximately 8x faster than the current circuit library objects, - :class:`.PauliFeatureMap`, :class:`.ZFeatureMap`, and :class:`.ZZFeatureMap`, - and will replace them in the future. Note, that the new functions return a plain - :class:`.QuantumCircuit` instead of a :class:`.BlueprintCircuit`. - - The functions can be used as drop-in replacement:: - - from qiskit.circuit.library import pauli_feature_map, PauliFeatureMap - - fm = pauli_feature_map(20, paulis=["z", "xx", "yyy"]) - also_fm = PauliFeatureMap(20, paulis=["z", "xx", "yyy"]).decompose()