6

Ho bisogno di aiuto per capire il concetto di core su una GPU rispetto ai core in una CPU allo scopo di fare calcoli paralleli.GPU vs CPU? Numero di core/thread in una GPU per l'accelerazione del calcolo del programma?

Quando si tratta di core in una CPU, sembra piuttosto semplice. Ho un ciclo "for" super intensivo che itera quattro volte. Ho quattro core nella mia CPU Intel i5 2,26 GHz. Dò un ciclo ad ogni core. Ciascuno dei quattro anelli è indipendente dall'altro. Boom - Ora ho quattro thread creati e il 100% di utilizzo della CPU (invece del 25% di utilizzo della CPU con un solo core). Il mio ciclo "for" ora gira quasi quattro volte più velocemente di quanto sarebbe se non lo parallelizzavo. A proposito, per il ciclo "for", stavo usando la parallelizzazione automatica disponibile su Microsoft Visual Studio 2012, come in questo esempio online :(http://msdn.microsoft.com/en-us/library/hh872235.aspx).

Al contrario, non conosco nemmeno il numero di core nella GPU del mio laptop (Intel Graphics Media Accelerator HD o Intel HD Graphics, con memoria condivisa 1696MB) che posso utilizzare per calcoli paralleli. Non conosco nemmeno un modo valido per confrontare la GPU con la CPU. Quando vedo "12 @ 500MHz" accanto alla descrizione della mia scheda grafica, mi chiedo se questo significa che la scheda grafica ha 12 core per la parallelizzazione che funzionano come i 4 core in una CPU, tranne che i core della GPU funzionano a 500MHz [lento ] invece di 2,26 GHz [veloce]? Esiste un utilizzo della GPU paragonabile all'utilizzo della CPU nel task manager di Windows? Sono un principiante assoluto che cerca di usare la libreria C++ in Visual Studio 2012, se questo fa alcuna differenza. Quando scrivo l'attuale software GPU, il codice di parallelizzazione è simile al seguente :(http://msdn.microsoft.com/en-us/library/hh265137.aspx).

Quindi, per favore, riempire alcune lacune o errori nella mia conoscenza o aiutarmi a confrontare i due? Non ho bisogno di una risposta super complicata, qualcosa di semplice come "Non si può paragonare un core CPU con un core GPU a causa dello spazio vuoto" o "un core GPU non è realmente un core come un core CPU" sarebbe essere molto apprezzato

+1

Se hai intenzione di fare lo sforzo di downvotare la mia domanda, almeno lascia una frase spiegando perché pensi che sia una brutta. Questa domanda è piuttosto aperta e tu sei libero di affrontarlo da una varietà di angolazioni. –

+1

Inoltre, sono consapevole che la mia scheda grafica fornita di serie con il laptop è un pezzo di merda. Non è una "scheda grafica discreta" in grado di funzionare con . Per il piacere di questa domanda, si prega di far finta che si tratti di una scheda "legittima" che funziona bene per eseguire calcoli del programma. –

risposta

4

In primo luogo, il sistema operativo avvia più core solo se li si richiede nel codice. Prova a utilizzare i thread OpenMP o Win32 per ottenere il parallelismo sul tuo i5.

In secondo luogo, il clock della CPU è superiore al clock della GPU. Se il clock della GPU è lo stesso della CPU, puoi usarlo come una stufa per cucinare. I core nella GPU sono più che CPU. C'è una differenza tra un filo e un nucleo.

In terzo luogo, vi consiglio di leggere le specifiche e i manuali di riferimento per CPU e GPU. Inoltre, non dimenticare PCI-e. È il collo di bottiglia per l'implementazione della programmazione parallela.

Spero che questo chiarisca i tuoi dubbi. Altre domande, sentitevi liberi di chiedere.

+0

Ho amato i tuoi riferimenti per questa domanda – Harrisson