Skip to content

Releases: Quandela/Perceval

v1.2.4

Choose a tag to compare

@Aubaert Aubaert released this 02 Jul 15:39
d5c3804

New features

  • New KipuSession, allowing to send jobs to the Kipu Quantum Hub
    • Requires the installation of perceval using pip install perceval-quandela[kipu]

Improvements

  • GenericInterferometer now accepts str as interferometer shape

You can contact us on Quandela community forum

v1.2.3

Choose a tag to compare

@Aubaert Aubaert released this 17 Jun 12:02
87f8488

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

Choose a tag to compare

@Aubaert Aubaert released this 04 Jun 17:14
bf80c96

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

Choose a tag to compare

@Benoit-F-Q Benoit-F-Q released this 20 May 10:57
29918db

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

Choose a tag to compare

@Aubaert Aubaert released this 20 Nov 12:47
aad5f0b

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

Choose a tag to compare

@ericbrts ericbrts released this 22 Sep 13:05
2746d65

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

Choose a tag to compare

@ericbrts ericbrts released this 04 Sep 08:39
1638dea

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

Choose a tag to compare

@Benoit-F-Q Benoit-F-Q released this 10 Jul 05:52
b24fd68

Bug fixes

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

v0.13.1 - Castle of Wonders

Choose a tag to compare

@Aubaert Aubaert released this 27 May 08:30
c7d4380

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

Choose a tag to compare

@ericbrts ericbrts released this 31 Mar 08:26
96bb453

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