A method of sharing data among a plurality of nodes, comprising: providing each node of the plurality of nodes with a send partner ID that designates a sender node from among the other nodes of the plurality of nodes from which it receives an acknowledgement of receiving shared data and a receive partner ID that designates a different node from among the other nodes of the plurality of nodes as a received node to which it sends a first acknowledgement of receiving shared data; sending shared data from a source node of the plurality of nodes to the other nodes of the plurality of nodes; and at each of the nodes receiving the shared data, sending the first acknowledgment of receiving the shared data to the respective designated receiver node using the receive partner I D; and, waiting for a second acknowledgment of receiving the shared data from the respective designated sender node having the send partner ID, without regard to which node of the plurality of nodes is the source node, wherein the shared data is not considered to have been received by the node receiving the shared data until the second acknowledgement having the designated send partner ID is received by the node receiving the shared data and each step of sending shared data or sending the acknowledgement is performed in a time period of the order of a time step. providing each node of the plurality of nodes with a send partner ID that designates a sender node from among the other nodes of the plurality of nodes from which it receives an acknowledgement of receiving shared data and a receive partner ID that designates a different node from among the other nodes of the plurality of nodes as a received node to which it sends a first acknowledgement of receiving shared data; sending shared data from a source node of the plurality of nodes to the other nodes of the plurality of nodes; and at each of the nodes receiving the shared data, sending the first acknowledgment of receiving the shared data to the respective designated receiver node using the receive partner I D; and, waiting for a second acknowledgment of receiving the shared data from the respective designated sender node having the send partner ID, without regard to which node of the plurality of nodes is the source node, wherein the shared data is not considered to have been received by the node receiving the shared data until the second acknowledgement having the designated send partner ID is received by the node receiving the shared data and each step of sending shared data or sending the acknowledgement is performed in a time period of the order of a time step. sending the first acknowledgment of receiving the shared data to the respective designated receiver node using the receive partner I D; and, waiting for a second acknowledgment of receiving the shared data from the respective designated sender node having the send partner ID, without regard to which node of the plurality of nodes is the source node, wherein the shared data is not considered to have been received by the node receiving the shared data until the second acknowledgement having the designated send partner ID is received by the node receiving the shared data and each step of sending shared data or sending the acknowledgement is performed in a time period of the order of a time step.