IP Library Granted Patent US 8,516,444
Granted Patent B2
US 8,516,444 · App. 11/360,346 · Granted Aug 20, 2013

Debugging a high performance computing program

Inventor: Thomas M. Gooding (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,516,444
App. No.
11/360,346
Granted
Aug 20, 2013
Kind
B2
Abstract

Methods, apparatus, and computer program products are disclosed for debugging a high performance computing program by gathering lists of addresses of calling instructions for a plurality of threads of execution of the program, assigning the threads to groups in dependence upon the addresses, and displaying the groups to identify defective threads.

Claims (27)

1. A method for debugging a high performance computing program, the method comprising:

gathering lists of addresses of calling instructions for a plurality of threads of execution of the program;

assigning the threads to groups in dependence upon the addresses including iteratively assigning to a group threads having identical subsets of the lists of addresses of calling instructions; and

displaying the groups to identify defective threads including displaying the groups to identify defective threads further comprises displaying a group for an iteration and a count of the threads assigned to the group for the iteration.

2. The method of claim 1 wherein gathering lists of addresses of calling instructions for a plurality of threads of execution of the program further comprises:

gathering stack tracebacks for a plurality of threads of execution of the program, each stack traceback comprising a list of addresses of calling instructions; and

retrieving current values of program counters for a plurality of threads of execution of the program at the time of gathering the stack tracebacks.

3. The method of claim 2 further comprising inferring function names associated with the current values of the program counters.

4. The method of claim 2 further comprising inferring function names and line numbers in source code associated with the current values of the program counters.

5. The method of claim 1 wherein displaying the groups to identify defective threads further comprises inferring a function name associated with a calling instruction address located at a position in a list corresponding to an iteration.

6. An apparatus for debugging a high performance computing program, 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 capable of:

gathering lists of addresses of calling instructions for a plurality of threads of execution of the program;

assigning the threads to groups in dependence upon the addresses including iteratively assigning to a group threads having identical subsets of the lists of addresses of calling instructions; and

displaying the groups to identify defective threads including displaying a group for an iteration and a count of the threads assigned to the group for the iteration.

7. The apparatus of claim 6 wherein gathering lists of addresses of calling instructions for a plurality of threads of execution of the program further comprises:

gathering stack tracebacks for a plurality of threads of execution of the program, each stack traceback comprising a list of addresses of calling instructions; and

retrieving current values of program counters for a plurality of threads of execution of the program at the time of gathering the stack tracebacks.

8. The apparatus of claim 7 further comprising computer program instructions capable of inferring function names associated with the current values of the program counters.

9. The apparatus of claim 6 wherein displaying the groups to identify defective threads further comprises displaying a group for an iteration and a count of the threads assigned to the group for the iteration.

10. A computer program product for debugging a high performance computing program, the computer program product disposed upon a computer readable recordable medium, the computer program product comprising computer program instructions capable of:

gathering lists of addresses of calling instructions for a plurality of threads of execution of the program;

assigning the threads to groups in dependence upon the addresses including iteratively assigning to a group threads having identical subsets of the lists of addresses of calling instructions; and

displaying the groups to identify defective threads including displaying the groups to identify defective threads further comprises displaying a group for an iteration and a count of the threads assigned to the group for the iteration.

11. The computer program product of claim 10 wherein gathering lists of addresses of calling instructions for a plurality of threads of execution of the program further comprises:

gathering stack tracebacks for a plurality of threads of execution of the program, each stack traceback comprising a list of addresses of calling instructions; and

retrieving current values of program counters for a plurality of threads of execution of the program at the time of gathering the stack tracebacks.

12. The computer program product of claim 11 further comprising computer program instructions capable of inferring function names associated with the current values of the program counters.

Assignments (2)
CONFIRMATORY LICENSE Recorded Sep 6, 2013
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: U.S. DEPARTMENT OF ENERGY
Reel/Frame 031181/0785 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 4, 2006
From: GOODING, THOMAS M.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 017425/0822 →
Continuity (1)
Related Publication 20070234294A1 · Oct 4, 2007