Skip to content

The interaction of runEval, rpar, and rseq is underdocumentedΒ #18

@jberryman

Description

@jberryman

(IMHO). It has never really been clear to me when I should use rseq, even after reading this chapter: http://chimera.labs.oreilly.com/books/1230000000929/ch02.html#sec_par-rpar-rseq

What I'm lacking I think is an intuitive sense of how or when we "block" waiting for a parallel computation to return. Is it the case that once a spark is "converted" to a thread then evaluation of the sparked thunk will block? At what point exactly do sparks fizzle, and how does this relate to the whims of lazy evaluation? Does -feager-blackholing come into play here? Do data dependencies matter at all in this?

I was motivated to open this after reading https://ghc.haskell.org/trac/ghc/ticket/14330 and realizing I don't have a strong sense of what's going on when doing pure parallelism.

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