使用GA库的进程间通信

时间:2012-08-13 14:27:07

标签: tcp-ip rdma

如何(GA)全局数组库(ARMCI的实现)用于位于不同远程机器上的两个进程之间的通信。

这类似于TCP套接字编程,其中一个进程等待数据而另一个进程传输它?

我尝试查看 ga_put() ga_get()这两个用于进程间通信的操作的文档。到目前为止我只能在同一台机器上运行使用共享内存架构的程序(我使用 ga_put() ga_get()来放置数据在全局数组中并分别得到它)。

现在,我想使用这个程序在两个远程进程之间进行数据通信(基本上是执行单向通信)。显而易见地将我在远程端的单台机器上运行的程序运行起来。它需要一些方法来告诉我们应该访问哪台机器并获取正确的数据。这是我需要你帮助的地方。我怎样才能做到这一点? (它相当于TCP / IP侦听,接受和连接......在GA上?)

或者GA是否也使用下面的TCP / IP套接字?

有人可以向我解释一下吗?和两个远程进程通信的示例代码也很明显。

感谢,

1 个答案:

答案 0 :(得分:0)

毕竟我正在回答我的问题。可能会帮助某人寻找同样的问题。

实施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实现)

欢呼声,