[ghc-steering-committee] #540: parallelism semaphores, recommendation: *accept*
Richard Eisenberg
lists at richarde.dev
Thu Mar 2 23:56:00 UTC 2023
I didn't know we were voting on this one!
I requested a loud Haddock comment on GitHub, but I'm in support.
Richard
> On Feb 23, 2023, at 1:07 PM, Eric Seidel <eric at seidel.io> wrote:
>
> Hi all,
>
> We have votes in favor from Joachim, Arnaud, Chris, Moritz, and Simon M, and silence otherwise.
>
> Simon PJ, Richard, Vlad, Adam: if you have thoughts or concerns about this proposal, please speak up!
>
> On Sun, Feb 12, 2023, at 12:01, Eric Seidel wrote:
>> Hi Committee,
>>
>> Douglas Wilson, Sam Derbyshire, and Matthew Pickering have proposed
>> adding support for a job-server to GHC.
>>
>> The goal is to allow Cabal and Stack to make optimal use of system
>> resources when compiling many packages. Currently, the build tools are
>> forced to choose between
>>
>> 1. parallelizing across packages, but compiling each package single-threaded
>> 2. parallelizing within packages, but compiling packages sequentially
>>
>> There is no correct choice for all build plans, so the authors propose
>> a lightweight job-server protocol to allow Cabal and GHC to
>> cooperatively decide on the best parallelization strategy.
>>
>> The implementation is already done and the changes to GHC are supposed
>> to be quite self-contained. At a high level GHC's participation in the
>> protocol is thus:
>>
>> 1. when invoked with -jsem /path/to/job-server, acquire N job tokens
>> from the job server
>> 2. call `setNumCapabilities N`
>> 3. compile as usual
>> 4. before exiting, return the tokens to the job server
>>
>> There are more details in how GHC chooses how many tokens to request,
>> and more opportunities for optimization, e.g. returning early returning
>> of unneeded tokens, but this is really the essence of the protocol from
>> GHC's perspective.
>>
>> ---
>>
>> I have two minds about this proposal. On the one hand, it seems likely
>> to leave performance on the table compared to the alternatives
>> discussed. But on the other hand, this proposal has already been
>> implemented and validated by Well-Typed, and it seems like a small
>> amount of additional complexity for GHC to adapt. (Though I'd love for
>> someone with more knowledge of GHC internals to opine on the internal
>> complexity.)
>>
>> On balance, I think we should accept this proposal and not let the
>> perfect be the enemy of the good.
>>
>> https://github.com/ghc-proposals/ghc-proposals/pull/540
>>
>> Eric
>>
>> On Wed, Nov 16, 2022, at 14:21, Joachim Breitner wrote:
>>> Hi,
>>>
>>> Am Dienstag, dem 08.11.2022 um 13:49 +0100 schrieb Joachim Breitner:
>>>> Dear Committee,
>>>>
>>>> parallelism semaphores
>>>> have been proposed by Douglas Wilson, Sam Derbyshire, Matthew Pickering
>>>>
>>>> https://github.com/ghc-proposals/ghc-proposals/pull/540
>>>>
>>>> https://github.com/sheaf/ghc-proposals/blob/jsem/proposals/0540-jsem.rst
>>>>
>>>> I suggest Adam shepherds this proposal.
>>>
>>> JFTR: I’m reassigning this to Eric (hope that’s ok for you).
>>>
>>> Cheers,
>>> Joachim
>>> --
>>> Joachim Breitner
>>> mail at joachim-breitner.de
>>> http://www.joachim-breitner.de/
>>>
>>> _______________________________________________
>>> ghc-steering-committee mailing list
>>> ghc-steering-committee at haskell.org
>>> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
> _______________________________________________
> ghc-steering-committee mailing list
> ghc-steering-committee at haskell.org
> https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee
More information about the ghc-steering-committee
mailing list