Skip to content

Welcome to the Pasqal analog emulators

There are currently two emulators, emu-sv and emu-mps, the specific documentation for which you can access from the list above. As of this writing, the emulators are provided for Linux and macOS but will not work under Windows.

Which emulator to choose

Firstly, it will be useful to look at the list of supported features for emu-sv and emu-mps, since the emulators do not support exactly the same set of features. Secondly, there are in-depth benchmarks available for emu-sv and emu-mps to help determine which emulator, with which parameter settings, is most suitable for the problem you're trying to solve.

As a general guideline, emu-sv with default precision settings is likely to be the best choice for noiseless simulations of up to 25 qubits. Shortly we will release support for noisy simulations using the Lindblad equation, and this will effectively halve the number of qubits that can be simulated. For larger qubit numbers, an emu-sv simulation is unlikely to fit on a gpu, and it is probably much slower than emu-mps, although accuracy will be better. Unless extreme accuracy is required, emu-mps is likely a better choice, and we strongly recommend you read through the documentation for that emulator to ensure you get correct results.

Installation

Warning: installing any emulator will update pulser-core

Using hatch, uv or any pyproject-compatible Python manager

To add emu-sv or emu-mpsto your project, edit your pyproject.toml to add the line

  "<emulator>"

to the list of dependencies.

Using pip or pipx

To install the pipy package using pip or pipx

  1. Create a venv if that's not done yet
$ python -m venv venv
  1. Enter the venv

If you're running Unix:

$ . venv/bin/activate
  1. Install the package
$ pip install <emulator>
# or
$ pipx install <emulator>

Join us on Slack or by e-mail to give us feedback about how you plan to use the emulators or if you require specific feature-upgrades.

Usage

For the time being, the easiest way to learn how to use the emulators is to look at the examples in the repo, the emu-sv notebooks and the emu-mps notebooks.

See also the emulator specific documentation for supported features, benchmarks etc.

Getting in touch

Running a Pulser sequence and getting results

Several example notebooks are included in this documentation. Please see the links provided under usage

More Info

Many usage patterns are shared between all emulators. The computing observable page details how to compute observables (see here). The base classes enforcing the usage pattern are documented here.