[Haskell-cafe] Two-iteration optimisation (was:
GHC Predictability)
Andrew Coppin
andrewcoppin at btinternet.com
Wed May 14 14:53:58 EDT 2008
Albert Y. C. Lai wrote:
> If you worry that the sum thread and the length thread are not
> synchronized and therefore there is still no bound on the list prefix
> kept in memory, I'm sure you can improve it by one of the chunking
> strategies.
I'm more worried that data now has to go through tiny CPU <--> RAM
busses rather than zipping along at the CPU's core frequency as it would
if only 1 CPU were involved. I would think the cache issues make the
sequential version a fair bit faster. (Not to mention that no GC is
required.)
> As our hardware grows more cores but not more gigahertz, it may become
> detrimal to fuse. Fusion implies entangling, an anti-thesis to
> parallelism. One day we may call this an optimisation: unfuse code
> hand-fused by programmers, then parallelize. Optimisation people on
> the imperative side are already doing this (they have more hand-fused
> code than we do), though targetting at older hardware like vector
> machines and SIMD, not yet multiple cores.
The key to parallel processing is splitting a task into *independent*
tasks so you can do them in parallel. If they're still interdependent
[like the above], I suspect you're not gaining much.
More information about the Haskell-Cafe
mailing list