Homepage » come » Perché stiamo ancora utilizzando CPU anziché GPU?

    Perché stiamo ancora utilizzando CPU anziché GPU?

    Sempre più GPU vengono utilizzate per attività non grafiche come i calcoli del rischio, i calcoli fluidodinamici e l'analisi sismica. Cosa ci impedisce di adottare dispositivi basati su GPU?

    La sessione di domande e risposte di oggi ci viene fornita per gentile concessione di SuperUser, una suddivisione di Stack Exchange, un raggruppamento di domande e risposte di community-drive.

    La domanda

    Il lettore SuperUser Ell continua con le notizie tecnologiche ed è curioso di sapere perché non stiamo utilizzando più sistemi basati su GPU:

    Mi sembra che in questi giorni ci siano molti calcoli sulla GPU. Ovviamente la grafica è fatta lì, ma usando CUDA e simili, AI, algoritmi di hashing (si pensi ai Bitcoin) e altri sono fatti anche sulla GPU. Perché non possiamo semplicemente sbarazzarci della CPU e utilizzare la GPU da sola? Ciò che rende la GPU molto più veloce della CPU?

    Perché davvero? Ciò che rende la CPU unica?

    La risposta

    Contributo SuperUser DragonLord offre una panoramica ben supportata delle differenze tra GPU e CPU:

    TL; risposta DR: Le GPU hanno molti più core del processore rispetto alle CPU, ma poiché ciascun core della GPU è molto più lento di un core della CPU e non ha le funzionalità necessarie per i moderni sistemi operativi, non è appropriato per eseguire la maggior parte dell'elaborazione nell'elaborazione quotidiana. Sono più adatti per operazioni di elaborazione intensiva come l'elaborazione di video e le simulazioni fisiche.

    La risposta dettagliata: GPGPU è ancora un concetto relativamente nuovo. Le GPU venivano inizialmente utilizzate solo per il rendering della grafica; con l'avanzare della tecnologia, il gran numero di core nelle GPU relative alle CPU è stato sfruttato sviluppando capacità di calcolo per le GPU in modo che possano elaborare simultaneamente molti flussi paralleli di dati, indipendentemente da quali potrebbero essere i dati. Mentre le GPU possono avere centinaia o persino migliaia di processori di streaming, ciascuna di esse funziona più lentamente di un core della CPU e ha meno funzioni (anche se sono complete e possono essere programmate per eseguire qualsiasi programma che una CPU può eseguire). Le funzionalità mancanti dalle GPU includono interrupt e memoria virtuale, necessari per implementare un sistema operativo moderno.

    In altre parole, CPU e GPU hanno architetture significativamente diverse che le rendono più adatte a compiti diversi. Una GPU può gestire grandi quantità di dati in molti flussi, eseguendo operazioni relativamente semplici su di essi, ma non è adatta per l'elaborazione pesante o complessa su un singolo o pochi flussi di dati. Una CPU è molto più veloce su base core (in termini di istruzioni al secondo) e può eseguire operazioni complesse su un singolo o pochi flussi di dati più facilmente, ma non può gestire in modo efficiente molti flussi contemporaneamente.

    Di conseguenza, le GPU non sono adatte per gestire attività che non beneficiano o non possono essere parallelizzate in modo significativo, incluse molte applicazioni consumer comuni come i word processor. Inoltre, le GPU utilizzano un'architettura fondamentalmente diversa; si dovrebbe programmare un'applicazione specifica per una GPU perché funzioni e sono necessarie tecniche significativamente diverse per programmare le GPU. Queste diverse tecniche includono nuovi linguaggi di programmazione, modifiche a linguaggi esistenti e nuovi paradigmi di programmazione che sono più adatti per esprimere un calcolo come un'operazione parallela che deve essere eseguita da molti processori di streaming. Per ulteriori informazioni sulle tecniche necessarie per programmare le GPU, consultare gli articoli di Wikipedia sull'elaborazione dei flussi e il calcolo parallelo.

    Le moderne GPU sono in grado di eseguire operazioni vettoriali e aritmetiche in virgola mobile, con le ultime schede in grado di manipolare numeri in virgola mobile a precisione doppia. Framework come CUDA e OpenCL consentono di scrivere programmi per GPU e la natura delle GPU li rende i più adatti a operazioni altamente parallelizzabili, come nel calcolo scientifico, dove una serie di schede di calcolo GPU specializzate può essere una valida alternativa per un piccolo cluster di calcolo come in NVIDIA Tesla Personal Supercomputers. I consumatori con le moderne GPU con esperienza con Folding @ home possono usarli per contribuire con i client GPU, che possono eseguire simulazioni di piegatura delle proteine ​​a velocità molto elevate e contribuire più lavoro al progetto (assicurati di leggere prima le FAQ, in particolare quelle relative a GPU). Le GPU possono anche consentire una migliore simulazione fisica nei videogiochi utilizzando PhysX, accelerare la codifica e la decodifica video e svolgere altre attività di elaborazione intensiva. Sono questi i tipi di attività che le GPU sono più adatte a eseguire.

    AMD sta sperimentando un design del processore denominato Accelerated Processing Unit (APU) che combina i core CPU x86 convenzionali con le GPU. Ciò potrebbe consentire ai componenti CPU e GPU di lavorare insieme e migliorare le prestazioni su sistemi con spazio limitato per componenti separati. Mentre la tecnologia continua a progredire, vedremo un crescente grado di convergenza di queste parti una volta separate. Tuttavia, molte attività eseguite dai sistemi operativi e dalle applicazioni per PC sono ancora più adatte alle CPU e è necessario molto lavoro per accelerare un programma utilizzando una GPU. Poiché molti software esistenti utilizzano l'architettura x86 e poiché le GPU richiedono tecniche di programmazione diverse e mancano alcune importanti funzionalità necessarie per i sistemi operativi, una transizione generale dalla CPU alla GPU per l'elaborazione quotidiana è estremamente difficile.


    Hai qualcosa da aggiungere alla spiegazione? Sound off nei commenti. Vuoi leggere più risposte dagli altri utenti di Stack Exchange esperti di tecnologia? Controlla la discussione completa qui.