|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Bannato
Iscritto dal: Feb 2001
Città: Pescara
Messaggi: 10542
|
GCC 4.0.0 --> Upgrade da 3.4.x <--
Salve a tutti.
Mi domandavo se qualcuno ha effettuato l'upgrade su una distribuzione Linux basata sulla vecchia versione 3.4.x Ho ricompilato la 4.0.0 dai sorgenti e l'ho installato in una directory ad hoc. Visto che sono 325MB e rotti di installazione (C, C++ e Java frontend) vorrei sovrascrivere la vecchia versione in /usr La mia paura e' che le applicazioni linkate alla libgcc_s.so e libstdc++.so.6 smettano di funzionare per qualche problema. C'e' qualcuno che ha installato questo compilatore in /usr? Problemi? Non mi risulta che la libreria libstdc++ fornita con questa versione sia incompatibile al livello di ABI con la versione del 3.4.3, ma non si sa mai. Thanks. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
E' molto più affidabile.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#3 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#4 |
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Scusatemi, il thread e' mio. Ho postato erroneamente con l'account di mio fratello che non effettua mai il logout quando usa la mia macchina...
X ilsensine: Si sto gia' facendo cosi' ma siccome sono molto a corto di spazio quei 325MB mi farebbero molto comodo. Ho notato che la libreria Java (libgcj) e' praticamente raddoppiata ma quella non e' un problema, mentre la libstdc++ con la versione 3.4.3 del compilatore si chiama "libstdc++.so.6.0.3" mentre con la versione 4.0.0 del compilatore e' marchiata "libstdc++.so.6.0.4" ... Non mi fa presupporre a una incompatibilita' sorgente e binaria (per il C++). Per quanto riguarda libgcc_s non c'e' un modo per dedurre qualcosa, a parte la differenza di 52KB fra le due Mi domando: Esiste una pagina sul sito di GCC che elenchi le incompatibilita' con la versione precedente? La pagina sulle "New features" elenca solo incompatibilita' a livello di flag deprecati o estensioni rimosse. Ma per uanto riguarda la compatibilita' binaria? |
|
|
|
|
|
#5 | |
|
Bannato
Iscritto dal: Feb 2001
Città: Pescara
Messaggi: 10542
|
Quote:
frate' non ti lamentare |
|
|
|
|
|
|
#6 | |
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
Io sono sicuro al 98% che non provoca danni. Toglimi il 2% di insicurezza |
|
|
|
|
|
|
#7 | |
|
Bannato
Iscritto dal: Feb 2001
Città: Pescara
Messaggi: 10542
|
Quote:
prova tu dopo mi racconti |
|
|
|
|
|
|
#8 | |
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
Anche se le librerie a corredo sono perfettamente compatibili a livello binario e sorgente con le precedenti non mancano dei problemi, che pero' sono di poco conto: 1) Il kernel 2.6.11 non compila il modulo i2c-core.c avendo dei problemi sintattici in i2c.h (speriamo che si risolve con il 2.6.12, del resto il kernel compila liscio e senza problemi, solo quando si decide di compilare i moduli si verifica questo problema) 2) Quando si usano le istruzioni SSE2 il compilatore genera codice incorretto (non so pero' se si verifica solo sulla mia architettura Athlon-XP Mobile). Ho compilato un mio programma OpenGL con il flag "-msse2" e il programma termina con il segnale "Illegal Instruction". Disabilitando tale flag il programma funziona correttamente. Funziona correttamente anche con i flag -march=athlon-xp, -mmmx, -msse e -m3dnow. Ma visto che tale flag e' praticamente inutilizzato dalla maggior parte dei software il problema non sussiste per adesso. Direi che l'upgrade vale la pena. Il nuovo tree-ssa e il nuovo linguaggio intermedio GIMPLE riescono a generare un codice ottimizzato da panico. Ho ricompilato Blender per Linux sia con il vecchio compilatore 3.4.3 che con il 4.0.0 La versione 4.0.0 e' risultata molto piu' veloce nei rendering. Un mio rendering che usa HDRI mapping, displacement maps, reflection maps e una full GI con irradiance cache impiega la bellezza di 40 secondi di meno su un rendering time complessivo di circa 4 minuti. Non male per uno swap-over di un compilatore... Decisamente consigliato. P.S.: I compile time secondo me non sono aumentati. Molta gente si lamenta dei compile time elevati con la versione 4.0.0. Per quello che ho riscontrato io, il codice C e' rimasto praticamente invariato mentre in alcuni casi mi e' sembrato di vedere un incremento della VELOCITA' nella compilazione di codice C++. In ogni caso non vedo l'ora che esce GCC 4.1.0, che implementera' un nuovo parser C/C++ scritto a mano che sostituira' l'attuale generato da Bison che sara' molto piu' veloce. Ultima modifica di mjordan : 27-04-2005 alle 15:51. Motivo: typo fixes |
|
|
|
|
|
|
#9 | ||
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
Quote:
ciao |
||
|
|
|
|
|
#10 | ||||
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
Quote:
Primo fra tutti perche' e' fortemente limitato da un'operazione che coinvolge un forte I/O su disco e quindi non e' la maniera ottimale per testare le performance del exec time di un codice. Lame invece sarebbe un test piu' appropriato. E in secondo luogo perche' non considera i nuovi flag di GCC 4.0.0 che non sono paragonabili a GCC 3.3.x o 3.4.x semplicemente perche' non sono disponibili. Alcuni benchmark seri fatti sugli ultimi snapshot del mainline, evidenziano si un aumento della dimensione del codice generato, ma anche un aumento in media della velocita di esecuzione dei programmi CPU intensive, quantificabile con valori che vanno dal 10 al 12% di incremento (questo con il solo flag -fvisibility, che sulle vecchie versioni non e' utilizzabile). Inoltre "fare tre test e prendere il risultato piu basso" non e' poi cosi tanto scientifico come metodo. Sarebbe meglio farne 10 e calcolare la media dei risultati per cercare di avere il risultato meno empirico possibile e soprattutto cercando di eliminare i casi fortunati. Resta comunque un metodo down per testare un qualcosa di cosi' complesso come un compilatore. Come si puo' leggere nelle pagine del sito di GCC: Quote:
http://www.coyotegulch.com/reviews/l...ilers/#results anche se dev'essere aggiornato come risultato perche' prende in considerazione dei vecchi snapshot di GCC 4.0.0 quando il merge con il tree-ssa era ancora agli albori. Per quanto riguarda comparazioni serie, il benchmark ufficiale usato anche dagli stessi sviluppatori GCC rimane sempre e solo CSiBE: http://www.inf.u-szeged.hu/csibe/ Inoltre non bisogna dimenticare che GCC 4.0.0 porta con se piu' "un'evoluzione" che non una "rivoluzione". L'infrastruttura tree-SSA e' stata messa li ma senza implementare ancora quelle ottimizzazioni che sono possibili ORA grazie ad essa. In definitiva le vere migliorie si vedranno con la serie 4.x.x | x > 0 Per adesso GCC 4.0.0 porta solo un grosso sforzo fatto per il merging di tale infrastruttura. Il tree-SSA (Single Static Assignment) e' un'infrastruttura che consente di rappresentare le caratteristiche di un microprocessore utili ad un compilatore mediante una struttura a grafo. Questo consente di descrivere un'architettura in modo molto astratto senza pero' perdere di definizione nella descrizione. GIMPLE e' un linguaggio intermedio generato grazie al tree-SSA che rimane ancora ad alto livello prima di essere convertito in RTL, il linguaggio intermedio piu' dipendente dalla machina che e' cio' che diventera' codice Assembly nativo dopo un ulteriore passo di ottimizzazione. Tutto questo consentira' di implementare ottimizzazioni che prima erano difficili o impossibili da raggiungere. In definitiva, io sono molto fiducioso. Gia' cosi', molti degli sviluppatori Blender che stanno sperimentando il nuovo compilatore stanno ottenendo con i nuovi flag incrementi nella velocita' di rendering fino al 12% su raytracing il cui tempo complessivo non va oltre i 10 minuti. Questo non e' affatto sufficiente per dire "GCC 4.0.0 e' migliore dei precedenti", intendiamoci, ma e' un buon inizio. SI perche' GCC 4.0.0 e' solo un inizio di un'evoluzione, un po come lo e' il PCI Express per le schede grafiche adesso. :P Inoltre un benchmark serio dovrebbe considerare anche come sono state compilate le librerie usate sotto dai programmi. E' quasi inutile compilare un programma con il 4.0.0 e usare sotto la glibc compilata nativamente con il 3.3.x. Questo semplicemente per il fatto che la maggior parte di codice eseguito da un programma coinvolge piu' il codice di libreria che non il codice suo. Anche solo ricompilare la glibc sarebbe una buona cosa. Ma qui' stiamo entrando nel campo delle paranoie da benchmark di scheda grafica. Per me un compile time maggiore di 4 secondi su un tree da 30000 righe di codice non mi dice niente rispetto all'incremento di prestazioni del 12% evidenziato su un rendering da 10 minuti... E, come si dice sempre nel campo dell'informatica ai propri utenti: Quote:
|
||||
|
|
|
|
|
#11 | |||||
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
Quote:
Quote:
Quote:
Quote:
ciao |
|||||
|
|
|
|
|
#12 | |||||
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Quote:
Quote:
In ogni caso, qualunque sia questo algoritmo, deve caricare in memoria un enorme quantita' di dati (il file su cui calcolare l'hashing) e visto che opera bit a bit ogni ciclo xor/or o quello che sia deve attendere il caricamento in memoria del dato da disco prima di operare. Non capisco come fai a dire "non e' limitato da I/O sul mio PC". Quote:
Quote:
Quote:
|
|||||
|
|
|
|
|
#13 | ||||
|
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Quote:
Quote:
Quote:
Quote:
ciao |
||||
|
|
|
|
|
#14 |
|
Bannato
Iscritto dal: Mar 2002
Città: Pescara - 未婚・恋人なし Moto: Honda CBR 1000 RR Casco: XR1000 Diabolic 3
Messaggi: 27578
|
Voglio OpenMP
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 20:42.



















