Reverse ordering to read out error in sampling measure (#2003)

* reverse ordering of read out error in sampling measure

* fix batch check

---------

Co-authored-by: Hiroshi Horii <hhorii@users.noreply.github.com>
This commit is contained in:
Jun Doi 2023-11-22 13:43:00 +09:00 committed by GitHub
parent 3883f9a7c7
commit 7adacaad36
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 10 additions and 3 deletions

View File

@ -0,0 +1,7 @@
---
fixes:
- |
Fixes order of applying read out error in sampling measure
in circuit executors. Ordering is reversed to fit to the older verison
of Aer.
Also fixed check of bacth execution.

View File

@ -150,7 +150,7 @@ template <class state_t>
void BatchShotsExecutor<state_t>::run_circuit_with_sampling(
Circuit &circ, const Config &config, RngEngine &init_rng,
ResultItr result_it) {
if (circ.num_bind_params == 1 || !enable_batch_multi_shots_) {
if (!enable_batch_multi_shots_) {
return Executor<state_t>::run_circuit_with_sampling(circ, config, init_rng,
result_it);
}

View File

@ -1073,7 +1073,7 @@ void Executor<state_t>::measure_sampler(InputIterator first_meas,
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++) {
for (int_t i = all_samples.size() - 1; i >= 0; i--) {
creg.initialize(num_memory, num_registers);
// process memory bit measurements

View File

@ -863,7 +863,7 @@ void MultiStateExecutor<state_t>::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;
for (int_t i = 0; i < all_samples.size(); i++) {
for (int_t i = all_samples.size() - 1; i >= 0; i--) {
ClassicalRegister creg = state.creg();
// process memory bit measurements