Qiskit / qiskit-aer

Aer is a high performance simulator for quantum circuits that includes noise models
https://qiskit.github.io/qiskit-aer/
Apache License 2.0
465 stars 354 forks source link

Aer simulator (stabilizer) only reports results of first 64 qubits - unless you reset the qubits first #2104

Closed rharper2 closed 2 months ago

rharper2 commented 2 months ago

Informations

What is the current behavior?

If you measure, say, 127 qubits, only the results of 64 are returned.

Steps to reproduce the problem

import qiskit
import qiskit_aer as aer
c = qiskit.QuantumCircuit(127,127)
for i in range(127):
    c.x(i)
c.measure(range(127),range(127))
simulator = aer.AerSimulator(method="stabilizer")
print(simulator.num_qubits)

r = simulator.run(c,shots=2000).result()
print(r.get_counts(c))

Gives output:

10000
{'0000000000000000000000000000000000000000000000000000000000000001111111111111111111111111111111111111111111111111111111111111111': 2000}

What is the expected behavior?

Should give output:

10000
{'1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111': 2000}

Suggested solutions

Almost certainly some precision problem.

rharper2 commented 2 months ago

I noticed that the following gives the desired output...

import qiskit
import qiskit_aer as aer
c = qiskit.QuantumCircuit(127,127)
for i in range(127):
    c.reset(i)
for i in range(127):
    c.x(i)
c.measure(range(127),range(127))
simulator = aer.AerSimulator(method="stabilizer")
print(simulator.num_qubits)

r = simulator.run(c,shots=2000).result()
print(r.get_counts(c))

Gives:

10000
{'1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111': 2000}
doichanj commented 2 months ago

This issue should be fixed by PR #2094

doichanj commented 2 months ago

This issue is fixed by Release 0.14.1