Description

Description

A Bipartite graph object is created with a fixed number of e h nodes per processor. Nodes in each partition may be referenced by a global address consisting of the processor number and local node number. Each node contains a user-defined data field, and edges carry a user-defined weight tag as well as a pointer to the value of the source node. Building the Bipartite graph proceeds in two phases. The user first adds the desired to-edges for local nodes on each processor. The distributed graph is then connected; this global operation adds the corresponding from-edges and allocates buffer space on each processor for the data values from remote nodes.

A typical computation on a Bipartite graph alternates between phases updating the e and then the h node values. The user locally computes new data values for a node class based on the weight and value of connected nodes given by the from-edges. These new values must then be globally propagated by validating the node class. Once the validation completes, the next computation phase may proceed.

Bipartite_all_create, Bipartite_all_destroy, Bipartite_all_connect, Bipartite_all_eValidate and Bipartite_all_hValidate are split-phase operations which must be called by one thread per processor on all processors. A split-phase operation returns OK if it has completed upon return and WAIT otherwise. The remaining primitives are not split-phase, and they return OK if they succeed, or FAIL if exceptions occur.

Biparatite_all_create

Effect

Create a Bipartite object with id id and having numENodes and numHNodes numbers of e and h nodes, respectively. Store the return value into flagPtr and increment counter ctr when the operation completes.

Bipartite_toLocal

Effect

Return a pointer to the local portion of Bipartite object id. This graph pointer may then be used in the node iteration macros Bipartite_for_eNodes and Bipartite_for_hNodes.

Requires

Bipartite_all_create must be called on all nodes to allocate the graph object.

Bipartite_all_destroy

Effect

Destroy the Bipartite object id by freeing all storage allocated for the node and edge lists. Increment the counter ctr upon completion.

Requires

Bipartite_all_create must be called on all nodes to allocate the graph object.

Bipartite_addEtoH

Effect

Insert edge from e node to h node in Bipartite object id. The local source node has number fromNode, the destination node has address (toProc, toNode), and the edge is tagged with the user-defined weight.

Requires

Bipartite_all_create must be called on all nodes to allocate the graph object and its node lists.

Bipartite_addHtoE

Effect

Insert edge from h node to e node in Bipartite object id. The local source node has number fromNode, the destination node has address (toProc, toNode), and the edge is tagged with the user-defined weight.

Requires

Bipartite_all_create must be called on all nodes to allocate the graph object and its node lists.

Bipartite_all_connect

Effect

Connect the Bipartite object id and increment the counter ctr when the operation completes. The to-edges for e and h nodes are turned into the corresponding from-edges. For edges from remote nodes, buffer space is allocated to hold node data values.

Requires

Bipartite_all_create must be called on all nodes to create the graph object.

Bipartite_all_eValidate

Effect

Validate the e nodes of the Bipartite object id and increment counter ctr upon completion.

Requires

Bipartite_all_connect must be called on all nodes to create from-edges and allocate buffer space for validation of remote node values.

Bipartite_all_hValidate

Effect

Validate the h nodes of the Bipartite object id and increment counter ctr upon completion.

Requires

Bipartite_all_connect must be called on all nodes to create from-edges and allocate buffer space for validation of remote node values.

Bipartite_for_eNodes

Effect

Iterate over the e nodes of the graph referenced by graphPtr, setting nodePtr to point to each successive node and setting nodeCnt to each node's index.

Requires

Bipartite_all_hValidate must be called on all nodes to update node values along remote from-edges .

Bipartite_for_hNodes

Effect

Iterate over the h nodes of the graph referenced by graphPtr, setting nodePtr to point to each successive node and setting nodeCnt to each node's index.

Requires

Bipartite_all_eValidate must be called on all nodes to update node values along remote from-edges .

Bipartite_for_edges

Effect

Iterate over the from-edges of the node referenced by nodePtr, setting edgePtr to point to each successive edge and setting edgeCnt to each edge's index.



Chih-Po Wen
Wed Sep 13 23:57:28 PDT 1995