From a59e31934703e57e3a4115a4fd55a80fcd4c018f Mon Sep 17 00:00:00 2001 From: Jun Doi Date: Fri, 4 Aug 2023 13:13:05 +0900 Subject: [PATCH] fix MPI shot-branching sampling --- ...ed5d8ec.yaml => add_executor-a03f2d23cf6f4ca9.yaml} | 0 src/simulators/multi_state_executor.hpp | 10 ++-------- 2 files changed, 2 insertions(+), 8 deletions(-) rename releasenotes/notes/{add_executor-ba4870f86ed5d8ec.yaml => add_executor-a03f2d23cf6f4ca9.yaml} (100%) diff --git a/releasenotes/notes/add_executor-ba4870f86ed5d8ec.yaml b/releasenotes/notes/add_executor-a03f2d23cf6f4ca9.yaml similarity index 100% rename from releasenotes/notes/add_executor-ba4870f86ed5d8ec.yaml rename to releasenotes/notes/add_executor-a03f2d23cf6f4ca9.yaml diff --git a/src/simulators/multi_state_executor.hpp b/src/simulators/multi_state_executor.hpp index 04a91cc061..98ffd5aa33 100644 --- a/src/simulators/multi_state_executor.hpp +++ b/src/simulators/multi_state_executor.hpp @@ -736,12 +736,8 @@ void MultiStateExecutor::measure_sampler(InputIterator first_meas, meas_qubits.end()); // Generate the samples - auto timer_start = myclock_t::now(); std::vector all_samples; all_samples = sample_measure(state, meas_qubits, shots, rng); - auto time_taken = - std::chrono::duration(myclock_t::now() - timer_start).count(); - result.metadata.add(time_taken, "sample_measure_time"); // Make qubit map of position in vector of measured qubits std::unordered_map qubit_map; @@ -767,9 +763,8 @@ void MultiStateExecutor::measure_sampler(InputIterator first_meas, (memory_map.empty()) ? 0ULL : 1 + memory_map.rbegin()->first; uint_t num_registers = (register_map.empty()) ? 0ULL : 1 + register_map.rbegin()->first; - ClassicalRegister creg; for (int_t i = 0; i < all_samples.size(); i++) { - creg = state.creg(); + ClassicalRegister creg = state.creg(); // process memory bit measurements for (const auto &pair : memory_map) { @@ -788,8 +783,7 @@ void MultiStateExecutor::measure_sampler(InputIterator first_meas, // save creg to gather if (Base::num_process_per_experiment_ > 1) { - for (int_t j = 0; j < shots; j++) - cregs_[branch.shot_index() + j] = creg; + cregs_[branch.shot_index() + i] = creg; } else { std::string memory_hex = creg.memory_hex(); result.data.add_accum(static_cast(1ULL), "counts", memory_hex);