2010-07-19 12 views
9

Sto scrivendo un articolo per testare una nuova applicazione che dimostrerà i vantaggi del calcolo parallelo (rispetto alla versione serializzata tradizionale di questa applicazione). Voglio usare il canonical examples per il calcolo parallelo nella mia carta.Quali sono esempi canonici di calcolo parallelo?

Il mio primo esempio è the parallel computation of pi. Mi piacerebbe idealmente un esempio in cui ogni iterazione richiede molto tempo (a causa dell'overhead aggiuntivo associato alla parallelizzazione); il mio primo pensiero è una simulazione bayesiana con campionamento MCMC e Gibbs.

Quali altri problemi vengono generalmente discussi in questo contesto? Quali sono buoni esempi di grandi problemi embarassingly parallel?

+0

L'articolo di wikipedia che fornisci contiene una serie di esempi. Cosa c'è di sbagliato in loro? – Jens

+0

Stanno bene, anche se non penso che sarebbero considerati come "serie standard di esempi" (ad esempio l'esempio pi non è incluso lì). Non voglio solo nessun esempio: voglio gli esempi più famosi. – Shane

+0

@Shane: Allora perché hai chiesto "buoni esempi" nell'ultima frase? I buoni potrebbero non essere sempre famosi. –

risposta

5

Un esempio che ho usato in passato per un problema parallelo imbarazzante è la visualizzazione del set di mandelbrot. Ogni pixel può essere calcolato indipendentemente.

Anche la vita di Conway è interessante, in quanto ogni valore della "prossima" scheda può essere calcolato indipendentemente, ma dipenderà dai bit pertinenti della scheda "corrente" già eseguita.

6

Pochi più -

  • moltiplicare le matrici
  • Inversione matrici
  • FFT
  • stringa corrispondente
  • rendering scene 3d (tramite conversione della linea di scansione o ray tracing)
+0

+1 per menzionare il rendering di scene 3D. – claws

2

Il mio esempio preferito è la simulazione di monte carlo.

1

Trovare collisioni nelle funzioni di hash utilizzando Paul C. van Oorschot e Michael J. Weiner's method (PDF) si presenta spesso in varie impostazioni crittografiche.

5

Vorrei suggerire che esempi canonici di calcolo parallelo e problemi embarassingly parallele sono, se non completamente, quindi quasi, insiemi disgiunti. Per dirla in altro modo, le persone che lavorano nella computazione parallela non sono terribilmente eccitate per problemi imbarazzanti e paralleli; li chiamiamo così perché ci vergogneremmo di lavorarci sopra.

sarei cercando, se fossi in te, in questi (una lista non del tutto originale):

  • algebra lineare su grandi matrici dense, entrambi gli approcci diretti e iterativi;
  • algebra lineare su matrici sparse enormi
  • approcci ramificati e vincolati a problemi di programmazione lineare (e correlati);
  • corrispondenza di sequenza per bioinformatica (al di fuori del mio campo, potrei averlo espresso male);
  • ottimizzazione continua.

Mi aspetto che ce ne siano molti altri.

EDIT: Si può essere interessati a this list of problems che sono stati selezionati per l'analisi comparativa la prossima generazione di europei (accademici) supercomputer. Ti darà un'idea di dove sta andando quella nicchia.

+0

+1 Grazie per questa lista. Penso che "imbarazzante" implichi realmente cose che sono facilmente suddivise (cioè non ci sono dipendenze tra le iterazioni), non che sono imbarazzanti problemi in sé e per sé. – Shane

+0

@Shane: Mi permetto di dissentire, sono chiamati imbarazzanti perché quelli di noi che lavorano nel calcolo parallelo sarebbero imbarazzati a lavorare su problemi così semplici; ancora peggio, lavorando e commettendo errori. Può essere che siano così facili da parallelizzare perché non ci sono dipendenze tra le attività, ma questa è una questione diversa. –

+0

+1 per il collegamento alla suite di benchmark PRACE. Per lo stesso motivo, aggiungerei anche i benchmark SpecMPI: http://www.spec.org/mpi/ –

4

Le simulazioni di dinamiche molecolari consentono di modificare la dimensione del problema fino all'esaurimento delle risorse del computer (ovvero 256 particelle contro 256.000.000 di particelle). La sua veramente un esempio "canonica" se si esegue le simulazioni MD sotto NVT condizioni ;-)

+2

+1 per il gioco di parole. – jmbr

1

ho usato l'insieme di Mandelbrot demo di spiegare al mio mamma di cosa parla la programmazione parallela: http://www.ateji.com/px/demo.html

Tutti gli esempi che si menzionano sono per lo più codici dati paralleli pesanti. Probabilmente vorrai menzionare anche codici orientati alle attività, come i server che rispondono a molte richieste in parallelo, e flussi di dati o esempi di programmazione del flusso (MapReduce è un buon rappresentante di questa classe).

Problemi correlati