Releases: Quandela/Perceval
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
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)