Files
qibo-final/qibojit-benchmarks/benchmarks/libraries/__init__.py
2026-05-19 17:19:36 +08:00

75 lines
2.4 KiB
Python

def parse(options):
"""Parse options from string.
Args:
options (str): String with options.
It should have the form 'arg1=value1,arg2=value2,...'.
Returns:
dict: {'arg1': value1, 'arg2': value2, ...}
"""
kwargs = {}
if options is not None:
for parameter in options.split(","):
if "=" in parameter:
k, v = parameter.split("=")
kwargs[k] = v
else:
raise ValueError(f"Cannot parse parameter {parameter}.")
return kwargs
def get(backend_name, options=None):
options = parse(options)
if backend_name == "qibo":
from benchmarks.libraries.qibo import Qibo
return Qibo(**options)
elif backend_name == "qiskit":
from benchmarks.libraries.qiskit import Qiskit
return Qiskit(**options)
elif backend_name == "qiskit-gpu":
from benchmarks.libraries.qiskit import QiskitGpu
return QiskitGpu(**options)
elif backend_name == "cirq":
from benchmarks.libraries.cirq import Cirq
return Cirq()
elif backend_name == "qsim":
from benchmarks.libraries.cirq import QSim
return QSim(**options)
elif backend_name == "qsim-gpu":
from benchmarks.libraries.cirq import QSimGpu
return QSimGpu(**options)
elif backend_name == "qsim-cuquantum":
from benchmarks.libraries.cirq import QSimCuQuantum
return QSimCuQuantum(**options)
elif backend_name == "tfq":
from benchmarks.libraries.cirq import TensorflowQuantum
return TensorflowQuantum()
elif backend_name == "qulacs":
from benchmarks.libraries.qulacs import Qulacs
return Qulacs()
elif backend_name == "qulacs-gpu":
from benchmarks.libraries.qulacs import QulacsGpu
return QulacsGpu()
elif backend_name == "qcgpu":
from benchmarks.libraries.qcgpu import QCGPU
return QCGPU()
elif backend_name == "projectq":
from benchmarks.libraries.projectq import ProjectQ
return ProjectQ(**options)
elif backend_name == "hybridq":
from benchmarks.libraries.hybridq import HybridQ
return HybridQ(**options)
elif backend_name == "hybridq-gpu":
from benchmarks.libraries.hybridq import HybridQGPU
return HybridQGPU(**options)
raise KeyError(f"Unknown simulation library {backend_name}.")