Parallel processing...

Hi, I have a list of lists - a grid [[ ]] of complex numbers and I map a function over each number in the grid. Each computation on a value at (r, c) is independent of any and all other calculations. This strikes me as being something that can be done in parallel by creating , say 4 quadrants and mapping over each and combining when done, or doing each row in parallel etc. etc. So I'm really just asking for advice or pointers on the Haskell libraries etc that I should start with but I'm not really looking to import an uber-package that will do most of it for me. I want to learn a little more Haskell by working from a few concurrency primitives. Thanks Mike

It's hard to say what level you'll want your libraries to be.
Theoretically all the functionality you need is in base.
Control.Parallel and Control.Concurrent have functions for that,
although you'll have to learn how to use them from various tutorials
around.
If the function you are mapping is pure, you might try the parallel
package. If it is monadic you might try the monad-par package. There
are parMap and parFor functions in monad-par-extras package which do
exactly what you are looking for.
If you search for parallel on hackage you'll find a plethora of well
maintained packages in this domain as it is one of those things
haskell is best at.
On Mon, Mar 27, 2017 at 7:04 AM, mike h
Hi,
I have a list of lists - a grid [[ ]] of complex numbers and I map a function over each number in the grid. Each computation on a value at (r, c) is independent of any and all other calculations. This strikes me as being something that can be done in parallel by creating , say 4 quadrants and mapping over each and combining when done, or doing each row in parallel etc. etc.
So I'm really just asking for advice or pointers on the Haskell libraries etc that I should start with but I'm not really looking to import an uber-package that will do most of it for me. I want to learn a little more Haskell by working from a few concurrency primitives.
Thanks
Mike
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners

Thanks David, I’ll look in to the links. Mike
On 27 Mar 2017, at 13:21, David McBride
wrote: It's hard to say what level you'll want your libraries to be. Theoretically all the functionality you need is in base. Control.Parallel and Control.Concurrent have functions for that, although you'll have to learn how to use them from various tutorials around.
If the function you are mapping is pure, you might try the parallel package. If it is monadic you might try the monad-par package. There are parMap and parFor functions in monad-par-extras package which do exactly what you are looking for.
If you search for parallel on hackage you'll find a plethora of well maintained packages in this domain as it is one of those things haskell is best at.
On Mon, Mar 27, 2017 at 7:04 AM, mike h
wrote: Hi,
I have a list of lists - a grid [[ ]] of complex numbers and I map a function over each number in the grid. Each computation on a value at (r, c) is independent of any and all other calculations. This strikes me as being something that can be done in parallel by creating , say 4 quadrants and mapping over each and combining when done, or doing each row in parallel etc. etc.
So I'm really just asking for advice or pointers on the Haskell libraries etc that I should start with but I'm not really looking to import an uber-package that will do most of it for me. I want to learn a little more Haskell by working from a few concurrency primitives.
Thanks
Mike
_______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners
participants (2)
-
David McBride
-
mike h