2012-08-31 11 views
6

私は現在、コンピュータサイエンスの大学院の研究の話題を研究しています。分散コンピューティングという比較的大きな関心があります。同様の問題に対処するいくつかの他の質問[123]がStackOverflowにありますが、必ずしも質問する必要はありません。特に私が探している言語に関連しています。分散コンピューティング/並列処理をどこから始めるのですか? (Python/C)

私はウェブを検索し、Rutgersのthisコース(分散コンピューティングの理論と仕組み)のような多くの論文、記事、さらにはコースを見つけました。残念ながら、私が見つけたこれらの論文とコースのほとんどは、コード内の分散コンピューティングの実際の概念を説明する上でかなり制限されています。私は分散コンピューティングのプログラミング部分について紹介してくれるウェブサイトを探しています。 (好ましくはCまたはPythonで)

これは、並列コンピューティングが分散コンピューティングの分野にどのように適合するかをさらに具体的に示していることを言及したいと思います。 (私はまだどちらのコースも受講していませんでした!)

+0

あなたはPythonとC/C++を使うことができます!高度な管理にPythonを、C/C++にはCythonでラップまたは生成された速度を使用できます。そうすれば、あなたは両方の世界を手に入れることができます! – Onlyjus

+0

これはSOには適していません。 –

+0

IEEEスペクトルには、[The Trouble With Multicore](http://spectrum.ieee.org/computing/software/the-trouble-with-multicore/)という優れた記事があります。特にPIの計算を並列化する方法の例(http://spectrum.ieee.org/image/1627665)私は、問題を並列化できるようにするために問題を考える方法に非常に役立つことがわかりました。 –

答えて

1

私は、1台のマシン上でPythonの組み込みパッケージを使って良い経験をしています。私の友人は、128コアのマシンでipythonを使って大成功を収めました。

クラスター、雲、インターネット上のFolding @ home(PS3も含む)のような分散コンピューティングのような種類があります。GPUも忘れないでください!

いくつかのPythonリンク:
Various Python libraries
Ipython
Python and Parallel Computing presentation

+0

私が探している多くの関連情報がプレゼンテーションに表示されます。あなたはIPythonとは無関係の他の資料も知っているでしょうか? –

+0

@AlexWilliams、私は頭の上から何も知らない。 – Onlyjus

3

Disclamer:私は、SCOOPの開発者です。

本当にあなたの性格によって異なります。あなたが前進する前に理論的な情報を得ることを好むなら、あなたはいくつかの本を読んだり、最初に技術を学ぶべきです。被写体の良い部分をカバーする本のリストは次のようになります。マルチコア、クラスタシステムトーマスRauberによってため

  • 並列プログラミング、およびガデュラRünger(シュプリンガー・フェアラーク)。
  • カルバンリンとローレンス・スナイダー(アディソン - ウェズリー)による並列プログラミングティモシー・G・マットソンとらによる並列プログラミングため
  • パターンの原則。 (Addison-Wesley)

あなたが知りたいかもしれないデータベースの技術は、マルチコンピュータ用のMPI標準とシングルコンピュータ用のOpenMPだけでなく、かなり良いマルチプロセッシングモジュールですこれはPythonに組み込まれています。

手を汚くすることを好む場合は、タスクベースのフレームワークから始めて、シンプルでユーザーフレンドリーな使い方をする必要があります。 SCOOPを作成している間、これらの両方が最大の焦点でした。 pip -U scoopで試すことができます。 Windowsでは、まずexecutable installersを使ってPyZMQをインストールすることができます。提供されたサンプルを確認し、さまざまなパラメータで再生して、パフォーマンスの低下を引き起こす原因を簡単に理解することができます。同様の作業ではCelery、コルーチンフレームワークではGeventなどの代替案と比較することをお勧めします。あなたが冒険好きなら、Pythonのbuiltin coroutines functionnalitiesをテストし、さまざまなネットワーキングスタックでそれらを接続することを恥ずかしくないでください。

タスクベースのフレームワークを使用すると、ロードバランシングの実装の詳細、シリアル化など、理論的な負担が軽減され、デバッグや作業に長時間かかることがあります。分散システムのすべての望ましいレベルの理解を提供します。オープンソースソフトウェアのボーナス:コードをチェックして、フードの機械的詳細を理解してください。

+0

非常に役に立ちます。私は間違いなくそれらのテキストをチェックアウトします! –

関連する問題