IP Library Granted Patent US 8,621,446
Granted Patent B2
US 8,621,446 · App. 12/770,353 · Granted Dec 31, 2013

Compiling software for a hierarchical distributed processing system

Inventors: Charles J. Archer (Rochester, MN); Michael A. Blocksome (Rochester, MN); Joseph D. Ratterman (Rochester, MN); Brian E. Smith (Rochester, MN)
Assignee: International Business Machines Corporation
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,621,446
App. No.
12/770,353
Granted
Dec 31, 2013
Kind
B2
Abstract

Compiling software for a hierarchical distributed processing system including providing to one or more compiling nodes software to be compiled, wherein at least a portion of the software to be compiled is to be executed by one or more other nodes; compiling, by the compiling node, the software; maintaining, by the compiling node, any compiled software to be executed on the compiling node; selecting, by the compiling node, one or more nodes in a next tier of the hierarchy of the distributed processing system in dependence upon whether any compiled software is for the selected node or the selected node's descendants; sending to the selected node only the compiled software to be executed by the selected node or selected node's descendant.

Claims (51)

1. A method of compiling software for a hierarchical distributed processing system, the method comprising:

a plurality of compute nodes organized for data communications in a tree network, wherein the tree comprises a root node and one or more descendent nodes and wherein each decedent node comprises zero or more decedent nodes;

compiling, by a compiling node, software, wherein any compute node may be a compiling node;

maintaining, by the compiling node, any compiled software to be executed on the compiling node;

label the compiling node as the current node and performing the following steps:

determining, by the current node, that a particular node in a next tier of the hierarchy of the distributed processing system has a descendent node selected for execution of at least a portion of the compiled software, wherein the selected descendent node is the particular node or a descendent of the particular node;

sending, by the current node to the particular node, only the compiled software to be executed by the particular node or a descendant of the particular node;

receiving, by the particular node, the compiled software;

deciding whether the compiled software is for the particular node or a descendant of the particular node;

if the compiled software is for the particular node, maintaining the software by the particular node for execution; and

if the compiled software is for a descendent of the particular node then label the particular node, the current node and return to the determining step until the selected node receives the compiled software;

executing the compiled software on the selected node.

2. The method of claim 1 further comprising identifying one or more compiling nodes.

3. The method of claim 2 wherein identifying the one or more compiling nodes further comprising selecting one or more nodes that are computationally optimized for compiling.

4. The method of claim 2 wherein identifying the one or more compiling nodes further comprising selecting one or more nodes that are optimized for compiling because of their location in the topology of the hierarchical distributed processing system.

5. The method of claim 1 wherein the hierarchical distributed processing system further comprises a hybrid computing environment, the hybrid computing environment comprising a plurality of compute nodes, each compute node comprising:

a host computer having a host computer architecture; and

an accelerator having an accelerator architecture, the accelerator architecture optimized, with respect to the host computer architecture, for speed of execution of a particular class of computing functions, the host computer and the accelerator adapted to one another for data communications by a system level message passing module.

6. An apparatus for compiling software for a hierarchical distributed processing system, the apparatus comprising a computer processor and a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that when executed by the processor cause the apparatus to carry out the steps of:

a plurality of compute nodes organized for data communications in a tree network, wherein the tree comprises a root node and one or more descendent nodes and wherein each decedent node comprises zero or more decedent nodes;

compiling, by a compiling node, software, wherein any compute node may be a compiling node;

maintaining, by the compiling node, any compiled software to be executed on the compiling node;

label the compiling node as the current node and performing the following steps:

determining selecting, by the current node, that a particular node in a next tier of the hierarchy of the distributed processing system has a descendant selected for execution of at least a portion of the compiled software, wherein the selected descendent node is the particular node or a descendent of the particular node;

sending, by the current node to the particular node, only the compiled software to be executed by the particular node or a descendant of the particular node;

receiving, by the particular node, the compiled software;

deciding whether the compiled software is for the particular node or a descendant of the particular node;

if the compiled software is for the particular node, maintaining the software by the particular node for execution; and

if the compiled software is for descendant, of the particular node then label the particular node, the current node and return to the determining step until the selected node receives the compiled software;

executing the compiled software on the selected node.

7. The apparatus of claim 6 wherein the computer memory also has disposed within it computer program instructions for identifying one or more compiling nodes.

8. The apparatus of claim 7 wherein computer program instructions for identifying the one or more compiling nodes further comprise computer program instructions for selecting one or more nodes that are computationally optimized for compiling.

9. The apparatus of claim 7 wherein computer program instructions for identifying the one or more compiling nodes further comprise computer program instructions for selecting one or more nodes that are optimized for compiling because of their location in the topology of the hierarchical distributed processing system.

10. The apparatus of claim 6 wherein the hierarchical distributed processing system further comprises a hybrid computing environment, the hybrid computing environment comprising a plurality of compute nodes, each compute node comprising:

a host computer having a host computer architecture; and

an accelerator having an accelerator architecture, the accelerator architecture optimized, with respect to the host computer architecture, for speed of execution of a particular class of computing functions, the host computer and the accelerator adapted to one another for data communications by a system level message passing module.

11. A computer program product for compiling software for a hierarchical distributed processing system, the computer program product disposed in a non-transitory computer readable storage medium, the computer program product comprising computer program instructions for

a plurality of compute nodes organized for data communications in a tree network, wherein the tree comprises a root node and one or more descendent nodes and wherein each decedent node comprises zero or more decedent nodes;

compiling, by a compiling node, software, wherein any compute node may be a compiling node;

maintaining, by the compiling node, any compiled software to be executed on the compiling node;

label the compiling node as the current node and performing the following steps:

determining, by the compiling node, that a particular node in a next tier of the hierarchy of the distributed processing system has a descendant selected for execution of at least a portion of the compiled software, wherein the selected descendent node is the particular node or a descendent of the particular node;

sending, by the current node to the particular selected node, only the compiled software to be executed by the particular selected node or a descendant of the particular node;

receiving, by the particular node, the compiled software;

deciding whether the compiled software is for the particular node or a descendant of the particular node;

if the compiled software is for the particular node, maintaining the software by the particular node for execution; and

if the compiled software is for a descendant, of the particular node then label the particular node, the current node and return to the determining step until the selected node receives the compiled software;

executing the compiled software on the selected node.

12. The computer program produce of claim 11 further comprising computer program instructions for identifying one or more compiling nodes.

13. The computer program produce of claim 12 wherein computer program instructions for identifying the one or more compiling nodes further comprise computer program instructions for selecting one or more nodes that are computationally optimized for compiling.

14. The computer program produce of claim 12 wherein computer program instructions for identifying the one or more compiling nodes further comprise computer program instructions for selecting one or more nodes that are optimized for compiling because of their location in the topology of the hierarchical distributed processing system.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 19, 2011
From: ARCHER, CHARLES J.; BLOCKSOME, MICHAEL A.; RATTERMAN, JOSEPH D.; SMITH, BRIAN E.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 025661/0155 →
CONFIRMATORY LICENSE Recorded Nov 2, 2010
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: U.S. DEPARTMENT OF ENERGY
Reel/Frame 025231/0196 →
Continuity (1)
Related Publication 20110271263A1 · Nov 3, 2011