Yambo 5.0
Yambo goes fully GPL
Yambo 5.0 is a major release that comes with many new features and changes in the code. This becomes immediately evident browsing the yambo github repository. So far the GPL repository was a container of the released code extracted from the development repository. Since 2021 and yambo 5.0 the GPL and devel repository are fully in sync (with the minor exception of the dissipation mechanisms in real-time dynamics simulations). Browsing the contributors’ section (https://github.com/yambo-code/yambo/graphs/contributors) the very large activity in the repository is now explicitly shown, with the whole history of commits in the Yambo code.
The new release includes:
- a reorganization of the executables. For example yambo_kerr is now part of the yambo executable and there is no need anymore, for the users, to distinguish the two;
- an improved command line for the generation of the input files;
- the extended release of projects (such as yambo_rt and yambo_ph) for which the gpl version was, so far, limited;
- the release of new projects contained in the self-consistent module of the Yambo code, the yambo_sc executable. The new yambo_sc also includes the “magnetic” and “electric” projects previously known to developers as part of yambo_magnetic and yambo_electric;
several improvements to the core part of the Yambo code (GW and BSE) - extended CUDA support.
This is a drastic change in the code release philosophy. Until now, Yambo releases just included features which had been used to produce published results. From now on it will also contain experimental features. A small price to pay is that not all the new features are fully tested or supported. However, we believe that their release can be useful for the progress of the Yambo code, for the users’ community, and for new developments which can, in turn, boost the research in condensed matter physics of the whole scientific community. We are also confident that the Yambo users’ community will provide valuable help in testing and improving such experimental features.
The Yambo Team acknowledges financial support from the MaX Centre of Excellence which made this release possible.
A detailed list of the changes follows, with the experimental features explicitly marked.
Other info can be found in the new Yambo 5.0 cheat-sheet:
https://docs.google.com/presentation/d/1A4uRrCh4qgJhOQimrr_yI9GFFz0xJopWd3dOtiwusts
Main reference: https://iopscience.iop.org/article/10.1088/1361-648X/ab15d0
List of changes
General
New driver
The input file generation keywords have been changed, in place of a single letter now extended word can be used. For example the input file generation for a BSE calculation, which previously was generated with
yambo -b -o b -k sex -y d
can be now obtained with the new command
yambo -X s -optics b -kernel sex -Ksolver d
This was made for different reasons. (i) The number of run-levels in the code is growing and the number of letters available to select them was becoming a limit. Now the driver can handle full words, i.e. -optics in place of -o. (ii) A more logical reorganization of the runlevels. For example, the different kinds of dielectric functions are now grouped under -X (which can be static, dynamic, or plasmon pole approximation), while before they were selected via independent options. (iii) The new options are hopefully more clear for a user.
As part of the modularization of the Yambo code, one of the goals is to split the source into different blocks (or modules), and eventually promote them into libraries. The new driver has been used to create a first experimental library. The source code is not contained anymore in the main repository of the yambo code, but it has been moved in a submodule:
https://github.com/yambo-code/yambo-libraries
This is the latest release of the driver: driver-0.0.2.tar.gz
Configure & Makefile
The Yambo configure has been reorganized to simplify the logic. The source has been strongly modularized. The config folder is now divided into two main subfolders which include many .mk and .m4 files. This change is mostly of interest to developers.
External libraries (experimental feature)
Yambo is now interfaced with libraries “FUTILE” and “YAML” provided by the BigDFT community within the MaX CoE. Moreover we have upgraded the version of the external libraries which are automatically downloaded by the yambo configure. This change was particularly important for the Slepc and Petsc libraries since it implied changes in the calls to the functions provided by such libraries in the yambo source code.
Cuda support
Handling of GPU support in the sources has been further streamlined and simplified; calculation of DIPOLES has been extensively revised resulting in a significant performance gain; solution of the Dyson equation for W in X_redux can now be selectively performed on CPU or GPU (see var ChiLinAlgMod).
Performances
The performance for the calculation of DIPOLES on GPU has been significantly improved (also leading to improvements on the CPU-only time-to-solution); a few other bottlenecks have been identified and solved. Overall, the improvements of the code since Yambo 4.4 can be exemplified by the case of H-rutile (a supercell of 72 atoms of rutile TiO2 plus one H-interstitial defect, studied at the GW level).
Figure 1. Left panel: baseline data referring to runs performed on Marconi-A2 KNL (Intel Xeon Phi Knights Landing, 68 cores/node) in early 2019 for rutile-H. Right panel data for the same system (October 2019).
Figure 2. Yambo performance (time-to-solution and speedup) as a function of the number of nodes for rutile-H. Left panel: yambo 5.0 runs on Marconi-A3 (Skylake partition). Right panel: yambo 5.0 run on Marconi-100 (IBM-P9 + 4 NVIDIA V100 GPU cards).
In Figure 2 we are plotting some recent datasets obtained for the same use case (rutile-H) on Marconi-A3 (Skylake partition, M-SKL, 48 cores/node) as well as on Marconi-100 (M-100, equipped with 4 NVIDIA V100 per node). In both cases the scalability is quite good. Interestingly, on Skylake a time-to-solution of about 2000 seconds is obtained on 40 nodes, at variance with KNL where the same timing required at least 128 nodes. Even more so when considering the GPU-accelerated case: here the smallest partition considered (5 nodes) already gives the shortest time-to-solution compared to previous machines (~1000 sec), further reducing it with good scalability down to about 200 seconds. Note that 40 nodes of M-100 correspond already to a quite large computational partition of about 1.2 PFlops (which is exploited with performance by a GW calculation on a rather small system).
I/O
By default the I/O is now done in NETCDF-4 format, based on HDF5. It is still possible to switch back to NETCDF-3 in most cases. Only real time simulations, so far, explicitly require NETCDF-4 file format. It can be also requested to print output files in netcdf-format (--enable-netcdf-output).
The core io_subroutines of yambo have been moved to a separate folder. This is a first step towards the realization of an IO library for yambo.
Descriptors have been added to handle the metadata associated with the yambo databases. The info contained in the descriptors are also reported in the report of simulations performed with the yambo code.
Doxygen documentation (work in progress)
We started setting up files for doxygen documentation. Hopefully documentation will be soon available.
Memory handling
The memory driver has been extended with an improved report on the memory usage for the users. An experimental check on memory allocation on the node is now available for parallel runs.
yambo
Dipoles (partly experimental features)
The dipoles runlevel has been extended. It now includes the capability to compute, beyond the optical dipoles, also the "spin dipoles" needed to compute magnons. Also, for isolated systems a preliminary implementation of the ``orbital dipoles’’ is available
Double grids support
The support to the double k-points grid has been revised and improved. The user can now use the double grid for different runlevels: dynamical response function and screening in G-space, BSE with inversion solver, real time dynamics (see yambo_rt). The mapping can be done in different flavors.
Coulomb cutoff
The Coulomb cutoff technique for systems with reduced dimensionality now supportst a Wigner-Seitz shape in systems of 2D,1D and finite systems in orthorhombic cells.
Self-consistent GW on eigenvalues (evGW)
In Yambo 5.0 self-consistent GW on G or G and W is implemented, for more information see the dedicated tutorial:
http://www.yambo-code.org/wiki/index.php?title=Self-consistent_GW_on_eigenvalues_only
ACFDT total energies (highly experimental feature)
The Adiabatic Connection Fluctuation and Dissipation Theorem (ACFDT) total energy driver and subroutines are now part of the source code. It is an old feature that was never released, nor maintained.
Kerr effect and magneto-optical properties
The magneto-optical properties, which were previously obtained via the yambo_kerr executable can now be obtained directly with the yambo executable. This is controlled by a new input variable for the BSE runlevel: BSEprop.
BSE and Slepc (partially experimental feature)
The slepc solver has been extended and now works also in cases when the coupling part of the BSE matrix is activated. Moreover, extra options to control the kind of scheme used by the slepc library have been added.
BSE and Haydock
Several issues have been fixed in the Haydock solver which can now handle different kinds of response functions.
BSE and dichroism (experimental feature)
Natural Circular Dichroism (NCD) at the independent particles level, has been implemented for isolated systems. It can be computed with the input file variable BSEprop=”dich”.
BSE at finite momentum (partially experimental feature)
The finite momentum BSE has been fully released, also with the option to go beyond the resonant only approximation. Finite momentum excitons including the coupling term in the BSE matrix can be also included.
BSE and magnons (highly experimental feature)
The BSE is usually solved in the spin conserving channel and then used to construct optical properties via the optical dipoles. In Yambo 5.0 it is possible to compute the BSE also in the spin-flip channel and to construct the X+- response function via the “magnetic dipoles”, i.e. the expectation value of the Pauli matrices.
References for recent developments in yambo
[1] https://arxiv.org/abs/2103.02266
[2] https://pubs.rsc.org/lv/content/articlelanding/2020/tc/d0tc01322f
[3] https://journals.aps.org/prb/abstract/10.1103/PhysRevB.95.155203
[4[ https://journals.aps.org/prb/abstract/10.1103/PhysRevB.86.125139
ypp
General
The ypp driver has been reorganized. Now also ypp produces reports and log files like the yambo executable.
Fourier interpolation
In Yambo 5.0 it is possible to interpolate band structure and exciton dispersions using smooth Fourier interpolation as described in the wiki tutorial
http://www.yambo-code.org/wiki/index.php?title=How_to_analyse_excitons#Interpolate_exciton_dispersion_.28only_in_Yambo_5.x.29
Electron/hole average density for excitons
Now ypp can plot the average electron/hole density for a given exciton. This quantity allows an easy visualization of charge-transfer excitons in molecular systems.
http://www.yambo-code.org/wiki/index.php?title=How_to_analyse_excitons#Plot_electron.2Fhole_average_density_.28only_in_Yambo_5.x.29
Handling of ndb.QP databases
The handling and merging of ndb.QP databases has been improved
Interfaces
Several improvements were done to the interfaces. The a2y (aninit to yambo) interface now handles the KB form factor printed inside the Abinit WFK file written in NetCDF format.
yambo_rt & ypp_rt
Real-Time project fully released (experimental feature)
The real-time module of yambo is among the most actively developed parts of the code. With yambo 5.0 it is possible to take advantage of all recent developments and run real-time simulations with different levels of approximations from td-ip to td-hsex. With this new release, all approximations can be controlled from input. The structure of the I/O databases is completely changed, taking advantage of HDF5 features to deal with multiple variables with a dimension that grows during the simulation.
Also, the output files now contain more information such as the generated carriers density. ypp_rt can be used to analyze the output in different ways. Finally it is possible to load the non-equilibrium occupations to compute non-equilibrium QP corrections and optical properties. For further details, we refer the reader to published papers.
References for yambo_rt
[1] https://journals.aps.org/prb/abstract/10.1103/PhysRevB.84.245110
[2] https://journals.aps.org/prb/abstract/10.1103/PhysRevB.93.195205
yambo_sc & ypp_sc
Self-consistent simulations (experimental feature)
The self-consistent module of the Yambo code has a long history but was never released. With yambo 5.0 this part of the code is made available to all the yambo community of users. It includes the possibility to perform self-consistent simulations with non-local self-energies such as Hartree+SEx, Hartree+CoHSEx.
External Magnetic and electric fields (experimental feature)
The yambo_magnetic and yambo_electric executables of the devel repository have also been merged into the recently released yabmo_sc feature. A static magnetic field is coded via a linearly growing vector potential with a saw-like shape in the supercell. Different gauges and geometries can be selected from the input file. The implementation of the external static electric field is instead done via the Berry-Phase formulation
References for yambo_sc
[1] https://www.nature.com/articles/s41467-017-01660-8
[2] https://pubs.acs.org/doi/abs/10.1021/nl200871v
[3] https://journals.aps.org/prmaterials/abstract/10.1103/PhysRevMaterials.3.124601
yambo_ph & ypp_ph
Electron-phonon coupling fully released
Different bugs were fixed in Yambo 5.0 regarding electron-phonon coupling. Now it is possible to calculate the renormalization of the band structure induced by the coupling with phonons and the finite temperature optical response.
For more details see the tutorials:
http://www.yambo-code.org/wiki/index.php?title=Tutorials#Electron_phonon_coupling
References for yambo_ph:
[1] https://journals.aps.org/prb/abstract/10.1103/PhysRevB.89.085202
[2] https://journals.aps.org/prl/abstract/10.1103/PhysRevLett.101.106405
yambo_nl & ypp_nl
Nonlinear optics calculations
Updated to the new parallelization scheme in Yambo. Now it is possible to calculate the current using the Berry phase formulation, Eq. D1 of Phys. Rev. B 69, 085106 (2004).
References for yambo_nl
[1] https://journals.aps.org/prb/abstract/10.1103/PhysRevB.88.235113
[2] https://journals.aps.org/prb/abstract/10.1103/PhysRevB.98.165126