runhaskell a parallel program

Simon Marlow marlowsd at gmail.com
Thu May 7 06:12:51 EDT 2009


On 06/05/2009 17:19, Neil Mitchell wrote:

> I've got a program which I'd like to run on multiple threads. If I
> compile it with ghc --make -threaded, then run with +RTS -N2 it runs
> on 2 cores very nicely.
>
> If however I run it with runhaskell Test.hs +RTS -N2 I get told the
> -N2 flag isn't supported. Is there a way to runhaskell a program on
> multiple cores? Is this a bug that it doesn't work, a feature request
> I'm making, or is there some trick to getting it working I haven't
> thought of? I'll raise a bug report if that turns out to be the right
> thing.

runhaskell is picking up the +RTS options instead of giving them to GHC 
itself.  Unfortunately there isn't a good way to pass these options to 
GHC, because it is the GHC runtime interpreting them rather than 
runhaskell itself.  Trying the GHCRTS environment variable doesn't work, 
because runhaskell isn't compiled with -threaded so it rejects -N2.

As a workaround you could use 'ghc -e main foo.hs +RTS -N2'.

What's interesting to me is whether the byte-code interpreter will work 
right with +RTS -N2.  It's not disabled, and in theory there's no good 
reason why it shouldn't work, but it hasn't been tested.  Still, 
parallelism is about performance, and if you want performance you should 
start by compiling your program.

Cheers,
	Simon


More information about the Glasgow-haskell-users mailing list