[Haskell-cafe] Parallel weirdness
Brandon S. Allbery KF8NH
allbery at ece.cmu.edu
Sat Apr 19 12:24:03 EDT 2008
On Apr 19, 2008, at 11:50 , Andrew Coppin wrote:
> Bulat Ziganshin wrote:
>> there are plenty of reasons: first, -threaded make i/o overlapped
>> with calculations.
> Not with -N1.
Depending on how it's implemented (I not being a ghc guru), possibly
even with -N1 as long as it's using the thread-capable runtime.
(Note that "make -j2" is known to be optimal on single-processor
machines, specifically because I/O tends to overlap with CPU.)
>> second, parallel version may exhibit better cpu
>> cache behavior - such as processing all data in cache before sending
>> it back to memory
> Again, with -N1, it is *still* only using 1 CPU core.
And again, this may well be an effect of using the thread-*capable*
runtime. You can't generally multiplex memory accesses in SMP, so
you may well want to delay and batch operations to/from main memory
as much as possible to reduce lock contention for memory access.
> Well, based on the results I've seen so far, it seems that
> parallelism is a complete waste of time because it doesn't gain you
> anything. And that doesn't make a lot of sense...
Easy parallelism is still an unsolved problem; naive parallelism
generally is no better than sequential and often worse, because naive
parallelism generally fails to account for lock / resource
contention. (Note that resource locking will be done by the threaded
runtime even with only one thread, so you will see some slowdowns
especially in I/O-related code.) Haskell can only help you so much
with this; you need to design your algorithms to parallel properly.
In addition, laziness can result in naive parallelism being a no-op
because the only thing parallelized is some operation that trivially
returns a lazy thunk that is later forced in the main thread.
Careful strictness analysis is necessary in non-strict languages to
make sure you are actually parallelizing what you want to.
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] allbery at kf8nh.com
system administrator [openafs,heimdal,too many hats] allbery at ece.cmu.edu
electrical and computer engineering, carnegie mellon university KF8NH
More information about the Haskell-Cafe