Federico Calboli ha scritto:
On Wed, 2005-03-02 at 12:41 +0100, Davide Alberani wrote:
dal punto di vista del calcolo, fa operazioni algebriche (anche
abbastanza complesse) su un matricione 23000 x 23000 (circa) che e`
quadrato e simmetrico, per cui li fa solo su mezza (e richiede quindi
2.3 Gig di memoria di qualche tipo).
Ok, se la matrice è simmetrica effettivamente adattando opportunamente
il programma che svolge il calcolo la memoria dovrebbe bastare: resta la
considerazione che sforare la RAM fisica e passare in swap generalmente
uccide la performance. Usando hardware Intel anche di fascia server, non
mi stupirebbe che tra il calcolo di una matrice 20000 x 20000, che sta
in RAM, e una 23000 x 23000 che non ci sta, si pagasse un fattore 1000
a moltiplicare il costo della dimensione addizionale (molti algoritmi
matriciali sono O(n^3) se la memoria non mi inganna: pagato questo
scotto si moltiplichi per 1000 causa trashing da e per il disco).
Non sono uno specialista di analisi numerica: mi risulta che questi
problemi vengano affrontati in apposite librerie, controllerei ad
esempio LAPACK, utilizzando algoritmi che fanno sforzi inumani per usare
al meglio la cache, la memoria e il disco gestendoli esplicitamente
invece di lasciare che il S.O. tiri a indovinare senza sapere se il
programma si sta occupando di calcolare determinanti o mostrare i
cartoni animati.
Davide Bolcioni
--
There is no place like /home.
|