US10129329B2

Apparatus and method for deadlock avoidance

Summary by NHIP

Deadlock avoidance in parallel processors

The method prevents deadlock in parallel-processor systems by reserving node buffer space before issuing remote memory access requests. Distinctive features include a deadlock-avoidance FIFO acting as a landing zone and schemes for controlled discard or persistent reservation.

Claim Score by NHIP

Read claim 15, the broadest

Abstract

An improved method for the prevention of deadlock in a massively parallel processor (MPP) system wherein, prior to a process sending messages to another process running on a remote processor, the process allocates space in a deadlock-avoidance FIFO. The allocated space provides a “landing zone” for requests that the software process (the application software) will subsequently issue using a remote-memory-access function. In some embodiments, the deadlock-avoidance (DLA) function provides two different deadlock-avoidance schemes: controlled discard and persistent reservation. In some embodiments, the software process determines which scheme will be used at the time the space is allocated.

US10129329B2, drawing sheet 1
Sheet 1 of 7

Term

8 yearsleft in the term

Expires 9 October 2034, including 576 days of term adjustment.

  1. Priority
  2. Filed
  3. Granted
  4. Today
  5. Expires

22 claims: 3 independent, 19 dependent

  1. 1
    A computer-implemented method for deadlock avoidance in a parallel-processor system, wherein the parallel-processor system includes a plurality of network nodes, wherein each one of the plurality of network nodes includes a node buffer, a processor and local memory, and a deadlock-avoidance (DLA) engine, wherein the plurality of network nodes includes a first network node having a first node buffer, a second network node having a second node buffer, and a third network node having a third node buffer, wherein each one of the plurality of network nodes is operatively coupled to a plurality of other network nodes over a network, and wherein at least one software process executes on the respective processor of each one of the plurality of network nodes, the method comprising:receiving, in the first network node, a first allocation command from a first application software process executing in the processor of the first network node to reserve a first space in the first node buffer for communication between the first application software process executing in the processor of the first network node and other application software processes executing in processors of other network nodes, reserving the first space for use by the first application software process, entering a first remote memory access (RMA) request from the first application software process into the first node buffer, performing a first RMA operation by sending the first RMA request over the network to the second network node, and communicating data between the second network node and the first network node based on the first RMA request, removing the first RMA request from the first node buffer, un-reserving the first space in the node buffer of the first network node;receiving, in the first network node, a second allocation command from a second application software process executing in the processor of the first network node, to reserve a second space in the first node buffer for communication between the second application software process executing in the processor of the first network node and other application software processes executing in processors of other network nodes, reserving the second space for use by the second application software process, entering a second RMA request from the second application software process into the first node buffer, performing a second RMA operation by sending the second RMA request over the network to the third network node, and communicating data between the third network node and the first network node based on the second RMA request, removing the second RMA request from the first node buffer, and un-reserving of the second space in the node buffer of the first network node.
  2. 8
    A non-transitory computer-readable medium having instructions stored thereon for causing a suitably programmed information processor to perform a deadlock-avoidance method in a parallel-processor system, wherein the parallel-processor system includes a plurality of network nodes, wherein each one of the plurality of network nodes includes a node buffer, a processor and local memory, wherein the plurality of network nodes includes a first network node having a first node buffer, a second network node having a second node buffer, and a third network node having a third node buffer, wherein each one of the plurality of network nodes is operatively coupled to a plurality of other network nodes over a network, and wherein at least one software process executes on each one of the plurality of network nodes, the deadlock-avoidance method comprising:receiving, in the first network node, a first allocation command from a first software process executing in the processor of the first network node to reserve a first space in the first node buffer for communication between the first software process executing in the processor of the first network node and other software processes executing in processors of other network nodes;reserving the first space for use by the first software process;entering a first remote memory access (RMA) request from the first software process into the first node buffer;performing a first RMA operation by sending the first RMA request over the network to the second network node, and communicating data between the second network node and the first network node based on the first RMA request;removing the first RMA request from the first node buffer;un-reserving the first space in the node buffer of the first network node;receiving, in the first network node, a second allocation command from a second software process executing in the processor of the first network node, to reserve a second space in the first node buffer for communication between the second software process executing in the processor of the first network node and other software processes executing in processors of other network nodes;reserving the second space for use by the second software process;entering a second RMA request from the second software process into the first node buffer;performing a second RMA operation by sending the second RMA request over the network to the third network node, and communicating data between the third network node and the first network node based on the second RMA request;removing the second RMA request from the first node buffer;and un-reserving the second space in the node buffer of the first network node.
  3. 15
    Broadest claimClaim Score 17, narrow(NHIP)A parallel-processor system comprising:a plurality of network nodes, wherein each one of the plurality of network nodes includes a node buffer, a processor and local memory, wherein the plurality of network nodes includes a first network node that has a first node buffer, a second network node that has a second node buffer, and a third network node that has a third node buffer, wherein each one of the plurality of network nodes is operatively coupled to a plurality of other network nodes, and wherein at least one software process executes on each one of the plurality of network nodes, a reservation unit in the first network node configured to receive a first allocation command from a first software process that executes in the processor of the first network node, to reserve a first space in the first node buffer for communication between the first software process and other software processes that execute in processors of other network nodes, and based on the first allocation command, to reserve the first space for use by the first software process;an RMA unit configured to enter a first remote memory access (RMA) request from the first software process into the first node buffer, to send the first RMA request over the network to the second network node, to communicate data between the second network node and the first network node based on the first RMA request, and to remove the first RMA request from the first node buffer;wherein the reservation unit is configured to later un-reserve the first space in the node buffer of the first network node;wherein the reservation unit is also configured to receive a second allocation command from a second software process that executes in the processor of the first network node, to reserve a second space in the first node buffer for communication between the second software process of the first network node and other software processes that execute in processors of other network nodes, and based on the second allocation command, to reserve the second space for use by the second software process;wherein the RMA unit is also configured to enter a second RMA request from the second software process into the first node buffer, to send the second RMA request over the network to the third network node, to communicate data between the third network node and the first network node based on the second RMA request, and to remove the second RMA request from the first node buffer;wherein the reservation unit is configured to later un-reserve the second space in the node buffer of the first network node.