[gambit-list] Primitives & practices for paralellism such as work stealing, in SMP Gambit?
feeley at iro.umontreal.ca
Mon Sep 18 12:04:44 EDT 2017
My end goal is to implement futures so that extremely fine-grained parallelism can be expressed. Load balancing with work stealing will be done efficiently with the message-passing protocol I designed for my PhD thesis. This used to work in Gambit when it had a M68000 code generator (back in the 90’s!). Basically, for fine-grained parallelism, use divide-and-conquer algorithms and the fork/join model. In Gambit Scheme the fork is (let ((x (future …))) …) and the join is (touch x) or (force x) or implicit if the system is built with --enable-auto-forcing. Read my thesis for details!
Talking about code generators… if anyone is interested in working on native code generators for Gambit let me know!
> On Sep 17, 2017, at 6:19 AM, Adam <adam.mlmb at gmail.com> wrote:
> Hi Marc,
> This is a general question on how to use SMP (and single-processor) Gambit:
> If you're running some algorithm or other code that requires fine-granularity work stealing or otherwise parallel execution and/or data structure access, how are you supposed to implement that, in a way that should have good performance and be effective? -
> Are mutex lock/unlock operations with zero-timeouts, and/or the use of condition variables, and/or the use of thread message passing with zero timeout, intended to satisfy these use cases, or do you propose other primitives or methods?
> Also, do you plan to implement any additional parallelism primitives now with SMP Gambit?
More information about the Gambit-list