Hardware Upgrade Forum

Hardware Upgrade Forum (https://www.hwupgrade.it/forum/index.php)
-   Processori (https://www.hwupgrade.it/forum/forumdisplay.php?f=13)
-   -   Compilatore Intel e disparità di trattamento verso processori AMD/VIA (https://www.hwupgrade.it/forum/showthread.php?t=2119003)


blackshard 07-01-2010 11:32

Compilatore Intel e disparità di trattamento verso processori AMD/VIA
 
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 file binari eseguibili che non sempre sono ottimali per le nostre CPU.
Questo thread discute sul problema riguardante i software compilati con il compilatore Intel che non rispecchiano le reali prestazioni ottenibili con CPU di altro marchio (quindi AMD e VIA, attuali concorrenti nel settore delle cpu x86). Dagli studi che sono stati fatti, sembra che nel caso in cui venga rilevato un processore non prodotto da Intel, viene mandato in esecuzione il codice senza alcune ottimizzazioni, attivate invece quando viene riconosciuto il processore Intel. 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, ad esempio Videogiochi, programmi di benchmarking, alcuni tipi di driver, codec e generalmente applicazioni cpu-bound.

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 compilato, 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

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

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

Ed anche qui (con turbo mode disabilitato, a causa di sporadici problemi di prestazioni, come indicato nell'ultima pagina dei test):

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:

Quote:

Originariamente inviato da FTC
Requiring that, with respect to those Intel customers that purchased from Intel a software compiler that had or has the design or effect of impairing the actual or apparent performance of microprocessors not manufactured by Intel ("Defective Compiler"), as described in the Complaint:

1. Intel provide them, at no additional charge, a substitute compiler that is not a Defective Compiler;
2. Intel compensate them for the cost of recompiling the software they had compiled on the Defective Compiler and of substituting, and distributing to their own customers, the recompiled software for software compiled on a Defective Compiler; and
3. Intel give public notice and warning, in a manner likely to be communicated to persons that have purchased software compiled on Defective Compilers purchased from Intel, of the possible need to replace that software.

In caso di omissioni od inesattezze, fate presente la cosa in modo da permetterne la correzione.

AGGIORNAMENTO DEL 16 GENNAIO 2010

Lo stesso sito che ha fornito dei test su una piattaforma neutra (Phoronix) afferma di aver ordinato un core i3 per effettuare dei test sotto Linux. La news originale si trova qui:
http://www.phoronix.com/scan.php?pag...item&px=Nzg4NA

Nella news viene affermato che Intel non ha fornito alla testata un processore i3/i5 al lancio, come invece aveva fatto nell'altra occasione con il processore i7, per cui la testata Phoronix ha dovuto necessariamente ordinare ed acquistare un processore per conto proprio per poter condurre dei test. A breve dovrebbero essere forniti dei benchmark che descrivono le performance dei processori i3 in ambito Linux con un compilatore neutro.

AGGIORNAMENTO DEL 30 GENNAIO 2010

Phoronix ha pubblicato la recensione sul core i3 530 a 2.93 ghz:

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

Il confronto è con un phenom II x3 a 2.6 ghz e un Intel Core 2 Duo E8400 a 3.0 Ghz
Per il mio modesto parere, l'articolo è di difficile lettura perchè sono stati mischiati processori con 2 e 3 core fisici con uno con 2 core fisici e 4 logici. Inoltre la differenza di frequenza fra il Phenom e gli altri due processori Intel introduce un'altra variabile di cui tenere conto. Infine non sono stati indicati quali sono i test single threaded e quali i test che fanno uso di più thread, quindi non è facile comprendere quale è l'impatto (sia in positivo che in negativo) dell'Hyperthreading.

Ciò che appare evidente è che il phenom II X3 710 in alcune occasioni è di un bel po' dietro, solitamente è appaiato, poco dietro o poco avanti, e in alcune altre occasioni (ad esempio alcuni test su crittografia) è anche molto avanti. Da quanto detto, deduco che la recensione non è molto utile ai nostri scopi (cioè comprendere quale sia l'impatto del compilatore) perchè non è chiaro quando entra in gioco il terzo core del Phenom e quando invece la frequenza operativa è discriminante.

AGGIORNAMENTO DEL 15 FEBBRAIO 2010

Ho raccolto alcune notizie e blog che mostrano l'effettivo impatto prestazionale su alcuni carichi di lavoro.

Nel post che segue (datato 16-01-2007) viene mostrato come il patching dell'eseguibile permetta di ridurre il tempo di calcolo da 31 secondi a 27 secondi, con un incremento delle prestazioni del 15%. L'autore del post afferma che applicando la patch all'eseguibile, i tempi diventano proporzionalmente paragonabili con un core 2 duo a 3 ghz rispetto al suo athlon 4400+
http://terapix.iap.fr/forum/showthread.php?tid=134

In questo blog (datato 2005!) viene mostrato come l'applicazione della patch al compilatore Fortran per rimuovere il controllo sul processore Intel porti anche in questo caso vantaggi quantificabili all'incirca del 10%.
E' da notare il fatto che, utilizzando i flag -axW durante la compilazione vengono completamente disattivate le SSE/SSE2 per i processori non intel, ma queste rimangono attive sui processori intel, infatti il processore Opteron 248 preso in considerazione passa da 54,4 secondi a ben 123,4 secondi per completare il test "Simplex", risultando addirittura più lento del Pentium 4 1.7 Ghz preso come confronto!
La versione invece ottimizzata e opportunamente "patchata" per saltare il controllo migliora il tempo di esecuzione dai suddetti 54,4 secondi ai 49,1 secondi.
http://www.swallowtail.org/naughty-intel.shtml

Altri articoli dell'epoca che mostrano come questa questione fosse già ampiamente conosciuta e dibattuta sui siti del settore:

http://www.betanews.com/article/Suit...AMD/1121274628
http://techreport.com/discussions/8547

AGGIORNAMENTO DEL 24 MARZO 2010

|Pheonix| ha trovato un piccolo software che permette di analizzare un'insieme di file alla ricerca di controlli sul processore.
Verosimilmente esso cerca la presenza del CPU dispatcher del compilatore Intel all'interno dei compilati e lo modifica in modo da far riconoscere tutte le CPU come Intel. Attualmente il software è sotto analisi da parte degli utenti che seguono il thread, a breve saranno pubblicate notizie al riguardo.

E' possibile scaricare il software qui:

http://www.softpedia.com/get/Program...-Patcher.shtml

AGGIORNAMENTO DEL 23 APRILE 2010:

L'utente slemmer87 ha ottenuto dei significativi guadagni prestazionali applicando effettuando il patching dell'eseguibile tramite il programma indicato nell'aggiornamento precedente.
Altri dettagli e screenshot sono disponibili qui

AGGIORNAMENTO DEL 22 GIUGNO 2010

Intel pronta a sborsare milioni all'Antitrust USA. Clicca qui per andare al post #339 con ulteriori dettagli

AGGIORNAMENTO DEL 5 AGOSTO 2010

L'FTC ha emesso un accordo nel quale specifiche i termini della condotta sleale di Intel e impone a quest'ultima alcune importanti restrizioni riguardo il compilatore, e in materia di concorrenza.

La notizia è qui:

http://www.businessmagazine.it/news/...rdo_33449.html

oppure qui:

http://www.hwupgrade.it/forum/showth...6#post32773566

AGGIORNAMENTO DEL 01/11/2010

Anche se non è direttamente correlato con l'argomento del thread, riporto che Negative_Creep a questo post segnala che è divenuto presente, in una nota catena di merceologia elettronica presente in italia, il primo prodotto AMD. Questa notizia può essere intesa come una conferma della validità delle sanzioni imposte ad Intel dalla UE ed una possibile conferma delle pratiche di abuso di posizione dominante perpetrate di Intel.

AGGIORNAMENTO DEL 24/04/2011

digieffe mette in risalto i risultati SPECint e SPECfp ottenuti aggiornando il compilatore intel dalla versione 11.1 alla 12.0.
I risultati, a parità di configurazione hardware, mostrano un incremento del 18% delle performance sugli interi e del 14% delle performance sui floating point. Ciò può essere (ma non è detto che lo sia) legato alle condanne ricevute da intel e all'obbligo di rendere neutrale il suo compilatore.

Maggiori info qui: http://www.hwupgrade.it/forum/showpo...&postcount=436

Doom_94 07-01-2010 11:38

Quote:

Originariamente inviato da blackshard (Messaggio 30347065)
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!!

capitan_crasy 07-01-2010 11:42

eccomi

fastleo63 07-01-2010 11:43

Sottoscritto!

suneatshours86 07-01-2010 11:46

presente.
07/01/2010

"Speriamo sia la volta buona"

Vash_85 07-01-2010 12:42

Simpatici come un calcio nelle P@.... questi di intel non c'è che dire.... :D

Prima la storia degli accordi con i rivenditori e gli assemblatori poi il compilatore che rallenta VOLUTAMENTE le cpu non intel.....

Che dire .....gente seria al lavoro....

HypFra 07-01-2010 12:57

Curioso, me lo segui questo thread.

GT82 07-01-2010 13:07

Seguo anch'io

in questi giorni tral'altro facendo dei bench (Athlon X2 vs Athlon II X2) ad un certo punto con PCMark 2005 mi trovo valori strani, in particolare a parità di frequenza di testing (2.7 Ghz) i valori del K8 risultano bassissimi, tipo la metà del K10
stessa cosa con il benchmark sui browser sempre della FutureMark, il Peacekeeper

poi cercando di forzare le ram a CL3 anche overvoltandole di brutto, il sistema non parte obbligandomi ad un ClearCMOS
questa volta il processore parte da bios a 216x12.5 (2700mhz) mentre prima l'avevo impostato a 215x5 e poi da Windows alzavo il moltiplicatore a 12.5

i valori di PCMark e Peacekeeper si impennano dando l'idea adesso di essere veramente attendibili, perlomeno in paragone all'Athlon II

con gli altri bench, es. Cinebech R10, Nuclearus Multicore, Powerflasher, Encoding video x264 e Xvid nessuna variazione


è evidente quindi che i bench della Futuremark si fanno influenzare da altri fattori, e bisogna stare attenti a considerarli attendibili

jrambo92 07-01-2010 13:08

Quote:

Originariamente inviato da Vash_85 (Messaggio 30348155)
Simpatici come un calcio nelle P@.... questi di intel non c'è che dire.... :D

Prima la storia degli accordi con i rivenditori e gli assemblatori poi il compilatore che rallenta VOLUTAMENTE le cpu non intel.....

Che dire .....gente seria al lavoro....

Già.. sprizzano serietà da tutti i pori :D

Jean240 07-01-2010 13:12

Presente :D

Pihippo 07-01-2010 13:13

Alcune analisi
 
Alcune analisi sulle ottimizzazioni in un confronto K8 e core2
http://abinstein.blogspot.com/search/label/SPEC%20CPU

-Maxx- 07-01-2010 13:27

Eccomi! :)

chassis fuori servizio 07-01-2010 13:28

o.t da amd/ati user
 
la facciamo un class action? :D

scherzi a parte, complimenti e grazie per il trhead :friend:

gianni1879 07-01-2010 13:37

eccomi anch'io vediamo di non sfociare nella solita battaglia che vi banno tutti :D

Athlon 64 3000+ 07-01-2010 13:50

Mi iscrivo anche io!
Visto che non mi è mai stata simpatica Intel vediamo come si evolve la situazione.

matt92tau 07-01-2010 13:54

Ci sono!!

ivano444 07-01-2010 13:55

che buffoni

Vash_85 07-01-2010 14:01

Quote:

Originariamente inviato da gianni1879 (Messaggio 30349034)
eccomi anch'io vediamo di non sfociare nella solita battaglia che vi banno tutti :D

Tu appartieni al lato oscuro....:D :D :sofico: :sofico:

Doom_94 07-01-2010 14:45

Quote:

Originariamente inviato da Vash_85 (Messaggio 30349518)
Tu appartieni al lato oscuro....:D :D :sofico: :sofico:

che la forza sia con noi!!!

bjt2 07-01-2010 15:25

Quote:

Originariamente inviato da Doom_94 (Messaggio 30350366)
che la forza sia con noi!!!

Ma anche l'accelerazione... :O
E la massa... :O (e Carrara... :O )


Tutti gli orari sono GMT +1. Ora sono le: 21:53.

Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
Hardware Upgrade S.r.l.