[Haskell-beginners] Performance of parallel mergesort

Jon Harrop jon at ffconsultancy.com
Wed Dec 23 21:24:19 EST 2009


For some reason all traffic from this beginners list stopped reaching me after 
the 13th of December.

Thanks for the response, Antoine. I've tried to install more recent versions 
of GHC (6.10 and 6.12) but I cannot get either of them to work at all.

GHC 6.8 generates code that segfaults and the GHC 6.10 from Debian testing 
cannot compile anything for me. So I thought I'd try GHC 6.12. That isn't in 
any repo so I decided to build it from source. I uninstalled all other GHCs 
to give it a fresh start. The GHC page says "Stop, install the Haskell 
Platform" but the Haskell Platform says you must install GHC first, so I've 
got a nice circular dependency right from the start!

So I tried installing GHC 6.12 from source but that requires GHC to be 
installed. So I installed GHC 6.8 (the one that segfaults) using apt again 
from Debian. That seems to have built a GHC 6.12 that I can run from the 
command line but it cannot compile that program because it doesn't have 
parallel stuff. So I thought I'd install the Haskell Platform.

Unfortunately, the Haskell Platform configure script gives the nonsensical 
error that I must "upgrade" from GHC 6.12 down to GHC 6.10. I was getting 
pretty run down by this point so I just told it to sod off using 
the --enable-unsupported-ghc-version command line option. The Haskell 
Platform's configure script then completed but building it failed with:

[21 of 21] Compiling Graphics.UI.GLUT ( Graphics/UI/GLUT.hs, 
dist/build/Graphics/UI/GLUT.p_o )
Registering GLUT-2.1.1.2...
Setup: GLUT-2.1.1.2: dependency
"OpenGL-2.2.1.1-182b091280ce0de861295bc592bae77c" doesn't exist (use --force
to override)

Error:
Building the GLUT-2.1.1.2 package failed
make: *** [build.stamp] Error 2

I have glut and use it all the time from OCaml without a hitch so I've no idea 
what the problem is here.

Oh well, I just discovered that installing GHC 6.12 has at least fixed GHC 
6.10 so it can now compile and run that mergesort. Oh FFS, spoke too soon:

$ time ./mergesort +RTS -N8
Stack space overflow: current size 8388608 bytes.
Use `+RTS -Ksize' to increase it.

real    0m38.801s
user    4m0.851s
sys     0m1.308s

-- 
Dr Jon Harrop, Flying Frog Consultancy Ltd.
http://www.ffconsultancy.com/?e


More information about the Beginners mailing list