%!PS-Adobe-1.0 %%Creator: anl-mcs:dongarra (Jack &,C232,7246,3129635225) %%Title: stdin Troff %%CreationDate: Mon Dec 7 15:04:05 1987 %%DocumentFonts: Times-Roman Times-Italic Times-Bold Symbol Times-Roman %%Pages: (atend) %%EndComments % lib/pscat.pro -- prolog for pscat (troff) files % Copyright (C) 1985 Adobe Systems, Inc. save /pscatsave exch def /$pscat 50 dict def $pscat begin /fm [1 0 0 1 0 0] def /xo 0 def /yo 0 def /M /moveto load def /R /show load def /S {exch currentpoint exch pop moveto show}def /T {exch currentpoint pop exch moveto show}def /U {3 1 roll moveto show}def /siz 0 def /font 0 def /Z {/siz exch def SF}def /F {/font exch def SF}def /SF{font 0 ne {catfonts font 1 sub get fm 0 siz put fm 3 siz neg put fm makefont setfont}if}def /BP{save/catsv exch def 0 792 translate 72 432 div dup neg scale xo yo translate 0 0 moveto}def /EP{catsv restore showpage}def % definitions for PPROC callback functions % each PPROC is called with the following number on the stack: % pointsize charcode railmag pswidth pschar x y wid /$pprocs 50 dict def /fractm [.65 0 0 .6 0 0] def % fractions /PS1{gsave $pprocs begin /wid exch def pop pop pop pop pop /ch exch def /size exch def /pair $pprocs ch get def /cf currentfont def cf fractm makefont setfont 0 .3 size mul 6 mul 2 copy neg rmoveto pair 0 get show rmoveto currentfont cf setfont (\244) show setfont pair 1 get show grestore wid .06 div 0 rmoveto end}def $pprocs begin 8#34 [(1)(4)] def 8#36 [(1)(2)] def 8#46 [(3)(4)] def end % boxes /PS2{gsave /wid exch def pop pop /char exch def pop pop pop /size exch def /len size 3.5 mul def % length of a side len 0 rlineto 0 len neg rlineto len neg 0 rlineto closepath char 3 eq {fill}{size 5 mul .07 mul setlinewidth stroke}ifelse grestore wid .06 div 0 rmoveto}def /PS3/PS2 load def % boxes are the same... % circle /PS4{gsave /wid exch def pop pop pop pop pop pop /size exch def wid .8333 mul size 2.5 mul neg rmoveto currentpoint % center newpath size 1.8 mul 0 360 arc size .2 mul setlinewidth stroke grestore wid .06 div 0 rmoveto}def /bb{$pprocs begin /wid exch def pop pop pop pop pop pop /size exch 6 mul def /s2 size 2 div def /s4 size 4 div def gsave currentpoint newpath transform round exch round exch itransform translate size 16 div setlinewidth 2 setlinejoin 0 setgray}def $pprocs begin /mrr{moveto rlineto rlineto}def /be{stroke grestore wid .06 div 0 rmoveto end}def end % leftfloor /PS6 {bb s4 0 0 size s4 size -.8 mul mrr be}def % rightfloor /PS7 {bb s4 neg 0 0 size s4 size -.8 mul mrr be}def % leftceil /PS8 {bb s4 0 0 size neg s4 size .2 mul mrr be}def % rightceil /PS9 {bb s4 neg 0 0 size neg s4 size .2 mul mrr be}def % boldvert /PS5 {bb 0 0 0 size neg s4 size .2 mul mrr be}def % box rule /PS32 {bb /sw size 24 div def sw 2 div size 4.5 div moveto 0 size neg rlineto sw setlinewidth be}def % rule (roman, bold and italic) /PS16 {gsave $pprocs begin /wid exch def pop pop pop pop pop pop /size exch 6 mul def /sw size 14 div def currentpoint exch sw 2 div sub exch newpath transform round exch round exch itransform translate 0 0 moveto size 2 div 0 rlineto sw setlinewidth be}def % lefttopcurl /PS20 {bb s4 size .2 mul moveto 0 size -.55 mul rlineto currentpoint pop size -.8 mul 2 copy exch s4 add exch s4 arcto pop pop pop pop be}def % leftbotcurl /PS21 {bb s4 size -.8 mul moveto 0 size .55 mul rlineto currentpoint pop size .2 mul 2 copy exch s4 add exch s4 arcto pop pop pop pop be}def % righttopcurl /PS22 {bb s4 size .2 mul moveto 0 size -.55 mul rlineto currentpoint pop size -.8 mul 2 copy exch s4 sub exch s4 arcto pop pop pop pop be}def % rightbotcurl /PS23 {bb s4 size -.8 mul moveto 0 size .55 mul rlineto currentpoint pop size .2 mul 2 copy exch s4 sub exch s4 arcto pop pop pop pop be}def % rightmidcurl /PS25 {bb /s3 size -.3 mul def s4 size -.8 mul moveto s4 s3 s2 s3 s4 arcto pop pop size add s4 s3 4 2 roll s4 arcto pop pop pop pop s4 size .2 mul lineto be}def % leftmidcurl /PS24 {bb /s3 size -.3 mul def s4 size -.8 mul moveto s4 s3 0 s3 s4 arcto pop pop size add s4 s3 4 2 roll s4 arcto pop pop pop pop s4 size .2 mul lineto be}def /catfonts [ /Times-Roman findfont /Times-Italic findfont /Times-Bold findfont /Symbol findfont /Times-Roman findfont ] def %%EndProlog %%Page: ? 37 BP 1 F 66 Z 432 654(L)U 3 F 432 462(LOCKON,)U 764(LOCKOFF)S 1 F 1651 270(-)U 1695(37)S 1783(-)S 472 654(ow)U 575(level)S 724(synchronization)S 1166(primitives)S 5 F 432 750(_)U (_______________________________________________________________________________)R 1 F 432 1134(l)U 3 F 432 942(Syntax)U 1 F 450 1134(ockon\(lock\))U 790(lockoff\(lock\))S 432 1518(S)U 3 F 432 1326(Comments)U 1 F 469 1518(ubroutine)U 750(lockon)S 958(takes)S 1122(an)S 1213(integer)S 1424(argument)S 2 F 1701(lock)S 1 F (.)R 1878(the)S 1987(process)S 2213(which)S 2402(calls)S 2 F 2550(lockon)S 1 F 2753(spin-waits)S 3007 1614(.)U 432 1710(S)U 432 1614(until)U 576(the)S 680(value)S 846(of)S 2 F 925(lock)S 1 F 1058(is)S 1126(has)S 1238(the)S 1342(value)S 1508(0.)S 1582(this)S 1701(is)S 1769(read)S 1906(and)S 2025(set)S 2122(to)S 2197(1)S 2254(in)S 2329(an)S 2414(autonomous)S 2759(operation)S 469 1710(ubroutine)U 748(lockoff)S 965(sets)S 1091(the)S 1198(value)S 1367(of)S 2 F 1449(lock)S 1 F 1585(to)S 1663(0.)S 1762(Caution)S 1997(must)S 2152(be)S 2241(exercised)S 2516(in)S 2594(using)S 2764(locks.)S 2969(In)S 60 Z 16 4704(-)U 66 Z 432 1806(particular)U 705(one)S 822(must)S 972(be)S 1056(careful)S 1260(to)S 1333(initiali)S 1503(ze)S 1583(properly.)S 60 Z 36 4704(-)U 3259(--)S EP %%Page: ? 36 BP 1 F 66 Z 586 558(l)U 586 462(lockon)U 1651 270(-)U 1695(36)S 1783(-)S 604 558(ockoff)U 60 Z 16 4710(-)U (-)R 3259(--)S EP %%Page: ? 35 BP 1 F 66 Z 1133 462(m)U 1607 270(-)U 1689(3)S 1733(5)S 1827(-)S 1185 462(o)U 1235(r)S 1275(e)S 1369(t)S 1405(h)S 1451(a)S 1493(n)S 1581(2)S 1625(0)S 1713(p)S 1759(a)S 1807(r)S 1847(a)S 1881(m)S 1935(e)S 1985(t)S 2023(e)S 2071(r)S 2113(s)S 2161(.)S 432 942(T)U 3 F 432 750(Restrictions)U 1 F 472 942(he)U 556(number)S 779(of)S 856(parameters)S 1166(in)S 4 F 1239(<)S 1 F (parameter)R 1560(list)S 4 F (>)R 1 F 1699(must)S 1849(not)S 1955(exceed)S 2159(20.)S 2626 1134(.)U 432 1326(C)U 432 1134(Each)U 585(parameter)S 869(passed)S 1067(in)S 4 F 1140(<)S 1 F (parameter)R 1461(list)S 4 F 1563(>)S 1 F 1622(must)S 1772(be)S 1856(a)S 1907(location)S 2140(in)S 2213(shared)S 2407(memory)S 476 1326(onstants)U 714(and)S 831(expressions)S 1161(should)S 1359(not)S 1465(be)S 1549(passed)S 432 1518(V)U (ariables)R 711(declared)S 960(locally)S 1165(within)S 1360(the)S 1467(subroutine)S 1772(making)S 1996(the)S 2103(call)S 2224(to)S 2 F 2302(putq)S 1 F 2446(should)S 2649(not)S 2760(be)S 2848(passed)S 60 Z 16 4710(-)U 66 Z 432 1614(in)U 4 F 505(<)S 1 F (parameter)R 826(list)S 4 F (>)R 1 F (.)R 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 34 BP 1 F 66 Z 432 654(A)U 3 F 432 462(SCHED)U 1 F 1651 270(-)U 1695(34)S 1783(-)S 480 654(cquires)U 692(physical)S 933(processors)S 1234(and)S 1351(executes)S 1599(the)S 1701(Schedule)S 1964(program)S 5 F 3039 750(_)U 3 F 432 942(S)U 5 F 432 750(_______________________________________________________________________________)U 3 F 469 942(yntax)U 1 F 432 1134(s)U (ched\(nprocs,static,)R 4 F (<)R 1 F (parameter)R 1273(list)S 4 F (>)R 1 F (\))R 432 1518(T)U 3 F 432 1326(Comments)U 1 F 472 1518(his)U 574(subroutine)S 876(initiali)S 1046(zes)S 1154(locks)S 1317(and)S 1436(queues)S 1643(internal)S 1867(to)S 1942(Schedule,)S 2224(acquires)S 2 F 2467(nprocs)S 1 F 2671(physical)S 2914(pro-)S 2 F 432 1710(s)U 1 F 432 1614(cessors,)U 671(executes)S 2 F 928(static)S 1 F (\()R 4 F (<)R 2 F (parameterlist)R 4 F (>)R 1 F (\))R 1574(and)S 1700(then)S 1844(executes)S 2100(the)S 2210(Schedule)S 2481(program)S 2734(de\256ned)S 2958(by)S 2 F 458 1710(tatic)U 1 F (.)R 651(It)S 729(is)S 811(very)S 966(important)S 1259(to)S 1348(understand)S 1675(that)S 1811(the)S 1929(execution)S 2222(of)S 2 F 2315(static)S 1 F 2494(merely)S 2713(describes)S 2995(a)S 3007 1806(.)U 432 1902(T)U 432 1806(Schedule)U 701(program)S 952(by)S 1046(placing)S 1267(units)S 1423(of)S 1506(computation)S 1862(their)S 2010(data)S 2147(dependencies)S 2529(on)S 2623(a)S 2680(problem)S 2927(list)S 472 1902(his)U 577(computation)S 933(proceeds)S 1194(only)S 1338(after)S 2 F 1485(static)S 1 F 1654(has)S 1769(completed.)S 2108(The)S 2237(parameter)S 2526(list)S 2633(to)S 2711(the)S 2818(right)S 2969(of)S 2 F 432 1998(static)U 1 F 596(should)S 794(be)S 878(a)S 929(valid)S 1082(set)S 1177(of)S 1254(parameters)S 1564(to)S 1637(make)S 1801(the)S 1903(call:)S 564 2190(call)U 680(static\()S 4 F (<)R 1 F (paramet)R 1088(er)S 1161(list)S 4 F (>)R 1 F (\))R 1322(.)S 432 2382(T)U (he)R 562(program)S 813(calling)S 2 F 1018(sched)S 1 F 1195(must)S 1350(have)S 2 F 1501(static)S 1 F 1670(declared)S 1919(external.)S 2196(Control)S 2424(is)S 2495(returned)S 2741(to)S 2819(the)S 2926(cal-)S 432 2574(a)U 432 2478(ling)U 558(program)S 805(from)S 2 F 957(sched)S 1 F 1131(once)S 1278(the)S 1381(entire)S 1553(computation)S 1904(de\256ned)S 2121(by)S 2 F 2210(static)S 1 F 2375(has)S 2486(been)S 2633(completed)S 2929(and)S 485 2574(single)U 666(thread)S 854(of)S 933(execution)S 1212(is)S 1280(resumed)S 1527(within)S 1719(the)S 1822(calling)S 2023(program.)S 2308(There)S 2484(may)S 2620(be)S 2705(any)S 2823(number)S 3002 2670(-)U 432 2766(i)U 432 2670(of)U 511(calls)S 655(to)S 2 F 730(sched)S 1 F 904(within)S 1096(the)S 1200(calling)S 1402(program)S 1648(but)S 1755(the)S 1858(user)S 1991(must)S 2142(be)S 2227(aware)S 2407(that)S 2528(the)S 2631(cost)S 2760(of)S 2838(obtain)S 450 2766(ng)U 2 F 543(nprocs)S 1 F 750(physical)S 996(processors)S 1302(is)S 1373(incurred)S 1619(with)S 1762(each)S 1908(call)S 2028(to)S 2 F 2105(sched)S 1 F (.)R 2320(Note)S 2474(it)S 2536(is)S 2606(useful)S 2793(to)S 2870(do)S 2962(an)S 3002 2862(-)U 432 2958(b)U 432 2862(initial)U 616(debugging)S 926(phase)S 1108(with)S 2 F 1257(nprocs)S 1 F 1469(set)S 1574(to)S 1657(1.)S 1761(Once)S 1932(the)S 2044(correctness)S 2372(of)S 2459(the)S 2571(program)S 2825(is)S 2900(esta)S 465 2958(lished)U 651(with)S 2 F 797(nprocs)S 4 F (=)R 1 F (1)R 1076(the)S 1185(remaining)S 1480(bugs)S 1634(are)S 1742(generally)S 2014(associated)S 2312(with)S 2457(incorrect)S 2718(partitioning)S 3 F 432 3246(C)U 1 F 432 3054(of)U 509(shared)S 703(data)S 834(and)S 951(incorrect)S 1206(speci\256cation)S 1560(of)S 1637(data)S 1768(dependencies.)S 3 F 480 3246(alling)U 659(Sequence)S 1 F 701 3438(n)U 745(p)S 795(r)S 833(o)S 879(c)S 925(s)S 1015(-)S 1099(a)S 1141(n)S 1237(i)S 1273(n)S 1325(t)S 1363(e)S 1405(g)S 1451(e)S 1499(r)S 1574(w)S 1625(h)S 1677(i)S 1715(c)S 1757(h)S 1849(s)S 1889(p)S 1935(e)S 1979(c)S 2029(i)S 2063(\256)S 2111(e)S 2157(s)S 2249(t)S 2285(h)S 2331(e)S 2417(n)S 2461(u)S 2497(mb)S 2595(e)S 2643(r)S 2725(o)S 2775(f)S 2857(p)S 2901(h)S 2945(y)S 2993(s)S 3041(i)S 3079(c)S 3123(a)S 3173(l)S 3253(p)S 3303(r)S 3303(o)S 3303(c)S 3303(e)S 3303(s)S 3303(s)S 3303(o)S 3303(r)S 3303(s)S 3303 3534(e)U 874(w)S 925(h)S 977(i)S 1015(c)S 1057(h)S 1147(a)S 1195(r)S 1235(e)S 1329(t)S 1365(o)S 1453(b)S 1499(e)S 1585(d)S 1631(e)S 1673(v)S 1717(o)S 1769(t)S 1807(e)S 1849(d)S 1945(t)S 1981(o)S 2077(t)S 2113(h)S 2159(e)S 2247(e)S 2289(x)S 2335(e)S 2379(c)S 2421(u)S 2473(t)S 2517(i)S 2553(o)S 2597(n)S 2685(o)S 2735(f)S 2825(t)S 2861(h)S 2907(e)S 2991(S)S 3039(c)S 3081(h)S 3127(e)S 3169(d)S 3213(u)S 3265(l)S 1097 3630(p)U 1147(r)S 1185(o)S 1229(g)S 1279(r)S 1319(a)S 1353(m)S 1449(d)S 1495(e)S 1535(\256)S 1581(n)S 1627(e)S 1669(d)S 1757(b)S 1801(y)S 2 F 1884(static)S 1 F 2039(.)S 3253 3822(o)U 705(s)S 753(t)S 791(a)S 841(t)S 885(i)S 923(c)S 1015(-)S 1105(t)S 1141(h)S 1187(e)S 1273(n)S 1319(a)S 1353(m)S 1407(e)S 1493(o)S 1543(f)S 1633(t)S 1669(h)S 1715(e)S 1799(F)S 1845(o)S 1895(r)S 1941(t)S 1983(r)S 2023(a)S 2065(n)S 2157(s)S 2197(u)S 2241(b)S 2291(r)S 2329(o)S 2373(u)S 2425(t)S 2469(i)S 2505(n)S 2551(e)S 2645(t)S 2681(o)S 2769(b)S 2815(e)S 2903(c)S 2947(a)S 2997(l)S 3041(l)S 3079(e)S 3121(d)S 3217(t)S 1097 3918(b)U 1141(u)S 1193(i)S 1237(l)S 1273(d)S 1369(t)S 1405(h)S 1451(e)S 1541(s)S 1589(t)S 1627(a)S 1677(t)S 1721(i)S 1759(c)S 1845(d)S 1891(a)S 1941(t)S 1979(a)S 2065(d)S 2111(e)S 2153(p)S 2199(e)S 2241(n)S 2285(d)S 2331(e)S 2373(n)S 2419(c)S 2461(y)S 2549(g)S 2599(r)S 2639(a)S 2681(p)S 2725(h)S 2815(a)S 2857(n)S 2901(d)S 2995(r)S 3035(e)S 3079(c)S 3121(o)S 3171(r)S 3209(d)S 3305(t)S 3305(h)S 3305(e)S 3305(d)S 3305(e)S 3305(s)S 3305(c)S 3305(r)S 3305(i)S 3305(p)S 3305(t)S 3305(o)S 3305(r)S 3305(s)S 3305 4014(.)U 393(o)S 443(f)S 533(t)S 569(h)S 615(e)S 701(u)S 745(n)S 797(i)S 841(t)S 881(s)S 965(o)S 1015(f)S 1099(c)S 1141(o)S 1177(mp)S 1273(u)S 1325(t)S 1363(a)S 1413(t)S 1457(i)S 1493(o)S 1537(n)S 1627(a)S 1673(s)S 1717(s)S 1757(o)S 1803(c)S 1853(i)S 1891(a)S 1941(t)S 1979(e)S 2021(d)S 2102(w)S 2161(i)S 2205(t)S 2241(h)S 2331(e)S 2375(a)S 2419(c)S 2461(h)S 2549(n)S 2593(o)S 2637(d)S 2683(e)S 2769(o)S 2819(f)S 2909(t)S 2945(h)S 2991(e)S 3077(g)S 3127(r)S 3167(a)S 3209(p)S 3253(h)S 4 F 699 4206(<)U 1 F 745(p)S 791(a)S 839(r)S 879(a)S 913(m)S 967(e)S 1017(t)S 1055(e)S 1103(r)S 1193(l)S 1237(i)S 1277(s)S 1325(t)S 4 F 1359(>)S 1 F 1455(-)S 1539(a)S 1633(l)S 1677(i)S 1717(s)S 1765(t)S 1845(o)S 1895(f)S 1977(p)S 2023(a)S 2071(r)S 2111(a)S 2145(m)S 2199(e)S 2249(t)S 2287(e)S 2335(r)S 2377(s)S 2467(f)S 2505(o)S 2555(r)S 2639(a)S 2727(c)S 2771(a)S 2821(l)S 2865(l)S 2953(t)S 2989(o)S 2 F 3072(static)S 1 F 3227(.)S 3227 4302(e)U 60 Z 26 4710(-)U 66 Z 945 4302(t)U 981(h)S 1027(e)S 1069(y)S 1149(mu)S 1249(s)S 1297(t)S 1377(b)S 1423(e)S 1509(g)S 1561(l)S 1597(o)S 1641(b)S 1687(a)S 1737(l)S 1817(v)S 1863(a)S 1911(r)S 1957(i)S 1995(a)S 2037(b)S 2089(l)S 2127(e)S 2173(s)S 2259(a)S 2301(n)S 2345(d)S 2441(t)S 2477(h)S 2523(e)S 2571(r)S 2611(e)S 2701(s)S 2741(h)S 2785(o)S 2829(u)S 2881(l)S 2917(d)S 3005(n)S 3049(o)S 3101(t)S 3181(b)S 60 Z 66 4710(-)U 3229(-)S 3269(-)S EP %%Page: ? 33 BP 1 F 66 Z 1607 270(-)U 1689(3)S 1733(3)S 1827(-)S 1941 462(.)U 4 F 699 654(<)U 1 F 1141 462(h)U 1187(a)S 1229(v)S 1275(e)S 1361(b)S 1407(e)S 1451(e)S 1493(n)S 1585(s)S 1627(a)S 1677(t)S 1721(i)S 1761(s)S 1799(\256)S 1847(e)S 1889(d)S 745 654(p)U 791(a)S 839(r)S 879(a)S 913(m)S 967(e)S 1017(t)S 1055(e)S 1103(r)S 1193(l)S 1237(i)S 1277(s)S 1325(t)S 4 F 1359(>)S 1 F 1455(-)S 1539(a)S 1633(l)S 1677(i)S 1717(s)S 1765(t)S 1845(o)S 1895(f)S 1977(p)S 2023(a)S 2071(r)S 2111(a)S 2145(m)S 2199(e)S 2249(t)S 2287(e)S 2335(r)S 2377(s)S 2467(f)S 2505(o)S 2555(r)S 2639(a)S 2727(c)S 2771(a)S 2821(l)S 2865(l)S 2953(t)S 2989(o)S 2 F 3072(subname)S 1 F 3320(.)S 1141 846(n)U 1149 750(t)U 1185(h)S 1231(e)S 1273(y)S 1353(mu)S 1453(s)S 1501(t)S 1581(b)S 1627(e)S 1713(g)S 1765(l)S 1801(o)S 1845(b)S 1891(a)S 1941(l)S 2021(v)S 2067(a)S 2115(r)S 2161(i)S 2199(a)S 2241(b)S 2293(l)S 2331(e)S 2377(s)S 2463(a)S 2505(n)S 2549(d)S 2645(t)S 2681(h)S 2727(e)S 2775(r)S 2815(e)S 2905(s)S 2945(h)S 2989(o)S 3033(u)S 3085(l)S 3121(d)S 1185 846(o)U 1237(t)S 1317(b)S 1363(e)S 1441(mo)S 1543(r)S 1583(e)S 1677(t)S 1713(h)S 1759(a)S 1801(n)S 1889(2)S 1933(0)S 2021(p)S 2067(a)S 2115(r)S 2155(a)S 2189(m)S 2243(e)S 2293(t)S 2331(e)S 2379(r)S 2421(s)S 2469(.)S 432 1326(T)U 3 F 432 1134(Restrictions)U 1 F 472 1326(he)U 556(number)S 779(of)S 856(parameters)S 1166(in)S 4 F 1239(<)S 1 F (parameter)R 1560(list)S 4 F (>)R 1 F 1699(must)S 1849(not)S 1955(exceed)S 2159(20.)S 2626 1518(.)U 432 1710(C)U 432 1518(Each)U 585(parameter)S 869(passed)S 1067(in)S 4 F 1140(<)S 1 F (parameter)R 1461(list)S 4 F 1563(>)S 1 F 1622(must)S 1772(be)S 1856(a)S 1907(location)S 2140(in)S 2213(shared)S 2407(memory)S 476 1710(onstants)U 714(and)S 831(expressions)S 1161(should)S 1359(not)S 1465(be)S 1549(passed)S 432 1902(V)U (ariables)R 711(declared)S 960(locally)S 1165(within)S 1360(the)S 1467(subroutine)S 1772(making)S 1996(the)S 2103(call)S 2224(to)S 2 F 2302(putq)S 1 F 2446(should)S 2649(not)S 2760(be)S 2848(passed)S 60 Z 16 4710(-)U 66 Z 432 1998(in)U 4 F 505(<)S 1 F (parameter)R 826(list)S 4 F (>)R 1 F (.)R 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 32 BP 1 F 66 Z 1651 270(-)U 1695(32)S 1783(-)S 432 654(U)U 3 F 432 462(SPAWN)U 1 F 480 654(sed)U 590(to)S 663(dynamicall)S 954(y)S 1009(spawn)S 1200(processes)S 1475(during)S 1669(execution)S 5 F 3039 750(_)U 3 F 432 942(S)U 5 F 432 750(_______________________________________________________________________________)U 3 F 469 942(yntax)U 1 F 432 1134(s)U (pawn\(mypar,jobtag,subname,)R 4 F (<)R 1 F (parameter)R 1561(list)S 4 F (>)R 1 F (\))R 432 1518(T)U 3 F 432 1326(Comments)U 1 F 472 1518(his)U 572(subroutine)S 873(puts)S 1006(the)S 1109(descriptor)S 1395(of)S 1473(a)S 1524(unit)S 1648(of)S 1725(computation)S 2075(labeled)S 2286(by)S 2 F 2374(jobtag)S 1 F 2564(onto)S 2703(the)S 2805(problem)S 3006 1614(t)U 432 1710(n)U 432 1614(list.)U 579(This)S 724(process)S 950(will)S 1079(be)S 1168(scheduled)S 1458(for)S 1562(execution)S 1844(immediat)S 2091(ely)S 2198(since)S 2360(it)S 2423(is)S 2494(a)S 2550(leaf)S 2675(to)S 2753(the)S 2860(paren)S 465 1710(ode)U 2 F 588(mypar)S 1 F 785(in)S 864(the)S 972(dynamic)S 1226(data)S 1362(dependency)S 1703(graph.)S 1919(Moreover,)S 2223(a)S 2279(call)S 2400(to)S 2 F 2478(spawn)S 1 F 2674(must)S 2829(be)S 2918(pre-)S 432 1806(ceded)U 607(by)S 695(a)S 746(call)S 862(to)S 2 F 935(nxtag)S 1 F (:)R 740 1998(call)U 856(nxtag\(mytag,jobta)S 1336(g\))S 740 2094(c)U (all)R 856(spawn\(mytag,jobtag,subname,)S 4 F (<)R 1 F (parmeter)R 1952(list)S 4 F (>)R 1 F (\))R 2998 2286(:)U 432(The)S 556(parameter)S 840(list)S 942(to)S 1015(the)S 1117(right)S 1263(of)S 2 F 1340(subname)S 1 F 1597(should)S 1795(be)S 1879(a)S 1930(valid)S 2083(set)S 2178(of)S 2255(parameters)S 2565(to)S 2638(make)S 2802(the)S 2904(call)S 564 2478(call)U 680(subname\()S 4 F (<)R 1 F (parameter)R 1257(list)S 4 F (>)R 1 F (\))R 1418(.)S 432 2670(T)U (his)R 575(call)S 695(will)S 823(be)S 910(made)S 1077(when)S 1245(the)S 1350(data)S 1484(dependencies)S 1863(associated)S 2158(with)S 2 F 2300(jobtag)S 1 F 2493(have)S 2642(been)S 2791(satis\256ed.)S 432 2862(c)U 432 2766(The)U 564(subroutine)S 872(calling)S 2 F 1080(spawn)S 1 F 1279(must)S 1437(have)S 2 F 1591(subname)S 1 F 1856(declared)S 2107(external.)S 2386(The)S 2517(action)S 2706(of)S 2790(this)S 2914(pro-)S 461 2862(edure)U 641(differs)S 846(from)S 2 F 1007(putq)S 1 F 1157(in)S 1241(that)S 1372(the)S 1485(user)S 1628(does)S 1782(not)S 1899(assign)S 2097(jobtags)S 2320(or)S 2408(data)S 2550(dependencies.)S 2976(A)S 2998 2958(s)U 432 3054(o)U 432 2958(parent)U 619(may)S 754(spawn)S 945(any)S 1062(number)S 1285(of)S 1362(children)S 1599(\(within)S 1811(limits)S 1982(given)S 2150(below\))S 2355(but)S 2461(these)S 2618(child)S 2771(processe)S 465 3054(nly)U 571(report)S 750(to)S 823(the)S 925(parent.)S 3 F 432 3246(Calling)U 659(Sequence)S 1 F 649 3438(my)U 745(p)S 791(a)S 839(r)S 927(-)S 1143(a)S 1185(n)S 1281(i)S 1317(n)S 1369(t)S 1407(e)S 1449(g)S 1495(e)S 1543(r)S 1618(w)S 1669(h)S 1721(i)S 1759(c)S 1801(h)S 1897(l)S 1935(a)S 1977(b)S 2023(e)S 2073(l)S 2113(s)S 2205(t)S 2241(h)S 2287(e)S 2373(p)S 2419(a)S 2467(r)S 2507(e)S 2549(n)S 2601(t)S 2681(p)S 2731(r)S 2769(o)S 2815(c)S 2859(e)S 2905(s)S 2949(s)S 3026(w)S 3077(h)S 3129(i)S 3167(c)S 3209(h)S 3305(i)S 3305(s)S 665 3726(j)U 1145 3534(s)U 1185(p)S 1231(a)S 1266(w)S 1317(n)S 1369(i)S 1405(n)S 1449(g)S 2 F 1532(jobtag)S 1 F 1742(w)S 1801(i)S 1845(t)S 1881(h)S 1971(a)S 2059(c)S 2103(a)S 2153(l)S 2197(l)S 2285(t)S 2321(o)S 2 F 2404(spawn)S 1 F 2586(.)S 701 3726(o)U 745(b)S 797(t)S 835(a)S 877(g)S 971(-)S 1143(a)S 1185(n)S 1281(i)S 1317(n)S 1369(t)S 1407(e)S 1449(g)S 1495(e)S 1543(r)S 1618(w)S 1669(h)S 1721(i)S 1759(c)S 1801(h)S 1897(l)S 1935(a)S 1977(b)S 2023(e)S 2073(l)S 2113(s)S 2205(t)S 2241(h)S 2287(e)S 2373(u)S 2417(n)S 2469(i)S 2513(t)S 2593(o)S 2643(f)S 2727(c)S 2769(o)S 2805(mp)S 2901(u)S 2953(t)S 2991(a)S 3041(t)S 3085(i)S 3121(o)S 3165(n)S 1145 3918(s)U 1149 3822(t)U 1185(h)S 1237(i)S 1277(s)S 1369(i)S 1405(n)S 1457(t)S 1495(e)S 1537(g)S 1583(e)S 1631(r)S 1705(m)S 1759(a)S 1801(y)S 1889(b)S 1935(e)S 2023(a)S 2117(l)S 2153(o)S 2199(c)S 2243(a)S 2293(l)S 2373(v)S 2419(a)S 2467(r)S 2513(i)S 2551(a)S 2593(b)S 2645(l)S 2683(e)S 2777(i)S 2813(n)S 2909(t)S 2945(h)S 2991(e)S 1185 3918(u)U 1229(b)S 1279(r)S 1317(o)S 1361(u)S 1413(t)S 1457(i)S 1493(n)S 1539(e)S 1627(c)S 1671(a)S 1721(l)S 1765(l)S 1809(i)S 1845(n)S 1889(g)S 2 F 1972(spawn)S 1 F 2154(.)S 2284(I)S 2330(t)S 2370(s)S 2454(v)S 2500(a)S 2550(l)S 2586(u)S 2632(e)S 2710(mu)S 2810(s)S 2858(t)S 2938(h)S 2984(a)S 3026(v)S 3072(e)S 3231 4014(.)U 661 4206(s)U 1141 4014(b)U 1187(e)S 1231(e)S 1273(n)S 1363(a)S 1409(s)S 1453(s)S 1501(i)S 1537(g)S 1581(n)S 1627(e)S 1669(d)S 1757(b)S 1801(y)S 1887(S)S 1935(c)S 1977(h)S 2023(e)S 2065(d)S 2109(u)S 2161(l)S 2199(e)S 2293(t)S 2329(h)S 2379(r)S 2417(o)S 2461(u)S 2505(g)S 2549(h)S 2639(a)S 2727(c)S 2771(a)S 2821(l)S 2865(l)S 2953(t)S 2989(o)S 2 F 3072(nxtag)S 1 F 701 4206(u)U 745(b)S 789(n)S 835(a)S 869(m)S 923(e)S 1015(-)S 1149(t)S 1185(h)S 1231(e)S 1317(n)S 1363(a)S 1397(m)S 1451(e)S 1537(o)S 1587(f)S 1677(t)S 1713(h)S 1759(e)S 1843(F)S 1889(o)S 1939(r)S 1985(t)S 2027(r)S 2067(a)S 2109(n)S 2201(s)S 2241(u)S 2285(b)S 2335(r)S 2373(o)S 2417(u)S 2469(t)S 2513(i)S 2549(n)S 2595(e)S 2689(t)S 2725(o)S 2813(b)S 2859(e)S 2947(c)S 2991(a)S 3041(l)S 3085(l)S 3123(e)S 3165(d)S 3246(w)S 3297(h)S 3297(e)S 3297(n)S 60 Z 26 4710(-)U 66 Z 1141 4302(d)U 1187(a)S 1237(t)S 1275(a)S 1361(d)S 1407(e)S 1449(p)S 1495(e)S 1537(n)S 1581(d)S 1627(e)S 1669(n)S 1715(c)S 1765(i)S 1803(e)S 1849(s)S 1939(f)S 1977(o)S 2027(r)S 2117(t)S 2153(h)S 2199(e)S 2285(p)S 2335(r)S 2373(o)S 2419(c)S 2463(e)S 2509(s)S 2553(s)S 2645(l)S 2683(a)S 2725(b)S 2771(e)S 2821(l)S 2859(e)S 2901(d)S 2989(b)S 3033(y)S 2 F 3116(jobtag)S 1 F 60 Z 66 4710(-)U 3229(-)S 3269(-)S EP %%Page: ? 31 BP 1 F 66 Z 432 462(h)U 1651 270(-)U 1695(31)S 1783(-)S 465 462(ave)U 585(completed)S 887(then)S 1029(the)S 1138(parent)S 1331(process)S 2 F 1558(mytag)S 1 F 1748(will)S 1879(be)S 1970(reentered,)S 2260(execute)S 2488(the)S 2596(code)S 2748(before)S 2944(the)S 3002 558(-)U 432 654(l)U 432 558(computed)U 2 F 714(go)S 803(to)S 1 F 877(referencing)S 2 F 1199(ientry)S 1 F (,)R 1392(and)S 1510(then)S 1646(resume)S 1859(execution)S 2136(at)S 2205(the)S 2307(statement)S 2580(immediat)S 2827(ely)S 2929(fol)S 450 654(owing)U 638(the)S 741(reference)S 1008(to)S 2 F 1082(wait)S 1 F 1218(\(ie.)S 1327(at)S 1397(L000)S 1559(in)S 1633(the)S 1736(example)S 1980(above\).)S 2198(A)S 2268(return)S 2447(value)S 2611(.false.)S 2791(indicates)S 2998 750(s)U 432 846(s)U 432 750(all)U 520(spawned)S 774(processes)S 1050(have)S 1197(checked)S 1435(in.)S 1548(If)S 1615(a)S 1667(value)S 1832(of)S 1910(.false.)S 2091(is)S 2158(returned)S 2400(then)S 2536(the)S 2639(parent)S 2826(proces)S 458 846(imply)U 633(continues)S 907(to)S 980(execute)S 1202(without)S 1425(exiting)S 1629(\(ie.)S 1737(at)S 1806(L000)S 1967(in)S 2040(the)S 2142(example)S 2386(above\).)S 3 F 432 1038(Calling)U 659(Sequence)S 1 F 693 1230(my)U 797(t)S 835(a)S 877(g)S 971(-)S 1055(a)S 1097(n)S 1193(i)S 1229(n)S 1281(t)S 1319(e)S 1361(g)S 1407(e)S 1455(r)S 1539(c)S 1581(o)S 1625(n)S 1677(t)S 1715(a)S 1765(i)S 1801(n)S 1853(i)S 1889(n)S 1933(g)S 2029(t)S 2065(h)S 2111(e)S 2205(i)S 2241(n)S 2285(d)S 2331(e)S 2373(x)S 2461(o)S 2511(f)S 2601(t)S 2637(h)S 2683(e)S 2769(p)S 2815(a)S 2863(r)S 2903(e)S 2945(n)S 2997(t)S 3077(p)S 3127(r)S 3165(o)S 3211(c)S 3255(e)S 3301(s)S 3301(s)S 709 1518(l)U 1061 1326(t)U 1097(h)S 1143(a)S 1193(t)S 1273(h)S 1319(a)S 1365(s)S 1453(s)S 1493(p)S 1539(a)S 1574(w)S 1625(n)S 1671(e)S 1713(d)S 1803(a)S 1853(t)S 1941(l)S 1979(e)S 2023(a)S 2069(s)S 2117(t)S 2197(o)S 2241(n)S 2287(e)S 2419(c)S 2461(h)S 2513(i)S 2557(l)S 2593(d)S 2681(p)S 2731(r)S 2769(o)S 2815(c)S 2859(e)S 2905(s)S 2949(s)S 747 1518(a)U 789(b)S 835(e)S 885(l)S 971(-)S 1055(a)S 1097(n)S 1193(i)S 1229(n)S 1281(t)S 1319(e)S 1361(g)S 1407(e)S 1455(r)S 1545(i)S 1581(n)S 1625(d)S 1677(i)S 1715(c)S 1759(a)S 1809(t)S 1853(i)S 1889(n)S 1933(g)S 2014(w)S 2065(h)S 2111(e)S 2159(r)S 2199(e)S 2287(c)S 2329(o)S 2365(mp)S 2461(u)S 2513(t)S 2551(a)S 2601(t)S 2645(i)S 2681(o)S 2725(n)S 2821(i)S 2861(s)S 2953(t)S 2989(o)S 3083(r)S 3123(e)S 3169(s)S 3209(u)S 3245(m)S 3299(e)S 3299(a)S 3299(f)S 3299(t)S 3299(e)S 3299(r)S 1055 1614(a)U 1105(l)S 1149(l)S 1233(s)S 1273(p)S 1319(a)S 1354(w)S 1405(n)S 1451(e)S 1493(d)S 1583(c)S 1625(h)S 1677(i)S 1721(l)S 1757(d)S 1845(p)S 1895(r)S 1933(o)S 1979(c)S 2023(e)S 2069(s)S 2113(s)S 2155(e)S 2201(s)S 2285(h)S 2331(a)S 2373(v)S 2419(e)S 2507(c)S 2549(o)S 2585(mp)S 2689(l)S 2727(e)S 2777(t)S 2815(e)S 2857(d)S 2909(.)S 3039(I)S 3083(f)S 2 F 3160(wait)S 1 F 1059 1710(r)U 1099(e)S 1149(t)S 1185(u)S 1235(r)S 1273(n)S 1321(s)S 1413(.)S 1457(t)S 1499(r)S 1537(u)S 1583(e)S 1633(.)S 1721(t)S 1757(h)S 1803(e)S 1845(n)S 1935(a)S 2027(r)S 2067(e)S 2117(t)S 2153(u)S 2203(r)S 2241(n)S 2333(s)S 2373(h)S 2417(o)S 2461(u)S 2513(l)S 2549(d)S 2637(b)S 2683(e)S 2761(m)S 2815(a)S 2857(d)S 2903(e)S 2991(a)S 3033(n)S 3077(d)S 3173(t)S 3209(h)S 3255(e)S 1046 1902(w)U 1053 1806(n)U 1099(e)S 1141(x)S 1193(t)S 1279(r)S 1319(e)S 1363(e)S 1405(n)S 1457(t)S 1499(r)S 1537(y)S 1625(o)S 1675(f)S 1757(p)S 1807(r)S 1845(o)S 1891(c)S 1935(e)S 1981(s)S 2025(s)S 2 F 2104(mytag)S 1 F 2322(t)S 2358(h)S 2404(e)S 2496(r)S 2534(o)S 2578(u)S 2630(t)S 2674(i)S 2710(n)S 2756(e)S 2 F 2837(ientry)S 1 F 1105 1902(i)U 1149(l)S 1193(l)S 1279(r)S 1319(e)S 1369(t)S 1405(u)S 1455(r)S 1493(n)S 1589(t)S 1625(h)S 1671(e)S 1757(v)S 1803(a)S 1853(l)S 1889(u)S 1935(e)S 2 F 2016(label)S 1 F 2160(.)S 432 2286(T)U 3 F 432 2094(Restrictions)U 1 F 472 2286(here)U 607(must)S 757(be)S 841(an)S 925(invocation)S 1224(of)S 2 F 1301(ientry)S 1 F 1476(in)S 1549(the)S 1651(process)S 2 F 1871(mytag)S 1 F (.)R 60 Z 3279 4710(-)U 16(--)S 3259(-)S EP %%Page: ? 30 BP 1 F 66 Z 1651 270(-)U 1695(30)S 1783(-)S 432 654(U)U 3 F 432 462(WAIT)U 1 F 480 654(sed)U 590(to)S 663(set)S 758(a)S 809(logical)S 1009(barrier)S 1206(after)S 1348(dynamic)S 1596(spawning)S 5 F 3039 750(_)U 3 F 432 942(S)U 5 F 432 750(_______________________________________________________________________________)U 3 F 469 942(yntax)U 1 F 432 1134(w)U (ait\(mytag,labl)R 846(no\))S 432 1518(T)U 3 F 432 1326(Comments)U 1 F 472 1518(his)U 578(logical)S 785(function)S 1033(will)S 1163(be)S 1253(used)S 1402(to)S 1481(set)S 1582(a)S 1639(logical)S 1845(barrier)S 2048(in)S 2127(process)S 2 F 2353(mytag)S 1 F 2542(after)S 2690(the)S 2798(dynamic)S 432 1710(i)U 432 1614(spawning)U 712(of)S 794(a)S 850(number)S 1078(of)S 1160(child)S 1318(processes.)S 1637(The)S 1766(process)S 1990(will)S 2118(be)S 2206(allowed)S 2440(to)S 2517(continue)S 2769(execution)S 450 1710(mmediate)U 708(ly)S 795(after)S 951(this)S 1082(barrier)S 1293(once)S 1453(all)S 1553(of)S 1643(the)S 1758(spawned)S 2024(child)S 2190(processes)S 2478(have)S 2637(completed.)S 2984(It)S 432 1902(s)U 432 1806(should)U 638(only)S 785(be)S 877(used)S 1028(if)S 1098(child)S 1259(processes)S 1542(have)S 1696(been)S 1850(spawned)S 2111(by)S 2 F 2207(mytag)S 1 F 2398(through)S 2633(the)S 2743(use)S 2860(of)S 2944(the)S 458 1902(ubroutine)U 2 F 735(spawn)S 1 F (.)R 968(This)S 1110(routine)S 1321(must)S 1474(be)S 1561(used)S 1707(in)S 1782(conjunction)S 2116(with)S 2257(integer)S 2463(function)S 2 F 2706(ientry)S 1 F (.)R 2922(The)S 432 1998(required)U 673(usage)S 845(is)S 921 2286(g)U 965(o)S 1061(t)S 1097(o)S 1191(\()S 1229(1)S 1273(0)S 1317(0)S 1361(0)S 1413(,)S 1457(.)S 1501(.)S 1545(.)S 1589(,)S 1622(L)S 1669(0)S 1713(0)S 1757(0)S 1809(,)S 1853(.)S 1897(.)S 1941(.)S 1985(,)S 2014(N)S 2065(0)S 2109(0)S 2153(0)S 2203(\))S 2249(,)S 2337(i)S 2375(e)S 2417(n)S 2469(t)S 2511(r)S 2549(y)S 2599(\()S 2629(my)S 2733(t)S 2771(a)S 2813(g)S 2865(,)S 2894(N)S 2951(\))S 701 2382(1)U 745(0)S 789(0)S 833(0)S 923(c)S 965(o)S 1009(n)S 1061(t)S 1105(i)S 1141(n)S 1185(u)S 1231(e)S 1017 2478(.)U 1017 2574(.)U 1017 2670(.)U 921 2766(d)U 965(o)S 1053(1)S 1097(0)S 1141(0)S 1237(j)S 1315(=)S 1405(1)S 1457(,)S 1493(n)S 1537(p)S 1587(r)S 1625(o)S 1671(c)S 1237 2958(.)U 1237 2862(.)U 1323 2958(\()U 1365(s)S 1407(e)S 1457(t)S 1537(p)S 1583(a)S 1631(r)S 1671(a)S 1705(m)S 1759(e)S 1809(t)S 1847(e)S 1895(r)S 1937(s)S 2029(t)S 2065(o)S 2153(d)S 2199(e)S 2239(\256)S 2285(n)S 2331(e)S 2421(s)S 2461(p)S 2507(a)S 2542(w)S 2593(n)S 2639(e)S 2681(d)S 2769(p)S 2819(r)S 2857(o)S 2903(c)S 2947(e)S 2993(s)S 3037(s)S 3083(\))S 1055 3150(c)U 1237 3054(.)U 1099 3150(a)U 1149(l)S 1193(l)S 1273(n)S 1317(x)S 1369(t)S 1407(a)S 1449(g)S 1499(\()S 1529(my)S 1633(t)S 1671(a)S 1713(g)S 1765(,)S 1809(j)S 1845(o)S 1889(b)S 1941(t)S 1979(a)S 2021(g)S 2071(\))S 2775 3246(\))U 1055(c)S 1099(a)S 1149(l)S 1193(l)S 1277(s)S 1317(p)S 1363(a)S 1398(w)S 1449(n)S 1499(\()S 1529(my)S 1633(t)S 1671(a)S 1713(g)S 1765(,)S 1809(j)S 1845(o)S 1889(b)S 1941(t)S 1979(a)S 2021(g)S 2073(,)S 2113(s)S 2153(u)S 2197(b)S 2241(n)S 2287(a)S 2321(m)S 2375(e)S 2425(,)S 4 F 2459(<)S 1 F 2505(p)S 2551(a)S 2599(r)S 2629(m)S 2685(s)S 4 F 2723(>)S 1 F 1231 3342(e)U 745(1)S 789(0)S 833(0)S 923(c)S 965(o)S 1009(n)S 1061(t)S 1105(i)S 1141(n)S 1185(u)S 929 3438(l)U 967(a)S 1009(b)S 1055(e)S 1105(l)S 1183(=)S 1270(L)S 929 3534(i)U 971(f)S 1059(\()S 1090(w)S 1143(a)S 1193(i)S 1237(t)S 1279(\()S 1309(my)S 1413(t)S 1451(a)S 1493(g)S 1545(,)S 1589(l)S 1627(a)S 1669(b)S 1715(e)S 1765(l)S 1807(\))S 1851(\))S 1939(r)S 1979(e)S 2029(t)S 2065(u)S 2115(r)S 2153(n)S 698 3630(L)U 745(0)S 789(0)S 833(0)S 923(c)S 965(o)S 1009(n)S 1061(t)S 1105(i)S 1141(n)S 1185(u)S 1231(e)S 1017 3726(.)U 1017 3822(.)U 1017 3918(.)U 432 4014(I)U (f)R 499(this)S 617(function)S 881(returns)S 1087(a)S 1138(value)S 1302(of)S 1379(.true.)S 1537(then)S 1672(the)S 1774(calling)S 1974(process)S 2 F 2194(mytag)S 1 F 2377(should)S 2575(issue)S 2729(a)S 2780(return.)S 2976(A)S 3007 4110(.)U 432 4206(W)U 432 4110(return)U 615(value)S 783(.true.)S 945(indicates)S 1204(that)S 1328(some)S 1492(spawned)S 1748(process)S 1971(has)S 2084(not)S 2193(yet)S 2298(completed)S 2596(and)S 2716(checked)S 2956(in)S 494 4206(hen)U 614(this)S 734(happens)S 975(the)S 1080(parent)S 1269(process)S 2 F 1492(mytag)S 1 F 1678(must)S 1831(be)S 1918(exited)S 2103(to)S 2179(avoid)S 2350(busy)S 2500(waiting)S 2722(and)S 2842(also)S 2973(to)S 2998 4302(s)U 60 Z 16 4710(-)U 66 Z 432 4302(allow)U 603(this)S 723(code)S 872(to)S 948(execute)S 1173(on)S 1264(a)S 1318(single)S 1500(physical)S 1744(processor.)S 2061(When)S 2243(all)S 2333(of)S 2412(the)S 2516(spawned)S 2771(processe)S 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 29 BP 1 F 66 Z 1651 270(-)U 1695(29)S 1783(-)S 432 654(C)U 3 F 432 462(NXTAG)U 1 F 476 654(laims)U 640(the)S 742(next)S 877(available)S 2 F 1135(jobtag)S 1 F 1325(for)S 1424(dynamic)S 1672(spawning)S 5 F 3039 750(_)U 3 F 432 942(S)U 5 F 432 750(_______________________________________________________________________________)U 3 F 469 942(yntax)U 1 F 432 1134(n)U (xtag\(mypar,jobtag\))R 3 F 432 1326(C)U (omments)R 1 F 765(This)S 910(subroutine)S 1216(is)S 1288(used)S 1437(to)S 1516(claim)S 1689(the)S 1797(next)S 1938(available)S 2 F 2202(jobtag)S 1 F 2397(for)S 2501(dynamic)S 2754(spawning.)S 432 1518(w)U 432 1422(The)U 558(parent)S 746(process)S 2 F 968(mypar)S 1 F 1161(makes)S 1353(a)S 1406(call)S 1524(to)S 2 F 1598(nxtag)S 1 F 1767(and)S 1885(receives)S 2123(a)S 2175(valid)S 2 F 2329(jobtag)S 1 F 2520(for)S 2620(a)S 2672(child)S 2826(process)S 480 1518(hen)U 2 F 597(nxtag)S 1 F 765(returns.)S 1009(A)S 1079(call)S 1195(to)S 2 F 1268(nxtag)S 1 F 1436(is)S 1502(always)S 1707(followed)S 1963(by)S 2051(a)S 2102(call)S 2218(to)S 2 F 2291(spawn)S 1 F (:)R 564 1806(c)U 564 1710(call)U 680(nxtag\(mypar,jobtag\))S 593 1806(all)U 680(spawn\(mypar,jobtag,subname,)S 4 F (<)R 1 F (parameter)R 1809(list)S 4 F (>)R 1 F (\))R 2995 1998(e)U 432 2094(c)U 432 1998(Data)U 589(dependencies)S 976(are)S 1089(set)S 1195(automatic)S 1453(ally)S 1584(so)S 1675(that)S 2 F 1805(mypar)S 1 F 2006(depends)S 2254(upon)S 2418(the)S 2530(completion)S 2857(of)S 2944(th)S 461 2094(hild)U 585(process.)S 844(The)S 968(child)S 2 F 1121(jobtag)S 1 F 1311(will)S 1435(have)S 1581(its)S 2 F 1665(icango)S 1 F 1866(counter)S 2085(set)S 2180(to)S 2253(0.)S 3 F 432 2286(Calling)U 659(Sequence)S 1 F 693 2574(my)U 789(p)S 835(a)S 883(r)S 971(-)S 1099(a)S 1141(n)S 1237(i)S 1273(n)S 1325(t)S 1363(e)S 1405(g)S 1451(e)S 1499(r)S 1583(c)S 1625(o)S 1669(n)S 1721(t)S 1759(a)S 1809(i)S 1845(n)S 1897(i)S 1933(n)S 1977(g)S 2073(t)S 2109(h)S 2155(e)S 2249(i)S 2285(n)S 2329(d)S 2375(e)S 2417(x)S 2505(o)S 2555(f)S 2645(t)S 2681(h)S 2727(e)S 2813(p)S 2859(a)S 2907(r)S 2947(e)S 2989(n)S 3041(t)S 3121(p)S 3171(r)S 3209(o)S 3255(c)S 3299(e)S 3299(s)S 3299(s)S 709 2862(j)U 1105 2670(t)U 1141(h)S 1187(a)S 1237(t)S 1310(w)S 1369(i)S 1413(l)S 1457(l)S 1541(s)S 1581(p)S 1627(a)S 1662(w)S 1713(n)S 1803(a)S 1891(c)S 1933(h)S 1985(i)S 2029(l)S 2065(d)S 2153(p)S 2203(r)S 2241(o)S 2287(c)S 2331(e)S 2377(s)S 2421(s)S 2498(w)S 2557(i)S 2601(t)S 2637(h)S 2733(i)S 2769(n)S 2813(d)S 2859(e)S 2901(x)S 2 F 2984(jobtag)S 1 F 3165(.)S 745 2862(o)U 789(b)S 841(t)S 879(a)S 921(g)S 1015(-)S 1099(a)S 1141(n)S 1237(i)S 1273(n)S 1325(t)S 1363(e)S 1405(g)S 1451(e)S 1499(r)S 1589(l)S 1627(a)S 1669(b)S 1715(e)S 1765(l)S 1809(i)S 1845(n)S 1889(g)S 1979(a)S 2065(d)S 2109(y)S 2153(n)S 2199(a)S 2233(m)S 2293(i)S 2331(c)S 2375(a)S 2425(l)S 2469(l)S 2505(y)S 2597(s)S 2637(p)S 2683(a)S 2718(w)S 2769(n)S 2815(e)S 2857(d)S 2945(u)S 2989(n)S 3041(i)S 3085(t)S 3165(o)S 3215(f)S 3299(c)S 3299(o)S 3299(m)S 3299(p)S 3299(u)S 3299(t)S 3299(a)S 3299(t)S 3299(i)S 3299(o)S 3299(n)S 3299 2958(.)U 739(w)S 790(h)S 842(i)S 880(c)S 922(h)S 1003(w)S 1062(i)S 1106(l)S 1150(l)S 1230(b)S 1276(e)S 1362(g)S 1414(i)S 1450(v)S 1496(e)S 1538(n)S 1634(t)S 1670(h)S 1716(e)S 1802(d)S 1848(a)S 1898(t)S 1936(a)S 2022(d)S 2068(e)S 2110(p)S 2156(e)S 2198(n)S 2242(d)S 2288(e)S 2330(n)S 2376(c)S 2418(y)S 2506(o)S 2556(f)S 2640(a)S 2728(c)S 2770(h)S 2822(i)S 2866(l)S 2902(d)S 2990(o)S 3040(f)S 2 F 3117(mypar)S 3 F 743 3150(s)U 1 F 432 3342(T)U 3 F 432 3150(Restriction)U 1 F 472 3342(he)U 556(number)S 779(of)S 856(calls)S 998(to)S 2 F 1071(nxtag)S 1 F 1239(plus)S 1371(the)S 1473(number)S 1696(of)S 1773(calls)S 1915(to)S 2 F 1988(dep)S 1 F 2105(may)S 2240(not)S 2346(exceed)S 2550(1000.)S 60 Z 3279 4710(-)U 16(--)S 3259(-)S EP %%Page: ? 28 BP 1 F 66 Z 432 654(d)U 3 F 432 462(DEP)U 1 F 1651 270(-)U 1695(28)S 1783(-)S 465 654(e\256nes)U 641(the)S 743(data)S 874(dependencies)S 1250(for)S 1349(a)S 1400(unit)S 1524(of)S 1601(computation)S 5 F 3039 750(_)U 3 F 432 942(S)U 5 F 432 750(_______________________________________________________________________________)U 3 F 469 942(yntax)U 1 F 432 1134(d)U (ep\(jobtag,icango,ncheks,list\))R 3 F 432 1326(C)U (omments)R 1 F 764(This)S 908(subroutine)S 1213(puts)S 1350(data)S 1486(dependencies)S 1867(for)S 1970(process)S 2 F 2194(jobtag)S 1 F 2388(on)S 2480(the)S 2586(problem)S 2831(list.)S 2976(A)S 432 1422(call)U 548(to)S 2 F 621(dep)S 1 F 738(is)S 804(always)S 1009(associated)S 1301(with)S 1440(a)S 1491(call)S 1607(to)S 2 F 1680(putq)S 1 F 1819(:)S 696 1614(call)U 812(dep\(jobtag,icango,nchks,list\))S 1686 1710(\))U 696(call)S 812(putq\(jobtag,yyy,)S 4 F (<)R 1 F (parameter)R 1569(list)S 4 F (>)R 3 F 894 1998(e)U 432(Calling)S 659(Sequenc)S 1 F 709 2190(j)U 745(o)S 789(b)S 841(t)S 879(a)S 921(g)S 1015(-)S 1099(a)S 1185(p)S 1229(o)S 1277(s)S 1325(i)S 1369(t)S 1413(i)S 1449(v)S 1495(e)S 1589(i)S 1625(n)S 1677(t)S 1715(e)S 1757(g)S 1803(e)S 1851(r)S 1941(i)S 1977(n)S 2021(d)S 2067(e)S 2109(x)S 2161(i)S 2197(n)S 2241(g)S 2331(a)S 2417(u)S 2461(n)S 2513(i)S 2549(q)S 2593(u)S 2639(e)S 2725(u)S 2769(n)S 2821(i)S 2865(t)S 2945(o)S 2995(f)S 3079(c)S 3121(o)S 3157(mp)S 3253(u)S 3305(t)S 3305(a)S 3305(t)S 3305(i)S 3305(o)S 3305(n)S 3305 2382(n)U 233(i)S 271(c)S 315(a)S 357(n)S 401(g)S 445(o)S 539(-)S 623(a)S 709(p)S 753(o)S 801(s)S 849(i)S 893(t)S 937(i)S 973(v)S 1019(e)S 1113(i)S 1149(n)S 1201(t)S 1239(e)S 1281(g)S 1327(e)S 1375(r)S 1461(s)S 1501(p)S 1547(e)S 1591(c)S 1641(i)S 1683(f)S 1721(y)S 1773(i)S 1809(n)S 1853(g)S 1941(h)S 1985(o)S 2022(w)S 2109(m)S 2163(a)S 2205(n)S 2249(y)S 2337(p)S 2387(r)S 2425(o)S 2471(c)S 2515(e)S 2561(s)S 2605(s)S 2647(e)S 2693(s)S 2769(mu)S 2869(s)S 2917(t)S 2999(c)S 3041(h)S 3087(e)S 3131(c)S 3173(k)S 3269(i)S 1105 2478(t)U 1141(o)S 1237(t)S 1273(h)S 1325(i)S 1365(s)S 1449(p)S 1499(r)S 1537(o)S 1583(c)S 1627(e)S 1673(s)S 1717(s)S 1801(b)S 1847(e)S 1895(f)S 1933(o)S 1983(r)S 2023(e)S 2117(i)S 2161(t)S 2243(c)S 2287(a)S 2329(n)S 2417(b)S 2463(e)S 2549(p)S 2601(l)S 2639(a)S 2683(c)S 2727(e)S 2769(d)S 2857(o)S 2901(n)S 2997(t)S 3033(h)S 3079(e)S 3171(r)S 3211(e)S 3255(a)S 3297(d)S 3297(y)S 3297(q)S 3297(.)S 3297 2670(f)U 387(n)S 433(c)S 475(h)S 519(k)S 567(s)S 701(-)S 791(t)S 827(h)S 873(e)S 959(n)S 1003(u)S 1039(mb)S 1137(e)S 1185(r)S 1267(o)S 1317(f)S 1399(p)S 1449(r)S 1487(o)S 1533(c)S 1577(e)S 1623(s)S 1667(s)S 1709(e)S 1755(s)S 1847(t)S 1883(h)S 1929(a)S 1979(t)S 2059(d)S 2105(e)S 2147(p)S 2193(e)S 2235(n)S 2279(d)S 2367(u)S 2411(p)S 2455(o)S 2499(n)S 2595(t)S 2631(h)S 2677(e)S 2765(c)S 2807(o)S 2843(mp)S 2947(l)S 2985(e)S 3035(t)S 3079(i)S 3115(o)S 3159(n)S 3247(o)S 1105 2766(t)U 1141(h)S 1193(i)S 1233(s)S 1317(p)S 1367(r)S 1405(o)S 1451(c)S 1495(e)S 1541(s)S 1585(s)S 1633(.)S 709 2958(l)U 753(i)S 793(s)S 841(t)S 927(-)S 1099(a)S 1141(n)S 1237(i)S 1273(n)S 1325(t)S 1363(e)S 1405(g)S 1451(e)S 1499(r)S 1583(a)S 1631(r)S 1675(r)S 1715(a)S 1757(y)S 1849(s)S 1889(p)S 1935(e)S 1979(c)S 2029(i)S 2071(f)S 2109(y)S 2161(i)S 2197(n)S 2241(g)S 2337(t)S 2373(h)S 2419(e)S 2513(j)S 2549(o)S 2593(b)S 2645(t)S 2683(a)S 2725(g)S 2773(s)S 2857(o)S 2907(f)S 2997(t)S 3033(h)S 3079(e)S 3165(p)S 3215(r)S 3253(o)S 3299(c)S 3299(e)S 3299(s)S 3299(s)S 3299(e)S 3299(s)S 432 3438(T)U 3 F 432 3246(Restrictions)U 1 F 1090 3054(w)U 1141(h)S 1193(i)S 1231(c)S 1273(h)S 1361(d)S 1407(e)S 1449(p)S 1495(e)S 1537(n)S 1581(d)S 1669(u)S 1713(p)S 1757(o)S 1801(n)S 1891(c)S 1933(o)S 1969(mp)S 2073(l)S 2111(e)S 2161(t)S 2205(i)S 2241(o)S 2285(n)S 2373(o)S 2423(f)S 2513(t)S 2549(h)S 2601(i)S 2641(s)S 2725(p)S 2775(r)S 2813(o)S 2859(c)S 2903(e)S 2949(s)S 2993(s)S 3041(.)S 472 3438(he)U 556(integer)S 2 F 760(jobtag)S 1 F 950(must)S 1100(be)S 1184(between)S 1425(1)S 1480(and)S 1597(1000.)S 432 3822(T)U 432 3630(The)U 556(integer)S 2 F 760(nchks)S 1 F 932(must)S 1082(be)S 1166(between)S 1407(0)S 1462(and)S 1601(25.)S 472 3822(he)U 556(array)S 2 F 713(list)S 1 F 815(must)S 965(have)S 2 F 1111(nchks)S 1 F 1283(entries)S 1480(which)S 1663(are)S 1765(the)S 2 F 1867(jobtag)S 1 F (s)R 2083(of)S 2160(dependent)S 2452(processes.)S 60 Z 3279 4710(-)U 16(--)S 3259(-)S EP %%Page: ? 27 BP 1 F 66 Z 1651 270(-)U 1695(27)S 1783(-)S 1676 462(:)U 432(call)S 548(to)S 2 F 621(putq)S 1 F 760(must)S 910(be)S 994(preceded)S 1253(by)S 1341(a)S 1392(call)S 1508(to)S 2 F 1581(dep)S 1 F 696 654(call)U 812(dep\(jobtag,icango,nchks,list\))S 1821 750(\))U 432 942(T)U 696 750(call)U 812(putq\(jobtag,subname,)S 4 F (<)R 1 F (parameter)R 1704(list)S 4 F (>)R 1 F 472 942(he)U 556(parameter)S 840(list)S 942(to)S 1015(the)S 1117(right)S 1263(of)S 2 F 1340(subname)S 1 F 1597(should)S 1795(be)S 1879(a)S 1930(valid)S 2083(set)S 2178(of)S 2255(parameters)S 2565(to)S 2638(make)S 2802(the)S 2904(call:)S 432 1326(T)U 564 1134(call)U 680(subname\()S 4 F (<)R 1 F (parameter)R 1257(list)S 4 F (>)R 1 F (\))R 1418(.)S 472 1326(his)U 575(call)S 695(will)S 823(be)S 910(made)S 1077(when)S 1245(the)S 1350(data)S 1484(dependencies)S 1863(associated)S 2158(with)S 2 F 2300(jobtag)S 1 F 2493(have)S 2642(been)S 2791(satis\256ed.)S 3 F 432 1614(C)U 1 F 432 1422(The)U 556(program)S 801(calling)S 1001(putq)S 1140(must)S 1290(have)S 2 F 1436(subname)S 1 F 1693(declared)S 1937(external.)S 3 F 480 1614(alling)U 659(Sequence)S 1 F 709 1806(j)U 745(o)S 789(b)S 841(t)S 879(a)S 921(g)S 1015(-)S 1099(a)S 1141(n)S 1237(i)S 1273(n)S 1325(t)S 1363(e)S 1405(g)S 1451(e)S 1499(r)S 1574(w)S 1625(h)S 1677(i)S 1715(c)S 1757(h)S 1853(l)S 1891(a)S 1933(b)S 1979(e)S 2029(l)S 2069(s)S 2161(t)S 2197(h)S 2243(e)S 2329(u)S 2373(n)S 2425(i)S 2469(t)S 2549(o)S 2599(f)S 2683(c)S 2725(o)S 2761(mp)S 2857(u)S 2909(t)S 2947(a)S 2997(t)S 3041(i)S 3077(o)S 3121(n)S 3248 1902(e)U 835 1998(c)U 922 1902(t)U 958(h)S 1010(i)S 1050(s)S 1142(i)S 1178(n)S 1230(t)S 1268(e)S 1310(g)S 1356(e)S 1404(r)S 1478(m)S 1532(a)S 1574(y)S 1662(b)S 1708(e)S 1796(a)S 1890(l)S 1926(o)S 1972(c)S 2016(a)S 2066(l)S 2146(v)S 2192(a)S 2240(r)S 2286(i)S 2324(a)S 2366(b)S 2418(l)S 2456(e)S 2550(i)S 2586(n)S 2682(t)S 2718(h)S 2764(e)S 2854(s)S 2894(u)S 2938(b)S 2988(r)S 3026(o)S 3070(u)S 3122(t)S 3166(i)S 3202(n)S 879 1998(a)U 929(l)S 973(l)S 1017(i)S 1053(n)S 1097(g)S 2 F 1180(putq)S 1 F 705 2190(s)U 745(u)S 789(b)S 833(n)S 879(a)S 913(m)S 967(e)S 1059(-)S 1149(t)S 1185(h)S 1231(e)S 1317(n)S 1363(a)S 1397(m)S 1451(e)S 1537(o)S 1587(f)S 1677(t)S 1713(h)S 1759(e)S 1843(F)S 1889(o)S 1939(r)S 1985(t)S 2027(r)S 2067(a)S 2109(n)S 2201(s)S 2241(u)S 2285(b)S 2335(r)S 2373(o)S 2417(u)S 2469(t)S 2513(i)S 2549(n)S 2595(e)S 2689(t)S 2725(o)S 2813(b)S 2859(e)S 2947(c)S 2991(a)S 3041(l)S 3085(l)S 3123(e)S 3165(d)S 3246(w)S 3297(h)S 3297(e)S 3297(n)S 1097 2382(h)U 1097 2286(d)U 1143(a)S 1193(t)S 1231(a)S 1317(d)S 1363(e)S 1405(p)S 1451(e)S 1493(n)S 1537(d)S 1583(e)S 1625(n)S 1671(c)S 1721(i)S 1759(e)S 1805(s)S 1895(f)S 1933(o)S 1983(r)S 2073(t)S 2109(h)S 2155(e)S 2241(p)S 2291(r)S 2329(o)S 2375(c)S 2419(e)S 2465(s)S 2509(s)S 2601(i)S 2637(n)S 2681(d)S 2727(e)S 2769(x)S 2815(e)S 2857(d)S 2945(b)S 2989(y)S 2 F 3072(jobtag)S 1 F 1143 2382(a)U 1185(v)S 1231(e)S 1317(b)S 1363(e)S 1407(e)S 1449(n)S 1541(s)S 1583(a)S 1633(t)S 1677(i)S 1717(s)S 1755(\256)S 1803(e)S 1845(d)S 1897(.)S 4 F 699 2574(<)U 1 F 745(p)S 791(a)S 839(r)S 879(a)S 913(m)S 967(e)S 1017(t)S 1055(e)S 1103(r)S 1193(l)S 1237(i)S 1277(s)S 1325(t)S 4 F 1359(>)S 1 F 1455(-)S 1539(a)S 1633(l)S 1677(i)S 1717(s)S 1765(t)S 1845(o)S 1895(f)S 1977(p)S 2023(a)S 2071(r)S 2111(a)S 2145(m)S 2199(e)S 2249(t)S 2287(e)S 2335(r)S 2377(s)S 2467(f)S 2505(o)S 2555(r)S 2639(a)S 2727(c)S 2771(a)S 2821(l)S 2865(l)S 2953(t)S 2989(o)S 2 F 3072(subname)S 1 F 3320(.)S 3320 2670(e)U 1038(t)S 1074(h)S 1120(e)S 1162(y)S 1242(mu)S 1342(s)S 1390(t)S 1470(b)S 1516(e)S 1602(g)S 1654(l)S 1690(o)S 1734(b)S 1780(a)S 1830(l)S 1910(v)S 1956(a)S 2004(r)S 2050(i)S 2088(a)S 2130(b)S 2182(l)S 2220(e)S 2266(s)S 2352(a)S 2394(n)S 2438(d)S 2534(t)S 2570(h)S 2616(e)S 2664(r)S 2704(e)S 2794(s)S 2834(h)S 2878(o)S 2922(u)S 2974(l)S 3010(d)S 3098(n)S 3142(o)S 3194(t)S 3274(b)S 1133 2766(mo)U 1235(r)S 1275(e)S 1369(t)S 1405(h)S 1451(a)S 1493(n)S 1581(2)S 1625(0)S 1713(p)S 1759(a)S 1807(r)S 1847(a)S 1881(m)S 1935(e)S 1985(t)S 2023(e)S 2071(r)S 2113(s)S 2161(.)S 432 3246(T)U 3 F 432 3054(Restrictions)U 1 F 472 3246(he)U 556(number)S 779(of)S 856(parameters)S 1166(in)S 4 F 1239(<)S 1 F (parameter)R 1560(list)S 4 F (>)R 1 F 1699(must)S 1849(not)S 1955(exceed)S 2159(20.)S 2626 3438(.)U 432 3630(C)U 432 3438(Each)U 585(parameter)S 869(passed)S 1067(in)S 4 F 1140(<)S 1 F (parameter)R 1461(list)S 4 F 1563(>)S 1 F 1622(must)S 1772(be)S 1856(a)S 1907(location)S 2140(in)S 2213(shared)S 2407(memory)S 476 3630(onstants)U 714(and)S 831(expressions)S 1161(should)S 1359(not)S 1465(be)S 1549(passed.)S 432 3822(V)U (ariables)R 711(declared)S 960(locally)S 1165(within)S 1360(the)S 1467(subroutine)S 1772(making)S 1996(the)S 2103(call)S 2224(to)S 2 F 2302(putq)S 1 F 2446(should)S 2649(not)S 2760(be)S 2848(passed)S 60 Z 16 4710(-)U 66 Z 432 3918(in)U 4 F 505(<)S 1 F (parameter)R 826(list)S 4 F (>)R 1 F (.)R 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 26 BP 3 F 66 Z 432 750(1)U 432 462(12.)U 559(Building)S 823(a)S 878(Schedule)S 1153(Program)S 1 F 1651 270(-)U 1695(26)S 1783(-)S 3 F 465 750(3.)U 559(Futures)S 1 F 582 882(U)U (se)R 707(sockets)S 923(to)S 996(pass)S 1132(information)S 1464(between)S 1705(processor)S 1980(and)S 2097(graphics.)S 3 F 432 1266(1)U 1 F 432 1074(Use)U 557(X-windows)S 888(to)S 961(provide)S 1184(a)S 1235(portable)S 1472(environment.)S 3 F 465 1266(4.)U 559(Conclusions)S 1 F 582 1398(P)U (roving)R 813(useful)S 996(in)S 1069(understanding)S 1464(run-time)S 1712(behavior)S 1964(of)S 2041(our)S 2151(parallel)S 2369(programs.)S 2679(Allows)S 2892(us)S 2973(to)S 3 F 432 2166(1)U 1 F 432 1494(see)U 538(into)S 662(the)S 764(machine.)S 1047(Simpli\256es)S 1336(the)S 1438(task,)S 1583(no)S 1671(longer)S 1861(required)S 2102(examine)S 2346(output.)S 3 F 465 2166(5.)U 454 2262(S)U (chedule)R 729(Subroutines)S 1 F 582 2394(T)U (his)R 725(section)S 937(contains)S 1182(a)S 1237(list)S 1343(of)S 1424(Schedule)S 1691(subroutines)S 2020(and)S 2140(a)S 2194(brief)S 2343(description)S 2660(of)S 2740(their)S 2885(func-)S 3 F 432 3066(P)U 1 F 432 2490(tionality.)U 3 F 472 3066(UTQ)U 1 F 432 3258(U)U (sed)R 590(to)S 663(place)S 823(descriptor)S 1108(of)S 1185(a)S 1236(staticall)S 1439(y)S 1494(de\256ned)S 1710(unit)S 1834(of)S 1911(computation)S 5 F 432 3450(_)U 1 F 432 3354(on)U 520(an)S 604(internal)S 826(problem)S 1067(list)S 5 F 465 3450(_______________________________________________________________________________)U 1 F 432 3834(p)U 3 F 432 3642(Syntax)U 1 F 465 3834(utq\(jobtag,subname,)U 4 F (<)R 1 F (parameter)R 1324(list)S 4 F (>)R 1 F (\))R 432 4218(T)U 3 F 432 4026(Comments)U 1 F 472 4218(his)U 573(subroutine)S 875(is)S 943(used)S 1088(to)S 1162(place)S 1323(the)S 1426(descriptor)S 1712(of)S 1790(the)S 1893(unit)S 2018(of)S 2096(computation)S 2447(indexed)S 2678(by)S 2 F 2767(jobtag)S 1 F 2958(on)S 2995 4314(a)U 60 Z 16 4710(-)U 66 Z 432 4314(the)U 541(problem)S 789(list.)S 937(Every)S 1123(Schedule)S 1393(program)S 1645(must)S 1802(have)S 1955(at)S 2031(least)S 2180(one)S 2304(call)S 2427(to)S 2 F 2506(putq)S 1 F (.)R 2690(Moreover,)S 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 25 BP 1 F 66 Z 582 462(T)U 1651 270(-)U 1695(25)S 1783(-)S 622 462(o)U 681(start)S 820(the)S 926(execution,)S 1224(one)S 1345(clicks)S 1524(on)S 1615(the)S 3 F 1720(Go)S 1 F 1829(button.)S 2061(When)S 2243(the)S 3 F 2348(Go)S 1 F 2457(button)S 2650(is)S 2719(clicked)S 2933(ini-)S 3006 558(t)U 432 654(h)U 432 558(tially,)U 607(the)S 711(events)S 903(are)S 1007(processed)S 1291(internally)S 1566(until)S 1710(the)S 1814(\256rst)S 1941(executable)S 2245(event)S 2411(\(one)S 2552(of)S 2631(the)S 2735(events)S 2926(tha)S 465 654(as)U 551(as)S 637(its)S 730(leading)S 954(digit)S 1105(1-5\))S 1246(is)S 1321(reached;)S 1574(then)S 1718(the)S 1829(data)S 1968(dependency)S 2312(graph)S 2492(is)S 2566(displayed)S 2848(on)S 2944(the)S 3007 750(.)U 432 846(T)U 432 750(screen.)U 675(The)S 813(nodes)S 1003(in)S 1089(the)S 1204(dependency)S 1553(graph)S 1738(will)S 1875(change)S 2096(their)S 2251(state)S 2406(as)S 2496(the)S 2611(trace)S 2773(proceeds)S 472 846(here)U 613(are)S 721(four)S 859(types)S 1026(of)S 1109(nodes)S 1291(in)S 1370(the)S 1478(graph:)S 1674(clear,)S 1846(lined,)S 2022(hashed,)S 2249(and)S 2371(black.)S 2579(The)S 2 F 2708(clear)S 1 F 2870(nodes)S 3002 942(-)U 432 1038(t)U 432 942(represent)U 702(subroutines)S 1035(waiting)S 1261(to)S 1341(have)S 1494(their)S 1643(data)S 1781(dependencies)S 2164(satisi\256ed)S 2427(before)S 2624(starting)S 2849(execu)S 450 1038(ion.)U 600(The)S 2 F 729(lined)S 1 F 887(nodes)S 1068(represent)S 1336(subroutines)S 1667(whose)S 1863(data)S 1999(dependencies)S 2380(are)S 2486(satis\256ed,)S 2745(but)S 2855(whose)S 3007 1134(.)U 432 1230(T)U 432 1134(execution)U 710(has)S 821(not)S 928(started.)S 1165(The)S 2 F 1290(hashed)S 1 F 1500(nodes)S 1677(represent)S 1941(subroutines)S 2268(that)S 2389(are)S 2492(currently)S 2752(executing)S 472 1230(he)U 2 F 556(black)S 1 F 720(nodes)S 896(represent)S 1159(subroutines)S 1485(that)S 1605(have)S 1751(\256nished)S 1982(execution.)S 2298(The)S 2422(arcs)S 2550(represent)S 2813(the)S 2915(data)S 432 1422(r)U 432 1326(dependenciess)U 849(between)S 1105(subroutines.)S 1485(The)S 1624(numbers)S 1888(associated)S 2195(with)S 2349(each)S 2506(node)S 2671(in)S 2758(the)S 2874(graph)S 454 1422(epresent)U 695(the)S 2 F 797(jobtag)S 1 F 987(for)S 1086(that)S 1206(node)S 1356(as)S 1433(de\256ned)S 1649(through)S 1876(the)S 1978(user)S 2110(calls)S 2252(to)S 2 F 2325(dep)S 1 F 2442(and)S 2 F 2559(putq.)S 1 F 3002 1554(-)U 432 1650(t)U 582 1554(The)U 707(viewing)S 942(of)S 1020(events)S 1211(can)S 1325(be)S 1410(stopped)S 1638(or)S 1716(restarted)S 1965(by)S 2054(clicking)S 2288(on)S 2377(the)S 3 F 2480(Stop)S 1 F 2632(or)S 2710(the)S 3 F 2812(Go)S 1 F 2918(but)S 450 1650(ons)U 570(at)S 645(any)S 767(time.)S 949(Execution)S 1242(begins)S 1441(at)S 1515(the)S 1622(bottom)S 1835(of)S 1917(the)S 2024(graph)S 2201(and)S 2323(works)S 2512(its)S 2601(way)S 2738(to)S 2816(the)S 2923(top,)S 432 1746(with)U 571(the)S 673(top)S 779(node)S 929(the)S 1031(last)S 1144(thing)S 1301(to)S 1374(execute.)S 582 1878(The)U 3 F 706(Quit)S 1 F 856(button)S 1046(is)S 1112(used)S 1255(to)S 1328(terminate)S 1597(the)S 1699(trace)S 1848(facility.)S 2991 2010(y)U 432 2106(a)U 582 2010(The)U 3 F 710(Full)S 1 F 849(button)S 1043(is)S 1112(used)S 1258(in)S 1334(conjunction)S 1669(with)S 1811(the)S 3 F 1916(Redraw)S 1 F 2165(button)S 2358(to)S 2434(expand)S 2649(the)S 2754(canvas)S 2958(b)S 487 2106(factor)U 666(of)S 747(four.)S 922(First)S 1069(the)S 3 F 1175(Full)S 1 F 1314(button)S 1507(is)S 1576(clicked;)S 1808(then)S 1946(the)S 3 F 2051(Redraw)S 1 F 2300(button)S 2493(clicked)S 2707(to)S 2783(redisplay)S 2998 2202(s)U 432 2298(s)U 432 2202(the)U 543(expanded)S 826(canvas.)S 1075(The)S 3 F 1207(Full)S 1 F 1350(button)S 1548(is)S 1622(really)S 1801(a)S 1860(toggle.)S 2093(Thus,)S 2272(to)S 2353(get)S 2463(the)S 5 F 2573(")S 1 F (normal)R 5 F (")R 1 F 2845(canva)S 458 2298(ize)U 556(displayed,)S 847(one)S 964(clicks)S 1139(the)S 3 F 1241(Full)S 1 F 1376(button,)S 1583(then)S 1718(the)S 3 F 1820(Redraw)S 1 F 2066(button.)S 3002 2430(-)U 432 2526(p)U 582 2430(The)U 713(next)S 855(two)S 983(buttons,)S 3 F 1223(Path)S 1 F 1384(and)S 3 F 1508(Cpath,)S 1 F 1731(are)S 1840(used)S 1990(together)S 2234(after)S 2382(the)S 2490(execution)S 2773(has)S 2889(com)S 465 2526(leted.)U 659(They)S 821(are)S 928(intended)S 1181(to)S 1259(display)S 1476(the)S 1583(critical)S 1791(path)S 1931(of)S 2013(execution)S 2295(in)S 2373(the)S 2480(graph)S 2657(\(i.e.,)S 2804(the)S 2911(path)S 2995 2622(e)U 432 2718(e)U 432 2622(that)U 557(is)S 628(taking)S 819(the)S 926(most)S 1081(time)S 1224(to)S 1302(execute\).)S 1590(The)S 1719(critical)S 1927(path)S 2067(determines)S 2382(the)S 2489(running)S 2721(time)S 2863(of)S 2944(th)S 461 2718(ntire)U 606(applicati)S 831(on.)S 961(To)S 1059(use)S 1172(this)S 1292(feature,)S 1516(one)S 1636(clicks)S 1814(on)S 1905(the)S 3 F 2009(Cpath)S 1 F 2210(button)S 2402(and)S 2521(then)S 2658(the)S 3 F 2762(Path)S 1 F 2918(but-)S 432 2814(ton.)U 3 F 577(Cpath)S 1 F 776(is)S 842(used)S 985(to)S 1058(compute)S 1306(the)S 1408(critical)S 1611(paths)S 1772(in)S 1845(the)S 1947(graph)S 2119(and)S 3 F 2236(Path)S 1 F 2390(to)S 2463(display)S 2675(the)S 2777(path.)S 2929(*)S 582 2946(The)U 3 F 713(Subtree)S 1 F 962(button)S 1159(is)S 1232(used)S 1382(to)S 1461(display)S 1679(a)S 1736(subtree)S 1954(of)S 2037(the)S 2145(graph.)S 2362(To)S 2463(use)S 2579(this)S 2702(feature,)S 2929(one)S 432 3138(r)U 432 3042(places)U 622(the)S 728(mouse)S 926(cursor)S 1117(on)S 1209(a)S 1264(node.)S 1457(The)S 1585(node)S 1739(number)S 1966(clicked)S 2180(on)S 2271(will)S 2398(be)S 2485(displayed)S 2762(in)S 2838(bottom)S 454 3138(ight)U 583(line)S 708(of)S 790(the)S 897(top)S 1008(panel.)S 1216(To)S 1316(see)S 1427(the)S 1534(subtree,)S 1768(one)S 1890(clicks)S 2070(the)S 3 F 2177(Subtree)S 1 F 2424(button.)S 2658(This)S 2801(step)S 2933(can)S 2995 3234(e)U 432 3330(c)U 432 3234(be)U 526(repeated)S 780(to)S 863(zoom)S 1041(in)S 1124(on)S 1222(a)S 1283(particular)S 1566(part)S 1700(of)S 1787(the)S 1899(graph.)S 2120(To)S 2225(redisplay)S 2498(the)S 2609(full)S 2731(graph,)S 2929(on)S 461 3330(licks)U 607(the)S 3 F 709(Redraw)S 1 F 955(button.)S 582 3462(T)U (he)R 3 F 710(Step)S 1 F 861(button)S 1055(is)S 1125(used)S 1272(to)S 1349(single-step)S 1660(through)S 1891(the)S 1997(execution)S 2278(of)S 2359(the)S 2465(trace)S 2617(\256le.)S 2765(A)S 2838(way)S 2973(to)S 2991 3558(d)U 432 3654(p)U 432 3558(use)U 553(this)S 681(is)S 757(by)S 855(loading)S 1084(a)S 1145(trace)S 1304(\256le,)S 1437(starting)S 1666(execution,)S 1970(and)S 2097(stopping)S 2356(execution)S 2643(at)S 2722(the)S 2834(desire)S 465 3654(oint.)U 632(Then)S 793(the)S 3 F 899(Step)S 1 F 1050(button)S 1243(is)S 1312(used)S 1458(to)S 1534(single-step)S 1844(through)S 2074(the)S 2179(execution.)S 2498(The)S 2625(activity)S 2846(can)S 2962(be)S 432 3750(resumed)U 677(at)S 746(normal)S 954(speeds)S 1152(by)S 1240(clicking)S 1473(the)S 3 F 1575(Go)S 1 F 1681(button.)S 582 3882(The)U 710(last)S 827(button)S 1021(is)S 3 F 1090(Histogram.)S 1 F 1454(When)S 1636(clicked,)S 1867(this)S 1987(will)S 2114(display)S 2329(a)S 2383(histogram)S 2671(of)S 2751(the)S 2856(events)S 0 F 48 Z 432 4038 M 8 22 0 0 16 0 0 18 PS16 1 F 66 Z 432 3978(run)U 542(versus)S 733(the)S 835(number)S 1058(of)S 1135(processors)S 1436(active.)S 0 F 48 Z 456 4038 M 8 22 0 0 16 0 0 18 PS16 480 4038 M 8 22 0 0 16 0 0 18 PS16 504 4038 M 8 22 0 0 16 0 0 18 PS16 528 4038 M 8 22 0 0 16 0 0 18 PS16 552 4038 M 8 22 0 0 16 0 0 18 PS16 576 4038 M 8 22 0 0 16 0 0 18 PS16 600 4038 M 8 22 0 0 16 0 0 18 PS16 624 4038 M 8 22 0 0 16 0 0 18 PS16 648 4038 M 8 22 0 0 16 0 0 18 PS16 672 4038 M 8 22 0 0 16 0 0 18 PS16 696 4038 M 8 22 0 0 16 0 0 18 PS16 720 4038 M 8 22 0 0 16 0 0 18 PS16 744 4038 M 8 22 0 0 16 0 0 18 PS16 768 4038 M 8 22 0 0 16 0 0 18 PS16 792 4038 M 8 22 0 0 16 0 0 18 PS16 816 4038 M 8 22 0 0 16 0 0 18 PS16 840 4038 M 8 22 0 0 16 0 0 18 PS16 1 F 432 4098(*)U 474(In)S 532(the)S 608(current)S 761(release)S 911(of)S 969(the)S 1045(graphics)S 1225(program,)S 1417(the)S 1493(critical)S 1642(path)S 1742(is)S 1791(chosen)S 1941(by)S 2006(the)S 2081(maximum)S 2291(number)S 2454(of)S 2511(nodes)S 2640(from)S 2750(the)S 60 Z 16 4710(-)U 48 Z 432 4158(start)U 530(to)S 583(\256nish)S 706(in)S 759(the)S 833(graph.)S 970(This)S 1071(should)S 1215(really)S 1339(be)S 1400(based)S 1525(on)S 1589(time,)S 1701(not)S 1778(number)S 1940(of)S 1996(nodes.)S 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 24 BP 1 F 66 Z 1179 2862(F)U 1651 270(-)U 1695(24)S 1783(-)S 1216 2862(igure)U 1373(1:)S 1446(Information)S 1782(on)S 1870(the)S 1972(Sun)S 2097(Screen)S 3007 3090(.)U 432 3186(A)U 582 3090(A)U 663(number)S 897(of)S 985(buttons)S 1212(and)S 1340(slide)S 1496(bars)S 1638(help)S 1783(in)S 1866(controlling)S 2186(the)S 2298(information)S 2640(to)S 2723(be)S 2817(viewed)S 480 3186(fter)U 597(the)S 703(canvas)S 908(is)S 978(on)S 1070(the)S 1176(screen,)S 1387(a)S 1442(trace)S 1595(\256le)S 1705(must)S 1859(be)S 1947(loaded.)S 2187(The)S 2315(\256le)S 2424(that)S 2547(is)S 2616(currently)S 2878(refer-)S 432 3378(c)U 432 3282(enced)U 616(is)S 691(displayed)S 974(on)S 1071(the)S 1182(second)S 1396(line)S 1525(next)S 1669(to)S 1751(the)S 1862(words)S 3 F 2054(Trace)S 2248(\256le:.)S 1 F 2423(The)S 2555(\256le)S 2669(name)S 2841(can)S 2962(be)S 461 3378(hanged)U 675(by)S 764(moving)S 988(the)S 1091(mouse)S 1286(cursor)S 1474(to)S 1548(point)S 1706(to)S 3 F 1780(Trace)S 1967(\256le:)S 1 F 2096(and)S 2214(clicking)S 2448(the)S 2551(left)S 2661(mouse)S 2856(button)S 3002 3474(r)U 432 3570(t)U 432 3474(through)U 661(all)S 750(the)S 854(trace)S 1005(\256les)S 1139(available)S 1399(for)S 1500(viewing.)S 1774(Alternativel)S 2087(y,)S 2160(one)S 2278(can)S 2392(move)S 2561(the)S 2664(mouse)S 2859(curso)S 450 3570(o)U 3 F 509(Trace)S 699(\256le:)S 1 F 831(and)S 952(hold)S 1095(down)S 1268(the)S 1374(right)S 1524(button;)S 1736(this)S 1857(will)S 1985(result)S 2157(in)S 2234(the)S 2339(display)S 2554(of)S 2634(a)S 2688(popup)S 2878(menu)S 2991 3666(o)U 432 3762(t)U 432 3666(showing)U 683(all)S 775(the)S 882(trace)S 1036(\256les)S 1173(to)S 1250(choose)S 1459(from.)S 1652(To)S 1751(select)S 1926(a)S 1981(\256le,)S 2108(one)S 2229(moves)S 2427(the)S 2533(mouse)S 2731(cursor)S 2922(int)S 450 3762(he)U 539(popup)S 730(box)S 855(while)S 1027(still)S 1151(holding)S 1378(down)S 1551(the)S 1657(left)S 1770(button,)S 1981(and)S 2102(releases)S 2336(the)S 2442(button)S 2636(on)S 2728(the)S 2834(desired)S 432 3858(\256le.)U 582 3990(After)U 745(the)S 849(desired)S 1063(\256le)S 1171(is)S 1239(selected,)S 1490(it)S 1549(must)S 1700(be)S 1785(loaded)S 1983(into)S 2108(the)S 2211(system.)S 2456(This)S 2596(is)S 2663(accomplished)S 3002 4086(f)U 432 4182(t)U 432 4086(by)U 522(clicking)S 757(the)S 3 F 861(Load)S 1 F 1032(button.)S 1263(The)S 1389(count)S 1559(of)S 1638(number)S 1863(of)S 1942(events)S 2134(loaded)S 2333(is)S 2401(displayed)S 2677(at)S 2748(the)S 2851(end)S 2969(o)S 450 4182(he)U 534(slider)S 702(bar)S 808(marked)S 3 F 1027(Events.)S 1 F 60 Z 16 4710(-)U (-)R 3259(--)S EP %%Page: ? 23 BP 3 F 66 Z 1492 462(T)U 1 F 1651 270(-)U 1695(23)S 1783(-)S 3 F 1536 462(race)U 1678(File)S 1805(Items)S 1 F 2416 702(s)U 914 798(1)U 914 702(0)U 1046(id)S 4 F 1383(#)S 1 F 1438(child)S 4 F 1781(#)S 1 F 1836(parents)S 2179(parent)S 2365(id)S 1046 798(id)U 914 894(2)U 1046(id)S 1383(timing)S 1576(info)S 914 990(3)U 1046(owner)S 1233(id)S 1383(id)S 914 1086(4)U 1046(owner)S 1233(id)S 1383(id)S 914 1182(5)U 1046(owner)S 1233(id)S 1383(id)S 1781(timing)S 1974(info)S 3007 1410(.)U 432 1506(W)U 432 1410(Rather)U 636(than)S 778(write)S 941(each)S 1089(event)S 1259(out)S 1371(as)S 1454(it)S 1518(occurs,)S 1735(the)S 1843(Scheduler)S 2134(buffers)S 2349(up)S 2443(a)S 2500(set)S 2601(of)S 2684(trace)S 2839(events)S 494 1506(hen)U 611(a)S 662(limit)S 807(is)S 873(reached,)S 1116(the)S 1218(next)S 1353(set)S 1448(of)S 1525(trace)S 1674(events)S 1864(is)S 1930(written)S 2138(to)S 2211(the)S 2313(trace)S 2462(\256le.)S 2915 1638(.)U 582(Trace)S 753(events)S 943(begin)S 1111(with)S 1250(a)S 1301(digit)S 1443(that)S 1563(de\256nes)S 1772(the)S 1874(operation)S 2144(the)S 2246(Scheduler)S 2531(has)S 2641(performed)S 3 F 1443 1830(De\256nition)U 1744(of)S 1821(Events)S 1 F 1242 2070(1)U 1242 1974(0)U 1374(create)S 1552(a)S 1603(static)S 1763(node)S 1374 2070(start)U 1509(a)S 1560(static)S 1720(node)S 1870(executing)S 1242 2262(3)U 1242 2166(2)U 1374(stop)S 1506(a)S 1557(static)S 1717(node)S 1867(executing)S 1374 2262(create)U 1552(a)S 1603(dynamic)S 1851(node)S 2180 2358(g)U 1242 2454(5)U 1242 2358(4)U 1374(start)S 1509(a)S 1560(dynamic)S 1808(node)S 1958(executin)S 1374 2454(stop)U 1506(a)S 1557(dynamic)S 1805(node)S 1955(executing)S 3 F 432 2682(11.)U 559(Replaying)S 867(a)S 922(Trace)S 1 F 582 2814(After)U 756(the)S 871(program)S 1129(has)S 1252(completed)S 1560(execution,)S 1867(the)S 1982(trace)S 2144(\256le)S 2262(can)S 2387(be)S 2483(viewed)S 2707(on)S 2807(the)S 2921(Sun)S 2 F 432 3006(t)U 1 F 432 2910(workstation.)U 814(The)S 948(trace)S 1107(\256le)S 1222(is)S 1297(moved)S 1507(to)S 1589(the)S 1700(Sun)S 1834(\256le)S 1949(system)S 2163(and)S 2289(given)S 2466(a)S 2526(name)S 2699(of)S 2785(the)S 2896(form)S 2 F 450 3006(race.xxxxx.)U 1 F 777(\(If)S 874(NFS)S 1027(is)S 1101(used)S 1252(between)S 1501(the)S 1611(Sun)S 1744(and)S 1869(the)S 1979(parallel)S 2205(machine,)S 2474(the)S 2584(\256le)S 2698(can)S 2819(be)S 2911(read)S 3002 3102(r)U 432 3198(o)U 432 3102(directly.\))U 698(To)S 798(start)S 938(the)S 1045(trace)S 1199(program,)S 1465(one)S 1586(types)S 2 F 1751(sched.trace)S 1 F (.)R 2118(Figure)S 2316(1)S 2375(shows)S 2567(what)S 2721(will)S 2849(appea)S 465 3198(n)U 520(the)S 622(canvas)S 823(on)S 911(the)S 1013(Sun)S 1138(screen.)S 60 Z 16 4710(-)U (-)R 3259(--)S EP %%Page: ? 22 BP 1 F 66 Z 1651 270(-)U 1695(22)S 1783(-)S 2991 462(p)U 432 558(t)U 432 462(transportable)U 811(implement)S 1091(ation)S 1258(of)S 1349(parallel)S 1580(algorithms.)S 1935(We)S 2061(feel)S 2194(equally)S 2422(compelled)S 2730(to)S 2816(develo)S 450 558(ools)U 585(to)S 661(aid)S 766(in)S 842(understanding)S 1239(how)S 1377(our)S 1489(parallel)S 1709(implement)S 1989(ation)S 2144(performs)S 2406(when)S 2573(run)S 2685(on)S 2775(a)S 2828(parallel)S 432 654(processor.)U 582 786(Our)U 708(goals)S 870(here)S 1006(are)S 1109(simple:)S 1325(to)S 1399(be)S 1484(able)S 1615(to)S 1688(trace)S 1837(the)S 1939(\257ow)S 2079(of)S 2156(execution)S 2433(within)S 2623(our)S 2733(applicati)S 2958(on)S 2995 882(e)U 432 978(h)U 432 882(and)U 551(to)S 626(understand)S 939(where)S 1124(bottlenecks)S 1447(occur.)S 1656(Monitoring)S 1980(the)S 2084(run)S 2196(time)S 2336(by)S 2426(using)S 2592(a)S 2644(timing)S 2838(routin)S 465 978(as)U 551(been)S 706(employed)S 996(in)S 1078(the)S 1189(past.)S 1343(This)S 1491(approach,)S 1780(however,)S 2055(has)S 2174(a)S 2234(number)S 2466(of)S 2552(limitat)S 2722(ions)S 2863(in)S 2944(the)S 432 1170(e)U 432 1074(parallel)U 657(setting.)S 900(We)S 1020(want)S 1177(an)S 1267(animation)S 1557(of)S 1640(run-time)S 1894(behavior,)S 2169(visualizing)S 2485(the)S 2593(parallel)S 2817(parts)S 2973(in)S 461 1170(xecution)U 711(as)S 790(the)S 894(applicati)S 1119(on)S 1209(is)S 1277(running.)S 1545(We)S 1660(would)S 1849(like)S 1971(to)S 2046(understand)S 2359(what)S 2511(performance)S 2866(issues)S 2998 1266(s)U 432 1362(c)U 432 1266(arise)U 585(during)S 786(execution)S 1070(and)S 1194(what)S 1351(bottlenecks)S 1679(develop,)S 1933(and)S 2057(to)S 2137(view)S 2294(where)S 2484(programming)S 2870(error)S 461 1362(ause)U 600(a)S 651(parallel)S 869(programming)S 1249(to)S 5 F 1322(")S 1 F (hang.)R 5 F (")R 1 F 582 1494(T)U (o)R 681(achieve)S 907(these)S 1067(goals,)S 1248(we)S 1350(have)S 1499(developed)S 1794(graphics)S 2042(tools)S 2195(that)S 2318(allow)S 2489(us)S 2573(to)S 2649(trace)S 2801(the)S 2906(\257ow)S 3002 1590(r)U 432 1686(S)U 432 1590(of)U 518(execution.)S 842(In)S 927(addition,)S 1189(we)S 1296(have)S 1450(devised)S 1681(tools)S 1839(to)S 1920(aid)S 2030(in)S 2111(constructiing)S 2484(programs)S 2763(using)S 2936(ou)S 469 1686(CHEDULE)U 799(package.)S 582 1818(T)U (he)R 712(graphics)S 963(interface)S 1220(that)S 1345(provides)S 1599(trace)S 1753(information)S 2090(has)S 2205(been)S 2356(designed)S 2617(to)S 2695(use)S 2810(a)S 2866(Sun-3)S 2995 1914(a)U 432 2010(p)U 432 1914(workstation.)U 810(Our)S 941(plan)S 1082(in)S 1161(the)S 1269(near)S 1410(term)S 1558(is)S 1630(to)S 1709(convert)S 1934(the)S 2042(trace)S 2197(program)S 2448(to)S 2527(use)S 2642(X-windows,)S 465 2010(ortable)U 669(windowing)S 988(system.)S 582 2142(W)U (e)R 703(hope)S 861(these)S 1026(tools)S 1184(can)S 1305(be)S 1397(used)S 1548(to)S 1629(in\257uence)S 1900(the)S 2010(design)S 2212(of)S 2297(an)S 2389(algorithm)S 2673(by)S 2768(providing)S 3002 2238(-)U 432 2334(r)U 432 2238(insight)U 635(into)S 761(how)S 899(the)S 1003(program)S 1250(behaves)S 1486(when)S 1653(run)S 1765(in)S 1840(parallel,)S 2077(thus)S 2211(allowing)S 2465(use)S 2576(to)S 2650(tune)S 2786(the)S 2889(algo)S 454 2334(ithm.)U 642(Additionally,)S 1020(we)S 1126(hope)S 1283(that)S 1410(these)S 1574(tools)S 1731(will)S 1862(further)S 2069(our)S 2185(understanding)S 2586(of)S 2669(the)S 2777(nature)S 2969(of)S 3 F 432 2718(1)U 1 F 432 2430(the)U 534(parallel)S 752(algorithm)S 1029(and)S 1146(of)S 1223(parallel)S 1441(processing)S 1745(in)S 1818(general.)S 3 F 465 2718(0.)U 559(Tracing)S 804(an)S 896(Execution)S 1 F 582 2850(T)U (o)R 679(trace)S 829(the)S 932(\257ow)S 1073(of)S 1151(execution,)S 1446(an)S 1531(algorithm)S 1809(is)S 1876(implement)S 2156(ed)S 2241(using)S 2407(the)S 2510(SCHEDULE)S 2878(pack-)S 432 2946(age,)U 562(linked)S 748(with)S 887(the)S 989(trace)S 1138(version)S 1354(of)S 1431(the)S 1533(Schedule)S 1796(library,)S 2010(and)S 2127(run)S 2237(on)S 2325(a)S 2376(parallel)S 2594(machine.)S 582 3078(The)U 713(execution)S 996(produces)S 1262(an)S 1352(output)S 1548(\256le)S 1660(of)S 1743(trace)S 1898(events)S 2094(in)S 2173(a)S 2230(\256le)S 2342(named)S 2 F 2545(trace.graph)S 1 F (.)R 2922(The)S 2995 3174(e)U 432 3270(e)U 432 3174(information)U 771(in)S 851(the)S 960(\256le)S 1073(is)S 1146(a)S 1204(trace)S 1360(of)S 1443(the)S 1551(user)S 1689(speci\256cation)S 2049(of)S 2132(the)S 2240(computationa)S 2597(l)S 2643(graph)S 2821(and)S 2944(th)S 461 3270(xecution)U 714(of)S 796(the)S 903(graph)S 1079(by)S 1171(the)S 1277(computer.)S 1590(Each)S 1747(node)S 1901(in)S 1978(the)S 2084(graph)S 2260(represents)S 2553(a)S 2608(subroutine,)S 2929(and)S 3002 3366(f)U 432 3462(t)U 432 3366(the)U 537(arcs)S 668(represent)S 934(the)S 1039(dependencies)S 1418(between)S 1662(the)S 1767(codes.)S 1981(The)S 2108(trace)S 2260(\256le)S 2369(records)S 2588(the)S 2693(de\256nition)S 2969(o)S 450 3462(he)U 545(graph)S 728(along)S 907(with)S 1057(the)S 1170(execution)S 1458(and)S 1585(completion)S 1912(of)S 1999(the)S 2111(subroutine.)S 2460(When)S 2649(execution)S 2936(has)S 432 3654(i)U 432 3558(completed,)U 758(this)S 889(\256le)S 1009(is)S 1088(then)S 1236(moved)S 1450(to)S 1536(a)S 1600(Sun)S 1738(workstation)S 2084(where)S 2280(the)S 2395(trace)S 2557(facility)S 2777(has)S 2900(been)S 450 3654(nstalled.)U 693(\(It)S 777(is)S 843(assumed)S 1092(that)S 1212(suntools)S 1454(are)S 1556(used.\))S 2747 3786(.)U 60 Z 16 4710(-)U 66 Z 582 3786(The)U 706(information)S 1038(in)S 1111(the)S 1213(trace)S 1362(\256les)S 1494(has)S 1604(the)S 1706(following)S 1984(meaning)S 2232(from)S 2382(the)S 2484(Scheduler)S 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 21 BP 1 F 66 Z 432 462(than)U 567(one)S 684(processor.)S 1651 270(-)U 1695(21)S 1783(-)S 582 594(A)U 663(related)S 874(error)S 1035(which)S 1229(is)S 1306(more)S 1474(easily)S 1660(found)S 1847(is)S 1924(the)S 2037(improper)S 2311(speci\256cation)S 2675(of)S 2762(the)S 2874(graph)S 2991 690(n)U 432 786(i)U 432 690(through)U 681(gross)S 865(programmingerror.)S 1433(This)S 1593(will)S 1738(usually)S 1971(result)S 2160(in)S 2254(a)S 2326(deadlock)S 2606(situation)S 2875(or)S 2973(i)S 450 786(ncorrect)U 691(results)S 889(even)S 1039(with)S 1182(only)S 1324(one)S 1444(processor)S 1722(active.)S 1942(An)S 2048(easy)S 2190(way)S 2325(to)S 2401(check)S 2579(for)S 2681(such)S 2827(error)S 2980(is)S 432 882(to)U 505(use)S 615(the)S 717(graphics)S 962(facility)S 1169(described)S 1443(later.)S 582 1014(Dynamic)U 847(spawning)S 1124(is)S 1192(usually)S 1406(straightforward)S 1836(unless)S 2024(there)S 2178(are)S 2281(reentry)S 2490(points.)S 2713(When)S 2893(there)S 3002 1110(r)U 432 1206(e)U 432 1110(are)U 537(multiple)S 780(entry)S 940(points)S 1125(a)S 1178(typical)S 1380(error)S 1532(is)S 1600(failing)S 1795(to)S 1870(restore)S 2073(state)S 2217(after)S 2361(spawning)S 2638(processes.)S 2932(Fo)S 461 1206(xample)U 630 1494(.)U 630 1590(.)U 630 1686(.)U 630 1782(call)U 746(spawn\(...\))S 564 1974(r)U 630 1878(k)U 685(=)S 744(5)S 586 1974(eturn)U 805 2070(e)U 454(2000)S 608(continu)S 564 2262(m)U 637(=)S 696(k*\(k+1\))S 432 2838(w)U 630 2550(.)U 630 2454(.)U 630 2358(.)U 480 2838(ill)U 563(give)S 705(an)S 796(incorrect)S 1058(result)S 1233(for)S 2 F 1339(m)S 1 F 1415(if)S 2 F 1483(k)S 1 F 1540(is)S 1612(a)S 1669(local)S 1824(variable)S 2063(in)S 2142(the)S 2250(subroutine)S 2556(that)S 2682(is)S 2754(spawning.)S 3 F 432 3126(T)U 1 F 432 2934(To)U 527(make)S 691(this)S 808(correct)S 1012(the)S 1114(user)S 1246(must)S 1396(re-initial)S 1621(ize)S 2 F 1719(k)S 1 F 1770(after)S 1912(entry)S 2069(point)S 2226(2000.)S 3 F 476 3126(ransporting)U 832(Users)S 1012(Code)S 432 3990(9)U 1 F 432 3318(To)U 527(be)S 611(supplied)S 856(later)S 3 F 465 3990(.)U 526(GRAPHICS)S 897(TRACE)S 1151(FACILITY)S 1 F 582 4122(P)U (erformance)R 945(issues)S 1130(are)S 1237(vital)S 1380(to)S 1458(the)S 1565(effective)S 1820(use)S 1934(of)S 2015(computers.)S 2354(Yet)S 2475(the)S 2581(current)S 2793(status)S 2969(of)S 3002 4218(-)U 432 4314(q)U 432 4218(software)U 694(environments)S 1087(for)S 1199(implement)S 1479(ing)S 1598(parallel)S 1829(algorithms)S 2144(is)S 2222(in)S 2307(a)S 2370(primitive)S 2644(state.)S 2837(Conse)S 465 4314(uently,)U 677(we)S 785(felt)S 903(compelled)S 1207(to)S 1289(develop)S 1528(a)S 1588(system)S 1802(\(described)S 2107(in)S 2189(the)S 2300(previous)S 2558(section\))S 2797(to)S 2878(allow)S 60 Z 3279 4710(-)U 16(--)S 3259(-)S EP %%Page: ? 20 BP 1 F 54 Z 654 426(c)U 690(a)S 730(l)S 766(l)S 838(l)S 868(o)S 906(c)S 940(k)S 976(o)S 1012(n)S 1053(\()S 1090(i)S 1126(l)S 1156(o)S 1194(c)S 1228(k)S 1269(\))S 66 Z 1651 270(-)U 1695(20)S 1783(-)S 54 Z 838 486(i)U 874(l)S 904(o)S 942(c)S 978(a)S 1018(l)S 1083(=)S 1162(i)S 1192(n)S 1228(d)S 1264(x)S 1336 546(5)U 654 606(c)U 838 546(i)U 868(n)S 904(d)S 940(x)S 1011(=)S 1090(i)S 1120(n)S 1156(d)S 1192(x)S 1263(+)S 690 606(a)U 730(l)S 766(l)S 832(u)S 868(n)S 910(l)S 940(o)S 978(c)S 1012(k)S 1053(\()S 1090(i)S 1126(l)S 1156(o)S 1194(c)S 1228(k)S 1269(\))S 72 Z 432 858(I)U (n)R 516(this)S 644(example)S 912(a)S 968(critical)S 1192(section)S 1420(has)S 1540(been)S 1700(placed)S 1912(around)S 2136(the)S 2248(act)S 2356(of)S 2440(getting)S 2664(a)S 2720(local)S 2884(copy)S 3004 942(t)U 432(of)S 534(the)S 664(shared)S 894(variable)S 1321(and)S 1466(updating)S 1759(the)S 1888(value)S 2085(of)S 2299(.)S 2382(If)S 2471(several)S 2716(concurren)S 2 F 66 Z 1167(indx)S 2186(indx)S 1 F 72 Z 2996 1026(s)U 432 1110(c)U 432 1026(processes)U 739(are)S 858(executing)S 1169(this)S 1304(code,)S 1489(then)S 1644(only)S 1803(one)S 1938(of)S 2029(them)S 2204(will)S 2347(be)S 2446(able)S 2596(to)S 2682(occupy)S 2920(thi)S 464 1110(ritical)U 663(section)S 898(at)S 981(any)S 1116(given)S 1307(time.)S 1508(The)S 1651(variable)S 2072(must)S 2243(be)S 2342(a)S 2404(globally)S 2670(shared)S 2888(vari-)S 2 F 66 Z 1914(ilock)S 3 F 72 Z 2984 1194(k)U 1 F 432 1278(b)U 432 1194(able)U 583(and)S 718(it)S 788(must)S 958(be)S 1056(initialized)S 1374(before)S 1588(any)S 1722(usage)S 1916(as)S 2006(an)S 2104(argument)S 2406(to)S 3 F 2492(lockon)S 1 F 2726(or)S 3 F 2816(unloc)S 1 F 468 1278(y)U 528(calling)S 748(the)S 860(routine)S 3 F 1088(lckasn)S 1 F (.)R 1350(In)S 1434(the)S 1546(above)S 1742(example)S 2010(the)S 2122(statement)S 432 1590(m)U 54 Z 690 1422(c)U 726(a)S 766(l)S 802(l)S 874(l)S 906(c)S 940(k)S 978(a)S 1015(s)S 1048(n)S 1089(\()S 1126(i)S 1162(l)S 1192(o)S 1230(c)S 1264(k)S 1305(\))S 72 Z 488 1590(ust)U 599(execute)S 846(exactly)S 1081(once)S 1244(and)S 1374(before)S 1584(any)S 1714(of)S 1800(the)S 1914(calls)S 2072(to)S 3 F 2154(lockon)S 1 F 2384(are)S 2498(made.)S 2722(After)S 2900(exe-)S 432 1674(cution)U 637(of)S 722(this)S 851(statement)S 1152(the)S 1265(lock)S 1414(variable)S 1823(has)S 1944(been)S 2105(declared)S 2374(as)S 2459(a)S 2516(lock)S 2664(variable)S 2920(and)S 2 F 66 Z 1671(ilock)S 1 F 72 Z 432 1758(h)U 2 F 66 Z 1159(off)S 1 F 72 Z 468(as)S 555(been)S 718(initiated)S 981(to)S 1064(be)S 1228(.)S 1273(If)S 1348(there)S 1519(are)S 1634(low-level)S 1933(data)S 2080(dependencies)S 2495(among)S 2718(any)S 2849(of)S 2936(the)S 3000 1842(-)U 432 1926(d)U 432 1842(processes)U 734(that)S 868(will)S 1006(be)S 1100(scheduled,)S 1432(then)S 1582(it)S 1648(will)S 1786(be)S 1879(necessary)S 2184(to)S 2265(enforce)S 2506(those)S 2683(data)S 2828(depen)S 468 1926(encies)U 675(using)S 858(locks.)S 1055(It)S 1126(is)S 1201(preferable)S 1520(to)S 1602(avoid)S 1788(using)S 1970(locks)S 2148(if)S 2218(possible.)S 2522(However,)S 2830(in)S 2912(cer-)S 3 F 66 Z 432 2202(8)U 1 F 72 Z 432 2010(tain)U 564(cases)S 740(such)S 896(as)S 980(pipelining,)S 1314(locks)S 1490(will)S 1626(be)S 1718(required.)S 2024(mmmmm)S 3 F 66 Z 465 2202(.)U 526(Standard)S 813(Tricks)S 1 F 582 2334(I)U (n)R 659(this)S 776(section)S 984(we)S 1083(discuss)S 1296(some)S 1457(standard)S 1702(graphs,)S 1917(performance)S 2271(issues)S 2451(and)S 2568(frequent)S 2809(errors.)S 498 2430(A.)U 585(Typical)S 807(Graphs)S 586 2622(d)U 641(and)S 758(c)S 787 2718(n)U 586 2814(t)U 586 2718(fork)U 718(joi)S 604 2814(solve)U 3 F 432 3006(C)U (ommon)R 715(Errors)S 927(and)S 1056(How)S 1210(to)S 1287(Avoid)S 1478(Them)S 1 F 582 3138(C)U (ertainly)R 867(the)S 988(most)S 1157(common)S 1428(error)S 1597(is)S 1682(failing)S 1894(to)S 1986(declare)S 2216(a)S 2286(subroutine)S 2605(external)S 2856(before)S 432 3330(r)U 432 3234(referencing)U 765(it)S 835(in)S 920(a)S 983(call)S 1111(to)S 1196(putq)S 1346(or)S 1434(spawn.)S 1675(This)S 1825(will)S 1960(cause)S 2139(unusual)S 2377(behavior)S 2640(which)S 2834(usually)S 454 3330(esults)U 630(in)S 707(a)S 762(bus)S 880(error.)S 1073(It)S 1139(is)S 1209(the)S 1314(\256rst)S 1442(thing)S 1602(one)S 1722(should)S 1923(check)S 2101(when)S 2269(such)S 2415(unexplained)S 2761(behaviour)S 432 3426(occurs.)U 582 3558(Perhaps)U 823(the)S 935(most)S 1095(serious)S 1314(error)S 1473(is)S 1548(to)S 1630(pass)S 1775(an)S 1868(argument)S 2147(to)S 2229(static)S 2398(or)S 2484(spawned)S 2746(subroutine)S 3002 3654(f)U 432 3750(e)U 432 3654(which)U 617(is)S 685(not)S 793(global.)S 1020(These)S 1201(errors)S 1379(are)S 1483(dif\256cult)S 1715(to)S 1790(trace)S 1941(and)S 2060(\256nd.)S 2248(The)S 2374(\256rst)S 2501(clue)S 2634(of)S 2713(this)S 2832(type)S 2969(o)S 461 3750(rror)U 585(is)S 654(to)S 730(have)S 879(a)S 933(correctly)S 1191(running)S 1421(program)S 1668(when)S 1835(only)S 1976(one)S 2095(physical)S 2338(processor)S 2615(is)S 2683(active)S 2863(which)S 432 3846(fails)U 567(when)S 732(more)S 889(than)S 1024(one)S 1141(processor)S 1416(is)S 1482(active.)S 582 3978(Another)U 823(error)S 976(which)S 1162(gives)S 1326(similar)S 1533(behavior)S 1788(is)S 1857(to)S 1933(povide)S 2137(incorrect)S 2395(analysis)S 2632(of)S 2712(data)S 2845(depen-)S 432 4170(t)U 432 4074(dencies.)U 697(This)S 843(is)S 916(when)S 1088(the)S 1197(user)S 1336(describes)S 1610(the)S 1719(data)S 1857(dependency)S 2200(graph)S 2379(incorrectly)S 2692(in)S 2772(the)S 2881(sense)S 450 4170(hat)U 556(two)S 681(processes)S 960(which)S 1147(read)S 1286(and)S 1407(write)S 1568(the)S 1673(same)S 1833(data)S 1967(item)S 2108(are)S 2213(allowed)S 2446(to)S 2522(execute)S 2747(simultane-)S 60 Z 16 4710(-)U 66 Z 432 4266(ously.)U 639(Again)S 825(the)S 930(symptom)S 1200(is)S 1268(a)S 1321(correctly)S 1578(running)S 1807(program)S 2054(on)S 2144(one)S 2263(processor)S 2540(that)S 2662(fails)S 2799(on)S 2889(more)S 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 19 BP 1 F 66 Z 841 462(.)U 1607 270(-)U 1689(1)S 1733(9)S 1827(-)S 1011 558(e)U 525(2)S 569(0)S 613(0)S 703(c)S 745(o)S 789(n)S 841(t)S 885(i)S 921(n)S 965(u)S 709 750(i)U 751(f)S 839(\()S 870(w)S 923(a)S 973(i)S 1017(t)S 1059(\()S 1089(my)S 1193(t)S 1231(a)S 1273(g)S 1325(,)S 1361(2)S 1411(\))S 1455(\))S 1543(r)S 1583(e)S 1633(t)S 1669(u)S 1719(r)S 1757(n)S 481 846(2)U 525(0)S 569(0)S 613(0)S 703(c)S 745(o)S 789(n)S 841(t)S 885(i)S 921(n)S 965(u)S 1011(e)S 841 942(.)U 841 1038(.)U 841 1134(.)U 921 1230(n)U 474 1326(N)U 707 1230(r)U 747(e)S 797(t)S 833(u)S 883(r)S 525 1326(0)U 569(0)S 613(0)S 703(c)S 745(o)S 789(n)S 841(t)S 885(i)S 921(n)S 965(u)S 1011(e)S 841 1614(.)U 841 1518(.)U 841 1422(.)U 921 1710(n)U 703 1806(e)U 707 1710(r)U 747(e)S 797(t)S 833(u)S 883(r)S 745 1806(n)U 789(d)S 432 2094(O)U (f)R 525(course)S 2 F 720(wait)S 1 F 856(must)S 1007(be)S 1092(declared)S 1337(logical)S 1537(in)S 2 F 1610(subname)S 1 F 1867(.)S 1950(The)S 2074(arguments)S 2370(to)S 2 F 2443(wait)S 1 F 2578(are)S 2 F 2680(mytag)S 1 F 2863(which)S 2991 2190(h)U 432 2286(h)U 432 2190(has)U 546(been)S 696(set)S 795(to)S 872(the)S 2 F 978(jobtag)S 1 F 1172(of)S 1253(the)S 1359(particular)S 1636(instance)S 1877(of)S 2 F 1958(subname)S 1 F 2219(followed)S 2478(by)S 2569(an)S 2656(integer)S 2863(whic)S 465 2286(as)U 543(been)S 690(set)S 786(to)S 860(the)S 963(number)S 1187(that)S 1308(ientry)S 1484(will)S 1609(return)S 1789(when)S 2 F 1955(subname)S 1 F 2213(is)S 2280(reentered.)S 2586(This)S 2725(mechanism)S 2 F 2995 2382(e)U 1 F 432 2478(o)U 432 2382(sets)U 555(a)S 608(logical)S 810(barrier)S 1009(which)S 1194(is)S 1262(not)S 1370(a)S 1423(busy)S 1572(wait.)S 1748(The)S 1874(functionalit)S 2176(y)S 2233(provides)S 2484(for)S 2584(exiting)S 2 F 2789(subnam)S 1 F 465 2478(nly)U 571(if)S 633(a)S 684(copy)S 834(of)S 2 F 911(sublow)S 1 F 1120(has)S 1230(not)S 1336(yet)S 1438(completed.)S 3 F 432 3438(7)U 432 2766(Recursive)U 732(Spawn)S 1 F 946(To)S 1041(be)S 1125(supplied)S 1370(later.)S 3 F 465 3438(.)U 526(Low-Level)S 848(Synchronization)S 1 F 582 3570(I)U (deally,)R 826(the)S 929(mechanism)S 1250(we)S 1349(have)S 1495(just)S 1612(described)S 1886(will)S 2010(relieve)S 2210(the)S 2312(user)S 2444(of)S 2521(explicitl)S 2735(y)S 2790(invoking)S 2991 3666(o)U 432 3762(e)U 432 3666(any)U 560(synchronization)S 1013(primitives.)S 1351(Unfortunately,)S 1769(some)S 1940(powerful)S 2210(parallel)S 2438(constructs)S 2737(are)S 2849(not)S 2965(s)S 461 3762(asily)U 620(described)S 907(by)S 1008(this)S 1138(mechanism.)S 1511(It)S 1586(may)S 1734(be)S 1831(desirable)S 2103(to)S 2189(have)S 2348(two)S 2482(processes)S 2769(executing)S 3002 3858(-)U 432 3954(l)U 432 3858(simultaneously)U 854(that)S 976(are)S 1080(not)S 1188(truly)S 1336(data)S 1469(independent)S 1813(of)S 1891(each)S 2034(other.)S 2231(A)S 2302(typical)S 2503(example)S 2748(is)S 2815(in)S 2889(pipe)S 450 3954(ining)U 610(a)S 664(computation,)S 1034(that)S 1157(is,)S 1242(when)S 1409(several)S 1619(parallel)S 1839(processes)S 2116(are)S 2220(writing)S 2434(on)S 2524(the)S 2628(same)S 2787(data)S 2920(in)S 2995(a)S 3002 4050(-)U 432 4146(i)U 432 4050(speci\256ed)U 690(order)S 853(which)S 1038(is)S 1106(coordinated)S 1440(through)S 1669(explicit)S 1889(synchronization.)S 2372(To)S 2469(provide)S 2694(this)S 2813(capabil)S 450 4146(ty,)U 550(two)S 681(low-level)S 961(synchronization)S 1413(primitives)S 1711(have)S 1867(been)S 2023(made)S 2196(available)S 2463(within)S 2662(SCHEDULE.)S 60 Z 16 4710(-)U 66 Z 432 4242(They)U 589(are)S 3 F 691(lockon)S 1 F 900(and)S 3 F 1017(lockoff)S 1 F (.)R 1272(Each)S 1425(takes)S 1582(an)S 1666(integer)S 1870(argument.)S 2179(An)S 2282(example)S 2526(of)S 2603(usage)S 2775(is)S 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 18 BP 1 F 66 Z 703 558(e)U 707 462(r)U 747(e)S 797(t)S 833(u)S 883(r)S 921(n)S 1607 270(-)U 1689(1)S 1733(8)S 1827(-)S 745 558(n)U 789(d)S 432 846(I)U (n)R 519(this)S 646(subroutine)S 956(the)S 1068(labels)S 1253(1000,2000,..)S 1585(.,N000)S 1798(should)S 2006(be)S 2100(considered)S 2417(as)S 2503(entry)S 2669(points.)S 2922(The)S 3006 942(l)U 432 1038(N)U 432 942(entry)U 598(points)S 790(are)S 901(taken)S 1074(in)S 1155(succession)S 1467(beginning)S 1760(with)S 1907(label)S 2064(1000)S 2226(and)S 2351(continuing)S 2662(through)S 2897(labe)S 480 1038(000.)U 658(A)S 2 F 746(return)S 1 F 951(statement)S 1242(must)S 1410(precede)S 1654(each)S 1814(of)S 1909(the)S 2029(labels)S 2222(in)S 2313(this)S 2447(list.)S 2605(The)S 2746(subroutine)S 3006 1134(l)U 432 1230(L)U 2 F 432 1134(ientry)U 1 F (\()R 2 F (myid)R 1 F (,)R 2 F (N)R 1 F (\))R 851(returns)S 1067(the)S 1179(number)S 1412(of)S 1499(times)S 1673(process)S 2 F 1903(myid)S 1 F 2063(has)S 2183(been)S 2339(entered)S 2564(so)S 2655(that)S 2785(the)S 2897(labe)S 472 1230(000)U 601(will)S 733(be)S 825(the)S 935(entry)S 1100(point)S 1265(on)S 1361(the)S 1471(L)S 1541(-th)S 1644(time)S 1790(this)S 1915(process)S 2143(is)S 2216(entered.)S 2477(The)S 2608(integer)S 2819(N)S 2896(must)S 3006 1326(t)U 432 1422(t)U 432 1326(correspond)U 753(to)S 832(the)S 940(total)S 1084(number)S 1313(of)S 1396(entry)S 1559(points)S 1748(on)S 1842(this)S 1965(list.)S 2112(It)S 2179(is)S 2250(important)S 2532(to)S 2610(understand)S 2926(tha)S 450 1422(his)U 552(process)S 775(will)S 901(be)S 987(exited)S 1171(at)S 1242(the)S 2 F 1346(return)S 1 F 1535(just)S 1654(before)S 1846(each)S 1990(entry)S 2149(point.)S 2347(Each)S 2502(time)S 2642(the)S 2746(subroutine)S 3006 1518(t)U 432 1614(w)U 432 1518(is)U 503(reentered)S 774(execution)S 1056(begins)S 1255(at)S 1329(the)S 1436(\256rst)S 1566(executable)S 1873(statement)S 2150(just)S 2271(as)S 2352(a)S 2407(normal)S 2619(subroutine,)S 2940(bu)S 480 1614(hen)U 599(the)S 702(computed)S 2 F 984(go)S 1073(to)S 1 F 1147(statement)S 1421(is)S 1488(reached)S 1715(the)S 1818(function)S 2 F 2060(ientry)S 1 F 2236(will)S 2361(force)S 2519(the)S 2622(computation)S 2973(to)S 2998 1710(s)U 432 1806(i)U 432 1710(execute)U 655(at)S 725(the)S 828(label)S 978(following)S 1257(the)S 1360(last)S 1474(return.)S 1692(Upon)S 1861(completion)S 2178(of)S 2255(the)S 2 F 2357(nkids)S 1 F 2518(spawned)S 2771(processe)S 450 1806(n)U 506(the)S 609(200)S 731(loop)S 871(computation)S 1222(will)S 1347(resume)S 1560(at)S 1630(the)S 1733(entry)S 1891(point)S 2049(2000)S 2204(just)S 2321(as)S 2398(in)S 2471(the)S 2573(simple)S 2770(case.)S 2922(The)S 2998 1902(s)U 432 1998(p)U 432 1902(user)U 575(is)S 652(responsible)S 985(for)S 1095(restoring)S 1362(the)S 1475(state)S 1628(of)S 1716(any)S 1844(local)S 2004(variables)S 2274(de\256ned)S 2501(in)S 2584(subname)S 2850(at)S 2929(thi)S 465 1998(oint.)U 609(In)S 689(this)S 809(method)S 1030(the)S 1134(subroutine)S 2 F 1436(subname)S 1 F 1695(is)S 1763(exited)S 1947(after)S 2091(each)S 2235(round)S 2413(of)S 2492(spawning.)S 2808(Another)S 3007 2094(.)U 432 2190(T)U 432 2094(mechanism)U 761(may)S 904(be)S 995(used)S 1145(to)S 1225(avoid)S 1400(this)S 1524(forced)S 1721(exit)S 1848(and)S 1972(also)S 2107(to)S 2187(specify)S 2406(a)S 2464(speci\256c)S 2694(return)S 2880(label)S 472 2190(his)U 571(mechanism)S 892(uses)S 1028(the)S 1130(logical)S 1330(function)S 2 F 1571(wait)S 1 F 1706(.)S 1851 2478(\))U 2 F 696 2574(d)U 1 F 705 2478(s)U 745(u)S 789(b)S 839(r)S 877(o)S 921(u)S 973(t)S 1017(i)S 1053(n)S 1099(e)S 1189(s)S 1229(u)S 1273(b)S 1317(n)S 1363(a)S 1397(m)S 1451(e)S 1499(\()S 4 F 1535(<)S 1 F 1581(p)S 1627(a)S 1675(r)S 1705(m)S 1761(s)S 4 F 1799(>)S 2 F 729 2574(eclare)U 915(global)S 1105(variables)S 696 2766(declare)U 915(local)S 1068(variables)S 1 F 709 2958(l)U 745(o)S 789(g)S 841(i)S 879(c)S 923(a)S 973(l)S 3 F 1048(wait)S 1243 3054(w)U 1 F 701 3150(g)U 703 3054(e)U 745(x)S 797(t)S 835(e)S 883(r)S 921(n)S 967(a)S 1017(l)S 3 F 1092(sublo)S 1 F 745 3150(o)U 841(t)S 877(o)S 971(\()S 1009(1)S 1053(0)S 1097(0)S 1141(0)S 1193(,)S 1229(2)S 1273(0)S 1317(0)S 1361(0)S 1413(,)S 1457(.)S 1501(.)S 1545(.)S 1589(,)S 1618(N)S 1669(0)S 1713(0)S 1757(0)S 1807(\))S 1853(,)S 1897(i)S 1935(e)S 1977(n)S 2029(t)S 2071(r)S 2109(y)S 2159(\()S 2189(my)S 2293(t)S 2331(a)S 2373(g)S 2425(,)S 2454(N)S 2511(\))S 481 3246(1)U 525(0)S 569(0)S 613(0)S 703(c)S 745(o)S 789(n)S 841(t)S 885(i)S 921(n)S 965(u)S 1011(e)S 841 3342(.)U 841 3438(.)U 841 3534(.)U 701 3630(d)U 745(o)S 833(2)S 877(0)S 921(0)S 1017(j)S 1095(=)S 1185(1)S 1237(,)S 1273(n)S 1317(k)S 1369(i)S 1405(d)S 1453(s)S 835 4014(c)U 841 3918(.)U 841 3822(.)U 841 3726(.)U 879 4014(a)U 929(l)S 973(l)S 3 F 1048(nxtag)S 1 F 1217(\()S 1247(my)S 1351(t)S 1389(a)S 1431(g)S 1483(,)S 1527(j)S 1563(d)S 1607(u)S 1643(m)S 1687(my)S 1789(\))S 2407 4110(\))U 835(c)S 879(a)S 929(l)S 973(l)S 3 F 1048(spawn)S 1 F 1240(\()S 1270(my)S 1374(t)S 1412(a)S 1454(g)S 1506(,)S 1550(j)S 1586(d)S 1630(u)S 1666(m)S 1710(my)S 1814(,)S 3 F 1845(sublow)S 1 F 2057(,)S 4 F 2091(<)S 1 F 2137(p)S 2183(a)S 2231(r)S 2261(m)S 2317(s)S 4 F 2355(>)S 1 F 841 4206(.)U 841 4302(.)U 60 Z 26 4710(-)U 66(-)S 3229(-)S 3269(-)S EP %%Page: ? 17 BP 1 F 66 Z 1651 270(-)U 1695(17)S 1783(-)S 2437 462(.)U 432(of)S 509(these)S 666(child)S 819(processes.)S 1133(This)S 1272(may)S 1407(be)S 1491(accomplished)S 1874(in)S 1947(the)S 2049(following)S 2327(way)S 705 750(s)U 745(u)S 789(b)S 839(r)S 877(o)S 921(u)S 973(t)S 1017(i)S 1053(n)S 1099(e)S 1189(s)S 1229(u)S 1273(b)S 1317(n)S 1363(a)S 1397(m)S 1451(e)S 1499(\()S 4 F 1535(<)S 1 F 1581(p)S 1627(a)S 1675(r)S 1705(m)S 1761(s)S 4 F 1799(>)S 1 F 1851(\))S 2 F 696 1038(d)U 696 846(declare)U 915(global)S 1105(variables)S 729 1038(eclare)U 915(local)S 1068(variables)S 1 F 439 1422(c)U 439 1326(c)U 703 1230(e)U 745(x)S 797(t)S 835(e)S 883(r)S 921(n)S 967(a)S 1017(l)S 3 F 1092(sublow)S 1 F 709 1422(j)U 745(u)S 781(mp)S 929(t)S 965(o)S 1055(e)S 1097(n)S 1149(t)S 1191(r)S 1229(y)S 1317(p)S 1361(o)S 1413(i)S 1449(n)S 1501(t)S 1578(L)S 1625(0)S 1669(0)S 1713(0)S 1809(i)S 1851(f)S 1941(i)S 1977(n)S 2029(t)S 2067(e)S 2109(g)S 2155(e)S 2203(r)S 2291(f)S 2329(u)S 2373(n)S 2419(c)S 2469(t)S 2513(i)S 2549(o)S 2593(n)S 2689(i)S 2727(e)S 2769(n)S 2821(t)S 2863(r)S 2901(y)S 439 1614(c)U 439 1518(c)U 707(r)S 747(e)S 797(t)S 833(u)S 883(r)S 921(n)S 969(s)S 1061(t)S 1097(h)S 1143(e)S 1229(v)S 1275(a)S 1325(l)S 1361(u)S 1407(e)S 1490(L)S 701 1710(g)U 745(o)S 841(t)S 877(o)S 971(\()S 1009(1)S 1053(0)S 1097(0)S 1141(0)S 1193(,)S 1229(2)S 1273(0)S 1317(0)S 1361(0)S 1413(,)S 1457(.)S 1501(.)S 1545(.)S 1589(,)S 1618(N)S 1669(0)S 1713(0)S 1757(0)S 1807(\))S 1853(,)S 1897(i)S 1935(e)S 1977(n)S 2029(t)S 2071(r)S 2109(y)S 2159(\()S 2189(my)S 2293(t)S 2331(a)S 2373(g)S 2425(,)S 2454(N)S 2511(\))S 481 1806(1)U 525(0)S 569(0)S 613(0)S 703(c)S 745(o)S 789(n)S 841(t)S 885(i)S 921(n)S 965(u)S 1011(e)S 841 1902(.)U 841 1998(.)U 841 2094(.)U 701 2190(n)U 745(k)S 797(i)S 833(d)S 881(s)S 963(=)S 2 F 1048(the)S 1150(number)S 1374(of)S 1447(child)S 1600(process)S 1824(to)S 1897(be)S 1981(spawned)S 2194 2286(e)U 1 F 701 2382(d)U 2 F 1048 2286(this)U 1165(number)S 1389(may)S 1521(be)S 1605(determined)S 1923(at)S 1996(run)S 2110(tim)S 1 F 745 2382(o)U 833(2)S 877(0)S 921(0)S 1017(j)S 1095(=)S 1185(1)S 1237(,)S 1273(n)S 1317(k)S 1369(i)S 1405(d)S 1453(s)S 835 2766(c)U 841 2670(.)U 841 2574(.)U 841 2478(.)U 879 2766(a)U 929(l)S 973(l)S 3 F 1048(nxtag)S 1 F 1217(\()S 1247(my)S 1351(t)S 1389(a)S 1431(g)S 1483(,)S 1527(j)S 1563(d)S 1607(u)S 1643(m)S 1687(my)S 1789(\))S 2407 2862(\))U 835(c)S 879(a)S 929(l)S 973(l)S 3 F 1048(spawn)S 1 F 1240(\()S 1270(my)S 1374(t)S 1412(a)S 1454(g)S 1506(,)S 1550(j)S 1586(d)S 1630(u)S 1666(m)S 1710(my)S 1814(,)S 3 F 1845(sublow)S 1 F 2057(,)S 4 F 2091(<)S 1 F 2137(p)S 2183(a)S 2231(r)S 2261(m)S 2317(s)S 4 F 2355(>)S 1 F 841 2958(.)U 841 3054(.)U 841 3150(.)U 1011 3246(e)U 525(2)S 569(0)S 613(0)S 703(c)S 745(o)S 789(n)S 841(t)S 885(i)S 921(n)S 965(u)S 707 3438(r)U 747(e)S 797(t)S 833(u)S 883(r)S 921(n)S 1011 3534(e)U 481(2)S 525(0)S 569(0)S 613(0)S 703(c)S 745(o)S 789(n)S 841(t)S 885(i)S 921(n)S 965(u)S 841 3630(.)U 841 3726(.)U 841 3822(.)U 921 3918(n)U 474 4014(N)U 707 3918(r)U 747(e)S 797(t)S 833(u)S 883(r)S 525 4014(0)U 569(0)S 613(0)S 703(c)S 745(o)S 789(n)S 841(t)S 885(i)S 921(n)S 965(u)S 1011(e)S 60 Z 26 4710(-)U 66 Z 841 4302(.)U 841 4206(.)U 841 4110(.)U 60 Z 66 4710(-)U 3229(-)S 3269(-)S EP %%Page: ? 16 BP 1 F 66 Z 701 462(d)U 745(o)S 833(2)S 877(0)S 921(0)S 1017(j)S 1095(=)S 1185(1)S 1237(,)S 1273(n)S 1317(k)S 1369(i)S 1405(d)S 1453(s)S 1607 270(-)U 1689(1)S 1733(6)S 1827(-)S 841 558(.)U 841 654(.)U 841 750(.)U 835 846(c)U 879(a)S 929(l)S 973(l)S 3 F 1048(nxtag)S 1 F 1217(\()S 1247(my)S 1351(t)S 1389(a)S 1431(g)S 1483(,)S 1527(j)S 1563(d)S 1607(u)S 1643(m)S 1687(my)S 1789(\))S 2407 942(\))U 835(c)S 879(a)S 929(l)S 973(l)S 3 F 1048(spawn)S 1 F 1240(\()S 1270(my)S 1374(t)S 1412(a)S 1454(g)S 1506(,)S 1550(j)S 1586(d)S 1630(u)S 1666(m)S 1710(my)S 1814(,)S 3 F 1845(sublow)S 1 F 2057(,)S 4 F 2091(<)S 1 F 2137(p)S 2183(a)S 2231(r)S 2261(m)S 2317(s)S 4 F 2355(>)S 1 F 841 1038(.)U 841 1134(.)U 841 1230(.)U 1011 1326(e)U 525(2)S 569(0)S 613(0)S 703(c)S 745(o)S 789(n)S 841(t)S 885(i)S 921(n)S 965(u)S 707 1422(r)U 747(e)S 797(t)S 833(u)S 883(r)S 921(n)S 432 1806(L)U 703 1518(e)U 745(n)S 789(d)S 472 1806(et)U 548(us)S 636(call)S 759(the)S 867(executing)S 1150(process)S 1376(de\256ned)S 1598(by)S 2 F 1692(subname)S 1 F 1955(together)S 2198(with)S 2343(its)S 2433(arguments)S 2735(the)S 2843(parent.)S 2 F 432 1998(m)U 1 F 432 1902(In)U 512(the)S 617(computation)S 970(above,)S 1169(the)S 1273(parent)S 1461(process)S 1683(will)S 1809(spawn)S 2 F 2002(nkids)S 1 F 2165(child)S 2320(processes.)S 2636(The)S 2762(parameter)S 2 F 480 1998(ytag)U 1 F 618(which)S 804(appears)S 1030(in)S 1106(the)S 1211(calling)S 1414(sequence)S 1680(of)S 1760(both)S 2 F 1901(nxtag)S 1 F 2071(and)S 2 F 2190(spawn)S 1 F 2383(must)S 2535(contain)S 2752(the)S 2 F 2856(jobtag)S 1 F 2991 2094(n)U 432 2190(p)U 432 2094(of)U 509(the)S 611(parent)S 797(process.)S 1056(The)S 1180(parameter)S 2 F 1464(mytag)S 1 F 1647(must)S 1797(be)S 1881(stored)S 2064(in)S 2137(a)S 2188(global)S 2374(variable)S 2607(which)S 2790(has)S 2900(bee)S 465 2190(assed)U 635(to)S 713(the)S 820(parent)S 2 F 1011(subname)S 1 F 1273(either)S 1449(through)S 1681(the)S 1788(calling)S 1993(sequence)S 2261(or)S 2343(through)S 2575(named)S 2777(common.)S 432 2286(The)U 556(calls)S 698(to)S 2 F 771(nxtag)S 1 F 939(and)S 2 F 1056(spawn)S 1 F 1247(must)S 1397(be)S 1481(done)S 1631(together.)S 1885(The)S 2009(statement)S 630 2478(call)U 3 F 746(nxtag)S 1 F (\(mytag,jdummy\))R 432 2670(r)U (eturns)R 638(a)S 2 F 690(jobtag)S 1 F 881(in)S 954(the)S 1056(parameter)S 2 F 1340(jdummy)S 1 F 1571(which)S 1754(has)S 1864(been)S 2010(assigned)S 2259(by)S 2347(Schedule)S 2610(internally.)S 2922(The)S 3002 2766(-)U 432 2862(p)U 432 2766(data)U 567(dependencies)S 947(are)S 1053(automatic)S 1311(ally)S 1435(de\256ned:)S 1673(the)S 1779(each)S 1925(spawned)S 2182(process)S 2406(will)S 2533(be)S 2620(forced)S 2813(to)S 2889(com)S 465 2862(lete)U 581(before)S 771(the)S 873(parent)S 1059(can)S 1172(\256nish.)S 1380(The)S 1504(statement)S 1817 3054(\))U 432 3246(i)U 630 3054(call)U 3 F 746(spawn)S 1 F (\(mytag,jdummy,)R 3 F (sublow)R 1 F (,)R 4 F (<)R 1 F 1619(parms)S 4 F (>)R 1 F 450 3246(s)U 516(similar)S 738(in)S 828(nature)S 1031(to)S 1121(a)S 1189(call)S 1322(to)S 2 F 1412(putq)S 1 F 1568(in)S 1658(the)S 1777(sense)S 1959(that)S 2096(will)S 2237(invoke)S 2455(a)S 2523(call)S 2656(to)S 2746(subroutine)S 2 F 432 3342(sublow)U 1 F (\()R 4 F (<)R 1 F (parms)R 4 F (>)R 1 F (\).)R 582 3474(If)U 656(this)S 781(mechanism)S 1110(for)S 1217(dynamic)S 1473(spawning)S 1756(is)S 1830(used)S 1980(then)S 2122(the)S 2231(parent)S 2 F 2424(subname)S 1 F 2688(must)S 2845(not)S 2958(do)S 2995 3570(e)U 2 F 432 3666(s)U 1 F 432 3570(any)U 551(computations)S 929(dependent)S 1223(upon)S 1379(completion)S 1698(of)S 1777(any)S 1896(of)S 1974(the)S 2 F 2077(nkids)S 1 F 2239(invocations)S 2565(of)S 2643(the)S 2746(subroutin)S 2 F 458 3666(ublow)U 1 F 654(associated)S 959(with)S 1111(the)S 1226(spawning)S 1514(within)S 1716(the)S 1830(200)S 1963(loop.)S 2153(Any)S 2301(processes)S 2588(dependent)S 2892(upon)S 3002 3762(-)U 432 3858(p)U 432 3762(completion)U 753(of)S 2 F 834(subname)S 1 F 1095(will)S 1223(be)S 1311(assured)S 1534(that)S 1657(each)S 1802(of)S 1882(these)S 2 F 2042(nkids)S 1 F 2206(spawned)S 2462(processes)S 2740(have)S 2889(com)S 465 3858(leted)U 614(when)S 2 F 779(subname)S 1 F 1036(has)S 1146(completed.)S 1529 4050(.)U 3 F 432(Spawning)S 734(with)S 881(Multiple)S 1144(Entry)S 1331(Points)S 1 F 582 4182(On)U 690(many)S 863(occasions)S 1146(one)S 1268(wishes)S 1474(return)S 1657(execution)S 1938(control)S 2150(to)S 2227(parent)S 2417(process)S 2641(after)S 2787(the)S 2893(child)S 2991 4278(n)U 60 Z 16 4710(-)U 66 Z 432 4278(processes)U 711(have)S 861(completed)S 1160(and)S 1281(resume)S 1497(computations)S 1877(which)S 2064(are)S 2170(dependent)S 2466(upon)S 2624(the)S 2729(completio)S 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 15 BP 1 F 66 Z 1607 270(-)U 1689(1)S 1733(5)S 1827(-)S 833 462(n)U 879(c)S 921(h)S 967(e)S 1009(k)S 1057(s)S 1139(=)S 2 F 1224(an)S 1312(integer)S 1520(specifying)S 1808(the)S 1910(number)S 2134(of)S 2207(nodes)S 2383(which)S 2562(depend)S 2774(on)S 2862(jobtag)S 1 F 841 654(l)U 885(i)S 925(s)S 973(t)S 1139(=)S 2 F 1224(an)S 1312(integer)S 1520(array)S 1689(containing)S 1992(list)S 2094(of)S 2167(identifie)S 2381(rs)S 1 F 2466(\()S 2 F 2499(ie.)S 2585(jobtags)S 1 F 2790(\))S 2 F 1246 750(of)U 1319(the)S 1421(ncheks)S 1622(processes)S 1901(dependent)S 2193(upon)S 2347(completion)S 2661(of)S 2734(jobtag)S 1 F 2915(.)S 3002 978(-)U 432 1074(g)U 582 978(It)U 649(is)S 720(essential)S 973(that)S 1098(at)S 1172(least)S 1319(one)S 1441(node)S 1596(has)S 2 F 1711(icango)S 4 F 1912(=)S 1 F 1971(0)S 2031(set.)S 2170(Without)S 2412(this)S 2534(condition)S 2808(the)S 2914(pro)S 465 1074(ram)U 593(cannot)S 794(start.)S 972(There)S 1151(can)S 1268(be)S 1356(several)S 1568(nodes)S 1748(with)S 2 F 1891(icango)S 4 F 2092(=)S 1 F 2151(0.)S 2249(Exactly)S 2474(one)S 2594(node)S 2747(must)S 2900(have)S 2995 1170(e)U 432 1266(o)U 432 1170(the)U 541(condition)S 2 F 818(ncheks)S 4 F (=)R 1 F (0)R 1096(set.)S 1237(The)S 1368(program)S 1619(cannot)S 1822(\256nish)S 1997(without)S 2226(this.)S 2388(Error)S 2555(messages)S 2832(will)S 2962(b)S 465 1266(utput)U 628(and)S 751(the)S 859(Schedule)S 1128(program)S 1379(will)S 1509(execute)S 1737(a)S 1794(Fortran)S 2016(stop)S 2154(if)S 2222(either)S 2399(of)S 2481(these)S 2643(conditions)S 2944(are)S 432 1458(i)U 432 1362(not)U 539(met.)S 699(A)S 770(unit)S 895(of)S 973(computation)S 1324(is)S 5 F 1391(")S 1 F (scheduled)R 5 F (")R 1 F 1733(for)S 1833(execution)S 2111(when)S 2277(its)S 2 F 2362(icango)S 1 F 2564(has)S 2675(been)S 2822(set)S 2918(to)S 2991(0)S 450 1458(ndicating)U 725(that)S 854(it)S 921(is)S 995(not)S 1109(waiting)S 1336(upon)S 1498(the)S 1608(completion)S 1933(of)S 2018(any)S 2143(other)S 2308(unit)S 2440(of)S 2525(computation.)S 2922(The)S 2 F 3002 1554(-)U 432 1650(t)U 432 1554(icango)U 1 F 635(counter)S 878(of)S 957(each)S 1101(of)S 1180(the)S 2 F 1284(ncheks)S 1 F 1486(dependents)S 1805(will)S 1930(be)S 2015(decremente)S 2317(d)S 2373(automatic)S 2631(ally)S 2752(when)S 2 F 2918(job)S 450 1650(ag)U 1 F 547(completes.)S 882(The)S 1014(unit)S 1146(of)S 1231(computation)S 1589(labeled)S 2 F 1808(jobtag)S 1 F 2006(is)S 2080(recorded)S 2340(through)S 2575(the)S 2685(call)S 2809(to)S 2 F 2890(putq)S 1 F (.)R 432 1746(Once)U 593(the)S 695(data)S 826(dependencies)S 1202(for)S 2 F 1301(jobtag)S 1 F 1491(have)S 1637(been)S 1783(satis\256ed)S 2021(a)S 608 1938(call)U 3 F 724(subname)S 1 F 1000(\()S 4 F 1044(<)S 1 F (parms)R 4 F (>)R 1 F 1301(\))S 432 2130(w)U (ill)R 557(be)S 641(executed)S 896(where)S 4 F 1079(<)S 1 F (parms)R 4 F (>)R 1 F 1336(represents)S 1625(the)S 1727(list)S 1829(of)S 1906(parameters)S 2216(to)S 2289(be)S 2373(passed)S 2571(to)S 2644(the)S 2746(subroutine)S 432 2322(p)U 2 F 432 2226(subname)U 1 F (.)R 741(The)S 878(call)S 1007(to)S 2 F 1093(putq)S 1 F 1245(records)S 1474(the)S 1589(entry)S 1759(point)S 1929(to)S 2 F 2015(subname)S 1 F 2285(and)S 2414(the)S 2528(addresses)S 2815(of)S 2904(each)S 465 2322(arameter)U 719(in)S 795(the)S 900(calling)S 1103(sequence)S 4 F 1368(<)S 1 F (parms)R 4 F (>)R 1 F (.)R 1666(Execution)S 1956(of)S 2035(this)S 2154(unit)S 2280(of)S 2359(computation)S 2711(only)S 2852(occurs)S 3007 2418(.)U 432 2514(T)U 432 2418(after)U 577(the)S 682(data)S 816(dependencies)S 1195(have)S 1344(been)S 1493(satis\256ed)S 1734(and)S 1854(a)S 1908(physical)S 2152(processor)S 2430(has)S 2543(become)S 2771(available)S 472 2514(he)U 558(order)S 721(of)S 800(execution)S 1079(is)S 1147(dictated)S 1378(by)S 1468(the)S 1572(order)S 1735(in)S 1810(which)S 1995(schedulable)S 2329(processes)S 2606(get)S 2710(placed)S 2905(on)S 2995(a)S 2998 2610(s)U 432 2706(p)U 5 F 432 2610(")U 1 F (ready)R 639(to)S 723(execute)S 5 F (")R 1 F 984(queue.)S 1213(When)S 1402(the)S 1514(number)S 1747(of)S 1834(physical)S 2085(processors)S 2396(is)S 2472(1)S 2537(then)S 2682(this)S 2809(order)S 2980(i)S 465 2706(redetermine)U 778(d,)S 859(but)S 973(when)S 1146(more)S 1311(than)S 1454(one)S 1579(processor)S 1862(is)S 1936(active)S 2122(the)S 2232(order)S 2401(is)S 2475(somewhat)S 2772(nondeter-)S 3 F 432 3090(S)U 1 F 432 2802(ministic.)U 704(This)S 843(queue)S 1022(is)S 1088(served)S 1282(by)S 2 F 1370(nprocs)S 1 F 1572(workers)S 1807(on)S 1895(a)S 1946(self)S 2063(scheduled.)S 3 F 469 3090(imple)U 648(Spawn)S 1 F 582 3222(I)U (f)R 658(one)S 784(wishes)S 995(to)S 1077(do)S 1174(dynamic)S 1431(spawning)S 1715(within)S 1914(one)S 2040(of)S 2126(the)S 2237(executing)S 2523(processes)S 2807(that)S 2936(has)S 432 3414(p)U 432 3318(been)U 586(de\256ned)S 810(staticall)S 1013(y,)S 1092(there)S 1252(are)S 1361(three)S 1521(options.)S 1783(The)S 1914(simplest)S 2162(situation)S 2417(is)S 2490(when)S 2662(the)S 2771(spawning)S 465 3414(rocess)U 666(does)S 823(not)S 943(do)S 1045(any)S 1176(additional)S 1474(work)S 1646(which)S 1843(depends)S 2095(upon)S 2263(the)S 2379(results)S 2587(of)S 2678(the)S 2793(spawned)S 432 3510(processes.)U 746(In)S 823(this)S 940(case)S 1075(the)S 1177(spawning)S 1452(process)S 1672(has)S 1782(the)S 1884(form)S 705 3798(s)U 745(u)S 789(b)S 839(r)S 877(o)S 921(u)S 973(t)S 1017(i)S 1053(n)S 1099(e)S 1189(s)S 1229(u)S 1273(b)S 1317(n)S 1363(a)S 1397(m)S 1451(e)S 1499(\()S 4 F 1535(<)S 1 F 1581(p)S 1627(a)S 1675(r)S 1705(m)S 1761(s)S 4 F 1799(>)S 1 F 1851(\))S 2 F 696 4086(d)U 696 3894(declare)U 915(global)S 1105(variables)S 729 4086(eclare)U 915(local)S 1068(variables)S 1 F 60 Z 26 4710(-)U 66 Z 703 4278(e)U 745(x)S 797(t)S 835(e)S 883(r)S 921(n)S 967(a)S 1017(l)S 3 F 1092(sublow)S 1 F 60 Z 66 4710(-)U 3229(-)S 3269(-)S EP %%Page: ? 14 BP 1 F 66 Z 1651 270(-)U 1695(14)S 1783(-)S 3002 462(-)U 432 558(c)U 2 F 432 462(sched)U 1 F 607(in)S 682(the)S 786(main)S 941(program.)S 1227(Each)S 1382(call)S 1500(involves)S 1747(the)S 1851(overhead)S 2116(of)S 2195(acquiring)S 2 F 2467(nprocs)S 1 F 2671(physical)S 2914(pro)S 461 558(essors)U 649(on)S 741(the)S 847(given)S 1018(system.)S 1243(Care)S 1392(must)S 1545(be)S 1632(exercised)S 1905(on)S 1996(some)S 2160(systems)S 2394(because)S 2627(the)S 2732(expense)S 2969(of)S 432 654(acquiring)U 702(a)S 753(number)S 976(of)S 1053(physical)S 1294(processors)S 1595(may)S 1730(be)S 1814(substantial.)S 582 786(This)U 725(example)S 973(shows)S 1165(the)S 1271(three)S 1428(levels)S 1607(of)S 1687(paralleli)S 1901(sm)S 2003(typically)S 2257(available)S 2518(in)S 2594(a)S 2648(Schedule)S 2914(pro-)S 432 978(t)U 432 882(gram.)U 613(The)S 744(subroutine)S 2 F 1051(paralg)S 1 F 1256(de\256nes)S 1472(the)S 1581(static)S 1747(data)S 1884(dependency)S 2226(graph)S 2404(which)S 2593(is)S 2665(to)S 2744(be)S 2834(obeyed)S 450 978(hroughout)U 744(the)S 847(course)S 1042(of)S 1120(the)S 1223(computation.)S 1613(The)S 1737(subroutine)S 2 F 2037(subname)S 1 F 2294(exploits)S 2524(the)S 2626(lowest)S 2820(level)S 2969(of)S 432 1170(c)U 432 1074(paralleli)U 646(sm)S 757(through)S 996(dynamic)S 1256(spawning)S 1542(of)S 1630(processes)S 1916(involving)S 2 F 2201(sublow)S 1 F (.)R 2460(This)S 2610(subroutine)S 2921(was)S 461 1170(onstructed)U 761(to)S 838(dynamicall)S 1129(y)S 1188(spawn)S 1383(processes)S 1662(at)S 1735(run)S 1849(time)S 1991(using)S 2160(the)S 2266(calls)S 2412(to)S 2 F 2488(nxtag)S 1 F 2659(and)S 2 F 2779(spawn)S 1 F 2973(in)S 432 1266(the)U 534(200)S 655(loop.)S 582 1398(More)U 751(will)S 879(be)S 967(said)S 1099(about)S 1271(the)S 1377(details)S 1574(of)S 1655(this)S 1776(mechanism)S 2101(below.)S 2327(At)S 2419(this)S 2540(point)S 2700(it)S 2761(should)S 2962(be)S 3002 1494(-)U 432 1590(t)U 432 1494(stressed)U 664(that)S 785(the)S 888(subroutine)S 2 F 1189(paralg)S 1 F 1388(only)S 1528(records)S 1745(the)S 1848(data)S 1980(dependencies)S 2356(and)S 2473(the)S 2575(unit)S 2699(of)S 2776(computa)S 450 1590(ion)U 558(associated)S 852(with)S 993(each)S 1137(node)S 1289(in)S 1364(the)S 1468(data)S 1601(dependency)S 1939(graph.)S 2152(None)S 2319(of)S 2398(these)S 2556(will)S 2681(execute)S 2904(until)S 432 1782(p)U 2 F 432 1686(paralg)U 1 F 633(completes.)S 963(When)S 2 F 1145(paralg)S 1 F 1346(does)S 1492(complete)S 1757(\(ie.)S 1867(executes)S 2117(a)S 2170(return)S 2351(statement\))S 2648(then)S 2785(the)S 2889(com-)S 465 1782(utation)U 672(begins)S 869(by)S 960(executing)S 1240(those)S 1404(nodes)S 1583(which)S 1769(have)S 2 F 1918(icango)S 4 F 2119(=)S 1 F 2178(0.)S 2275(During)S 2487(the)S 2592(execution,)S 2889(these)S 3002 1878(f)U 432 1974(c)U 432 1878(units)U 588(of)S 671(computation)S 1027(will)S 1157(execute)S 1385(as)S 1468(their)S 1616(data)S 1753(dependencies)S 2135(are)S 2243(satis\256ed.)S 2504(Additional)S 2813(units)S 2969(o)S 461 1974(omputation)U 795(may)S 942(be)S 1038(placed)S 1243(on)S 1343(the)S 1457(pool)S 1608(of)S 1697(work)S 1867(to)S 1952(be)S 2048(done)S 2210(during)S 2416(execution)S 2705(through)S 2944(the)S 3 F 432 2358(S)U 2 F 432 2070(spawn)U 1 F 623(mechanism.)S 3 F 469 2358(tatic)U 615(Partition)S 1 F 582 2490(I)U (n)R 667(the)S 777(generic)S 1000(example)S 1252(above,)S 1456(the)S 1566(subroutine)S 2 F 1874(paralg)S 1 F 2080(de\256nes)S 2296(the)S 2405(static)S 2572(data)S 2710(dependency)S 2 F 2991 2586(p)U 1 F 432 2682(a)U 432 2586(graph.)U 645(It)S 709(is)S 777(important)S 1056(to)S 1131(understand)S 1444(that)S 1566(none)S 1718(of)S 1797(the)S 1901(units)S 2053(of)S 2132(computation)S 2484(de\256ned)S 2701(through)S 2 F 2929(de)S 1 F 461 2682(nd)U 2 F 552(putq)S 1 F 694(will)S 821(execute)S 1046(until)S 1191(a)S 1245(return)S 1427(has)S 1540(been)S 1689(executed)S 1947(by)S 2 F 2037(paralg)S 1 F (.)R 2276(Thus)S 2432(the)S 2536(parameters)S 2848(passed)S 2995 2778(e)U 432 2874(p)U 432 2778(through)U 671(the)S 785(calling)S 997(sequence)S 1272(to)S 2 F 1357(subname)S 1 F 1625(must)S 1786(be)S 1881(global)S 2078(variables.)S 2387(That)S 2540(is,)S 2634(every)S 2813(variabl)S 465 2874(assed)U 640(through)S 877(the)S 989(calling)S 1198(sequence)S 1470(to)S 2 F 1552(subname)S 1 F 1818(with)S 1966(a)S 2026(call)S 2151(to)S 2 F 2233(putq)S 1 F 2381(must)S 2540(either)S 2720(reference)S 2995(a)S 432 2970(variable)U 665(passed)S 863(through)S 1090(the)S 1192(calling)S 1392(sequence)S 1655(of)S 2 F 1732(paralg)S 1 F 1930(or)S 2007(must)S 2157(be)S 2241(in)S 2314(shared)S 2508(common.)S 582 3102(To)U 680(de\256ne)S 866(the)S 971(static)S 1134(data)S 1268(dependency)S 1607(graph)S 1782(one)S 1901(must)S 2053(write)S 2212(a)S 2265(program)S 2512(that)S 2634(includes)S 2877(a)S 2930(call)S 432 3294(g)U 432 3198(to)U 2 F 508(dep)S 1 F 628(followed)S 887(by)S 978(a)S 1032(call)S 1151(to)S 2 F 1227(putq)S 1 F 1369(corresponding)S 1771(to)S 1847(every)S 2018(node)S 2171(on)S 2262(the)S 2367(graph.)S 2558(Each)S 2713(node)S 2865(of)S 2944(the)S 465 3294(raph)U 607(should)S 808(be)S 895(assigned)S 1147(a)S 2 F 1201(jobtag)S 1 F (.)R 1433(These)S 1615(jobtags)S 1830(must)S 1982(be)S 2068(successive)S 2370(positive)S 2602(integers)S 2856(begin-)S 432 3486(t)U 432 3390(ning)U 577(at)S 652(1)S 713(and)S 836(not)S 948(exceeding)S 1242(1000.)S 1441(In)S 1524(the)S 1632(program)S 1882(de\256ning)S 2125(the)S 2232(static)S 2397(data)S 2533(dependency)S 2874(graph)S 450 3486(here)U 585(must)S 735(be)S 819(the)S 921(statements)S 1524 3678(\))U 630 3774(c)U 630 3678(call)U 3 F 746(dep)S 1 F (\(jobtag,icango,ncheks,list)R 659 3774(all)U 3 F 746(putq)S 1 F (\(jobtag,)R 3 F (subname)R 1 F (,)R 4 F 1353(<)S 1 F (parms)R 4 F (>)R 1 F (\))R 432 3966(c)U (orresponding)R 837(to)S 916(each)S 1064(node.)S 1259(The)S 1389(call)S 1511(to)S 2 F 1590(dep)S 1 F 1713(records)S 1935(the)S 2043(data)S 2179(dependencies)S 2560(for)S 2664(the)S 2771(node)S 2926(that)S 432 4062(has)U 542(been)S 688(labeled)S 2 F 899(jobtag)S 1 F (.)R 1128(The)S 1252(dependencies)S 1628(are)S 1730(de\256ned)S 1946(through)S 2173(speci\256cation)S 2527(of)S 841 4254(i)U 879(c)S 923(a)S 965(n)S 1009(g)S 1053(o)S 1139(=)S 2 F 1224(an)S 1312(integer)S 1520(specifying)S 1808(the)S 1910(number)S 2134(of)S 2207(nodes)S 2383(jobtag)S 2573(depends)S 2811(on)S 1 F 60 Z 3269 4710(-)U 26(-)S 66(-)S 3229(-)S EP %%Page: ? 13 BP 1 F 66 Z 1607 270(-)U 1689(1)S 1733(3)S 1827(-)S 2 F 2158 462(n)U 1 F 833 558(n)U 841 462(i)U 879(c)S 923(a)S 965(n)S 1009(g)S 1053(o)S 1139(=)S 2 F 1224(number)S 1448(of)S 1521(nodes)S 1697(jobtag)S 1887(depends)S 2125(o)S 1 F 879 558(c)U 921(h)S 967(e)S 1009(k)S 1057(s)S 1139(=)S 2 F 1224(number)S 1448(of)S 1521(nodes)S 1697(which)S 1876(depend)S 2088(on)S 2176(jobtag)S 2388 654(s)U 1 F 439 750(c)U 841 654(l)U 885(i)S 925(s)S 973(t)S 1139(=)S 2 F 1224(list)S 1326(of)S 1399(identifie)S 1613(rs)S 1687(of)S 1760(these)S 1917(ncheks)S 2118(dependent)S 1 F 835 846(c)U 879(a)S 929(l)S 973(l)S 3 F 1048(dep)S 1 F 1162(\()S 1208(j)S 1244(o)S 1288(b)S 1340(t)S 1378(a)S 1420(g)S 1472(,)S 1516(i)S 1554(c)S 1598(a)S 1640(n)S 1684(g)S 1728(o)S 1780(,)S 1816(n)S 1862(c)S 1904(h)S 1950(e)S 1992(k)S 2040(s)S 2088(,)S 2132(l)S 2176(i)S 2216(s)S 2264(t)S 2306(\))S 835 942(c)U 879(a)S 929(l)S 973(l)S 3 F 1048(putq)S 1 F 1192(\()S 1238(j)S 1274(o)S 1318(b)S 1370(t)S 1408(a)S 1450(g)S 1502(,)S 3 F 1533(subname)S 1 F 1800(,)S 4 F 1834(<)S 1 F 1880(p)S 1926(a)S 1974(r)S 2004(m)S 2060(s)S 4 F 2098(>)S 1 F 2150(\))S 1105 1038(.)U 1105 1134(.)U 1105 1230(.)U 525 1326(1)U 569(0)S 613(0)S 703(c)S 745(o)S 789(n)S 841(t)S 885(i)S 921(n)S 965(u)S 1011(e)S 707 1422(r)U 747(e)S 797(t)S 833(u)S 883(r)S 921(n)S 432 1806(U)U 703 1518(e)U 745(n)S 789(d)S 480 1806(nit)U 571(of)S 648(Computation)S 1013(with)S 1152(Dynamic)S 1415(Spawning)S 1851 1998(\))U 2 F 696 2094(d)U 1 F 705 1998(s)U 745(u)S 789(b)S 839(r)S 877(o)S 921(u)S 973(t)S 1017(i)S 1053(n)S 1099(e)S 1189(s)S 1229(u)S 1273(b)S 1317(n)S 1363(a)S 1397(m)S 1451(e)S 1499(\()S 4 F 1535(<)S 1 F 1581(p)S 1627(a)S 1675(r)S 1705(m)S 1761(s)S 4 F 1799(>)S 2 F 729 2094(eclare)U 915(global)S 1105(variables)S 696 2286(declare)U 915(local)S 1068(variables)S 1 F 703 2382(e)U 745(x)S 797(t)S 835(e)S 883(r)S 921(n)S 967(a)S 1017(l)S 3 F 1092(sublow)S 1 F 1453 2574(s)U 701(d)S 745(o)S 833(2)S 877(0)S 921(0)S 1017(j)S 1095(=)S 1185(1)S 1237(,)S 1273(n)S 1317(k)S 1369(i)S 1405(d)S 841 2670(.)U 841 2766(.)U 841 2862(.)U 835 2958(c)U 879(a)S 929(l)S 973(l)S 3 F 1048(nxtag)S 1 F 1217(\()S 1247(my)S 1351(t)S 1389(a)S 1431(g)S 1483(,)S 1527(j)S 1563(d)S 1607(u)S 1643(m)S 1687(my)S 1789(\))S 2407 3054(\))U 835(c)S 879(a)S 929(l)S 973(l)S 3 F 1048(spawn)S 1 F 1240(\()S 1270(my)S 1374(t)S 1412(a)S 1454(g)S 1506(,)S 1550(j)S 1586(d)S 1630(u)S 1666(m)S 1710(my)S 1814(,)S 3 F 1845(sublow)S 1 F 2057(,)S 4 F 2091(<)S 1 F 2137(p)S 2183(a)S 2231(r)S 2261(m)S 2317(s)S 4 F 2355(>)S 1 F 841 3150(.)U 841 3246(.)U 841 3342(.)U 1011 3438(e)U 525(2)S 569(0)S 613(0)S 703(c)S 745(o)S 789(n)S 841(t)S 885(i)S 921(n)S 965(u)S 707 3534(r)U 747(e)S 797(t)S 833(u)S 883(r)S 921(n)S 432 3918(I)U 703 3630(e)U 745(n)S 789(d)S 454 3918(n)U 517(this)S 642(generic)S 865(example)S 2 F 1117(nunits)S 1 F 1308(units)S 1466(of)S 1551(computation)S 1908(were)S 2065(de\256ned)S 2288(in)S 2368(the)S 2477(the)S 2586(100)S 2714(loop)S 2860(of)S 2944(the)S 2 F 2995 4014(e)U 1 F 432 4110(o)U 432 4014(subroutine)U 2 F 748(paralg)S 1 F (.)R 1001(Here,)S 1184(all)S 1287(of)S 1380(the)S 1498(units)S 1664(of)S 1757(computation)S 2123(involve)S 2357(the)S 2474(subroutine)S 2 F 2789(subnam)S 1 F 465 4110(perating)U 704(on)S 794(different)S 1044(data.)S 1215(There)S 1391(may)S 1527(be)S 1612(several)S 1821(different)S 2070(subroutines)S 2397(associated)S 2690(with)S 2830(various)S 432 4302(t)U 432 4206(units)U 588(of)S 671(computation.)S 1044(The)S 1174(initial)S 1354(call)S 1476(to)S 2 F 1555(sched)S 1 F 1733(acquires)S 2 F 1979(nprocs)S 1 F 2186(physical)S 2432(processors)S 2738(devoted)S 2973(to)S 450 4302(he)U 539(execution)S 821(of)S 903(the)S 1010(computation)S 1365(de\256ned)S 1586(by)S 1679(subroutine)S 2 F 1984(paralg)S 1 F (.)R 2226(There)S 2406(can)S 2524(be)S 2613(several)S 2826(calls)S 2973(to)S 60 Z 3279 4710(-)U 16(--)S 3259(-)S EP %%Page: ? 12 BP 1 F 66 Z 432 462(v)U 1651 270(-)U 1695(12)S 1783(-)S 465 462(ariables)U 692(are)S 795(de\256ned)S 1012(within)S 1203(a)S 1255(subroutine)S 1556(and)S 1674(a)S 1726(local)S 1876(version)S 2093(of)S 2171(these)S 2329(variables)S 2589(is)S 2656(obtained)S 2904(each)S 432 558(time)U 570(a)S 621(unit)S 745(of)S 822(computation)S 1172(based)S 1344(upon)S 1498(this)S 1615(subroutine)S 1915(is)S 1981(executed.)S 582 690(All)U 692(shared)S 890(data)S 1024(should)S 1225(be)S 1312(grouped)S 1553(in)S 1629(named)S 1829(COMMON.)S 2177(This)S 2319(is)S 2388(not)S 2497(a)S 2551(strict)S 2707(requirement)S 3007 786(.)U 432 882(B)U 432 786(but)U 555(it)S 630(is)S 713(a)S 781(good)S 952(programming)S 1348(practice)S 1593(and)S 1726(can)S 1855(increase)S 2108(performance)S 2478(on)S 2582(some)S 2759(machines)S 476 882(efore)U 635(discussing)S 934(how)S 1072(data)S 1205(is)S 1273(partitioned)S 1581(it)S 1641(is)S 1709(usefule)S 1923(to)S 1998(have)S 2146(an)S 2232(idea)S 2365(of)S 2444(what)S 2596(a)S 2649(Schedule)S 2914(pro-)S 432 1266(M)U 432 978(gram)U 589(will)S 713(look)S 852(like.)S 1011(The)S 1135(structure)S 1387(of)S 1464(a)S 1515(Schedule)S 1778(program)S 2023(generally)S 2289(takes)S 2446(the)S 2548(following)S 2826(form:)S 491 1266(ain)U 593(Program)S 703 1458(c)U 745(o)S 781(m)S 825(mo)S 921(n)S 1017(/)S 1053(p)S 1103(r)S 1141(b)S 1185(d)S 1231(e)S 1279(f)S 1325(/)S 4 F 1359(<)S 1 F 1407(a)S 1455(r)S 1499(r)S 1539(a)S 1581(y)S 1669(d)S 1715(e)S 1759(c)S 1809(l)S 1847(a)S 1895(r)S 1935(a)S 1985(t)S 2029(i)S 2065(o)S 2109(n)S 2157(s)S 4 F 2239(>)S 2 F 696 1746(i)U 1 F 703 1554(e)U 745(x)S 797(t)S 835(e)S 883(r)S 921(n)S 967(a)S 1017(l)S 3 F 1092(paralg)S 2 F 714 1746(nitialize)U 947(variables)S 1 F 835 2130(c)U 973 2034(.)U 973 1938(.)U 973 1842(.)U 879 2130(a)U 929(l)S 973(l)S 3 F 1048(sched)S 1 F 1217(\()S 1255(n)S 1299(p)S 1349(r)S 1387(o)S 1433(c)S 1479(s)S 1527(,)S 3 F 1558(paralg)S 1 F 1754(,)S 4 F 1788(<)S 1 F 1834(p)S 1880(a)S 1928(r)S 1958(m)S 2014(s)S 4 F 2052(>)S 1 F 2104(\))S 973 2418(.)U 973 2322(.)U 973 2226(.)U 2 F 1018 2514(t)U 696(output)S 886(resul)S 1 F 705 2706(s)U 753(t)S 789(o)S 833(p)S 432 3090(S)U 703 2802(e)U 745(n)S 789(d)S 469 3090(tatic)U 603(Data)S 749(Dependency)S 1100(Graph)S 705 3282(s)U 745(u)S 789(b)S 839(r)S 877(o)S 921(u)S 973(t)S 1017(i)S 1053(n)S 1099(e)S 1185(p)S 1231(a)S 1279(r)S 1319(a)S 1369(l)S 1405(g)S 1455(\()S 4 F 1491(<)S 1 F 1537(p)S 1583(a)S 1631(r)S 1661(m)S 1717(s)S 4 F 1755(>)S 1 F 1807(\))S 2 F 696 3570(d)U 696 3378(declare)U 915(global)S 1105(variables)S 729 3570(eclare)U 915(local)S 1068(variables)S 3 F 1317 3666(e)U 1 F 701 3858(d)U 703 3666(e)U 745(x)S 797(t)S 835(e)S 883(r)S 921(n)S 967(a)S 1017(l)S 3 F 1092(subnam)S 1 F 745 3858(o)U 833(1)S 877(0)S 921(0)S 1017(j)S 1095(=)S 1185(1)S 1237(,)S 1273(n)S 1317(u)S 1361(n)S 1413(i)S 1457(t)S 1497(s)S 439 4242(c)U 1105 4146(.)U 1105 4050(.)U 1105 3954(.)U 841 4338(j)U 877(o)S 921(b)S 973(t)S 1011(a)S 1053(g)S 1139(=)S 2 F 1224(the)S 1326(identifie)S 1540(r)S 1588(of)S 1661(this)S 1778(unit)S 1902(of)S 1975(computation)S 1 F 60 Z 3269 4710(-)U 26(-)S 66(-)S 3229(-)S EP %%Page: ? 11 BP 1 F 48 Z 741 1431(D)U 778 1440(SCHEDULE)U 66 Z 1651 270(-)U 1695(11)S 1783(-)S 48 Z 776 1431('c325u')U 491 2010(W)U 496 2064(O)U 497 2118(R)U 434 2301(D)U 496 2172(K)U 469 2301('l0u)U 562(-439u')S 434 1860(D'l158u)U 610(0u')S 592(D'l0u)S 720(439u')S 2301(')T 592(D'l-158u)S 784(0u)S 751 2010(W)U 756 2064(O)U 757 2118(R)U 694 2301(D)U 756 2172(K)U 729 2301('l0u)U 822(-439u')S 694 1860(D'l159u)U 870(0u')S 853(D'l0u)S 981(439u')S 2301(')T 853(D'l-159u)S 1045(0u)S 1272 2010(W)U 1277 2064(O)U 1278 2118(R)U 1215 2301(D)U 1277 2172(K)U 1250 2301('l0u)U 1343(-439u')S 1215 1860(D'l158u)U 1391(0u')S 1373(D'l0u)S 1501(439u')S 2301(')T 475 1179(Tail)U 1244(Head)S 1373 2301(D'l-158u)U 1565(0u)S 803 1179(READYQ)U 639 1089(D)U 639 1251(D'l0u)U 767(-163u')S 674 1089('l529u)U 815(0u')S 1168(D'l0u)S 1296(163u')S 1251(')T 534 609(D)U 534 951(D'l0u)U 662(-341u')S 817 789(PARMQ)U 1168 1251(D'l-529u)U 1360(0u)S 569 609('l739u)U 710(0u')S 1273(D'l0u)S 1401(341u')S 951(')T 1273(D'l-739u)S 1465(0u)S 1555 1698(10)U 1619(myjob)S 1757(=)S 1800(getprb\(jobtag\))S 1577 2067(g)U 1647 1965(call)U 1731(checkin\(jobta)S 1990(g\))S 1601 2067(o)U 1641(to)S 1694(10)S 1610 1830(c)U (all)R 1694(subname\()S 4 F (<)R 1 F (parms)R 4 F (>)R 1 F (\))R 1030 1527(D')U 5 F (\304)R 1 F 1121(134u)S 1233(32u)S 1321(101u)S 1433(301u')S 1233 1812(D'l32u)U 1385(50u')S 1460 1803(')U 1260(D'l5u)S 1388(59u)S 1273 1557(')U 759 1803(D)U 806 1557(D')U 5 F (\304)R 1 F 897(-32u)S 1001(134u)S 1113(0u)S 1177(171u)S 794 1803('l14u)U 911(57u')S 1028(')S 765 1512(D)U 788 1803(D'l-15u)U 956(57u)S 800 1512(')U 5 F (\304)R 1 F 856(-251u)S 984(48u)S 1072(0u)S 1136(301u')S 499 1803(D'l14u)U 651(57u')S 528(D'l-15u)S 696(57u')S 651 1251(D)U (')R 5 F (\304)R 1 F 742(-137u)S 870(49u)S 958(240u)S 1070(81u')S 694 1377(D'l59u)U 846(5u')S 703 1350(D'l50u)U 855(32u')S 1350 1860(D'l7u)U 1478(-28u')S 1579 1806(')U 1363(D'l7u)S 1491(-28u)S 1377 1752(D'l7u)U 1505(-28u')S 1606 1698(')U 1390(D'l7u)S 1518(-28u)S 1403 1644(D'l7u)U 1531(-28u')S 1633 1587(')U 1417(D'l6u)S 1545(-28u)S 1423 1560(D'l29u)U 1575(0u')S 1684(')S 1484(D'l28u)S 1636(0u)S 1544(D'l29u)S 1696(0u')S 1804(')S 1604(D'l29u)S 1756(0u)S 1664(D'l29u)S 1816(0u')S 1925(')S 1725(D'l28u)S 1877(0u)S 1785(D'l29u)S 1937(0u')S 1371 2163(D'l21u)U 1523(20u')S 1402 2190(D'l21u)U 1554(20u')S 1423 2211(D'l29u)U 1575(0u')S 1484(D'l28u)S 1636(0u')S 1744(')S 1544(D'l29u)S 1696(0u)S 1604(D'l29u)S 1756(0u')S 1864(')S 1664(D'l29u)S 1816(0u)S 1725(D'l28u)S 1877(0u')S 1985(')S 1058 1398(D')U 5 F (\304)R 1 F 1149(362u)S 1261(-72u)S 1365(-251u)S 1493(-72u')S 1785 2211(D'l29u)U 1937(0u)S 1227 1254(D'l-59u)U 1395(-2u')S 1281(')T 1219(D'l-51u)S 1387(-30u)S 2 F 66 Z 1555 2613(Figure)U 1756(5.2.)S 2072 2709(m)U 3 F 432 2985(6.)U 526(How)S 680(to)S 757(Use)S 882(Schedule)S 2 F 1335 2709(The)U 1456(SCHEDULE)S 1816(Mechanis)S 1 F 582 3117(As)U 682(explained)S 963(in)S 1040(the)S 1146(previous)S 1399(sections)S 1637(the)S 1743(basic)S 1904(idea)S 2039(in)S 2116(writing)S 2332(a)S 2387(Schedule)S 2654(program)S 2903(is)S 2973(to)S 3007 3213(.)U 432 3309(I)U 432 3213(partition)U 683(a)S 741(computation)S 1098(into)S 1229(units)S 1386(of)S 1470(computation)S 1827(and)S 1950(data)S 2087(dependencies)S 2469(between)S 2716(these)S 2879(units)S 454 3309(n)U 511(this)S 630(section)S 839(we)S 939(assume)S 1156(familiari)S 1381(ty)S 1455(with)S 1595(these)S 1753(concepts.)S 2045(We)S 2159(also)S 2288(assume)S 2505(familiari)S 2730(ty)S 2804(with)S 2944(the)S 3002 3405(f)U 432 3501(c)U 432 3405(notion)U 632(of)S 719(a)S 780(data)S 920(dependence)S 1261(graph)S 1442(and)S 1568(the)S 1679(association)S 2002(of)S 2088(nodes)S 2273(in)S 2355(this)S 2481(graph)S 2662(with)S 2810(units)S 2969(o)S 461 3501(omputation.)U 827(Data)S 979(dependencies)S 1361(are)S 1468(really)S 1644(assertions)S 1931(made)S 2100(by)S 2193(the)S 2300(user)S 2437(and)S 2559(the)S 2666(responsibility)S 2991 3597(o)U 432 3693(r)U 432 3597(for)U 536(the)S 643(correctness)S 966(of)S 1048(these)S 1210(assertions)S 1497(rests)S 1645(with)S 1789(the)S 1896(user.)S 2072(Schedule)S 2340(provides)S 2593(a)S 2648(mechanism)S 2973(t)S 454 3693(ecord)U 626(the)S 732(units)S 886(of)S 967(computation,)S 1337(express)S 1560(the)S 1665(dependencies)S 2044(between)S 2288(them,)S 2461(and)S 2581(then)S 2719(execute)S 2944(the)S 432 3885(u)U 432 3789(computation)U 793(described)S 1078(by)S 1177(the)S 1290(Schedule)S 1564(program.)S 1859(It)S 1931(is)S 2007(very)S 2156(important)S 2443(to)S 2526(clearly)S 2736(de\256ne)S 2929(and)S 465 3885(nderstand)U 743(the)S 845(shared)S 1039(data)S 1170(of)S 1247(a)S 1298(problem)S 1539(and)S 1656(how)S 1792(it)S 1850(is)S 1916(to)S 1989(be)S 2073(partitioned)S 2379(for)S 2478(parallel)S 2696(processing.)S 3 F 432 4077(Partitioning)U 794(a)S 849(Problem)S 1 F 582 4209(The)U 712(\256rst)S 843(thing)S 1006(that)S 1132(must)S 1288(be)S 1378(understood)S 1699(is)S 1771(the)S 1879(distinction)S 2184(between)S 2431(local)S 2586(and)S 2709(global)S 2900(vari-)S 3006 4305(l)U 60 Z 16 4710(-)U 66 Z 432 4305(ables.)U 640(Global)S 853(variables)S 1124(are)S 1238(shared)S 1444(amongst)S 1701(all)S 1800(the)S 1914(processes)S 2201(which)S 2395(reference)S 2672(them.)S 2875(Loca)S 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 10 BP 1 F 66 Z 432 462(I)U 1651 270(-)U 1695(10)S 1783(-)S 454 462(n)U 512(Figure)S 709(5.1)S 817(a)S 871(typical)S 1074(node)S 1227(of)S 1307(a)S 1361(data)S 1494(dependency)S 1832(graph)S 2006(is)S 2074(shown.)S 2310(This)S 2451(node)S 2603(has)S 2715(two)S 2838(incom-)S 3007 558(,)U 2 F 432 654(n)U 1 F 432 558(ing)U 542(arcs)S 673(and)S 793(three)S 949(outgoing)S 1208(arcs.)S 1378(As)S 1477(shown)S 1675(to)S 1751(the)S 1856(left)S 1968(of)S 2048(the)S 2153(node)S 2306(one)S 2426(would)S 2616(set)S 2 F 2714(icango)S 4 F 2915(=)S 1 F 2974(2)S 2 F 465 654(cheks)U 4 F 633(=)S 1 F 692(3,)S 770(and)S 893(the)S 1001(\256rst)S 1132(three)S 1291(entries)S 1494(of)S 2 F 1577(mychkn)S 1 F 1805(to)S 1883(the)S 1990(identi\256ers)S 2280(of)S 2362(the)S 2469(processes)S 2749(pointed)S 2973(to)S 432 750(by)U 520(the)S 622(outgoing)S 878(arcs.)S 582 882(The)U 720(initial)S 908(call)S 1037(to)S 2 F 1123(sched)S 1 F (\(nprocs,subname,)R 4 F (<)R 1 F (parms)R 4 F (>)R 1 F (\))R 2031(results)S 2238(in)S 2 F 2324(nprocs)S 1 F 2539(virtual)S 2745(processors)S 2 F 2998 978(s)U 1 F 432 1074(s)U 432 978(called)U 3 F 626(work)S 1 F 810(to)S 898(begin)S 1081(executing)S 1373(on)S 2 F 1476(nprocs)S 1 F 1693(separate)S 1945(physical)S 2201(processors.)S 2556(Typically)S 2 F 2844(nproc)S 1 F 458 1074(hould)U 635(be)S 724(set)S 824(to)S 902(a)S 958(value)S 1127(that)S 1251(is)S 1321(less)S 1446(than)S 1585(or)S 1666(equal)S 1834(to)S 1911(the)S 2017(number)S 2244(of)S 2325(physical)S 2570(processors)S 2875(avail-)S 3002 1170(-)U 432 1266(a)U 432 1170(able)U 568(on)S 661(the)S 768(given)S 941(system.)S 1190(These)S 3 F 1374(work)S 1 F 1548(routines)S 1787(access)S 1982(a)S 2038(ready)S 2211(queue)S 2395(of)S 2 F 2477(jobtag)S 1 F (s)R 2698(for)S 2801(schedul)S 461 1266(ble)U 570(processes.)S 891(Recall)S 1087(that)S 1214(a)S 1272(schedulable)S 1611(process)S 1837(is)S 1909(one)S 2032(whose)S 2229(data)S 2366(dependencies)S 2748(have)S 2900(been)S 2995 1362(e)U 432 1458(p)U 432 1362(satis\256ed.)U 717(After)S 886(a)S 3 F 945(work)S 1 F 1122(routine)S 1338(has)S 1456(been)S 1609(successful)S 1909(in)S 1989(obtaining)S 2266(the)S 2 F 2375(jobtag)S 1 F 2572(of)S 2656(a)S 2714(schedulabl)S 465 1458(rocess,)U 670(it)S 729(makes)S 920(the)S 1023(subroutine)S 1324(call)S 1441(associated)S 1734(with)S 1874(that)S 2 F 1995(jobtag)S 1 F 2186(during)S 2381(the)S 2484(call)S 2600(to)S 3 F 2673(putq)S 1 F (.)R 2867(When)S 3 F 3002 1554(-)U 432 1650(k)U 1 F 432 1554(this)U 552(subroutine)S 855(executes)S 1106(a)S 2 F 1160(return)S 1 F (,)R 1367(control)S 1578(is)S 1647(returned)S 1891(to)S 3 F 1967(work)S 1 F (,)R 2156(and)S 2275(a)S 2328(SCHEDULE)S 2697(routine)S 3 F 2907(che)S 469 1650(in)U 1 F 548(is)S 616(called)S 796(which)S 981(decrements)S 1304(the)S 2 F 1408(icango)S 1 F 1611(counter)S 1832(of)S 1911(each)S 2054(of)S 2132(the)S 2 F 2235(ncheks)S 1 F 2437(processes)S 2713(that)S 2834(depend)S 3002 1746(r)U 432 1842(o)U 432 1746(on)U 525(process)S 2 F 750(jobtag)S 1 F (.)R 984(If)S 1055(any)S 1177(of)S 1259(these)S 2 F 1421(icango)S 1 F 1627(values)S 1822(has)S 1937(been)S 2087(decremente)S 2389(d)S 2448(to)S 2525(zero,)S 2681(the)S 2787(identi\256e)S 465 1842(f)U 509(that)S 629(process)S 849(is)S 915(placed)S 1108(on)S 1196(the)S 1298(ready)S 1466(queue)S 1645(immediat)S 1892(ely.)S 2998 1974(s)U 432 2070(d)U 582 1974(We)U 707(depict)S 901(this)S 1030(mechanism)S 1362(in)S 1446(Figure)S 1651(5.2)S 1767(.)S 1839(The)S 1974(array)S 2142(labeled)S 3 F 2364(parmq)S 1 F 2588(holds)S 2764(a)S 2826(proces)S 465 2070(escriptor)U 718(for)S 818(each)S 2 F 961(jobtag)S 1 F (.)R 1191(A)S 1262(process)S 1483(descriptor)S 1769(consists)S 2001(of)S 2079(data)S 2210(dependency)S 2546(information)S 2878(and)S 2995(a)S 2998 2166(s)U 432 2262(p)U 432 2166(subroutine)U 746(name)S 924(together)S 1175(with)S 1328(a)S 1393(calling)S 1607(sequence)S 1884(for)S 1997(that)S 2131(subroutine.)S 2483(This)S 2635(information)S 2980(i)S 465 2262(laced)U 625(on)S 3 F 713(parmq)S 1 F 926(through)S 1153(the)S 1255(two)S 1376(calls)S 54 Z 1953 2418(\))U 648 2478(C)U 648 2418(CA)U 721(L)S 757(L)S 827(DE)S 903(P)S 945(\()S 982(j)S 1012(o)S 1048(b)S 1090(t)S 1122(a)S 1156(g)S 1199(,)S 1234(i)S 1266(c)S 1302(a)S 1336(n)S 1372(g)S 1408(o)S 1451(,)S 1480(n)S 1518(c)S 1552(h)S 1590(e)S 1624(k)S 1663(s)S 1703(,)S 1725(my)S 1806(c)S 1840(h)S 1876(k)S 1912(n)S 683 2478(AL)U 757(L)S 831(P)S 863(UTQ)S 981(\()S 1018(j)S 1048(o)S 1084(b)S 1126(t)S 1158(a)S 1192(g)S 1235(,)S 1267(s)S 1300(u)S 1336(b)S 1372(n)S 1410(a)S 1437(m)S 1482(e)S 1523(,)S 4 F 1551(<)S 1 F 1588(p)S 1626(a)S 1665(r)S 1689(m)S 1735(s)S 4 F 1767(>)S 1 F 1809(\))S 1847(.)S 2 F 66 Z 2555 2622(e)U 2349(subnam)S 1 F 72 Z 3000(-)S 432 2706(m)U 432 2622(When)U 629(making)S 870(these)S 1043(two)S 1176(calls)S 1333(the)S 1446(user)S 1591(has)S 1712(assured)S 1953(that)S 2085(a)S 2141(call)S 2269(to)S 2608(with)S 2760(the)S 2872(argu)S 488 2706(ent)U 601(list)S 1001(is)S 1073(valid)S 1241(in)S 1321(a)S 1377(data)S 1521(dependency)S 1889(sense)S 2069(whenever)S 2373(the)S 2485(counter)S 2928(has)S 432 2790(b)U 4 F 66 Z 713 2706(<)U 2 F (parms)R 4 F (>)R 2 F 2725(icango)S 1 F 72 Z 468 2790(een)U 596(decremented)S 992(to)S 1076(the)S 1192(value)S 1376(zero.)S 1569(When)S 1768(a)S 3 F 1827(work)S 1 F 2014(routine)S 2245(has)S 2368(\256nished)S 2623(a)S 2682(call)S 2813(to)S 3 F 2896(che-)S 432 2874(kin)U 1 F 565(,)S 616(it)S 689(gets)S 838(the)S 1160(of)S 1253(the)S 1374(next)S 1531(available)S 1824(schedulable)S 2197(process)S 2445(off)S 2561(the)S 2920(and)S 2 F 66 Z 959(jobtag)S 2681(readyq)S 2995 2958(e)U 1 F 72 Z 432 3042(w)U 432 2958(then)U 589(assumes)S 862(the)S 983(identity)S 1236(of)S 1329(the)S 1450(appropriate)S 1811(subroutine)S 2148(by)S 2253(making)S 2501(a)S 2565(call)S 2701(to)S 2 F 66 Z 2789(subnam)S 1 F 72 Z 484 3042(ith)U 584(the)S 696(argument)S 992(list)S 1344(.)S 60 Z 16 4710(-)U 4 F 66 Z 1104 3042(<)U 2 F (parms)R 4 F (>)R 1 F 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 9 BP 1 F 54 Z 438 486(c)U 750 426(M)U 791(Y)S 828(CH)S 899(K)S 935(N)S 981(\()S 1012(1)S 1053(\))S 1119(=)S 1192(k)S 1227(+)S 1264(1)S 66 Z 1629 234(-)U 1711(9)S 1805(-)S 54 Z 756 546(CA)U 829(L)S 865(L)S 971(DE)S 1047(P)S 1089(\()S 1126(j)S 1156(o)S 1192(g)S 1234(t)S 1266(a)S 1300(g)S 1343(,)S 1378(i)S 1410(c)S 1446(a)S 1480(n)S 1516(g)S 1552(o)S 1595(,)S 1624(n)S 1662(c)S 1696(h)S 1734(e)S 1768(k)S 1807(s)S 1847(,)S 1869(my)S 1950(c)S 1984(h)S 2020(k)S 2056(n)S 2097(\))S 2565 606(\))U 756(CA)S 829(L)S 865(L)S 975(P)S 1007(UTQ)S 1125(\()S 1162(j)S 1192(o)S 1228(b)S 1270(t)S 1302(a)S 1336(g)S 1379(,)S 1413(I)S 1439(NP)S 1512(RO)S 1583(D)S 1631(,)S 1653(m)S 1703(,)S 1734(a)S 1773(\()S 1810(i)S 1840(n)S 1876(d)S 1912(x)S 1953(\))S 1991(,)S 2020(b)S 2061(\()S 2098(i)S 2128(n)S 2164(d)S 2200(x)S 2241(\))S 2279(,)S 2314(t)S 2346(e)S 2373(mp)S 2457(\()S 2494(j)S 2529(\))S 2 F 66 Z 1379 750(j)U 4 F (-)R 2 F (th)R 1 F 72 Z 432(T)S (his)R 591(code)S 758(fragment)S 1049(shows)S 1260(the)S 1516(instance)S 1783(of)S 1874(the)S 1993(process)S 3 F 2240(inprod)S 1 F 2479(being)S 2670(placed)S 2889(on)S 2992(a)S 2992 834(a)U 432 918(d)U 432 834(queue.)U 688(The)S 842(information)S 1224(needed)S 1470(to)S 1568(schedule)S 1862(this)S 2008(process)S 2266(is)S 2356(contained)S 2678(in)S 2775(the)S 2904(dat)S 468 918(ependency)U 806(graph.)S 1042(In)S 1132(this)S 1266(case,)S 1438(the)S 1692(instance)S 1958(of)S 2048(a)S 2110(call)S 2244(to)S 3 F 2330(inprod)S 1 F 2568(is)S 2646(being)S 2836(placed)S 2 F 66 Z 962 1002(j)U 1556 918(j)U 4 F (-)R 2 F (th)R 980 1002(obtag)U 1430(j)S 2375(icango)S 1 F 72 Z 3004(t)S 432 1086(t)U 432 1002(on)U 533(the)S 650(queue,)S 869(so)S 1159(is)S 1236(set)S 1345(to)S 1448(.)S 1519(The)S 1660(value)S 1845(zero)S 1998(is)S 2075(placed)S 2291(in)S 2554(,)S 2600(indicating)S 2916(tha)S 452 1086(his)U 561(process)S 802(does)S 959(not)S 1076(depend)S 1309(on)S 1406(any)S 1535(others.)S 1778(If)S 1851(this)S 1980(process)S 2221(were)S 2385(dependent)S 2705(on)S 2834(,)S 2876(other)S 432 1170(p)U 2 F 66 Z 880(icango)S 1563(p)S 2801 1086(p)U 1 F 72 Z 468 1170(rocesses)U 732(then)S 1083(would)S 1287(be)S 1379(set)S 1483(to)S 1596(.)S 66 Z 582 1302(T)U (he)R 709(mechanism)S 1033(just)S 1153(described)S 1430(allows)S 1627(static)S 1790(scheduling)S 2100(of)S 2180(parallel)S 2400(processes.)S 2716(In)S 2795(this)S 2914(pro-)S 432 1494(p)U 432 1398(gram)U 605(the)S 723(partitioning)S 1067(and)S 1200(data)S 1347(dependencies)S 1739(are)S 1856(known)S 2073(in)S 2161(advance)S 2413(even)S 2574(though)S 2794(they)S 2944(are)S 465 1494(arameteri)U 712(zed.)S 889(It)S 976(is)S 1067(possible)S 1330(to)S 1428(dynamicall)S 1719(y)S 1799(allocate)S 2049(processes;)S 2367(this)S 2509(capabilit)S 2734(y)S 2814(will)S 2962(be)S 3002 1590(-)U 432 1686(a)U 432 1590(explained)U 713(later.)S 894(It)S 960(might)S 1139(be)S 1227(worthwhile)S 1553(at)S 1626(this)S 1747(point)S 1908(to)S 1985(discuss)S 2202(the)S 2308(mechanism)S 2633(that)S 2757(this)S 2878(pack)S 461 1686(ge)U 545(relies)S 709(on.)S 3 F 432 1878(5)U (.)R 526(The)S 658(SCHEDULE)S 1044(Mechanism)S 1 F 582 2106(T)U (he)R 712(call)S 834(to)S 913(the)S 1021(SCHEDULE)S 1394(routines)S 3 F 1634(dep)S 1 F 1765(and)S 3 F 1888(putq)S 1 F (,)R 2066(respectively,)S 2428(places)S 2620(process)S 2845(depen-)S 3002 2202(-)U 432 2298(a)U 432 2202(dencies)U 653(and)S 772(process)S 994(descriptors)S 1307(on)S 1397(a)S 1450(queue.)S 1670(A)S 1742(unique)S 1944(user)S 2077(supplied)S 2323(identi\256er)S 2 F 2583(jobtag)S 1 F 2774(is)S 2841(associ)S 461 2298(ted)U 564(with)S 704(each)S 847(node)S 997(of)S 1074(the)S 1176(dependency)S 1512(graph.)S 1723(This)S 1862(identi\256er)S 2121(is)S 2187(a)S 2238(positive)S 2468(integer.)S 2711(Internally)S 2988(it)S 432 2490(n)U 432 2394(represents)U 731(a)S 792(pointer)S 1010(to)S 1093(a)S 1153(process.)S 1421(The)S 1554(items)S 1727(needed)S 1944(to)S 2026(specify)S 2247(a)S 2307(data)S 2447(dependency)S 2792(are)S 2903(non-)S 465 2490(egative)U 686(integers)S 2 F 926(icango)S 1 F 1137(and)S 2 F 1264(ncheks)S 1 F 1474(and)S 1600(an)S 1693(integer)S 1906(array)S 2 F 2072(mychkn)S 1 F (.)R 2343(The)S 2 F 2476(icango)S 1 F 2686(speci\256es)S 2944(the)S 3002 2586(f)U 432 2682(p)U 432 2586(number)U 668(of)S 758(processes)S 1046(that)S 1179(process)S 2 F 1412(jobtag)S 1 F 1615(depends)S 1866(on.)S 2006(The)S 2 F 2143(ncheks)S 1 F 2357(speci\256es)S 2619(the)S 2734(number)S 2969(o)S 465 2682(rocesses)U 714(that)S 841(depend)S 1060(on)S 1155(process)S 2 F 1382(jobtag)S 1 F (.)R 1618(The)S 2 F 1749(mychkn)S 1 F 1979(is)S 2052(an)S 2143(integer)S 2354(array)S 2517(whose)S 2714(\256rst)S 2 F 2845(ncheks)S 1 F 432 2778(entries)U 629(contain)S 844(the)S 946(identi\256ers)S 1231(\(i.e.,)S 2 F 1373(jobtag)S 1 F (s\))R 1611(of)S 1688(the)S 1790(processes)S 2065(that)S 2185(depend)S 2397(on)S 2485(process)S 2 F 2705(jobtag)S 1 F (.)R 48 Z 1639 3042(D'c195u')U 1807 3303(')U 1639 3564(D)U 1639 3303(D'c195u)U 1674 3564('c195u')U 588 3051(n)U 591 2922(icango)U 734(=)S 777(2)S 1054 3303(D'c325u')U 612 3051(cheks)U 737(=)S 780(3)S 1286 3162(D')U 5 F (\304)R 1 F 1377(60u)S 1465(-116u)S 1593(297u)S 1705(0u')S 1826 3057(')U 1586 3030(D)U 1586 3057(D'l57u)U 1738(-15u)S 1621 3030('l57u)U 1738(14u')S 1850 3303(')U 1375(D')S 5 F (\304)R 1 F 1466(101u)S 1578(0u)S 1642(195u)S 1754(191u)S 1620 3465(D'l52u)U 1772(30u')S 1865 3444(')U 1641(D'l31u)S 1793(50u)S 1850 3234(')U 1359(D')S 5 F (\304)R 1 F 1450(117u)S 1562(-60u)S 1666(175u)S 1778(90u)S 1594 3249(D'l57u)U 1746(14u')S 1831 3225(')U 1108 3492(D)U 1116 3453(D'l11u)U 1268(-17u')S 1607 3225(D'l44u)U 1759(39u)S 1143 3492('l19u)U 1260(-56u')S 957 3693(D)U 1084 3477(D'l43u)U 1236(-41u')S 992 3693('l159u)U 1133(-239u')S 1271 3474(D'l-6u)U 1415(-19u')S 1553 3504(')U 1270 3513(D)U 1297 3504(D'l-32u)U 1465(-50u)S 1305 3513('l-5u)U 1414(-59u')S 1626 3693(')U 1346(D'l-75u)S 1514(-220u)S 2 F 66 Z 1555 4095(Figure)U 1756(5.1.)S 2130 4191(h)U 1 F 60 Z 16 4710(-)U 2 F 66 Z 1292 4191(A)U 1354(Node)S 1515(in)S 1588(a)S 1643(Dependency)S 1990(Grap)S 1 F 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 8 BP 1 F 54 Z 652 486(d)U 658 426(i)U 688(n)S 724(d)S 760(x)S 831(=)S 904(1)S 66 Z 1629 234(-)U 1711(8)S 1805(-)S 54 Z 688 486(o)U 760(2)S 796(0)S 832(0)S 910(j)S 975(=)S 1048(1)S 1091(,)S 1120(k)S 1161(-)S 1192(1)S 438 606(c)U 438 546(c)U 762 606(e)U 796(x)S 832(p)S 873(r)S 906(e)S 943(s)S 979(s)S 1048(d)S 1086(a)S 1126(t)S 1158(a)S 1228(d)S 1266(e)S 1300(p)S 1338(e)S 1372(n)S 1408(d)S 1446(e)S 1480(n)S 1518(c)S 1558(i)S 1590(e)S 1627(s)S 438 666(c)U 763 726(J)U 791(O)S 828(BT)S 899(A)S 935(G)S 1011(=)S 1090(j)S 755 846(N)U 765 786(I)U 792(CA)S 863(N)S 899(G)S 935(O)S 1011(=)S 1084(0)S 792 846(CH)U 865(EK)S 939(S)S 1011(=)S 1084(1)S 1264 906(1)U 438 966(c)U 750 906(M)U 791(Y)S 828(CH)S 899(K)S 935(N)S 981(\()S 1012(1)S 1053(\))S 1119(=)S 1192(k)S 1227(+)S 756 1026(CA)U 829(L)S 865(L)S 971(DE)S 1047(P)S 1089(\()S 1126(j)S 1156(o)S 1192(b)S 1234(t)S 1266(a)S 1300(g)S 1343(,)S 1378(i)S 1410(c)S 1446(a)S 1480(n)S 1516(g)S 1552(o)S 1595(,)S 1624(n)S 1662(c)S 1696(h)S 1734(e)S 1768(k)S 1807(s)S 1847(,)S 1869(my)S 1950(c)S 1984(h)S 2020(k)S 2056(n)S 2097(\))S 2601 1086(\))U 438 1146(c)U 756 1086(CA)U 829(L)S 865(L)S 975(P)S 1007(UTQ)S 1125(\()S 1162(j)S 1192(o)S 1228(b)S 1270(t)S 1302(a)S 1336(g)S 1379(,)S 1413(I)S 1439(NP)S 1512(RO)S 1583(D)S 1631(,)S 1653(m1)S 1739(,)S 1770(a)S 1809(\()S 1846(i)S 1876(n)S 1912(d)S 1948(x)S 1989(\))S 2027(,)S 2056(b)S 2097(\()S 2134(i)S 2164(n)S 2200(d)S 2236(x)S 2277(\))S 2315(,)S 2350(t)S 2382(e)S 2409(mp)S 2493(\()S 2530(j)S 2565(\))S 766 1206(i)U 796(n)S 832(d)S 868(x)S 939(=)S 1018(i)S 1048(n)S 1084(d)S 1120(x)S 1191(+)S 1257(m1)S 508 1266(2)U 544(0)S 580(0)S 654(c)S 688(o)S 724(n)S 766(t)S 802(i)S 832(n)S 868(u)S 906(e)S 645 1326(m2)U 759(=)S 832(n)S 909(-)S 982(i)S 1012(n)S 1048(d)S 1084(x)S 1155(+)S 1228(1)S 438 1446(c)U 438 1386(c)U 654 1446(e)U 688(x)S 724(p)S 765(r)S 798(e)S 835(s)S 871(s)S 940(d)S 978(a)S 1018(t)S 1050(a)S 1120(d)S 1158(e)S 1192(p)S 1230(e)S 1264(n)S 1300(d)S 1338(e)S 1372(n)S 1410(c)S 1450(i)S 1482(e)S 1519(s)S 1593(f)S 1624(o)S 1665(r)S 1734(c)S 1774(l)S 1806(e)S 1842(a)S 1876(n)S 1948(u)S 1984(p)S 2059(s)S 2098(t)S 2130(e)S 2164(p)S 438 1506(c)U 763 1566(J)U 791(O)S 828(BT)S 899(A)S 935(G)S 1011(=)S 1084(k)S 1084 1626(0)U 755 1686(N)U 765 1626(I)U 792(CA)S 863(N)S 899(G)S 935(O)S 1011(=)S 792 1686(CH)U 865(EK)S 939(S)S 1011(=)S 1084(1)S 1264 1746(1)U 438 1806(c)U 750 1746(M)U 791(Y)S 828(CH)S 899(K)S 935(N)S 981(\()S 1012(1)S 1053(\))S 1119(=)S 1192(k)S 1227(+)S 756 1866(CA)U 829(L)S 865(L)S 971(DE)S 1047(P)S 1089(\()S 1126(j)S 1156(o)S 1192(b)S 1234(t)S 1266(a)S 1300(g)S 1343(,)S 1378(i)S 1410(c)S 1446(a)S 1480(n)S 1516(g)S 1552(o)S 1595(,)S 1624(n)S 1662(c)S 1696(h)S 1734(e)S 1768(k)S 1807(s)S 1847(,)S 1869(my)S 1950(c)S 1984(h)S 2020(k)S 2056(n)S 2097(\))S 2601 1926(\))U 438 1986(c)U 756 1926(CA)U 829(L)S 865(L)S 975(P)S 1007(UTQ)S 1125(\()S 1162(j)S 1192(o)S 1228(b)S 1270(t)S 1302(a)S 1336(g)S 1379(,)S 1413(I)S 1439(NP)S 1512(RO)S 1583(D)S 1631(,)S 1653(m2)S 1739(,)S 1770(a)S 1809(\()S 1846(i)S 1876(n)S 1912(d)S 1948(x)S 1989(\))S 2027(,)S 2056(b)S 2097(\()S 2134(i)S 2164(n)S 2200(d)S 2236(x)S 2277(\))S 2315(,)S 2350(t)S 2382(e)S 2409(mp)S 2493(\()S 2524(k)S 2565(\))S 766 2046(i)U 796(n)S 832(d)S 868(x)S 939(=)S 1018(i)S 1048(n)S 1084(d)S 1120(x)S 1191(+)S 1257(m1)S 438 2106(c)U 763 2166(J)U 791(O)S 828(BT)S 899(A)S 935(G)S 1011(=)S 1084(k)S 1119(+)S 1156(1)S 755 2286(N)U 765 2226(I)U 792(CA)S 863(N)S 899(G)S 935(O)S 1011(=)S 1084(k)S 792 2286(CH)U 865(EK)S 939(S)S 1011(=)S 1084(0)S 438 2346(c)U 648 2406(CA)U 721(L)S 757(L)S 863(DE)S 939(P)S 981(\()S 1018(j)S 1048(o)S 1084(b)S 1126(t)S 1158(a)S 1192(g)S 1235(,)S 1270(i)S 1302(c)S 1338(a)S 1372(n)S 1408(g)S 1444(o)S 1487(,)S 1516(n)S 1554(c)S 1588(h)S 1626(e)S 1660(k)S 1699(s)S 1739(,)S 1761(my)S 1842(c)S 1876(h)S 1912(k)S 1948(n)S 1989(\))S 438 2526(c)U 648 2466(CA)U 721(L)S 757(L)S 867(P)S 899(UTQ)S 1017(\()S 1054(j)S 1084(o)S 1120(b)S 1162(t)S 1194(a)S 1228(g)S 1271(,)S 1295(A)S 1331(D)S 1367(D)S 1403(UP)S 1487(,)S 1516(k)S 1559(,)S 1591(s)S 1630(i)S 1660(g)S 1689(m)S 1734(a)S 1775(,)S 1810(t)S 1842(e)S 1869(mp)S 1953(\))S 657 2586(r)U 690(e)S 730(t)S 760(u)S 801(r)S 832(n)S 66 Z 582 2862(T)U 54 Z 654 2646(e)U 688(n)S 724(d)S 66 Z 622 2862(he)U 710(code)S 859(that)S 982(will)S 1109(execute)S 1334(in)S 1410(parallel)S 1631(has)S 1744(been)S 1893(derived)S 2115(from)S 2268(the)S 2373(serial)S 2540(code)S 2689(by)S 2780(replacing)S 3007 2958(.)U 432 3054(T)U 432 2958(calls)U 580(to)S 3 F 659(parprd)S 1 F (,)R 3 F 906(inprd)S 1 F (,)R 3 F 1109(addup)S 1 F 1318(with)S 1463(calls)S 1611(to)S 1690(SCHEDULE)S 2063(routines)S 2302(that)S 2427(invoke)S 2633(these)S 2795(routines)S 472 3054(he)U 560(modi\256cations)S 944(are)S 1050(signi\256ed)S 1303(by)S 1395(putting)S 1607(calls)S 1753(to)S 1830(SCHEDULE)S 2201(routines)S 2438(in)S 2514(capital)S 2713(letters.)S 2937(Let)S 432 3150(us)U 513(now)S 649(describe)S 890(the)S 992(purpose)S 1223(of)S 1300(each)S 1442(of)S 1519(these)S 1676(calls.)S 54 Z 648 3270(CA)U 721(L)S 757(L)S 831(S)S 864(CH)S 937(ED)S 1017(\()S 1048(n)S 1084(p)S 1125(r)S 1156(o)S 1194(c)S 1231(s)S 1271(,)S 1299(P)S 1331(A)S 1368(R)S 1407(P)S 1440(RD)S 1523(,)S 1552(n)S 1595(,)S 1624(k)S 1667(,)S 1698(a)S 1739(,)S 1768(b)S 1811(,)S 1846(t)S 1878(e)S 1905(mp)S 1991(,)S 2023(s)S 2062(i)S 2092(g)S 2121(m)S 2166(a)S 2205(\))S 2 F 66 Z 2868 3438(s)U 2714(nproc)S 1 F 72 Z 3000(-)S 432 3522(t)U 432 3438(This)U 587(replaces)S 850(the)S 965(call)S 1096(to)S 3 F 1179(parprd)S 1 F 1426(in)S 1509(the)S 1624(serial)S 1807(code.)S 2012(The)S 2150(effect)S 2340(is)S 2414(to)S 2496(devote)S 2920(vir)S 452 3522(ual)U 577(processors)S 918(to)S 1010(the)S 1134(parallel)S 1386(subroutine)S 3 F 1726(parprd)S 1 F (.)R 2024(The)S 2172(parameter)S 2496(list)S 2620(following)S 2936(the)S 3004 3606(l)U 432 3690(t)U 432 3606(subroutine)U 764(name)S 948(consist)S 1176(of)S 1264(the)S 1380(calling)S 1604(sequence)S 1896(one)S 2028(would)S 2236(use)S 2360(to)S 2444(make)S 2628(a)S 2688(normal)S 2920(cal)S 452 3690(o)U 3 F 520(parprd)S 1 F (.)R 814(Each)S 990(of)S 1082(these)S 1262(parameters)S 1610(must)S 1782(be)S 1882(called)S 2086(by)S 2190(reference)S 2489(and)S 2624(not)S 2747(by)S 2850(value.)S 432 3858(t)U 432 3774(No)U 550(constants)S 848(or)S 938(arithmetic)S 1260(expressions)S 1626(should)S 1848(be)S 1946(passed)S 2168(as)S 2258(parameters)S 2604(through)S 2858(a)S 2920(call)S 452 3858(o)U 3 F 519(sched)S 1 F (.)R 764(This)S 923(call)S 1058(to)S 3 F 1145(sched)S 1 F 1348(will)S 1491(activate)S 1956(copies)S 2170(of)S 2260(a)S 2322(virtual)S 2540(processor)S 3 F 2846(work)S 1 F (.)R 2 F 66 Z 1746(nprocs)S 1 F 72 Z 2992 3942(e)U 432 4026(p)U 432 3942(This)U 588(virtual)S 804(processor)S 1107(is)S 1182(a)S 1241(SCHEDULE)S 1644(procedure)S 1959(\(written)S 2214(in)S 2297(C\))S 2396(that)S 2531(is)S 2606(internal)S 2853(to)S 2936(th)S 468 4026(ackage)U 692(and)S 820(not)S 936(explicitly)S 1232(available)S 1516(to)S 1596(the)S 1708(user.)S 54 Z 763 4146(J)U 791(O)S 828(BT)S 899(A)S 935(G)S 1011(=)S 1090(j)S 765 4206(I)U 792(CA)S 863(N)S 899(G)S 935(O)S 1011(=)S 1084(0)S 1084 4266(1)U 60 Z 26 4710(-)U 54 Z 755 4266(N)U 792(CH)S 865(EK)S 939(S)S 1011(=)S 60 Z 66 4710(-)U 3229(-)S 3269(-)S EP %%Page: ? 7 BP 1 F 66 Z 1667 258(-)U 1711(7)S 1766(-)S 2 F 2726 450(m)U 682(inprod)S 1 F (\()R 2 F 902(m)S 1 F (,)R 2 F 989(a)S 1 F (\()R 2 F (indx)R 1 F (\),)R 2 F 1218(b)S 1 F (\()R 2 F (indx)R 1 F (\),)R 2 F 1447(temp)S 1 F (\()R 2 F (j)R 1 F (\))R 1659(\))S 1703(,)S 2 F 1786(j)S 4 F 1826(=)S 1 F 1885(1,)S 1957(2,...)S 2058(,)S 2 F 2097(k)S 1 F 2192(,)S 2 F 2253(indx)S 4 F 2388(=)S 1 F 2447(1)S 4 F 2502(+)S 1 F 2561(\()S 2 F (j)R 4 F (-)R 1 F (1\))R 2 F (*)R 2897 570(a)U 1 F 2952(,)S 2 F 2991(b)S 1 F 72 Z 432 654(a)U 432 570(which)U 637(are)S 754(not)S 875(data)S 1023(dependent.)S 1389(Each)S 1561(of)S 1649(them)S 1821(reads)S 2001(a)S 2061(segment)S 2329(of)S 2417(the)S 2533(shared)S 2749(data)S 464 654(nd)U 561(writes)S 762(on)S 859(its)S 952(own)S 1101(entry)S 1274(of)S 1359(the)S 1472(array)S 1773(,)S 1816(but)S 1933(none)S 2098(of)S 2183(them)S 2352(needs)S 2541(to)S 2622(read)S 2771(data)S 2916(that)S 432 738(s)U 2 F 66 Z 1645 654(temp)U 1 F 72 Z 460 738(ome)U 623(other)S 810(process)S 1064(will)S 1214(write.)S 1442(This)S 1608(fact)S 1754(is)S 1840(evident)S 2090(in)S 2184(the)S 2310(graphical)S 2616(representation)S 432 822(shown)U 644(in)S 724(Figure)S 936(4.2)S 1074(where)S 1274(they)S 1422(are)S 1698(.)S 1764(One)S 1908(process,)S 2 F 66 Z 1534(leaves)S 1440 942(a)U (ddup)R 1 F (\()R 2 F (k)R 1 F (,)R 2 F (sigma)R 1 F (,)R 2 F (temp)R 1 F (\),)R 2 F 2253 1062(k)U 1 F 72 Z 432(l)S 2 F 66 Z 666(k)S 4 F (+)R 1 F (1)R 2085(1,2,..)S 2219(.,)S 72 Z 452(abeled)S 791(is)S 865(data)S 1011(dependent)S 1332(on)S 1429(each)S 1586(of)S 1671(the)S 1784(processes)S 2282(.)S 2349(This)S 2502(is)S 2575(because)S 3 F 2828(addup)S 1 F 3004 1146(t)U 432(needs)S 628(to)S 715(read)S 870(each)S 1033(entry)S 1212(of)S 1303(the)S 1422(array)S 1760(in)S 1847(order)S 2030(to)S 2117(compute)S 2396(the)S 2515(sum)S 2666(and)S 2801(place)S 2984(i)S 2 F 66 Z 1601(temp)S 4 F 568 1230(s)U 1 F 72 Z (.)R 432(into)S 66 Z 582 1362(From)U 752(this)S 874(data)S 1010(dependency)S 1351(graph)S 1528(we)S 1632(may)S 1772(proceed)S 2007(to)S 2085(write)S 2247(the)S 2353(parallel)S 2575(program.)S 2885(Once)S 3002 1458(-)U 432 1554(c)U 432 1458(we)U 532(have)S 679(understood)S 995(the)S 1098(computation)S 1449(well)S 1585(enough)S 1802(to)S 1876(have)S 2023(carried)S 2228(out)S 2334(these)S 2491(two)S 2612(steps,)S 2783(the)S 2885(invo)S 461 1554(ation)U 615(of)S 693(SCHEDULE)S 1061(to)S 1135(provide)S 1359(for)S 1458(the)S 1560(parallel)S 1778(execution)S 2055(of)S 2132(schedulable)S 2464(processes)S 2739(is)S 2805(straight-)S 432 1746(t)U 432 1650(forward.)U 703(Calls)S 861(to)S 3 F 935(parprd)S 1 F (,)R 3 F 1177(inprod)S 1 F (,)R 1408(and)S 3 F 1526(addup)S 1 F 1730(are)S 1833(replaced)S 2077(by)S 2165(calls)S 2307(to)S 2380(SCHEDULE)S 2747(to)S 2820(identify)S 450 1746(he)U 541(routines)S 782(to)S 862(be)S 953(executed)S 1215(as)S 1299(well)S 1441(as)S 1524(the)S 1632(information)S 1970(relating)S 2198(to)S 2277(the)S 2385(dependency)S 2727(graph.)S 2922(The)S 432 2130(P)U 432 1842(modi\256ed)U 688(code)S 834(follows.)S 469 2130(arallel)U 654(Main:)S 54 Z 652 2286(p)U 693(r)S 724(o)S 760(g)S 801(r)S 834(a)S 861(m)S 933(m)S 978(a)S 1018(i)S 1048(n)S 438 2406(c)U 658 2346(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 940(n)S 983(,)S 1012(k)S 649 2466(EXT)U 757(E)S 792(RN)S 863(AL)S 975(P)S 1007(A)S 1044(R)S 1083(P)S 1116(RD)S 438 2526(c)U 657 2586(r)U 690(e)S 726(a)S 766(l)S 834(a)S 873(\()S 904(1)S 940(0)S 976(0)S 1012(0)S 1053(\))S 1091(,)S 1120(b)S 1161(\()S 1192(1)S 1228(0)S 1264(0)S 1300(0)S 1341(\))S 1379(,)S 1414(t)S 1446(e)S 1473(mp)S 1557(\()S 1588(5)S 1624(0)S 1665(\))S 1703(,)S 1735(s)S 1774(i)S 1804(g)S 1833(m)S 1878(a)S 652 2706(d)U 657 2646(r)U 690(e)S 726(a)S 760(d)S 837(\()S 868(5)S 911(,)S 940(*)S 981(\))S 1048(n)S 1091(,)S 1120(k)S 1163(,)S 1187(NP)S 1260(RO)S 1332(C)S 1371(S)S 688 2706(o)U 760(1)S 796(0)S 832(0)S 910(j)S 975(=)S 1048(1)S 1091(,)S 1120(n)S 760 2826(b)U 762 2766(a)U 801(\()S 838(j)S 873(\))S 939(=)S 1018(j)S 801 2826(\()U 838(j)S 873(\))S 939(=)S 1012(1)S 438 2946(c)U 508 2886(1)U 544(0)S 580(0)S 654(c)S 688(o)S 724(n)S 766(t)S 802(i)S 832(n)S 868(u)S 906(e)S 648 3006(CA)U 721(L)S 757(L)S 831(S)S 864(CH)S 937(ED)S 1017(\()S 1048(n)S 1084(p)S 1125(r)S 1156(o)S 1194(c)S 1231(s)S 1271(,)S 1299(P)S 1331(A)S 1368(R)S 1407(P)S 1440(RD)S 1523(,)S 1552(n)S 1595(,)S 1624(k)S 1667(,)S 1698(a)S 1739(,)S 1768(b)S 1811(,)S 1846(t)S 1878(e)S 1905(mp)S 1991(,)S 2023(s)S 2062(i)S 2092(g)S 2121(m)S 2166(a)S 2205(\))S 438 3066(c)U 647 3126(w)U 693(r)S 730(i)S 766(t)S 798(e)S 837(\()S 868(6)S 911(,)S 940(*)S 981(\))S 1053(')S 1123(s)S 1162(i)S 1192(g)S 1221(m)S 1266(a)S 1335(=)S 1413(')S 1451(,)S 1483(s)S 1522(i)S 1552(g)S 1581(m)S 1626(a)S 654 3246(e)U 655 3186(s)U 694(t)S 724(o)S 760(p)S 688 3246(n)U 724(d)S 655 3426(s)U 688(u)S 724(b)S 765(r)S 796(o)S 832(u)S 874(t)S 910(i)S 940(n)S 978(e)S 1048(p)S 1086(a)S 1125(r)S 1156(p)S 1197(r)S 1228(d)S 1269(\()S 1300(n)S 1343(,)S 1372(k)S 1415(,)S 1446(a)S 1487(,)S 1516(b)S 1559(,)S 1594(t)S 1626(e)S 1653(mp)S 1739(,)S 1771(s)S 1810(i)S 1840(g)S 1869(m)S 1914(a)S 1953(\))S 438 3546(c)U 438 3486(c)U 652 3546(d)U 690(e)S 726(c)S 766(l)S 798(a)S 837(r)S 870(e)S 943(s)S 976(h)S 1014(a)S 1053(r)S 1086(e)S 1120(d)S 1192(v)S 1230(a)S 1269(r)S 1306(i)S 1338(a)S 1372(b)S 1414(l)S 1446(e)S 1483(s)S 438 3606(c)U 658 3666(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 940(n)S 983(,)S 1012(k)S 657 3726(r)U 690(e)S 726(a)S 766(l)S 834(a)S 873(\()S 904(*)S 945(\))S 983(,)S 1012(b)S 1053(\()S 1084(*)S 1125(\))S 1163(,)S 1198(t)S 1230(e)S 1257(mp)S 1341(\()S 1372(*)S 1413(\))S 1451(,)S 1483(s)S 1522(i)S 1552(g)S 1581(m)S 1626(a)S 438 3846(c)U 438 3786(c)U 652 3846(d)U 690(e)S 726(c)S 766(l)S 798(a)S 837(r)S 870(e)S 946(l)S 976(o)S 1014(c)S 1050(a)S 1090(l)S 1156(v)S 1194(a)S 1233(r)S 1270(i)S 1302(a)S 1336(b)S 1378(l)S 1410(e)S 1447(s)S 438 3906(c)U 658 3966(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 933(m1)S 1019(,)S 1041(m2)S 1127(,)S 1162(i)S 1192(n)S 1228(d)S 1264(x)S 1307(,)S 1342(j)S 1379(,)S 1414(j)S 1444(o)S 1480(b)S 1522(t)S 1554(a)S 1588(g)S 1631(,)S 1666(i)S 1698(c)S 1734(a)S 1768(n)S 1804(g)S 1840(o)S 1883(,)S 1912(n)S 1950(c)S 1984(h)S 2022(e)S 2056(k)S 2095(s)S 2135(,)S 2157(my)S 2238(c)S 2272(h)S 2308(k)S 2344(n)S 2385(\()S 2416(2)S 2457(\))S 438 4026(c)U 649 4086(EXT)U 757(E)S 792(RN)S 863(AL)S 981(I)S 1007(NP)S 1080(RO)S 1151(D)S 1199(,)S 1223(A)S 1259(D)S 1295(D)S 1331(UP)S 438 4206(c)U 655 4146(s)U 690(a)S 724(v)S 762(e)S 825(m1)S 911(,)S 933(m2)S 645 4266(m1)U 831(=)S 904(n)S 946(/)S 976(k)S 60 Z 26 4710(-)U 66(-)S 3229(-)S 3269(-)S EP %%Page: ? 6 BP 1 F 66 Z 1667 270(-)U 1711(6)S 1766(-)S 3006 462(l)U 432 558(p)U 432 462(data)U 567(and)S 688(a)S 5 F 743(")S 1 F (parallel)R 5 F (")R 1 F 1021(subroutine)S 3 F 1325(parprd)S 1 F 1553(to)S 1630(compute)S 1882(the)S 1987(inner)S 2147(product)S 2373(by)S 2464(invoking)S 2723(the)S 2828(paralle)S 465 558(rocesses)U 3 F 715(inprd)S 1 F 903(and)S 3 F 1027(addup)S 1 F (.)R 1276(The)S 1407(program)S 1659(and)S 1783(associated)S 2082(data)S 2220(dependency)S 2563(graph)S 2742(are)S 2851(shown)S 432 846(S)U 432 654(below.)U 469 846(erial)U 607(Code:)S 54 Z 652 1002(p)U 693(r)S 724(o)S 760(g)S 801(r)S 834(a)S 861(m)S 933(m)S 978(a)S 1018(i)S 1048(n)S 657 1122(r)U 658 1062(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 940(n)S 983(,)S 1012(k)S 690 1122(e)U 726(a)S 766(l)S 834(a)S 873(\()S 904(1)S 940(0)S 976(0)S 1012(0)S 1053(\))S 1091(,)S 1120(b)S 1161(\()S 1192(1)S 1228(0)S 1264(0)S 1300(0)S 1341(\))S 1379(,)S 1414(t)S 1446(e)S 1473(mp)S 1557(\()S 1588(5)S 1624(0)S 1665(\))S 1703(,)S 1735(s)S 1774(i)S 1804(g)S 1833(m)S 1878(a)S 652 1242(d)U 657 1182(r)U 690(e)S 726(a)S 760(d)S 837(\()S 868(5)S 911(,)S 940(*)S 981(\))S 1048(n)S 1091(,)S 1120(k)S 688 1242(o)U 760(1)S 796(0)S 832(0)S 910(j)S 975(=)S 1048(1)S 1091(,)S 1120(n)S 760 1362(b)U 762 1302(a)U 801(\()S 838(j)S 873(\))S 939(=)S 1018(j)S 801 1362(\()U 838(j)S 873(\))S 939(=)S 1012(1)S 438 1482(c)U 508 1422(1)U 544(0)S 580(0)S 654(c)S 688(o)S 724(n)S 766(t)S 802(i)S 832(n)S 868(u)S 906(e)S 654 1542(c)U 690(a)S 730(l)S 766(l)S 832(p)S 870(a)S 909(r)S 940(p)S 981(r)S 1012(d)S 1053(\()S 1084(n)S 1127(,)S 1156(k)S 1199(,)S 1230(a)S 1271(,)S 1300(b)S 1343(,)S 1378(t)S 1410(e)S 1437(mp)S 1523(,)S 1555(s)S 1594(i)S 1624(g)S 1653(m)S 1698(a)S 1737(\))S 438 1602(c)U 647 1662(w)U 693(r)S 730(i)S 766(t)S 798(e)S 837(\()S 868(6)S 911(,)S 940(*)S 981(\))S 1053(')S 1123(s)S 1162(i)S 1192(g)S 1221(m)S 1266(a)S 1335(=)S 1413(')S 1451(,)S 1483(s)S 1522(i)S 1552(g)S 1581(m)S 1626(a)S 654 1782(e)U 655 1722(s)U 694(t)S 724(o)S 760(p)S 688 1782(n)U 724(d)S 655 1962(s)U 688(u)S 724(b)S 765(r)S 796(o)S 832(u)S 874(t)S 910(i)S 940(n)S 978(e)S 1048(p)S 1086(a)S 1125(r)S 1156(p)S 1197(r)S 1228(d)S 1269(\()S 1300(n)S 1343(,)S 1372(k)S 1415(,)S 1446(a)S 1487(,)S 1516(b)S 1559(,)S 1594(t)S 1626(e)S 1653(mp)S 1739(,)S 1771(s)S 1810(i)S 1840(g)S 1869(m)S 1914(a)S 1953(\))S 438 2082(c)U 438 2022(c)U 652 2082(d)U 690(e)S 726(c)S 766(l)S 798(a)S 837(r)S 870(e)S 943(s)S 976(h)S 1014(a)S 1053(r)S 1086(e)S 1120(d)S 1192(v)S 1230(a)S 1269(r)S 1306(i)S 1338(a)S 1372(b)S 1414(l)S 1446(e)S 1483(s)S 438 2142(c)U 658 2202(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 940(n)S 983(,)S 1012(k)S 657 2262(r)U 690(e)S 726(a)S 766(l)S 834(a)S 873(\()S 904(*)S 945(\))S 983(,)S 1012(b)S 1053(\()S 1084(*)S 1125(\))S 1163(,)S 1198(t)S 1230(e)S 1257(mp)S 1341(\()S 1372(*)S 1413(\))S 1451(,)S 1483(s)S 1522(i)S 1552(g)S 1581(m)S 1626(a)S 438 2382(c)U 438 2322(c)U 652 2382(d)U 690(e)S 726(c)S 766(l)S 798(a)S 837(r)S 870(e)S 946(l)S 976(o)S 1014(c)S 1050(a)S 1090(l)S 1156(v)S 1194(a)S 1233(r)S 1270(i)S 1302(a)S 1336(b)S 1378(l)S 1410(e)S 1447(s)S 438 2442(c)U 658 2502(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 933(m)S 983(,)S 1018(i)S 1048(n)S 1084(d)S 1120(x)S 1163(,)S 1198(j)S 438 2562(c)U 645 2622(m)U 723(=)S 796(n)S 838(/)S 868(k)S 904 2682(1)U 652 2742(d)U 658 2682(i)U 688(n)S 724(d)S 760(x)S 831(=)S 688 2742(o)U 760(2)S 796(0)S 832(0)S 910(j)S 975(=)S 1048(1)S 1091(,)S 1120(k)S 438 2802(c)U 762 2862(c)U 798(a)S 838(l)S 874(l)S 946(i)S 976(n)S 1012(p)S 1053(r)S 1084(o)S 1120(d)S 1161(\()S 1185(m)S 1235(,)S 1266(a)S 1305(\()S 1342(i)S 1372(n)S 1408(d)S 1444(x)S 1485(\))S 1523(,)S 1552(b)S 1593(\()S 1630(i)S 1660(n)S 1696(d)S 1732(x)S 1773(\))S 1811(,)S 1846(t)S 1878(e)S 1905(mp)S 1989(\()S 2026(j)S 2061(\))S 2097(\))S 438 2922(c)U 766 2982(i)U 796(n)S 832(d)S 868(x)S 939(=)S 1018(i)S 1048(n)S 1084(d)S 1120(x)S 1191(+)S 1257(m)S 766 3042(i)U 801(f)S 873(\()S 910(j)S 983(.)S 1014(e)S 1048(q)S 1091(.)S 1156(k)S 1197(-)S 1228(1)S 1269(\))S 1329(m)S 1407(=)S 1480(n)S 1557(-)S 1630(i)S 1660(n)S 1696(d)S 1732(x)S 1803(+)S 1876(1)S 438 3162(c)U 508 3102(2)U 544(0)S 580(0)S 654(c)S 688(o)S 724(n)S 766(t)S 802(i)S 832(n)S 868(u)S 906(e)S 654 3222(c)U 690(a)S 730(l)S 766(l)S 834(a)S 868(d)S 904(d)S 940(u)S 976(p)S 1017(\()S 1048(k)S 1091(,)S 1123(s)S 1162(i)S 1192(g)S 1221(m)S 1266(a)S 1307(,)S 1342(t)S 1374(e)S 1401(mp)S 1485(\))S 438 3282(c)U 657 3342(r)U 690(e)S 730(t)S 760(u)S 801(r)S 832(n)S 654 3402(e)U 688(n)S 724(d)S 48 Z 1135 3567(k+1)U 1238 3558(')U 432 3948(D)U 509 3957(1)U 1070 3558(D'c203u)U 467 3948('c178u')U 769 3957(2)U 692 3948(D)U ('c178u')R 1030 3957(3)U 952 3948(D)U ('c178u')R 1530 3957(k-1)U 1640 3948(')U 1472(D'c178u)S 1810 3957(k)U 1733 3948(D)U ('c178u')R 1045 3654(D)U 1069 3621(D'l17u)U 1221(-11u')S 1080 3654('l41u)U 1197(-43u')S 594 3903(D'l475u)U 770(-282u')S 1030 3627(D'l56u)U 1182(-18u')S 1088 3645(D'l15u)U 1240(-15u')S 1052 3660(D)U 1072 3681(D'l31u)U 1224(-51u')S 1087 3660('l51u)U 1204(-31u')S 842 3885(D'l246u)U 1018(-241u')S 1137 3669(D'l6u)U 1265(-19u')S 1354 3711(')U 1111 3702(D)U 1138 3711(D'l5u)U 1266(-59u)S 1146 3702('l32u)U 1263(-50u')S 1066 3867(D'l71u)U 1218(-196u')S 1255 3645(D'l-14u)U 1423(-15u')S 1548 3660(')U 1271 3681(D)U 1292 3660(D'l-51u)U 1460(-31u)S 1306 3681('l-30u)U 1439(-51u')S 1501 3885(D)U ('l-246u)R 1693(-241u')S 1274 3621(D'l-17u)U 1442(-11u')S 1313 3627(D'l-56u)U 1481(-18u')S 1298 3654(D'l-41u)U 1466(-43u')S 1749 3903(D'l-475u)U 1941(-282u')S 2 F 72 Z 1060 4233(D)U 1540 4149(Figure)U 1760(4.2.)S 1112 4233(epedency)U 1404(Graph)S 1616(for)S 1724(Parallel)S 1984(Inner)S 2164(Product)S 1 F 432 4317(In)U 516(this)S 644(data)S 788(dependency)S 1156(graph)S 1344(we)S 1452(have)S 1612(identi\256ed)S 1961(processes)S 2 F 66 Z 1908(k)S 1 F 60 Z 3279 4710(-)U 16(--)S 3259(-)S EP %%Page: ? 5 BP 1 F 66 Z 1667 270(-)U 1711(5)S 1766(-)S 432 462(data)U 563(in)S 636(the)S 738(computationa)S 1095(l)S 1135(graph.)S 582 594(These)U 769(concepts)S 1029(are)S 1139(perhaps)S 1373(more)S 1537(easily)S 1719(grasped)S 1953(through)S 2187(an)S 2278(actual)S 2463(Fortran)S 2686(example.)S 2976(A)S 3007 690(.)U 432 786(T)U 432 690(very)U 579(simple)S 784(example)S 1036(is)S 1110(a)S 1169(parallel)S 1395(algorithm)S 1680(for)S 1787(computing)S 2098(the)S 2208(inner)S 2373(product)S 2604(of)S 2689(two)S 2817(vectors)S 472 786(he)U 558(intention)S 815(here)S 952(is)S 1020(to)S 1095(illustrate)S 1348(the)S 1452(mechanics)S 1753(of)S 1832(using)S 1999(SCHEDULE.)S 2407(This)S 2548(algorithm)S 2826(and)S 2944(the)S 432 1074(P)U 432 882(use)U 542(of)S 619(SCHEDULE)S 986(on)S 1074(a)S 1125(problem)S 1366(of)S 1443(such)S 1586(small)S 1750(granularity)S 2060(are)S 2162(not)S 2268(necessarily)S 2582(recommended.)S 469 1074(roblem:)U 695(Given)S 878(real)S 998(vectors)S 2 F 1210(a)S 1 F 1265(and)S 2 F 1382(b)S 1 F (,)R 1454(each)S 1596(of)S 1673(length)S 2 F 1859(n)S 1 F (,)R 1931(compute)S 4 F 2179(s)S 2241(=)S 2 F 2300(a)S 2360(b)S 1 F (.)R 432 1266(Parallel)U 654(Algorithm:)S 2 F 48 Z 2333 1047(T)U 1 F 66 Z 894 1362(Let)U 2 F 1003(a)S 4 F 1085(=)S 1 F 1144(\()S 2 F (a)R 1 F 1226(,)S 2 F (a)R 1 F 1303(,...)S 1371(,)S 2 F (a)R 1 F 1448(\))S 1492(and)S 2 F 1609(b)S 4 F 1691(=)S 1 F 1750(\()S 2 F (b)R 1 F 1832(,)S 2 F (b)R 1 F 1909(,...)S 1977(,)S 2 F (b)R 1 F 2054(\))S 2 F 48 Z 1036 1335(T)U 1 F 1199 1377(1)U 2 F 1199 1335(T)U 1 F 1276 1377(2)U 2 F 1276 1335(T)U 1421 1377(k)U 1421 1335(T)U 1642(T)S 1 F 1805 1377(1)U 2 F 1805 1335(T)U 1 F 1882 1377(2)U 2 F 1882 1335(T)U 2027 1377(k)U 2027 1335(T)U 2559 1476(i)U 2744(i)S 1 F 66 Z 2757 1461(.)U 894 1656(C)U 894 1461(be)U 978(a)S 1029(partitioning)S 1357(of)S 1434(the)S 1536(vectors)S 2 F 1748(a)S 1 F 1803(and)S 2 F 1920(b)S 1 F 1975(into)S 2099(smaller)S 2314(vectors)S 2 F 2526(a)S 1 F 2594(and)S 2 F 2711(b)S 1 F 938 1656(ompute)U 1157(\()S 1201(in)S 1274(parallel)S 1492(\))S 4 F 982 1848(s)U 1057(=)S 2 F 1116(a)S 1176(b)S 1 F 1244(,)S 2 F 1283(j)S 4 F 1323(=)S 1 F 1382(1,)S 2 F (k)R 1 F (.)R 2 F 48 Z 1022 1863(j)U 1149(j)S 1149 1821(T)U 1209 1863(j)U 1 F 66 Z 1259 2043(e)U 894(When)S 1073(all)S 1160(don)S 4 F 982 2235(s)U 1044(=)S 1103(s)S 1189(+)S 1248(s)S 1334(+)S 2 F 1415 2217(.)U 1454(.)S 1493(.)S 4 F 1554 2235(+)U 1613(s)S 1 F 1674(.)S 432 2430(E)U 48 Z 1143 2250(1)U 1288(2)S 2 F 1653(k)S 1 F 66 Z 472 2430(ach)U 585(of)S 662(the)S 764(parallel)S 982(processes)S 1257(will)S 1381(execute)S 1603(code)S 1749(of)S 1826(the)S 1928(following)S 2206(form:)S 54 Z 655 2646(s)U 688(u)S 724(b)S 765(r)S 796(o)S 832(u)S 874(t)S 910(i)S 940(n)S 978(e)S 1054(i)S 1084(n)S 1120(p)S 1161(r)S 1192(o)S 1228(d)S 1269(\()S 1293(m)S 1343(,)S 1374(a)S 1415(,)S 1444(b)S 1487(,)S 1519(s)S 1558(i)S 1588(g)S 1629(\))S 658 2706(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 933(m)S 657 2766(r)U 690(e)S 726(a)S 766(l)S 834(a)S 873(\()S 904(*)S 945(\))S 983(,)S 1012(b)S 1053(\()S 1084(*)S 1125(\))S 1163(,)S 1195(s)S 1234(i)S 1264(g)S 652 2886(d)U 655 2826(s)U 694(i)S 724(g)S 795(=)S 868(0)S 911(.)S 940(0)S 688 2886(o)U 760(1)S 796(0)S 832(0)S 910(j)S 975(=)S 1048(1)S 1091(,)S 1113(m)S 763 2946(s)U 802(i)S 832(g)S 903(=)S 979(s)S 1018(i)S 1048(g)S 1119(+)S 1194(a)S 1233(\()S 1270(j)S 1305(\))S 1336(*)S 1372(b)S 1413(\()S 1450(j)S 1485(\))S 508 3006(1)U 544(0)S 580(0)S 654(c)S 688(o)S 724(n)S 766(t)S 802(i)S 832(n)S 868(u)S 906(e)S 657 3066(r)U 690(e)S 730(t)S 760(u)S 801(r)S 832(n)S 72 Z 432 3270(T)U 54 Z 654 3126(e)U 688(n)S 724(d)S 72 Z 476 3270(he)U 568(following)S 872(routine)S 1100(is)S 1172(used)S 1328(to)S 1408(accumulate)S 1760(the)S 1872(result:)S 54 Z 655 3390(s)U 688(u)S 724(b)S 765(r)S 796(o)S 832(u)S 874(t)S 910(i)S 940(n)S 978(e)S 1050(a)S 1084(d)S 1120(d)S 1156(u)S 1192(p)S 1233(\()S 1264(k)S 1307(,)S 1339(s)S 1378(i)S 1408(g)S 1437(m)S 1482(a)S 1523(,)S 1558(t)S 1590(e)S 1617(mp)S 1701(\))S 658 3450(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 940(k)S 657 3510(r)U 690(e)S 726(a)S 766(l)S 835(s)S 874(i)S 904(g)S 933(m)S 978(a)S 1019(,)S 1054(t)S 1086(e)S 1113(mp)S 1197(\()S 1228(*)S 1269(\))S 652 3630(d)U 655 3570(s)U 694(i)S 724(g)S 753(m)S 798(a)S 867(=)S 940(0)S 983(.)S 1012(0)S 688 3630(o)U 760(1)S 796(0)S 832(0)S 910(j)S 975(=)S 1048(1)S 1091(,)S 1120(k)S 763 3690(s)U 802(i)S 832(g)S 861(m)S 906(a)S 975(=)S 1051(s)S 1090(i)S 1120(g)S 1149(m)S 1194(a)S 1263(+)S 1342(t)S 1374(e)S 1401(mp)S 1485(\()S 1522(j)S 1557(\))S 508 3750(1)U 544(0)S 580(0)S 654(c)S 688(o)S 724(n)S 766(t)S 802(i)S 832(n)S 868(u)S 906(e)S 657 3810(r)U 690(e)S 730(t)S 760(u)S 801(r)S 832(n)S 66 Z 582 4062(T)U 54 Z 654 3870(e)U 688(n)S 724(d)S 66 Z 622 4062(he)U 713(\256rst)S 845(step)S 980(in)S 1060(constructing)S 1414(a)S 1472(code)S 1625(is)S 1698(to)S 1778(understand)S 2096(the)S 2205(parallel)S 2430(algorithm)S 2714(in)S 2794(terms)S 2969(of)S 3002 4158(-)U 432 4254(d)U 432 4158(schedulable)U 765(processes)S 1041(and)S 1159(a)S 1210(data)S 1341(dependency)S 1677(graph.)S 1888(Then)S 2045(the)S 2147(algorithm)S 2424(is)S 2490(expressed)S 2772(in)S 2845(a)S 2896(stan)S 465 4254(ard)U 576(\(serial\))S 789(Fortran)S 1010(code.)S 1200(This)S 1344(code)S 1495(consists)S 1731(of)S 1813(a)S 1869(main)S 2027(program)S 2277(which)S 2465(initiali)S 2635(zes)S 2746(the)S 2852(shared)S 60 Z 3279 4710(-)U 16(--)S 3259(-)S EP %%Page: ? 4 BP 1 F 66 Z 1667 270(-)U 1711(4)S 1766(-)S 3 F 1687 462(E)U 432(4.)S 526(Parallel)S 766(Programming)S 1183(Using)S 1367(SCHEDUL)S 1 F 582 594(The)U 713(package)S 957(SCHEDULE)S 1331(requires)S 1571(a)S 1628(user)S 1766(to)S 1845(specify)S 2063(the)S 2171(subroutine)S 2477(calls)S 2625(along)S 2799(with)S 2944(the)S 2998 690(s)U 432 786(r)U 432 690(execution)U 725(dependencies)S 1117(in)S 1206(order)S 1383(to)S 1472(carry)S 1645(out)S 1767(a)S 1834(parallel)S 2068(computation.)S 2472(Each)S 2640(of)S 2732(these)S 2904(call)S 454 786(epresents)U 724(a)S 778(process,)S 1018(and)S 1138(the)S 1243(user)S 1378(must)S 1531(take)S 1665(the)S 1770(responsibility)S 2153(of)S 2233(ensuring)S 2485(that)S 2608(the)S 2712(data)S 2845(depen-)S 3006 882(t)U 432 978(s)U 432 882(dencies)U 656(represented)S 986(by)S 1079(the)S 1186(graph)S 1363(are)S 1470(valid.)S 1667(This)S 1811(concept)S 2042(is)S 2112(perhaps)S 2343(dif\256cult)S 2577(to)S 2654(grasp)S 2823(withou)S 458 978(ome)U 599(experience)S 911(with)S 1056(writing)S 1274(parallel)S 1498(programs.)S 1814(We)S 1933(shall)S 2084(try)S 2184(to)S 2262(explain)S 2482(it)S 2545(in)S 2623(this)S 2745(section)S 2958(by)S 2995 1074(e)U 432 1170(S)U 432 1074(example;)U 722(in)S 822(the)S 951(following)S 1256(section)S 1491(we)S 1617(shall)S 1790(describe)S 2058(the)S 2187(underlying)S 2521(concepts)S 2800(and)S 2944(th)S 469 1170(CHEDULE)U 799(mechanism.)S 582 1302(T)U (o)R 678(use)S 789(SCHEDULE,)S 1174(one)S 1292(must)S 1443(be)S 1528(able)S 1660(to)S 1734(express)S 1955(\(i.e.,)S 2098(program\))S 2366(an)S 2451(algorithm)S 2728(in)S 2801(terms)S 2969(of)S 432 1494(t)U 432 1398(processes)U 710(and)S 830(execution)S 1110(dependencies)S 1489(among)S 1693(the)S 1798(processes.)S 2115(A)S 2188(convenient)S 2500(way)S 2634(to)S 2709(view)S 2861(this)S 2980(is)S 450 1494(hrough)U 659(a)S 710(computationa)S 1067(l)S 1107(graph.)S 1318(For)S 1432(example,)S 1693(the)S 1795(following)S 2073(graph)S 48 Z 1083 1836(D)U 1163 1845(A)U 1118 1836('c195u')U 822 2097(D)U 904 2106(B)U 857 2097('c195u')U 1424 2106(C)U 1342 2097(D)U ('c195u')R 822 2487(D)U 903 2496(D)U 857 2487('c195u')U 432(D)S 512 2496(D)U 467 2487('c195u')U 1296 2496(E)U 1213 2487(D)U ('c195u')R 1259 1920(D)U ('l-14u)R 1427(-15u')S 1552 1938(')U 1276 1956(D)U 1296 1938(D'l-51u)U 1464(-31u)S 1311 1956('l-31u)U 1444(-51u')S 1375 2028(D)U ('l-116u)R 1567(-107u')S 1084 1956(D)U 1101 1920(D'l14u)U 1253(-15u')S 1119 1956('l31u)U 1236(-51u')S 985 2028(D)U 1064 1938(D'l51u)U 1216(-31u')S 1020 2028('l116u)U 1161(-107u')S 824 2217(D)U 840 2181(D'l15u)U 992(-15u')S 859 2217('l31u)U 976(-51u')S 804 2196(D'l51u)U 956(-31u')S 882 2418(')U 594(D'l246u)S 770(-237u)S 920 2211(D'l0u)U 1048(-20u')S 1190 2247(')U 905(D)S 934(D'l-14u)S 1102(-57u)S 940('l15u)S 1057(-57u')S 1160 2394(')U 920(D'l0u)S 1048(-183u)S 999 2181(D'l-14u)U 1167(-15u')S 1292 2196(')U 1015 2217(D)U 1036 2196(D'l-51u)U 1204(-31u)S 1050 2217('l-30u)U 1183(-51u')S 1245 2418(D)U ('l-246u)R 1437(-237u')S 2 F 66 Z 1555 2820(Figure)U 1756(4.1.)S 2032 2916(h)U 1 F 432 3108(d)U 2 F 1391 2916(Data)U 1545(Dependency)S 1892(Grap)S 1 F 465 3108(enotes)U 657(\256ve)S 780(subroutines)S 1108(A,)S 1197(B,)S 1282(C,)S 1367(D,)S 1456(and)S 1574(E)S 1659(\(here)S 1817(with)S 1957(two)S 5 F 2079(")S 1 F (copies)R 5 F (")R 1 F 2326(of)S 2404(subroutine)S 2705(D)S 2776(operating)S 2991 3204(d)U 432 3300(E)U 432 3204(on)U 523(different)S 774(data\).)S 969(We)S 1085(intend)S 1274(the)S 1379(execution)S 1659(to)S 1735(start)S 1873(simultaneously)S 2296(on)S 2386(subroutines)S 2714(C,D,D,)S 2929(an)S 504 3300(since)U 671(they)S 816(appear)S 1022(as)S 1108(leaves)S 1303(in)S 1385(the)S 1496(data)S 1636(dependency)S 1981(graph)S 2162(\(D)S 2263(will)S 2396(be)S 2489(initiate)S 2670(d)S 2734(twice)S 2907(with)S 2995 3396(e)U 432 3492(c)U 432 3396(different)U 687(data\).)S 886(Once)S 1053(D,D,and)S 1306(E)S 1374(have)S 1526(completed)S 1827(then)S 1968(B)S 2040(may)S 2181(execute.)S 2448(When)S 2633(B)S 2705(and)S 2828(C)S 2900(hav)S 461 3492(ompleted)U 729(execution)S 1008(then)S 1145(A)S 1217(may)S 1354(start)S 1491(and)S 1610(the)S 1714(entire)S 1887(computation)S 2239(is)S 2307(\256nished)S 2540(when)S 2707(A)S 2778(has)S 2889(com-)S 432 3684(o)U 432 3588(pleted.)U 654(To)S 750(use)S 861(SCHEDULE,)S 1246(one)S 1364(is)S 1431(required)S 1673(to)S 1747(specify)S 1960(the)S 2063(subroutine)S 2364(calling)S 2564(sequence)S 2827(of)S 2904(each)S 465 3684(f)U 509(the)S 611(six)S 710(units)S 860(of)S 937(computation,)S 1304(along)S 1472(with)S 1611(a)S 1662(representation)S 2056(of)S 2133(this)S 2250(dependency)S 2586(graph.)S 2998 3816(s)U 432 3912(i)U 582 3816(For)U 706(each)S 858(node)S 1018(in)S 1101(the)S 1213(graph,)S 1412(SCHEDULE)S 1789(requires)S 2033(two)S 2164(subroutine)S 2474(calls.)S 2664(One)S 2805(contain)S 450 3912(nformation)U 777(about)S 958(the)S 1072(user's)S 1264(routine)S 1484(to)S 1569(be)S 1665(called,)S 1872(such)S 2027(as)S 2116(the)S 2230(name)S 2406(of)S 2495(the)S 2609(routine,)S 2846(calling)S 3006 4008(l)U 432 4104(d)U 432 4008(sequence)U 707(parameters,)S 1046(and)S 1175(a)S 1238(simple)S 1447(tag)S 1561(to)S 1646(identify)S 1884(the)S 1998(process.)S 2268(The)S 2403(second)S 2619(subroutine)S 2930(cal)S 465 4104(e\256nes)U 649(the)S 759(dependency)S 1103(in)S 1184(the)S 1294(graph)S 1474(to)S 1555(nodes)S 1739(above)S 1926(and)S 2051(below)S 2241(the)S 2350(one)S 2474(being)S 2649(speci\256ed,)S 2929(and)S 2995 4200(e)U 432 4296(e)U 432 4200(speci\256es)U 692(the)S 805(tag)S 917(to)S 1000(identify)S 1236(the)S 1348(process.)S 1617(In)S 1704(this)S 1831(example,)S 2102(after)S 2254(an)S 2348(initial)S 2532(call)S 2658(to)S 2741(set)S 2846(up)S 2944(th)S 461 4296(nvironment)U 789(for)S 891(SCHEDULE,)S 1278(six)S 1380(pairs)S 1533(of)S 1613(calls)S 1758(would)S 1948(be)S 2035(made)S 2202(to)S 2278(de\256ne)S 2464(the)S 2569(relationships)S 2929(and)S 60 Z 3279 4710(-)U 16(--)S 3259(-)S EP %%Page: ? 3 BP 1 F 66 Z 1667 270(-)U 1711(3)S 1766(-)S 2479 462(.)U 432 654(P)U 652 462(process)U 872(within)S 1062(a)S 1113(given)S 1281(task)S 1409(\(through)S 1658(an)S 1742(appropriate)S 2063(subroutine)S 2363(call\))S 469 654(rocessor)U 711(-)S 755(A)S 825(physical)S 1066(device)S 1259(capable)S 1481(of)S 1558(executing)S 1835(a)S 1886(main)S 2039(program)S 2284(or)S 2361(a)S 432 942(S)U 630 750(virtual)U 823(processor.)S 469 942(hared)U 637(Data)S 783(-)S 827(Variables)S 1101(that)S 1221(are)S 1323(read)S 1458(and/or)S 1648(written)S 1856(by)S 2093 1038(.)U 432 1230(D)U 630 1038(more)U 787(than)S 922(one)S 1039(process)S 1259(\(including)S 1551(copies)S 1741(of)S 1818(processes\))S 480 1230(ata)U 578(Dependency)S 929(-)S 973(A)S 1043(situation)S 1291(wherein)S 1525(one)S 1642(process)S 1862(\(A\))S 1976(reads)S 2137(any)S 2254(shared)S 608 1326(data)U 739(that)S 859(another)S 1078(process)S 1298(\(B\))S 1408(writes.)S 1630(This)S 1769(data)S 1900(dependency)S 630 1422(is)U 696(satis\256ed)S 934(when)S 1099(B)S 1165(has)S 1275(written)S 1483(the)S 1585(shared)S 1779(data.)S 2224 1614(l)U 432(Schedulable)S 775(Process)S 999(-)S 1043(A)S 1113(process)S 1333(whose)S 1524(data)S 1655(dependencies)S 2031(have)S 2177(al)S 630 1710(been)U 776(satis\256ed.)S 3 F 1308 1998(s)U 432(3.)S 526(Parallel)S 766(Programming)S 1183(Idea)S 1 F 582 2130(When)U 770(designing)S 1056(a)S 1115(parallel)S 1341(algorithm)S 1626(one)S 1751(is)S 1825(required)S 2074(to)S 2155(describe)S 2404(the)S 2514(data)S 2653(dependencies,)S 432 2322(a)U 432 2226(parallel)U 659(structures,)S 963(and)S 1089(shared)S 1292(variables)S 1560(involved)S 1821(in)S 1903(the)S 2013(solution.)S 2294(Typically,)S 2592(such)S 2743(algorithms)S 461 2322(re)U 544(\256rst)S 679(designed)S 945(at)S 1024(a)S 1084(conceptual)S 1399(level)S 1557(and)S 1683(later)S 1830(implement)S 2110(ed)S 2203(in)S 2285(Fortran)S 2510(and)S 2636(its)S 2729(extensions.)S 432 2514(d)U 432 2418(Each)U 605(manufacturer)S 996(provides)S 1264(a)S 1334(different)S 1601(set)S 1715(of)S 1811(extensions)S 2130(and)S 2266(targets)S 2482(these)S 2658(extensions)S 2977(at)S 465 2514(ifferent)U 681(implement)S 961(ation)S 1115(levels.)S 1308(For)S 1423(example,)S 1685(some)S 1847(manufacturers)S 2246(allow)S 2414(only)S 2553(test-and-set)S 2878(along)S 432 2610(with)U 571(spawn-a-process,)S 1050(while)S 1218(others)S 1401(allow)S 1569(concurrent)S 1872(execution)S 2149(of)S 2226(different)S 2474(loop)S 2613(iterations.)S 582 2742(Our)U 711(attempt)S 933(here)S 1072(is)S 1142(to)S 1219(allow)S 1391(the)S 1497(user)S 1633(to)S 1709(de\256ne)S 1895(the)S 2000(data)S 2134(dependencies,)S 2530(parallel)S 2751(structures,)S 432 2934(w)U 432 2838(and)U 552(shared)S 749(variables)S 1011(in)S 1086(his)S 1187(applicati)S 1412(on)S 1502(and)S 1621(then)S 1758(to)S 1833(implement)S 2137(these)S 2296(ideas)S 2455(in)S 2530(a)S 2583(Fortran)S 2801(program)S 480 2934(ritten)U 648(in)S 729(terms)S 904(of)S 988(subroutine)S 1295(calls)S 1444(to)S 1524(SCHEDULE.)S 1937(Each)S 2097(set)S 2199(of)S 2283(subroutine)S 2590(calls)S 2739(speci\256es)S 2995(a)S 432 3126(p)U 432 3030(unit)U 567(of)S 655(computation)S 1016(or)S 1104(process)S 1335(which)S 1529(consists)S 1771(of)S 1859(a)S 1921(subroutine)S 2232(name)S 2407(along)S 2585(with)S 2734(the)S 2846(calling)S 465 3126(arameters)U 742(and)S 859(the)S 961(data)S 1092(dependencies)S 1468(necessary)S 1746(to)S 1819(coordinate)S 2118(the)S 2220(parallel)S 2438(execution.)S 2998 3258(s)U 432 3354(t)U 582 3258(The)U 710(basic)S 871(philosophy)S 1190(here)S 1329(is)S 1399(that)S 1523(Fortran)S 1743(programs)S 2018(are)S 2124(naturally)S 2383(broken)S 2592(into)S 2720(subroutine)S 450 3354(hat)U 557(identify)S 788(self-contained)S 1187(units)S 1342(of)S 1423(computation)S 1777(which)S 1964(operate)S 2183(on)S 2275(shared)S 2473(data)S 2608(structures.)S 2907(This)S 432 3546(w)U 432 3450(allows)U 628(one)S 747(to)S 822(call)S 940(on)S 1030(existing)S 1262(library)S 1461(subroutines)S 1789(in)S 1864(a)S 1916(parallel)S 2135(setting)S 2333(without)S 2557(modi\256cation,)S 2929(and)S 480 3546(ithout)U 660(having)S 866(to)S 944(write)S 1106(an)S 1195(envelope)S 1459(around)S 1669(the)S 1776(library)S 1978(subroutine)S 2283(call)S 2404(in)S 2482(order)S 2647(to)S 2724(conform)S 2973(to)S 2993 3642(.)U 432(some)S 593(unusual)S 820(data-passing)S 1171(conventions)S 1511(imposed)S 1756(by)S 1844(a)S 1895(given)S 2063(parallel)S 2281(programming)S 2661(environment)S 582 3774(A)U 657(parallel\(i)S 893(zable\))S 1079(program)S 1328(is)S 1398(written)S 1610(in)S 1687(terms)S 1859(of)S 1940(calls)S 2086(to)S 2163(subroutines)S 2493(which,)S 2697(in)S 2774(principle,)S 432 3966(u)U 432 3870(may)U 572(be)S 660(performed)S 960(either)S 1135(independently)S 1533(or)S 1614(according)S 1899(to)S 1976(data)S 2111(dependency)S 2451(requirements)S 2820(that)S 2944(the)S 465 3966(ser)U 569(is)S 639(responsible)S 965(for)S 1068(de\256ning.)S 1327(The)S 1455(result)S 1627(is)S 1697(a)S 1752(serial)S 1920(program)S 2169(that)S 2293(can)S 2410(run)S 2524(in)S 2601(parallel)S 2823(given)S 2995(a)S 2995 4062(e)U 432 4158(d)U 432 4062(way)U 567(to)S 643(schedule)S 898(the)S 1003(units)S 1155(of)S 1234(computation)S 1586(on)S 1676(a)S 1729(system)S 1936(of)S 2015(parallel)S 2235(processors)S 2538(while)S 2708(obeying)S 2944(th)S 465 4158(ata)U 563(dependencies.)S 60 Z 16 4710(-)U (-)R 3259(--)S EP %%Page: ? 2 BP 1 F 66 Z 432 462(w)U 1667 270(-)U 1711(2)S 1766(-)S 480 462(ith)U 584(different)S 845(levels)S 1032(of)S 1121(granularity.)S 1482(An)S 1597(ef\256cient)S 1846(implement)S 2126(ation)S 2291(may)S 2438(require)S 2658(the)S 2772(ability)S 2973(to)S 2995 558(e)U 432 654(s)U 432 558(dynamicall)U 723(y)S 781(start)S 919(processes,)S 1214(perhaps)S 1444(many)S 1615(more)S 1775(than)S 1913(the)S 2018(number)S 2244(of)S 2323(physical)S 2566(processors)S 2869(in)S 2944(th)S 458 654(ystem.)U 682(This)S 826(feature)S 1035(is)S 1106(either)S 1282(lacking)S 1502(or)S 1584(prohibitively)S 1950(expensive)S 2240(on)S 2333(most)S 2488(commercia)S 2779(lly)S 2875(avail-)S 3002 750(-)U 432 846(i)U 432 750(able)U 563(parallel)S 781(computers.)S 1116(Instead,)S 1345(many)S 1513(of)S 1590(the)S 1692(manufacturers)S 2090(have)S 2236(limited)S 2443(themselves)S 2757(to)S 2830(provid)S 450 846(ng)U 538(one-level)S 804(loop-based)S 1115(paralleli)S 1329(sm.)S 582 978(T)U (his)R 722(paper)S 890(describes)S 1157(an)S 1241(environment)S 1595(for)S 1694(the)S 1796(transportable)S 2161(implement)S 2441(ation)S 2594(of)S 2671(parallel)S 2889(algo-)S 432 1170(m)U 432 1074(rithms)U 627(in)S 705(a)S 761(Fortran)S 982(setting.)S 1223(By)S 1327(this)S 1448(we)S 1551(mean)S 1719(that)S 1843(a)S 1898(user's)S 2082(code)S 2232(is)S 2302(virtually)S 2550(identical)S 2801(for)S 2904(each)S 483 1170(achine.)U 698(The)S 827(main)S 985(tool)S 1114(in)S 1192(this)S 1314(environment)S 1673(is)S 1744(a)S 1800(package)S 2042(called)S 2225(SCHEDULE)S 2597(which)S 2785(has)S 2900(been)S 3006 1266(t)U 432 1362(a)U 432 1266(designed)U 692(to)S 769(aid)S 875(a)S 930(programmer)S 1281(familiar)S 1513(with)S 1655(a)S 1709(Fortran)S 1928(programming)S 2311(environment)S 2668(to)S 2744(implemen)S 496 1362(parallel)U 727(algorithm)S 1017(in)S 1103(a)S 1167(manner)S 1399(that)S 1532(will)S 1669(lend)S 1817(itself)S 1983(to)S 2069(transporting)S 2422(the)S 2537(resulting)S 2801(program)S 2991 1458(n)U 432 1554(s)U 432 1458(across)U 624(a)S 680(wide)S 835(variety)S 1044(of)S 1126(parallel)S 1349(machines.)S 1641(The)S 1770(package)S 2012(is)S 2083(designed)S 2344(to)S 2422(allow)S 2595(existing)S 2830(Fortra)S 458 1554(ubroutines)U 766(to)S 847(be)S 939(called)S 1125(through)S 1360(SCHEDULE,)S 1752(without)S 1982(modi\256cation,)S 2360(thereby)S 2586(permitting)S 2888(users)S 432 1746(i)U 432 1650(access)U 626(to)S 703(a)S 758(wide)S 911(body)S 1068(of)S 1148(existing)S 1381(library)S 1581(software)S 1833(in)S 1909(a)S 1963(parallel)S 2184(setting.)S 2423(Machine)S 2678(intrinsics)S 2944(are)S 450 1746(nvoked)U 670(within)S 864(the)S 970(SCHEDULE)S 1341(package,)S 1599(and)S 1720(considerable)S 2078(effort)S 2249(may)S 2387(be)S 2474(required)S 2718(on)S 2809(our)S 2922(part)S 432 1938(S)U 432 1842(to)U 529(move)S 721(SCHEDULE)S 1111(from)S 1284(one)S 1424(machine)S 1691(to)S 1787(another.)S 2068(On)S 2194(the)S 2319(other)S 2499(hand,)S 2689(the)S 2814(user)S 2969(of)S 469 1938(CHEDULE)U 801(is)S 869(relieved)S 1104(of)S 1183(the)S 1287(burden)S 1494(of)S 1573(modifying)S 1871(each)S 2015(code)S 2163(he)S 2249(disires)S 2445(to)S 2520(transport)S 2778(from)S 2929(one)S 432 2034(machine)U 676(to)S 749(another.)S 582 2166(Our)U 717(work)S 885(has)S 1005(primarily)S 1281(been)S 1437(in\257uenced)S 1743(by)S 1840(the)S 1951(work)S 2118(of)S 2204(R.)S 2296(Babb)S 2466(J.C.)S 2601(Browne)S 2841(and)S 2967(E.)S 432 2358(e)U 432 2262(Lusk)U 595(and)S 721(R.)S 813(Overbeek)S 1100(.)S 1170(We)S 1292(present)S 1513(here)S 1657(our)S 1775(approach,)S 2063(which)S 2254(aids)S 2390(in)S 2471(the)S 2581(programming)S 2969(of)S 461 2358(xplicitly)U 705(parallel)S 927(algorithms)S 1234(in)S 1311(Fortran)S 1531(and)S 1652(which)S 1839(allows)S 2037(one)S 2158(to)S 2235(make)S 2403(use)S 2517(of)S 2597(existing)S 2830(Fortran)S 3006 2454(t)U 432 2550(h)U 432 2454(libraries)U 673(in)S 750(the)S 856(parallel)S 1078(setting.)S 1318(The)S 1446(approach)S 1713(taken)S 1881(here)S 2020(should)S 2221(be)S 2308(regarded)S 2563(as)S 2643(minimali)S 2879(st:)S 2988(i)S 465 2550(as)U 545(a)S 599(very)S 741(limited)S 951(scope.)S 1165(There)S 1343(are)S 1448(two)S 1572(reasons)S 1795(for)S 1897(this.)S 2056(First,)S 2218(the)S 2322(goal)S 2459(of)S 2538(portability)S 2835(of)S 2914(user)S 432 2742(p)U 432 2646(code)U 589(will)S 724(be)S 818(less)S 949(dif\256cult)S 1189(to)S 1272(achieve.)S 1543(Second,)S 1786(the)S 1898(real)S 2028(hope)S 2188(for)S 2297(a)S 2358(solution)S 2602(to)S 2685(the)S 2797(software)S 465 2742(roblems)U 719(associated)S 1031(with)S 1189(parallel)S 1426(programming)S 1825(lies)S 1957(with)S 2115(new)S 2266(programming)S 2665(languages)S 2969(or)S 3002 2838(-)U 432 2934(t)U 432 2838(perhaps)U 661(with)S 802(the)S 5 F 906(")S 1 F (right)R 5 F (")R 1 F 1110(extension)S 1386(to)S 1461(Fortran.)S 1718(Our)S 1845(approach)S 2110(is)S 2178(expected)S 2434(to)S 2508(have)S 2655(a)S 2707(limited)S 2915(life)S 450 2934(ime.)U 609(Its)S 697(purpose)S 928(is)S 994(to)S 1067(allow)S 1235(us)S 1316(to)S 1389(exploit)S 1593(existing)S 1823(hardware)S 2090(immediat)S 2337(ely.)S 3 F 432 3222(2.)U 526(Terminology)S 1 F 582 3354(Within)U 796(the)S 908(science)S 1133(of)S 1220(parallel)S 1447(computation)S 1806(there)S 1968(seems)S 2160(to)S 2242(be)S 2335(no)S 2432(standard)S 2686(de\256nition)S 2969(of)S 5 F 432 3546(")U 1 F 432 3450(terms.)U 648(A)S 727(certain)S 936(terminology)S 1288(will)S 1421(be)S 1514(adopted)S 1753(here)S 1897(for)S 2005(the)S 2116(sake)S 2264(of)S 2350(dialogue.)S 2646(It)S 2716(will)S 2848(not)S 2962(be)S 460 3546(standard)U 5 F (")R 1 F 733(and)S 850(is)S 916(intended)S 1164(only)S 1303(to)S 1376(apply)S 1544(within)S 1734(the)S 1836(scope)S 2008(of)S 2085(this)S 2202(document.)S 432 3738(Process)U 656(-)S 700(A)S 770(unit)S 894(of)S 971(computation,)S 1338(an)S 1422(independently)S 1816(executable)S 2118(Fortran)S 652 3834(subroutine)U 952(together)S 1189(with)S 1328(calling)S 1528(sequence)S 1791(parameters,)S 2118(common)S 432 4122(T)U 652 3930(data,)U 800(and)S 917(externals.)S 472 4122(ask)U 648(-)S 692(A)S 762(main)S 915(program,)S 1177(processes,)S 1469(and)S 1586(a)S 1637(virtual)S 1830(processor.)S 2312 4314(y)U 60 Z 16 4710(-)U 66 Z 432 4314(Virtual)U 640(Processor)S 919(-)S 963(A)S 1033(process)S 1253(designed)S 1509(to)S 1582(assume)S 1798(the)S 1900(identity)S 2122(of)S 2199(ever)S 60 Z 36 4710(-)U 3259(--)S EP %%Page: ? 1 BP 1 F 60 Z 16 -42(--)U 3259(--)S 2 F 66 Z 1250 582(J)U 3 F 72 Z 1272 438(SCHEDULE)U 1692(USERS)S 1948(GUIDE)S 2 F 66 Z 1279 582(.)U 1318(J.)S 1386(Dongarra)S 1673(and)S 1794(D.)S 1881(C.)S 1964(Sorensen)S 1 F 60 Z 2182 690(n)U 1097(Mathemati)S 1359(cs)S 1429(and)S 1536(Computer)S 1797(Science)S 2005(Divisio)S 1292 762(Argonne)U 1522(National)S 1750(Laboratory)S 1322 906(A)U 1375 834(9700)U 1515(South)S 1675(Cass)S 1808(Avenue)S 1365 906(rgonne,)U 1567(Illinois)S 1758(60439-4844)S 3 F 66 Z 432 1098(1.)U 526(Introduction)S 1 F 582 1230(Many)U 763(new)S 900(parallel)S 1123(computers)S 1424(are)S 1531(now)S 1672(emerging)S 1947(as)S 2029(commercia)S 2320(l)S 2365(products)S 2619(Exploitati)S 2877(on)S 2969(of)S 3002 1326(r)U 432 1422(d)U 432 1326(the)U 543(parallel)S 770(capabilit)S 995(ies)S 1099(requires)S 1342(either)S 1522(extensions)S 1831(to)S 1912(an)S 2004(existing)S 2242(language)S 2509(such)S 2660(as)S 2745(Fortran)S 2969(o)S 465 1422(evelopment)U 801(of)S 886(an)S 978(entirely)S 1208(new)S 1348(language.)S 1653(A)S 1730(number)S 1960(of)S 2044(activiti)S 2225(es)S 2309(are)S 2418(under)S 2597(way)S 2736(to)S 2816(develop)S 3002 1518(-)U 432 1614(a)U 432 1518(new)U 570(languages)S 861(that)S 987(promise)S 1227(to)S 1306(provide)S 1535(the)S 1643(ability)S 1838(to)S 1917(exploit)S 2126(paralleli)S 2340(sm)S 2444(without)S 2672(the)S 2779(consider)S 461 1614(ble)U 568(effort)S 741(that)S 866(may)S 1006(be)S 1095(required)S 1341(in)S 1419(using)S 1588(an)S 1676(inherently)S 1968(serial)S 2136(language)S 2399(that)S 2523(has)S 2637(been)S 2787(extended)S 2995 1710(e)U 432 1806(s)U 432 1710(for)U 539(paralleli)S 753(sm.)S 899(We)S 1020(applaud)S 1258(such)S 1409(activiti)S 1590(es)S 1675(and)S 1800(expect)S 2001(they)S 2144(will)S 2276(offer)S 2434(a)S 2492(true)S 2623(solution)S 2864(to)S 2944(th)S 458 1806(oftware)U 682(dilemma)S 934(in)S 1008(the)S 1111(future.)S 1330(However,)S 1612(in)S 1686(the)S 1789(short)S 1944(term)S 2087(we)S 2187(feel)S 2308(there)S 2462(is)S 2529(a)S 2581(need)S 2728(to)S 2801(confront)S 432 1998(e)U 432 1902(some)U 604(of)S 692(the)S 805(software)S 1065(issues,)S 1273(with)S 1423(particular)S 1707(emphasis)S 1985(placed)S 2189(on)S 2288(transportabilit)S 2656(y)S 2722(and)S 2849(use)S 2969(of)S 461 1998(xisting)U 662(software.)S 582 2130(O)U (ur)R 718(interests)S 970(lie)S 1068(mainly)S 1283(with)S 1432(mathemat)S 1690(ical)S 1816(software)S 2075(typically)S 2336(associated)S 2638(with)S 2787(scienti\256c)S 3002 2226(f)U 432 2322(a)U 432 2226(computations.)U 851(Therefore,)S 1153(we)S 1256(concentrate)S 1583(here)S 1721(on)S 1812(using)S 1980(the)S 2085(Fortran)S 2304(language.)S 2605(Each)S 2761(vendor)S 2969(o)S 488 2322(parallel)U 711(machine)S 960(designed)S 1221(primarily)S 1492(for)S 1596(numerical)S 1885(calculat)S 2088(ions)S 2225(has)S 2340(provided)S 2600(its)S 2688(own)S 2828(parallel)S 432 2514(t)U 432 2418(extensions)U 739(to)S 819(Fortran.)S 1081(These)S 1267(extensions)S 1574(have)S 1726(taken)S 1896(many)S 2070(forms)S 2252(already)S 2473(and)S 2596(are)S 2704(usually)S 2922(dic-)S 450 2514(ated)U 586(by)S 679(the)S 786(underlying)S 1098(hardware)S 1370(and)S 1492(by)S 1585(the)S 1692(capabilit)S 1917(ies)S 2017(that)S 2142(the)S 2249(vendor)S 2459(wishes)S 2665(to)S 2742(supply)S 2944(the)S 432 2706(e)U 432 2610(user.)U 631(This)S 776(has)S 892(led)S 1000(to)S 1079(widely)S 1286(different)S 1540(extensions)S 1846(ranging)S 2075(from)S 2231(the)S 2339(ability)S 2534(to)S 2613(synchronize)S 2958(on)S 461 2706(very)U 601(assignment)S 920(of)S 998(a)S 1050(variable)S 1284(with)S 1424(a)S 1476(full)S 1589(empty)S 1775(property)S 2020(to)S 2093(attempts)S 2337(at)S 2406(automatic)S 2664(ally)S 2784(detecting)S 3002 2802(-)U 432 2898(t)U 432 2802(loop-based)U 749(paralleli)S 963(sm)S 1068(with)S 1213(a)S 1270(preprocessing)S 1664(compiler)S 1925(aided)S 2095(by)S 2189(user)S 2326(directives)S 2608(The)S 2737(act)S 2840(of)S 2922(get)S 450 2898(ing)U 562(a)S 619(parallel)S 843(process)S 1069(executing)S 1352(on)S 1446(a)S 1503(physical)S 1750(processor)S 2031(ranges)S 2230(from)S 2385(a)S 2441(simple)S 5 F 2643(")S 1 F (create)R 5 F (")R 1 F 2882(state-)S 432 3090(o)U 432 2994(ment)U 586(which)S 770(imposes)S 1009(the)S 1112(overhead)S 1376(of)S 1453(a)S 1504(subroutine)S 1804(call,)S 1937(to)S 5 F 2010(")S 1 F (tskstart)R 5 F (")R 1 F 2278(which)S 2461(imposes)S 2699(an)S 2783(overhead)S 465 3090(n)U 536(the)S 654(order)S 831(of)S 924(10)S 1051(machine)S 1310(cycles,)S 1528(to)S 1616(no)S 1719(formal)S 1931(mechanism)S 2267(whatsoever)S 2604(These)S 2798(different)S 432 3186(a)U 48 Z 990 3063(6)U 66 Z 461 3186(pproaches)U 755(re\257ect)S 946(characteri)S 1204(stics)S 1347(of)S 1428(underlying)S 1739(hardware)S 2010(and)S 2131(operating)S 2405(systems)S 2640(and)S 2761(to)S 2838(a)S 2893(large)S 432 3378(e)U 432 3282(extent)U 615(are)S 718(dictated)S 947(by)S 1035(the)S 1137(vendors)S 1368(view)S 1518(of)S 1595(which)S 1778(aspects)S 1990(of)S 2067(paralleli)S 2281(sm)S 2380(are)S 2482(marketable)S 2773(.)S 2812(It)S 2874(is)S 2940(too)S 461 3378(arly)U 589(to)S 666(impose)S 882(a)S 937(standard)S 1186(on)S 1278(these)S 1439(vendors,)S 1691(yet)S 1797(it)S 1859(is)S 1929(disconcerting)S 2309(that)S 2433(there)S 2590(is)S 2660(no)S 2751(agreement)S 432 3570(u)U 432 3474(among)U 642(any)S 768(of)S 854(them)S 1016(on)S 1113(which)S 1305(extensions)S 1614(should)S 1821(be)S 1914(included.)S 2210(There)S 2393(is)S 2467(not)S 2581(even)S 2735(an)S 2827(agreed-)S 465 3570(pon)U 593(naming)S 819(convention)S 1140(for)S 1245(extensions)S 1551(that)S 1677(have)S 1829(identical)S 2082(functionalit)S 2384(y.)S 2484(Program)S 2739(developers)S 3002 3666(f)U 432 3762(d)U 432 3666(interested)U 719(in)S 802(producing)S 1101(implement)S 1381(ations)S 1570(of)S 1657(parallel)S 1885(algorithms)S 2198(that)S 2328(will)S 2461(run)S 2580(on)S 2677(a)S 2737(number)S 2969(o)S 465 3762(ifferent)U 692(parallel)S 922(machines)S 1204(are)S 1318(therefore)S 1589(faced)S 1765(with)S 1916(an)S 2012(overwhelming)S 2425(task.)S 2603(The)S 2738(process)S 2969(of)S 432 3954(c)U 432 3858(developing)U 749(portable)S 989(parallel)S 1210(packages)S 1476(is)S 1545(complicat)S 1803(ed)S 1890(by)S 1981(additional)S 2268(factors)S 2472(that)S 2595(lie)S 2685(beyond)S 2904(each)S 461 3954(omputer)U 704(manufacturer)S 1078(supplying)S 1362(its)S 1448(own,)S 1602(very)S 1742(different)S 1991(mechanism)S 2313(for)S 2413(parallel)S 2632(processing.)S 2976(A)S 2998 4050(s)U 0 F 48 Z 432 4110 M 8 22 0 0 16 0 0 18 PS16 1 F 66 Z 432 4050(given)U 606(implement)S 886(ation)S 1045(may)S 1185(require)S 1398(several)S 1611(different)S 1864(communicat)S 2188(ing)S 2299(parallel)S 2522(processes,)S 2819(perhap)S 0 F 48 Z 456 4110 M 8 22 0 0 16 0 0 18 PS16 480 4110 M 8 22 0 0 16 0 0 18 PS16 504 4110 M 8 22 0 0 16 0 0 18 PS16 528 4110 M 8 22 0 0 16 0 0 18 PS16 552 4110 M 8 22 0 0 16 0 0 18 PS16 576 4110 M 8 22 0 0 16 0 0 18 PS16 600 4110 M 8 22 0 0 16 0 0 18 PS16 624 4110 M 8 22 0 0 16 0 0 18 PS16 648 4110 M 8 22 0 0 16 0 0 18 PS16 672 4110 M 8 22 0 0 16 0 0 18 PS16 696 4110 M 8 22 0 0 16 0 0 18 PS16 720 4110 M 8 22 0 0 16 0 0 18 PS16 744 4110 M 8 22 0 0 16 0 0 18 PS16 768 4110 M 8 22 0 0 16 0 0 18 PS16 792 4110 M 8 22 0 0 16 0 0 18 PS16 816 4110 M 8 22 0 0 16 0 0 18 PS16 840 4110 M 8 22 0 0 16 0 0 18 PS16 1 F 432 4170(*)U 477(Work)S 607(supported)S 817(in)S 875(part)S 970(by)S 1039(the)S 1118(Applied)S 1293(Mathematic)S 1520(al)S 1575(Sciences)S 1763(subprogram)S 2013(of)S 2074(the)S 2153(Of\256ce)S 2294(of)S 2355(Energy)S 2514(Research,)S 2722(U.S.)S 60 Z 16 4710(-)U 48 Z 432 4230(Department)U 673(of)S 729(Energy,)S 895(under)S 1020(Contracts)S 1219(W-31-109-Eng-38,)S 1601(DE-AC05-840R21400.)S 60 Z 36 4710(-)U 3259(--)S EP %%Trailer pscatsave end restore %%Pages: 37 .