3. The manyq simulator¶
We discuss the manyq
module.
This module wraps the manyq simulator, which is conceived as a quantum
simulator for machine learning.
In fact, as its name suggets, it parallelizes computations, based on the
SIMD principle – i.e. Single Instruction Multiple Data.
The idea is that, given an architecture, all parametric circuits are very similar, besides some gates in which we change the parameters. Therefore, manyq relies on tensor contraction to manipulate multiple circuits as tensors and, so doing, provides a great speed for machine learning tasks.
The manyq
module provides a specific circuitML, namely mqCircuitML
,
as well as a specific circuitBuilder, mqBuilder
.
3.1. GPU support¶
The only difference from the basic circuitML
interface is the support
for gpu, which is provided through CuPy.
It can be required at instanciation specifying the gpu
keyword
argument:
circuit = mqCircuitML(
make_circuit, nbqbits, nbparams,
gpu = True
)
Alternatively, one can change the backend of a circuit at runtime, using
the cpu
and gpu
methods:
circuit.cpu() # Switch to NumPy
circuit.gpu() # Switch to CuPy
Note
If the circuit is running on cpu, the type of the inputs of run
,
and of its return value as well, is cupy.ndarray
, while it
is numpy.ndarray
in the cpu setting.
For this reason, as of version 0.0.1, the Classifier
does not
support gpu.