mercoledì 11 febbraio 2009

Da grande non voglio fare il fisico computazionale

File:IEEE 754 Double Floating Point Format.svg

Questo commento qui non fa una piega ed è, guarda caso, quello che mi sta accadendo.

Volevo portare su Windows la libreria scientifica GNU, senza emulazioni Unix o POSIX, quindi senza usare Cygwin ma preferendovi MSYS/MinGW.

La GSL è scritta in puro ANSI C, quindi deve essere portabile come software nativo, in altre parole: niente DLL aggiuntive.

Purtroppo, al momento del make check il test dell’integrazione Monte Carlo fallisce, perdipiù con un errore di ~10-3, che è enorme se paragonato alla “doppia precisione” in uso nei calcoli.

Il problema è vecchio, ma ci si accorge subito che scompare se si compila senza ottimizzazione.

Ohibò.

Ho dato uno sguardo alla documentazione del compilatore per capire a quali singole opzioni corrispondesse il flag -O2. Le ho messe lì, tutte, ad una a una, per vedere quale generasse il problema, ma con mia sorpresa scopro che espandendo -O2 nella lunga lista di opzioni il problema non c’era più.

Ohibò.

Così scrivo alla lista della GSL; ma nessuno mi cagca.

Allora scrivo alla mailing list del compilatore. Con un po’ d’aiuto riesco a trarne un bug report appena decente. Vengo rimpallato dal tracker di un progetto al tracker dell’altro, e solo alla fine di una lunga discussione riesco a convincere Brian Gough a risolvere la cosa dal lato della libreria GSL.

0 commenti: