Hi KC,

if blackholes only appear during thunk evaluation, could the problem you
describe below be worked around by simply imposing that the scheduler never
creates black holes? Say by leveraging GHC's new -XStrict language
extension?

--
Mathieu Boespflug
Founder at http://tweag.io.

On 4 January 2017 at 13:54, Simon Peyton Jones via ghc-devs <
[email protected]> wrote:

> Reply from KC… see below.
>
>
>
> Simon
>
>
>
> *From:* KC Sivaramakrishnan [mailto:[email protected]]
> *Sent:* 04 January 2017 11:29
> *To:* Simon Peyton Jones <[email protected]>
> *Cc:* Daniel Bennet <[email protected]>; [email protected]; KC
> ([email protected]) <[email protected]>
> *Subject:* Re: Lightweight Concurrency Branch
>
>
>
> Hi Simon, David,
>
>
>
> Indeed as Simon mentioned it, the work was never finished. The
> implementation is(was) at a stage where we can run some small non-trivial
> benchmarks (Section 7 of the JFP paper). The interactions with FFI, MVars,
> STM, asynchronous exceptions worked well (though we most probably do things
> a little differently now), until we encountered interaction with blackholes
> mechanism.
>
>
>
> The crux of the problem is that the blackholing mechanism interacts with
> the scheduler and if the scheduler functionality itself is written in
> Haskell, then we have the potential for a deadlock. Some of the details are
> presented in Section 6.5, but we never got around to a clean solution that
> I could get working properly. Hence the reason for not formalizing it
> completely in the paper, and I am sure there are some edge cases that I
> hadn't thought about. This is a particularly tricky issue, and the current
> design unfortunately does not lend itself to a clean solution.
>
>
>
> Although the asynchronous exception mechanism interaction was not
> formalized, it works well and passes the tests. Not much effort was put in
> to make the implementation go particularly fast. While the performance was
> comparable on average, but varied quite a bit on edge cases; some of the
> results in the paper show this.
>
>
>
> If one were to revive the project, I would suggest starting from the
> design, using the existing code as a prototype, but write code from
> scratch; pleasantly there isn't much new code in this branch. The project
> does need substantial amount of work to make it upstream with the newer RTS
> mechanisms. I am very happy to provide more details and eager to assist
> with the work, but my time commitments mean that I cannot lead this effort.
>
>
>
> Kind Regards,
>
> KC
>
>
>
> On Wed, Jan 4, 2017 at 10:38 AM, Simon Peyton Jones <[email protected]>
> wrote:
>
> David
>
>
>
> KC never finished work on this stuff.  I’m copying him because I’m sure
> he’d be happy to help.
>
>
>
> KC: can you summarise where you left it?
>
>
>
> I think it’s very interesting work, and has the potential to make GHC’s
> RTS much more malleable, by moving more of it into Haskell libraries
> instead of deeply-magic C code.
>
>
>
> But it’s not easy, because we are reluctant to lose performance, and
> because there are interactions with STM, weak pointers, foreign function
> calls, etc.   I think it’d require a bit of commitment to make a go of it.
>
>
>
>
>
> Simon
>
>
>
>
>
> *From:* ghc-devs [mailto:[email protected]] *On Behalf Of *Daniel
> Bennet
> *Sent:* 28 December 2016 17:23
> *To:* [email protected]
> *Subject:* Lightweight Concurrency Branch
>
>
>
> The lightweight concurrency branch is highly interesting and relevant to
> my interests, however, the ghc-lwc2 branch hasn't been updated in several
> years even though it's listed as an active branch at
> https://ghc.haskell.org/trac/ghc/wiki/ActiveBranches
>
>
>
> The wiki page for the work hasn't been updated in almost two years either,
> https://ghc.haskell.org/trac/ghc/wiki/LightweightConcurrency
>
>
>
> Relevant papers:
>
> Composable Scheduler Activations for Haskell (2014)
>
> https://timharris.uk/papers/2014-composable-tr.pdf
> <https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Ftimharris.uk%2Fpapers%2F2014-composable-tr.pdf&data=02%7C01%7Csimonpj%40microsoft.com%7Cd132a48641a54f732ffc08d42f463e8b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C1%7C636185426136080161&sdata=YG%2B0xfi%2Bd74Vi9GBI8iTrr4GEMzjS2WwrI182%2BcEgqM%3D&reserved=0>
>
>
>
>
> Composable Scheduler Activations for Haskell (2016)
>
> http://kcsrk.info/papers/schedact_jfp16.pdf
> <https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fkcsrk.info%2Fpapers%2Fschedact_jfp16.pdf&data=02%7C01%7Csimonpj%40microsoft.com%7Cd132a48641a54f732ffc08d42f463e8b%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C1%7C636185426136080161&sdata=mH79Y3U%2BdDvcw2PA8lGcFaPMJw6DgCIXbu%2F3WGvyGaU%3D&reserved=0>
>
>
>
> What remains for integrating this branch into GHC?
>
>
>
> _______________________________________________
> ghc-devs mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
>
_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to