hdph-0.0.1: src/Control/Parallel/HdpH/Conf.hs
-- HpdH runtime configuration parameters
--
-- Author: Patrick Maier
-----------------------------------------------------------------------------
module Control.Parallel.HdpH.Conf
( -- * HdpH runtime system configuration parameters
RTSConf(..),
defaultRTSConf -- :: RTSConf
) where
import Prelude
import Control.Parallel.HdpH.Internal.Location (dbgNone)
-----------------------------------------------------------------------------
-- Runtime configuration parameters (for RTS monad stack)
-- | 'RTSConf' is a record data type collecting a number of parameter
-- governing the behaviour of the HdpH runtime system.
data RTSConf =
RTSConf {
debugLvl :: Int,
-- ^ Debug level, a number defined in module
-- "Control.Parallel.HdpH.Internal.Location".
-- Default is 0 (corresponding to no debug output).
scheds :: Int,
-- ^ Number of concurrent schedulers per node. Must be positive and
-- should be @<=@ to the number of HECs (as set by GHC RTS option
-- @-N@). Default is 1.
wakeupDly :: Int,
-- ^ Interval in microseconds to wake up sleeping schedulers
-- (which is necessary to recover from a race condition between
-- concurrent schedulers). Must be positive.
-- Default is 1000 (corresponding to 1 millisecond).
maxHops :: Int,
-- ^ Number of hops a FISH message may travel before being considered
-- failed. Must be non-negative. Default is 7.
maxFish :: Int,
-- ^ Low sparkpool watermark for fishing. RTS will send FISH message
-- unless size of spark pool is greater than 'maxFish' (or unless
-- a FISH is outstanding). Must be non-negative;
-- should be @<@ 'minSched'. Default is 1.
minSched :: Int,
-- ^ Low sparkpool watermark for scheduling. RTS will respond to FISH
-- messages by SCHEDULEing sparks unless size of spark pool is less
-- than 'minSched'. Must be non-negative; should be @>@ 'maxFish'.
-- Default is 2.
minFishDly :: Int,
-- ^ After a failed FISH, minimal delay in microseconds before
-- sending another FISH message; the actual delay is chosen randomly
-- between 'minFishDly' and 'maxFishDly'. Must be non-negative; should
-- be @<=@ 'maxFishDly'.
-- Default is 10000 (corresponding to 10 milliseconds).
maxFishDly :: Int,
-- ^ After a failed FISH, maximal delay in microseconds before
-- sending another FISH message; the actual delay is chosen randomly
-- between 'minFishDly' and 'maxFishDly'. Must be non-negative; should
-- be @>=@ 'minFishDly'.
-- Default is 1000000 (corresponding to 1 second).
numProcs :: Int,
-- ^ Number of nodes constituting the distributed runtime system.
-- Must be positive. Default is 1.
networkInterface :: String
-- ^ Network interface, required to autodetect a node's
-- IP address. The string must be one of the interface names
-- returned by the POSIX command @ifconfig@.
-- Default is @eth0@ (corresponding to the first Ethernet interface).
}
-- | Default runtime system configuration parameters.
defaultRTSConf :: RTSConf
defaultRTSConf =
RTSConf {
debugLvl = dbgNone, -- no debug information
scheds = 1, -- only 1 scheduler by default
wakeupDly = 1000, -- wake up one sleeping scheduler every millisecond
maxHops = 7, -- no more than 7 hops per FISH
maxFish = 1, -- send FISH when <= 1 spark in pool
minSched = 2, -- reply with SCHEDULE when >= 2 sparks in pool
minFishDly = 10000, -- delay at least 10 milliseconds after failed FISH
maxFishDly = 1000000, -- delay up to 1 second after failed FISH
numProcs = 1, -- only 1 node by default
networkInterface = "eth0" } -- first Ethernet adapter default inferface