On Friday 10 August 2007 03:51:49 Hugh Perkins wrote:
> Well, managed to shave 25% of C# execution time by writing my own bit
> array.  For now, I will concede that, under the conditions of the shoot,
> bitarrays in c# are slower than bitarrays in Haskell.  I'll let you know if
> I get any new ideas on this.
>
>
> Getting back to the original problem, which is: threading.  Donald, one of
> the things that is very interesting about Haskell is it's potential for
> automatic threading, ie you write a trivial algorithm that looks like it
> runs in a single thread, and the runtime splits it across multiple cores
> automatically.
>
> It's fairly safe to say that maps, foldrs, foldls, and their derivatives
> are safe to parallelize?  (For example, hand-waving argument, a foldr of
> (/) on [1,5,7,435,46,2] can be split into a foldr on [1,5,7] and a foldr on
> [435,46,2], then their results combined).

Yes, the semantics of Haskell allow us to run pretty much any operation in 
parallel.  However, the major problem is that lists are a fundamentally 
sequential data structure.  It's quite expensive to chop up parts of a list 
to eg. send them to a parallel map function.  I think the upcoming NDP arrays 
have a much better chance here.

> To what extent is the technology you are using in your algorithm
> parallizable?  (I actually cant tell, it's a genuine question).  In the
> case that it is parallelizable, to what extent is it trivial for a runtime
> to know this?  (Again, I dont have enough information to tell)

The program doesn't have much chance for parallelism as written.  It uses the 
imperative ST monad and destructive update extensively.


Spencer Janssen
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to