View Single Post
Old 07-01-2010, 10:38   #2
Doom_94
Senior Member
 
L'Avatar di Doom_94
 
Iscritto dal: May 2009
Città: Brescia
Messaggi: 1658
Quote:
Originariamente inviato da blackshard Guarda i messaggi
E' stato appurato da terze parti che il compilatore C/C++ x86 di Intel, uno dei compilatori spesso utilizzati per produrre codice molto ottimizzato, produce dei binari che non sempre sono ottimali per le nostre CPU.

molto recentemente è stata pubblicata questa notizia:

http://www.osnews.com/story/22683/In...from_Compiler_

che tiene in conto di tutte le problematiche ed i fatti avvenuti fino ad ora riguardo il compilatore Intel.

Dal punto di vista tecnico ci si è accorti che una componente posta nel binario, il CPU Dispatcher, controlla la CPU nel sistema ed attiva il codice eseguibile più ottimizzato solo in presenza di CPU Intel, mentre attiva il codice eseguibile più lento disponibile nel caso vengano trovate CPU non-Intel (quindi attualmente vale per AMD e per VIA).

Il CPU Dispatcher, ad esempio, manda in esecuzione il codice ottimizzato utilizzando istruzioni SIMD SSE/SSE2/SSE3 solo se l'istruzione CPUID restituisce "GenuineIntel" associata ai processori Intel, mentre manda in esecuzione il codice "safe" (senza istruzioni SIMD) se non trova tale stringa.

Alcune voci fanno presente che Intel possa garantire il corretto funzionamento dell'eseguibile con istruzioni SIMD solo sui suoi processori, e quindi il CPU Dispatcher non attiva l'esecuzione del codice ottimizzato su processori non Intel per evitare problemi di compatibilità.
Altri però fanno notare che la stessa istruzione CPUID restituisce dei flag che indicano la presenza delle istruzioni SIMD SSE/SSE2/SSE3 indipendentemente dal produttore della CPU e del modello della CPU, e se il produttore della CPU possiede una implementazione fallace di tali istruzioni tale da provocare problemi di compatibilità, questo è un problema del produttore della CPU, non di Intel ne' del suo compilatore.

Alcuni riscontri indiretti di questo tipo sono esposti in diversi articoli. Un articolo su ars technica mostra come sia stato possibile incrementare il memory score del software di benchmarking PCMark2005 semplicemente modificando la stringa di riconoscimento di una CPU Nano VIA e facendola riconoscere come Intel:

http://arstechnica.com/hardware/revi...o-review.ars/6

Questo pone un serio problema perchè i software compilati con il compilatore Intel non rispecchiano le reali prestazioni ottenibili con CPU di altro marchio. Essendo il compilatore Intel utile a produrre codice molto ottimizzato, il suo ambito di utilizzo prediletto riguarda casi in cui la potenza computazionale è molto sfruttata, vedi ad esempio Videogiochi, programmi di benchmarking, alcuni tipi di driver, codec e generalmente applicazioni cpu-bound.

In particolare la questione dei benchmark, come messo in evidenza da PCMark2005, è particolarmente critica perchè disturba la valutazione di un processore da parte di un software che dovrebbe fornire un riscontro oggettivo.

Inoltre moltri altri test e testimonianze sono raccolti nel blog di Agner

http://www.agner.org/optimize/blog/read.php?i=49&v=t

Un altro riscontro indiretto è dato dai test effettuati in ambito Linux utilizzando una suite di test completamente opensource e compilata utilizzando il compilatore opensource gcc:

http://www.phoronix.com/scan.php?pag...enom2_x3&num=4

http://www.phoronix.com/scan.php?pag...ynnfield&num=5

dove la superiorità dei processori Intel è maggiormente livellata.

Alcuni inoltre tendono a sottolineare che i test sono stati ripetuti con risultati molto più vantaggiosi per i processori intel:

http://www.phoronix.com/scan.php?pag...ield_add&num=1

Purtroppo però i test pubblicati nell'ultimo link sono stati ripetuti internamente da Intel e solo pubblicati da Phoronix. Quindi mancano di un riscontro di oggettività, non essendo stati prodotti da un ente indipendente.

Perchè AMD/VIA dovrebbero chiedere un trattamento equo sebbene sia Intel a produrre il proprio compilatore e a spenderci risorse?
Il problema non è tanto di AMD/VIA, quanto piuttosto delle software house che utilizzano il compilatore Intel, che viene fornito anche in modo gratuito. Le software house stesse potrebbero anche non essere a conoscenza di questo tipo di ottimizzazioni selettive.

La Federal Trade Commision (vedi: primo link in alto) ha comunque definito il compilatore Intel come "difettoso" ed ha obbligato la correzione del comportamento succitato al fine di garantire un comportamento più equo:
Bravo! hai fatto bene!lo faremo diventare un thread ufficiale!!
__________________
CPU: AMD Ryzen 7 5800X3D + Lian Li Galahad II 360 Trinity Performance MB: Asus ROG Crosshair VIII Dark Hero RAM: G.Skill RipJaws V 32GB (4x8GB) DDR4 3600MHZ CASE: Phantheks P600S ALI: Corsair HX1000i SSD: Samsung 990 Pro 2TB GPU: AMD XFX Speedster SWFT 319 RX 6900 XT MONITOR: Samsung Odyssey G7 27" + Dell S2721DGFA
Doom_94 è offline   Rispondi citando il messaggio o parte di esso