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.

Analog QPUs and simulation modes

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 with sim_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 than AnalogQPU. However, beyond the functionalities of AnalogQPU, 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.

Noiseless simulations
Noisy simulations
Bosonic simulations
Fermionic simulations
We provide some of the key applications of analog quantum computations: