The present disclosure relates to server resource management, and more specifically, to a method and apparatus for allocating functions to Field Programmable Gate Arrays (FPGAs) of a server based on software running in the server
In related art implementations, FPGAs are implemented for various computer systems in enterprise. For example, FPGA can be used for eliminating the performance bottleneck of the software running in servers. However, improving flexibility by avoiding hardware dependencies is also important in enterprise computer system.
In a related art implementation, FPGA functions of a server can be utilized if the software running in the server can support the function of the FPGA. An example of such a related art implementation can include an open, elastic provisioning of hardware acceleration in a network functions virtualization (NFV) environment.
In related art implementations, FPGAs may be not efficiently allocated. Example implementations described herein are directed to methods and apparatuses for allocating functions to the FPGA(s) of a server based on software running in the server.
Aspects of the present disclosure include a system which can involve a computer server. The computer server can include one or more accelerators; one or more processors; a memory configured to manage a first relationship between a plurality of software and a plurality of functions supported by the one or more accelerators, a second relationship between the plurality of software and one or more assigned accelerators from the one or more accelerators; and a function module executed by a processor from the one or more processors, the execution of the function module causing the processor to be configured to, for receipt of an execution of a function from the plurality of functions by a software from the plurality of software, determine, from the second relationship, an existence of an assigned accelerator from one or more accelerators for the software from the plurality of software; and determine whether to execute the function on the assigned accelerator or on the one or more processors.
Aspects of the present disclosure can further include a computer program, storing instructions for executing a process, the instructions including managing a first relationship between a plurality of software and a plurality of functions supported by one or more accelerators; managing a second relationship between the plurality of software and one or more assigned accelerators from the one or more accelerators; for receipt of an execution of a function from the plurality of functions by a software from the plurality of software, determining, from the second relationship, an existence of an assigned accelerator from the one or more accelerators for the software from the plurality of software; and determining whether to execute the function on the assigned accelerator or on one or more processors. The instructions may be stored on a non-transitory computer readable medium.
Aspects of the present disclosure can further include a method, which can include managing a first relationship between a plurality of software and a plurality of functions supported by one or more accelerators; managing a second relationship between the plurality of software and one or more assigned accelerators from the one or more accelerators; for receipt of an execution of a function from the plurality of functions by a software from the plurality of software, determining, from the second relationship, an existence of an assigned accelerator from the one or more accelerators for the software from the plurality of software; and determining whether to execute the function on the assigned accelerator or on one or more processors.
Aspects of the present disclosure can further include an apparatus, which can include means for managing a first relationship between a plurality of software and a plurality of functions supported by one or more accelerators; means for managing a second relationship between the plurality of software and one or more assigned accelerators from the one or more accelerators; for receipt of an execution of a function from the plurality of functions by a software from the plurality of software, means for determining, from the second relationship, an existence of an assigned accelerator from the one or more accelerators for the software from the plurality of software; and means for determining whether to execute the function on the assigned accelerator or on one or more processors.
The following detailed description provides further details of the figures and example implementations of the present application. Reference numerals and descriptions of redundant elements between figures are omitted for clarity. Terms used throughout the description are provided as examples and are not intended to be limiting. For example, the use of the term “automatic” may involve fully automatic or semi-automatic implementations involving user or administrator control over certain aspects of the implementation, depending on the desired implementation of one of ordinary skill in the art practicing implementations of the present application. Selection can be conducted by a user through a user interface or other input means, or can be implemented through a desired algorithm. Example implementations as described herein can be utilized either singularly or in combination and the functionality of the example implementations can be implemented through any means according to the desired implementations.
Management server 105 can include Memory 150 and CPU 161. The Memory 150 is configured to store Assignment manager 151, System configuration table 152, Software repository 153, Function repository 154, and Job flow manager 155. One or more networks 102 can be configured to connect between each of the servers 101 and Management server 105.
As illustrated in
The execution of the function module 111 can cause the processor from the one or more processors 120 to be configured to, for the assigned accelerator determined to exist, disable assignments of the assigned accelerator from other software associated with the assigned accelerator in the second relationship as described in the flows of 1113 to 1115 of
Execution of the function module 111 can also cause the processor from the one or more processors 120 to be configured to, for the determination of the assigned accelerator from one or more accelerators for the software from the one or more software not existing, assign an accelerator from the one or more accelerators and load the function to the accelerator as described, for example, in the flows of
Management server 105 can be communicatively connected to the computer server 101 via network 102. The management server can include an assignment manager 151, that when executed by a processor 161 of the management server, causes the processor of the management server to be configured to, for a software deployment request associated with the software from the plurality of software, determine whether to execute the function on the assigned accelerator or on the one or more processors based on a system configuration of the computer server and support for the function in the assigned accelerator based on the first relationship; for the determination to execute the function on the assigned accelerator, provide the function from the plurality of functions for loading into the assigned accelerator by the computer server and instruct the computer server to execute the function from the plurality of functions in the assigned accelerator; and for the determination to execute the function on the one or more processors, instruct the computer server to execute the function from the plurality functions on the one or more processors as described, for example, in the flow of
The execution of the assignment manager 151 can further cause the processor 161 of the management server 105 to be configured to select the computer server as a target server for the software deployment request based on at least one of the first relationship of the computer server and resource capacity of the computer server as described in
Management server 105 can also include a job flow manager 155 that when executed by the processor 161 of the management server, causes the processor 161 to be configured to evaluate a performance of a requested job flow based on a sequence of the software associated with the job flow and an effect on a function repository; determine whether to assign or not assign an accelerator based on the performance evaluation, and provide the determination to the computer server as described, for example, in
In a first example implementation, there is the allocation of a function to an FPGA.
At 1112, a determination is made as to whether the function has been assigned to the software based on Software table 113. That is, based on the relationship between the function and the software as indicated in software table 113, a check is performed for determining if a corresponding assigned accelerator exists. For the accelerator assigned determined to exist (Yes), then the flow proceeds to 1113, otherwise (No), the flow proceeds to 1116 to execute the function on the one or more processors (e.g. in software).
The flow proceeds to determine whether the function should be executed on the assigned accelerator or to the one or more processors (e.g. in software). At 1113, the function module determines whether to execute the function on the assigned accelerator or on the one or more processors based on an availability of the assigned accelerator. A determination is made as to the availability of the accelerator(s) that are assigned to the software. For example, Function Module 111 communicates with Accelerator 130 that is assigned to the software, and the accelerator provides a response as to whether the accelerator is available or unavailable. At 1114, if the response from the accelerator is available (Yes), then the flow proceeds to 1115, otherwise (No), the flow proceeds to 1116.
At 1115, the function of the accelerator is executed with the provided parameter. Then, the accelerator executes the function in hardware at 1117. If the accelerator has its own memory or buffers and requires the storing of data for the function before executing the function, the function module 111 is configured to store the data.
At 1116, the function is executed in software by the CPU. At 1117, the accelerator assigned to the software executes the function. At 1118, the result of the execution is returned to the software.
At 1142, the function loader checks the status of target accelerator based on Accelerator table 112, Software table 113, and checking availability of the target accelerator. If the function has not been loaded in the target accelerator and the target accelerator is available, then the flow proceeds to 1143. Before proceeding to the flow at 1143, the function loader disables all assignments of the target assigned accelerator from the other software as indicated by the relationships in the software table 113, and updates the Software table 113. If the function has already been loaded in the target assigned accelerator, then the flow ends and the function is executed on the target assigned accelerator.
At 1143, for the assigned accelerator not having the function from the plurality of functions, the function is loaded from one of a local function repository and a management server. The function loader extracts the function data from local function repository. If the function data does not exist in the repository, then the function data will be transferred from Management server by the requesting assignment manager.
At 1144, the function loader loads the function data to the target accelerator. This may be implemented by using a specific interface or method, and implemented depending on the type of accelerator.
At 1145, when the loading process of 1144 is finished, the function loader updates the Accelerator table.
At 1513, the assignment manager checks the current system configuration based on the System configuration table 152. Before this, Assignment manager is configured to update the System configuration table by gathering information of Accelerator table 112 and Software table 113 of each server.
At 1514, the assignment manager decides the target server based on current system configuration gathered from 1513. If the client specifies the target server by using the parameter of the interface provided by the assignment manager from 1511, the target server will be selected. Otherwise, if the target server is not supplied, the assignment manager can consider the following factors to determine the selection of a target server and/or selection of execution of the function on the assigned accelerator or the one or processors:
(1) Capacity of resources (e.g. CPU, Memory, Storage, input/output, other system configurations) is sufficient for running the software.
(2) If the software supports the function of the accelerator, there is unassigned accelerator.
If the parameter of the interface specifies to not assign the function to the software, or if any of the servers do not match the function, then the target server can be considered based on the capacity of resources, and the function is loaded from Function repository 154 and transferred to the Local function repository 115 of the target server, whereupon the flow proceeds to 1516.
At 1515, the assignment manager sends a load request to the function loader 114 of the target server determined at 1514. At 1516, the assignment manager deploys the software onto the target server. For deploying software, Assignment manager and Server may utilize various methods such as the virtual machine, container, application streaming, and so on. In this matter, the function can be provided to the computer server to be loaded into the assigned accelerator by the computer server. Thereupon, the computer server can be instructed to execute the function in the assigned accelerator, thereby providing the determination whether to execute the function in the processors or the assigned accelerator directly to the computer server.
In a second example implementation, there is dynamic function loading available after deploying the software. In this example implementation, when software stops or becomes inactive, the Function module 111 detects the software and disables the assignment of the accelerator of the software and update Software table 113.
At 2001, the function module determines if there is an assigned accelerator. If the software has the supported function and there is an accelerator that has not been assigned to any software (Yes), the flow proceeds to the flow at 2002. Otherwise (No), the flow proceeds to 1116.
At 2002, the function module requests the function loader to load the supported function of the software. At 2003, the function loader loads the function by executing the function loader flow from
In a third example implementation, there is an optimization of accelerator assignment based on job flow.
At 1551, the job flow manager obtains a job flow from the client, such as the one described in
For example, from the use of the greedy algorithm, when a new job is received and there is an unassigned accelerator, the job flow manager assigns the accelerator to the new job. For another example, based on number of paths and the number of inputs or outputs to other jobs, if a job has many paths, then the job get priority to the assigned accelerator.
At 1554, for each software, the job manager determines whether to assign (Yes) or not assign (No) an accelerator based on evaluation in the flow at 1553. If the job manager determines to assign an accelerator (Yes), then the flow proceeds to 1555 to call the assignment manager with the assigning accelerator flow described in
Some portions of the detailed description are presented in terms of algorithms and symbolic representations of operations within a computer. These algorithmic descriptions and symbolic representations are the means used by those skilled in the data processing arts to convey the essence of their innovations to others skilled in the art. An algorithm is a series of defined steps leading to a desired end state or result. In example implementations, the steps carried out require physical manipulations of tangible quantities for achieving a tangible result.
Unless specifically stated otherwise, as apparent from the discussion, it is appreciated that throughout the description, discussions utilizing terms such as “processing,” “computing,” “calculating,” “determining,” “displaying,” or the like, can include the actions and processes of a computer system or other information processing device that manipulates and transforms data represented as physical (electronic) quantities within the computer system's registers and memories into other data similarly represented as physical quantities within the computer system's memories or registers or other information storage, transmission or display devices.
Example implementations may also relate to an apparatus for performing the operations herein. This apparatus may be specially constructed for the required purposes, or it may include one or more general-purpose computers selectively activated or reconfigured by one or more computer programs. Such computer programs may be stored in a computer readable medium, such as a computer-readable storage medium or a computer-readable signal medium. A computer-readable storage medium may involve tangible mediums such as, but not limited to optical disks, magnetic disks, read-only memories, random access memories, solid state devices and drives, or any other types of tangible or non-transitory media suitable for storing electronic information. A computer readable signal medium may include mediums such as carrier waves. The algorithms and displays presented herein are not inherently related to any particular computer or other apparatus. Computer programs can involve pure software implementations that involve instructions that perform the operations of the desired implementation.
Various general-purpose systems may be used with programs and modules in accordance with the examples herein, or it may prove convenient to construct a more specialized apparatus to perform desired method steps. In addition, the example implementations are not described with reference to any particular programming language. It will be appreciated that a variety of programming languages may be used to implement the teachings of the example implementations as described herein. The instructions of the programming language(s) may be executed by one or more processing devices, e.g., central processing units (CPUs), processors, or controllers.
As is known in the art, the operations described above can be performed by hardware, software, or some combination of software and hardware. Various aspects of the example implementations may be implemented using circuits and logic devices (hardware), while other aspects may be implemented using instructions stored on a machine-readable medium (software), which if executed by a processor, would cause the processor to perform a method to carry out implementations of the present application. Further, some example implementations of the present application may be performed solely in hardware, whereas other example implementations may be performed solely in software. Moreover, the various functions described can be performed in a single unit, or can be spread across a number of components in any number of ways. When performed by software, the methods may be executed by a processor, such as a general purpose computer, based on instructions stored on a computer-readable medium. If desired, the instructions can be stored on the medium in a compressed and/or encrypted format.
Moreover, other implementations of the present application will be apparent to those skilled in the art from consideration of the specification and practice of the teachings of the present application. Various aspects and/or components of the described example implementations may be used singly or in any combination. It is intended that the specification and example implementations be considered as examples only, with the true scope and spirit of the present application being indicated by the following claims.
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/US16/66228 | 12/12/2016 | WO | 00 |