2012-08-31 15 views
6

Attualmente sto studiando argomenti per gli studi universitari in Informatica e ho trovato un'area di interesse relativamente ampia, Distributed Computing, su cui mi piacerebbe avere maggiori informazioni. Ci sono una manciata di altre domande [1, 2, 3] su StackOverflow che affrontano questioni simili, ma non necessariamente la domanda che sto per porre, in particolare quelle relative alle lingue che sto cercando.Da dove cominciare con Distributed Computing/Parallel Processing? (Python/C)

Ho cercato sul Web e trovato molti documenti, articoli e persino corsi, come il corso this da Rutgers, che descrive la teoria e la meccanica dietro Distributed Computing. Sfortunatamente, la maggior parte di questi documenti e corsi che ho trovato sono abbastanza limitati nel descrivere i concetti reali del calcolo distribuito nel codice. Sto cercando siti web che possano darmi un'introduzione alle parti di programmazione di Distributed Computing. (Preferibilmente in C o Python.)

Come nota a margine, vorrei ricordare che questo potrebbe essere anche più specificamente in merito al modo in cui Parallel Computing si inserisce nel campo del calcolo distribuito. (Non ho ancora fatto un corso!)

+0

FYI puoi usare Python e C/C++! Puoi usare python per la gestione di alto livello e C/C++ sia avviluppato o generato da Cython per la velocità. In questo modo ottieni entrambi i mondi! – Onlyjus

+0

Questo non è adatto per SO. –

+0

C'è un articolo eccellente nello spettro IEEE: [The Trouble With Multicore] (http://spectrum.ieee.org/computing/software/the-trouble-with-multicore/). Soprattutto l'esempio che descrive [come parallelizzare il calcolo di PI] (http://spectrum.ieee.org/image/1627665) mi è stato di grande aiuto su come pensare ai problemi per poterli parallelizzare. –

risposta

1

Ho avuto esperienze positive usando i pacchetti integrati per python su una singola macchina. Il mio amico ha avuto un grande successo usando ipython su una macchina con 128 core.

Ora ci sono diversi tipi di computer distribuiti come cluster, cloud o qualsiasi macchina su Internet come fold @ home (comprese le PS3!). Non dimenticare anche le GPU!

Alcuni collegamenti Python:
Various Python libraries
Ipython
Python and Parallel Computing presentation

+0

La presentazione mostra molte delle informazioni correlate che sto cercando. Non ti piacerebbe sapere di altri materiali simili, ma non correlati a IPython, vero? –

+0

@AlexWilliams, non so nulla di ciò che vada per la testa. – Onlyjus

3

Disclamer: Sono uno sviluppatore di SCOOP.

Dipende davvero dalla tua personalità. Se preferisci ottenere informazioni teoriche prima di andare avanti, dovresti prima leggere alcuni libri o andare d'accordo con le tecnologie. Un elenco di libri che coprono una buona parte del soggetto sarebbe:

  • programmazione parallela per multicore e cluster di sistemi di Thomas Rauber, e Gudula Rünger (Springer-Verlag).
  • Principi di programmazione parallela di Calvin Lin e Lawrence Snyder (Addison-Wesley)
  • Patterns per la programmazione parallela Timothy G. Mattson e al. (Addison-Wesley)

tecnologie dati basati si consiglia di fare la conoscenza con sarebbe lo standard MPI (per il multi-computer) e OpenMP (per singolo computer), così come il buon modulo multiprocessing che è integrato in Python.

Se si preferisce sporcarsi le mani prima, è necessario iniziare con framework basati sulle attività che forniscono un utilizzo semplice e intuitivo. Entrambe queste erano la massima attenzione durante la creazione di SCOOP. Puoi provarlo con pip -U scoop. Su Windows, potresti voler installare PyZMQ prima usando il loro executable installers. È possibile controllare gli esempi forniti e giocare con i vari parametri per capire cosa causa il degrado delle prestazioni o aumentare con facilità.Vi incoraggio a confrontarlo con le sue alternative come Celery per lavori simili o Gevent per un framework di coroutine. Se ti senti avventuroso, non essere timido per testare il builtin coroutines functionnalities di Python e collegarli con vari stack di rete.

L'utilizzo di una struttura basata su attività semplificherà l'onere dell'analisi teorica, ad esempio i dettagli di implementazione del bilanciamento del carico, la serializzazione e così via, che non è banale e può richiedere molto tempo per eseguire il debug e lavorare. Fornisce tutto il livello desiderato di comprensione dei sistemi distribuiti. Bonus con software open source: controlla il codice per capire i dettagli meccanici sotto il cofano.

+0

Molto utile. Controllerò sicuramente quei testi! –

Problemi correlati