Mailing List del Fortunae LUG ============================ On Saturday 23 November 2002 20:13, you wrote: > > > "Ottimizzare" è un concetto molto generico, ci sono milioni di modi di > ottimizzare un programma. In particolare, è probabile che nelle tue prove > siano coinvolte le famose istruzioni SIMD (mmx,sse,sse2) utili proprio in > situazioni tipo encoding (operazioni di somma e moltiplicazione tra > matrici). E' probabile che il tuo compilatore abbia automaticamente usato > queste istruzioni,come stanno cominciando a fare i compilatori "moderni". > Anche se mi risulta che queste istruzioni abbiamo una sintassi leggermente > diversa a seconda del s.o. e della CPU, Sembrerebbe che il tuo p4 abbia > interpretato correttamente queste istruzioni, scritte inizialmente per > Athlon. E' probabile che le ultime versioni del compilatore siano "furbe" > in questo senso. Mi risulta, tra l'altro, che il > boost d > i > prestazioni di queste > ottimizzazioni usate in "automatico" dal compilatore sia proprio > nell'ordine del 10-20% (possono raggiungere il 50% se usate da un bravo > programmatore). Infine, è probabile che il compilatore agisca anche > sull'ordine di esecuzione delle istruzioni, sul fatto di conoscere la cache > L1 e L2 e la "profondità" della pipeline delle varie CPU. Ci sono molti > parametri in gioco, come vedi! > Tutto quello che vuoi, ma e' assurdo che ottimizzando per il processore sbagliato sia meglio, non trovi ? Signfiaca che quando compilo il kernel, per essere davvero sicuro di aver fatto il meglio, devo provare tutti i processori ? Cmq ho fatto qualche altra prova e credo di essere giunto a conclusione che quella macchina ha qualcosa che non va, guarda un po' ... Ho portato sul PC fisso (Athlon XP 1800+) gli eseguibili compilati e gia' testati sul portatile, risultato: bladeenc_i686 0:34 bladeenc_athlon 0:31 bladeenc_i386 0:33 Tutti gli eseguibili erano compilati con gcc 2.96, rifaccio tutto con il gcc 3.2 ! bladeenc_i686 0:24 bladeenc_athlon 0:24 bladeenc_i386 0:25 C'e' un particolare: cat /proc/cpuinfo (del portatile) processor : 0 vendor_id : GenuineIntel cpu family : 15 model : 2 model name : Intel(R) Pentium(R) 4 CPU 2.40GHz stepping : 4 cpu MHz : 1792.759 cache size : 512 KB fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm bogomips : 3578.26 Gli ho spiegato la cosa e mi ha detto che il suo fornitore gli ha detto che i P4 nei portatili usano 3 cicli su 4 che sarebbe esattamente 1800 !!!! Non ho parole !!! Mai sentita un baggianata simile ! Il fatto e' che siccome il negoziante voleva fare il figo, ha messo sul portatile il processore piu' veloce che poteva ossia un P4 2.4 con fsb a 533 Mhz. In tutto questo ha tralasciato che la motherboard non e' in grado di generare i 533 Mhz necessari per farlo rullare ed il processore, che ha il moltiplicatore interno fissato a 4.5 (4.5*533=2398), cloccato a 400 va a 1800; guarda caso 4.5 * 400 fa proprio 1800 (e non 3 cicli su 4) ! Ovviamente WinXP, che il negoziante aveva installato, diceva che il processore e' un P4 2.4 (e c'ha anche ragione) dimenticandosi di rivelare un particolare ... che comunque va a 1800 Mhz !!! Comunque adesso ha ordinato il P4 che dico io e quando arriva vediamo ... ma pensate che sta cosa possa ridurre cosi' tanto l'efficenza di tutta la macchina ??? In effetti il compilatore non ha conoscenza di questa cosa ma non credo faccia tutta questa differenza. Il mio PC Athlon gira a 1800 (come il P4 del portatile) e il tempo di compressione e' 0:31 contro 1:36, il disco (quello da 2.5" e' notoriamente lento) non viene comunque utilizzato e altre cose non mi vengono in mente se non l'architettura del processore ovviamente diversa. Che cosa ne pensate ? Avete mai fatto test simili ? Ciao, Thomas. -- -- Nik: internet "frega". -- -- Le raccomandazioni della mamma di simon "non prendere freddo, copriti... e prendi il palmare"