[Q-e-developers] minimizzazione inefficiente
Nicola Manini
Nicola.Manini at mi.infm.it
Mon May 9 16:33:31 CEST 2011
At Paolo's request, I attach the input file of a typical example of
problematic damp minimization. The computation takes 4h30 on 12 cores (Xeon
E5520 2.27GHz) but there is no need to wait for the end: the oscillation is
clear after few iterations.
Here follows the output of 2 grep's on the output file (full file available
upon request):
grep Tota c12-h2_side_d20.out
Total force = 0.000020 Total SCF correction = 0.000004
Total force = 0.000015 Total SCF correction = 0.000002
Total force = 0.000018 Total SCF correction = 0.000002
Total force = 0.000032 Total SCF correction = 0.000005
Total force = 0.000032 Total SCF correction = 0.000005
Total force = 0.000033 Total SCF correction = 0.000004
Total force = 0.000033 Total SCF correction = 0.000006
Total force = 0.000036 Total SCF correction = 0.000007
Total force = 0.000039 Total SCF correction = 0.000003
Total force = 0.000042 Total SCF correction = 0.000004
Total force = 0.000046 Total SCF correction = 0.000002
Total force = 0.000049 Total SCF correction = 0.000003
Total force = 0.000052 Total SCF correction = 0.000002
Total force = 0.000056 Total SCF correction = 0.000001
Total force = 0.000060 Total SCF correction = 0.000001
Total force = 0.000065 Total SCF correction = 0.000001
....
grep "atom 5 type 1 force =" c12-h2_side_d20.out
atom 5 type 1 force = 0.00000320 0.00000000 0.00000367
atom 5 type 1 force = 0.00000276 0.00000000 -0.00000047
atom 5 type 1 force = 0.00000265 0.00000000 0.00000107
atom 5 type 1 force = 0.00000198 0.00000000 -0.00000342
atom 5 type 1 force = 0.00000232 0.00000000 0.00000120
atom 5 type 1 force = 0.00000214 0.00000000 0.00000028
atom 5 type 1 force = 0.00000179 0.00000000 -0.00000173
atom 5 type 1 force = 0.00000204 0.00000000 0.00000170
atom 5 type 1 force = 0.00000159 0.00000000 -0.00000182
atom 5 type 1 force = 0.00000181 0.00000000 0.00000128
atom 5 type 1 force = 0.00000137 0.00000000 -0.00000192
atom 5 type 1 force = 0.00000165 0.00000000 0.00000179
atom 5 type 1 force = 0.00000112 0.00000000 -0.00000258
atom 5 type 1 force = 0.00000155 0.00000000 0.00000229
atom 5 type 1 force = 0.00000086 0.00000000 -0.00000335
atom 5 type 1 force = 0.00000148 0.00000000 0.00000340
....
I add a few comments in Italian to Paolo's message below.
All the best,
Nick
On 05/09/2011 01:11 PM, Paolo Giannozzi wrote:
> Ciao
>
>> Per la cronaca, l'algoritmo rilassesco damp ha strane instabilita` quando
>> arriva vicino al minimo: come niente comincia ad oscillare con ampiezza
>> sempre maggiore facendo crescere l'energia totale.
>
> interessante. La dinamica dampata "normale", quella con un damping
> parameter, non puo' far altro che dampare: caso mai dampa troppo poco.
A meno che il time step sia troppo grosso.
> Non so bene (ne' lo sa nessun altro, temo) come funziona la dinamica
> dampata che c'e' nel QE. A me e' sempre sembrata una cosa di dubbia
> utilita', anche se ha i suoi tifosi. Se hai un caso che non prende
> secoli potresti per favore fare un bug report su qe-forge?
Se bfgs andasse meglio non ci sarebbe ragione di usare damp, ma tipicamente
bfgs vicino al minimo comincia a vagare a casaccio, facendo salire l'energia,
e uscendo con errore. damp almeno continua a provarci, e se magari
localmente fa aumentare l'energia, dopo parecchie iterazioni si redime e
ri-inizia a calare (anche nell'esempio allegato).
>> Pure il bfgs non e` che brilli vicino al minimo. Non sarebbe possibile/furbo
>> quando l'energia si abbassa di poco switchare automaticamente a un conjugated
>> gradient, che se il gradiente non e` troppo sballato in 3 o 4 iterazioni piove
>> sul minimo?
>
> bisogna vedere se il motivo per cui il bfgs va a farfalle non e'
> proprio il gradiente in cui il rumore e' maggiore del segnale.
Gia`.
> Anni fa c'era la possibilita' di ottimizzare le posizioni con
> il conjugate gradient, ma non sembrava migliore del bfgs, anzi.
> Bisognerebbe provare, con qualche caso rognoso sottomano. Una
> delle difficolta' nel cercare di migliorare l'attuale algoritmo
> e' che ci vorrebbero un po' di casi difficili ma che non richiedano
> decine di ore per girare. Un'altra difficolta' e' che la parte di
> ottimizzazione ionica e' scritta in un modo piuttosto cervellotico
> che rende difficile metterci le mani. L'ultima difficolta' e' che
> di gente che si lamenta del bfgs ce n'e' tanta, ma di gente che si
> mette li' a migliorarlo, o anche solo a proporre qualche idea come
> la tua, ce n'e' molta meno! Grazie, ciao
Posso collaborare su questa cosa. Penso di riuscire a fabbricare anche
esempi rognosi con meno atomi&elettroni, da fare girare quasi al volo.
In effetti ho guardato il codice, e ci si capisce abbastanza poco.
Non e` evidente dove viene deciso il time step della dinamica ne` il
parametro di damping (immagino che cercando abbastanza a lungo alla fine li
troverei...). La cosa piu` imbarazzante e` che non sono riuscito a trovare
sulla rete una descrizione precisa del "preconditioned-projected-Verlet
algorithm". Boh? ;-)
Grazie!
Nick
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: c12-h2_side_d20.in
URL: <http://lists.quantum-espresso.org/pipermail/developers/attachments/20110509/c9d14ac1/attachment.ksh>
More information about the developers
mailing list