Emulators
Tensor Networks (TN)
Tensor networks are powerful mathematical tools for efficiently representing and simulating many-body quantum systems. They are formed by connecting multi-dimensional arrays, called tensors, through a series of contracted indices or bonds, resulting in a compact representation of complex quantum states. This approach is particularly effective for capturing low-entanglement states.
Matrix Product States (MPS) or tensor train (TT) are a specific class of tensor networks that provide a tractable parametrization of quantum states. In MPS, the quantum state is decomposed into a sequence of local tensors with a fixed, limited number of bond dimensions. This decomposition enables the efficient representation and manipulation of quantum states, while preserving essential information about their entanglement structure. As a result, MPS has become a popular choice for simulating and studying various quantum systems, particularly in the context of quantum computations, quantum information theory and condensed matter physics. Follow the links for more details about our emulator
Specs
- You will get good performance for N ≈ 40 for 2D and N ≈ 100 for 1D systems.
- Pulse duration ~ 10 μs
- Choose emulation parameters like the time step
timestep
, number of measurement shotsshots
, maximal tensor bond dimensionmax-bond-dim
etc. Follow the SDK documentation to pass these parameters as configuration options to the emulator. - GPU acceleration
- Supported pulse types :
- ConstantWaveform
- RampWaveform
- BlackmanWaveform
- InterpolatedWaveform with cubic polynomial
- CompositeWaveform NOT SUPPORTED
- CustomWaveform NOT SUPPORTED
- KaiserWaveform NOT SUPPORTED
- Local addressing NOT SUPPORTED
Extra emulator configuration
Some emulators, such as EMU_TN and EMU_FREE, accept further configuration to control the emulation. This is because these emulators are more advanced numerical simulation of the quantum system.
By default, validation rules are more permissive for jobs targeting an emulator than on the Fresnel QPU when submitting jobs to the cloud platform.
You may however wish to validate that your job running on an emulator is compatible with Fresnel. To that extent, set the strict_validation
key in the configuration to True
. Defaults to False.
from pasqal_cloud.device import EmulatorType, EmuFreeConfig, EmuTNConfig
configuration = EmuTNConfig(strict_validation=True)
batch = sdk.create_batch(serialized_sequence, [job1, job2], emulator=EmulatorType.EMU_TN, configuration=configuration)
# or
configuration = EmuFreeConfig(strict_validation=True)
batch = sdk.create_batch(serialized_sequence, [job1, job2], emulator=EmulatorType.EMU_FREE, configuration=configuration)
For EMU_TN you may add the integrator timestep in nanoseconds, the numerical accuracy desired in the tensor network compression, and the maximal bond dimension of tensor network state.
from pasqal_cloud.device import EmulatorType, EmuTNConfig
configuration = EmuTNConfig(dt=10.0, precision="normal", max_bond_dim=100)
batch = sdk.create_batch(serialized_sequence, [job1, job2], emulator=EmulatorType.EMU_TN, configuration=configuration)
For EMU_FREE, you may add some default SPAM noise. Beware this makes your job take much longer.
from pasqal_cloud.device import EmulatorType, EmuFreeConfig
configuration = EmuFreeConfig(with_noise=True)
batch = sdk.create_batch(serialized_sequence, [job1, job2], emulator=EmulatorType.EMU_FREE, configuration=configuration)
Replace the corresponding section in the code examples above with this to add further configuration.