Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
CFLAGS e ottimizzazioni
View unanswered posts
View posts from last 24 hours
View posts from last 7 days

Goto page Previous  1, 2  
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian)
View previous topic :: View next topic  
Author Message
sabayonino
Veteran
Veteran


Joined: 03 Jan 2012
Posts: 1008

PostPosted: Tue Jun 03, 2014 10:56 am    Post subject: Reply with quote

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 :lol:

dovremmo sequestrare un capo tecnico della Intel e porgli 'sta domanda :P
_________________
LRS i586 on G.Drive
LRS x86-64 EFI on MEGA
Back to top
View user's profile Send private message
ciro64
Guru
Guru


Joined: 20 Jun 2009
Posts: 424

PostPosted: Tue Jun 03, 2014 3:33 pm    Post subject: Reply with quote

Carissimo Sabayonino..... ho provato anche ad effettuare chat con il supporto di Intel, ma chi ho incontrato non sapeva nemmeno cosa fosse gcc :o
Tutto ciò mi spaventa un po' :roll:
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
View user's profile Send private message
sabayonino
Veteran
Veteran


Joined: 03 Jan 2012
Posts: 1008

PostPosted: Tue Jun 03, 2014 4:44 pm    Post subject: Reply with quote

8O 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 :roll:

qui siamo un pò tutti autodidatta :D ... le esperienze altrui vengono assimilate nel bene e nel male :twisted:
_________________
LRS i586 on G.Drive
LRS x86-64 EFI on MEGA
Back to top
View user's profile Send private message
ciro64
Guru
Guru


Joined: 20 Jun 2009
Posts: 424

PostPosted: Tue Jun 03, 2014 4:56 pm    Post subject: Reply with quote

Mah.... anche se un po' vecchiotta" come discussione ..... chissà cosa deciderà "la massa" :D
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
View user's profile Send private message
djinnZ
Advocate
Advocate


Joined: 02 Nov 2006
Posts: 4831
Location: somewhere in L.O.S.

PostPosted: Sun Jun 08, 2014 12:39 pm    Post subject: Reply with quote

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:wink:
mala tempora currunt...mater stultorum semper pregna est :evil:
Murpy'sLaw:If anything can go wrong, it will - O'Toole's Corollary:Murphy was an optimist :wink:
Back to top
View user's profile Send private message
ciro64
Guru
Guru


Joined: 20 Jun 2009
Posts: 424

PostPosted: Sun Jun 08, 2014 8:35 pm    Post subject: Reply with quote

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
View user's profile Send private message
loxdegio
Tux's lil' helper
Tux's lil' helper


Joined: 05 Feb 2014
Posts: 94

PostPosted: Wed Sep 10, 2014 1:26 pm    Post subject: Reply with quote

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) :D

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
View user's profile Send private message
ciro64
Guru
Guru


Joined: 20 Jun 2009
Posts: 424

PostPosted: Wed Sep 10, 2014 9:02 pm    Post subject: Reply with quote

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
View user's profile Send private message
sabayonino
Veteran
Veteran


Joined: 03 Jan 2012
Posts: 1008

PostPosted: Wed Sep 10, 2014 10:01 pm    Post subject: Reply with quote

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. :wink: (o patch)
_________________
LRS i586 on G.Drive
LRS x86-64 EFI on MEGA
Back to top
View user's profile Send private message
loxdegio
Tux's lil' helper
Tux's lil' helper


Joined: 05 Feb 2014
Posts: 94

PostPosted: Thu Sep 11, 2014 8:12 am    Post subject: Reply with quote

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 :P Comunque sì dalla 4.9 :D
Back to top
View user's profile Send private message
ciro64
Guru
Guru


Joined: 20 Jun 2009
Posts: 424

PostPosted: Fri Sep 12, 2014 4:53 pm    Post subject: Reply with quote

mmm vedo che c'è ancora qualche idiosincrasico al "-march=native" ....... :roll:
_________________
Gentoo: il sistema più eclettico e geniale che abbia mai provato :)
Back to top
View user's profile Send private message
ago
Developer
Developer


Joined: 01 Mar 2008
Posts: 1527
Location: Milan, Italy

PostPosted: Mon Sep 15, 2014 12:29 pm    Post subject: Reply with quote

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
View user's profile Send private message
sabayonino
Veteran
Veteran


Joined: 03 Jan 2012
Posts: 1008

PostPosted: Tue Nov 18, 2014 8:02 am    Post subject: Reply with quote

sbaglio o hanno aggiornato questa pagina :

http://wiki.gentoo.org/wiki/Safe_CFLAGS#Find_cpu-specific_options
Find cpu-specific options



8O
_________________
LRS i586 on G.Drive
LRS x86-64 EFI on MEGA
Back to top
View user's profile Send private message
source-based
n00b
n00b


Joined: 12 Nov 2014
Posts: 51

PostPosted: Tue Nov 18, 2014 10:05 am    Post subject: Reply with quote

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
View user's profile Send private message
loxdegio
Tux's lil' helper
Tux's lil' helper


Joined: 05 Feb 2014
Posts: 94

PostPosted: Sun Apr 19, 2015 2:10 pm    Post subject: Reply with quote

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
View user's profile Send private message
ciro64
Guru
Guru


Joined: 20 Jun 2009
Posts: 424

PostPosted: Sun Apr 19, 2015 4:58 pm    Post subject: Reply with quote

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 :P)

Prova a vedere questo link

In particolare questo
E questa per me è una Vittoria :D 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
View user's profile Send private message
loxdegio
Tux's lil' helper
Tux's lil' helper


Joined: 05 Feb 2014
Posts: 94

PostPosted: Mon Apr 20, 2015 12:51 pm    Post subject: Reply with quote

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 :P

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
View user's profile Send private message
sabayonino
Veteran
Veteran


Joined: 03 Jan 2012
Posts: 1008

PostPosted: Mon Apr 20, 2015 6:23 pm    Post subject: Reply with quote

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
View user's profile Send private message
loxdegio
Tux's lil' helper
Tux's lil' helper


Joined: 05 Feb 2014
Posts: 94

PostPosted: Tue May 05, 2015 3:14 pm    Post subject: Reply with quote

Ecco qui la documentazione relativa allo script/comando bash che ho proposto 4 post sopra: https://wiki.gentoo.org/wiki/Distcc#Using_distcc_with_Portage
Back to top
View user's profile Send private message
loxdegio
Tux's lil' helper
Tux's lil' helper


Joined: 05 Feb 2014
Posts: 94

PostPosted: Sat May 09, 2015 9:17 am    Post subject: Reply with quote

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 :D

Ovviamente per le CFLAGS rimane sempre il classico "-g0 -march=native -O2 (-pipe)" per chi non ama rischiare ;)
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index Forum italiano (Italian) All times are GMT
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum