How do I compile and run this parallel program?

Michael

===========================

import Control.Parallel

nfib :: Int -> Int
nfib n | n <= 1 = 1
       | otherwise = par n1 (seq n2 (n1 + n2 + 1))
                     where n1 = nfib (n-1)
                           n2 = nfib (n-2)

{-
nfib :: Int -> Int
nfib n | n <= 1 = 1
       | otherwise = nfib (n-1) + nfib (n-2)
-}


main = do putStrLn $ show $ nfib 39

===========================

[michael@hostname ~]$ ghc --make -threaded nfib.hs
[michael@hostname ~]$ ./nfib +RTS -N3
nfib: the flag -N3 requires the program to be built with -threaded
nfib: 
nfib: Usage: <prog> <args> [+RTS <rtsopts> | -RTS <args>] ... --RTS <args>
nfib: 
nfib:    +RTS    Indicates run time system options follow
nfib:    -RTS    Indicates program arguments follow
nfib:   --RTS    Indicates that ALL subsequent arguments will be given to the
nfib:            program (including any of these RTS flags)
nfib: 
nfib: The following run time system options are available:
nfib: 
nfib:   -?       Prints this message and exits; the program is not executed
nfib:   --info   Print information about the RTS used by this program
nfib: 
nfib:   -K<size> Sets the maximum stack size (default 8M)  Egs: -K32k   -K512k
nfib:   -k<size> Sets the initial thread stack size (default 1k)  Egs: -k4k   -k2m
nfib: 
nfib:   -A<size> Sets the minimum allocation area size (default 512k) Egs: -A1m -A10k
nfib:   -M<size> Sets the maximum heap size (default unlimited)  Egs: -M256k -M1G
nfib:   -H<size> Sets the minimum heap size (default 0M)   Egs: -H24m  -H1G
nfib:   -m<n>    Minimum % of heap which must be available (default 3%)
nfib:   -G<n>    Number of generations (default: 2)
nfib:   -T<n>    Number of steps in younger generations (default: 2)
nfib:   -c<n>    Use in-place compaction instead of copying in the oldest generation
nfib:            when live data is at least <n>% of the maximum heap size set with
nfib:            -M (default: 30%)
nfib:   -c       Use in-place compaction for all oldest generation collections
nfib:            (the default is to use copying)
nfib:   -w       Use mark-region for the oldest generation (experimental)
nfib: 
nfib:   -t[<file>] One-line GC statistics (if <file> omitted, uses stderr)
nfib:   -s[<file>] Summary  GC statistics (if <file> omitted, uses stderr)
nfib:   -S[<file>] Detailed GC statistics (if <file> omitted, uses stderr)
nfib: 
nfib: 
nfib:   -Z       Don't squeeze out update frames on stack overflow
nfib:   -B       Sound the bell at the start of each garbage collection
nfib: 
nfib:   -hT      Heap residency profile (output file <program>.hp)
nfib:   -i<sec>  Time between heap samples (seconds, default: 0.1)
nfib: 
nfib:   -C<secs>  Context-switch interval in seconds.
nfib:             0 or no argument means switch as often as possible.
nfib:             Default: 0.02 sec; resolution is set by -V below.
nfib:   -V<secs>  Master tick interval in seconds (0 == disable timer).
nfib:             This sets the resolution for -C and the profile timer -i.
nfib:             Default: 0.02 sec.
nfib: 
nfib:   --install-signal-handlers=<yes|no>
nfib:             Install signal handlers (default: yes)
nfib: 
nfib: RTS options may also be specified using the GHCRTS environment variable.
nfib: 
nfib: Other RTS options may be available for programs compiled a different way.
nfib: The GHC User's Guide has full details.
nfib: 
[michael@hostname ~]$