Skip to content

Commit

Permalink
Merge pull request #369 from ohuettenhofer/qiskit_gpu
Browse files Browse the repository at this point in the history
Add Qiskit GPU simulator
  • Loading branch information
kottmanj authored Nov 1, 2024
2 parents c746b0f + 6821fd9 commit 5d6e8ae
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 5 deletions.
21 changes: 17 additions & 4 deletions src/tequila/simulators/simulator_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
from tequila.simulators.simulator_base import BackendCircuit, BackendExpectationValue
from tequila.circuit.noise import NoiseModel

SUPPORTED_BACKENDS = ["qulacs_gpu", "qulacs",'qibo', "qiskit", "cirq", "pyquil", "symbolic", "qlm"]
SUPPORTED_NOISE_BACKENDS = ["qiskit", 'cirq', 'pyquil'] # qulacs removed in v.1.9
SUPPORTED_BACKENDS = ["qulacs", "qulacs_gpu", "qibo", "qiskit", "qiskit_gpu", "cirq", "pyquil", "symbolic", "qlm"]
SUPPORTED_NOISE_BACKENDS = ["qiskit", "qiskit_gpu", "cirq", "pyquil"] # qulacs removed in v.1.9
BackendTypes = namedtuple('BackendTypes', 'CircType ExpValueType')
INSTALLED_SIMULATORS = {}
INSTALLED_SAMPLERS = {}
Expand Down Expand Up @@ -43,6 +43,19 @@
HAS_QISKIT = False
HAS_QISKIT_NOISE = False

try:
pkg_resources.require("qiskit-aer-gpu")
from tequila.simulators.simulator_qiskit_gpu import BackendCircuitQiskitGpu, BackendExpectationValueQiskitGpu
HAS_QISKIT_GPU = True
INSTALLED_SIMULATORS["qiskit_gpu"] = BackendTypes(BackendCircuitQiskitGpu, BackendExpectationValueQiskitGpu)
INSTALLED_SAMPLERS["qiskit_gpu"] = BackendTypes(BackendCircuitQiskitGpu, BackendExpectationValueQiskitGpu)
from tequila.simulators.simulator_qiskit_gpu import HAS_NOISE as HAS_QISKIT_GPU_NOISE
if HAS_QISKIT_GPU_NOISE:
INSTALLED_NOISE_SAMPLERS["qiskit_gpu"] = BackendTypes(BackendCircuitQiskitGpu, BackendExpectationValueQiskitGpu)
except (ImportError, DistributionNotFound):
HAS_QISKIT_GPU = False
HAS_QISKIT_GPU_NOISE = False

HAS_QIBO = True
try:
from tequila.simulators.simulator_qibo import BackendCircuitQibo, BackendExpectationValueQibo
Expand Down Expand Up @@ -82,8 +95,8 @@
HAS_QULACS = False

try:
pkg_resources.require("qulacs-gpu")
import qulacs
# pkg_resources.require("qulacs-gpu")
from qulacs import QuantumStateGpu
from tequila.simulators.simulator_qulacs_gpu import BackendCircuitQulacsGpu, BackendExpectationValueQulacsGpu

HAS_QULACS_GPU = True
Expand Down
9 changes: 9 additions & 0 deletions src/tequila/simulators/simulator_qiskit_gpu.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
from tequila.simulators.simulator_qiskit import BackendCircuitQiskit, BackendExpectationValueQiskit


class BackendCircuitQiskitGpu(BackendCircuitQiskit):
STATEVECTOR_DEVICE_NAME = "aer_simulator_statevector_gpu"


class BackendExpectationValueQiskitGpu(BackendExpectationValueQiskit):
BackendCircuitType = BackendCircuitQiskitGpu
2 changes: 1 addition & 1 deletion tests/test_simulator_backends.py
Original file line number Diff line number Diff line change
Expand Up @@ -275,7 +275,7 @@ def test_wfn_multitarget(simulator):
@pytest.mark.parametrize("simulator", tequila.simulators.simulator_api.INSTALLED_SIMULATORS.keys())
def test_wfn_multi_control(simulator):
# currently no compiler, so that test can not succeed
if simulator == 'qiskit':
if simulator in ["qiskit", "qiskit_gpu"]:
return
ac = tq.gates.X([0, 1, 2])
ac += tq.gates.Ry(target=[0], control=[1, 2], angle=2.3 / 2)
Expand Down

0 comments on commit 5d6e8ae

Please sign in to comment.