Show
Ignore:
Timestamp:
02/18/08 02:47:48 (3 years ago)
Author:
thesz
Message:

Added script for conducting experiments. Added some experiments parameters. Less debug info (faster execution). Fixed 'send back in time' bug in heat1d.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • hiersort/tests/heat1d/Heat1DProg.hs

    r3 r4  
    3030        deriving (Eq,Ord,Show) 
    3131 
    32 mkorder [i,j] = i+j:[i,j] 
     32mkSkewedOrder [i,j] = i+j:[i,j] 
     33mkStraightOrder ij = 0:ij 
    3334 
    34 heat1d cfg = (heat1DMatcher nit size,heat1DGenerator size,size-2) 
     35mkOrderFunc cfg 
     36        | skewOrder = mkSkewedOrder 
     37        | otherwise = mkStraightOrder 
     38        where 
     39                skewOrder = readTaskParam "skewOrdering" False cfg 
     40 
     41heat1d cfg = (heat1DMatcher ordFunc nit size,heat1DGenerator ordFunc size,size-2) 
    3542        where 
    3643                size = readTaskParam "taskSize" 10 cfg 
    3744                nit = readTaskParam "iterationsCount" 1 cfg 
     45                ordFunc = mkOrderFunc cfg 
    3846 
    39 heat1DGenerator size = [b1,b2]++is 
     47heat1DGenerator orderFunc size = [b1,b2]++is 
    4048        where 
    4149                is = [ item 0 i (ReplX $ toEnum i) | i <- [2..size-1]] 
    4250                item it i inp = Msg { 
    43                                  msgOrder = oIndexes GWrk (mkorder [it,i])++oNode node 
     51                                 msgOrder = oIndexes GWrk (orderFunc [it,i])++oNode node 
    4452                                ,msgModuleAddr = tokenToMod i 
    4553                                ,msgArity = inparity node 
     
    4957                                node = inpnode inp 
    5058                b1 = item 1 1 (B1X 0) 
    51                 b2 = item 1 size (B2X 0) 
     59                b2 = item 1 (size-1) (B2X 0) 
    5260 
    53 heat1DMatcher nit size pair order = procp $ case pair of 
     61heat1DMatcher orderFunc nit size pair order = procp $ case pair of 
    5462        P1 inp -> case inp of 
    55                 B1X v -> nodeB1 nit v cxIterI 
    56                 B2X v -> nodeB2 nit v cxIterI 
    57                 ReplX v -> nodeRepl size nit v cxIterI 
     63                B1X v -> nodeB1 orderFunc nit v cxIterI 
     64                B2X v -> nodeB2 orderFunc nit v cxIterI 
     65                ReplX v -> nodeRepl orderFunc size nit v cxIterI 
    5866                _ -> error $ "heat1DMatcher bad single input "++show (inp,order) 
    5967        P2 ia ib -> case (ia,ib) of 
    60                 (S1X va,S1Y vb) -> nodeS1 va vb cxIterI 
    61                 (S1Y vb,S1X va) -> nodeS1 va vb cxIterI 
    62                 (S2X va,S2Y vb) -> nodeS2 va vb cxIterI 
    63                 (S2Y vb,S2X va) -> nodeS2 va vb cxIterI 
     68                (S1X va,S1Y vb) -> nodeS1 orderFunc va vb cxIterI 
     69                (S1Y vb,S1X va) -> nodeS1 orderFunc va vb cxIterI 
     70                (S2X va,S2Y vb) -> nodeS2 orderFunc va vb cxIterI 
     71                (S2Y vb,S2X va) -> nodeS2 orderFunc va vb cxIterI 
    6472                _ -> error $ "heat1DMatcher bad pair input "++show (pair,order) 
    6573        where 
     
    110118        return $ tokenToMod mi 
    111119 
    112 sendval ix@[iter,i] inp v = do 
     120sendval orderFunc ix@[iter,i] inp v = do 
    113121        modindex <- nodemodindex node [i] 
    114         asend (oIndexes group (mkorder ix)++oNode node) modindex arity (inp v) 
     122        asend (oIndexes group (orderFunc ix)++oNode node) modindex arity (inp v) 
    115123        where 
    116124                node = inpnode $ inp v 
     
    118126                arity = inparity node 
    119127 
    120 nodeB1 nit x [_,iter,i] = do 
     128nodeB1 orderFunc nit x [_,iter,i] = do 
    121129        c <- ile iter nit 
    122130        aif c 
     
    124132                        i1 <- iadd i 1 
    125133                        it1 <- iadd iter 1 
    126                         sendval [iter,i1] S1X x 
    127                         sendval [it1,i] B1X x 
     134                        sendval orderFunc [iter,i1] S1X x 
     135                        sendval orderFunc [it1,i] B1X x 
    128136                ) 
    129137                (return ()) 
    130138 
    131 nodeB2 nit y [_,iter,i] = do 
     139nodeB2 orderFunc nit y [_,iter,i] = do 
    132140        c <- ile iter nit 
    133141        aif c 
    134142                (do 
    135                         i1 <- isub i 1 
    136143                        it1 <- iadd iter 1 
    137                         sendval [iter,i1] S1Y y 
    138                         sendval [it1,i] B2X y 
     144                        sendval orderFunc [iter,i] S1Y y 
     145                        sendval orderFunc [it1,i] B2X y 
    139146                ) 
    140147                (return ()) 
    141148 
    142 nodeRepl n nit x ix@[_,iter,i] = do 
     149nodeRepl orderFunc n nit x ix@[_,iter,i] = do 
    143150        c <- ige iter nit 
    144151        aif c 
    145152                (do 
    146                         sendval [iter,i] HostX x 
     153                        sendval orderFunc [iter,i] HostX x 
    147154                ) 
    148155                (do 
     
    152159                                (do 
    153160                                        i1 <- isub i 1 
    154                                         sendval [nextIter,i1] S1Y x 
     161                                        sendval orderFunc [nextIter,i1] S1Y x 
    155162                                ) 
    156163                                (return ()) 
    157                         sendval [nextIter,i] S2Y x 
     164                        sendval orderFunc [nextIter,i] S2Y x 
    158165                        cltn1 <- ilt i (n-1)    -- n-1 is basically constant, so we CAN. 
    159166                        aif cltn1 
    160167                                (do 
    161168                                        i1 <- iadd i 1 
    162                                         sendval [nextIter,i1] S1X x 
     169                                        sendval orderFunc [nextIter,i1] S1X x 
    163170                                ) 
    164171                                (return ()) 
    165172                ) 
    166173 
    167 nodeS1 x y [_,iter,i] = do 
     174nodeS1 orderFunc x y [_,iter,i] = do 
    168175        s <- fadd x y 
    169176        m <- fmul s 0.5 
    170         sendval [iter,i] S2X m 
     177        sendval orderFunc [iter,i] S2X m 
    171178 
    172 nodeS2 x y ix@[_,iter,i] = do 
     179nodeS2 orderFunc x y ix@[_,iter,i] = do 
    173180        m <- fmul y 0.5 
    174181        s <- fadd x m 
    175182--      iter1 <- iadd iter 1 
    176         sendval [iter,i] ReplX s 
     183        sendval orderFunc [iter,i] ReplX s