PDA

View Full Version : Vorrei capire perchè GPU > CPU


DeAndreon
17-07-2010, 16:07
CIao a tutti! Vorrei capire perchè le GPU sono più veloci delle CPU in operazioni che le CPU svolgono normalmente.
Perchè CUDA? Perchè ATI Stream?
Perchè un browser accelerato da una GPU va una bomba mentre eseguito da una CPU è più lento?

A questo punto a cosa servono le CPU se le GPU sono così mostruosamente potenti?

Eppure le GPU lavorano a frequenza minore di una CPU... Come è possibile che sono così potenti a svolgere compiti di una normale CPU?

Vorrei delle spiegazioni tecniche...

Grazie a tutti!

sbudellaman
17-07-2010, 21:45
Io non sono assolutamente un esperto quindi le mie potrebbero benissimo essere delle cacchiate, comunque dico la mia :D

Le gpu hanno un architettura tale che è come se fossero formate da centinaia di core (gli stream processors appunto). E' ovvio che se tutti questi "processori" vengono sfruttati al massimo delle loro potenzialità andrebbero più di un solo processore a 10 ghz. Questo però non è possibile perchè programmi talmente ottimizzati per il calcolo parallelo quasi non esistono (apparte ambiti molto professionali), quindi le gpu danno quello che possono in ambiti normali.

DeAndreon
18-07-2010, 09:09
Ciao! Grazie per la risposta :)A questo ci ero arrivato anche io. Però mi sembra un pò come dire surreale perchè come hai detto tu parallelizzare ad esempio i 1600 stream processors dell'ati 5870 mi sembra una cosa difficile da realizzare... E' veramente questo ciò che rende le GPU più potenti delle CPU?

Allora mi chiedo: con i core si ora siamo arrivati a 6, perchè ad esempio ati addirittura nella GPU dell'ati 5870 ha messo 1600 stream processors?
Come fanno queste architetture ad essere come dire così complesse ma comunque come detto più potenti rispetto ad una CPU?

cronos1990
18-07-2010, 09:51
Passavo di qui per caso (ho la scheda video che è andata dritta in paradiso :D), ne approfitto per rispondere per quello che so io (non sono un esperto, quindi non prendere quel che dico per oro colato).

La differenza sostanziale tra una CPU ed una GPU, che ha portato ad avere questi 2 chip architetture completamente differenti tra loro, risiede principalmente per l'uso cui sono state sempre destinate.

Da un lato abbiamo la CPU, che deve svolgere compiti generici, ovvero qualsiasi computazione che riguarda il PC a prescindere dall'uso specifico di ogni utente; dall'altro abbiamo le GPU, che sono principalmente indirizzare verso il calcolo della grafica 3D. Per loro natura, quasi tutto il calcolo computazionale è basato sulla ripetizione continua di operazioni sempre uguali, e che sempre per loro natura hanno tempi di latenza elevati. E' quindi necessario avere delle architetture con elevato parallelismo e specifiche per quelle situazioni di calcolo.
Grazie alla loro strutturazione (ed anche, in parte, alla forte competizione tra ATI ed NVidia che ha portato sempre ad un'innovazione continua delle GPU) ci si ritrova quindi con processori dalle grandi prestazioni computazionali sulla carta, ma che in realtà esprimono questa potenza solo in determinati ambiti.

Dall'altro lato invece abbiamo le CPU, che proprio perchè il loro lavoro è molto più generico sono strutturate per lavorare in seriale e non in parallelo. Una delle conseguenze di tale scelta (oltre a tutti gli aspetti architetturali nei quali NON mi addentro perchè scriverei diversi sfrondoni) si può vedere dalle stesse frequenze di una CPU odierna (che sta intorno ai 3 GHz tranquillamente) a paragone con le frequenze di una GPU (circa 3 volte inferiori) ed è uno dei motivi per cui, fino a quando il processo non conveniva più, l'Intel era volta verso la corsa a velocità sempre più elevate. Solo quando si è raggiunto il limite (la AMD l'ha compreso prima di Intel a suo tempo) si è iniziato a produrre CPU multicore.

In sostanza: GPU più potenti delle CPU, ma a causa della natura dei calcoli necessari per far girare le applicazioni sempre diversi a seconda delle applicazioni stesse, le GPU sono "specifiche" per certe operazioni (Grafica 3D ed altre) mentre le CPU sono di utilizzo più generico, riuscendo a svolgere il loro lavoro con tutto quello che gli passa sotto le mani e con prestazioni migliori in quegli ambiti (diversi ambiti) in cui le GPU rendono decisamente peggio, proprio per questioni architetturali.

C'è da dire a tal riguardo che la Nvidia sta puntando molto sul GPUPU (chiedo conferme per la sigla che SICURAMENTE ho scritto male :D) che è in sostanza la filosofia di spostare alcuni carichi di lavoro di certe applicazioni, appannaggio delle CPU per i motivi scritti sopra, sulla GPU. Il progetto Fermi va in questa direzione, con un'architettura meno votata alla Grafica 3D (la ATI al momento ha il saldo predominio prestazionale in tale campo) ma con modifiche sostanziali che tendono ad avvicinare la sua architettura a quella delle CPU.

DeAndreon
18-07-2010, 10:17
Ciao! Ciò che hai detto tu è anche riportato qui:

http://www.gpgpu.it/joomla/cuda-tutorial/tutorial-cuda-prima-parte.html

quindi è corretto XD

Quindi sembra questo il motivo per cui le GPU sono più "potenti"(ora posso metterci le virgolette:D ) delle CPU. Sono dotate di una marea di stream processors in modo da parallelizzare i compiti(un pò come avviene attualmente con le CPU).

L'unica cosa che non mi spiego è che Nvidia utilizza pochi stream processors(32-64) a frequenza più elevata(addirittura 1600mhz) mentre Ati utilizza un mare di stream processors(addirittura 1600 nella HD5870) a frequenza più bassa(700-750mhz). Se il ragionamento per il parallelismo,
non dovrebbe essere più potente un Ati ma proprio con grande divario? Perchè Nvidia invece pareggia come prestazioni?

E soprattutto perchè questi 2 modi differenti? Pochi stream processors contro molti ma a frequenza più elevata?

cronos1990
18-07-2010, 11:17
Su Appunti digitali (che è tra l'altro una rubrica collegata ad Hardware Upgrade, trovi il link in cima alla pagina) nella sezione denimonata "Grafica e Silicio" c'è tutta una serie di articoli dedicati alla spiegazione del funzionamento delle GPU, di tutta la storia del confronto tra ATI ed Nvidia ed anche sul quesito da te posto sulla differenza di numero di stream processor tra le 2.

In pratica da, se non erro, la serie 8xxx Nvidia e la serie R600 ATI, si è avuta una differenziazione di pensiero tra le 2 case produttrici su quell'aspetto; sinceramente lessi quegli articoli tempo fa e non ricordo bene il loro contenuto (tra l'altro non ricordo l'articolo specifico che trattava quel quesito in particolare).

Sono articoli di non facile lettura per via del livello tecnico riciesto, però sono scritti molto bene ed esaurienti, andando a spiegare dettagliatamente molti aspetti riguardanti le schede grafiche. L'autore è sempre lo stesso ed è molto competente, il mio consiglio è quello di andare a leggerli (richiederà molto tempo, ma sono decisamente interessanti).


Ti metto i link ai singoli articoli che possono interessarti, divisi per "argomenti" (anche alcuni aggiuntivi, se possono interessarti):

Scontro ATI/NVidia dagli albori ad oggi
http://www.appuntidigitali.it/4813/ati-vs-nvidia-the-neverending-war-i-parte-lascesa-di-nvidia-e-il-sorpasso-di-ati/
http://www.appuntidigitali.it/4836/ati-vs-nvidia-the-neverending-war-ii-parte-nv40-e-g70-le-risposte-di-nvidia/
http://www.appuntidigitali.it/4878/ati-vs-nvidia-the-neverending-war-iii-parte-il-ritorno-di-ati/
http://www.appuntidigitali.it/4916/ati-vs-nvidia-the-neverending-war-iv-parte-le-strade-si-separano/

Le ALU
http://www.appuntidigitali.it/5025/elementi-funzionali-di-una-gpu-le-alu/

Funzioni GPU
http://www.appuntidigitali.it/6350/gpu-unita-dedicate-o-unita-generiche/

Il tessellator
http://www.appuntidigitali.it/7120/parti-funzionali-di-una-gpu-il-tessellator-i-parte/
http://www.appuntidigitali.it/7628/parti-funzionali-di-una-gpu-il-tessellator-ii-parte/
http://www.appuntidigitali.it/7872/parti-funzionali-di-una-gpu-il-tessellator-iii-parte/
http://www.appuntidigitali.it/7930/parti-funzionali-di-una-gpu-il-tessellator-iv-parte-analisi-prestazionale/

Sicuramente questi articoli possono rispondere decisamente meglio di me ai tuoi dubbi :D

DeAndreon
18-07-2010, 11:44
Ciao! Grazie per l'elenco di articoli da leggere:D Vidi solo i titoli tempo fa ma non li lessi per via del tempo a disposizione che scarseggia e ho dimenticato la loro esistenza:D
Appena ho tempo li leggo. Penso che le informazioni ottenute sono molto più che soddisfacenti per rispondere al mio dubbio iniziale:)