Skip to content

Releases: Quandela/Perceval

v0.9.1 - King Pescheor

24 Jul 12:29
cca011f
Compare
Choose a tag to compare

Bug fixes

  • Batch jobs computed using a local Processor returned wrong results
  • The noisy algorithm computed wrong output probabilities for superposed input states

v0.9.0 - King Pescheor

10 Jul 10:15
b4d38fe
Compare
Choose a tag to compare

Simulation rework

The local simulation layer has received a major refactoring to make it better, faster and stronger. Multiple bugs were fixed, several new features were introduced and the computation was optimized (especially the noisy simulation algorithm):

  • Noisy source simulation algorithm was rewritten to gain up to a x1000 speed up with standard noise parameters; a precision threshold can be adjusted to gain even more!
  • Fixed an issue where distinguishable photons could lead to wrong probability computations
  • Probability amplitudes and state evolution can now be computed with annotated states (distinguishable photons)
  • Loss Channel (LC) components correctly handle distinguishable photons
  • Polarized circuits and states simulation is implemented on the Processor layer
  • Fixed a use case where a single SLOS backend instance used for several simulations in a row could lead to wrong probability amplitudes

Of course, such a rework comes with cons, as several class API changed a bit. Please check https://perceval.quandela.net/docs/legacy.html for details.

New features

Improvements

  • A new Perceval usage example is available: The shortest path problem using QUBO
  • A CZ gate is available in the component catalog
  • The QiskitConverter supports CZ gates
  • The serialization layer can now compress serialized representation of objects. The feature is enabled by default for circuits given a major space gain is observed.
  • Jobs are grouped by a Process ID on Quandela Cloud
  • Jobs retrieve more information from the Quandela Cloud (when created and resumed)
  • The maximum number of supported modes has increased from 63 to 256
  • BSDistribution now supports product and power operators
  • BasicState.separate_state method now allows to keep the annotation information

Bug fixes

  • Displaying a StateVector would unexpectedly force its normalization
  • Fixed both the post-processed and heralded CNOT gates from the component catalog

Known issues

  • exqalibur is unusable on some Ubuntu virtual machines hosted by VirtualBox

v0.8.1 - ExQalibur

21 Mar 10:39
a26b0bd
Compare
Choose a tag to compare

Bug fixes

  • Fix Circuit and Processor rendering in SVG format (used in notebooks, for instance)

v0.8.0 - ExQalibur

10 Mar 16:14
6d4fef5
Compare
Choose a tag to compare

New features

  • ExQalibur
    quandelibc dependency was replaced with exqalibur.
    exqalibur provides the same optimized services as quandelibc and more! Stay tuned as we will add more native features in exqalibur soon!

  • Circuit optimizer
    A specialized class allows you to optimize circuit parameters so that a circuit with enough degrees of freedom matches any unitary matrix.
    See: https://perceval.quandela.net/docs/reference/circuit_optimizer.html

Improvements

  • Processor.mode_post_select was replaced by a clearer min_detected_photons_filter
    This change is breaking the Processor API.
    See: https://perceval.quandela.net/docs/legacy.html for details

  • A new Perceval usage example is available: Reinforcement learning

  • Source model can now be asked to output multiple photons per mode. This change fixes unexpected results with Processor simulations, where the users inputs a state with more than one photon in at least one mode.

  • The new parameter ignore_identity_block in Circuit.decompose allows to discard or keep trivial components in a decomposition

  • A remote job status refresh failure won't automatically crash your program anymore

  • Clarified error messages

Bug fixes

  • Fixed RemoteProcessor.resume_job call

  • RemoteJob could not be programmatically cancelled with a waiting status

  • Fixed RemoteProcessor composition

  • Fixed SLOS back-end all_prob call

  • Fixed a random division by zero error when simulating too few samples from a sample_count

  • Support was added for drawsvg 2 (#189)

v0.7.3 - Blanchefleur

21 Dec 16:23
699d2f3
Compare
Choose a tag to compare

Improvements

  • Improved photonic source model
    This change is breaking the Source class API. See https://perceval.quandela.net/docs/legacy.html for code adaptation.
  • Job name is customizable
  • RemoteProcessor and local Processor now share a common API
  • A BSCount object (basic state count) can now be used in pdisplay

Bug fixes

  • Fixed several issues with simulation backends returning wrong results when an unexpected state was passed as input
  • Fixed StateVector not auto-normalizing before checking equality with others
  • Fixed an issue with processor not correctly refreshing their circuit when a new value was set in a variable parameter
  • Fixed an issue preventing RemoteJob from being canceled programmatically

v0.7.2 - Blanchefleur

17 Nov 16:30
ecc3e36
Compare
Choose a tag to compare

Improvements

  • The user documentation was improved
  • Calling set_parameters() on a Processor / RemoteProcessor does not erase previous parameters anymore

Bug fixes

  • Fixed computation with time delays and a source emitting distinguishable photons
  • Fixed conversion from sample count to sample list
  • Remote simulator / QPU specs are now properly deserialized
  • Fixed an issue with serialize_to_file and deserialize_file utilitary functions

Known issue

  • Using Matplotlib version 3.4 or less on a Windows platform within PyCharm Community edition may prevent Perceval from starting

v0.7.1 - Blanchefleur

07 Nov 10:59
0f73bb8
Compare
Choose a tag to compare

Bug fixes

  • Fixed an issue on Analyzer algorithm running on some remote processors
  • Fixed RemoteJob not being able to retrieve partial results from a cancelled job
  • Fixed a rendering glitch in user documentation

v0.7.0 - Blanchefleur

03 Nov 16:42
232a0ba
Compare
Choose a tag to compare

This release is a major refactor of Perceval meant to connect simulation and execution on QPUs. While simulation backends are still available in particular for strong simulation, and state vector evolution, the central components are now a) the Processor geared up for working with (remote) real QPUs and providing uniform interface to simulation, b) the Algorithm(s) designed for bring built-in photonic algorithms.

New features

  • A new RemoteProcessor enables to run quantum algorithms on remote simulators and QPUs
  • The Processor has been improved
    • It aims at simulating an optical circuit in real world conditions (thresholded detections, performance computation, etc.)
    • (#28) It is able to handle non-unitary components: time delays TD and channel loss LC
    • Port encoding has been introduced to allow logical state inputs
  • Sampler algorithm can convert sampling results on the fly between probabilities, sample counts, and an ordered list of samples
  • New Matrix Product State backend
  • A serialization system enables to save and load Perceval objects without recomputing them
  • Circuit rendering skin system
  • A simplify function can reduce the complexity of some circuits
  • Introduce Job for synchronous/asynchronous handling of local/remote computations
  • Automated benchmarking

Improvements

  • BasicState class now holds photon annotation
  • Optimized stepper computation
  • Beam splitter component BS supports different conventions (Hadamard, Rotation x, Rotation y)
  • Optimized circuit rendering
  • Processor rendering hides heralded modes for readability
  • A sub-component can be accessed in a circuit via the bracket ([ ]) operator
  • StateVector supports tensor products

Bug fixes

  • Fixed a random crash in Clifford&Clifford computation
  • Fixed StateVector and SVDistribution display and sampling
  • Restored compatibility with Python 3.7 & 3.8
  • A lot of small glitches are gone!

Known issues

  • Polarization annotations are not handled in Processor

Breaking changes

  • Removal of symb and phys namespaces for components. All components have been merged in perceval.components and their graphical representation is now managed by a skin system (see above, in New features)
  • Beam splitters BS cannot be initialized with a reflectivity value R anymore.
  • Beam splitters BS support three different conventions + 4 phases (before: symb.BS was 1 convention + 1 phase, phys.BS was 1 other convention + 3 phases)
  • Deprecation of AnnotatedBasicState (see above, in Improvements)
  • Circuit [ ] operator does not retrieve parameters with its name anymore (circuit['phi'] syntax turns into circuit.param('phi'))

See https://perceval.quandela.net/docs/legacy.html for code adaptation.

v0.6.2 - Knight Gornemant

02 Aug 09:58
7228648
Compare
Choose a tag to compare

Bugfix

  • Fix an issue in beam splitter numerical unitary matrix computation

v0.6.1 - Knight Gornemant

21 Jul 15:03
9336b7e
Compare
Choose a tag to compare

Bug fixes

  • Fixed an import error in component libraries symb and phys

Improvements

  • Convertors documentation page