[Linux-Biella] DOMANDA: COMPILAZIONE
Roberto Zanetto
zanetto a iol.it
Sab 29 Nov 2008 10:15:29 CET
Piero Triverio ha scritto:
> On Thu, 27 Nov 2008 11:41:19 +0100
> Roberto Zanetto <zanetto a iol.it> wrote:
>
>
>> Secondo una rivista dell'IEEE il compilatore Intel Linux svernicia il
>> compilatore GNU C per applicazioni cad, grafica vettoriale, calcolo
>> fisico (videogiochi), calcolo scientifico.... quindi qualcosa da zappare
>> c'e'! Non e' che voglio zappare l'aria
>>
>
> Si, e' vero, il compilatore Intel genera codice piu' ottimizzato rispetto a GCC, cosi'
> come altri compilatori commerciali come PGI, Pathscale, etc etc.
> Questo perche' GCC ha un altro obiettivo primario, quello di compilare di tutto e su molte
> architetture, oltre che di essere libero.
>
> Come hai detto tu, la differenza si nota nelle applicazioni scientifiche, di grafica,
> etc, molto meno su quelle di uso quotidiano, che sono piu' limitate da altri fattori (I/O
> disco, memoria). Difficile che ricompilando il kernel con questi compilatori (ammesso di
> riuscirci) si ottengano grandi miglioramenti...
> Tieni anche presente che le parti critiche di alcune applicazioni (es. audio/video
> decoding) sono gia' state ottimizzate e sfruttano automaticamente eventuali istruzioni
> dedicate offerte dai processori.
>
>
>
Ho gia' sentito piu' volte questo concetto: non ti preoccupare che
intanto le applicazioni sono state fatte da Peter Norton anziche' da mia
nonna quindi sfruttano ecc.
A me non risulta; ho i dati di un benchmark per Core 2 su win xp con
codec divX 6.6 e 6.7 la versione compilata per utilizzare sse4 e' piu'
veloce del 30% nelle operazioni di encoding video.
Ho fatto delle ricerche con google (come dite voi) e risulta che ad
esempio i codecs linux non siano ottimizzati per sse4; il compilatore
gcc dalla versione 4.3 le utilizza, pero' non so come, cioe' penso
debbano essere abilitate in qualche modo, cioe', come tutti i
compilatori seri, avra' vari livelli di ottimizzazione presumo.
Poi come fanno le applicazioni a utilizzare direttamente registri
speciali della cpu se una delle tante sbandierate caratteristiche
architetturali di Linux e' lo user space che, sacrificando le
prestazioni, dovrebbe dare benefici in termini di stabilita' rispetto a
win? Tertium non datur: allora e' win!
Tornando al problema: allora per ottimizzare il tutto rispetto a un
processore dovrei compilare il kernel per quel processore, compilare le
librerie utilizzate dal programma che mi interessa e compilare il programma.
Domanda: supponendo che riesca a capire come si compila ottimizzando per
un certa cpu un programma, come si fa a compilare una libreria?
Maggiori informazioni sulla lista
Linux