Skip to content

Commit

Permalink
chore: deprecating ionq.qpu target (#633)
Browse files Browse the repository at this point in the history
  • Loading branch information
kikomiss authored Aug 14, 2024
1 parent 7f96bb5 commit 0433fba
Show file tree
Hide file tree
Showing 19 changed files with 462 additions and 595 deletions.
2 changes: 0 additions & 2 deletions azure-quantum/azure/quantum/qiskit/backends/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,8 @@

from azure.quantum.qiskit.backends.ionq import (
IonQBackend,
IonQQPUBackend,
IonQAriaBackend,
IonQSimulatorBackend,
IonQQPUQirBackend,
IonQAriaQirBackend,
IonQForteBackend,
IonQForteQirBackend,
Expand Down
84 changes: 0 additions & 84 deletions azure-quantum/azure/quantum/qiskit/backends/ionq.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,15 +34,12 @@

__all__ = [
"IonQBackend",
"IonQQPUBackend",
"IonQSimulatorBackend",
"IonQAriaBackend",
"IonQForteBackend",
"IonQQirBackend",
"IonQSimulatorQirBackend",
"IonQSimulatorNativeBackend",
"IonQQPUQirBackend",
"IonQQPUNativeBackend",
"IonQAriaQirBackend",
"IonQForteQirBackend",
"IonQAriaNativeBackend",
Expand Down Expand Up @@ -133,38 +130,6 @@ def __init__(self, name: str, provider: "AzureQuantumProvider", **kwargs):
super().__init__(configuration=configuration, provider=provider, **kwargs)


class IonQQPUQirBackend(IonQQirBackendBase):
backend_names = ("ionq.qpu",)

def __init__(self, name: str, provider: "AzureQuantumProvider", **kwargs):
"""Base class for interfacing with an IonQ QPU backend"""

default_config = BackendConfiguration.from_dict(
{
"backend_name": name,
"backend_version": __version__,
"simulator": False,
"local": False,
"coupling_map": None,
"description": "IonQ QPU on Azure Quantum",
"basis_gates": ionq_basis_gates,
"memory": False,
"n_qubits": 11,
"conditional": False,
"max_shots": 10000,
"max_experiments": 1,
"open_pulse": False,
"gates": [{"name": "TODO", "parameters": [], "qasm_def": "TODO"}],
"azure": self._azure_config(),
}
)
logger.info("Initializing IonQQPUQirBackend")
configuration: BackendConfiguration = kwargs.pop(
"configuration", default_config
)
super().__init__(configuration=configuration, provider=provider, **kwargs)


class IonQAriaQirBackend(IonQQirBackendBase):
backend_names = ("ionq.qpu.aria-1", "ionq.qpu.aria-2")

Expand Down Expand Up @@ -361,55 +326,6 @@ def _azure_config(self) -> Dict[str, str]:
return config


class IonQQPUBackend(IonQBackend):
backend_names = ("ionq.qpu",)

def __init__(self, name: str, provider: "AzureQuantumProvider", **kwargs):
"""Base class for interfacing with an IonQ QPU backend"""
gateset = kwargs.pop("gateset", "qis")
default_config = BackendConfiguration.from_dict(
{
"backend_name": name,
"backend_version": __version__,
"simulator": False,
"local": False,
"coupling_map": None,
"description": "IonQ QPU on Azure Quantum",
"basis_gates": GATESET_MAP[gateset],
"memory": False,
"n_qubits": 11,
"conditional": False,
"max_shots": 10000,
"max_experiments": 1,
"open_pulse": False,
"gates": [{"name": "TODO", "parameters": [], "qasm_def": "TODO"}],
"azure": self._azure_config(),
"gateset": gateset,
}
)
logger.info("Initializing IonQQPUBackend")
configuration: BackendConfiguration = kwargs.pop(
"configuration", default_config
)
super().__init__(configuration=configuration, provider=provider, **kwargs)


class IonQQPUNativeBackend(IonQQPUBackend):
def __init__(self, name: str, provider: "AzureQuantumProvider", **kwargs):
if "gateset" not in kwargs:
kwargs["gateset"] = "native"
super().__init__(name, provider, **kwargs)

def _azure_config(self) -> Dict[str, str]:
config = super()._azure_config()
config.update(
{
"is_default": False,
}
)
return config


class IonQAriaBackend(IonQBackend):
backend_names = ("ionq.qpu.aria-1", "ionq.qpu.aria-2")

Expand Down
8 changes: 0 additions & 8 deletions azure-quantum/azure/quantum/target/ionq.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,23 +15,20 @@

COST_1QUBIT_GATE_MAP = {
"ionq.simulator" : 0.0,
"ionq.qpu" : 0.00003,
"ionq.qpu.aria-1" : 0.0002205,
"ionq.qpu.aria-2" : 0.0002205,
"ionq.qpu.forte-1" : 0.0002205
}

COST_2QUBIT_GATE_MAP = {
"ionq.simulator" : 0.0,
"ionq.qpu" : 0.0003,
"ionq.qpu.aria-1" : 0.00098,
"ionq.qpu.aria-2" : 0.00098,
"ionq.qpu.forte-1" : 0.00098
}

MIN_PRICE_MAP = {
"ionq.simulator" : 0.0,
"ionq.qpu" : 1.0,
"ionq.qpu.aria-1" : 97.5,
"ionq.qpu.aria-2" : 97.5,
"ionq.qpu.forte-1" : 97.5
Expand All @@ -47,7 +44,6 @@ def int_to_bitstring(k: int, num_qubits: int, measured_qubit_ids: List[int]):
class IonQ(Target):
"""IonQ target."""
target_names = (
"ionq.qpu",
"ionq.simulator",
"ionq.qpu.aria-1",
"ionq.qpu.aria-2",
Expand Down Expand Up @@ -141,10 +137,6 @@ def estimate_cost(
Specify pricing details for your area to get most accurate results.
By default, this function charges depending on the target:
ionq.qpu:
price_1q = 0.00003 USD for a single-qubit gate.
price_2q = 0.0003 USD for a two-qubit gate.
min_price = 1 USD, total minimum price per circuit.
ionq.qpu.aria-1:
price_1q = 0.00022 USD for a single-qubit gate.
price_2q = 0.00098 USD for a two-qubit gate.
Expand Down
Loading

0 comments on commit 0433fba

Please sign in to comment.