Releases: Quandela/Perceval
v0.9.1 - King Pescheor
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
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
-
Batch jobs
There is now a way of setting up multiple acquisitions / simulations using a single job with theSampler
.
See: https://perceval.quandela.net/docs/algorithms.html#batch-jobs -
The new
StateGenerator
class helps building complex state vectors in one line of code.
See: https://perceval.quandela.net/docs/reference/stategenerator.html -
The new
StatevectorConverter
class enables converting a PercevalStateVector
to and from a QuTipQObj
and a qiskitStatevector
See the usage example from graph states generation to display: https://perceval.quandela.net/docs/notebooks/Graph%20States%20and%20representation.html -
LaTex renderer: circuits and processors can now be rendered as LaTex code (using Tikz)
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 operatorsBasicState.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
Bug fixes
- Fix
Circuit
andProcessor
rendering in SVG format (used in notebooks, for instance)
v0.8.0 - ExQalibur
New features
-
ExQalibur
quandelibc
dependency was replaced withexqalibur
.
exqalibur
provides the same optimized services asquandelibc
and more! Stay tuned as we will add more native features inexqalibur
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 clearermin_detected_photons_filter
This change is breaking theProcessor
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
inCircuit.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 awaiting
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
Improvements
- Improved photonic source model
This change is breaking theSource
class API. See https://perceval.quandela.net/docs/legacy.html for code adaptation. - Job name is customizable
RemoteProcessor
and localProcessor
now share a common API- A
BSCount
object (basic state count) can now be used inpdisplay
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
Improvements
- The user documentation was improved
- Calling
set_parameters()
on aProcessor
/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
anddeserialize_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
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
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 lossLC
- 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
andSVDistribution
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
andphys
namespaces for components. All components have been merged inperceval.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 valueR
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
Bugfix
- Fix an issue in beam splitter numerical unitary matrix computation
v0.6.1 - Knight Gornemant
Bug fixes
- Fixed an import error in component libraries
symb
andphys
Improvements
- Convertors documentation page