[Haskell-cafe] Making new Unboxed Algebraic Types? (A Repa Problem)

Hans Georg Schaathun georg+haskell at schaathun.net
Mon Jun 30 22:06:37 UTC 2014

On Tue, Jul 01, 2014 at 01:43:32AM +0400, Dmitry Dzhus wrote:
> This implies that the amount of generator states used in your parallel
> computation is equal to data array size N. This is not the case in
> general (unless the computation is split into N processes running in
> parallel by the scheduler). On the contrary, commonly you would even
> want to minimize the amount of generator states used (for resource
> efficiency reasons).

Fair point.  The large number of states may be a disadvantage.

> Generator states may be implicitly passed into sequential
> subcomputations (scheduled by the parallel planner). This of course
> calls for some hacking on Repa harness that runs the computations in
> parallel (computeP).

Such a solution would probably not be determinstic, and it would
definitely make the output depend on the run-time environment
(such as the number of threads).  I am interested in the particular
problem of pseudo-random, /deterministic/, parallel programs.

I think the large number of generator states is necessary to achieve
deterministic, parallel behaviour.  If someone knows otherwise,
I would be curious to learn.

> Some time ago I was also struggling find a way to parallelize a
> probabilistic algorithm (Monte-Carlo molecular simulation) and
> eventually I settled with even simpler solution based on strategies
> instead of Repa:
> https://github.com/dzhus/dsmc/blob/master/src/Control/Parallel/Stochastic.hs.
> It can be easily ported to any stateful mapping computation that needs
> parallelization (including your PRNGs of choice). See the whole package
> for usage examples.

Thanks a lot for the pointer.  I shall have a look.  In fact I am
curious to learn about strategies as well.  (Contrary to low-level
hacking of Repa features which I am not at all curious about :-)

:-- Hans Georg

More information about the Haskell-Cafe mailing list