View Single Post
Old 23-03-2009, 13:10   #15
diddum
Member
 
Iscritto dal: Feb 2008
Messaggi: 157
in riferimento a perche' CPU e non GPU

ho studiato un po' CUDA di NVIDIA e semplicemente non e' fattibile un supercalcolatore di GPU, a meno che non sia destinato a calcoli particolari.

i motivi sono almeno 4

1) le CPU sono realmente indipendenti e potenzialmente tutte le 192 CPU di un cabinet possono
svolgere un programma diverso, mentre per sfruttare il calcolo GPU gli otto stream processor di ogni multiprocessor devono eseguire possibilmente le stesse istruzioni pena divergenza e sequenzializzazione del codice.
2) le CPU eseguono la qualunque, mentre per le GPU ci sono grosse limitazioni. Per esempio sotto CUDA un programma per la GPU non puo' essere ricorsivo, oltre a dover sottostare ad una serie enorme di limitazioni nell'accesso alla memoria condivisa e non, pena crollo delle prestazioni.
3) le GPU sono molto veloci nel fare in calcoli in virgola mobile (floating point) ma solo quando questi calcoli sono in precisione singola (per esempio nelle schede tipo GTX 285 che pure ha il double nativo in HW, c'e' solo una unita' double per multiprocessore, con i delay del caso. Se la tua applicazione ha bisogno di piu' precisione di quella, abbastanza scarsa della singola precisione (un float su 4 byte) allora le cose si complicano di molto.
4) esistono molti modi per sfruttare il parallelismo su un sistema composto da CPU, mentre per quel che riguarda le GPU siamo molto indietro (anche per le limitazioni di cui sopra)

Quindi al momento non e' possibile fare un supercomputer general purpose di GPU, mentre la cosa si puo' fare per problemi specifici. Sul sito di NVIDIA ci sono almeno un centinaio di progetti che usano CUDA, per farsi una idea di cosa si puo' fare bene con le GPU e cosa no.

ciao,
g.
diddum è offline   Rispondi citando il messaggio o parte di esso
 
1