Index: /hiersort/tests/matmul/experimentparams20 =================================================================== --- /hiersort/tests/matmul/experimentparams20 (revision 4) +++ /hiersort/tests/matmul/experimentparams20 (revision 4) @@ -0,0 +1,1 @@ +--taskOption=taskSize=20 Index: /hiersort/tests/matmul/experimentparams30 =================================================================== --- /hiersort/tests/matmul/experimentparams30 (revision 4) +++ /hiersort/tests/matmul/experimentparams30 (revision 4) @@ -0,0 +1,1 @@ +--taskOption=taskSize=30 Index: /hiersort/tests/heat1d/experimentparamsN200NIT100 =================================================================== --- /hiersort/tests/heat1d/experimentparamsN200NIT100 (revision 4) +++ /hiersort/tests/heat1d/experimentparamsN200NIT100 (revision 4) @@ -0,0 +1,3 @@ +--taskOption=taskSize=200 +--taskOption=iterationsCount=100 +#--maxWait=6000 Index: /hiersort/tests/heat1d/experimentparamsN400NIT100 =================================================================== --- /hiersort/tests/heat1d/experimentparamsN400NIT100 (revision 4) +++ /hiersort/tests/heat1d/experimentparamsN400NIT100 (revision 4) @@ -0,0 +1,3 @@ +--taskOption=taskSize=400 +--taskOption=iterationsCount=100 +#--maxWait=6000 Index: /hiersort/tests/heat1d/experimentparamsN800NIT100 =================================================================== --- /hiersort/tests/heat1d/experimentparamsN800NIT100 (revision 4) +++ /hiersort/tests/heat1d/experimentparamsN800NIT100 (revision 4) @@ -0,0 +1,3 @@ +--taskOption=taskSize=800 +--taskOption=iterationsCount=100 +#--maxWait=6000 Index: /hiersort/tests/heat1d/Heat1DProg.hs =================================================================== --- /hiersort/tests/heat1d/Heat1DProg.hs (revision 3) +++ /hiersort/tests/heat1d/Heat1DProg.hs (revision 4) @@ -30,16 +30,24 @@ deriving (Eq,Ord,Show) -mkorder [i,j] = i+j:[i,j] +mkSkewedOrder [i,j] = i+j:[i,j] +mkStraightOrder ij = 0:ij -heat1d cfg = (heat1DMatcher nit size,heat1DGenerator size,size-2) +mkOrderFunc cfg + | skewOrder = mkSkewedOrder + | otherwise = mkStraightOrder + where + skewOrder = readTaskParam "skewOrdering" False cfg + +heat1d cfg = (heat1DMatcher ordFunc nit size,heat1DGenerator ordFunc size,size-2) where size = readTaskParam "taskSize" 10 cfg nit = readTaskParam "iterationsCount" 1 cfg + ordFunc = mkOrderFunc cfg -heat1DGenerator size = [b1,b2]++is +heat1DGenerator orderFunc size = [b1,b2]++is where is = [ item 0 i (ReplX $ toEnum i) | i <- [2..size-1]] item it i inp = Msg { - msgOrder = oIndexes GWrk (mkorder [it,i])++oNode node + msgOrder = oIndexes GWrk (orderFunc [it,i])++oNode node ,msgModuleAddr = tokenToMod i ,msgArity = inparity node @@ -49,17 +57,17 @@ node = inpnode inp b1 = item 1 1 (B1X 0) - b2 = item 1 size (B2X 0) + b2 = item 1 (size-1) (B2X 0) -heat1DMatcher nit size pair order = procp $ case pair of +heat1DMatcher orderFunc nit size pair order = procp $ case pair of P1 inp -> case inp of - B1X v -> nodeB1 nit v cxIterI - B2X v -> nodeB2 nit v cxIterI - ReplX v -> nodeRepl size nit v cxIterI + B1X v -> nodeB1 orderFunc nit v cxIterI + B2X v -> nodeB2 orderFunc nit v cxIterI + ReplX v -> nodeRepl orderFunc size nit v cxIterI _ -> error $ "heat1DMatcher bad single input "++show (inp,order) P2 ia ib -> case (ia,ib) of - (S1X va,S1Y vb) -> nodeS1 va vb cxIterI - (S1Y vb,S1X va) -> nodeS1 va vb cxIterI - (S2X va,S2Y vb) -> nodeS2 va vb cxIterI - (S2Y vb,S2X va) -> nodeS2 va vb cxIterI + (S1X va,S1Y vb) -> nodeS1 orderFunc va vb cxIterI + (S1Y vb,S1X va) -> nodeS1 orderFunc va vb cxIterI + (S2X va,S2Y vb) -> nodeS2 orderFunc va vb cxIterI + (S2Y vb,S2X va) -> nodeS2 orderFunc va vb cxIterI _ -> error $ "heat1DMatcher bad pair input "++show (pair,order) where @@ -110,7 +118,7 @@ return $ tokenToMod mi -sendval ix@[iter,i] inp v = do +sendval orderFunc ix@[iter,i] inp v = do modindex <- nodemodindex node [i] - asend (oIndexes group (mkorder ix)++oNode node) modindex arity (inp v) + asend (oIndexes group (orderFunc ix)++oNode node) modindex arity (inp v) where node = inpnode $ inp v @@ -118,5 +126,5 @@ arity = inparity node -nodeB1 nit x [_,iter,i] = do +nodeB1 orderFunc nit x [_,iter,i] = do c <- ile iter nit aif c @@ -124,25 +132,24 @@ i1 <- iadd i 1 it1 <- iadd iter 1 - sendval [iter,i1] S1X x - sendval [it1,i] B1X x + sendval orderFunc [iter,i1] S1X x + sendval orderFunc [it1,i] B1X x ) (return ()) -nodeB2 nit y [_,iter,i] = do +nodeB2 orderFunc nit y [_,iter,i] = do c <- ile iter nit aif c (do - i1 <- isub i 1 it1 <- iadd iter 1 - sendval [iter,i1] S1Y y - sendval [it1,i] B2X y + sendval orderFunc [iter,i] S1Y y + sendval orderFunc [it1,i] B2X y ) (return ()) -nodeRepl n nit x ix@[_,iter,i] = do +nodeRepl orderFunc n nit x ix@[_,iter,i] = do c <- ige iter nit aif c (do - sendval [iter,i] HostX x + sendval orderFunc [iter,i] HostX x ) (do @@ -152,25 +159,25 @@ (do i1 <- isub i 1 - sendval [nextIter,i1] S1Y x + sendval orderFunc [nextIter,i1] S1Y x ) (return ()) - sendval [nextIter,i] S2Y x + sendval orderFunc [nextIter,i] S2Y x cltn1 <- ilt i (n-1) -- n-1 is basically constant, so we CAN. aif cltn1 (do i1 <- iadd i 1 - sendval [nextIter,i1] S1X x + sendval orderFunc [nextIter,i1] S1X x ) (return ()) ) -nodeS1 x y [_,iter,i] = do +nodeS1 orderFunc x y [_,iter,i] = do s <- fadd x y m <- fmul s 0.5 - sendval [iter,i] S2X m + sendval orderFunc [iter,i] S2X m -nodeS2 x y ix@[_,iter,i] = do +nodeS2 orderFunc x y ix@[_,iter,i] = do m <- fmul y 0.5 s <- fadd x m -- iter1 <- iadd iter 1 - sendval [iter,i] ReplX s + sendval orderFunc [iter,i] ReplX s Index: /hiersort/config/config.mk =================================================================== --- /hiersort/config/config.mk (revision 1) +++ /hiersort/config/config.mk (revision 4) @@ -1,5 +1,5 @@ # Configuration file for all our Makefile's. -ghcoptions = -fglasgow-exts -i$(TOP)/sim -i$(TOP)/core -cpp -odir $(TOP)/objs -hidir $(TOP)/objs -L/usr/lib -lSystemStubs +ghcoptions = -fglasgow-exts -i$(TOP)/sim -i$(TOP)/core -cpp -odir $(TOP)/objs -hidir $(TOP)/objs ghc = ghc --make -O3 $(ghcoptions) ghci = ghci $(ghcoptions) @@ -22,4 +22,8 @@ tail -2 asd +experiment: all + $(TOP)/scripts/runexperiment $(MAIN) $(EXPERIMENT_FILE) >asd + tail -2 asd + interp: $(ghci) $(MAIN).hs Index: /hiersort/scripts/runexperiment =================================================================== --- /hiersort/scripts/runexperiment (revision 4) +++ /hiersort/scripts/runexperiment (revision 4) @@ -0,0 +1,16 @@ +#!/usr/bin/tclsh + +set argsvars {programname expparamsfile} + +if {[llength $argv]<[llength $argsvars]} { + puts "usage: runexperiment $argsvars" +} + +foreach $argsvars $argv break + +foreach hd {0 1 2 3 4 5} { + exec ./$programname --file=../common_parameters --file=$expparamsfile --hierDepth=$hd >asd + set ticksline [exec grep "Total .* ticks" asd | tail -n 1] + regexp {Total ([0-9]+) ticks} $ticksline _ tickcount + puts "hd $hd: ticks $tickcount, proc ticks [expr $tickcount*(1<<$hd)], fifo [exec grep maxql asd | tail -n 1]" +} Index: /hiersort/sim/SQ3.hs =================================================================== --- /hiersort/sim/SQ3.hs (revision 1) +++ /hiersort/sim/SQ3.hs (revision 4) @@ -60,9 +60,9 @@ !# ("maxLen",maxLen) -- ## ("state",state) --- ## ("currlen",currLen) + ## ("currlen",currLen) -- ## ("ia",ia) -- ## ("(upcts,dncts)",(upcts,dncts)) - ## ("up token",up) - ## ("dn token",dn) +-- ## ("up token",up) +-- ## ("dn token",dn) -- ## ("upWidth",fromWidth upWidth) -- ## ("dnWidth",fromWidth dnWidth) Index: /hiersort/sim/Matcher.hs =================================================================== --- /hiersort/sim/Matcher.hs (revision 1) +++ /hiersort/sim/Matcher.hs (revision 4) @@ -61,9 +61,10 @@ !# ("maxlen",maxlen) -- ## ("forceUp",forceUp) --- ## ("tokensCount",tokensCount) + ## ("tokensCount",tokensCount) -- ## ("allInTokens",allInTokens) - ## ("ctsu",ctsu) +-- ## ("ctsu",ctsu) -- ## ("pairsAllowed",pairsAllowed) - ## ("tokenSentUp",tokenSentUp) +-- ## ("tokens",tokens) +-- ## ("tokenSentUp",tokenSentUp) -- ## ("otu",otu) -- ## ("map upPred otu",map upPred otu) Index: /hiersort/sim/Presorter.hs =================================================================== --- /hiersort/sim/Presorter.hs (revision 1) +++ /hiersort/sim/Presorter.hs (revision 4) @@ -89,7 +89,7 @@ -- ## ("tokensBufLen",tokensBufLen) -- ## ("tokensBuf",tokensBuf) - ## ("inTokens",inTokens) +-- ## ("inTokens",inTokens) -- ## ("(upstreamcts,(leftsortercts,rightsortercts))",(upstreamcts,(leftsortercts,rightsortercts))) - ## ("((leftSorterToken,rightSorterToken),upstreamToken)",((leftSorterToken,rightSorterToken),upstreamToken)) +-- ## ("((leftSorterToken,rightSorterToken),upstreamToken)",((leftSorterToken,rightSorterToken),upstreamToken)) -- ## ("number of tokens out",length leftSorterToken+length rightSorterToken+length upstreamToken) -- ## ("tokensBufLen == number of tokens out",tokensBufLen == length leftSorterToken+length rightSorterToken+length upstreamToken)