Analog computing
Once a Hamiltonian is encoded and the Schedule
is converted to a Job
, one can perform a simulation by sending this Job to a dedicated analog QPU. Qaptiva is equipped with three such simulators - QutipQPU
, AnalogQPU
and MPSTraj
- which overlap to some degree in functionality with some key differences.
Qubit simulations |
Bosonic
simulations
|
Fermionic
simulations
|
||||
Noiseless |
Noisy |
|||||
With jump operators |
With stochastic noise |
|||||
deterministic |
stochastic |
|||||
QutipQPU |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
AnalogQPU |
Yes |
Yes |
No |
Yes (slower) |
No |
No |
MPSTRaj |
Yes |
No |
Yes |
No |
No |
No |
AnalogQPU
uses the Boost.odeint library to perform simulations. Since the solvers are in C++/CUDA, the QPU is inherently faster. Apart from noiseless simulations of the Schrödinger equation withsim_method = deterministic
, the QPU is capable of evolving a Hamiltonian in the presence of an environment via Lindblad-type simulations, also in a deterministic manner.QutipQPU
is based on the QuTiP library. It is usually slower thanAnalogQPU
. However, beyond the functionalities ofAnalogQPU
, it can also simulate the evolution of Bosonic Hamiltonians (i.e. more than 2-level systems) in the presence (or not) of qubits, Fermionic Hamiltonians, as well as Hamiltonians with stochastic noise with an arbitrary user-specified Power Spectral Density (PSD).MPSTraj
compresses the quantum state in a Matrix Product State (MPS, a type of Tensor Network), and can thus potentially reach a higher number of qubits than QutipQPU or AnalogQPU. The lower the entanglement entropy of the state, the higher the number of qubits can be simulated. The time evolution is performed by Trotterization of the hamiltonian. Noise in the form of jump operators is treated stochastically, with one of several trajectory algorithms, the choice of which can impact performances.
The analog QPUs above are able to measure more than one Observable
per simulation. One can achieve this by passing a list of the other desired observables to be measured to the observables
argument of the to_job()
method of the Schedule
.
Together with the final expectation values \(\left<O\right>(t_{f})\) provided in the Result
fields value
and values
(for one and many observables, respectively), one can also access \(\left<O\right>(t)\), i.e. the measured values at all times via value_data
and values_data
.
Note
In the very particular case of AnalogQPU
with error_control=True
running with stochastic noise, i.e. averaging over different noise realizations, each such realization will be evaluated at different time points, hence \(\left<O\right>(t)\) will not be accessible.
- We provide some of the key applications of analog quantum computations: