Abstract:
In a method of allocating a plurality of parts of a computational system to a computational job, a set of requirements necessary to execute the job is determined. A set of parts of the plurality of parts is assembled so that the set of parts is capable of meeting the set of requirements and so that a part is added to the set of parts based on a determination that the addition of the part will minimize power consumption by the set of parts. The set of parts are caused to execute the job.

Description:
BACKGROUND OF THE INVENTION 
       [0001]    1. Field of the Invention 
         [0002]    The present invention relates to computational systems and, more specifically, to a computational system that allocates parts to a computational job based on power consumption by the parts. 
         [0003]    2. Description of the Prior Art 
         [0004]    Supercomputers and multiprocessor computers consume vast amounts of power. The utility bills for the electricity to run a large scale computational system and the air-conditioning to cool the system can be substantial. Power consumption in a large scale computational system can be a significant part of the total cost of ownership for a system. 
         [0005]    To combat the problem of excess power usage, computer makers have used one technique that involves including only parts from a production line that run the most efficiently in a computer system. Another technique is to decrease the frequency and voltage of the chips while under low load conditions to save energy. Another technique is to disable chips that are not currently being used. 
         [0006]    However, greater efficiency is still needed, as the costs due to power consumption by large scale systems is still quite large. The cost savings of incremental improvements in efficiency as small as 10% could result in a savings of thousands of dollars per year for a single system. 
         [0007]    Therefore, there is a need for a system that reduces power consumption in a large scale computer system. 
       SUMMARY OF THE INVENTION 
       [0008]    The disadvantages of the prior art are overcome by the present invention which, in one aspect, is a method of allocating a plurality of parts of a computational system to a computational job, in which a set of requirements necessary to execute the job is determined. A set of parts of the plurality of parts is assembled so that the set of parts is capable of meeting the set of requirements and so that a part is added to the set of parts based on a determination that the addition of the part will minimize power consumption by the set of parts. The set of parts are caused to execute the job. 
         [0009]    In another aspect, the invention is a method of allocating a plurality of parts of a computational system to a computational job. A set of parts, each part associated with a part type, is ranked according to power consumption by the part. The part types that are required to execute the computational job is determined. A set of available parts of the types required to execute the computational job is allocated to the job. The parts are allocated so as to have the lowest power consumption for the type. 
         [0010]    In yet another aspect, the invention is a system for allocating a plurality of parts of a computational system to a computational job. A parts information storage stores an indication of power consumption by each of the plurality of parts. A parts assembler allocates a set of the plurality of parts to the computational job based on an indication of power consumption by each part stored in the parts information storage. 
         [0011]    These and other aspects of the invention will become apparent from the following description of the preferred embodiments taken in conjunction with the following drawings. As would be obvious to one skilled in the art, many variations and modifications of the invention may be effected without departing from the spirit and scope of the novel concepts of the disclosure. 
     
    
     
       BRIEF DESCRIPTION OF THE FIGURES OF THE DRAWINGS 
         [0012]      FIG. 1  is a flow chart the shows a method of reducing power consumption in a computational system. 
           [0013]      FIG. 2  is a block diagram that shows selection of computational elements according to one embodiment. 
           [0014]      FIG. 3  is a block diagram that shows an assembly of parts in accordance with  FIG. 2 . 
           [0015]      FIG. 4  is a block diagram that shows an on-chip embodiment. 
       
    
    
     DETAILED DESCRIPTION OF THE INVENTION 
       [0016]    A preferred embodiment of the invention is now described in detail. Referring to the drawings, like numbers indicate like parts throughout the views. As used in the description herein and throughout the claims, the following terms take the meanings explicitly associated herein, unless the context clearly dictates otherwise: the meaning of “a,” “an,” and “the” includes plural reference, the meaning of “in” includes “in” and “on.” 
         [0017]    As shown in  FIG. 1 , one embodiment is a method  100  of allocating a plurality of parts of a computational system to a computational job. The parts could include accessory cards, such as graphics cards, input/output cards and the like. The parts could also include processors used in multiprocessor systems. In one embodiment, the parts could include on-chip components. Initially, each part is tested  110  to determine a benchmark power consumption by the part. The benchmark testing could test the card under a single set of conditions, or the card could be tested under several sets of conditions (e.g., temperature, signal level, power supply level, clock speed, etc.). The results of the benchmark testing are stored in a part information storage table  112  or other data structure. Each part of each type may then be ranked according to its respective power consumption. 
         [0018]    When a new job  114  is sent to the computational system, a parts assembler allocates to the job based at least on the requirements of the job and the power consumption data stored in the part information storage table  116 . If operating condition data is also included in the part information storage table, then the current operating conditions of the computational system could also form part of the basis of parts allocation decisions. As between two available parts of equal functionality, the part with the lowest power consumption is assigned to the job. 
         [0019]    The job is then executed and the actual power consumption of each part is measured  118  during execution of the job. The result is then compared to the stored information  118  regarding the power consumed by the part. If the stored power consumption information for a part does not correspond to the measured power consumption, then the part information storage table is updated with the actual measured power consumption for the part  120 . 
         [0020]    Each part may be tested and allocated according to various classifications of the job and the expected configuration. For example, the workload classification of the job and the condition classification of the job may be considered in the allocation process. Certain types of jobs may result in a greater workload (e.g., due to massively repetitive calculations) than others. Similarly, certain configurations of parts might result in a higher operating temperature, or other condition, than others. The allocation of parts could be made responsive to either or both of these classifications. 
         [0021]    In one simplified example, as shown in  FIG. 2 , the functional requirements  210  for a job (“JOB A”) include a processor that can execute functions “A,” “C,” and “D” (In designating functions in this example, the letters “A,” “B,” “C,” “D,” etc. are used only as labels for hypothetical functions and do not imply that a component is capable of executing any specific function.); an IO card that can execute both input and output functions and a graphics card that can generate  32  bit data fields representing different colors. 
         [0022]    In this example, the set of available parts include two processors that can execute the required functions: processors “C” and “D.” However, processor “D” has a low power consumption rating, whereas processor “C” has a medium power consumption rating and, thus, processor “D” is allocated to the job. Similarly, the I/O card that can execute both input and output functions with the lowest power rating is “I/O B,” which is also allocated to the job. The lowest power graphics card that is able to generate color data with  32  bits is “GRAPHICS B,” which is also allocated to the job. Therefore, the configuration  230  for JOB A includes “PROC. D,” “I/O B,” and “GRAPHICS B.” 
         [0023]    The relationship between the job allocation elements and the allocated parts is shown in  FIG. 3 . The job scheduler  300  transmits the functional requirements for the job to the parts assembler  310 . The parts assembler retrieves parts information from the part information storage  320  data structure and allocates the parts  302  to the job. As the job executes, actual power consumption data for each of the parts  302  is transmitted to the results feedback mechanism  330 , which updates the parts information storage  320 . 
         [0024]    In an alternate embodiment, directed to on-chip  410  parts, the system could be applied to such on-chip parts as arithmetic-logic units (ALUs)  414  and registers  416 . When a new job is received by a source register  412 , the job requirements are sent to a parts assembler  310 , which uses the mechanism of the type disclosed with reference to  FIG. 3  above to allocate the parts used to execute the job. 
         [0025]    This system provides a mechanism to schedule jobs in a large multiprocessor system using the most efficient hardware available. It does not rely on the manufacturer supplied properties of a component or on modifying a component to run differently. Instead, it works in concert with those solutions, applying them after appropriate hardware has been selected for inclusion in a system. 
         [0026]    This system takes advantage of technology that can detect the amount of power being used by a component in a running system. It runs a benchmark test for every component in the system and measures the power used. The components in the system can then be ranked in order of efficiency. When a job is scheduled or a compute block is created, the more efficient components will be used in preference to less efficient components. 
         [0027]    This embodiment of the system has four parts: benchmark testing, part information storage, a parts assembling, and providing a results feedback mechanism. The benchmark testing measures the power performance characteristics of each part (e.g., processor, memory card, IO Card) under a variety of conditions. Part information storage is a database, or other data structure, that contains power performance characters about all of the parts for all past test runs and, optionally, for performance of real world jobs. The parts assembler uses the information in the database to choose the parts used for a particular configuration (e.g., a job might require five processors, each operating at an 80% power supply voltage and a 75% maximum clock). The results feedback mechanism compares the predicted power performance to the actual power performance and records any changes in the part information storage component. 
         [0028]    The above described embodiments, while including the preferred embodiment and the best mode of the invention known to the inventor at the time of filing, are given as illustrative examples only. It will be readily appreciated that many deviations may be made from the specific embodiments disclosed in this specification without departing from the spirit and scope of the invention. Accordingly, the scope of the invention is to be determined by the claims below rather than being limited to the specifically described embodiments above.