empyriumz / Entanglement-Dynamics

Random unitary time evolution plus projective measurement in the one-dimensional quantum circuit model

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Entanglement Dynamics: Introduction

Random unitary time evolution plus projective measurement in the one-dimensional quantum circuit model.

Starting from a product state without entanglement, by applying the randomly generated 2-qubit unitary gate between adjacent qubits, the bipartite entanglement entropy EE increases quickly in a linear fashion and thermalized in a volume law phases (EE ~ L).

If we measure the state of those qubits during the evolution projectivly, e.g., a spin-z projection on some randomly selected site with probability p, there will be competitions between entanglement spreading and disentangling. The steady state of the system will be determined by these two factors. It is therefore natural to ask how the entanglement will evolve and the physical properties of the entanglement transition point, if any.

Moreover, by partitioning the system into three parts, it is possible to calculate the mutual information and negativity, which can provide more insight into the possible area-to-volume law entanglement phase transitions.

Dependencies:

  1. Python 3 (tested with Python 3.7 and 3.6)
  2. Jupyter lab (or notebook)
  3. Numpy, Scipy, Numba (all lastest version from Conda)
  4. Eigen C++ library, pybind11 and cppimport if you want to try using C++ to speed up some matrix dot product.

GPU and MPI versions need cupy and mpi4py and dependencies therein.

Play with Docker

For those who has trouble in setting up the dependencies (like myself on my own laptop), there is an alternative way to play with this project by Docker. If you happen to have Docker running in your system, simply run

docker pull eww308/ubuntu:latest

and

docker run -it eww308/ubuntu zsh
cd home/test_eigen/ 

after tuning parameters

nano para_haar.txt

you can run simulations with

python evo.py

or the parallel (with MPI and/or OpenMP) version:

mpiexec -n 4 --allow-run-as-root python mpi_evo.py

The results will be saved in corresponding .npz files.

TODO

  • GPU version for fast SVD and matrix dot.

  • The GPU version using cupy is successfully tested on Kaggle platform (with NVidia K80).

  • Large-scale distributed Kronecker product

  • Currently we use numba accelerated Kronecker product and use a workaround to make large-scale Kronecker product unnecessary.

  • Using mpi4py and openmp for simulating relatively large system size (L~ 24) with paralleled random unitary evolution.

  • The MPI/OpenMP hybrid parallelism has been implemented and tested on Docker images.

  • Large-scale distributed SVD using MPI

Refs:

The protocol used in the time evolution is the same as the following papers

arXiv:1808.05953

arXiv:1901.08092

About

Random unitary time evolution plus projective measurement in the one-dimensional quantum circuit model

License:MIT License


Languages

Language:Jupyter Notebook 89.3%Language:Python 10.3%Language:C++ 0.4%