Quantum ESPRESSO presents several levels of parallelization, including worlds, images, polls, and so on. However, there is a very intricate (and not clear to me) relationship between k-point sampling, the number of atoms in the cell, and how the parallel tasks are distributed. The parallelization can turn a calculation very quick or very slow depending on the right or wrong choice of parameters. Is there a comprehensive manual or "rule" to decide on how to pick the right parameters for a parallel run?
-
1$\begingroup$ I think in the end you will not get around reading the documentation and experimenting. - Every system is different. Just the number of electrons in an atom will impact the required resources in a calculation for example (thinking of memory problems with a different code between def2-svp and def2-tzvp). Unfortunately the best settings for every case are only gleamed from experience. $\endgroup$– DetlevCMMay 18, 2020 at 20:28
1 Answer
I don't think there is a universal rule for the number of 'cores' or 'threads' that you request in your parallel calculation. In my opinion, the only parameter you need to look out for, is the number of K points. If you are sampling more than one K-point, you can get clever and use npool = no. of nodes. I would recommend that you keep the 'npool' tag to be a divisor of the number of K points. For example, if your K-point mesh is 12x12x1, you can use ' -npool 6 ' where 6 is the number of nodes/cores that you are using. But the parallelism process is pretty clever, so even if you use a number that is not a divisor, the calculation should run just fine. In that case, it does occasionally terminate abruptly, from my experience. You can take a look at the exact syntax for this in the documentation for pw.x on QE. What npool does is it basically splits the K-points evenly between the nodes and this speeds up your calculation significantly.
In conclusion, the parallelization process on QE is very clever. I would suggest you use a good amount of computing resources available for calculations without worrying much about the parallelism. If you are using more than 1 K-point, I would heavily recommend you check out 'npool' - It makes life so much more easier.