[m-users.] Parallel execution in Mercury?
novalazy at gmail.com
Sat Jan 12 10:43:54 AEDT 2019
On Fri, 11 Jan 2019 13:43:56 +0100, Matthias Güdemann <matthias.guedemann at googlemail.com> wrote:
> Hi Volker,
> > There are a large amount of papers on parallelism on http://mercurylang.org/
> > documentation/papers.html, but I couldn't find anything in the Language
> > Reference Manual, User's Guide, Library Reference Manual and the FAQ.
> I wrote an article about parallelism in Mercury a while ago
> Maybe that is useful for you. In short, you need a parallel grade and
> you use the `&` conjunction.
Specifically you need a low-level C .par grade. The & operator acts
like normal conjunction in high-level C grades.
> There is also the `thread` module in the library, but I haven't used this yet.
This is a practical approach if you can identify coarse-grained (mostly)
independent tasks in your program. Spin up a bunch of worker threads,
push the tasks to the workers via a channel, wait for the workers to
finish, and aggregate the results. Just be careful if there are any
shared resources needed for the tasks.
More information about the users