QNA > Q > Qual È La Differenza Tra Cpu E Gpu Per Il Calcolo Parallelo?

Qual è la differenza tra CPU e GPU per il calcolo parallelo?

La CPU è specializzata nel calcolo su pipeline. Ha molte istruzioni che sono generalmente standardizzate e le sue interfacce sono intese come hardware e software per avere accesso e controllo su tutti i dispositivi da un PC.

Questa è l'architettura di un core i7 (fonte):

main-qimg-44d88b9a038553fff643f1dc98cbdf6b-mzj

Una CPU può fare calcolo parallelo usando le sue pipeline di istruzioni, e anche i core. Ogni core è forte, e considerando l'alta frequenza la sua potenza di elaborazione è significativa. Quindi, un core della CPU può eseguire un grande set di istruzioni, ma non troppe alla volta, questo limite è dato dalle pipeline hardware implementate per un core e dal numero di core.
Se si confronta questo con una GPU, avrà decine di core, core che sono limitati nella potenza di elaborazione, con un set di istruzioni limitato, ma essendo molti, tutti che eseguono 1 istruzione alla volta (o più, se hanno pipeline), a seconda dei calcoli che devono fare, l'architettura GPU è adatta a finire il lavoro specifico molto più velocemente.

Come appare l'architettura della GPU AMD RX-580 (fonte):

main-qimg-423099452f6e4a3094ab1e8785042e08.webp

Ti potresti chiedere, se è così, perché la CPU non usa la stessa strategia? Beh, in primo luogo, la CPU esegue molte volte le istruzioni, ma per la CPU non si sa bene quale sarà l'istruzione successiva, fino a quando non ottiene qualcosa dalla RAM, o legge l'input dalla tastiera o dal mouse. Sulla base di questo, un'architettura GPU usata come una CPU non funzionerà mai correttamente, perché il carico di lavoro non è noto in anticipo, per essere correttamente distribuito tra i core. Nel caso della GPU, il carico di lavoro è diviso in più quadrati, e principalmente ogni core della GPU si occupa del rendering del suo pezzo di codice.

Un'altra ragione per cui GPU e CPU sono diverse è il modo in cui sono indirizzate. Sappiamo che una CPU utilizza i set di istruzioni x86, x64, MMX, AVX, ecc. Queste istruzioni devono essere compatibili a livello hardware, direttamente indirizzabili dal sistema operativo, dal codice del programma, perché una nuova CPU deve essere sempre retrocompatibile. Nel caso della GPU, invece, i giochi sono interfacciati con i driver della GPU attraverso una API, come DirectX, OpenGL o Vulkan. E queste API si rivolgono alle schede video attraverso i driver. I driver cambiano e migliorano costantemente. Questo significa che anche le istruzioni indirizzabili della GPU possono subire modifiche, a seconda delle esigenze. E le istruzioni hardware di una GPU nVidia e di una GPU AMD non sono compatibili, ogni azienda implementa la propria versione. La cosa che rende le schede video compatibili con i giochi sono queste due: i driver e le API utilizzate.

Quindi, nel caso della GPU, se si vuole fare calcolo parallelo, è necessario avere accesso al livello hardware della GPU, e questo accesso deve essere fornito dal produttore della GPU attraverso i driver.

Nel caso della CPU, è sufficiente un codice da compilare con il codice x86 compatibile (o x64, o MMX, ecc.).

Di Eyeleen

Qual è la differenza tra outsourcing e contracting? :: La grafica Intel HD può eseguire Pro/ENGINEER e SolidWorks?
Link utili