Uočene nepravilnosti u Gaussianu 2003
1. Račun anharmoničkih frekvencija za veće molekule (Ivana Matanović, IRB)
Račun anharmoničkih frekvencija za molekule s više od 3 atoma prekidao se u linku 716, s porukom:
Erroneous read. Read -1 instead of 944, fd = 4,
readwa - readm.
Radilo se o pogrešci u izvornom kodu, u potprogramu DoDifN, linka l101. Polje XDN dimenzionirano je s 3 indeksa i u programu se koristi na dva različita načina: zadnja dva indeksa jednom označavaju Kartezijeve koordinate atoma u skladu s dimenzijom polja, a drugi put prvi indeks ima fiksnu vrijednost 1, a zadnji indeks označava jednu od internih 3N-6 koordinata. To može izgledati ispravno, ali zbog poretka u kojem Fortran sprema elemente polja (najbrže se mijenja prvi indeks, pa redom ostali), kad vrijednost najvišeg indeksa prijeđe dimenzioniranu vrijednost, varijabla neizbježno upućuje izvan dimenzija polja. Zbog toga u ovom slučaju (kad je 3N-6 > N) dolazi do 'prepisivanja' vitalnih informacija u radnom memorijskom prostoru i program puca.
Nakon promjene dimenzije polja XDN i načina njegovog indeksiranja program je pravilno radio i davao ispravne vrijednosti. Promjene su izvršene u linku l101.F, Deck DoDifN,
redak:
Dimension
XP(LenX), XN(LenX), XDE(LenX,3), XDN(LenX,3,IStDN:NDerN)
je promijenjen u:
Dimension
XP(LenX), XN(LenX), XDE(LenX,3), XDN(LenX,3*(NDerN-IStDN+1))
redak:
Call
ACSASB(LenX,XP,Scale,XN,-Scale,XDN(1,IXYZ,IAtom))
je promijenjen u:
NDeriv=IXYZ*(IAtom-IStDN+1) [dodani
redak]
Call
ACSASB(LenX,XP,Scale,XN,-Scale,XDN(1,NDeriv))
Obavijest je poslana proizvođaču.
Isporučena nam je nova, poboljšana verziju B.05 koja ispravno radi (pogreška
je bila popravljena već ranije).
2. Paralelni (Linda) DFT račun za molekule sa 60 i više atoma (Boris Kovačević, IRB)
DFT račun za molekule sa 60 i više atoma pucao je u distribuiranom načinu rada (Linda), u linku 501, s porukom:
LStat but CoulSu not compiled for Linda.
Error termination via Lnk1e in /usr/local/chem/g03/linda-exe/l502.exel at ...
Ustanovljeno je da se u linku 301 postavlja logička varijabla Big koja kasnije upućuje na još neimplementirani način rada u linku 501. Promjenom naredbe u kojoj se varijabli Big dodjeljuje vrijednost
redak:
Big = (GFloat(NActiv)+Pt5).ge.(SFac*GFloat(NAtFMM))
je
promijenjen u:
Big = .False.
postiže se naizgled uredan
rad. Proizvođač je u odgovoru upozorio da se ovom promjenom koristi novi, još
nedovoljno testiran, paralelni algoritam. Ključnim riječima "Int=NoFofCou"
zadaje se korištenje starog, sporijeg, ali ipak paralelnog algoritma.
Naknadno je ustanovljeno da se isti problem javlja u paralelnom (Linda) načinu i za manje molekule (test445.com). Verzija B.05 više ne puca na tom mjestu već prelazi u serijski način rada. S opcijom "Int=NoFofCou" postiže se uredno paralelno izvođenje.
3. Paralelni (SMP) G3MP2 račun za određene molekule ulazi u beskonačnu petlju (Boris Kovačević, IRB)
Dolje zadani posao, u dijelu u kojem se izvodi račun G2/GTMP2Large, ulazi u beskonačnu petlju u linku l906. Procesor pokazuje 100% opterećenje, ali račun ne napreduje.
%nprocshared=2
%chk=gvanidin.chk
%mem=256MB
%rwf=1,240MW,2,240MW,3,240MW,4,240MW,5,240MW,6,240MW
#p g3mp2 maxdisk=1440MW
saxitoxin neutral
0 1
c
n 1 1.44
n 1 1.44 2 120.0
n 1 1.44 3 120.0 2 180.0
h 3 1.008 1 120.0 2 0.0
c 3 1.44 1 120.0 2 140.0
h 2 1.008 1 109.471 3 180.0
c 4 1.44 1 109.471 3 180.0
c 4 1.44 1 109.471 8 120.0
h 9 1.089 4 109.471 1 180.0
h 9 1.089 4 109.471 10 120.0
h 9 1.089 4 109.471 10 240.0
h 8 1.089 4 109.471 1 180.0
h 8 1.089 4 109.471 13 120.0
h 8 1.089 4 109.471 13 240.0
h 6 1.089 3 109.471 1 180.0
h 6 1.089 3 109.471 16 120.0
h 6 1.089 3 109.471 16 240.0
Problem nastaje u potprogramu Trn34S (osutil.F) koji se ugrađuje u dinamičku biblioteku util.so. Ovisno o zahtjevima pojedinih dijelova posla, broj aktivnih niti se smanjuje ili povećava. Međutim, nakon što se broj aktivnih niti smanji, zahtjev za povećanjem vodi u beskonačnu petlju u kojoj se čeka potvrda o aktiviranju dodatne niti. Problem nestaje ako se zakomentiraju retci:
If(NPart.lt.NP)
Left = NProc(-NPart)
...
If(NPart.lt.NP) Left = NProc(-NP)
ili barem prvi od njih. I o ovome je izviješćen proizvođač, ali odgovora nije bilo.
4. Program newzmat puca u radu s nekim checkpoint datotekama (Iva Movre-Šapić, FKIT)
Radi se o premaloj (unaprijed definiranoj) veličini stoga u radnoj ljusci. Dovoljno je prije pozivanja programa izvršiti
ulimit -s unlimited