faq:speedup

# Differences

This shows you the differences between two versions of the page.

 — faq:speedup [2015/01/16 16:23] (current)oschuett adopted from a posting by Iain Bethune 2015/01/16 16:23 oschuett adopted from a posting by Iain Bethune 2015/01/16 16:23 oschuett adopted from a posting by Iain Bethune Line 1: Line 1: + ====== How can I speedup my calculations?​ ====== + There are a couple of areas to consider when you are interested in performance,​ firstly the physics, and secondly, computational. + + ==== Physical parameters ==== + * choosing the cheapest representation of your system that gives correct results e.g. choosing an appropriate basis set (Gaussian), and also an appropriately sized plane-wave expansion (see [[howto:​converging_cutoff]] ) + + * SCF settings - choosing an appropriate convergence threshold, and diagonalization algorithm (or use OT for non-metallic systems for much greater performance,​ with a good preconditioner) see [[howto:​static_calculation]] for some of the basics + + ==== Computational aspects ==== + * If you are running in parallel with MPI do some tests (on a shortened version of your problem) to determine how many CPU cores you can effectively use.  As a rule-of-thumb,​ you might expect reasonable scaling up to $n_\text{procs} \approx n_\text{atoms}$ for typical settings. ​ see [[:​performance]] and http://​www2.epcc.ed.ac.uk/​~ibethune/​files/​cp2k_cug2014.pdf for benchmark data. + + * Build the code with high compiler optimisation (e.g. ''​-O3''​) and an optimised BLAS/LAPACK library (e.g. MKL, GotoBLAS, ATLAS) + + * Build the code with the optional performance-critical libraries libsmm (in cp2k/​tools/​build_libsmm) and libgrid (cp2k/​tools/​autotune_grid). + + Before going to far down any of these areas, take a look at the timing report which is printed at the end of your CP2K job output. ​ This will give you some information about which parts of the code are taking the most time, and therefore where to invest your time tweaking to get the best performance.