[QE-users] time consuming band structure calculation for a supercell
Lorenzo Paulatto
paulatz at gmail.com
Mon Dec 14 15:12:13 CET 2020
p.p.s I mean diagonalization='ppcg'
On 2020-12-14 15:10, Lorenzo Paulatto wrote:
> p.s. If you can use a newer version of QE that does calculation="ppcg"
> I found it to be much (i.e. 6x) faster in this case
>
> cheers
>
> On 2020-12-14 14:50, Lorenzo Paulatto wrote:
>> Hello,
>>
>> I've had a look at the output, and a part for the cutoff which
>> appears a bit too high (you are probably safe with 50/400Ry of
>> ecutwfc/ecutrho) I only see to small problems:
>>
>> 1. the scf calculation is using 6 pools with 10 k-points, which means
>> that 4 pools have twice as much work to do as the others. In the
>> ideal case, the number of pools should be a divisor of the number of
>> k-points (i.e. 2, 5 or 10 in your case). Also, it is recommended that
>> the number of CPUs in a pool are a divisor of the number of CPUs on
>> each computing node, to avoid too much inter-node communication. In
>> your case, the best choice with 72 CPUs (on two nodes?) could be 2
>> pools. You may gain a bit of time, but this is not going to change a
>> lot. You should consider using more CPUs if you have the budget. For
>> example, 10 pools of 12 or 18 CPUs each.
>>
>> 2. The bands calculation runs on 12 CPUs and has a single k-point,
>> while each pool of the SCF one has up to 2 k-points. We would expect
>> that the bands calculation take about half as an scf step, i.e. about
>> 50 seconds. However, the bands calculation has some trouble
>> diagonalizing the Hamiltonian, you see it writes:
>>
>> ethr = 2.76E-12, avg # of iterations =120.0
>>
>> while typically the very last scf diagonalization is
>>
>> ethr = 2.98E-12, avg # of iterations = 3.3
>>
>> This is because, the scf calculation can start with a very good guess
>> good the wavefunction, while the bands calculation does not. It is
>> still faster than doing the entire scf procedure, but just by a
>> factor ~2.3
>>
>> Fortunately, you do not usually need the eigenvalues to a precision
>> of 10e-12. You can set the threshold by hand using the keyword
>> diago_thr_init, I guess 1.d-6 should be tight enough. However, double
>> check what you get in output, because I am half-suspecting that it
>> may be over-written by the value in the restart file
>>
>> cheers
>>
More information about the users
mailing list