2012-01-05 16 views
2

私は2次元テーブル(行列)を持っています 私はこの行列の各行を他の行列から独立して処理する必要があります。 各行のプロセスには時間がかかります。 大学で並列コンピューティングリソースを使用したいのですが(カナダグリッド)並列計算

開始方法に関するアドバイスはありますか?以前は並列計算を使ったことはありませんでした。

感謝:)ここ

+3

おそらくあなたの講師/ TA /教授に話をしてください.... –

+3

Pythonの場合、 'multiprocessing'ライブラリを見たいと思っています。あるいは、すべての重い作業がCコードであれば' threading'で十分です。あなたの大学のコンピューティングリソースとのインターフェイスを手助けすることができます。 – wim

+0

FYI ...スレッドに関するWimの注釈の明確化: "...すべての重い作業がC言語で行われている場合..."彼は、Pythonのグローバルインタプリタロックでは複数のスレッドを同時に実行できないため、彼らは一歩です。これを回避するには、各スレッドが別々のプロセスで実行されるため、C言語でコードを実行するときにインタープリタのロックが解除されます。しかし、これらの両方に大きなオーバーヘッドがあります。したがって、パフォーマンスが本当に必要な場合は、CまたはJavaスレッドのposixスレッドを見てください。 – Jim

答えて

5

スタート:これは便利かもしれhttp://docs.python.org/library/multiprocessing.html#examples

http://www.slideshare.net/pvergain/multiprocessing-with-python-presentationhttp://docs.python.org/library/multiprocessing.html

がこれを必ずお読みください。

マルチスレッドはマルチスレッドを試みるよりはるかに優れていますが、優れているものの、スレッドとマルチプロセッシングが含まれています。

グリッドコンピューティングでは、マルチスレッド化はほとんど役に立たない。

また、おそらくceleryで読んでみたいです。

0

解説者が言ったように、あなたの大学で話す人を見つけてください。あなたの質問に対する答えは、グリッドにインストールされているソフトウェアに固有のものです。グリッドにアクセスできる場合は、あなたの質問に答えてくれる人がいて、その人を見つけることができます(そして、彼らは喜んで助けてくれるでしょう)。

4

私はscoopという新しいライブラリの開発者の一人です。

これは、この目的(グリッドコンピューティング、スーパーコンピューティング、科学計算)向けに作られたものです。私はそれを試してみることをお勧めします。あなたのケースでは

、あなたがしなければならないだろうすべては、このような呼び出しです:

futures.map(YourFunc, matrixLine) 

それは、あなたのグリッドまたはどんな環境あなたが選択した上で配布されます。

+0

あなたのウェブページにScoopのフィードバックを追加することはどこにもありませんので、ここで簡単にメモしてください。 Windows 7のScoopのインストールプロセスには注意が必要です。私はそれを働かせることができませんでした。詳細は私に連絡してください。 –

+0

[scoopメーリングリスト](https://groups.google.com/forum/#!forum/scoop-users)に問題があれば、速やかに回答してください。スクープはまだベータ段階にありますが、改善のためにフィードバックをお寄せください。まもなくこの問題を検討します。 – Olivier

+0

SCOOPの誕生を見てうれしいです:p私はそれが大好き! – Labo

0

私が言うことは、まず:numpyをご覧ください。 Numpyは、ほぼCの速度でベクトル化された方法で列と行を計算する方法を提供しています。あなたの問題によっては、これは純粋な並列計算であるCPythonより速いかもしれません。

実際に大きなスピードアップを得るには、numpyアレイで並列計算を使用することができます。 可能な方法は、クラスタ上でmultiprocessingまたはIpythonを使用することです。