Scheda grafica per programmazione parallela rispetto ai metodi tradizionali

3

Con una semplice ricerca in Amazon si può vedere che l'approccio moderno per la programmazione parallela è usare la tua scheda grafica. Comunque sono ancora un po 'scettico a riguardo. Il mio ultimo computer ha una CPU a 8 core, di cui ho bisogno è sufficiente per tutte le mie esigenze parallele di base, se ho bisogno di più probabilmente userò MPI attraverso una rete usando le mie vecchie macchine. Tutto sommato, Perché e / o quando dovrei usare CUDA o un altro metodo che usa la mia scheda grafica invece di metodi tradizionali come pthreads, thread java, boost threads o i nuovi thread C ++ 11? Che dire dell'utilizzo dei processi?

    
posta Sambatyon 27.06.2011 - 16:06
fonte

2 risposte

8

Forse perché anche una scheda grafica di fascia media è un paio di ordini di grandezza più veloce di una CPU a 8 core in le attività è molto buona , che è algoritmi altamente paralleli ?

8 CPU core == 8 thread meno tutti i thread del sistema operativo disponibili per la tua applicazione (e solo se hai effettivamente un 8% di coreREAL, Hyper Threading non conta!)

512 Stream GPU = 512 Stream per l'applicazione da utilizzare.

Anche la larghezza di banda della memoria delle moderne schede grafiche è almeno due volte più ampia e di qualche ordine di grandezza più veloce persino del chipset più veloce disponibile per una CPU generica.

La domanda è confusa multi-threading con concorrenza parallela che non sono sempre usati insieme.

Le GPU non sono multi-thread allo stesso modo di una CPU generica.

Stream != Thread

Esse non eseguono più istruzioni per flusso, ma gli stream possono condividere i dati su cui lavorano, che le CPU generiche non possono fare bene, almeno non senza compromettere lo spazio nel tempo. Sta davvero confrontando mele e arance.

    
risposta data 27.06.2011 - 16:11
fonte
8

Una CPU multi-core è molto buona per il lavoro MIMD (Multiple Instructions Multiple Data). Una GPU eccelle nel lavoro con SIMD (dati multipli a singola istruzione). Ciò significa che se tutti i thread eseguono la stessa funzione, solo su dati diversi, quindi l'utilizzo di una GPU è probabilmente una buona scelta. Un classico esempio SIMD è l'elaborazione delle immagini, quando tutti i thread eseguono lo stesso algoritmo su diverse parti dell'immagine.

    
risposta data 27.06.2011 - 16:17
fonte

Leggi altre domande sui tag