Useful Keywords

This is a short summary of useful keywords in the context of large-scale calculations. Not all of them were mentioned during this tutorial, but may be worth a try for your large-scale workflow.

  • use_local_index: A must-set keyword for all simulations with more than 100 atoms. In any large-scale run, this keyword should be used. This keyword ensures that the memory usage per task (!) does not needlessly scale O(N^2) - a scenario that would otherwise prevent the code from running any larger systems. use_local_index can lead to slight slowdown (test to see if this is even the case) but can actually also facilitate speed-ups for large cases.

  • load_balancing: Can lead to a small speedup when used together with use_local_index. Should usually work but using use_local_index on its own is also fine.

Things that were not discussed above but may be worth checking:

  • preconditioner kerker off: For periodic runs, a so called preconditioner is used in the mixing. For systems that are safely non-metallic, this may not be needed and, in large runs, can save noticeable amounts of time. However, note this does need testing especially for very large runs.

  • elsi_restart keyword: If you are trying to restart a single scf cycle for a very large system, you can use the electronic restart. However, be careful, e.g. you must use ALL k-points when using GGA restart files to start a hybrid run. (In scalar-relativistic DFT-GGA runs of periodic systems, FHI-aims, by default, uses time reversal symmetry to reduce the number of k-points. In order to use all k-points (no symmetry use in the Brillouin zone at all) in preparation of writing restart files for a subsequent hybrid DFT run, set symmetry_reduced_k_grid .false.)

  • frozen_core_scf keyword: In simulations dominated by the eigensolver ("solution of K.-S. equations"), you can achieve substantial speedup at essentially no accuracy loss 1 by "freezing" core orbitals in the eigenvalue solver. E.g., to freeze all core orbitals deeper than -200 eV, use:

    frozen_core_scf .true.
    frozen_core_scf_cutoff -200