Skip to content

Tooling for profiling of parallel code #7233

Closed
@toddaaro

Description

@toddaaro

A big goal when writing parallel code is that ... things run in parallel and go faster. But sometimes it is hard to tell whether or not the desired parallelism is occuring, and if it is not, it can be difficult to tell why it isn't there. Some sort of profiling tooling should exist to help programmers with this problem. An example of such a system is Haskell's ThreadScope, which provides a wealth of profiling information in a pleasing GUI interface. This is a very high bar for the long term, but in the short term there is stuff we can do.

The most basic useful output would be to allow a user to "watch" certain tasks, and receive an output of what times the tasks are active and on what threads. This could then be analyzed in another tool to see "how parallel" the code was. An example API would be to wrap "watched code" in a macro that expands to two debug print statements wrapping the code, with those debug statements printing scheduler id, timestamps, and a user-specified identifier to a log file.

I don't think much more should be planned for the short term, but awareness of a ThreadScope-like goal could influence scheduler design in minor ways.

http://www.haskell.org/haskellwiki/ThreadScope

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions