IP Library Granted Patent US 8,495,603
Granted Patent B2
US 8,495,603 · App. 12/189,336 · Granted Jul 23, 2013

Generating an executable version of an application using a distributed compiler operating on a plurality of compute nodes

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 8,495,603
App. No.
12/189,336
Granted
Jul 23, 2013
Kind
B2
Abstract

Methods, apparatus, and products are disclosed for generating an executable version of an application using a distributed compiler operating on a plurality of compute nodes that include: receiving, by each compute node, a portion of source code for an application; compiling, in parallel by each compute node, the portion of the source code received by that compute node into a portion of object code for the application; performing, in parallel by each compute node, inter-procedural analysis on the portion of the object code of the application for that compute node, including sharing results of the inter-procedural analysis among the compute nodes; optimizing, in parallel by each compute node, the portion of the object code of the application for that compute node using the shared results of the inter-procedural analysis; and generating the executable version of the application in dependence upon the optimized portions of the object code of the application.

Claims (36)

1. A method of generating an executable version of an application using a distributed compiler operating on a plurality of compute nodes, the method comprising:

receiving, by each compute node, a portion of source code for an application;

compiling, in parallel by each compute node, the portion of the source code received by that compute node into a portion of object code for the application;

performing, in parallel by each compute node, inter-procedural analysis on the portion of the object code of the application for that compute node, including sharing results of the inter-procedural analysis among the compute nodes, wherein sharing the results among the compute nodes further comprises performing by the compute nodes an All-To-All collective operation;

optimizing, in parallel by each compute node, the portion of the object code of the application for that compute node using the shared results of the inter-procedural analysis including:

identifying internal functions and external functions in the portion of the object code of the application for that compute node, wherein identifying external functions includes determining that a function in the portion of the object code is invoked by object code portions on another compute node using the shared results of the inter-procedural analysis; and

optimizing the portion of the object code of the application for that compute node in dependence upon the internal functions and the external functions for that portion of the object code; and

generating the executable version of the application in dependence upon the optimized portions of the object code of the application.

2. The method of claim 1 wherein sharing results of the inter-procedural analysis among compute nodes further comprises sharing pointer aliasing information among the compute nodes.

3. The method of claim 1 wherein sharing results of the inter-procedural analysis among compute nodes further comprises sharing global variable usage information among the compute nodes.

4. The method of claim 1 wherein sharing results of the inter-procedural analysis among compute nodes further comprises sharing function argument value information among the compute nodes.

5. The method of claim 1 wherein generating an executable version of an application using a distributed compiler operating on a plurality of compute nodes further comprises generating the executable version of the application using the distributed compiler operating on the plurality of compute nodes of a parallel computer, the plurality of compute nodes connected 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.

6. A parallel computer for generating an executable version of an application using a distributed compiler operating on a plurality of compute nodes, the parallel computer 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 configured to:

receiving, by each compute node, a portion of source code for an application;

compiling, in parallel by each compute node, the portion of the source code received by that compute node into a portion of object code for the application;

performing, in parallel by each compute node, inter-procedural analysis on the portion of the object code of the application for that compute node, including sharing results of the inter-procedural analysis among the compute nodes, wherein sharing the results among the compute nodes further comprises performing by the compute nodes an All-To-All collective operation;

optimizing, in parallel by each compute node, the portion of the object code of the application for that compute node using the shared results of the inter-procedural analysis including:

identifying internal functions and external functions in the portion of the object code of the application for that compute node, wherein identifying external functions includes determining that a function in the portion of the object code is invoked by object code portions on another compute node using the shared results of the inter-procedural analysis; and

optimizing the portion of the object code of the application for that compute node in dependence upon the internal functions and the external functions for that portion of the object code; and

generating the executable version of the application in dependence upon the optimized portions of the object code of the application.

7. The parallel computer of claim 6 wherein sharing results of the inter-procedural analysis among compute nodes further comprises sharing pointer aliasing information among the compute nodes.

8. The parallel computer of claim 6 wherein sharing results of the inter-procedural analysis among compute nodes further comprises sharing global variable usage information among the compute nodes.

9. The parallel computer of claim 6 wherein sharing results of the inter-procedural analysis among compute nodes further comprises sharing function argument value information among the compute nodes.

10. The parallel computer of claim 6 wherein the plurality of compute nodes are connected 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.

11. A computer program product for generating an executable version of an application using a distributed compiler operating on a plurality of compute nodes, the computer program product comprising a non-transmission, computer readable medium, the non-transmission, computer readable medium comprising computer program instructions configured to:

receiving, by each compute node, a portion of source code for an application;

compiling, in parallel by each compute node, the portion of the source code received by that compute node into a portion of object code for the application;

performing, in parallel by each compute node, inter-procedural analysis on the portion of the object code of the application for that compute node, including sharing results of the inter-procedural analysis among the compute nodes, wherein sharing the results among the compute nodes further comprises performing by the compute nodes an All-To-All collective operation;

optimizing, in parallel by each compute node, the portion of the object code of the application for that compute node using the shared results of the inter-procedural analysis including:

identifying internal functions and external functions in the portion of the object code of the application for that compute node, wherein identifying external functions includes determining that a function in the portion of the object code is invoked by object code portions on another compute node using the shared results of the inter-procedural analysis; and

optimizing the portion of the object code of the application for that compute node in dependence upon the internal functions and the external functions for that portion of the object code; and

generating the executable version of the application in dependence upon the optimized portions of the object code of the application.

12. The computer program product of claim 11 wherein sharing results of the inter-procedural analysis among compute nodes further comprises sharing pointer aliasing information among the compute nodes.

13. The computer program product of claim 11 wherein sharing results of the inter-procedural analysis among compute nodes further comprises sharing global variable usage information among the compute nodes.

14. The computer program product of claim 11 wherein sharing results of the inter-procedural analysis among compute nodes further comprises sharing function argument value information among the compute nodes.

15. The computer program product of claim 11 wherein generating an executable version of an application using a distributed compiler operating on a plurality of compute nodes further comprises generating the executable version of the application using the distributed compiler operating on the plurality of compute nodes of a parallel computer, the plurality of compute nodes connected 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.

Assignments (3)
CORRECTIVE ASSIGNMENT TO CORRECT THE 1ST ASSIGNEE NAME 50% INTEREST PREVIOUSLY RECORDED AT REEL: 043418 FRAME: 0692. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Nov 1, 2017
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: SERVICENOW, INC.; INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 044348/0451 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 2, 2017
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: SERVICENOW, INC.
Reel/Frame 043418/0692 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2009
From: ARCHER, CHARLES J.; BLOCKSOME, MICHAEL A.; RATTERMAN, JOSEPH D.; SIDELNIK, ALBERT; SMITH, BRIAN E.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 022605/0015 →