2012-03-15 1 views
0

まあ私の問題は次のとおりです。私はいくつかの仮想マシン上で実行されるコードを持っており、各仮想マシンにはN個のインターフェース(それぞれに1つのスレッド)があります。問題自体はあるインタフェースでメッセージを受信し、別のインタフェースを介して可能なかぎり速やかにリダイレクトします。複数のマシンでC++のマルチスレッド

私がやっているのは、あるインターフェイス(ユニキャスト)でメッセージを受け取ったときに、リダイレクトしたいインターフェイスを計算し、メッセージに関するすべての情報を保存します(データグラム、必要なすべての追加情報)私が作った機能で。次に、次の反復で、プログラムはリダイレクトする新しいメッセージがあるかどうか、そしてそれが正しいインターフェースであるかどうかをチェックします。そうです...しかし、これはプログラムが情報を非常にゆっくりと交換するようにします...

物事をスピードアップするメカニズムはありますか?

+3

「近接結合」クラスタで作業している場合を除き、ここでマルチスレッドとは、「マルチプロセッシング」またはおそらく「プロセス間IO」を意味します。 – dmckee

+0

これは非常に漠然としていて開放的です。現在行っていること、取得したパフォーマンスの数字、測定方法などを示すサンプルコードを投稿できますか? – Useless

+0

@dmckeeかもしれない...私はこれに新しいです、そして、それは私がブリーフィングされたものです... –

答えて

3

誰かがすでにこの特定の車輪を発明した - それは、MPI

と呼ばれていますが、キューイングを使用していないのはなぜopenMPIまたはMPICH

+0

返信ありがとうございます!私はそれをチェックし、私はそれですべての要件を満たすことができるかどうかを確認します!再度ありがとう –

1

のいずれかを見てみましょうか?メッセージが入ったら、それらをキューに入れ、各処理モジュールに通知してキューから取り出します。たとえば :

  • MSGは
  • モジュール1に来てキューに入れます
  • モジュール2,3は、キューから
  • モジュール2つのピックそれをを通知し、それをデータベースに保存されます
  • 並行して、モジュール3はそれをキューから取り出して処理します。

キーは「並列」です。これらのモジュールは異なるスレッドであるため、モジュール2はdbに保存されていますが、モジュール3はメッセージをマッサージできます。

JMSまたはMQを使用するか、独自のキューを作成できます。

+0

情報ありがとう!私はMPIで動かすつもりです。すべてを管理できなければ、私はキューイングのメカニズムを採用しようとします –

1

複数の「マシン」(たとえ仮想の場合でも)全体で並列コンピューティングを実行しようとしているようです。この種のシナリオに役立ついくつかの機能を備えているので、MPI - Message Passing Interfaceなどの既存のプロトコルを参照することができます。

+0

情報をありがとう!!!私はMPIですべてを管理できるかどうかがわかります!!! –

関連する問題