Indicating parallel operations with user-visible events

US9846628B2 · US · B2

Patent metadata
FieldValue
Publication numberUS-9846628-B2
Application numberUS-81616510-A
CountryUS
Kind codeB2
Filing dateJun 15, 2010
Priority dateJun 15, 2010
Publication dateDec 19, 2017
Grant dateDec 19, 2017

How to read this patent

A practical reading order for non-experts. Skip the full description unless you need deep technical detail.

  1. Title

    What the patent document calls the invention.

  2. Abstract

    A short plain-language summary of the technical disclosure.

  3. Assignees and inventors

    Who owns or filed the patent and who is credited as inventor.

  4. Key dates

    Filing, priority, publication, and grant dates set the timeline.

  5. First independent claim

    The legal scope of protection — read this for what is actually claimed.

  6. CPC / IPC classifications

    Technology tags used to group this patent with similar filings.

  7. Citations and related patents

    Prior art links and similar publications in this corpus.

Abstract

Official abstract text for this publication.

The present invention extends to methods, systems, and computer program products for indicating parallel operations with user-visible events. Event markers can be used to indicate an abstracted outer layer of execution as well as expose internal specifics of parallel processing systems, including systems that provide data parallelism. Event markers can be used to show a variety of execution characteristics including higher-level markers to indicate the beginning and end of an execution program (e.g., a query). Inside the execution program (query) individual fork/join operations can be indicated with sub-levels of markers to expose their operations. Additional decisions made by an execution engine, such as, for example, when elements initially yield, when queries overlap or nest, when the query is cancelled, when the query bails to sequential operation, when premature merging or re-partitioning are needed can also be exposed.

First claim

Opening claim text (preview).

What is claimed: 1. At a computer system including a plurality of processor elements and system memory, the computer system configured to utilize the plurality of processor elements for parallel execution of programs across a plurality of threads, a method for presenting program execution details resulting from parallel execution of a program at the computer system, the method comprising: an act of executing a program at the computer system, the program configured for parallel execution on the plurality of processor elements across the plurality of threads and the program comprising outer layer programming abstractions which abstract, and therefore hide, from a developer of the program, internal specific implementation details of the parallel execution which correspond to the outer layer programming abstractions; an act of inserting event markers in the runtime system that correspond to events that are of interest to a user in order to understand performance of the program, wherein the event markers comprise markers which identify the outer layer programming abstractions and markers which identify the internal specific implementation details of the parallel execution which have been abstracted from the developer, wherein inserting event markers in the runtime system comprises inserting a plurality of event markers into an event log during execution of a Parallel Language Integrated Query (PLINQ) query to provide data on how PLINQ and a Task Parallel Library (TPL) interact together; an act of merging the event log with one or more of: processor utilization information and thread activity information into graphical data representing one or more of how the plurality of processing elements and plurality of threads were utilized during execution of instructions that generated the events of interest, the processor utilization information indicative of the utilization of each of the plurality of processing elements during execution of the instructions, the thread activity indicating thread state of the plurality of threads during execution of the instructions; an act of supplementing the graphical data with further graphical data representing visualizations of the event markers generated by the instructions; and an act of visually presenting the graphical data and the further graphical data so as to visually indicate one or more of processor utilization and thread activity at least during execution of the instructions along with the visualizations of the event markers indicating the events of interest. 2. The method as recited in claim 1 , wherein the act of inserting event markers in the runtime system comprises an act of inserting at least one pair of high level markers into the event log during execution of the program on the plurality of processor elements, the pair of high level markers indicating the span of execution of a query, the pair of high level markers including a query begin event marker identifying the beginning of the query's execution and a query end event marker identifying the end of the query's execution. 3. The method as recited in claim 2 , further comprising: an act of inserting one or more pairs of task event markers between the query begin event marker and the query end event marker in the event log, each set of task event markers indicating the span of execution of a task within the query, each pair of task markers including a task begin event marker identifying the beginning of the corresponding task's execution and a task end event marker identifying the end of the corresponding task's execution, each pair of task markers including a unique query identifier and a task identifier, the query identifier indicating that the task belongs to the query, the task identifier indicating which task in the computer system is executing. 4. The method as recited in claim 3 , further comprising: an act of inserting one or more pairs of query group event markers between the query begin event marker and the query end event marker in the event log, each set of query group event markers used to nest one of multiple levels of fork and join groupings, each pair of query group markers including a query group begin event marker identifying the beginning of a query group at one of the multiple levels of fork/joins and a query group end event marker identifying the end of the query group at one of the multiple levels of fork and join groupings. 5. The method as recited in claim 4 , wherein the act of inserting one or more pairs of query group event markers between the query begin event marker and the query end event marker in the event log comprises an act of inserting a pair of query group event markers between the query begin event marker and the query end event marker in the event log; and further comprising: an act of inserting one or more pairs of task event markers between the query group begin event marker and the query group end event marker in the event log. 6. The method as recited in claim 2 , wherein the query begin event marker and the query end event marker each include a unique query identifier identifying the query for the query and a task identifier specifying the originating task that called the query. 7. The method as recited in claim 6 , wherein the act of visually presenting the graphical data and the further graphical data comprises an act of visually presenting one or more of the unique query identifier and task identifier. 8. The method as recited in claim 2 , further comprising an act of inserting one or more other event markers between query begin event marker and the query end event marker in the event log to indicate state changes in the computer system, the one or more other event markers for indicating state changes selected from among: a sequential fall back event indicating when a query was not run in parallel, a partial sequential fall back event indicating when a query was ran partially in parallel and then fell back to sequential execution, a cancellation event that indicates where a query was expressly cancelled, a first element yielded event that indicates a time after the query begin event and before the query end event when the first result element was produced by parallel execution, a query premature merge event that indicates a time mid-query when the computer system deemed it necessary to force a merge, and a query repartitioned event that indicates when parallel execution may have needed to partition a data source mid-query. 9. The method as recited in claim 1 , wherein the act of inserting event markers in the runtime system comprises an act of inserting a pair of high level markers into the event log during execution of the program on the plurality of processor elements, the pair of high level markers indicating the span of execution of the program, the pair of high level markers including a parallel operation begin event marker identifying the beginning of the program's execution and a parallel operation end event marker identifying that the program has executed all iterations to completion. 10. The method as recited in claim 1 , wherein the act of executing a program comprises an act of execution a Parallel Language Integrated Query (PLINQ) query. 11. The method as recited in claim 1 , wherein the act of visually presenting the graphical data and the further graphical data comprises an act of presenting one of text or a callstack indicating an event of interest. 12. The method as recited in claim 1 , wherein the act of visually presenting the graphical data and the further graphical data comprises an act of indicating one of when an event of interest occurred and where an event of interest occurred in the source code for the progr

Assignees

Inventors

Classifications

  • for performance assessment · CPC title

  • Event-based monitoring · CPC title

  • G06F11/323Primary

    Visualisation of programs or trace data · CPC title

  • Data logging (G06F11/14, G06F11/2205 take precedence) · CPC title

Patent family

Related publications grouped by family.

External sources

Frequently asked questions

Answers are generated from the same data shown on this page.

What does patent US9846628B2 cover?
The present invention extends to methods, systems, and computer program products for indicating parallel operations with user-visible events. Event markers can be used to indicate an abstracted outer layer of execution as well as expose internal specifics of parallel processing systems, including systems that provide data parallelism. Event markers can be used to show a variety of execution cha…
Who is the assignee on this patent?
Essey Edward G, Ostrovsky Igor, Nagpal Pooja, and 4 more
What technology area does this patent fall under?
Primary CPC classification G06F11/323. Mapped technology areas include Physics.
When was this patent published?
Publication date Tue Dec 19 2017 00:00:00 GMT+0000 (Coordinated Universal Time) (B2). Legal status and post-grant events are not shown on this page.
What related patents are in patentsdb?
We list 8 related publications on this page (citations in our corpus or others sharing the same primary CPC).