Skip to content
Pasqal Documentation

Emulators

Emu-SV: high-performance emulator for systems ≤ 25 qubits based on state-vector description.

Section titled “Emu-SV: high-performance emulator for systems ≤ 25 qubits based on state-vector description.”

Perfectly simulates Rydberg systems in 1D, 2D and 3D with arbitrary atom positions. Emulation can be done both on GPU/CPU leveraging all capacities of the modern HPC cluster.  

Ideal for research projects with small number of qubits, for tests and benchmarking of quantum algorithms.

Emu-MPS: emulator based on state of the art tensor network techniques.

Section titled “Emu-MPS: emulator based on state of the art tensor network techniques.”

Allows exploring large Rydberg systems ≤ 60-80 qubits with CPU/GPU calculations.  

Underlying tensor network engine is based on Matrix Product States — MPS. Therefore the system is emulated with certain approximations. For instance, upper limit on qubit number depends on the pulse laser values and geometry of the problem.  

Ideal for 1D and 2D systems with relatively large numbers of qubits.

Pulser-simulation (Emu_FREE): # emulator based on well-known computation software library Qutip.

Section titled “Pulser-simulation (Emu_FREE): # emulator based on well-known computation software library Qutip.”

Uses a state-vector description and dense linear algebra on CPU, which enables studying systems ≤ 10-12 qubits. This emulator is the most feature-complete, and can be used to benchmark different emulators.

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 (external) .

  • 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 shots shots, maximal tensor bond dimension max-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

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.

Last updated: