Search

US-12625725-B2 - Dynamic provisioning of portions of a data processing array for spatial and temporal sharing

US12625725B2US 12625725 B2US12625725 B2US 12625725B2US-12625725-B2

Abstract

Dynamic provisioning of portions of a data processing array includes receiving, from an executing application, a context request. The context request specifies a requested task to be performed by a data processing array. A configuration for the data processing array is selected from a plurality of configurations for the data processing array. The selected configuration conforms with the context request and is capable of performing the requested task. A determination is made whether the selected configuration is implementable in the data processing array based, at least in part, on a space requirement of the selected configuration and a current status of the data processing array. The selected configuration is selectively implemented in the data processing array based on the determination.

Inventors

  • Sonal Santan
  • Yu Liu
  • Akila Subramaniam
  • Vinod K. Kathail
  • King Chiu Tam
  • Tung Chuen Kwong
  • Pranjal Joshi
  • Soren T. Soe

Assignees

  • XILINX, INC.

Dates

Publication Date
20260512
Application Date
20221222

Claims (17)

  1. 1 . A method, comprising: receiving, from an executing application, a context request, wherein the context request specifies a requested task to be performed by a data processing array; selecting, from a plurality of configurations for the data processing array, a selected configuration that conforms with the context request and that is capable of performing the requested task; determining whether the selected configuration is implementable in the data processing array by, at least in part, determining whether the data processing array has sufficient unused space in which to run the selected configuration based on a space requirement of the selected configuration and a current status of the data processing array; and in response to determining that the data processing array does not have sufficient space to run the selected configuration, for an existing configuration running in the data processing array that performs a particular task, selecting a different configuration that performs the particular task and that requires less space in the data processing array than the existing configuration, running the different configuration in the data processing array, and running the selected configuration in a portion of the data processing array that includes a region that becomes available from running the different configuration.
  2. 2 . The method of claim 1 , further comprising: tracking the current status of the data processing array, wherein the current status indicates each configuration running in the data processing array and a partition of the data processing array in which each configuration is running.
  3. 3 . The method of claim 1 , wherein: the context request specifies a Quality of Service (QoS) requirement for the requested task; and the selecting selects a configuration capable of performing the requested task that meets the QoS requirement of the context request.
  4. 4 . The method of claim 1 , further comprising: determining whether to implement the selected configuration using temporal sharing or location sharing.
  5. 5 . The method of claim 1 , further comprising: in response to determining that the data processing array does not have sufficient space to run a further selected configuration, terminating operation of a different existing configuration running in a selected partition of the data processing array, and running the further selected configuration in the selected partition of the data processing array.
  6. 6 . The method of claim 5 , wherein the further selected configuration has a higher priority than the existing configuration.
  7. 7 . The method of claim 5 , wherein the different existing configuration is moved to a different partition of the data processing array and run in the different partition.
  8. 8 . The method of claim 1 , further comprising: for a partition implementing a configuration that processes independent workloads, performing a first workload, clearing data memories of the partition, and performing a second and different workload.
  9. 9 . A system, comprising: one or more hardware processors configured to initiate operations including: receiving, from an executing application, a context request, wherein the context request specifies a requested task to be performed by a data processing array; selecting, from a plurality of configurations for the data processing array, a selected configuration that conforms with the context request and that is capable of performing the requested task; determining whether the selected configuration is implementable in the data processing array by, at least in part, determining whether the data processing array has sufficient unused space in which to run the selected configuration based on a space requirement of the selected configuration and a current status of the data processing array; and in response to determining that the data processing array does not have sufficient space to run the selected configuration, for an existing configuration running in the data processing array that performs a particular task, selecting a different configuration that performs the particular task and that requires less space in the data processing array than the existing configuration, running the different configuration in the data processing array, and running the selected configuration in a portion of the data processing array that includes a region that becomes available from running the different configuration.
  10. 10 . The system of claim 9 , wherein the one or more hardware processors are configured to initiate operations further comprising: tracking the current status of the data processing array, wherein the current status indicates each configuration running in the data processing array and a partition of the data processing array in which each configuration is running.
  11. 11 . The system of claim 9 , wherein: the context request specifies a Quality of Service (QoS) requirement for the requested task; and the selecting selects a configuration capable of performing the requested task that meets the QoS requirement of the context request.
  12. 12 . The system of claim 9 , wherein the one or more hardware processors are configured to initiate operations further comprising: determining whether to implement the selected configuration using temporal sharing or location sharing.
  13. 13 . The system of claim 9 , wherein the one or more hardware processors are configured to initiate operations further comprising: in response to determining that the data processing array does not have sufficient space to run a further selected configuration, terminating operation of a different existing configuration running in a selected partition of the data processing array, and running the further selected configuration in the selected partition of the data processing array.
  14. 14 . The system of claim 13 , wherein the further selected configuration has a higher priority than the existing configuration.
  15. 15 . The system of claim 13 , wherein the different existing configuration is moved to a different partition of the data processing array and run in the different partition.
  16. 16 . The system of claim 9 , wherein the one or more hardware processors are configured to initiate operations further comprising: for a partition implementing a configuration that processes independent workloads, performing a first workload, clearing data memories of the partition, and performing a second and different workload.
  17. 17 . A computer program product comprising one or more computer readable storage mediums having program instructions embodied therewith, the program instructions executable by computer hardware to cause the computer hardware to initiate executable operations comprising: receiving, from an executing application, a context request, wherein the context request specifies a requested task to be performed by a data processing array; selecting, from a plurality of configurations for the data processing array, a selected configuration that conforms with the context request and that is capable of performing the requested task; determining whether the selected configuration is implementable in the data processing array by, at least in part, determining whether the data processing array has sufficient unused space in which to run the selected configuration based on a space requirement of the selected configuration and a current status of the data processing array; and in response to determining that the data processing array does not have sufficient space to run the selected configuration, for an existing configuration running in the data processing array that performs a particular task, selecting a different configuration that performs the particular task and that requires less space in the data processing array than the existing configuration, running the different configuration in the data processing array, and running the selected configuration in a portion of the data processing array that includes a region that becomes available from running the different configuration.

Description

TECHNICAL FIELD This disclosure relates to dynamically sharing portions of a data processing array and, more particularly, to spatially and/or temporally sharing portions of the data processing array. BACKGROUND Integrated circuits (ICs) have evolved over time to provide increasingly sophisticated computing architectures. While some ICs utilize computing architectures that include a single processor, others include multiple processors. Still, other ICs include multiple processors arranged in an array. Such ICs are capable of providing significant computational power and a high degree of parallelism that extends well beyond the capabilities of single-processor architectures and even multi-core processor architectures. While a data processing array is capable of providing significant computational power, effectively managing the data processing array to realize this potential is a complex endeavor. This is particularly true in cases where the data processing array is used to hardware accelerate particular tasks offloaded from a host processor to perform workloads. Reliable mechanisms for managing the offloaded tasks are needed to ensure that the data processing array operates at a high level of computational efficiency. SUMMARY In one or more example implementations, a method includes receiving, from an executing application, a context request. The context request specifies a requested task to be performed by a data processing array. The method includes selecting, from a plurality of configurations for the data processing array, a configuration that conforms with the context request and that is capable of performing the requested task. The method includes determining whether the selected configuration is implementable in the data processing array based, at least in part, on a space requirement of the selected configuration and a current status of the data processing array. The method includes selectively implementing the selected configuration in the data processing array based on the determining. The foregoing and other implementations can each optionally include one or more of the following features, alone or in combination. Some example implementations include all the following features in combination. In some aspects, the method includes tracking the current status of the data processing array. The current status indicates each configuration running in the data processing array and a partition of the data processing array in which each configuration is running. In some aspects, the context request specifies a Quality of Service (QoS) requirement for the requested task. The selecting selects a configuration capable of performing the requested task that meets the QoS requirement of the context request. In some aspects, the method includes, in response to determining that the selected configuration is implementable in the data processing array, determining whether to implement the selected configuration using temporal sharing or location sharing. In some aspects, determining whether the selected configuration is implementable in the data processing array includes determining whether the data processing array has sufficient unused space in which to run the selected configuration. In some aspects, the method includes, in response to determining that the data processing array does not have sufficient space to run the selected configuration, terminating operation of an existing configuration running in a selected partition of the data processing array, and running the selected configuration in the selected partition of the data processing array. In some aspects, the selected configuration has a higher priority than the existing configuration. In some aspects, the existing configuration is moved to a different partition of the data processing array and run in the different partition. In some aspects, in response to determining that the data processing array does not have sufficient space to run the selected configuration, the method includes, for an existing configuration running in the data processing array that performs a particular task, selecting a different configuration that performs the particular task and that requires less space in the data processing array than the existing configuration. The method includes running the different configuration in the data processing array. The method includes running the selected configuration in a portion of the data processing array that becomes available from running the different configuration. In some aspects, the method includes, for a partition implementing a configuration that processes independent workloads, performing a first workload, clearing data memories of the partition, and performing a second and different workload. In one or more example implementations, a system includes one or more hardware processors configured and/or programmed to initiate operations as described within this disclosure. In one or more example implementations, a computer program pro