1

(GA)グローバルアレイライブラリ(ARMCIの実装)を使用して、異なるリモートマシンにある2つのプロセス間の通信を行う方法。

これは、一方のプロセスがデータを待機し、もう一方のプロセスがデータを転送するTCPソケットプログラミングに似ていますか?

ga_put()ga_get()がプロセス間通信に使用される2つの操作であるというドキュメントを確認しようとしています。これまでは、共有メモリアーキテクチャを使用する同じマシンで実行されるプログラムしか考えられませんでした(ga_put()ga_get()を使用して、データをグローバル配列に配置し、それぞれ取得しました)。

ここで、このプログラムを使用して、2つのリモートプロセス間でデータを通信する(基本的に片側通信を実行する)ようにします。明らかに、私が実行しているプログラムをリモート側の単一のマシンに配置するとうまくいきます。どのマシンにアクセスして適切なデータを取得する必要があるかを判断する方法が必要です。そして、ここで私はあなたの助けが必要です。これどうやってするの?(GAでのTCP / IPのリッスン、受け入れ、接続に相当するものは何ですか?)

それとも、GAがその下でTCP / IPソケットも使用している場合ですか?

誰かが私に説明してもらえますか?また、通信する2つのリモートプロセスのサンプルコードも評価できます。

ありがとう、

4

1 に答える 1

1

結局、私は私の質問に答えています。同じ問題を探している人の助けになるかもしれません。

GA ライブラリは、MPI と連携するように実装されています。したがって、次のようなものがあります。

   MPI_Init(..)     
   GA_Initialize()
   MA_Init(..)
     //  ....  do sothing here 
   GA_Terminate()   
   MPI_Finalize()

私の質問に対する答えは次のとおりです。MPIには、クライアントサーバー通信をサポートできるようにするための次のプリミティブがあります。

    //in the server side
    MPI_Open_port()
    MPI_Comm_accept()
    //do  MPI_Send() or MPI_Recv()
    MPI_Close_port()

    //client Side
    MPI_Comm_connect()
    //do  MPI_Recv() or MPI_Send() 

ハードウェア サポートと使用する MPI 実装に応じて、MPI はソケットまたは他のメカニズム (例: SAN (システム エリア ネットワーク)) を使用する場合があります。

一般に、ほとんどの MPI 実装は、TCP ベースの通信にソケットを使用します。

したがって、はい、GAもその下にあるソケットを使用します(もちろん、使用されるMPI実装によって異なります)

乾杯、

于 2012-08-21T16:07:54.767 に答える