2012-04-19 16 views
20

So per alcuni algoritmi di apprendimento automatico come la foresta casuale, che per natura dovrebbero essere implementati in parallelo. Faccio un lavoro a domicilio e scopro che ci sono questi tre schemi di programmazione parallela, quindi sono interessato a sapere quali sono le principali differenze tra questi tre tipi di parallelismo?MPI vs GPU vs Hadoop, quali sono le principali differenze tra questi tre parallelismi?

Soprattutto, se qualcuno può indicarmi qualche studio confrontare la differenza tra loro, che sarà perfetto!

Si prega di elencare i pro ei contro per ogni parallelismo, grazie

+1

Hadoop è solo un datastorage che fornisce paradigmi di mangeling (MapReduce). Per usare MPI hai bisogno di un PHD ed è per il calcolo. GPU è solo hardware. Qual è il tuo appello? –

+1

Dai un'occhiata a questa discussione http://stackoverflow.com/questions/10074047/mpi-gpu-how-to-mix-the-two-techniques – Infinity

risposta

34
  1. MPI è un messaggio di passaggio di paradigma di parallelismo. Qui, hai una root machine che genera i programmi su tutte le macchine nel suo MPI WORLD. Tutti i thread nel sistema sono indipendenti e quindi l'unico modo di comunicazione tra di loro è attraverso i messaggi sulla rete. La larghezza di banda e il throughput della rete sono uno dei fattori cruciali nelle prestazioni dell'implementazione di MPI. Idea: se c'è un solo thread per macchina e ci sono molti core su di esso, puoi usare il paradigma di memoria condivisa OpenMP per risolvere sottoinsiemi del tuo problema su una macchina.

  2. CUDA è un paradigma SMT di parallelismo. Usa l'architettura della GPU allo stato dell'arte per fornire parallelisim. Una GPU contiene (blocchi di (set di core)) che lavorano sulla stessa istruzione in modalità lock-step (Questo è simile al modello SIMD). Quindi, se tutti i thread del tuo sistema fanno un sacco di lavoro, puoi usare CUDA. Ma la quantità di memoria condivisa e memoria globale in una GPU è limitata e quindi non si dovrebbe usare solo una GPU per risolvere un problema enorme.

  3. Hadoop viene utilizzato per risolvere grandi problemi sull'hardware di base utilizzando il paradigma Riduzione mappa. Quindi, non devi preoccuparti di distribuire dati o gestire casi d'angolo. Hadoop fornisce anche un file system HDFS per l'archiviazione dei dati sui nodi di calcolo.




Hadoop, MPI e CUDA sono completamente ortogonali tra loro. Quindi, potrebbe non essere corretto confrontarli.

Tuttavia, è sempre possibile utilizzare (CUDA + MPI) per risolvere un problema utilizzando un cluster di GPU. Hai ancora bisogno di un semplice core per eseguire la parte relativa alla comunicazione del problema.

Problemi correlati