Question

How (GA) Global array library (an implementation of ARMCI) is used for communication between two process located on different remote machines.

Is that something similar to TCP socket programming where one process wait for data and the other transfers it ?

I try to see the documentation that ga_put() and ga_get() are two operation that used for inter-process communication. till now I only able to come up with a program running on the same machine that use shared-Memory architecture (I have used ga_put() and ga_get() to put data in Global array and to get it respectively ).

Now, I want use this program for communicating data (basically performaning one-sided communication) between two remote processes. Obiviously putting the program that I am running on single machine on the remote side will work out. It needs some way to tell which machine should we access and get the right data. And here is where I need your help. how can I do this? (what is its equivalent of TCP/IP listen, accept and connect ... on GA ? )

Or is that the case that GA also uses TCP/IP socket underneath ?

can some one please explain to me? and sample code of two remote processes communicating is also appreciable.

thanks,

Was it helpful?

Solution

I am answering my question after all. May be it will help some one looking for the same issue.

GA Library is implemented to work with MPI. So we have something like:

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

The answer to my question is: MPI has the following primitives to be able to support client-server commuication:

    //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() 

depending on the hardware support and the MPI implementation used, MPI might use sockets, or other mechanisms (e.g SAN (System area network)).

In general, most MPI implementations use sockets for TCP based communication.

So, yes GA also uses sockets underneath (of course depending on the MPI implementation used)

cheers,

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top