Parsing an application to find serial and parallel data segments to minimize mitigation overhead between serial and parallel compute nodes

Patent Number: 8595736, issued on 2013/11/26
Applied on 2012/04/05, 13/440,065
Inventor(s): Eric Barsness, David Darrington, Amanda Randles, John Santosuosso
Assignee: International Business Machines Corporation

Abstract: Methods, systems, and products are disclosed for executing an application on a parallel computer having a plurality of nodes. Executing an application on a parallel computer includes: booting up a first subset of a plurality of nodes in a serial processing mode; booting up a second subset of the plurality of nodes in a parallel processing mode; profiling, prior to application execution, an application to identify serial segments of the application, parallel segments of the application, and application data utilized by each of the serial segments and the parallel segments; and executing the application on the plurality of nodes, including migrating, in dependence upon the profile for the application upon encountering the parallel segments during execution, only specific portions of the application and the application data from the nodes booted up in the serial processing mode to the nodes booted up in the parallel processing mode.

Claims: 1. A method of executing an application on a parallel computer, the parallel computer comprising a plurality of compute nodes connected together through a data communications network, each compute node having a plurality of processors capable of operating independently for serial processing among the processors and capable of operating symmetrically for parallel processing among the processors, the application having parallel segments designated for parallel processing and serial segments designated for serial processing, the method comprising: booting up a first subset of the plurality of compute nodes in a serial processing mode; booting up a second subset of the plurality of compute nodes in a parallel processing mode; profiling, prior to application execution, the application to identify the serial segments of the application, the parallel segments of the application, and application data utilized by each of the serial segments and the parallel segments; and executing the application on the plurality of compute nodes, including: upon encountering the serial segments during execution, migrating in dependence upon the profile for the application, only specific portions of the application and the application data from the nodes booted up in the parallel processing mode to the nodes booted up in the serial processing mode. 2. The method of claim 1 wherein: the method further comprises tracking, during application execution, runtime performance data for the serial segments of the application, the parallel segments of the application, and the application data utilized by each of the serial segments and the parallel segments; and migrating only specific portions of the application and the application data from the nodes booted up in the parallel processing mode to the nodes booted up in the serial processing mode further comprises migrating the specific portions of the application and the application data in dependence upon the runtime performance data. 3. The method of claim 1 wherein the specific portions of the application data that are migrated exclude the application data contained in data structures having a size that exceed a predetermined threshold. 4. The method of claim 1 wherein the specific portions of the application data that are migrated exclude the application data contain in data structures designated as public data structures. 5. The method of claim 1 wherein the specific portions of the application data that are migrated to the nodes booted up in the serial processing mode exclude the application data that is utilized during execution of the parallel segments of the application. 6. The method of claim 1 wherein the specific portions of the application that are migrated to the nodes booted up in the serial processing mode exclude one or more parallel segments of the application. 7. A parallel computer for executing an application, the parallel computer comprising a plurality of compute nodes connected together through a data communications network, each compute node having a plurality of processors capable of operating independently for serial processing among the processors and capable of operating symmetrically for parallel processing among the processors, the application having parallel segments designated for parallel processing and serial segments designated for serial processing, the parallel computer comprising computer memory operatively coupled to the processors of the plurality of compute nodes, the computer memory having disposed within it computer program instructions that when executed cause the computer to carry out the steps of: booting up a first subset of the plurality of compute nodes in a serial processing mode; booting up a second subset of the plurality of compute nodes in a parallel processing mode; profiling, prior to application execution, the application to identify the serial segments of the application, the parallel segments of the application, and application data utilized by each of the serial segments and the parallel segments; and executing the application on the plurality of compute nodes, including: upon encountering the serial segments during execution, migrating in dependence upon the profile for the application, only specific portions of the application and the application data from the nodes booted up in the parallel processing mode to the nodes booted up in the serial processing mode. 8. The parallel computer of claim 7 wherein: the computer memory has disposed within it computer program instructions that when executed cause the computer to carry out the steps of: tracking, during application execution, runtime performance data for the serial segments of the application, the parallel segments of the application, and the application data utilized by each of the serial segments and the parallel segments; and migrating only specific portions of the application and the application data from the nodes booted up in the parallel processing mode to the nodes booted up in the serial processing mode further comprises migrating the specific portions of the application and the application data in dependence upon the runtime performance data. 9. The parallel computer of claim 7 wherein the specific portions of the application data that are migrated exclude the application data contained in data structures having a size that exceed a predetermined threshold. 10. The parallel computer of claim 7 wherein the specific portions of the application data that are migrated exclude the application data contain in data structures designated as public data structures. 11. The parallel computer of claim 7 wherein the specific portions of the application data that are migrated to the nodes booted up in the serial processing mode exclude the application data that is utilized during execution of the parallel segments of the application. 12. The parallel computer of claim 7 wherein the specific portions of the application that are migrated to the nodes booted up in the serial processing mode exclude one or more parallel segments of the application. 13. A computer program product for executing an application on a parallel computer, the parallel computer comprising a plurality of compute nodes connected together through a data communications network, each compute node having a plurality of processors capable of operating independently for serial processing among the processors and capable of operating symmetrically for parallel processing among the processors, the application having parallel segments designated for parallel processing and serial segments designated for serial processing, the computer program product disposed upon a non-transitory recordable computer readable medium, the computer program product comprising computer program instructions that when executed by a computer cause the computer to carry out the steps of: booting up a first subset of the plurality of compute nodes in a serial processing mode; booting up a second subset of the plurality of compute nodes in a parallel processing mode; profiling, prior to application execution, the application to identify the serial segments of the application, the parallel segments of the application, and application data utilized by each of the serial segments and the parallel segments; and executing the application on the plurality of compute nodes, including: upon encountering the serial segments during execution, migrating in dependence upon the profile for the application, only specific portions of the application and the application data from the nodes booted up in the parallel processing mode to the nodes booted up in the serial processing mode. 14. The computer program product of claim 13 wherein: the computer program products further comprises computer program instructions that when executed by a computer cause the computer to carry out the steps of: tracking, during application execution, runtime performance data for the serial segments of the application, the parallel segments of the application, and the application data utilized by each of the serial segments and the parallel segments; and migrating only specific portions of the application and the application data from the nodes booted up in the parallel processing mode to the nodes booted up in the serial processing mode further comprises migrating the specific portions of the application and the application data in dependence upon the runtime performance data. 15. The computer program product of claim 13 wherein the specific portions of the application data that are migrated exclude the application data contained in data structures having a size that exceed a predetermined threshold. 16. The computer program product of claim 13 wherein the specific portions of the application data that are migrated exclude the application data contain in data structures designated as public data structures. 17. The computer program product of claim 13 wherein the specific portions of the application data that are migrated to the nodes booted up in the serial processing mode exclude the application data that is utilized during execution of the parallel segments of the application. 18. The computer program product of claim 13 wherein the specific portions of the application that are migrated to the nodes booted up in the serial processing mode exclude one or more parallel segments of the application.