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