IP Library Granted Patent US 11,614,927
Granted Patent B2
US 11,614,927 · App. 17/432,701 · Granted Mar 28, 2023

Off-load servers software optimal placement method and program

Inventor: Yoji Yamato (Musashino, JP)
Assignee: Nippon Telegraph and Telephone Corporation
G06F8/60G06F8/41
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 11,614,927
App. No.
17/432,701
Granted
Mar 28, 2023
Kind
B2
Abstract

A software deployment method includes: analyzing a source code of an application; designating off-loadable processes of the application; performing a code conversion of the application according to a deployment destination environment; measuring the performance of the converted application on a verification device; making a setting for resource amounts according to the deployment destination environment; selecting a deployment place by calculating a deployment destination on the basis of a performance and a cost when the converted application is deployed while ensuring the resource amounts; performing, after deployment to an actual environment, a performance measurement test process to measure an actual performance of application; and performing, after performing the performance measurement test process, one or more of performing the code conversion, making the setting for resource amounts, selecting the deployment place, measuring the performance of the application on the verification device, and performing the performance measurement test process.

Claims (73)

1. A method of optimal software deployment by an off-load server configured to off-load specific processing of an application to an accelerator,

the method being executed by a processor of the off-load server, the method comprising steps of:

analyzing a source code of the application;

designating off-loadable processes of the application, the off-loadable processes each comprising a loop statement that can be processed in parallel, a functional block of specific processing, or a library call;

performing a code conversion according to a deployment destination environment;

performing a verification environment performance measurement process comprising compiling the application to which the code conversion has been performed, deploying the compiled application to an accelerator verification device, and executing processing for measuring a first performance of the compiled application in a first event of off-loading the off-loadable processes of the compiled application to the accelerator verification device;

repeating the steps of analyzing the source code of the application, designating the off-loadable processes of the application, performing the code conversion, and performing the verification environment performance measurement process;

making a setting for resource amounts according to the deployment destination environment;

selecting a deployment place by calculating a deployment destination on a basis of a second performance and a cost when the converted code converted by the step of performing the code conversion is deployed while ensuring the resource amounts set by the step of making a setting for the resource amounts;

after deployment to an actual environment, performing a performance measurement test process comprising recompiling the application, deploying the recompiled application to an operation device, and performing a measurement test for measuring an actual performance in a second event of off-loading the application to the operation device;

after the step of performing the performance measurement test process, performing one or more of the step of performing the code conversion, the step of making the setting for resource amounts, the step of selecting the deployment place, the step of performing the verification environment performance measurement process, and the step of performing the performance measurement test process; and

performing a reconfiguration reconfiguring software settings when an initially expected performance is not achieved after an operation of the application is started, wherein the step of performing the reconfiguration comprises:

constructing a reconfiguration destination and performing migration processing, to change software settings;

performing a trial simulation of code conversion processing in a cyclic manner or when the performance is reduced to a threshold value or less;

proposing a reconfiguration to a user when there is a prospect of improvement in performance and cost by performing a code conversion to change a software logic of GPU off-loading and/or to change a hard logic of a field programmable gate array (FPGA); and,

upon approval from the user, changing the software logic of GPU off-loading in a third event of performing the reconfiguration, wherein when changing a software configuration, the step of performing migration processing comprises migrating data of the application after creating a migration destination environment, in which an updated execution file is to be launched, and wherein when changing the hard logic of the FPGA, either:

the step of performing migration processing comprises preparing an FPGA whose hard logic has been configured in the migration destination and performing a migration of a container configured to control the FPGA; or

the performing the reconfiguration comprises reconfiguring the hard logic of the FPGA.

2. The method according to claim 1 , further comprising:

performing an off-load pattern creation process comprising excluding loop statements causing a compilation error from loop statements to be off-loaded and creating a plurality of off-load processing patterns each of which specifies whether to perform off-load processing for each of the loop statements not causing the compilation error; and

performing an execution file creation process comprising selecting an off-load processing pattern with a highest processing performance from the plurality of off-load processing patterns on a basis of a result of performance measurements repeated for a predetermined number of times and compiling the application according to the off-load processing pattern with the highest processing performance to create an execution file,

wherein the step of designating the off-loadable processes of the application comprises setting a number of the loop statements not causing a compilation error as a gene length according to a genetic algorithm,

wherein the step of performing the off-load pattern creation process comprises preparing gene patterns whose number is specified as a number of individuals, whose gene values are each randomly assigned a value of 1 or 0, and to which accelerator processing availability is mapped in such a manner that performing accelerator processing is assigned one of 1 and 0 and not performing acceleration processing is assigned the other of 1 and 0,

wherein the step of performing the verification environment performance measurement process comprises:

compiling, according to each of the individuals, an application code in which directives specifying parallel processes by the accelerator are specified;

deploying the compiled application code to the accelerator verification device; and

performing processing for measuring the performance of the individual on the accelerator verification device, and

wherein the step of performing the execution file creation process comprises:

performing a performance measurement for all the individuals; evaluating the individuals in such a manner that an individual with less processing time is given a higher degree of fitness;

selecting an individual having a degree of fitness higher than a predetermined value from all the individuals as an individual with a high performance;

creating next-generation individuals by performing crossover and mutation processes on the selected individual; and

after completing processing for a specified number of generations, selecting an off-load pattern with a highest performance as a solution.

3. The method according to claim 1 ,

wherein the deployment destination environment includes a field programmable gate array (FPGA) as the accelerator, and

wherein the step of designating the off-loadable processes of the application comprises:

identifying, from an application processing structure including functional block processing and library calls, the off-loadable processes which include the functional block processing and the library calls and which are off-loadable to the FPGA, with reference to a code pattern database (DB); and

putting definition information of an intermediate language from the code pattern DB into an application source code by substitution, the definition information corresponding to a code for off-loading the off-loadable processes.

4. The method according to claim 1 ,

wherein the step of making the setting for the resource amounts comprises:

determining, based on a processing time of an application test case, a resource ratio between a CPU and an off-load destination such that a processing time of the CPU and a processing time of the off-load destination are of equal orders; and,

after determining the resource ratio, setting resource amounts such that processing performance of an assumed test case satisfies a required performance and a cost, while keeping the resource ratio.

5. The method according to claim 1 ,

wherein the step of selecting the deployment place comprises:

calculating, based on a result of an application test case, an amount of calculation and an amount of traffic that would be generated in the first event of deploying the application;

modeling a relationship of links between devices including clouds, edges, and Home Gateways (GWs); and

under a constraint that a cost incurred when the application is deployed on a specific node satisfies a requirement, calculating either a deployment that maximizes the performance regarding a processing delay and/or a throughput or a deployment that minimizes the cost in such a manner that the performance satisfies a requested condition.

6. The method according to claim 1 ,

wherein the step of constructing the reconfiguration destination comprises:

making a trial calculation of the resource amounts setting and deployment place selection in a trial simulation, in a cyclic manner or when the performance is reduced to a threshold or less, to calculate a performance improvement and a degree of cost reduction;

when there is a prospect of improvement in performance and cost through a change of the resource amounts and/or through a change of the deployment place, proposing a reconfiguration to a user; and

upon approval from the user, changing a resource when performing the reconfiguration, and

wherein the step of performing migration processing comprises:

creating the migration destination environment in a fourth event of changing the deployment place; and

performing migration of a application execution environment to the created environment from a migration source.

7. A non-transitory computer-readable medium storing a computer program configured to cause an off-load server to execute a method of software deployment, the off-load server configured to off-load specific processing of an application to an accelerator,

the method comprising steps of:

analyzing a source code of the application;

designating off-loadable processes of the application, the off-loadable processes each comprising a loop statement that can be processed in parallel, a functional block of specific processing, or a library call;

performing a code conversion according to a deployment destination environment;

performing a verification environment performance measurement process comprising compiling the application to which the code conversion has been performed, deploying the compiled application to an accelerator verification device, and executing processing for measuring a first performance of the compiled application in a first event of off-loading the off-loadable processes of the compiled application to the accelerator verification device;

repeating the steps of analyzing the source code of the application, designating the off-loadable processes of the application, performing the code conversion, and performing the verification environment performance measurement process;

making a setting for resource amounts according to the deployment destination environment;

selecting a deployment place by calculating a deployment destination on a basis of a second performance and a cost when the converted code converted by the step of performing the code conversion is deployed while ensuring the resource amounts set by the step of making a setting for the resource amounts;

after deployment to an actual environment, performing a performance measurement test process comprising compiling recompiling the application, deploying the recompiled application to an operation device, and performing a measurement test for measuring an actual performance in a second event of off-loading the application to the operation device;

after the step of performing the performance measurement test process, performing one or more of the step of performing the code conversion, the step of making the setting for resource amounts, the step of selecting the deployment place, the step of performing the verification environment performance measurement process, and the step of performing the performance measurement test process; and

performing a reconfiguration reconfiguring software settings when an initially expected performance is not achieved after an operation of the application is started,

wherein the step of performing the reconfiguration comprises:

constructing a reconfiguration destination and performing migration processing, to change software settings;

performing a trial simulation of code conversion processing in a cyclic manner or when the performance is reduced to a threshold value or less:

proposing a reconfiguration to a user when there is a prospect of improvement in performance and cost by performing a code conversion to change a software logic of GPU off-loading and/or to change a hard logic of a field programmable gate array (FPGA); and,

upon approval from the user, changing the software logic of GPU off-loading in a third event of performing the reconfiguration, wherein when changing a software configuration, the step of performing migration processing comprises migrating data of the application after creating a migration destination environment, in which an updated execution file is to be launched, and wherein when changing the hard logic of the FPGA, either:

the step of performing migration processing comprises preparing an FPGA whose hard logic has been configured in the migration destination and performing a migration of a container configured to control the FPGA; or

the performing the reconfiguration comprises reconfiguring the hard logic of the FPGA.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 15, 2023
From: YAMATO, YOJI
To: NIPPON TELEGRAPH AND TELEPHONE CORPORATION
Reel/Frame 062986/0518 →
Priority Claims (1)
JP JP2019-030871 · Feb 22, 2019 · national
Continuity (1)
Related Publication 20220188086A1 · Jun 16, 2022