Release notes

What’s new in myQLM 1.5.1

Released December 6, 2021

New features

  • PyLinalg now supports efficient implementation of controlled gates. It now supports simulation of circuits generated with the submatrices_only keyword argument set to True (prog.to_circ(submatrices_only=True))

  • HardwareSpecs objects now have an attribute processing_types used to define the type of supported measurement (e.g., Observable or Sample). QuameleonPlugin has been updated to check this new attribute

  • Added a device ‘ZUCHONGZHI’ describing the Chinese quantum chip of the same name

Updated features

  • PyLinalg should now throw a cleaner exception (QPUException) when failing to retrieve the matrix of a gate

  • The get_variables methods of myQLM objects will now return a sorted list instead of a set

  • BatchResult returned by a Junction has the same meta_data as the input Batch

Fixes

  • Fix Junction plugins when a Batch object having no meta data is submitted

  • Fix len(Result) when the result is stored as a map

  • An exception is now raised when trying to differentiate non-observable job

What’s new in myQLM 1.4.0

Released June 30, 2021

myQLM Power Access

myQLM can be extended to access all QPUs and Plugins of a remote QLM, the Quantum Learning Machine from Atos and let you benefit the power of the Appliance. If the feature is activated on your QLM, the submission of a job would look like:

from qlmaas.qpus import LinAlg
from qlmaas.plugins import Nnizer

remote_stack = Nnizer() | LinAlg()
async_result = remote_stack.submit(job)
result = async_result.join()

New features

  • Support for Python 3.9 for Linux, Windows and macOS

  • Added support for brew Python distribution on macOS

  • Circuits can now be displayed in the stdout using their new display() method. They also have two new methods count() to count the number of occurrences of some gate and statistics() to gather some statistics about their number of gates.

  • It is now possible to generate the partial derivatives - differentiate() and the gradient of a Job - gradient(). These methods return jobs collections whose energies can be summed in order to evaluate the derivatives/gradient. They rely on shift-rule or Hadamard tests (see their documentation).

  • The partial derivative works also for multivariable ArithExpressions - differentiate(). It can be applied to the usual arithmetic operations between functions, as well to functions to the power of other functions!

  • Added a dag() method for circuit objects

  • Added an implementation of Kerenidis-PrakashQRAM/State preparation - KPTree.

  • Updated documentation of Op

  • Link the documentation to their corresponding notebooks when possible

  • One can now create a job ready to run on the SimulatedAnnealing QPU via the to_job() method of the Ising and QUBO classes.

  • Added arithmetic operations for Ising and QUBO problems - addition/substraction of an energy offset, J-coupling, magnetic field or even a whole Ising problem to another one. Multiplication and division by real numbers is also possible. Analogously for QUBO.

  • The Ising class has been serialized and Ising problems can now also be dumped and loaded.

Known problems

  • Python 3.9 on macOS/brew distribution may not work (SIGSEGV) Please use the distribution from python.org