From b9714c0961083b68965e8c08f768ca096380de46 Mon Sep 17 00:00:00 2001 From: Adrian Roman Date: Sat, 8 Feb 2025 11:49:56 +0200 Subject: [PATCH] For https://github.com/Qiskit/qiskit-aer/issues/2305 --- ...seless-code-MPS-simulator-98ca4717e0612ac2.yaml | 14 ++++++++++++++ .../matrix_product_state/matrix_product_state.hpp | 2 +- .../matrix_product_state_internal.cpp | 6 +----- .../matrix_product_state_internal.hpp | 2 +- 4 files changed, 17 insertions(+), 7 deletions(-) create mode 100644 releasenotes/notes/removed-useless-code-MPS-simulator-98ca4717e0612ac2.yaml diff --git a/releasenotes/notes/removed-useless-code-MPS-simulator-98ca4717e0612ac2.yaml b/releasenotes/notes/removed-useless-code-MPS-simulator-98ca4717e0612ac2.yaml new file mode 100644 index 0000000000..2547584c28 --- /dev/null +++ b/releasenotes/notes/removed-useless-code-MPS-simulator-98ca4717e0612ac2.yaml @@ -0,0 +1,14 @@ +--- +prelude: > + Removed code that was never executed in ``MPS::sample_measure``, also removed + the ``shots`` parameter as it wasn't used. +features: + - | + Probably the compiler can optimize out those things, but the code is cleaner + this way. The ``params`` parameter was removed from ``MPS::sample_measure`` + as it's not used, also a check and unreacheable code from the same function + is removed. + - | + There is no change in behaviour, just code cleanup. + Refer to `#2305 ` + for more details. diff --git a/src/simulators/matrix_product_state/matrix_product_state.hpp b/src/simulators/matrix_product_state/matrix_product_state.hpp index d4b540d6a1..9d96bf9d5b 100644 --- a/src/simulators/matrix_product_state/matrix_product_state.hpp +++ b/src/simulators/matrix_product_state/matrix_product_state.hpp @@ -801,7 +801,7 @@ std::vector State::sample_measure_all(uint_t shots, #pragma omp parallel for if (getenv("PRL_PROB_MEAS")) for (int_t i = 0; i < static_cast(shots); i++) { - auto single_result = qreg_.sample_measure(shots, rng); + auto single_result = qreg_.sample_measure(rng); all_samples[i].from_vector(single_result); } return all_samples; diff --git a/src/simulators/matrix_product_state/matrix_product_state_internal.cpp b/src/simulators/matrix_product_state/matrix_product_state_internal.cpp index 424637c4f0..6b2d117689 100644 --- a/src/simulators/matrix_product_state/matrix_product_state_internal.cpp +++ b/src/simulators/matrix_product_state/matrix_product_state_internal.cpp @@ -1637,7 +1637,7 @@ reg_t MPS::sort_measured_values(const reg_t &input_outcome, // probability. We then update 'mat' by contracting it with the suitable // matrix (0 or 1). -reg_t MPS::sample_measure(uint_t shots, RngEngine &rng) const { +reg_t MPS::sample_measure(RngEngine &rng) const { double prob = 1; reg_t current_measure(num_qubits_); cmatrix_t mat; @@ -1683,10 +1683,6 @@ uint_t MPS::sample_measure_single_qubit(uint_t qubit, double &prob, double rnd, // measurement outcome if (qubit == 0) { mat = q_reg_[qubit].get_data(measurement); - if (qubit != 0) // multiply mat by left lambda - for (uint_t col = 0; col < mat.GetColumns(); col++) - for (uint_t row = 0; row < mat.GetRows(); row++) - mat(row, col) *= lambda_reg_[qubit - 1][row]; } else { mat = mat * q_reg_[qubit].get_data(measurement); } diff --git a/src/simulators/matrix_product_state/matrix_product_state_internal.hpp b/src/simulators/matrix_product_state/matrix_product_state_internal.hpp index 1180e6cddf..f866bcde6c 100644 --- a/src/simulators/matrix_product_state/matrix_product_state_internal.hpp +++ b/src/simulators/matrix_product_state/matrix_product_state_internal.hpp @@ -351,7 +351,7 @@ class MPS { reg_t apply_measure(const reg_t &qubits, const rvector_t &rnds); reg_t apply_measure_internal(const reg_t &qubits, const rvector_t &rands); - reg_t sample_measure(uint_t shots, RngEngine &rng) const; + reg_t sample_measure(RngEngine &rng) const; //---------------------------------------------------------------- // Function name: initialize_from_statevector_internal