Thread selection according to predefined power characteristics during context switching on compute nodes

Patent Number: 8458722, issued on 2013/06/04
Applied on 2008/06/09, 12/135,604
Inventor(s): Charles Archer, Michael Blocksome, Amanda Randles, Joseph Ratterman, Brian Smith
Assignee: International Business Machines Corporation

Abstract: Methods, apparatus, and products are disclosed for thread selection during context switching on a plurality of compute nodes that includes: executing, by a compute node, an application using a plurality of threads of execution, including executing one or more of the threads of execution; selecting, by the compute node from a plurality of available threads of execution for the application, a next thread of execution in dependence upon power characteristics for each of the available threads; determining, by the compute node, whether criteria for a thread context switch are satisfied; and performing, by the compute node, the thread context switch if the criteria for a thread context switch are satisfied, including executing the next thread of execution.

Claims: 1. A method of thread selection for context switching on a plurality of compute nodes, the method comprising: executing, by a compute node of the plurality of compute nodes, an application using a plurality of threads of execution, including executing one or more of the threads of execution; predefining power characteristics for each of the plurality of threads of execution for the application; selecting, by the compute node from a plurality of available threads of execution for the application, a next thread of execution in dependence upon power characteristics for each of the available threads by determining a current power mode for the compute node while executing a current thread of the application, and selecting, from the available threads of execution, the next thread of execution having predefined power characteristics that are consistent with the current power mode; determining, by the compute node, whether a criteria for a thread context switch is satisfied; and performing, by the compute node, the thread context switch if the criteria for a thread context switch are satisfied, including executing the next thread of execution. 2. The method of claim 1 wherein the next thread of execution is a software thread. 3. The method of claim 1 wherein the next thread of execution is a hardware thread in a Symmetric Multi-Processing (`SMP`) architecture. 4. The method claim 1 wherein selecting, from the available threads of execution, the next thread of execution having predefined power characteristics that are consistent with the current power mode further comprises selecting the next thread according to a power mode switching algorithm. 5. The method claim 1 wherein selecting, from the available threads of execution, the next thread of execution having predefined power characteristics that are consistent with the current power mode further comprises selecting the next thread according to external operating conditions for the compute node. 6. The method claim 1 wherein the plurality of compute nodes are connected together for data communications using a plurality of data communications networks, at least one of the data communications networks optimized for point to point operations, and at least one of the data communications networks optimized for collective operations. 7. A parallel computer capable of thread selection for context switching on a plurality of compute nodes, the parallel computer comprising the plurality of compute nodes, each of the compute nodes comprising one or more computer processors and computer memory operatively coupled to the computer processors, the computer memory having disposed within it computer program instructions capable of: executing, by a compute node of the plurality of compute nodes, an application using a plurality of threads of execution, including executing one or more of the threads of execution; predefining power characteristics of each of the plurality of threads of execution for the application; selecting, by the compute node from a plurality of available threads of execution for the application, a next thread of execution in dependence upon power characteristics for each of the available threads by determining a current power mode for the compute node while executing a current thread of the application, and selecting, from the available threads of execution, the next thread of execution having predefined power characteristics that are consistent with the current power mode; determining, by the compute node, whether a criteria for a thread context switch is satisfied; and performing, by the compute node, the thread context switch if the criteria for a thread context switch are satisfied, including executing the next thread of execution. 8. The parallel computer claim 7 wherein selecting, from the available threads of execution, the next thread of execution having predefined power characteristics that are consistent with the current power mode further comprises selecting the next thread according to a power mode switching algorithm. 9. The parallel computer claim 7 wherein selecting, from the available threads of execution, the next thread of execution having predefined power characteristics that are consistent with the current power mode further comprises selecting the next thread according to external operating conditions for the compute node. 10. A computer program product for thread selection for context switching on a plurality of compute nodes, the computer program product disposed upon a computer readable recordable medium, wherein the computer readable recordable medium is not a signal, the computer program product comprising computer program instructions capable of: executing, by a compute node of the plurality of compute nodes, an application using a plurality of threads of execution, including executing one or more of the threads of execution; predefining the power characteristics of each of the plurality of threads of execution for the application; selecting, by the compute node from a plurality of available threads of execution for the application, a next thread of execution in dependence upon power characteristics for each of the available threads by determining a current power mode for the compute node while executing a current thread of the application, and selecting, from the available threads of execution, the next thread of execution having predefined power characteristics that are consistent with the current power mode; determining, by the compute node, whether a criteria for a thread context switch is satisfied; and performing, by the compute node, the thread context switch if the criteria for a thread context switch are satisfied, including executing the next thread of execution. 11. The computer program product of claim 10 wherein the next thread of execution is a software thread. 12. The computer program product of claim 10 wherein the next thread of execution is a hardware thread in a Symmetric Multi-Processing (`SMP`) architecture. 13. The computer program product of claim 10 wherein selecting, from the available threads of execution, the next thread of execution having predefined power characteristics that are consistent with the current power mode further comprises selecting the next thread according to a power mode switching algorithm. 14. The computer program product of claim 10 wherein selecting, from the available threads of execution, the next thread of execution having predefined power characteristics that are consistent with the current power mode further comprises selecting the next thread according to external operating conditions for the compute node. 15. The computer program product of claim 10 wherein the plurality of compute nodes are connected together for data communications using a plurality of data communications networks, at least one of the data communications networks optimized for point to point operations, and at least one of the data communications networks optimized for collective operations.