Release notes

What’s new in myQLM 1.7.3

Released January 23, 2023

This is a maintenance release of 1.7.1.

Main Fixes

  • qat-core
    • When trying to display a simple circuit in a jupyter notebook in Windows, a permission error occurs on the generated pdf file

  • myqlm-clinalg
    • RESET gate only working as intended in very specific cases, having an unexpected behaviour in most cases

    • Simulator running non-inlined circuits caused unexpected exceptions

Dependant Packages

Requires-Dist

Version

Status

qat-comm

1.4.2

qat-core

1.6.4

UPDATED

qat-devices

0.2.0

qat-lang

2.2.1

qat-variational

1.4.0

myqlm-clinalg

0.0.5

UPDATED

myqlm-contrib

1.7.1

myqlm-fermion

1.0.0

myqlm-simulators

1.7.1

Other Packages

Requires-Dist

Version

Status

myqlm-interop

1.7.1

Note: Versions must be greater or equal to the versions above

What’s new in myQLM 1.7.2

Released January 03, 2023

This is a maintenance release of 1.7.1.

Main Fixes

  • qat-comm + qat-core
    • Fix segmentation fault in numpy

    • Support more numpy versions on myqlm

  • qat-lang
    • ModuleNotFoundError: No module named ‘jaxlib’

  • myqlm-clinalg

Deprecation warnings

You may see these warnings when displaying a circuit:

DeprecationWarning: LAYOUT_BASIC is deprecated and will be removed in Pillow 10 (2023-07-01). Use Layout.BASIC instead.
DeprecationWarning: getsize is deprecated and will be removed in Pillow 10 (2023-07-01). Use getbbox or getlength instead.
...
These warnings can be suppressed by adding a nowarning.py file under:
# The .ipython directory below maybe different if IPYTHON_DIR is defined
$HOME/.ipython/profile_default/startup/nowarning.py
The content of the file should be something like:
import warnings
warnings.simplefilter(action='ignore', category=FutureWarning)
warnings.simplefilter(action='ignore', category=DeprecationWarning)

Restart Jupyter

Dependant Packages

Requires-Dist

Version

Status

qat-comm

1.4.2

UPDATED

qat-core

1.6.1

UPDATED

qat-devices

0.2.0

qat-lang

2.2.1

UPDATED

qat-variational

1.4.0

myqlm-clinalg

0.0.4

myqlm-contrib

1.7.1

myqlm-fermion

1.0.0

myqlm-simulators

1.7.1

Other Packages

Requires-Dist

Version

Status

myqlm-interop

1.7.1

Note: Versions must be greater or equal to the versions above

What’s new in myQLM 1.7.1

Released October 31, 2022

A new simulated QPU in myQLM

myQLM provides a new QPU, CLinalg, written in C++. This new linear-algebra simulatation has been designed as a faster alternative to PyLinalg (written in Python) and its basic interface and features are very similar. The documentation for this simulator can be found here.

This new QPU provides also a low-level API to manipulate the statevector

Tools for fermionic computations (myQLM-fermion)

qat.fermion, the module for digital quantum simulation of spin and fermionic systems is now open-source and part of myQLM. The full documentation is available here. The module includes, among other things:

  • objects to help you define fermionic and spin Hamiltonians,

  • spin and fermionic Hamiltonians algebraic operations, with automatic normal ordering of fermionic operators,

  • spin-to-fermion transformations, such as Jordan-Wigner, Bravyi-Kitaev or parity basis transformations,

  • variational quantum eigensolver (VQE) tools, including a module to construct a UCC ansatz,

  • tools aimed at atomic and molecule studies (active space selection, basis transformations,…etc),

  • a trotterization module,

  • a quantum phase estimation module,

  • an adaptative ansatz VQE plugin (ADAPT-VQE),

  • a natural gradient-based optimizer,

  • a sequential hybrid classical-quantum optimizer,

  • a zero noise extrapolator plugin for multiqubit noise mitigation.

Batch generators in myQLM

myQLM provides a new service called BatchGenerator that could be piped at the beginning of a computational stack composed of plugins and a QPU. A BatchGenerator should inherits from AbstractGenerator and overload the generate() method. This method will generate as many Batch objects as needed and will send these objects to the QPU iteratively. Please refer to the batch generator section for more information.

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

  • myQLM-interop can submit jobs to an IBM Quantum Experience QPU using the Qiksit Runtime API. The new QPU wrapper of myQLM-interop, QiskitRuntimeQPU, supports jobs in SAMPLING and OBSERVABLE mode.

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

  • The implementation of U2 and U3 gates have changed in myQLM-interop (Qiskit binder). Translating a circuit composed of at least one U2 or U3 gate from Qiskit to myQLM is fixed

Dependant Packages

Requires-Dist

Version

qat-comm

1.4.0

qat-core

1.6.0

qat-devices

0.2.0

qat-lang

2.2.0

qat-variational

1.4.0

myqlm-clinalg

0.0.1

myqlm-contrib

1.7.1

myqlm-fermion

1.0.0

myqlm-simulators

1.7.1

Other Packages

Requires-Dist

Version

myqlm-interop

1.7.1

Note: Versions must be greater or equal to the versions above

What’s new in myQLM 1.6.0

Released April 25, 2022

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.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