Implementation
PERTURBO is written in modern Fortran95 with hybrid parallelization (MPI and OpenMP). The main output formats are HDF5 and YAML, which are portable from one machine to another and are convenient for postprocessing using high-level languauges (e.g., Python). PERTURBO has a core software, called perturbo.x
, for the electron transport calculations and an interface software, called qe2pert.x
, to read output files of Quantum Espresso (QE, versions 6.4, 6.5, 7.0, 7.2) and Wannier90 (W90, version >= 3.0.0). The qe2pert.x
interface software generates an HDF5 file, which is then read from the core perturbo.x
software. In principle, any other third-party density functional theory (DFT) codes (e.g., VASP) can use PERTURBO as long as the interface of the DFT codes can prepare an HDF5 output file (called prefix_epr.h5) for PERTURBO to read.
Supported Features
The public version of PERTURBO has the following stable features:
- Phonon-limited carrier mobility, electrical conductivity and Seebeck coefficient
- Imaginary part of e-ph self-energy and e-ph scattering rates
- Phonon-limited carrier mean free path and relaxation times
- Magnetotransport calculations
- Ultrafast carrier dynamics with fixed phonon occupation
- Electron transport in the presence of high electric fields
- Calculations on magnetic systems with collinear spin
- Interpolated electronic band structure and phonon dispersion
- e-ph matrix elements for nonpolar and polar materials, and their Wannier interpolation
- Interface to TDEP for anharmonic phonons
All the calculations above can be done as a function of temperature and doping, for nonpolar and polar materials.
Code Performance and Scaling / Parallelization
This section discusses the scaling performance of the publicly available version of PERTURBO. Since its inception, PERTURBO implemented a hybrid MPI / OpenMP parallelization that allows for outstanding scaling on high-performance computing (HPC) platforms. To showcase the scaling performance, we present a calculation of the imaginary part of the electron-phonon self energy (calculation mode imsigma) in silicon using 72x72x72 electron k- and phonon q-point grids. The scaling test was performed using the Intel Xeon Phi 7250 Processors at the National Energy Research Scientific Computing Center (NERSC). As seen from this figure, PERTURBO shows an almost linear scaling up to 500,000 cores (the deviation from the linear scaling at 500,000 cores is less than 5%). This result, together with our ongoing work on the OpenACC GPU parallelization, shows the preparedness of PERTURBO for the future HPC architectures and for the Exascale computing.
Research Team
The PERTURBO code is developed in Prof. Marco Bernardi’s research group at Caltech. For more information, we invite you to visit the group website.