View Full Version : gcc 3.x (ottimizzazioni athlon), quale?
Kernel Panic!!
31-07-2002, 17:33
Ho letto che per compilare software ottimizzato K7 serve un gcc della serie 3.x... meglio (o forse è più corretto dire meno peggio :p ) il 3.0 o il 3.1?
Volevo provare a costruirmi una debian from source... :D
ilsensine
31-07-2002, 17:38
Anche il 2.96 ottimizza per l'Athlon
Kernel Panic!!
31-07-2002, 17:39
boh, ma non era bello buggatello? :)
cmq tra i tre qual è meno peggio?
ilsensine
31-07-2002, 17:46
Gli "ultimi" gcc 2.96 impacchettati dalle distribuzioni sono decenti. Ho provato un gcc 3.1 dalla Mandrake Cooker e l'impressione è stata disastrosa (codice assemblato alla mano) - devono ancora mangiare parecchie pagnotte prima di farmelo usare.
ilsensine
31-07-2002, 17:48
boh, ma non era bello buggatello? :)
No, era quello "in via di sviluppo". Era bacata la testa di quelli della Redhat e della Mandrake che hanno deciso di introdurlo anzitempo. Ormai c'è, e a quanto pare sono riusciti a stabilizzarlo, dopo tanta fatica.
Originariamente inviato da Kernel Panic!!
[B]Ho letto che per compilare software ottimizzato K7 serve un gcc della serie 3.x... meglio (o forse è più corretto dire meno peggio :p ) il 3.0 o il 3.1?
Il 3.2 :)
Ti serviranno anche binutils aggiornate (maggioreuguale 2.11.9), ma questo solitamente non e` un problema.
Kernel Panic!!
31-07-2002, 18:22
Originariamente inviato da ilsensine
[B]
No, era quello "in via di sviluppo". Era bacata la testa di quelli della Redhat e della Mandrake che hanno deciso di introdurlo anzitempo. Ormai c'è, e a quanto pare sono riusciti a stabilizzarlo, dopo tanta fatica.
nei repository debian (ho potato, woody, sarge e sid in /etc/apt/source.list) ci sono solo gcc-2.95, gcc-3.0 e gcc-3.1 ...
ilsensine
31-07-2002, 18:30
La Debian non è la Mandrake, per vostra fortuna.
Tra i due non saprei quale prendere, sono rimasto abbastanza "scottato" dal 3.1 della Mandrake - però era la Mandrake
Kernel Panic!!
31-07-2002, 18:31
ma scusa, se allora il 3.1 fa così schifo mentre il 2.96 è usabile, perchè avrebbero preferito includere il 3.1 e non anche il 2.96? :)
Kernel Panic!!
31-07-2002, 18:32
cmq faccio un po' di prove, al massimo mi becco un paio di segmentation fault :)
Originariamente inviato da ilsensine
[B]La Debian non è la Mandrake, per vostra fortuna.
Tra i due non saprei quale prendere, sono rimasto abbastanza "scottato" dal 3.1 della Mandrake - però era la Mandrake
Io GCC 2.96 non lo toccherei neanche con una canna da pesca.
Ora funzionera` anche bene, ma e` pur sempre un`aborto.
NON doveva nascere. NON deve esistere.
Senza contare che una percentuale non trascurabile del software non garantisce ancora il corretto funzionamento con gcc 2.96.
Se permettete, con Gcc3.1 su debian attivando march/mcpu=athlon ho compilato il kernel Linux version 2.4.19-pre7-preemptive, mplayer, transcode, xine senza nessun problema di stabilità, testandolo per nottate intere codificando avi in xvid.
Non sono un programmatore C/C++, quindi lascio i giudizi più tecnici a persone come ilsensine, tuttavia non'ho mai riscontrato problemi con software compilato con gcc3.1.
Kernel Panic!!
31-07-2002, 22:15
Originariamente inviato da Xyrax
su debian attivando march/mcpu=athlon
come si attiva? :D
(immagino exportando qualcosa)
Kernel Panic!!
31-07-2002, 22:17
PS volevo provare a compilarmi qualcosa ottimizzandolo per athlon, usando apt-build
ilsensine
01-08-2002, 08:51
Originariamente inviato da Xyrax
con Gcc3.1 su debian attivando march/mcpu=athlon ho compilato il kernel Linux version 2.4.19-pre7-preemptive
Puoi farmi questa prova?
Vai nella directory /usr/src/linux/kernel e esegui:
gcc -O2 -fomit-frame-pointer -I/usr/src/linux/include -include /usr/src/linux/include/linux/modversions.h -D__KERNEL__ -DMODULE -DMODVERSIONS -S -o resource.s resource.c
puoi spedirmi poi il file resource.s che viene creato e il file resource.c originale?
Puoi mandarmeli a
[email protected]
Grazie
Kernel Panic!!
01-08-2002, 12:37
mi son compilato un bel kerneluzzo 2.4.18 con patch preempt e low-latency con gcc-3.1, il tutto ottimizzato per athlon :)
Kernel Panic!!
01-08-2002, 12:46
Originariamente inviato da ilsensine
[B]
Puoi farmi questa prova?
Vai nella directory /usr/src/linux/kernel e esegui:
gcc -O2 -fomit-frame-pointer -I/usr/src/linux/include -include /usr/src/linux/include/linux/modversions.h -D__KERNEL__ -DMODULE -DMODVERSIONS -S -o resource.s resource.c
puoi spedirmi poi il file resource.s che viene creato e il file resource.c originale?
Puoi mandarmeli a
[email protected]
Grazie
lo faccio io o Xyrax? :p
ilsensine
01-08-2002, 13:19
E' ugiale, chiunque abbia il gcc della Debian
Kernel Panic!!
01-08-2002, 13:22
ok te li ho spediti :)
ilsensine
01-08-2002, 13:32
Ok grazie. Il codice mi sembra buono, non ha un certo "problema" che ha quello della Mandrake. Forse stasera ti chiederò di fare un'altra prova ok?
Kernel Panic!!
01-08-2002, 13:32
ok :)
(che problema ha il codice prodotto dal gcc-3.1 della mdk?)
ilsensine
01-08-2002, 13:36
Niente, semplicemente hanno disabilitato -fomit-frame-pointer...
ilsensine
02-08-2002, 08:28
Ok ieri sera ero lesso quindi nulla.
Scaricati l'allegato (rinominalo come test.tar.gz), decomprimilo, e compila il programmino con make. Ti verrà creato l'eseguibile "test", lancialo e dimmi se abortisce o se scrive "ok". Questo test riproduce un fastidioso bug nel gcc 2.9x, che non ho potuto verificare sul 3.x in quanto quello della Mandrake che ho usato ignorava -fomit-frame-pointer.
Fammi sapere
Kernel Panic!!
02-08-2002, 09:31
/* gcc-3.1 */ $ make all
gcc-3.1 -O2 -fomit-frame-pointer -c -o lib.o lib.cpp
gcc-3.1 -shared -o libtest.so lib.o
gcc-3.1 -O2 -fomit-frame-pointer -c -o main.o main.cpp
gcc-3.1 -o test main.o libtest.so
main.o: In function `main':
main.o(.text+0x19): undefined reference to `__cxa_begin_catch'
main.o(.text+0x33): undefined reference to `__cxa_end_catch'
main.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
libtest.so: undefined reference to `__cxa_throw'
libtest.so: undefined reference to `typeinfo for char const*'
libtest.so: undefined reference to `__cxa_allocate_exception'
collect2: ld returned 1 exit status
make: *** [all] Error 1
/* gcc-3.0 */ $ make all
gcc-3.0 -O2 -fomit-frame-pointer -c -o lib.o lib.cpp
gcc-3.0 -shared -o libtest.so lib.o
gcc-3.0 -O2 -fomit-frame-pointer -c -o main.o main.cpp
gcc-3.0 -o test main.o libtest.so
main.o: In function `main':
main.o(.text+0x19): undefined reference to `__cxa_begin_catch'
main.o(.text+0x33): undefined reference to `__cxa_end_catch'
main.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
libtest.so: undefined reference to `__cxa_throw'
libtest.so: undefined reference to `typeinfo for char const*'
libtest.so: undefined reference to `__cxa_allocate_exception'
collect2: ld returned 1 exit status
make: *** [all] Error 1
/* gcc-2.95 */ $ make all
gcc-2.95 -shared -o libtest.so lib.o
gcc-2.95 -o test main.o libtest.so
main.o: In function `main':
main.o(.text+0x19): undefined reference to `__cxa_begin_catch'
main.o(.text+0x33): undefined reference to `__cxa_end_catch'
main.o(.eh_frame+0x12): undefined reference to `__gxx_personality_v0'
libtest.so: undefined reference to `__cxa_throw'
libtest.so: undefined reference to `typeinfo for char const*'
libtest.so: undefined reference to `__cxa_allocate_exception'
collect2: ld returned 1 exit status
make: *** [all] Error 1
pure col gcc-2.95? :eek:
ilsensine
02-08-2002, 09:33
azz sul gcc della Mandrake funziona
Edita il Makefile e imposta g++ al posto di gcc
Kernel Panic!!
02-08-2002, 09:39
$ ./test
./test: error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory
mi dà quell'output con tutt'e 3 i compilatori
e il file (libtest.so) c'è (nella dir . )
Kernel Panic!!
02-08-2002, 09:56
PS questa notte mi son compilato mozilla usando gcc-3.1
ho cambiato il makefile e ho sostituito -O2 con -O3 :p
installato i binari così compilati
e si chiude dopo un po' da solo (nessun messaggio sulla shell, boh)
colpa di gcc-3.1 o di -O3? (per controprova lo sto ricompilando con gcc-3.0, sempre col -O3)
ilsensine
02-08-2002, 11:41
$ ./test
./test: error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory
Interessante, la Mandrake accetta il caricamento di librerie locali
Sposta libtest.so in /usr/lib, esegui ldconfig e dovrebbe funzionare. Ricordati di sovrascrivere la libreria quando ricompili.
installato i binari così compilati
e si chiude dopo un po' da solo (nessun messaggio sulla shell, boh)
colpa di gcc-3.1 o di -O3? (per controprova lo sto ricompilando con gcc-3.0, sempre col -O3)
Il codice prodotto da -O3 non è sempre ritenuto stabile (in realtà forse neanche il gcc 3 lo è ancora), e non sempre è più veloce. Se vuoi provare opzioni efficienti, ti consiglio:
-fforce-mem -fforce-addr -funroll-loops -fexpensive-optimizations -felide-constructors -ffast-math -march=i686 -mcpu=i686
Se hai un athlon, sostituisci athlon a i686. -fomit-frame-pointer la puoi usare se i sorgenti non sono in c++, oppure se hanno corretto il bug che ti sto chiedendo di verificare.
Originariamente inviato da Kernel Panic!!
[B]$ ./test
./test: error while loading shared libraries: libtest.so: cannot open shared object file: No such file or directory
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
$ ./test
Kernel Panic!!
02-08-2002, 12:19
Originariamente inviato da Ikitt
[B]
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
$ ./test
OK, con questo ./test dà "Ok" con tutt'e tre i compilatori
ho ricompilato mozilla con -O3 ma sempre il solito problema
adesso provo con un po' delle opzioni suggerite da ilsensine :) (tanto cambierà poco o niente)
ilsensine
02-08-2002, 12:28
OK, con questo ./test dà "Ok" con tutt'e tre i compilatori
Bene, col gcc 2.91 e il 2.96 mi va in abort.
Kernel Panic!!
02-08-2002, 12:32
avevo compilato xfree con gcc-3.0 con march=athlon e mcpu=athlon
aggiungendo le altre opzioni da te consigliate che possa cambiar qualcosa? (tipo magari, random freezes :D )
ilsensine
02-08-2002, 12:36
No, sono solo opzioni di ottimizzazione. Per alcune ho effettivamente verificato un "decente" aumento della velocità (qualche punto percentuale)
Kernel Panic!!
02-08-2002, 12:39
magari farò delle prove (non che sia na passeggiata compilare tutto xfree...)
ah, la mia cpu è un duron morgan, dotato di sse... per compilare usando anche ste istruzioni? :p
Originariamente inviato da Kernel Panic!!
magari farò delle prove (non che sia na passeggiata compilare tutto xfree...)
ah, la mia cpu è un duron morgan, dotato di sse... per compilare usando anche ste istruzioni? :p [/QUOTE]
-mmmx -msse
(credo)
potrebbero essere utili anche
-march=athlon
-mcpu=athlon
(o era k7?)
Kernel Panic!!
02-08-2002, 14:03
mah, niente da fare, con tutta quella roba abilitata alla fine il binario che mi fa dà seg. fault
mi sa che lascio stare mozilla (tanto non cambierà molto... +ttosto provo a ricompilarmi kernel e xfree con tutte le ottimizzazioni abilitate)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.