%!PS-Adobe-1.0 %%Creator: anl-mcs:dongarra (Jack &,C232,7246,3129635225) %%Title: stdin Troff %%CreationDate: Mon Dec 7 15:37:48 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: ? 32 BP 1 F 60 Z 16 2328(-)U (-)R 3259(--)S EP %%Page: ? 31 BP 2 F 72 Z 1821 438(3)U 950 534(S)U 1511 438(Figure)U 1731(11.)S 986 534(CHEDULE)U 1342(Output)S 1566(from)S 1726(Domain)S 1982(Decomposition)S 3 F 432 726(12.)U 570(Conclusions)S 1 F 582 858(The)U 726(construction)S 1113(SCHEDULE)S 1520(has)S 1647(evolved)S 1906(naturally)S 2193(during)S 2412(the)S 2531(course)S 2750(of)S 2841(our)S 432 1050(m)U 432 954(experience)U 804(with)S 992(programming)S 1444(various)S 1715(parallel)S 1990(machines.)S 2363(We)S 2522(are)S 2669(primarily)S 488 1050(otivated)U 751(by)S 853(the)S 971(lack)S 1121(of)S 1211(unformity)S 1529(and)S 1663(limited)S 1897(capabilities)S 2255(offered)S 2493(by)S 2595(vendors)S 2853(for)S 432 1242(a)U 432 1146(explicit)U 680(parallel)S 928(programming.)S 1393(We)S 1524(are)S 1643(deeply)S 1866(indebted)S 2145(to)S 2232(our)S 2359(colleagues)S 2694(who)S 2849(are)S 464 1242(ctive)U 641(in)S 734(similar)S 971(pursuits)S 1236(and)S 1377(we)S 1498(have)S 1671(used)S 1840(many)S 2037(of)S 2134(their)S 2303(ideas)S 2488(in)S 2581(constructing)S 2905 1338(e)U 432 1434(f)U 432 1338(SCHEDULE.)U 851(However,)S 1158(although)S 1435(we)S 1543(have)S 1703(been)S 1863(greatly)S 2087(in\257uenced)S 2411(by)S 2507(their)S 2663(work,)S 2853(w)S 456 1434(eel)U 572(that)S 712(our)S 840(experience)S 1184(with)S 1344(numerical)S 1664(software)S 1944(has)S 2072(guided)S 2300(us)S 2395(in)S 2482(subtly)S 2689(different)S 2917 1530(t)U 432 1626(t)U 432 1530(directions.)U 788(It)S 862(is)S 940(our)S 1066(view)S 1235(that)S 1372(the)S 1489(user)S 1638(interface)S 1919(at)S 2000(this)S 2133(point)S 2310(in)S 2395(time)S 2552(is)S 2629(paramoun)S 452 1626(o)U 514(the)S 628(utility)S 826(of)S 912(such)S 1070(an)S 1164(effort.)S 1392(Our)S 1530(goal)S 1680(has)S 1802(been)S 1964(to)S 2046(provide)S 2292(a)S 2350(methodology)S 2756(that)S 2889(is)S 432 1818(d)U 432 1722(within)U 649(the)S 770(grasp)S 959(of)S 1052(a)S 1117(capable)S 1369(Fortran)S 1613(programmer)S 2001(and)S 2137(a)S 2201(to)S 2289(provide)S 2541(syntax)S 2761(which)S 468 1818(oes)U 589(not)S 706(represent)S 995(a)S 1052(radical)S 1273(departure)S 1570(in)S 1651(appearance)S 2000(from)S 2165(standard)S 2433(Fortran)S 2669(program-)S 432 2010(w)U 432 1914(ming.)U 626(We)S 754(have)S 918(already)S 1158(modi\256ed)S 1442(this)S 1574(interface)S 1853(several)S 2084(times)S 2267(based)S 2458(upon)S 2629(interaction)S 484 2010(ith)U 593(users.)S 816(The)S 961(current)S 1198(approach)S 1495(has)S 1624(evolved)S 1885(from)S 2058(a)S 2123(package)S 2392(written)S 2629(entirely)S 2881(in)S 2909 2106(s)U 432(Fortran)S 683(to)S 778(one)S 921(requiring)S 1224(a)S 1668(interface.)S 2001(Our)S 2151(goal)S 2313(of)S 2411(transportability)S 2889(i)S 2 F 66 Z 1295(C)S 4 F 1361(-)S 2 F 1420(Fortran)S 1 F 60 Z 16 2550(-)U (-)R 3259(--)S 72 Z 432 3054(m)U 1600 2862(-)U 1648(32)S 1744(-)S 488 3054(ade)U 614(more)S 788(dif\256cult)S 1042(with)S 1196(this)S 1326(requirement)S 1700(due)S 1830(to)S 1912(the)S 2025(lack)S 2170(of)S 2255(standardization)S 2720(of)S 2805(such)S 2917 3150(l)U 432 3246(c)U 432 3150(an)U 529(interface.)S 852(However,)S 1163(our)S 1288(goal)S 1441(of)S 1530(providing)S 1839(clean)S 2020(user)S 2169(interface)S 2449(with)S 2605(the)S 2721(paralle)S 464 3246(apabilities)U 784(seems)S 984(to)S 1064(require)S 1292(this)S 1420(mixed)S 1624(language)S 1908(approach.)S 2905 3378(e)U 432 3474(d)U 582 3378(Our)U 719(experience)S 1056(with)S 1209(SCHEDULE)S 1610(has)S 1731(been)S 1892(encouraging)S 2273(for)S 2382(the)S 2495(most)S 2659(part.)S 2837(W)S 468 3474(o)U 531(not)S 650(view)S 817(it)S 884(as)S 971(a)S 5 F 1030(")S 1 F (solution)R 5 F (")R 1 F 1349(to)S 1432(the)S 1547(software)S 1822(problem)S 2089(we)S 2199(face)S 2345(in)S 2427(parallel)S 2669(program-)S 2917 3570(l)U 432 3666(h)U 432 3570(ming.)U 650(However,)S 960(we)S 1072(do)S 1172(think)S 1347(this)S 1478(will)S 1617(be)S 1712(useful)S 1915(in)S 1998(the)S 2113(short)S 2284(term)S 2443(and)S 2574(perhaps)S 2825(wil)S 468 3666(ave)U 592(some)S 768(in\257uence)S 1056(on)S 1152(the)S 1264(development)S 1660(of)S 1744(a)S 1800(long)S 1952(term)S 2108(solution.)S 3 F 432 3954(Acknowledgements)U 1 F 582 4086(We)U 711(would)S 920(like)S 1057(to)S 1142(thank)S 1331(Terry)S 1520(Disz)S 1681(for)S 1794(introducing)S 2155(us)S 2248(to)S 2333(the)S 2449(graphic)S 2693(environ-)S 3 F 432 4470(R)U 1 F 432 4182(ment)U 600(RT/1)S 772(and)S 900(his)S 1008(assistance)S 1320(in)S 1400(making)S 1640(the)S 1752(graphics)S 2020(interface)S 2296(work.)S 3 F 484 4470(eferences)U EP %%Page: ? 30 BP 1 F 72 Z 432 18(c)U (haracteristics)R 869(are)S 982(spawned)S 1259(off)S 1367(there)S 1535(as)S 1619(well.)S 1809(These)S 2005(processes)S 2305(just)S 2433(continue)S 2705(to)S 2785(solve)S 2917 114(t)U 432(the)S 558(boundary)S 868(layer)S 1050(problem)S 1328(as)S 1426(soon)S 1600(as)S 1698(the)S 1824(characteristics)S 2274(meet)S 2451(the)S 2576(boundary)S 2885(a)S 575 210(.)U 645(Process)S 893(6)S 957(solves)S 1165(the)S 1281(full)S 1409(equation)S 1684(in)S 1767(the)S 1882(internal)S 2129(layer)S 2300(while)S 2487(process)S 2730(5)S 2793(grids)S 432 306(t)U 2 F 66 Z 432 210(x)U 4 F 483(=)S 1 F 542(1)S 72 Z 452 306(he)U 556(region)S 776(where)S 988(the)S 1112(internal)S 1368(and)S 1507(boundary)S 1814(layers)S 2021(meet.)S 2238(Both)S 2413(5)S 2484(and)S 2623(6)S 2694(must)S 2869(be)S 432 498(b)U 432 402(completed)U 763(before)S 978(node)S 1149(7)S 1215(can)S 1345(execute)S 1595(to)S 1681(solve)S 1863(the)S 1981(equation)S 2259(where)S 2465(the)S 2583(internal)S 2833(and)S 468 498(oundary)U 728(layers)S 924(meet.)S 1130(Node)S 1310(1)S 1370(is)S 1442(a)S 1498(dummy)S 1742(node)S 1906(used)S 2062(to)S 2142(collect)S 2358(all)S 2454(the)S 2566(results.)S 60 Z 3279 2766(-)U 16(--)S 3259(-)S 72 Z 1600 3078(-)U 1648(31)S 1744(-)S EP %%Page: ? 29 BP 1 F 72 Z 432 21(c)U (haracteristics)R 868(coordinate)S 1196(transformation)S 2009(with)S 2 F 66 Z 1273 225(d)U 1 F 1644 21(\()U 2 F (x)R 1 F (,)R 2 F (t)R 1 F (\))R 4 F 1774(\256)S 1 F 1862(\()S 4 F (x)R 1 F (,)R 4 F (t)R 1 F (\))R 2 F 1306 225(t)U 1268 141(d)U (x)R 0 F 1258 159 M 11 22 1 0 16 0 0 18 PS16 1274 159 M 11 22 1 0 16 0 0 18 PS16 1307 159 M 11 22 1 0 16 0 0 18 PS16 4 F 1368 177(=)U 2 F 1427(c)S 1 F (\()R 2 F (x)R 1 F (,)R 2 F (t)R 1 F (\))R 1586(,)S 2 F 1647(x)S 1 F (\(0\))R 4 F 1775(=)S 1834(x)S 1 F 1889(,)S 2 F 1950(t)S 4 F 1990(\272)S 2049(t)S 2 F 2100(.)S 72 Z 1002 2361(S)U 1511 2265(Figure)U 1731(11.2)S 1038 2361(ubdomains)U 1378(of)S 1458(Convection)S 1810(Diffusion)S 2102(Equation)S 1 F 2901 2457(d)U 432 2553(t)U 432 2457(We)U 572(refer)S 748(the)S 876(reader)S 1096(to)S 1192(Chin)S 1372(Hedstrom)S 1696(for)S 1820(details.)S 2090(The)S 2242(parallelism)S 2602(is)S 2689(obtaine)S 452 2553(hrough)U 688(solving)S 932(for)S 1048(these)S 1228(characteristics)S 1671(in)S 1758(parallel)S 2005(block)S 2196(fashion)S 2439(with)S 2598(the)S 2717(number)S 60 Z 3279 2982(-)U 16(--)S 3259(-)S 72 Z 1600 3294(-)U 1648(30)S 1744(-)S 2909 3486(s)U 432 3582(o)U 432 3486(of)U 518(characteristics)S 956(associated)S 1278(with)S 1432(each)S 1590(block)S 1776(tuned)S 1962(to)S 2044(the)S 2158(number)S 2403(of)S 2488(vector)S 2693(register)S 468 3582(n)U 531(a)S 590(physical)S 857(processor.)S 1201(For)S 1327(the)S 1441(Alliant)S 1667(computer)S 1965(this)S 2095(number)S 2341(was)S 2479(32.)S 2619(The)S 2757(vector)S 432 3774(u)U 432 3678(processor)U 733(was)S 870(used)S 1027(as)S 1112(an)S 1205(SIMD)S 1410(engine)S 1627(to)S 1708(compute)S 1981(these)S 2154(characteristics)S 2591(in)S 2672(lock)S 2821(step)S 468 3774(sing)U 619(the)S 738(step)S 885(size)S 1027(control)S 1261(associated)S 1587(with)S 1745(the)S 1863(ODE)S 2041(solver)S 2247(for)S 2361(a)S 2423(system)S 2653(of)S 2743(ODEs.)S 432 3966(A)U 432 3870(The)U 577(solver)S 786(used)S 951(in)S 1040(this)S 1177(case)S 1334(was)S 1479(the)S 1600(code)S 1769(of)S 1862(Shampine)S 2183(and)S 2320(Allen)S 2513(Shampine)S 2833(and)S 484 3966(llen)U 623(The)S 766(domain)S 1013(decomposition)S 1468(consisted)S 1767(of)S 1858(two)S 1997(regions)S 2239(where)S 2445(the)S 2563(solution)S 2825(was)S 2913 4062(-)U 432 4158(t)U 432 4062(taken)U 615(to)S 698(be)S 793(constants)S 1088(on)S 1187(these)S 1362(characteristics,)S 1819(an)S 1914(internal)S 2161(layer)S 2332(where)S 2535(the)S 2650(full)S 2777(equa)S 452 4158(ion)U 574(was)S 716(solved,)S 952(a)S 1014(boundary)S 1316(layer)S 1490(where)S 1696(two)S 1834(point)S 2012(boundary)S 2314(value)S 2500(problems)S 2797(were)S 432 4254(solved)U 644(,)S 686(and)S 814(a)S 870(region)S 1078(where)S 1278(the)S 1390(internal)S 1634(layer)S 1802(meets)S 1994(the)S 2106(boundary)S 2402(layer.)S 582 4386(In)U 669(the)S 784(following)S 1091(graphics)S 1362(output,)S 1591(Figure)S 1806(11.3,)S 1977(from)S 2143(SCHEDULE)S 2545(we)S 2655(show)S 2833(this)S 2913 4482(-)U 432 4578(t)U 432 4482(program)U 704(executing.)S 1054(Node)S 1238(4)S 1302(corresponds)S 1678(to)S 1762(gridding)S 2034(the)S 2150(internal)S 2398(layer)S 2570(with)S 2725(charac)S 452 4578(eristics.)U 726(Note)S 894(that)S 1030(there)S 1201(is)S 1276(dynamic)S 1551(spawning)S 1854(of)S 1941(blocks)S 2156(of)S 2243(32)S 2342(characteristics)S 2781(made)S 432 4674(there.)U 657(Nodes)S 880(2)S 955(and)S 1098(3)S 1173(correspond)S 1532(to)S 1627(convection)S 1982(only)S 2149(regions)S 2399(and)S 2541(blocks)S 2767(of)S 2865(32)S EP %%Page: ? 28 BP 2 F 72 Z 1511 1086(F)U (igure)R 1731(11.1)S 2004 1182(E)U 1 F 432 1278(N)U 2 F 1296 1182(Output)U 1520(from)S 1680(SCHEDUL)S 1 F 484 1278(ote)U 613(that)S 761(the)S 889(graph)S 1093(produced)S 1401(by)S 1513(SCHEDULE)S 1929(corresponds)S 2317(very)S 2485(closely)S 2729(to)S 2849(the)S 2913 1374(-)U 432 1470(t)U 432 1374(abstract)U 684(graph)S 876(a)S 936(user)S 1084(might)S 1280(de\256ne)S 1484(for)S 1596(this)S 1728(algorithm.)S 2077(In)S 2164(Figure)S 2379(11.1)S 2532(we)S 2643(see)S 2762(a)S 2821(par)S 452 1470(ially)U 613(executed)S 902(program.)S 1221(The)S 1366(square)S 1587(nodes)S 1787(show)S 1971(dynamically)S 2359(spawned)S 2643(processes,)S 432 1662(s)U 432 1566(while)U 620(the)S 736(round)S 932(nodes)S 1128(show)S 1307(the)S 1422(static)S 1601(partitioning.)S 2006(A)S 2085(particular)S 2388(point)S 2563(of)S 2650(interest)S 2889(is)S 460 1662(tatic)U 619(node)S 794(number)S 1049(5)S 1120(which)S 1331(had)S 1470(the)S 1593(potential)S 1879(for)S 1997(spawning)S 2307(processes)S 2617(just)S 2755(as)S 2849(the)S 2913 1758(-)U 432 1854(c)U 432 1758(other)U 611(nodes)S 810(on)S 913(that)S 1052(level)S 1223(but)S 1346(didn't)S 1549(because)S 1808(a)S 1871(computation)S 2262(done)S 2433(at)S 2516(run)S 2643(time)S 2801(indi)S 464 1854(ated)U 610(there)S 780(was)S 918(not)S 1036(enough)S 1274(work)S 1448(at)S 1526(this)S 1656(node)S 1822(to)S 1904(warrant)S 2150(the)S 2263(spawning)S 2564(of)S 2649(additional)S 432 2046(m)U 432 1950(processes.)U 790(This)S 958(graph)S 1161(demonstrates)S 1580(the)S 1707(utility)S 1918(of)S 2017(such)S 2188(a)S 2259(capability)S 2582(because)S 2849(the)S 488 2046(aximum)U 754(number)S 1004(of)S 1093(concurrently)S 1486(executing)S 1795(processes)S 2100(was)S 2241(met)S 2378(at)S 2459(nearly)S 2668(all)S 2769(levels)S 432 2238(p)U 432 2142(of)U 527(the)S 650(computation.)S 1087(Without)S 1358(the)S 1481(potential)S 1768(of)S 1863(dynamically)S 2253(spawned)S 2539(processes)S 2849(the)S 468 2238(erformance)U 828(of)S 920(the)S 1040(parallel)S 1288(algorithm)S 1600(would)S 1812(be)S 1912(very)S 2071(poor)S 2234(due)S 2369(to)S 2456(the)S 2575(loss)S 2718(of)S 2809(con-)S 2919 2334(.)U 432 2430(W)U 432 2334(currency)U 728(associated)S 1068(with)S 1240(the)S 1372(divide)S 1596(and)S 1744(conquer)S 2020(nature)S 2244(of)S 2348(the)S 2480(static)S 2675(partition)S 500 2430(ithout)U 696(dynamic)S 972(spawning)S 1276(the)S 1392(number)S 1639(of)S 1726(concurrent)S 2061(processes)S 2364(decreases)S 2667(by)S 2766(a)S 2825(fac-)S 432 2622(r)U 432 2526(tor)U 545(of)S 638(two)S 779(at)S 864(each)S 1029(level)S 1202(of)S 1295(the)S 1416(graph.)S 1631(This)S 1792(is)S 1873(even)S 2041(more)S 2221(disappointing)S 2645(when)S 2833(one)S 456 2622(ealizes)U 683(that)S 822(the)S 941(amount)S 1188(of)S 1279(work)S 1458(usually)S 1697(will)S 1840(be)S 1939(at)S 2022(a)S 2085(maximum)S 2408(in)S 2495(the)S 2614(nodes)S 2813(near)S 432 2814(e)U 432 2718(the)U 549(root)S 694(of)S 783(the)S 900(tree.)S 1079(Moreover,)S 1409(with)S 1565(this)S 1697(particular)S 2001(algorithm)S 2309(dynamic)S 2585(spawning)S 2889(is)S 464 2814(ssential)U 720(because)S 988(the)S 1116(amount)S 1372(of)S 1472(work)S 1660(at)S 1751(any)S 1894(given)S 2093(node)S 2272(is)S 2359(proportional)S 2754(to)S 2849(the)S 60 Z 3279 3198(-)U 16(--)S 3259(-)S 72 Z 1600 3510(-)U 1648(29)S 1744(-)S 2913 3702(-)U 432 3798(d)U 432 3702(number)U 682(of)S 772(roots)S 946(to)S 1032(be)S 1129(found)S 1326(at)S 1407(that)S 1544(node,)S 1731(but)S 1852(this)S 1985(number)S 2234(will)S 2375(be)S 2472(problem)S 2741(depen)S 468 3798(ent)U 580(and)S 708(determinable)S 1108(only)S 1260(at)S 1336(the)S 1448(time)S 1600(of)S 1684(execution.)S 2913 3930(-)U 432 4026(l)U 582 3930(Another)U 846(interesting)S 1178(example)S 1450(is)S 1526(associated)S 1850(with)S 2005(an)S 2100(algorithm)S 2407(for)S 2518(solving)S 2757(singu)S 452 4026(arly)U 608(perturbed)S 927(convection)S 1286(diffusion)S 1589(PDE.)S 1810(An)S 1941(algorithm)S 2264(based)S 2471(upon)S 2658(the)S 2789(ideas)S 2913 4122(-)U 432 4218(a)U 432 4122(presented)U 737(in)S 822(Chin)S 991(Hedstrom)S 1304(has)S 1429(been)S 1593(implemented)S 1997(using)S 2181(SCHEDULE)S 2585(on)S 2685(the)S 2801(Alli)S 464 4218(nt)U 544(FX/8.)S 758(This)S 910(algorithm)S 1214(solves)S 2 F 48 Z 966 4365(t)U 1230(x)S 66 Z 933 4350(u)U 4 F 1001(+)S 2 F 1060(c)S 1 F (\()R 2 F (x)R 1 F (,)R 2 F (t)R 1 F (\))R 2 F (u)R 4 F 1273(=)S 1332(eD)S 2 F (u)R 1 F 1456(,)S 1517(0)S 4 F 1572(\243)S 2 F 1631(t)S 4 F 1671(\243)S 1730(\245)S 1 F (,)R 1839(0)S 4 F 1894(\243)S 2 F 1953(x)S 4 F 2004(\243)S 1 F 2063(1)S 2118(,)S 2179(0)S 4 F 2234(<)S 2293(e)S 2344(<)S 1 F 2403(1)S 72 Z 2909 4485(s)U 432 4581(t)U 432 4485(given)U 621(appropriate)S 978(initial)S 1175(data)S 1324(and)S 1457(boundary)S 1758(conditions.)S 2129(The)S 2269(basis)S 2441(of)S 2529(the)S 2645(method)S 2889(i)S 452 4581(o)U 521(use)S 650(asymptotic)S 999(analysis)S 1264(of)S 1357(the)S 1478(dominate)S 1779(scales)S 1984(of)S 2077(the)S 2198(equation)S 2479(in)S 2568(various)S 2813(sub-)S 432 4677(domains)U 720(as)S 823(depicted)S 1110(in)S 1209(Figure)S 1440(11.2.)S 1651(Such)S 1838(analysis)S 2113(is)S 2204(evident)S 2459(upon)S 2646(making)S 2905(a)S EP %%Page: ? 27 BP 1 F 72 Z 2905 90(a)U 432 186(p)U 432 90(with)U 588(a)S 648(node)S 815(corresponding)S 1254(to)S 1337(each)S 1496(split)S 1647(of)S 1734(the)S 1849(original)S 2100(matrix.)S 2333(There)S 2528(is)S 2603(of)S 2690(course)S 468 186(roblem)U 702(with)S 860(such)S 1022(a)S 1084(scheme)S 1330(since)S 1508(parallelism)S 1858(is)S 1935(lost)S 2068(as)S 2157(the)S 2274(computation)S 2663(proceeds.)S 432 378(p)U 432 282(Fortunately,)U 820(in)S 914(this)S 1056(problem)S 1333(the)S 1458(computation)S 1855(executing)S 2172(in)S 2265(a)S 2334(given)S 2531(node)S 2708(may)S 2869(be)S 468 378(arallelized)U 801(by)S 906(splitting)S 1175(the)S 1295(root)S 1443(\256nding)S 1679(problems)S 1979(into)S 2123(a)S 2187(number)S 2439(of)S 2531(parallel)S 2779(parts.)S 432 570(b)U 432 474(The)U 569(location)S 826(of)S 911(each)S 1068(root)S 1209(is)S 1282(bracketed)S 1587(by)S 1684(the)S 1797(old)S 1913(eigenvalues)S 2277(and)S 2405(each)S 2561(of)S 2645(them)S 2813(may)S 468 570(e)U 526(computed)S 836(independently.)S 1311(It)S 1380(is)S 1453(a)S 1510(simple)S 1727(matter,)S 1954(therefore,)S 2257(to)S 2338(divide)S 2543(the)S 2656(roots)S 2825(into)S 2909 666(s)U 432 762(a)U 432 666(groups)U 658(which)S 864(will)S 1006(be)S 1104(computed)S 1418(in)S 1504(parallel.)S 1792(An)S 1909(important)S 2218(numerical)S 2535(aspect)S 2744(of)S 2833(thi)S 464 762(lgorithm)U 740(which)S 944(will)S 1084(not)S 1204(be)S 1300(discussed)S 1604(in)S 1688(detail)S 1875(here)S 2026(is)S 2101(the)S 2216(reduction)S 2515(of)S 2602(the)S 2717(number)S 432 954(d)U 432 858(of)U 535(roots)S 721(to)S 819(be)S 929(computed)S 1255(in)S 1353(a)S 1427(given)S 1629(node)S 1811(through)S 2077(a)S 2151(de\257ation)S 2445(technique.)S 2809(This)S 468 954(e\257ation)U 713(is)S 790(of)S 879(considerable)S 1272(importance)S 1625(and)S 1758(has)S 1883(great)S 2056(impact)S 2281(both)S 2437(on)S 2537(the)S 2653(ef\256ciency)S 2901 1050(n)U 432 1146(f)U 432 1050(and)U 563(numerical)S 878(accuracy)S 1161(of)S 1248(the)S 1363(algorithm.)S 1711(Details)S 1941(are)S 2055(reported)S 2321(in)S 2403(dongarra)S 2685(sorense)S 456 1146(ully)U 598(parallel)S 844(but)S 966(we)S 1079(wish)S 1244(to)S 1329(emphasize)S 1662(here)S 1815(that)S 1952(this)S 2085(aspect)S 2294(of)S 2383(the)S 2500(computation)S 2889(is)S 2 F 66 Z 432 1242(p)U 1 F 72 Z 944(.)S 1015(The)S 1156(number)S 1405(of)S 1493(roots)S 1665(to)S 1749(be)S 1845(found)S 2041(at)S 2121(any)S 2253(given)S 2441(step)S 2585(can)S 2713(only)S 2869(be)S 2 F 66 Z 465(roblem)S 674(dependent)S 1 F 72 Z 432 1338(k)U (nown)R 654(at)S 732(the)S 846(time)S 999(of)S 1084(execution.)S 1431(Therefore,)S 1758(the)S 1871(number)S 2116(of)S 2201(groups)S 2422(that)S 2555(the)S 2668(roots)S 2837(can)S 2913 1434(-)U 432 1530(c)U 432 1434(be)U 531(reasonably)S 874(divided)S 1121(into)S 1264(must)S 1435(be)S 1534(done)S 1705(at)S 1788(run)S 1915(time)S 2073(and)S 2207(assigning)S 2509(a)S 2571(parallel)S 2817(pro)S 464 1530(ess)U 582(to)S 668(one)S 802(of)S 892(the)S 1010(groups)S 1236(requires)S 1498(dynamic)S 1776(allocation)S 2090(of)S 2180(processes.)S 2528(These)S 2729(aspects)S 60 Z 16 3414(-)U 72 Z 432 1626(are)U 544(illustrated)S 856(in)S 936(the)S 1048(following)S 1352(graph)S 1540(produced)S 1832(by)S 1928(SCHEDULE.)S 60 Z 36 3414(-)U 3259(--)S 72 Z 1600 3726(-)U 1648(28)S 1744(-)S EP %%Page: ? 26 BP 1 F 72 Z 582 21(I)U (t)R 660(should)S 886(be)S 988(fairly)S 1178(obvious)S 1440(how)S 1597(to)S 1686(proceed)S 1947(from)S 2120(here)S 2277(to)S 2366(exploit)S 2599(parallelism.)S 432 213(n)U 432 117(One)U 578(simply)S 800(repeats)S 1030(the)S 1143(tearing)S 1368(on)S 1465(each)S 1622(of)S 1707(the)S 1820(two)S 1953(halves)S 2162(recursively)S 2507(until)S 2664(the)S 2777(origi-)S 468 213(al)U 548(problem)S 816(has)S 940(been)S 1104(divided)S 1348(into)S 1488(the)S 1603(desired)S 1838(number)S 2085(of)S 2172(subproblems)S 2567(and)S 2698(then)S 2849(the)S 2909 309(s)U 432 405(t)U 432 309(rank)U 593(one)S 730(modi\256cation)S 1127(routine)S 1364(may)S 1521(be)S 1622(applied)S 1867(from)S 2040(bottom)S 2277(up)S 2382(to)S 2471(glue)S 2628(the)S 2749(result)S 452 405(ogether)U 692(again.)S 582 537(T)U (his)R 930(process)S 1172(is)S 1245(called)S 1442(updating)S 1719(and)S 1848(the)S 1961(general)S 2198(updating)S 2475(problem)S 2740(we)S 2849(are)S 432 633(r)U 2 F 66 Z 736 537(gluing)U 1 F 72 Z 456 633(equired)U 697(to)S 778(solve)S 955(for)S 1064(each)S 1221(partition)S 1490(is)S 1563(that)S 1696(of)S 1781(computing)S 2114(the)S 2227(eigensystem)S 2608(of)S 2693(a)S 2749(matrix)S 432 861(\()U 432 729(of)U 516(the)S 628(form)S 456 861(11.3\))U 2 F 66 Z 1436(Q)S 5 F 1458 846(\303)U 2 F 1484 861(D)U 5 F 1506 846(\303)U 2 F 1532 861(Q)U 5 F 1554 846(\303)U 4 F 1629 861(=)U 2 F 1688(D)S 4 F 1758(+)S 1817(r)S 2 F (zz)R 48 Z 1906 834(T)U 66 Z 636 993(D)U 48 Z 1580 831(T)U 66 Z 984 993(n)U 4 F (\264)R 2 F (n)R 4 F 1625(r)S 2 F 2432(z)S 1 F 72 Z 2913(r)S 432 1089(o)U 432 993(where)U 712(is)S 788(a)S 848(real)S 1115(diagonal)S 1391(matrix,)S 1690(is)S 1766(a)S 1826(nonzero)S 2086(scalar,)S 2300(and)S 2486(is)S 2562(a)S 2622(real)S 2757(vecto)S 468 1089(f)U 516(order)S 749(.)S 582 1221(A)U 2 F 66 Z 692 1089(n)U 1 F 72 Z 661 1221(formula)U 916(for)S 1027(computing)S 1362(an)S 1457(eigen-pair)S 1776(of)S 1863(the)S 1978(matrix)S 2193(on)S 2292(the)S 2407(right)S 2569(hand)S 2735(side)S 2877(of)S 432 1317(\(11.3\))U 630(is)S 702(obtained)S 974(by)S 1070(noting)S 1278(that)S 1410(if)S 1539(is)S 1611(a)S 1667(root)S 1807(of)S 1891(the)S 2003(equation)S 4 F 66 Z 1478(l)S 1 F 1965 1449(0)U 1371(1)S 4 F 1426(+)S 1485(r)S 2 F (z)R 1 F 1575(\()S 2 F (D)R 4 F 1667(-)S 1726(l)S 2 F (I)R 1 F (\))R 2 F 1858(z)S 4 F 1906(=)S 1 F 48 Z 1834 1422(1)U 72 Z 432 1581(a)U 432 1449(\(11.4\))U 2 F 48 Z 1548 1422(T)U 4 F 1807(-)S 1 F 72 Z 464 1581(nd)U 432 1713(\()U (11.5\))R 2 F 66 Z 1455(q)S 4 F 1510(=)S 1569(q)S 1 F (\()R 2 F (D)R 4 F 1696(-)S 1755(l)S 2 F (I)R 1 F (\))R 2 F 1887(z)S 1 F 72 Z 432 1845(t)U 2 F 66 Z 580(q)S 1 F (,)R 4 F (l)R 48 Z 1836 1686(-)U 1 F (1)R 72 Z 452 1845(hen)U 691(is)S 763(such)S 919(an)S 1011(eigen-pair,)S 1345(i.e)S 1439(they)S 1587(satisfy)S 1799(the)S 1911(relation)S 66 Z 1439 1977(\()U 2 F 48 Z 1679 1950(T)U 66 Z 1461 1977(D)U 4 F 1531(+)S 1590(r)S 2 F (zz)R 1 F 1706(\))S 2 F (q)R 4 F 1783(=)S 1842(l)S 2 F (q.)R 1 F 1939 2109(1)U 72 Z 432(I)S 4 F 66 Z 1024(q)S 1 F 1773(||)S 2 F (q)R 1 F (||)R 4 F 1880(=)S 1 F 72 Z 456(n)S 518(\(11.5\))S 718(the)S 831(scalar)S 1084(may)S 1233(be)S 1326(chosen)S 1551(so)S 1640(that)S 1997(to)S 2078(obtain)S 2283(an)S 2376(orthonormal)S 2757(eigen-)S 432 2205(system.)U 582 2337(If)U 656(we)S 766(write)S 940(equation)S 1214(\(11.4\))S 1438(in)S 1520(terms)S 1706(of)S 1792(the)S 1906(components)S 2352(of)S 2490(then)S 2703(must)S 2869(be)S 4 F 66 Z 2280(z)S 2 F 2438(z)S 4 F 2640(l)S 2 F 48 Z 2313 2352(i)U 1 F 72 Z 432 2616(\()U 432 2436(a)U 488(root)S 628(of)S 712(the)S 824(equation)S 456 2616(11.6\))U 2 F 48 Z 1654 2682(j)U 4 F (=)R 1 F (1)R 2 F 1674 2550(n)U 1767 2679(j)U 1821 2580(j)U 1 F 1821 2538(2)U 2 F 66 Z 2028 2616(.)U 0 F 1724 2598 M 11 22 1 0 16 0 0 18 PS16 1743 2598 M 11 22 1 0 16 0 0 18 PS16 1776 2598 M 11 22 1 0 16 0 0 18 PS16 1809 2598 M 11 22 1 0 16 0 0 18 PS16 1842 2598 M 11 22 1 0 16 0 0 18 PS16 1875 2598 M 11 22 1 0 16 0 0 18 PS16 4 F 1936 2616(=)U 1 F 1995(0)S 4 F 1788 2565(z)U 1861 2664(l)U 2 F 1323 2616(f)U 1 F (\()R 4 F (l)R 1 F (\))R 4 F 1444(\272)S 1 F 1503(1)S 4 F 1558(+)S 1617(r)S 1734 2664(d)U 1802(-)S 96 Z 1658 2634(S)U 2 F 66 Z 2104 2802(n)U 1 F 72 Z 2905(e)S 432 2898(o)U 432 2802(Under)U 646(certain)S 875(assumptions)S 1264(this)S 1401(equation)S 1682(has)S 1811(precisely)S 2170(roots,)S 2365(one)S 2502(in)S 2591(each)S 2756(of)S 2849(th)S 468 2898(pen)U 597(intervals)S 1118(,)S 1539(and)S 1668(one)S 1797(to)S 1877(the)S 1989(right)S 2149(of)S 2314(if)S 2557(or)S 2641(one)S 2769(to)S 2849(the)S 66 Z 870(\()S 4 F (d)R 1 F 960(,)S 4 F 999(d)S 1 F 1096(\))S 2 F 1161(j)S 4 F 1201(=)S 1 F 1260(1,2,..)S 1394(.)S 2 F (n)R 4 F (-)R 1 F (1)R 4 F 2233(d)S 2382(r)S 2441(>)S 1 F 2500(0)S 2 F 48 Z 925 2913(j)U 1032(j)S 4 F (+)R 1 F (1)R 2 F 2266(n)S 4 F 66 Z 658 2997(d)U 1 F 48 Z 691 3012(1)U 4 F 66 Z 829 2997(r)U 888(<)S 1 F 947(0)S 72 Z 432(l)S (eft)R 563(of)S 750(if)S 980(.)S 1033(We)S 1168(construct)S 1467(the)S 1590(eigenvectors)S 1989(corresponding)S 2436(to)S 2527(each)S 2694(of)S 2789(these)S 60 Z 16 3630(-)U 72 Z 432 3096(roots)U 600(using)S 780(formula)S 1032(\(11.5\).)S 60 Z 36 3630(-)U 3259(--)S 72 Z 582 4134(D)U 1600 3942(-)U 1648(27)S 1744(-)S 634 4134(ue)U 735(to)S 824(this)S 961(structure,)S 1264(an)S 1365(excellent)S 1658(numerical)S 1979(method)S 2228(may)S 2385(be)S 2485(devised)S 2737(to)S 2825(\256nd)S 2901 4230(o)U 432 4326(f)U 432 4230(the)U 545(roots)S 714(of)S 799(the)S 912(Equation)S 1197(\(11.6\))S 1420(and)S 1549(as)S 1633(a)S 1689(by-product)S 2029(to)S 2109(compute)S 2381(the)S 2493(eigenvectors)S 2881(t)S 456 4326(ull)U 557(accuracy.)S 880(It)S 949(must)S 1114(be)S 1207(stressed,)S 1478(however,)S 1769(that)S 1902(great)S 2071(care)S 2216(must)S 2381(be)S 2473(exercised)S 2769(in)S 2849(the)S 2913 4422(-)U 432 4518(t)U 432 4422(numerical)U 748(method)S 992(used)S 1152(to)S 1236(solve)S 1416(the)S 1531(secular)S 1762(equation)S 2037(and)S 2168(to)S 2251(construct)S 2542(the)S 2657(eigenvec)S 452 4518(ors)U 566(from)S 731(formula)S 984(\(11.5\).)S 1225(Theoretical)S 1578(results)S 1791(and)S 1920(numerical)S 2233(details)S 2446(may)S 2595(be)S 2688(found)S 2881(in)S 432 4614(dongarra)U 712(sorensen)S 988(fully)S 1148(parallel)S 582 4746(The)U 724(static)S 906(partitioning)S 1272(of)S 1362(this)S 1496(algorithm)S 1806(results)S 2024(in)S 2109(a)S 2170(divide)S 2379(and)S 2512(conquer)S 2773(graph)S EP %%Page: ? 25 BP 1 F 72 Z 432 138(a)U 432 42(codes)U 625(have)S 790(been)S 955(written)S 1188(and)S 1321(executed)S 1606(using)S 1791(SCHEDULE.)S 2214(These)S 2415(codes)S 2608(include)S 2849(the)S 464 138(lgorithm)U 778(TREEQL)S 1095(for)S 1220(the)S 1349(symmetric)S 1694(tridiagonal)S 2047(eigenvalue)S 2400(problem)S 2681(dongarra)S 432 330(c)U 432 234(sorensen)U 746(symmetric)S 1112(a)S 1206(domain)S 1484(decomposition)S 1970(code)S 2167(for)S 2312(singularly)S 2661(perturbed)S 464 330(onvection-diffusion)U 1067(PDE)S 1237(chin)S 1395(mcgraw)S 1661(an)S 1763(adaptive)S 2041(quadrature)S 2383(code)S 2553(comer)S 2767(and)S 2905(a)S 2913 426(-)U 432 522(l)U 432 426(block)U 620(preconditioned)S 1080(conjugate)S 1388(gradient)S 1652(code)S 1816(for)S 1928(systems)S 2184(arising)S 2407(in)S 2490(reservoir)S 2773(simu)S 452 522(ation)U 620(diaz)S 582 654(T)U (he)R 730(graph)S 930(associated)S 1262(with)S 1426(TREEQL)S 1738(is)S 1822(probably)S 2113(the)S 2236(most)S 2411(illustrative)S 2754(of)S 2849(the)S 2917 750(l)U 432 846(a)U 432 750(capabilities)U 787(of)S 874(SCHEDULE)S 1277(so)S 1368(we)S 1479(shall)S 1642(discuss)S 1877(it)S 1944(in)S 2027(some)S 2206(detail.)S 2435(This)S 2589(is)S 2663(a)S 2721(paralle)S 464 846(lgorithm)U 742(for)S 856(computing)S 1194(the)S 1312(eigensystem)S 1698(of)S 1788(a)S 1850(real)S 1988(symmetric)S 2322(tridiagonal)S 2664(matrix)S 2919(.)S 2 F 66 Z 1952 942(Q)U 2727(D)S 2882 846(T)U 1 F 72 Z 2901 942(h)U 432 1038(t)U 432 942(The)U 575(problem)S 846(is)S 925(to)S 1012(compute)S 1291(an)S 1390(orthogonal)S 1733(matrix)S 2031(and)S 2166(a)S 2229(diagonal)S 2508(matrix)S 2805(suc)S 452 1038(hat)U 862(.)S 937(The)S 1082(crux)S 1243(of)S 1336(the)S 1457(algorithm)S 1770(is)S 1851(to)S 1940(divide)S 2153(a)S 2218(given)S 2411(problem)S 2684(into)S 2829(two)S 2 F 66 Z 573(T)S 4 F 632(=)S 2 F 691(QDQ)S 48 Z 835 1011(T)U 1 F 72 Z 432 1134(s)U (maller)R 668(subproblems.)S 1102(To)S 1206(do)S 1302(this,)S 1448(we)S 1556(consider)S 1824(the)S 1936(symmetric)S 2264(tridiagonal)S 2600(matrix)S 432 1368(\(11.1\))U 2 F 66 Z 710(T)S 4 F 769(=)S 0 F 828 1251 M 11 73 3 0 20 0 0 15 PS20 828 1317 M 11 74 3 0 5 0 0 15 PS5 828 1383 M 11 74 3 0 5 0 0 15 PS5 828 1449 M 11 76 3 0 21 0 0 15 PS21 4 F 900 1410(b)U 2 F (e)R 990(e)S 942 1293(T)U 1131 1410(T)U 4 F 1090 1293(b)U 2 F (e)R 1177(e)S 0 F 1277 1251 M 11 77 3 0 22 0 0 15 PS22 1277 1317 M 11 74 3 0 5 0 0 15 PS5 1277 1383 M 11 74 3 0 5 0 0 15 PS5 1277 1449 M 11 79 3 0 23 0 0 15 PS23 2 F 48 Z 1156 1308(k)U 1 F 1206(1)S 2 F 1206 1266(T)U 1 F 1168 1425(2)U 979 1308(1)U 2 F 1019 1383(T)U 1019 1425(k)U 1 F 915 1746(1)U 966 1425(1)U 1020 1863(2)U 1291 1854(1)U 2 F 1292 1746(k)U 1416 1821(k)U 1416 1779(T)U 1 F 1533 1821(1)U 2 F 1533 1779(T)U 1 F 66 Z 1560 1806(\))U 997 1731(0)U 0 F 1066 1689 M 11 77 3 0 22 0 0 15 PS22 1066 1755 M 11 74 3 0 5 0 0 15 PS5 1066 1821 M 11 74 3 0 5 0 0 15 PS5 1066 1887 M 11 79 3 0 23 0 0 15 PS23 4 F 1116 1806(+)U 1175(b)S 0 F 1212 1722 M 11 73 3 0 20 0 0 15 PS20 1212 1788 M 11 74 3 0 5 0 0 15 PS5 1212 1854 M 11 76 3 0 21 0 0 15 PS21 2 F 1262 1839(e)U 1263 1731(e)U 0 F 1337 1722 M 11 77 3 0 22 0 0 15 PS22 1337 1788 M 11 74 3 0 5 0 0 15 PS5 1337 1854 M 11 79 3 0 23 0 0 15 PS23 1 F 1365 1806(\()U 2 F (e)R 1 F 1465(,)S 2 F 1504(e)S 5 F 1000 1833(\303)U 2 F 878 1731(T)U 5 F 895 1716(\303)U 2 F 983 1848(T)U 1 F 892(0)S 634 2106(1)U 4 F 769 1806(=)U 0 F 828 1689 M 11 73 3 0 20 0 0 15 PS20 828 1755 M 11 74 3 0 5 0 0 15 PS5 828 1821 M 11 74 3 0 5 0 0 15 PS5 828 1887 M 11 76 3 0 21 0 0 15 PS21 4 F 689 2106(\243)U 2 F 748(k)S 4 F 799(\243)S 2 F 858(n)S 1047(e)S 1547(j)S 4 F (-)R 2 F (th)R 1 F 72 Z 432(w)S 2 F 48 Z 1076 2121(j)U 1 F 72 Z 484 2106(here)U 917(and)S 1115(represents)S 1433(the)S 1678(unit)S 1815(vector)S 2020(of)S 2105(appropriate)S 2458(dimension.)S 2825(The)S 2913 2205(-)U 576(diagonal)S 851(element)S 1106(of)S 1281(has)S 1404(been)S 1567(modi\256ed)S 1850(to)S 1933(give)S 2172(and)S 2303(the)S 2417(\256rst)S 2555(diagonal)S 2829(ele)S 48 Z 1230 2220(1)U 2121(1)S 2 F 66 Z 432 2205(k)U 4 F (-)R 2 F (th)R 1193(T)S 2084(T)S 5 F 2101 2190(\303)U 2 F 684 2304(T)U 1557(T)S 5 F 1574 2289(\303)U 1 F 48 Z 1594 2319(2)U 72 Z 432 2304(m)U 48 Z 721 2319(2)U 72 Z 488 2304(ent)U 600(of)S 769(has)S 889(been)S 1049(modi\256ed)S 1329(to)S 1409(give)S 1618(.)S 582 2439(N)U (ow)R 748(we)S 858(have)S 1020(two)S 1153(smaller)S 1390(tridiagonal)S 1727(eigenvalue)S 2064(problems)S 2357(to)S 2438(solve.)S 2633(According)S 432 2535(to)U 512(equation)S 784(\(11.1\))S 982(we)S 1090(compute)S 1362(the)S 1474(two)S 1606(eigensystems)S 48 Z 1277 2682(1)U 1430(1)S 1502(1)S 1574(1)S 2 F 1574 2640(T)U 1 F 1765 2682(2)U 1918(2)S 1990(2)S 2062(2)S 2 F 2062 2640(T)U 66 Z 2111 2667(.)U 1 F 72 Z 432 3036(\()U 432 2802(This)U 584(gives)S 2 F 66 Z 1240 2667(T)U 5 F 1257 2652(\303)U 4 F 1323 2667(=)U 2 F 1382(Q)S 1454(D)S 1526(Q)S 1 F 1623(,)S 2 F 1728(T)S 5 F 1745 2652(\303)U 4 F 1811 2667(=)U 2 F 1870(Q)S 1942(D)S 2014(Q)S 1 F 72 Z 456 3036(11.2\))U 2 F 66 Z 710(T)S 4 F 769(=)S 0 F 828 2919 M 11 73 3 0 20 0 0 15 PS20 828 2985 M 11 74 3 0 5 0 0 15 PS5 828 3051 M 11 74 3 0 5 0 0 15 PS5 828 3117 M 11 76 3 0 21 0 0 15 PS21 1 F 971 3078(0)U 2 F 878 2961(Q)U 950(D)S 1022(Q)S 1141 3078(Q)U 1213(D)S 1285(Q)S 1 F 1234 2961(0)U 0 F 1382 2919 M 11 77 3 0 22 0 0 15 PS22 1382 2985 M 11 74 3 0 5 0 0 15 PS5 1382 3051 M 11 74 3 0 5 0 0 15 PS5 1382 3117 M 11 79 3 0 23 0 0 15 PS23 4 F 1432 3036(+)U 1491(b)S 0 F 1528 2952 M 11 73 3 0 20 0 0 15 PS20 1528 3018 M 11 74 3 0 5 0 0 15 PS5 1528 3084 M 11 76 3 0 21 0 0 15 PS21 2 F 1578 3069(e)U 1579 2961(e)U 0 F 1653 2952 M 11 77 3 0 22 0 0 15 PS22 1653 3018 M 11 74 3 0 5 0 0 15 PS5 1653 3084 M 11 79 3 0 23 0 0 15 PS23 1 F 1681 3036(\()U 2 F (e)R 1 F 1781(,)S 2 F 1820(e)S 1 F 1876(\))S 48 Z 926 3282(1)U 926 2976(1)U 998(1)S 1070(1)S 2 F 1070 2934(T)U 1 F 1189 3093(2)U 1261(2)S 1333(2)S 2 F 1333 3051(T)U 1 F 1607 3084(1)U 2 F 1608 2976(k)U 1732 3051(k)U 1732 3009(T)U 1 F 1849 3051(1)U 2 F 1849 3009(T)U 1 F 1042 3390(2)U 1264 3282(1)U 1380 3390(2)U 1633(2)S 1633 3282(1)U 1762 3357(1)U 2 F 1762 3315(T)U 1 F 1883 3357(2)U 2 F 1883 3315(T)U 1 F 2102 3282(1)U 2 F 2102 3240(T)U 1 F 2221 3399(2)U 2 F 2221 3357(T)U 0 F 66 Z 2270 3423 M 11 79 3 0 23 0 0 15 PS23 2270 3357 M 11 74 3 0 5 0 0 15 PS5 2270 3291 M 11 74 3 0 5 0 0 15 PS5 2270 3225 M 11 77 3 0 22 0 0 15 PS22 2 F 2054 3267(Q)U 2173 3384(Q)U 1 F 2194 3267(0)U 2075 3384(0)U 2 F 1216 3267(D)U 1332 3375(D)U 1 F 1351 3267(0)U 0 F 1426 3258 M 11 77 3 0 22 0 0 15 PS22 1426 3324 M 11 74 3 0 5 0 0 15 PS5 1426 3390 M 11 79 3 0 23 0 0 15 PS23 4 F 1454 3342(+)U 1513(b)S 0 F 1550 3258 M 11 73 3 0 20 0 0 15 PS20 1550 3324 M 11 74 3 0 5 0 0 15 PS5 1550 3390 M 11 76 3 0 21 0 0 15 PS21 2 F 1600 3375(q)U 1600 3267(q)U 0 F 1679 3258 M 11 77 3 0 22 0 0 15 PS22 1679 3324 M 11 74 3 0 5 0 0 15 PS5 1679 3390 M 11 79 3 0 23 0 0 15 PS23 1 F 1707 3342(\()U 2 F (q)R 1 F 1811(,)S 2 F 1850(q)S 1 F 1910(\))S 0 F 1976 3255 M 11 77 3 0 22 0 0 15 PS22 1976 3321 M 11 74 3 0 5 0 0 15 PS5 1976 3387 M 11 79 3 0 23 0 0 15 PS23 2004 3225 M 11 73 3 0 20 0 0 15 PS20 2004 3291 M 11 74 3 0 5 0 0 15 PS5 2004 3357 M 11 74 3 0 5 0 0 15 PS5 2004 3423 M 11 76 3 0 21 0 0 15 PS21 1 F 1235 3375(0)U 2 F 878 3267(Q)U 994 3375(Q)U 1 F 1013 3267(0)U 0 F 1088 3258 M 11 77 3 0 22 0 0 15 PS22 1088 3324 M 11 74 3 0 5 0 0 15 PS5 1088 3390 M 11 79 3 0 23 0 0 15 PS23 1116 3255 M 11 73 3 0 20 0 0 15 PS20 1116 3321 M 11 74 3 0 5 0 0 15 PS5 1116 3387 M 11 76 3 0 21 0 0 15 PS21 1166 3258 M 11 73 3 0 20 0 0 15 PS20 1166 3324 M 11 74 3 0 5 0 0 15 PS5 1166 3390 M 11 76 3 0 21 0 0 15 PS21 1 F 897 3375(0)U 60 Z 16 3846(-)U 4 F 66 Z 769 3342(=)U 0 F 828 3258 M 11 73 3 0 20 0 0 15 PS20 828 3324 M 11 74 3 0 5 0 0 15 PS5 828 3390 M 11 76 3 0 21 0 0 15 PS21 1 F 60 Z 36 3846(-)U 3259(--)S 72 Z 432 4350(w)U 1600 4158(-)U 1648(26)S 1744(-)S 484 4350(here)U 925(and)S 1346(.)S 1415(The)S 1553(problem)S 1819(at)S 1897(hand)S 2063(now)S 2213(is)S 2287(to)S 2369(compute)S 2643(the)S 2757(eigen-)S 2 F 66 Z 635(q)S 4 F 714(=)S 2 F 773(Q)S 848(e)S 1080(q)S 4 F 1159(=)S 2 F 1218(Q)S 1293(e)S 1 F 48 Z 668 4365(1)U 821(1)S 2 F 821 4323(T)U 877 4365(k)U 1 F 1113(2)S 1266(2)S 2 F 1266 4323(T)U 1 F 1322 4365(1)U 72 Z 432 4449(s)U (ystem)R 667(of)S 761(the)S 883(interior)S 1129(matrix)S 1351(in)S 1441(equation)S 1723(\(11.2\).)S 1949(A)S 2035(numerical)S 2357(method)S 2607(for)S 2725(solving)S 2917 4545(t)U 432 4641(s)U 432 4545(this)U 564(problem)S 832(has)S 956(been)S 1120(provided)S 1404(in)S 1488([2])S 1600(and)S 1732(we)S 1843(shall)S 2006(discuss)S 2241(this)S 2372(method)S 2615(in)S 2698(the)S 2813(nex)S 460 4641(ection.)U EP %%Page: ? 24 BP 2 F 72 Z 1821 1662(4)U 1238 1758(S)U 1511 1662(Figure)U 1731(10.)S 1274 1758(creen)U 1458(Output)S 1682(from)S 1842(Debugger)S 1 F 2881 1950(m)U 432 2046(e)U 432 1950(The)U 578(main)S 756(problem)S 1029(to)S 1118(overcome)S 1435(here)S 1592(is)S 1673(selected)S 1938(display)S 2179(of)S 2272(data.)S 2467(A)S 2552(real)S 2693(progra)S 464 2046(xecuting)U 736(on)S 832(large)S 1000(arrays)S 1200(could)S 1384(produce)S 1640(an)S 1732(overwhelming)S 2172(display)S 2404(of)S 2488(output.)S 3 F 432 2334(11.)U 570(Experience)S 938(with)S 1098(SCHEDULE)S 1 F 582 2466(At)U 684(present)S 922(the)S 1040(experience)S 1382(with)S 1540(using)S 1726(SCHEDULE)S 2132(is)S 2209(limited)S 2442(but)S 2563(encouraging.)S 432 2658(c)U 432 2562(Versions)U 718(are)S 836(running)S 1089(successfully)S 1470(on)S 1571(the)S 1688(VAX)S 1873(11/780,)S 2120(Alliant)S 2349(FX/8,)S 2544(and)S 2677(CRAY-2)S 464 2658(omputers.)U 804(That)S 966(is,)S 1062(the)S 1180(same)S 1358(user)S 1507(code)S 1672(executes)S 1949(without)S 2198(modi\256cation)S 2591(on)S 2692(all)S 2793(three)S 2905 2754(e)U 432 2850(u)U 432 2754(machines.)U 771(Only)S 939(the)S 1051(SCHEDULE)S 1451(internals)S 1723(are)S 1835(modi\256ed,)S 2133(and)S 2261(these)S 2433(modi\256cations)S 2849(ar)S 468 2850(sually)U 665(minor,)S 879(but)S 995(can)S 1119(be)S 1211(dif\256cult)S 1463(in)S 1543(some)S 1719(cases.)S 1937(They)S 2109(involve)S 2349(such)S 2505(things)S 2705(as)S 2789(nam-)S 432 3042(i)U 432 2946(ing)U 563(and)S 705(parameter-passing)S 1271(conventions)S 1657(for)S 1779(the)S 1905(C)S 1991(-)S 2053(Fortran)S 2303(interface.)S 2635(They)S 2821(also)S 452 3042(nvolve)U 682(coding)S 912(the)S 1034(low-level)S 1340(synchronization)S 1834(primitives)S 2160(and)S 2298(managing)S 2616(to)S 5 F 2705(")S 1 F (create)R 5 F (")R 1 F 432 3138(the)U 3 F 544(work)S 1 F 728(processes.)S 582 3270(On)U 697(the)S 812(CRAY-2)S 1099(process)S 1342(creation)S 1601(is)S 1676(accomplished)S 2099(using)S 3 F 2281(tskstart)S 1 F (,)R 2561(and)S 2691(the)S 2805(low-)S 2913 3366(-)U 432 3462(v)U 432 3366(level)U 603(synchronization)S 1093(is)S 1171(very)S 1329(similar)S 1559(to)S 1645(the)S 1763(low-level)S 2065(synchronization)S 2555(routines)S 2817(pro)S 468 3462(ided)U 620(by)S 720(the)S 836(CRAY)S 1064(multitasking)S 1452(library)S 1671(cray)S 1822(multitasking)S 2209(For)S 2336(the)S 2451(Alliant)S 2678(FX/8)S 2853(we)S 2919 3558(.)U 432 3654(T)U 432 3558(coded)U 639(the)S 762(low-level)S 1069(synchronization)S 1563(primitives)S 1889(using)S 2079(their)S 2245(test-and-set)S 2611(instruction)S 476 3654(o)U 5 F 547(")S 1 F (create)R 5 F (")R 1 F 814(the)S 937(work)S 1120(routines,)S 1405(we)S 1524(used)S 1691(the)S 1813(CVD$L)S 2079(CNCALL)S 2401(directive)S 2687(before)S 2905(a)S 60 Z 3279 4062(-)U 16(--)S 3259(-)S 72 Z 1600 4374(-)U 1648(25)S 1744(-)S 2080 4566(.)U 432(loop)S 584(that)S 716(performed)S 1244(calls)S 1400(to)S 1480(the)S 1592(subroutine)S 3 F 1920(work)S 2 F 66 Z 1040(nprocs)S 1 F 72 Z 582 4698(I)U (n)R 679(addition)S 952(to)S 1045(some)S 1234(toy)S 1363(programs)S 1672(used)S 1841(for)S 1962(debugging)S 2303(SCHEDULE,)S 2733(several)S EP %%Page: ? 23 BP 1 F 72 Z 1600 54(-)U 1648(23)S 1744(-)S 2917 246(t)U 432 342(u)U 432 246(example)U 709(when)S 897(the)S 1017(graph)S 1213(produced)S 1513(by)S 1617(SCHEDULE)S 2025(is)S 2105(contrasted)S 2433(with)S 2593(the)S 2713(abstrac)S 468 342(ser)U 598(speci\256ed)S 900(graph)S 1110(there)S 1300(are)S 1434(noticeable)S 1776(differences.)S 2184(The)S 2342(graph)S 2552(produced)S 2865(by)S 2901 438(n)U 432 534(t)U 432 438(SCHEDULE)U 834(exposes)S 1088(inherent)S 1350(serial)S 1532(bottlenecks)S 1886(in)S 1968(the)S 2081(algorithm.)S 2428(During)S 2657(executio)S 452 534(he)U 558(two)S 704(bar)S 834(graphs)S 1064(at)S 1154(the)S 1280(top)S 1410(track)S 1592(the)S 1718(existing)S 1984(and)S 2126(maximum)S 2455(number)S 2712(of)S 2809(con-)S 2913 630(r)U 432 726(h)U 432 630(currently)U 726(executing)S 1040(processes)S 1350(respectively.)S 1774(In)S 1868(the)S 1990(ideal)S 2164(situation,)S 2487(the)S 2608(bottom)S 2845(ba)S 468 726(as)U 557(a)S 618(value)S 803(equal)S 988(to)S 1073(he)S 1170(number)S 1419(of)S 1508(physical)S 1777(processors)S 2110(available)S 2399(and)S 2532(the)S 2649(top)S 2769(bar)S 2889(is)S 2917 822(l)U 432 918(b)U 432 822(almost)U 682(always)S 940(equal)S 1154(to)S 1268(the)S 1413(bottom)S 1674(bar.)S 1865(In)S 1982(addition)S 2275(to)S 2388(discovering)S 2781(seria)S 468 918(ottlenecks,)U 830(one)S 962(can)S 1090(learn)S 1262(about)S 1450(load)S 1602(balancing)S 1909(problems)S 2204(within)S 2415(an)S 2510(executing)S 2817(pro-)S 432 1110(p)U 432 1014(gram.)U 652(It)S 726(may)S 880(even)S 1046(be)S 1144(useful)S 1350(to)S 1436(put)S 1558(in)S 1644(arti\256cial)S 1913(data)S 2062(dependencies)S 2479(to)S 2564(force)S 2741(certain)S 468 1110(rocesses)U 750(to)S 848(complete)S 1154(before)S 1380(others)S 1597(to)S 1694(achieve)S 1955(a)S 2028(better)S 2233(load)S 2398(balance.)S 2701(Another)S 432 1302(t)U 432 1206(interesting)U 764(feature)S 992(is)S 1068(that)S 1204(this)S 1336(execution)S 1643(sequence)S 1934(can)S 2061(be)S 2156(accelerated)S 2507(if)S 2578(the)S 2693(program)S 452 1302(ook)U 585(a)S 642(long)S 795(time)S 948(to)S 1029(execute)S 1274(and)S 1403(slowed)S 1632(down)S 1817(if)S 1885(it)S 1949(took)S 2101(a)S 2157(short)S 2325(time)S 2477(while)S 2661(maintain-)S 432 1398(ing)U 548(the)S 660(ratios)S 844(of)S 928(execution)S 1232(times)S 1412(among)S 1632(the)S 1744(parallel)S 1984(processes.)S 582 1530(A)U 665(\256nal)S 823(feature)S 1053(that)S 1191(is)S 1269(possible)S 1535(but)S 1657(not)S 1779(fully)S 1945(implemented)S 2351(is)S 2429(the)S 2547(possibility)S 2877(of)S 2913 1626(f)U 432 1722(o)U 432 1626(observing)U 756(the)S 884(executing)S 1204(program)S 1488(within)S 1712(a)S 1784(node.)S 2005(We)S 2144(envision)S 2427(the)S 2554(capability)S 2877(o)S 468 1722(pening)U 693(a)S 754(workstation)S 1123(window)S 1384(corresponding)S 1825(to)S 1910(a)S 1971(selected)S 2232(node.)S 2443(Within)S 2672(this)S 2805(win-)S 432 1914(p)U 432 1818(dow)U 584(we)S 696(would)S 904(see)S 1024(a)S 1084(display)S 1320(of)S 1407(selected)S 1666(variables)S 1953(being)S 2140(updated)S 2395(as)S 2482(execution)S 2789(takes)S 468 1914(lace.)U 661(At)S 768(the)S 891(same)S 1074(time)S 1237(the)S 1360(currently)S 1655(executing)S 1970(lines)S 2141(of)S 2236(Fortran)S 2483(code)S 2654(would)S 2869(be)S 2905 2010(a)U 432 2106(s)U 432 2010(displayed.)U 787(This)S 952(capability)S 1273(currently)S 1570(exists)S 1771(for)S 1892(a)S 1961(serial)S 2153(Fortran)S 2401(program)S 2681(dongarr)S 460 2106(orensen)U 708(aid)S 820(to)S 900(fortran)S 1120(The)S 1256(output)S 1464(of)S 1548(such)S 1704(a)S 1760(display)S 1992(is)S 2064(shown)S 2276(in)S 2356(Figure)S 2568(10.4)S 60 Z 3279 4278(-)U 16(--)S 3259(-)S 72 Z 1600 4590(-)U 1648(24)S 1744(-)S EP %%Page: ? 22 BP 1 F 72 Z 1600 270(-)U 1648(22)S 1744(-)S 2 F 1821 2382(3)U 946 2478(O)U 1511 2382(Figure)U 1731(10.)S 998 2478(utput)U 1170(from)S 1330(SCHEDULE)S 1722(for)S 1830(Triangular)S 2170(Example)S 1 F 2913 2610(-)U 432 2706(t)U 582 2610(In)U 669(Figure)S 884(10.3)S 1037(we)S 1148(show)S 1327(the)S 1442(output)S 1653(from)S 1820(an)S 1915(executing)S 2222(SCHEDULE)S 2625(implemen)S 452 2706(ation)U 627(of)S 718(this)S 853(example.)S 1170(The)S 1313(program)S 1588(was)S 1731(run)S 1858(on)S 1961(an)S 2060(Alliant)S 2291(FX/8.)S 2512(An)S 2631(output)S 2845(\256le)S 2909 2802(s)U 432 2898(t)U 432 2802(was)U 573(produced)S 870(as)S 959(the)S 1076(program)S 1349(executed)S 1633(which)S 1837(recorded)S 2117(the)S 2233(units)S 2401(of)S 2489(computation)S 2877(a)S 452 2898(hey)U 587(were)S 757(de\256ned)S 999(and)S 1133(executed.)S 1461(The)S 1603(\256le)S 1725(was)S 1867(then)S 2021(shipped)S 2275(to)S 2361(a)S 2423(SUN)S 2597(workstation)S 2901 2994(d)U 432 3090(b)U 432 2994(where)U 637(a)S 698(graphics)S 971(program)S 1243(interpreted)S 1583(this)S 1715(output,)S 1945(constructed)S 2305(the)S 2421(graph)S 2613(and)S 2745(playe)S 468 3090(ack)U 593(the)S 706(execution)S 1011(sequence)S 1300(that)S 1433(was)S 1570(run)S 1691(on)S 1788(the)S 1901(Alliant.)S 2168(In)S 2253(the)S 2365(graph)S 2553(shown)S 2765(above)S 2905 3186(e)U 432 3282(h)U 432 3186(in)U 513(Figure)S 726(10.3)S 877(the)S 990(black)S 1171(nodes)S 1364(show)S 1541(processes)S 1842(which)S 2043(have)S 2203(completed)S 2527(execution,)S 2849(th)S 468 3282(atched)U 685(nodes)S 881(show)S 1061(executing)S 1369(processes)S 1673(and)S 1805(the)S 1921(white)S 2109(nodes)S 2305(show)S 2485(processes)S 2789(wait-)S 2913 3378(-)U 432 3474(c)U 432 3378(ing)U 557(to)S 646(execute.)S 941(The)S 1086(program)S 1363(was)S 1508(able)S 1661(to)S 1750(produce)S 2015(this)S 2152(playback)S 2445(output)S 2661(automati)S 464 3474(ally)U 605(simply)S 834(by)S 939(linking)S 1175(to)S 1263(SCHEDULE)S 1671(with)S 1831(a)S 1895(request)S 2135(for)S 2251(the)S 2371(graph)S 2567(option.)S 2825(The)S 2913 3570(-)U 432 3666(i)U 432 3570(user's)U 632(program)S 904(did)S 1023(not)S 1142(change)S 1373(in)S 1456(any)S 1587(way.)S 1752(At)S 1851(the)S 1966(moment)S 2229(this)S 2360(is)S 2435(the)S 2550(only)S 2705(capabil)S 452 3666(ty)U 538(we)S 652(have.)S 860(It)S 934(would)S 1144(be)S 1242(very)S 1400(useful)S 1605(have)S 1770(the)S 1887(user)S 2036(construct)S 2329(that)S 2466(part)S 2607(of)S 2696(the)S 2813(For-)S 432 3858(S)U 432 3762(tran)U 601(program)S 902(that)S 1067(corresponded)S 1512(to)S 1625(the)S 1770(dependence)S 2167(graph,)S 2405(i.e.)S 2549(calls)S 2737(to)S 2849(the)S 472 3858(CHEDULER)U 880(routines,)S 1154(from)S 1318(a)S 5 F 1374(")S 1 F (mouse)R 1616(driven)S 5 F (")R 1 F 1854(graphics)S 2122(input)S 2294(device.)S 2913 3990(-)U 432 4086(t)U 582 3990(In)U 669(addition)S 932(to)S 1015(discovering)S 1378(bugs)S 1541(in)S 1624(the)S 1739(speci\256cation)S 2130(of)S 2217(the)S 2331(graph,)S 2539(this)S 2669(represen)S 452 4086(ation)U 635(is)S 722(useful)S 937(in)S 1031(exposing)S 1329(more)S 1515(subtle)S 1725(aspects)S 1971(of)S 2069(the)S 2195(executing)S 2513(program.)S 2837(For)S 60 Z 3279 4494(-)U 16(--)S 3259(-)S EP %%Page: ? 21 BP 1 F 60 Z 16 174(-)U (-)R 3259(--)S 48 Z 582 990(D)U 631 999(1)U 72 Z 1600 486(-)U 1648(21)S 1744(-)S 48 Z 617 990('c122u')U 582 1251(D)U 631 1260(2)U 617 1251('c122u')U 582 1509(D)U 631 1518(3)U 617 1509('c122u')U 582 1770(D)U 631 1779(4)U 617 1770('c122u')U 582 2031(D)U 631 2040(5)U 617 2031('c122u')U 1021 1260(6)U 972 1251(D)U ('c122u')R 972 1509(D)U 1021 1518(7)U 1007 1509('c122u')U 972 1770(D)U 1021 1779(8)U 1007 1770('c122u')U 972 2031(D)U 1021 2040(9)U 1007 2031('c122u')U 1408 1527(10)U 1371 1518(D)U ('c122u')R 1371 1770(D)U 1408 1779(11)U 1406 1770('c122u')U 1371 2031(D)U 1408 2040(12)U 1406 2031('c122u')U 1798 1788(13)U 1761 1779(D)U ('c122u')R 1761 2031(D)U 1798 2040(14)U 1796 2031('c122u')U 2180 2049(15)U 2143 2040(D)U ('c122u')R 2563 1137(13)U 2592 1128(')U 2424(D'c325u)S 2571 1518(14)U 2050 1332(1)U 2062 1122(8)U 2070 909(4)U 2074 1332(1)U 2466 1716(jobtag)U 2601(=)S 2644(13)S 2471 1824(n)U 2474 1770(icango)U 2617(=)S 2660(3)S 2495 1824(cheks)U 2620(=)S 2663(1)S 2714 1878(4)U 604 1140(D)U 627 1047(D')U 5 F (\304)R 1 F 718(-15u)S 822(56u)S 910(20u)S 998(90u')S 2421 1878(myckhn\(1\))U 2647(=)S 2690(1)S 639 1140('l27u)U 756(54u')S 848 1134(')U 607 1035(D)U 632 1134(D'l-1u)U 776(60u)S 642 1035(')U 5 F (\304)R 1 F 698(-60u)S 802(77u)S 890(8u)S 954(309u)S 1066(49u)S 1154(49u')S 552 1440(D'l50u)U 704(31u')S 572 1419(D'l30u)U 724(51u')S 590 1014(D)U (')R 5 F (\304)R 1 F 681(-76u)S 785(49u)S 873(-15u)S 977(496u)S 1089(113u)S 1201(162u')S 566 1683(D'l45u)U 718(39u')S 589 1665(D'l22u)U 741(56u')S 586 999(D)U (')R 5 F (\304)R 1 F 677(-153u)S 805(16u)S 893(56u)S 981(780u)S 1093(122u)S 1205(187u')S 567 1941(D'l44u)U 719(40u')S 591 1926(D'l20u)U 743(56u')S 700 1266(D)U (')R 5 F (\304)R 1 F 791(147u)S 903(48u)S 991(130u)S 1103(-47u')S 917 1272(D)U 927 1299(D'l49u)U 1079(-33u')S 952 1272('l59u)U 1069(-6u')S 1017 1308(D)U (')R 5 F (\304)R 1 F 1108(-15u)S 1212(57u)S 1300(20u)S 1388(89u')S 994 1401(D'l27u)U 1146(53u')S 1023 1395(D'l-2u)U 1167(59u')S 1090 1527(D)U (')R 5 F (\304)R 1 F 1181(138u)S 1293(33u)S 1381(146u)S 1493(-27u')S 1316(D)S 1321 1557(D'l54u)U 1473(-25u')S 1351 1527('l59u)U 1468(3u')S 1489 1788(D)U (')R 5 F (\304)R 1 F 1580(114u)S 1692(33u)S 1780(162u)S 1892(-28u')S 1706(D)S 1711 1815(D'l54u)U 1863(-24u')S 1741 1788('l59u)U 1858(4u')S 1879 2043(D)U (')R 5 F (\304)R 1 F 1970(162u)S 2082(28u)S 2170(105u)S 2282(-19u')S 2088 2049(D)U 2093 2076(D'l54u)U 2245(-25u')S 2123 2049('l59u)U 2240(3u')S 692 1542(D')U 5 F (\304)R 1 F 783(130u)S 895(97u)S 983(366u)S 1095(-7u)S 1175(191u)S 1287(-88u')S 1333 1581(D'l46u)U 1485(-38u')S 1082 1803(D)U 1321 1554(D'l58u)U 1473(-11u')S 1117 1803(')U 5 F (\304)R 1 F 1173(130u)S 1285(82u)S 1373(431u)S 1485(-7u)S 1565(126u)S 1677(-73u')S 1727 1845(D)U ('l42u)R 1879(-41u')S 696 1794(D')U 5 F (\304)R 1 F 787(297u)S 899(155u)S 1011(691u)S 1123(-16u)S 1227(101u)S 1339(-108u')S 1712 1818(D'l57u)U 1864(-16u')S 1757 1875(D'l28u)U 1909(-52u')S 1460 2079(D)U 1736 1857(D'l49u)U 1888(-32u')S 1495 2079(')U 5 F (\304)R 1 F 1551(53u)S 1639(82u)S 1727(553u)S 1839(0u)S 1903(94u)S 1991(-85u')S 2127 2124(D'l33u)U 2279(-50u')S 1082 2058(D')U 5 F (\304)R 1 F 1173(325u)S 1285(191u)S 1397(748u)S 1509(-32u)S 1613(32u)S 1701(-121u')S 2108 2103(D'l52u)U 2260(-29u')S 2187 2154(D'l1u)U 2315(-59u')S 696 2055(D')U 5 F (\304)R 1 F 787(378u)S 899(211u)S 1011(1122u)S 1147(8u)S 1211(4u)S 1275(-178u')S 2159 2148(D'l29u)U 2311(-52u')S 2213 2154(D'l-13u)U 2381(-58u')S 934 1710(D)U 1001 1299(D')U 5 F (\304)R 1 F 1092(-97u)S 1196(122u)S 1308(17u)S 1396(260u)S 1508(69u)S 1596(52u')S 2184 2154(D'l16u)U 2336(-57u')S 969 1710('l55u)U 1086(24u')S 1176 1686(')U 952(D'l37u)S 1104(47u)S 989 1287(D')U 5 F (\304)R 1 F 1080(-125u)S 1208(110u)S 1320(-7u)S 1400(512u)S 1512(130u)S 1624(89u')S 929 1977(D'l56u)U 1081(21u')S 946 1953(D'l39u)U 1098(44u')S 1416 1575(D')U 5 F (\304)R 1 F 1507(-24u)S 1611(81u)S 1699(25u)S 1787(57u')S 1380 1665(D'l36u)U 1532(48u')S 1406 1656(D'l10u)U 1558(59u')S 1400 1566(D)U (')R 5 F (\304)R 1 F 1491(-89u)S 1595(130u)S 1707(25u)S 1795(252u)S 1907(52u)S 1995(44u')S 1334 1968(D'l53u)U 1486(26u')S 1352 1947(D'l35u)U 1504(48u')S 1806 1836(D')U 5 F (\304)R 1 F 1897(-15u)S 2001(81u)S 2089(16u)S 2177(57u')S 1776 1923(D'l30u)U 1928(52u')S 1804 1914(D'l2u)U 1932(59u')S 2421 1056(D'l19u)U 2573(8u')S 2382 1053(D'l58u)U 2534(10u')S 2394 1026(D'l46u)U 2546(37u')S 2082 900(D'l339u)U 2258(155u')S 2407 1125(D'l21u)U 2559(0u')S 2610 1137(')U 2370 1107(D)U 2370 1137(D'l58u)U 2522(-13u)S 2405 1107('l58u)U 2522(16u')S 2074 1113(D'l333u)U 2250(12u')S 2417 1191(D'l19u)U 2569(-7u')S 2377(D)S 2387 1218(D'l49u)U 2539(-34u')S 2412 1191('l59u)U 2529(-7u')S 2074 1323(D'l343u)U 2250(-132u')S 2594 1491(D'l1u)U 2722(20u')S 2803 1452(')U 2579(D'l16u)S 2731(57u)S 2607(D'l-12u)S 2775(58u')S 2 F 72 Z 954 2508(D)U 1511 2412(Figure)U 1731(10.2)S 1 F 48 Z 2591 1287(D'l3u)U 2719(203u')S 2 F 72 Z 1006 2508(ata)U 1122(Dependency)S 1502(Graph)S 1714(for)S 1822(Triangular)S 2162(Example)S 1 F 60 Z 3279 4710(-)U 16(--)S 3259(-)S EP %%Page: ? 20 BP 1 F 60 Z 3279 390(-)U 16(--)S 3259(-)S 72 Z 1600 702(-)U 1648(20)S 1744(-)S 2 F 1821 894(1)U 1138 990(P)U 1511 894(Figure)U 1731(10.)S 1182 990(artitioning)U 1514(for)S 1622(the)S 1734(Triangular)S 2074(Solve)S 1 F 2913 1182(r)U 432(The)S 576(\256rst)S 720(step)S 868(is)S 948(to)S 1036(solve)S 1220(the)S 1340(system)S 1824(,)S 1874(this)S 2009(will)S 2152(determine)S 2471(the)S 2590(solution)S 2853(fo)S 2 F 66 Z 1572(T)S 1633(x)S 4 F 1708(=)S 2 F 1767(b)S 1 F 48 Z 1197(1)T 1421 1296(1)U 1609 1197(1)U 1662(1)S 1736 1296(1)U 72 Z 432 1281(t)U 2 F 66 Z 1392(x)S 1707(x)S 1 F 72 Z 452(hat)S 574(part)S 720(of)S 814(the)S 936(vector)S 1150(labeled)S 1445(.)S 1521(After)S 1794(has)S 1923(been)S 2092(computed)S 2409(it)S 2482(can)S 2615(be)S 2716(used)S 2881(to)S 432 1380(update)U 648(the)S 760(right)S 920(hand)S 1084(side)S 1224(with)S 1376(the)S 1488(computations)S 48 Z 743 1527(2)U 881(2)S 979(2)S 1032(1)S 2 F 66 Z 710 1647(b)U 710 1512(b)U 4 F 789(=)S 2 F 848(b)S 4 F 905(-)S 2 F (T)R 1003(x)S 4 F 789 1647(=)U 2 F 848(b)S 4 F 905(-)S 2 F (T)R 1003(x)S 1 F 48 Z 1032 1662(1)U 743 1797(4)U 743 1662(3)U 881(3)S 979(3)S 881 1797(4)U 979(4)S 1032(1)S 2 F 66 Z 710 1917(b)U 710 1782(b)U 4 F 789(=)S 2 F 848(b)S 4 F 905(-)S 2 F (T)R 1003(x)S 4 F 789 1917(=)U 2 F 848(b)S 4 F 905(-)S 2 F (T)R 1003(x)S 1078(.)S 1 F 72 Z 432 2052(N)U 48 Z 743 1932(5)U 881(5)S 979(5)S 1032(1)S 72 Z 484 2052(otice)U 651(that)S 786(these)S 961(matrix-vector)S 1380(multiplications)S 1839(can)S 1966(occur)S 2153(in)S 2235(parallel,)S 2495(as)S 2581(there)S 2751(are)S 2865(no)S 2905 2148(e)U 432 2244(v)U 432 2148(dependences.)U 878(However,)S 1196(there)S 1376(may)S 1535(be)S 1638(several)S 1877(processes)S 2188(attempting)S 2531(to)S 2622(update)S 2849(th)S 468 2244(alue)U 613(of)S 698(a)S 754(vector)S 1028(\(for)S 1160(example)S 1428(4,8,11)S 1632(will)S 1768(update)S 2041(\))S 2089(and)S 2217(this)S 2345(will)S 2481(have)S 2641(to)S 2721(be)S 2813(syn-)S 2 F 66 Z 958(b)S 1984(b)S 48 Z 991 2259(j)U 1 F 2017(4)S 72 Z 2919 2343(.)U 432 2439(A)U 432 2343(chronized)U 743(through)S 994(the)S 1109(use)S 1232(of)S 1319(locks)S 1498(or)S 1585(the)S 1700(use)S 1823(of)S 1910(temporary)S 2233(arrays)S 2435(for)S 2545(each)S 2703(process)S 484 2439(s)U 544(soon)S 712(as)S 893(has)S 1021(been)S 1189(updated,)S 1467(the)S 1587(computation)S 1979(of)S 2156(can)S 2288(proceed)S 2548(as)S 2919(.)S 2 F 66 Z 804(b)S 2071(x)S 2640(x)S 4 F 2715(=)S 2 F 2774(T)S 2862(b)S 1 F 48 Z 837 2454(2)U 2100(2)S 2669(2)S 2811(6)S 4 F 2811 2412(-)U 1 F (1)R 2895 2454(2)U 72 Z 2909 2538(s)U 432 2634(i)U 432 2538(Notice)U 660(that)S 804(this)S 944(computation)S 1339(is)S 1422(independent)S 1809(of)S 1904(the)S 2027(other)S 2210(matrix-vector)S 2637(operation)S 452 2634(nvolving)U 794(,)S 898(,)S 945(and)S 1135(.)S 1206(After)S 1469(has)S 1594(been)S 1759(computed,)S 2090(it)S 2159(can)S 2288(be)S 2385(used)S 2545(to)S 2629(update)S 2849(the)S 2 F 66 Z 737(b)S 841(b)S 1078(b)S 1387(x)S 1 F 48 Z 770 2649(3)U 874(4)S 1111(5)S 1416(2)S 72 Z 432 2733(right)U 592(hand)S 756(side)S 896(as)S 980(follows:)S 48 Z 743 2880(3)U 881(3)S 979(7)S 1032(2)S 2 F 66 Z 710 3000(b)U 710 2865(b)U 4 F 789(=)S 2 F 848(b)S 4 F 905(-)S 2 F (T)R 1003(x)S 4 F 789 3000(=)U 2 F 848(b)S 4 F 905(-)S 2 F (T)R 1003(x)S 1 F 48 Z 1032 3015(2)U 743 3150(5)U 743 3015(4)U 881(4)S 979(8)S 881 3150(5)U 979(9)S 1032(2)S 2 F 66 Z 1078 3135(.)U 1 F 72 Z 432 3270(T)U 2 F 66 Z 710 3135(b)U 4 F 789(=)S 2 F 848(b)S 4 F 905(-)S 2 F (T)R 1003(x)S 1 F 72 Z 476 3270(he)U 570(process)S 812(is)S 886(continued)S 1195(until)S 1352(the)S 1465(full)S 1590(solution)S 1847(is)S 1920(determined.)S 2311(The)S 2448(data)S 2593(dependency)S 432 3366(graph)U 620(for)S 728(this)S 856(can)S 980(be)S 1072(represented)S 1428(in)S 1508(Figure)S 1720(10.2.)S EP %%Page: ? 19 BP 1 F 72 Z 432 42(r)U (ithm)R 621(one)S 757(would)S 969(like)S 1109(to)S 1197(be)S 1297(assured)S 1545(that)S 1685(the)S 1805(numerical)S 2125(properties)S 2445(of)S 2537(the)S 2657(algorithm)S 2901 138(n)U 432 234(t)U 432 138(are)U 549(correct)S 778(in)S 863(serial)S 1048(mode)S 1237(before)S 1450(entering)S 1715(the)S 1831(parallel)S 2075(testing)S 2295(regime.)S 2565(Operating)S 2881(i)S 452 234(his)U 570(sequence)S 868(tends)S 1054(to)S 1143(separate)S 1412(ordinary)S 1689(programming)S 2114(bugs)S 2283(from)S 2456(those)S 2641(associated)S 60 Z 3279 606(-)U 16(--)S 3259(-)S 72 Z 1600 918(-)U 1648(19)S 1744(-)S 2901 1110(n)U 432 1206(b)U 432 1110(with)U 587(parallel)S 830(programming.)S 1291(Moreover,)S 1620(due)S 1751(to)S 1834(the)S 1949(SCHEDULE)S 2352(mechanism)S 2707(one)S 2837(ca)S 468 1206(e)U 530(fairly)S 716(con\256dent)S 1014(that)S 1151(a)S 1212(parallel)S 1457(bug)S 1594(is)S 1671(due)S 1804(either)S 1997(to)S 2082(incorrect)S 2367(speci\256cation)S 2760(of)S 2849(the)S 432 1398(i)U 432 1302(data)U 578(dependency)S 948(graph)S 1138(or)S 1224(to)S 1306(incorrect)S 1588(partitioning)S 1950(of)S 2036(data.)S 2224(Explicit)S 2477(synchronization)S 452 1398(s)U 508(generally)S 804(not)S 924(a)S 984(part)S 1124(of)S 1211(a)S 1270(SCHEDULE)S 1673(program)S 1944(and)S 2075(thus)S 2222(dif\256cult)S 2477(synchronization)S 432 1494(bugs)U 592(do)S 688(not)S 804(generally)S 1096(arise.)S 582 1626(To)U 688(aid)S 802(in)S 884(ascertaining)S 1257(a)S 1314(correct)S 1539(speci\256cation)S 1928(of)S 2013(the)S 2126(data)S 2271(dependency)S 2640(graph)S 2853(we)S 2905 1722(a)U 432 1818(d)U 432 1722(envision)U 703(a)S 762(tool)S 901(that)S 1036(will)S 1175(graphically)S 1526(represent)S 1817(the)S 1932(units)S 2099(of)S 2186(computation)S 2573(and)S 2703(the)S 2817(dat)S 468 1818(ependency)U 810(graph.)S 1050(A)S 1136(preliminary)S 1506(version)S 1751(of)S 1844(this)S 1981(tool)S 2126(has)S 2255(been)S 2424(implemented)S 2833(and)S 2901 1914(n)U 432 2010(b)U 432 1914(experience)U 777(with)S 938(this)S 1075(tool)S 1220(is)S 1301(reported)S 1574(below.)S 1825(Similar)S 2069(ideas)S 2249(have)S 2417(been)S 2585(proposed)S 2881(i)S 468 2010(abb)U 606(In)S 700(our)S 830(view)S 1004(the)S 1126(level)S 1300(of)S 1394(detail)S 1587(in)S 1676(those)S 1861(efforts)S 2082(is)S 2163(too)S 2288(\256ne.)S 2495(We)S 2628(expect)S 2849(the)S 432 2202(t)U 432 2106(level)U 601(of)S 689(detail)S 877(in)S 961(such)S 1121(a)S 1181(representation)S 1617(of)S 1705(a)S 1765(parallel)S 2009(program)S 2281(to)S 2365(roughly)S 2617(correspond)S 452 2202(o)U 515(the)S 630(abstract)S 881(level)S 1048(at)S 1127(which)S 1330(the)S 1445(programmer)S 1827(has)S 1949(partitioned)S 2287(his)S 2397(parallel)S 2639(algorithm.)S 432 2394(s)U 432 2298(Let)U 563(us)S 662(illustrate)S 949(this)S 1088(with)S 1251(a)S 1318(simple)S 1545(example.)S 1866(A)S 1953(favorite)S 2212(example)S 2491(of)S 2585(our's)S 2767(is)S 2849(the)S 460 2394(olution)U 688(of)S 772(a)S 828(triangular)S 1132(linear)S 1320(system)S 1544(partitioned)S 1880(by)S 1976(blocks.)S 3 F 432 2682(10.)U 570(Triangular)S 934(Solve)S 1122(Example)S 1 F 582 2814(We)U 713(can)S 844(consider)S 1119(solving)S 1362(a)S 1425(triangular)S 1736(system)S 1967(of)S 2058(equations)S 2532(in)S 2619(parallel)S 2865(by)S 432 2910(p)U 2 F 66 Z 1116(T)S 1537(x)S 1718(b)S 2365 2814(Tx)U 4 F (=)R 2 F (b)R 1 F 72 Z 468 2910(artitioning)U 792(the)S 904(matrix)S 1177(and)S 1305(vectors)S 1590(and)S 1775(as)S 1859(shown)S 2071(in)S 2151(Figure)S 2363(10.1.)S 48 Z 599 3405(1)U 615 3627(2)U 607 3888(3)U 623 4161(4)U 611 4419(5)U 867 3687(6)U 859 3897(7)U 4155(8)T 887 4413(9)U 1115 3933(10)U 1131 4161(1)U (1)R 1148 4425(1)U (2)R 1355 4197(13)U 1408 4419(14)U 1603 4470(15)U 1920 3372(x1)U 1928 3645(x)U (2)R 1916 4161(x)U 1920 3897(x3)U 1940 4161(4)U 1924 4425(x)U (5)R 2433 4407(b5)U 2445 4152(b)U (4)R 2453 3897(b)U (3)R 2433 3363(b)U 2449 3630(b2)U 2457 3363(1)U 513 3498(D)U 517 3231(D'l-4u)U 661(265u')S 2260 3903(=)U 548 3498('l4u)U 641(1041u')S 765 4539(')U 517(D'l1301u)S 717(0u)S 1818(D'l-1301u)S 2034(-1306u')S 513 4014(D)U 517 3756(D'l520u)U 693(0u')S 548 4014('l785u)U 689(0u')S 765 4278(')U 513 3498(D)U 517 4278(D'l1041u)U 717(0u)S 548 3498('l264u)U 689(0u')S 777(D'l0u)S 905(1041u')S 1037 3756(D'l0u)U 1165(777u')S 1298 4014(D'l-4u)U 1442(521u')S 1558 4278(D'l0u)U 1686(257u')S 2074 3228(D'l0u)U 2202(240u')S 2298 3513(')U 2074 3774(D)U 2074 3513(D'l0u)U 2202(219u)S 2109 3774('l4u)U 2202(232u')S 2298 4041(')U 2074(D'l4u)S 2202(248u)S 2078 4290(D'l0u)U 2206(-37u')S 2302(')S 2078(D'l0u)S 2206(240u)S 2583 3237(D'l0u)U 2711(240u')S 2807 3522(')U 2583 3780(D)U 2583 3522(D'l0u)U 2711(219u)S 2618 3780('l4u)U 2711(232u')S 2807 4050(')U 2583(D'l4u)S 2711(247u)S 2587 4296(D'l0u)U 2715(241u')S 2587(D'l0u)S 2715(-36u')S EP %%Page: ? 18 BP 1 F 72 Z 432 18(The)U 570(call)S 700(to)S 921(does)S 1079(not)S 1197(result)S 1383(in)S 1465(a)S 1523(busy)S 1685(wait)S 1835(as)S 1921(one)S 2051(might)S 2245(suspect.)S 2525(Instead,)S 2776(a)S 2833(call)S 2 F 66 Z 782(wait)S 1863 114(work)U 1 F 72 Z 2909(s)S 432 210(r)U 432 114(is)U 507(made)S 690(to)S 773(a)S 832(routine)S 1063(that)S 1197(is)S 1271(quite)S 1441(similar)S 1667(to)S 1749(the)S 2021(routines)S 2279(discussed)S 2581(earlier.)S 2809(Thi)S 456 210(outine)U 667(accesses)S 942(the)S 1060(readyq)S 1286(makes)S 1500(a)S 1562(call)S 1696(and)S 1830(then)S 5 F 1984(")S 1 F (checks)R 2240(in)S 5 F (")R 1 F 2356(and)S 2490(returns)S 2720(to)S 2919(.)S 432 306(W)U 2 F 66 Z 1004(wait)S 2806 210(wait)U 1 F 72 Z 500 306(ithin)U 659(the)S 774(routine)S 1143(completion)S 1493(of)S 1579(spawned)S 1857(processes)S 2159(is)S 2233(monitored.)S 2597(If)S 2671(any)S 2801(have)S 2909 402(s)U 60 Z 16 822(-)U 72 Z 432 402(failed)U 622(to)S 704(complete)S 994(another)S 1236(call)S 1366(to)S 1448(the)S 1562(special)S 1788(work)S 1962(routine)S 2192(is)S 2266(made.)S 2490(Obviously,)S 2833(thi)S 60 Z 36 822(-)U 3259(--)S 72 Z 432 1326(m)U 1600 1134(-)U 1648(18)S 1744(-)S 488 1326(ay)U 595(result)S 794(in)S 889(stack)S 1076(over\257ow)S 1371(when)S 1566(spawned)S 1857(routines)S 2128(spawn)S 2351(other)S 2537(routines.)S 2849(An)S 2917 1422(l)U 432 1518(w)U 432 1422(alternative)U 780(was)S 936(used)S 1112(in)S 1211(this)S 1358(package)S 1637(previously)S 1984(dongarra)S 2283(sorensen)S 2578(full)S 2721(paralle)S 484 1518(hich)U 632(avoided)S 884(stack)S 1056(over\257ow)S 1336(but)S 1452(was)S 1588(deemed)S 1836(overly)S 2044(complicated)S 2420(for)S 2528(the)S 2640(user.)S 3 F 432 1710(9.)U 534(An)S 650(Environment)S 1082(for)S 1198(the)S 1318(Development)S 1746(of)S 1830(Explicitly)S 2150(Parallel)S 2414(Programs)S 1 F 582 1842(As)U 701(we)S 824(mentioned)S 1167(at)S 1258(the)S 1385(outset,)S 1614(SCHEDULE)S 2029(is)S 2116(a)S 2187(programming)S 2617(aid)S 2743(that)S 2889(is)S 432 2034(p)U 432 1938(intended)U 705(to)S 786(serve)S 963(as)S 1048(a)S 1105(backbone)S 1405(to)S 1485(an)S 1577(environment)S 1965(for)S 2073(the)S 2185(development)S 2581(of)S 2665(explicitly)S 468 2034(arallel)U 678(programs.)S 1022(Our)S 1164(goal)S 1318(is)S 1396(to)S 1482(provide)S 1731(a)S 1792(uniform)S 2053(interface)S 2334(to)S 2419(the)S 2536(parallel)S 2781(capa-)S 432 2226(t)U 432 2130(bilities)U 661(provided)S 950(by)S 1055(existing)S 1315(and)S 1451(impending)S 1791(parallel)S 2039(systems.)S 2341(Included)S 2625(in)S 2713(this)S 2849(are)S 452 2226(ools)U 608(for)S 728(debugging)S 1067(and)S 1206(analyzing)S 1521(the)S 1644(performance)S 2043(of)S 2138(parallel)S 2389(programs.)S 2738(In)S 2833(this)S 2917 2322(t)U 432 2418(a)U 432 2322(section)U 669(we)S 786(shall)S 955(describe)S 1228(some)S 1413(of)S 1506(our)S 1635(goals)S 1819(in)S 1907(this)S 2043(area.)S 2237(Preliminary)S 2609(attempts)S 2885(a)S 464 2418(chieving)U 736(these)S 908(goals)S 1084(have)S 1244(been)S 1404(implemented)S 1804(or)S 1888(are)S 2000(in)S 2080(the)S 2192(design)S 2404(stage.)S 2901 2550(g)U 432 2646(a)U 582 2550(We)U 711(regard)S 924(SCHEDULE)S 1329(as)S 1417(a)S 1477(tool)S 1617(primarily)S 1913(designed)S 2197(as)S 2285(an)S 2381(aid)S 2497(to)S 2581(constructin)S 464 2646(n)U 527(implementation)S 1006(of)S 1093(a)S 5 F 1152(")S 1 F (new)R 5 F (")R 1 F 1359(parallel)S 1601(algorithm.)S 1949(We)S 2075(do)S 2173(not)S 2291(think)S 2465(it)S 2531(is)S 2605(particularly)S 2909 2742(s)U 432 2838(w)U 432 2742(well)U 585(suited)S 786(to)S 871(converting)S 1207(an)S 1303(existing)S 1559(serial)S 1743(code)S 1907(to)S 1991(a)S 2051(parallel)S 2295(version,)S 2553(although)S 2833(thi)S 484 2838(ould)U 641(be)S 738(possible)S 1003(in)S 1088(some)S 1269(cases.)S 1492(The)S 1633(reason)S 1849(for)S 1961(this)S 2093(statement)S 2397(is)S 2473(that)S 2609(to)S 2693(program)S 2917 2934(l)U 432 3030(u)U 432 2934(with)U 594(SCHEDULE)S 1003(it)S 1076(is)S 1157(imperative)S 1498(that)S 1639(the)S 1760(large)S 1937(grain)S 2118(data)S 2271(dependencies)S 2692(are)S 2813(wel)S 468 3030(nderstood)U 779(by)S 878(the)S 993(programmer.)S 1418(This)S 1573(is)S 1648(of)S 1735(course)S 1949(required)S 2215(in)S 2297(any)S 2427(successful)S 2749(imple-)S 432 3222(a)U 432 3126(mentation)U 750(of)S 840(a)S 902(parallel)S 1147(program.)S 1462(However,)S 1773(with)S 1930(SCHEDULE)S 2335(the)S 2452(data)S 2601(partitioning)S 464 3222(nd)U 565(construction)S 950(of)S 1039(the)S 1156(data)S 1305(dependency)S 1677(graph)S 1869(are)S 1985(an)S 2081(explicit)S 2325(part)S 2465(of)S 2553(the)S 2669(program-)S 432 3414(i)U 432 3318(ming)U 618(effort.)S 858(We)S 996(expect)S 1222(that)S 1368(the)S 1494(designer)S 1775(of)S 1872(a)S 1941(parallel)S 2194(algorithm)S 2511(will)S 2660(have)S 2833(this)S 452 3414(nformation)U 803(naturally)S 1090(at)S 1173(hand.)S 1386(At)S 1489(least)S 1651(this)S 1785(has)S 1911(been)S 2077(our)S 2203(experience)S 2545(in)S 2631(the)S 2749(design)S 2913 3510(-)U 432 3606(P)U 432 3510(of)U 546(our)S 696(own)S 874(parallel)S 1143(algorithms)S 1504(dongarra)S 1813(sorensen)S 2118(Linear)S 2359(Algebra)S 2644(on)S 2769(High)S 472 3606(erformance)U 852(Computers)S 1220(Enforcing)S 1559(this)S 1714(programming)S 2157(style)S 2344(goes)S 2527(a)S 2610(long)S 2789(ways)S 432 3702(towards)U 684(avoiding)S 960(bugs)S 1120(traditionally)S 1496(associated)S 1816(with)S 1968(parallel)S 2208(programming.)S 582 3834(We)U 715(have)S 884(found)S 1085(it)S 1158(very)S 1319(useful)S 1528(to)S 1617(retain)S 1814(the)S 1935(capability)S 2252(of)S 2345(executing)S 2657(a)S 2721(parallel)S 432 4026(o)U 432 3930(program)U 701(in)S 782(serial)S 963(mode.)S 1189(A)S 1265(SCHEDULE)S 1665(program)S 1933(does)S 2089(not)S 2205(depend)S 2437(upon)S 2605(the)S 2717(number)S 468 4026(f)U 518(physical)S 784(processors)S 1114(available)S 1400(in)S 1482(a)S 1540(given)S 1725(system.)S 1992(It)S 2061(will)S 2198(execute)S 2443(with)S 2596(one)S 2725(proces-)S 432 4218(t)U 432 4122(sor)U 550(active.)S 794(Others)S 1016(have)S 1182(found)S 1380(this)S 1513(to)S 1598(be)S 1695(a)S 1756(useful)S 1961(property)S 2234(of)S 2323(such)S 2484(a)S 2545(programming)S 452 4218(ool)U 571(lusk)S 718(overbeek)S 1009(However,)S 1318(Gentleman)S 1661(gentleman)S 1988(private)S 2215(does)S 2373(not)S 2491(feel)S 2625(that)S 2759(this)S 2889(is)S 2913 4314(-)U 432 4410(s)U 432 4314(feature)U 659(is)S 734(essential)S 1009(to)S 1092(the)S 1207(dubugging)S 1542(of)S 1629(parallel)S 1872(programs.)S 2189(We)S 2316(\256nd)S 2455(at)S 2533(least)S 2691(two)S 2825(rea)S 460 4410(ons)U 587(to)S 670(provide)S 917(it.)S 1026(First)S 1185(it)S 1252(allows)S 1467(one)S 1598(to)S 1681(develop)S 1936(and)S 2067(test)S 2193(code)S 2355(on)S 2453(a)S 2511(serial)S 2693(machine)S 2905 4506(a)U 432 4602(r)U 432 4506(such)U 594(as)S 684(a)S 746(VAX)S 932(11/780.)S 1204(This)S 1362(is)S 1440(quite)S 1614(important)S 1924(when)S 2110(the)S 2228(parallel)S 2474(machine)S 2747(is)S 2824(at)S 456 4602(emote)U 671(site)S 810(or)S 909(if)S 992(the)S 1119(software)S 1406(development)S 1817(environment)S 2219(existing)S 2485(on)S 2595(the)S 2721(parallel)S 432 4698(machine)U 709(is)S 790(inadequate)S 1135(or)S 1228(dif\256cult)S 1489(to)S 1577(use.)S 1747(Second,)S 2033(when)S 2221(developing)S 2573(a)S 2637(new)S 2789(algo-)S EP %%Page: ? 17 BP 1 F 72 Z 432 6(c)U (uting)R 638(a)S 852(program)S 1121(will)S 1258(be)S 1351(free)S 1488(and)S 1617(will)S 1754(pick)S 1903(this)S 2032(process)S 2273(off)S 2382(of)S 2467(the)S 2580(ready)S 2765(queue)S 2 F 66 Z 695(work)S 887 102(call)U 1029(subname)S 1 F (\()R 4 F (<)R 2 F (parms)R 4 F 1489(>)S 1 F (\))R 72 Z 432(a)S (nd)R 569(execute)S 822(a)S 1548(.)S 1623(It)S 1700(is)S 1781(the)S 1901(user's)S 2105(responsibility)S 2529(to)S 2617(assure)S 2829(that)S 432 198(the)U 554(addresses)S 864(passed)S 1089(in)S 1451(are)S 1572(addresses)S 1881(in)S 1970(shared)S 2191(memory.)S 2506(That)S 2671(is)S 2752(to)S 2841(say)S 4 F 66 Z 1178(<)S 2 F (parms)R 4 F (>)R 1 F 72 Z 432 294(t)U (hat)R 575(these)S 757(addresses)S 1067(must)S 1241(reference)S 1543(shared)S 1765(memory)S 2039(that)S 2181(has)S 2311(been)S 2481(declared)S 2759(in)S 2849(the)S 432 390(program)U 701(that)S 834(made)S 1015(the)S 1128(call)S 1257(to)S 1488(.)S 1555(Hence)S 1764(these)S 1937(addresses)S 2237(must)S 2401(come)S 2581(from)S 2745(named)S 2 F 66 Z 1338(sched)S 2603 486(subname)U 1 F 72 Z 2913(r)S 432 582(w)U 432 486(common)U 724(declared)S 1008(in)S 1104(that)S 1252(program)S 1536(and)S 1679(referenced)S 2022(by)S 2133(the)S 2260(subroutine)S 2877(o)S 484 582(hich)U 632(have)S 792(been)S 952(passed)S 1168(as)S 1252(parameters)S 1592(in)S 1672(the)S 1784(call)S 1912(to)S 2142(.)S 2 F 66 Z 1992(sched)S 1 F 60 Z 3279 1038(-)U 16(--)S 3259(-)S 72 Z 1600 1350(-)U 1648(17)S 1744(-)S 582 1542(The)U 718(sequence)S 1006(of)S 1090(statements)S 2 F 66 Z 710 1674(call)U 852(prtspn)S 1 F (\()R 2 F (myid)R 1 F (\))R 2 F 732 1788(.)U 771(.)S 810(.)S 820 1938(call)U 962(spawn)S 1 F (\()R 2 F (myid)R 1 F (,)R 2 F (jdummy)R 1 F (,)R 2 F (subname)R 1 F (,)R 4 F (<)R 2 F 1813(parms)S 4 F (>)R 1 F (\))R 2 F 710 2202(c)U 732 2052(.)U 771(.)S 810(.)S 739 2202(all)U 852(wait)S 1 F (\()R 2 F (myid)R 1 F (\))R 72 Z 432 2334(a)U (ccomplish)R 789(dynamic)S 1066(spawning)S 1371(of)S 1460(processes.)S 1807(Usually)S 2060(calls)S 2221(to)S 2306(spawn)S 2519(are)S 2636(made)S 2821(in)S 2905(a)S 432 2430(loop)U 593(but)S 718(they)S 874(need)S 1042(not)S 1166(be.)S 1308(The)S 1452(call)S 1588(to)S 1877(secures)S 2121(an)S 2221(alias)S 2385(process)S 2633(id)S 2881(to)S 2 F 66 Z 1676(prtspn)S 2721(myid)S 1 F 72 Z 2917 2526(t)U 432 2622(c)U 432 2526(record)U 641(completion)S 990(of)S 1075(the)S 1187(spawned)S 1463(processes.)S 1781(This)S 1933(id)S 2013(must)S 2177(be)S 2269(used)S 2425(in)S 2505(the)S 2617(subsequen)S 464 2622(alls)U 591(to)S 870(and)S 1001(to)S 1197(.)S 1242(There)S 1437(is)S 1512(an)S 1607(implied)S 1854(barrier)S 2072(at)S 2150(the)S 2264(call)S 2394(to)S 2615(and)S 2745(execu-)S 432 2718(t)U 2 F 66 Z 674 2622(spawn)U 1084(wait)S 2476(wait)S 1 F 72 Z 452 2718(ion)U 580(does)S 748(not)S 876(continue)S 1160(past)S 1312(this)S 1452(point)S 1635(in)S 1726(the)S 1849(spawning)S 2160(process)S 2411(until)S 2578(all)S 2685(spawned)S 2901 2814(o)U 432(processes)S 737(have)S 902(been)S 1067(completed.)S 1438(The)S 1579(syntax)S 1796(of)S 1885(the)S 2002(call)S 2135(to)S 2418(is)S 2495(very)S 2652(similar)S 2881(t)S 2 F 66 Z 2220(spawn)S 1 F 72 Z 432 2910(t)U 2 F 66 Z 650(putq)S 1284(jdummy)S 1 F 72 Z 452(hat)S 565(of)S 767(.)S 834(The)S 971(parameter)S 1518(is)S 1591(a)S 1648(temporary)S 1969(location)S 2225(that)S 2357(must)S 2521(be)S 2613(supplied)S 2881(to)S 2905 3006(e)U 2 F 66 Z 432(s)S 1 F 72 Z 637(and)S 777(the)S 901(result)S 1097(is)S 1181(a)S 1946(as)S 2042(soon)S 2214(as)S 2310(there)S 2490(is)S 2574(an)S 2677(availabl)S 2 F 66 Z 458(pawn)S 1249(call)S 1391(subname)S 1 F (\()R 4 F (<)R 2 F (parms)R 4 F 1851(>)S 1 F (\))R 72 Z 432 3102(i)U 2 F 66 Z 902(work)S 1 F 72 Z 452(nstantiation)S 815(of)S 1061(available)S 1348(to)S 1431(execute)S 1678(this)S 1809(call.)S 1982(A)S 2061(key)S 2191(difference)S 2509(between)S 2775(a)S 2833(call)S 432 3198(to)U 729(and)S 869(a)S 937(call)S 1077(to)S 1322(is)S 1406(the)S 1530(lack)S 1686(of)S 1782(user)S 1938(speci\256cation)S 2338(of)S 2434(jobtags)S 2678(and)S 2817(data)S 2 F 66 Z 524(spawn)S 1169(putq)S 1 F 72 Z 432 3294(d)U (ependencies.)R 892(The)S 1034(only)S 1192(data)S 1342(dependency)S 1716(indicated)S 2010(here)S 2164(is)S 2242(that)S 2379(a)S 2440(spawned)S 2721(process)S 432 3486(w)U 432 3390(must)U 602(report)S 803(to)S 888(the)S 1005(parent)S 1214(process)S 1459(and)S 1592(no)S 1693(other.)S 1888(This)S 2045(is)S 2122(taken)S 2307(care)S 2456(of)S 2545(automatically)S 484 3486(ith)U 597(use)S 730(of)S 827(the)S 952(above)S 1161(mechanism.)S 1544(If)S 1629(communication)S 2113(is)S 2197(desired)S 2441(at)S 2529(a)S 2597(lower)S 2797(level)S 432 3678(a)U 432 3582(among)U 653(spawned)S 930(processes)S 1231(this)S 1360(must)S 1525(be)S 1618(accomplished)S 2039(through)S 2288(the)S 2401(use)S 2521(of)S 2605(shared)S 2817(data)S 464 3678(nd/or)U 646(locks.)S 846(Local)S 1040(variables)S 1330(in)S 1416(the)S 1534(spawning)S 1840(routine)S 2074(may)S 2228(be)S 2326(passed)S 2548(as)S 2637(arguments)S 2917 3774(l)U 432 3870(m)U 432 3774(to)U 530(the)S 660(spawned)S 954(routines)S 1228(with)S 1398(the)S 1528(understanding)S 1978(that)S 2128(their)S 2302(scope)S 2507(extends)S 2768(to)S 2865(al)S 488 3870(embers)U 727(of)S 818(the)S 937(subtree)S 1175(rooted)S 1413(at)S 1495(the)S 1613(spawning)S 1919(process.)S 2207(These)S 2409(variables)S 2699(must)S 2869(be)S 432 3966(treated)U 652(as)S 736(shared)S 948(data)S 1092(within)S 1300(this)S 1428(subtree.)S 582 4098(The)U 733(implications)S 1128(of)S 1227(the)S 1353(mechanism)S 1719(used)S 1889(for)S 2011(spawning)S 2325(should)S 2555(be)S 2661(discussed)S 2905 4194(e)U 432 4290(s)U 432 4194(further.)U 712(We)S 854(rely)S 1007(upon)S 1192(the)S 1321(stack)S 1510(associated)S 1847(with)S 2016(the)S 2145(calling)S 2382(tree)S 2531(rooted)S 2756(at)S 2849(th)S 460 4290(pawning)U 740(process.)S 1030(If)S 1110(one)S 1246(wishes)S 1474(to)S 1562(do)S 1666(recursion)S 1966(to)S 2053(gain)S 2208(parallelism)S 2559(then)S 2714(there)S 2889(is)S 432 4482(a)U 432 4386(potential)U 716(for)S 832(stack)S 1012(over\257ow.)S 1342(This)S 1502(is)S 1582(an)S 1682(unfortunate)S 2045(consequence)S 2444(of)S 2535(an)S 2634(attempt)S 2881(to)S 464 4482(void)U 622(the)S 740(burden)S 970(of)S 1060(placing)S 1302(and)S 1436(keeping)S 1694(track)S 1867(of)S 1956(entry)S 2133(points)S 2338(and)S 2471(saving)S 2688(the)S 2805(state)S 432 4674(r)U 432 4578(of)U 531(an)S 638(executing)S 957(process)S 1212(which)S 1427(spawns)S 1678(other)S 1865(processes.)S 2222(The)S 2373(key)S 2516(problem)S 2795(is)S 2881(to)S 456 4674(etain)U 633(the)S 758(ability)S 979(to)S 1071(execute)S 1327(the)S 1451(parallel)S 1703(program)S 1983(on)S 2091(a)S 2159(single)S 2367(physical)S 2643(processor.)S EP %%Page: ? 16 BP 1 F 60 Z 672 6(C)U (A)R 753(L)S 793(L)S 873(L)S 912(CK)S 991(AS)S 1071(N)S 1122(\()S 1203(i)S 1243(l)S 1277(o)S 1318(c)S 1357(k)S 1442(\))S 1442 78(\))U 672 150(C)U 672 78(CA)U 753(L)S 793(L)S 873(LOC)S 991(K)S 1031(O)S 1071(N)S 1122(\()S 1203(i)S 1243(l)S 1277(o)S 1318(c)S 1357(k)S 711 150(AL)U 793(L)S 871(U)S 911(NLO)S 1032(CK)S 1122(\()S 1203(i)S 1243(l)S 1277(o)S 1318(c)S 1357(k)S 1442(\))S 677 294(n)U 717(p)S 762(r)S 797(o)S 838(c)S 880(s)S 1042(-)S 1111(N)S 1157(u)S 1189(mb)S 1278(e)S 1322(r)S 1397(o)S 1442(f)S 1517(v)S 1563(i)S 1602(r)S 1643(t)S 1677(u)S 1718(a)S 1763(l)S 1837(p)S 1882(r)S 1917(o)S 1958(c)S 1998(e)S 2040(s)S 2080(s)S 2117(o)S 2162(r)S 2200(s)S 2283(t)S 2317(o)S 2397(b)S 2438(e)S 2517(u)S 2560(s)S 2598(e)S 2637(d)S 2717(o)S 2757(n)S 2840(s)S 2877(u)S 2917(b)S 2957(n)S 2998(a)S 3029(m)S 3078(e)S 3124(.)S 4 F 675 438(<)U 1 F 680 366(s)U 717(u)S 757(b)S 797(n)S 838(a)S 869(m)S 918(e)S 1042(-)S 1115(S)S 1157(u)S 1197(b)S 1242(r)S 1277(o)S 1317(u)S 1363(t)S 1403(i)S 1437(n)S 1478(e)S 1563(t)S 1597(o)S 1677(b)S 1718(e)S 1798(e)S 1837(x)S 1878(e)S 1918(c)S 1957(u)S 2003(t)S 2038(e)S 2077(d)S 2124(.)S 717 438(p)U 758(a)S 802(r)S 829(m)S 880(s)S 4 F 915(>)S 1 F 1042(-)S 1123(l)S 1163(i)S 1200(s)S 1243(t)S 1317(o)S 1362(f)S 1437(p)S 1478(a)S 1522(r)S 1558(a)S 1589(m)S 1638(e)S 1683(t)S 1718(e)S 1762(r)S 1800(s)S 1882(f)S 1917(o)S 1962(r)S 2040(s)S 2077(u)S 2117(b)S 2157(n)S 2198(a)S 2229(m)S 2278(e)S 2324(.)S 2404 510(.)U 683 582(i)U 683 510(j)U 717(o)S 757(b)S 803(t)S 838(a)S 877(g)S 1042(-)S 1111(A)S 1197(u)S 1237(n)S 1283(i)S 1317(q)S 1357(u)S 1398(e)S 1477(u)S 1520(s)S 1558(e)S 1602(r)S 1680(s)S 1717(u)S 1757(p)S 1797(p)S 1843(l)S 1883(i)S 1918(e)S 1957(d)S 2043(i)S 2077(d)S 2118(e)S 2157(n)S 2203(t)S 2243(i)S 2275(\256)S 2318(e)S 2362(r)S 718 582(c)U 758(a)S 797(n)S 837(g)S 877(o)S 1042(-)S 1113(T)S 1157(h)S 1198(e)S 1277(n)S 1317(u)S 1349(mb)S 1438(e)S 1482(r)S 1557(o)S 1602(f)S 1677(p)S 1722(r)S 1757(o)S 1798(c)S 1838(e)S 1880(s)S 1920(s)S 1958(e)S 2000(s)S 2083(t)S 2117(h)S 2158(a)S 2203(t)S 2269(mu)S 2360(s)S 2403(t)S 2478(c)S 2517(o)S 2549(mp)S 2643(l)S 2678(e)S 2723(t)S 2758(e)S 2837(b)S 2878(e)S 2922(f)S 2957(o)S 3002(r)S 3038(e)S 677 726(n)U 1123 654(t)U 1157(h)S 1203(i)S 1240(s)S 1317(p)S 1362(r)S 1397(o)S 1438(c)S 1478(e)S 1520(s)S 1560(s)S 1640(s)S 1683(t)S 1718(a)S 1762(r)S 1803(t)S 1840(s)S 1884(.)S 718 726(c)U 757(h)S 798(e)S 837(k)S 880(s)S 1042(-)S 1115(S)S 1157(p)S 1198(e)S 1238(c)S 1283(i)S 1315(\256)S 1358(e)S 1400(s)S 1483(t)S 1517(h)S 1558(e)S 1637(n)S 1677(u)S 1709(mb)S 1798(e)S 1842(r)S 1917(o)S 1962(f)S 2037(p)S 2082(r)S 2117(o)S 2158(c)S 2198(e)S 2240(s)S 2280(s)S 2318(e)S 2360(s)S 2443(t)S 2477(h)S 2518(a)S 2563(t)S 2637(d)S 2678(e)S 2717(p)S 2758(e)S 2797(n)S 2837(d)S 2917(o)S 2957(n)S 26 1254(-)U 1123 798(t)U 1157(h)S 1203(i)S 1240(s)S 1317(p)S 1362(r)S 1397(o)S 1438(c)S 1478(e)S 1520(s)S 1560(s)S 1604(.)S 66 1254(-)U 3229(-)S 3269(-)S 72 Z 1552 1542(-)U 1642(1)S 1690(6)S 1792(-)S 2 F 66 Z 2232 1734(ncheks)U 1 F 60 Z 2699(s)S 669(my)S 758(c)S 797(h)S 837(k)S 877(n)S 1042(-)S 1111(A)S 1157(n)S 1243(i)S 1277(n)S 1323(t)S 1358(e)S 1397(g)S 1438(e)S 1482(r)S 1558(a)S 1602(r)S 1642(r)S 1678(a)S 1717(y)S 1791(w)S 1837(h)S 1877(o)S 1920(s)S 1958(e)S 2035(\256)S 2082(r)S 2120(s)S 2163(t)S 2457(e)S 2496(n)S 2542(t)S 2581(r)S 2622(i)S 2657(e)S 1118 1806(c)U 1157(o)S 1197(n)S 1243(t)S 1278(a)S 1323(i)S 1357(n)S 1443(t)S 1477(h)S 1518(e)S 1603(i)S 1637(d)S 1678(e)S 1717(n)S 1763(t)S 1803(i)S 1835(\256)S 1878(e)S 1922(r)S 1960(s)S 2037(o)S 2082(f)S 2163(t)S 2197(h)S 2238(e)S 2317(p)S 2362(r)S 2397(o)S 2438(c)S 2478(e)S 2520(s)S 2560(s)S 2598(e)S 2640(s)S 2723(t)S 2757(h)S 2798(a)S 2843(t)S 669 1950(m)U 1117 1878(d)U 1158(e)S 1197(p)S 1238(e)S 1277(n)S 1317(d)S 1397(o)S 1437(n)S 1523(t)S 1557(h)S 1603(i)S 1640(s)S 1717(p)S 1762(r)S 1797(o)S 1838(c)S 1878(e)S 1920(s)S 1960(s)S 2004(.)S 717 1950(y)U 763(i)S 797(d)S 1042(-)S 1111(A)S 1157(n)S 1238(a)S 1283(l)S 1323(i)S 1358(a)S 1400(s)S 1477(p)S 1522(r)S 1557(o)S 1598(c)S 1638(e)S 1680(s)S 1720(s)S 1803(i)S 1837(d)S 1918(a)S 1960(s)S 2000(s)S 2043(i)S 2077(g)S 2117(n)S 2158(e)S 2197(d)S 2277(b)S 2317(y)S 2395(S)S 2432(CH)S 2513(ED)S 2591(UL)S 2673(E)S 2763(t)S 2797(o)S 2882(r)S 2918(e)S 2958(c)S 2997(o)S 3042(r)S 3077(d)S 683 2094(j)U 1118 2022(c)U 1157(o)S 1189(mp)S 1283(l)S 1318(e)S 1363(t)S 1403(i)S 1437(o)S 1477(n)S 1557(o)S 1602(f)S 1683(t)S 1717(h)S 1758(e)S 1840(s)S 1877(p)S 1918(a)S 1951(w)S 1997(n)S 2038(e)S 2077(d)S 2157(p)S 2202(r)S 2237(o)S 2278(c)S 2318(e)S 2360(s)S 2400(s)S 2438(e)S 2480(s)S 2524(.)S 717 2094(d)U 757(u)S 789(m)S 829(my)S 1042(-)S 1111(A)S 1197(d)S 1237(u)S 1269(m)S 1309(my)S 1443(i)S 1477(n)S 1523(t)S 1558(e)S 1597(g)S 1638(e)S 1682(r)S 1757(p)S 1798(a)S 1842(r)S 1878(a)S 1909(m)S 1958(e)S 2003(t)S 2038(e)S 2082(r)S 2124(.)S 2764 2166(.)U 72 Z 582 2298(T)U 60 Z 683 2166(i)U 723(l)S 757(o)S 798(c)S 837(k)S 1042(-)S 1111(A)S 1197(g)S 1243(l)S 1277(o)S 1317(b)S 1358(a)S 1403(l)S 1443(l)S 1477(y)S 1560(s)S 1597(h)S 1638(a)S 1682(r)S 1718(e)S 1757(d)S 1837(v)S 1878(a)S 1922(r)S 1963(i)S 1998(a)S 2037(b)S 2083(l)S 2118(e)S 2197(u)S 2240(s)S 2278(e)S 2317(d)S 2398(a)S 2440(s)S 2518(a)S 2603(l)S 2637(o)S 2678(c)S 2717(k)S 72 Z 626 2298(here)U 786(are)S 910(three)S 1089(basic)S 1272(operations)S 1607(in)S 1698(SCHEDULE)S 2109(other)S 2292(than)S 2451(the)S 2574(lowest)S 2797(level)S 3 F 2917 2394(l)U 432 2490(s)U 1 F 432 2394(synchronization)U 925(provided)S 1214(through)S 1471(locks.)S 1697(They)S 1877(are)S 3 F 1997(call)S 2137(sched)S 1 F (,)R 3 F 2359(call)S 2499(putq)S 1 F (,)R 2693(and)S 3 F 2829(cal)S 460 2490(pawn)U 1 F (.)R 696(Various)S 950(additional)S 1264(calls)S 1422(must)S 1588(be)S 1682(made)S 1864(in)S 1946(association)S 2292(with)S 2446(these)S 2620(three)S 2789(basic)S 2905 2586(e)U 432 2682(p)U 432 2586(operations)U 757(to)S 838(enforce)S 1079(data)S 1224(dependencies,)S 1655(and)S 1784(orchestrate)S 2125(the)S 2237(correct)S 2461(execution)S 2765(of)S 2849(th)S 468 2682(arallel)U 672(program.)S 974 2814(t)U 582(The)S 718(statemen)S 2 F 66 Z 1201 2946(call)U 1343(sched)S 1 F (\()R 2 F (nprocs)R 1 F (,)R 2 F (paralg)R 1 F (,)R 4 F (<)R 2 F (par)R 2034(ms)S 4 F (>)R 1 F (\))R 2 F 2911 3078(s)U 2065(paralg)S 2757(nproc)S 1 F 72 Z 2698(e)S 432 3174(p)U 432 3078(is)U 508(used)S 668(to)S 752(initiate)S 980(the)S 1096(execution)S 1404(of)S 1492(a)S 1551(parallel)S 1794(program)S 2268(and)S 2399(will)S 2538(devot)S 468 3174(hysical)U 707(processors)S 1046(to)S 1137(the)S 1260(computation.)S 1697(The)S 1844(symbol)S 2365(stands)S 2579(for)S 2697(a)S 2763(set)S 2877(of)S 4 F 66 Z 2091(<)S 2 F (parms)R 4 F (>)R 2 F 2656 3270(g)U 2513(paral)S 1 F 72 Z 2901(h)S 432 3366(a)U 432 3270(parameters)U 773(that)S 906(would)S 1111(normally)S 1396(be)S 1489(supplied)S 1757(to)S 1837(the)S 1949(Fortran)S 2185(subroutine)S 2713(throug)S 491 3366(Fortran)U 730(call)S 861(in)S 944(a)S 1003(sequential)S 1322(program.)S 1635(One)S 1782(should)S 2001(think)S 2175(of)S 2261(the)S 2375(memory)S 2641(associated)S 2905 3462(e)U 432 3558(e)U 432 3462(with)U 593(the)S 714(parameter)S 1035(list)S 1156(represented)S 1521(by)S 4 F 1626(<)S 1 F (parms)R 4 F (>)R 1 F 1915(as)S 2008(shared)S 2229(memory)S 2501(throughout)S 2849(th)S 464 3558(xecution)U 765(of)S 1054(.)S 1149(Another)S 1437(way)S 1609(to)S 1717(share)S 1921(memory)S 2213(is)S 2313(through)S 2589(the)S 2729(use)S 2877(of)S 2 F 66 Z 432 3654(named)U 630(common)S 878 3558(paralg)U 1 F 72 Z 854 3654(.)U 582 3786(T)U (he)R 718(pair)S 854(of)S 938(statements)S 2 F 66 Z 710 3918(c)U (all)R 852(dep)S 1 F (\()R 2 F (jobtag)R 1 F (,)R 2 F (icango)R 1 F (,)R 2 F (ncheks)R 1 F (,)R 2 F (mychkn)R 1 F (\))R 2 F 710 4050(call)U 852(putq)S 1 F (\()R 2 F (jobtag)R 1 F (,)R 2 F (subname)R 1 F (,)R 4 F (<)R 2 F (parms)R 4 F 1631(>)S 1 F (\))R 2 F 2842 4182(dep)U 1 F 72 Z 432 4278(u)U 432 4182(are)U 554(used)S 720(to)S 810(place)S 996(a)S 1062(process)S 1312(in)S 1402(the)S 1524(large)S 1702(grained)S 1952(data)S 2106(dependency)S 2484(graph)S 2681(with)S 468 4278(sed)U 590(to)S 672(record)S 882(the)S 996(data)S 1141(dependencies)S 1554(and)S 1825(to)S 1906(record)S 2115(the)S 2228(unit)S 2365(of)S 2450(computation.)S 2877(In)S 2 F 66 Z 1683(putq)S 2428 4374(subname)U 1 F 72 Z 2905(e)S 432 4470(c)U 432 4374(this)U 566(case)S 720(the)S 838(unit)S 980(of)S 1070(computation)S 1460(will)S 1602(be)S 1699(a)S 1760(call)S 1893(to)S 1978(the)S 2095(subroutine)S 2692(with)S 2849(th)S 464 4470(alling)U 657(sequence)S 1190(.)S 1261(When)S 1462(the)S 1579(data)S 1728(dependencies)S 2145(for)S 2258(this)S 2391(process)S 2636(have)S 2801(been)S 2 F 66 Z 806 4566(i)U 4 F 950 4470(<)U 2 F (parms)R 4 F (>)R 2 F 824 4566(cango)U 1 F 72 Z 432(s)S (atis\256ed)R 693(the)S 1010(counter)S 1251(will)S 1388(have)S 1549(been)S 1709(decremented)S 2101(to)S 2181(zero)S 2329(and)S 2457(this)S 2585(process)S 2825(will)S 432 4662(be)U 530(placed)S 748(upon)S 922(the)S 1040(ready)S 1230(queue.)S 1474(At)S 1576(some)S 1758(point)S 1936(in)S 2021(time)S 2178(a)S 2239(physical)S 2508(processor)S 2813(exe-)S EP %%Page: ? 15 BP 1 F 54 Z 1120 6(k)U 652(d)S 688(o)S 760(1)S 796(0)S 832(0)S 910(j)S 975(=)S 1048(1)S 1091(,)S 763 66(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 126(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 186(r)U 690(e)S 730(t)S 760(u)S 801(r)S 832(n)S 72 Z 432 450(T)U 54 Z 654 246(e)U 688(n)S 724(d)S 72 Z 476 450(he)U 568(subroutine)S 3 F 896(parprd)S 1 F 1140(must)S 1304(change)S 1532(somewhat.)S 54 Z 1953 798(\))U 438 918(c)U 438 858(c)U 655 798(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 652 918(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 978(c)U 658 1038(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 60 Z 26 1470(-)U 66(-)S 3229(-)S 3269(-)S 72 Z 1552 1746(-)U 1642(1)S 1690(5)S 1792(-)S 54 Z 1626 1938(a)U 438 2058(c)U 438 1998(c)U 657 1938(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 652 2058(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 2118(c)U 658 2178(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 933(my)S 1014(c)S 1048(h)S 1084(k)S 1120(n)S 1161(\()S 1192(1)S 1233(\))S 1271(,)S 1306(i)S 1338(c)S 1374(a)S 1408(n)S 1444(g)S 1480(o)S 1523(,)S 1552(n)S 1590(c)S 1624(h)S 1662(e)S 1696(k)S 1735(s)S 1775(,)S 1810(j)S 1840(o)S 1876(b)S 1918(t)S 1950(a)S 1984(g)S 438 2298(c)U 649 2238(EXT)U 757(E)S 792(RN)S 863(AL)S 971(A)S 1007(D)S 1043(D)S 1079(UP)S 655 2358(J)U 683(O)S 720(BT)S 791(A)S 827(G)S 903(=)S 976(1)S 976 2418(0)U 647 2478(N)U 657 2418(I)U 684(CA)S 755(N)S 791(G)S 827(O)S 903(=)S 684 2478(CH)U 757(EK)S 831(S)S 903(=)S 976(0)S 438 2538(c)U 648 2598(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 1953(\))S 2133 2658(\))U 438 2718(c)U 648 2658(CA)U 721(L)S 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 1259(A)S 1295(D)S 1331(D)S 1367(UP)S 1451(,)S 1480(n)S 1523(,)S 1552(k)S 1595(,)S 1626(a)S 1667(,)S 1696(b)S 1739(,)S 1771(s)S 1810(i)S 1840(g)S 1869(m)S 1914(a)S 1955(,)S 1990(t)S 2022(e)S 2049(mp)S 657 2778(r)U 690(e)S 730(t)S 760(u)S 801(r)S 832(n)S 654 2838(e)U 688(n)S 724(d)S 2 F 66 Z 1397 2970(spawn)U 1842(k)S 4 F 1893(-)S 1 F 1952(1)S 2 F 2831(inp-)S 1 F 72 Z 524 3066(.)U 582 2970(In)U 669(this)S 800(example)S 1071(the)S 1185(call)S 1315(to)S 1592(invokes)S 2011(instances)S 2301(of)S 2387(the)S 2501(subroutine)S 592 3066(Note)U 758(that)S 891(the)S 1004(user)S 1149(does)S 1306(not)S 1423(specify)S 1656(data)S 1801(dependencies.)S 2256(Instead,)S 2507(the)S 2620(jobtags)S 2853(for)S 432 3162(t)U 2 F 66 Z 432 3066(rod)U 1 F 72 Z 452 3162(hese)U 606(processes)S 908(are)S 1022(assigned)S 1296(internally)S 1598(and)S 1728(they)S 1878(are)S 1992(required)S 2257(to)S 2338(report)S 2535(to)S 2616(the)S 2729(spawn-)S 3 F 432 3450(8)U 1 F 432 3258(ing)U 548(process.)S 830(More)S 1010(details)S 1222(of)S 1306(this)S 1434(mechanism)S 1786(are)S 1898(given)S 2082(in)S 2162(the)S 2274(next)S 2422(section.)S 3 F 468 3450(.)U 534(Syntax)S 770(Summary)S 1 F 582 3582(I)U (n)R 681(this)S 823(section)S 1065(we)S 1187(summarize)S 1541(the)S 1667(SCHEDULE)S 2081(operations)S 2419(and)S 2561(their)S 2731(syntax.)S 432 3774(t)U 432 3678(We)U 557(begin)S 742(with)S 895(a)S 952(list)S 1065(of)S 1150(these)S 1323(operations)S 1648(and)S 1777(follow)S 1990(up)S 2087(with)S 2240(a)S 2297(general)S 2533(description)S 2877(of)S 452 3774(heir)U 588(usage.)S 818(With)S 986(this)S 1114(we)S 1222(hope)S 1386(to)S 1466(supplement)S 1822(the)S 1934(examples)S 2230(given)S 2414(above.)S 2 F 1526 4158(U)U 1 F 1572 4062(Table)U 1760(1)S 2 F 1578 4158(ser)U 1690(Calls)S 1 F 60 Z 2202 4326(\))U 672 4398(C)U 672 4326(CA)U 753(L)S 793(L)S 875(S)S 912(CH)S 993(ED)S 1122(\()S 1197(n)S 1237(p)S 1282(r)S 1317(o)S 1358(c)S 1400(s)S 1444(,)S 1520(s)S 1557(u)S 1597(b)S 1637(n)S 1678(a)S 1709(m)S 1758(e)S 1804(,)S 4 F 1875(<)S 1 F 1917(p)S 1958(a)S 2002(r)S 2029(m)S 2080(s)S 4 F 2115(>)S 1 F 711 4398(AL)U 793(L)S 871(DE)S 955(P)S 1122(\()S 1203(j)S 1237(o)S 1277(b)S 1323(t)S 1358(a)S 1397(g)S 1444(,)S 1523(i)S 1558(c)S 1598(a)S 1637(n)S 1677(g)S 1717(o)S 1764(,)S 1837(n)S 1878(c)S 1917(h)S 1958(e)S 1997(k)S 2040(s)S 2084(,)S 2149(my)S 2238(c)S 2277(h)S 2317(k)S 2357(n)S 2442(\))S 672 4542(C)U 672 4470(CA)U 753(L)S 793(L)S 875(P)S 911(UTQ)S 1122(\()S 1203(j)S 1237(o)S 1277(b)S 1323(t)S 1358(a)S 1397(g)S 1444(,)S 1520(s)S 1557(u)S 1597(b)S 1637(n)S 1678(a)S 1709(m)S 1758(e)S 1804(,)S 4 F 1875(<)S 1 F 1917(p)S 1958(a)S 2002(r)S 2029(m)S 2080(s)S 4 F 2115(>)S 1 F 2202(\))S 711 4542(AL)U 793(L)S 875(P)S 912(RT)S 995(S)S 1035(P)S 1071(N)S 1122(\()S 1189(my)S 1283(i)S 1317(d)S 1402(\))S 672 4614(C)U (A)R 753(L)S 793(L)S 875(S)S 915(P)S 951(A)S 984(W)S 1031(N)S 1122(\()S 1189(my)S 1283(i)S 1317(d)S 1364(,)S 1443(j)S 1477(d)S 1517(u)S 1549(m)S 1589(my)S 1684(,)S 1760(s)S 1797(u)S 1837(b)S 1877(n)S 1918(a)S 1949(m)S 1998(e)S 2044(,)S 4 F 2115(<)S 1 F 2157(p)S 2198(a)S 2242(r)S 2269(m)S 2320(s)S 4 F 2355(>)S 1 F 2442(\))S 672 4686(CA)U 753(L)S 793(L)S 864(W)S 911(A)S 962(I)S 993(T)S 1122(\()S 1189(my)S 1283(i)S 1317(d)S 1402(\))S EP %%Page: ? 14 BP 3 F 72 Z 432 54(7)U (.)R 534(Dynamic)S 834(Allocation)S 1174(of)S 1258(Processes)S 1 F 582 186(T)U (he)R 719(scheme)S 959(presented)S 1259(above)S 1455(might)S 1647(be)S 1739(considered)S 2075(static)S 2251(allocation)S 2559(of)S 2643(processes.)S 432 378(k)U 432 282(By)U 550(this)S 688(we)S 806(mean)S 996(that)S 1138(the)S 1260(number)S 1514(of)S 1608(processes)S 1918(and)S 2056(their)S 2222(data)S 2376(dependencies)S 2797(were)S 468 378(nown)U 665(in)S 758(advance.)S 1073(Therefore)S 1394(the)S 1519(entire)S 1720(data)S 1877(structure)S 2165(\(internal)S 2445(to)S 2537(SCHEDULE\))S 2913 474(-)U 432 570(t)U 432 474(representing)U 815(the)S 930(computational)S 1369(graph)S 1560(could)S 1747(be)S 1842(recorded)S 2121(in)S 2203(advance)S 2465(of)S 2551(the)S 2665(computa)S 452 570(ion)U 571(and)S 702(is)S 777(\256xed)S 947(throughout)S 1289(the)S 1403(computation.)S 1831(In)S 1917(many)S 2103(situations,)S 2423(however,)S 2715(we)S 2825(will)S 432 762(p)U 432 666(not)U 552(know)S 740(the)S 856(computational)S 1296(graph)S 1488(in)S 1571(advance,)S 1852(and)S 1983(we)S 2094(will)S 2233(need)S 2396(the)S 2511(ability)S 2722(for)S 2833(one)S 468 762(rocess)U 677(to)S 762(start)S 915(or)S 1004(spawn)S 1217(another)S 1462(depending)S 1791(on)S 1892(a)S 1953(computation)S 2341(that)S 2477(has)S 2601(taken)S 2785(place)S 2909 858(s)U 432 954(i)U 432 858(up)U 532(to)S 616(a)S 676(given)S 864(point)S 1040(in)S 1124(the)S 1240(spawning)S 1544(process.)S 1830(This)S 1986(dynamic)S 2262(allocation)S 2574(of)S 2661(processe)S 452 954(s)U 528(accomplished)S 972(through)S 1244(the)S 1380(use)S 1524(of)S 1631(the)S 1766(SCHEDULE)S 2189(subroutine)S 3 F 2540(spawn)S 1 F (.)R 2825(The)S 432 1050(method)U 672(of)S 756(specifying)S 1080(a)S 1136(process)S 1376(is)S 1448(similar)S 1672(to)S 1752(the)S 1864(use)S 1984(of)S 3 F 2068(putq)S 1 F 2236(described)S 2536(above.)S 582 1182(We)U 706(shall)S 866(use)S 986(the)S 1098(same)S 1270(example)S 1538(to)S 1618(illustrate)S 1894(this)S 2022(mechanism.)S 60 Z 3279 1686(-)U 16(--)S 3259(-)S 72 Z 1600 1998(-)U 1648(14)S 1744(-)S 432 2190(Processes:)U 600 2382(subroutine)U 928(inprod)S 1140(....)S 1236(same)S 1408(as)S 1492(above)S 54 Z 1917 2598(\))U 655(s)S 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(n)S 1307(,)S 1336(k)S 1379(,)S 1410(a)S 1451(,)S 1480(b)S 1523(,)S 1555(s)S 1594(i)S 1624(g)S 1653(m)S 1698(a)S 1739(,)S 1774(t)S 1806(e)S 1833(mp)S 658 2658(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 933(my)S 1018(i)S 1048(d)S 1091(,)S 1120(n)S 1163(,)S 1192(k)S 1629 2718(\))U 438 2838(c)U 438 2778(c)U 657 2718(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 1293(m)S 1338(a)S 1379(,)S 1414(t)S 1446(e)S 1473(mp)S 1557(\()S 1588(*)S 652 2838(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 2898(c)U 658 2958(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 946(j)S 983(,)S 1018(j)S 1048(d)S 1084(u)S 1113(m)S 1149(my)S 1235(,)S 1257(m1)S 1343(,)S 1365(m2)S 438 3018(c)U 649 3078(EXT)U 757(E)S 792(RN)S 863(AL)S 981(I)S 1007(NP)S 1080(RO)S 1151(D)S 438 3138(c)U 645 3198(m1)U 759(=)S 832(n)S 874(/)S 904(k)S 904 3258(1)U 438 3318(c)U 658 3258(i)U 688(n)S 724(d)S 760(x)S 831(=)S 648 3378(CA)U 721(L)S 757(L)S 831(P)S 864(RT)S 939(S)S 975(P)S 1007(N)S 1053(\()S 1077(my)S 1162(i)S 1192(d)S 1233(\))S 438 3558(c)U 438 3498(c)U 652 3438(d)U 688(o)S 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 765 3558(r)U 798(e)S 832(p)S 874(l)S 906(a)S 942(c)S 978(e)S 1054(t)S 1084(h)S 1122(e)S 1194(c)S 1230(a)S 1270(l)S 1306(l)S 1378(t)S 1408(o)S 1486(i)S 1516(n)S 1552(p)S 1593(r)S 1624(o)S 1660(d)S 1763(w)S 1810(i)S 1846(t)S 1876(h)S 1950(a)S 2022(c)S 2058(a)S 2098(l)S 2134(l)S 2206(t)S 2236(o)S 2311(s)S 2344(p)S 2382(a)S 2411(w)S 2452(n)S 438 3618(c)U 756 3678(CA)U 829(L)S 865(L)S 939(S)S 975(P)S 1007(A)S 1037(W)S 1079(N)S 1125(\()S 1149(my)S 1234(i)S 1264(d)S 1307(,)S 1342(j)S 1372(d)S 1408(u)S 1437(m)S 1473(my)S 1559(,)S 1593(I)S 1619(NP)S 1692(RO)S 1763(D)S 1811(,)S 1833(m1)S 1919(,)S 1950(a)S 1989(\()S 2026(i)S 2056(n)S 2092(d)S 2128(x)S 2169(\))S 2207(,)S 2236(b)S 2277(\()S 2314(i)S 2344(n)S 2380(d)S 2416(x)S 2457(\))S 2495(,)S 2530(t)S 2562(e)S 2589(mp)S 2673(\()S 2710(j)S 2745(\))S 2781(\))S 766 3738(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 906 3798(e)U 508(2)S 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 645 3858(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 3978(c)U 438 3918(c)U 654 3978(c)U 694(l)S 726(e)S 762(a)S 796(n)S 868(u)S 904(p)S 979(s)S 1018(t)S 1050(e)S 1084(p)S 438 4038(c)U 654 4098(c)U 690(a)S 730(l)S 766(l)S 838(i)S 868(n)S 904(p)S 945(r)S 976(o)S 1012(d)S 1053(\()S 1077(m2)S 1163(,)S 1194(a)S 1233(\()S 1270(i)S 1300(n)S 1336(d)S 1372(x)S 1413(\))S 1451(,)S 1480(b)S 1521(\()S 1558(i)S 1588(n)S 1624(d)S 1660(x)S 1701(\))S 1739(,)S 1774(t)S 1806(e)S 1833(mp)S 1917(\()S 1948(k)S 1989(\))S 2025(\))S 438 4218(c)U 438 4158(c)U 652 4218(k)U 690(e)S 726(e)S 760(p)S 832(o)S 868(n)S 906(e)S 976(o)S 1017(f)S 1090(t)S 1120(h)S 1158(e)S 1234(i)S 1264(n)S 1300(n)S 1338(e)S 1377(r)S 1444(p)S 1485(r)S 1516(o)S 1552(d)S 1588(u)S 1626(c)S 1666(t)S 1734(a)S 1771(s)S 1807(s)S 1846(i)S 1876(g)S 1912(n)S 1941(m)S 1986(e)S 2020(n)S 2062(t)S 2095(s)S 2166(a)S 2200(n)S 2236(d)S 2314(t)S 2344(h)S 2382(e)S 2416(n)S 2490(c)S 2526(a)S 2566(l)S 2602(l)S 2663(w)S 2706(a)S 2746(i)S 2782(t)S 438 4338(c)U 438 4278(c)U 658(t)S 688(o)S 760(b)S 798(e)S 871(s)S 904(u)S 945(r)S 978(e)S 1050(a)S 1090(l)S 1126(l)S 1192(o)S 1234(t)S 1264(h)S 1302(e)S 1341(r)S 1375(s)S 1444(h)S 1482(a)S 1516(v)S 1554(e)S 1626(c)S 1660(o)S 1689(mp)S 1774(l)S 1806(e)S 1846(t)S 1878(e)S 1912(d)S 1955(.)S 648 4398(CA)U 721(L)S 757(L)S 821(W)S 863(A)S 909(I)S 937(T)S 981(\()S 1005(my)S 1090(i)S 1120(d)S 1161(\))S 438 4578(c)U 438 4518(c)U 438 4458(c)U 647 4578(A)U 694(l)S 730(l)S 796(h)S 834(a)S 868(v)S 906(e)S 978(c)S 1012(h)S 1050(e)S 1086(c)S 1120(k)S 1158(e)S 1192(d)S 1270(i)S 1300(n)S 1343(,)S 1408(n)S 1444(o)S 1475(w)S 1554(a)S 1588(d)S 1624(d)S 1660(u)S 1696(p)S 1774(t)S 1804(h)S 1842(e)S 1917(r)S 1950(e)S 1987(s)S 2020(u)S 2062(l)S 2098(t)S 2131(s)S 2171(.)S 438 4638(c)U 655 4698(s)U 694(i)S 724(g)S 753(m)S 798(a)S 867(=)S 940(0)S 983(.)S 1012(0)S EP %%Page: ? 13 BP 1 F 48 Z 497 30(R)U 434 213(D)U 496 84(K)U 469 213('l0u)U 562(-439u')S 434 -228(D'l158u)U 610(0u')S 592(D'l0u)S 720(439u')S 213(')T 592(D'l-158u)S 784(0u)S 751 -78(W)U 756 -24(O)U 757 30(R)U 694 213(D)U 756 84(K)U 729 213('l0u)U 822(-439u')S 694 -228(D'l159u)U 870(0u')S 853(D'l0u)S 981(439u')S 213(')T 853(D'l-159u)S 1045(0u)S 1272 -78(W)U 1277 -24(O)U 1278 30(R)U 1215 213(D)U 1277 84(K)U 1250 213('l0u)U 1343(-439u')S 1215 -228(D'l158u)U 1391(0u')S 1373(D'l0u)S 1501(439u')S 213(')T 475 -909(Tail)U 1244(Head)S 1373 213(D'l-158u)U 1565(0u)S 803 -909(READYQ)U 639 -999(D)U 639 -837(D'l0u)U 767(-163u')S 674 -999('l529u)U 815(0u')S 1168(D'l0u)S 1296(163u')S -837(')T 534 -1479(D)U 534 -1137(D'l0u)U 662(-341u')S 817 -1299(PARMQ)U 1168 -837(D'l-529u)U 1360(0u)S 569 -1479('l739u)U 710(0u')S 1273(D'l0u)S 1401(341u')S -1137(')T 1273(D'l-739u)S 1465(0u)S 1555 -390(10)U 1619(myjob)S 1757(=)S 1800(getprb\(jobtag\))S 1577 -21(g)U 1647 -123(call)U 1731(checkin\(jobta)S 1990(g\))S 1601 -21(o)U 1641(to)S 1694(10)S 1610 -258(c)U (all)R 1694(subname\()S 4 F (<)R 1 F (parms)R 4 F (>)R 1 F (\))R 1030 -561(D')U 5 F (\304)R 1 F 1121(134u)S 1233(32u)S 1321(101u)S 1433(301u')S 1233 -276(D'l32u)U 1385(50u')S 1460 -285(')U 1260(D'l5u)S 1388(59u)S 1273 -531(')U 759 -285(D)U 806 -531(D')U 5 F (\304)R 1 F 897(-32u)S 1001(134u)S 1113(0u)S 1177(171u)S 794 -285('l14u)U 911(57u')S 1028(')S 765 -576(D)U 788 -285(D'l-15u)U 956(57u)S 800 -576(')U 5 F (\304)R 1 F 856(-251u)S 984(48u)S 1072(0u)S 1136(301u')S 499 -285(D'l14u)U 651(57u')S 528(D'l-15u)S 696(57u')S 651 -837(D)U (')R 5 F (\304)R 1 F 742(-137u)S 870(49u)S 958(240u)S 1070(81u')S 694 -711(D'l59u)U 846(5u')S 703 -738(D'l50u)U 855(32u')S 1350 -228(D'l7u)U 1478(-28u')S 1579 -282(')U 1363(D'l7u)S 1491(-28u)S 1377 -336(D'l7u)U 1505(-28u')S 1606 -390(')U 1390(D'l7u)S 1518(-28u)S 1403 -444(D'l7u)U 1531(-28u')S 1633 -501(')U 1417(D'l6u)S 1545(-28u)S 1423 -528(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 75(D'l21u)U 1523(20u')S 1402 102(D'l21u)U 1554(20u')S 1423 123(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 -690(D')U 5 F (\304)R 1 F 1149(362u)S 1261(-72u)S 1365(-251u)S 1493(-72u')S 1785 123(D'l29u)U 1937(0u)S 1227 -834(D'l-59u)U 1395(-2u')S -807(')T 1219(D'l-51u)S 1387(-30u)S 2 F 72 Z 1496 525(Figure)U 1716(5.2.)S 2060 621(m)U 1256(The)S 1388(SCHEDULE)S 1780(Mechanis)S 3 F 1350 981(n)U 432(6.)S 534(Low-Level)S 886(Synchronizatio)S 1 F 582 1113(Ideally,)U 854(the)S 972(mechanism)S 1330(we)S 1444(have)S 1610(just)S 1743(described)S 2048(will)S 2189(relieve)S 2414(the)S 2531(user)S 2680(of)S 2769(expli-)S 2913 1209(-)U 432 1305(l)U 432 1209(citly)U 588(invoking)S 872(any)S 1004(synchronization)S 1492(primitives.)S 1854(Unfortunately,)S 2303(some)S 2482(powerful)S 2769(paral)S 452 1305(el)U 530(constructs)S 848(are)S 962(not)S 1080(so)S 1170(easily)S 1363(described)S 1664(by)S 1761(this)S 1890(mechanism.)S 2285(It)S 2354(may)S 2503(be)S 2596(desirable)S 2881(to)S 2913 1401(f)U 432 1497(e)U 432 1401(have)U 597(two)S 734(processes)S 1039(executing)S 1348(simultaneously)S 1813(that)S 1949(are)S 2065(not)S 2185(truly)S 2349(data)S 2497(independent)S 2877(o)S 464 1497(ach)U 591(other.)S 808(A)S 887(typical)S 1110(example)S 1381(is)S 1456(in)S 1539(pipelining)S 1858(a)S 1917(computation,)S 2322(that)S 2457(is,)S 2550(when)S 2733(several)S 60 Z 3279 1902(-)U 16(--)S 3259(-)S 72 Z 1600 2214(-)U 1648(13)S 1744(-)S 2913 2406(-)U 432 2502(n)U 432 2406(parallel)U 674(processes)S 976(are)S 1090(writing)S 1324(on)S 1422(the)S 1536(same)S 1710(data)S 1856(in)S 1938(a)S 1996(speci\256ed)S 2278(order)S 2455(which)S 2656(is)S 2729(coordi)S 468 2502(ated)U 624(through)S 884(explicit)S 1136(synchronization.)S 1674(To)S 1790(provide)S 2046(this)S 2185(capability,)S 2522(two)S 2665(low-level)S 3 F 432 2694(l)U 1 F 432 2598(synchronization)U 918(primitives)S 1236(have)S 1397(been)S 1558(made)S 1739(available)S 2024(within)S 2233(SCHEDULE.)S 2676(They)S 2849(are)S 3 F 452 2694(ockon)U 1 F 660(and)S 3 F 788(unlock)S 1 F (.)R 1062(Each)S 1230(takes)S 1402(an)S 1494(integer)S 1718(argument.)S 2056(An)S 2168(example)S 2436(of)S 2520(usage)S 2708(is)S 54 Z 654 2946(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 838 3006(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 3066(5)U 654 3126(c)U 838 3066(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 3126(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 3378(I)U (n)R 522(this)S 656(example)S 929(a)S 990(critical)S 1219(section)S 1452(has)S 1577(been)S 1742(placed)S 1959(around)S 2188(the)S 2305(act)S 2418(of)S 2507(getting)S 2736(a)S 2797(local)S 432 3462(copy)U 607(of)S 702(the)S 825(shared)S 1048(variable)S 1463(and)S 1602(updating)S 1889(the)S 2012(value)S 2203(of)S 2411(.)S 2488(If)S 2571(several)S 2809(con-)S 2 F 66 Z 1315(indx)S 2298(indx)S 1 F 72 Z 2901 3546(o)U 432 3630(o)U 432 3546(current)U 671(processes)S 982(are)S 1105(executing)S 1420(this)S 1559(code,)S 1748(then)S 1907(only)S 2069(one)S 2207(of)S 2301(them)S 2479(will)S 2625(be)S 2727(able)S 2881(t)S 468 3630(ccupy)U 666(this)S 796(critical)S 1022(section)S 1252(at)S 1330(any)S 1460(given)S 1645(time.)S 1840(The)S 1977(variable)S 2386(must)S 2551(be)S 2644(a)S 2701(globally)S 2 F 66 Z 2234(ilock)S 1 F 72 Z 2901 3714(o)U 3 F 432 3798(l)U 1 F 432 3714(shared)U 662(variable)S 936(and)S 1082(it)S 1164(must)S 1345(be)S 1454(initialized)S 1783(before)S 2008(any)S 2153(usage)S 2358(as)S 2459(an)S 2568(argument)S 2881(t)S 3 F 452 3798(ockon)U 1 F 669(or)S 3 F 762(unlock)S 1 F 1003(by)S 1108(calling)S 1337(the)S 1458(routine)S 3 F 1695(lckasn)S 1 F (.)R 1966(In)S 2059(the)S 2180(above)S 2385(example)S 2661(the)S 2781(state-)S 432 3882(ment)U 54 Z 690 4026(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 432 4194(m)U (ust)R 603(execute)S 854(exactly)S 1093(once)S 1260(and)S 1395(before)S 1610(any)S 1745(of)S 1836(the)S 1955(calls)S 2118(to)S 3 F 2205(lockon)S 1 F 2439(are)S 2557(made.)S 2785(After)S 2913 4278(-)U 432(execution)S 740(of)S 828(this)S 960(statement)S 1264(the)S 1380(lock)S 1532(variable)S 1947(has)S 2070(been)S 2233(declared)S 2504(as)S 2591(a)S 2650(lock)S 2801(vari)S 2 F 66 Z 1792(ilock)S 1 F 72 Z 432 4362(a)U 2 F 66 Z 1423(off)S 1 F 72 Z 464(ble)S 577(and)S 706(has)S 827(been)S 988(initiated)S 1249(to)S 1330(be)S 1492(.)S 1535(If)S 1608(there)S 1777(are)S 1889(low-level)S 2185(data)S 2329(dependencies)S 2741(among)S 2905 4446(e)U 432 4530(t)U 432 4446(any)U 571(of)S 666(the)S 789(processes)S 1100(that)S 1243(will)S 1390(be)S 1493(scheduled,)S 1834(then)S 1993(it)S 2068(will)S 2215(be)S 2317(necessary)S 2631(to)S 2721(enforc)S 452 4530(hose)U 609(data)S 753(dependencies)S 1165(using)S 1345(locks.)S 1539(It)S 1607(is)S 1679(preferable)S 1995(to)S 2075(avoid)S 2259(using)S 2439(locks)S 2615(if)S 2683(possible.)S 432 4614(However,)U 738(in)S 818(certain)S 1038(cases)S 1214(such)S 1370(as)S 1454(pipelining,)S 1788(locks)S 1964(will)S 2100(be)S 2192(required.)S EP %%Page: ? 12 BP 1 F 72 Z 2913 15(-)U 582(The)S 722(initial)S 918(call)S 1049(to)S 1282(\(nprocs,subname,)S 4 F (<)R 1 F (parms)R 4 F (>)R 1 F (\))R 2097(results)S 2312(in)S 2602(virtual)S 2817(pro)S 2 F 66 Z 1132(sched)S 2395(nprocs)S 1834 111(nprocs)U 1 F 72 Z 2919(.)S 432 207(T)U 432 111(cessors)U 682(called)S 3 F 896(work)S 1 F 1098(to)S 1196(begin)S 1398(executing)S 1720(on)S 2056(separate)S 2334(physical)S 2615(processors)S 476 207(ypically)U 940(should)S 1158(be)S 1252(set)S 1358(to)S 1440(a)S 1498(value)S 1680(that)S 1814(is)S 1888(less)S 2022(than)S 2172(or)S 2257(equal)S 2438(to)S 2519(the)S 2632(number)S 2877(of)S 432 303(p)U 2 F 66 Z 734 207(nprocs)U 1 F 72 Z 468 303(hysical)U 705(processors)S 1042(available)S 1335(on)S 1440(the)S 1561(given)S 1754(system.)S 2029(These)S 3 F 2233(work)S 1 F 2425(routines)S 2689(access)S 2905(a)S 2909 399(s)U 432(ready)S 619(queue)S 818(of)S 1073(s)S 1128(for)S 1239(schedulable)S 1606(processes.)S 1951(Recall)S 2162(that)S 2297(a)S 2355(schedulable)S 2721(proces)S 2 F 66 Z 905(jobtag)S 1 F 72 Z 432 495(i)U (s)R 506(one)S 636(whose)S 846(data)S 992(dependencies)S 1406(have)S 1568(been)S 1729(satis\256ed.)S 2032(After)S 2209(a)S 3 F 2266(work)S 1 F 2451(routine)S 2680(has)S 2801(been)S 2905 591(e)U 432(successful)S 757(in)S 842(obtaining)S 1143(the)S 1457(of)S 1546(a)S 1607(schedulable)S 1975(process,)S 2237(it)S 2305(makes)S 2517(the)S 2633(subroutin)S 2 F 66 Z 1260(jobtag)S 1184 687(j)U (obtag)R 1 F 72 Z 432(c)S (all)R 565(associated)S 890(with)S 1047(that)S 1381(during)S 1598(the)S 1715(call)S 1848(to)S 3 F 1933(putq)S 1 F (.)R 2148(When)S 2349(this)S 2481(subroutine)S 2813(exe-)S 432 783(cutes)U 615(a)S 847(,)S 900(control)S 1139(is)S 1222(returned)S 1497(to)S 3 F 1587(work)S 1 F (,)R 1799(and)S 1937(a)S 2003(SCHEDULE)S 2413(routine)S 3 F 2651(chekin)S 1 F 2889(is)S 2 F 66 Z 682(return)S 1344 879(icango)U 2301(ncheks)S 1 F 72 Z 2917(t)S 432 975(d)U 432 879(called)U 641(which)S 854(decrements)S 1219(the)S 1560(counter)S 1813(of)S 1910(each)S 2079(of)S 2176(the)S 2517(processes)S 2829(tha)S 468 975(epend)U 673(on)S 778(process)S 1195(.)S 1270(If)S 1350(any)S 1486(of)S 1578(these)S 1969(values)S 2185(has)S 2313(been)S 2481(decremented)S 2881(to)S 432 1071(z)U 2 F 66 Z 1027 975(jobtag)U 1758(icango)S 1 F 72 Z 464 1071(ero,)U 598(the)S 710(identi\256er)S 994(of)S 1078(that)S 1210(process)S 1450(is)S 1522(placed)S 1734(on)S 1830(the)S 1942(ready)S 2126(queue)S 2322(immediately.)S 2905 1203(a)U 432 1299(p)U 582 1203(We)U 714(depict)S 922(this)S 1058(mechanism)S 1418(in)S 1505(Figure)S 1724(5.2)S 1845(.)S 1918(The)S 2061(array)S 2240(labeled)S 3 F 2479(parmq)S 1 F 2718(holds)S 468 1299(rocess)U 673(descriptor)S 986(for)S 1095(each)S 1419(.)S 1485(A)S 1561(process)S 1801(descriptor)S 2113(consists)S 2365(of)S 2449(data)S 2593(dependency)S 432 1395(i)U 2 F 66 Z 1251 1299(jobtag)U 1 F 72 Z 452 1395(nformation)U 798(and)S 927(a)S 984(subroutine)S 1313(name)S 1494(together)S 1755(with)S 1908(a)S 1965(calling)S 2186(sequence)S 2475(for)S 2584(that)S 2717(subrou-)S 432 1491(tine.)U 606(This)S 758(information)S 1122(is)S 1194(placed)S 1406(on)S 3 F 1502(parmq)S 1 F 1734(through)S 1982(the)S 2094(two)S 2226(calls)S 54 Z 648 1647(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 1953(\))S 60 Z 26 2118(-)U 54 Z 648 1707(CA)U 721(L)S 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 60 Z 66 2118(-)U 3229(-)S 3269(-)S 72 Z 432 2610(W)U 1552 2394(-)U 1642(1)S 1690(2)S 1792(-)S 500 2610(hen)U 635(making)S 882(these)S 1061(two)S 1200(calls)S 1363(the)S 1482(user)S 1633(has)S 1760(assured)S 2006(that)S 2144(a)S 2206(call)S 2340(to)S 2691(with)S 2849(the)S 432 2694(a)U 4 F 66 Z 859(<)S 2 F (parms)R 4 F (>)R 2 F 2426 2610(subname)U 1 F 72 Z 464 2694(rgument)U 738(list)S 1156(is)S 1237(valid)S 1414(in)S 1503(a)S 1568(data)S 1721(dependency)S 2098(sense)S 2287(whenever)S 2600(the)S 2721(counter)S 2 F 66 Z 432 2778(i)U 1 F 72 Z 635(has)S 755(been)S 915(decremented)S 1307(to)S 1387(the)S 1499(value)S 1679(zero.)S 1869(When)S 2065(a)S 3 F 2121(work)S 1 F 2305(routine)S 2533(has)S 2653(\256nished)S 2905(a)S 2 F 66 Z 450(cango)S 1269 2862(jobtag)U 1 F 72 Z 432(c)S (all)R 567(to)S 3 F 653(chekin)S 1 F 887(,)S 935(it)S 1005(gets)S 1151(the)S 1467(of)S 1557(the)S 1675(next)S 1829(available)S 2119(schedulable)S 2489(process)S 2735(off)S 2849(the)S 2917 2946(l)U 2 F 66 Z 432(r)S 1 F 72 Z 664(and)S 793(then)S 942(assumes)S 1207(the)S 1320(identity)S 1565(of)S 1649(the)S 1761(appropriate)S 2113(subroutine)S 2441(by)S 2537(making)S 2777(a)S 2833(cal)S 2 F 66 Z 458(eadyq)S 512 3030(s)U (ubname)R 4 F 1443(<)S 2 F (parms)R 4 F (>)R 1 F 72 Z 1683(.)S 432(to)S 771(with)S 923(the)S 1035(argument)S 1331(list)S 48 Z 778 4104(SCHEDULE)U 491 4674(W)U 741 4095(D'c325u')U 496 4728(O)U EP %%Page: ? 11 BP 1 F 72 Z 582 126(T)U (he)R 726(call)S 862(to)S 949(the)S 1068(SCHEDULE)S 1475(routines)S 3 F 1738(dep)S 1 F 1881(and)S 3 F 2016(putq)S 1 F (,)R 2209(respectively,)S 2606(places)S 2817(pro-)S 432 318(i)U 432 222(cess)U 592(dependencies)S 1020(and)S 1163(process)S 1418(descriptors)S 1773(on)S 1884(a)S 1955(queue.)S 2208(A)S 2299(unique)S 2534(user)S 2693(supplied)S 452 318(denti\256er)U 953(is)S 1047(associated)S 1389(with)S 1563(each)S 1741(node)S 1927(of)S 2033(the)S 2167(dependency)S 2557(graph.)S 2809(This)S 432 414(i)U 2 F 66 Z 739 318(jobtag)U 1 F 72 Z 452 414(denti\256er)U 722(is)S 800(a)S 862(positive)S 1120(integer.)S 1392(Internally)S 1702(it)S 1772(represents)S 2094(a)S 2156(pointer)S 2390(to)S 2476(a)S 2538(process.)S 2825(The)S 432 510(items)U 626(needed)S 868(to)S 962(specify)S 1207(a)S 1276(data)S 1433(dependency)S 1814(are)S 1939(non-negative)S 2352(integers)S 2833(and)S 2 F 66 Z 2617(icango)S 432 606(ncheks)U 1291(mychkn)S 1710(icango)S 1 F 72 Z 643(and)S 779(an)S 879(integer)S 1111(array)S 1492(.)S 1566(The)S 1921(speci\256es)S 2200(the)S 2319(number)S 2570(of)S 2661(processes)S 2917 702(t)U 432(that)S 571(process)S 1017(depends)S 1284(on.)S 1429(The)S 1782(speci\256es)S 2061(the)S 2180(number)S 2431(of)S 2522(processes)S 2829(tha)S 2 F 66 Z 818(jobtag)S 1572(ncheks)S 2692 798(s)U 1 F 72 Z 432(d)S 2 F 66 Z 1012(jobtag)S 1389(mychkn)S 2539(nchek)S 1 F 72 Z 468(epend)S 668(on)S 768(process)S 1180(.)S 1250(The)S 1617(is)S 1692(an)S 1787(integer)S 2014(array)S 2189(whose)S 2400(\256rst)S 2745(entries)S 432 894(contain)U 668(the)S 780(identi\256ers)S 1092(\(i.e.,)S 1414(s\))S 1490(of)S 1574(the)S 1686(processes)S 1986(that)S 2118(depend)S 2350(on)S 2446(process)S 2854(.)S 2 F 66 Z 1246(jobtag)S 2686(jobtag)S 1 F 60 Z 3279 2334(-)U 16(--)S 3259(-)S 72 Z 1600 2646(-)U 1648(11)S 1744(-)S 48 Z 1807 3006(')U 1639 3267(D)U 1639 3006(D'c195u)U 1674 3267('c195u')U 1807 3528(')U 588 3015(n)U 591 2886(icango)U 734(=)S 777(2)S 1054 3267(D'c325u')U 1639 3528(D'c195u)U 612 3015(cheks)U 737(=)S 780(3)S 1286 3126(D')U 5 F (\304)R 1 F 1377(60u)S 1465(-116u)S 1593(297u)S 1705(0u')S 1826 3021(')U 1586 2994(D)U 1586 3021(D'l57u)U 1738(-15u)S 1621 2994('l57u)U 1738(14u')S 1850 3267(')U 1375(D')S 5 F (\304)R 1 F 1466(101u)S 1578(0u)S 1642(195u)S 1754(191u)S 1620 3429(D'l52u)U 1772(30u')S 1865 3408(')U 1641(D'l31u)S 1793(50u)S 1850 3198(')U 1359(D')S 5 F (\304)R 1 F 1450(117u)S 1562(-60u)S 1666(175u)S 1778(90u)S 1594 3213(D'l57u)U 1746(14u')S 1831 3189(')U 1108 3456(D)U 1116 3417(D'l11u)U 1268(-17u')S 1607 3189(D'l44u)U 1759(39u)S 1143 3456('l19u)U 1260(-56u')S 957 3657(D)U 1084 3441(D'l43u)U 1236(-41u')S 992 3657('l159u)U 1133(-239u')S 1271 3438(D'l-6u)U 1415(-19u')S 1553 3468(')U 1270 3477(D)U 1297 3468(D'l-32u)U 1465(-50u)S 1305 3477('l-5u)U 1414(-59u')S 1626 3657(')U 1346(D'l-75u)S 1514(-220u)S 2 F 72 Z 1496 4059(Figure)U 1716(5.1.)S 2124 4155(h)U 1 F 432 4347(I)U 2 F 1208 4155(A)U 1276(Node)S 1452(in)S 1532(a)S 1592(Dependency)S 1972(Grap)S 1 F 456 4347(n)U 522(Figure)S 740(5.1)S 859(a)S 920(typical)S 1145(node)S 1314(of)S 1403(a)S 1464(data)S 1613(dependency)S 1986(graph)S 2179(is)S 2256(shown.)S 2515(This)S 2672(node)S 2841(has)S 432 4539(w)U 432 4443(two)U 570(incoming)S 872(arcs)S 1018(and)S 1152(three)S 1326(outgoing)S 1612(arcs.)S 1800(As)S 1910(shown)S 2128(to)S 2214(the)S 2332(left)S 2458(of)S 2547(the)S 2664(node)S 2833(one)S 484 4539(ould)U 661(set)S 1083(,)S 1442(,)S 1508(and)S 1660(the)S 1796(\256rst)S 1956(three)S 2148(entries)S 2388(of)S 2745(to)S 2849(the)S 432 4635(i)U 2 F 66 Z 790 4539(icango)U 4 F 991(=)S 1 F 1050(2)S 2 F 1149(ncheks)S 4 F 1350(=)S 1 F 1409(3)S 2 F 2496(mychkn)S 1 F 72 Z 452 4635(denti\256ers)U 744(of)S 828(the)S 940(processes)S 1240(pointed)S 1480(to)S 1560(by)S 1656(the)S 1768(outgoing)S 2048(arcs.)S EP %%Page: ? 10 BP 1 F 54 Z 766 42(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 102(c)U 763 162(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 282(N)U 765 222(I)U 792(CA)S 863(N)S 899(G)S 935(O)S 1011(=)S 1084(k)S 792 282(CH)U 865(EK)S 939(S)S 1011(=)S 1084(0)S 438 342(c)U 648 402(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 522(c)U 648 462(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 582(r)U 690(e)S 730(t)S 760(u)S 801(r)S 832(n)S 72 Z 582 858(T)U 54 Z 654 642(e)U 688(n)S 724(d)S 72 Z 626 858(he)U 720(code)S 882(that)S 1016(will)S 1154(execute)S 1400(in)S 1481(parallel)S 1722(has)S 1843(been)S 2004(derived)S 2245(from)S 2410(the)S 2523(serial)S 2704(code)S 2865(by)S 2917 954(t)U 432 1050(i)U 432 954(replacing)U 736(calls)S 904(to)S 3 F 996(parprd)S 1 F (,)R 3 F 1270(inprd)S 1 F (,)R 3 F 1496(addup)S 1 F 1728(with)S 1892(calls)S 2060(to)S 2151(SCHEDULE)S 2562(routines)S 2829(tha)S 452 1050(nvoke)U 687(these)S 894(routines.)S 1227(The)S 1397(modi\256cations)S 1847(are)S 1993(signi\256ed)S 2299(by)S 2429(putting)S 2691(calls)S 2881(to)S 2913 1146(f)U 432 1242(t)U 432 1146(SCHEDULE)U 835(routines)S 1093(in)S 1175(capital)S 1393(letters.)S 1637(Let)S 1759(us)S 1849(now)S 1999(describe)S 2265(the)S 2379(purpose)S 2633(of)S 2719(each)S 2877(o)S 452 1242(hese)U 604(calls.)S 54 Z 648 1362(C)U (A)R 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 2911 1530(s)U 1 F 72 Z 432 1614(v)U 432 1530(This)U 590(replaces)S 856(the)S 974(call)S 1108(to)S 3 F 1194(parprd)S 1 F 1444(in)S 1530(the)S 1648(serial)S 1833(code.)S 2040(The)S 2181(effect)S 2374(is)S 2451(to)S 2536(devote)S 2 F 66 Z 2757(nproc)S 1 F 72 Z 468 1614(irtual)U 652(processors)S 988(to)S 1076(the)S 1196(parallel)S 1444(subroutine)S 3 F 1780(parprd)S 1 F (.)R 2074(The)S 2218(parameter)S 2538(list)S 2657(following)S 2913 1698(-)U 432 1782(m)U 432 1698(the)U 549(subroutine)S 882(name)S 1067(consist)S 1296(of)S 1385(the)S 1502(calling)S 1727(sequence)S 2020(one)S 2153(would)S 2362(use)S 2487(to)S 2572(make)S 2757(a)S 2817(nor)S 488 1782(al)U 568(call)S 700(to)S 3 F 784(parprd)S 1 F (.)R 1074(Each)S 1246(of)S 1334(these)S 1510(parameters)S 1854(must)S 2022(be)S 2118(called)S 2318(by)S 2418(reference)S 2714(and)S 2845(not)S 432 1950(t)U 432 1866(by)U 537(value.)S 768(No)S 889(constants)S 1190(or)S 1283(arithmetic)S 1608(expressions)S 1977(should)S 2202(be)S 2303(passed)S 2528(as)S 2621(parameters)S 452 1950(hrough)U 685(a)S 746(call)S 879(to)S 3 F 964(sched)S 1 F (.)R 1207(This)S 1364(call)S 1497(to)S 3 F 1582(sched)S 1 F 1783(will)S 1924(activate)S 2386(copies)S 2599(of)S 2688(a)S 2749(virtual)S 2 F 66 Z 2177(nprocs)S 1 F 72 Z 2913 2034(\))U 432 2118(t)U 432 2034(processor)U 3 F 739(work)S 1 F (.)R 972(This)S 1131(virtual)S 1350(processor)S 1657(is)S 1735(a)S 1797(SCHEDULE)S 2203(procedure)S 2521(\(written)S 2779(in)S 2865(C)S 452 2118(hat)U 564(is)S 636(internal)S 880(to)S 960(the)S 1072(package)S 1332(and)S 1460(not)S 1576(explicitly)S 1872(available)S 2156(to)S 2236(the)S 2348(user.)S 60 Z 3279 2550(-)U 16(--)S 3259(-)S 72 Z 1600 2850(-)U 1648(10)S 1744(-)S 54 Z 763 3018(J)U 791(O)S 828(BT)S 899(A)S 935(G)S 1011(=)S 1090(j)S 765 3078(I)U 792(CA)S 863(N)S 899(G)S 935(O)S 1011(=)S 1084(0)S 1084 3138(1)U 750 3198(M)U 755 3138(N)U 792(CH)S 865(EK)S 939(S)S 1011(=)S 791 3198(Y)U 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 438 3258(c)U 756 3318(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 3378(\))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 1349 3522(j)U 4 F (-)R 2 F (th)R 1 F 72 Z 432(T)S (his)R 585(code)S 746(fragment)S 1031(shows)S 1236(the)S 1480(instance)S 1741(of)S 1826(the)S 1939(process)S 3 F 2180(inprod)S 1 F 2413(being)S 2597(placed)S 2809(on)S 2905(a)S 2905 3606(a)U 432 3690(d)U 432 3606(queue.)U 681(The)S 828(information)S 1203(needed)S 1442(to)S 1533(schedule)S 1820(this)S 1959(process)S 2209(is)S 2291(contained)S 2605(in)S 2695(the)S 2817(dat)S 468 3690(ependency)U 801(graph.)S 1032(In)S 1117(this)S 1245(case,)S 1411(the)S 1653(instance)S 1913(of)S 1997(a)S 2053(call)S 2181(to)S 3 F 2261(inprod)S 1 F 2493(is)S 2565(being)S 2749(placed)S 2 F 66 Z 974 3774(j)U 1523 3690(j)U 4 F (-)R 2 F (th)R 992 3774(obtag)U 1454(j)S 2421(icango)S 1 F 72 Z 2901(g)S 432 3858(t)U 432 3774(on)U 536(the)S 656(queue,)S 878(so)S 1174(is)S 1254(set)S 1366(to)S 1472(.)S 1546(The)S 1690(value)S 1878(zero)S 2034(is)S 2114(placed)S 2334(in)S 2600(,)S 2649(indicatin)S 452 3858(hat)U 567(this)S 698(process)S 941(does)S 1100(not)S 1219(depend)S 1454(on)S 1553(any)S 1684(others.)S 1929(If)S 2004(this)S 2135(process)S 2377(were)S 2543(dependent)S 2865(on)S 2 F 66 Z 432 3942(p)U 1 F 72 Z (,)R 507(other)S 679(processes)S 979(then)S 1330(would)S 1534(be)S 1626(set)S 1730(to)S 1843(.)S 2 F 66 Z 1127(icango)S 1810(p)S 1 F 72 Z 2919 4074(.)U 432 4170(I)U 582 4074(The)U 729(mechanism)S 1092(just)S 1231(described)S 1542(allows)S 1765(static)S 1952(scheduling)S 2299(of)S 2393(parallel)S 2643(processes)S 456 4170(n)U 522(this)S 655(program)S 928(the)S 1045(partitioning)S 1410(and)S 1543(data)S 1692(dependencies)S 2109(are)S 2226(known)S 2451(in)S 2536(advance)S 2801(even)S 2909 4266(s)U 432 4362(c)U 432 4266(though)U 658(they)S 808(are)S 922(parameterized.)S 1398(It)S 1467(is)S 1540(possible)S 1801(to)S 1882(dynamically)S 2263(allocate)S 2512(processes;)S 2833(thi)S 464 4362(apability)U 748(will)S 892(be)S 992(explained)S 1304(later.)S 1506(It)S 1582(might)S 1782(be)S 1882(worthwhile)S 2242(at)S 2326(this)S 2462(point)S 2642(to)S 2729(discuss)S 3 F 432 4650(5)U 1 F 432 4458(the)U 544(mechanism)S 896(that)S 1028(this)S 1156(package)S 1416(relies)S 1596(on.)S 3 F 468 4650(.)U 534(The)S 678(SCHEDULE)S 1098(Mechanism)S EP %%Page: ? 9 BP 1 F 72 Z 432 114(P)U (arallel)R 676(Main:)S 54 Z 652 270(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 390(c)U 658 330(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 450(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 510(c)U 657 570(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 690(d)U 657 630(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 690(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 810(b)U 762 750(a)U 801(\()S 838(j)S 873(\))S 939(=)S 1018(j)S 801 810(\()U 838(j)S 873(\))S 939(=)S 1012(1)S 438 930(c)U 508 870(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 990(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 1050(c)U 647 1110(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 1230(e)U 655 1170(s)U 694(t)S 724(o)S 760(p)S 688 1230(n)U 724(d)S 655 1410(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 1530(c)U 438 1470(c)U 652 1530(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 1590(c)U 658 1650(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 1710(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 1830(c)U 438 1770(c)U 652 1830(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 1890(c)U 658 1950(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 2010(c)U 649 2070(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 2190(c)U 655 2130(s)U 690(a)S 724(v)S 762(e)S 825(m1)S 911(,)S 933(m2)S 645 2250(m1)U 831(=)S 904(n)S 946(/)S 976(k)S 60 Z 26 2766(-)U 54 Z 658 2310(i)U 688(n)S 724(d)S 760(x)S 831(=)S 904(1)S 60 Z 66 2766(-)U 3229(-)S 3269(-)S 54 Z 438 3354(c)U 438 3294(c)U 652 3234(d)U 688(o)S 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 72 Z 1576 3042(-)U 1666(9)S 1768(-)S 54 Z 762 3354(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 3414(c)U 763 3474(J)U 791(O)S 828(BT)S 899(A)S 935(G)S 1011(=)S 1090(j)S 755 3594(N)U 765 3534(I)U 792(CA)S 863(N)S 899(G)S 935(O)S 1011(=)S 1084(0)S 792 3594(CH)U 865(EK)S 939(S)S 1011(=)S 1084(1)S 1264 3654(1)U 438 3714(c)U 750 3654(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 3774(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 3834(\))U 438 3894(c)U 756 3834(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 3954(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 4014(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 4074(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 4194(c)U 438 4134(c)U 654 4194(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 4254(c)U 763 4314(J)U 791(O)S 828(BT)S 899(A)S 935(G)S 1011(=)S 1084(k)S 1084 4374(0)U 755 4434(N)U 765 4374(I)U 792(CA)S 863(N)S 899(G)S 935(O)S 1011(=)S 792 4434(CH)U 865(EK)S 939(S)S 1011(=)S 1084(1)S 1264 4494(1)U 438 4554(c)U 750 4494(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 4614(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 4674(\))U 438 4734(c)U 756 4674(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 EP %%Page: ? 8 BP 1 F 54 Z 438 54(c)U 658 114(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 174(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 294(c)U 438 234(c)U 652 294(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 354(c)U 658 414(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 474(c)U 645 534(m)U 723(=)S 796(n)S 838(/)S 868(k)S 904 594(1)U 652 654(d)U 658 594(i)U 688(n)S 724(d)S 760(x)S 831(=)S 688 654(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 714(c)U 762 774(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 834(c)U 766 894(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 954(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 1074(c)U 508 1014(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 1134(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 1194(c)U 657 1254(r)U 690(e)S 730(t)S 760(u)S 801(r)S 832(n)S 654 1314(e)U 688(n)S 724(d)S 48 Z 1135 1479(k+1)U 1238 1470(')U 432 1860(D)U 509 1869(1)U 1070 1470(D'c203u)U 467 1860('c178u')U 769 1869(2)U 692 1860(D)U ('c178u')R 1030 1869(3)U 952 1860(D)U ('c178u')R 1530 1869(k-1)U 1640 1860(')U 1472(D'c178u)S 1810 1869(k)U 1733 1860(D)U ('c178u')R 1045 1566(D)U 1069 1533(D'l17u)U 1221(-11u')S 1080 1566('l41u)U 1197(-43u')S 594 1815(D'l475u)U 770(-282u')S 1030 1539(D'l56u)U 1182(-18u')S 1088 1557(D'l15u)U 1240(-15u')S 1052 1572(D)U 1072 1593(D'l31u)U 1224(-51u')S 1087 1572('l51u)U 1204(-31u')S 842 1797(D'l246u)U 1018(-241u')S 1137 1581(D'l6u)U 1265(-19u')S 1354 1623(')U 1111 1614(D)U 1138 1623(D'l5u)U 1266(-59u)S 1146 1614('l32u)U 1263(-50u')S 1066 1779(D'l71u)U 1218(-196u')S 1255 1557(D'l-14u)U 1423(-15u')S 1548 1572(')U 1271 1593(D)U 1292 1572(D'l-51u)U 1460(-31u)S 1306 1593('l-30u)U 1439(-51u')S 1501 1797(D)U ('l-246u)R 1693(-241u')S 1274 1533(D'l-17u)U 1442(-11u')S 1313 1539(D'l-56u)U 1481(-18u')S 1298 1566(D'l-41u)U 1466(-43u')S 1749 1815(D'l-475u)U 1941(-282u')S 2 F 72 Z 1016 2145(D)U 1496 2061(Figure)U 1716(4.2.)S 1068 2145(epedency)U 1360(Graph)S 1572(for)S 1680(Parallel)S 1940(Inner)S 2120(Product)S 1 F 432 2229(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 2682 2349(m)U 1 F 72 Z 432 2469(w)U 2 F 66 Z 638 2349(inprod)U 1 F (\()R 2 F 858(m)S 1 F (,)R 2 F 945(a)S 1 F (\()R 2 F (indx)R 1 F (\),)R 2 F 1174(b)S 1 F (\()R 2 F (indx)R 1 F (\),)R 2 F 1403(temp)S 1 F (\()R 2 F (j)R 1 F (\))R 1615(\))S 1659(,)S 2 F 1742(j)S 4 F 1782(=)S 1 F 1841(1,)S 1913(2,...)S 2014(,)S 2 F 2053(k)S 1 F 2148(,)S 2 F 2209(indx)S 4 F 2344(=)S 1 F 2403(1)S 4 F 2458(+)S 1 F 2517(\()S 2 F (j)R 4 F (-)R 1 F (1\))R 2 F (*)R 1 F 72 Z 484 2469(hich)U 642(are)S 763(not)S 888(data)S 1041(dependent.)S 1412(Each)S 1589(of)S 1682(them)S 1859(reads)S 2044(a)S 2109(segment)S 2382(of)S 2475(the)S 2596(shared)S 2817(data)S 2 F 66 Z 432 2553(a)U 1 F 72 Z 587(and)S 719(writes)S 923(on)S 1023(its)S 1119(own)S 1270(entry)S 1445(of)S 1532(the)S 1647(array)S 1950(,)S 1995(but)S 2114(none)S 2281(of)S 2368(them)S 2539(needs)S 2730(to)S 2813(read)S 66 Z 487(,)S 2 F 526(b)S 1822(temp)S 1 F 60 Z 3279 2982(-)U 16(--)S 3259(-)S 72 Z 1618 3282(-)U 1666(8)S 1726(-)S 2917 3474(l)U 432 3558(r)U 432 3474(data)U 595(that)S 746(some)S 941(other)S 1132(process)S 1391(will)S 1545(write.)S 1777(This)S 1947(fact)S 2097(is)S 2187(evident)S 2441(in)S 2539(the)S 2669(graphica)S 456 3558(epresentation)U 864(shown)S 1076(in)S 1156(Figure)S 1368(4.2)S 1506(where)S 1706(they)S 1854(are)S 2130(.)S 2196(One)S 2340(process,)S 2 F 66 Z 676 3798(k)U 1397 3678(addup)U 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 1966 3558(leaves)U 4 F 705 3798(+)U 1 F (1)R 2189(1,2,..)S 2323(.,)S 2 F (k)R 1 F 72 Z 2905(e)S 3 F 432 3882(a)U 1 F 432 3798(labeled)U 811(is)S 895(data)S 1051(dependent)S 1383(on)S 1491(each)S 1659(of)S 1755(the)S 1878(processes)S 2386(.)S 2463(This)S 2626(is)S 2709(becaus)S 3 F 468 3882(ddup)U 1 F 656(needs)S 848(to)S 932(read)S 1084(each)S 1244(entry)S 1419(of)S 1506(the)S 1621(array)S 1951(in)S 2034(order)S 2213(to)S 2296(compute)S 2571(the)S 2686(sum)S 2833(and)S 4 F 66 Z 808 3966(s)U 2 F 1796 3882(temp)U 1 F 72 Z 848 3966(.)U 432(place)S 608(it)S 672(into)S 582 4098(From)U 772(this)S 910(data)S 1064(dependency)S 1442(graph)S 1640(we)S 1758(may)S 1916(proceed)S 2177(to)S 2266(write)S 2447(the)S 2568(parallel)S 2817(pro-)S 2917 4194(t)U 432 4290(t)U 432 4194(gram.)U 674(Once)S 854(we)S 966(have)S 1130(understood)S 1478(the)S 1594(computation)S 1982(well)S 2133(enough)S 2372(to)S 2455(have)S 2618(carried)S 2845(ou)S 452 4290(hese)U 607(two)S 742(steps,)S 931(the)S 1045(invocation)S 1375(of)S 1461(SCHEDULE)S 1863(to)S 1945(provide)S 2191(for)S 2301(the)S 2415(parallel)S 2657(execution)S 432 4482(a)U 432 4386(of)U 525(schedulable)S 898(processes)S 1207(is)S 1288(straightforward.)S 1807(Calls)S 1988(to)S 3 F 2077(parprd)S 1 F (,)R 3 F 2347(inprod)S 1 F (,)R 2605(and)S 3 F 2741(addup)S 1 F 464 4482(re)U 547(replaced)S 818(by)S 917(calls)S 1076(to)S 1159(SCHEDULE)S 1562(to)S 1645(identify)S 1896(the)S 2011(routines)S 2269(to)S 2351(be)S 2445(executed)S 2727(as)S 2813(well)S 432 4578(as)U 516(the)S 628(information)S 992(relating)S 1236(to)S 1316(the)S 1428(dependency)S 1796(graph.)S 2002(The)S 2138(modi\256ed)S 2418(code)S 2578(follows.)S EP %%Page: ? 7 BP 1 F 72 Z 936 135(When)U 1132(all)S 1228(done)S 1724 327(.)U 4 F 66 Z 1032(s)S 1 F 48 Z 1193 342(1)U 1338(2)S 2 F 1703(k)S 4 F 66 Z 1094 327(=)U 1153(s)S 1239(+)S 1298(s)S 1384(+)S 2 F 1465 309(.)U 1504(.)S 1543(.)S 4 F 1604 327(+)U 1663(s)S 1 F 72 Z 2516 522(:)U 432(Each)S 600(of)S 684(the)S 796(parallel)S 1036(processes)S 1336(will)S 1472(execute)S 1716(code)S 1876(of)S 1960(the)S 2072(following)S 2376(form)S 54 Z 655 738(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 657 858(r)U 658 798(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 933(m)S 690 858(e)U 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 978(d)U 655 918(s)U 694(i)S 724(g)S 795(=)S 868(0)S 911(.)S 940(0)S 688 978(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 1038(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 1098(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 1158(r)U 690(e)S 730(t)S 760(u)S 801(r)S 832(n)S 72 Z 432 1362(T)U 54 Z 654 1218(e)U 688(n)S 724(d)S 72 Z 476 1362(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 1482(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 1542(i)U 688(n)S 730(t)S 762(e)S 796(g)S 834(e)S 873(r)S 940(k)S 657 1602(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 1722(d)U 655 1662(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 1722(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 1782(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 1842(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 1902(r)U 690(e)S 730(t)S 760(u)S 801(r)S 832(n)S 72 Z 582 2154(T)U 54 Z 654 1962(e)U 688(n)S 724(d)S 72 Z 626 2154(he)U 723(\256rst)S 864(step)S 1009(in)S 1094(constructing)S 1479(a)S 1540(code)S 1705(is)S 1782(to)S 1867(understand)S 2212(the)S 2329(parallel)S 2573(algorithm)S 2881(in)S 2909 2250(s)U 432 2346(e)U 432 2250(terms)U 617(of)S 702(schedulable)S 1067(processes)S 1368(and)S 1497(a)S 1554(data)S 1699(dependency)S 2068(graph.)S 2299(Then)S 2472(the)S 2585(algorithm)S 2889(i)S 464 2346(xpressed)U 741(in)S 822(a)S 879(standard)S 1148(\(serial\))S 1377(Fortran)S 1614(code.)S 1817(This)S 1970(code)S 2131(consists)S 2384(of)S 2469(a)S 2525(main)S 2693(program)S 2905 2442(e)U 432 2538(i)U 432 2442(which)U 636(initializes)S 943(the)S 1058(shared)S 1273(data)S 1420(and)S 1551(a)S 5 F 1610(")S 1 F (parallel)R 5 F (")R 1 F 1913(subroutine)S 3 F 2244(parprd)S 1 F 2491(to)S 2574(compute)S 2849(th)S 452 2538(nner)U 613(product)S 866(by)S 971(invoking)S 1260(the)S 1381(parallel)S 1630(processes)S 3 F 1939(inprd)S 1 F 2143(and)S 3 F 2279(addup)S 1 F (.)R 2549(The)S 2693(program)S 432 2826(S)U 432 2634(and)U 560(associated)S 880(data)S 1024(dependency)S 1392(graph)S 1580(are)S 1692(shown)S 1904(below.)S 472 2826(erial)U 624(Code:)S 60 Z 16 3198(-)U (-)R 3259(--)S 54 Z 652 3666(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 72 Z 1618 3510(-)U 1666(7)S 1726(-)S 54 Z 658 3726(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 3786(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 3906(d)U 657 3846(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 3906(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 4026(b)U 762 3966(a)U 801(\()S 838(j)S 873(\))S 939(=)S 1018(j)S 801 4026(\()U 838(j)S 873(\))S 939(=)S 1012(1)S 438 4146(c)U 508 4086(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 4206(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 4266(c)U 647 4326(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 4446(e)U 655 4386(s)U 694(t)S 724(o)S 760(p)S 688 4446(n)U 724(d)S 655 4626(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 4746(c)U 438 4686(c)U 652 4746(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 EP %%Page: ? 6 BP 1 F 48 Z 822 81(D)U 904 90(B)U 857 81('c195u')U 1424 90(C)U 1342 81(D)U ('c195u')R 822 471(D)U 903 480(D)U 857 471('c195u')U 432(D)S 512 480(D)U 467 471('c195u')U 1296 480(E)U 1213 471(D)U ('c195u')R 1259 -96(D)U ('l-14u)R 1427(-15u')S 1552 -78(')U 1276 -60(D)U 1296 -78(D'l-51u)U 1464(-31u)S 1311 -60('l-31u)U 1444(-51u')S 1375 12(D)U ('l-116u)R 1567(-107u')S 1084 -60(D)U 1101 -96(D'l14u)U 1253(-15u')S 1119 -60('l31u)U 1236(-51u')S 985 12(D)U 1064 -78(D'l51u)U 1216(-31u')S 1020 12('l116u)U 1161(-107u')S 824 201(D)U 840 165(D'l15u)U 992(-15u')S 859 201('l31u)U 976(-51u')S 804 180(D'l51u)U 956(-31u')S 882 402(')U 594(D'l246u)S 770(-237u)S 920 195(D'l0u)U 1048(-20u')S 1190 231(')U 905(D)S 934(D'l-14u)S 1102(-57u)S 940('l15u)S 1057(-57u')S 1160 378(')U 920(D'l0u)S 1048(-183u)S 999 165(D'l-14u)U 1167(-15u')S 1292 180(')U 1015 201(D)U 1036 180(D'l-51u)U 1204(-31u)S 1050 201('l-30u)U 1183(-51u')S 1245 402(D)U ('l-246u)R 1437(-237u')S 2 F 72 Z 1496 804(F)U (igure)R 1716(4.1.)S 2016 900(h)U 1 F 432 1092(d)U 2 F 1316 900(Data)U 1484(Dependency)S 1864(Grap)S 1 F 468 1092(enotes)U 682(\256ve)S 820(subroutines)S 1182(A,)S 1281(B,)S 1376(C,)S 1471(D,)S 1570(and)S 1703(E)S 1800(\(here)S 1977(with)S 2134(two)S 5 F 2271(")S 1 F (copies)R 5 F (")R 1 F 2544(of)S 2633(subroutine)S 432 1284(s)U 432 1188(D)U 513(operating)S 814(on)S 915(different)S 1191(data\).)S 1405(We)S 1533(intend)S 1741(the)S 1857(execution)S 2165(to)S 2249(start)S 2401(simultaneously)S 2865(on)S 460 1284(ubroutines)U 791(C,D,D,)S 1024(and)S 1155(E)S 1226(since)S 1401(they)S 1551(appear)S 1769(as)S 1855(leaves)S 2061(in)S 2143(the)S 2257(data)S 2403(dependency)S 2773(graph)S 2901 1380(d)U 432 1476(t)U 432 1380(\(D)U 543(will)S 690(be)S 793(initiated)S 1064(twice)S 1255(with)S 1418(different)S 1701(data\).)S 1922(Once)S 2109(D,D,and)S 2388(E)S 2467(have)S 2637(complete)S 452 1476(hen)U 588(B)S 667(may)S 822(execute.)S 1115(When)S 1318(B)S 1397(and)S 1532(C)S 1611(have)S 1778(completed)S 2109(execution)S 2420(then)S 2575(A)S 2658(may)S 2813(start)S 2919 1572(,)U 432 1668(o)U 432 1572(and)U 561(the)S 674(entire)S 863(computation)S 1248(is)S 1321(\256nished)S 1574(when)S 1755(A)S 1832(has)S 1953(completed.)S 2319(To)S 2423(use)S 2543(SCHEDULE)S 468 1668(ne)U 561(is)S 634(required)S 899(to)S 980(specify)S 1213(the)S 1326(subroutine)S 1655(calling)S 1876(sequence)S 2165(of)S 2250(each)S 2407(of)S 2492(the)S 2605(six)S 2713(units)S 2877(of)S 432 1764(computation,)U 834(along)S 1018(with)S 1170(a)S 1226(representation)S 1658(of)S 1742(this)S 1870(dependency)S 2238(graph.)S 582 1896(For)U 714(each)S 878(node)S 1049(in)S 1136(the)S 1255(graph,)S 1468(SCHEDULE)S 1875(requires)S 2138(two)S 2277(subroutine)S 2612(calls.)S 2817(One)S 2905 1992(e)U 432 2088(r)U 432 1992(contains)U 701(information)S 1070(about)S 1259(the)S 1376(user's)S 1577(routine)S 1810(to)S 1895(be)S 1992(called,)S 2211(such)S 2372(as)S 2461(the)S 2577(name)S 2761(of)S 2849(th)S 456 2088(outine,)U 682(calling)S 906(sequence)S 1198(parameters,)S 1560(and)S 1692(a)S 1752(simple)S 1972(tag)S 2088(to)S 2172(identify)S 2424(the)S 2540(process.)S 2825(The)S 432 2280(b)U 432 2184(second)U 670(subroutine)S 1012(call)S 1154(de\256nes)S 1396(the)S 1522(dependency)S 1904(in)S 1998(the)S 2124(graph)S 2326(to)S 2419(nodes)S 2624(above)S 2833(and)S 468 2280(elow)U 636(the)S 752(one)S 884(being)S 1072(speci\256ed,)S 1374(and)S 1506(speci\256es)S 1782(the)S 1897(tag)S 2012(to)S 2095(identify)S 2346(the)S 2461(process.)S 2746(In)S 2833(this)S 2913 2376(f)U 432 2472(c)U 432 2376(example,)U 719(after)S 876(an)S 969(initial)S 1162(call)S 1291(to)S 1372(set)S 1477(up)S 1574(the)S 1687(environment)S 2076(for)S 2185(SCHEDULE,)S 2604(six)S 2713(pairs)S 2877(o)S 464 2472(alls)U 588(would)S 792(be)S 884(made)S 1064(to)S 1144(de\256ne)S 1344(the)S 1456(relationships)S 1848(and)S 1976(data)S 2120(in)S 2200(the)S 2312(computational)S 2748(graph.)S 432 2700(e)U 582 2604(These)U 795(concepts)S 1088(are)S 1217(perhaps)S 1481(more)S 1669(easily)S 1877(grasped)S 2141(through)S 2405(an)S 2513(actual)S 2725(Fortran)S 464 2700(xample.)U 752(A)S 838(very)S 1000(simple)S 1225(example)S 1502(is)S 1583(a)S 1648(parallel)S 1897(algorithm)S 2210(for)S 2327(computing)S 2668(the)S 2789(inner)S 432 2892(S)U 432 2796(product)U 682(of)S 772(two)S 910(vectors.)S 1214(The)S 1356(intention)S 1642(here)S 1796(is)S 1874(to)S 1960(illustrate)S 2242(the)S 2359(mechanics)S 2692(of)S 2781(using)S 472 2892(CHEDULE.)U 885(This)S 1048(algorithm)S 1363(and)S 1502(the)S 1625(use)S 1756(of)S 1851(SCHEDULE)S 2262(on)S 2369(a)S 2436(problem)S 2711(of)S 2805(such)S 60 Z 16 3414(-)U 72 Z 432 2988(small)U 612(granularity)S 952(are)S 1064(not)S 1180(necessarily)S 1524(recommended.)S 60 Z 36 3414(-)U 3259(--)S 72 Z 1618 3726(-)U 1666(6)S 1726(-)S 2549 3918(.)U 432(Problem:)S 720(Given)S 920(real)S 1052(vectors)S 1341(and)S 1502(,)S 1544(each)S 1700(of)S 1784(length)S 2021(,)S 2063(compute)S 2 F 66 Z 1284(a)S 1469(b)S 1988(n)S 4 F 2335(s)S 2397(=)S 2 F 2456(a)S 2516(b)S 1 F 72 Z 432 4110(Parallel)U 676(Algorithm:)S 2 F 48 Z 2489 3891(T)U 1 F 72 Z 936 4206(Let)U 1547(and)S 66 Z 2120(\))S 2 F 1056(a)S 4 F 1138(=)S 1 F 1197(\()S 2 F (a)R 1 F 1279(,)S 2 F (a)R 1 F 1356(,...)S 1424(,)S 2 F (a)R 1 F 1501(\))S 2 F 1675(b)S 4 F 1757(=)S 1 F 1816(\()S 2 F (b)R 1 F 1898(,)S 2 F (b)R 1 F 1975(,...)S 2043(,)S 2 F (b)R 48 Z 1089 4179(T)U 1 F 1252 4221(1)U 2 F 1252 4179(T)U 1 F 1329 4221(2)U 2 F 1329 4179(T)U 1474 4221(k)U 1474 4179(T)U 1708(T)S 1 F 1871 4221(1)U 2 F 1871 4179(T)U 1 F 1948 4221(2)U 2 F 1948 4179(T)U 2093 4221(k)U 2093 4179(T)U 2949 4320(i)U 2751(i)S 66 Z 2916 4305(b)U 1 F 72 Z 936(b)S 2 F 66 Z 1872(a)S 2057(b)S 2718(a)S 1 F 72 Z 972(e)S 1028(a)S 1084(partitioning)S 1444(of)S 1528(the)S 1640(vectors)S 1929(and)S 2114(into)S 2250(smaller)S 2486(vectors)S 2788(and)S 2962(.)S 936 4500(Compute)U 1224(\()S 1272(in)S 1352(parallel)S 1592(\))S 1296 4692(,)U 1516(.)S 4 F 66 Z 1032(s)S 2 F 48 Z 1072 4707(j)U 1199(j)S 1199 4665(T)U 1259 4707(j)U 4 F 66 Z 1107 4692(=)U 2 F 1166(a)S 1226(b)S 1338(j)S 4 F 1378(=)S 1 F 1437(1,)S 2 F (k)R EP %%Page: ? 5 BP 1 F 72 Z 2913 18(f)U 432 114(e)U 432 18(mented)U 670(in)S 752(Fortran)S 990(and)S 1120(its)S 1214(extensions.)S 1586(Each)S 1756(manufacturer)S 2166(provides)S 2440(a)S 2498(different)S 2772(set)S 2877(o)S 464 114(xtensions)U 783(and)S 933(targets)S 1171(these)S 1365(extensions)S 1715(at)S 1813(different)S 2107(implementation)S 2605(levels.)S 2837(For)S 2919 210(,)U 432 306(w)U 432 210(example,)U 729(some)S 915(manufacturers)S 1361(allow)S 1555(only)S 1717(test-and-set)S 2083(along)S 2277(with)S 2439(spawn-a-process)S 484 306(hile)U 616(others)S 816(allow)S 1000(concurrent)S 1332(execution)S 1636(of)S 1720(different)S 1992(loop)S 2144(iterations.)S 2917 438(l)U 432 534(s)U 582 438(Our)U 723(attempt)S 968(here)S 1121(is)S 1198(to)S 1283(allow)S 1471(the)S 1587(user)S 1735(to)S 1819(de\256ne)S 2023(the)S 2139(data)S 2287(dependencies,)S 2721(paralle)S 460 534(tructures,)U 756(and)S 886(shared)S 1100(variables)S 1386(in)S 1468(his)S 1578(application)S 1924(and)S 2053(then)S 2202(to)S 2283(implement)S 2616(these)S 2789(ideas)S 2917 630(t)U 432 726(o)U 432 630(in)U 515(a)S 574(Fortran)S 813(program)S 1084(written)S 1315(in)S 1398(terms)S 1585(of)S 1672(subroutine)S 2003(calls)S 2161(to)S 2243(SCHEDULE.)S 2687(Each)S 2857(se)S 468 726(f)U 525(subroutine)S 862(calls)S 1027(speci\256es)S 1308(a)S 1373(unit)S 1518(of)S 1611(computation)S 2004(or)S 2097(process)S 2345(which)S 2553(consists)S 2813(of)S 2905(a)S 2913 822(-)U 432 918(s)U 432 822(subroutine)U 761(name)S 942(along)S 1127(with)S 1280(the)S 1393(calling)S 1614(parameters)S 1955(and)S 2084(the)S 2197(data)S 2341(dependencies)S 2753(neces)S 460 918(ary)U 576(to)S 656(coordinate)S 984(the)S 1096(parallel)S 1336(execution.)S 582 1050(T)U (he)R 727(basic)S 908(philosophy)S 1261(here)S 1417(is)S 1497(that)S 1637(Fortran)S 1881(programs)S 2185(are)S 2305(naturally)S 2593(broken)S 2825(into)S 2901 1146(n)U 432 1242(s)U 432 1146(subroutines)U 810(that)S 964(identify)S 1234(self-contained)S 1688(units)S 1874(of)S 1980(computation)S 2386(which)S 2608(operate)S 2865(o)S 460 1242(hared)U 652(data)S 804(structures.)S 1134(This)S 1294(allows)S 1513(one)S 1648(to)S 1735(call)S 1870(on)S 1973(existing)S 2232(library)S 2455(subroutines)S 2818(in)S 2905(a)S 2905 1338(e)U 432 1434(a)U 432 1338(parallel)U 693(setting)S 930(without)S 1195(modi\256cation,)S 1621(and)S 1769(without)S 2033(having)S 2273(to)S 2373(write)S 2565(an)S 2677(envelop)S 464 1434(round)U 659(the)S 774(library)S 993(subroutine)S 1324(call)S 1455(in)S 1537(order)S 1715(to)S 1797(conform)S 2067(to)S 2149(some)S 2327(unusual)S 2577(data-passing)S 432 1530(conventions)U 804(imposed)S 1072(by)S 1168(a)S 1224(given)S 1408(parallel)S 1648(programming)S 2064(environment.)S 582 1662(A)U 662(parallel\(izable\))S 1125(program)S 1396(is)S 1471(written)S 1702(in)S 1785(terms)S 1972(of)S 2059(calls)S 2218(to)S 2301(subroutines)S 2660(which,)S 2881(in)S 2901 1758(y)U 432 1854(r)U 432 1758(principle,)U 737(may)S 892(be)S 991(performed)S 1321(either)S 1515(independently)S 1953(or)S 2043(according)S 2357(to)S 2443(data)S 2593(dependenc)S 456 1854(equirements)U 835(that)S 970(the)S 1085(user)S 1232(is)S 1307(responsible)S 1662(for)S 1773(de\256ning.)S 2054(The)S 2193(result)S 2379(is)S 2453(a)S 2511(serial)S 2693(program)S 2913 1950(-)U 432 2046(t)U 432 1950(that)U 568(can)S 696(run)S 820(in)S 904(parallel)S 1148(given)S 1336(a)S 1396(way)S 1544(to)S 1628(schedule)S 1907(the)S 2022(units)S 2189(of)S 2276(computation)S 2663(on)S 2762(a)S 2821(sys)S 452 2046(em)U 564(of)S 648(parallel)S 888(processors)S 1216(while)S 1400(obeying)S 1656(the)S 1768(data)S 1912(dependencies.)S 3 F 432 2238(4.)U 534(Parallel)S 798(Programming)S 1254(Using)S 1454(SCHEDULE)S 1 F 582 2370(The)U 722(package)S 986(SCHEDULE)S 1389(requires)S 1648(a)S 1707(user)S 1854(to)S 1937(specify)S 2172(the)S 2287(subroutine)S 2618(calls)S 2777(along)S 2901 2466(h)U 432 2562(o)U 432 2466(with)U 587(the)S 702(execution)S 1009(dependencies)S 1424(in)S 1507(order)S 1686(to)S 1769(carry)S 1944(out)S 2063(a)S 2122(parallel)S 2365(computation.)S 2793(Eac)S 468 2562(f)U 531(these)S 717(calls)S 887(represents)S 1217(a)S 1287(process,)S 1559(and)S 1701(the)S 1827(user)S 1985(must)S 2163(take)S 2321(the)S 2447(responsibility)S 2877(of)S 2913 2658(-)U 432 2754(c)U 432 2658(ensuring)U 711(that)S 850(the)S 969(data)S 1120(dependencies)S 1539(represented)S 1902(by)S 2005(the)S 2123(graph)S 2317(are)S 2435(valid.)S 2651(This)S 2809(con)S 464 2754(ept)U 579(is)S 654(perhaps)S 905(dif\256cult)S 1160(to)S 1243(grasp)S 1425(without)S 1671(some)S 1849(experience)S 2187(with)S 2341(writing)S 2575(parallel)S 2817(pro-)S 2913 2850(-)U 432 2946(t)U 432 2850(grams.)U 679(We)S 808(shall)S 973(try)S 1081(to)S 1165(explain)S 1405(it)S 1473(in)S 1557(this)S 1689(section)S 1921(by)S 2021(example;)S 2313(in)S 2397(the)S 2513(following)S 2821(sec)S 452 2946(ion)U 568(we)S 676(shall)S 836(describe)S 1100(the)S 1212(underlying)S 1548(concepts)S 1824(and)S 1952(the)S 2064(SCHEDULE)S 2464(mechanism.)S 2881 3078(m)U 432 3174(i)U 582 3078(To)U 690(use)S 814(SCHEDULE,)S 1236(one)S 1368(must)S 1536(be)S 1632(able)S 1780(to)S 1864(express)S 2108(\(i.e.,)S 2266(program\))S 2562(an)S 2657(algorith)S 452 3174(n)U 541(terms)S 754(of)S 867(processes)S 1196(and)S 1353(execution)S 1686(dependencies)S 2127(among)S 2375(the)S 2515(processes.)S 2885(A)S 60 Z 3279 3630(-)U 16(--)S 3259(-)S 72 Z 1618 3942(-)U 1666(5)S 1726(-)S 2905 4134(e)U 432 4230(f)U 432 4134(convenient)U 782(way)S 935(to)S 1024(view)S 1197(this)S 1334(is)S 1415(through)S 1672(a)S 1737(computational)S 2182(graph.)S 2421(For)S 2554(example,)S 2849(th)S 456 4230(ollowing)U 736(graph)S 48 Z 1163 4581(A)U 1083 4572(D)U ('c195u')R EP %%Page: ? 4 BP 1 F 72 Z 432 6(e)U (xpected)R 720(to)S 808(have)S 976(a)S 1040(limited)S 1276(lifetime.)S 1574(Its)S 1678(purpose)S 1938(is)S 2018(to)S 2105(allow)S 2296(us)S 2391(to)S 2478(exploit)S 2709(existing)S 3 F 432 390(2)U 1 F 432 102(hardware)U 724(immediately.)S 3 F 468 390(.)U 534(Terminology)S 1 F 582 522(W)U (ithin)R 824(the)S 954(science)S 1208(of)S 1310(parallel)S 1568(computation)S 1970(there)S 2156(seems)S 2374(to)S 2471(be)S 2580(no)S 2693(standard)S 2913 618(f)U 432 714(d)U 432 618(de\256nition)U 745(of)S 842(terms.)S 1081(A)S 1170(certain)S 1403(terminology)S 1792(will)S 1941(be)S 2045(adopted)S 2309(here)S 2469(for)S 2589(the)S 2713(sake)S 2877(o)S 468 714(ialogue.)U 752(It)S 826(will)S 968(not)S 1090(be)S 5 F 1188(")S 1 F (standard)R 5 F (")R 1 F 1522(and)S 1656(is)S 1734(intended)S 2012(only)S 2169(to)S 2254(apply)S 2443(within)S 2656(the)S 2773(scope)S 432 1002(P)U 432 810(of)U 516(this)S 644(document.)S 472 1002(rocess)U 676(-)S 724(A)S 800(unit)S 936(of)S 1020(computation,)S 1422(an)S 1514(independently)S 1946(executable)S 2278(Fortran)S 2494 1098(n)U 672 1194(d)U 672 1098(subroutine)U 1000(together)S 1260(with)S 1412(calling)S 1632(sequence)S 1920(parameters,)S 2278(commo)S 708 1194(ata,)U 834(and)S 962(externals.)S 432 1386(T)U (ask)R 668(-)S 716(A)S 792(main)S 960(program,)S 1246(processes,)S 1564(and)S 1692(a)S 1748(virtual)S 1960(processor.)S 2488 1578(y)U 432(Virtual)S 660(Processor)S 964(-)S 1012(A)S 1088(process)S 1328(designed)S 1608(to)S 1688(assume)S 1924(the)S 2036(identity)S 2280(of)S 2364(ever)S 672 1674(process)U 912(within)S 1120(a)S 1176(given)S 1360(task)S 1500(\(through)S 1772(an)S 1864(appropriate)S 2216(subroutine)S 2544(call\).)S 432 1866(Processor)U 736(-)S 784(A)S 860(physical)S 1124(device)S 1336(capable)S 1580(of)S 1664(executing)S 1968(a)S 2024(main)S 2192(program)S 2460(or)S 2544(a)S 648 1962(virtual)U 860(processor.)S 432 2154(S)U (hared)R 656(Data)S 816(-)S 864(Variables)S 1164(that)S 1296(are)S 1408(read)S 1556(and/or)S 1764(written)S 1992(by)S 2248 2250(.)U 432 2442(D)U 648 2250(more)U 820(than)S 968(one)S 1096(process)S 1336(\(including)S 1656(copies)S 1864(of)S 1948(processes\))S 484 2442(ata)U 592(Dependency)S 976(-)S 1024(A)S 1100(situation)S 1372(wherein)S 1628(one)S 1756(process)S 1996(\(A\))S 2120(reads)S 2296(any)S 2424(shared)S 624 2538(data)U 768(that)S 900(another)S 1140(process)S 1380(\(B\))S 1500(writes.)S 1742(This)S 1894(data)S 2038(dependency)S 648 2634(is)U 720(satis\256ed)S 980(when)S 1160(B)S 1232(has)S 1352(written)S 1580(the)S 1692(shared)S 1904(data.)S 2392 2826(l)U 432(Schedulable)S 808(Process)S 1052(-)S 1100(A)S 1176(process)S 1416(whose)S 1624(data)S 1768(dependencies)S 2180(have)S 2340(al)S 648 2922(been)U 808(satis\256ed.)S 60 Z 16 3846(-)U (-)R 3259(--)S 3 F 72 Z 432 4350(3.)U 534(Parallel)S 798(Programming)S 1254(Ideas)S 1 F 1618 4158(-)U 1666(4)S 1726(-)S 582 4482(When)U 798(designing)S 1122(a)S 1198(parallel)S 1458(algorithm)S 1782(one)S 1930(is)S 2021(required)S 2304(to)S 2403(describe)S 2686(the)S 2817(data)S 2919 4578(.)U 432 4674(T)U 432 4578(dependencies,)U 881(parallel)S 1140(structures,)S 1481(and)S 1628(shared)S 1859(variables)S 2162(involved)S 2457(in)S 2556(the)S 2687(solution)S 476 4674(ypically,)U 756(such)S 918(algorithms)S 1256(are)S 1374(\256rst)S 1516(designed)S 1802(at)S 1884(a)S 1946(conceptual)S 2288(level)S 2458(and)S 2592(later)S 2749(imple-)S EP %%Page: ? 3 BP 1 F 72 Z 432 30(o)U (rder)R 624(of)S 854(machine)S 1138(cycles,)S 1375(to)S 1470(no)S 1581(formal)S 1812(mechanism)S 2179(whatsoever)S 2546(alliant)S 2765(These)S 66 Z 724(10)S 48 Z 3(6)T 72 Z 432 126(d)U (ifferent)R 721(approaches)S 1086(re\257ect)S 1307(characteristics)S 1760(of)S 1861(underlying)S 2213(hardware)S 2521(and)S 2665(operating)S 2913 222(f)U 432 318(p)U 432 222(systems)U 688(and)S 820(to)S 904(a)S 964(large)S 1136(extent)S 1340(are)S 1456(dictated)S 1712(by)S 1812(the)S 1928(vendors)S 2184(view)S 2352(of)S 2439(which)S 2642(aspects)S 2877(o)S 468 318(arallelism)U 777(are)S 889(marketable.)S 1251(It)S 1319(is)S 1391(too)S 1507(early)S 1675(to)S 1755(impose)S 1987(a)S 2043(standard)S 2311(on)S 2407(these)S 2579(vendors,)S 2849(yet)S 432 510(s)U 432 414(it)U 503(is)S 582(disconcerting)S 1001(that)S 1140(there)S 1315(is)S 1393(no)S 1495(agreement)S 1825(among)S 2051(any)S 2185(of)S 2275(them)S 2449(on)S 2551(which)S 2757(exten-)S 460 510(ions)U 607(should)S 826(be)S 921(included.)S 1237(There)S 1431(is)S 1505(not)S 1623(even)S 1785(an)S 1879(agreed-upon)S 2265(naming)S 2507(convention)S 2853(for)S 2913 606(-)U 432 702(d)U 432 606(extensions)U 768(that)S 908(have)S 1076(identical)S 1356(functionality.)S 1797(Program)S 2076(developers)S 2419(interested)S 2730(in)S 2817(pro)S 468 702(ucing)U 653(implementations)S 1158(of)S 1243(parallel)S 1484(algorithms)S 1817(that)S 1950(will)S 2087(run)S 2208(on)S 2305(a)S 2361(number)S 2605(of)S 2689(different)S 432 894(d)U 432 798(parallel)U 681(machines)S 986(are)S 1107(therefore)S 1399(faced)S 1587(with)S 1747(an)S 1847(overwhelming)S 2295(task.)S 2485(The)S 2629(process)S 2877(of)S 468 894(eveloping)U 786(portable)S 1056(parallel)S 1306(packages)S 1603(is)S 1684(complicated)S 2069(by)S 2174(additional)S 2495(factors)S 2724(that)S 2865(lie)S 432 1086(f)U 432 990(beyond)U 679(each)S 845(computer)S 1151(manufacturer)S 1569(supplying)S 1887(its)S 1989(own,)S 2165(very)S 2327(different)S 2609(mechanism)S 456 1086(or)U 543(parallel)S 786(processing.)S 1163(A)S 1241(given)S 1427(implementation)S 1905(may)S 2055(require)S 2285(several)S 2515(different)S 2789(com-)S 432 1278(e)U 432 1182(municating)U 801(parallel)S 1061(processes,)S 1399(perhaps)S 1667(with)S 1839(different)S 2131(levels)S 2343(of)S 2447(granularity.)S 2849(An)S 464 1278(f\256cient)U 711(implementation)S 1206(may)S 1373(require)S 1620(the)S 1751(ability)S 1978(to)S 2077(dynamically)S 2476(start)S 2643(processes,)S 432 1470(f)U 432 1374(perhaps)U 692(many)S 888(more)S 1072(than)S 1231(the)S 1354(number)S 1609(of)S 1704(physical)S 1979(processors)S 2318(in)S 2409(the)S 2532(system.)S 2809(This)S 456 1470(eature)U 662(is)S 740(either)S 934(lacking)S 1175(or)S 1264(prohibitively)S 1665(expensive)S 1982(on)S 2083(most)S 2252(commercially)S 2677(available)S 432 1662(p)U 432 1566(parallel)U 677(computers.)S 1048(Instead,)S 1303(many)S 1492(of)S 1581(the)S 1697(manufacturers)S 2137(have)S 2301(limited)S 2533(themselves)S 2881(to)S 468 1662(roviding)U 736(one-level)S 1028(loop-based)S 1368(parallelism.)S 582 1794(T)U (his)R 745(paper)S 939(describes)S 1241(an)S 1343(environment)S 1741(for)S 1859(the)S 1981(transportable)S 2391(implementation)S 2877(of)S 2913 1890(-)U 432 1986(a)U 432 1890(parallel)U 673(algorithms)S 1006(in)S 1087(a)S 1143(Fortran)S 1379(setting.)S 1637(By)S 1745(this)S 1873(we)S 1981(mean)S 2161(that)S 2293(a)S 2349(user's)S 2545(code)S 2705(is)S 2777(virtu)S 464 1986(lly)U 576(identical)S 860(for)S 980(each)S 1148(machine.)S 1446(The)S 1594(main)S 1774(tool)S 1922(in)S 2013(this)S 2152(environment)S 2551(is)S 2634(a)S 2701(package)S 2905 2082(a)U 432 2178(F)U 432 2082(called)U 636(SCHEDULE)S 1043(which)S 1250(has)S 1377(been)S 1544(designed)S 1831(to)S 1918(aid)S 2037(a)S 2100(programmer)S 2487(familiar)S 2746(with)S 472 2178(ortran)U 679(programming)S 1105(environment)S 1503(to)S 1593(implement)S 1935(a)S 2001(parallel)S 2251(algorithm)S 2565(in)S 2655(a)S 2721(manner)S 2913 2274(f)U 432 2370(p)U 432 2274(that)U 573(will)S 717(lend)S 873(itself)S 1049(to)S 1137(transporting)S 1517(the)S 1637(resulting)S 1921(program)S 2197(across)S 2409(a)S 2473(wide)S 2645(variety)S 2877(o)S 468 2370(arallel)U 676(machines.)S 994(The)S 1134(package)S 1398(is)S 1474(designed)S 1758(to)S 1841(allow)S 2028(existing)S 2283(Fortran)S 2522(subroutines)S 2881(to)S 2909 2466(s)U 432 2562(a)U 432 2466(be)U 548(called)S 768(through)S 1040(SCHEDULE,)S 1482(without)S 1750(modi\256cation,)S 2179(thereby)S 2442(permitting)S 2789(user)S 464 2562(ccess)U 650(to)S 740(a)S 805(wide)S 978(body)S 1155(of)S 1248(existing)S 1509(library)S 1734(software)S 2015(in)S 2104(a)S 2169(parallel)S 2418(setting.)S 2685(Machine)S 432 2754(b)U 432 2658(intrinsics)U 723(are)S 838(invoked)S 1097(within)S 1308(the)S 1423(SCHEDULE)S 1826(package,)S 2107(and)S 2237(considerable)S 2627(effort)S 2813(may)S 468 2754(e)U 525(required)S 790(on)S 887(our)S 1008(part)S 1145(to)S 1226(move)S 1411(SCHEDULE)S 1812(from)S 1977(one)S 2106(machine)S 2375(to)S 2455(another.)S 2737(On)S 2849(the)S 432 2946(c)U 432 2850(other)U 614(hand,)S 806(the)S 928(user)S 1082(of)S 1176(SCHEDULE)S 1586(is)S 1667(relieved)S 1932(of)S 2025(the)S 2146(burden)S 2379(of)S 2472(modifying)S 2805(each)S 464 2946(ode)U 592(he)S 684(disires)S 896(to)S 976(transport)S 1256(from)S 1420(one)S 1548(machine)S 1816(to)S 1896(another.)S 2905 3078(e)U 432 3174(b)U 582 3078(Our)U 728(work)S 910(has)S 1040(primarily)S 1342(been)S 1512(in\257uenced)S 1846(by)S 1952(the)S 2074(work)S 2256(of)S 2350(Babb)S 2536(babb)S 2709(Brown)S 468 3174(rowne)U 691(and)S 837(Lusk)S 1023(and)S 1169(Overbeek)S 1491(lusk)S 1653(overbeek)S 1959(We)S 2101(present)S 2351(here)S 2517(our)S 2655(approach,)S 432 3366(w)U 432 3270(which)U 649(aids)S 806(in)S 903(the)S 1032(programming)S 1465(of)S 1566(explicitly)S 1879(parallel)S 2136(algorithms)S 2485(in)S 2581(Fortran)S 2833(and)S 484 3366(hich)U 641(allows)S 862(one)S 999(to)S 1088(make)S 1277(use)S 1406(of)S 1499(existing)S 1759(Fortran)S 2003(libraries)S 2271(in)S 2359(the)S 2479(parallel)S 2727(setting.)S 432 3558(s)U 432 3462(The)U 577(approach)S 874(taken)S 1063(here)S 1220(should)S 1445(be)S 1546(regarded)S 1831(as)S 1924(minimalist:)S 2309(it)S 2381(has)S 2509(a)S 2573(very)S 2733(limited)S 460 3558(cope.)U 671(There)S 872(are)S 993(two)S 1133(reasons)S 1381(for)S 1497(this.)S 1675(First,)S 1857(the)S 1977(goal)S 2133(of)S 2225(portability)S 2557(of)S 2649(user)S 2801(code)S 2905 3654(e)U 60 Z 16 4062(-)U 72 Z 432 3654(will)U 569(be)S 662(less)S 795(dif\256cult)S 1048(to)S 1129(achieve.)S 1415(Second,)S 1669(the)S 1781(real)S 1913(hope)S 2077(for)S 2185(a)S 2241(solution)S 2497(to)S 2577(the)S 2689(softwar)S 60 Z 36 4062(-)U 3259(--)S 72 Z 432 4566(p)U 1618 4374(-)U 1666(3)S 1726(-)S 468 4566(roblems)U 759(associated)S 1113(with)S 1299(parallel)S 1573(programming)S 2023(lies)S 2181(with)S 2367(new)S 2545(programming)S 2909 4662(s)U 432(languages)S 767(or)S 874(perhaps)S 1145(with)S 1320(the)S 5 F 1455(")S 1 F (right)R 5 F (")R 1 F 1697(extension)S 2019(to)S 2121(Fortran.)S 2421(Our)S 2579(approach)S 2889(i)S EP %%Page: ? 2 BP 3 F 72 Z 438 222(SCHEDULE:)U 882(Tools)S 1074(for)S 1190(Developing)S 1558(and)S 1698(Analyzing)S 2034(Parallel)S 2298(Fortran)S 2566(Programs)S 2894(*)S 1 F 60 Z 1054 474(M)U 2 F 66 Z 1206 366(J.)U 1274(J.)S 1342(Dongarra)S 1629(and)S 1750(D.)S 1837(C.)S 1920(Sorensen)S 1 F 60 Z 1107 474(athemat)U 1299(ics)S 1386(and)S 1493(Computer)S 1754(Science)S 1962(Division)S 1248 546(Argonne)U 1478(National)S 1706(Laboratory)S 1331 618(9700)U 1471(South)S 1631(Cass)S 1764(Avenue)S 1974 690(4)U 1278(Argonne,)S 1523(Illinois)S 1714(60439-484)S 1598 834(and)U 930 978(C)U (enter)R 1111(for)S 1201(Supercomputing)S 1619(Research)S 1860(and)S 1967(Development)S 1074 1050(University)U 1348(of)S 1418(Illinois)S 1609(at)S 1673(Urbana-Champai)S 2088(gn)S 1333 1122(305)U 1443(Talbot)S 1621(Laboratory)S 1895 1194(t)U 1265 1266(U)U 1310 1194(104)U 1420(South)S 1580(Wright)S 1771(Stree)S 1308 1266(rbana,)U 1477(Illinois)S 1668(61801-2932)S 3 F 72 Z 432 1458(1.)U 534(Introduction)S 1 F 582 1590(Many)U 797(new)S 964(parallel)S 1227(computers)S 1574(are)S 1709(now)S 1879(emerging)S 2197(as)S 2303(commercial)S 2689(products)S 432 1782(a)U 432 1686(dongarra)U 721(duff)S 874(Exploitation)S 1263(of)S 1356(the)S 1477(parallel)S 1725(capabilities)S 2085(requires)S 2349(either)S 2545(extensions)S 2881(to)S 464 1782(n)U 531(existing)S 790(language)S 1081(such)S 1244(as)S 1335(Fortran)S 1578(or)S 1669(development)S 2071(of)S 2161(an)S 2259(entirely)S 2509(new)S 2659(language.)S 432 1974(l)U 432 1878(A)U 518(number)S 771(of)S 864(activities)S 1157(vanrosendale)S 1570(mcgraw)S 1835(sisal)S 1996(are)S 2117(under)S 2314(way)S 2467(to)S 2556(develop)S 2817(new)S 452 1974(anguages)U 747(that)S 882(promise)S 1141(to)S 1224(provide)S 1471(the)S 1585(ability)S 1795(to)S 1877(exploit)S 2103(parallelism)S 2449(without)S 2695(the)S 2809(con-)S 432 2166(b)U 432 2070(siderable)U 720(effort)S 908(that)S 1043(may)S 1194(be)S 1289(required)S 1556(in)S 1639(using)S 1822(an)S 1917(inherently)S 2236(serial)S 2419(language)S 2706(that)S 2841(has)S 468 2166(een)U 606(extended)S 904(for)S 1026(parallelism.)S 1426(We)S 1564(applaud)S 1830(such)S 2000(activities)S 2298(and)S 2439(expect)S 2664(they)S 2825(will)S 2917 2262(t)U 432 2358(t)U 432 2262(offer)U 602(a)S 664(true)S 806(solution)S 1068(to)S 1154(the)S 1272(software)S 1550(dilemma)S 1832(in)S 1918(the)S 2036(future.)S 2280(However,)S 2591(in)S 2676(the)S 2793(shor)S 452 2358(erm)U 590(we)S 700(feel)S 834(there)S 1004(is)S 1077(a)S 1134(need)S 1295(to)S 1376(confront)S 1645(some)S 1822(of)S 1907(the)S 2020(software)S 2293(issues,)S 2508(with)S 2661(particular)S 432 2454(emphasis)U 724(placed)S 936(on)S 1032(transportability)S 1496(and)S 1624(use)S 1744(of)S 1828(existing)S 2080(software.)S 582 2586(Our)U 727(interests)S 1000(lie)S 1105(mainly)S 1337(with)S 1497(mathematical)S 1917(software)S 2197(typically)S 2481(associated)S 2809(with)S 2901 2682(n)U 432 2778(l)U 432 2682(scienti\256c)U 742(computations.)S 1222(Therefore,)S 1574(we)S 1708(concentrate)S 2089(here)S 2262(on)S 2383(using)S 2588(the)S 2725(Fortra)S 452 2778(anguage.)U 762(Each)S 934(vendor)S 1162(of)S 1250(a)S 1310(parallel)S 1554(machine)S 1825(designed)S 2108(primarily)S 2403(for)S 2514(numerical)S 2829(cal-)S 432 2970(h)U 432 2874(culations)U 732(has)S 868(provided)S 1164(its)S 1272(own)S 1436(parallel)S 1691(extensions)S 2034(to)S 2129(Fortran.)S 2422(These)S 2633(extensions)S 468 2970(ave)U 594(taken)S 776(many)S 962(forms)S 1156(already)S 1394(and)S 1523(are)S 1636(usually)S 1869(dictated)S 2122(by)S 2219(the)S 2332(underlying)S 2669(hardware)S 432 3162(w)U 432 3066(and)U 565(by)S 666(the)S 783(capabilities)S 1140(that)S 1277(the)S 1394(vendor)S 1623(wishes)S 1848(to)S 1933(supply)S 2154(the)S 2271(user.)S 2485(This)S 2641(has)S 2765(led)S 2881(to)S 484 3162(idely)U 654(different)S 928(extensions)S 1258(ranging)S 1504(from)S 1670(the)S 1784(ability)S 1994(to)S 2076(synchronize)S 2450(on)S 2548(every)S 2733(assign-)S 432 3354(d)U 432 3258(ment)U 609(of)S 702(a)S 767(variable)S 1032(with)S 1193(a)S 1258(full)S 1391(empty)S 1604(property)S 1881(jordan)S 2097(to)S 2185(attempts)S 2461(at)S 2545(automatically)S 468 3354(etecting)U 724(loop-based)S 1068(parallelism)S 1416(with)S 1571(a)S 1630(preprocessing)S 2057(compiler)S 2340(aided)S 2523(by)S 2622(user)S 2769(direc-)S 2913 3450(r)U 432 3546(r)U 432 3450(tives)U 597(alliant)S 806(The)S 947(act)S 1060(of)S 1149(getting)S 1377(a)S 1437(parallel)S 1681(process)S 1925(executing)S 2233(on)S 2333(a)S 2393(physical)S 2661(processo)S 456 3546(anges)U 654(from)S 828(a)S 894(simple)S 5 F 1120(")S 1 F (create)R 5 F (")R 1 F 1386(statement)S 1696(jordan)S 1914(which)S 2124(imposes)S 2394(the)S 2515(overhead)S 2812(of)S 2905(a)S 2905 3642(e)U 0 F 48 Z 432 3702 M 8 22 0 0 16 0 0 18 PS16 1 F 72 Z 432 3642(subroutine)U 770(call,)S 926(to)S 5 F 1016(")S 1 F (tskstart)R 5 F (")R 1 F 1318(cray)S 1475(multitasking)S 1868(which)S 2077(imposes)S 2346(an)S 2447(overhead)S 2744(on)S 2849(th)S 0 F 48 Z 456 3702 M 8 22 0 0 16 0 0 18 PS16 480 3702 M 8 22 0 0 16 0 0 18 PS16 504 3702 M 8 22 0 0 16 0 0 18 PS16 528 3702 M 8 22 0 0 16 0 0 18 PS16 552 3702 M 8 22 0 0 16 0 0 18 PS16 576 3702 M 8 22 0 0 16 0 0 18 PS16 600 3702 M 8 22 0 0 16 0 0 18 PS16 624 3702 M 8 22 0 0 16 0 0 18 PS16 648 3702 M 8 22 0 0 16 0 0 18 PS16 672 3702 M 8 22 0 0 16 0 0 18 PS16 696 3702 M 8 22 0 0 16 0 0 18 PS16 720 3702 M 8 22 0 0 16 0 0 18 PS16 744 3702 M 8 22 0 0 16 0 0 18 PS16 768 3702 M 8 22 0 0 16 0 0 18 PS16 792 3702 M 8 22 0 0 16 0 0 18 PS16 816 3702 M 8 22 0 0 16 0 0 18 PS16 840 3702 M 8 22 0 0 16 0 0 18 PS16 1 F 432 3762(*)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 4278(-)U 48 Z 432 3822(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 2064(and)S 2149(DE-FG02-85ER25001.)S 60 Z 36 4278(-)U 3259(--)S 72 Z 1618 4590(-)U 1666(2)S 1726(-)S EP %%Page: ? 1 BP 1 F 60 Z 16 -42(--)U 3259(--)S 1687 438(.)U 2166 1230(Y)U 1159(ARGONNE)S 1471(NATIONAL)S 1800(LABORATOR)S 1374 1302(9700)U 1514(South)S 1674(Cass)S 1807(Avenue)S 3 F 72 Z 468 1704(S)U 1 F 60 Z 1381 1374(Argonne,)U 1626(Illinois)S 1837(60439)S 3 F 72 Z 508 1704(CHEDULE:)U 912(Tools)S 1104(for)S 1220(Developing)S 1588(and)S 1728(Analyzing)S 2064(Parallel)S 2328(Fortran)S 2596(Programs)S 66 Z 1081 1992(Jack)U 1235(J.)S 1307(Dongarra)S 1604(and)S 1733(Danny)S 1943(C.)S 2030(Sorensen)S 1 F 60 Z 1127 2280(Mathemati)U 1389(cs)S 1459(and)S 1566(Computer)S 1827(Science)S 2035(Division)S 1290 2496(Technica)U 1512(l)S 1549(Memorandum)S 1910(No.)S 2018(86)S 1480 2871(November,)U 1769(1986)S 3279 4494(-)U 16(--)S 3259(-)S EP %%Trailer pscatsave end restore %%Pages: 32 .