1

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

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

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

现在,我想使用这个程序在两个远程进程之间进行数据通信(基本上是单向通信)。显然,将我在单台机器上运行的程序放在远程端会奏效。它需要某种方式来告诉我们应该访问哪台机器并获取正确的数据。这里是我需要你帮助的地方。我怎样才能做到这一点?(它在 GA 上的 TCP/IP 监听、接受和连接等价物是什么?)

还是 GA 在下面也使用 TCP/IP 套接字的情况?

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

谢谢,

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 回答