Releases: Quandela/Perceval
v0.11.2 - Sir Gawain
Improvements
- Add a Symmetric MZI in the component catalog
- Rectangular
GenericInterferometer
can now autogenerate any 1-mode component whenever the first or last mode is MZI-free - Fix typos in logging documentation
- Remove deprecated calls from user documentation
Bug fixes
- Remove a small sleep time in local sampling simulation (that would hinder low photon count sampling)
- Fix how unit tests requiring extra dependencies are run
v0.11.1 - Sir Gawain
New feature
- cQASM circuit to linear optics converter
Improvements
- Logging system user documentation: https://perceval.quandela.net/docs/reference/logging.html
- Fixed typos in the user documentation
- Improved input parameter checks in Photon Recycling
- Optimized noisy state generation in the
Source
class - Avoid inconsistent values of shots / samples when creating remote jobs
Bug fixes
Circuit / Processor rendering
- Fixed "floating herald" issue in
pdisplay
- Fixed incorrect size of rendered circuit box
Simplify circuit
- Fixed a bug with consecutive permutations in the "simplify circuit" process
- Fixed a bug where a phase shifter with a
phi
variable parameter could disappear in the "simplify circuit" process
Known issues
- The cQASM converter does not support Python 3.8
v0.11.0 - Sir Gawain
New features
-
Local
Processor
andRemoteProcessor
now share the same interface.- This means heralding and post-selection is handled on our QPU and Cloud simulators!
- Introduce a
NoiseModel
class to setup your noisy simulation consistently between local and remote computations. On top of other noise sources,NoiseModel
now supports phase shifter imprecision. - All Cloud platforms need to be updated to support these new features.
sim:altair
andqpu:altair
are already up-to-date!
-
Photon recycling was implemented as Quandela's first open source noise mitigation algorithm
See user doc: Error Mitigation in Boson Sampling by Photon recycling
Article reference: Mitigating photon loss in linear optical quantum circuits: classical postprocessing methods outperforming postselection -
Density Matrix in the Fock Space.
See: Density matrices in Fock space -
A new usage example is available: Boson bunching
See: https://perceval.quandela.net/docs/notebooks/Boson_Bunching.html -
Perceval's first approximate strong simulation back-end (based on Gurvits' permanent estimate)
See: https://perceval.quandela.net/docs/v0.11/backends.html#naiveapprox -
Logging system
-
Maximum Likelihood Estimation (MLE) tomography was implemented
-
N-Controlled rotation gates added to the component catalog
-
StateGenerator
may now produce Dicke states
Improvements
- Python 3.12 support
- Optimized noisy algorithms for both strong simulation and sampling back-ends
- The user documentation is now available for multiple Perceval versions
- Improved documentation:
pdisplay
: https://perceval.quandela.net/docs/reference/pdisplay.html- Component catalog: https://perceval.quandela.net/docs/reference/catalog.html
- Optimized
ProcessTomography
computation time - Tomography algorithms are now available for remote computing
MPSBackend
now supports large permutations among the circuit components- Gate based circuit converters now use a better implementation of the heralded CNOT
- Scaleway provider connection code was updated
PostSelect
now supports>=
and<=
operators
Bug fixes
- Fixed a bug where a
Processor
containing an input state couldn't be copied - Fixed an issue where parameter names were lost (replaced by numerical values only) in some computations
- A cancelled job will now try to retrieve partial results
- Fixed a bug in physical performance computation in the noisy algorithm
- Fixed an issue where post-selection wouldn't be processed correctly when composing two processors
- Fixed a bug where post-selection function wouldn't be refreshed in a local
Processor
that was already used in a simulation
Known issues
- The
MyQLMConverter
cannot be used on Python 3.12 asmyqlm
does not support this Python version.
Other information
- See syntax changes here: https://perceval.quandela.net/docs/v0.11/legacy.html
- You can contact us on the Perceval forum
v0.10.5 - Avalon Island
Improvement
- Herald ports display improved
UnitaryHACK 2024 contribution, by @burlemarxiste
Bug fixes
- Fixed an incompatibility with
matplotlib
3.9 - Perceval is not compatible with
numpy
2 (yet), so it now specifically requiresnumpy<2
v0.10.4 - Avalon Island
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 - Avalon Island
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 existingSampler
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 - Avalon Island
Improvement
- Optimize samples (stream) to sample count conversion
v0.10.1 - Avalon Island
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 afloat
in a samplingJob
v0.10.0 - Avalon Island
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 aRemoteProcessor
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 myQLMqat.core.Circuit
into aProcessor
.
See: Conversion of myQLM circuit to Perceval -
Tomography algorithms
StateTomography
andProcessTomograpy
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 aRemoteProcessor
. 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
andbuild_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 anumpy
numerical type (e.gnumpy.float64(0.6)*state_vector
) can lead to cryptic error messages.
Work-around: either multiply from the right, or convert thenumpy
type to the corresponding Python type.
v0.9.3 - King Pescheor
Improvements
- Perceval now supports multiple Cloud providers!
See: https://perceval.quandela.net/docs/providers.html
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