2012-08-31 8 views
6

Ich untersuche derzeit Themen für Graduiertenstudien in Informatik und ich habe ein relativ großes Gebiet von Interesse gefunden, Distributed Computing, über das ich mehr Informationen erhalten möchte. Es gibt eine Handvoll anderer Fragen [1, 2, 3] auf StackOverflow, die ähnliche Fragen behandeln, aber nicht unbedingt die Frage, die ich stellen werde, speziell in Bezug auf die Sprachen, nach denen ich suche.Wo soll ich mit Distributed Computing/Parallel Processing beginnen? (Python/C)

Ich habe im Internet gesucht und fand viele Papiere, Artikel und sogar Kurse, wie this Kurs von Rutgers, beschreibt die Theorie und Mechanik hinter Distributed Computing. Leider sind die meisten dieser Papiere und Kurse, die ich gefunden habe, ziemlich beschränkt auf die tatsächlichen Konzepte von Distributed Computing in Code zu beschreiben. Ich suche nach Webseiten, die mir eine Einführung in die Programmierteile von Distributed Computing geben können. (Vorzugsweise in C oder Python.)

Als Randbemerkung möchte ich erwähnen, dass dies sogar genauer gesagt sein könnte, wie Parallel Computing in den Bereich des verteilten Rechnens passt. (Ich habe noch keinen Kurs in beiden genommen!)

+0

FYI Sie können Python und C/C++ verwenden! Sie können Python für die Verwaltung auf hoher Ebene und C/C++ verwenden, die entweder von Cython für die Geschwindigkeit umschlossen oder generiert werden. So erhältst du beide Welten! – Onlyjus

+0

Dies ist nicht für SO geeignet. –

+0

Es gibt einen exzellenten Artikel im IEEE-Spektrum: [The Trouble With Multicore] (http://spectrum.ieee.org/computing/software/the-trouble-with-multicore/). Besonders das Beispiel, das es beschreibt [wie man die Berechnung von PI parallelisiert] (http://spectrum.ieee.org/image/1627665), fand ich sehr hilfreich, wie man über Probleme nachdenkt, um sie parallelisieren zu können. –

Antwort

1

Ich hatte gute Erfahrungen mit den integrierten Paketen für Python auf einer einzigen Maschine. Mein Freund hatte großen Erfolg mit ipython auf einer Maschine mit 128 Kernen.

Jetzt gibt es verschiedene Arten von verteilten Computing wie auf Clustern, Wolken, oder jede Maschine im Internet wie folding @ home (einschließlich PS3s!) Vergiss auch nicht über GPUs!

Einige Python Links:
Various Python libraries
Ipython
Python and Parallel Computing presentation

+0

Die Präsentation zeigt eine Menge der verwandten Informationen, die ich suche. Sie würden zufällig keine anderen ähnlichen Materialien kennen, aber nichts mit IPython zu tun haben, oder? –

+0

@AlexWilliams, ich weiß nichts von der Spitze meines Kopfes. – Onlyjus

3

Disclamer: Ich bin ein Entwickler von SCOOP.

Es hängt wirklich von Ihrer Persönlichkeit ab. Wenn Sie es vorziehen, theoretische Informationen zu erhalten, bevor Sie fortfahren, sollten Sie einige Bücher lesen oder zuerst mit den Technologien auskommen. Eine Liste der Bücher einen guten Teil des Themas abdeckt wäre:

  • Parallele Programmierung für Multicore- und Cluster-Systeme von Thomas Rauber und Gudula Rünger (Springer-Verlag).
  • Principles of Parallel Programming von Calvin Lin und Lawrence Snyder (Addison-Wesley)
  • Patterns for Parallel Programming von Timothy G. Mattson und al. (Addison-Wesley)

Datenbasierte Technologien, die Sie kennen lernen möchten vielleicht würde der MPI-Standard sein (für Multi-Computer) und OpenMP (für Single-Computer), sowie die ziemlich gut Multiprocessing-Modul welches in Python eingebaut ist.

Wenn Sie es vorziehen, sich zuerst die Hände schmutzig zu machen, sollten Sie mit aufgabenbasierten Frameworks beginnen, die eine einfache und benutzerfreundliche Verwendung ermöglichen. Beides war ein Schwerpunkt bei der Erstellung SCOOP. Sie können es mit pip -U scoop versuchen. Unter Windows möchten Sie möglicherweise zuerst PyZMQ mit ihrer executable installers installieren. Sie können die bereitgestellten Beispiele überprüfen und mit den verschiedenen Parametern spielen, um zu verstehen, was zu Leistungseinbußen führt oder mit Leichtigkeit zunimmt.Ich ermutige Sie, es mit seinen Alternativen wie Celery für ähnliche Arbeit oder Gevent für ein Coroutine-Framework zu vergleichen. Wenn Sie abenteuerlustig sind, seien Sie nicht schüchtern, um die builtin coroutines functionnalities von Python zu testen und sie mit verschiedenen Netzwerk-Stacks zu verbinden.

Die Verwendung eines aufgabenbasierten Frameworks erleichtert Ihnen die Last der theoretischen Analyse, z. B. Load Balancing-Implementierungsdetails, Serialisierung usw., die nicht trivial ist und lange Zeit zum Debuggen und Arbeiten benötigt. Es bietet alle gewünschten Kenntnisse über verteilte Systeme. Bonus mit Open-Source-Software: Überprüfen Sie den Code, um mechanische Details unter der Motorhaube zu verstehen.

+0

Sehr hilfreich. Ich werde diese Texte definitiv überprüfen! –

Verwandte Themen