Newsgroup: it.comp.hardware
Titolo: AMD Ryzen e Intel Fortran Compiler

 
Sul mio pc ho un vecchio intel dual core duo:
Intel(R) Core(TM)2 Duo CPU     E8200  @ 2.66GHz
 
Come sistema sonon su linux. Ci faccio girare
anche un programma in fortran che fa dei calcoli
"per tentativi" e gira per ore e ore trovando
risultati sempre migliori ecc.
 
Ho notato che se lo complio con "gfortran", cioè
il compilatore della GNU, ottengo un eseguibile
vistosamente più lento rispetto al corrispondente
compilato col compilatore intel "ifort".
 
Mi chiedevo, questa maggiore performace secondo
voi è dovuta al fatto che il compilatore della
intel compila il software "contro" la CPU intel?
Oppure questo vantaggio lo otterrei anche se
il processore fosse un Ryzen?
 
Chiedo perchè da diverse vostre discussioni sembra
che questo Ryzen amd sia un buon acquisto, più
conveniente rispetto a controparti intel... E siccome
il mio pc è vecchiotto mi guardavo un attimo intorno
per capirci qualcosa.
 
Grazie in anticipo!  :)

 Ryzen?
 
Prendila come una risposta a naso di cui non sono certo.
 
Anzitutto la Intel zitta zitta (nel senso che è molto più
nota per l'hardware) ha un know how enorme sui
compilatori. Anche il compilatore C ha prestazioni
fantastiche. Seconda considerazione, che io sappia tutta
la famiglia di compilatori gcc/ada/fortran/etc. è "solo"
(si fa per dire) una specie di differente front end che
però si appoggia allo stesso ottimizzatore. E a quanto mi
pare di aver letto su forum tematici l'ottimizzazione del
codice è un po' il punto debole della famiglia di 
compilatori. Tanto è vero che in alcuni non tanto rari 
casi si possono usare solo i livelli "leggeri" di 
ottimizzazione.
 
Del resto se la Intel avesse mantenuto segrete alcune
istruzioni del set rendendone pubblica solo una parte,
credo si sarebbe scoperto molto presto. Penso
semplicemente che siano bravissimi a scrivere compilatori;
del resto ci è difficile immaginare che dimensioni
economiche abbia quel genere di ditte e quanto possano
investire in ricerca e sviluppo software.
 
 
-- 
"Dovrebbe smettere di praticare auto erotismo."
"Diamine, dottore, perché mai?"
"Perché le sto parlando."
 


C'è anche da dire che forse i livelli di ottimizzazione di default sono 
diversi. Per esempio il compilatore GNU C per default non ottimizza 
affatto. Se anche il compilatore fortran segue la stessa convenzione 
allora probabilmente serve specificare un flag in fase di compilazione 
per scegliere il livello di ottimizzazione desiderato


Guarda, avevo tentato alcuni flag di "gfortran", ma sinceramente
o non davano prestazioni comparabili a "ifort", oppure l'eseguibile
che si otteneva con alcune ottimizzazioni spinte tipo, se non ricordo
male qualcosa come -O2 e similari, producevano un eseguibile che
effettuava operazioni scorrette, nel senso che saltavano fuori risultati
del tutto sballati. Nella fattispecie avevo dato la colpa alla versione
di gfortran/gcc che montava l'allora slackware-14.0, infatti avevo poi
fatto la prova su una slackware-live ben più recente (basata su
slackware current e ai tempi stava per uscire l'attuale stabile
slackware 14.2). Per farla breve con gfortran più recente e i flag di
ottimizzazione gli errori sparivano, ma anche la velocità tornava ad
essere molto inferiore all'eseguibile ottenuto con ifort, che appunto
girava molto più rapido e impeccabile dal punto di vista dei risultati.
 
Che intel abbia un "vantaggio" sui compilatori ci sta.
Quello che però chiedevo qui è se questo migliore comportamento
si ottiene solo quando l'eseguibile ottenuto con "ifort" gira su
una CPU intel, oppure se la maggiore efficienza e velocità si
ottiene anche su una cpu AMD come i Ryzen.
 
Penso sia chiaro il senso della domanda, ma faccio l'esempio:
- caso 1:
. compro un pc basato su ryzen
. compilo il mio programma con ifort
. ottengo eseguibile che gira ad una certa velocità
 
- caso 2:
. compro un pc basato su cpu intel di prestazioni
equivalenti al ryzen del caso precedente
. compilo con ifort
. ottengo l'eseguibile
 
Domanda l'eseguibile ottenuto nel caso 2 sarà veloce
come quello del caso 1 oppure siccome siamo su cpu intel,
ifort magari riesce ad ottimizzare qualcosa in più e salta
fuori un eseguibile che gira palesemente più veloce?

 fuori un eseguibile che gira palesemente più veloce?
 
Non sarebbe la prima volta che acccade se l'applicazione e'
compilata con gli strumenti della intel allora questa
gira con prestazioni superiori...in ogni caso lo scarto
non dovrebbe essere macroscopico.


Tieni conto che parliamo di un programma di calcolo
che adatta un modello parametrico ad un campione di
dati misurati, cioè cerca il "set" di valori "migliori"
da assegnare ai parametri... in pratica si va per tentativi
e si aggiornano i valori dei parametri quando si trova
un set migliore... ok è un po' un casino, ma solo per dire
che è un programma che gira per molto tempo, dipende
che grado di "precisione" serve. Nel mio caso ad esempio
girava anche per 5 o 6 ore dopodichè solitamente ottenevo
un set di parametri "soddisfacenti".
Capisci bene che su 5 ore di lavoro, se una delle due
soluzioni hardware è abbastanza più rapida dell'altra,
potrebbe significare che con la piattaforma intel finisci
in 5 ore, mentre con l'AMD ne impieghi magari 7.
 
Non succede niente, cioè, nel mio caso non sono quelle
2 ore che fanno la differenza a livello lavorativo,
perchè mentre quel coso gira io faccio altro.
Però prima di spendere per un nuovo PC mi volevo un po'
informare bene su sta cosa... Alla fine già che si è
nelle spese meglio spendere in modo oculato!  :)
 


Con AMD a parita' generale di prestazioni spendi di
meno...poi per questo particolare caso comunque
se non t'importa che nel caso peggiore ci metti un oretta
in piu' (imho a farla grande) direi di andare comunque
su un Ryzen, tipo il 2600.

 su un Ryzen, tipo il 2600.
 
Cambiando argomento un secondo, questo processore ha incluso
anche chip grafico oppure va messa in conto una scheda video
separata?

Joe ci ha detto :

I Ryzen non hanno l'igpu...solo quelli della serie G ne
montano una ma sono tutti quad core.

 il processore fosse un Ryzen?
 
In passato, alcune CPU AMD, credo Opteron,
approfittavano del compilatore Intel tanto
quanto le CPU Intel.
 
Per i Ryzen non saprei, l'unica sarebbe
provare esattamente il benchmark che stai
usando tu su una macchina con quella CPU.
 
bye,
 
-- 
 
piergiorgio

 per capirci qualcosa.
 
Io sono del parere opposto, Ryzen puo' essere un buon acquisto solo per 
applicazioni che sfruttano appieno il multi-core.
Siccome queste applicazioni sono meno diffuse di quello che si crede, 
alla fine ci si ritrova con una macchina dalle prestazioni modeste.

acc ci ha detto :

rotfl


Beh dai, è un'affermazione che potevi fare dieci anni fa, non oggi. Bene 
o male la maggior parte delle applicazioni affamate di performance 
sfruttano più core. Quelle che non lo fanno, tranne rare eccezioni, sono 
applicazioni che non ne hanno poi tanto bisogno.
 
Ryzen comunque rimane un'ottima CPU anche nel single core a un prezzo 
competitivo e con un rapporto prezzo/prestazioni più favorevole della 
controparte intel.
 
Io sono molto ingolosito dal 2400G, che trovo imbattibile per quello che 
offre dal punto di vista di una macchina "tutto fare"