2012-08-31 34 views
6

我目前正在研究計算機科學專業的研究生課程,我發現了一個比較大的領域 - 分佈式計算,我想了解更多信息。在StackOverflow中還有一些其他問題[1,2,0 3],它解決了類似的問題,但不一定是我要問的問題,特別是與我正在尋找的語言相關的問題。從哪裏開始進行分佈式計算/並行處理? (Python/C)

我搜索了網頁,發現大量論文,文章,甚至是課程,例如Rutgers的this課程,描述了分佈式計算背後的理論和機制。不幸的是,我發現的大部分論文和課程在描述代碼中的分佈式計算的實際概念時相當有限。我正在尋找可以給我介紹分佈式計算編程部分的網站。 (最好用C或Python。)

作爲一個方面說明,我想提一下,這甚至可能更具體地說明並行計算如何適用於分佈式計算領域。 (我還沒有參加任何課程!)

+0

僅供參考,您可以使用Python和C/C++!您可以使用python進行高級管理,並且可以使用Cython包裝或生成的C/C++來提高速度。這樣你就可以得到兩個世界! – Onlyjus

+0

這不適用於SO。 –

+0

IEEE譜中有一篇很棒的文章:[多核故障](http://spectrum.ieee.org/computing/software/the-trouble-with-multicore/)。尤其是它描述的例子[如何並行化PI計算](http://spectrum.ieee.org/image/1627665)我發現如何考慮問題以便能夠並行化它們非常有幫助。 –

回答

1

我在單臺機器上使用python的內置軟件包有很好的經驗。我的朋友在擁有128個內核的機器上使用ipython取得了巨大的成功。

現在有不同種類的分佈式計算,如集羣,雲或互聯網上的任何計算機,如folding @ home(包括PS3)!不要忘記GPU!

一些Python鏈接:
Various Python libraries
Ipython
Python and Parallel Computing presentation

+0

該演示文稿顯示了我正在尋找的很多相關信息。你不會碰到任何其他類似的材料,但與IPython無關,是嗎? –

+0

@亞歷克斯威廉姆斯,我不知道任何事情都離我頭頂。 – Onlyjus

3

Disclamer:我鏟的開發商。

這真的取決於你的個性。如果你喜歡在出發之前獲得理論信息,你應該先閱讀一些書或者先與技術相處。圖書內容涵蓋有關科目的很大一部分名單將是:

  • 對多核和集羣系統由托馬斯Rauber和古杜拉龍格(施普林格出版社)並行編程。
  • 通過卡爾文林和Lawrence斯奈德(艾迪生 - 韋斯利)
  • 由Timothy G. Mattson的和人模式爲並行編程
  • 原則並行編程的。 (Addison-Wesley)

你可能想要熟悉的數據爲基礎的技術是MPI標準(對於多計算機)和OpenMP(對於單計算機)以及相當不錯的多處理模塊這是在Python中內置的。

如果您希望首先弄髒手,您應該從基於任務的框架開始,該框架提供簡單且用戶友好的用法。在創建SCOOP時,這兩者都是最爲關注的焦點。你可以嘗試pip -U scoop。在Windows上,您可能希望先使用executable installers安裝PyZMQ。您可以查看提供的示例並使用各種參數來了解導致性能下降的原因或輕鬆增加的原因。我鼓勵您將其與其他替代方法比較,如類似工作的Celery或協同框架的Gevent。如果你覺得冒險,不要害羞測試Python的builtin coroutines functionnalities,並用各種網絡堆棧來插入它們。

使用基於任務的框架可以減輕理論分析的負擔,例如負載平衡實現細節,序列化等,這些並不重要,而且可能需要很長時間才能調試和工作。它提供了對分佈式系統的理解水平。獎金與開放源碼軟件:檢查代碼,以瞭解引擎蓋下的機械細節。

+0

非常有幫助。我一定會查看這些文本! –