Leggi il Topic


Indice del forumMotobarForum Internet & Hi-Tech

   

Pagina 1 di 1
 
flops (che sono)
7076267
7076267 Inviato: 1 Mar 2009 15:23
Oggetto: flops (che sono)
 

raga ho sentito di computer ,anzi super computer, con una potenza di calcolo di 7 teraflops in virgola mobile icon_eek.gif icon_eek.gif
che significa dico a quanto equivarrebbe in ghz
 
7076292
7076292 Inviato: 1 Mar 2009 15:27
 
 
7076327
7076327 Inviato: 1 Mar 2009 15:32
 

ulgio ha scritto:
con una piccola ricerca su wikipedia ho trovato questo

Link a pagina di It.wikipedia.org


0509_up.gif

wiki c'è l'ho tra i preferiti solo che non ci ho capito una mazza icon_asd.gif
 
7076356
7076356 Inviato: 1 Mar 2009 15:36
 

eusa_think.gif se non mi sbaglio
ho visto che ogni procio sviluppa .... mhz di calcolo ho fatto la moltiplicazione per il numero di processori
752025600 mhz icon_eek.gif =ghz icon_question.gif
ma ancora non capisco cosa sono sti teraflops
 
7077355
7077355 Inviato: 1 Mar 2009 18:03
 

Come dice lì sul wiki indica il numero di operazioni in virgola mobile (quindi operazioni matematiche) eseguite in un secondo dalla CPU. Le moderne CPU posseggono una "sezione" dedicata a svolgere tali computazioni in virgola mobile, chiamata FPU. Quindi i FLOPS sono un'unità di misura che consentono di rappresentare la "velocità" di calcolo di una FPU.

Adesso passiamo agli ordini di grandezza... sulla pagina del wiki è scritto abbastanza chiaramente a quanto corrisponda un teraflop:

1 teraflop = 10^12 flops

Tu hai correttamente eseguito il calcolo dei MHz, trovando

850 MHz * 884736 = 752025600 MHz

Dopodiché servirebbe una conversione tra MHz e flops. Tuttavia questa deve essere calcolata eseguendo dei test (ad es. Linpack e il Lapack) sul processore in questione, dato che non esiste una corrispondenza univoca tra MHz e flops. Per fare ciò in rete trovi diverse tabelline e comparative (le stesse le puoi trovare sui siti dei produttori di CPU, benché siano meno affidabili ... per ovvi motivi icon_asd.gif ).

Riprendendo il tuo calcolo parliamo di processori quad-core PowerPC a 850MHz che svilupperanno picchi di 3 petaFlops. In teoria quindi ogni CPU dovrebbe sviluppare circa 3390842 flops l'uno, quindi 3,39 megaflops.

0510_saluto.gif 0510_saluto.gif 0510_saluto.gif
 
7095965
7095965 Inviato: 4 Mar 2009 10:21
 

Beh, per dirla tutta, la velocità di calcolo (e quindi il numero di FLOPS che un processore è in grado di eseguire) dipende da numerosi fattori, tra i quali:

- l'architettura interna
- il tipo di calcolo che si sta eseguendo
- il compilatore che si sta usando

L'architettura in genere è dotata di "code" (pipelines) che consentono di tenere occupata la FPU consentendo un accesso molto più veloce agli operandi successivi rispetto alla RAM. D'altro canto, per caricare le pipelines, sono necessari dei tempi che si ammortizzano se il calcolo è tale da adattarsi bene alla dimensione delle pipelines stesse. Per esempio, alcuni processori sono ottimizzati per calcoli vettoriali, cioè su insiemi di elementi, perché hanno delle pipelines molto ampie. In ogni caso esiste una dimensione ottima del vettore che consente la gestione migliore delle pipelines.

Ma la cosa più importante è il compilatore che si usa. Esistono compilatori che producono codice ottimizzato per specifiche famiglie (o addirittuta specifici modelli) di processori. Questo si ottiene modificando l'ordine di esecuzione delle operazioni presenti in una determinata espressione in modo da sfruttare al massimo l'architettura a disposizione. Lo stesso codice macchina, ottimizzato per il processore X può andare malissimo sul processore Y.

Insomma, come in tutte le cose, quando si comparano processori sulla base dei MFLOPS, bisogna sempre andare a guardare come sono ottenute queste misure...
 
7102385
7102385 Inviato: 4 Mar 2009 22:42
 

Marko60 ha scritto:
Insomma, come in tutte le cose, quando si comparano processori sulla base dei MFLOPS, bisogna sempre andare a guardare come sono ottenute queste misure...

Altrimenti si rischia di fare FLOP.




ok, scusate... non ho resistito eusa_shifty.gif
 
7104145
7104145 Inviato: 5 Mar 2009 10:54
 

42 ha scritto:

Altrimenti si rischia di fare FLOP.




ok, scusate... non ho resistito eusa_shifty.gif

icon_asd.gif icon_asd.gif
 
7104295
7104295 Inviato: 5 Mar 2009 11:19
 

42 ha scritto:

Altrimenti si rischia di fare FLOP.




ok, scusate... non ho resistito eusa_shifty.gif

Vabbé, allora ditelo! Se si mette a spammare anche 42, siamo alla canna del gas! icon_asd.gif icon_asd.gif icon_asd.gif
 
7104855
7104855 Inviato: 5 Mar 2009 12:55
 

Marko60 ha scritto:
Beh, per dirla tutta, la velocità di calcolo (e quindi il numero di FLOPS che un processore è in grado di eseguire) dipende da numerosi fattori, tra i quali:

- l'architettura interna
- il tipo di calcolo che si sta eseguendo
- il compilatore che si sta usando

L'architettura in genere è dotata di "code" (pipelines) che consentono di tenere occupata la FPU consentendo un accesso molto più veloce agli operandi successivi rispetto alla RAM. D'altro canto, per caricare le pipelines, sono necessari dei tempi che si ammortizzano se il calcolo è tale da adattarsi bene alla dimensione delle pipelines stesse. Per esempio, alcuni processori sono ottimizzati per calcoli vettoriali, cioè su insiemi di elementi, perché hanno delle pipelines molto ampie. In ogni caso esiste una dimensione ottima del vettore che consente la gestione migliore delle pipelines.

Ma la cosa più importante è il compilatore che si usa. Esistono compilatori che producono codice ottimizzato per specifiche famiglie (o addirittuta specifici modelli) di processori. Questo si ottiene modificando l'ordine di esecuzione delle operazioni presenti in una determinata espressione in modo da sfruttare al massimo l'architettura a disposizione. Lo stesso codice macchina, ottimizzato per il processore X può andare malissimo sul processore Y.

Insomma, come in tutte le cose, quando si comparano processori sulla base dei MFLOPS, bisogna sempre andare a guardare come sono ottenute queste misure...

Il discorso sul compilatore non mi convince fino in fondo.
Se il benchmark e' del processore, come generi il codice macchina e' irrilevante dal punto di vista dei risultato.
I compilatori si scrivono in funzione del processore, non il viceversa.
Poi, che per comparare le misure bisogna guardarci dentro ai benchmark questo e' ovvio.

Guido
 
7104963
7104963 Inviato: 5 Mar 2009 13:15
 

Scusa Guido, ma mi permetto di dissentire. Come scrivi codice macchina è fondamentale per spremere le massime prestazioni da un processore. Le ottimizzazioni che possono fare i compilatori sono moltissime e possono cambiare molto in funzione dell'architettura del processore obiettivo.

Per esempio, se un processore ha molti registri interni, il compilatore ci può tenere risultati intermedi invece di metterli in RAM che è molto più lenta. Allo stesso modo, cambiando l'ordine di esecuzione delle operazioni (ovviamente rispettando la semantica), può massimizzare lo sfruttamento di cache, pipelines e FPU.

Ci sono stati casi di bechmarks pubblicati che facevano fare pessime figure ad un processore. Si è poi scoperto che la compilazione era stata fatta senza attivare le ottimizzazioni specifiche.
 
7106064
7106064 Inviato: 5 Mar 2009 15:11
 

Marko60 ha scritto:
Scusa Guido, ma mi permetto di dissentire. Come scrivi codice macchina è fondamentale per spremere le massime prestazioni da un processore. Le ottimizzazioni che possono fare i compilatori sono moltissime e possono cambiare molto in funzione dell'architettura del processore obiettivo.

Per esempio, se un processore ha molti registri interni, il compilatore ci può tenere risultati intermedi invece di metterli in RAM che è molto più lenta. Allo stesso modo, cambiando l'ordine di esecuzione delle operazioni (ovviamente rispettando la semantica), può massimizzare lo sfruttamento di cache, pipelines e FPU.

Ci sono stati casi di bechmarks pubblicati che facevano fare pessime figure ad un processore. Si è poi scoperto che la compilazione era stata fatta senza attivare le ottimizzazioni specifiche.

Si, e' ovvio. Se metti un processore non in condizioni ottimali e' chiaro che puoi avere
risultati distanti dal dichiarato.
Se uno fa girare un benchmark con il codice non ottimizzato non e' che la FPU non e' capace in assoluto di certe prestazioni. E' quella particolare esecuzione che non spreme il processore al massimo.
Il problema non e' del processore ma di chi lo ha programmato male.
Se fai eseguire ad un calcolatore parallelo un algoritmo sequenziale e' probabile che sara' piu' lento che su un calcolatore "tradizionale", ma questo non significa che il calcolatore parallelo non e' "capace" di ottenere certi risultati.

Guido
 
7108262
7108262 Inviato: 5 Mar 2009 19:07
 

Dovremmo associare il numero di flops allo stato instantaneo del processore ovvero alla quantità di "conti basilari" che il processore sta eseguendo nel dato istante. Se il codice non permette di sfruttare appieno le potenzialità di una data macchina conta poco, lei in quel momento sta producendo quel numero di operazioni e questo è tutto quello che mi interessa se devo farle svolgere un conto o qualsiasi cosa. Che poi il numero di operazioni possa crescere sia modificando l'hardware che il software non importa, io voglio sapere come lavora in quell'istante!

Insomma secondo me è sbagliato scollegare una macchina dal codice che sta girando su di essa. Penso ad esempio ad una macchina in un cluster: la macchina è l'insieme di hardware e software, se una cpu può avere un determinato numero massimo di flops in talune situazioni, ma in questo momento sta lavorando in tutt'altro modo, la precedenza va proprio a questo fatto dato che quando accederò alla tal macchina le risorse che ho a disposizione sono quelle.
 
Mostra prima i messaggi di:





Pagina 1 di 1

Non puoi inserire nuovi Topic
Non puoi rispondere ai Topic
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi votare nei sondaggi
 
Indice del forumMotobarForum Internet & Hi-Tech

Forums ©