This fork has modified OpenMP directives that have optimized the CPU use. The MPI and CUDA parts of the code are not modified. It only applies to the OpenMP parts which have changed. They are now using dynamic scheduling for a more balanced use of threads.
The Trotter-Suzuki approximation leads to an efficient algorithm for simulating quantum systems. This library provides a scalable, high-precision implementation that uses parallel and distributed computational resources. The implementation built on single-node parallel kernels [1], extending them to use distributed resources [2], and generalizing the kernels to be able to tackle a wider range of problems in quantum physics [3].
Key features:
- Simulation of 1D and 2D quantum systems.
- Cartesian and cylindrical coordinate systems.
- Arbitrary single-body initial state with closed and periodic boundary conditions.
- Many-body simulations with non-interacting particles.
- Solving the Gross-Pitaevskii equation (e.g., dark solitons, vortex dynamics in Bose-Einstein Condensates).
- Imaginary time evolution to calculate the ground state.
- Stationary and time-dependent external potential.
- C++ application programming interface (API).
- A Python wrapper is provided.
- Cache optimized multi-core and GPU kernels.
- Near-linear scaling across multiple nodes with computations overlapping communication.
The documentation of the C++ interface is available at trotter-suzuki-mpi.github.io. The Python documentation is on Read the Docs.
Trotter-Suzuki-MPI is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
Trotter-Suzuki-MPI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
The original high-performance kernels were developed by Carlos Bederián. The distributed extension was carried out while Peter Wittek was visiting the Department of Computer Applications in Science & Engineering at the Barcelona Supercomputing Center, funded by the "Access to BSC Facilities" project of the HPC-Europe2 programme (contract no. 228398). Generalizing the capabilities of kernels was carried out by Luca Calderaro while visiting the Quantum Information Theory Group at ICFO-The Institute of Photonic Sciences, sponsored by the Erasmus+ programme. Further computational resources were granted by the Spanish Supercomputing Network (FY-2015-2-0023 and FI-2016-3-0042) and the Swedish National Infrastructure for Computing (SNIC 2015/1-162 and 2016/1-320), and a hardware donation by Nvidia. Pietro Massignan has contributed to the project with extensive testing and suggestions of new features.
-
Bederián, C. and Dente, A. (2011). Boosting quantum evolutions using Trotter-Suzuki algorithms on GPUs. Proceedings of HPCLatAm-11, 4th High-Performance Computing Symposium. PDF
-
Wittek, P. and Cucchietti, F.M. (2013). A Second-Order Distributed Trotter-Suzuki Solver with a Hybrid CPU-GPU Kernel. Computer Physics Communications, 184, pp. 1165-1171. PDF
-
Wittek, P. and Calderaro, L. (2015). Extended computational kernels in a massively parallel implementation of the Trotter-Suzuki approximation. Computer Physics Communications, 197, pp. 339-340. PDF