If I was building a computer, which item should I care about more?
Da un punto di vista pratico dovresti probabilmente prestare un po 'di attenzione alla scheda madre e alla CPU, vista la relativa difficoltà di aggiornamento rispetto alla GPU. Dopo l'acquisto è un momento terribile per scoprire che non hai spazio per quattro GPU o un processore abbastanza veloce da tenerli tutti occupati.
Dovresti anche essere consapevole del fatto che le prestazioni della GPU vengono spesso riportate in FLOP a precisione singola e si riducono un po 'per la doppia precisione. Se hai bisogno della precisione extra nelle tue simulazioni, ti ritroverai ben al di sotto della velocità pubblicizzata.
Off alle gare di ingegneria del software
Ci sono due problemi principali da un punto di vista del software, il collo di bottiglia di Von Neumann e il modello di programmazione. La CPU ha un accesso abbastanza buono alla memoria principale, la GPU ha una grande quantità di memoria più veloce a bordo. Non è sconosciuto che il tempo che sposta i dati dentro e fuori la GPU nega completamente qualsiasi vincita di velocità. In generale, la CPU è vincente per il calcolo moderato su grandi quantità di dati, mentre la GPU eccelle per il calcolo pesante su importi minori. Tutto ciò ci porta al modello di programmazione.
Ad un alto livello il problema è l'antico e onorato dibattito MIMD / SIMD. I sistemi Multiple-Instruction / Multiple-Data sono stati i grandi vincitori nell'informatica generale e commerciale. In questo modello, che include SMP, ci sono più processori ognuno che esegue il proprio flusso di istruzioni individuale. È l'equivalente informatico di una cucina francese, dove dirigere un piccolo numero di cuochi esperti per completare compiti relativamente complicati.
I sistemi Single-Instruction / Multiple-Data, d'altra parte, assomigliano più a una grande stanza piena di impiegati incatenati alle loro scrivanie seguendo le istruzioni di un controller master. "Tutti aggiungono le linee 3 e 5!" Veniva usato nella sua forma pura nell'ILLIAC e in alcuni sistemi "mini-super", ma persi nel mercato. Le attuali GPU sono un cugino vicino, sono più flessibili ma condividono la stessa filosofia generale.
Per riassumere brevemente:
- Per ogni operazione la CPU sarà più veloce, mentre la GPU può eseguire molti contemporaneamente. La differenza è più evidente con i float a 64 bit.
- I core della CPU possono funzionare su qualsiasi indirizzo di memoria, i dati per la GPU devono essere impacchettati in un'area più piccola. Vinci solo se stai facendo abbastanza calcoli per compensare il tempo di trasferimento.
- Il codice con condizioni condizionali in genere sarà più felice sulla CPU.