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.
- Python 3 (tested with Python 3.7 and 3.6)
- Jupyter lab (or notebook)
- Numpy, Scipy, Numba (all lastest version from Conda)
- 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.
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.
-
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
The protocol used in the time evolution is the same as the following papers