In Qiskit, there are several methods to execute a quantum circuit and get measurement results in a local environment, including simulators (such as AerSimulator, QasmSimulator, Statevector, and fake series), samplers, and estimators.
I am interested in understanding the fundamental purposes of each of these concepts. Are there some shared components in their implementations? From what I understand, samplers and estimators are built upon simulators.
For example, running the following program can get measurement results by simulator and sampler.
from qiskit.circuit import QuantumCircuit
from qiskit.primitives import Sampler as TerraSampler
from qiskit_aer.primitives import SamplerV2 as AerSampler
from qiskit_aer import AerSimulator
n_qubits = 2
qc = QuantumCircuit(n_qubits)
qc.x(0)
qc.cx(0, 1)
qc.cx(0, 1)
qc.measure_all()
result1 = AerSimulator().run([qc]).result()
count1 = result1.get_counts()
print(count1)
pub_result2 = TerraSampler().run([qc]).result()
counts2 = pub_result2.quasi_dists[0]
print(counts2)
pub_result3 = AerSampler().run([qc]).result()
counts3 = pub_result3[0].data.meas.get_counts()
print(counts3)
Reina is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.