Using backends
In SolverConfig, we can specify the backend to use when using a quantum approach. Several backends are available via Qooqit.
Backend configuration
The backend configuration part is set via the BackendConfig class.
| Field | Type | Description |
|---|---|---|
backend |
BackendType |
(optional) Which backend to use (e.g., 'qutip', 'emu_mps', 'emu_sv', 'remote_qpu', 'remote_emumps'). |
username |
str |
(optional) Username for Pasqal Cloud authentication. Only used for remote backends. |
password |
str |
(optional) Password for Pasqal Cloud authentication. Only used for remote backends. |
project_id |
str |
(optional) Project ID for accessing remote Pasqal services. Only used for remote backends. |
device |
NamedDevice | DeviceType | None |
(optional) If None, the backend will pick a reasonable device. If DeviceType, choose a device by its capabilities, e.g. DeviceType.DIGITAL_ANALOG. If NamedDevice, requiest a specific device. Only remote backends make use of NamedDevice. |
dt |
float |
(optional) For a backend that supports customizing the duration of steps, the timestep size can be provided. As of this writing, this parameter is used only by the EmuMPS backends. |
wait |
bool |
(optional) For a remote backend where we submit a batch of jobs, block execution on this statement until all the submitted jobs are terminated. Defaults to False. |
Local backends
Local backends perform simulations locally. The available backends are:
qutipusing the Qutip simulator,emu_mps: emulator based on state of the art tensor network techniques,emu_sv: emulator based on state-vector description.
To use any, simply instantiate a SolverConfig with a BackendConfig as follows:
from qubosolver.config import SolverConfig, BackendConfig
from qoolqit._solvers.types import DeviceType
backend_config = BackendConfig(backend="qutip", device=DeviceType.DIGITAL_ANALOG_DEVICE,)
config = SolverConfig(
use_quantum=True,
backend_config = backend_config,
)
Alternatively use the SolverConfig.from_kwargs method with the BackendConfig parameters:
from qubosolver.config import SolverConfig
from qoolqit._solvers.types import DeviceType
config = SolverConfig.from_kwargs(
use_quantum=True,
backend="qutip",
device=DeviceType.DIGITAL_ANALOG_DEVICE
)
Remote backends
Remote backends submit jobs to a remote server via pasqal-cloud.
For this, we require specifying in BackendConfig the project_id, username and password.
We can target a remote QPU, or emulator among the choices:
remote_qpu,remote_emumps,remote_emutn,remote_emufree: remote emulator based onQutip.
from qubosolver.config import SolverConfig, BackendConfig
from qoolqit._solvers.types import DeviceType
backend_config = BackendConfig(backend="remote_emufree", device=DeviceType.DIGITAL_ANALOG_DEVICE, project_id='pid', username='admin', password='pwd')
config = SolverConfig(
use_quantum=True,
backend_config = backend_config,
)