Skip to content

Releases: Quandela/Perceval

v1.2.3

17 Jun 12:02
87f8488

Choose a tag to compare

New features

  • Arithmetic operations can now be applied on BSDistribution
    • "+" and "-" between BSDistributions with the same number of modes
    • "*" and "/" between floats and BSDistributions

Improvements

  • HTTP error message is now clearer

Breaking changes

  • The BSDistribution internal representation has been changed. It must now be imported directly from perceval and no longer from exqalibur

You can contact us on Quandela community forum

v1.2.2

04 Jun 17:14
bf80c96

Choose a tag to compare

Improvements

  • Sped up the creation of BS components

Bug fixes

  • Fixed Sampler's iterations crashing when used with a RemoteProcessor
  • Numeric overflows in backend computations are now properly caught and raised

v1.2.1 The Royal Court

20 May 10:57
29918db

Choose a tag to compare

New features

  • The main computation classes have been ported to Exqalibur
    • Noisy computations should be faster and use less memory
    • SLOS is now fully in Exqalibur by default
    • Simulators (both probability and sampling) are now in Exqalibur, and will be used by default if the backends exists in Exqalibur (e.g. SLOS, Clifford)
  • RemoteProcessor now have a get_current_noise() method that returns a NoiseModel corresponding to its performance.
  • RemoteProcessor specs are now a dedicated object type that ensures some fields are always available. This should also provide code hints for your IDE
  • Fourier interferometers can now be constructed through a helper method of the Unitary class

Improvements

  • The "postselect" can now be changed in the Sampler's iterations
  • The Unitary class now have a random() method to make a random unitary.
  • The Unitary class can now take directly a numpy array instead of a Matrix

Bug fixes

  • RemoteProcessor's experiment can now be changed without breaking it
  • RemoteProcessor was raising an error when having asymetrical heralds
  • The precision in the Sampler's probability computations depended on the presence of iterations
  • The Grover's search notebook is now closer to the process proposed in its source material
  • The modulus fidelity was returning complex values
  • Circuit deserialization have been fixed for nested circuits with parameters
  • Optical components could added after detectors in some cases

Breaking changes

  • Although some classes were ported to Exqalibur, their python versions can still be accessed if needed
    • No class name has been changed, so Simulator or SLOSBackend still points to the python version
    • The python SLOS is still available in Processors under the name "SLOS_LEGACY"
  • Tokens that were saved before perceval 0.13 will no longer be loaded by perceval due to previous changes to their storage
    • Loading them and saving them in a perceval 1.1 should be enough to do the transition
  • Importing the Processor class from the components submodule is now deprecated
    • Processor should now be imported directly from perceval's root, or from the runtime submodule
  • The new PlatformSpecs object that is now returned by RemoteProcessor.specs should be accessed through its attributes and no longer as a dictionary. While this remains possible, it is now deprecated.
  • Catalog items' build_processor() is now deprecated. build_experiment() should be used instead

A detailed documentation on how to update your Perceval code to version 1.2 is available here: https://perceval.quandela.net/docs/v1.2/legacy.html

You can contact us on Quandela community forum

v1.1.0 The Round Table

20 Nov 12:47
aad5f0b

Choose a tag to compare

New features

  • Python 3.14 is now supported.
  • JobGroup
    • Two new async methods to launch jobs, launch_async_jobs and relaunch_async_failed_jobs, that launch as many jobs as possible.
    • New cancel_all method.
    • Jobs coming from a JobGroup should now be grouped together on the Quandela Cloud interface using the name of the JobGroup.
  • PPNR detectors have a new wire_efficiency parameter, allowing to represent losses directly within the detector.
  • The cloud target url can now be saved in RemoteConfig.

Improvements

  • PersistentData folder can now be specified using a PCVL_PERSISTENT_PATH environment variable, or falls back to a temp folder if the default path is not writable.
  • Sped-up computation with Heralds and non-perfect detectors.
  • HTTP errors received during the use of a RemoteProcessor or a RemoteJob are more explicit.
  • SLAP backend can now directly simulate feed-forward in usual cases.

Bug fixes

  • Duplicated Parameter names are now correctly detected when inserting a new component into a Processor.
  • Processor.get_parameters now successfully gives the parameters defined in any inserted FFCircuitProvider.
  • RemoteProcessor.estimate_required_shots and RemoteProcessor.estimate_expected_samples now work with non-unitary experiments.
  • Conversion from BSDistribution to BSCount or BSSamples was forgetting the 0-photon states.
  • JobGroup was unable to take a Job containing an iteration list containing an input state or a noise model.
  • PNR detectors can now limit the number of photons.
  • Tomography will now work with RemoteProcessor.

Breaking changes

Even though the changes in the API brought by the 1.1.0 version were targeted to be minimal, there are still a few breaking changes:

  • Following Python cycle of life, python 3.9 is no longer supported.
  • Linux version requirement has been increased. We now support:
    • Debian 10+
    • Ubuntu 18.10+
    • Fedora 29+
    • CentOS/RHEL 8+
  • RemoteConfig.set_cloud_maximal_job_count is deprecated as JobGroup now retrieves the number of launchable jobs directly from the cloud.
  • The order of the parameters in Circuit.compute_unitary was inconsistent with the order for this method on components, so it has been changed.
  • The .copy() methods now perform deepcopies (was previously something between shallow and deep copies). This method has been removed for Processors.

A detailed documentation on how to update your Perceval code to version 1.1 is available here: https://perceval.quandela.net/docs/v1.1/legacy.html

You can contact us on Quandela community forum

v1.0.1 - The Grail Encounter

22 Sep 13:05
2746d65

Choose a tag to compare

Improvements

  • In legacy, we clarified that BasicState with distinguishability noise should use the new NoisyFockState format (i.e. "|{0}>" instead of "|{_:0}>")

Bug fixes

  • Fix Expression and Parameter copy.
  • Circuit and Experiment containing several times the same Parameter can now be copied properly using .copy().
  • Simulator allowed AnnotatedFockState inputs when it shouldn't
  • BasicState can be initialised from a numpy.array again
  • Fixed Two-particle bosonic-fermionic quantum walk example notebook
  • Fixed typos and missing links in the user documentation

v1.0.0 - The Grail Encounter

04 Sep 08:39
1638dea

Choose a tag to compare

After a long wait, Perceval has finally reached version 1!

New features and reasons to upgrade

  • The user documentation has been completely revamped.

    • Its improved structure is more natural, especially for newcomers,
    • The tutorials section was split in lessons divided into three levels (beginner, advanced and expert),
    • A particular care was given to Perceval and exqalibur code reference which now covers all existing features!
  • It is now possible to send Experiments containing feed-forward to the Cloud. Please note that only a limited list of platforms can handle feed-forward (at the time of its release, only "sim:slos" has this capability).

  • Noisy simulations were optimised a lot, through an improved preprocessing of noisy input states, the use of light-weight FockState representation during computations and an improved algorithm. It is now consuming way less memory and shows speed-ups up to 50x on larger noisy simulations.

Improvements

  • CircuitOptimizer now supports an initial guess

  • A Herald can be added on only one side of an Experiment, making it asymmetrical (user input state and output state won't have the same size anymore)

  • Better probability threshold management in chained tensor products of distributions

  • Use herald values during an imperfect Detector simulation

  • Heralds and PostSelect are now transmitted between simulation layers for LC and TD components

  • Optimized usage of an FSMask in SLAP

  • Optimized the SLAP.prob_distribution call

  • Optimized the Source model algorithm (by moving it to exqalibur)

  • NoiseModel now provides pythonic access to its attributes

  • A request payload may now be generated without connecting to a Cloud provider

  • Enhanced Scaleway provider code

  • Shor's algorithm example notebook has been modernised

  • Rendering

    • pdisplay handles BSSamples
    • Sped up the rendering of large SVDistribution
  • Remote computing

    • Perceval now checks a new constraint from remote platforms, telling whether they can handle multiple input photons per mode
    • Read RemoteProcessor.status property to know the current status of the corresponding remote platform
    • Add field cloud_maximal_job_count to RemoteConfig, limiting the number of concurrent Job run at once when calling JobGroup.run_parallel
    • JobGroup.list_existing() method was renamed to list_locally_saved(), for clarity
    • The behaviour of get_results is now consistent for failed jobs (LocalJob or RemoteJob).

Bug fixes

  • Experiment composition

    • When composing two experiments or processors, the right-hand-side detectors now have priority
    • Adding a single component to an Experiment on non-consecutive modes correctly applies an inverted permutation after it
  • Circuit and Processor rendering

    • Modes are now rendered below the input ports
    • Fixed a bug where a subcircuit and its container box would be shifted
    • Fixed a bug in specific feed-forwarded circuits rendering
  • Fix handling of min_detected_photons in the NoisySamplingSimulator

  • Fix Expression.fixed property

  • Fix a crash that could occur in Clifford & Clifford 2017 sampling back-end

  • Internal logger can now be setup to write in a file at a path containing non-ASCII characters

  • A Job does not forget its name anymore when reloaded from a JobGroup

  • Fix the result of PS.definition()

Breaking changes

With the release of Perceval version 1 comes a list of updated features and syntax. Here's a list of the major potential code breaks:

  • To achieve large performance gains in noisy simulations, the FockState class was split into three. While the pcvl.BasicState retains most of its versatility, user code might be broken by this code.
  • In some computations, physical_perf and logical_perf scores have been merged into a global_perf
  • Gate based to LO circuits converters were moved from Perceval to a new package perceval-interop. Read its documentation.

A detailed documentation on how to update your Perceval code to version 1 is available here: https://perceval.quandela.net/docs/v1.0/legacy.html

You can contact us on Quandela community forum

v0.13.2 - Castle of Wonders

10 Jul 05:52
b24fd68

Choose a tag to compare

Bug fixes

  • Fixed copy of Experiment when holding a defined state
  • Fixed a memory leak in Experiment

v0.13.1 - Castle of Wonders

27 May 08:30
c7d4380

Choose a tag to compare

New Features

  • The StateGenerator is now able to generate photonic states based on new rules

Improvements

  • The catalog items now expose a build_experiment method that allows creating an Experiment without creating a Processor, allowing easier integration into RemoteProcessor.
  • Non BasicState input in a Processor require setting the min_detected_photons_filter. The error message when omitting it was not human readable. The message is now clearer.

Bug fixes

  • Fixed copy of Experiment and Processor that now give a deep copy of the original object.

v0.13.0 - Castle of Wonders

31 Mar 08:26
96bb453

Choose a tag to compare

New features and reasons to upgrade

Improvements

  • Native optimised library (exqalibur) is now available for Linux ARM64, making Perceval installable on such an environment (i.e. you can now install Perceval in a Linux virtual machine running on a recent Mac computer)
  • Detectors may now be simulated in non-unitary Processors
  • Perceval component catalog now contains all major 1-qubit gates
    See: https://perceval.quandela.net/docs/reference/catalog.html
  • JobGroup now has __len__ and __getitem__ operators
  • Simulator masks as much of the Fock space as possible to improve memory consumption and computation times (in case of superposed and/or noisy input)
  • PostSelect.merge method ignores duplicate conditions
  • Components containing variable parameters can now be inverted
  • Beam splitter reflectivity to theta conversion manages variable parameters
  • Removed several meaningless user warnings

Bug fixes

  • Fixed Perceval logging system using a Python logger
  • Circuit and Processor renderers wrap and/or reduce text size when it's too long
  • Circuits using the same named variable multiple times will now be correctly serialised/deserialised

Other changes

  • Perceval no longer deduces the min_detected_photon_filter for noisy and remote simulations. It is now mandatory to pass a value.
  • min_detected_photons_filter value in a processor containing heralds is now the minimum expected photon count ignoring any ancillary mode and herald
  • Source is no longer a valid parameter when instantiating a Processor

For more information, see: https://perceval.quandela.net/docs/v0.13/legacy.html

You can contact us on the Perceval forum

v0.12.2 - The Bleeding Lance

26 Feb 14:18
5f2757e

Choose a tag to compare

Improvements

  • Detector simulation now uses the optional progress callback
  • Renamed JobGroup method list_unfinished_jobs to list_unsuccessful_jobs for clarity
  • Removed a warning which always occurred when injecting noise in a converter

Bug fixes

  • Fixed post-selection conditions composition in converters
  • Fixed heralds display in highly nested circuits
  • Fixed JobGroup not saving the refreshed jobs status in a parallel run