Execution job computation unit synthesis in a computation cluster
By dynamically combining the computing resources of the data center to form calculation units, the resource waste problem caused by the large granularity of computing resource allocation in the data center is solved, and more efficient resource utilization and cost reduction effects are achieved.
Patent Information
- Application Number
- JP2023559965
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2020-12-11
- Filing Date
- 2021-11-11
- Publication Date
- 2025-04-01
- Estimated Expiration
- 2041-11-11
AI Technical Summary
Large data centers face density limitations when deploying blade servers or similar computing elements. Each server has a large granularity in computing resource allocation, resulting in waste of resources and increased environmental control costs.
By dynamically combining computing resources, computing units are formed. These computing units are composed of components such as CPU, GPU, storage, etc., and coordinated through communication fibers to dynamically adjust resource configuration according to task requirements.
It realizes more efficient resource utilization, reduces unnecessary waste of computing resources, reduces the cost of environmental control and energy consumption, and improves the overall efficiency of the data center.
Smart Images

Figure 0007654209000001 
Figure 0007654209000002 
Figure 0007654209000003
Abstract
Description
[Background technology]
[0001] Clustered computing systems have become popular as the demand for data storage, data processing, and packet communication processing increases. Data centers typically include large rack-mounted and network-coupled data storage and data processing systems. These data centers can receive data for storage from external users over network links and data generated from applications running on processing elements within the data center. Often, data centers and associated computing equipment can be used to run jobs for multiple concurrent users or applications. Jobs include running jobs that can utilize the resources of the data center to process data using a central processing unit (CPU) or a graphics processing unit (GPU), as well as to move data associated with these resources between temporary and long-term storage. GPU-based processing has become popular for use in artificial intelligence (AI) and machine learning regimes. In these regimes, a computing system such as a blade server can include one or more GPUs along with associated CPUs for processing large data sets.
[0002] However, even large data centers with rack-mounted equipment encounter density limitations when deploying blade servers or similar types of computing elements. Specifically, each server typically includes a fixed arrangement between CPUs, GPUs, and storage elements housed in a common enclosure or chassis. When an incoming job is deployed within a data center, the granularity of the computing resources is limited to individual servers. Thus, a deployed job typically occupies one or more servers, along with all of each server's corresponding CPUs, GPUs, and storage elements, regardless of whether the entire resources of the server are actually required to execute the job. To compensate, data center operators typically deploy successively increasing numbers of servers to accommodate the increasing traffic from the jobs. This strategy can face obstacles in the physical space required for the rack-mounted servers, as well as the large space and cost requirements for the environmental climate control systems. Summary of the Invention
[0003] Presented herein is a deployment of an arrangement of physical computing components coupled via a communication fabric. In one example, a method includes receiving an execution job instructing a computing cluster including a pool of computing components coupled to at least one communication fabric. Based on properties of the execution job, the method includes determining a resource scheduling for processing the execution job, the resource scheduling indicating a time allocation of resources of the computing cluster, and initiating the execution job on the computing cluster according to the resource scheduling by at least instructing the communication fabric to compose a computing unit including a set of computing components selected from the pool of computing components to process the execution job. In response to completion of the execution job, the computing units are decomposed and returned to the pool of computing components.
[0004] In another example, an apparatus includes one or more computer-readable storage media and a processing system operatively coupled to the one or more computer-readable storage media. Program instructions are stored in the one or more computer-readable storage media that, based on being read and executed by the processing system, instruct the processing system to at least receive an execution job directed to a computing cluster including a pool of computing components coupled to at least one communication fabric. Based on properties of the execution job, the program instructions instruct the processing system to determine a resource scheduling for processing the execution job, the resource scheduling indicating a temporal allocation of resources of the computing cluster. The program instructions instruct the processing system to initiate the execution job on the computing cluster according to the resource scheduling by at least instructing the communication fabric to composite a computing unit including a set of computing components selected from among the pool of computing components to process the execution job, and in response to completion of the execution job, the computing unit is decomposed and returned to the pool of computing components.
[0005] In yet another example, a system includes a job interface configured to receive an execution job for processing by a computing system, and a management processor. The management processor is configured to form a free pool of computing components coupled to at least one communication fabric. Based on properties of the execution job, the management processor is configured to determine a resource scheduling for processing the execution job, the resource scheduling indicating a temporal allocation of resources from the free pool of computing components. The management processor is configured to initiate the execution job according to the resource scheduling by at least composing a computing unit including a set of computing components selected from among the pool of computing components to process the execution job. According to the resource scheduling, the management processor is configured to deploy software components to the computing units as each of the computing units is formed to execute the execution job, and to decompose the computing units by removing corresponding logical isolation of the computing units in response to completion of the execution job, such that the computing components of the computing units are available for composition into additional computing units.
[0006] This Summary is provided to introduce a selection of concepts in a simplified form that are further described below in the technical disclosure. It should be understood that this Summary is not intended to identify key features or essential features of the claimed subject matter, nor should it be used to limit the scope of the claimed subject matter.
[0007] Many aspects of the present disclosure can be better understood with reference to the following drawings. The components in the drawings are not necessarily to scale, emphasis instead being placed on clearly illustrating the principles of the present disclosure. Moreover, in the drawings, like reference numbers indicate corresponding parts throughout the several views. Although several embodiments have been described in connection with these drawings, the present disclosure is not limited to the embodiments disclosed herein. On the contrary, the intention is to cover all alternatives, modifications, and equivalents. [Brief description of the drawings]
[0008] [Figure 1] FIG. 1 illustrates a computing system in one implementation.
[0009] [Diagram 2] 1 is a flow diagram illustrating an example operation of a computing system in one implementation.
[0010] [Diagram 3] FIG. 1 illustrates management of a computing system in one implementation.
[0011] [Figure 4] FIG. 1 illustrates a computing system in one implementation.
[0012] [Diagram 5] FIG. 2 illustrates management elements of a computing system in one implementation.
[0013] [Figure 6] FIG. 2 illustrates a management processor in one implementation. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0014] Data centers with associated computing equipment can be used to execute jobs for multiple concurrent users or applications. The jobs include running jobs that utilize the resources of the data center to process data and to move data associated with these resources between temporary and long-term storage. Data center processing resources can include Central Processing Units (CPUs) along with various types of Co-Processing Units (CoPUs) such as Graphics Processing Units (GPUs), Tensor Processing Units (TPUs), Field-Programmable Gate Arrays (FPGAs), or Application-Specific Integrated Circuits (ASICs). Co-Processing Units (Co-Processing Units) types of processing are becoming more popular for use in Artificial Intelligence (AI) and machine learning systems. In the example herein, the limitations of blade server-based data systems can be overcome using a decomposed computing system that can dynamically synthesize groups of computations on the fly according to the needs of each incoming running job. These groupings, referred to herein as compute units or bare metal machines, can include resources tailored to meet the needs of and tailored to various running jobs. Instead of having a fixed arrangement between CPUs, CoPUs, and storage elements housed in a common enclosure or chassis, examples herein can flexibly include any number of CPUs, CoPUs, and storage elements that are dynamically formed into logical arrangements across any number of enclosures / chassis and over a communications fabric. Computing units can be further grouped into sets or clusters of many computing units / machines to achieve greater parallelism and throughput.Thus, data systems can better utilize resources by not having idle or wasted portions of blade servers that are not needed for a particular job or part of a job. Data center operators can achieve much higher utilization levels of the data center than could be achieved using fixed placement servers.
[0015] Presented herein is the deployment of an arrangement of physical computing components coupled via a communication fabric. An execution job is received that instructs a computing cluster. The cluster includes at least one "machine" or computing unit, which includes at least one processor element (e.g., CPU). The computing unit may also include a CoPU (such as a GPU), a network interface element (e.g., NIC), or a data storage element (e.g., SSD), although these elements are not required for the computing unit. The computing unit or cluster is formed from a pool of computing components coupled via one or more communication fabrics. Based on the properties of the execution job, the control system can determine the resources required for the job, as well as resource scheduling for processing the execution job. When a job is scheduled to be executed, the control system facilitates the composition of a computing unit to process the execution job. The computing units are composed from among the computing components that form the pool of computing components. Logical partitioning is established within the communication fabric to form the computing units and to isolate each computing unit from each other. In response to completion of the execution job, the computing units are decomposed and returned to the pool of computing components.
[0016] This specification describes various individual physical computing components coupled via one or more shared communication fabrics. Various communication fabric types may be used herein. For example, a Peripheral Component Interconnect Express (PCIe) fabric may be used, which may include various versions such as 3.0, 4.0, or 5.0, among others. In place of a PCIe fabric, other point-to-point communication fabrics or buses with associated physical layers, electrical signaling, protocols, and layered communication stacks may be used. These can include, among others, Gen-Z, Ethernet, InfiniBand, NVMe, Internet Protocol (IP), Serial Attached SCSI (SAS), Fibre Channel, Thunderbolt, Serial Attached ATA Express (SATA Express), NVLink, Cache Coherent Interconnect for Accelerators (CCIX), Compute Express Link (CXL), Open Coherent Accelerator Processor Interface (OpenCAPI), Wireless Ethernet or Wi-Fi (802.11x), or cellular radio technologies. Ethernet can refer to any of the various network communications protocol standards and bandwidths available, such as 10 BASE-T, 100 BASE-TX, 1000 BASE-T, 10 GBASE-T (10 GB Ethernet), 40 GBASE-T (40 GB Ethernet), Gigabit (Ethernet), Terabit (TbE), 200GBbE, 400GbE, 800GbE, or various other wired and wireless Ethernet formats and speeds.Cellular wireless technologies may include, among others, various wireless protocols and networks built around 3rd Generation Partnership Project (3GPP) standards, including 4G Long-Term Evolution (LTE), 5G New Radio (NR), and related 5G standards.
[0017] Some of the aforementioned signaling or protocol types build on PCIe, thus adding additional functionality to the PCIe interface. Parallel, serial, or combined parallel / serial type interfaces are also applicable to the examples herein. The following examples use PCIe as an exemplary fabric type, but it should be understood that others can be used instead. PCIe is a high-speed serial computer expansion bus standard, typically having point-to-point connections between a host and a component device, or between peer devices. PCIe typically has individual serial links connecting all devices to a root complex, also called the host. A PCIe communication fabric can be established using various switching circuits and control architectures described herein.
[0018] The various computing system components herein may be included in one or more physical enclosures, such as rack-mountable modules that may further be included in a shelf or rack unit. A number of components may be inserted or installed in a physical enclosure, such as a modular framework into which modules may be inserted and removed as needed by a particular end user. An enclosed modular system may include physical support structures and enclosures that include circuits, printed circuit boards, semiconductor systems, and structural elements. Modules that include components, such as computing system 100, may be insertable and removable in rack-mounted or rack unit (U) type enclosures. It should be understood that the components of FIG. 1 may be included in any physical mounting environment and need not include associated enclosures or rack-mount elements.
[0019] As a first exemplary system, FIG. 1 is presented. FIG. 1 is a system diagram illustrating a computing system 100 that uses a workload-based hardware composition technique. The computing system 100 includes a computing cluster 101 having a pool of physical computing components coupled via a communication fabric 140. The computing system 100 also includes a management system 110, a job interface 111, and a job queue 112. The physical computing components include CPUs in a CPU pool 141, CoPUs in a CoPU pool 142, and storage units in a storage pool 143. Additional pools of components may be included, such as pools of network interface controllers (NICs), field programmable gate arrays (FPGAs), fabric-coupled random-access memories (RAMs), or other forms of data storage units. These physical computing components of pools 141-143 are communicatively coupled via a communication fabric 140, which in this example includes a PCIe-based fabric. Communications fabric 140 is formed from a number of PCIe switch elements and various corresponding PCIe links that individually couple to each of the physical components in compute cluster 101. Communications fabric 140 is configured to communicatively couple a number of physical compute components and to establish compute units using logical partitioning within the communications fabric. Each of these compute units, illustrated for example as compute units 120 and 130 in FIG. 1, can be comprised of any number of job-defined quantities of CPUs, CoPUs, or storage units from a respective pool of physical compute components, including zero of several types of components.
[0020] In operation, jobs are received through job interface 111 and placed in queue 112 for execution or other type of processing by elements of system 100. Job interface 111 may include a network interface, a user interface, a terminal interface, an application programming interface (API), or a Representational State Transfer (REST) interface, among other interfaces. In some examples, a workload manager software platform (not shown) establishes a front end for users or operators that can create, schedule, and transfer jobs for execution or processing by system 100. Various other job interfaces can be used, as described below. These execution jobs have properties that describe the nature of the execution, operation, and processing process of each job. For example, jobs can have an accompanying set of metadata that indicates the resources required to execute the job, or a minimum set of system / computational requirements are necessary to support the execution of the job. Job requirements can be indicated as a specification of component type, processing capacity, memory usage, maximum job completion time frame, or other indications.
[0021] Initially, compute units are not formed or established to support the execution or processing of various jobs. Instead, pools of physical components are established, and compute units can be formed on the fly from components in these pools to fit the specific requirements of the executing job. To determine the components that need to be included within a compute unit for a particular executing job, the management system 110 processes the aforementioned properties of the executing job to determine what resources are needed to support the execution or processing of the job, and establishes a compute unit to process the job. Thus, the total resources of the compute cluster 101 can be dynamically subdivided as needed to support the execution of various executing jobs received through the job interface 111. Computation units are formed at a particular time, referred to as being composed or composed, and the software of the job is deployed to the elements of the computation unit for execution / processing according to the nature of the job. Once a particular job is completed on a particular computation unit, the computation unit is decomposed, and the computation unit includes individual physical components that are added to the pool of physical components for use in creating further computation units for additional jobs. As described herein, various techniques are used to compose and decompose these computation units.
[0022] In FIG. 1, two exemplary execution jobs are highlighted; that is, jobs 191 and 192 are held in the queue 112 after being received by the job interface 111. When the job 191 is received, the properties of the job 191 are analyzed by the management system 110 to determine which physical computing components are required to execute the job 191. In FIG. 1, CPUs from the CPU pool 141, CoPUs from the CoPU pool 142, and storage units from the storage pool 143 are selected to support the job 191, and these physical computing components (CPU 121, CoPU 122, storage unit 123) are composed into the computing unit 120. This composition process, shown as element 150 in FIG. 1, is performed at a time t1, which may correspond to the schedule or time allocation of resources of the computing cluster 101 for the job 191. Similarly, the job 192 has a different set of physical computing components assigned based on the properties of the job 192. In Figure 1, to support job 192, a CPU from CPU pool 141, two CoPUs from CoPU pool 142, and a storage unit from storage pool 143 are selected, and these physical computational components (CPU 131, CoPUs 132-133, storage unit 134) are composited into computational unit 130. This composition process, shown as element 151 in Figure 1, occurs at time t2, which may correspond to the scheduling or temporal allocation of resources of computational cluster 101 for job 192.
[0023] In addition to the hardware or physical components that are synthesized into the computing units 120 and 130, software components of each of the jobs 191-192 are deployed as the computing units are synthesized. A job may include software components that are deployed for execution, such as user applications, user data sets, models, scripts, or other job-provided software. Other software, such as operating systems, virtualization systems, hypervisors, device drivers, bootstrap software, BIOS elements and configurations, state information, or other software components, may be provided by the management system 110. For example, the management system 110 may determine that a particular operating system, such as a version of Linux, should be deployed to the synthesized computing units to support execution of a particular job. An indication of the type or version of the operating system may be included in the properties associated with the incoming job or may be included in other metadata for the job. An operating system in the form of an operating system image may be deployed to data storage elements included in the synthesized computing units along with device drivers necessary to support the other physical computing components of the computing units. A job may include one or more data sets to be processed by the computing units along with one or more applications that perform data processing. Various monitoring or telemetry components may be deployed to monitor the activity of the compute units, such as job execution status indicating utilization levels, integrity levels, watchdog monitors, or other elements. In other examples, a catalog of available applications and operating systems may be provided by the compute cluster 101, which may be selected by a job for inclusion in the associated compute unit. Finally, once the hardware and software components are synthesized / deployed to form the compute unit, the job may be executed on the compute unit.
[0024] To compose the compute units, the management system 110 issues commands or control instructions via the fabric interface 113 to control the elements of the communication fabric 140. The physical components are coupled to one or more shared communication fabrics. These components can be logically separated into any number of separate, arbitrarily defined arrangements (computation units). The communication fabric can be configured by the management system 110 to selectively route traffic between components of a particular computation unit while maintaining logical separation between different computation units. In this manner, flexible "bare metal" configurations can be established between the physical components of the computation cluster 101. Individual computation units can be associated with external users or client machines that can utilize the computation, storage, network, or graphics processing resources of the computation units. Additionally, any number of computation units can be grouped into "clusters" of computation units for greater parallelism and capacity. Although not shown in FIG. 1 for clarity, various power supply modules and associated power and control distribution links can also be included in each of the components.
[0025] In one example of the communications fabric 140, a PCIe fabric is used. The PCIe fabric is formed from a number of PCIe switch circuits, which may be referred to as PCIe crosspoint switches. The PCIe switch circuits may be configured to logically interconnect various PCIe links based at least on the traffic carried by each PCIe link. These examples may include domain-based PCIe signaling distribution that allows segmentation of PCIe ports of the PCIe switch according to operator-defined groups. The operator-defined groups may be managed by the management system 110, which logically assembles components into associated computing units and logically separates components of different computing units. The management system 110 may control the PCIe switch circuit via the fabric interface 113, which includes the PCIe fabric, to change the logical division or segmentation between the PCIe ports and thus the composition of the grouping of the physical components. In addition to or as an alternative to the domain-based segmentation, each PCIe switch port may be a non-transparent (NT) port or a transparent port. While NT ports may allow some logical separation between endpoints, like bridges, transparent ports have the effect of connecting endpoints in a purely switched configuration without allowing logical separation. Access through one or more NT ports may include an additional handshake between the PCIe switch and the initiating endpoint to select a particular NT port or to allow visibility through the NT port. Advantageously, this domain-based segmentation (NT port-based segmentation) allows physical components (i.e., CPU, CoPU, storage unit, NIC) to be coupled to a shared or common fabric, but only have visibility to components contained in the compute unit via segmentation / splitting. Thus, grouping between multiple physical components can be achieved with logical partitioning between PCIe fabrics.This division is inherently scalable and can be dynamically changed as needed by the management system 110 or other control element.
[0026] Returning to the description of the elements of Figure 1, management system 110 may include one or more microprocessors and other processing circuitry that retrieves and executes software, such as job interface 112 and fabric management software, from an associated storage system (not shown). Management system 110 may be implemented within a single processing device, but may also be distributed across multiple processing devices or subsystems that cooperate in executing program instructions. Examples of management system 110 include general purpose central processing units, application specific processors, and logic devices, as well as any other type of processing device, combination, or variation thereof. In some examples, management system 110 may be implemented using a microprocessor such as an Intel (登録商標) Or AMD (登録商標) Microprocessor, ARM (登録商標) The management system 110 may include a microprocessor, a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), an application specific processor, or other microprocessor or processing element. The management system 110 includes or provides a job interface 111 and a queue 112. These elements may include various software components executed by the processor element of the management system 110, or may alternatively include circuitry.
[0027] In FIG. 1, the management system 110 provides a fabric interface 113. The fabric interface 113 comprises a communication link between the management system 110 and any component coupled to the communication fabric 140, which may comprise one or more PCIe links. In some examples, the fabric interface 113 may use Ethernet traffic forwarded over a PCIe link or other link. Additionally, each CPU included in the compute unit of FIG. 1 may be configured with driver or emulation software capable of providing Ethernet communications carried over a PCIe link. Thus, any of the CPUs of the pool 141 (when deployed to a compute unit) and the management system 110 can communicate over Ethernet forwarded over the PCIe fabric. However, the implementation is not limited to Ethernet over PCIe, and other communication interfaces may be used, including PCIe traffic over a PCIe interface.
[0028] The components of the compute cluster 101 include the communications fabric 140, CPUs, CoPUs, and storage units. They may also include various other devices, such as NICs, FPGAs, RAM, or programmable read-only memory (PROM) devices. The CPUs in the CPU pool 141 each comprise a microprocessor, system-on-chip device, or other processing circuitry that retrieves and executes software, such as user applications, from an associated storage system. Each CPU may be implemented within a single processing device, but may also be distributed across multiple processing devices or subsystems that cooperate in executing program instructions. Examples of each CPU include general-purpose central processing units, application-specific processors, and logic devices, as well as any other type of processing device, combination, or variation thereof. In some examples, each CPU may be implemented by an Intel (登録商標) , AMD (登録商標) , or ARM (登録商標)Each CPU may include a microprocessor, a graphics core, a compute core, an ASIC, an FPGA portion, or other microprocessor or processing element. Each CPU includes one or more fabric communication interfaces, such as PCIe, that couple the CPU to a switch element of communications fabric 140. A CPU may comprise a PCIe endpoint device or a PCIe host device, which may or may not have a root complex.
[0029] Each CoPU in the CoPU pool 142 comprises co-processing elements for specialized processing of a data set. For example, the CoPU pool 142 may comprise graphics processing resources that may be allocated to one or more compute units. A GPU may comprise a graphics processor, shaders, pixel rendering elements, frame buffers, texture mappers, graphics cores, graphics pipelines, graphics memory, or other graphics processing and processing elements. In some examples, each GPU comprises a graphics "card" that comprises circuitry supporting the GPU chip. An exemplary GPU card is an nVIDIA GPU card that includes graphics processing elements along with various supporting circuits, connectors, and other elements. (登録商標) or AMD (登録商標) In further examples, other styles of co-processing units or assemblies may be used, such as machine learning processing units, tensor processing units (TPUs), FPGAs, ASICs, or other special-purpose processors.
[0030] The storage units of the storage pool 143 each comprise one or more data storage drives, such as solid state storage drives (SSDs) or magnetic hard disk drives (HDDs), along with associated enclosures and circuitry. Each storage unit also includes a fabric interface (such as a PCIe interface), a control processor, and power system elements. In yet other examples, each storage unit comprises an array of one or more separate data storage units, along with associated enclosures and circuitry. In some examples, fabric interface circuitry is added to the storage drives to form the storage units. In particular, the storage drives may comprise a storage interface, such as SAS, SATA Express, NVMe, or other storage interface, and are coupled to the communications fabric 140 using communications conversion circuitry included in the storage unit to convert communications to PCIe communications or other fabric interfaces.
[0031] When NICs are included between the physical components of the compute cluster 101, each NIC includes circuitry for communicating over packet networks such as Ethernet and TCP / IP (Transmission Control Protocol / Internet Protocol) networks. Some examples carry other traffic over Ethernet or TCP / IP, such as iSCSI (Internet Small Computer System Interface). Each NIC includes Ethernet interface equipment and can communicate over wired, optical, or wireless links. External access to the components of the compute cluster 101 can be provided over the packet network links provided by the NICs and may include presenting iSCSI, Network File System (NFS), Server Message Block (SMB), or Common Internet File System (CIFS) shares over the network links. In some examples, fabric interface circuitry is added to the storage drives to form storage units. Specifically, the NICs can include communication conversion circuitry included in the NICs to couple the NICs to the communications fabric 140 using PCIe communications or other fabric interfaces.
[0032] The communication fabric 140 comprises a number of fabric links coupled by communication switch circuitry. In an example where PCIe is used, the communication fabric 140 comprises a number of PCIe switches that communicate with members of the compute cluster 101 via associated PCIe links. Each PCIe switch comprises a PCIe cross-connect switch for establishing switched connections between any PCIe interfaces handled by each PCIe switch. The communication fabric 140 can accommodate multiple PCIe hosts being on the same fabric while communicatively coupled only to associated PCIe endpoints. Thus, many hosts (e.g., CPUs) can independently communicate with many endpoints using the same fabric. PCIe switches can be used to transfer data between CPUs, CoPUs, and storage units within a compute unit, and between compute units when host-to-host communication is used. The PCIe switches described herein can be configured to logically interconnect various of the associated PCIe links based at least on the traffic carried by each PCIe link. These examples may include domain-based PCIe signaling distribution that may segment PCIe ports of a PCIe switch according to user-defined groups. The user-defined groups may be managed by the management system 110 that logically aggregates components into associated computing units and logically isolates components from among different computing units. In addition to or instead of domain-based segmentation, each PCIe switch port may be a non-transparent (NT) or transparent port. An NT port may allow some logical isolation between endpoints, like a bridge, while a transparent port does not allow logical isolation and has the effect of connecting endpoints in a pure circuit-switched configuration. Access through one or more NT ports may include an additional handshake between the PCIe switch and the initiating endpoint to select a particular NT port or to enable visibility through the NT port.In some examples, each PCIe switch comprises a PLX / Broadcom / Avago PEX series chip, such as a PEX8796 24-port, 96-lane PCIe switch chip, a PEX8725 10-port, 24-lane PCIe switch chip, a PEX97 xx chip, a PEX9797 chip, or other PEX87 xx / PEX97 xx chips.
[0033] FIG. 2 is included to illustrate an exemplary operation of the elements of FIG. 1. In operation 201, the job interface 111 of the management system 110 receives an execution job to the queue 112. The enqueuing process may include receiving an execution job directed to the compute cluster 101, which includes at least a pool of compute components coupled to the communication fabric 140. In operation 202, the management system 110 analyzes the job profile to determine the required computational resources, and in operation 203, adds the job to the queue 112 along with composition scheduling information. Based on the properties of the execution job, the management system 110 determines a resource schedule for processing the execution job, the resource schedule indicating a time allocation of resources of the compute cluster 101. The resource schedule includes one or more data structures related to an identifier of the execution job, an indication of a set of computational components required to execute each of the execution jobs, a time frame to start composition and decomposition of computation units, and an indication of software components to deploy on the computation units of the execution job.
[0034] In operation 204, the management system 110 composes the computing units to support the job according to the schedule indicated in the queue 112. The management system 110 initiates the execution job on the computing cluster 101 according to the resource scheduling by at least instructing the communication fabric 140 to compose a computing unit including a set of computing components selected from the pool of computing components to process the execution job. Instructing the communication fabric 140 to compose the computing units includes instructing the communication fabric 140 to form a logical separation in the communication fabric that communicatively couples the set of computing components. Each logical separation allows the computing components in each of the sets of computing components to communicate over the communication fabric only within the corresponding logical separation. In accordance with the resource scheduling, the management system 110 controls the communication fabric to deploy software components to the computing units to execute the execution job once each of the computing units is formed. Then, in operation 205, the composed computing units execute the corresponding job on the composed computing units. Finally, once the execution job is completed, in operation 206, the management system 110 decomposes the computing unit resources back to the free pool. The computational units are decomposed and returned to the pool of computational components. The management system 110 instructs the communications fabric 140 to decompose the computational units by removing the corresponding logical separation of the computational units, so that the computational components of the computational units are available for composition into additional computational units.
[0035] The operations of FIG. 2 and other examples herein illustrate job-based initiation of the composition and decomposition of compute units. Thus, the initiation of an executing job and associated job properties can trigger the creation of compute units to execute the job. Other triggers can be used in these examples herein, either separately or in combination with the aforementioned triggers. In a first alternative trigger, an event-based trigger is used. These event-based triggers can change or modify compute units or add additional compute units to support the job or the work unit that includes the job. Based on the observation by the management system 110 of dynamic events or patterns exhibited by the job, the management system 110 can initiate changes to the configuration of compute units and resources assigned to it. Examples of such events or patterns include observed resource shortages of a process, specific strings identified by functions, specific signals identified by intelligent infrastructure algorithms, or other factors that can be monitored by the management system 110. Telemetry of an executing job or analysis of the properties of a job before or during execution can notify the management system 110 to initiate dynamic changes of compute units. Thus, the management system 110 can modify the composition of the computing units to add or remove resources (e.g., physical computing components) of the computing units according to events or patterns. Advantageously, the computing units can be better optimized to support the current resource needs of each job, and resources can be intelligently returned to the pool when no longer needed by the current job or for use by other future jobs.
[0036] Another alternative trigger includes a time trigger based on a machine learning type algorithm or a user-defined time window. In this example, a pattern or behavior of the composited compute units can be determined or learned over time such that a particular type of job exhibits a particular type of behavior. Based on these behaviors, changes to the compute units can be dynamically made to support the workload pattern. For example, the management system 110 can determine that a particular type of running job requires more / less storage resources or requires more / less co-processing resources at a particular execution stage. The management system 110 can predictively or proactively modify the composition of the compute units, which can include adding or removing or resources, to better optimize the current resources allocated to the compute units at the state the work unit is being executed by the job. The time property can be determined by the management system 110 based on explicit user input or based on a machine learning process to determine the time window to add or remove resources from the compute units. The management system 110 can include a resource scheduler element that can determine what resource changes are needed and when these changes are needed to support current and future job needs. Changes to the computing units described herein may, in some examples, require recomposing and rebooting the computing unit and associated operating systems, such as when adding or removing particular physical components or resources, however, other changes, such as adding / removing storage or network interface resources, may be accomplished on the fly without rebooting or recomposing a particular computing unit.
[0037] Turning now to a detailed description of the technique for workload-based hardware composition, FIG. 3 is presented. FIG. 3 illustrates a configuration 300 having several compute unit composition operations. A workload queue 390 is included in which several exemplary execution jobs 320, 330, and 340 are enqueued. An exemplary pool of physical computational components is also included, namely a set of 16 GPUs. Although only GPUs are shown in this example for clarity, other co-processing elements or other types of elements may be included in the selected GPU to form the compute unit, such as CPUs and storage units, among other elements. Thus, the execution jobs in queue 390 of FIG. 3 include jobs that use graphics processing resources, such as machine learning jobs, artificial intelligence jobs, graphics rendering jobs, or other types of data processing jobs that can benefit from running across multiple simultaneous GPUs.
[0038] When the execution jobs 320, 330, and 340 are received through the corresponding job interfaces, the properties of the execution jobs 320, 330, and 340 are analyzed to determine which physical computational components are required to execute such jobs. These properties can directly indicate the amount and configuration of computational components between GPUs, CPUs, or storage elements desired for the job, or the amount and configuration of computational components can be inferred by the resource requirements indicated by the job. For example, the execution job can indicate that a certain minimum class or type of CPU or GPU (and amount) is desired, and anything beyond that capacity is acceptable. Each of the execution jobs 320, 330, and 340 can be subdivided into parts, which are shown as work units in FIG. 3. Each work unit can be deployed to different GPUs within a computation unit.
[0039] When the schedule indicates that an executing job should be executed, the managing element can form a compute unit for each job. An initial state 301 of the pool of GPUs 350 indicates that all GPUs are idle and not currently processing jobs, although other initial states are possible. In state 302, the executing jobs 320, 330, and 340 are deployed on newly composed compute units to support each of the executing jobs 320, 330, and 340. That is, compute unit 310 is composed to support the executing job 320, compute unit 311 is composed to support the executing job 330, and compute unit 312 is composed to support a first part of the job 340. Since the executing jobs 320 and 330 consume a portion of the pool of GPUs 350, the compute unit 312 is left with a remaining number of GPUs that may be less than the amount required for full adaptation of the job 340. In some examples, the job 340 may be delayed until all required resources are available, or instead, partial adaptation may be employed as shown in FIG. 3.
[0040] After a period of time, the jobs in execution complete or terminate. As these jobs complete, the compute unit resources allocated to these jobs are relinquished and returned to a pool of free resources for use by additional jobs. In FIG. 3, when jobs in execution 320 and 330 complete and the first work unit of job in execution 340 is completed, subsequent work units of job in execution 340 may include the relinquished GPU. To deploy the subsequent work units of job in execution 340, compute units 313 are synthesized. Computation units 313 may comprise modified versions of compute units 312 or new compute units formed in response to the relinquishment of GPU resources. Thus, state 303 illustrates the execution of all GPUs of the pool of GPUs 350 in compute units 313 and the work units of job in execution 340.
[0041] FIG. 4 is a system diagram illustrating a computing platform 400. The computing platform 400 comprises a rack-mounted arrangement of modular chassis. One or more physical enclosures, such as modular chassis, may further be included in a shelf or rack unit. The chassis 410, 420, 430, 440, and 450 are included in the computing platform 400 and may be mounted in a common rack-mounted arrangement in one or more data centers or may span multiple rack-mounted arrangements. Within each chassis, modules are mounted to a shared PCIe switch along with various power system, structural support, and connector elements. A certain number of components of the computing platform 400 may be inserted or installed in a physical enclosure, such as a modular framework, from which modules can be inserted and removed as needed by a particular end user. The enclosed modular system may include physical support structures and enclosures that include circuits, printed circuit boards, semiconductor systems, and structural elements. Modules comprising the components of the computing platform 400 are insertable and removable from the rack-mounted enclosures. In some examples, the elements of Figure 4 are included in a "U" style chassis for mounting within a larger rack mount environment. It should be understood that the components of Figure 4 may be included in any physical mounting environment and need not include associated enclosures or rack mount elements.
[0042] The chassis 410 includes a management module or top-of-rack (ToR) switch chassis and includes a management processor 411 and a PCIe switch 460. The management processor 411 includes a management operating system (OS) 412, a user interface 413, and a job interface 414. The management processor 411 is coupled to the PCIe switch 460 via one or more PCIe links that include one or more PCIe lanes.
[0043] PCIe switch 460 is coupled to PCIe switches 461-464 in other chassis in computing platform 400 via one or more PCIe links. These one or more PCIe links are represented by PCIe inter-module connections 465. PCIe switches 460-464 and PCIe inter-module connections 465 form a PCIe fabric that communicatively couples all of the various physical computing elements of FIG. 4. In some examples, management processor 411 can communicate with elements of the PCIe fabric via special management PCIe links or sideband signaling (not shown), such as an Inter-Integrated Circuit (I2C) interface, to control the operation and partitioning of the PCIe fabric. These control operations can include composing and decomposing computing units, changing the logical partitioning within the PCIe fabric, monitoring telemetry of the PCIe fabric, controlling power up / down operation of modules on the PCIe fabric, updating firmware of the various circuits that comprise the PCIe fabric, and other operations.
[0044] Chassis 420 includes a number of CPUs 421-425, each coupled to the PCIe fabric via a PCIe switch 461 and associated PCIe links (not shown). Chassis 430 includes a number of GPUs 431-435, each coupled to the PCIe fabric via a PCIe switch 462 and associated PCIe links (not shown). Chassis 440 includes a number of SSDs 441-445, each coupled to the PCIe fabric via a PCIe switch 463 and associated PCIe links (not shown). Chassis 450 includes a number of NICs 451-455, each coupled to the PCIe fabric via a PCIe switch 464 and associated PCIe links (not shown). Each chassis 420, 430, 440, and 450 may include various modular bays for mounting modules comprising corresponding elements of each CPU, GPU, SSD, or NIC. Power systems, monitoring elements, internal / external ports, installation / removal hardware, and other related features may be included in each chassis. Further description of the individual elements of chassis 420, 430, 440, and 450 is included below.
[0045] Once the various CPU, GPU, SSD, or NIC components of the computing platform 400 are installed in their associated chassis or enclosures, the components may be coupled via a PCIe fabric and logically separated into any number of separate, arbitrarily defined arrangements referred to as "machines" or computing units. Each computing unit may be composed of a selected number of CPUs, GPUs, SSDs, and NICs, including zero of any type of module, but typically at least one CPU is included in each computing unit. An example of a computing unit 401 is shown in FIG. 4, which includes a CPU 421, GPUs 431-432, SSD 441, and NIC 451. The computing units 401 are composed using logical partitioning within the PCIe fabric, illustrated by logical domains 470. The PCIe fabric may be configured by management processor 411 to selectively route traffic between components of a particular computing unit while maintaining logical isolation between components not included in the particular computing unit. In this manner, a decomposed, flexible, "bare metal" configuration may be established between the components of the platform 100. An individual compute unit may be associated with an external user, incoming job, or client machine that can utilize the compute, storage, network, or graphics processing resources of the compute unit. Additionally, any number of compute units may be grouped into a "cluster" of compute units for greater parallelism and capacity.
[0046] In some examples, the management processor 411 can create compute units through one or more user interfaces or job interfaces. For example, the management processor 411 can provide a user interface 413 that can present machine templates for compute units that can specify hardware components to be allocated, as well as software and configuration information, for compute units created using the template. In some examples, the compute unit creation user interface can provide machine templates for compute units based on a use case or usage category of the compute unit. For example, the user interface can provide suggested machine templates or compute unit configurations for a game server unit, an artificial intelligence learning compute unit, a data analysis unit, and a storage server unit. For example, a game server unit template can specify additional processing resources compared to a storage server unit template. Additionally, the user interface can provide customization of the template or compute unit configuration and options for a user to create a compute unit template from a component type arbitrarily selected from a list or category of components.
[0047] In additional examples, the management processor 411 can provide policy-based dynamic adjustments to the computing units during operation. In some examples, the user interface 413 can enable a user to define policies for adjusting the hardware and software allocated to the computing unit and its configuration information during operation. In one example, during operation, the management processor 411 can analyze telemetry data of the computing units to determine current resource utilization. Based on the current utilization, the dynamic adjustment policy can specify that processing resources, storage resources, networking resources, etc. are allocated to or removed from the computing unit. For example, the telemetry data can indicate that the current utilization level of the allocated storage resources of the storage computing unit is approaching 100%, and an additional storage device can be allocated to the computing unit.
[0048] In yet another example, the management processor 411 can provide running job-based dynamic adjustments to the compute units during operation. In some examples, the job interface 414 can receive indications of running jobs to be processed by the computing platform 400. The management processor 411 can analyze these incoming jobs to determine system requirements for executing / processing the jobs, including resources selected from among CPUs, GPUs, SSDs, NICs, and other resources. In FIG. 4, table 490 shows several jobs received through the job interface 414 and enqueued in the job queue. Table 490 shows a unique job identifier (ID) followed by various granularity system components that will be included in the compute units formed to support the job. For example, job 491 has a job ID of 00001234, indicating that the compute units formed to execute job 491 include 1 CPU, 2 GPUs, 1 SSD, and 1 NIC. Thus, when it is time for management processor 411 to execute job 491, it constructs compute unit 401 consisting of CPU 421, GPUs 431-432, SSD 441, and NIC 451. Compute unit 401 is synthesized using a logical partitioning within the PCIe fabric represented by logical domain 470. Logical domain 470 allows CPU 421, GPUs 431-432, SSD 441, and NIC 451 to communicate via PCIe signaling, while isolating PCIe communications from compute unit 401 for other components of other logical domains and other compute units, all sharing the same PCIe fabric. Job 491 can be executed on compute unit 401 once various software components have been deployed to compute unit 401. FIG. 5 illustrates the deployment of these various software components.
[0049] Although a PCIe fabric is described in the context of FIG. 4, the management processor 411 can provide control and management of a multi-protocol communication fabric. For example, the management processor 411 and PCIe switch devices of the PCIe fabric can provide communication coupling of physical components using multiple different implementations or versions of PCIe and similar protocols. For example, different PCIe versions (e.g., 3.0, 4.0, 5.0, and later) may be used for different physical components in the same PCIe fabric. Additionally, next generation interfaces, e.g., Gen-Z, CCIX, CXL, OpenCAPI, or wireless interfaces, including Wi-Fi interfaces or cellular wireless interfaces, can be used. Also, while PCIe is used in FIG. 4, it should be understood that PCIe may not be present and a different communication link or bus, such as NVMe, Ethernet, SAS, Fibre Channel, Thunderbolt, SATA Express, among other interconnect, network, and link interfaces, may be used instead.
[0050] Referring now to the description of the components of computing platform 400, management processor 411 may comprise one or more microprocessors and other processing circuitry that retrieves and executes software, such as management operating system 412, user interface 413, and job interface 414, from associated storage systems. Management processor 411 may be implemented within a single processing device, but may also be distributed across multiple processing devices or subsystems that cooperate in executing program instructions. Examples of management processor 411 include general purpose central processing units, application specific processors, and logic devices, as well as any other type of processing device, combination, or variation thereof. In some examples, management processor 411 may be an Intel (登録商標) Or AMD (登録商標) Microprocessor, ARM (登録商標)Includes a microprocessor, field programmable gate array (FPGA), application specific integrated circuit (ASIC), application specific processor, or other microprocessor or processing element.
[0051] The management operating system (OS) 412 is executed by the management processor 411 and provides management of the resources of the computing platform 400. This management includes composing, modifying, decomposing, and monitoring one or more computing units. The management OS 412 provides the functions and operations described herein for the management processor 411. The user interface 413 can present a graphical user interface (GUI), an application programming interface (API), or a command line interface (CLI), a web socket (WebSocket) interface to one or more users. The user interface 413 can be used by an end user or administrator to establish computing units, allocate resources to the computing units, create clusters of computing units, and perform other operations. In some examples, the user interface 413 provides an interface through which a user can determine one or more computing unit templates and dynamic adjustment policy sets to use or customize for use in creating computing units. The user interface 413 can be used to manage, select, and modify machine templates. The user interface 413 can be used to manage, select, and modify policies for computing units. The user interface 413 can also provide telemetry information for the operation of the computing platform 400 to a user, such as in one or more status interfaces or views. The status of various components or elements of the computing platform 400 can be monitored via the user interface 413, such as CPU status, GPU status, NIC status, SSD status, PCIe switch / fabric status, among others. Various performance metrics, error status can be monitored using the user interface 413.
[0052] Two or more instances of elements 411-414 may be included in the computing platform 400. Each management instance may manage resources of a given number of clusters or computing units. User commands, such as those received via a GUI, may be received by any of the management instances and forwarded by the receiving management instance to a handling management instance. Each management instance may have a unique or pre-assigned identifier that may aid in the delivery of user commands to the appropriate management instance. Additionally, the management processors of each management instance may communicate with each other, such as by using a mailbox process or other data exchange techniques. This communication may be via a dedicated sideband interface, such as an I2C interface, or via a PCIe or Ethernet interface coupling each management processor.
[0053] A number of CPUs 421-425 are included in chassis 420. Each CPU may comprise a CPU module that includes one or more CPUs or microprocessors and other processing circuitry that retrieves and executes software, such as operating systems, device drivers, and applications from associated storage systems. Each CPU may be implemented within a single processing device, but may also be distributed across multiple processing devices or subsystems that cooperate in executing program instructions. Examples of each CPU include general purpose central processing units, application specific processors, and logic devices, as well as any other type of processing device, combination, or variation thereof. In some examples, each CPU may be an Intel 802.11b processor, Intel 802.11c processor, Intel 802.11b ... (登録商標) Or AMD (登録商標) Microprocessor, ARM (登録商標)A microprocessor, a graphics processor, a computing core, a graphics core, an ASIC, an FPGA, or other microprocessor or processing element. Each CPU can also communicate with other computing units, such as those in the same storage assembly / enclosure or another storage assembly / enclosure, via one or more PCIe interfaces and a PCIe fabric.
[0054] A number of GPUs 431-435 are included in chassis 430. Each GPU may comprise a GPU module that includes one or more GPUs. Each GPU includes graphics processing resources that may be allocated to one or more compute units. A GPU may include graphics processors, shaders, pixel rendering elements, frame buffers, texture mappers, graphics cores, graphics pipelines, graphics memory, or other graphics processing and processing elements. In some examples, each GPU includes a graphics "card" that includes circuitry supporting the GPU chip. An exemplary GPU card is an nVIDIA GPU card that includes graphics processing elements along with various supporting circuitry, connectors, and other elements. (登録商標) or AMD (登録商標) In further examples, other styles of graphics processing units, graphics processing assemblies, or co-processing elements can be used, such as machine learning processing units, tensor processing units (TPUs), FPGAs, ASICs, or other specialized processors that can include specialized processing elements for focusing processing and memory resources on processing specialized data sets.
[0055] A number of SSDs 441-445 are included in the chassis 440. Each SSD may comprise an SSD module including one or more SSDs. Each SSD includes one or more storage drives, such as solid-state storage drives with a PCIe interface. Each SSD also includes a PCIe interface, a control processor, and power system elements. Each SSD may include a processor or control system for traffic statistics and status monitoring, among other operations. In yet another example, each SSD may instead include a magnetic hard disk drive (HDD), cross-point memory (e.g., Optane (登録商標) The memory device may comprise different data storage media, such as digital memory (DRAM) devices, static random access memory (SRAM) devices, programmable read only memory (PROM) devices, or other magnetic, optical, or semiconductor based storage media, along with associated enclosures, control systems, power systems, and interface circuitry.
[0056] A number of NICs 451-455 are included in the chassis 450. Each NIC may comprise a NIC module including one or more NICs. Each NIC may comprise a network interface controller card for communicating over a Transmission Control Protocol (TCP) / Internet Protocol (IP) network or for carrying user traffic, such as iSCSI (Internet Small Computer System Interface) or NVMe (NVM Express) traffic for the elements of the associated computing unit. The NICs may comprise Ethernet interface devices and may communicate over wired, optical, or wireless links. External access to the components of the computing platform 400 may be provided over a packet network link provided by the NIC. The NICs may communicate with other components of the associated computing unit over associated PCIe links of the PCIe fabric. In some examples, the NICs are provided to communicate with the management processor 411 over an Ethernet link. In additional examples, the NICs are provided to communicate with one or more other chassis, rack mount systems, data centers, computing platforms, communication fabrics, or other elements over an Ethernet link.
[0057] In addition to the CPU, GPU, SSD, and NIC, other dedicated devices may be used in the computing platform. These other dedicated devices may include co-processing modules with dedicated co-processing circuitry, fabric-coupled RAM devices, ASIC circuitry, or FPGA circuitry, as well as various memory, storage, and interface components, among other circuitry. The other dedicated devices may each include a PCIe interface with one or more PCIe lanes. These PCIe interfaces communicate over the PCIe fabric and can be used to include other dedicated devices in one or more computing units. These other dedicated devices may include PCIe endpoint devices or PCIe host devices that may or may not have a root complex.
[0058] An FPGA device can be used as an example of another dedicated device. An FPGA device can receive processing tasks from another PCIe device, such as a CPU or GPU, and offload those processing tasks to an FPGA programmable logic circuit. An FPGA is typically initialized to a program state using configuration data, which includes various logic arrangements, memory circuits, registers, processing cores, specialized circuits, and other functions that provide specialized or application-specific circuits. An FPGA device can change the circuitry implemented therein and be reprogrammed to perform different sets of processing tasks at different times. An FPGA device can be used to perform machine learning tasks, implement artificial neural network circuits, implement custom interfaces or glue logic, perform encryption / decryption tasks, perform blockchain computation and processing tasks, or perform other tasks. In some examples, a CPU provides data to the FPGA to be processed by the FPGA via a PCIe interface. The FPGA can process this data to generate results and provide the results to the CPU via a PCIe interface. Two or more CPUs and / or FPGAs may be involved to parallelize tasks through two or more devices, or to serially process data through two or more devices. In some examples, the FPGA arrangement may include locally stored configuration data that may be supplemented, replaced, or overwritten using configuration data stored in the configuration data storage device. This configuration data may include firmware, programmable logic programs, bitstreams, or objects, PCIe device initial configuration data, among other configuration data described herein. The FPGA arrangement may also include SRAM or PROM devices used to perform boot programming, power-on configuration, or other functions to establish an initial configuration of the FPGA device. In some examples, the SRAM or PROM devices may be incorporated into the FPGA circuitry or package.
[0059] The PCIe switches 460-464 communicate via associated PCIe links. In the example of FIG. 4, the PCIe switches 460-464 can be used to carry user data between PCIe devices within each chassis and between each chassis. Each PCIe switch 460-464 includes a PCIe cross-connect switch for establishing switched connections between any PCIe interfaces handled by each PCIe switch. The PCIe switches described herein can logically interconnect various PCIe links of associated PCIe links based at least on the traffic carried by each PCIe link. These examples can include domain-based PCIe signaling distribution that can segment PCIe ports of the PCIe switch according to user-defined groups. The user-defined groups can be managed by the management processor 411, which logically aggregates components into associated computing units and logically separates the components and computing units from each other. In addition to or in lieu of domain-based segmentation, each PCIe switch port can be a non-transparent (NT) or transparent port. While NT ports may allow some logical separation between endpoints, like bridges, transparent ports do not allow logical separation and have the effect of connecting endpoints in a purely switched configuration. Access through one or more NT ports may include an additional handshake between the PCIe switch and the initiating endpoint to select a particular NT port or to enable visibility through the NT port.
[0060] Advantageously, this NT port-based segmentation or domain-based segmentation can enable physical components (i.e., CPU, GPU, SSD, NIC) to have visibility only to those components that are included via the segmentation / splitting. Thus, the logical partitioning between the PCIe fabric can be used to achieve grouping between multiple physical components. This partitioning is inherently scalable and can be dynamically changed as needed by the management processor 411 or other control elements. The management processor 411 can control the PCIe switch circuitry that comprises the PCIe fabric to change the logical partitioning or segmentation between the PCIe ports and thus the composition of the grouping of the physical components. These groupings, referred to herein as compute units, can individually form "machines" and can be further grouped into clusters of many compute units / machines. Physical components can be added or removed from the compute units according to user instructions received via a user interface, dynamically in response to load / idle conditions, dynamically in response to incoming or queued jobs to run, or proactively due to anticipated needs, among other considerations described herein.
[0061] In a further example, memory-mapped Direct Memory Access (DMA) conduits can be formed between individual CPU / PCIe device pairs. This memory mapping can occur on the PCIe fabric address space, among other configurations. The logical partitioning described herein can be employed to provide these DMA conduits on a shared PCIe fabric with many CPUs and GPUs. Specifically, NT port or domain-based partitioning on the PCIe switch can isolate individual DMA conduits between associated CPUs / GPUs. The PCIe fabric can have a 64-bit address space, which allows for 264 bytes of addressable space, resulting in at least 16 exbibytes of byte-addressable memory. The 64-bit PCIe address space can be shared by all compute units or segmented among the various compute units forming an arrangement for appropriate memory mapping to resources.
[0062] The PCIe interface can support multiple bus widths, such as x1, x2, x4, x8, x16, and x32, with each multiple of the bus width including additional "lanes" for data transfer. PCIe also supports the System Management Bus (SMBus) interface and the Joint Test Action Group (JTAG) interface, as well as associated clock, power, and sideband signaling transfers such as bootstrap. PCIe may also have different implementations or versions as used herein. For example, PCIe version 3.0 or later (e.g., 4.0, 5.0, or later) may be used. Additionally, next-generation interfaces such as Gen-Z, cache coherent CCIX, CXL, or OpenCAPI may be used. Also, while PCIe is used in FIG. 4, it should be understood that a different communication link or bus, such as NVMe, Ethernet, SAS, Fibre Channel, Thunderbolt, SATA Express, among other interconnect, network, and link interfaces, may be used instead. NVMe is an interface standard for mass storage devices such as hard disk drives and solid state memory devices. NVMe can replace SATA interfaces for interfacing with mass storage devices in personal computer and server environments. However, these NVMe interfaces are limited to a one-to-one host drive relationship, similar to SATA devices. In the examples described herein, a PCIe interface is used to transport NVMe traffic, and a multi-drive system with many storage drives can be presented as one or more NVMe Virtual Logical Unit Numbers (VLUNs) on the PCIe interface.
[0063] Any of the links in FIG. 4 may each use a variety of communication media, such as air, space, metal, fiber optics, or some other signal propagation path, including combinations thereof. Any of the links in FIG. 4 may include any number of PCIe links or lane configurations. Any of the links in FIG. 4 may each be direct links or may include a variety of equipment, intermediate components, systems, and networks. Any of the links in FIG. 4 may each be common links, shared links, aggregated links, or may be composed of separate, distinct links.
[0064] A detailed example of the formation and processing of a compute unit is now described. In FIG. 4, any CPU 421-425 has configurable logical visibility to any / all GPUs 431-435, SSDs 441-445, and NICs 451-455, or other physical components coupled to the PCIe fabric of the compute platform 400, as logically segmented by the PCIe fabric. For example, any CPU 421-425 can transfer and retrieve stored data with any SSD 441-445 included in the same compute unit. Similarly, any CPU 421-425 can exchange data for processing by any GPU 431-435 included in the same compute unit. Thus, "m" SSDs or GPUs can be coupled with "n" CPUs, enabling a large, scalable architecture with high levels of performance, redundancy, and density. In the graphics processing example, NT partitioning or domain-based partitioning in the PCIe fabric can be provided by one or more of the PCIe switches. This partitioning allows GPUs to interact with one or more CPUs as desired, and allows more than one GPU, such as eight GPUs, to be associated with a particular compute unit. Additionally, dynamic GPU-compute unit associations can be adjusted on the fly using partitioning across the PCIe fabric. Shared NIC resources can also be applied across compute units.
[0065] FIG. 5 is a system diagram including further details regarding the elements of FIG. 4, such as the formation of compute units and the deployment of software components thereon. System 500 includes a management processor 411 that communicates with a composite compute unit 401 via link 510. The composite compute unit 401 includes a CPU 421, GPUs 431-432, SSD 441, and NIC 451. CPU 421 deploys software including an operating system 522, applications 524, compute unit interfaces 525, and execute jobs 491. Thus, CPU 421 is shown as having several layers of operation. The first layer 501 is the hardware layer or "metal" machine infrastructure of compute unit 401 that is formed on the PCIe fabric using logical domains 470. The second layer 502 provides the OS as well as the compute unit interfaces 525. Finally, the third layer 503 provides user level applications and execute jobs.
[0066] Management OS 111 also includes a management interface 515 that communicates with a compute unit interface 525 deployed on compute unit 401 via link 510. Management interface 515 enables communication with the compute unit to transfer software components to the compute unit and to receive status, telemetry, and other data from the compute unit. Management interface 515 and compute unit interface 525 provide a standardized interface for management traffic, such as for control commands, control responses, telemetry data, status information, or other data. The standardized interface may include one or more APIs.
[0067] In some examples, the compute unit interface includes an emulated network interface. The emulated network interface comprises a forwarding mechanism for forwarding packet network traffic over one or more PCIe interfaces. The emulated network interface can emulate a network device, such as an Ethernet device, to the management processor 411, so that the management processor 411 can interact / interface with the CPU 421 of the compute unit 401 over the PCIe interface as if the management processor 411 and the CPU 421 were communicating over an Ethernet network interface. The emulated network interface can comprise a kernel-level element or module that allows the OS to interface using Ethernet-style commands and drivers, allowing applications or OS-level processes to communicate with the emulated network device without the associated latency and processing overhead associated with a full network stack. The emulated network interface includes software components, such as drivers, modules, kernel-level modules, or other software components, that appear as a network device to application-level and system-level software executed by the CPU of the compute unit. Advantageously, the emulated network interface does not require network stack processing to forward communications. In the case of a computing unit such as computing unit 401, the emulated network interface does not use network stack processing and still appears to the operating system 522 as a network device, so that user software or operating system elements of the associated CPU can interact with the network interface and communicate over the PCIe fabric using existing network-facing communication methods such as Ethernet communications.The emulated network interface of the management processor 411 forwards the communication to another emulated network device located on the computing unit 401 as associated traffic via a PCIe interface or PCIe fabric. The emulated network interface translates the PCIe traffic to network device traffic and vice versa. Processing of the communication forwarded to the emulated network device via a network stack is omitted, which is often typically used for the type of network device / interface presented. For example, the emulated network device may be presented to an operating system or application as an Ethernet device. Communications received from the operating system or application are forwarded by the emulated network device to one or more destinations. However, the emulated network interface does not include a network stack to handle the communication from the application layer to the link layer. Instead, the emulated network interface extracts the payload data and destination from the communication received from the operating system or application and translates the payload data and destination to PCIe traffic, such as by encapsulating the payload data in a PCIe frame using addressing associated with the destination.
[0068] The compute unit interface 525 may include an emulated network interface as described above for the emulated network interface. Additionally, the compute unit interface 525 monitors the operation of the CPU 421 and the software executed by the CPU 421 and provides telemetry for this operation to the management processor 411. Thus, any user-provided software, such as a user-provided operating system (Windows, Linux, MacOS, Android, iOS, etc...), running jobs 491, user applications 524, or other software and drivers, may be executed by the CPU 421. The compute unit interface 525 provides functionality that allows the CPU 421 to participate in associated compute units and / or clusters and provide telemetry data to the management processor 411 via link 510. In examples where the compute unit includes physical components that utilize multiple or different communication protocols, the compute unit interface 525 may provide functionality that allows inter-protocol communication within the compute unit. The CPUs of the compute unit may also communicate with each other via an emulated network device that transmits network traffic over a PCIe fabric. The compute unit interface 525 may also provide an API for user software and operating systems to interact with the compute unit interface 525, as well as an API for exchanging control / telemetry signaling with the management processor 411.
[0069] Additionally, the compute unit interface 525 may operate as an interface to device drivers of the PCIe devices of the compute units to facilitate inter-protocol or peer-to-peer communication between device drivers of the PCIe devices of the compute units, for example, when the PCIe devices utilize different communication protocols. Additionally, the compute unit interface 525 may operate to facilitate continued operation during dynamic throttling for the compute units based on dynamic throttling policies. Additionally, the compute unit interface 525 may operate to facilitate migration to alternative hardware in the compute platform based on policies (e.g., migration from PCIe version 3.0 hardware to Gen-Z hardware based on utilization or responsiveness policies). A control element within a corresponding PCIe switch circuit may be configured to monitor PCIe communications between compute units utilizing different versions or communication protocols. As discussed above, different versions or communication protocols may be utilized within a compute platform, and in some implementations within a compute unit. In some examples, one or more PCIe switches or other devices within a PCIe fabric may operate to serve as an interface between PCIe devices utilizing different versions or communication protocols. Detected data transfers may be "trapped" and translated or converted by PCIe switch circuitry into the version or communications protocol utilized by the destination PCIe device, and then routed to the destination PCIe device.
[0070] Figure 6 is a block diagram illustrating an implementation of a management processor 600. Management processor 600 illustrates an example of any of the management processors described herein, such as management system 110 of Figure 1 or management processor 411 of Figures 4 and 5. Management processor 600 includes a communication interface 601, a job interface 602, a user interface 603, and a processing system 610. Processing system 610 includes processing circuitry 611 and a data storage system 612, which may include random access memory (RAM) 613, but may include additional or different configurations of elements.
[0071] The processing circuitry 611 may be implemented within a single processing device, but may also be distributed across multiple processing devices or subsystems that cooperate in executing program instructions. Examples of the processing circuitry 611 include general-purpose central processing units, microprocessors, application-specific processors, and logic devices, as well as any other type of processing device. In some examples, the processing circuitry 611 includes physically distributed processing devices, such as a cloud computing system.
[0072] The communication interface 601 includes one or more communication and network interfaces for communicating over a communication link, a network such as a packet network, and the Internet, etc. The communication interface can include a PCIe interface, an Ethernet interface, a serial interface, a serial peripheral interface (SPI) link, an Inter-Integrated Circuit (I2C) interface, a Universal Serial Bus (USB) interface, a UART interface, a wireless interface, or one or more local or wide area network communication interfaces that can communicate over an Ethernet or Internet Protocol (IP) link. The communication interface 601 can include a network interface configured to communicate using one or more network addresses that can be associated with different network links. Examples of the communication interface 601 include network interface card devices, transceivers, modems, and other communication circuitry. The communication interface 601 can communicate with elements of a PCIe fabric or other communication fabric to establish logical partitioning within the fabric, such as via a management or control interface of one or more communication switches of the communication fabric.
[0073] The job interface 602 comprises a network-based interface or other remote interface that receives jobs for execution from one or more external systems and provides execution job results and status to such external systems. Jobs are received via the job interface 602 and placed in the job schedule 631 for execution or other types of processing by corresponding elements of the computing platform. The job interface 602 can include a network interface, a user interface, a terminal interface, an application programming interface (API), or a representational state transfer (REST) interface, among other interfaces. In some examples, a workload manager software platform (not shown) establishes a front end for users or operators that can create, schedule, and transfer jobs for execution or processing. The job interface 602 can receive representations of these jobs from the workload manager software platform.
[0074] The user interface 603 may include a touch screen, keyboard, mouse, voice input device, audio input device, or other touch input device for receiving input from a user. Output devices such as displays, speakers, web interfaces, terminal interfaces, and other types of output devices may also be included in the user interface 603. The user interface 603 can provide output and receive input via a network interface, such as the communication interface 601. In a network example, the user interface 603 can packetize display or graphics data for remote display by a display system or computing system coupled via one or more network interfaces. The physical or logical elements of the user interface 603 can provide alerts or visual output to a user or other operator. The user interface 603 may also include associated user interface software executable by the processing system 610 that supports the various user input and output devices described above. Separately or in conjunction with each other and other hardware and software elements, the user interface software and user interface devices can support a graphical user interface, a natural user interface, or any other type of user interface.
[0075] The user interface 603 can present a graphical user interface (GUI) to one or more users. The GUI can be used by an end user or administrator to establish clusters and assign assets (compute units / machines) to each cluster. In some examples, the GUI or other portions of the user interface 603 provide an interface through which an end user can determine one or more compute unit templates and dynamic tuning policy sets to use or customize for use in creating compute units. The user interface 603 can be used to manage, select, and modify machine templates or modify policies for compute units. The user interface 603 can also provide telemetry information, such as in one or more status interfaces or status views. The status of various components or elements can be monitored via the user interface 603, such as processor / CPU status, network status, storage unit status, PCIe element status, among others. Various performance metrics, error status can be monitored using the user interface 603. The user interface 603 can provide other user interfaces other than a GUI, such as a command line interface (CLI), an application programming interface (API), or other interfaces. Portions of the user interface 603 may be provided through a websocket-based interface.
[0076] The storage system 612 and RAM 613 may both comprise non-transitory data storage systems, although variations are possible. The storage system 612 and RAM 613 may each comprise any storage medium that is readable by the processing circuit 611 and capable of storing software and OS images. The RAM 613 may include volatile and non-volatile, removable and fixed media implemented in any method or technology for storing information such as computer-readable instructions, data structures, program modules, or other data. The storage system 612 may include non-volatile storage media such as solid-state storage media, flash memory, phase-change memory, or magnetic memory, including combinations thereof. The storage system 612 and RAM 613 may each be implemented as a single storage device, but may also be implemented across multiple storage devices or subsystems. The storage system 612 and RAM 613 may each comprise additional elements, such as a controller, that may communicate with the processing circuit 611.
[0077] The software or data stored on or within the storage system 612 or RAM 613 may include computer program instructions, firmware, or any other form of machine-readable processing instructions having processes that, when executed, direct the processor 600 to operate as described herein. For example, the software 620 may drive the processor 600 to receive user commands to establish a compute unit among multiple disaggregated physical compute components, including CPUs, GPUs, SSDs, and NICs, among other components. The software 620 may drive the processor 600 to receive and monitor telemetry data, statistics, operational data, and other data to provide telemetry to a user and to modify the operation of the compute unit according to the telemetry data, policies, or other data and criteria. The software 620 may drive the processor 600 to, among other things, manage cluster and compute unit resources, establish domain or NT partitioning between communication fabric elements, and interface with individual communication switches to control the operation of such communication switches. The software may also include user software applications, application programming interfaces (APIs), or user interfaces. The software may be implemented as a single application or multiple applications. In general, when loaded and executed on a processing system, the software is capable of transforming the processing system from a general-purpose device into a customized, special-purpose device as described herein.
[0078] System software 620 illustrates a detailed view of an exemplary configuration of RAM 613. It is understood that different configurations are possible. System software 620 includes applications 621 and an operating system (OS) 622. Software applications 623-628 each include executable instructions that can be executed by processor 600 to operate a computing system or cluster controller, or to operate other circuitry in accordance with the operations described herein.
[0079] Specifically, the cluster management application 623 establishes and maintains clusters and compute units among various hardware elements of the computing platform, as shown in FIG. 1. The user interface application 624 provides one or more graphical or other user interfaces for end users to manage associated clusters and compute units and monitor the operation of the clusters and compute units. The job processing application 625 receives execution jobs via the job interface 602 and analyzes the execution jobs for scheduling / queuing along with a representation of the computational components required for processing / executing the job in the composite compute units. The job processing application 625 also indicates the job software or data that needs to be deployed to the composite compute units for execution of the job, as well as what data, status, or results need to be transferred via the job interface 602 for the job. The inter-module communication application 626 provides communication between other processor 600 elements, such as I2C, Ethernet, emulated network device, or PCIe interfaces. The inter-module communication application 626 enables communication between the processor 600 and the composite compute units, as well as communication between other elements. The user CPU interface 627 provides communications, APIs, and emulated network devices for communicating with the processors of the compute units and their dedicated driver elements. The fabric interface 628 establishes various logical divisions or domains between the communication fabric circuit elements, such as the PCIe switch elements of a PCIe fabric. The fabric interface 628 also controls the operation of the fabric switch elements and receives telemetry from the fabric switch elements. The fabric interface 628 also establishes address trap or address redirection functions within the communication fabric.The fabric interface 628 can interface with one or more fabric switch circuit elements to establish address ranges that are monitored and redirected, thus forming address traps within the communications fabric.
[0080] In addition to the software 620, other data 630 may be stored by the storage system 612 and RAM 613. The data 630 may include a job schedule 631 (or job queue), templates 632, machine policies 633, telemetry agents 634, telemetry data 635, and fabric data 636. The job schedule 631 includes an indication of the job identifier, job resources required to execute the job, and various other job information. This other job information may include timestamps of receipt, execution start / end, and other information. The job schedule 631 may include one or more data structures that hold a temporal representation of the executing job and associated computational components required for inclusion in a composite computational unit for execution / processing of the executing job. The templates 632 include specifications or descriptions of various predefined hardware or machine templates. The templates 632 may also include lists or data structures of components and component properties that may be used for template creation or template tuning. The machine policies 633 include specifications or descriptions of various predefined machine policies. These machine policy specifications may include lists of criteria, triggers, thresholds, limits, or other information, as well as an indication of the components or fabric that are affected by the policy. Machine policy 633 may also include lists or data structures of policy factors, criteria, triggers, thresholds, limits, or other information that may be used for policy creation or policy tuning. Telemetry agents 634 may include software elements that may be deployed to components within the compute unit to monitor the operation of the compute unit. Telemetry agents 634 may include hardware / software parameters, telemetry device addressing, or other information used to interface with monitoring elements such as IPMI-compliant hardware / software of the compute unit and communication fabric.Telemetry data 635 includes a data store of received data from telemetry elements of various computing units, which may include telemetry data or monitoring data. Telemetry data 635 may organize data into computing unit arrangements, communication fabric arrangements, or other structures. Telemetry data 635 may be cached as data 630 and then forwarded to other elements of the computing system or used for presentation via a user interface. Fabric data 636 includes information and properties of various communication fabrics, including pools of resources or pools of components, such as fabric type, protocol version, technology descriptors, header requirements, addressing information, and other data. Fabric data 636 may include relationships between components and the particular fabrics to which they connect.
[0081] The software 620 may reside in RAM 613 during execution and operation of the processor 600 and may reside in a non-volatile portion of the storage system 612 during a powered off state, among other locations and states. The software 620 may be loaded into RAM 613 during a start-up or boot procedure, as described for computer operating systems and applications. The software 620 may receive user input via the user interface 603. This user input may include user commands, as well as other inputs including combinations thereof.
[0082] Storage system 612 may include flash memory, such as NAND flash or NOR flash memory, phase change memory, magnetic memory, among other solid state storage technologies. As shown in Figure 6, storage system 612 includes software 620. As mentioned above, software 620 may be in non-volatile storage space for applications and the OS during a powered down state of processor 600, among other operating software.
[0083] Processor 600 is intended to generally represent a computing system onto which at least software 620 is deployed and executed to render or otherwise perform the operations described herein, however, processor 600 may also represent any computing system onto which at least software 620 may be staged, from which software 620 may be deployed and executed, or distributed, transferred, downloaded, or provided to yet another computing system for further distribution.
[0084] The systems and operations described herein provide for dynamic allocation of computational resources (CPUs), graphics processing resources (GPUs), network resources (NICs), or storage resources (SSDs) to a computational cluster comprising computational units. Computational units reside in a pool of unused, unallocated, or free components until they are decomposed and assigned (composited) to computational units. A management processor controls the composition and decomposition of computational units and can provide an interface to external users, job management software, or orchestration software. Processing resources and other elements (graphics processing, network, storage, FPGA, or other) can be swapped in and out of computational units and associated clusters on the fly, and these resources can be assigned to other computational units or clusters. In one example, graphics processing resources can be dispatched / orchestrated by a first computational resource / CPU and subsequently provide graphics processing status / results to another computational unit / CPU. In another example, if a resource fails, hangs, or is overloaded, additional resources can be introduced into the computational units and clusters to supplement the resources.
[0085] Processing resources (e.g., CPUs) can be assigned unique identifiers for use in identification by management processors and on the PCIe fabric. User-supplied software, such as operating systems and applications, can be deployed to processing resources as needed when CPUs are initialized after being added to compute units, and the user-supplied software can be removed from CPUs when those CPUs are removed from compute units. User software can be deployed from a storage system that the management processor can access for deployment. Storage resources, such as storage drives, storage devices, and other storage resources, can be allocated and subdivided among compute units / clusters. These storage resources can span different or similar storage drives or devices and can have any number of logical units (LUNs), logical targets, partitions, or other logical arrangements. These logical arrangements can include one or more LUNs, iSCSI LUNs, NVMe targets, or other logical partitions. Arrays of storage resources can be used, such as mirrored, striped, Redundant Array of Independent Disks (RAID) arrays, or other array configurations can be used across the storage resources. Network resources such as network interface cards can be shared between compute units of a cluster using bridging or spanning techniques. Graphics resources (e.g., GPUs) or FPGA resources can be shared between two or more compute units of a cluster using NT partitioning or domain-based partitioning on the PCIe fabric and PCIe switches.
[0086] The functional block diagrams, operational scenarios and sequences, and flow diagrams provided in the figures represent exemplary systems, environments, and methodologies for implementing novel aspects of the present disclosure. For ease of explanation, the methods included herein may be in the form of functional diagrams, operational scenarios or sequences, or flow diagrams, and may be described as a series of operations, but it should be understood and appreciated that the methods are not limited by the order of operations, since some operations may be performed in different orders and / or simultaneously with other operations according to the present disclosure. For example, those skilled in the art will understand and appreciate that a method may alternatively be represented as a series of interrelated states or events, such as a state diagram. Furthermore, not all operations illustrated in a methodology are required for a novel implementation.
[0087] The description and figures contained herein show specific implementations to teach those skilled in the art how to make and use the best options. For the purpose of teaching the principles of the invention, some conventional aspects have been simplified or omitted. Those skilled in the art will appreciate variations from these implementations that fall within the scope of the present disclosure. Those skilled in the art will also appreciate that the features described above can be combined in various ways to form multiple implementations. As a result, the present invention is not limited to the specific implementations described above, but only by the claims and their equivalents.
Claims
1. receiving an execution job directed to a compute cluster including a pool of compute components coupled to at least one communications fabric, the pool of compute components including a plurality of decomposed physical compute components; determining a resource scheduling for processing the running job based on properties of the running job, the resource scheduling indicating a time allocation of resources of the computing cluster; determining a resource allocation for processing the execution job directed to the compute cluster by dividing the execution job into at least a number of units of work, each unit of work corresponding to a portion of a data set to be processed; initiating the job execution on the computing cluster according to the resource scheduling by at least instructing the communications fabric to synthesize a computing unit including a set of computing components selected from among the pool of computing components to process the work units of the job execution, the set of computing components including at least a central processing unit and a co-processing unit; distributing each work unit to the computational units such that a corresponding co-processing unit of each of the computational units processes a data set of the corresponding work unit; in response to completion of the work unit of the job execution, the computational components of the computational unit are decomposed back to the pool of computational components; The method includes:
2. 2. The method of claim 1, further comprising the step of instructing the communications fabric to deploy software components to the computing units to perform the execution job upon each of the computing units being formed in accordance with the resource scheduling.
3. 2. The method of claim 1, further comprising the step of instructing the communications fabric to decompose the compute units such that computational components of the compute units are available for composition into additional compute units in response to completion of the job execution.
4. 2. The method of claim 1, wherein the resource scheduling includes one or more data structures for: an identifier for the execution job; an indication of the set of the computational components required to execute each of the execution jobs; a time window to begin compositing and decompositing the computational units; and an indication of software components to deploy to the computational units for the execution job.
5. 2. The method of claim 1, wherein the pool of computing components includes at least a central processing unit (CPU), a co-processing unit, a graphics processing unit (GPU), a tensor processing unit (TPU), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a storage drive, and a network interface controller (NIC) coupled to the communications fabric.
6. The method of claim 5 , wherein the pool of computing components comprises computing components coupled to two or more communications fabrics, each of which includes a different communications protocol.
7. 2. The method of claim 1, wherein the communications fabric comprises a communications protocol from at least one of Peripheral Component Interconnect Express (PCIe), Gen-Z, Compute Express Link (CXL), NVLink, Cache Coherent Interconnect for Accelerators (CCIX), Open Coherent Accelerator Processor Interface (OpenCAPI), Ethernet, InfiniBand, and FibreChannel.
8. one or more computer readable storage media; a processing system operatively coupled to the one or more computer readable storage media; program instructions stored on the one or more computer-readable storage media that, when read and executed by the processing system, The processing system includes at least receiving an execution job instructing a compute cluster including a pool of compute components coupled to at least one communications fabric, the pool of compute components including a plurality of decomposed physical compute components; determining a resource scheduling for processing the running job based on properties of the running job, the resource scheduling indicating a time allocation of resources of the computing cluster; determining a resource allocation for processing the execution job directed to the compute cluster by dividing the execution job into at least a number of units of work each corresponding to a portion of a data set to be processed; initiating the job execution on the computing cluster in accordance with the resource scheduling by at least instructing the communications fabric to configure a computing unit including a set of computing components selected from among the pool of computing components to process the work units of the job execution, the set of computing components including at least a central processing unit and a co-processing unit; deploying each work unit to the computational units such that a corresponding co-processing unit of each of the computational units processes a data set of the corresponding work unit; program instructions directing, in response to completion of the work unit of the execution job, the computational components of the computational unit being decomposed and returned to the pool of computational components; 13. An apparatus comprising:
9. Based on the execution by the processing system, the processing system is configured to:
10. The apparatus of claim 8, further comprising program instructions directing, upon formation of each of the computing units according to the resource scheduling, to instruct the communications fabric to deploy software components to the computing units to perform the execution job.
10. Based on the execution by the processing system, the processing system is configured to:
10. The apparatus of claim 8, further comprising program instructions directing, in response to the completion of the job execution, to instruct the communications fabric to decompose the compute units such that computational components of the compute units are available for composition into additional compute units.
11. 10. The apparatus of claim 8, wherein the resource scheduling includes one or more data structures for: an identifier for the execution job; an indication of the set of the computational components required to execute each of the execution jobs; a time window to begin compositing and decompositing the computational units; and an indication of software components to deploy to the computational units for the execution job.
12. 9. The apparatus of claim 8, wherein the pool of computing components includes at least a central processing unit (CPU), a co-processing unit, a graphics processing unit (GPU), a tensor processing unit (TPU), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a storage drive, and a network interface controller (NIC) coupled to the communications fabric.
13. The apparatus of claim 12 , wherein the pool of computing components comprises computing components coupled to two or more communications fabrics, each of which includes a different communications protocol.
14. 9. The apparatus of claim 8, wherein the communications fabric comprises a communications protocol from at least one of Peripheral Component Interconnect Express (PCIe), Gen-Z, Compute Express Link (CXL), NVLink, Cache Coherent Interconnect for Accelerators (CCIX), Open Coherent Accelerator Processor Interface (OpenCAPI), Ethernet, InfiniBand, and FibreChannel.
15. 1. A computing system comprising: a job interface configured to receive an execution job for processing by the computing system; a management processor, forming a free pool of computing components coupled to at least one communications fabric, the free pool of computing components including a plurality of decomposed physical computing components; determining a resource scheduling for processing the running job based on properties of the running job, the resource scheduling indicating a time allocation of resources from a free pool of the computing component; determining a resource allocation for processing the execution job directed to the compute cluster by dividing the execution job into at least a number of units of work each corresponding to a portion of a data set to be processed; initiating the job execution according to the resource scheduling by at least synthesizing a computing unit including a set of computing components selected from the free pool of computing components for processing the work units of the job execution, the set of computing components including at least a central processing unit and a co-processing unit; When each of the computing units is formed according to the resource scheduling, deploying software components to the computing units to execute the job of execution, and deploying each work unit to the computing units such that a corresponding co-processing unit of each of the computing units processes a data set of the corresponding work unit; in response to completion of the work unit of the job of execution, decomposing the computational components of the computational units such that the computational components of the computational units are available for composition into additional computational units; a management processor configured to: A computing system comprising:
16. 16. The computing system of claim 15, wherein the resource scheduling includes one or more data structures for: an identifier for the execution job; an indication of the set of the computing components required to execute each of the execution jobs; a time frame to begin configuring and decomposing the computing units; and an indication of software components to deploy to the computing units for the execution job.
17. 16. The computing system of claim 15, wherein the pool of computing components includes at least a central processing unit (CPU), a co-processing unit, a graphics processing unit (GPU), a tensor processing unit (TPU), a field programmable gate array (FPGA), an application specific integrated circuit (ASIC), a storage drive, and a network interface controller (NIC) coupled to the communications fabric.
Citation Information
Patent Citations
Distributed system, resource allocation method, program, and recording medium with which resource allocation program is recorded
JP2004046372A
Method and Apparatus for On-Demand Synthesis and Decomposition of Service Infrastructure
JP2009540469A
Composed Computing Systems With Converged And Disaggregated Component Pool
US20200344125A1