IP Library › Granted Patent US 9,116,750
Granted Patent B2
US 9,116,750 · App. 13/569,614 · Granted Aug 25, 2015

Optimizing collective communications within a parallel computer

Inventors: Charles J. Archer (Rochester, MN); Michael A. Blocksome (Rochester, MN); Joseph D. Ratterman (Seattle, WA); Brian E. Smith (Knoxville, TN)
Assignee: International Business Machines Corporation
G06F9/5061G06F2209/505
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 9,116,750
App. No.
13/569,614
Granted
Aug 25, 2015
Kind
B2
Abstract

Methods, apparatuses, and computer program products for optimizing collective communications within a parallel computer comprising a plurality of hardware threads for executing software threads of a parallel application are provided. Embodiments include a processor of a parallel computer determining for each software thread, an affinity of the software thread to a particular hardware thread. Each affinity indicates an assignment of a software thread to a particular hardware thread. The processor also generates one or more affinity domains based on the affinities of the software threads. Embodiments also include a processor generating, for each affinity domain, a topology of the affinity domain based on the affinities of the software threads to the hardware threads. According to embodiments of the present application, a processor also performs, based on the generated topologies of the affinity domains, a collective operation on one or more software threads.

Claims (40)

1. A method of optimizing collective communications within a parallel computer, the parallel computer comprising a plurality of hardware threads for executing software threads of a parallel application, the method comprising:

determining for each software thread, by a processor of the parallel computer, an affinity of the software thread to a particular hardware thread, each affinity indicating an assignment of a software thread to a particular hardware thread, wherein the processor further comprises one or more multi-chip modules (MCM) each MCM comprising a plurality of cores;

generating, based on the affinities of the software threads, one or more affinity domains, wherein an affinity domain indicates which software threads are assigned to hardware threads of a same hardware domain, including:

generating, for each core, a core affinity domain indicating the software threads assigned to the hardware threads within the core,

generating, for each MCM, a MCM affinity domain indicating the software threads assigned to the hardware threads within the MCM, and

generating, for the processor, a processor affinity domain indicating the software threads assigned to the hardware threads within the processor;

generating, for each affinity domain, a topology of the affinity domain based on the affinities of the software threads to the hardware threads, including generating, for each affinity domain, an n-ary tree representing a communication organization among the software threads associated with the affinity domain; and

performing, based on the generated topologies of the affinity domains, a collective operation on one or more software threads, wherein performing the collective operation on one or more software threads based on the generated topologies of the affinity domains includes performing, for each affinity domain, in accordance with the generated n-ary tree, a reduction operation on the software threads associated with the affinity domain.

2. The method of claim 1 wherein generating, for each affinity domain, the topology of the affinity domain based on the affinities of the software threads to the hardware threads includes designating, for each affinity domain, an affinity domain leader.

3. The method of claim 2 wherein performing the collective operation on one or more software threads based on the generated topologies of the affinity domains includes:

performing a barrier operation on each of the affinity domain leaders; and

broadcasting, for each affinity domain leader, from the affinity domain leader to the software threads within the affinity domain corresponding to the affinity domain leader, results of the barrier operation.

4. The method of claim 1 , wherein determining for each software thread, by the processor of the parallel computer, an affinity of the software thread to a particular hardware thread includes querying an operating system for software thread locality information corresponding to the software thread.

5. An apparatus for optimizing collective communications within a parallel computer, the parallel computer comprising a plurality of hardware threads for executing software threads of a parallel application, the apparatus comprising a computer processor, a computer memory operatively coupled to the computer processor, the computer memory having disposed within it computer program instructions that, when executed, cause the apparatus to carry out the steps of:

determining for each software thread, by a processor of the parallel computer, an affinity of the software thread to a particular hardware thread, each affinity indicating an assignment of a software thread to a particular hardware thread, wherein the processor further comprises one or more multi-chip modules (MCM), each MCM comprising a plurality of cores;

generating, based on the affinities of the software threads, one or more affinity domains, wherein an affinity domain indicates which software threads are assigned to hardware threads of a same hardware domain, including:

generating, for each core, a core affinity domain indicating the software threads assigned to the hardware threads within the core,

generating, for each MCM, a MCM affinity domain indicating the software threads assigned to the hardware threads within the MCM, and

generating, for the processor, a processor affinity domain indicating the software threads assigned to the hardware threads within the processor;

generating, for each affinity domain, a topology of the affinity domain based on the affinities of the software threads to the hardware threads, including generating, for each affinity domain, an n-ary tree representing a communication organization among the software threads associated with the affinity domain; and

performing, based on the generated topologies of the affinity domains, a collective operation on one or more software threads, wherein performing the collective operation on one or more software threads based on the generated topologies of the affinity domains includes performing, for each affinity domain, in accordance with the generated n-ary tree, a reduction operation on the software threads associated with the affinity domain.

6. The apparatus of claim 5 wherein generating, for each affinity domain, the topology of the affinity domain based on the affinities of the software threads to the hardware threads includes designating, for each affinity domain, an affinity domain leader.

7. The apparatus of claim 6 wherein performing the collective operation on one or more software threads based on the generated topologies of the affinity domains includes:

performing a barrier operation on each of the affinity domain leaders; and

broadcasting, for each affinity domain leader, from the affinity domain leader to the software threads within the affinity domain corresponding to the affinity domain leader, results of the barrier operation.

8. The apparatus of claim 5 , wherein determining for each software thread, by the processor of the parallel computer, an affinity of the software thread to a particular hardware thread includes querying an operating system for software thread locality information corresponding to the software thread.

9. A computer program product for optimizing collective communications within a parallel computer, the parallel computer comprising a plurality of hardware threads for executing software threads of a parallel application, the computer program product disposed upon a computer readable medium, wherein the computer readable medium is not a signal, the computer program product comprising computer program instructions that, when executed, cause a computer to carry out the steps of:

determining for each software thread, by a processor of the parallel computer, an affinity of the software thread to a particular hardware thread, each affinity indicating an assignment of a software thread to a particular hardware thread, wherein the processor further comprises one or more multi-chip modules (MCM) each MCM comprising a plurality of cores;

generating, based on the affinities of the software threads, one or more affinity domains, wherein an affinity domain indicates which software threads are assigned to hardware threads of a same hardware domain, including:

generating, for each core, a core affinity domain indicating the software threads assigned to the hardware threads within the core,

generating, for each MCM, a MCM affinity domain indicating the software threads assigned to the hardware threads within the MCM, and

generating, for the processor, a processor affinity domain indicating the software threads assigned to the hardware threads within the processor;

generating, for each affinity domain, a topology of the affinity domain based on the affinities of the software threads to the hardware threads, including generating, for each affinity domain, an n-ary tree representing a communication organization among the software threads associated with the affinity domain; and

performing, based on the generated topologies of the affinity domains, a collective operation on one or more software threads, wherein performing the collective operation on one or more software threads based on the generated topologies of the affinity domains includes performing, for each affinity domain, in accordance with the generated n-ary tree, a reduction operation on the software threads associated with the affinity domain.

10. The computer program product of claim 9 , wherein generating, for each affinity domain, the topology of the affinity domain based on the affinities of the software threads to the hardware threads includes designating, for each affinity domain, an affinity domain leader.

11. The computer program product of claim 10 , wherein performing the collective operation on one or more software threads based on the generated topologies of the affinity domains includes:

performing a barrier operation on each of the affinity domain leaders; and

broadcasting, for each affinity domain leader, from the affinity domain leader to the software threads within the affinity domain corresponding to the affinity domain leader, results of the barrier operation.

12. The computer program product of claim 9 , wherein determining for each software thread, by the processor of the parallel computer, an affinity of the software thread to a particular hardware thread includes querying an operating system for software thread locality information corresponding to the software thread.

13. The computer program product of claim 9 wherein the computer readable medium comprises a computer readable storage medium.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 8, 2012
From: ARCHER, CHARLES J.; BLOCKSOME, MICHAEL A.; RATTERMAN, JOSEPH D.; SMITH, BRIAN E.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 028749/0525 →
Continuity (1)
Related Publication 20140047451A1 · Feb 13, 2014