WO2014002412A1 - プログラム変換装置及び方法、処理切替方法、実行方式決定方法及びプログラム記憶媒体、プロセッサシステム並びに並列実行方法 - Google Patents

プログラム変換装置及び方法、処理切替方法、実行方式決定方法及びプログラム記憶媒体、プロセッサシステム並びに並列実行方法 Download PDF

Info

Publication number
WO2014002412A1
WO2014002412A1 PCT/JP2013/003684 JP2013003684W WO2014002412A1 WO 2014002412 A1 WO2014002412 A1 WO 2014002412A1 JP 2013003684 W JP2013003684 W JP 2013003684W WO 2014002412 A1 WO2014002412 A1 WO 2014002412A1
Authority
WO
WIPO (PCT)
Prior art keywords
execution method
program
processor
ratio
execution
Prior art date
Application number
PCT/JP2013/003684
Other languages
English (en)
French (fr)
Inventor
孝道 宮本
Original Assignee
日本電気株式会社
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 日本電気株式会社 filed Critical 日本電気株式会社
Priority to US14/411,256 priority Critical patent/US9483324B2/en
Priority to JP2014522403A priority patent/JPWO2014002412A1/ja
Publication of WO2014002412A1 publication Critical patent/WO2014002412A1/ja

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5011Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5066Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/509Offload

Definitions

  • the present invention relates to a program conversion apparatus and method, a process switching method and program, an execution method determination method and program, and a processor system that cause a sub processor to execute a part of a main processor program in a processor system including a main processor and a sub processor. It relates to a parallel execution method.
  • Server systems equipped with a main processor and sub-processors such as General Purpose Graphic Processing Units (GPGPU) are in widespread use.
  • Such a server system is used for high performance such as shortening the execution time of a program (hereinafter referred to as “latency”) when processing a single or a set of input data as a unit to be processed.
  • latency the execution time of a program
  • offload method In order to shorten the latency of the program in such a system, a method (hereinafter referred to as “offload method”) in which a sub processor executes one or more partial processes from the entire main processor program is used. May be.
  • a program that is scheduled to be executed by the main processor is called a “main program”.
  • main program a partial program to be executed by the sub-processor using the offload method is referred to as an “offload unit” or “offload program”.
  • offloading Designating to offload a certain program, that is, designating an offload part is referred to as “offload designation”.
  • the “off-loading method” is generally realized by the following three procedures.
  • the offload section is executed by the sub processor.
  • the latency of the offload unit must be shorter when executed by the sub processor than when executed by the host processor. .
  • the specification of the range of the offload part in the main program is performed by the developer of the main program (hereinafter simply referred to as “program developer”).
  • the program developer decides the offload unit in consideration of the latency reduction effect using the sub processor and the time required for data transfer in order to shorten the latency.
  • the designation of the offload part in the main program is often performed by inserting a directive that indicates the range of the offload part and the data to be transferred.
  • a directive that indicates the range of the offload part and the data to be transferred.
  • it is necessary to analyze the data necessary for the sub processor to process the offload unit and the data written back to the host processor after the processing of the offload unit. Since such data analysis is generally difficult, it is difficult to freely specify an arbitrary range of the main program as an offload section.
  • there are also processes that make it easy to analyze the transferred data such as an input process for receiving data for program execution and an output process for writing the execution result of the program.
  • FIG. 19 shows an example of a parallel operation in which there is a problem that the processor resources are excessive and high throughput cannot be obtained.
  • a host processor and an accelerator as a sub processor that assists the processing of the host processor are provided. Assume that the amount of processor resources is greater for accelerators than for host processors.
  • Both the host processor and accelerator resources are required to execute the partial program specified as the offload section. That is, when the offload unit is executed for one input data, a certain amount of resources of the host processor and the accelerator are used. At this time, if there is a difference in the resource amount between the host processor and the accelerator, if a program that uses the same amount of resource for the host processor and the accelerator is executed for multiple input data simultaneously, the host processor resource will be used up first. It is. And the processor resources of the accelerator are left. As described above, there is a problem that the program cannot be executed with respect to the input data exceeding the number of input data being executed even though the accelerator resources are surplus.
  • Patent Document 1 There is a method for determining which processor executes each loop in the input software (for example, see Patent Document 1).
  • the data transfer time to the accelerator is measured, and a winning / losing table indicating the superiority or inferiority of the execution time of the test processor is created for each of the host processor and the accelerator. Then, a loop to be offloaded is determined based on the winning / losing table, and the input software is converted so that the loop is offloaded.
  • JP 2011-204209 A JP-A-10-289116
  • Patent Document 2 With the technique of Patent Document 2, a plurality of programs can be moved without monopolizing resources with a single program. However, in the technology of Patent Document 2, it is assumed that there are a plurality of different types of programs, and it is assumed that one common program is executed in parallel for each of a plurality of inputs. Absent. Therefore, in the technique of Patent Document 2, even if there are excess processor resources, it is not possible to execute one program in parallel by dividing the resources. (Object of invention) The present invention has been made in view of the technical problems as described above, and it is possible to maximize the use of processor resources included in the system and improve the processing capability, and a program conversion apparatus and method, and a process switching method. It is another object of the present invention to provide a program, an execution method determination method and program, a processor system, and a parallel execution method.
  • the program conversion device uses, for a specific process, a usage ratio between a first usage amount of the first resource included in the first processor and a second usage amount of the second resource included in the second processor.
  • Specific process determining means for determining the range of the partial program in the target program including the first execution method designating program that operates in combination with the first ratio, the partial program, and the usage ratio as the first ratio. Is provided with a process conversion means for converting into a second execution method designating program that operates in combination as a different second ratio.
  • the usage ratio between the first usage amount of the first resource included in the first processor and the second usage amount of the second resource included in the second processor for the specific process.
  • the target program including the first execution method designating program that operates in combination with the first ratio, and determines the second program in which the usage ratio is different from the first ratio.
  • the program is converted into a second execution method designating program that operates in combination as a ratio.
  • the process switching method of the present invention is based on the designation from the outside, and the first usage of the first resource included in the first processor and the second resource included in the second processor for a specific process.
  • the first processing means according to the first execution method that operates using the usage ratio with the usage amount of 2 as the first ratio, or the usage ratio is used as the second ratio different from the first ratio.
  • the second processing means according to the second execution method that operates is switched.
  • the process switching program storage medium of the present invention provides the first processor with the first usage of the first resource included in the first processor and the second resource included in the second processor for the specific process.
  • the first processing means according to the first execution method that operates using the usage ratio of 2 as the first ratio and the usage ratio as the second ratio different from the first ratio.
  • the execution method determination method of the present invention uses the first usage amount of the first resource included in the first processor and the second usage amount of the second resource included in the second processor for a specific process. Select either the first execution method that operates by using the ratio as the first ratio, or the second execution method that operates by using the usage ratio as the second ratio different from the first ratio. The first execution method or the second execution method is set based on the selection result.
  • the execution method determination program storage medium of the present invention provides the first processor with the first usage amount of the first resource included in the first processor and the second resource included in the second processor for specific processing.
  • a first execution method that operates by using the usage ratio with the second usage amount as the first ratio, or a second operation that operates by using the usage ratio as the second ratio different from the first ratio.
  • An execution method determining means for selecting one of the execution methods and a program for operating as an execution method setting means for setting the first execution method or the second execution method based on the selection result are stored.
  • the processor system includes a first processor having a first resource and a second processor having a second resource, and the first processor has a specific information based on designation from the outside.
  • the first processing means according to the first execution method that operates by using the usage ratio of the first usage amount of the first resource and the second usage amount of the second resource as the first ratio.
  • the parallel execution method of the present invention uses the first processor and the first usage of the first resource of the first processor and the second processor for the specific processing based on the designation from the outside.
  • the first processing means according to the first execution method that operates using the usage ratio of the second resource with the second usage amount as the first ratio, or the usage ratio is different from the first ratio.
  • one type of program can be executed in combination with a plurality of execution methods that use different processor resources for each processor. Therefore, processor resources can be used up even when one kind of program is executed in parallel. Therefore, it is possible to sufficiently use the resources provided in the system and increase the processing capacity.
  • the structure of the program which the 1st Embodiment of this invention makes object is shown.
  • FIG. 1 shows the configuration of a computer system targeted by this embodiment.
  • the computer system is a system in which a plurality of computers 100 are connected by a connection network 104.
  • Each computer includes an arithmetic processing device 101, a storage device 102, and a communication device 103. All the computers 100 are connected by a connection network 104 and can communicate with each other.
  • the structure, so-called architecture and processing performance of each arithmetic processing unit 101 may be the same or different.
  • One or more computers 100 serve as host processors, and the other computers 100 serve as one or more accelerators.
  • the number of accelerators is not limited to one. It is not necessary for the accelerators to have the same architecture or processing capability, and it is assumed that there are N types (N is an integer of 1 or more) of architectures or processing capabilities.
  • Accelerator performs processing according to instructions received from the “host processor”. Therefore, “host processor” and “accelerator” correspond to the “main processor” and “sub processor” described above, respectively. In the present embodiment, description will be made using “host processor” and “accelerator” as names specifically indicating the role played by the computer.
  • An example of this embodiment is a computer system in which a plurality of computers are connected by a bus or a network.
  • the bus is a general serial or parallel bus used in, for example, a personal computer.
  • the network is, for example, a wired or wireless LAN (Local Area Network).
  • LAN Local Area Network
  • FIG. 2 shows a configuration of a target program to be processed by this embodiment.
  • the target program includes an input processing unit 201, an arithmetic processing unit 202, and an output processing unit 203.
  • An example of the target program is a Web server program.
  • the Web server program performs processing for each request from the client sent via the network, and returns the processing result to the client. At this time, for each request, an execution thread or instance is generated by using a standard function of the OS (Operating System) by the Web server program. A part of the processing of such a Web server program is specified in the Web server program so as to be processed by an accelerator in the server.
  • the Web program is an example of a target program, and the target program is not limited to this.
  • one or more offload units 204 are designated as partial programs executed by the accelerator.
  • the offload unit 204 is a range surrounded by the offload start instruction 205 and the offload end instruction 206 in the target program.
  • M M is an integer of 1 or more
  • L types L is an integer of 1 or more
  • execution methods in which the amount of processor resources used by each processor by the target program is different on the computer system of FIG. Examples of these multiple execution methods include the following methods.
  • Execution method for offloading an arbitrary part in the target program Execution method for executing the post-conversion program generated by using predetermined conversion software so that an arbitrary part in the target program can be offloaded It is.
  • FIG. 3 shows the configuration of the program execution system of this embodiment.
  • the program execution control system includes a computer system 300 including a conversion device 310, a host processor 320, and an accelerator 330.
  • Each of the host processor 320 and the accelerator 330 may be a single arithmetic device or a part of an integrated computer.
  • the number of accelerators 330 should just be one or more, and the number is not limited. If there are a plurality of accelerators 330, their architectures need not be the same.
  • the conversion device 310 includes a specific process determination unit 311 and a process conversion unit 312.
  • the specific process determining unit 303 determines a portion (hereinafter referred to as “specific processing unit”) in the target program 340 that performs a specified predetermined process.
  • specific processing unit a portion in the target program 340 that performs a specified predetermined process.
  • M specific processing units are designated in the target program 340.
  • the process conversion means 312 converts the M specific processing units of the target program 340 into a post-conversion program 341 so that it can be executed by a plurality of execution methods. Therefore, the post-conversion program 341 includes an execution method designation program 342 corresponding to each of the L types of execution methods and a process switching unit 343 inside.
  • the process switching means 309 switches the execution means to be applied to the execution method designation program 310 among the L types of execution methods.
  • the host processor 320 has an execution method determination unit 321 and an execution method setting unit 322.
  • the accelerator 330 receives from the host processor 320 the accelerator designating program 344 corresponding to the execution system including the execution by the accelerator among the execution system designating programs 342.
  • the accelerator 330 does not need to receive the execution method designation program 342 corresponding to the above-described “execution method that operates only by the host processor”. (Operation of the first embodiment)
  • Each of these means operates as follows.
  • the specific process determination unit 311 inputs the target program 340, searches the target program 340 for a range surrounded by the specific process, and checks an offloadable range in the target program 340.
  • the specific process determination unit 311 notifies the process conversion unit 312 of the positions of the plurality of specific processes of the target program 340.
  • the process conversion unit 312 inputs a plurality of specific process positions notified from the specific process determination unit 311, and sets a range surrounded by the specific process positions as an offloadable range. Then, the process conversion unit 312 creates an execution method designation program 342 for both the execution method and the non-offload execution method for each offloadable range. Each execution method designation program 342 differs in the amount of processor resources used for the host processor 320 or the accelerator 330. Furthermore, the process conversion unit 312 creates a post-conversion program 341 having a process switching unit 343 that switches both programs.
  • the host processor execution method determination means 321 inputs the converted program 341 and selects a program execution method for one input data so that the processor resources of each processor can be used up.
  • the execution method setting means 322 notifies the execution method designated by the execution method determination means 321 to the process switching means 343 of the post-conversion program 341 using a communication means (not shown).
  • the communication means is a function provided in the computer system 300 such as an OS that manages the operation of the host processor.
  • the target program 340 is a program that includes an offload section designated as offload in the target program 340.
  • the target program 340 is input to the specific process determination unit 333 and converted into the post-conversion program 341 by the process conversion unit 312.
  • the post-conversion program 341 is executed by any execution method for each input data. That is, the post-conversion program 341 operates by switching the execution method by the process switching unit 343 according to the execution method designated by the execution method setting unit 322.
  • FIG. 4 is a flowchart showing the operation of the parallel processing control system according to the embodiment of the present invention.
  • the specific process determination unit 311 of the conversion apparatus 310 searches for a specific processing unit from the target program 340 in order to examine the range in the target program 340 that can be offloaded.
  • the specific process determination unit 311 notifies the process conversion unit 312 of the positions of the plurality of specific processing units (step S401).
  • the processing conversion unit 312 of the conversion device 310 recognizes the offloadable range from the positions of the plurality of specific processing units notified from the specific processing determination unit 311. Then, the processing conversion unit 312 creates both a partial program that is offloaded and a partial program that is not offloaded for each offloadable range. That is, a plurality of execution method designating programs having different processor resource usage are prepared. Furthermore, the process conversion unit 312 creates a post-conversion program 341 having a process switching unit 343 that switches between an execution method designation program that performs offloading and an execution method designation program that does not perform offload (step S402).
  • the execution method determination means 321 of the host processor 320 determines how many of the input data are to be processed in each execution method. Then, the execution method determining unit 321 selects an execution method of the post-conversion program 341 that processes one input data, using up the processor resources of each processor (step S403).
  • the execution method setting means 322 of the host processor 320 notifies the execution method designated by the execution method determination means 321 to the process switching means 343 of the post-conversion program 341 using the communication means (step S404).
  • the post-conversion program 341 having a plurality of execution methods in which the amount of processor resources used by each processor is different can be generated by the above flow of the present embodiment. Furthermore, a program execution means for switching the execution method for each input data can be realized. Therefore, unused resources can be reduced as much as possible by selecting an execution method that uses unused processor resources.
  • FIG. 5 shows an example in which more input data can be processed using unused processor resources according to this embodiment.
  • the range of specific locations where the target program can be offloaded can be set in various ways.
  • an example of setting an offloadable range is shown. Specifically, among the above-described execution methods, 2) an execution method for offloading in the range of input processing to output processing is set as the second embodiment, and 3) only a part of the offload designation unit is offloaded. An execution method will be described as a third embodiment.
  • the specific process determination unit 311 determines that the “range from the input process to the output process” of the target program 340 is a specific process and treats it as a range that can be offloaded.
  • an execution method in which the processor resource usage of each processor by the converted program 341 on the first parallel processing control system is different is (N + 2).
  • the breakdown is one type of the original execution method of the target program 340 that uses the host processor 320 and the N accelerators 330 in a predetermined procedure, and the execution method in which the host processor 320 executes the range from input processing to output processing.
  • step S401 of the first embodiment the specific process determination unit 303 searches for a range surrounded by the output process from the input process of the target program 340 and notifies the process conversion unit 304 of the range in order to check the offloadable range in the target program 340. To do.
  • the specific process determination unit 311 determines that the “offload designated range” of the target program 340 is a specific processing unit and treats it as a range that can be offloaded. That is, a range for which offload is already designated is treated as a range that can be offloaded.
  • the target program 340 includes M offload designation portions, there are (2 ⁇ M) types of execution methods of programs with different amounts of processor resources used by each processor. This is because there are combinations of execution formats ranging from when all M offload designation portions are offloaded to when no offload is performed.
  • An example of a plurality of execution methods set in this embodiment is shown in FIG.
  • step S401 of the first embodiment the specific process determining unit 311 checks a range in the target program 340 where the offload is designated, and a set of a position where the offload start of the target program 340 is designated and a position where the end of offload is designated. And the processing conversion means 312 is notified of these positions.
  • the third embodiment it is possible to disregard part of the M offload designation portions of the target program 340 and not to offload.
  • the amount of processor resource used differs between when an offload designation part is actually offloaded and when it is not offloaded. Accordingly, by adjusting the number of offloading portions of the M offload designation portions, it is possible to prepare a plurality of execution methods having different processor resource usage. Therefore, it is possible to improve the throughput of the system by selecting an appropriate resource usage execution method and reducing unused resources as much as possible.
  • the original offload execution format of the target program 340 includes an execution method in which only one of the host and N accelerators performs the offload processing, and only a part of the M offload designation portions. You can combine offload execution methods.
  • the number of execution methods increases by combination, and unused processor resources can be used more flexibly and throughput can be further improved.
  • the number of input data handled for each execution method (hereinafter referred to as “the number of distributions”) can be changed in order to improve the throughput.
  • the number of distributions can be changed in order to improve the throughput.
  • the fourth to sixth embodiments an example of a distribution number determination method will be described.
  • the number of distributions to be simultaneously processed in each execution method is determined so that the processor resources of each processor are used up. Then, the execution method of each input data is determined based on the distribution number.
  • Examples of the method for determining the number of distributions include designation by a user, calculation using a predetermined algorithm from system specifications and program profile results, and the like.
  • the “profile” here is called a runtime profile, and is various information related to program execution. This information includes the required execution time and the amount of processor resources for a partial process of the program.
  • the method for determining the distribution number is not particularly limited.
  • step S403 of the first embodiment specifically, the following processing is performed. That is, the execution method determination unit 321 determines the number of distribution of each execution method in descending order of priority so that the processor resources of each processor are used up with high throughput. Then, the execution method determining means 321 determines the program execution method for one input data (step S403).
  • FIG. 8 is a flowchart showing an operation when the execution method determination unit 321 determines the execution method for one input data after determining the number of execution method distributions.
  • the execution method determination unit 321 acquires the number of processing data (hereinafter referred to as “the number of simultaneously processed data”) that is being processed simultaneously for each execution method (step S801).
  • the execution method determination unit 321 determines an execution method in which the number of simultaneously processed data is less than the number of distributions in order from the execution method with the highest priority (step S802).
  • the execution method determination means 321 determines the number of distributions for each execution method in order to obtain high throughput, and determines the execution method from the determined number of distributions and the number of simultaneously processed data for each execution method being executed. Then, the execution method setting means 322 is notified of the determined execution method.
  • the number of distributions is determined before executing the program. Therefore, it is not necessary to use processor resources to determine the number of distributions during program execution.
  • the process of determining the number of distributions is not included in the target program and affects the actual operation throughput. That is, the process of determining the number of distributions is an overhead. Therefore, the number of distributions is determined before program execution. Therefore, the program can be executed in an ideal state without causing the number of data handled by the execution method with high priority to be less than ideal or the state where the number of data handled by the execution method having low priority is larger than ideal. Therefore, there is an effect that an optimum throughput can be obtained when a program is executed using a combination of a plurality of execution methods.
  • the number of distributions may be specified by the user in the post-conversion program so that the throughput is the highest.
  • the allocation number for each execution method is determined from the parameters of the program and the processor.
  • FIG. 9 is a flowchart showing an operation when the execution method determining unit 311 determines the number of distributions.
  • the execution method determination means 311 calculates the priority of each execution method and the processor usage rate of each execution method for one input data, and initializes the unused rate of each processor (step S901).
  • the priority of each execution method there is a method of assigning a higher priority to the latency of each execution method, that is, in the order of short execution time of a program when processing a single input data.
  • the processor usage rate of each execution method with respect to one input data the ratio of execution time in each processor per unit time can be mentioned.
  • a method in which the unused rate of each processor is initially set at 100 percent can be mentioned.
  • the execution method determination unit 311 determines whether the execution method is determined to be executable when there is an available processor from the unused rate of each processor and the processor usage rate of each execution method for one input data.
  • the execution method with the highest priority is selected (step S902).
  • the execution method determination unit 301 determines the number of input data handled simultaneously by the selected execution method (step S903).
  • the selected execution method is the smallest of the results obtained by dividing the unused rate for each processor by the processor usage rate of the execution method for one input data.
  • the execution method determination unit 311 updates the unused rate of each processor (step S904). That is, the execution method determination unit 311 calculates the processor usage rate when the number of input data determined in step S903 is handled in the selected execution method. The execution method determining unit 311 sets the result of subtracting the calculated processor usage rate from the unused processor rate as the updated unused processor rate.
  • the execution method determination unit 311 determines whether the unused rate of all processors is zero (step S905). If the unused ratios of all the processors are zero, the distribution number determination algorithm ends, and if not zero, the process proceeds to step S902.
  • the distribution number is automatically calculated from the processor parameters and the target program parameters.
  • the distribution number calculation process can be performed before executing the program. Therefore, it is not necessary to use processor resources to determine the number of distributions during program execution. Therefore, as in the fourth embodiment, there is an effect that an optimum throughput can be obtained when a program is executed using a combination of a plurality of execution methods.
  • a provisional distribution number is determined and an execution method is selected from the distribution number.
  • FIG. 10 is a block diagram showing the configuration of the execution method determining means 1001 of this embodiment.
  • the execution method determination unit 1001 includes a performance measurement unit 1002, an allocation number determination unit 1003, and an execution method selection unit 1004. As information exchanged between each means, there are a performance measurement result 1011, execution method priority information 1012, and a distribution number 1013 which is the number of input data handled for each execution method.
  • FIG. 11 is a flowchart showing the operation of the execution method determining means 1001 of this embodiment.
  • FIG. 12 is an example of a performance measurement result management table used in the operation when three types of execution methods are prepared.
  • the allocation number determining means 1003 determines an initial value of the allocation number (step S1101).
  • the execution method selection unit 1004 selects an execution method for the input from the determined current distribution number. Then, the execution of the post-conversion program 341 is started.
  • the allocation number determining unit 1003 selects an execution method with an uncertain distribution number from the priority information of the execution method (step S1102).
  • the distribution number determination unit 1003 increases the distribution number of the selected execution method (step S1103).
  • the execution method selection means 1004 selects an execution method for a certain input from the increased current distribution number. Then, one of the three types of execution method designation programs 342 included in the post-conversion program 341 is executed.
  • the performance measuring unit 2301 measures the throughput performance per unit time, and adds the result to the management table configured by the combination of the number of distributions of each execution method and the throughput performance (step S1104).
  • the distribution number determination unit 1003 determines whether or not to determine the distribution number (step S1105).
  • the condition for determining the allocation number (hereinafter referred to as “allocation number determination condition”) is “the performance measurement result when the target execution method is increased is the performance measurement result before the increase”. It has become worse ”.
  • the allocation number determination condition may be when the performance measurement result is increased or decreased. Therefore, the allocation number determination condition is not limited to the above condition.
  • step S1106 If the determination of the allocation number is not determined, the process proceeds to step S1103.
  • the allocation number determining unit 1003 determines the allocation number of the selected execution method (step S1106).
  • the distribution number when the performance measurement result before the distribution number is increased is determined as the distribution number of the selection execution method.
  • the allocation number determining means 1003 determines the end of the flow for dynamically determining the allocation number (step S1107).
  • the flow is terminated when the condition for determining the number of distributions of all execution methods is satisfied, and the process proceeds to step S1102 when the condition is not satisfied.
  • the above-described operation of the distribution number determining means 1003 determines the distribution number of each execution method, and the program can be executed according to the distribution number.
  • the allocation number determining means 1003 determines an initial value of the allocation number (step S1101). In this embodiment, “15” is set for the execution method 1, “0” for the execution method 2, and “0” for the execution method 3 as the initial value of the distribution number.
  • the execution method selection unit 1004 selects an execution method for a certain input from the set distribution number, and the execution of the application is started.
  • the allocation number determining unit 1003 selects an execution method with an uncertain distribution number from the priority information of the execution method (step S1102).
  • the execution method 1 is selected in order to determine the number of allocations of the execution method 1 having the highest priority.
  • the distribution number determination unit 1003 increases the distribution number of the selected execution method 1 (step S1103). In this embodiment, each distribution number is increased by one.
  • the execution method selection means 1004 selects an execution method for a certain input from the increased current distribution number. Then, the application is executed.
  • the performance measuring unit 1001 measures the throughput performance per unit time and adds the result to the management table (step S1104).
  • the throughput performance to be measured is defined as the number of data output per second.
  • the measured performance is not limited to the throughput.
  • “150” is shown as the performance value when the distribution numbers of the execution methods 1, 2, and 3 are executed as “15”, “0”, and “0”, respectively. be written.
  • the distribution number determination unit 1003 determines whether or not to determine the distribution number (step S1105).
  • the distribution number determination condition is that the performance measurement result when the target execution method is increased is worse than the performance measurement result before the increase.
  • step S1106 When the confirmation of the number of distributions is determined, the process proceeds to step S1106, and when the determination of the number of distributions is not determined, the process proceeds to step S1103.
  • the performance result falls from “200” to “190” between the result number 5 and the result number 6 as in the management table of FIG. Therefore, when the result number 6 is processed, the process proceeds to step S1106.
  • step S1106 the allocation number determining unit 1003 determines the allocation number of the selected execution method.
  • the distribution number when the performance measurement result before increasing the distribution number is obtained is determined as the distribution number of the selection execution method.
  • the allocation number determination unit 1003 determines that the allocation number of the execution method 1 is 20 from the management table of FIG.
  • the allocation number determining means 1003 determines the end of the flow for dynamically determining the allocation number (step S1107).
  • the flow is terminated when the condition for determining the number of distributions of all execution methods is satisfied, and the process proceeds to step S1102 when the condition is not satisfied.
  • the number of allocations for obtaining a high throughput at the time of execution is searched. Accordingly, the number of distributions can be determined without the parameters of the processor and the target program. (Seventh embodiment)
  • a seventh embodiment an example of a specific computer system is shown.
  • FIG. 13 shows a block diagram of a computer system composed of a multi-core host processor and a meni-core accelerator.
  • the computer system of this embodiment includes a host processor 1301, a host memory 1302, a bus controller 1303, and an accelerator 1304.
  • the accelerator 1304 includes a menicore 1305 and a memory 1306 inside.
  • the host processor 1301 and the menicore 1305 have different built-in CPU (Central Processing Unit) architecture and number. Because the structure and number of arithmetic units are different, the host processor 1301 and the menicore 1305 have relatively good processing and poor processing.
  • CPU Central Processing Unit
  • the number of CPUs of the host processor 1301 and the menicore 1305 is 8 for the host processor 1301 and 40 for the menicore 1305.
  • the CPUs of the host processor 1301 and the menicore 1305 have different performances when executing scalar operations and vector operations. For example, regarding the scalar operation, if the performance of one CPU of the host processor 1301 is 1, the performance of one CPU of the menicore 1305 is 0.25, and the performance of the CPU of the host processor 1301 is higher.
  • the vector operation if the performance of one CPU of the host processor 1301 is 1, the performance of one CPU of the menicore 1305 is 2, and the performance of the CPU of the menicore 1305 is higher.
  • the host processor 1301 and the accelerator 1304 are connected by a bus controller 1303.
  • the OS for the host and the OS for the accelerator operate independently.
  • Communication between the host processor 1301 and the accelerator 1304 is realized by a general technique such as a socket.
  • the host processor 1301 has a function of instructing the accelerator 1304 to start processing.
  • Each of the host processor 1301 and the accelerator 1304 has a unique IP (Internet Protocol) address.
  • FIG. 14 shows a configuration diagram of an image processing program including offload designation for one input in the present embodiment.
  • the target program 340 includes an input processing API (Application Program Interface) 1403, an arithmetic processing A1404, an offload start API 1405, an arithmetic processing B1406, an offload end API 1407, and an output processing API 1408.
  • API Application Program Interface
  • the image data is stored in the input queue 1401 until the execution of the target program 340 is started.
  • the configuration file 1402 specifies program execution parameters such as command line arguments.
  • the target program 340 reads necessary information from the input queue 1401 and the setting file 1402 and outputs the processing result to the output queue 1409.
  • the operation of each component included in the target program 340 will be described.
  • the input processing API 1403 sets information for executing the program by acquiring execution parameters from the setting file 1402 and image data from the input queue 1401.
  • the mechanism by which the input processing API 1403 acquires data from the input queue is as follows. That is, the management thread of the input queue 1401 on the host processor 320 transmits the data in the input queue 1401 to the program using a socket. Then, the input processing API 1403 executed by the program thread receives data at the socket.
  • the input processing API 1403 is defined to receive command line arguments and set data for executing the program. Therefore, only the command line arguments are necessary for execution.
  • the arithmetic processing A1404 is a scalar arithmetic processing that constitutes a part of the target program 340, and performs processing using the information set by the input processing API 1403 as input.
  • the offload start API 1405 specifies an offload start position from the host processor 320 to the accelerator 330 and data to be transferred from the host processor 320 to the accelerator 330.
  • Arithmetic processing B 1406 is a vector arithmetic processing that constitutes a part of the target program 340, and performs processing using the intermediate result obtained from the arithmetic processing A1404.
  • the offload end API 1407 designates the offload end position from the host processor 320 to the accelerator 330 and the data transferred from the accelerator 320 to the host processor 330.
  • the output processing API 1408 adds the result obtained by processing up to the arithmetic processing B 1406 to the output queue 1409.
  • the mechanism by which the output processing API 1408 adds data to the output queue 1409 is as follows. That is, the output processing API 1408, which is a program thread, transmits data through the socket. Then, a thread running on the host receives data on the socket and adds the data to the output queue 1409.
  • the output processing API 1408 is specified to receive only the result data as an argument and write it to the output queue. Therefore, there is no data generated by the output processing API 1408 itself.
  • the ratio of the execution time of each process to the execution time of the entire program is so small that it can be ignored for the input process API and the output process API, 40% for the arithmetic process A1404 and 60% for the arithmetic process B1406.
  • Both arithmetic processing A and arithmetic processing B can be executed by either the host processor 320 or the accelerator 330.
  • both a compiler for the host processor 320 and a compiler for the accelerator 330 are prepared. Therefore, it is possible to generate two types of executable files from different processors that execute the program.
  • the input processing API 1403 realizes data acquisition from the input queue 1401 with a socket. Therefore, it can be executed by either the host processor 320 or the accelerator 330.
  • the output processing API 1408 realizes data output to the output queue 1409 with a socket. Therefore, it can be executed by either the host processor 320 or the accelerator 330.
  • an execution method 2 having a different assignment from the original execution method 1 in which the assignment of processors for executing a program is designated is prepared.
  • Different execution methods have different resource usage for each processor. Therefore, surplus resources can be reduced as much as possible by using a plurality of execution methods in combination with a plurality of input data. Therefore, the throughput of the entire system can be improved.
  • execution method combination system a system that executes a combination of different execution methods.
  • the host processor 320 and the accelerator 330 are simply referred to as “host” and “accelerator”.
  • FIG. 15 shows an example of a plurality of program execution methods that can be realized by the execution method combination system.
  • Executiution method 1 is an execution method of the original program with offload designation, and a part of the program is offloaded from the host to the accelerator. In execution method 1, processing is performed according to the following flow.
  • the input API and arithmetic processing A are executed on the host side. Then, the host executes an offload start API and transfers data from the host to the accelerator.
  • arithmetic processing B is executed on the accelerator side. Then, the accelerator executes an offload end API, and transfers data from the accelerator to the host.
  • Execution method 1 uses both host processor resources and accelerator processor resources for one piece of input data.
  • “one input data” means a single or a set of input data as a unit to be processed.
  • Example method 2 is an execution method in which all the programs are executed on the host side.
  • the host side executes all of the execution of the input API, the arithmetic processing A arithmetic processing B, and the output API.
  • Execution method 2 is realized by ignoring the offload specification part in the program by a general technique such as a compiler. In execution method 2, only the processor resource of the host is used for one input data.
  • Executiution method 3 is an execution method in which all processing by the program is executed on the accelerator side. However, the host processor needs to execute an instruction to start processing to the accelerator. In the execution method 3, the execution of the input API, the arithmetic processing A, the arithmetic processing B, and the output API is all executed on the accelerator side.
  • Execution method 3 is realized by ignoring the offload designation unit by a general technique such as a compiler, and converting the input processing API to the output processing API into an execution method designation program 342 by the conversion device 310 as an offload unit. . It is known that the data transfer information necessary for offloading from the input processing API to the output processing API is only a command line argument because a prescribed API is used. Execution method 3 uses only accelerator processor resources for one input. This can be realized even when there are multiple types of accelerators by changing the designation of the offload destination accelerator.
  • FIG. 16 shows a configuration example of various programs 1600 (hereinafter referred to as “program group”) used in the execution method combination system of this embodiment, and the relationship between the programs included in the program group 1600.
  • program group various programs 1600 (hereinafter referred to as “program group”) used in the execution method combination system of this embodiment, and the relationship between the programs included in the program group 1600.
  • the six programs included in the program group 1600 are classified into the following four.
  • Program input as processing target The target program 340 is a target program to be processed by this execution method combination system.
  • the target program 340 is a program that is assumed to be offloaded in the execution method 1 by the host processor 320.
  • the target program 340 is input to the conversion device 310 and converted into a post-conversion program 341.
  • Program executed by the conversion device 310 The conversion program 1606 is executed by the conversion device 310 to convert the target program 340 into the converted program 341.
  • the conversion program 1606 includes a specific process determination unit 311 and a process conversion unit 312.
  • the specific process determination unit 311 and the process conversion unit 312 are software functions for converting a program.
  • the conversion apparatus 310 executes the conversion program 1606, adds programs of three types of execution methods with different presence / absence or form of offload to the target program 340, and generates a converted program 341. That is, the conversion apparatus 310 generates a post-conversion program 341 including an execution method designation program 342 executed by other execution methods 2 and 3 having different offload forms based on the target program 340.
  • the execution method designation program 342 is executed by one or both of the host processor 320 and the accelerator 330.
  • the post-conversion program 341 includes a process switching unit 343 that is realized by conditional branching therein. 3) Programs executed by the host processor 320 The post-conversion program 341, the multiple execution program 1601, and the execution method determination program 1607 are executed by the host processor 320 and control the entire offload of the execution method combination system.
  • the execution method determination program 1607 includes an execution method determination unit 321 and an execution method setting unit 322.
  • the execution method determination means 321 and the execution method setting means 322 are daemon thread functions.
  • the multiple execution program 1601 includes an input data confirmation unit 1602, an execution method inquiry unit 1603, and a thread execution unit 1604.
  • Thread execution means 1604 generates a thread using thread generation means (not shown) possessed by a general OS in order to execute the multiple execution program 1601.
  • Information exchange between the multiple execution program 1601 and the execution method determination program 1607 is performed using communication means (not shown) of a general OS.
  • the host processor 320 uses the multiple execution program 1601 and the execution method determination program 1607 to select an execution method for each input data. Then, the host processor 320 executes a program corresponding to the selected execution method among the execution method designation programs 342 included in the converted program 341. When the selected execution method is a method that uses the accelerator 330, the host processor 320 causes the accelerator to execute an accelerator designating program 344 that is an offload unit to the accelerator. 4) Program Executed by Accelerator 330 The accelerator designation program 344 is a program that is offloaded by the host processor 320 and executed by the accelerator 330.
  • FIG. 17 shows how each means moves as a thread in the host processor 320. The operation of each thread will be described later.
  • the operation of the execution method combination system 1600 is divided into two phases: (1) a phase in which a converted program is created from the target program and (2) a phase in which the converted program is executed while switching the execution method.
  • (1) Phase for creating post-conversion program from original program The post-conversion program is created from the target program by the specific process determining means and the process conversion means.
  • the specific process determination unit 311 searches the program source for the positions of the input process API and the output process API of the target program 340, and notifies the process conversion unit 312 of the positions of the input process API and the output process API (step S401).
  • the process conversion unit 312 sets the range from the input process API to the output process API from the position of the input process API and the output process API notified from the specific process determination unit 311 as an offloadable range. Then, the processing conversion unit 312 generates the execution method designation program 342 executed by the above-described three types of execution methods by copying the program in the offloadable range, adding or deleting the offload start API, and the offload end API. To do.
  • the execution method designation program 342 of the execution method 1 is a range from a process immediately after the offload start API included in the target program 340 to a process immediately before the offload end API, that is, an offload possible range. It is realized by deleting the program included in.
  • the execution method designation program 342 of the execution method 2 is realized by using the program of the target program 340 as it is.
  • the execution method designation program 342 of the execution method 2 is not actually offloaded, but is called an offload program without being distinguished from other execution methods.
  • the offload start API and the offload end API included in the offloadable range are deleted.
  • an offload start API is added immediately before the input processing API together with designation of data necessary for the input processing API.
  • an offload end API is added immediately after the output processing API together with designation of data output from the output processing API. Execution method 3 is realized by the above processing.
  • an execution method designation program 342 of the above three types of execution methods and a post-conversion program 341 having processing switching means 343 that switches the three types of execution methods by conditional branching are generated (step S402).
  • the condition branching condition is notified from the execution method setting unit 321 using socket communication when the post-conversion program 341 is executed.
  • (2) Phase in which the converted program is executed while switching the execution method The multiple execution program 1601 including the converted program 341 is executed while the execution method is switched by the execution method determining means 321 and the execution method setting means 322. .
  • the thread of the multiple execution program 1601 and the execution method combination thread enter the execution state.
  • the multiple execution program 1601 checks whether there is data in the input queue 1401. If there is no data in the input queue 1401, the multiple execution program waits until data enters the 1601 input queue 1401.
  • the execution method inquiry unit 1603 makes an inquiry to the execution method determination unit 321 for the execution method combination thread in order to determine the execution method for the input data to be processed. Socket communication is used for this inquiry.
  • the execution method determination means 321 determines the distribution number of each execution method from the program and system parameters using a distribution number determination algorithm.
  • the execution method determination unit 321 selects an execution method in which the number of input data currently being executed for each execution method does not reach the determined number of distributions in the order of priority of the execution methods, and executes one input data. Determine the program execution method.
  • the allocation number determination algorithm will be described later.
  • the execution method setting unit 322 notifies the execution method inquiry unit 1603 of the execution method instructed by the execution method determination unit 321. Socket communication is used for this notification.
  • the execution method inquiry unit 1603 sets the received execution unit as a variable.
  • Thread execution means 1604 generates a thread to execute the post-conversion program 341 for one input data.
  • the thread execution unit 1604 gives the variable set by the execution method inquiry unit 1603 as an argument when a thread is generated.
  • the offload program is executed by the designated execution method from the variable indicating the execution method notified by the argument from the thread execution unit 1604 and the process switching unit 343 realized by the conditional branch. .
  • the distribution of the number of data to be processed is determined for each execution method, and the execution method for each data is determined based on the distribution of the number of data.
  • the flow of the allocation number determination algorithm is shown below.
  • FIG. 18 is a flowchart showing the processing flow of this algorithm.
  • Priority is set for all execution methods in ascending order of latency, and the unused rate of all processor resources is set to 100 percent (step S1801).
  • priorities are set in ascending order of execution method latency.
  • the latency of each execution method is a vector operation that occupies 40% of the entire program execution time and the latency of operation A, which is a scalar operation that occupies 40% of the entire program execution time.
  • the latency of the arithmetic processing B is the sum of latencies. Note that for the scalar arithmetic processing, the ratio between the performance of the host processor 320 and the performance of the accelerator 330 is 4: 1. For vector operation processing, the ratio between the performance of the host processor 320 and the performance of the accelerator 330 is 1: 2.
  • the latency of execution method 2 is 1.0 because all processing is performed by the host processor 320.
  • the execution method is the execution method 1, the execution method 2, and the execution method 3 in descending order of priority.
  • the execution method with the highest priority is selected from among the execution methods in which the unused rate of processor resources is zero, that is, among the execution methods that do not use a program in which all resources have been used (step S1802).
  • the processor resource unused rate of both the host and the accelerator is 100%, all execution methods from execution method 1 to execution method 3 are targeted.
  • the execution method with the highest priority is the execution method 1, so the execution method 1 is selected.
  • step S1803 It is determined whether the selected execution method is an execution method that uses both the host processor resource and the accelerator processor resource (step S1803). If the execution method uses both, the process branches to step S1804. If the execution method uses only one, the process branches to step S1806. Since execution method 1 uses the processor resources of the host and the accelerator, the process proceeds to step S1804.
  • the number of input data sufficient to use up processor resources is obtained (step S1804).
  • the execution method 1 since the host and the accelerator are used, the number of input data (hereinafter referred to as “necessary data number”) enough to use up each processor resource is obtained. Is obtained from (number of input data that can be processed by one core per unit time) ⁇ number of cores.
  • unit time is the processing time when the entire program is executed by the host.
  • step S1805 The smaller one of the necessary data numbers for using up the unused processor resource amounts of the host and the accelerator is determined as the data number of the execution method (step S1805). From the result obtained in step S1804, since the smaller required number of data is 20, the execution method 1 determines to handle 20 input data.
  • the processor resource unused amount of each computer is updated (step S1807).
  • execution method 1 since 20 pieces of data are processed, all of the processor resources of the host are used, and thus the unused amount of processor resources of the host becomes zero. Since 133.33 data is required to use up the accelerator, the processor resource usage of the accelerator is 15% from 20 ⁇ 133.33. From the above, the processor resource unused amount is updated to 0% for the host and 85% for the accelerator.
  • step S1802 step S1808
  • step S1802 since the accelerator is the only computer whose processor resource surplus is not 0%, execution method 3 in which all processing is executed by the accelerator is selected.
  • step S1803 since execution method 3 uses only an accelerator, the process proceeds to step S1806.
  • the program used here, the number of data necessary to use up the processor resources of the accelerator is determined (step S1806).
  • the number of data required to use up all the processor resources of the accelerator is 1.0 / 1.9 ⁇ 40 to 21.05. Since the surplus amount of accelerator processor resources is 85%, the number of data that can be handled by the surplus accelerator processor resources is determined to be 21.05 ⁇ 0.85 to 17.9 data. When the necessary number of data is determined, the process proceeds to step S1807.
  • step S1807 the processor resource of the accelerator is zero because the processor resource of the accelerator is used up by processing 17.9 data in the execution method 3.
  • the processor resource unused amount for each of the host and the accelerator becomes zero, and the execution method allocation number determination algorithm ends.
  • the number of data to be processed is determined to be 20 for execution method 1, 0 for execution method 2, and 17.9 for execution method 3.
  • 37.9 pieces of data can be processed by using all the processor resources.
  • this embodiment it is possible to prepare a plurality of execution methods by converting a program as shown in FIG. 17 and switch the execution method for each input data. Furthermore, by determining the number of allocations, in the case of execution method 1, which is an execution method in normal offloading, only 20 data per unit time can be handled. In this embodiment, unused accelerator processor resources are allocated. Since it can be used up, 37.9 data per unit time can be handled. Thus, there is an effect that the throughput of the system can be greatly improved.
  • directives such as pragmas indicating the offload start position and offload end position may be inserted into the program. Therefore, when such a directive is searched in the program and found, the position of the directive may be set as an offload start position or an offload end position.
  • the case of a host processor and an accelerator is shown as an example of a plurality of processors.
  • Each of the host processor and the accelerator includes a plurality of CPU cores.
  • the host processor and accelerator are suitable for scalar operations and vector operations, respectively.
  • the architecture, the number of built-in CPUs, and suitable applications of a plurality of processors in the present invention are not particularly limited.
  • the processor according to the present invention only needs to satisfy the following conditions. 1)
  • the number of processors is two or more.
  • processors Since the present invention is directed to a system that offloads all or part of a program, a plurality of processors are required. 2) Each processor has resources that affect the performance of a given process.
  • each processor includes a resource that changes the processing performance of the entire system depending on whether it is used, for example, CPU usage time, a plurality of CPU cores, and the like. 3)
  • the architecture of each processor is arbitrary.
  • each processor only needs to be capable of processing the offload unit, and the internal structure and processing method of the processor are arbitrary. 4) The number of built-in CPU cores in each processor is one or more.
  • the unused amount of resources of each processor is considered.
  • unused resources such as CPU usage time can be defined, so the number of built-in CPU cores is arbitrary.
  • ROM Read Only Memory
  • RAM Random Access Memory
  • semiconductor memory device such as a flash memory, an optical disk, a magnetic disk, or a magneto-optical disk. May be.
  • the present invention can be applied to a system in which services such as video monitoring, video conversion, image conversion, and financial processing are realized by a server with a sub processor.
  • services such as video monitoring, video conversion, image conversion, and financial processing are realized by a server with a sub processor.
  • an application that performs a predetermined process for each input and obtains a result and the offload unit is specified is realized in a system configured with clusters having different computer performances, The present invention is applicable.

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Multi Processors (AREA)

Abstract

 システムが備えるプロセッサのリソースを最大限に使用し、処理能力を向上させることができるプログラム変換装置を提供する。特定の処理について、第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式指定プログラムを含む対象プログラム中の、部分プログラムの範囲を判定する特定処理判定手段と、部分プログラムを、使用比率を第1の比率とは異なる第2の比率として併用して動作する第2の実行方式指定プログラムに変換する処理変換手段を備える。

Description

プログラム変換装置及び方法、処理切替方法、実行方式決定方法及びプログラム記憶媒体、プロセッサシステム並びに並列実行方法
 本発明は、メインプロセッサとサブプロセッサを含むプロセッサシステムにおいて、メインプロセッサ用プログラムの一部をサブプロセッサに実行させるプログラム変換装置及び方法、処理切替方法及びプログラム、実行方式決定方法及びプログラム、プロセッサシステム並びに並列実行方法に関する。
 メインプロセッサと、General Purpose Graphic Processing Units(GPGPU)のようなサブプロセッサが搭載されたサーバシステムが普及している。このようなサーバシステムは、処理対象の単位となる単一あるいは一組の入力データを処理するときのプログラムの実行時間(以降、「レイテンシ」という。)の短縮という高性能化に利用されることが多い。
 このようなシステムでプログラムのレイテンシを短くするために、メインプロセッサ用プログラムの全体の中から一箇所以上の部分処理を、サブプロセッサに実行させる方式(以降、「オフロード方式」という。)が用いられることがある。メインプロセッサによって全てが実行されることが予定されているプログラムを「メインプログラム」という。メインプログラムのうち、オフロード方式を用いてサブプロセッサに実行させる部分プログラムを「オフロード部」、又は「オフロードプログラム」という。また、サブプロセッサにプログラムを実行させることを「オフロードする」という。そして、あるプログラムをオフロードするように指定すること、すなわち、オフロード部を指定することを、「オフロード指定する」という。
 「オフロード方式」は、一般に、次のような3つの手順によって実現される。
 1)ホストプロセッサからサブプロセッサへ、オフロード部の実行のためにデータを転送する。オフロード部のプログラムコードは、このとき同時に転送されるか、あるいは、事前にサブプロセッサ用プログラムとして所定の記憶装置に格納される。
 2)サブプロセッサでオフロード部が実行される。
 3)サブプロセッサからホストプロセッサへ、オフロード部の処理の結果が転送される。
 このため、オフロード方式を用いてプログラム全体のレイテンシを短くするためには、オフロード部のレイテンシが、ホストプロセッサで実行されたときよりもサブプロセッサで実行されたときの方が短くなければならない。一般的に、メインプログラム中のオフロード部の範囲の指定は、メインプログラムの開発者(以降、単に「プログラム開発者」という。)によって行われる。
 プログラム開発者は、レイテンシをより短くするために、サブプロセッサを利用したレイテンシ短縮効果とデータ転送にかかる時間を考慮し、オフロード部を決定する。
 メインプログラム中のオフロード部の指定は、オフロード部の範囲と転送されるデータを指示する指示文を挿入するという形で行われることが多い。転送されるデータの指定のためには、サブプロセッサがオフロード部を処理するために必要となるデータと、オフロード部の処理後にホストプロセッサへ書き戻されるデータの解析が必要になる。このようなデータ解析は一般的に困難であるため、メインプログラムの任意の範囲を、自由にオフロード部として指定することは困難である。ただし、プログラム実行のためにデータを受け取る入力処理や、プログラムの実行結果を書きだす出力処理のように、転送されるデータの解析が容易な処理も存在する。
 一方、オフロード方式を適用して、複数の入力データに対して複数のプログラムを同時に実行して並列処理を行う場合は、レイテンシだけでなく、単位時間あたりに処理されるデータの数(以降、「スループット」という。)が多いことが求められる。高いスループットを得るためには、メインプロセッサとサブプロセッサのリソースを十分に使い切ることが重要である。しかし、プロセッサのリソースを十分に使い切るためには、プログラムが使用するプロセッサごとのリソースの量の割合と、プロセッサごとの使用可能なリソースの量の割合を一致させなければならない。そのため、並列動作させることを考慮されて作成されていないプログラムを、複数のプロセッサに同時に実行させてもリソースを使い切ることができない。従って、そのようなプログラムを用いて並列動作を行っても、高いスループットを得ることができない。
 図19に、プロセッサのリソースが余り、高いスループットを得ることができないという課題が発生する並列動作の例を示す。本例では、ホストプロセッサと、ホストプロセッサの処理を補助するサブプロセッサとしてのアクセラレータが備えられている。プロセッサのリソース量は、ホストプロセッサよりもアクセラレータの方が多いものとする。
 オフロード部として指定された部分プログラムの実行のためには、ホストプロセッサとアクセラレータの双方のリソースを必要とする。すなわち、一つの入力データに対してオフロード部を実行すると、ホストプロセッサとアクセラレータのリソースがある一定量ずつ使われる。このとき、ホストプロセッサとアクセラレータのリソース量に違いがあると、ホストプロセッサとアクセラレータについて同量のリソースを使用するプログラムを、複数の入力データに対して同時に実行すると、ホストプロセッサのリソースが先に使い切られる。そして、アクセラレータのプロセッサリソースが余ってしまう。このように、アクセラレータのリソースが余っているにもかかわらず、実行中の入力データ数以上の入力データに対するプログラム実行ができないという問題が発生する。
 一般に、オフロード部を含むプログラムを複数本、並列に実行したときに、プロセッサリソースを使い切ることは容易ではない。オフロード部の選択や、プログラムへのプロセッサリソースの配分について、各種の技術が開示されている。
 入力ソフトウェア内の各ループをどのプロセッサで実行するかを決定する方法がある(例えば、特許文献1参照。)。特許文献1記載の技術では、アクセラレータへのデータ転送時間を測定し、ホストプロセッサとアクセラレータのそれぞれについてテストプロセッサの実行時間の優劣を示す勝敗表を作成する。そしてその勝敗表に基づいてオフロードする対象のループを決定し、そのループがオフロードされるように入力ソフトウェアを変換する。
 また、複数のプログラムに対してプログラム種別ごとにプロセッサリソースを与える方法がある(例えば、特許文献2参照。)。この文献記載の技術では、リアルタイムプログラムと非リアルタイムプログラムに分けてリソースを与えることで、一つのプログラムでリソースを独占せずに複数のプログラムを動かすことができる。
特開2011-204209号公報 特開平10-289116号公報
 特許文献1の技術では、オフロードが効果的なループを発見し、そのループがオフロードされるように入力ソフトウェアが変換される。ところが、汎用プロセッサとアクセラレータのそれぞれについて、オフロードされるループの処理に必要なリソース量、その時点で使用可能なリソース量ともに考慮されない。そのため、アクセラレータのリソースが余ったり、リソース不足によりオフロードできなかったりする可能性がある。従って、システム全体としては、さらに高い性能を発揮できるリソースを備えている場合であっても、そのリソースを活用することができない。
 特許文献2の技術では、一つのプログラムでリソースを独占せずに複数のプログラムを動かすことができる。しかし、特許文献2の技術では、異なる種別の複数のプログラムが存在することが前提とされており、複数の入力のそれぞれに対して共通の一つのプログラムを、並列に実行することは想定されていない。従って、特許文献2の技術では、プロセッサのリソースが余っていたとしても、リソースを分けることによって、一つのプログラムを並列に実行することができない。
(発明の目的)
 本発明は上記のような技術的課題に鑑みて行われたもので、システムが備えるプロセッサのリソースを最大限に使用し、処理能力を向上させることができる、プログラム変換装置及び方法、処理切替方法及びプログラム、実行方式決定方法及びプログラム、プロセッサシステム並びに並列実行方法を提供することを目的とする。
 本発明のプログラム変換装置は、特定の処理について、第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式指定プログラムを含む対象プログラム中の、部分プログラムの範囲を判定する特定処理判定手段と、部分プログラムを、使用比率を第1の比率とは異なる第2の比率として併用して動作する第2の実行方式指定プログラムに変換する処理変換手段を備えることを特徴とする。
 本発明のプログラム変換方法は、特定の処理について、第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式指定プログラムを含む対象プログラム中の、部分プログラムの範囲を判定し、部分プログラムを、使用比率を第1の比率とは異なる第2の比率として併用して動作する第2の実行方式指定プログラムに変換することを特徴とする。
 本発明の処理切替方法は、外部からの指定に基づいて、特定の処理について、第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式による第1の処理手段と、又は使用比率を第1の比率とは異なる第2の比率として併用して動作する第2の実行方式による第2の処理手段を切り替えることを特徴とする。
 本発明の処理切替プログラム記憶媒体は、第1のプロセッサに、特定の処理について、第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式による第1の処理手段と、使用比率を第1の比率とは異なる第2の比率として併用して動作する第2の実行方式による第2の処理手段と、外部からの指定に基づいて、第1の処理手段又は第2の処理手段を切り替える処理切替手段として動作させるためのプログラムを格納することを特徴とする。
 本発明の実行方式決定方法は、特定の処理について、第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式、又は使用比率を第1の比率とは異なる第2の比率として併用して動作する第2の実行方式のいずれかを選択し、選択結果に基づいて、第1の実行方式又は第2の実行方式を設定することを特徴とする。
 本発明の実行方式決定プログラム記憶媒体は、第1のプロセッサに、特定の処理について、第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式、又は使用比率を第1の比率とは異なる第2の比率として併用して動作する第2の実行方式のいずれかを選択する実行方式決定手段と、選択結果に基づいて、第1の実行方式又は第2の実行方式を設定する実行方式設定手段として動作させるためのプログラムを格納することを特徴とする。
 本発明のプロセッサシステムは、第1のリソースを具備する第1のプロセッサと、第2のリソースを具備する第2のプロセッサを備え、第1のプロセッサは、外部からの指定に基づいて、特定の処理について、第1のリソースの第1の使用量と第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式による第1の処理手段、又は使用比率を第1の比率とは異なる第2の比率として併用して動作する第2の実行方式による第2の処理手段を切り替える処理切替手段、並びに第1の処理手段及び第2の処理手段のうちの第1のリソースを使用する第1の部分処理手段として動作することを特徴とする。
 本発明の並列実行方法は、第1のプロセッサを用いて、外部からの指定に基づいて、特定の処理について、第1のプロセッサの第1のリソースの第1の使用量と第2のプロセッサの第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式による第1の処理手段、又は使用比率を第1の比率とは異なる第2の比率として併用して動作する第2の実行方式による第2の処理手段を切り替え、第1の処理手段及び第2の処理手段のうちの第1のリソースを使用する第1の部分処理手段として動作し、第2のプロセッサを用いて、第1の処理手段及び第2の処理手段のうちの第2のリソースを使用する第2の部分処理手段として動作することを特徴とする。
 本発明によると、一種類のプログラムについて、プロセッサリソースを使用する割合がプロセッサごとに異なる複数の実行方式を併用して実行することができる。そのため、一種類のプログラムを並列に実行したときにおいても、プロセッサリソースを使い切ることができる。従って、システムが備えるリソースを十分に使用し、処理能力を高めることができる。
本発明の第1の実施形態が対象とする計算機システムの構成を示すブロック図である。 本発明の第1の実施形態が対象とするプログラムの構成を示す。 本発明の第1の実施形態のプログラム実行システムの構成を示すブロック図である。 本発明の第1の実施形態の並列処理制御システムの動作を示すフローチャートである。 本発明の第1の実施形態によって、未使用のプロセッサリソースが利用される場合の例を示す図である。 本発明の第2の実施形態で設定される実行方式を示す図である。 本発明の第3の実施形態で設定される実行方式を示す図である。 本発明の第4の実施形態において実行方式を決定するときの動作を示すフローチャートである。 本発明の第5の実施形態において実行方式を決定するときの動作を示すフローチャートである。 本発明の第6実施形態の実行方式決定手段の構成を示すブロック図である。 本発明の第6の実施形態の実行方式決定手段の動作を示すフローチャートである。 本発明の第6の実施形態の性能計測結果の管理テーブルの一例である。 本発明の第7の実施形態の計算機システムの例を示すブロック図である。 本発明の第7の実施形態のオフロード指定を含む画像処理プログラムの構成図である。 本発明の第7の実施形態の実行方式併用システムで実現可能な実行方式の例を示す図である。 本発明の第7の実施形態の実行方式併用システムにおいて実行されるプログラムの構成を示すブロック図である。 本発明の第7の実施形態のホストプロセッサ内でスレッドとして動く各手段を示す。 本発明の第7の実施形態の配分数決定アルゴリズムの処理フローを示すフローチャートである。 プロセッサのリソースが余る並列動作の例を示す図である。
(第1の実施形態)
 次に、本発明の第1の実施形態について図面を参照して詳細に説明する。
 図1に、本実施形態が対象とする計算機システムの構成を示す。計算機システムは、複数の計算機100が接続網104で接続されたシステムである。それぞれの計算機は、演算処理装置101、記憶装置102、通信装置103を備える。全ての計算機100は接続網104で接続され、相互に通信が可能である。それぞれの演算処理装置101の構造、いわゆる、アーキテクチャや、処理性能は、同じでも、異なっていても良い。一つ以上の計算機100がホストプロセッサの役割を果たし、その他の計算機100が一つ以上のアクセラレータの役目を果たす。アクセラレータは一つであることに限定されない。アクセラレータのアーキテクチャ又は処理能力は全てが同一である必要はなく、N種類(Nは1以上の整数)のアーキテクチャ又は処理能力があるものとする。
 アクセラレータは、「ホストプロセッサ」から受けた指示に従って処理を行う。従って、「ホストプロセッサ」と「アクセラレータ」は、それぞれ、前述の「メインプロセッサ」、「サブプロセッサ」に対応する。本実施形態では、計算機が担う役割を具体的に示す名称として、「ホストプロセッサ」と「アクセラレータ」を用いて説明する。
 本実施形態の例として、複数のコンピュータがバスやネットワークで接続されたコンピュータシステムが挙げられる。バスとは、例えば、パーソナルコンピュータ等で用いられているような、一般的なシリアルやパラレルのバスである。ネットワークとは、例えば、有線や無線のLAN(Local Area Network)である。ただし、本実施形態の例は、これらに限定されない。
 図2に、本実施形態が処理の対象とする対象プログラムの構成を示す。本対象プログラムは、入力処理部201、演算処理部202、出力処理部203を備える。
 対象プログラムの例としては、Webサーバプログラムがある。Webサーバプログラムは、ネットワーク経由で送られてくるクライアントからの要求ごとに処理を行い、処理結果をクライアントに返す。このとき、要求ごとに、WebサーバプログラムがOS(Operating System)の標準機能を利用することによって、実行スレッド、又はインスタンスが生成される。このようなWebサーバプログラムの処理の一部は、サーバ内のアクセラレータで処理されるように、Webサーバプログラム中で指定されている。Webプログラムは対象プログラムの一例であり、対象プログラムはこれに限定されない。
 演算処理部202中には、アクセラレータで実行される部分プログラムとして、オフロード部204が一つ以上指定されている。オフロード部204は、対象プログラム中で、オフロード開始指示文205とオフロード終了指示文206で囲まれた範囲である。本実施形態では、対象プログラム中に、M個(Mは1以上の整数)のオフロード部が指定されているものとする。
 本実施形態では、図1の計算機システム上において、対象プログラムによる各プロセッサのプロセッサリソースの使用量が異なる、L種類(Lは1以上の整数)の実行方式があるものとする。これら複数の実行方式の例としては、以下のような方式が挙げられる。
 1)ホストプロセッサのみで動作する実行方式
 オフロード指定を無視することによって、全処理をホストプロセッサのみで動作する実行方式である。
 2)入力処理から出力処理の範囲でオフロードする実行方式
 入力処理から出力処理までの範囲に限り、オフロード対象とする実行方式である。
 3)M箇所のオフロード指定部の一部のみをオフロードする実行方式
 M箇所のオフロード指定部の一部のみをオフロードし、その他のオフロード指定を無視する実行方式である。
 4)対象プログラム中の任意の部分をオフロードする実行方式
 対象プログラム中の任意の部分をオフロードできるように、所定の変換ソフトウェアを用いて生成された、変換後プログラムを実行するための実行方式である。
 図3に本実施形態のプログラム実行システムの構成を示す。本プログラム実行制御システムは、変換装置310と、ホストプロセッサ320、アクセラレータ330を含む計算機システム300を備える。ホストプロセッサ320、アクセラレータ330の各々は、単体の演算装置であっても、一体の計算機の一部であってもよい。また、アクセラレータ330の個数は1以上であればよく、個数は限定されない。また、アクセラレータ330が複数個ある場合、それらのアーキテクチャは同一である必要はない。
 変換装置310は、特定処理判定手段311と処理変換手段312を備える。
 特定処理判定手段303は、対象プログラム340の中の、指定された所定の処理を行う部分(以降、「特定処理部」という。)を判別する。ここでは、全特定処理部がオフロードの対象であるものとする。従って、対象プログラム340の中に、M箇所の特定処理部が指定されている。
 処理変換手段312は、対象プログラム340のM箇所の特定処理部を、複数の実行方式で実行可能となるように、変換後プログラム341に変換する。従って、変換後プログラム341は、内部に、L種類の実行方式のそれぞれに対応した実行方式指定プログラム342と、処理切替手段343を含む。処理切替手段309は、実行方式指定プログラム310に適用すべき実行手段を、L種類の実行方式の中で切り替える。
 ホストプロセッサ320は、実行方式決定手段321、実行方式設定手段322を持つ。
 アクセラレータ330は、ホストプロセッサ320から、実行方式指定プログラム342のうち、アクセラレータによる実行を含む実行方式に対応したアクセラレータ指定プログラム344を受け取る。なお、アクセラレータ330は、前述の「ホストプロセッサのみで動作する実行方式」に対応する実行方式指定プログラム342については、受け取る必要はない。
(第1の実施形態の動作)
 これらの手段は、それぞれ、以下のように動作する。
 特定処理判定手段311は、対象プログラム340を入力し、対象プログラム340から特定処理で囲まれた範囲を探し、対象プログラム340中のオフロード可能な範囲を調べる。そして、特定処理判定手段311は、対象プログラム340の複数の特定処理の位置を処理変換手段312へ通知する。
 処理変換手段312は、特定処理判定手段311から通知された、複数の特定処理の位置を入力し、特定処理の位置で囲まれた範囲をオフロード可能な範囲とする。そして、処理変換手段312は、各オフロード可能な範囲に対して、オフロードをする場合と、オフロードしない場合の両方の実行方式の実行方式指定プログラム342を作成する。各々の実行方式指定プログラム342は、ホストプロセッサ320又はアクセラレータ330についてのプロセッサリソースの使用量が異なる。さらに、処理変換手段312は、両方式のプログラムを切り替える、処理切替手段343を有する変換後プログラム341を作成する。
 ホストプロセッサの実行方式決定手段321は、変換後プログラム341を入力し、各プロセッサのプロセッサリソースを使い切ることができるように、一つの入力データに対するプログラムの実行方式を選択する。
 実行方式設定手段322は、実行方式決定手段321から指示された実行方式を、変換後プログラム341の処理切替手段343に、通信手段(図示なし)を用いて通知する。通信手段は、ホストプロセッサの動作を管理するOS等、計算機システム300が備える機能である。
 対象プログラム340は、対象プログラム340中にオフロード指定されたオフロード部を含むプログラムである。対象プログラム340は、特定処理判定手段333に入力され、処理変換手段312によって変換後プログラム341に変換される。
 変換後プログラム341は、入力データごとにいずれかの実行方式で実行される。すなわち、変換後プログラム341は、実行方式設定手段322によって指定された実行方式に従って、処理切替手段343によって実行方式が切り替えられて動作する。
 図4は、本発明の実施形態の並列処理制御システムの動作を示すフローチャートである。
 初めに、変換装置310の特定処理判定手段311は、対象プログラム340中のオフロード可能な範囲を調べるために、対象プログラム340から特定処理部を探す。そして、特定処理判定手段311は、複数のこれら特定処理部の位置を処理変換手段312に通知する(ステップS401)。
 次に、変換装置310の処理変換手段312は、特定処理判定手段311から通知された複数の特定処理部の位置からオフロード可能範囲を認知する。そして、処理変換手段312は、各オフロード可能範囲に対して、オフロードをする部分プログラム及びオフロードしない部分プログラムの両方を作成する。つまり、プロセッサリソースの使用量が異なる複数の実行方式指定プログラムを用意する。さらに、処理変換手段312は、オフロードを行う実行方式指定プログラム及びオフロードを行わない実行方式指定プログラムを切り替える、処理切替手段343を有する変換後プログラム341を作成する(ステップS402)。
 次に、ホストプロセッサ320の実行方式決定手段321は、複数の入力データのうち、各実行方式でいくつを処理するかを判断する。そして、実行方式決定手段321は、各プロセッサのプロセッサリソースを使い切る、一つの入力データを処理する変換後プログラム341の実行方式を選択する(ステップS403)。
 最後に、ホストプロセッサ320の実行方式設定手段322が、実行方式決定手段321から指示された実行方式を変換後プログラム341の処理切替手段343に通信手段を用いて通知する(ステップS404)。
 以上のように、本実施形態の上記のフローによって、各プロセッサのプロセッサリソースの使用量が異なる複数の実行方式を有する変換後プログラム341が生成できる。さらに、入力データごとに実行方式を切り替えるプログラム実行手段が実現できる。そのため、未使用のプロセッサリソースを使用する実行方式を選択することによって、未使用のリソースを極力少なくすることができる。図5に、本実施形態によって、未使用のプロセッサリソースを利用して、より多くの入力データを処理することができる場合の例を示す。
 このように、本実施形態によると、プロセッサリソースを有効に利用して、システムのスループットを向上させることができる。
 第1の実施形態において、対象プログラムのオフロード可能な特定箇所の範囲は、種々に設定が可能である。第2の実施形態と第3の実施形態では、オフロード可能な範囲の設定の例を示す。具体的には、前述の実行方式の中から、2)入力処理から出力処理の範囲でオフロードする実行方式を第2の実施形態として、3)オフロード指定部の一部のみをオフロードする実行方式を第3の実施形態として示す。
(第2の実施形態)
 第2の実施形態では、特定処理判定手段311は、対象プログラム340の「入力処理から出力処理までの範囲」を特定処理と判定し、オフロード可能な範囲として扱う。
 入力処理から出力処理までの範囲がオフロード可能な範囲と扱われる場合、第1の並列処理制御システム上での、変換後プログラム341による各プロセッサのプロセッサリソースの使用量が異なる実行方式は(N+2)種類ある。その内訳は、ホストプロセッサ320とN個のアクセラレータ330を所定の手順で併用する対象プログラム340の元の実行方式が1種類、入力処理から出力処理までの範囲をホストプロセッサ320が実行する実行方式が1種類、N種類のアクセラレータのいずれか1個で実行する実行方式がN種類である。本実施形態で設定される複数の実行方式の例を図6に示す。
 特定処理を上記のように設定するために、第2の実施形態では、第1の実施形態のステップS401において、以下のように処理する。すなわち、特定処理判定手段303は、対象プログラム340中のオフロード可能な範囲を調べるために、対象プログラム340の入力処理から出力処理で囲まれた範囲を探し、その範囲を処理変換手段304に通知する。
 第2の実施形態では、N個のアクセラレータのいずれかのみがオフロード部の処理を行うという実行方式を用いることができる。すなわち、各アクセラレータ上で独立に動作できる実行方式を有する。従って、いずれかのアクセラレータのプロセッサリソースのみが使い切れない場合でも、そのアクセラレータにオフロードすることによって、プロセッサリソースを使い切ることができる。
(第3の実施形態)
 第3の実施形態では、特定処理判定手段311は、対象プログラム340の「オフロード指定がされた範囲」を特定処理部と判定し、オフロード可能な範囲として扱う。すなわち、既にオフロード指定がされた範囲がオフロード可能な範囲と扱う。
 この場合、対象プログラム340がM箇所のオフロード指定部分を含むとすると、各プロセッサのプロセッサリソースの使用量が異なるプログラムの実行方式は(2^M)種類ある。なぜなら、実行形式の組合せは、M箇所のオフロード指定部分の全てをオフロードする場合から、全くオフロードしない場合まであるからである。本実施形態で設定される複数の実行方式の例を図7に示す。
 特定処理を上記のように設定するために、第3の実施形態では、第1の実施形態のステップS401において、以下のように処理する。すなわち、特定処理判定手段311は、対象プログラム340中のオフロード指定された範囲を調べるために、対象プログラム340のオフロードの開始が指定された位置とオフロードの終了が指定された位置の組を探し、これらの位置を処理変換手段312に通知する。
 第3の実施形態では、対象プログラム340のM箇所のオフロード指定部分の一部を無視し、オフロードしないようにすることができる。あるオフロード指定部分を実際にオフロードしたときとオフロードしないときでは、プロセッサリソースの使用量は異なる。従って、M箇所のオフロード指定部分のうちのオフロードする部分の数を調整することによって、プロセッサリソースの使用量が異なる実行方式を複数種類用意することができる。そのため、適切なリソース使用量の実行方式を選択し、未使用のリソースを極力少なくすることにより、システムとしてのスループットを向上させることができる。
 なお、第2の実施形態と第3の実施形態は組み合わせることができる。すなわち、対象プログラム340の元々のオフロードの実行形式に、ホストとN個のアクセラレータのいずれかのみがオフロード部の処理を行うという実行方式、及びM箇所のオフロード指定部分の一部のみをオフロードする実行方式を組み合わせることができる。
 組合せにより実行方式の種類が増え、より柔軟に未使用のプロセッサリソースを使い切ることができ、よりスループットを向上させることができる。
 ところで、第1乃至第3の実施形態において、スループットを向上させるために、実行方式ごとに扱う入力データの個数(以下、「配分数」という。)を変えることも可能である。第4乃至第6の実施形態として、配分数の決定方法の例を示す。
(第4の実施形態)
 第4の実施形態では、各プロセッサのプロセッサリソースを使い切るように、各実行方式で同時に処理する配分数が決定される。そして、配分数を元にして、各入力データの実行方式が決定される。
 配分数の決定方法の例としては、ユーザによる指定、システムのスペックとプログラムのプロファイル結果からの所定のアルゴリズムを用いた算出等、が挙げられる。ここでの「プロファイル」とは、実行時プロファイルと呼ばれるもので、プログラムの実行に関わる各種の情報である。この情報には、プログラムのある部分処理についての、必要な実行時間やプロセッサリソースの量などがある。なお、本発明において、配分数の決定方法は特に限定されない。
 配分数を決定するために、第4の実施形態では、第1の実施形態のステップS403において、具体的には以下のように処理する。すなわち、実行方式決定手段321が、高いスループットで各プロセッサのプロセッサリソースを使い切るように、優先度の高い順に各実行方式の配分数を決定する。そして、実行方式決定手段321は、一つの入力データに対するプログラムの実行方式を決定する(ステップS403)。
 実行方式決定手段321が、実行方式の配分数を決定した上で、一つの入力データに対する実行方式を決定するときの動作を示すフローチャートを図8に示す。
 まず、実行方式決定手段321は、実行方式ごとに同時に処理が実行されている処理データの個数(以降、「同時処理データ数」という。)を取得する(ステップS801)。
 次に、実行方式決定手段321は、優先度の高い実行方式から順番に、同時処理データ数が配分数に満たない実行方式を決定する(ステップS802)。
 最後に、実行方式決定手段321は、高いスループットを得るために、各実行方式の配分数を決定し、決定された配分数と実行中の各実行方式の同時処理データ数から実行方式を決定し、実行方式設定手段322に決定した実行方式を通知する。
 第4の実施形態では、配分数をプログラム実行前に決定する。そのため、プロセッサリソースを利用してプログラム実行中に配分数を決定する処理は不要である。配分数を決定する処理は、対象プログラムには含まれないものであり、実動作のスループットに影響を与える。すなわち、配分数を決定する処理は、オーバヘッドとなる。そこで、プログラム実行前に配分数を決定する。そのため、優先度の高い実行方式が扱うデータ数が理想より少ない状態や、優先度の低い実行方式が扱うデータ数が理想より多い状態にならずに、理想状態でプログラムを実行することができる。従って、複数の実行方式の組合せを用いてプログラムを実行したときに、最適なスループットが得られるという効果がある。
 なお、配分数は、最もスループットが高くなるように、ユーザが変換後プログラム中で指定してもよい。
(第5の実施形態)
 第5の実施形態では、プログラムとプロセッサのパラメータから実行方式ごとの配分数が決定される。実行方式決定手段311が配分数を決定するときの動作を示すフローチャートを図9に示す。
 まず、実行方式決定手段311は、各実行方式の優先度、及び一つの入力データに対する各実行方式のプロセッサ使用率を算出し、各プロセッサの未使用率を初期化する(ステップS901)。
 各実行方式の優先度の求め方の例として、各実行方式のレイテンシ、すなわち単一の入力データを処理するときのプログラムの実行時間の短い順に高い優先度をつけていく方法が挙げられる。一つの入力データに対する各実行方式のプロセッサ使用率の例として、単位時間あたりの各プロセッサでの実行時間の割合が挙げられる。各プロセッサの未使用率は100パーセントを初期とする方法が挙げられる。
 次に、実行方式決定手段311は、各プロセッサの未使用率と一つの入力データに対する各実行方式のプロセッサ使用率から、使用するプロセッサに空きがあることで実行可能と判定される実行方式の中で最も優先度の高い実行方式を選択する(ステップS902)。
 次に、実行方式決定手段301は、選択された実行方式が同時に扱う入力データ数を決定する(ステップS903)。
 入力データ数を決定する方法の例として、各プロセッサに対して未使用率を一つの入力データに対する実行方式のプロセッサ使用率で除算した結果の中で最小のものを、選択された実行方式が同時に扱う入力データ数とする方法が挙げられる。ただし、これに限定されるものではない。
 次に、実行方式決定手段311は、各プロセッサの未使用率を更新する(ステップS904)。すなわち、実行方式決定手段311は、ステップS903で決定された入力データ数を選択された実行方式で扱ったときのプロセッサ使用率を算出する。実行方式決定手段311は、プロセッサの未使用率から算出したプロセッサ使用率を減算した結果を、更新後のプロセッサの未使用率とする。
 最後に、実行方式決定手段311は、全てのプロセッサの未使用率がゼロとなっているかを判定する(ステップS905)。全てのプロセッサの未使用率がゼロならば、本配分数決定アルゴリズムは終了し、ゼロでなければステップS902に遷移する。
 第5の実施形態では、プロセッサのパラメータと対象プログラムのパラメータから、配分数を自動で算出する。配分数の算出処理は、プログラム実行前に行うことができる。そのため、プロセッサリソースを利用してプログラム実行中に配分数を決定する処理は不要である。従って、第4の実施形態と同様に、複数の実行方式の組合せを用いてプログラムを実行したときに、最適なスループットが得られるという効果がある。
(第6の実施形態)
 第6の実施形態では、仮の配分数を決定し、その配分数から実行方式を選択する。
 図10は、本実施形態の実行方式決定手段1001の構成を示すブロック図である。
 実行方式決定手段1001は、性能計測手段1002、配分数決定手段1003、実行方式選択手段1004を備える。そして、各手段の間でやりとりされる情報として、性能計測結果1011、実行方式の優先度情報1012、実行方式ごとに扱う入力データ数である配分数1013が存在する。
 図11は、本実施形態の実行方式決定手段1001の動作を示すフローチャートである。図12は、3種類の実行方式を用意した場合の動作において用いられる性能計測結果の管理テーブルの一例である。
 まず、配分数決定手段1003が配分数の初期値を決定する(ステップS1101)。実行方式選択手段1004が、決定された現在の配分数から、入力に対する実行方式を選択する。そして、変換後プログラム341の実行が開始される。
 次に、配分数決定手段1003は、実行方式の優先度情報から配分数が未確定の実行方式を選択する(ステップS1102)。
 配分数決定手段1003は、選択した実行方式の配分数を増加させる(ステップS1103)。実行方式選択手段1004は、増加された現在の配分数から、ある入力に対する実行方式を選択する。そして、変換後プログラム341に含まれる3種類の実行方式指定プログラム342のうちのいずれかが実行される。
 性能計測手段2301が、単位時間あたりのスループット性能を計測し、結果を各実行方式の配分数とスループット性能の組で構成される管理テーブルに追加する(ステップS1104)。
 配分数決定手段1003が、配分数を確定するか否かを判定する(ステップS1105)。本実施形態では、配分数を確定するときの条件(以降、「配分数確定条件」という。)は、「対象の実行方式を増加させたときの性能計測結果が、増加させる前の性能計測結果より悪化したこと」とする。ただし、配分数確定条件は、性能計測結果の増減があったときであれば良い。従って、配分数確定条件は上記の条件には限定されない。
 そして、性能計測結果が配分数確定条件を満たし、配分数の確定が決定されたときはステップS1106へ遷移し、配分数の確定が決定されなかったときはステップS1103へ遷移する。
 次に、配分数決定手段1003が、選択した実行方式の配分数を確定する(ステップS1106)。本実施形態では、配分数を増加させる前の性能計測結果になったときの配分数を、選択実行方式の配分数として確定する。
 最後に、配分数決定手段1003が、動的に配分数を決定するフローの終了を判定する(ステップS1107)。本実施形態では、全ての実行方式の配分数が確定した条件を満たしたときはフローを終了し、条件を満たさないときはステップS1102へ遷移する。
 配分数決定手段1003の以上の動作により、各実行方式の配分数が決定され、配分数に従ったプログラム実行ができる。
 本実施形態の実行方式決定手段1001の動作の理解のために、具体的数値を示して、図11の処理フローを説明する。
 まず、配分数決定手段1003が配分数の初期値を決定する(ステップS1101)。本実施形態では、配分数の初期値として、実行方式1については”15”、実行方式2については”0”、実行方式3については”0”を設定する。実行方式選択手段1004は、設定された上記の配分数から、ある入力に対する実行方式を選択し、アプリケーションの実行が開始される。
 次に、配分数決定手段1003は、実行方式の優先度情報から配分数が未確定の実行方式を選択する(ステップS1102)。本実施形態では、最も優先度の高い実行方式1の配分数を確定させるために、実行方式1を選択する。
 配分数決定手段1003は、選択した実行方式1の配分数を増加させる(ステップS1103)。本実施形態では、各配分数を1ずつ増加させる。実行方式選択手段1004は、増加された現在の配分数から、ある入力に対する実行方式を選択する。そして、アプリケーションが実行される。
 性能計測手段1001が、単位時間あたりのスループット性能を計測し、結果を管理テーブルに追加する(ステップS1104)。本実施形態では、計測するスループット性能を、1秒あたりに出力されるデータの個数と定義する。ただし、計測される性能は、スループットには限定されない。本実施形態での管理テーブルでは、初期状態として、実行方式1、2、3の配分数をそれぞれ、”15”、”0”、”0”として実行したときの性能値として、”150”が記載される。
 配分数決定手段1003が、配分数を確定するか否かを判定する(ステップS1105)。本実施形態では、配分数確定条件は、対象の実行方式を増加させたときの性能計測結果が、増加させる前の性能計測結果より悪化したことである。
 配分数の確定が決定されたときはステップS1106へ遷移し、配分数の確定が決定されなかったときはステップS1103へ遷移する。本実施形態では、図12の管理テーブルのように、結果番号5と結果番号6の間で、性能結果が”200”から”190”へと低下する。従って、結果番号6の処理を行ったときに、ステップS1106へ遷移する。
 ステップS1106では、配分数決定手段1003が、選択した実行方式の配分数を確定する。本実施形態では、配分数を増加させる前の性能計測結果が得られたときの配分数を、選択実行方式の配分数として確定する。本実施形態では、配分数決定手段1003は、図12の管理テーブルから、実行方式1の配分数を20と確定させる。
 最後に、配分数決定手段1003が、動的に配分数を決定するフローの終了を判定する(ステップS1107)。本実施形態では、全ての実行方式の配分数が確定した条件を満たしたときはフローを終了し、条件を満たさないときはステップS1102へ遷移する。
 第6の実施形態では、実行時に高いスループットを得るための配分数を探索する。従って、プロセッサや対象プログラムのパラメータがなくても配分数を決定することができる。
(第7の実施形態)
 次に、第7の実施形態として、具体的な計算機システムの例を示す。
 図13に、ホストプロセッサであるマルチコアとアクセラレータであるメニコアで構成された計算機システムの構成図を示す。
 本実施形態の計算機システムは、ホストプロセッサ1301と、ホストメモリ1302と、バスコントローラ1303と、アクセラレータ1304を備える。アクセラレータ1304は、内部にメニコア1305とメモリ1306を備える。
 ホストプロセッサ1301とメニコア1305とでは、内蔵されているCPU(Central Processing Unit)のアーキテクチャ及び個数が異なる。演算器の構造及び個数が異なるために、ホストプロセッサ1301とメニコア1305には、相対的に得意な処理と不得意な処理が存在する。
 本実施形態では、ホストプロセッサ1301とメニコア1305のCPU数は、ホストプロセッサ1301が8個、メニコア1305が40個である。また、ホストプロセッサ1301とメニコア1305のそれぞれのCPUの、スカラ演算とベクトル演算を実行するときの性能は異なる。例えば、スカラ演算については、ホストプロセッサ1301の1個のCPUの性能を1とすると、メニコア1305の1個のCPUの性能は0.25であり、ホストプロセッサ1301のCPUの性能の方が高い。ベクトル演算については、ホストプロセッサ1301の1個のCPUの性能を1とすると、メニコア1305の1個のCPUの性能は2であり、メニコア1305のCPUの性能の方が高い。
 ホストプロセッサ1301とアクセラレータ1304は、バスコントローラ1303で接続される。
 ソフトウェアについては、ホスト用のOSとアクセラレータ用のOSが独立に動作している。ホストプロセッサ1301とアクセラレータ1304との間の通信は、ソケットなどの一般技術で実現される。
 オフロード実行の実現のために、ホストプロセッサ1301からアクセラレータ1304に、処理の開始を指示する機能がある。また、ホストプロセッサ1301とアクセラレータ1304は、各々固有のIP(Internet Protocol)アドレスを持っている。
 図14に、本実施形態において、一つの入力に対するオフロード指定を含む画像処理プログラムの構成図を示す。
 対象プログラム340は、入力処理API(Application Program Interface)1403、演算処理A1404、オフロード開始API1405、演算処理B1406、オフロード終了API1407、出力処理API1408を含む。
 入力キュー1401には、対象プログラム340の実行開始までに画像データが格納される。設定ファイル1402には、コマンドライン引数等のプログラムの実行パラメータが指定されている。対象プログラム340は、入力キュー1401及び設定ファイル1402から必要な情報を読み出し、処理結果を出力キュー1409へ出力する。以下に、対象プログラム340に含まれる各構成要素の動作を説明する。
 入力処理API1403は、設定ファイル1402からの実行パラメータ、及び入力キュー1401からの画像データを取得することによって、プログラムを実行するための情報を設定する。
 入力処理API1403が入力キューからデータを取得する機構は以下の通りである。すなわち、ホストプロセッサ320上の入力キュー1401の管理スレッドが、ソケットを用いて入力キュー1401内のデータをプログラムに送信する。そして、プログラムスレッドで実行される入力処理API1403が、ソケットでデータ受信を行う。
 入力処理API1403は、コマンドライン引数を受け取ってプログラムを実行するためのデータを設定するよう規定される。そのため、実行のために必要となるデータはコマンドライン引数のみである。
 演算処理A1404は、対象プログラム340の一部を構成するスカラ演算処理で、入力処理API1403によって設定された情報を入力として処理を行う。
 オフロード開始API1405は、ホストプロセッサ320からアクセラレータ330へのオフロードの開始位置、及びホストプロセッサ320からアクセラレータ330へと転送されるデータを指定する。
 演算処理B1406は、対象プログラム340の一部を構成するベクトル演算処理で、演算処理A1404から得られる途中結果を使って処理を行う。
 オフロード終了API1407は、ホストプロセッサ320からアクセラレータ330へのオフロードの終了位置、及びアクセラレータ320からホストプロセッサ330へ転送されるデータを指定する。
 出力処理API1408は、演算処理B1406までを処理することで得られた結果を出力キュー1409に追加する。
 出力処理API1408が出力キュー1409へのデータ追加をする機構は、以下の通りである。すなわち、プログラムスレッドである出力処理API1408がソケットでデータ送信を行う。そして、ホスト上で実行されているスレッドがソケットでデータ受信を行い、データを出力キュー1409へ追加する。
 出力処理API1408は、結果のデータのみを引数で受け取り、出力キューに書き出すよう規定される。そのため、出力処理API1408自体が生成するデータはない。
 プログラム全体の実行時間に占める、各処理の実行時間の割合は、入力処理APIと出力処理APIについては無視できるほどに小さく、演算処理A1404については4割、演算処理B1406については6割である。
 演算処理Aと演算処理Bともに、ホストプロセッサ320とアクセラレータ330のいずれによっても実行が可能である。実施実施形態では、ホストプロセッサ320用のコンパイラとアクセラレータ330用のコンパイラの両方が用意される。そのため、1つのプログラムから、それを実行するプロセッサが異なる2種類の実行ファイルを生成することが可能である。
 入力処理API1403は、入力キュー1401からのデータ取得をソケットで実現している。そのため、ホストプロセッサ320とアクセラレータ330のいずれによっても実行が可能である。
 出力処理API1408は、出力キュー1409へのデータ出力をソケットで実現している。そのため、ホストプロセッサ320とアクセラレータ330のいずれによっても実行が可能である。
 本実施形態では、プログラムを実行するためのプロセッサの割り当てが指定された、元々の実行方式である実行方式1とは、割り当てが異なる実行方式2を用意する。実行方式が異なると、各プロセッサについてのリソース使用量が異なる。そのため、複数の入力データに対して複数の実行方式を併用することによって、余剰のリソースを極力、削減することができる。従って、システム全体としてのスループットを向上させることができる。以降、異なる実行方式を併用して実行するシステムを、「実行方式併用システム」という。また、ホストプロセッサ320、アクセラレータ330を、単に「ホスト」、「アクセラレータ」という。
 図15に、実行方式併用システムで実現可能な、プログラムの複数の実行方式の例を示す。
 「実行方式1」は、元のオフロード指定付きプログラムの実行方式であり、プログラムの一部が、ホストからアクセラレータへオフロードされる。実行方式1では、次のようなフローで処理が行われる。
 まず、ホスト側で、入力API及び演算処理Aが実行される。そして、ホストがオフロード開始APIを実行し、ホストからアクセラレータへデータを転送する。
 次に、アクセラレータ側で、演算処理Bが実行される。そして、アクセラレータがオフロード終了APIを実行し、アクセラレータからホストへデータを転送する。
 最後に、ホスト側で、出力APIが実行される。
 実行方式1では、1つの入力データに対して、ホストのプロセッサリソースとアクセラレータのプロセッサリソースの両方が使用される。なお、本実施形態において、「1つの入力データ」とは、処理対象の単位となる単一あるいは一組の入力データを意味する。
 次に、「実行方式2」は、プログラムの全てがホスト側で実行される実行方式である。実行方式2では、ホスト側で、入力API、演算処理A演算処理B、及び出力APIの実行の全てが実行される。
 実行方式2は、コンパイラなどの一般技術で、プログラム中のオフロード指定部を無視することで実現される。実行方式2では、1つの入力データに対して、ホストのプロセッサリソースのみが使用される。
 最後に、「実行方式3」は、プログラムによる処理の全てがアクセラレータ側で実行される実行方式である。ただし、アクセラレータへの処理の開始の指示は、ホストプロセッサが実行する必要がある。実行方式3では、アクセラレータ側で、入力API、演算処理A、演算処理B、及び出力APIの実行の全てが実行される。
 実行方式3は、コンパイラなど一般技術によって、オフロード指定部を無視し、変換装置310によって入力処理APIから出力処理APIまでをオフロード部として、実行方式指定プログラム342に変換することで実現される。入力処理APIから出力処理APIまでをオフロードするために必要なデータ転送情報は、規定されたAPIを用いているために、コマンドライン引数のみであることが分かっている。実行方式3では1入力に対してアクセラレータのプロセッサリソースのみを使用する。これはオフロード先アクセラレータの指定を変えることで、複数種類のアクセラレータがあった場合も実現が可能である。
 図16に、本実施形態の実行方式併用システムにおいて使用される各種のプログラム1600(以降、「プログラム群」という。)の構成例と、プログラム群1600に含まれる各プログラム間の関係を示す。
 プログラム群1600に含まれる6つのプログラムは、以下の4つに分類される。
1)処理対象として入力されるプログラム
 対象プログラム340は、本実行方式併用システムによって処理される対象のプログラムである。対象プログラム340は、ホストプロセッサ320によって、実行方式1でのオフロードが想定されたプログラムである。対象プログラム340は、変換装置310に入力され、変換後プログラム341に変換される。
2)変換装置310によって実行されるプログラム
 変換プログラム1606は、変換装置310によって実行され、対象プログラム340を変換後プログラム341に変換する。
 変換プログラム1606は、特定処理判定手段311、処理変換手段312を備える。特定処理判定手段311と処理変換手段312は、プログラムを変換するソフトウェアの関数である。
 変換装置310は、変換プログラム1606を実行し、対象プログラム340にオフロードの有無又は形態が異なる3種類の実行方式のプログラムを追加し、変換後プログラム341を生成する。すなわち、変換装置310は、対象プログラム340を基に、オフロードの形態が異なる他の実行方式2、3で実行される実行方式指定プログラム342を含む、変換後プログラム341を生成する。実行方式指定プログラム342は、ホストプロセッサ320及びアクセラレータ330の一方又は両方によって実行される。
 さらに、変換後プログラム341は、内部に条件分岐で実現された処理切替手段343を含む。
3)ホストプロセッサ320によって実行されるプログラム
 変換後プログラム341、複数実行プログラム1601、及び実行方式決定プログラム1607は、ホストプロセッサ320によって実行され、本実行方式併用システムのオフロードの全体を制御する。
 実行方式決定プログラム1607は、実行方式決定手段321と実行方式設定手段322を備える。実行方式決定手段321と実行方式設定手段322はデーモンスレッドの関数である。
 複数実行プログラム1601は、入力データ確認手段1602、実行方式問合せ手段1603、スレッド実行手段1604を備える。 スレッド実行手段1604は、複数実行プログラム1601の実行のために、一般的なOSが有するスレッド生成手段(図示なし)を用いてスレッドを生成する。複数実行プログラム1601と実行方式決定プログラム1607との間の情報交換は、一般的なOSが有する通信手段(図示なし)を用いて行われる。
 ホストプロセッサ320は、複数実行プログラム1601と実行方式決定プログラム1607を用いて、入力データごとに実行方式を選択する。そして、ホストプロセッサ320は、変換後プログラム341に含まれる実行方式指定プログラム342のうち、選択した実行方式に対応するプログラムを実行する。ホストプロセッサ320は、選択した実行方式がアクセラレータ330使用する方式であるときは、アクセラレータへのオフロード部である、アクセラレータ指定プログラム344をアクセラレータに実行させる。
4)アクセラレータ330によって実行されるプログラム
 アクセラレータ指定プログラム344は、ホストプロセッサ320によってオフロードされ、アクセラレータ330によって実行されるプログラムである。
 次に、本実施形態の実行方式併用システムの動作を説明する。図17に、ホストプロセッサ320内で、各手段がスレッドとして動く様子を示す。各スレッドの動作は、後述する。
 実行方式併用システム1600の動作は、(1)対象プログラムから変換後プログラムを作成するフェーズと、(2)実行方式を切り替えながら変換後プログラムを実行するフェーズ、の2つのフェーズに分かれる。
(1)元プログラムから変換後プログラムを作成するフェーズ
 特定処理判定手段と処理変換手段によって、対象プログラムから変換後プログラムが作成される。
 特定処理判定手段311は、対象プログラム340の入力処理APIと出力処理APIの位置をプログラムソース中から探し、入力処理APIと出力処理APIの位置を処理変換手段312に通知する(ステップS401)。
 処理変換手段312は、特定処理判定手段311から通知された入力処理APIと出力処理APIの位置から、入力処理APIから出力処理APIまでの範囲をオフロード可能範囲として設定する。そして、処理変換手段312は、前述の3種類の実行方式で実行される実行方式指定プログラム342を、オフロード可能範囲のプログラムのコピーとオフロード開始APIとオフロード終了APIの追加や削除によって生成する。
 具体的には、実行方式1の実行方式指定プログラム342は、対象プログラム340に含まれるオフロード開始APIの直後の処理から、オフロード終了APIの直前の処理までの範囲、すなわち、オフロード可能範囲に含まれているプログラムを削除することで実現する。
 実行方式2の実行方式指定プログラム342は、対象プログラム340のプログラムをそのまま利用することで実現する。なお、実行方式2の実行方式指定プログラム342は、実際にはオフロードは行われないが、他の実行方式のものと区別することなく、オフロードプログラムと呼ぶことにする。
 実行方式3の実行方式指定プログラム342の生成のために、まず、オフロード可能範囲に含まれるオフロード開始APIとオフロード終了APIを削除する。次に、入力処理APIから出力処理APIをオフロード指定するために、入力処理APIで必要なデータの指定とともに、入力処理APIの直前にオフロード開始APIを追加する。さらに、出力処理APIから出力されるデータの指定とともに、出力処理APIの直後にオフロード終了APIを追加する。以上の処理により、実行方式3が実現される。
 対象プログラム340から、上記の3種類の実行方式の実行方式指定プログラム342、及び3種類の実行方式を条件分岐で切り替える処理切替手段343を有する変換後プログラム341が生成される(ステップS402)。なお、条件分岐の条件は、変換後プログラム341の実行時に、実行方式設定手段321からソケット通信を用いて通知される。
(2)実行方式を切り替えながら変換後プログラムを実行するフェーズ
 変換後プログラム341を含む複数実行プログラム1601は、実行方式決定手段321と実行方式設定手段322によって、実行方式が切り替えられながら、実行される。
 複数実行プログラム1601のスレッドと、実行方式併用用スレッドが実行状態になる。
 複数実行プログラム1601は、入力キュー1401にデータがあるか否かをチェックする。入力キュー1401にデータがない場合は、複数実行プログラムは1601入力キュー1401にデータが入ってくるまで待ち状態になる。
 実行方式問合せ手段1603は、処理する入力データに対する実行方式を決定するために、実行方式決定手段321に対して、実行方式併用用スレッドに対する問い合わせを行う。この問い合わせにはソケット通信が用いられる。
 まず、実行方式決定手段321は、プログラムとシステムのパラメータから、各実行方式の配分数を配分数決定アルゴリズムで決定する。
 次に、実行方式決定手段321は、実行方式の優先度順に、各実行方式の現在実行している入力データ数が既に決定した配分数に達していない実行方式を選択し、一つの入力データに対するプログラムの実行方式として決定する。配分数決定アルゴリズムについては後述する。
 実行方式設定手段322は、実行方式決定手段321から指示された実行方式を、実行方式問合せ手段1603に通知する。この通知にはソケット通信が用いられる。
 実行方式問合せ手段1603は、受け取った実行手段を変数として設定する。
 スレッド実行手段1604は、一つの入力データに対する変換後プログラム341を実行するためにスレッドを生成する。スレッド実行手段1604は、スレッド生成時に、実行方式問合せ手段1603によって設定された変数を引数として与える。
 変換後プログラム341のスレッドでは、スレッド実行手段1604から引数で通知された実行方式を示す変数と、条件分岐で実現された処理切替手段343から、指定された実行方式でオフロードプログラムが実行される。
 本実施形態では、実行方式ごとに、処理するデータ数の配分を決定し、各データに対する実行方式を、データ数の配分を基にして決定する。以下に、配分数決定アルゴリズムのフローを示す。
 図18は、本アルゴリズムの処理フローを示すフローチャートである。
 全ての実行方式に対して、レイテンシが小さい順に優先度を設定し、全てのプロセッサリソースの未使用率を100パーセントと設定する(ステップS1801)。
 本実施形態では、実行方式のレイテンシが小さい順に優先度を設定する。データ転送による時間が十分無視できるとして、各実行方式のレイテンシはプログラム全体の実行時間の4割を占めるスカラ演算である演算処理Aのレイテンシとプログラム全体の実行時間の6割を占めるベクトル演算である演算処理Bのレイテンシの和とする。なお、スカラ演算処理については、ホストプロセッサ320の性能とアクセラレータ330の性能の比は、4:1である。ベクトル演算処理については、ホストプロセッサ320の性能とアクセラレータ330の性能の比は、1:2である。
 本実施形態では、ある実行方式の「レイテンシ」を、単一の入力データを処理するプログラムについて、その全体をホストが処理したときの実行時間に対する、その実行方式で処理したときの実行時間の比と定義する。このとき、実行方式1では、ホストによる実行時間は0.4÷1.0で0.4、アクセラレータによる実行時間は0.6÷2.0=0.3となる。り従って、実行方式1のレイテンシはこれらの和であるから、0.7となる。
 実行方式2のレイテンシは、全てホストプロセッサ320が処理することから、1.0である。
 実行方式3のレイテンシは、0.4÷0.25+0.6÷2.0=1.9となる。
 従って、優先度は高い順に実行方式1、実行方式2、実行方式3となる。
 次に、プロセッサリソースの未使用率がゼロ、すなわち全てのリソースが使用済みのプログラムを利用しない実行方式の中で、最も優先度が高い実行方式を選択する(ステップS1802)。ここでは、ホストとアクセラレータの両方のプロセッサリソース未使用率が100パーセントであるため、実行方式1から実行方式3の全ての実行方式が対象となる。これらの実行方式の中で、最も優先度の高い実行方式は実行方式1であるため、実行方式1を選択する。
 選択された実行方式がホストのプロセッサリソースとアクセラレータのプロセッサリソースの両方を使う実行方式であるかを判断する(ステップS1803)。両方を使う実行方式のときはステップS1804へ、一方のみを使う実行方式であればステップS1806へ分岐する。実行方式1はホストとアクセラレータのプロセッサリソースを使うため、ステップS1804に進む。
 ホストとアクセラレータの各々について、プロセッサリソースを使い切るだけの入力データ数を求める(ステップS1804)。実行方式1では、ホストとアクセラレータを使用するため、それぞれのプロセッサリソースを使い切るだけの入力データ数(以降、「必要データ数」という。)を求める。は、(単位時間当たりに1コアで処理できる入力データ数)×コア数から求める。
 ここで、「単位時間」は、ホストによってプログラムの全体を実行した場合の処理時間とする。
 実行方式1では、ホストはプログラムの4割を占めるスカラ演算を実行するため、単位時間当たりでは1コアで1÷0.4=2.5データが処理できる。本実施形態では、ホストの内蔵コア数が8であるので、ホストのプロセッサリソースを使い切るための必要データ数は、2.5×8=20となる。
 次に、実行方式1では、アクセラレータはプログラムの6割を占めるベクトル処理を実行するため、1コア当たりでは1.0÷(0.6÷2)より3.33データが処理できる。コア数が40であるので、アクセラレータのプロセッサリソースを使い切るための必要データ数は、3.33×40=133.33データとなる。
 ホストとアクセラレータのプロセッサリソース未使用量を使い切るための必要データ数のうちの、小さい方を当該の実行方式のデータ数に決定する(ステップS1805)。ステップS1804で得られた結果から、小さい方の必要データ数はホストの20となるため、実行方式1では20個の入力データを扱うと決定する。
 各計算機のプロセッサリソース未使用量を更新する(ステップS1807)。実行方式1では、20個のデータを処理することによって、ホストのプロセッサリソースは全て使われるため、ホストのプロセッサリソース未使用量は0となる。アクセラレータを使い切るためには133.33データが必要になることから、アクセラレータのプロセッサリソース使用量は20÷133.33から15パーセントとなる。以上から、プロセッサリソース未使用量は、ホストが0パーセント、アクセラレータが85パーセントに更新される。
 全ての計算機のプロセッサリソース余り量が0パーセントであれば、データ数決定フローは終了となり、そうでなければステップS1802へ進む(ステップS1808)。これまでの結果から、アクセラレータのプロセッサリソース余り量がゼロでないため、ステップS1802へ進む。
 ステップS1802では、プロセッサリソース余り量が0パーセントでない計算機がアクセラレータのみであるため、全ての処理がアクセラレータで実行される実行方式3が選択される。
 ステップS1803では、実行方式3がアクセラレータのみを使用するため、ステップS1806へ進む。
 使用されるプログラム、ここではアクセラレータのプロセッサリソースを使い切るために必要なデータ数を決定する(ステップS1806)。
 実行方式3で、アクセラレータの全プロセッサリソースを全て使い切るための必要データ数は1.0÷1.9×40から21.05となる。アクセラレータのプロセッサリソース余り量が85パーセントであるため、余ったアクセラレータのプロセッサリソースで扱うことができるデータの個数は21.05×0.85から17.9データと決定する。必要データ数が決定されると、ステップS1807へ進む。
 ステップS1807では、実行方式3で17.9個のデータを処理することでアクセラレータのプロセッサリソースを使い切るために、アクセラレータのプロセッサリソース余り量はゼロとなる。
 以上の処理により、ホストとアクセラレータの各々について、プロセッサリソース未使用量はともにゼロとなり、実行方式配分数決定アルゴリズムは終了となる。
 以上の結果から、処理されるデータの個数は、実行方式1では20個、実行方式2では0個、実行方式3では17.9個と決定される。このように、本実施形態では、全てのプロセッサリソースを使用することにより、37.9個のデータを処理することができる。
 本実施形態の効果を説明する。本実施形態では、図17のようにプログラムを変換することで複数の実行方式を用意し、入力データごとに実行方式を切り替えることが可能になる。さらに、配分数を決定することで、通常のオフロードにおける実行方式である実行方式1の場合であれば単位時間あたり20データしか扱えないところを、本実施形態では未使用のアクセラレータのプロセッサリソースを使い切ることができるので、単位時間あたり37.9データを扱えるようになる。このように、システムのスループットを大幅に向上させることができるという効果がある。
 なお、プログラム中に、オフロード開始位置及びオフロード終了位置を示す、プラグマ等の指示文が挿入されることがある。そこで、そのような指示文をプログラム中で検索し、発見された場合には、その指示文の位置をオフロード開始位置やオフロード終了位置としてもよい。
 本発明の実施形態では、複数のプロセッサの例として、ホストプロセッサとアクセラレータの場合を示した。ホストプロセッサとアクセラレータは、それぞれ、複数のCPUコアを内蔵しているものとした。また、ホストプロセッサとアクセラレータは、それぞれ、スカラ演算、ベクトル演算に適するものとした。しかし、本発明における複数のプロセッサの、アーキテクチャ、内蔵CPUの個数、適するアプリケーションは特に限定されない。
 各実施形態の説明から理解できるように、本発明におけるプロセッサは、以下のような条件を満たすものであればよい。
1)プロセッサの個数は2個以上である。
 本発明は、プログラムの全部又は一部をオフロードするシステムを対象とするため、プロセッサは複数個必要である。
2)各プロセッサは、所定の処理についての性能に影響を与えるリソースを保有する。
 本発明は、プログラムの全部又は一部について、オフロードの有無を選択することによって、未使用のリソースを極力なくし、システム全体の性能を向上させる。そのため、各プロセッサは、使用の有無によって、システム全体の処理性能が変化するようなリソース、例えばCPU使用時間、複数のCPUコアなどを備える。
3)各プロセッサのアーキテクチャは任意である。
 アーキテクチャの違いによって、プロセッサにとって適した、すなわち、性能が最大限に発揮されるアプリケーションや演算処理等が異なる場合がある。しかし、各プロセッサは、オフロード部の処理が可能なものであればよく、プロセッサの内部の構造や処理方式は任意である。
4)各プロセッサの内蔵CPUコアの個数は1以上である。
 本発明では、各プロセッサのリソースの未使用量が考慮される。しかし、CPUコアを1個のみ内蔵するプロセッサであっても、CPU使用時間等、未使用のリソースの定義は可能であるから、内蔵CPUコアの個数は任意である。
 なお、本明細書における各種のプログラムは、ROM(Read Only Memory)、RAM(Random Access Memory)、フラッシュメモリ等の半導体記憶装置、光ディスク、磁気ディスク、光磁気ディスク等、非一時的な媒体に格納されてもよい。
 また、以上の実施形態は各々他の実施形態と組み合わせることができる。
 以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
 この出願は、2012年6月26日に出願された日本出願特願2012-142901を基礎とする優先権を主張し、その開示の全てをここに取り込む。
 本発明は、例えば、映像監視、映像変換、画像変換、金融処理などのサービスをサブプロセッサ付きサーバで実現したシステムへの適用が可能である。また、入力ごとに所定の処理を行って結果を求めるアプリケーションであって、オフロード部が指定されたものを、計算機の性能が異なるようなクラスタで構成されたシステムで実現するような場合でも、本発明は適用可能である。
   1600 プログラム群

Claims (14)

  1.  特定の処理について、第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式指定プログラムを含む対象プログラム中の、前記部分プログラムの範囲を判定する特定処理判定手段と、
     前記部分プログラムを、前記使用比率を前記第1の比率とは異なる第2の比率として併用して動作する第2の実行方式指定プログラムに変換し、変換後プログラムを生成する処理変換手段
    を備えることを特徴とするプログラム変換装置。
  2.  前記変換後プログラムは、
     前記第1の実行方式指定プログラムと、
     前記第2の実行方式指定プログラムと、
     外部からの指定に基づいて、前記第1の実行方式指定プログラム又は第2の実行方式指定プログラムを切り替える処理切替プログラムを含む
    ことを特徴とする請求項1に記載のプログラム変換装置。
  3.  特定の処理について、第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式指定プログラムを含む対象プログラム中の、前記部分プログラムの範囲を判定し、
     前記部分プログラムを、前記使用比率を前記第1の比率とは異なる第2の比率として併用して動作する第2の実行方式指定プログラムに変換する
    を備えることを特徴とするプログラム変換方法。
  4.  外部からの指定に基づいて、特定の処理について、前記第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式による第1の処理手段と、又は前記使用比率を前記第1の比率とは異なる第2の比率として併用して動作する第2の実行方式による第2の処理手段を切り替える
    ことを特徴とする処理切替方法。
  5.  第1のプロセッサに、
     特定の処理について、前記第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式による第1の処理手段と、
     前記使用比率を前記第1の比率とは異なる第2の比率として併用して動作する第2の実行方式による第2の処理手段と、
     外部からの指定に基づいて、前記第1の処理手段又は第2の処理手段を切り替える処理切替手段
    として動作させるための実行方式決定プログラムを格納した非一時的な記憶媒体。
  6.  特定の処理について、第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式、又は前記使用比率を前記第1の比率とは異なる第2の比率として併用して動作する第2の実行方式のいずれかを選択し、
     前記選択結果に基づいて、前記第1の実行方式又は前記第2の実行方式を設定する
    ことを特徴とする実行方式決定方法。
  7.  前記第1のリソースの未使用量及び前記第2のリソースの未使用量が少なくなるように、前記第1の実行方式又は前記第2の実行方式のいずれかを選択する
    ことを特徴とする請求項6に記載の実行方式決定方法。
  8.  複数の入力データのうちの第1の配分数の入力データについて前記第1の実行方式を適用し、前記複数の入力データのうちの第2の配分数の入力データについて前記第2の実行方式を適用する
    ことを特徴とする請求項6又は7に記載の実行方式決定方法。
  9.  前記第1の実行方式及び前記第2の実行方式の優先度に基づいて、前記第1の配分数及び前記第2の配分数を決定する
    ことを特徴とする請求項8に記載の実行方式決定方法。
  10.  前記第1の配分数及び前記第2の配分数を変化させたときの性能を計測し、
     前記性能に基づいて、前記第1の配分数及び前記第2の配分数を決定し、
     前記決定された配分数に基づいて、前記第1の実行方式及び前記第2の実行方式のいずれかを選択する
    ことを特徴とする請求項8又は9に記載の実行方式決定方法。
  11.  第1のプロセッサに、
     特定の処理について、前記第1のプロセッサが備える第1のリソースの第1の使用量と第2のプロセッサが備える第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式、又は前記使用比率を前記第1の比率とは異なる第2の比率として併用して動作する第2の実行方式のいずれかを選択する実行方式決定手段と、
     前記選択結果に基づいて、前記第1の実行方式又は前記第2の実行方式を設定する実行方式設定手段
    として動作させるためのプログラムを格納した非一時的な記憶媒体。
  12.  第1のリソースを具備する第1のプロセッサと、
     第2のリソースを具備する第2のプロセッサを備え、
     前記第1のプロセッサは、外部からの指定に基づいて、特定の処理について、前記第1のリソースの第1の使用量と前記第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式による第1の処理手段、又は前記使用比率を前記第1の比率とは異なる第2の比率として併用して動作する第2の実行方式による第2の処理手段を切り替える処理切替手段、並びに前記第1の処理手段及び前記第2の処理手段のうちの前記第1のリソースを使用する第1の部分処理手段として動作する
    ことを特徴とするプロセッサシステム。
  13.  前記第2のプロセッサは、前記第1の処理手段及び前記第2の処理手段のうちの前記第2のリソースを使用する第2の部分処理手段として動作する
    ことを特徴とする請求項12に記載のプロセッサシステム。
  14.  第1のプロセッサを用いて、外部からの指定に基づいて、特定の処理について、前記第1のプロセッサの第1のリソースの第1の使用量と第2のプロセッサの第2のリソースの第2の使用量との使用比率を第1の比率として併用して動作する第1の実行方式による第1の処理手段、又は前記使用比率を前記第1の比率とは異なる第2の比率として併用して動作する第2の実行方式による第2の処理手段を切り替え、前記第1の処理手段及び前記第2の処理手段のうちの前記第1のリソースを使用する第1の部分処理手段として動作し、
     前記第2のプロセッサを用いて、前記第1の処理手段及び前記第2の処理手段のうちの前記第2のリソースを使用する第2の部分処理手段として動作する
    ことを特徴とする並列実行方法。
PCT/JP2013/003684 2012-06-26 2013-06-12 プログラム変換装置及び方法、処理切替方法、実行方式決定方法及びプログラム記憶媒体、プロセッサシステム並びに並列実行方法 WO2014002412A1 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US14/411,256 US9483324B2 (en) 2012-06-26 2013-06-12 Program conversion device and method, process switching method, method of determining execution scheme and program storage medium therefor, processor system, and parallel execution scheme
JP2014522403A JPWO2014002412A1 (ja) 2012-06-26 2013-06-12 プログラム変換装置及び方法、処理切替方法、実行方式決定方法及びプログラム記憶媒体、プロセッサシステム並びに並列実行方法

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2012142901 2012-06-26
JP2012-142901 2012-06-26

Publications (1)

Publication Number Publication Date
WO2014002412A1 true WO2014002412A1 (ja) 2014-01-03

Family

ID=49782612

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/JP2013/003684 WO2014002412A1 (ja) 2012-06-26 2013-06-12 プログラム変換装置及び方法、処理切替方法、実行方式決定方法及びプログラム記憶媒体、プロセッサシステム並びに並列実行方法

Country Status (3)

Country Link
US (1) US9483324B2 (ja)
JP (1) JPWO2014002412A1 (ja)
WO (1) WO2014002412A1 (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017119098A1 (ja) * 2016-01-07 2017-07-13 株式会社日立製作所 計算機システム及び計算機の制御方法
WO2017135219A1 (ja) * 2016-02-01 2017-08-10 日本電気株式会社 設計支援装置、設計支援方法、および設計支援プログラムを格納した記録媒体
JP2018132981A (ja) * 2017-02-16 2018-08-23 日本電気株式会社 アクセラレータを有する情報処理装置および情報処理方法
WO2019216127A1 (ja) * 2018-05-09 2019-11-14 日本電信電話株式会社 オフロードサーバおよびオフロードプログラム
WO2020090142A1 (ja) * 2018-10-30 2020-05-07 日本電信電話株式会社 オフロードサーバおよびオフロードプログラム
JPWO2020235087A1 (ja) * 2019-05-23 2020-11-26

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6540072B2 (ja) * 2015-02-16 2019-07-10 富士通株式会社 管理装置、情報処理システム及び管理プログラム
US11063910B2 (en) * 2017-07-31 2021-07-13 Fastly, Inc. Web application firewall for an online service
US11281474B2 (en) * 2020-03-31 2022-03-22 International Business Machines Corporation Partial computer processor core shutoff

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007316710A (ja) * 2006-05-23 2007-12-06 Nec Corp マルチプロセッサシステム、ワークロード管理方法
JP2011204209A (ja) * 2010-03-26 2011-10-13 Toshiba Corp ソフトウェア変換プログラム、および、計算機システム
US20120154412A1 (en) * 2010-12-20 2012-06-21 International Business Machines Corporation Run-time allocation of functions to a hardware accelerator

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6654780B1 (en) 1997-03-28 2003-11-25 International Business Machines Corporation System of managing processor resources in a non-dedicated computer system
US6535971B1 (en) * 1998-11-24 2003-03-18 Minolta Co., Ltd. Data processing system having plurality of processors and executing series of processings in prescribed order
JP3891936B2 (ja) * 2001-02-28 2007-03-14 富士通株式会社 並列プロセス実行方法、及びマルチプロセッサ型コンピュータ
US20030004673A1 (en) * 2001-06-29 2003-01-02 Thurman Robert W. Routing with signal modifiers in a measurement system
CN100489783C (zh) * 2004-06-28 2009-05-20 李晓波 在单计算机上可在同一时刻执行多道程序的方法及系统
US7672236B1 (en) * 2005-12-16 2010-03-02 Nortel Networks Limited Method and architecture for a scalable application and security switch using multi-level load balancing
JP2010287213A (ja) * 2009-05-11 2010-12-24 Nec Corp ファイル変換装置、ファイル変換方法およびファイル変換プログラム
US9135048B2 (en) * 2012-09-20 2015-09-15 Amazon Technologies, Inc. Automated profiling of resource usage

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007316710A (ja) * 2006-05-23 2007-12-06 Nec Corp マルチプロセッサシステム、ワークロード管理方法
JP2011204209A (ja) * 2010-03-26 2011-10-13 Toshiba Corp ソフトウェア変換プログラム、および、計算機システム
US20120154412A1 (en) * 2010-12-20 2012-06-21 International Business Machines Corporation Run-time allocation of functions to a hardware accelerator

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017119098A1 (ja) * 2016-01-07 2017-07-13 株式会社日立製作所 計算機システム及び計算機の制御方法
JPWO2017119098A1 (ja) * 2016-01-07 2018-11-08 株式会社日立製作所 計算機システム及び計算機の制御方法
WO2017135219A1 (ja) * 2016-02-01 2017-08-10 日本電気株式会社 設計支援装置、設計支援方法、および設計支援プログラムを格納した記録媒体
JPWO2017135219A1 (ja) * 2016-02-01 2018-11-29 日本電気株式会社 設計支援装置、設計支援方法、および設計支援プログラム
US10909021B2 (en) 2016-02-01 2021-02-02 Nec Corporation Assistance device, design assistance method, and recording medium storing design assistance program
JP2018132981A (ja) * 2017-02-16 2018-08-23 日本電気株式会社 アクセラレータを有する情報処理装置および情報処理方法
JPWO2019216127A1 (ja) * 2018-05-09 2020-12-10 日本電信電話株式会社 オフロードサーバおよびオフロードプログラム
WO2019216127A1 (ja) * 2018-05-09 2019-11-14 日本電信電話株式会社 オフロードサーバおよびオフロードプログラム
US11106439B2 (en) 2018-05-09 2021-08-31 Nippon Telegraph And Telephone Corporation Offload server and offload program
WO2020090142A1 (ja) * 2018-10-30 2020-05-07 日本電信電話株式会社 オフロードサーバおよびオフロードプログラム
JPWO2020090142A1 (ja) * 2018-10-30 2021-06-10 日本電信電話株式会社 オフロードサーバおよびオフロードプログラム
JP6992911B2 (ja) 2018-10-30 2022-01-13 日本電信電話株式会社 オフロードサーバおよびオフロードプログラム
JPWO2020235087A1 (ja) * 2019-05-23 2020-11-26
WO2020235087A1 (ja) * 2019-05-23 2020-11-26 日本電信電話株式会社 オフロードサーバおよびオフロードプログラム
JP7184180B2 (ja) 2019-05-23 2022-12-06 日本電信電話株式会社 オフロードサーバおよびオフロードプログラム

Also Published As

Publication number Publication date
US20150205643A1 (en) 2015-07-23
US9483324B2 (en) 2016-11-01
JPWO2014002412A1 (ja) 2016-05-30

Similar Documents

Publication Publication Date Title
WO2014002412A1 (ja) プログラム変換装置及び方法、処理切替方法、実行方式決定方法及びプログラム記憶媒体、プロセッサシステム並びに並列実行方法
JP4082706B2 (ja) マルチプロセッサシステム及びマルチグレイン並列化コンパイラ
JP5245722B2 (ja) スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム
US8051412B2 (en) Global compiler for controlling heterogeneous multiprocessor
EP2472398B1 (en) Memory-aware scheduling for NUMA architectures
US20130212594A1 (en) Method of optimizing performance of hierarchical multi-core processor and multi-core processor system for performing the method
US20150309842A1 (en) Core Resource Allocation Method and Apparatus, and Many-Core System
US9471387B2 (en) Scheduling in job execution
JPH0659906A (ja) 並列計算機の実行制御方法
US9405349B2 (en) Multi-core apparatus and job scheduling method thereof
CN104536937A (zh) 基于cpu-gpu异构集群的大数据一体机实现方法
EP1365321A2 (en) Multiprocessor system
JP2008152470A (ja) データ処理システム及び半導体集積回路
CN102662740A (zh) 非对称多核系统及其实现方法
JP2014078239A (ja) マルチコアプロセッサで行われるプログラムのコンパイル方法、マルチコアプロセッサのタスクマッピング方法及びタスクスケジューリング方法
JP2013117790A (ja) 情報処理装置、情報処理方法、及びプログラム
US8775767B2 (en) Method and system for allocating memory to a pipeline
JP2007188523A (ja) タスク実行方法およびマルチプロセッサシステム
JP2007305148A (ja) マルチプロセッサシステム
TW202107408A (zh) 波槽管理之方法及裝置
CN112685174A (zh) 一种容器创建方法、装置、设备及介质
JP2007102332A (ja) 負荷分散システム及び負荷分散方法
JP5983623B2 (ja) タスク配置装置及びタスク配置方法
WO2014188642A1 (ja) スケジュールシステム、スケジュール方法、及び、記録媒体
US20120137300A1 (en) Information Processor and Information Processing Method

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 13810818

Country of ref document: EP

Kind code of ref document: A1

ENP Entry into the national phase

Ref document number: 2014522403

Country of ref document: JP

Kind code of ref document: A

WWE Wipo information: entry into national phase

Ref document number: 14411256

Country of ref document: US

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 13810818

Country of ref document: EP

Kind code of ref document: A1