2

家にあるたくさんのデバイスを活用するために何かを書くことを計画しています。

基本的に、私の目的は、ラップトップを使用して計算を実行し、メインのデスクトップコンピューターを使用して電力を追加することです(そしてタスクをより速く完了することです)。私は細胞シミュレーションと化学的相互作用を扱っているので、家で利用できるすべてのものを利用するのは素晴らしいことです。

私は主にOSXを使用しているので、そのOSで動作する可能性のあるものが必要です。私はObjective-C、C、C++でコーディングできます。

私はGCD、OpenCL、MPIを知っていますが、どちらに進むべきかわかりません。

デスクトップの全機能を使用するのではなく、使用可能なコアの一部のみを使用することを計画していました(このようにして、リソースをあまり消費しない他のタスクを実行してデスクトップで作業を続けることができます)。特に、グラフィックカードの電源(ATIカードであるためCUDAは使用しない)を使用したいと思います。主にスプレッドシート、単語、Xcodeを使用したコーディングのみを行い、そのシナリオではグラフィックカードのリソースは基本的に使用されないためです。

前述の3つのライブラリまたはAPIの中に、タスクを選択的にルーティングし、制御を完全にコンパイラに任せずに別のマシンのリソースを使用できるようにする特定のライブラリまたはAPIのセットはありますか?GCDは素晴らしいと聞きましたが、MPIがスペクトルの反対側にあるのに対し、ブロックが実行される場所の制御は非常に限られています。OpenCLは真ん中にあるようです。

これらのテクノロジーの1つに飛び込む前に、どれが私のニーズに最も適しているかを知りたいと思います。私が達成しようとしていることを達成するために、他の何人かの研究者がすでに並列コンピューティングをうまく使用していると確信しています。

前もって感謝します。

4

2 に答える 2

0

MPIは、週末のプロジェクトではなく、多くのノードが除外する大規模な科学計算用のプロセッサです。OpenCl、またはzeromqやrabbitMQなどのAMQPプロトコルファミリのより分散されたフレームワーク、またはOpenClとAMQP、またはもっと簡単にマルチスレッドを検討する場合は、OpenMPをお勧めします。直接ソルバーまたは並列関数を探しているかどうかはわかりませんが、Web上で見つけることができるgpuおよびcpuにも存在するものがたくさんあります

于 2012-10-02T22:43:15.917 に答える
0

申し訳ありませんが、この質問は、提示されたとおりに意味のある回答をすることはできません。確かに、GCD、OpenMPI、OpenCL、CUDA、および複数のコアで単一のプログラムを実行したり、異なる協力コンピューターで複数のプログラムを実行したりすることを可能にするその他の技術のようなさまざまな技術を説明する流行語のコレクションを放り投げることができます。 、または CPU と GPU に分散された単一のプログラムであり、それらの多くについてはすでにご存知のように思われるため、流行語をリストすることにあまり価値を追加しません。

しかし、解決しようとしている問題の完全な詳細を知らずにそのような用語を単純に放り出すことは、英語、フランス語、ドイツ語を少し知っていると言うようなものです。ターゲットオーディエンスについて何も知らずに1つの段落!同様に、任意の数の異なる処理要素にわたって、任意の数の方法で特定の計算を並列化できますが、その並列化が実際に成功するかどうかどうかは、アルゴリズムの性質、そのデータの依存関係、妥当な「ワーク チャンク」ごとに予想される計算量、十分な数値精度で GPU で実行できるかどうかなど、他の多くの要因に完全に依存します。 . 選択するテクノロジが複雑になればなるほど、これらの要因が重要になり、結果として得られるコードがシングル スレッドのシングル マシンよりも実際に遅くなる可能性が高くなります。IPC のオーバーヘッドとデータのコピーは、単純に何かを並列化し、その上に追加のオーバーヘッドを追加することで得られるすべての利益を台無しにする可能性があり、実際にそうすることが多く、最終的に損失が発生します。だからこそ、この種の仕事を有意義にうまくこなせるエンジニアの需要が非常に高いのです。:)

あなたの計算について何も知らずに、私は赤ちゃんのステップで移動します。まず、GCD のような単純なマルチプロセッサ フレームワーク (既に OS X に組み込まれており、追加の依存関係を使用する必要はありません) を試し、単一のマシンで利用可能なすべてのコアを効果的に使用できるようにコードを分解する方法を見つけます。 . どこにメリットがあるかを理解したら (そしてもしあるとしても - マルチスレッドが役に立たない場合、マルチマシン並列化もほぼ確実に役に立たないでしょう)、複数のマシンで複数の計算インスタンスをセットアップしてみてください。作業の分散を可能にする単純な IPC モデル。複数のスレッドのアルゴリズムを既に因数分解したので、

于 2012-10-04T00:37:47.930 に答える