On 24 Aug 2008, at 01:26, Brandon S. Allbery KF8NH wrote:
On 2008 Aug 23, at 18:34, Krzysztof Skrzętnicki wrote:
Recently I wrote computation intensive program that could easily
utilize both cores. However, there was overhead just from compiling
with -threaded and making some forkIO's. Still, the overhead was not
larger than 50% and with 4 cores I would probably still get the
results faster - I didn't experience an order of magnitude slowdown.
Perhaps it's the issue with OS X.
All that's needed for multicore to be a *lot* slower is doing it
wrong. Make sure you're forcing the right things in the right
places, or you could quietly be building up thunks on both cores
that will cause lots of cross-core signaling or locking. And, well,
make sure the generated code isn't stupid. Quite possibly the PPC
code is an order of magnitude worse than the better-tested Intel code.
Except that the test was running on a Core2Duo, and it runs very fast
when ghc does the threading on one core. My personal guess is that to
do it properly threaded requires *lots* of kernel boundary crosses to
do the locking etc on OS X (being a nearly-micro-kernel). The test
program was almost 100% made up of thread locking code.
Bob_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe