View previous topic :: View next topic |
Author |
Message |
sabayonino Veteran
Joined: 03 Jan 2012 Posts: 1016
|
Posted: Tue Jun 03, 2014 10:56 am Post subject: |
|
|
ciro64 wrote: |
Mah non credo.... se attivo p.e. sse2 è chiaro che mmx debbano essere specificate; non "eliminate".
| è un dubbio Amletico che si pongono tutti ultimamente
dovremmo sequestrare un capo tecnico della Intel e porgli 'sta domanda _________________ LRS i586 on G.Drive
LRS x86-64 EFI on MEGA |
|
Back to top |
|
|
ciro64 Guru
Joined: 20 Jun 2009 Posts: 424
|
Posted: Tue Jun 03, 2014 3:33 pm Post subject: |
|
|
Carissimo Sabayonino..... ho provato anche ad effettuare chat con il supporto di Intel, ma chi ho incontrato non sapeva nemmeno cosa fosse gcc
Tutto ciò mi spaventa un po'
In Intel ci sono anche i forums con diverse discussioni; però possibile che su 3 prove che ho fatto nessuno abbia saputo darmi una risposta corretta al riguardo ?
Per esempio mi ero lasciato "ingolosire" dall' opzione -Ofast (che da quel che ho capito abiliterebbe -O3 e -ffast-math"
Un tempo quando provavo ad usare l'opzione -ffast-math portage o gcc stesso mi estrapolava degli "warnings" scritti in rosso dicendo che sostanzialmente non è garantita ne la riuscita della compilazione del sorgente ne, eventualmente, del sup corretto funzionamento (dell'ebuild per chi usa *too).
Invece, volendo un po' ripercorrere il cammino (ma tanto non sono sufficientemente intelligente per capire tante cose) di Daniel Robbins (che è il mio "idolo informatico" per aver inventato sifatti gioielli) ho provato anche a "bazzicare i sistemi *BSD. E, stranamente in vari forums vedevo che questa -ffast-math la usassero quasi come bersi un bicchiere d'acqua. Effettivamente la cosa è molto complessa....... e purtroppo non sono sufficientemente intelligente per capire a fondo molte cose che possono però essere fondamentali.
Per questo chiedo spesso un aiuto "con fede" considerando che chi (§Grazie) mi risponde per aiutarmi come una sorta di "maestro", dato che non sono un informatico ma un autodidatta su queste cose..... solo che mi affascinano in una maniera indescrivibile.
W *too io dico...... non posso che portar sul palmo della mia mano destra tutte le invezioni del geniale inventore di Gentoo ....
Ma.... se sto sbagliando, se sto andando fuori di testa, se sto commettendo erori anche nello scrivere posts, riprendetemi.....
Sono solo una persona che desidera affinare le proprie conoscenze riguardo questo sistema che per me è il top (e ne ho provati tanti........)
Per finire e non volendo dilungarmi troppo...... vi chiedo di perdonarmi se scrivo magari cose errate..... ma desidero davvero col cuore di arricchirmi riguardo questo sistema che come scrivo nella mia firma digitale "....è il più eclettico e geniale del pianet......."
Vi auguro un Super Buon tutto
Ciao:) _________________ Gentoo: il sistema più eclettico e geniale che abbia mai provato |
|
Back to top |
|
|
sabayonino Veteran
Joined: 03 Jan 2012 Posts: 1016
|
Posted: Tue Jun 03, 2014 4:44 pm Post subject: |
|
|
più che il forum di Intel , creddo che dovresti agganciarti su quello di GCC/FSF https://gcc.gnu.org/
In giro non esiste solo GCC , intel ha un suo compilatore (ed è presente pure in portage,sys-devel/icc mi sembra) , poi c'è CLAM/LLVM annch'esso in portage
e chissà quanti altri
qui siamo un pò tutti autodidatta ... le esperienze altrui vengono assimilate nel bene e nel male _________________ LRS i586 on G.Drive
LRS x86-64 EFI on MEGA |
|
Back to top |
|
|
ciro64 Guru
Joined: 20 Jun 2009 Posts: 424
|
Posted: Tue Jun 03, 2014 4:56 pm Post subject: |
|
|
Mah.... anche se un po' vecchiotta" come discussione ..... chissà cosa deciderà "la massa"
http://www.phoronix.com/scan.php?page=article&item=apple_llvm_gcc&num=1
io spero in openRC + GCC, il resto lo lascerei ad *BSD.... coi loro problemi di licenza.
Ciao Grande, sei un maestro per me !!! _________________ Gentoo: il sistema più eclettico e geniale che abbia mai provato |
|
Back to top |
|
|
djinnZ Advocate
Joined: 02 Nov 2006 Posts: 4831 Location: somewhere in L.O.S.
|
Posted: Sun Jun 08, 2014 12:39 pm Post subject: |
|
|
Il problema con mmx e 3dnow è che pur essendo vecchie e di fatto più lente nell'esecuzione rispetto alle sse sono ancora direttamente supportate in alcuni pacchetti. Anche se abiliti sse e disabiliti mmx il codice è sempre e solo per mmx.
Disabilitarle può essere un modo per lasciarle alle spalle, non specificandole comunque vengono riabilitate, sono diversi i makefile che ridefiniscono le opzioni del compilatore.
Quanto alle declamazioni sacerdotali sull'utilità di --fast-math od il divieto di usarla... resta sempre la solita religione dell'omologazione cui vorrebbero costringerci.
Anche la stabilità è un concetto relativo. Una cosa è un server che deve stare acceso 24/24 un'altra il pc che usi per andare a consultare la posta e poi lo lasci spento l'intera giornata.
Il primo non deve bloccarsi, il secondo ... ti interessa che si avvii nel minor tempo possibile.
Sacrifichi la stabilità a vantaggio delle prestazioni se non ti comporta problemi che il pc vada in crash.
Non esiste una soluzione "giusta" eseiste solo un modo giusto di affrontare i problemi ed alla fine conduce sempre a soluzioni differenti.
Scusa se non posso seguirti ma il mio portatile mi ha lasciato e sarò ancora latitante per un bel pò. _________________ scita et risus abundant in ore stultorum sed etiam semper severi insani sunt
mala tempora currunt...mater stultorum semper pregna est
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist |
|
Back to top |
|
|
ciro64 Guru
Joined: 20 Jun 2009 Posts: 424
|
Posted: Sun Jun 08, 2014 8:35 pm Post subject: |
|
|
Sopero vivamente che tu possa arrivafe ad un'ottima soluzione
Ciao _________________ Gentoo: il sistema più eclettico e geniale che abbia mai provato |
|
Back to top |
|
|
loxdegio Tux's lil' helper
Joined: 05 Feb 2014 Posts: 94
|
Posted: Wed Sep 10, 2014 1:26 pm Post subject: |
|
|
Salve a tutti riprendo questo topic per completare con le ultime informazioni che mi sono state fornite
In quest'altro topic mi è stato consigliato di aggiungere -Wl,--sort-common alle LDFLAGS in modo da produrre dei link ancora più ottimizzati. In questo modo le LDFLAGS perfette (ripeto: per le informazioni da me raccolte finora) sarebbero
Code: | LDFLAGS="${LDFLAGS} -Wl,--hash-style=gnu -Wl,--sort-common" |
Continuo a sperare che questo topic possa servire a chiunque si avvicini a Gentoo e in generale al mondo della compilazione(/programmazione)
EDIT: aggiungerei anche che per chi, come me, possiede ancora un "vetusto" netbook con Intel Atom incorporato, sono cambiate alcune cose a partire dalle flage -march e -mtune che ora presentano il valore bonnell: quindi atom risulta deprecato. |
|
Back to top |
|
|
ciro64 Guru
Joined: 20 Jun 2009 Posts: 424
|
Posted: Wed Sep 10, 2014 9:02 pm Post subject: |
|
|
Queste fan già parte delle LDFLAGS di default:
Code: |
emerge --info|grep LDFL
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed"
|
Io ho invece aggiunto "-Wl,--hash-style=gnu" ma non sovrascrivendo ma implementandola:
LDFAGS="${LDFLAGS} -Wl,--hash-style=gnu".
Ciao _________________ Gentoo: il sistema più eclettico e geniale che abbia mai provato |
|
Back to top |
|
|
sabayonino Veteran
Joined: 03 Jan 2012 Posts: 1016
|
Posted: Wed Sep 10, 2014 10:01 pm Post subject: |
|
|
loxdegio wrote: |
EDIT: aggiungerei anche che per chi, come me, possiede ancora un "vetusto" netbook con Intel Atom incorporato, sono cambiate alcune cose a partire dalle flage -march e -mtune che ora presentano il valore bonnell: quindi atom risulta deprecato. |
per quale compilatore ? tutti o dal 4.9 ???
per il 4.9 suppongo :
Code: | Optimizing for other Intel microarchitectures have been renamed to -march=nehalem, westmere, sandybridge, ivybridge, haswell, bonnell. |
IA-32/x86-64
http://gcc.gnu.org/gcc-4.9/changes.html
https://en.wikipedia.org/wiki/Bonnell_%28microarchitecture%29
a ritroso non noto inserimenti di questo genere. (o patch) _________________ LRS i586 on G.Drive
LRS x86-64 EFI on MEGA |
|
Back to top |
|
|
loxdegio Tux's lil' helper
Joined: 05 Feb 2014 Posts: 94
|
Posted: Thu Sep 11, 2014 8:12 am Post subject: |
|
|
sabayonino wrote: | loxdegio wrote: |
EDIT: aggiungerei anche che per chi, come me, possiede ancora un "vetusto" netbook con Intel Atom incorporato, sono cambiate alcune cose a partire dalle flage -march e -mtune che ora presentano il valore bonnell: quindi atom risulta deprecato. |
per quale compilatore ? tutti o dal 4.9 ??? |
Chiedo venia pensavo di averlo scritto Comunque sì dalla 4.9 |
|
Back to top |
|
|
ciro64 Guru
Joined: 20 Jun 2009 Posts: 424
|
Posted: Fri Sep 12, 2014 4:53 pm Post subject: |
|
|
mmm vedo che c'è ancora qualche idiosincrasico al "-march=native" ....... _________________ Gentoo: il sistema più eclettico e geniale che abbia mai provato |
|
Back to top |
|
|
ago Developer
Joined: 01 Mar 2008 Posts: 1527 Location: Milan, Italy
|
Posted: Mon Sep 15, 2014 12:29 pm Post subject: |
|
|
ciro64 wrote: | Queste fan già parte delle LDFLAGS di default:
Code: |
emerge --info|grep LDFL
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed"
|
|
queste NON sono le LDFLAGS di default.
Il default è: Code: | -Wl,-O1 -Wl,--as-needed |
|
|
Back to top |
|
|
sabayonino Veteran
Joined: 03 Jan 2012 Posts: 1016
|
|
Back to top |
|
|
source-based n00b
Joined: 12 Nov 2014 Posts: 51
|
Posted: Tue Nov 18, 2014 10:05 am Post subject: |
|
|
Si devono averla aggiornata perchè qualche giorno fa,non c'erano i suggerimenti per i vari processori,peccato che il non è contemplato.Puó anche essere giusto visto che AMD E 2500 è un processore penoso.Con Kali Linux,driver Ati Catalist e pyrit arrivo a 6000 PMK/s con CPU+GPU sotto massimo sforzo.Appena ho tempo vedo qualche FLAG e Gentoo possono aiutarmi. |
|
Back to top |
|
|
loxdegio Tux's lil' helper
Joined: 05 Feb 2014 Posts: 94
|
Posted: Sun Apr 19, 2015 2:10 pm Post subject: |
|
|
Arrivo 6 mesi dopo l'ultimo messaggio per far presente uno scriptino che presumibilmente rende esplicite le CFLAGS fondamentali per il proprio processore passando come parametri delle CFLAGS generiche. Forse così risulta poco comprensibile, ma dopo la dimostrazione pratica tutto verrà svelato.
Scrivendo sul terminale:
Code: | $ gcc -v -E -x c -g0 -O2 -march=native -mtune=native - < /dev/null 2>&1 | grep cc1 | perl -pe 's/ -mno-\S+//g; s/^.* - //g;' |
mi esce come risultato:
Code: | -march=bonnell -mmmx -msse -msse2 -msse3 -mssse3 -mcx16 -msahf -mmovbe -mfxsr --param l1-cache-size=24 --param l1-cache-line-size=64 --param l2-cache-size=512 -mtune=bonnell -O2 -fstack-protector-strong |
Che sono le CFLAGS che assegnerebbe GCC passando al compilatore "g0 -O2 -march=native -mtune=native", direi che è un metodo meno generico che "-march=native -O2" e più rapido che doversi studiare tutte le CFLAGS esplicite date dal compilatore ricavate con lo script fornito in uno dei primi post del topic:
Code: | echo 'int main(){return 0;}' > test.c && gcc -v -Q -march=native -O2 test.c -o test && rm test.c test |
PS: pare che "-fstack-protector-strong" rallenti un sacco l'esecuzione dei compilati (io l'ho riservato al solo kernel), nonostante aumenti la sicurezza dell'area di memoria di esecuzione. Se volete escludere questa flag nel make.conf potete sostituirla con/aggiungere "-fno-stack-protector" |
|
Back to top |
|
|
ciro64 Guru
Joined: 20 Jun 2009 Posts: 424
|
Posted: Sun Apr 19, 2015 4:58 pm Post subject: |
|
|
Interessante, ma il -mtune , una volta specificato il -march è (mi sembra) "ridondante" .... o sbaglio ?
Riguardo il -fstack-protector ..... a livello kernel ci vuole gcc 9.x per poter settare su "strong".
Quale versione di gcc stai "controllando" ?
E ci sono infiniti quesiti su questo argomento ... per esempio un mio amico che usa Gentoo da che è nata ritiene importante il -ftree-vectorize (attivato da -O3 per esempio)
Inoltre il -Ofast (ovvero = -O3 -ffast-math) che però ho provato ma alla fine son ritornato ad un livello meno aggressivo in quanto non solo c'entra un ebuild in particolare ma tuttto il sistema..... per esempio php compilava ma ciò che avevea a che fare con php non andava.... al chè son tornato con flags meno agggressive ovvero il semplice "-march=native -O2 -pipe" che comunque permetti ad avere in molti softwares prestazioni analoghe a precompiled ma in alcuni software si arriva a un 20% faster fino ad un 4x faster )
Prova a vedere questo link
In particolare questo
E questa per me è una Vittoria tutto dipende da come gcc "sceglie" gli algoritmi di compilazione.
E in teoria più avanzano i processori rispetto a "generic" le performances dovranno migliorare ulteriormente nel tempo le performances.
Per esempio ani fa un Pentium 4 contro un Athlon andava in fpu la metà per le x87
Perchè Intel decise che nuovo standard dovessero essere le sse2. (parlo del 2008 più o meno).
Attivare -march=native su uno dei primi AMD 64 non porta a nulla.... le istruzioni coinciderebbero con "generic" ... ma andando avanti le istruzioni con le nuove cpu allora il "divario" si vede eccome in certi casi (chiaramente ove gli algoritmi di gcc "scelgono" di usare SIMD avanzate e inesistenti in "generic"
Grazie per l'intervento ed eventuali delucidazioni;se ho scrito cose blasfeme correggetemi ..... grazie
PS: perdonatemi o bannatemi per la mia logorrea..... ultimamete stavo provando PCBSD che usa clang ... non più gcc.
La differenza di reatività non ha bisogno di benchmarcks ... si vede ad occhio. Se volete in c-ray Gentoo is 20% faster in phoronix C-Ray bench.
Ciao a Tutti _________________ Gentoo: il sistema più eclettico e geniale che abbia mai provato |
|
Back to top |
|
|
loxdegio Tux's lil' helper
Joined: 05 Feb 2014 Posts: 94
|
Posted: Mon Apr 20, 2015 12:51 pm Post subject: |
|
|
Allora,.. Sì come al solito mi sono dimenticato di segnare la versione di GCC che dovrebbe essere 4.8+ (la .8 usa di default -fstack-protector-normal e la .9 -fstack-protector-strong, ma ho letto che rallentano un sacco l'esecuzione a causa delle protezioni che attivano sulla memoria e quindi per sistemi desktop è meglio usare -fno-stack-protector tranne sul kernel, mentre è meglio usare lo strong su sistemi server che necessitano di maggiori protezioni). Ovviamente, a meno che il nostro amico non venga dal futuro, la versione 9.x di GCC non esiste ancora essendo arrivati solo alla 4.10
Quanto ad -O3 è scritto ovunque che usarlo su tutto il sistema non è consigliabile, mentre si invita a selezionare alcune flags specifiche, come -ftree-vectorize ad esempio, tra quelle che verrebbero mascherate e attivate con -O3.
Comunque ti sei concentrato troppo sulle flags specifiche che risultano a me, io ho postato lo scriptino perché mi pare utile se non si sa da dove partire, ma è ovvio che il mio voleva essere un esempio di utilizzo non un'imposizione di quali flags mettere, ognuno è libero di settare quello che gli pare. Ripeto che ho reso noto quel comando bash solo per aiutare gente digiuna di GCC ad avere delle CFLAGS un po' più particolareggiate di "-g0 -O2 -march=native" pur non sapendo nulla dei paramentri da passare al compilatore |
|
Back to top |
|
|
sabayonino Veteran
Joined: 03 Jan 2012 Posts: 1016
|
Posted: Mon Apr 20, 2015 6:23 pm Post subject: |
|
|
per saperne di più...
Code: | $ man gcc
[...]
-fstack-protector
Emit extra code to check for buffer overflows, such as stack smashing attacks. This is done by adding a guard variable to functions with vulnerable objects. This includes functions that call alloca, and functions with buffers larger than 8 bytes. The guards are initialized when a function is entered and then checked when the function exits. If a guard check fails, an error message is printed and the program exits.
[...]
-ftree-vectorize
Perform loop vectorization on trees. This flag is enabled by default at -O3
[...]
-O3
Optimize yet more. -O3 turns on all optimizations specified by -O2 and also turns on the -finline-functions, -funswitch-loops, -fpredictive-commoning, -fgcse-after-reload, -ftree-vectorize and -fipa-cp-clone options.
[...]
|
_________________ LRS i586 on G.Drive
LRS x86-64 EFI on MEGA |
|
Back to top |
|
|
loxdegio Tux's lil' helper
Joined: 05 Feb 2014 Posts: 94
|
|
Back to top |
|
|
loxdegio Tux's lil' helper
Joined: 05 Feb 2014 Posts: 94
|
Posted: Sat May 09, 2015 9:17 am Post subject: |
|
|
Riporto di nuovo su l'argomento per dare altri spunti reperiti sulla documentazione di Arch Linux (precisamente in /etc/makepkg.conf).
Per chi non vuole impazzire troppo a trovare le flags più adatte
Code: | CFLAGS="-ffat-lto-objects -ftracer -ftree-vectorize -g0 -march=native -O2 --param=ssp-buffer-size=4 (-pipe)" |
Per chi si fida degli script:
Code: | CFLAGS="-ffat-lto-objects -ftracer -ftree-vectorize -g0 $(gcc -v -E -x c -march=native - < /dev/null 2>&1 | grep cc1 | perl -pe 's/ -mno-\S+//g; s/^.* - //g;') -O2 --param=ssp-buffer-size=4 (-pipe)" |
Per il resto delle flags sembrano utili:
Code: | CXXFLAGS="${CFLAGS}"
CPPFLAGS="${CFLAGS}"
LDFLAGS="${LDFLAGS} -Wl,--hash-style=gnu -Wl,--sort-common -Wl,-z -Wl,relro" |
Devo ancora provarle in pratica, ma volevo farle presente in modo da avere anche altri feedback
Ovviamente per le CFLAGS rimane sempre il classico "-g0 -march=native -O2 (-pipe)" per chi non ama rischiare |
|
Back to top |
|
|
|