Message Passing with Queues and Channels
First Claim
1. A method comprising:
- receiving, by a send thread, an identifier that identifies a destination node and a data pointer;
creating, by a send thread, a first send request in response to the receiving;
selecting, by the send thread, a selected channel from among a plurality of channels, wherein the selected channel comprises a selected hand-off queue and a selected identification of a selected message unit, wherein the each of the plurality of channels comprise a respective hand-off queue and a respective identification of a respective message unit;
if the selected hand-off queue contains an available entry, adding, by the send thread, the first send request to the selected hand-off queue; and
if the selected hand-off queue does not contain an available entry, removing, by the send thread, a second send request from the selected hand-off queue and sending the second send request to the selected message unit identified by the selected identification in the selected channel, wherein the selected message unit sends the data pointed to by the data pointer to the destination node.
1 Assignment
0 Petitions
Accused Products
Abstract
In an embodiment, a send thread receives an identifier that identifies a destination node and a pointer to data. The send thread creates a first send request in response to the receipt of the identifier and the data pointer. The send thread selects a selected channel from among a plurality of channels. The selected channel comprises a selected hand-off queue and an identification of a selected message unit. Each of the channels identifies a different message unit. The selected hand-off queue is randomly accessible. If the selected hand-off queue contains an available entry, the send thread adds the first send request to the selected hand-off queue. If the selected hand-off queue does not contain an available entry, the send thread removes a second send request from the selected hand-off queue and sends the second send request to the selected message unit.
17 Citations
24 Claims
-
1. A method comprising:
-
receiving, by a send thread, an identifier that identifies a destination node and a data pointer; creating, by a send thread, a first send request in response to the receiving; selecting, by the send thread, a selected channel from among a plurality of channels, wherein the selected channel comprises a selected hand-off queue and a selected identification of a selected message unit, wherein the each of the plurality of channels comprise a respective hand-off queue and a respective identification of a respective message unit; if the selected hand-off queue contains an available entry, adding, by the send thread, the first send request to the selected hand-off queue; and if the selected hand-off queue does not contain an available entry, removing, by the send thread, a second send request from the selected hand-off queue and sending the second send request to the selected message unit identified by the selected identification in the selected channel, wherein the selected message unit sends the data pointed to by the data pointer to the destination node. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computer-readable storage medium encoded with instructions, wherein the instructions when executed comprise:
-
receiving, by a send thread, an identifier that identifies a destination node and a data pointer; creating, by a send thread, a first send request in response to the receiving; selecting, by the send thread, a selected channel from among a plurality of channels, wherein the selected channel comprises a selected hand-off queue and a selected identification of a selected message unit, wherein the each of the plurality of channels comprise a respective hand-off queue and a respective identification of a respective message unit, wherein the selecting further comprises selecting the selected channel via a hash function on the identifier of the destination node and an identifier of a set of nodes to which a source node and the destination node belong, wherein the selected hand-off queue is randomly accessible; if the selected hand-off queue contains an available entry, adding, by the send thread, the first send request to the selected hand-off queue; and if the selected hand-off queue does not contain an available entry, removing, by the send thread, a second send request from the selected hand-off queue and sending the second send request to the selected message unit identified by the selected identification in the selected channel, wherein the selected message unit sends the data pointed to by the data pointer to the destination node asynchronously from execution of the send thread. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A node comprising:
-
a processor; a plurality of message units communicatively connected to the processor; and memory communicatively connected to the processor and the message unit, wherein the memory is encoded with instructions, and wherein the instructions when executed on the processor comprise; receiving, by a send thread, an identifier that identifies a destination node and a data pointer, creating, by a send thread, a first send request in response to the receiving, selecting, by the send thread, a selected channel from among a plurality of channels, wherein the selected channel comprises a selected hand-off queue and a selected identification of a selected message unit, wherein the each of the plurality of channels comprise a respective hand-off queue and a respective identification of a respective different one of the plurality of message units, wherein the selecting further comprises selecting the selected channel via a hash function on the identifier of the destination node and an identifier of a set of nodes to which the node and the destination node belong, wherein the selected hand-off queue is randomly accessible, if the selected hand-off queue contains an available entry, adding, by the send thread, the first send request to the selected hand-off queue, and if the selected hand-off queue does not contain an available entry, removing, by the send thread, a second send request from the selected hand-off queue and sending the second send request to the selected message unit identified by the selected identification in the selected channel, wherein the selected message unit sends the data pointed to by the data pointer to the destination node asynchronously from execution of the send thread. - View Dependent Claims (19, 20, 21, 22, 23, 24)
-
Specification