×

Task switching and inter-task communications for coordination of applications executing on a multi-user parallel processing architecture

DC
  • US 10,437,644 B2
  • Filed: 04/30/2019
  • Issued: 10/08/2019
  • Est. Priority Date: 11/04/2011
  • Status: Active Grant
First Claim
Patent Images

1. A system for managing execution of a plurality of software applications on an array of processing units, the system comprising:

  • a core fabric comprisingthe array of processing units, anda plurality of input buffers, each input buffer being provided for buffering processing load input directed to a respective software application of the plurality of software applications and being dedicated to the respective software application, whereineach buffer of the plurality of input buffers is deployed in the core fabric apart from the array of processing units, andeach software application of the plurality of software applications is provided one or more input buffers of the plurality of input buffers; and

    a controller comprising hardware logic and/or software logic for performing operations for repeatedly reconfiguring task assignment to the array of processing units and communication path connectivity for the array of processing units, the operations comprising, for each iteration of a plurality of iterations,allocating, to each software application of at least a portion of the plurality of software applications as a plurality of active software applications, a number of units of the array of processing units at least in part in accordance with a plurality of demand expressions, each demand expression of the plurality of demand expressions corresponding to a different software application of the plurality of software applications, whereineach demand expression of the plurality of demand expressions is based at least in part on a measure of an amount of the processing load input at the one or more input buffers of the respective software application, wherein,allocating results in, for at least some of the plurality of software applications, a respective one or more allocated processing units of the array of processing units,obtaining, for each software application of the plurality of active software applications, identification of one or more tasks of the respective software application,assigning a respective task of the one or more tasks of each application of the plurality of active software applications to at least one respective processing unit of the respective one or more allocated processing units in accordance with the allocating, whereinfor at least a portion of the plurality of active software applications, the number of processing units allocated to the respective software application is less than a number of possible tasks of the respective software application available for assigning, andassigning comprises,for each software application of at least a portion of the plurality of active software applications, identifying at least one activating task of the one or more tasks of the respective software application not assigned to the array of processing units for execution for a current iteration of the plurality of iterations, andfor each activating task of each software application of the portion of the plurality of active software applications, identifying at least one available unit of the array of processing units, each available unit corresponding to a respective deactivating task of at least one software application of the plurality of software applications, each deactivating task not assigned to the array of processing units for execution for a next iteration of the plurality of iterations, andassigning the at least one activating task to the at least one available unit, andcausing connection, in accordance with the assigning, of the processing load input from each buffer of at least a portion of the plurality of input buffers to a different unit of the respective one or more allocated processing units to connect respective processing load input to a task of the one or more tasks of the respective software application that the respective processing load input is directed to;

    wherein, for consecutive iterations of the plurality of iterations and for at least one software application of the plurality of active software applications,a number of the one or more allocated processing units allocated to the respective software application varies with the measure of the processing load input at the one or more input buffers of the respective software application for the respective iteration, andthe assigning comprises assigning a varying number of tasks of concurrent instances of the respective software application corresponding to variations in the number of processing units allocated to the respective software application between the consecutive iterations.

View all claims
  • 1 Assignment
Timeline View
Assignment View
    ×
    ×