Perceval Versions Save

An open source framework for programming photonic quantum computers

v0.10.4

3 months ago

Improvements

  • Update Scaleway provider connection code.

Bug fixes

  • Fix Tomography failing on a 3+ qubit gate.
  • Fix local use of a Sampler with iterations not returning iteration data in the result list.
  • Fix probability distribution to sample count conversion for a low number of samples.

v0.10.3

4 months ago

Improvements

  • Optimized serialization speed of a large list of samples.
  • Improved LaTex rendering in Jupyter notebooks.
  • Add method Sampler.clear_iterations() to set new iteration parameters on an existing Sampler object.

Bug fixes

  • exqalibur may now be used on any virtual machine making Perceval usable on a wider range of environments.
  • Fix invalid syntax in two Simulator methods.
  • Fix multiple calls to method get_results() of an asynchronous local job.
  • Small fixes in several examples from the user documentation.

v0.10.2

5 months ago

Improvement

  • Optimize samples (stream) to sample count conversion

v0.10.1

5 months ago

Bug fixes

  • Fixed Error-tolerant BS-based circuit notebook
  • The github and PyPI shields now display correct information
  • Fix a conversion issue when max_samples is set as a float in a sampling Job

v0.10.0

6 months ago

New features

  • Shots Remote sampling jobs now require a maximum shots threshold. See: https://perceval.quandela.net/docs/algorithms.html#work-with-algorithms When creating a RemoteProcessor for a physical QPU, a shot to samples conversion tool enables you to anticipate your use of Quandela Cloud resources.

  • myQLM converter Perceval now contains a way of converting myQLM qat.core.Circuit into a Processor. See: Conversion of myQLM circuit to Perceval

  • Tomography algorithms StateTomography and ProcessTomograpy algorithm have been included in order to study logical gates. See: Example notebook

  • CCZ and CCNOT (Toffoli) gates have been implemented in the component catalog.

  • Quandela Cloud token persistence A token can now be set on your environment once and for all. It will then be retrieved when running a job with a RemoteProcessor. You won't have to copy/paste your token in all your scripts and notebooks!

  • Generic interferometer phases can now be easily set to a given zone of a bigger interferometer.

Improvements

  • Two new Perceval usage examples are available:
  • Heralded CNOT implementation was improved (with 2 less ancillary modes and a better performance).
  • CircuitOptimizer now supports template circuits containing permutations, arbitrary unitary matrices as well as multiple hierarchy levels.
  • Clifford & Clifford 2017 sampling back-end now computes several samples at once.
  • Catalog syntax is more user friendly (see build_circuit and build_processor methods). The previous syntax still works but was deprecated.
  • Several optimizations were made in the native code (exqalibur package) to speed up computations, specifically on BasicState and StateVector classes. StateVector was moved to exqalibur retaining most of the class API. see: https://perceval.quandela.net/docs/legacy.html for a comprehensive list of changes.
  • Sample count now returns an exact number of samples.
  • Extra requirements (e.g. for converters) may now be installed with pip. See: https://github.com/Quandela/Perceval#installation

Bug fixes

  • Fix MPS back-end for input states with multiple photons per mode.
  • Fix exponentiation of StateVectors and state distribution data structures.

Removals

  • Python 3.7 support was dropped
  • AnnotatedBasicState class was removed (was deprecated since version 0.7.0) .

Known issues

  • exqalibur is unusable on some Ubuntu virtual machines hosted by VirtualBox
  • Multiplying a StateVector from the left with a numpy numerical type (e.g numpy.float64(0.6)*state_vector) can lead to cryptic error messages. Work-around: either multiply from the right, or convert the numpy type to the corresponding Python type.

v0.9.3

6 months ago

Improvements

Bug fixes

  • Fix a failure which occurred when deserializing an empty BSCount, BSDistribution, BSSamples or SVDistribution
  • Fix remote computations refusing to run on an identity circuit

v0.9.1

10 months ago

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

10 months ago

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

1 year ago

Bug fixes

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

v0.8.0

1 year ago

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 (https://github.com/Quandela/Perceval/issues/189)