如何(GA)全局数组库(ARMCI的实现)用于位于不同远程机器上的两个进程之间的通信。
这类似于TCP套接字编程,其中一个进程等待数据而另一个进程传输它?
我尝试查看 ga_put()和 ga_get()这两个用于进程间通信的操作的文档。到目前为止我只能在同一台机器上运行使用共享内存架构的程序(我使用 ga_put()和 ga_get()来放置数据在全局数组中并分别得到它)。
现在,我想使用这个程序在两个远程进程之间进行数据通信(基本上是执行单向通信)。显而易见地将我在远程端的单台机器上运行的程序运行起来。它需要一些方法来告诉我们应该访问哪台机器并获取正确的数据。这是我需要你帮助的地方。我怎样才能做到这一点? (它相当于TCP / IP侦听,接受和连接......在GA上?)
或者GA是否也使用下面的TCP / IP套接字?
有人可以向我解释一下吗?和两个远程进程通信的示例代码也很明显。感谢,
答案 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实现)
欢呼声,