Subject: the CCL paper by Bala et al.

From: "Ching-Tien (Howard) Ho" <[email-masked]>
Date: Wed, 21 Apr 93 08:44:31 PDT

Hi,
  This is the postscript file of the CCL paper
I brought to the last MPI meeting (same version),
in case you missed a copy then.
It has appeared as an IBM Research Report RJ 9284, April 1993.
Let me know if you prefer to have a Latex file of it.
All comments are welcome.

Regards,

-- Howard

%!PS-Adobe-2.0
%%Creator: dvips 5.47 (RS/6000 1.0) Copyright 1986-91 Radical Eye Software
%%Title: CCL.dvi
%%Pages: 24 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
/BitMaps X /BuildChar{CharBuilder} N /Encoding IE N end dup{/foo setfont}2
array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
setfont}B /ch-width{ch-data dup length 5 sub get} B /ch-height{ch-data dup
length 4 sub get} B /ch-xoff{128 ch-data dup length 3 sub get sub} B /ch-yoff{
ch-data dup length 2 sub get 127 sub} B /ch-dx{ch-data dup length 1 sub get} B
/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
array N 0 1 255{IE S 1 string dup 0 3 index put cvn put} for}N /p /show load N
/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{clear SS restore}B end
%%EndProcSet
%%BeginProcSet: special.pro
TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP false N /BBcalc false N
/p 3 def}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{
@scaleunit div /vsc X}B /@hsize{/hs X /CLIP true N}B /@vsize{/vs X /CLIP true
N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X}
B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X /BBcalc true N}B
/magscale true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{md begin /letter{}N /note{}N /legal{}N /od{txpose 1 0 mtx
defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{
itransform moveto}}{transform{itransform lineto}}{6 -2 roll transform 6 -2
roll transform 6 -2 roll transform{itransform 6 2 roll itransform 6 2 roll
itransform 6 2 roll curveto}}{{closepath}}pathforall newpath counttomark array
astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{
PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR
pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if
yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270
rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get
ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not
and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip
not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}
ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy
TR .96 dup scale neg S neg S TR}if}N /cp{pop pop showpage pm restore}N end}if}
if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{
DVImag dup scale}if}N /psfts{S 65536 div N}N /startTexFig{/psf$SavedState save
N userdict maxlength dict begin /magscale false def normalscale currentpoint
TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx
sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx
psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N
/erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{psf$llx psf$lly
psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll
S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end
psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave
normalscale currentpoint TR @SpecialDefaults}N /@setspecial{CLIP{newpath 0 0
moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR
hsc vsc scale ang rotate BBcalc{rwi urx llx sub div dup scale llx neg lly neg
TR}if /showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{grestore
clear SpecialSave restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B
/li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1
setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY
moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
setmatrix}N end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 1 108 df<3C000C000C00180018001800187031
903230340038007F00618061906190C1A0C0C00C117E9010>107 D E /Fb
6 116 df<07C00C20107020706000C000C000C00080008000C010C02060C03F000C0E7E8D0F>
99 D<00180038001000000000000000000000000001C0022004300430086000600060006000C0
00C000C000C001800180018001806300E300C60078000D1D80960E>106
D<1F0006000600060006000C000C000C000C00181C1866188E190C32003C003F00318060C060C4
60C460C8C0C8C0700F177E9612>I<383C0044C6004702004602008E06000C06000C06000C0C00
180C00180C40181840181880300880300F00120E7F8D15>110 D<38F04518463846308C000C00
0C000C001800180018001800300030000D0E7F8D10>114 D<07C00C201870187038001E000FC0
03E000606060E060C0C0C1803F000C0E7E8D10>I E /Fc 18 122 df<03CC0E2E181C381C301C
701CE038E038E038E038C072C072C07260F261341E180F107C8F14>97 D<7E000E000E000E001C
001C001C001C00380038003BC03C307830701870187018E038E038E038E038C070C060C0E060C0
63801E000D1A7C9912>I<01F006080C181838301070006000E000E000E000E000E008E0106020
30C01F000D107C8F12>I<001F80000380000380000380000700000700000700000700000E0000
0E0003CE000E2E00181C00381C00301C00701C00E03800E03800E03800E03800C07200C07200C0
720060F2006134001E1800111A7C9914>I<01E006181C08380870087010FFE0E000E000E000E0
00E0086010602030C01F000D107C8F12>I<00F300038B800607000E07000C07001C0700380E00
380E00380E00380E00301C00301C00301C00183C0018780007B800003800003800007000607000
E0E000C1C0007F000011177E8F12>103 D<1F8000038000038000038000070000070000070000
0700000E00000E00000E7C000F86001E07001E07001C07001C0700380E00380E00380E00381C00
701C80701C80703880703900E01900600E00111A7E9914>I<030706000000000000384C4E8E9C
9C1C3838707272E2E4643808197C980C>I<1F8003800380038007000700070007000E000E000E
0E0E131C271C431C801F003C003F8039C038E070E270E270E270E4E0646038101A7E9912>107
D<3F0707070E0E0E0E1C1C1C1C3838383870707070E4E4E4E46830081A7D990A>I<307C005986
009E07009E07009C07009C0700380E00380E00380E00381C00701C80701C80703880703900E019
00600E0011107C8F16>110 D<01F006180C0C180E300E700E600EE00EE00EE00CE01CE018E030
606030C01F000F107C8F14>I<030F000590C009E0C009C06009C06009C0600380E00380E00380
E00380E00701C00701800703800703000E8E000E78000E00000E00001C00001C00001C00001C00
00FF00001317808F14>I<30F059189E389C189C009C0038003800380038007000700070007000
E00060000D107C8F10>114 D<03E004300830187018601C001F801FC00FE000E00060E060E060
80C041803E000C107D8F10>I<06000E000E000E000E001C001C00FFC01C003800380038003800
7000700070007000E100E100E100E200640038000A177C960D>I<38064C074E0E8E0E9C0E9C0E
1C1C381C381C381C7039703970393079389A0F0C10107C8F15>I<38064C074E0E8E0E9C0E9C0E
1C1C381C381C381C703870387038307838F00F700070006060E0E1C0C18047003C0010177C8F13
>121 D E /Fd 19 120 df<00FC000182000703000607000E02000E00000E00000E00000E0000
0E0000FFFF000E07000E07000E07000E07000E07000E07000E07000E07000E07000E07000E0700
0E07000E07000E07007F0FE0131A809915>12 D<60F0F06004047D830B>46
D<0FC21836200E6006C006C002C002C002E00070007E003FE01FF807FC003E000E000700038003
80038003C002C006E004D81887E0101A7E9915>83 D<3F8070C070E020700070007007F01C7030
707070E070E071E071E0F171FB1E3C10107E8F13>97 D<07F80C1C381C30087000E000E000E000
E000E000E0007000300438080C1807E00E107F8F11>99 D<007E00000E00000E00000E00000E00
000E00000E00000E00000E00000E0003CE000C3E00380E00300E00700E00E00E00E00E00E00E00
E00E00E00E00E00E00600E00700E00381E001C2E0007CFC0121A7F9915>I<07C01C3030187018
600CE00CFFFCE000E000E000E0006000300438080C1807E00E107F8F11>I<01F0031807380E10
0E000E000E000E000E000E00FFC00E000E000E000E000E000E000E000E000E000E000E000E000E
000E007FE00D1A80990C>I<FC00001C00001C00001C00001C00001C00001C00001C00001C0000
1C00001CF8001D0C001E0E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E00
1C0E001C0E001C0E00FF9FC0121A7F9915>104 D<18003C003C00180000000000000000000000
0000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091A80990A
>I<FC7C1F001D8E63801E0781C01E0781C01C0701C01C0701C01C0701C01C0701C01C0701C01C
0701C01C0701C01C0701C01C0701C01C0701C01C0701C0FF9FE7F81D107F8F20>109
D<FCF8001D0C001E0E001E0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E
001C0E001C0E00FF9FC012107F8F15>I<07E01C38300C700E6006E007E007E007E007E007E007
6006700E381C1C3807E010107F8F13>I<FCE01D701E701E201C001C001C001C001C001C001C00
1C001C001C001C00FFC00C107F8F0F>114 D<1F2060E04020C020C020F0007F003FC01FE000F0
80708030C030C020F0408F800C107F8F0F>I<0400040004000C000C001C003C00FFC01C001C00
1C001C001C001C001C001C001C201C201C201C201C200E4003800B177F960F>I<FC7E001C0E00
1C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C0E001C1E000C2E00
07CFC012107F8F15>I<FF1F803C06001C04001C04001E0C000E08000E08000710000710000790
0003A00003A00001C00001C00001C00000800011107F8F14>I<FF3F9F803C0E0700380E06001C
1604001C1704001E170C000E2308000E2388000F239800074190000741D00003C1E0000380E000
0380E0000180C0000100400019107F8F1C>I E /Fe 2 51 df<0C003C00CC000C000C000C000C
000C000C000C000C000C000C000C000C00FF8009107E8F0F>49 D<1F00618040C08060C0600060
006000C00180030006000C00102020207FC0FFC00B107F8F0F>I E /Ff
4 52 df<003000003000003000003000003000003000003000003000003000003000003000FFFF
FCFFFFFC0030000030000030000030000030000030000030000030000030000030000030001618
7E931B>43 D<03000700FF00070007000700070007000700070007000700070007000700070007
000700070007007FF00C157E9412>49 D<0F8030E040708030C038E03840380038007000700060
00C00180030006000C08080810183FF07FF0FFF00D157E9412>I<0FE030306018701C701C001C
00180038006007E000300018000C000E000EE00EE00EC00C401830300FE00F157F9412>I
E /Fg 8 83 df<07F0001FFE00383F007C1F80FE0FC0FE0FC0FE0FE0FE07E07C07E03807E0000F
E0000FC0000FC0001F80001F00003E0000780000F00000E00001C0000380600700600E00601C00
E01FFFC03FFFC07FFFC0FFFFC0FFFFC0131D7D9C1A>50 D<FFFFFE0000FFFFFFC00007E007F000
07E001F80007E000FC0007E0007E0007E0003F0007E0003F0007E0001F8007E0001F8007E0001F
8007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E000
1FC007E0001FC007E0001F8007E0001F8007E0001F8007E0003F0007E0003F0007E0007E0007E0
00FC0007E001F80007E007F000FFFFFFC000FFFFFE0000221F7E9E28>68
D<FFFFFFE0FFFFFFE007E007E007E001E007E000E007E0006007E0007007E0003007E0003007E0
603007E0603007E0600007E0E00007E1E00007FFE00007FFE00007E1E00007E0E00007E0600007
E0600007E0600007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E00000
FFFF8000FFFF80001C1F7E9E21>70 D<0007FC0200003FFF0E0000FE03DE0003F000FE0007E000
3E000FC0001E001F80001E003F00000E003F00000E007F000006007E000006007E00000600FE00
000000FE00000000FE00000000FE00000000FE00000000FE003FFFE0FE003FFFE07E00007E007E
00007E007F00007E003F00007E003F00007E001F80007E000FC0007E0007E0007E0003F000FE00
00FE01FE00003FFF8E000007FC0600231F7D9E29>I<FFFFFFFF07E007E007E007E007E007E007
E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0
07E0FFFFFFFF101F7E9E14>73 D<FFE000003FF8FFF000007FF807F000007F0006F80000DF0006
F80000DF0006F80000DF00067C00019F00067C00019F00063E00031F00063E00031F00061F0006
1F00061F00061F00060F800C1F00060F800C1F000607C0181F000607C0181F000607C0181F0006
03E0301F000603E0301F000601F0601F000601F0601F000600F8C01F000600F8C01F0006007D80
1F0006007D801F0006003F001F0006003F001F0006003F001F0006001E001F00FFF01E03FFF8FF
F00C03FFF82D1F7E9E32>77 D<001FF80000FFFF0001F81F8007E007E00FC003F01F8001F81F00
00F83F0000FC7F0000FE7E00007E7E00007EFE00007FFE00007FFE00007FFE00007FFE00007FFE
00007FFE00007FFE00007FFE00007F7E00007E7F0000FE7F0000FE3F0000FC3F8001FC1F8001F8
0FC003F007E007E001F81F8000FFFF00001FF800201F7D9E27>79 D<FFFFF80000FFFFFF000007
E01FC00007E007E00007E003F00007E003F00007E003F80007E003F80007E003F80007E003F800
07E003F00007E003F00007E007E00007E01FC00007FFFF000007FFFC000007E03E000007E01F00
0007E00F800007E00F800007E00FC00007E00FC00007E00FC00007E00FE00007E00FE00007E00F
E00007E00FE03007E007F03007E003F860FFFF01FFC0FFFF007F80241F7E9E27>82
D E /Fh 61 122 df<001000000800000400000600000200000300000300000300000100000180
000180000180000180000180000180000180000380000380000380000300000300000300000700
000700000600000600000E00000C00000C00001C0000180000380000300000700000600000E000
00C0000180000100000300000600000C0000180000300000600000800000112E80A113>41
D<1C3C3C3C3C040408081020204080060E7D840E>44 D<7FF0FFE07FE00C037D8A10>I<70F8F8
F0E005057B840E>I<00000040000000C000000180000001800000030000000300000006000000
060000000C0000001800000018000000300000003000000060000000C0000000C0000001800000
018000000300000003000000060000000C0000000C000000180000001800000030000000300000
0060000000C0000000C0000001800000018000000300000003000000060000000C0000000C0000
001800000018000000300000003000000060000000C0000000C0000000800000001A2D7FA117>
I<000F800030E000E07001C0700380300380380700380F00780F00780E00781E00781E00703C00
F03C00F03C00F03C00F07801E07801E07801E07801C07003C0F003C0F00380F00780F007007007
00700E00701C003038001870000FC000151F7C9D17>I<000200020006000E003C00DC031C001C
0038003800380038007000700070007000E000E000E000E001C001C001C001C003800380038003
800780FFF80F1E7B9D17>I<001F000061800080E00100E00200700220700420700410700820F0
0820F00820F00840E00881E00703C0000380000700000C00001800006000008000030000040000
0800401000401000802001807E030047FF0041FE0080FC00807800141F7C9D17>I<001F800060
E00080700100300200380420380420380410380420700460700380600000E00001C000030000FE
00001C00000600000700000780000780000780300780780780780780F00F00800F00401E00401C
0040380020E0001F8000151F7C9D17>I<0000600000E00000E00000E00001C00001C00001C000
0380000380000300000700000700000600000E00000C0000180000180000300000300000630000
C700008700010700030700060E00040E00080E003F8E00607C00801FC0001C00001C0000380000
380000380000380000700000700000600013277E9D17>I<00C06000FFC001FF8001FE00010000
010000020000020000020000020000040000047800058C000606000C0700080700000780000780
000780000780000F00700F00F00F00F00E00E01E00801C0080380080300040600061C0001F0000
131F7B9D17>I<08E0100BF01017F8201FF8603E19C0380E802000806001004003008003000006
00000E00000C00001C00001C0000380000380000700000700000F00000F00001E00001E00001E0
0003C00003C00003C00007C000078000078000030000141F799D17>55 D<001F000061800080C0
0100600300600600600600600600600E00C00F00800F818007C30007E40003F80001F80003FC00
047E00183F00300F00200700600700C00300C00300C00300800600800600C00C00C00800403000
3060001F8000131F7B9D17>I<001F0000718000C0C00180C00380E00700E00F00E00F01E01E01
E01E01E01E01E01E01C01C03C01C03C01C03C01C07C01C0F800C0F8006378003C700000F00000E
00000E00001C00601C00F03800F07000E0600080C0004380003E0000131F7B9D17>I<070F1F1F
0E0000000000000000000070F8F8F0E008147B930E>I<00000200000006000000060000000E00
00001E0000001E0000003F0000002F0000004F0000004F0000008F0000010F0000010F0000020F
0000020F0000040F00000C0F0000080F0000100F0000100F0000200F80003FFF800040078000C0
07800080078001000780010007800200078002000780060007801E000F80FF807FF81D207E9F22
>65 D<01FFFFC0001E00F0001E0078001E0038001E003C003C003C003C003C003C003C003C003C
0078007800780078007800F0007801E000F0078000FFFE0000F00F8000F003C001E001C001E001
E001E001E001E001E003C001E003C001E003C001E003C001C0078003C00780078007800F000780
1E000F007800FFFFE0001E1F7D9E20>I<0000FE0200078186001C004C0038003C0060003C00C0
001C01C0001803800018070000180F0000181E0000101E0000103C0000003C0000007800000078
0000007800000078000000F0000000F0000000F0000000F0000000F00000807000008070000080
700001003800010038000200180004000C001800060020000381C00000FE00001F217A9F21>I<
01FFFF80001E00E0001E0070001E0038001E001C003C001C003C000E003C000E003C000E007800
0E0078000E0078000E0078000E00F0001E00F0001E00F0001E00F0001E01E0003C01E0003C01E0
003C01E0007803C0007003C0007003C000E003C001C0078001C00780038007800E0007801C000F
007000FFFFC0001F1F7D9E22>I<01FFFFFE001E001C001E000C001E0004001E0004003C000400
3C0004003C0004003C00040078080800780800007808000078180000F0300000FFF00000F03000
00F0300001E0200001E0200001E0200001E0001003C0002003C0002003C0004003C00040078000
800780018007800100078007000F001F00FFFFFE001F1F7D9E1F>I<01FFFFFC001E0038001E00
18001E0008001E0008003C0008003C0008003C0008003C00080078001000780800007808000078
080000F0100000F0300000FFF00000F0300001E0200001E0200001E0200001E0200003C0000003
C0000003C0000003C00000078000000780000007800000078000000F800000FFF800001E1F7D9E
1E>I<0000FC040007030C001C00980030007800E0007801C00038038000300380003007000030
0E0000301E0000201E0000203C0000003C00000078000000780000007800000078000000F00000
00F000FFF0F0000780F0000780F0000F0070000F0070000F0070000F0070001E0038001E001800
3E001C002E000E00CC000383040000FC00001E217A9F23>I<01FFF3FFE0001F003E00001E003C
00001E003C00001E003C00003C007800003C007800003C007800003C007800007800F000007800
F000007800F000007800F00000F001E00000FFFFE00000F001E00000F001E00001E003C00001E0
03C00001E003C00001E003C00003C007800003C007800003C007800003C007800007800F000007
800F000007800F000007800F00000F801F0000FFF1FFE000231F7D9E22>I<01FFF0001F00001E
00001E00001E00003C00003C00003C00003C0000780000780000780000780000F00000F00000F0
0000F00001E00001E00001E00001E00003C00003C00003C00003C0000780000780000780000780
000F8000FFF800141F7D9E12>I<001FFF0000F80000F00000F00000F00001E00001E00001E000
01E00003C00003C00003C00003C0000780000780000780000780000F00000F00000F00000F0000
1E00001E00301E00781E00F83C00F83C00F0780080700040E00021C0001F000018207D9E18>I<
01FFF800001F0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000007800
0000780000007800000078000000F0000000F0000000F0000000F0000001E0000001E0000001E0
000001E0008003C0010003C0010003C0030003C00200078006000780060007800C0007801C000F
007800FFFFF800191F7D9E1D>76 D<01FE00007FC0001E0000FC00001E0000F800001700017800
00170001780000270002F00000270004F00000270004F00000270008F00000470009E000004700
11E00000470021E00000470021E00000870043C00000838043C00000838083C00000838083C000
0103810780000103820780000103820780000103840780000203840F00000203880F0000020390
0F00000203900F00000401E01E00000401E01E00000401C01E00000C01801E00001C01803E0000
FF8103FFC0002A1F7D9E29>I<01FF007FE0001F000F00001F0004000017800400001780040000
278008000023C008000023C008000023C008000041E010000041E010000041F010000040F01000
0080F0200000807820000080782000008078200001003C400001003C400001003C400001001E40
0002001E800002001E800002000F800002000F800004000F0000040007000004000700000C0007
00001C00020000FF80020000231F7D9E22>I<0001FC0000070700001C01C0003000E000E00060
01C000700380007007800038070000380E0000381E0000381C0000383C0000383C000038780000
78780000787800007878000078F00000F0F00000F0F00000E0F00001E0F00001C0F00003C07000
03807000070078000F0038001E0038003C001C0070000E00E0000783800001FC00001D217A9F23
>I<01FFFF80001E00E0001E0070001E0038001E003C003C003C003C003C003C003C003C003C00
78007800780078007800F0007800E000F003C000F00F0000FFFC0000F0000001E0000001E00000
01E0000001E0000003C0000003C0000003C0000003C00000078000000780000007800000078000
000F800000FFF000001E1F7D9E1F>I<01FFFF00001E03C0001E00E0001E0070001E0078003C00
78003C0078003C0078003C0078007800F0007800F0007801E0007801C000F0070000F01E0000FF
F00000F0380001E01C0001E01E0001E00E0001E00F0003C01E0003C01E0003C01E0003C01E0007
803C0007803C0807803C0807803C100F801C10FFF00C20000007C01D207D9E21>82
D<0007E040001C18C0003005800060038000C0038001C001800180010003800100038001000380
01000380000003C0000003C0000003F8000001FF800001FFE000007FF000001FF0000001F80000
00780000007800000038000000380020003800200038002000300060007000600060006000E000
7000C000E8038000C606000081F800001A217D9F1A>I<0FFFFFF01E0780E01807802010078020
20078020200F0020600F0020400F0020400F0020801E0040001E0000001E0000001E0000003C00
00003C0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F0
000000F0000001E0000001E0000001E0000001E0000003E00000FFFF00001C1F789E21>I<7FFC
1FF807C003C00780010007800100078001000F0002000F0002000F0002000F0002001E0004001E
0004001E0004001E0004003C0008003C0008003C0008003C000800780010007800100078001000
78001000F0002000F0002000F0002000F0004000F0004000700080007001000030020000380400
000C18000007E000001D20779E22>I<FFF007FC0F8000E00F0000C00F0000800F0001000F0001
000F0002000F0004000F0004000F80080007800800078010000780200007802000078040000780
400007808000078100000781000007C2000003C2000003C4000003C8000003C8000003D0000003
D0000003E0000003C0000003C000000380000001800000010000001E20779E22>I<FFF1FFC0FF
801F003E001C001F003C0018001F003C0010000F003C0010000F003C0020000F003C0020000F00
3E0040000F003E00C0000F005E0080000F005E0100000F009E0100000F019E0200000F011E0200
000F021E0400000F021E0400000F041E0800000F041E0800000F081E1000000F081E3000000F10
1E2000000F101E4000000F201E4000000F601E8000000FC01E80000007801F00000007801F0000
0007001E00000007001E00000006000C0000000600080000000400080000002920779E2D>I<00
FFF07FE0000F801F00000F001C00000F801000000780300000078020000007C040000003C08000
0003C100000003E200000001E400000001EC00000001F800000000F000000000F800000000F800
000000F8000000017C000000023C000000063C000000043E000000081E000000101E000000201F
000000400F000000800F000001800F8000010007800007000780001F000FC000FFC07FF800231F
7E9E22>I<00F1800389C00707800E03801C03803C0380380700780700780700780700F00E00F0
0E00F00E00F00E20F01C40F01C40703C40705C40308C800F070013147C9317>97
D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E380F380F700F
700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207B9F15>I<007E0001C100
0300800E07801E07801C07003C0200780000780000780000F00000F00000F00000F00000F00000
70010070020030040018380007C00011147C9315>I<0000780003F80000700000700000700000
700000E00000E00000E00000E00001C00001C000F1C00389C00707800E03801C03803C03803807
00780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C40308C800F07
0015207C9F17>I<007C01C207010E011C013C013802780C7BF07C00F000F000F000F000700070
0170023804183807C010147C9315>I<00007800019C00033C00033C000718000700000700000E
00000E00000E00000E00000E0001FFE0001C00001C00001C00001C000038000038000038000038
0000380000700000700000700000700000700000700000E00000E00000E00000E00000C00001C0
0001C0000180003180007B0000F300006600003C00001629829F0E>I<003C6000E27001C1E003
80E00700E00F00E00E01C01E01C01E01C01E01C03C03803C03803C03803C03803C07003C07001C
0F001C17000C2E0003CE00000E00000E00001C00001C00301C00783800F0700060E0003F800014
1D7E9315>I<01E0000FE00001C00001C00001C00001C000038000038000038000038000070000
070000071E000763000E81800F01C00E01C00E01C01C03801C03801C03801C0380380700380700
380700380E10700E20700C20701C20700C40E00CC060070014207D9F17>I<00C001E001E001C0
00000000000000000000000000000E003300230043804300470087000E000E000E001C001C001C
003840388030807080310033001C000B1F7C9E0E>I<01E0000FE00001C00001C00001C00001C0
000380000380000380000380000700000700000703C00704200E08E00E11E00E21E00E40C01C80
001D00001E00001FC00038E000387000387000383840707080707080707080703100E03100601E
0013207D9F15>107 D<03C01FC0038003800380038007000700070007000E000E000E000E001C
001C001C001C0038003800380038007000700070007100E200E200E200E200640038000A207C9F
0C>I<1C0F80F0002630C318004740640C004780680E004700700E004700700E008E00E01C000E
00E01C000E00E01C000E00E01C001C01C038001C01C038001C01C038001C01C070803803807100
3803806100380380E10038038062007007006600300300380021147C9325>I<1C0F802630C047
40604780604700704700708E00E00E00E00E00E00E00E01C01C01C01C01C01C01C038438038838
03083807083803107003303001C016147C931A>I<007C0001C3000301800E01C01E01C01C01E0
3C01E07801E07801E07801E0F003C0F003C0F003C0F00780F00700700F00700E00301800187000
07C00013147C9317>I<01C1E002621804741C04781C04701E04701E08E01E00E01E00E01E00E0
1E01C03C01C03C01C03C01C0380380780380700380E003C1C0072380071E000700000700000E00
000E00000E00000E00001C00001C0000FFC000171D809317>I<00F0400388C00705800E03801C
03803C0380380700780700780700780700F00E00F00E00F00E00F00E00F01C00F01C00703C0070
5C0030B8000F380000380000380000700000700000700000700000E00000E0000FFE00121D7C93
15>I<1C1E002661004783804787804707804703008E00000E00000E00000E00001C00001C0000
1C00001C000038000038000038000038000070000030000011147C9313>I<00FC030206010C03
0C070C060C000F800FF007F803FC003E000E700EF00CF00CE008401020601F8010147D9313>I<
018001C0038003800380038007000700FFF007000E000E000E000E001C001C001C001C00380038
0038003820704070407080708031001E000C1C7C9B0F>I<0E00C03300E02301C04381C04301C0
4701C08703800E03800E03800E03801C07001C07001C07001C07101C0E20180E20180E201C1E20
0C264007C38014147C9318>I<0E03803307802307C04383C04301C04700C08700800E00800E00
800E00801C01001C01001C01001C02001C02001C04001C04001C08000E300003C00012147C9315
>I<0E00C1C03300E3C02301C3E04381C1E04301C0E04701C060870380400E0380400E0380400E
0380401C0700801C0700801C0700801C0701001C0701001C0602001C0F02000C0F04000E130800
03E1F0001B147C931E>I<0383800CC4401068E01071E02071E02070C040E00000E00000E00000
E00001C00001C00001C00001C040638080F38080F38100E5810084C60078780013147D9315>I<
0E00C03300E02301C04381C04301C04701C08703800E03800E03800E03801C07001C07001C0700
1C07001C0E00180E00180E001C1E000C3C0007DC00001C00001C00003800F03800F07000E06000
C0C0004380003E0000131D7C9316>I E /Fi 14 113 df<FFFFFFC0FFFFFFC01A027C8B23>0
D<70F8F8F87005057C8D0D>I<400004C0000C6000183000301800600C00C00601800303000186
0000CC0000780000300000300000780000CC000186000303000601800C00C01800603000306000
18C0000C40000416187A9623>I<00020000000600000006000000060000000600000006000000
0600000006000000060000000600000006000000060000000600000006000000060000FFFFFFF0
FFFFFFF00006000000060000000600000006000000060000000600000006000000060000000600
0000060000000600000006000000060000FFFFFFF0FFFFFFF01C207D9E23>6
D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C01012
7D9317>15 D<000000C0000003C000000F0000003C000000F0000003C00000070000001C000000
78000001E00000078000001E00000078000000E0000000780000001E0000000780000001E00000
00780000001C0000000700000003C0000000F00000003C0000000F00000003C0000000C0000000
000000000000000000000000000000000000000000000000007FFFFF80FFFFFFC01A247C9C23>
20 D<0FC000101FF000103FF80010703E0030E00F0070C007C0E08001FFC08000FF8080003F00
00000000000000000FC000101FF000103FF80010703E0030E00F0070C007C0E08001FFC08000FF
8080003F001C147D9523>25 D<003FF800FFF803C0000700000C00001800003000003000006000
00600000C00000C00000C00000FFFFF8FFFFF8C00000C00000C000006000006000003000003000
001800000C000007000003C00000FFF8003FF8151C7C981E>50 D<00FE0003FF800F01E01C0070
30001860000C60000CC00006C00006C00006C00006C00006C00006C00006C00006C00006C00006
C00006C00006C00006C00006C00006C00006C00006C00006C00006C00006400002171C7D9A1E>
92 D<7FE0FFE0C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000
C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C000C0
00C000C000C000C000C000C000C00040000B2E78A114>100 D<FFE0FFE0006000600060006000
600060006000600060006000600060006000600060006000600060006000600060006000600060
006000600060006000600060006000600060006000600060006000600060006000600060006000
200B2E80A114>I<000F0038006000E001C001C001C001C001C001C001C001C001C001C001C001
C001C001C001C0038007001E00F8001E000700038001C001C001C001C001C001C001C001C001C0
01C001C001C001C001C001C000E000600038000F102D7DA117>I<F8001E000700038001C001C0
01C001C001C001C001C001C001C001C001C001C001C001C001C000E000600038000F0038006000
E001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C0038007001E00F800
102D7DA117>I<0000000008000000001800000000300000000030000000006000000000600000
0000C000000000C000000001800000000180000000030000000003000000000600000000060000
00000C000000000C00000000180000000018000000003000000000300000000060000000006000
000000C000060000C0001E000180002F000180004F000300008780030000078006000003C00600
0003C00C000003C00C000001E018000001E018000000F030000000F03000000078600000007860
0000003CC00000003CC00000001F800000001F800000000F000000000F00000000060000000006
000000252E7E8126>112 D E /Fj 22 117 df<70F8FCFC74040404080810102040060E7C840D>
59 D<000100030003000600060006000C000C000C001800180018003000300030006000600060
00C000C000C00180018001800300030003000600060006000C000C000C00180018001800300030
003000600060006000C000C000C000102D7DA117>61 D<E0000000780000001E00000007800000
01E0000000780000001C0000000700000003C0000000F00000003C0000000F00000003C0000003
C000000F0000003C000000F0000003C00000070000001C00000078000001E00000078000001E00
000078000000E00000001A1A7C9723>I<0000FE0200078186001C004C0038003C0060003C00C0
001C01C0001803800018070000180F0000181E0000101E0000103C0000003C0000007800000078
0000007800000078000000F0000000F0000000F0000000F0000000F00000807000008070000080
700001003800010038000200180004000C001800060020000381C00000FE00001F217E9F20>67
D<00007E0100038183000E00460038002E0070001E00E0000E01C0000C0380000C0700000C0F00
000C1E0000081E0000083C0000003C00000078000000780000007800000078000000F0000000F0
007FFCF00001E0F00001E0F00003C0700003C0700003C0700003C038000780380007801C000F80
0C000B80060033000380C100007F000020217E9F24>71 D<0001FC0000070700001C01C0003000
E000E0006001C000700380007007800038070000380E0000381E0000381C0000383C0000383C00
003878000078780000787800007878000078F00000F0F00000F0F00000E0F00001E0F00001C0F0
0003C0700003807000070078000F0038001E0038003C001C0070000E00E0000783800001FC0000
1D217E9F23>79 D<00FFFFC0000F0070000F0038000F001C000F001E001E001E001E001E001E00
1E001E001E003C003C003C003C003C0078003C0070007800E000780380007FFE000078000000F0
000000F0000000F0000000F0000001E0000001E0000001E0000001E0000003C0000003C0000003
C0000003C0000007C00000FFFC00001F1F7E9E1D>I<0007E0800018118000300B000060070000
C0070001C0030001800200038002000380020003800200038000000380000003C0000003F80000
03FF800001FFC00000FFE000003FF0000003F0000000F000000070000000700000007000200070
0020007000200060006000E0006000C0006001C00070018000E8030000C60E000081F800001921
7D9F1C>83 D<0FFFFFFC1E03C0381803C0181003C0082003C00820078008600780084007800840
078008800F0010000F0000000F0000000F0000001E0000001E0000001E0000001E0000003C0000
003C0000003C0000003C00000078000000780000007800000078000000F0000000F0000000F000
0000F0000001F000007FFFC0001E1F7F9E1B>I<00FFF83FF8000FC00F80000F80060000078004
000007C008000003C010000003C020000003E040000001E080000001F100000000F300000000F6
00000000FC0000000078000000007C000000007C000000007C00000000BE000000011E00000002
1E000000061F0000000C0F000000080F800000100780000020078000004007C000008003C00001
0003E000030003E0000F0007E000FFE01FFE00251F7F9E26>88 D<FFF801FF0F8000780F800060
0780004007C0008007C0018003C0010003E0020003E0040001E0080001F0180000F0100000F020
0000F8400000788000007D0000007D0000003E0000003C0000003C000000380000007800000078
0000007800000070000000F0000000F0000000F0000000F0000001E000003FFF0000201F7F9E1A
>I<00007C0000CE00019E00039E00030C000700000700000700000700000E00000E00000E0000
FFF0000E00000E00001C00001C00001C00001C00001C0000380000380000380000380000380000
700000700000700000700000700000E00000E00000E00000E00000C00001C000318000798000F3
00006200003C000017297E9F16>102 D<00E001E001E000C00000000000000000000000000000
0E00130023804380438043808700070007000E000E001C001C001C20384038403840388019000E
000B1F7E9E10>105 D<0000C00001E00001E00001C00000000000000000000000000000000000
00000000001E00006300004380008380010380010380020700000700000700000700000E00000E
00000E00000E00001C00001C00001C00001C000038000038000038000038000070000070003070
0078E000F1C0006380003E00001328819E13>I<01E0000FE00001C00001C00001C00001C00003
80000380000380000380000700000700000701E00706100E08700E10F00E20F00E40601C80001D
00001E00001FC000387000383800383800381C20703840703840703840701880E01880600F0014
207E9F18>I<1E07C07C00231861860023A032030043C034030043803803804380380380870070
07000700700700070070070007007007000E00E00E000E00E00E000E00E00E000E00E01C101C01
C01C201C01C038201C01C038401C01C0184038038018801801800F0024147E9328>109
D<1E07802318C023A06043C0704380704380708700E00700E00700E00700E00E01C00E01C00E01
C00E03821C03841C07041C07081C03083803101801E017147E931B>I<03C1E004621804741C08
781C08701E08701E10E01E00E01E00E01E00E01E01C03C01C03C01C03C01C03803807803807003
80E003C1C0072380071E000700000700000E00000E00000E00000E00001C00001C0000FFC00017
1D819317>112 D<00F0400388C00705800E03801C03803C0380380700780700780700780700F0
0E00F00E00F00E00F00E00F01C00F01C00703C00705C0030B8000F380000380000380000700000
700000700000700000E00000E0000FFE00121D7E9314>I<1E1E0023210023C38043C780438780
4383008700000700000700000700000E00000E00000E00000E00001C00001C00001C00001C0000
38000018000011147E9315>I<007C018203010603060706060E00078007F803FC01FE001F0007
7007F006F006E004400820301FC010147E9315>I<00C000E001C001C001C001C003800380FFF8
038007000700070007000E000E000E000E001C001C001C001C10382038203820384018800F000D
1C7F9B10>I E /Fk 45 123 df<000FF000007FFC0001F80E0003E01F0007C03F000F803F000F
803F000F801E000F800C000F8000000F8000000F8000000F800000FFFFFF00FFFFFF000F801F00
0F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F
000F801F000F801F000F801F000F801F000F801F000F801F000F801F007FF0FFE07FF0FFE01B23
7FA21F>12 D<387CFEFEFE7C3807077C8610>46 D<00180000780001F800FFF800FFF80001F800
01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800
01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE0
13207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F838
03F80003F80003F00003F00007E00007C0000F80001F00003E0000380000700000E01801C01803
80180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C>I<00FE0007FFC0
0F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003E00007C0001F8001FE00
01FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC
7801F81E07F00FFFC001FE0017207E9F1C>I<0000E00001E00003E00003E00007E0000FE0001F
E0001FE00037E00077E000E7E001C7E00187E00307E00707E00E07E00C07E01807E03807E07007
E0E007E0FFFFFEFFFFFE0007E00007E00007E00007E00007E00007E00007E000FFFE00FFFE1720
7E9F1C>I<1000201E01E01FFFC01FFF801FFF001FFE001FF8001BC00018000018000018000018
000019FC001FFF001E0FC01807E01803E00003F00003F00003F80003F83803F87C03F8FE03F8FE
03F8FC03F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>I<000070000000007000
000000F800000000F800000000F800000001FC00000001FC00000003FE00000003FE00000003FE
00000006FF000000067F0000000E7F8000000C3F8000000C3F800000183FC00000181FC0000038
1FE00000300FE00000300FE00000600FF000006007F00000E007F80000FFFFF80000FFFFF80001
8001FC00018001FC00038001FE00030000FE00030000FE000600007F000600007F00FFE00FFFF8
FFE00FFFF825227EA12A>65 D<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007
F0007E0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE00
07F000FC0007F003F80007FFFFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F
8007F0001F8007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F000
3F8007F0003F8007F0007F0007F001FE00FFFFFFF800FFFFFFC00022227EA128>I<0003FE0080
001FFF818000FF01E38001F8003F8003E0001F8007C0000F800F800007801F800007803F000003
803F000003807F000001807E000001807E00000180FE00000000FE00000000FE00000000FE0000
0000FE00000000FE00000000FE00000000FE000000007E000000007E000001807F000001803F00
0001803F000003801F800003000F8000030007C000060003F0000C0001F800380000FF00F00000
1FFFC0000003FE000021227DA128>I<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F000
3F0007F0001F8007F0000FC007F00007E007F00007E007F00007F007F00003F007F00003F007F0
0003F007F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807
F00003F807F00003F807F00003F007F00003F007F00003F007F00007E007F00007E007F0000FC0
07F0001F8007F0003F0007F0007E0007F003FC00FFFFFFF000FFFFFF800025227EA12B>I<0003
FE0040001FFFC0C0007F00F1C001F8003FC003F0000FC007C00007C00FC00003C01F800003C03F
000001C03F000001C07F000000C07E000000C07E000000C0FE00000000FE00000000FE00000000
FE00000000FE00000000FE00000000FE00000000FE000FFFFC7E000FFFFC7F00001FC07F00001F
C03F00001FC03F00001FC01F80001FC00FC0001FC007E0001FC003F0001FC001FC003FC0007F80
E7C0001FFFC3C00003FF00C026227DA12C>71 D<FFFFE0FFFFE003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800FF
FFE0FFFFE013227FA115>73 D<FFFFE000FFFFE00007F0000007F0000007F0000007F0000007F0
000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007
F0000007F0000007F0000007F0000007F0000007F0001807F0001807F0001807F0001807F00038
07F0003807F0007007F0007007F000F007F001F007F007F0FFFFFFF0FFFFFFF01D227EA122>76
D<FFF000000FFFFFF800001FFF07F800001FE006FC000037E006FC000037E006FC000037E0067E
000067E0067E000067E0063F0000C7E0063F0000C7E0061F800187E0061F800187E0060FC00307
E0060FC00307E0060FC00307E00607E00607E00607E00607E00603F00C07E00603F00C07E00601
F81807E00601F81807E00601F81807E00600FC3007E00600FC3007E006007E6007E006007E6007
E006003FC007E006003FC007E006001F8007E006001F8007E006001F8007E006000F0007E0FFF0
0F00FFFFFFF00600FFFF30227EA135>I<FFF8001FFEFFFC001FFE07FC0000C007FE0000C006FF
0000C0067F8000C0063FC000C0061FE000C0060FE000C0060FF000C00607F800C00603FC00C006
01FE00C00600FE00C00600FF00C006007F80C006003FC0C006001FE0C006000FF0C0060007F0C0
060007F8C0060003FCC0060001FEC0060000FFC00600007FC00600007FC00600003FC00600001F
C00600000FC006000007C006000003C006000003C0FFF00001C0FFF00000C027227EA12C>I<00
07FC0000003FFF800000FC07E00003F001F80007E000FC000FC0007E001F80003F001F80003F00
3F00001F803F00001F807F00001FC07E00000FC07E00000FC0FE00000FE0FE00000FE0FE00000F
E0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00000FC07F0000
1FC07F00001FC03F00001F803F80003F801F80003F000FC0007E0007E000FC0003F001F80000FC
07E000003FFF80000007FC000023227DA12A>I<FFFFFF00FFFFFFE007F007F007F001FC07F000
FC07F0007E07F0007E07F0007F07F0007F07F0007F07F0007F07F0007F07F0007E07F0007E07F0
00FC07F001FC07F007F007FFFFE007FFFF0007F0000007F0000007F0000007F0000007F0000007
F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000FFFF8000FFFF8000
20227EA126>I<FFFFFE0000FFFFFFC00007F007F00007F001F80007F000FC0007F0007E0007F0
007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FC0007
F001F80007F007F00007FFFFC00007FFFF800007F00FE00007F007F00007F003F80007F001FC00
07F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
0607F000FE0607F000FF0CFFFF803FF8FFFF800FF027227EA12A>82 D<01FC0407FF8C1F03FC3C
007C7C003C78001C78001CF8000CF8000CFC000CFC0000FF0000FFE0007FFF007FFFC03FFFF01F
FFF80FFFFC03FFFE003FFE0003FF00007F00003F00003FC0001FC0001FC0001FE0001EE0001EF0
003CFC003CFF00F8C7FFE080FF8018227DA11F>I<7FFFFFFF807FFFFFFF807E03F80F807803F8
07807003F803806003F80180E003F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003
F800C00003F800000003F800000003F800000003F800000003F800000003F800000003F8000000
03F800000003F800000003F800000003F800000003F800000003F800000003F800000003F80000
0003F800000003F800000003F800000003F800000003F8000003FFFFF80003FFFFF80022227EA1
27>I<FFFF803FFCFFFF803FFC07F000018007F000018007F000018007F000018007F000018007
F000018007F000018007F000018007F000018007F000018007F000018007F000018007F0000180
07F000018007F000018007F000018007F000018007F000018007F000018007F000018007F00001
8007F000018007F000018007F000018003F000030003F800030001F800060000FC000E00007E00
1C00003F80F800000FFFE0000001FF000026227EA12B>I<07FC001FFF803F07C03F03E03F01E0
3F01F01E01F00001F00001F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01F0
7E02F07E0CF81FF87F07E03F18167E951B>97 D<FF000000FF0000001F0000001F0000001F0000
001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0FE0001F3F
F8001FF07C001F801E001F001F001F000F801F000F801F000FC01F000FC01F000FC01F000FC01F
000FC01F000FC01F000FC01F000FC01F000F801F001F801F801F001FC03E001EE07C001C3FF800
180FC0001A237EA21F>I<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC
0000FC0000FC0000FC0000FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE0014
167E9519>I<0001FE000001FE0000003E0000003E0000003E0000003E0000003E0000003E0000
003E0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E003E003E00
7E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E
007C003E007C003E003E007E001E00FE000F83BE0007FF3FC001FC3FC01A237EA21F>I<00FE00
07FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC0000
7C00007C00007E00003E00181F00300FC07003FFC000FF0015167E951A>I<003F8000FFC001E3
E003C7E007C7E00F87E00F83C00F80000F80000F80000F80000F80000F8000FFFC00FFFC000F80
000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80
000F80000F80000F80000F80007FF8007FF80013237FA211>I<03FC1E0FFF7F1F0F8F3E07CF3C
03C07C03E07C03E07C03E07C03E07C03E03C03C03E07C01F0F801FFF0013FC0030000030000038
00003FFF801FFFF00FFFF81FFFFC3800FC70003EF0001EF0001EF0001EF0001E78003C7C007C3F
01F80FFFE001FF0018217E951C>I<FF000000FF0000001F0000001F0000001F0000001F000000
1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F07E0001F1FF8001F307C
001F403C001F803E001F803E001F003E001F003E001F003E001F003E001F003E001F003E001F00
3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00FFE1FFC0FFE1FFC01A
237EA21F>I<1C003F007F007F007F003F001C000000000000000000000000000000FF00FF001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0
0B247EA310>I<FF000000FF0000001F0000001F0000001F0000001F0000001F0000001F000000
1F0000001F0000001F0000001F0000001F0000001F00FF801F00FF801F0038001F0060001F01C0
001F0380001F0700001F0E00001F1C00001F7E00001FFF00001FCF00001F0F80001F07C0001F03
E0001F01E0001F01F0001F00F8001F007C001F003C00FFE0FFC0FFE0FFC01A237EA21E>107
D<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B237EA210>I<
FF07F007F000FF1FFC1FFC001F303E303E001F403E403E001F801F801F001F801F801F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F00FFE0FFE0FFE0FFE0FFE0FFE02B167E9530>I<FF07E000FF1FF8001F307C001F403C001F
803E001F803E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
1F003E001F003E001F003E001F003E001F003E001F003E00FFE1FFC0FFE1FFC01A167E951F>I<
00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007E
FC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C>I<FF0FE000FF
3FF8001FF07C001F803E001F001F001F001F801F001F801F000FC01F000FC01F000FC01F000FC0
1F000FC01F000FC01F000FC01F000FC01F001F801F001F801F803F001FC03E001FE0FC001F3FF8
001F0FC0001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F000000FFE0
0000FFE000001A207E951F>I<00FE030007FF87000FC1C7001F006F003F003F007E003F007E00
1F007C001F00FC001F00FC001F00FC001F00FC001F00FC001F00FC001F00FC001F007E001F007E
001F003E003F001F007F000FC1DF0007FF9F0001FC1F0000001F0000001F0000001F0000001F00
00001F0000001F0000001F0000001F000000FFE00000FFE01B207E951E>I<FE1F00FE3FC01E67
E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00001F00001F00001F00001F00
001F00001F00001F00001F0000FFF000FFF00013167E9517>I<0FF3003FFF00781F00600700E0
0300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E00380E0
0380F00700FC0E00EFFC00C7F00011167E9516>I<018000018000018000018000038000038000
0780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F80000F8000
0F80000F80000F80000F80000F81800F81800F81800F81800F81800F830007C30003FE0000F800
11207F9F16>I<FF01FE00FF01FE001F003E001F003E001F003E001F003E001F003E001F003E00
1F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F007E
001F00FE000F81BE0007FF3FC001FC3FC01A167E951F>I<FFE01FE0FFE01FE00F8006000F8006
000FC00E0007C00C0007E01C0003E0180003E0180001F0300001F0300000F8600000F86000007C
C000007CC000007FC000003F8000003F8000001F0000001F0000000E0000000E00001B167F951E
>I<FFE7FF07F8FFE7FF07F81F007800C00F807801800F807C01800F807C018007C07E030007C0
DE030007E0DE070003E0DF060003E18F060001F18F0C0001F38F8C0001FB079C0000FB07D80000
FE03D800007E03F000007E03F000007C01F000003C01E000003800E000001800C00025167F9528
>I<7FFFF07FFFF07C03E07007C0600FC0E01F80C01F00C03E00C07E0000FC0000F80001F00003
F03007E03007C0300F80701F80703F00603E00E07C03E0FFFFE0FFFFE014167E9519>122
D E /Fl 61 126 df<007000F001E003C007800F001E001C00380038007000700070007000E000
E000E000E000E000E000E000E0007000700070007000380038001C001E000F00078003C001F000
F000700C24799F18>40 D<6000F00078003C001E000F000780038001C001C000E000E000E000E0
0070007000700070007000700070007000E000E000E000E001C001C0038007800F001E003C0078
00F00060000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC00
07F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D9718>
I<1C3E7E7F3F1F070E1E7CF860080C788518>44 D<7FFF00FFFF80FFFF807FFF0011047D8F18>
I<01F00007FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000
E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE
0007FC0001F000131C7E9B18>48 D<01800380038007800F803F80FF80FB804380038003800380
03800380038003800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>I<
03F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001C00001C0
0003C0000780000F00001E00003C0000780000F00001E00007C0000F80001E00E03C00E07FFFE0
FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C07801C03001C00001C00003
C0000380000F0003FF0003FE0003FF000007800003C00001C00000E00000E00000E0F000E0F000
E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B18>I<001F00003F0000770000770000
E70001E70001C7000387000787000707000E07001E07003C0700380700780700F00700FFFFF8FF
FFF8FFFFF8000700000700000700000700000700000700007FF000FFF8007FF0151C7F9B18>I<
1FFF803FFF803FFF803800003800003800003800003800003800003800003800003BF8003FFE00
3FFF003C07801803C00001C00000E00000E06000E0F000E0F000E0E001C07003C07C0F803FFF00
1FFC0003F000131C7E9B18>I<007E0001FF0007FF800F83C01E03C01C03C03801803800007000
00700000E1F800E7FE00FFFF00FE0780F803C0F001C0F000E0E000E0F000E07000E07000E07000
E03801C03C03C01E07800FFF0007FE0001F800131C7E9B18>I<3078FCFC783000000000000000
003078FCFC78300614779318>58 D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78
F060071A789318>I<000300000780001F80003F00007E0001FC0003F00007E0001FC0003F0000
7E0000FC0000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F80000780
00030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFF
E0FFFFE07FFFC0130C7E9318>I<00700000F80000F80000D80000D80001DC0001DC0001DC0001
8C00038E00038E00038E00038E000306000707000707000707000707000FFF800FFF800FFF800E
03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65 D<FFFC00FFFF00FFFF801C03
C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00
E01C00F01C00701C00701C00701C00701C00F01C00E01C03E0FFFFC0FFFF80FFFE00141C7F9B18
>I<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E07000E0700000E00000E00000E0
0000E00000E00000E00000E00000E000007000007000E07000E03800E03C00E01E01C00F07C007
FF8003FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E0
1C00E01C00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00E0
1C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00
701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E
001C0E001C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18
>I<01F1C003FDC00FFFC01F0FC01C03C03803C03801C07001C07001C0700000E00000E00000E0
0000E00000E00000E00FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC00F
FFC003FDC001F1C0141C7E9B18>71 D<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01
C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01
C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B
18>I<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00700E0070
7FFFF0FFFFF07FFFF0141C7F9B18>76 D<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E03B
8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E03870E03870E03800E038
00E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F0
1D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C0
1C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F
9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E003
80E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780700700780F
007FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C
00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C
00001C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<7FFFF8FFFFF8FFFFF8
E07038E07038E07038E07038007000007000007000007000007000007000007000007000007000
00700000700000700000700000700000700000700000700000700007FF0007FF0007FF00151C7F
9B18>84 D<FF07F8FF07F8FF07F81C01C01C01C01C01C01C01C00E03800E03800E03800E03800F
0780070700070700070700070700038E00038E00038E00038E00018C0001DC0001DC0001DC0000
D80000F80000F800007000151C7F9B18>86 D<7F8FE07F9FE07F8FE00E07000F0700070E00078E
00039C0003DC0001F80001F80000F00000F00000700000F00000F80001F80001DC00039E00038E
00070F000707000E07800E03801E03C07F07F0FF8FF87F07F0151C7F9B18>88
D<FFF8FFF8FFF8E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFF8FFF8FFF80D24779F18
>91 D<FFF8FFF8FFF8003800380038003800380038003800380038003800380038003800380038
003800380038003800380038003800380038003800380038003800380038FFF8FFF8FFF80D247F
9F18>93 D<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E00300E
0000070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F003FFF
F01FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E00000E0000
0E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E0038
0F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E07
80380300700000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03
C01FFF8007FF0001FC0012147D9318>I<001F80003F80001F8000038000038000038000038000
038003E3800FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380E00380E0
0380700780700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE00
3E0F00380780700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C0
3E03C01FFF8007FF0001FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C0
0001C0007FFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80F
FFF81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E00038
00001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800F07E03F01F
FFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00000E0000
0E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C0
000380000000000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FFFF00111D
7C9C18>I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E3FF00E7FF00E3FF00E
07800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E07000E03800E
03C0FFC7F8FFC7F8FFC7F8151C7F9B18>107 D<7FE000FFE0007FE00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000FFFB
F8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C
1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F0019148193
18>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF
003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07
803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E
00700E00380E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E
3E000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318>I<
7F87E0FF9FF07FBFF803F87803F03003E00003C00003C000038000038000038000038000038000
0380000380000380000380007FFE00FFFF007FFE0015147F9318>114 D<07F7003FFF007FFF00
780F00E00700E00700E007007C00007FE0001FFC0003FE00001F00600780E00380E00380F00380
F80F00FFFF00FFFC00E7F00011147D9318>I<0180000380000380000380000380007FFFC0FFFF
C0FFFFC00380000380000380000380000380000380000380000380000380000380400380E00380
E00380E001C1C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03
FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03800E03800E0380070700070700
070700038E00038E00038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318>
I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9
C00DDD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>I<7F8FF07F9FF07F8FF007
0700078E00039E0001DC0001F80000F80000700000F00000F80001DC00039E00038E000707000F
07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E0380070380
070700070700038700038600038E0001CE0001CE0000CC0000CC0000DC00007800007800007800
00700000700000700000F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<3FFF
F07FFFF07FFFF07001E07003C0700780000F00001E00003C0000F80001F00003C0000780000F00
701E00703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007FE000780000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00001E0007FC000FF
8000FF80007FC00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E000007800007FE0001FE00007E013247E9F18>I<7C0000FF0000FFC00003C00000E000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000F000007FC0003FE0
003FE0007FC000F00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000
00E00003C000FFC000FF00007C000013247E9F18>125 D E /Fm 30 121
df<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000
FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7F
FFFE17277BA622>49 D<00FF800003FFF0000FFFFC001F03FE003800FF007C007F80FE003FC0FF
003FC0FF003FE0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F80
00007F000000FE000000FC000001F8000003F0000003E00000078000000F0000001E0000003C00
E0007000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFF
FF80FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC000F81FE001F00FF003F80
FF003F807F803F807F803F807F801F807F800F007F800000FF000000FF000000FE000001FC0000
01F8000007F00000FFC00000FFF0000001FC0000007E0000007F0000007F8000003FC000003FC0
00003FE000003FE03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC07E007F807C007F
003F01FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E0000003E0000007E
000000FE000000FE000001FE000003FE0000077E00000E7E00000E7E00001C7E0000387E000070
7E0000E07E0000E07E0001C07E0003807E0007007E000E007E000E007E001C007E0038007E0070
007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE00
0000FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<0C0003000F803F00
0FFFFE000FFFFC000FFFF8000FFFF0000FFFE0000FFFC0000FFE00000E0000000E0000000E0000
000E0000000E0000000E0000000E7FC0000FFFF8000F80FC000E003E000C003F0000001F800000
1FC000001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC
001FC078003F8078003F803C007F001F01FE000FFFF80003FFF00000FF80001B277DA622>I<1C
003E007F00FF80FF80FF807F003E001C000000000000000000000000000000000000001C003E00
7F00FF80FF80FF807F003E001C00091B7B9A13>58 D<000003800000000007C00000000007C000
0000000FE0000000000FE0000000000FE0000000001FF0000000001FF0000000003FF800000000
3FF8000000003FF80000000073FC0000000073FC00000000F3FE00000000E1FE00000000E1FE00
000001C0FF00000001C0FF00000003C0FF80000003807F80000007807FC0000007003FC0000007
003FC000000E003FE000000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFFF8
00003FFFFFF80000780007FC0000700003FC0000700003FC0000E00001FE0000E00001FE0001E0
0001FF0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834
>65 D<00003FF001800003FFFE0380000FFFFF8780003FF007DF8000FF8001FF8001FE00007F80
03FC00003F8007F000001F800FF000000F801FE0000007801FE0000007803FC0000007803FC000
0003807FC0000003807F80000003807F8000000000FF8000000000FF8000000000FF8000000000
FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000007F8000
0000007F80000000007FC0000003803FC0000003803FC0000003801FE0000003801FE000000700
0FF00000070007F000000E0003FC00001E0001FE00003C0000FF8000F800003FF007E000000FFF
FFC0000003FFFF000000003FF8000029297CA832>67 D<00007FE003000003FFFC0700001FFFFF
0F00003FF00FFF0000FF8001FF0001FE0000FF0003F800003F0007F000003F000FF000001F001F
E000000F001FE000000F003FC000000F003FC0000007007FC0000007007F80000007007F800000
0000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF
8000000000FF8000000000FF8001FFFFF87F8001FFFFF87F8001FFFFF87FC00000FF003FC00000
FF003FC00000FF001FE00000FF001FE00000FF000FF00000FF0007F00000FF0003F80000FF0001
FE0000FF0000FF8001FF00003FF007BF00001FFFFF1F000003FFFE0F0000007FF003002D297CA8
36>71 D<FFFFFCFFFFFCFFFFFC01FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
00FFFFFCFFFFFCFFFFFC16297EA81A>73 D<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003
FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
0003FC00000003FC00000003FC00000003FC00000003FC0001C003FC0001C003FC0001C003FC00
01C003FC0003C003FC00038003FC00038003FC00078003FC00078003FC000F8003FC000F8003FC
001F8003FC007F8003FC01FF00FFFFFFFF00FFFFFFFF00FFFFFFFF0022297DA829>76
D<FFFFFFF800FFFFFFFF00FFFFFFFFC003FC003FE003FC000FF003FC0007F803FC0007FC03FC00
03FC03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC
0003FC03FC0007FC03FC0007F803FC000FF003FC003FE003FFFFFF8003FFFFFE0003FC00000003
FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000FFFFF000
00FFFFF00000FFFFF0000027297DA82F>80 D<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC
007FE00003FC000FF00003FC0007F80003FC0007FC0003FC0003FC0003FC0003FE0003FC0003FE
0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FC0003FC0007F80003FC
0007F80003FC001FE00003FC007FC00003FFFFFE000003FFFFF0000003FC00FC000003FC007F00
0003FC003F800003FC003F800003FC001FC00003FC001FE00003FC001FE00003FC001FE00003FC
001FE00003FC001FE00003FC001FF00003FC001FF00003FC001FF00003FC001FF00703FC001FF8
0703FC000FF80703FC0007F80EFFFFF003FE1CFFFFF001FFF8FFFFF0003FF030297DA834>82
D<007F806003FFF0E007FFF9E00F807FE01F001FE03E0007E07C0003E07C0001E0FC0001E0FC00
01E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC001FFFFE000F
FFFF8007FFFFC003FFFFE000FFFFE00007FFF000007FF000000FF8000007F8000003F8600001F8
E00001F8E00001F8E00001F8F00001F0F00001F0F80003F0FC0003E0FF0007C0FFE01F80F3FFFF
00E0FFFE00C01FF0001D297CA826>I<01FF800007FFF0000F81F8001FC07E001FC07E001FC03F
000F803F8007003F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F80
3F803F003F807F003F80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F839FFC0F
FF0FFC01FC03FC1E1B7E9A21>97 D<001FF80000FFFE0003F01F0007E03F800FC03F801F803F80
3F801F007F800E007F0000007F000000FF000000FF000000FF000000FF000000FF000000FF0000
00FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E0070003F01E0000FF
FC00001FE0001A1B7E9A1F>99 D<00003FF80000003FF80000003FF800000003F800000003F800
000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003F8
00000003F800000003F800001FE3F80000FFFBF80003F03FF80007E00FF8000FC007F8001F8003
F8003F8003F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800FF0003F800FF00
03F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F0003F8003F8003F8001F
8003F8000F8007F80007C00FF80003F03BFF8000FFF3FF80003FC3FF80212A7EA926>I<003FE0
0001FFF80003F07E0007C01F000F801F801F800F803F800FC07F000FC07F0007C07F0007E0FF00
07E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F0000007F0000007F0000003F
8000E01F8000E00FC001C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007F0003F
FC00FE3E01F87F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F00007F00007F0
00FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF807FFF
807FFF80182A7EA915>I<07000FC01FE03FE03FE03FE01FE00FC0070000000000000000000000
00000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>105 D<FFE0FFE0FFE00FE00FE00F
E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7DA914
>108 D<FFC07F800FF000FFC1FFE03FFC00FFC383F0707E000FC603F8C07F000FCC01F9803F00
0FD801FF003F800FF001FE003F800FF001FE003F800FE001FC003F800FE001FC003F800FE001FC
003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800F
E001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC00
3F800FE001FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3FFF8351B
7D9A3A>I<FFC07F0000FFC1FFC000FFC787E0000FCE03F0000FD803F0000FD803F8000FF003F8
000FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
03F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80211B7D9A26>I<003FE00001FFFC0003
F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8
FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800F
E01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FFE1FE0000FFE7FF8000FF
FE07E0000FF803F0000FF001F8000FE000FC000FE000FE000FE000FF000FE0007F000FE0007F00
0FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F
000FE000FF000FE000FF000FE000FE000FE001FC000FF001F8000FF803F0000FFE0FE0000FE7FF
80000FE1FC00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0
0000000FE00000000FE0000000FFFE000000FFFE000000FFFE00000021277E9A26>I<FFC1F0FF
C7FCFFCE3E0FD87F0FD87F0FF07F0FF03E0FF01C0FE0000FE0000FE0000FE0000FE0000FE0000F
E0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000FFFF00FFFF00FFFF0018
1B7E9A1C>114 D<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC0000FFE0007F
FE007FFF803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0003CF00038F80038FC
0070FF01E0F7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000F000
01F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007F00007F000
07F00007F00007F00007F00007F00007F00007F00007F03807F03807F03807F03807F03807F038
03F03803F87001F86000FFC0001F8015267FA51B>I<FFE03FF800FFE03FF800FFE03FF8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
0FE003F8000FE003F8000FE007F80007E007F80007E00FF80003F03BFF8001FFF3FF80003FC3FF
80211B7D9A26>I<FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003C00003F807800001FC07800000
FE0F000000FF1E0000007F3C0000003FF80000001FF00000000FF00000000FF000000007F00000
0007F80000000FFC0000001FFE0000001EFE0000003C7F000000783F800000F01FC00001E01FE0
0001C00FE00003C007F000FFF01FFF80FFF01FFF80FFF01FFF80211B7F9A24>120
D E /Fn 82 128 df<001F83E000F06E3001C078780380F8780300F03007007000070070000700
700007007000070070000700700007007000FFFFFF800700700007007000070070000700700007
007000070070000700700007007000070070000700700007007000070070000700700007007000
070070000700700007007000070070007FE3FF001D20809F1B>11 D<003F0000E0C001C0C00381
E00701E00701E0070000070000070000070000070000070000FFFFE00700E00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E00700E07FC3FE1720809F19>I<003FE000E0E001C1E00381E00700E00700E00700E00700E007
00E00700E00700E00700E0FFFFE00700E00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E00700E00700E00700E00700E07FE7FE1720809F19>I<
001F81F80000F04F040001C07C06000380F80F000300F00F000700F00F00070070000007007000
000700700000070070000007007000000700700000FFFFFFFF0007007007000700700700070070
070007007007000700700700070070070007007007000700700700070070070007007007000700
70070007007007000700700700070070070007007007000700700700070070070007007007007F
E3FE3FF02420809F26>I<70F8F8F8F8F8F8F87070707070707070707020202020200000000000
70F8F8F87005217CA00D>33 D<7038F87CFC7EFC7E743A04020402040208040804100810082010
40200F0E7E9F17>I<70F8FCFC74040404080810102040060E7C9F0D>39
D<0020004000800100020006000C000C00180018003000300030007000600060006000E000E000
E000E000E000E000E000E000E000E000E000E0006000600060007000300030003000180018000C
000C000600020001000080004000200B2E7DA112>I<800040002000100008000C000600060003
00030001800180018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E0
00E000C000C000C001C001800180018003000300060006000C00080010002000400080000B2E7D
A112>I<0006000000060000000600000006000000060000000600000006000000060000000600
00000600000006000000060000000600000006000000060000FFFFFFF0FFFFFFF0000600000006
000000060000000600000006000000060000000600000006000000060000000600000006000000
0600000006000000060000000600001C207D9A23>43 D<70F8FCFC74040404080810102040060E
7C840D>I<FFC0FFC00A027F8A0F>I<70F8F8F87005057C840D>I<000100030003000600060006
000C000C000C00180018001800300030003000600060006000C000C000C0018001800180030003
0003000600060006000C000C000C00180018001800300030003000600060006000C000C000C000
102D7DA117>I<03F0000E1C001C0E00180600380700700380700380700380700380F003C0F003
C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C07003807003
807003807807803807001806001C0E000E1C0003F000121F7E9D17>I<018003800F80F3800380
038003800380038003800380038003800380038003800380038003800380038003800380038003
8003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E00200700400780800780F007C0
F803C0F803C0F803C02007C00007C0000780000780000F00000E00001C00003800007000006000
00C0000180000300000600400C00401800401000803FFF807FFF80FFFF80121E7E9D17>I<03F0
000C1C00100E00200F00780F80780780780780380F80000F80000F00000F00000E00001C000038
0003F000003C00000E00000F000007800007800007C02007C0F807C0F807C0F807C0F007804007
80400F00200E001C3C0003F000121F7E9D17>I<000600000600000E00000E00001E00002E0000
2E00004E00008E00008E00010E00020E00020E00040E00080E00080E00100E00200E00200E0040
0E00C00E00FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE0141E7F9D17>I<
1803001FFE001FFC001FF8001FE00010000010000010000010000010000010000011F000161C00
180E001007001007800003800003800003C00003C00003C07003C0F003C0F003C0E00380400380
400700200600100E000C380003E000121F7E9D17>I<007C000182000701000E03800C07801C07
80380300380000780000700000700000F1F000F21C00F40600F80700F80380F80380F003C0F003
C0F003C0F003C0F003C07003C07003C07003803803803807001807000C0E00061C0001F000121F
7E9D17>I<4000007FFFC07FFF807FFF8040010080020080020080040000080000080000100000
200000200000400000400000C00000C00001C00001800003800003800003800003800007800007
8000078000078000078000078000078000030000121F7D9D17>I<03F0000C0C00100600300300
2001806001806001806001807001807803003E03003F06001FC8000FF00003F80007FC000C7E00
103F00300F806003804001C0C001C0C000C0C000C0C000C0C000806001802001001002000C0C00
03F000121F7E9D17>I<03F0000E18001C0C00380600380700700700700380F00380F00380F003
C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E13C003E3C00003800003800003
80000700300700780600780E00700C002018001070000FC000121F7E9D17>I<70F8F8F8700000
000000000000000070F8F8F87005147C930D>I<70F8F8F8700000000000000000000070F0F8F8
78080808101010202040051D7C930D>I<7FFFFFE0FFFFFFF00000000000000000000000000000
000000000000000000000000000000000000FFFFFFF07FFFFFE01C0C7D9023>61
D<000100000003800000038000000380000007C0000007C0000007C0000009E0000009E0000009
E0000010F0000010F0000010F00000207800002078000020780000403C0000403C0000403C0000
801E0000801E0000FFFE0001000F0001000F0001000F00020007800200078002000780040003C0
0E0003C01F0007E0FFC03FFE1F207F9F22>65 D<FFFFE0000F80380007801E0007801F0007800F
0007800F8007800F8007800F8007800F8007800F8007800F0007801F0007801E0007803C0007FF
F00007803C0007801E0007800F0007800F8007800780078007C0078007C0078007C0078007C007
8007C00780078007800F8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC04000
7030C001C009C0038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C000040
78000040F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00780000007C0000407C0000403C0000401C0000401E0000800E000080070001000380020001C0
040000703800000FC0001A217D9F21>I<FFFFE0000F803C0007801E0007800700078003800780
03C0078001E0078001E0078001F0078000F0078000F0078000F8078000F8078000F8078000F807
8000F8078000F8078000F8078000F8078000F8078000F0078000F0078000F0078001E0078001E0
078003C0078003800780070007800E000F803C00FFFFE0001D1F7E9E23>I<FFFFFF000F800F00
078003000780030007800100078001800780008007800080078000800780808007808000078080
00078080000781800007FF80000781800007808000078080000780800007808000078000200780
002007800020078000400780004007800040078000C0078000C0078001800F800F80FFFFFF801B
1F7E9E1F>I<FFFFFF000F800F0007800300078003000780010007800180078000800780008007
80008007800080078080000780800007808000078080000781800007FF80000781800007808000
078080000780800007808000078000000780000007800000078000000780000007800000078000
00078000000FC00000FFFE0000191F7E9E1E>I<000FE0200078186000E004E0038002E0070001
E00F0000E01E0000601E0000603C0000603C0000207C00002078000020F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8007FFCF80003E0780001E07C0001E03C0001E03C
0001E01E0001E01E0001E00F0001E0070001E0038002E000E0046000781820000FE0001E217D9F
24>I<FFF8FFF80F800F8007800F0007800F0007800F0007800F0007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007FFFF0007800F0007800F0007800F0007800F
0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000780
0F000F800F80FFF8FFF81D1F7E9E22>I<FFFC0FC0078007800780078007800780078007800780
0780078007800780078007800780078007800780078007800780078007800780078007800FC0FF
FC0E1F7F9E10>I<0FFFC0007C00003C00003C00003C00003C00003C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0020
3C00F83C00F83C00F83C00F0380040780040700030E0000F800012207E9E17>I<FFFC0FFC0FC0
03E007800180078001000780020007800400078008000780100007802000078040000780800007
8100000783000007878000078F80000793C0000791E00007A1E00007C0F0000780F00007807800
07803C0007803C0007801E0007801E0007800F000780078007800780078007C00FC007E0FFFC3F
FC1E1F7E9E23>I<FFFE000FC00007800007800007800007800007800007800007800007800007
800007800007800007800007800007800007800007800007800007800007800207800207800207
800207800607800407800407800C07801C0F807CFFFFFC171F7E9E1C>I<FF80001FF80F80001F
800780001F0005C0002F0005C0002F0005C0002F0004E0004F0004E0004F000470008F00047000
8F000470008F000438010F000438010F000438010F00041C020F00041C020F00041C020F00040E
040F00040E040F00040E040F000407080F000407080F000407080F000403900F000403900F0004
01E00F000401E00F000401E00F000E00C00F001F00C01F80FFE0C1FFF8251F7E9E2A>I<FF803F
F807C007C007C0038005E0010005E0010004F001000478010004780100043C0100043C0100041E
0100040F0100040F010004078100040781000403C1000401E1000401E1000400F1000400F10004
00790004003D0004003D0004001F0004001F0004000F0004000700040007000E0003001F000300
FFE001001D1F7E9E22>I<001F800000F0F00001C0380007801E000F000F000E0007001E000780
3C0003C03C0003C07C0003E0780001E0780001E0F80001F0F80001F0F80001F0F80001F0F80001
F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C0003C03C0003C01E00
07800E0007000F000F0007801E0001C0380000F0F000001F80001C217D9F23>I<FFFFE0000F80
780007801C0007801E0007800F0007800F8007800F8007800F8007800F8007800F8007800F8007
800F0007801E0007801C000780780007FFE0000780000007800000078000000780000007800000
07800000078000000780000007800000078000000780000007800000078000000FC00000FFFC00
00191F7E9E1F>I<FFFF80000F80F0000780780007803C0007801E0007801E0007801F0007801F
0007801F0007801F0007801E0007801E0007803C00078078000780F00007FF80000781C0000780
E0000780F0000780700007807800078078000780780007807C0007807C0007807C0007807C0407
807E0407803E040FC01E08FFFC0F10000003E01E207E9E21>82 D<07E0800C1980100780300380
600180600180E00180E00080E00080E00080F00000F000007800007F00003FF0001FFC000FFE00
03FF00001F800007800003C00003C00001C08001C08001C08001C08001C0C00180C00380E00300
F00600CE0C0081F80012217D9F19>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F00
30800F0010800F0010800F0010800F0010000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000001F800007FFFE001C1F7E9E21>I<FFFC3FF80FC007C007
800380078001000780010007800100078001000780010007800100078001000780010007800100
078001000780010007800100078001000780010007800100078001000780010007800100078001
000780010007800100038002000380020001C0020001C0040000E008000070180000382000000F
C0001D207E9E22>I<FFF003FE1F8000F80F0000600F800060078000400780004003C0008003C0
008003C0008001E0010001E0010001F0010000F0020000F0020000F80600007804000078040000
3C0800003C0800003C0800001E1000001E1000001F3000000F2000000F20000007C0000007C000
0007C000000380000003800000038000000100001F207F9E22>I<FFF07FF81FF01F800FC007C0
0F00078003800F00078001000F0007C00100078007C00200078007C00200078007C0020003C009
E0040003C009E0040003C009E0040003E010F00C0001E010F0080001E010F0080001F020780800
00F02078100000F02078100000F0403C10000078403C20000078403C20000078C03E2000003C80
1E4000003C801E4000003C801E4000001F000F8000001F000F8000001F000F8000001E00078000
000E00070000000E00070000000C000300000004000200002C207F9E2F>I<7FFFF87C00F87000
F06001E04001E0C003C0C003C0800780800F80800F00001E00001E00003C00003C0000780000F8
0000F00001E00001E00003C00403C0040780040F80040F000C1E000C1E00083C00183C00187800
38F801F8FFFFF8161F7D9E1C>90 D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>I<0804100820102010402040
20804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>I<FEFE06060606060606060606060606
06060606060606060606060606060606060606060606060606060606FEFE072D7FA10D>I<1FE0
00303000781800781C00300E00000E00000E00000E0000FE00078E001E0E00380E00780E00F00E
10F00E10F00E10F01E10781E103867200F83C014147E9317>97 D<0E0000FE00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E3E000EC3800F01C00F00E00E00E0
0E00700E00700E00780E00780E00780E00780E00780E00780E00700E00700E00E00F00E00D01C0
0CC300083E0015207F9F19>I<03F80E0C1C1E381E380C70007000F000F000F000F000F000F000
70007000380138011C020E0C03F010147E9314>I<000380003F80000380000380000380000380
00038000038000038000038000038000038003E380061B801C0780380380380380700380700380
F00380F00380F00380F00380F00380F003807003807003803803803807801C07800E1B8003E3F8
15207E9F19>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F000
00F00000F000007000007000003800801800800C010007060001F80011147F9314>I<007C00C6
018F038F07060700070007000700070007000700FFF00700070007000700070007000700070007
000700070007000700070007000700070007007FF01020809F0E>I<0000E003E3300E3C301C1C
30380E00780F00780F00780F00780F00780F00380E001C1C001E380033E0002000002000003000
003000003FFE001FFF800FFFC03001E0600070C00030C00030C00030C000306000603000C01C03
8003FC00141F7F9417>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E
00000E00000E00000E3E000E43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E
003E001E001C000000000000000000000000000E007E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E00000
00000000000000000000007007F000F00070007000700070007000700070007000700070007000
700070007000700070007000700070007000706070F060F0C061803F000C28829E0E>I<0E0000
FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FF00E03C0
0E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E000E0E000E0700
0E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E81C81C000F00F00E000F00F00E
000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E0
0E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00FFE7FE7FE02314
7F9326>I<0E3E00FE43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E00
1C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E0
3801C03801C01C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E00E00
F00E00700E00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C00EC3
000E3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D7F9319>I<03
E0800619801C05803C0780380380780380700380F00380F00380F00380F00380F00380F0038070
03807803803803803807801C0B800E138003E38000038000038000038000038000038000038000
0380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E000E000E000E000E000E000E00
0E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030704030C010C010C010E0007800
7F803FE00FF00070803880188018C018C018E030D0608F800D147E9312>I<0200020002000600
06000E000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E080E080E080E
080E080610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC1614
7F9319>I<FF83F81E01E01C00C00E00800E00800E008007010007010003820003820003820001
C40001C40001EC0000E80000E80000700000700000700000200015147F9318>I<FF9FE1FC3C07
80701C0300601C0380200E0380400E0380400E03C0400707C0800704C0800704E0800388610003
88710003C8730001D0320001D03A0000F03C0000E01C0000E01C0000601800004008001E147F93
21>I<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800003C00007C00
004E000087000107000303800201C00601E01E01E0FF07FE1714809318>I<FF83F81E01E01C00
C00E00800E00800E008007010007010003820003820003820001C40001C40001EC0000E80000E8
00007000007000007000002000002000004000004000004000F08000F08000F100006200003C00
00151D7F9318>I<3FFF380E200E201C40384078407000E001E001C00380078007010E011E011C
0338027006700EFFFE10147F9314>I<FFFFFC1601808C17>I<FFFFFFFFFFF02C01808C2D>I<30
307878F87C787830300E057C9E17>127 D E /Fo 49 123 df<007E0001C1800301800703C00E
03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C
17>12 D<003F07E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E00000
0E00E000000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C
000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E0
1C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>14
D<004000800100020006000C000C0018001800300030007000600060006000E000E000E000E000
E000E000E000E000E000E000E000E000600060006000700030003000180018000C000C00060002
000100008000400A2A7D9E10>40 D<800040002000100018000C000C0006000600030003000380
01800180018001C001C001C001C001C001C001C001C001C001C001C001C0018001800180038003
000300060006000C000C00180010002000400080000A2A7E9E10>I<60F0F07010101010202040
80040C7C830C>44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<03C00C301818300C30
0C700E60066006E007E007E007E007E007E007E007E007E007E007E007E007E00760066006700E
300C300C18180C3007E0101D7E9B15>48 D<030007003F00C70007000700070007000700070007
000700070007000700070007000700070007000700070007000700070007000F80FFF80D1C7C9B
15>I<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007E007
E007E007E007600760077006300E300C18180C3003E0101D7E9B15>54 D<4000007FFF807FFF00
7FFF0040020080040080040080080000100000100000200000600000400000C00000C00001C000
018000018000038000038000038000038000078000078000078000078000078000078000030000
111D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007E0076007700F300F
18170C2707C700060006000E300C780C78187010203030C00F80101D7E9B15>57
D<60F0F0600000000000000000000060F0F06004127C910C>I<00060000000600000006000000
0F0000000F0000000F00000017800000178000001780000023C0000023C0000023C0000041E000
0041E0000041E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002003C
0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65
D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F001E0F001E0F001C0F003C0F00780F01
F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F000F0F000F0F000F0F001E0F001E0F00
3C0F0078FFFFE0181C7E9B1D>I<001F808000E0618001801980070007800E0003801C0003801C
00018038000180780000807800008070000080F0000000F0000000F0000000F0000000F0000000
F0000000F0000000F0000000700000807800008078000080380000801C0001001C0001000E0002
00070004000180080000E03000001FC000191E7E9C1E>I<FFFFFC0F003C0F000C0F00040F0004
0F00060F00020F00020F02020F02000F02000F02000F06000FFE000F06000F02000F02000F0200
0F02010F00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C>69
D<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F00FFF00C1C7F9B0F>73 D<FFF8000F80000F00000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00000F00080F00080F00080F00180F00180F00100F00300F00700F01F0FFFFF0151C7E9B1A>76
D<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E002780009E002
780008F004780008F004780008F0047800087808780008780878000878087800083C107800083C
107800083C107800081E207800081E207800081E207800080F407800080F407800080780780008
07807800080780780008030078001C03007800FF8307FF80211C7E9B26>I<003F800000E0E000
0380380007001C000E000E001C0007003C00078038000380780003C0780003C0700001C0F00001
E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C07800
03C0380003803C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C20
>79 D<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C
0F00780F00E00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F00000F0000FFF000171C7E9B1C>I<FFFF00000F01E0000F0078000F003C000F001C000F001E
000F001E000F001E000F001E000F001C000F003C000F0078000F01E0000FFF00000F03C0000F00
E0000F00F0000F0078000F0078000F0078000F0078000F0078000F0078000F0078100F0078100F
0038100F003C20FFF01C20000007C01C1D7E9B1F>82 D<07E0801C1980300580700380600180E0
0180E00080E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F8000
07C00003C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C
17>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F001F001007801F002007
80278020078027802003C027804003C043C04003C043C04003E043C04001E081E08001E081E080
01E081E08000F100F10000F100F10000F100F100007900FA00007A007A00007A007A00003E007C
00003C003C00003C003C00003C003C00001800180000180018000018001800281D7F9B2B>87
D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C00E01C
40E01C40E01C40603C40304E801F870012127E9115>97 D<FC00001C00001C00001C00001C0000
1C00001C00001C00001C00001C00001C00001C7C001D86001E03001C01801C01C01C00C01C00E0
1C00E01C00E01C00E01C00E01C00E01C00C01C01C01C01801E030019060010F800131D7F9C17>
I<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007C00E12
7E9112>I<003F0000070000070000070000070000070000070000070000070000070000070003
E7000C1700180F00300700700700600700E00700E00700E00700E00700E00700E0070060070070
0700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006E006FFFEE000
E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E00
0E000E000E000E00FFE00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C00381C00381C00
1818001C38000C300013C0001000003000001800001FF8001FFF001FFF803003806001C0C000C0
C000C0C000C06001803003001C0E0007F800121C7F9215>I<FC00001C00001C00001C00001C00
001C00001C00001C00001C00001C00001C00001C7C001C87001D03001E03801C03801C03801C03
801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17
>I<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<FC001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C00FF80091D7F9C0C>108 D<FC7E07E0001C838838001D019018001E01E01C001C01
C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C
01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C00
1C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C0380FF9FF014127F9117>I<03F0000E1C00180600300300700380600180E001
C0E001C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115
>I<FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C
01C01C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C0000FF
8000131A7F9117>I<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700
E00700E00700600700700700300F00180F000C370007C700000700000700000700000700000700
000700000700003FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C
001C001C001C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00F
F000F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C
00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A
7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C01001C0100
0E02000E020007040007040007040003880003880003D80001D00001D00000E00000E00000E000
00400013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E
1182000711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001803000
008020001B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F00000700000
780000F800009C00010E00020E000607000403801E07C0FF0FF81512809116>I<FF07E03C0380
1C01001C01000E02000E020007040007040007040003880003880003D80001D00001D00000E000
00E00000E000004000004000008000008000F08000F10000F300006600003C0000131A7F9116>
I<7FFC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E12
7F9112>I E /Fp 7 117 df<00038000000380000007C0000007C0000007C000000FE000000FE0
00001FF000001BF000001BF0000031F8000031F8000061FC000060FC0000E0FE0000C07E0000C0
7E0001803F0001FFFF0003FFFF8003001F8003001F8006000FC006000FC00E000FE00C0007E0FF
C07FFEFFC07FFE1F1C7E9B24>65 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC0
07E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97
D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F3F801FE1
E01F80701F00781F003C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F003C1F00
781F80701EC1E01C3F00171D7F9C1B>I<03FC000E0E001C1F003C1F00781F00780E00F80000F8
0000F80000F80000F80000F800007800007801803C01801C03000E0E0003F80011127E9115>I<
FE3E00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F0000
1F00001F00001F0000FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF807F
E07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<0300030003000300070007
000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F080798
03F00E1A7F9913>I E /Fq 3 122 df<FFFFF0FFFFF014027D881B>0 D<020002000200C218F2
783AE00F800F803AE0F278C2180200020002000D0E7E8E12>3 D<060006000600060006000600
06000600FFF0FFF006000600060006000600060006000600060006000600060006000600060006
000600060006000C1D7E9611>121 D E /Fr 51 122 df<70F8FCFC7404040404080810102040
060F7C840E>44 D<FFE0FFE00B027F8B10>I<70F8F8F87005057C840E>I<01F000071C000C0600
1803003803803803807001C07001C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0
F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C07803C0380380
3803801C07000C0600071C0001F00013227EA018>48 D<008003800F80F3800380038003800380
038003800380038003800380038003800380038003800380038003800380038003800380038003
8003800380038007C0FFFE0F217CA018>I<03F0000C1C001007002007804003C04003C08003E0
F003E0F801E0F801E0F801E02003E00003E00003C00003C0000780000700000E00001C00001800
00300000600000C0000180000100000200200400200800201800603000403FFFC07FFFC0FFFFC0
13217EA018>I<1000801E07001FFF001FFE001FF80013E0001000001000001000001000001000
0010000010F800130E001407001803801003800001C00001C00001E00001E00001E00001E07001
E0F001E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA018>53
D<007E0001C1000300800601C00E03C01C03C0180180380000380000780000700000700000F0F8
00F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001
E07001E03801C03801C01803801C03000C0600070C0001F00013227EA018>I<01F800060E0008
03001001802001802000C06000C06000C06000C07000C07801803E01003F02001FC4000FF80003
F80003FC00067F00083F80100F803007C06001C06000E0C000E0C00060C00060C00060C0006060
00406000C03000801803000E0E0003F00013227EA018>56 D<01F000060C000C06001807003803
80700380700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803
E01805E00C05E00619E003E1E00001C00001C00001C0000380000380300300780700780600700C
002018001030000FC00013227EA018>I<0001800000018000000180000003C0000003C0000003
C0000005E0000005E000000DF0000008F0000008F0000010F800001078000010780000203C0000
203C0000203C0000401E0000401E0000401E0000800F0000800F0000FFFF000100078001000780
030007C0020003C0020003C0040003E0040001E0040001E00C0000F00C0000F03E0001F8FF800F
FF20237EA225>65 D<FFFFF8000F800E0007800780078003C0078003E0078001E0078001F00780
01F0078001F0078001F0078001F0078001E0078003E0078007C007800F8007803E0007FFFE0007
800780078003C0078001E0078001F0078000F0078000F8078000F8078000F8078000F8078000F8
078000F8078001F0078001F0078003E0078007C00F800F00FFFFFC001D227EA123>I<0007E010
0038183000E0063001C00170038000F0070000F00E0000701E0000701C0000303C0000303C0000
307C0000107800001078000010F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F800000078000000780000107C0000103C0000103C0000101C0000201E0000200E00004007
0000400380008001C0010000E0020000381C000007E0001C247DA223>I<FFFFF0000F801E0007
800700078003C0078001C0078000E0078000F007800078078000780780007C0780003C0780003C
0780003C0780003E0780003E0780003E0780003E0780003E0780003E0780003E0780003E078000
3E0780003C0780003C0780007C0780007807800078078000F0078000E0078001E0078003C00780
07000F801E00FFFFF8001F227EA125>I<FFFFFFC00F8007C0078001C0078000C0078000400780
004007800060078000200780002007800020078020200780200007802000078020000780600007
80E00007FFE0000780E00007806000078020000780200007802000078020080780000807800008
078000100780001007800010078000300780003007800070078000E00F8003E0FFFFFFE01D227E
A121>I<FFFC3FFF0FC003F0078001E0078001E0078001E0078001E0078001E0078001E0078001
E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007FFFFE0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E007
8001E0078001E0078001E0078001E00FC003F0FFFC3FFF20227EA125>72
D<FFFC0FC007800780078007800780078007800780078007800780078007800780078007800780
07800780078007800780078007800780078007800780078007800FC0FFFC0E227EA112>I<03FF
F0001F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00700F
00F80F00F80F00F80E00F01E00401C0020380018700007C00014237EA119>I<FFFC03FF000FC0
00F800078000600007800040000780008000078001000007800200000780040000078008000007
8010000007802000000780400000078080000007818000000783C000000787E000000789E00000
0788F000000790F0000007A078000007C03C000007803C000007801E000007800F000007800F00
000780078000078007C000078003C000078001E000078001E000078000F000078000F8000FC000
FC00FFFC07FF8021227EA126>I<FFC00003FF0FC00003F007C00003E005E00005E005E00005E0
04F00009E004F00009E004F00009E004780011E004780011E004780011E0043C0021E0043C0021
E0043C0021E0041E0041E0041E0041E0040F0081E0040F0081E0040F0081E004078101E0040781
01E004078101E00403C201E00403C201E00401E401E00401E401E00401E401E00400F801E00400
F801E00400F801E004007001E00E007001E01F007003F0FFE0203FFF28227EA12D>77
D<FF8007FF07C000F807C0007005E0002004F0002004F0002004780020047C0020043C0020041E
0020041F0020040F002004078020040780200403C0200401E0200401E0200400F0200400F82004
00782004003C2004003E2004001E2004000F2004000F20040007A0040003E0040003E0040001E0
040001E0040000E00E0000601F000060FFE0002020227EA125>I<000FE00000783C0000E00E00
03C00780078003C00F0001E00E0000E01E0000F03C0000783C0000787C00007C7C00007C780000
3C7800003CF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800003EF800
003E7800003C7C00007C7C00007C3C0000783E0000F81E0000F00F0001E00F0001E0078003C003
C0078000E00E0000783C00000FE0001F247DA226>I<FFFFF0000F803C0007800F000780078007
8007C0078003C0078003E0078003E0078003E0078003E0078003E0078003E0078003C0078007C0
0780078007800F0007803C0007FFF0000780000007800000078000000780000007800000078000
0007800000078000000780000007800000078000000780000007800000078000000FC00000FFFC
00001B227EA121>I<FFFFE000000F803C000007800E00000780078000078007C000078003C000
078003E000078003E000078003E000078003E000078003E000078003C000078007C00007800780
0007800E000007803C000007FFE000000780700000078038000007801C000007801E000007800E
000007800F000007800F000007800F000007800F000007800F800007800F800007800F80000780
0F808007800FC080078007C0800FC003C100FFFC01E2000000007C0021237EA124>82
D<03F0200C0C601802603001E07000E0600060E00060E00060E00020E00020E00020F00000F000
007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000F00000F00000708000
70800070800070800070C00060C00060E000C0F000C0C80180C6070081FC0014247DA21B>I<7F
FFFFF87807807860078018400780084007800840078008C007800C800780048007800480078004
800780040007800000078000000780000007800000078000000780000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
80000007800000078000000FC00003FFFF001E227EA123>I<FFF0007FC01F80001F000F00000C
000780000C000780000800078000080003C000100003C000100003E000300001E000200001E000
200000F000400000F000400000F000400000780080000078008000007C018000003C010000003C
010000001E020000001E020000001F020000000F040000000F040000000F8C0000000788000000
078800000003D000000003D000000003F000000001E000000001E000000000C000000000C00000
0000C0000022237FA125>86 D<FFF03FFC03FE1F8007E000F80F0003C000700F0003C000200F00
03C00020078001E00040078001E00040078001E0004003C002F0008003C002F0008003C002F000
8001E00478010001E00478010001E00478010000F0083C020000F0083C020000F0083C020000F8
183E06000078101E04000078101E0400007C101E0400003C200F0800003C200F0800003C200F08
00001E40079000001E40079000001E40079000000F8003E000000F8003E000000F8003E0000007
0001C00000070001C00000070001C0000003000180000002000080002F237FA132>I<FFF0007F
C01F80001F000F80000C00078000080007C000180003E000100001E000200001F000200000F000
400000F800C000007C008000003C010000003E010000001E020000001F040000000F8400000007
8800000007D800000003D000000003E000000001E000000001E000000001E000000001E0000000
01E000000001E000000001E000000001E000000001E000000001E000000001E000000001E00000
0003E00000003FFF000022227FA125>89 D<0FE0001838003C0C003C0E00180700000700000700
00070000FF0007C7001E07003C0700780700700700F00708F00708F00708F00F087817083C2390
0FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E
00000E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E003C0E001C0E001E0E
001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C80600C41C0083F0017
237FA21B>I<01FE000703000C07801C0780380300780000700000F00000F00000F00000F00000
F00000F00000F000007000007800403800401C00800C010007060001F80012157E9416>I<0000
E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E001F8E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000
E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<01FC000707000C
03801C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000F0000070000078
00203800201C00400E008007030000FC0013157F9416>I<00007001F198071E180E0E181C0700
1C07003C07803C07803C07803C07801C07001C07000E0E000F1C0019F000100000100000180000
1800001FFE000FFFC00FFFE03800F0600030400018C00018C00018C000186000306000303800E0
0E038003FE0015217F9518>103 D<0E0000FE00001E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E1F800E60C00E80E00F00700F00700E00700E0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
FFE7FF18237FA21B>I<1C001E003E001E001C00000000000000000000000000000000000E00FE
001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC0
0A227FA10E>I<0E0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E03FC0E01F00E01C00E01800E02000E04000E08000E10000E38000EF8
000F1C000E1E000E0E000E07000E07800E03C00E01C00E01E00E00F00E00F8FFE3FE17237FA21A
>107 D<0E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B237FA2
0E>I<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E00E003800E00E003800E00E
003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E0
0E003800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFE27157F942A>I<0E1F
80FE60C01E80E00F00700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C018018
00C03800E0700070700070F00078F00078F00078F00078F00078F00078F000787000707800F038
00E01C01C00E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00700E00380E003C
0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E00380F00700E80E0
0E41C00E3F000E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE000171F7F
941B>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E000E
000E000F00FFF010157F9413>114 D<0F8830786018C018C008C008E008F0007F803FE00FF001
F8003C801C800C800CC00CC008E018D0308FC00E157E9413>I<02000200020002000600060006
000E001E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E04
0E040E040708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E00700E
00700E00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F006017003827800
FC7F18157F941B>I<FFC1FE1E00780E00300E00200E0020070040070040038080038080038080
01C10001C10000E20000E20000E20000740000740000380000380000380000100017157F941A>
I<FF8FF8FF1E01E03C1C01C0180E01C0180E01E0100E01E0100702602007027020070270200384
3040038438400384384001C8188001C81C8001C81C8000F00D0000F00F0000F00F000060060000
6006000060060020157F9423>I<FF83FE1F01F00E00C007008003810003830001C20000E40000
7800007800003800003C00004E00008E000187000103800201C00401E00C00E03E01F0FF03FE17
157F941A>I<FFC1FE1E00780E00300E00200E002007004007004003808003808003808001C100
01C10000E20000E20000E200007400007400003800003800003800001000001000002000002000
002000004000F04000F08000F180004300003C0000171F7F941A>I E /Fs
25 122 df<78FCFCFCFC780000000000000000000000000000000000000078FCFCFCFC78061F7A
9E12>58 D<00000300000000000300000000000300000000000780000000000780000000000FC0
000000000FC0000000000FC00000000017E00000000013E00000000013E00000000023F0000000
0021F00000000021F00000000040F80000000040F80000000040F800000000807C00000000807C
00000001807E00000001003E00000001003E00000002003F00000002001F00000002001F000000
04000F80000004000F80000004000F800000080007C00000080007C00000180007E000001FFFFF
E000001FFFFFE00000200003F00000200001F00000200001F00000400001F80000400000F80000
400000F800008000007C00008000007C00008000007C00010000003E00010000003E0003000000
3F00030000001F00070000001F001F8000003F80FFE00003FFFCFFE00003FFFC2E327EB132>65
D<00003FE0010001FFF8030007F01E03001F800307003E000087007800004F00F000002F01E000
001F03C000000F078000000F0F800000070F000000071F000000031E000000033E000000033C00
0000017C000000017C000000017C000000017800000000F800000000F800000000F800000000F8
00000000F800000000F800000000F800000000F800000000F800000000F800000000F800000000
78000000007C000000007C000000017C000000013C000000013E000000011E000000011F000000
020F000000020F80000006078000000403C000000801E000000800F00000100078000020003E00
00C0001F8003800007F00F000001FFFC0000003FE00028337CB130>67 D<FFFFC00000FFFFC000
0007F000000003E000000003E000000003E000000003E000000003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0
00000003E000000003E000000003E000000003E000000003E000000003E000000003E000000003
E000000003E000000003E000000003E000000003E000000003E000000003E000004003E0000040
03E000004003E000004003E000008003E000008003E000008003E000008003E000018003E00001
8003E000038003E000038003E000078003E0000F0003E0003F0007E000FF00FFFFFFFF00FFFFFF
FF0022317CB029>76 D<FFFFFFC000FFFFFFF80007E0007E0003E0001F0003E000078003E00003
C003E00001E003E00001F003E00001F003E00000F003E00000F803E00000F803E00000F803E000
00F803E00000F803E00000F803E00000F003E00001F003E00001E003E00003E003E00003C003E0
00078003E0001F0003E0007C0003FFFFF00003E000000003E000000003E000000003E000000003
E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000007F0000000FFFF800000FFFF80000025317CB02D>80 D<007F802001FFE02007C0
78600F001C601E0006E03C0003E0380001E0780000E0700000E070000060F0000060F0000060F0
000020F0000020F0000020F8000020F80000007C0000007E0000003F0000003FC000001FF80000
0FFF800007FFF80003FFFC0000FFFF00000FFF800000FFC000001FE0000007E0000003F0000001
F0000000F0000000F8000000F88000007880000078800000788000007880000078C0000078C000
0070E00000F0E00000E0F00000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D
337CB125>83 D<7FFFFFFFFFE07FFFFFFFFFE07E000F8007E078000F8001E070000F8000E06000
0F80006040000F80002040000F800020C0000F800030C0000F80003080000F80001080000F8000
1080000F80001080000F80001080000F80001080000F80001000000F80000000000F8000000000
0F80000000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000
0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000000000
0F80000000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000
0000000F80000000000F80000000000F80000000000F80000000000F80000000000F8000000000
0F80000000000F80000000001FC00000000FFFFF8000000FFFFF80002C317EB030>I<00FE0000
0303C0000C00E00010007000100038003C003C003E001C003E001E003E001E0008001E0000001E
0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E003E001E003C001E007C00
1E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E047C005E043E008F080F0307F003
FC03E01E1F7D9E21>97 D<07800000FF800000FF8000000F800000078000000780000007800000
078000000780000007800000078000000780000007800000078000000780000007800000078000
0007800000078000000781FC0007860700078801C0079000E007A0007007C00078078000380780
003C0780003C0780001E0780001E0780001F0780001F0780001F0780001F0780001F0780001F07
80001F0780001F0780001F0780001E0780003E0780003C0780003C0780007807C00070072000F0
072001E00618038006060F000401F80020327EB125>I<003F8000E0600380180700040F00041E
001E1C003E3C003E7C003E7C0008780000F80000F80000F80000F80000F80000F80000F80000F8
0000F800007800007C00007C00003C00011E00011E00020F000207000403801800E060003F8018
1F7D9E1D>I<000001E000003FE000003FE0000003E0000001E0000001E0000001E0000001E000
0001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0
000001E0001F81E000F061E001C019E0078005E00F0003E00E0003E01E0001E03C0001E03C0001
E07C0001E0780001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F800
01E0F80001E0780001E0780001E03C0001E03C0001E01C0001E01E0003E00E0005E0070009E003
8011F000E061FF003F81FF20327DB125>I<003F800000E0E0000380380007003C000E001E001E
001E001C000F003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F8000000
F8000000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0000801E0000
800E0001000F0002000780020001C00C0000F03000001FC000191F7E9E1D>I<0007E0001C1000
383800707C00E07C01E07C01C03803C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C000FFFFC0FFFFC003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00007E0007FFF007FFF0016327FB114>I<07000F801F80
1F800F800700000000000000000000000000000000000000000000000780FF80FF800F80078007
800780078007800780078007800780078007800780078007800780078007800780078007800780
0780078007800FC0FFF8FFF80D307EAF12>105 D<0780FF80FF800F8007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
800780078007800780078007800780078007800780078007800780078007800780078007800FC0
FFFCFFFC0E327EB112>108 D<0780FE001FC000FF83078060F000FF8C03C18078000F9001E200
3C0007A001E4003C0007A000F4001E0007C000F8001E0007C000F8001E00078000F0001E000780
00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E
00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00
078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E
38>I<0780FE0000FF83078000FF8C03C0000F9001E00007A001E00007A000F00007C000F00007
C000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1F
FF80211F7E9E25>I<001FC00000F0780001C01C00070007000F0007801E0003C01C0001C03C00
01E03C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F8
0000F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003C00F000780
07800F0001C01C0000F07800001FC0001D1F7E9E21>I<0781FC00FF860700FF8803C00F9001E0
07A000F007C00078078000780780003C0780003C0780003E0780001E0780001F0780001F078000
1F0780001F0780001F0780001F0780001F0780001F0780001F0780003E0780003E0780003C0780
007C0780007807C000F007A000F007A001E00798038007860F000781F800078000000780000007
80000007800000078000000780000007800000078000000780000007800000078000000FC00000
FFFC0000FFFC0000202D7E9E25>I<0783E0FF8C18FF907C0F907C07A07C07C03807C00007C000
07C000078000078000078000078000078000078000078000078000078000078000078000078000
0780000780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114
D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00003FF0
001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC0001CE0001CE000
18F00038F00030CC0060C301C080FE00161F7E9E1A>I<00400000400000400000400000400000
C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FFFFE003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C01003C01003C01003C01003C01003C01003C01003C01001C02001E02000E0400078C0001F0014
2C7FAB19>I<078000F000FF801FF000FF801FF0000F8001F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078001F000078001F000078001F000038002F00003C004F00001C008F800007030FF80
001FC0FF80211F7E9E25>I<FFF801FF80FFF801FF800FC0007C00078000380007C000300003C0
00200003C000200001E000400001E000400001F000400000F000800000F0008000007801000000
78010000007C010000003C020000003C020000001E040000001E040000001F040000000F080000
000F080000000790000000079000000007D000000003E000000003E000000001C000000001C000
000001C000000000800000211F7F9E23>I<FFF801FF80FFF801FF800FC0007C00078000380007
C000300003C000200003C000200001E000400001E000400001F000400000F000800000F0008000
00780100000078010000007C010000003C020000003C020000001E040000001E040000001F0400
00000F080000000F080000000790000000079000000007D000000003E000000003E000000001C0
00000001C000000001C00000000080000000008000000001000000000100000000010000000002
000000000200000000040000007004000000F80C000000F808000000F810000000703000000030
400000001F80000000212D7F9E23>121 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 1 1
bop 384 339 a Fs(CCL:)21 b(A)h(P)n(ortable)g(and)f(T)-6 b(unable)21
b(Collectiv)n(e)160 431 y(Comm)n(unication)f(Library)i(for)f(Scalable)g(P)n
(arallel)h(Computers)209 588 y Fr(V)l(asan)o(th)17 b(Bala)495
570 y Fq(y)571 588 y Fr(Jehosh)o(ua)g(Bruc)o(k)910 570 y Fq(\003)985
588 y Fr(Rob)q(ert)f(Cypher)1305 570 y Fq(\003)1381 588 y Fr(P)o(ablo)h
(Elustondo)1733 570 y Fq(\003)348 647 y Fr(Alex)e(Ho)523 629
y Fq(\003)599 647 y Fr(Ching-Tien)i(Ho)918 629 y Fq(\003)994
647 y Fr(Shlomo)e(Kipnis)1306 629 y Fq(y)1382 647 y Fr(Marc)h(Snir)1595
629 y Fq(y)725 763 y Fr(IBM)f(Researc)o(h)g(Division)1218 745
y Fq(\003)694 821 y Fr(Almaden)f(Researc)o(h)i(Cen)o(ter)800
879 y(650)i(Harry)e(Road)759 937 y(San)h(Jose,)f(CA)g(95120)932
995 y(and)725 1054 y(IBM)f(Researc)o(h)g(Division)1218 1036
y Fq(y)657 1112 y Fr(T.J.)h(W)l(atson)h(Researc)o(h)f(Cen)o(ter)830
1170 y(P)l(.O.)f(Bo)o(x)h(218)660 1228 y(Y)l(orkto)o(wn)g(Heigh)o(ts,)f(NY)g
(10598)880 1410 y Fp(Abstract)250 1504 y Fo(A)g(collectiv)o(e)f(comm)o
(unication)e(library)h(for)i(parallel)e(computers)i(includes)g(frequen)o(tly)
g(used)188 1554 y(op)q(erations)j(suc)o(h)h(as)f(broadcast,)i(reduce,)g
(scatter,)h(gather,)e(concatenate,)h(sync)o(hronize,)g(and)188
1604 y(shift.)g(Suc)o(h)15 b(a)f(library)g(pro)o(vides)g(users)i(with)f(a)f
(con)o(v)o(enien)o(t)h(programmi)o(ng)d(in)o(terface,)i(e\016cien)o(t)188
1653 y(comm)o(unicatio)o(n)e(op)q(erations,)j(and)f(the)i(adv)n(an)o(tage)e
(of)g(p)q(ortabilit)o(y)m(.)19 b(A)c(library)f(of)g(this)h(nature,)188
1703 y(the)e(Collectiv)o(e)g(Comm)o(unicati)o(on)d(Library)j(\(CCL\),)g(in)o
(tended)h(for)e(the)i(line)f(of)f(scalable)h(parallel)188 1753
y(computer)g(pro)q(ducts)h(b)o(y)f(IBM,)g(has)g(b)q(een)h(designed.)k(CCL)13
b(is)g(part)g(of)g(the)g(parallel)f(application)188 1803 y(programmi)o(ng)g
(in)o(terface)k(of)e(the)i(recen)o(tly)g(announced)f(IBM)h(9076)e(Scalable)g
(PO)o(WERparallel)188 1853 y(System)j(1)h(\(SP1\).)30 b(In)18
b(this)g(pap)q(er,)h(w)o(e)f(examine)f(sev)o(eral)h(issues)h(related)g(to)f
(the)g(functional-)188 1902 y(it)o(y)m(,)13 b(correctness,)k(and)e(p)q
(erformance)f(of)g(a)h(p)q(ortable)g(collectiv)o(e)f(comm)o(unication)d
(library)j(while)188 1952 y(fo)q(cusing)i(on)f(three)j(no)o(v)o(el)d(asp)q
(ects)j(in)d(the)i(design)f(and)g(implemen)o(tatio)o(n)d(of)j(CCL:)f(\(i\))h
(the)g(in-)188 2002 y(tro)q(duction)g(of)e(pro)q(cess)k(groups,)d(\(ii\))g
(the)h(de\014nition)f(of)g(seman)o(tics)g(that)h(ensures)h(correctness,)188
2052 y(and)e(\(iii\))g(the)h(design)g(of)f(new)h(and)f(tunable)h(algorithms)d
(based)j(on)f(a)h(realistic)f(p)q(oin)o(t-to-p)q(oin)o(t)188
2102 y(comm)o(unicatio)o(n)c(mo)q(del.)960 2727 y Fn(1)p eop
%%Page: 2 2
bop 74 157 a Fm(1)69 b(In)n(tro)r(duction)74 290 y Fn(The)13
b(need)h(for)f(collectiv)o(e)i(comm)o(unication)f(arises)f(frequen)o(tly)g
(in)h(parallel)h(computation.)k(Collectiv)o(e)74 346 y(comm)o(unication)g(op)
q(erations)f(simplify)i(the)e(programming)f(of)h(applications)h(for)f
(parallel)h(comput-)74 403 y(ers,)c(facilitate)h(the)f(implemen)o(tation)h
(of)e(e\016cien)o(t)i(comm)o(unication)g(sc)o(hemes)f(on)g(v)m(arious)g(mac)o
(hines,)74 459 y(promote)d(the)g(p)q(ortabilit)o(y)i(of)e(applications)i
(across)e(di\013eren)o(t)g(arc)o(hitectures,)h(and)g(re\015ect)f(conceptual)
74 516 y(grouping)k(of)f(pro)q(cesses.)20 b(In)c(particular,)g(collectiv)o(e)
h(comm)o(unication)f(is)g(extensiv)o(ely)h(used)f(in)g(man)o(y)74
572 y(scien)o(ti\014c)f(applications)h(for)c(whic)o(h)j(the)f(in)o(terlea)o
(ving)g(of)f(stages)g(of)g(lo)q(cal)i(computations)e(with)h(stages)74
629 y(of)h(global)h(comm)o(unication)g(is)f(p)q(ossible)i(\(see)f([20)o(]\).)
74 716 y(This)21 b(pap)q(er)g(discusses)g(issues)g(related)f(to)g(the)g
(design)h(and)g(implemen)o(tation)g(of)f(a)g(p)q(ortable)g(and)74
773 y(tunable)15 b(Collectiv)o(e)g(Comm)o(unication)f(Library)g(\(CCL\).)f
(This)h(library)h(is)f(in)o(tended)h(for)e(distributed-)74
829 y(memory)h(parallel)j(computers)e(where)g(explicit)i(comm)o(unication)f
(among)e(pro)q(cesses)h(is)g(ac)o(hiev)o(ed)h(via)74 885 y(message-passing.)
32 b(In)20 b(addition)g(to)f(p)q(oin)o(t)h(to)e(p)q(oin)o(t)i(comm)o
(unication)g(op)q(erations,)g(suc)o(h)f(as)g Fl(send)74 942
y Fn(and)i Fl(receive)p Fn(,)f(users)g(can)h(program)e(using)i(CCL)g
(routines)g(for)e(collectiv)o(e)k(op)q(erations.)35 b(The)21
b(set)74 998 y(of)e(collectiv)o(e)h(comm)o(unication)g(op)q(erations)f(in)h
(CCL)e(consists)i(of)e(the)h(follo)o(wing)h(routines:)27 b
Fl(bcast)74 1055 y Fn(|)21 b(one-to-all)g(broadcast,)f Fl(reduce)f
Fn(|)i(all-to-one)g(reduction,)h Fl(combine)d Fn(|)h(all-to-all)i(reduction,)
74 1111 y Fl(scatter)13 b Fn(|)g(one-to-all)i(p)q(ersonalized)g(comm)o
(unication,)f Fl(gather)f Fn(|)h(all-to-one)g(p)q(ersonalized)i(com-)74
1168 y(m)o(unication,)c Fl(concat)d Fn(|)i(all-to-all)g(broadcast,)g
Fl(index)e Fn(|)i(all-to-all)g(p)q(ersonalized)h(comm)o(unication\),)74
1224 y Fl(prefix)j Fn(|)i(scanned)g(reduction,)g Fl(shift)e
Fn(|)i(one-to-one)f(cyclic)i(p)q(erm)o(utation,)e(and)g Fl(sync)p
Fn(|barrier)74 1281 y(sync)o(hronization.)29 b(A)18 b(complete)h(listing)h
(with)e(brief)h(descriptions)g(of)f(the)g(functionalit)o(y)h(of)e(all)i(the)
74 1337 y(CCL)c(routines)h(is)g(pro)o(vided)g(in)g(the)f(App)q(endix.)74
1425 y(The)j(library)g(w)o(as)f(designed)i(for)e(the)h(new)f(IBM)h(line)h(of)
f(scalable)g(parallel)i(computers.)26 b(\(The)18 b(\014rst)74
1481 y(computer)c(of)g(this)g(line)i(of)e(pro)q(ducts,)g(the)g(IBM)h(9076)d
(Scalable)k(PO)o(WERparallel)g(System)e(1)g(\(SP1\),)74 1538
y(has)j(b)q(een)h(announced)f(recen)o(tly)l(.\))25 b(Most)16
b(of)g(CCL)h(is)h(implemen)o(ted)g(as)e(part)g(of)h(the)g(parallel)h(appli-)
74 1594 y(cation)e(programming)e(in)o(terface)i(of)e(SP1.)74
1682 y(A)f(ma)s(jor)f(goal)h(in)h(the)f(design)i(of)d(CCL)i(w)o(as)e(the)h
(creation)h(of)e(a)h(truly)h(p)q(ortable)f(library)h(that)f(can)g(run)74
1738 y(correctly)h(and)f(e\016cien)o(tly)i(on)e(a)h(wide)g(range)f(of)g
(parallel)i(and)e(distributed)i(computer)f(arc)o(hitectures,)74
1795 y(regardless)i(of)f(the)g(top)q(ology)g(of)g(the)h(in)o(terconnection)h
(net)o(w)o(ork)d(and)h(the)h(sp)q(eeds)g(of)f(the)h(pro)q(cessors)74
1851 y(and)e(the)g(comm)o(unication)h(net)o(w)o(ork.)k(Also,)14
b(CCL)g(can)g(b)q(e)h(easily)g(implemen)o(ted)h(on)e(top)f(of)h(message-)74
1907 y(passing)k(libraries)g(suc)o(h)f(as)g(IBM)g(EUI)g([21],)f(IBM)h(VIPER)h
(Op)q(erating)g(System)f([18)o(,)f(23],)g(P)o(arasoft)74 1964
y(Express)f([30)o(],)g(and)g(ONRL)i(PVM)e([6)o(].)74 2052 y(F)l(or)d
(simplicit)o(y)j(and)e(clarit)o(y)g(of)f(the)g(discussion)j(in)e(this)g(pap)q
(er,)g(w)o(e)g(only)g(address)f(scenarios)h(in)h(whic)o(h)74
2108 y(dynamic)23 b(pro)q(cess)f(creation)g(or)g(deletion)h(in)g(run-time)f
(is)h(not)e(p)q(ermitted.)41 b(The)22 b(CCL)g(routines)74 2164
y(can)f(either)h(op)q(erate)e(o)o(v)o(er)g(the)h(en)o(tire)g(set)g(of)f(pro)q
(cesses)i(that)e(are)g(created)h(at)f(the)h(b)q(eginning)i(of)74
2221 y(an)d(application)i(or)d(o)o(v)o(er)g(user-sp)q(eci\014ed)j(groups)e
(of)f(pro)q(cesses.)35 b(F)l(or)19 b(example,)i(a)f(user)g(can)g(view)74
2277 y(sev)o(eral)12 b(pro)q(cesses)f(as)g(forming)g(a)g(t)o(w)o
(o-dimensional)h(arra)o(y)e(and)i(p)q(erforming)g(indep)q(enden)o(t)h
(broadcast)74 2334 y(op)q(erations)i(in)g(di\013eren)o(t)g(columns)h(of)e
(this)h(arra)o(y)l(.)k(Moreo)o(v)o(er,)13 b(the)i(CCL)f(routines)h(can)g
(also)g(op)q(erate)74 2390 y(on)g(groups)f(of)h(pro)q(cesses)g(that)f(are)h
(determined)h(dynamically)l(,)g(namely)l(,)g(in)f(run-time.)21
b(T)l(o)15 b(facilitate)74 2447 y(the)d(use)g(of)f(suc)o(h)h(groups)f(of)g
(pro)q(cesses,)h(CCL)g(includes)h(routines)f(that)f(enable)i(the)e
(de\014nition)j(and)d(the)74 2503 y(handling)18 b(of)e(dynamic)h(Pro)q(cess)f
(Groups.)22 b(Section)17 b(2)f(examines)h(issues)g(related)g(to)e(pro)q(cess)
i(groups)74 2560 y(in)f(CCL.)960 2727 y(2)p eop
%%Page: 3 3
bop 74 157 a Fn(CCL)19 b(is)h(a)f(soft)o(w)o(are)e(la)o(y)o(er)i(that)g(can)g
(sit)h(on)f(top)g(of)f(p)q(oin)o(t-to-p)q(oin)o(t)i(comm)o(unication.)33
b(A)19 b(crucial)74 214 y(step)g(in)h(the)f(design)h(of)f(CCL)g(w)o(as)f(to)g
(de\014ne)i(a)f(simple)i(and)e(realistic)h(mo)q(del)g(for)e(the)i(underlying)
74 270 y(p)q(oin)o(t-to-p)q(oin)o(t)f(comm)o(unication.)28
b(This)19 b(allo)o(ws)f(CCL)f(to)h(b)q(e)g(b)q(oth)g(p)q(ortable)g(and)g
(e\016cien)o(t)h(o)o(v)o(er)e(a)74 327 y(wide)c(range)f(of)g(parallel)i(mac)o
(hines.)20 b(This)13 b(mo)q(del)g(is)g(discussed)h(in)f(Section)g(3.)19
b(In)12 b(particular,)i(Section)74 383 y(3)f(examines)h(sev)o(eral)g
(fundamen)o(tal)f(issues)i(related)e(to)g(the)g(seman)o(tics)h(of)f
(collectiv)o(e)i(comm)o(unication)74 439 y(op)q(erations)g(o)o(v)o(er)g(Pro)q
(cess)g(Groups.)74 527 y(F)l(or)g(CCL)g(to)f(b)q(e)i(scalable)g(and)f
(e\016cien)o(t)h(on)f(a)g(v)m(ariet)o(y)g(of)g(parallel)h(mac)o(hines,)g(it)f
(is)h(imp)q(ortan)o(t)e(that)74 583 y(the)19 b(algorithms)g(designed)i(for)d
(collectiv)o(e)j(comm)o(unication)e(op)q(erations)h(are)e(tunable)i(and)f
(exploit)74 640 y(the)h(c)o(haracteristics)h(of)e(the)h(particular)h
(parallel)h(computer)e(in)h(a)e(w)o(a)o(y)g(that)h(is)g(hidden)i(from)d(the)
74 696 y(user.)h(In)c(Section)g(4,)e(w)o(e)h(address)g(issues)h(related)g(to)
e(the)h(design)i(of)d(tunable)i(algorithms)f(for)g(collec-)74
753 y(tiv)o(e)j(comm)o(unication)g(op)q(erations)g(in)g(CCL.)f(Finally)l(,)j
(in)e(Section)g(5)g(w)o(e)f(presen)o(t)g(some)g(concluding)74
809 y(remarks.)74 982 y Fm(2)69 b(Pro)r(cess)23 b(Groups)h(in)e(CCL)74
1115 y Fn(Pro)q(cess)12 b(Groups)f(is)h(a)g(mec)o(hanism)g(for)f(grouping)h
(pro)q(cesses)g(in)o(to)g(logical)h(sets)e(and)h(for)f(manipulating)74
1171 y(and)19 b(comm)o(unicating)h(among)e(pro)q(cesses)i(in)f(suc)o(h)h
(sets.)31 b(This)19 b(section)h(describ)q(es)g(the)f(concept)h(of)74
1228 y(Pro)q(cess)15 b(Groups)f(in)i(CCL,)e(whic)o(h)i(is)f(based)g(on)g(a)f
(similar)i(concept)g(that)e(w)o(as)g(presen)o(ted)h(in)h([2)o(].)j(\(In)74
1284 y(the)c(IBM)h(EUI)f(do)q(cumen)o(tation)h([21)o(],)f(Pro)q(cess)g
(Groups)f(are)h(called)i(T)l(ask)e(Groups.\))74 1435 y Fk(2.1)56
b(De\014ning)18 b(Pro)r(cess)g(Groups)74 1552 y Fn(A)13 b(Pro)q(cess)g(Group)
g(is)h(an)f(ordered)g(set)g(of)g(pro)q(cesses)g(that)g(has)g(a)g(system-wide)
g(unique)i(name.)k(It)13 b(can)74 1609 y(b)q(e)j(op)q(erated)e(up)q(on)i(as)e
(a)g(single)j(ob)s(ject.)i(Eac)o(h)14 b(Pro)q(cess)h(Group)f(is)h(iden)o
(ti\014ed)i(b)o(y)e(a)f(unique)j(Pro)q(cess)74 1665 y(Group)f(Iden)o
(ti\014er)i(\(PGID\))d(in)i(an)f(application)i(program.)k(All)17
b(the)g(pro)q(cesses)f(that)g(are)g(created)g(at)74 1721 y(the)d
(initialization)i(of)d(an)g(application)i(b)q(elong)g(to)d(the)i
(prede\014ned)h(Pro)q(cess)e(Group)g Fl(ALL)p Fn(.)g(In)h(addition,)74
1778 y(eac)o(h)i(pro)q(cess)h(has)f(a)f(unique)j(Pro)q(cess)e(Iden)o
(ti\014er)h(\(PID\))f(named)g Fl(mypid)g Fn(whic)o(h)h(could)g(b)q(e)f(iden)o
(ti\014ed)74 1834 y(with)h(the)f(singleton)h(set)f(consisting)h(only)g(of)f
(that)f(pro)q(cess.)74 1922 y(There)e(are)f(t)o(w)o(o)f(mec)o(hanisms)i(in)h
(CCL)e(for)g(de\014ning)i(new)f(Pro)q(cess)f(Groups.)19 b(One)12
b(mec)o(hanism)g(can)g(b)q(e)74 1978 y(used)g(to)f(de\014ne)i(a)f(new)g(Pro)q
(cess)f(Group)h(b)o(y)f(pro)o(viding)i(an)e(explicit)j(list)f(of)e(pro)q
(cess)h(iden)o(ti\014ers)h(\(PIDs\))74 2035 y(that)h(comprise)h(the)g(new)g
(Pro)q(cess)f(Group.)20 b(This)15 b(mec)o(hanism)g(requires)g(eac)o(h)g(mem)o
(b)q(er)g(pro)q(cess)g(of)f(a)74 2091 y(to-b)q(e-formed)j(new)f(Pro)q(cess)g
(Group)g(to)g(kno)o(w)g(the)g(PIDs)h(of)e(all)j(the)e(pro)q(cesses)h(that)e
(are)h(mem)o(b)q(ers)74 2148 y(of)f(this)g(group.)k(Using)d(this)f(mec)o
(hanism,)h(all)f(the)g(pro)q(cesses)h(that)e(comprise)h(a)g(new)g(Pro)q(cess)
g(Group)74 2204 y(m)o(ust)g(call)h(the)f Fl(group\(\))g Fn(routine:)146
2290 y Fl(pgid)23 b(=)h(group\(size,)e(list,)h(label\);)74
2377 y Fn(The)18 b(usage)g(of)g Fl(label)f Fn(will)i(b)q(ecome)g(clear)f
(later.)28 b(The)18 b(call)i(to)d Fl(group\(\))g Fn(m)o(ust)g(b)q(e)i(made)f
(b)o(y)f(eac)o(h)74 2433 y(mem)o(b)q(er)d(pro)q(cess)f(of)g(the)g(to-b)q
(e-formed)g(Pro)q(cess)g(Group,)g(and)h(eac)o(h)f(mem)o(b)q(er)g(pro)q(cess)h
(m)o(ust)e(supply)74 2490 y(the)19 b(same)g(list)g(of)g(PIDs)g(and)g(in)h
(the)f(same)f(order.)31 b(Pro)q(cesses)19 b(that)f(b)q(elong)i(to)e(the)h
(new)h(Pro)q(cess)74 2546 y(Group)e(obtain)g(a)f(unique)i(PGID)f(for)f(this)h
(group.)27 b(Pro)q(cesses)18 b(that)f(do)h(not)f(wish)i(to)e(b)q(e)h(part)f
(of)h(a)74 2602 y(new)e(Pro)q(cess)f(Group)g(do)g(not)g(call)h(the)f
Fl(group\(\))f Fn(routine.)960 2727 y(3)p eop
%%Page: 4 4
bop 74 157 a Fn(The)17 b(other)f(mec)o(hanism)h(for)f(de\014ning)h(new)g(Pro)
q(cess)f(Groups)g(in)i(CCL)e(is)h(b)o(y)f(partitioning)i(existing)74
214 y(Pro)q(cess)d(Groups)f(according)h(to)f(some)g(criteria.)20
b(This)15 b(mec)o(hanism)g(do)q(es)g(not)f(require)i(the)e(mem)o(b)q(ers)74
270 y(of)i(a)f(to-b)q(e-formed)i(Pro)q(cess)e(Group)h(to)f(kno)o(w)h(the)g
(PIDs)g(of)g(all)h(the)f(pro)q(cesses)g(that)f(will)j(comprise)74
327 y(this)g(group.)28 b(When)18 b(partitioning)g(an)g(existing)h(Pro)q(cess)
f(Group)f Fl(G)p Fn(,)g(sev)o(eral)h(new)g(Pro)q(cess)g(Groups)74
383 y(are)13 b(created)h(as)f(follo)o(ws.)20 b(Ev)o(ery)13
b(pro)q(cess)h(in)g(the)g(group)f Fl(G)g Fn(supplies)j(a)d(lo)q(cal)i(in)o
(teger)f(v)m(alue)h(to)e Fl(myval)p Fn(.)74 439 y(All)h(the)e(pro)q(cesses)h
(that)e(supply)j(the)e(same)g(v)m(alue)i(to)d Fl(myval)h Fn(are)g(made)g(mem)
o(b)q(ers)g(of)g(the)h(same)f(newly)74 496 y(partitioned)j(Pro)q(cess)g
(Group.)k(The)c(partitioning)g(of)f(an)h(existing)g(Pro)q(cess)g(Group)f(is)h
(p)q(erformed)g(b)o(y)74 552 y(the)g Fl(partition\(\))f Fn(routine:)146
640 y Fl(pgid)23 b(=)h(partition\(G,)e(myval,)h(key\);)74 728
y Fn(The)c(call)g(to)e Fl(partition\(\))g Fn(m)o(ust)h(b)q(e)h(made)f(b)o(y)g
(ev)o(ery)g(mem)o(b)q(er)g(of)g(the)h(existing)g(Pro)q(cess)f(Group)74
784 y Fl(G)p Fn(.)e(No)g(mem)o(b)q(er)h(of)f(the)g(existing)i(group)e
Fl(G)g Fn(returns)g(from)g(this)h(call)h(un)o(til)f(all)g(pro)q(cesses)g(in)h
(group)e Fl(G)74 841 y Fn(ha)o(v)o(e)i(made)h(the)g(call.)32
b(\(In)19 b(that)f(sense,)h(the)g(call)h(to)e Fl(partition\(\))f
Fn(imp)q(oses)j(an)e(implicit)j(barrier)74 897 y(sync)o(hronization)h(on)e
(the)h(mem)o(b)q(ers)g(of)f Fl(G)p Fn(\).)g(This)h(call)h(results)f(in)h
(partitioning)f(the)g(mem)o(b)q(ers)g(of)74 954 y(group)16
b Fl(G)f Fn(in)o(to)h(as)f(man)o(y)g(new)h(groups)f(as)g(the)h(n)o(um)o(b)q
(er)g(of)f(distinct)i(in)o(teger)f(v)m(alues)h(supplied)h(b)o(y)d(the)74
1010 y(mem)o(b)q(er)h(pro)q(cesses.)74 1098 y(A)e(pro)q(cess)g(can)g
(participate)h(in)f(sev)o(eral)g Fl(group\(\))f Fn(or)h Fl(partition\(\))e
Fn(calls)j(and,)f(th)o(us,)f(b)q(e)i(a)e(mem)o(b)q(er)74 1154
y(of)h(sev)o(eral)h(di\013eren)o(t)f(Pro)q(cess)g(Groups.)19
b(Eac)o(h)c(call)g(to)f Fl(group\(\))f Fn(or)h Fl(partition\(\))f
Fn(ma)o(y)g(corresp)q(ond)74 1211 y(to)19 b(creating)h(Pro)q(cess)f(Groups)h
(based)f(on)h(a)f(new)h(criterion.)34 b(Eac)o(h)19 b(suc)o(h)h(call,)i
(therefore,)e(creates)74 1267 y(unique)d(PGIDs)e(for)f(the)i(resultan)o(t)f
(groups.)74 1355 y(All)20 b(the)e(pro)q(cesses)g(that)g(b)q(elong)h(to)e(a)h
(particular)h(Pro)q(cess)f(Group)g Fl(G)p Fn(,)f(regardless)h(of)g(whether)g
(the)74 1411 y(group)e(w)o(as)e(created)i(b)o(y)g(calling)h
Fl(group\(\))e Fn(or)g Fl(partition\(\))p Fn(,)f(are)i(rank)o(ed)f(from)g(0)h
(to)f Fj(n)10 b Fi(\000)h Fn(1,)k(where)74 1467 y Fj(n)21 b
Fn(is)h(the)f(size)h(of)f(the)g(group.)37 b(The)22 b(ranking)f(of)g(the)g
(pro)q(cesses)g(in)h(a)f(Pro)q(cess)g(Group)g(that)f(w)o(as)74
1524 y(created)14 b(b)o(y)g(a)f(call)i(to)e Fl(group\(\))g
Fn(is)h(the)g(same)f(as)h(the)g(order)f(of)h(the)f(PIDs)h(in)h(the)f(list)g
(supplied)i(to)d(the)74 1580 y Fl(group\(\))i Fn(call.)24 b(The)16
b(ranking)g(of)g(the)g(pro)q(cesses)g(in)h(a)f(Pro)q(cess)g(Group)f(that)h(w)
o(as)f(created)h(b)o(y)g(a)f(call)74 1637 y(to)j Fl(partition\(\))g
Fn(is)h(determined)h(b)o(y)f(the)g(additional)i(parameter,)d
Fl(key)p Fn(,)h(that)f(is)i(supplied)h(to)d(the)74 1693 y Fl(partition\(\))f
Fn(call)i(as)f(an)g(input)h(argumen)o(t.)27 b(Ties)19 b(in)g(the)f(ranking)g
(as)g(a)g(consequence)h(of)f(calling)74 1750 y Fl(partition\(\))c
Fn(are)h(to)f(b)q(e)i(brok)o(en)f(b)o(y)g(pro)q(cesses')h(ranking)f(in)h(the)
f(paren)o(t)g(group.)74 1837 y(F)l(or)i(example,)i(supp)q(ose)f(that)f(there)
h(are)f(7)g(pro)q(cesses,)h(with)g(PID's)f(from)g(0)g(to)g(6)h(\(this)f(is)h
(the)g Fl(ALL)74 1894 y Fn(group\).)27 b(F)l(or)17 b(con)o(v)o(enience,)i(w)o
(e)f(refer)f(to)g(a)g(pro)q(cess)h(with)g(an)g(ev)o(en)g(\(resp.)27
b(o)q(dd\))18 b(PID)f(as)h(an)f Fh(even)74 1950 y Fn(\(resp.)34
b Fh(o)n(dd)p Fn(\))19 b(pro)q(cess.)34 b(Supp)q(ose)21 b(that)e(w)o(e)h(w)o
(an)o(t)e(to)h(create)h(the)g(follo)o(wing)g(t)o(w)o(o)f(t)o(yp)q(es)h(of)f
(groups)74 2007 y(while)i(main)o(taining)g(the)f(original)g(ordering:)29
b Fj(G)20 b Fn(in)g(eac)o(h)g(ev)o(en)g(pro)q(cess)g(is)g(de\014ned)h(as)e
(the)h(group)74 2063 y(that)c(consists)h(of)f(all)h(ev)o(en)g(pro)q(cesses)g
(and)g Fj(G)f Fn(in)h(eac)o(h)g(o)q(dd)g(pro)q(cess)f(is)h(de\014ned)h(as)e
(the)h(group)f(that)74 2120 y(consists)g(of)f(all)h(o)q(dd)g(pro)q(cesses.)22
b(There)15 b(are)h(t)o(w)o(o)e(w)o(a)o(ys)g(to)h(do)h(it.)21
b(The)16 b(\014rst)f(\(the)g(static\))g(is)h(to)f(ha)o(v)o(e)74
2176 y(the)g(follo)o(wing)h(co)q(de:)146 2264 y Fl(EXAMPLE)23
b(1:)146 2320 y(if)g(\(pid_is_even\(\)\))f({)217 2377 y(label)i(=)f(EVEN;)217
2433 y(G)h(=)g(group\(4,)f([0,2,4,6],)f(label\);)146 2490 y(})146
2546 y(else)h({)217 2602 y(label)h(=)f(ODD;)960 2727 y Fn(4)p
eop
%%Page: 5 5
bop 217 157 a Fl(G)24 b(=)g(group\(3,)f([1,3,5],)f(label\);)146
214 y(})74 305 y Fn(The)16 b(second)f(approac)o(h)g(\(the)g(dynamic\))h(is)g
(to)e(use)i Fl(partition)p Fn(.)i(The)e(co)q(de)f(in)i(this)e(case)g(is:)146
397 y Fl(G)23 b(=)h(partition\(ALL,)e(is_mypid_odd,)g(key\);)74
489 y Fn(Consider)d(another)e(example)i(where)f(all)h(pro)q(cesses)f(are)g
(partitioned)g(in)o(to)g(t)o(w)o(o)f(groups)g(dep)q(ending)74
545 y(on)e(some)g(lo)q(cally)i(computed)f(v)m(alue)g(\(temp)q(erature\).)j
(The)d(co)q(de)f(lo)q(oks)h(lik)o(e:)146 637 y Fl(EXAMPLE)23
b(2:)146 693 y(if)g(\(temperature)g(<)g(BOILING\))217 750 y(myval)h(=)f
(COLD;)146 806 y(else)217 863 y(myval)h(=)f(HOT;)146 919 y(key)g(=)h
(temperature;)146 976 y(G)f(=)h(partition\(ALL,)e(myval,)h(key\);)74
1067 y Fn(In)16 b(this)f(example,)h(eac)o(h)f(of)f(the)h(t)o(w)o(o)f(newly)i
(formed)f(groups)f(is)i(sorted)e(according)i(to)e(the)h(ascending)74
1124 y(order)g(of)g Fl(key)p Fn(,)f(whic)o(h)i(w)o(as)f(assigned)g(the)h(in)o
(teger)f(v)m(alue)i(of)d(temp)q(erature.)74 1211 y(CCL)j(also)g(pro)o(vides)g
(utilit)o(y)i(routines)e(for)f(pro)q(cesses)i(to)e(determine)i(the)f(size)h
(of)e(a)h(Pro)q(cess)g(Group)74 1268 y(\()p Fl(getsize\(G\))p
Fn(\),)f(to)i(obtain)h(the)g(list)h(of)e(PIDs)g(in)i(a)e(giv)o(en)h(Pro)q
(cess)g(Group)f(\()p Fl(getmembers\(G\))p Fn(\),)e(to)74 1324
y(query)f(the)f(rank)g(of)g(a)g(pro)q(cess)h(in)g(a)f(Pro)q(cess)h(Group)f
(\()p Fl(getrank\(G,)22 b(pid\))p Fn(\),)13 b(and)i(to)e(query)i(the)f(PID)74
1381 y(of)j(a)g(pro)q(cess)h(with)f(a)h(giv)o(en)f(rank)g(in)i(a)e(Pro)q
(cess)g(Group)g(\()p Fl(getpid\(G,)22 b(rank\))p Fn(\).)k(Finally)l(,)19
b(the)e(user)74 1437 y(can)d(call)i Fl(getlabel\(G\))c Fn(to)i(obtain)g(the)g
Fl(label)g Fn(supplied)i(to)e Fl(group\(\))f Fn(and)h(the)g
Fl(my)p 1550 1437 15 2 v 17 w(val)g Fn(supplied)i(to)74 1494
y Fl(partition\(\))p Fn(.)74 1646 y Fk(2.2)56 b(Using)18 b(Pro)r(cess)g
(Groups)74 1763 y Fn(Once)f(established,)g(Pro)q(cess)f(Groups)f(allo)o(w)h
(en)o(tire)g(collections)i(of)d(pro)q(cesses)h(to)f(b)q(e)i(iden)o(ti\014ed)g
(and)74 1819 y(manipulated)k(in)f(a)g(single)g(call.)34 b(Note)20
b(that)e(when)i(di\013eren)o(t)g(actions)g(are)f(required)h(for)f(di\013eren)
o(t)74 1876 y(disjoin)o(t)f(groups,)e(the)h(user)g(can)g(use)g
Fl(label)f Fn(to)g(distinguish)j(groups.)24 b(F)l(or)16 b(example,)i(the)f
(follo)o(wing)74 1932 y(co)q(de)f(ma)o(y)e(follo)o(w)i(the)f(co)q(de)h(of)f
(Example)g(1)g(ab)q(o)o(v)o(e.)146 2024 y Fl(if)23 b(\(getlabel\(G\))g(==)g
(EVEN\))g({)217 2080 y(code-segment-1;)146 2137 y(})146 2193
y(else)47 b({)217 2250 y(code-segment-2;)146 2306 y(})74 2398
y Fn(As)15 b(another)g(example,)h(the)f(follo)o(wing)h(co)q(de)g(ma)o(y)e
(follo)o(w)i(the)f(co)q(de)h(of)e(Example)i(2)f(ab)q(o)o(v)o(e.)146
2490 y Fl(if)23 b(\(getlabel\(G\))g(==)g(COLD\))g({)217 2546
y(code-segment-1;)146 2602 y(})960 2727 y Fn(5)p eop
%%Page: 6 6
bop 146 157 a Fl(else)23 b({)217 214 y(code-segment-2;)146
270 y(})74 365 y Fn(A)e(group-wide)h(transaction)f(of)f(particular)i(in)o
(terest)f(is)h(collectiv)o(e)g(comm)o(unication)g(o)o(v)o(er)e(all)i(the)74
421 y(mem)o(b)q(ers)15 b(of)f(a)h(Pro)q(cess)f(Group.)19 b(F)l(or)c(example,)
g(a)f(group-wide)i(reduction)f(op)q(eration,)g(whic)o(h)g(tak)o(es)74
478 y(the)g(PGID)g(of)g(a)g(Pro)q(cess)g(Group)g(as)g(a)g(parameter,)f(can)h
(b)q(e)h(written)f(as:)146 573 y Fl(combine\(G,)22 b(rfunc\(\),)h(data,)g
(result\);)74 668 y Fn(Suc)o(h)15 b(a)e(routine)i(could)g(implemen)o(t)g(a)e
(reduction,)i(using)g(a)e(supplied)k(asso)q(ciativ)o(e)d(function)h
Fl(rfunc\(\))74 724 y Fn(to)21 b(com)o(bine)i(data)e(from)g(the)h(mem)o(b)q
(ers)g(of)g(Pro)q(cess)f(Group)h Fl(G)p Fn(,)f(and)h(return)g(the)g(\014nal)h
(result)f(of)74 781 y(the)17 b(reduction)h(to)f(eac)o(h)g(mem)o(b)q(er)g(in)h
(the)f(bu\013er)g Fl(result)p Fn(.)24 b(All)19 b(pro)q(cesses)e(in)h(the)f
(group)g(mak)o(e)f(the)74 837 y(call)k(with)f(the)g(same)f(actual)h
(parameters)f Fl(G)g Fn(and)h Fl(rfunc\(\))p Fn(.)29 b(Similarly)l(,)22
b(a)c(group-wide)h(broadcast)74 894 y(op)q(eration)d(can)f(b)q(e)h(written)f
(as:)146 989 y Fl(bcast\(G,)23 b(orig,)g(data\);)74 1084 y
Fn(This)14 b(routine)f(w)o(ould)g(implemen)o(t)h(a)f(broadcast)f(comm)o
(unication)h(from)f(a)h(particular)g(mem)o(b)q(er)g(of)f(the)74
1140 y(Pro)q(cess)j(Group)f Fl(G)p Fn(,)f(whose)i(PID)f(is)h
Fl(orig)p Fn(,)f(to)f(all)j(of)e(the)g(other)g(mem)o(b)q(ers)h(of)f
Fl(G)p Fn(.)g(All)h(pro)q(cesses)g(in)g(the)74 1196 y(group)g(mak)o(e)g(the)g
(call)h(with)g(the)f(same)g(actual)g(parameters)g Fl(G)g Fn(and)g
Fl(orig)p Fn(.)74 1284 y(A)j(participating)h(pro)q(cess)f(can)h(pro)q(ceed)f
(past)g(the)g(call)h(to)e(the)h(collectiv)o(e)i(comm)o(unication)f(imme-)74
1341 y(diately)i(after)e(it)h(has)f(\014nished)i(its)f(participation)h(in)g
(it)e(\(ev)o(en)h(though)g(the)f(comm)o(unication)i(as)e(a)74
1397 y(whole)e(ma)o(y)e(still)i(b)q(e)g(in)g(progress\).)k(F)l(or)16
b(example)g(in)h(a)f(grid-t)o(yp)q(e)h(problem)f(domain,)g(consider)h(the)74
1453 y(sequence)g(of)d(calls:)146 1548 y Fl(row_pgid)23 b(=)g
(partition\(grid_pgid,)e(row_id,)i(key\))146 1605 y(col_pgid)g(=)g
(partition\(grid_pgid,)e(col_id,)i(key\))146 1661 y(bcast\(row_pgid,)f
(orig1,)h(data1\);)146 1718 y(bcast\(col_pgid,)f(orig2,)h(data2\);)74
1813 y Fn(where)12 b Fl(row)p 277 1813 15 2 v 17 w(pgid)e Fn(and)i
Fl(col)p 557 1813 V 17 w(pgid)e Fn(represen)o(t)i(t)o(w)o(o)e(Pro)q(cess)h
(Groups)g(for)g(eac)o(h)g(of)g(the)h(pro)q(cesses)f(in)o(v)o(ok-)74
1869 y(ing)17 b(the)f(t)o(w)o(o)e Fl(partition\(\))h Fn(calls.)23
b(Since)17 b Fl(row)p 910 1869 V 17 w(pgid)e Fn(and)h Fl(col)p
1199 1869 V 17 w(pgid)f Fn(are)h(not)g(disjoin)o(t,)g(the)g(second)74
1926 y(broadcast)c(op)q(eration)h(ma)o(y)f(b)q(e)i(partially)g(completed)g
(in)f(parallel)i(with)e(the)g(\014rst)f(one.)20 b(The)13 b(program)74
1982 y(execution)g(order)f(guaran)o(tees)f(that)h(the)g(pro)q(cesses)g(in)h
Fl(row)p 1102 1982 V 17 w(pgid)f Fi(\\)g Fl(col)p 1341 1982
V 17 w(pgid)f Fn(will)j(reac)o(h)e(the)g(second)74 2038 y(broadcast)18
b(only)i(after)e(they)h(\014nish)h(their)f(participation)h(in)g(the)f
(\014rst)g(broadcast.)30 b(CCL)19 b(prev)o(en)o(ts)74 2095
y(p)q(ossible)e(mixing)f(of)f(messages)f(b)q(et)o(w)o(een)i(the)f(t)o(w)o(o)f
(broadcast)g(op)q(erations)h(b)o(y)g(using)h(seman)o(tics)f(and)74
2151 y(prop)q(erties)22 b(describ)q(ed)h(in)f(Section)g(3)f(so)g(that)g(the)g
(underlying)i(comm)o(unication)f(subsystem)f(can)74 2208 y(distinguish)c(b)q
(et)o(w)o(een)f(the)f(t)o(w)o(o)f(messages.)74 2361 y Fk(2.3)56
b(Unique)18 b(Pro)r(cess)g(Groups)h(Iden)n(ti\014ers)74 2478
y Fn(The)h(actual)f(v)m(alue)i(of)e(a)g(PGID)g(is)h(determined)g(b)o(y)g
(CCL,)f(and)g(user)h(co)q(de)g(that)e(dep)q(ends)j(on)e(the)74
2534 y(actual)e(v)m(alue)g(of)f(a)g(PGID)g(\(suc)o(h)h(as)f(branc)o(hing)h
(based)g(on)f(the)g(v)m(alue)i(of)e(a)g(PGID\))g(is)g(not)g(allo)o(w)o(ed.)74
2591 y(That)h(is,)i(suc)o(h)f(co)q(de)g(ma)o(y)f(op)q(erate)g(correctly)h
(with)g(one)g(implemen)o(tation)h(of)e(CCL)h(and)g(not)f(with)960
2727 y(6)p eop
%%Page: 7 7
bop 74 157 a Fn(another.)19 b(On)c(the)g(other)f(hand,)h(the)g(user)f(is)h
(allo)o(w)o(ed)g(to)f(c)o(hec)o(k)h(equalit)o(y)g(of)f(PGIDs)h(and)f(to)g
(include)74 214 y(PGIDs)e(in)h(messages)e(sen)o(t)h(from)f(one)i(pro)q(cess)f
(to)f(another.)19 b(As)12 b(a)g(result,)g(CCL)g(m)o(ust)g(guaran)o(tee)f
(that)74 270 y(all)19 b(the)f(pro)q(cesses)h(in)f(a)g(single)h(Pro)q(cess)f
(Group)g(use)g(the)g(same)g(system-wide)h(unique)g(PGID,)e(and)74
327 y(that)c(distinct)j(Pro)q(cess)e(Groups)f(ha)o(v)o(e)h(distinct)h(PGIDs)f
(\(whether)g(or)f(not)h(they)g(ha)o(v)o(e)f(an)o(y)h(pro)q(cesses)74
383 y(in)i(common\).)74 471 y(W)l(e)h(no)o(w)e(describ)q(e)j(a)e(simple)i
(mec)o(hanism)f(for)f(generating)g(PGIDs)g(that)f(are)h(system-wide)h
(unique.)74 527 y(Eac)o(h)c(pro)q(cess)g(main)o(tains)h(a)e(lo)q(cal)i(coun)o
(ter,)f(whic)o(h)h(is)g(initialized)i(to)c(0.)19 b(Logically)l(,)c(a)e(PGID)f
(consists)74 583 y(of)g(t)o(w)o(o)g(\014elds:)19 b Fl(\(counter,)k(pid\))p
Fn(.)18 b(When)13 b(a)g(new)g(Pro)q(cess)f(Group)g(is)h(created,)g(the)g(pro)
q(cess)g(that)f(has)74 640 y(rank)17 b(0)h(in)g(this)g(group)g(determines)g
(the)g(PGID)f(b)o(y)h(pairing)g(its)g(lo)q(cal)h(coun)o(ter)e(and)h(its)g
(PID.)f(This)74 696 y(pro)q(cess)h(broadcasts)f(the)g(v)m(alue)i(of)e(the)h
(PGID)f(to)g(all)h(the)g(pro)q(cesses)g(in)g(the)g(Pro)q(cess)f(Group,)g(and)
74 753 y(it)e(then)g(incremen)o(ts)g(its)g(lo)q(cal)h(coun)o(ter.)k(This)15
b(sc)o(heme)g(guaran)o(tees)f(system-wide)h(uniqueness)h(of)f(all)74
809 y(the)g(PGIDs)g(in)h(CCL.)74 897 y(The)j(implemen)o(tation)h(of)e(the)h
(ab)q(o)o(v)o(e)g(mec)o(hanism)g(in)g(CCL)g(is)g(sligh)o(tly)h(di\013eren)o
(t.)31 b(Because)19 b(most)74 953 y(existing)i(comm)o(unication)f(subsystems)
g(ha)o(v)o(e)f(relativ)o(ely)i(large)f(start-up)f(costs)h(compared)f(to)g
(the)74 1010 y(transfer)d(times,)h(CCL)g(app)q(ends)h(the)f(v)m(alue)h(of)e
(the)h(lo)q(cal)h(coun)o(ter)f(of)f(eac)o(h)h(pro)q(cess)g(to)f(the)h(con)o
(trol)74 1066 y(information)e(comm)o(unicated)f(during)i(the)e(setup)h(of)e
(a)h(Pro)q(cess)h(Group.)k(This)c(eliminates)h(the)e(extra)74
1123 y(comm)o(unication)h(steps)g(needed)h(for)e(broadcasting)g(the)h(PID)g
(and)f(the)h(coun)o(ter)f(of)h(the)f(pro)q(cess)h(with)74 1179
y(rank)f(0,)g(since)h(eac)o(h)f(pro)q(cess)g(has)g(all)h(the)f(information)h
(needed)g(to)e(calculate)j(the)e(PGID)f(of)h(the)g(new)74 1236
y(Pro)q(cess)h(Group)g(to)g(whic)o(h)h(it)f(b)q(elongs.)74
1388 y Fk(2.4)56 b(Common)17 b(Group)h(Structure)g(Routines)74
1505 y Fn(Recen)o(tly)l(,)25 b(a)d(set)g(of)g(Common)g(Group)g(Structure)g
(\(CGS\))g(routines)g(has)h(b)q(een)g(prop)q(osed)g(as)f(an)74
1562 y(extension)c(to)f(CCL)g([8].)25 b(The)18 b(CGS)f(routines)h(mak)o(e)e
(use)i(of)f(pro)q(cess)h(group)f(routines)g(for)g(de\014ning)74
1618 y(pro)q(cess)i(groups)g(that)f(arise)h(in)h(algorithms)f(with)g(grid)h
(and)f(h)o(yp)q(ercub)q(e)i(structures.)30 b(Once)20 b(these)74
1675 y(grid-structured)j(and)f(h)o(yp)q(ercub)q(e-structured)h(groups)f(ha)o
(v)o(e)f(b)q(een)i(de\014ned,)i(the)d(standard)f(CCL)74 1731
y(routines)g(can)g(b)q(e)g(used)g(within)g(the)g(structured)f(groups)h(to)e
(p)q(erform)i(collectiv)o(e)h(comm)o(unication)74 1788 y(op)q(erations.)27
b(The)18 b(CGS)f(routines)h(also)f(include)j(utilities)g(for)c(con)o(v)o
(erting)i(b)q(et)o(w)o(een)g(1-dimensional)74 1844 y(and)e
(higher-dimensional)i(addresses.)74 1932 y(As)k(an)h(example,)h(the)f
Fg(F)o(ORM2DGRID)f Fn(routine)h(tak)o(es)e(an)h(existing)i(group,)f(views)g
(it)g(as)f(an)74 1988 y Fj(X)14 b Fi(\002)e Fj(Y)27 b Fn(2D-grid)17
b(\(where)f Fj(X)k Fn(and)d Fj(Y)27 b Fn(are)17 b(sp)q(eci\014ed)i(b)o(y)d
(the)h(user\),)g(and)f(partitions)h(it)g(in)o(to)g(a)f(set)h(of)74
2045 y(nono)o(v)o(erlapping)j(groups)f(corresp)q(onding)h(to)f(the)g(columns)
h(of)f(a)g(t)o(w)o(o-dimensional)h(grid)f(and)h(also)74 2101
y(in)o(to)e(a)f(set)g(of)g(nono)o(v)o(erlapping)h(groups)g(corresp)q(onding)g
(to)f(the)g(ro)o(ws)g(of)g(a)g(t)o(w)o(o-dimensional)i(grid.)74
2158 y(Th)o(us,)c(eac)o(h)g(pro)q(cess)h(receiv)o(es)g(t)o(w)o(o)e(new)h
(PGIDs,)g(one)g(for)g(the)g(column)h(in)g(whic)o(h)g(it)g(is)f(lo)q(cated)h
(and)74 2214 y(one)f(for)g(the)g(ro)o(w)g(in)h(whic)o(h)g(it)f(is)h(lo)q
(cated)g(in)g(the)f(t)o(w)o(o-dimensional)h(grid.)74 2388 y
Fm(3)69 b(Seman)n(tic)21 b(Issues)i(in)f(CCL)74 2521 y Fn(This)e(section)f
(discusses)h(sev)o(eral)f(issues)h(related)f(to)f(the)h(seman)o(tics)g(of)f
(p)q(oin)o(t-to-p)q(oin)o(t)i(comm)o(uni-)74 2577 y(cation)g(and)g(of)f
(collectiv)o(e)j(comm)o(unication)e(op)q(erations)g(on)g(Pro)q(cess)f
(Groups.)33 b(These)20 b(issues)h(are)960 2727 y(7)p eop
%%Page: 8 8
bop 74 157 a Fn(fundamen)o(tal)16 b(to)e(the)i(design)g(of)f(CCL)g(and)g(of)g
(similar)h(libraries.)74 310 y Fk(3.1)56 b(Send)18 b(and)i(Receiv)n(e)c
(Seman)n(tics)74 427 y Fn(In)21 b(order)f(for)g(CCL)g(to)g(b)q(e)h(p)q
(ortable,)g(it)g(is)g(imp)q(ortan)o(t)e(that)h(it)g(is)h(based)g(on)f(a)g
(simple)i(mo)q(del)f(of)74 483 y(p)q(oin)o(t-to-p)q(oin)o(t)16
b(comm)o(unication)g(that)e(is)i(a)o(v)m(ailable)h(on)e(a)g(wide)h(range)f
(of)g(mac)o(hines.)74 571 y(The)f(basic)h(mo)q(del)f(of)g(p)q(oin)o(t-to-p)q
(oin)o(t)g(comm)o(unication)h(consists)f(of)f(a)h(single)h
Fl(send)e Fn(op)q(eration)h(and)g(a)74 627 y(single)i Fl(receive)d
Fn(op)q(eration.)20 b(It)14 b(is)h(assumed)f(that)g(a)g(pro)q(cess)g(can)h
(send/receiv)o(e)g(to/from)e(an)o(y)h(other)74 684 y(pro)q(cess)g(in)g(the)g
(parallel)h(mac)o(hine.)20 b(Namely)l(,)14 b(there)f(is)h(no)g(notion)f(of)g
(a)h(top)q(ology)f(at)f(this)i(lev)o(el.)21 b(This)74 740 y(mo)q(del)14
b(is)f(called)i(a)d(fully-connected)j(mo)q(del.)20 b(In)14
b(addition)g(it)f(is)g(assumed)g(that)f(the)h(send)h(and)f(receiv)o(e)74
797 y(op)q(erations)i(ha)o(v)o(e)g(the)h(follo)o(wing)f(four)g(prop)q
(erties:)74 884 y(\(1\))h(The)h(op)q(erations)g(are)f(blo)q(c)o(king,)i
(namely)l(,)g(a)e Fh(blo)n(cking)h(send)j Fn(op)q(eration)d(and)g(a)g
Fh(blo)n(cking)f(r)n(e)n(c)n(eive)74 941 y Fn(op)q(eration)e(are)g(used.)20
b(The)14 b(blo)q(c)o(king)i(send)f(op)q(eration)f(is)g(a)g
Fl(send)g Fn(that)f(do)q(es)h(not)g(return)g(to)f(the)h(user)74
997 y(un)o(til)k(the)g(message)e(has)h(b)q(een)i(copied)f(out)f(of)f(the)i
(user's)f(bu\013er.)25 b(It)17 b(should)i(b)q(e)e(p)q(oin)o(ted)h(out)f(that)
74 1054 y Fh(blo)n(cking)e(send)20 b Fn(is)c(di\013eren)o(t)g(from)f
Fh(synchr)n(onous)h(send)f Fn(in)h(whic)o(h)h(the)f Fl(send)f
Fn(do)q(es)h(not)f(return)g(to)g(the)74 1110 y(user)g(un)o(til)h(a)f(matc)o
(hing)g Fl(receive)f Fn(op)q(eration)h(has)g(b)q(een)h(issued.)1217
1094 y Ff(1)1258 1110 y Fn(The)f(blo)q(c)o(king)h(receiv)o(e)g(op)q(eration)
74 1167 y(is)g(a)f Fl(receive)g Fn(that)g(do)q(es)g(not)h(return)f(to)g(the)g
(user)h(un)o(til)h(the)e(requested)h(message)f(has)h(arriv)o(ed)f(and)74
1223 y(has)g(b)q(een)i(placed)f(in)g(the)f(user's)g(bu\013er.)74
1311 y(\(2\))20 b(The)g(receiv)o(e)i(op)q(eration)f(is)g(a)f
Fh(r)n(e)n(c)n(eive-by-sour)n(c)n(e)p Fn(,)g(where)h(the)f(receiv)o(er)h(sp)q
(eci\014es)i(the)d(desired)74 1367 y(source)e(of)f(the)h(message.)27
b(Only)19 b(a)f(message)f(from)g(the)h(sp)q(eci\014ed)i(source)d(can)h(b)q(e)
h(deliv)o(ered)g(to)e(the)74 1424 y(receiv)o(er.)26 b(The)17
b(desired)h(source)f(m)o(ust)f(alw)o(a)o(ys)g(b)q(e)i(sp)q(eci\014ed)h(and)e
(the)g(use)g(of)f(a)h(wildcard)h(v)m(alue)g(for)74 1480 y(the)d(source)h
(parameter)e(is)i(not)f(allo)o(w)o(ed.)74 1568 y(\(3\))g(P)o(oin)o(t-to-p)q
(oin)o(t)h(comm)o(unication)h(b)q(et)o(w)o(een)f(an)o(y)g(t)o(w)o(o)f(pro)q
(cesses)h(is)h(required)g(to)f(b)q(e)g(FIF)o(O)g(suc)o(h)74
1624 y(that)j(m)o(ultiple)i(messages)e(sen)o(t)g(from)g(one)h(pro)q(cess)f
(to)g(another)g(are)g(receiv)o(ed)i(in)f(the)g(same)f(order)74
1681 y(in)h(whic)o(h)h(they)e(w)o(ere)g(sen)o(t.)33 b(Ho)o(w)o(ev)o(er,)19
b(the)g Fl(send)g Fn(and)h Fl(receive)e Fn(op)q(erations)i(are)f(async)o
(hronous,)74 1737 y(in)i(the)f(sense)h(that)e(no)h(b)q(ounds)h(are)e(assumed)
h(on)g(the)g(relativ)o(e)h(sp)q(eeds)g(of)e(the)i(pro)q(cesses)f(or)f(the)74
1794 y(time)c(required)g(to)e(pass)h(messages)g(b)q(et)o(w)o(een)g(pro)q
(cesses.)20 b(F)l(urthermore,)13 b(the)h(basic)h(mo)q(del)g(mak)o(es)f(no)74
1850 y(assumptions)j(regarding)g(whether)g(or)g(not)f(the)h(system)g(pro)o
(vides)g(bu\013ering)g(of)g(messages)f(b)q(et)o(w)o(een)74
1906 y(a)j(sender)g(and)g(a)g(receiv)o(er.)31 b(Th)o(us,)20
b(a)e(blo)q(c)o(king)j(send)e(op)q(eration)g(ma)o(y)f(or)h(ma)o(y)f(not)g
(blo)q(c)o(k)i(un)o(til)g(a)74 1963 y(matc)o(hing)15 b(receiv)o(e)i(is)e
(issued.)74 2050 y(\(4\))g(Di\013eren)o(t)g Fl(send)g Fn(op)q(erations)h
(issued)h(from)d(m)o(ultiple)k(source)d(pro)q(cesses)h(to)f(a)h(single)h
(destination)74 2107 y(pro)q(cess)i(are)e Fh(non-interfering)p
Fn(.)28 b(This)19 b(means)f(that)f(the)h(existence)i(of)d(messages)h(that)g
(the)g(receiv)o(er)74 2163 y(do)q(es)e(not)f(wish)h(to)f(select)h(\(b)q
(ecause)g(these)g(messages)f(do)g(not)g(matc)o(h)g(the)h(source)f(\014eld)i
(sp)q(eci\014ed)h(b)o(y)74 2220 y(the)g Fl(receive)e Fn(op)q(eration\))i
(cannot)f(prev)o(en)o(t)g(the)h(reception)g(of)f(a)h(message)f(that)f(the)i
(receiv)o(er)g(do)q(es)74 2276 y(wish)d(to)g(receiv)o(e.)20
b(F)l(or)14 b(example,)i(if)f(pro)q(cesses)g(1)f(through)h
Fj(n)9 b Fi(\000)h Fn(1)k(eac)o(h)h(sends)g(a)g(message)f(to)g(pro)q(cess)74
2333 y(0)h(and)h(if)g(pro)q(cess)g(0)f(issues)h(a)g Fl(receive)e
Fn(in)j(order)e(to)g(receiv)o(e)h(a)f(message)g(from)g(pro)q(cess)h
Fj(n)11 b Fi(\000)f Fn(1,)15 b(then)74 2389 y(this)g Fl(receive)e
Fn(op)q(eration)i(will)h(get)d(the)i(message)f(sen)o(t)g(from)f(pro)q(cess)i
Fj(n)8 b Fi(\000)h Fn(1)14 b(ev)o(en)h(if)f(all)i(of)e(the)g(other)74
2446 y(messages)20 b(w)o(ere)h(sen)o(t)f(earlier.)38 b(While)22
b(this)f(non-in)o(terference)h(prop)q(ert)o(y)e(seems)h(v)o(ery)g(natural,)g
(it)74 2502 y(could)f(b)q(e)g(violated)f(b)o(y)g(a)g(system)f(that)g(stores)h
(messages)f(in)i(bu\013ers)e(on)h(the)g(receiv)o(er)h(side,)g(since)p
74 2542 718 2 v 126 2569 a Fe(1)143 2584 y Fd(Some)14 b(researc)o(hers)g(use)
f(the)g(term)g Fc(blo)n(cking)e(send)k Fd(to)e(indicate)i(what)e(w)o(e)g(ha)o
(v)o(e)g(de\014ned)h(as)g Fc(synchr)n(onou)o(s)d(send)p Fd(.)960
2727 y Fn(8)p eop
%%Page: 9 9
bop 74 157 a Fn(suc)o(h)21 b(bu\013ers)g(could)g(b)q(e)h(\014lled)g(b)o(y)f
(messages)f(other)g(than)g(the)h(one)g(that)f(the)g(receiv)o(er)i(selects)f
(to)74 214 y(receiv)o(e.)74 301 y(P)o(arallel)c(co)q(de)f(that)g(uses)g
(message-passing)g(comm)o(unication)g(with)g(these)g(four)g(prop)q(erties)g
(is)h Fh(r)n(ac)n(e-)74 358 y(fr)n(e)n(e)p Fn(:)g(there)10
b(is)h(a)f(unique)i(p)q(ossible)g(matc)o(hing)e(of)g(sends)h(to)e(receiv)o
(es,)j(and)e(a)g(unique)i(p)q(ossible)g(successful)74 414 y(execution,)i
(indep)q(enden)o(t)g(of)e(the)g(relativ)o(e)g(sp)q(eeds)h(of)f(the)g(pro)q
(cesses)g(and)h(the)f(comm)o(unication)h(in)f(the)74 471 y(system.)18
b(Co)q(de)11 b(that)f(is)h(written)f(to)g(b)q(e)h(p)q(ortable)g(mak)o(es)f
(no)g(assumption)h(on)g(the)f(amoun)o(t)g(of)g(bu\013ering)74
527 y(pro)o(vided)k(b)o(y)f(the)g(comm)o(unication)h(system;)f(it)h(needs)g
(to)e(w)o(ork)g(ev)o(en)i(if)f(eac)o(h)h(send)f(op)q(eration)h(blo)q(c)o(ks)
74 583 y(un)o(til)k(a)f(matc)o(hing)h(receiv)o(e)g(is)f(executed)i(\(i.e.,)e
(comm)o(unication)h(is)f(sync)o(hronous\).)26 b(The)17 b(execution)74
640 y(of)e(suc)o(h)g Fh(safe)f Fn(co)q(de)i(is)f(deterministic:)22
b(if)15 b(the)g(program)f(deadlo)q(c)o(ks)i(on)f(some)f(implemen)o(tation,)i
(then)74 696 y(it)g(alw)o(a)o(ys)e(deadlo)q(c)o(ks.)74 784
y(Although)k(the)g(basic)h(mo)q(del)g(of)e(p)q(oin)o(t-to-p)q(oin)o(t)h(comm)
o(unication)h(de\014ned)g(ab)q(o)o(v)o(e)e(is)i(su\016cien)o(t)f(for)74
840 y(implemen)o(ting)12 b(all)g(of)e(the)g(CCL)h(routines,)g(the)g(actual)f
(implemen)o(tation)i(of)e(CCL)g(uses)h(t)o(w)o(o)e(additional)74
897 y(features)j(that)g(are)g(found)h(in)g(man)o(y)f(systems.)19
b(These)13 b(t)o(w)o(o)e(features)h(are)g(a)g Fl(send-receive)f
Fn(op)q(eration)74 953 y(and)18 b(the)g(usage)g(of)f(message)g(tags)686
937 y Ff(2)705 953 y Fn(.)27 b(W)l(e)18 b(next)g(discuss)h(these)f(t)o(w)o(o)
e(additional)k(features)d(and)h(their)74 1010 y(merits)d(in)h(implemen)o
(ting)i(CCL.)74 1097 y(The)f Fl(send-receive)e Fn(op)q(eration)i(sim)o
(ultaneously)h(sends)f(a)f(message)g(to)g(one)h(pro)q(cess)g(and)g(receiv)o
(es)74 1154 y(a)22 b(message)g(from)f(another)h(pro)q(cess)h(without)f
(requiring)i(additional)f(bu\013er)g(space)f(for)g(either)h(of)74
1210 y(the)17 b(messages.)25 b(CCL)17 b(uses)h(the)f Fl(send-receive)e
Fn(op)q(eration)j(for)e(implemen)o(ting)j Fl(shift)d Fn(op)q(erations)74
1267 y(within)23 b(Pro)q(cess)f(Groups.)38 b(The)22 b Fl(shift)f
Fn(op)q(eration)h(ma)o(y)f(create)g(a)g(cycle)i(of)e(pro)q(cesses,)i(eac)o(h)
f(of)74 1323 y(whic)o(h)c(is)g(sending)h(a)e(message)g(to)g(its)h(successor)f
(in)i(the)e(cycle)i(and)e(receiving)i(a)f(message)f(from)f(its)74
1380 y(predecessor)h(in)g(the)f(cycle.)24 b(If)17 b(a)f Fl(send-receive)e
Fn(op)q(eration)i(is)h(not)f(used,)h(then)f(the)g Fl(send)g
Fn(and)g(the)74 1436 y Fl(receive)f Fn(op)q(erations)h(m)o(ust)f(b)q(e)h
(paired)g(carefully)h(to)e(a)o(v)o(oid)g(deadlo)q(c)o(ks.)22
b(\(A)16 b(deadlo)q(c)o(k)g(can)g(o)q(ccur)g(if)74 1493 y Fl(send)d
Fn(op)q(erations)h(are)f(forced)h(to)f(w)o(ait)g(for)g(matc)o(hing)h
Fl(receive)e Fn(op)q(erations)i(that)f(are)g(nev)o(er)h(issued.\))74
1549 y(F)l(or)i(example,)h(to)e(a)o(v)o(oid)h(deadlo)q(c)o(ks)h(in)g
Fl(shift)f Fn(op)q(erations,)g(one)g(can)h(pair)f(the)h Fl(send)e
Fn(and)i Fl(receive)74 1606 y Fn(op)q(erations,)k(if)g(the)f(cycle)i(is)e(of)
g(ev)o(en)g(length,)i(as)e(follo)o(ws.)35 b(Pro)q(cesses)20
b(in)h(ev)o(en)f(p)q(ositions)h(in)g(the)74 1662 y(cycle)16
b(w)o(ould)f(p)q(erform)g(a)f Fl(send)g Fn(follo)o(w)o(ed)h(b)o(y)g(a)f
Fl(receive)p Fn(,)f(while)k(pro)q(cesses)e(in)g(o)q(dd)g(p)q(ositions)h(in)f
(the)74 1718 y(cycle)h(w)o(ould)f(p)q(erform)f(a)h Fl(receive)e
Fn(follo)o(w)o(ed)i(b)o(y)g(a)f Fl(send)p Fn(.)19 b(\(Cycles)c(of)g(o)q(dd)g
(lengths)g(can)g(b)q(e)g(handled)74 1775 y(similarly)l(.\))33
b(Although)19 b(suc)o(h)g(an)g(algorithm)g(is)g(p)q(ossible)i(in)f(CCL,)e
(since)i(eac)o(h)f(pro)q(cess)g(kno)o(ws)f(its)74 1831 y(p)q(osition)c(in)f
(the)g(cycle,)h(it)f(is)g(m)o(uc)o(h)f(simpler)i(and)f(more)f(e\016cien)o(t)h
(to)f(use)h(a)f Fl(send-receive)f Fn(op)q(eration)74 1888 y(for)k(implemen)o
(ting)i(the)e Fl(shift)p Fn(.)74 1975 y(Some)f(p)q(oin)o(t-to-p)q(oin)o(t)h
(comm)o(unication)g(libraries)h(allo)o(w)e(the)g(use)h(of)f(wildcard)h(v)m
(alues)g(in)g(the)f(source)74 2032 y(parameter)h(of)g(a)h(receiv)o(e)g(call.)
23 b(Ev)o(en)16 b(if)g(wildcard)h(v)m(alues)g(are)e(not)g(used)i(in)f(the)g
(implemen)o(tation)h(of)74 2088 y(CCL,)h(there)h(is)g(still)h(the)f(risk)g
(that)f(a)g(message)g(sen)o(t)g(as)g(part)g(of)h(the)f(implemen)o(tation)i
(of)e(a)g(CCL)74 2145 y(call)i(will)g(b)q(e)g(mistak)o(enly)f(receiv)o(ed)h
(b)o(y)f(a)f(user)h(receiv)o(e)h(with)f(a)f(wildcard)i(source.)31
b(An)19 b(additional)74 2201 y(mec)o(hanism)e(is)g(needed)h(to)e(distinguish)
j(CCL)d(messages)g(from)g(user)h(messages.)23 b(Message)16
b(tags)f(can)74 2258 y(pro)o(vide)j(suc)o(h)g(mec)o(hanism.)27
b(These)18 b(are)f(v)m(alues)i(that)e(are)g(app)q(ended)i(to)e(the)g(con)o
(ten)o(t)g(of)g(p)q(oin)o(t-to-)74 2314 y(p)q(oin)o(t)f(messages.)k(T)l(ags)
15 b(are)g(t)o(ypically)h(used)g(to)f(distinguish)j(b)q(et)o(w)o(een)d
(di\013eren)o(t)h(t)o(yp)q(es)f(of)g(messages)74 2371 y(in)f(an)g
(application,)h(as)e(w)o(ell)h(as)f(b)q(et)o(w)o(een)h(m)o(ultiple)h
(messages)e(sen)o(t)g(to)f(a)h(destination)i(from)d(the)i(same)74
2427 y(source.)34 b(Eac)o(h)19 b Fl(send)g Fn(op)q(eration)h(sp)q(eci\014es)i
(a)d(v)m(alue)i(in)g(the)f(tag)e(\014eld)j(of)f(the)f(message,)i(and)e(eac)o
(h)74 2483 y Fl(receive)14 b Fn(op)q(eration)i(sp)q(eci\014es)h(a)e(desired)h
(tag)e(v)m(alue)j(to)d(b)q(e)i(matc)o(hed)f(with)h(the)f(receiv)o(ed)h
(message.)p 74 2523 718 2 v 126 2550 a Fe(2)143 2566 y Fd(Some)e(researc)o
(hers)g(use)f(the)g(term)g Fc(typ)n(e)h Fd(instead)h(of)d Fc(tag)p
Fd(.)960 2727 y Fn(9)p eop
%%Page: 10 10
bop 74 157 a Fn(W)l(e)21 b(assume)f(that)f(a)h(mec)o(hanism)h(is)g(a)o(v)m
(ailable)h(to)e(allo)q(cate)h(tag)f(ranges)g(to)f(v)m(arious)i(libraries,)i
(so)74 214 y(that)16 b(user)i(messages)e(and)h(messages)g(generated)g(b)o(y)g
(CCL)g(ha)o(v)o(e)f(disjoin)o(t)i(tag)e(ranges.)25 b(If)17
b(wildcard)74 270 y(tag)f(v)m(alues)i(are)f(allo)o(w)o(ed)g(in)h(receiv)o(e)g
(op)q(erations,)f(one)g(also)g(need)h(to)f(mak)o(e)f(sure)h(that)f(user)i
(receiv)o(e)74 327 y(op)q(erations)j(cannot)f(matc)o(h)f(tag)h(v)m(alues)h
(used)g(b)o(y)f(CCL.)g(This)h(can)g(b)q(e)g(ac)o(hiev)o(ed)g(either)g(with)g
(an)74 383 y(include/exclu)q(de)c(mec)o(hanism)d(for)f(wildcard)h(tag)f
(ranges,)g(as)g(pro)o(vided)i(b)o(y)e(Express)h([30)o(])f(or)g(with)h(an)74
439 y(additional)j(con)o(text)d(mec)o(hanism,)i(as)f(pro)o(vided)h(b)o(y)f
(Zip)q(co)q(de)i([28)o(].)74 592 y Fk(3.2)56 b(Implem)o(en)n(tation)16
b(Correctness)74 709 y Fn(There)i(are)f(man)o(y)g(issues)h(related)g(to)f(a)g
(correct)g(implemen)o(tation)h(of)f(CCL.)h(These)f(issues)i(include,)74
766 y(for)f(example,)i(separating)f(user)g(p)q(oin)o(t-to-p)q(oin)o(t)g
(messages)f(from)g(CCL)h(p)q(oin)o(t-to-p)q(oin)o(t)g(messages,)74
822 y(guaran)o(teeing)11 b(that)g(the)g(correct)g(messages)g(b)q(e)h(deliv)o
(ered)h(for)d(collectiv)o(e)j(comm)o(unication)f(op)q(erations)74
879 y(in)g(o)o(v)o(erlapping)f(Pro)q(cess)f(Groups,)h(and)g(distinguishing)i
(b)q(et)o(w)o(een)e(messages)f(that)g(b)q(elong)h(to)f(di\013eren)o(t)74
935 y(collectiv)o(e)17 b(comm)o(unication)f(op)q(erations)f(in)h(the)g(same)f
(group.)74 1023 y(First,)h(the)h(seman)o(tics)g(of)f(CCL)g(assume)h(that)e
(eac)o(h)i(CCL)f(routine)h(b)q(e)h(view)o(ed)f(as)f(a)g(barrier)h(b)o(y)f
(the)74 1079 y(user.)26 b(Namely)l(,)18 b(a)e(pro)q(cess)i(can)f(return)g
(from)f(a)h(CCL)g(routine)h(only)f(after)g(all)h(other)e(participating)74
1136 y(pro)q(cesses)k(called)i(this)e(routine.)35 b(Therefore,)20
b(in)h(a)f(correct)f(program,)h(an)o(y)f(CCL)h(op)q(eration)g(that)74
1192 y(in)o(v)o(olv)o(es)15 b(pro)q(cesses)h Fj(p)e Fn(and)h
Fj(q)i Fn(should)f(b)q(e)f(called)h(in)g(the)f(same)f(order)h(b)o(y)g(pro)q
(cesses)g Fj(p)f Fn(and)h Fj(q)r Fn(,)g(and)g(no)74 1248 y(p)q(oin)o(t-to-p)q
(oin)o(t)h(comm)o(unication)g(b)q(et)o(w)o(een)f(pro)q(cesses)h
Fj(p)f Fn(and)g Fj(q)i Fn(should)f(o)o(v)o(erlap)f(a)g(CCL)g(op)q(eration.)74
1336 y(The)j(correctness)f(of)g(the)h(CCL)f(implemen)o(tation)i(is)f(based)g
(on)f(the)h(follo)o(wing)g(3)f(prop)q(erties)h(of)f(the)74
1393 y(p)q(oin)o(t-to-p)q(oin)o(t)f(comm)o(unication.)130 1517
y(1.)22 b(The)15 b(p)q(oin)o(t-to-p)q(oin)o(t)h(comm)o(unication)g(supp)q
(orts)f(receiv)o(e-b)o(y-source)i(op)q(erations.)130 1611 y(2.)22
b(The)15 b(p)q(oin)o(t-to-p)q(oin)o(t)h(comm)o(unication)g(is)g(FIF)o(O)f
(and)g(non-in)o(terfering.)130 1705 y(3.)22 b(A)13 b(collectiv)o(e)i(comm)o
(unication)e(algorithm)g(in)h(CCL)f(is)g(kno)o(wn)g(to)f(all)i(participating)
g(pro)q(cesses.)188 1762 y(In)k(particular,)f(for)g(a)g(sp)q(eci\014c)i
(collectiv)o(e)f(comm)o(unication)g(op)q(eration)g(o)o(v)o(er)e(a)h(giv)o(en)
g(pro)q(cess)188 1818 y(group)e(with)h(kno)o(wn)g(source)g(and)g(destination)
h(pro)q(cesses)f(\(if)g(applicable\))i(and)e(message)f(size,)188
1874 y(a)h(\014xed)h(algorithm)f(is)h(c)o(hosen)g(that)e(is)i(kno)o(wn)f(to)g
(all)h(the)f(pro)q(cesses.)24 b(Consequen)o(tly)l(,)17 b(at)f(an)o(y)188
1931 y(giv)o(en)f(p)q(oin)o(t)h(in)f(the)g(algorithm,)g(eac)o(h)g(pro)q(cess)
g(kno)o(ws)g(exactly)g(to)f(whic)o(h)i(pro)q(cess)f(a)g(message)188
1987 y(should)j(b)q(e)h(sen)o(t)e(or)g(from)g(whic)o(h)h(pro)q(cess)g(a)f
(message)g(should)i(b)q(e)f(receiv)o(ed.)28 b(Therefore,)17
b(the)188 2044 y(sequence)f(of)f(steps)g(for)g(implemen)o(ting)i(eac)o(h)e
(CCL)g(op)q(eration)h(is)f(w)o(ell)i(de\014ned.)74 2169 y(The)j(foregoing)f
(3)g(prop)q(erties)h(guaran)o(tee)f(that)f(the)i(messages)f(receiv)o(ed-b)o
(y-source)i(b)o(y)e(an)o(y)g(giv)o(en)74 2225 y(pro)q(cess)e(are)f(receiv)o
(ed)i(in)f(the)g(exact)f(same)h(order)f(for)g(an)o(y)g(giv)o(en)h(execution)h
(of)e(a)g(CCL)h(algorithm.)74 2282 y(This)k(order)f(is)g(main)o(tained)h(in)g
(the)f(presence)h(of)f(other)f(comm)o(unication,)j(lik)o(e)f(p)q(oin)o
(t-to-p)q(oin)o(t)g(or)74 2338 y(other)15 b(CCL)h(calls.)22
b(The)16 b(k)o(ey)f(issue)i(is)f(that)f(the)h(FIF)o(O)f(prop)q(ert)o(y)g(b)q
(et)o(w)o(een)h(source)g(and)g(destination)74 2395 y(is)j(main)o(tained)g(b)o
(y)g(main)o(taining)g(the)f(order)g(b)q(et)o(w)o(een)h(CCL)f(calls)i(and)e
(not)g(allo)o(wing)i(in)o(terference)74 2451 y(b)q(et)o(w)o(een)c(CCL)f
(calls)h(and)g(p)q(oin)o(t-to-p)q(oin)o(t)f(calls.)949 2727
y(10)p eop
%%Page: 11 11
bop 74 157 a Fk(3.3)56 b(Barrier)17 b(Seman)n(tics)74 274 y
Fn(As)e(discussed)i(ab)q(o)o(v)o(e,)d(for)h(program)f(correctness,)h(eac)o(h)
g(CCL)g(op)q(eration)g(should)h(b)q(e)g(view)o(ed)g(as)f(im-)74
331 y(p)q(osing)h(a)e(barrier)h(sync)o(hronization)h(on)f(its)g(participan)o
(ts.)20 b(Ho)o(w)o(ev)o(er,)14 b(from)g(the)h(p)q(erformance)g(p)q(oin)o(t)74
387 y(of)g(view,)g(imp)q(osing)h(a)e(barrier)h(sync)o(hronization)h(on)f(all)
h(the)e(participan)o(ts)i(in)f(CCL)g(op)q(erations)g(ma)o(y)74
443 y(ha)o(v)o(e)j(a)g(negativ)o(e)h(e\013ect)f(on)g(p)q(erformance.)30
b(T)l(o)18 b(address)g(this)h(problem,)g(CCL)g(allo)o(ws)f(t)o(w)o(o)f(mo)q
(des)74 500 y(of)h(op)q(eration:)26 b Fh(b)n(arrier)19 b(mo)n(de)j
Fn(and)d Fh(non-b)n(arrier)f(mo)n(de)p Fn(.)30 b(Selection)20
b(b)q(et)o(w)o(een)e(these)h(t)o(w)o(o)e(mo)q(des)h(is)74 556
y(done)h(globally)h(at)d(the)i(b)q(eginning)h(of)e(an)h(application.)31
b(F)l(or)18 b(ob)o(vious)g(reasons,)h(the)f(default)h(mo)q(de)74
613 y(is)f(the)f(barrier)h(mo)q(de.)26 b(When)18 b(a)f(CCL)g(op)q(eration)h
(is)g(executed)g(in)g(barrier)g(mo)q(de,)g(no)f(pro)q(cess)g(can)74
669 y(complete)g(its)g(call)h(to)e(the)h(routine)g(un)o(til)g(all)h(the)f
(pro)q(cesses)g(in)g(the)g(relev)m(an)o(t)g(Pro)q(cess)g(Group)f(ha)o(v)o(e)
74 726 y(executed)h(their)g(\(corresp)q(onding\))f(calls)h(to)f(the)g(same)g
(routine.)22 b(Therefore,)16 b(when)h(an)f(op)q(eration)g(is)74
782 y(executed)j(in)f(barrier)g(mo)q(de,)f(there)h(m)o(ust)f(exist)h(some)f
(p)q(oin)o(t)h(in)g(time)g(at)f(whic)o(h)h(all)h(the)e(pro)q(cesses)74
839 y(in)g(the)f(group)f(are)h Fh(simultane)n(ously)e Fn(executing)j(the)f
(same)g(op)q(eration.)22 b(In)16 b(con)o(trast,)e(when)i(an)g(op)q(er-)74
895 y(ation)h(is)g(executed)h(in)f(non-barrier)g(mo)q(de,)g(eac)o(h)g(pro)q
(cess)g(blo)q(c)o(ks)g(only)g(un)o(til)h(it)f(has)g(completed)g(its)74
952 y(participation)h(in)g(the)f(op)q(eration.)26 b(Notice)17
b(that)g(the)g(role)g(of)g(eac)o(h)g(pro)q(cess)g(ma)o(y)g(dep)q(end)h(not)f
(only)74 1008 y(on)e(the)h(seman)o(tics)f(of)g(the)g(op)q(eration)g(but)h
(also)f(on)g(the)g(sp)q(eci\014c)i(algorithm)f(used)f(to)g(implemen)o(t)h
(it.)74 1096 y(The)d(di\013erences)h(b)q(et)o(w)o(een)f(the)f(t)o(w)o(o)g(mo)
q(des)g(ma)o(y)g(imply)i(di\013erences)g(in)f(the)g(b)q(eha)o(vior)g(of)f(an)
h(applica-)74 1152 y(tion)g(program.)18 b(In)c(a)f(non-barrier)g(mo)q(de,)g
(pro)q(cesses)h(ma)o(y)e(return)h(more)g(quic)o(kly)h(from)e(calls)i(to)e
(CCL)74 1209 y(routines,)19 b(resulting)g(in)h(a)d(b)q(etter)i(p)q
(erformance.)29 b(Ho)o(w)o(ev)o(er,)17 b(there)i(is)f(also)h(some)f(danger)g
(in)h(using)74 1265 y(non-barrier)14 b(mo)q(de)f(routines)h(as)f(in)h(some)f
(of)g(CCL)g(routines)g(the)h(role)f(of)g(eac)o(h)g(pro)q(cess)h(dep)q(ends)h
(also)74 1321 y(on)h(the)f(particular)i(algorithm)e(used)i(to)e(implemen)o(t)
h(the)g(routine.)22 b(As)15 b(long)h(as)g(the)f(user's)h(program)74
1378 y(is)i(correct,)g(and)f(no)h(wildcard)h(p)q(oin)o(t-to-p)q(oin)o(t)f
(comm)o(unication)h(is)f(used,)g(then)g(non-barrier)g(mo)q(de)74
1434 y(routines)h(will)i(op)q(erate)e(in)h(an)e(implemen)o(tation-indep)r
(ende)q(n)o(t)j(manner)e(\(as)f(argued)h(in)h(the)f(ab)q(o)o(v)o(e)74
1491 y(subsection\).)h(Ho)o(w)o(ev)o(er,)14 b(if)g(wildcard)i(p)q(oin)o
(t-to-p)q(oin)o(t)f(comm)o(unication)g(is)g(used,)g(then)g(the)f(b)q(eha)o
(vior)74 1547 y(of)h(a)f(non-barrier)i(mo)q(de)f(routine)h(can)f(b)q(e)g
(implemen)o(tation-dep)q(end)q(en)o(t.)22 b(As)15 b(an)g(example,)h(consider)
74 1604 y(the)e(follo)o(wing)h(piece)h(of)e(co)q(de,)h(in)g(whic)o(h)g
Fl(G)f Fn(is)h(the)f(group)g(iden)o(ti\014er)i(of)e(a)g(Pro)q(cess)g(Group)g
(consisting)74 1660 y(of)i(pro)q(cesses)h Fl(a)p Fn(,)f Fl(b)p
Fn(,)g(and)g Fl(c)p Fn(.)23 b(In)17 b(this)f(example,)h(eac)o(h)g
Fl(brecv)e Fn(is)i(a)f(blo)q(c)o(king)i(receiv)o(e)f(op)q(eration)f(with)74
1717 y(a)f(wildcard)i(source)e(parameter.)193 1805 y Fl(process)23
b(a)334 b(process)23 b(b)334 b(process)23 b(c)193 1862 y(---------)333
b(---------)g(---------)193 1918 y(bsend\(c\))906 b(brecv\(*\))193
1975 y(bcast\(G\))357 b(bcast\(G\))g(bcast\(G\))742 2031 y(bsend\(c\))g
(brecv\(*\))74 2176 y Fn(Assume)17 b(that)e(the)h(source)g(of)g(the)g
Fl(bcast)g Fn(op)q(eration)g(is)g(pro)q(cess)h Fl(b)p Fn(.)22
b(If)17 b(barrier)f(seman)o(tics)g(are)g(used)74 2233 y(for)d(the)h
(broadcast)g(op)q(eration,)g(then)g(the)g(\014rst)g(receiv)o(e)g(of)g(pro)q
(cess)g Fl(c)g Fn(will)h(receiv)o(e)g(the)f(message)g(sen)o(t)74
2289 y(b)o(y)i(pro)q(cess)g Fl(a)p Fn(,)g(and)g(the)g(second)g(receiv)o(e)h
(of)e(pro)q(cess)h Fl(c)g Fn(will)i(receiv)o(e)f(the)f(message)f(send)h(b)o
(y)g(pro)q(cess)74 2346 y Fl(b)p Fn(.)38 b(On)22 b(the)f(other)g(hand,)i(if)f
(pro)q(cess)g Fl(b)f Fn(can)g(exit)h(the)f(broadcast)g(call)h(b)q(efore)g
(pro)q(cess)g Fl(c)f Fn(starts)74 2402 y(executing)d(the)f(broadcast,)f(then)
i(it)f(is)g(p)q(ossible)i(for)d(the)h(messages)g(to)f(b)q(e)i(receiv)o(ed)g
(in)g(the)f(rev)o(erse)74 2458 y(order:)j(pro)q(cess)15 b Fl(c)f
Fn(receiv)o(es)i(b)q(efore)f(the)g(broadcast)f(the)h(message)f(that)g
Fl(b)h Fn(sen)o(t)g(after)f(the)h(broadcast,)74 2515 y(and)h(receiv)o(es)g
(after)e(the)h(broadcast)g(the)g(message)g(that)f Fl(a)h Fn(sen)o(t)g(b)q
(efore)h(the)f(broadcast!)74 2602 y(In)f(summary)l(,)f(non-barrier)h(mo)q(de)
g(routines)f(ma)o(y)g(exhibit)i(a)e(di\013eren)o(t)h(b)q(eha)o(vior)f(than)h
(barrier)f(mo)q(de)949 2727 y(11)p eop
%%Page: 12 12
bop 74 157 a Fn(routines,)14 b(when)f(nondeterministic)i(comm)o(unication)f
(op)q(erations)f(are)f(allo)o(w)o(ed.)20 b(F)l(urthermore,)12
b(ev)o(en)74 214 y(if)k(only)f(deterministic)i(comm)o(unication)f(op)q
(erations)g(are)e(used,)i(a)e(co)q(de)i(that)f(w)o(ould)g(deadlo)q(c)o(k)h
(with)74 270 y(barrier)23 b(mo)q(de)g(routines)g(ma)o(y)f(complete)h
(successfully)i(on)e(some)f(executions)i(when)f(non-barrier)74
327 y(mo)q(de)17 b(routines.)26 b(Therefore,)16 b(barrier)i(mo)q(de)f(should)
h(b)q(e)f(used)h(when)f(debugging)h(co)q(de)f(\(that)f(is,)i(in)74
383 y(iden)o(tifying)h(bugs)f(that)f(ma)o(y)f(not)h(b)q(e)h(caugh)o(t)f(in)h
(non-barrier)g(mo)q(de\).)27 b(Once)18 b(a)f(co)q(de)h(is)g(kno)o(wn)f(to)74
439 y(op)q(erate)h(correctly)g(in)h(barrier)g(mo)q(de,)g(it)f(is)h(p)q
(ossible)g(to)f(switc)o(h)g(to)g(non-barrier)h(mo)q(de)f(for)f(b)q(etter)74
496 y(p)q(erformance)22 b(\(pro)o(vided)g(that)e(the)i(barrier)f(mo)q(de)h
(is)g(not)f(required)h(for)f(the)g(correctness)g(of)g(the)74
552 y(program\).)e(Finally)l(,)e(notice)e(that)g(it)h(is)f(alw)o(a)o(ys)g(p)q
(ossible)i(to)e(use)g(an)g(explicit)j(sync)o(hronization)e(\(i.e.,)74
609 y(to)f(call)h(the)f(routine)h Fl(sync)p Fn(\))e(when)i(a)f(barrier)g(is)h
(needed.)74 696 y(Some)d(CCL)g(op)q(erations)f(ha)o(v)o(e)h(seman)o(tics)g
(that)f(imply)i(a)e(barrier,)h(while)h(others)e(do)h(not.)19
b(Op)q(erations)74 753 y(that)g(imply)h(a)f(barrier)h(are)e
Fl(combine)p Fn(,)h Fl(concat)p Fn(,)g Fl(index)p Fn(,)g(and)h
Fl(sync)p Fn(.)31 b(Th)o(us,)20 b(the)f(implemen)o(tation)74
809 y(of)g(these)g(op)q(erations)g(is)g(the)h(same)e(for)h(barrier)g(and)g
(for)f(non-barrier)i(mo)q(des.)31 b(Other)19 b(op)q(erations)74
866 y(that)d(do)h(not)f(imply)i(a)e(barrier)h(are)f Fl(bcast)p
Fn(,)g Fl(reduce)p Fn(,)g Fl(scatter)p Fn(,)f Fl(gather)p Fn(,)h
Fl(prefix)p Fn(,)g(and)h Fl(shift)p Fn(.)23 b(In)74 922 y(non-barrier)15
b(mo)q(de,)g(the)g(latter)f(op)q(erations)h(\(except)g Fl(shift)p
Fn(\))e(are)i(implemen)o(ted)h(with)f(a)f(fan-in)i(tree)74
979 y(to)i(a)g(particular)i(destination)f(or)f(a)g(fan-out)h(tree)f(from)g(a)
g(particular)i(source.)30 b(F)l(or)18 b(implemen)o(ting)74
1035 y(these)k(op)q(erations)g(in)h(barrier)f(mo)q(de,)h(w)o(e)f(use)g(t)o(w)
o(o)f(in)o(ternal)h(partial)h(sync)o(hronization)f(routines:)74
1092 y Fl(sync-in\(dest,G\))11 b Fn(whic)o(h)k(builds)g(a)e(fan-in)h(tree)g
(in)g(the)f(group)g Fl(G)h Fn(that)e(con)o(v)o(erges)h(at)g(pro)q(cess)g
Fl(dest)p Fn(,)74 1148 y(and)g Fl(sync-out\(src,G\))d Fn(whic)o(h)j(builds)h
(a)e(fan-out)g(tree)g(in)h(the)f(group)g Fl(G)g Fn(that)g(div)o(erges)h(from)
e(pro)q(cess)74 1205 y Fl(src)p Fn(.)22 b(A)16 b(barrier)g(mo)q(de)h(for)e
(the)h(latter)g(op)q(erations)g(is)h(implemen)o(ted)h(b)o(y)e(p)q(erforming)g
(a)g Fl(sync-in\(\))74 1261 y Fn(b)q(efore)f(a)f(fan-out)h(t)o(yp)q(e)f(op)q
(eration)h(\(lik)o(e)g Fl(bcast)f Fn(and)h Fl(scatter)p Fn(\),)e(or)h(b)o(y)h
(p)q(erforming)g(a)f Fl(sync-out\(\))74 1317 y Fn(after)d(a)h(fan-in)g(t)o
(yp)q(e)g(op)q(eration)g(\(lik)o(e)h Fl(reduce)p Fn(,)e Fl(gather)p
Fn(,)g(and)h Fl(prefix)p Fn(\).)18 b(Notice)12 b(that)f(for)g(the)h
Fl(prefix)74 1374 y Fn(op)q(eration,)18 b(the)g(fan-out)f(tree)g(is)h(ro)q
(oted)g(at)e(the)i(highest)g(rank)o(ed)g(pro)q(cess)g(in)g(the)g(group.)26
b(Finally)l(,)74 1430 y(regarding)d(the)f(Pro)q(cess)g(Group)g(creation)h(op)
q(erations,)h Fl(partition\(\))c Fn(implies)25 b(a)d(barrier)g(mo)q(de)74
1487 y(within)17 b(the)e(paren)o(t)g(group)g(while)h Fl(group\(\))e
Fn(do)q(es)i(not.)74 1640 y Fk(3.4)56 b(Dev)n(elop)17 b(and)j(Run)e(Mo)r(des)
74 1757 y Fn(In)h(addition)g(to)f(the)g(c)o(hoice)h(b)q(et)o(w)o(een)f
(barrier)g(and)h(non-barrier)f(mo)q(des,)h(the)f(user)h(can)f(select)h(b)q
(e-)74 1813 y(t)o(w)o(een)d Fh(develop)i Fn(and)e Fh(run)k
Fn(mo)q(des.)i(In)16 b Fh(develop)g Fn(mo)q(de,)g(CCL)g(p)q(erforms)g(more)f
(detailed)j(consistency)74 1869 y(c)o(hec)o(kings)f(of)e(the)h(parameters)f
(that)h(the)g(user)g(sp)q(eci\014es)i(for)d(CCL)h(calls.)23
b(This)16 b(increases)h(the)f(o)o(v)o(er-)74 1926 y(head)h(of)g(the)g(CCL)g
(op)q(erations)g(and)g(ma)o(y)f(require)h(more)g(comm)o(unication)g(b)q(et)o
(w)o(een)h(pro)q(cesses.)25 b(In)74 1982 y Fh(run)17 b Fn(mo)q(de,)f(man)o(y)
g(of)g(the)h(consistency)g(c)o(hec)o(kings)g(are)f(suppressed,)h(and)g(only)g
(c)o(hec)o(kings)g(that)f(are)74 2039 y(required)22 b(b)o(y)e(the)g(seman)o
(tics)h(of)f(the)g(op)q(erations)h(are)f(p)q(erformed.)35 b(The)21
b(default)g(in)g(CCL)g(is)f Fh(run)74 2095 y Fn(mo)q(de)d(and)g(the)g(mo)q
(de)g(can)g(b)q(e)g(c)o(hanged)g(b)o(y)g(the)g(user.)24 b(Examples)18
b(of)e(consistency)i(c)o(hec)o(kings)f(that)74 2152 y(are)g(done)g(only)h(in)
f Fh(develop)g Fn(mo)q(de)h(are)e(c)o(hec)o(king)i(the)f(correctness)g(of)f
(the)h(source,)h(the)f(destination)74 2208 y(and)d(the)g(message)g(length)g
(supplied)j(to)c(a)h(CCL)f(routine,)i(as)e(w)o(ell)i(as)f(c)o(hec)o(king)h
(the)f(mem)o(b)q(ership)h(list)74 2265 y(of)g(a)g(Pro)q(cess)g(Group)g(to)f
(b)q(e)i(v)m(alid.)74 2418 y Fk(3.5)56 b(No)18 b(T)-5 b(ags)20
b(for)e(CCL)i(Routines)74 2534 y Fn(In)i(certain)g(comm)o(unication)g
(libraries,)i(the)d(predominan)o(t)g(mec)o(hanism)h(for)f(matc)o(hing)g
(incoming)74 2591 y(messages)d(to)f(receiv)o(e)j(op)q(erations)e(is)h
Fh(matching)g(by)g(tag)p Fn(,)g(rather)e(than)h Fh(matching)h(by)g(sour)n(c)n
(e)p Fn(.)29 b(This)949 2727 y(12)p eop
%%Page: 13 13
bop 74 157 a Fn(suggests)17 b(a)g(v)o(ersion)h(of)f(CCL)g(where)h(the)f(user)
h(is)g(required)g(to)f(pro)o(vide)h(a)f(tag)g(for)g(eac)o(h)g(CCL)h(call;)74
214 y(this)d(approac)o(h)e(is)i(follo)o(w)o(ed,)f(for)f(example,)i(b)o(y)e
(Express)h([30)o(].)19 b(The)c(requiremen)o(t)f(on)g(tags)f(is)h(that)g(all)
74 270 y(pro)q(cesses)i(that)e(execute)i(a)f(collectiv)o(e)i(comm)o
(unication)f(call)g(pro)o(vide)g(the)f(same)g(tag)f(v)m(alue.)74
358 y(Assume)19 b(that)g(only)g(blo)q(c)o(king)i(p)q(oin)o(t-to-p)q(oin)o(t)e
(comm)o(unications)h(are)f(used,)h(and)f(that)g(all)h(receiv)o(e)74
414 y(op)q(erations)e(matc)o(h)g(incoming)h(messages)e(b)o(y)h(tag,)f(with)i
(no)f(wildcards.)29 b(F)l(urther)18 b(assume)f(that)h(no)74
471 y(t)o(w)o(o)c(messages)g(with)h(the)g(same)g(tag)f(can)h(b)q(e)h(sim)o
(ultaneously)g(w)o(aiting)f(to)f(b)q(e)i(receiv)o(ed)g(b)o(y)f(the)g(same)74
527 y(receiv)o(er.)20 b(Then)14 b(the)f(co)q(de)h(is)g Fh(r)n(ac)n(e-fr)n(e)n
(e)p Fn(.)k(It)13 b(follo)o(ws)g(that)g(CCL)g(can)h(b)q(e)g(implemen)o(ted)g
(using)g(receiv)o(e-)74 583 y(b)o(y-tag,)h(pro)o(vided)h(that)f(the)h(user)g
(guaran)o(tees)f(that)g(the)h(same)f(tag)g(v)m(alue)i(is)f(nev)o(er)g(sim)o
(ultaneously)74 640 y(used)g(b)o(y)f(t)o(w)o(o)f(op)q(erations)h(that)g(in)o
(v)o(olv)o(e)h(a)e(common)h(pro)q(cess.)74 728 y(This)d(condition)g(ma)o(y)e
(b)q(e)h(a)o(wkw)o(ard)f(to)g(ful\014ll.)21 b(F)l(urthermore,)11
b(the)g(e\016cien)o(t)g(implemen)o(tation)h(of)f(some)74 784
y(collectiv)o(e)16 b(comm)o(unication)f(op)q(erations)g(\(suc)o(h)f(as)g(an)h
(ascend)f(comm)o(unication)i(on)e(a)g(tree\))g(requires)74
840 y(matc)o(hing)i(b)o(y)g(more)f(than)h(tag;)f(e.g.,)g(using)h
Fl(\(source,)23 b(tag\))15 b Fn(to)h(select)g(incoming)h(messages.)22
b(But,)74 897 y(then,)15 b(matc)o(hing-b)o(y-source)h(is)g(su\016cien)o(t,)f
(and)h(the)f(tag)f(is)i(sup)q(er\015uous.)74 1071 y Fm(4)69
b(P)n(erformance)23 b(Issues)g(in)f(CCL)74 1204 y Fn(This)14
b(section)f(discusses)h(sev)o(eral)f(p)q(erformance)g(issues)h(and)f(describ)
q(es)h(some)f(of)f(the)h(algorithms)g(used)74 1260 y(in)19
b(CCL.)e(The)h(design)h(of)e(comm)o(unication)i(algorithms)f(for)f(CCL)h
(attempts)e(to)i(address)f(b)q(oth)h(the)74 1317 y(e\016ciency)j(and)e(the)h
(p)q(ortabilit)o(y)g(of)f(the)g(comm)o(unication)h(op)q(erations.)32
b(In)20 b(the)g(discussion)h(of)d(the)74 1373 y(comm)o(unication)e
(algorithms)f(in)h(this)g(section,)f(w)o(e)g(assume)g(one)h(pro)q(cess)f(p)q
(er)h(pro)q(cessor.)74 1526 y Fk(4.1)56 b(Comm)n(unication)16
b(Mo)r(del)74 1643 y Fn(In)j(designing)g(algorithms)f(for)f(the)h(CCL)g(op)q
(erations,)g(w)o(e)f(assume)h(a)f(mo)q(del)i(of)f(a)f(fully-connected)74
1699 y(message-passing)j(system)f(in)h(whic)o(h)g(eac)o(h)g(pro)q(cess)g(can)
f(comm)o(unicate)h(directly)h(with)f(an)o(y)f(other)74 1756
y(pro)q(cess)d(and)g(ev)o(ery)g(pair)h(of)e(pro)q(cesses)h(are)g(equally)h
(distan)o(t.)22 b(W)l(e)16 b(also)g(assume)g(that)f(eac)o(h)h(pro)q(cess)74
1812 y(can)f(send)h(one)f(message)g(and,)g(sim)o(ultaneously)l(,)h(receiv)o
(e)g(another)f(message)g(in)h(the)f(same)g(comm)o(uni-)74 1869
y(cation)h(step.)j(\(This)d(is)g(usually)g(done)g(using)g(a)f
Fl(send-receive)e Fn(op)q(eration)j(found)f(in)h(man)o(y)f(parallel)74
1925 y(systems.\))j(In)12 b(most)e(existing)j(message-passing)e(parallel)i
(systems,)e(the)h(time)f(for)g(sending)h(an)g Fj(m)p Fn(-b)o(yte)74
1982 y(message)j(from)f(pro)q(cess)h Fj(p)g Fn(to)f(pro)q(cess)h
Fj(q)r Fn(,)g(without)g(congestion,)g(can)g(b)q(e)g(mo)q(deled)i(as)d
Fj(T)19 b Fn(=)13 b Fj(t)1709 1989 y Fb(s)1737 1982 y Fn(+)d
Fj(mt)1838 1989 y Fb(c)1856 1982 y Fn(,)74 2038 y(where)i Fj(t)218
2045 y Fb(s)249 2038 y Fn(is)g(the)g(o)o(v)o(erhead)g(\(start-up)f(time\))h
(asso)q(ciated)g(with)g(eac)o(h)g(send)h(and/or)e(receiv)o(e)i(op)q(eration,)
74 2095 y(and)g Fj(t)176 2102 y Fb(c)207 2095 y Fn(is)g(the)g(comm)o
(unication)h(time)f(for)f(sending)j(eac)o(h)e(additional)h(b)o(yte)f(\(or)f
(an)o(y)g(appropriate)h(data)74 2151 y(unit\).)74 2239 y(Suc)o(h)25
b(a)e(fully-connected)k(mo)q(del)d(addresses)g(emerging)h(trends)f(in)g(man)o
(y)g(mo)q(dern)g(distributed-)74 2295 y(memory)g(parallel)i(computers)f(and)f
(message-passing)h(comm)o(unication)g(en)o(vironmen)o(ts.)48
b(These)74 2352 y(trends)16 b(are)f(eviden)o(t)i(in)g(systems)e(suc)o(h)h(as)
f(Thinking)j(Mac)o(hines')d(CM-5)h([29)o(],)f(In)o(tel's)h(P)o(aragon)e([31)o
(],)74 2408 y(NCUBE's)19 b(nCUBE/2)h([27)o(],)f(MIT's)g(J-Mac)o(hine)i([14)o
(],)f(IBM's)f(V)l(ulcan)i([7)o(,)e(32],)h(and)f(the)h(recen)o(tly)74
2465 y(announced)e(IBM's)e(Scalable)i(PO)o(WERparallel)g(System)f(1)f
(\(SP1\),)f(and)i(in)g(en)o(vironmen)o(ts)g(suc)o(h)g(as)74
2521 y(Express)g([30)o(],)g(P)l(ARMA)o(CS)h([24)o(],)e(PICL)i([22)o(],)f(Zip)
q(co)q(de)i([28)o(])d(and)i(V)l(en)o(us)g([2)o(].)25 b(These)18
b(systems)e(and)74 2577 y(en)o(vironmen)o(ts)k(generally)h(ignore)f(the)g(sp)
q(eci\014c)i(structure)e(and)g(top)q(ology)f(of)h(the)g(comm)o(unication)949
2727 y(13)p eop
%%Page: 14 14
bop 74 157 a Fn(net)o(w)o(ork)18 b(and)h(assume)g(a)g(fully-connected)j
(collection)e(of)f(pro)q(cesses,)h(in)g(whic)o(h)g(eac)o(h)f(pro)q(cess)g
(can)74 214 y(comm)o(unicate)d(directly)g(with)g(an)o(y)f(other)g(pro)q(cess)
g(b)o(y)g(sending)i(and)e(receiving)i(messages.)j(The)15 b(fact)74
270 y(that)j(the)h(mo)q(del)h(do)q(es)f(not)f(assume)h(an)o(y)f(single)i(top)
q(ology)e(mak)o(es)g(it)h(more)g(general)g(and)g(\015exible.)74
327 y(This)14 b(mo)q(del,)f(for)g(instance,)h(allo)o(ws)f(the)f(creation)i
(of)e(algorithms)h(that)f(are)g(p)q(ortable)i(b)q(et)o(w)o(een)f(di\013er-)74
383 y(en)o(t)g(mac)o(hines,)g(that)f(can)h(op)q(erate)f(within)i(arbitrary)e
(and)h(dynamic)g(subsets)g(of)f(pro)q(cesses,)h(and)g(that)74
439 y(can)18 b(op)q(erate)g(in)g(the)g(presence)h(of)e(faults)h(\(assuming)f
(connectivit)o(y)i(is)f(main)o(tained\).)28 b(In)19 b(addition,)74
496 y(algorithms)14 b(dev)o(elop)q(ed)i(for)e(this)h(mo)q(del)g(can)f(also)h
(b)q(e)f(helpful)j(in)e(designing)h(algorithms)e(for)g(sp)q(eci\014c)74
552 y(top)q(ologies.)74 640 y(T)l(o)k(examine)h(the)g(p)q(erformance)f(of)g
(comm)o(unication)h(algorithms,)g(w)o(e)f(de\014ne)h(the)f(follo)o(wing)h
(three)74 696 y(complexit)o(y)d(measures:)142 776 y Fi(\017)23
b Fj(C)220 783 y Ff(1)240 776 y Fn(:)18 b(the)13 b(n)o(um)o(b)q(er)f(of)g
(comm)o(unication)h(steps)f(required)h(b)o(y)f(an)g(algorithm.)19
b Fj(C)1534 783 y Ff(1)1566 776 y Fn(is)13 b(an)f(imp)q(ortan)o(t)188
833 y(measure)k(when)h(the)f(comm)o(unication)h(start-up)f(time)g(is)h(high)g
(relativ)o(e)g(to)e(the)i(transfer)e(time)188 889 y(of)d(one)h(unit)g(of)f
(data)g(and)h(the)f(message)g(size)i(p)q(er)f(send/receiv)o(e)h(op)q(eration)
e(is)h(relativ)o(ely)h(small.)142 977 y Fi(\017)23 b Fj(C)220
984 y Ff(2)240 977 y Fn(:)j(the)18 b(amoun)o(t)g(of)f(data)h(\(in)h(the)f
(appropriate)g(unit)h(of)f(comm)o(unication:)27 b(b)o(ytes,)18
b(\015its,)h(or)188 1034 y(pac)o(k)o(ets\))d(transferred)h(in)i(sequence)f(b)
o(y)g(an)o(y)f(pro)q(cess.)27 b Fj(C)1217 1041 y Ff(2)1255
1034 y Fn(is)18 b(an)f(imp)q(ortan)o(t)h(measure)f(when)188
1090 y(the)e(start-up)g(time)g(is)h(small)g(compared)f(to)g(the)g(message)g
(size.)142 1178 y Fi(\017)23 b Fj(C)220 1185 y Ff(3)240 1178
y Fn(:)29 b(the)20 b(total)f(amoun)o(t)g(of)g(data)g(comm)o(unicated)h(o)o(v)
o(er)f(the)h(net)o(w)o(ork)e(\(in)j(the)f(appropriate)188 1235
y(unit)c(of)f(comm)o(unication:)20 b(b)o(ytes,)15 b(\015its,)g(or)g(pac)o(k)o
(ets\).)k(Measures)c Fj(C)1386 1242 y Ff(1)1422 1235 y Fn(and)g
Fj(C)1542 1242 y Ff(2)1577 1235 y Fn(do)h(not)e(address)188
1291 y(the)f(issue)h(of)f(load)h(on)f(the)h(net)o(w)o(ork.)k
Fj(C)878 1298 y Ff(3)911 1291 y Fn(also)c(considers)g(the)f(fact)g(that)g
(comm)o(unicating)h(more)188 1347 y(data)g(o)o(v)o(er)h(the)g(net)o(w)o(ork)f
(causes)h(the)h(net)o(w)o(ork)e(to)g(b)q(ecome)i(more)f(congested.)74
1458 y(Th)o(us,)g(under)h(the)g(fully-connected)i(mo)q(del,)e(an)f(algorithm)
h(has)f(an)g(estimated)h(time)g(complexit)o(y)g(of)74 1514
y Fj(T)k Fn(=)14 b Fj(C)202 1521 y Ff(1)222 1514 y Fj(t)238
1521 y Fb(s)267 1514 y Fn(+)d Fj(C)345 1521 y Ff(2)365 1514
y Fj(t)381 1521 y Fb(c)399 1514 y Fn(.)21 b(The)16 b(term)g
Fj(C)669 1521 y Ff(3)705 1514 y Fn(do)q(es)g(not)f(a\013ect)g(the)h
(complexit)o(y)h(here,)e(but)h(ma)o(y)f(b)q(e)i(helpful)h(in)74
1570 y(estimating)d(the)g(congestion)f(b)q(eha)o(vior)h(of)g(a)f(real)h
(parallel)h(mac)o(hine.)k(F)l(or)14 b(instance,)h(one)g(can)g(mo)q(del)74
1627 y Fj(T)27 b Fn(=)21 b Fj(C)216 1634 y Ff(1)236 1627 y
Fj(t)252 1634 y Fb(s)284 1627 y Fn(+)14 b Fj(C)365 1634 y Ff(2)385
1627 y Fj(t)401 1634 y Fb(c)432 1627 y Fn(+)g Fj(f)5 b Fn(\()p
Fj(C)558 1634 y Ff(3)578 1627 y Fn(\),)20 b(where)g(the)g(function)h
Fj(f)k Fn(can)20 b(b)q(e)h(deriv)o(ed)g(for)f(a)f(giv)o(en)i(mac)o(hine)g(b)o
(y)74 1683 y(curv)o(e-\014tting)16 b(exp)q(erimen)o(tal)g(results.)74
1771 y(It)f(should)h(b)q(e)f(noted)g(that)f(there)h(are)f(more)h(detailed)h
(comm)o(unication)g(mo)q(dels,)f(suc)o(h)g(as)f(the)h(P)o(ostal)74
1827 y(mo)q(del)f([3)o(])f(and)f(the)h(LogP)g(mo)q(del)g([13],)f(whic)o(h)i
(further)e(tak)o(e)g(in)o(to)h(accoun)o(t)f(that)g(a)h(receiving)h(pro)q
(cess)74 1884 y(generally)22 b(completes)f(its)f Fl(receive)g
Fn(op)q(eration)g(later)h(than)f(the)g(corresp)q(onding)i(sending)f(pro)q
(cess)74 1940 y(\014nishes)c(its)e Fl(send)f Fn(op)q(eration.)20
b(Ho)o(w)o(ev)o(er,)14 b(designing)i(e\016cien)o(t)g(algorithms)f(for)f
(these)i(mo)q(dels)f(seems)74 1997 y(to)f(b)q(e)h(more)f(complicated.)21
b(Another)14 b(imp)q(ortan)o(t)g(issue)i(is)f(the)f(uniformit)o(y)h(of)f(the)
h(implemen)o(tation.)74 2053 y(F)l(or)20 b(example,)i(in)g(the)e(LogP)g(mo)q
(del,)j(the)d(collectiv)o(e)i(comm)o(unication)g(algorithms)e(are)g(designed)
74 2110 y(based)c(on)g Fj(P)23 b Fn(\(the)15 b(n)o(um)o(b)q(er)i(of)e(pro)q
(cessors\).)21 b(The)c(optimal)f(algorithms)g(for)f(t)o(w)o(o)g(distinct)i(v)
m(alues)g(of)74 2166 y Fj(P)23 b Fn(are)17 b(sometimes)g(v)o(ery)f
(di\013eren)o(t.)25 b(This)18 b(presen)o(ts)f(a)f(c)o(hallenge)i(if)g(the)f
(goal)f(is)i(to)e(supp)q(ort)h(collec-)74 2223 y(tiv)o(e)i(comm)o(unication)g
(algorithms)g(for)e(v)m(arious)i(sizes)h(pro)q(cess)f(groups)f(using)h(the)g
(same)f(collectiv)o(e)74 2279 y(comm)o(unication)e(library)l(.)74
2429 y Fk(4.2)56 b(T)-5 b(unable)19 b(Algorithms)74 2546 y
Fn(One)12 b(goal)f(in)h(the)f(design)h(of)f(the)g(algorithms)g(for)g(CCL)g(w)
o(as)f(that)h(they)g(b)q(e)h(tunable,)g(that)f(is,)h(that)e(they)74
2602 y(exhibit)17 b(a)d(trade-o\013)g(b)q(et)o(w)o(een)h(the)g(di\013eren)o
(t)g(comm)o(unication)h(complexit)o(y)f(measures.)20 b(This)15
b(goal)g(is)949 2727 y(14)p eop
%%Page: 15 15
bop 74 157 a Fn(imp)q(ortan)o(t)15 b(for)g(suc)o(h)h(a)f(library)h(to)f(b)q
(e)h(b)q(oth)g(p)q(ortable)g(and)g(e\016cien)o(t.)21 b(In)16
b(the)g(follo)o(wing)g(discussion,)74 214 y(w)o(e)f(use)g Fj(n)g
Fn(to)f(denote)h(the)f(n)o(um)o(b)q(er)h(of)g(pro)q(cesses)g(\(pro)q
(cessors\))f(in)o(v)o(olv)o(ed)h(in)h(a)e(CCL)h(op)q(eration,)f(and)74
270 y(w)o(e)k(use)h Fj(m)f Fn(to)g(denote)h(the)f(size)h(of)f(data)g(eac)o(h)
g(pro)q(cess)h(has)f(initially)l(.)33 b(All)19 b(CCL)g(routines)f(can)h(b)q
(e)74 327 y(implemen)o(ted)g(with)e Fj(C)482 334 y Ff(1)517
327 y Fn(=)f Fi(d)p Fn(log)647 337 y Ff(2)674 327 y Fj(n)p
Fi(e)h Fn(comm)o(unication)h(steps,)e(whic)o(h)i(is)f(optimal)h(for)e(this)h
(measure.)74 383 y(\(The)c Fl(shift)f Fn(routine)h(can)g(b)q(e)g(implemen)o
(ted)h(optimally)g(in)f(one)g(comm)o(unication)h(step,)e(b)o(y)h(using)g(the)
74 439 y Fl(send-receive)g Fn(op)q(eration.\))19 b(Ho)o(w)o(ev)o(er,)13
b(when)h(designing)i(an)e(algorithm)g(to)g(minimize)i Fj(C)1672
446 y Ff(1)1692 439 y Fn(,)e(some)g(of)74 496 y(the)j(corresp)q(onding)g
(terms)f(for)g Fj(C)678 503 y Ff(2)715 496 y Fn(or)g Fj(C)804
503 y Ff(3)840 496 y Fn(ma)o(y)g(not)g(b)q(e)i(optimal.)24
b(In)17 b(general,)g(there)g(are)f(tradeo\013s)74 552 y(b)q(et)o(w)o(een)g
Fj(C)282 559 y Ff(1)317 552 y Fn(and)f Fj(C)437 559 y Ff(2)458
552 y Fn(,)f(or)h(b)q(et)o(w)o(een)h Fj(C)749 559 y Ff(1)784
552 y Fn(and)f Fj(C)904 559 y Ff(3)925 552 y Fn(.)74 640 y(As)k(an)h
(example,)g(consider)h(the)e Fl(index)f Fn(op)q(eration.)33
b(A)19 b(straigh)o(tforw)o(ard)e(implemen)o(tation)k(of)d(the)74
696 y Fl(index)11 b Fn(op)q(eration)g(can)g(b)q(e)h(ac)o(hiev)o(ed)g(with)g
Fj(C)852 703 y Ff(1)885 696 y Fn(=)h Fj(n)r Fi(\000)r Fn(1)e(comm)o
(unication)h(steps)f(and)h Fj(C)1573 703 y Ff(2)1606 696 y
Fn(=)h Fj(m)p Fn(\()p Fj(n)r Fi(\000)r Fn(1\))p Fj(=n)74 753
y Fn(units)22 b(of)g(data.)38 b(This)22 b(is)h(simply)f(b)o(y)g(sending)h
(the)e(data)g(directly)i(from)e(source)h(to)f(destination.)74
809 y(Namely)l(,)15 b(eac)o(h)g(pro)q(cess)g(sends)h Fj(m=n)e
Fn(units)i(of)e(data)g(to)h Fj(n)9 b Fi(\000)h Fn(1)15 b(other)f(pro)q
(cesses.)20 b(Another)15 b(approac)o(h)74 866 y(is)g(b)o(y)f(using)h(a)e
(di\013eren)o(t)i(radix)f(for)g(represen)o(ting)g(the)g(PIDs)g(of)g(the)g
(pro)q(cesses)h(\(the)f(straigh)o(tforw)o(ard)74 922 y(approac)o(h)20
b(is)g(using)g(a)g(radix)g Fj(n)g Fn(represen)o(tation\).)33
b(In)21 b(the)f(case)g(of)f(a)g(radix)h(2)g(represen)o(tation)g(w)o(e)74
979 y(get)g Fj(C)187 986 y Ff(1)228 979 y Fn(=)h Fi(d)p Fn(log)8
b Fj(n)p Fi(e)20 b Fn(comm)o(unication)h(steps)f(and)g Fj(C)1003
986 y Ff(2)1044 979 y Fi(\031)h Fn(\()p Fj(m)8 b Fn(log)g Fj(n)p
Fn(\))p Fj(=)p Fn(2)19 b(units)i(of)e(data.)34 b(In)20 b(general,)74
1035 y(b)o(y)e(c)o(ho)q(osing)g(an)g(appropriate)f(radix)h
Fj(r)q Fn(,)g(the)g Fl(index)f Fn(op)q(eration)h(can)f(b)q(e)i(implemen)o
(ted)g(with)f Fj(C)1796 1042 y Ff(1)1833 1035 y Fi(\031)74
1092 y Fn(\()p Fj(r)8 b Fi(\000)f Fn(1\))h(log)270 1103 y Fb(r)297
1092 y Fj(n)14 b Fn(comm)o(unication)h(steps)e(and)i(with)f
Fj(C)988 1099 y Ff(2)1021 1092 y Fi(\031)f Fn(\()p Fj(m)p Fn(\()p
Fj(r)7 b Fi(\000)g Fn(1\))h(log)1322 1103 y Fb(r)1349 1092
y Fj(n)p Fn(\))p Fj(=r)14 b Fn(units)h(of)e(data.)19 b(Hence,)74
1148 y(it)c(is)f(p)q(ossible)i(to)e(implemen)o(t)h(a)f(parameterized)g
(algorithm)h(whic)o(h)g(can)f(b)q(e)h(tuned)f(according)h(to)e(the)74
1205 y(start-up)h(time)h Fj(t)367 1212 y Fb(s)386 1205 y Fn(,)f(p)q(er-b)o
(yte)h(transfer)e(time)i Fj(t)879 1212 y Fb(c)897 1205 y Fn(,)f(the)h
(message)f(size)h Fj(m)p Fn(,)f(and)h(p)q(ossibly)h(the)e(n)o(um)o(b)q(er)h
(of)74 1261 y(\\parallel)i(p)q(orts")d(that)h(can)g(supp)q(ort)g(concurren)o
(t)h(sends)f(and)h(receiv)o(es)g(e\013ectiv)o(ely)g(\(see)f([12)o(]\).)74
1349 y(As)20 b(a)f(second)i(example,)g(consider)g(the)f(broadcasting)g
(problem.)34 b(The)20 b(algorithm)g(for)f(the)h Fl(bcast)74
1405 y Fn(routine)g(is)g(straigh)o(tforw)o(ard)d(when)j(the)g(size)g(of)f
(the)h(data)f(is)h Fj(m)f Fn(=)i(1,)e(that)g(is,)i(when)f(the)f(source)74
1461 y(of)e(the)g(broadcast)g(has)g(one)g(item)g(to)g(broadcast.)25
b(In)18 b(this)f(case,)h(a)e(divide-and-conque)q(r)k(algorithm)74
1518 y(pro)o(vides)15 b(an)g(optimal)g(solution,)g(also)g(kno)o(wn)g(as)f
Fh(r)n(e)n(cursive)h(doubling)p Fn(.)k(Ho)o(w)o(ev)o(er,)14
b(the)h(broadcasting)74 1574 y(problem)f(b)q(ecomes)f(m)o(uc)o(h)g(more)g
(complicated)h(when)f(there)g(are)g Fj(m)f(>)h Fn(1)g(units)h(of)e(data)g(to)
h(broadcast.)74 1631 y(In)19 b(this)f(case,)h(a)e(lo)o(w)o(er)h(b)q(ound)h
(on)f(the)g(time)g(is)h Fi(d)p Fn(log)8 b Fj(n)p Fi(e)g Fj(t)1102
1638 y Fb(s)1133 1631 y Fn(+)k(\()p Fj(m)g Fn(+)g Fi(d)p Fn(log)d
Fj(n)p Fi(e)j(\000)g Fn(1\))p Fj(t)1547 1638 y Fb(c)1564 1631
y Fn(.)29 b(The)18 b(common)74 1687 y(divide-and-conquer)f(algorithm)d(based)
g(on)g(a)g(binomial)i(tree)e(tak)o(es)f Fi(d)p Fn(log)c Fj(n)p
Fi(e)f Fn(\()p Fj(t)1464 1694 y Fb(s)1490 1687 y Fn(+)g Fj(mt)1589
1694 y Fb(c)1607 1687 y Fn(\))13 b(time,)i(whic)o(h)74 1744
y(ma)o(y)j(b)q(e)h(far)e(from)h(optimal.)29 b(When)19 b Fj(n)f
Fn(is)h(a)f(p)q(o)o(w)o(er)g(of)g(t)o(w)o(o,)f(an)h(algorithm)g(based)h(on)f
(log)9 b Fj(n)18 b Fn(edge-)74 1800 y(disjoin)o(t)e(spanning)h(trees)e(on)g
(a)g(\(log)8 b Fj(n)p Fn(\)-cub)q(e)16 b(is)g(giv)o(en)g(in)g([26)o(,)f(25].)
20 b(This)c(algorithm)f(requires)h Fj(C)1800 1807 y Ff(2)1833
1800 y Fn(=)74 1857 y Fj(m)c Fn(+)h(log)8 b Fj(n)13 b Fi(\000)f
Fn(1,)19 b(whic)o(h)g(is)g(optimal,)h(and)e(tak)o(es)g Fj(T)24
b Fn(=)18 b(\()1081 1823 y Fi(p)p 1119 1823 74 2 v 34 x Fj(mt)1175
1864 y Fb(c)1205 1857 y Fn(+)1252 1822 y Fi(p)p 1290 1822 129
2 v 35 x Fn(log)8 b Fj(nt)1399 1864 y Fb(s)1419 1857 y Fn(\))1437
1840 y Ff(2)1474 1857 y Fn(time.)30 b(F)l(or)18 b(arbitrary)74
1913 y(v)m(alues)g(of)f Fj(n)p Fn(,)h(an)f(algorithm)g(based)g(on)g(the)g
(generalized)i(Fib)q(onacci)g(trees)e(w)o(as)f(giv)o(en)h(in)h([10)o(])f
(with)74 1970 y Fj(C)106 1977 y Ff(2)149 1970 y Fi(\024)24
b Fj(m)14 b Fn(+)h(log)8 b Fj(n)15 b Fn(+)f(3)8 b(log)g(log)g
Fj(n)15 b Fn(+)g(15.)38 b(More)21 b(recen)o(tly)l(,)i(an)f(algorithm)f(based)
h(on)f(edge-disjoin)o(t)74 2026 y(spanning)g(trees)e(of)g(cascaded)g
(decreasing-size)j(h)o(yp)q(ercub)q(es)f(w)o(as)d(giv)o(en)i([4)o(])f(with)h
(nearly)g(optimal)74 2082 y Fj(C)106 2089 y Ff(2)139 2082 y
Fn(=)13 b Fj(m)6 b Fn(+)g Fi(d)q Fn(log)i Fj(n)p Fi(e)q Fn(.)19
b(The)13 b Fl(reduce)g Fn(op)q(eration)g(is)h(usually)h(implemen)o(ted)g(in)f
(a)f(similar)h(manner)g(to)e(the)74 2139 y Fl(bcast)j Fn(op)q(eration)g(b)o
(y)g(rev)o(ersing)h(the)f(\015o)o(w)g(of)f(the)i(messages.)74
2227 y(As)11 b(another)f(example,)j(consider)e(the)g Fl(combine)f
Fn(and)h Fl(prefix)f Fn(op)q(erations.)19 b(These)11 b(op)q(erations)g
(exhibit)74 2283 y(an)17 b(in)o(teresting)g(trade-o\013)f(b)q(et)o(w)o(een)h
(measures)f Fj(C)954 2290 y Ff(1)991 2283 y Fn(and)h Fj(C)1113
2290 y Ff(3)1133 2283 y Fn(.)24 b(On)17 b(one)g(hand,)g(these)g(op)q
(erations)f(can)74 2339 y(b)q(e)22 b(implemen)o(ted)h(with)f
Fj(C)559 2346 y Ff(1)602 2339 y Fn(=)h(2)8 b Fi(d)p Fn(log)g
Fj(n)p Fi(e)22 b Fn(and)f Fj(C)972 2346 y Ff(3)1016 2339 y
Fn(=)i Fj(O)q Fn(\()p Fj(mn)p Fn(\))e(using)h(a)f(reduction)h(tree)f(follo)o
(w)o(ed)74 2396 y(b)o(y)c(a)f(broadcast)f(tree.)24 b(On)17
b(the)f(other)g(hand,)h(these)g(op)q(erations)g(can)f(b)q(e)h(implemen)o(ted)
h(with)f Fj(C)1798 2403 y Ff(1)1833 2396 y Fn(=)74 2452 y Fi(d)p
Fn(log)9 b Fj(n)p Fi(e)i Fn(and)g Fj(C)335 2459 y Ff(3)368
2452 y Fn(=)i Fj(O)q Fn(\()p Fj(mn)8 b Fn(log)f Fj(n)p Fn(\))k(using)h(a)e
(butter\015y-t)o(yp)q(e)h(or)g(circulan)o(t-graph-t)o(yp)q(e)h(comm)o
(unication)74 2509 y(pattern.)41 b(In)23 b(fact,)g(h)o(ybrid)g(algorithms)f
(for)f(these)i(op)q(erations)f(exist.)42 b(F)l(or)21 b(instance,)k(a)d(h)o
(ybrid)74 2565 y(algorithm)c(for)f(the)h Fl(combine)f Fn(op)q(eration)h
(requires)h Fj(C)1034 2572 y Ff(1)1071 2565 y Fn(=)e Fi(d)p
Fn(log)9 b Fj(n)p Fi(e)j Fn(+)g Fj(k)19 b Fn(comm)o(unication)g(steps)e(and)
949 2727 y(15)p eop
%%Page: 16 16
bop 74 157 a Fn(comm)o(unicates)16 b Fj(C)401 164 y Ff(3)433
157 y Fn(=)d Fj(m)534 139 y Fb(n)p 526 146 37 2 v 526 175 a
Ff(2)544 166 y Fa(k)568 157 y Fn(\(log)8 b Fj(n)i Fn(+)h(2)758
141 y Fb(k)q Ff(+1)834 157 y Fi(\000)f Fj(k)i Fi(\000)e Fn(2\))15
b(units)h(of)e(data)h(\(see)g([1)o(]\).)74 245 y(The)k Fl(scatter)e
Fn(and)i Fl(gather)e Fn(op)q(erations)h(resem)o(ble)h(the)g
Fl(bcast)e Fn(and)i Fl(reduce)e Fn(op)q(erations)i(in)g(their)74
301 y(functionalit)o(y)l(.)h(Ho)o(w)o(ev)o(er,)12 b(in)h(terms)e(of)h(their)g
(p)q(erformance,)h(these)f(op)q(erations)g(can)g(b)q(e)h(implemen)o(ted)74
358 y(with)e Fj(C)205 365 y Ff(1)238 358 y Fn(=)h Fi(d)q Fn(log)c
Fj(n)p Fi(e)j Fn(comm)o(unication)f(steps)h(and)f Fj(C)966
365 y Ff(3)999 358 y Fi(\031)j Fn(\()p Fj(m)8 b Fn(log)f Fj(n)p
Fn(\))p Fj(=)p Fn(2)j(units)h(of)e(data,)i(or,)f(alternativ)o(ely)l(,)74
414 y(they)j(can)h(b)q(e)g(implemen)o(ted)h(with)e Fj(C)716
421 y Ff(1)749 414 y Fn(=)g Fj(n)6 b Fi(\000)g Fn(1)14 b(comm)o(unication)g
(steps)f(and)g Fj(C)1453 421 y Ff(3)1486 414 y Fn(=)g Fj(m)p
Fn(\()p Fj(n)6 b Fi(\000)g Fn(1\))p Fj(=n)13 b Fn(units)74
471 y(of)i(data.)74 558 y(Finally)l(,)i(consider)g(the)f Fl(concat)f
Fn(op)q(eration.)21 b(The)16 b(next)g(subsection)h(outlines)g(an)f(algorithm)
f(for)g(the)74 615 y Fl(concat)j Fn(op)q(eration)g(that)g(is)h(optimal)g(in)g
(all)h(the)e(three)h(complexit)o(y)g(measures,)g(hence,)h(it)e(enables)74
671 y(go)q(o)q(d)d(p)q(erformance)h(o)o(v)o(er)e(a)h(v)m(ariet)o(y)g(of)g
(parallel)i(mac)o(hines.)74 824 y Fk(4.3)56 b(An)19 b(Optimal)e(Algorithm)f
(for)j(Concatenation)74 941 y Fn(Here,)f(w)o(e)g(outline)g(an)g(algorithm)f
(for)g(the)h Fl(concat)f Fn(op)q(eration)h(whic)o(h)g(is)g(optimal)g(with)g
(resp)q(ect)g(to)74 997 y(measures)13 b Fj(C)299 1004 y Ff(1)319
997 y Fn(,)g Fj(C)377 1004 y Ff(2)411 997 y Fn(and)g Fj(C)529
1004 y Ff(3)549 997 y Fn(.)19 b(In)14 b(the)f Fl(concat)f Fn(\(all-to-all)j
(broadcast\))d(op)q(eration)h(among)f Fj(n)h Fn(pro)q(cesses,)74
1054 y(eac)o(h)k(pro)q(cess)g(has)f(a)g(\014xed-size)j(message)d(\(also)g
(called)i(a)f Fh(data)h(blo)n(ck\))f Fn(that)f(it)h(needs)g(to)f(broadcast)74
1110 y(to)e(the)g(other)g Fj(n)8 b Fi(\000)h Fn(1)k(pro)q(cesses.)20
b(Th)o(us,)14 b(at)g(the)g(end,)h(eac)o(h)f(pro)q(cess)h(has)f(all)h
Fj(n)f Fn(data)g(blo)q(c)o(ks.)20 b(Because)74 1167 y Fj(n)c
Fn(need)g(not)f(necessarily)i(b)q(e)g(a)e(p)q(o)o(w)o(er)g(of)g(t)o(w)o(o,)f
(the)h(simple)i(optimal)f(algorithm)g(for)f(concatenation,)74
1223 y(whic)o(h)h(is)g(based)f(on)h(a)e(butter\015y-t)o(yp)q(e)i(comm)o
(unication)g(pattern,)e(cannot)h(b)q(e)h(directly)h(used.)74
1311 y(The)i(optimal)g(algorithm)f(for)g(the)h Fl(concat)e
Fn(op)q(eration)i(is)g(based)g(on)f(the)h(structure)f(of)g(a)g(circulan)o(t)
74 1367 y(graph.)h(A)14 b Fh(cir)n(culant)h(gr)n(aph)j Fj(G)p
Fn(\()p Fj(n;)8 b(S)s Fn(\))k(is)j(c)o(haracterized)g(b)o(y)f(t)o(w)o(o)e
(parameters:)19 b(the)14 b(n)o(um)o(b)q(er)g(of)g(no)q(des)74
1424 y Fj(n)p Fn(,)h(and)g(a)f(set)h(of)f(in)o(teger)h(o\013sets)f
Fj(S)s Fn(.)19 b(The)c(no)q(des)h(of)e(the)h(graph)g(are)f(lab)q(eled)j(from)
d(0)g(through)h Fj(n)10 b Fi(\000)f Fn(1.)74 1480 y(Eac)o(h)20
b(no)q(de)h Fj(i)f Fn(is)g(connected)h(to)f(no)q(des)g(of)g(the)g(form)g
(\(\()p Fj(i)12 b Fi(\006)i Fj(s)p Fn(\))e(mo)q(d)h Fj(n)p
Fn(\))20 b(for)g(all)h Fj(s)g Fi(2)g Fj(S)h Fn(\(see)f([17)o(]\).)74
1537 y(Circulan)o(t)f(graphs)e(are)g(an)h(imp)q(ortan)o(t)f(class)h(of)g(net)
o(w)o(orks)e(whic)o(h)j(can)f(b)q(e)g(used)g(as)g(fault-toleran)o(t)74
1593 y(net)o(w)o(orks)g(for)h(man)o(y)g(other)f(net)o(w)o(orks)h([9)o(,)g(16)
o(].)35 b(W)l(e)20 b(use)h(a)f(circulan)o(t)h(graph)f(with)g(p)q(o)o(w)o
(er-of-t)o(w)o(o)74 1649 y(o\013sets)c Fj(S)i Fn(=)d Fi(f)p
Fn(1)p Fj(;)8 b Fn(2)p Fj(;)g Fn(4)p Fj(;)g Fi(\001)f(\001)g(\001)t
Fj(;)h Fn(2)566 1633 y Fb(k)q Fq(\000)p Ff(1)632 1649 y Fi(g)p
Fn(,)16 b(where)h Fj(k)g Fn(=)e Fi(d)q Fn(log)8 b Fj(n)p Fi(e)p
Fn(,)17 b(as)g(a)f(structure)h(for)f(the)h Fl(concat)f Fn(algorithm)74
1706 y([11)o(])f(\(see)g(Figure)h(1\).)74 1794 y(The)g(algorithm)f(consists)g
(of)g Fj(k)h Fn(steps.)k(In)c(step)f(0,)g(eac)o(h)g(pro)q(cess)g
Fj(i)g Fn(sends)h(its)f(data)g(blo)q(c)o(k)h(to)e(pro)q(cess)74
1850 y(\()p Fj(i)c Fi(\000)g Fn(1\))i(mo)q(d)h Fj(n)p Fn(,)i(receiv)o(es)i(a)
e(data)f(blo)q(c)o(k)i(from)f(pro)q(cess)h(\()p Fj(i)9 b Fn(+)i(1\))h(mo)q(d)
h Fj(n)p Fn(,)i(and)g(app)q(ends)i(the)e(receiv)o(ed)74 1906
y(data)f(blo)q(c)o(k)h(to)f(its)g(curren)o(t)g(data.)19 b(In)c(general,)g(in)
g(step)g Fj(j)s Fn(,)e(for)h(0)e Fi(\024)h Fj(j)i Fi(\024)e
Fj(k)c Fi(\000)g Fn(2,)14 b(eac)o(h)g(pro)q(cess)h Fj(i)f Fn(sends)74
1963 y(all)j(its)f(curren)o(t)g(cum)o(ulated)h(2)606 1946 y
Fb(j)640 1963 y Fn(data)f(blo)q(c)o(ks)g(to)g(pro)q(cess)g(\()p
Fj(i)10 b Fi(\000)h Fn(2)1212 1946 y Fb(j)1230 1963 y Fn(\))i(mo)q(d)f
Fj(n)p Fn(,)k(receiv)o(es)h(2)1607 1946 y Fb(j)1641 1963 y
Fn(data)f(blo)q(c)o(ks)74 2019 y(from)f(pro)q(cess)i(\()p Fj(i)10
b Fn(+)h(2)455 2003 y Fb(j)473 2019 y Fn(\))h(mo)q(d)h Fj(n)p
Fn(,)j(and)g(app)q(ends)h(the)g(receiv)o(ed)g(data)e(to)h(its)g(cum)o(ulated)
h(data)e(blo)q(c)o(ks.)74 2076 y(In)h(the)f(last)g(step,)g(step)g
Fj(k)10 b Fi(\000)h Fn(1,)j(eac)o(h)h(pro)q(cess)g Fj(i)g Fn(sends)h(only)f
(the)g(last)g Fj(n)10 b Fi(\000)g Fn(2)1411 2059 y Fb(k)q Fq(\000)p
Ff(1)1493 2076 y Fn(blo)q(c)o(ks)15 b(of)g(data)f(that)74 2132
y(it)j(cum)o(ulated)g(to)e(pro)q(cess)h(\()p Fj(i)11 b Fi(\000)g
Fn(2)672 2116 y Fb(k)q Fq(\000)p Ff(1)738 2132 y Fn(\))h(mo)q(d)h
Fj(n)p Fn(,)j(and)h(it)f(receiv)o(es)h(the)f(same)g(n)o(um)o(b)q(er)h(of)e
(data)h(blo)q(c)o(ks)74 2189 y(from)f(pro)q(cess)g(\()p Fj(i)10
b Fn(+)g(2)452 2172 y Fb(k)q Fq(\000)p Ff(1)518 2189 y Fn(\))i(mo)q(d)h
Fj(n)p Fn(.)20 b(Figure)c(2)f(presen)o(ts)g(an)g(example)h(of)f(this)g
(algorithm.)74 2276 y(In)22 b(general,)i(all)e(the)g(homogeneous)g(op)q
(erations)f(\(op)q(erations)h(for)f(whic)o(h)i(there)e(is)h(no)g(notion)g(of)
74 2333 y(a)16 b(distinct)i(source)f(and/or)f(destination,)h([19)o(]\))f(in)h
(CCL,)f(can)h(b)q(e)g(implemen)o(ted)h(with)f(the)g(minimal)74
2389 y(n)o(um)o(b)q(er)11 b(of)f(start-ups)g(\()p Fi(d)p Fn(log)e
Fj(n)p Fi(e)j Fn(comm)o(unication)g(steps\))f(using)i(the)e(same)g(circulan)o
(t)i(graph)e(structure.)74 2446 y(Examples)19 b(of)e(other)h(suc)o(h)g(op)q
(erations)h(are)e Fl(combine)p Fn(,)h Fl(index)p Fn(,)f(and)i
Fl(sync)p Fn(.)28 b(An)18 b(algorithm)g(for)f(the)74 2502 y
Fl(combine)f Fn(op)q(eration)h(with)g Fj(T)22 b Fn(=)16 b Fi(d)p
Fn(log)8 b Fj(n)p Fi(e)g Fn(\()p Fj(t)843 2509 y Fb(s)873 2502
y Fn(+)k Fj(mt)976 2509 y Fb(c)993 2502 y Fn(\),)17 b(whic)o(h)h(is)f
(optimal)h(with)f(resp)q(ect)g(to)g Fj(C)1741 2509 y Ff(1)1778
2502 y Fn(\(and)74 2559 y(also)e(to)g Fj(C)253 2566 y Ff(2)288
2559 y Fn(when)h Fj(m)c Fn(=)h(1\),)i(app)q(ears)g(in)h([5)o(].)949
2727 y(16)p eop
%%Page: 17 17
bop 74 157 a Fk(4.4)56 b(Sp)r(ecialized)16 b(Algorithms)74
274 y Fn(F)l(or)g(certain)g(CCL)h(op)q(erations,)f(the)g(b)q(est-kno)o(wn)g
(algorithms)h(for)e(the)h(case)h(when)f Fj(n)h Fn(is)f(a)g(p)q(o)o(w)o(er)g
(of)74 331 y(2)f(ma)o(y)g(p)q(erform)f(b)q(etter)i(than)f(algorithms)g(for)f
(the)i(general)f(case.)20 b(Since,)d(in)f(man)o(y)e(situations,)i
Fj(n)f Fn(is)74 387 y(a)h(p)q(o)o(w)o(er)f(of)g(2,)h(it)g(is)g(w)o(orth)o
(while)g(to)f(implemen)o(t)j(this)e(case)g(separately)l(.)22
b(F)l(or)15 b(instance,)h(the)g Fl(concat)74 443 y Fn(algorithm)f(for)g
Fj(n)g Fn(that)f(is)i(a)f(p)q(o)o(w)o(er)f(of)h(t)o(w)o(o)f(can)h(use)g(a)g
(w)o(ell-kno)o(wn)h(h)o(yp)q(ercub)q(e)h(recursiv)o(e)e(exc)o(hange)74
500 y(algorithm)j(whic)o(h)h(eliminates)h(shifting)g(lo)q(cal)f(arra)o(ys)e
(at)g(the)i(end)f(of)g(the)h(op)q(eration.)29 b(As)18 b(another)74
556 y(example,)f(when)g Fj(n)g Fn(is)f(a)g(p)q(o)o(w)o(er)g(of)g(t)o(w)o(o,)f
(the)h Fl(bcast)g Fn(algorithm)g(describ)q(ed)j(in)e([25)o(])f(is)h(substan)o
(tially)74 613 y(simpler,)23 b(in)f(terms)e(of)g(lo)q(cal)i(data)e
(structures)g(and)h(con)o(trol,)g(than)g(the)f(algorithm)h(for)f(arbitrary)74
669 y(v)m(alues)d(of)d Fj(n)i Fn(describ)q(ed)h(in)f([4)o(].)74
844 y Fm(5)69 b(Conclusions)74 976 y Fn(W)l(e)16 b(ha)o(v)o(e)f(describ)q(ed)
i(the)e(main)h(issues)g(that)f(w)o(e)g(ha)o(v)o(e)g(encoun)o(tered)h(in)h
(designing)f(and)g(implemen)o(t-)74 1033 y(ing)i(a)e(Collectiv)o(e)j(Comm)o
(unication)e(Library)g(\(CCL\))g(for)f(the)h(recen)o(tly)h(announced)g(IBM)f
(Scalable)74 1089 y(PO)o(WERparalel)d(System)f(1,)g(\(SP1\).)18
b(W)l(e)13 b(ha)o(v)o(e)f(fo)q(cused)i(on)f(three)g(no)o(v)o(el)g(asp)q(ects)
g(in)h(the)e(design)i(and)74 1146 y(implemen)o(tation)21 b(of)d(CCL:)h(the)g
(in)o(tro)q(duction)i(of)d(pro)q(cess)i(groups,)f(de\014nition)i(of)e(seman)o
(tics)g(that)74 1202 y(ensures)f(correctness)f(and)h(the)f(design)i(of)e(no)o
(v)o(el)g(algorithms)h(based)g(on)f(a)g(realistic)i(p)q(oin)o(t-to-p)q(oin)o
(t)74 1259 y(comm)o(unication)c(mo)q(del.)21 b(Eac)o(h)14 b(of)g(these)h(no)o
(v)o(el)f(asp)q(ects)h(suggests)f(in)o(teresting)h(a)o(v)o(en)o(ues)f(for)g
(further)74 1315 y(learning)j(and)e(researc)o(h.)74 1468 y
Fk(Ac)n(kno)n(wledgemen)n(ts)74 1585 y Fn(W)l(e)d(thank)g(the)g(follo)o(wing)
h(p)q(eople:)19 b(Dan)12 b(F)l(ry)o(e)f(for)h(his)g(v)m(aluable)i(commen)o
(ts)d(and)h(help)i(in)e(revising)h(the)74 1641 y(CCL)j(seman)o(tics)f(as)h
(part)f(of)g(the)g(sp)q(ec)i(in)f([21)o(],)f(Magda)g(Konstan)o(tinidou)h(for)
f(her)h(con)o(tributions)g(to)74 1698 y(the)c(initial)h(stage)e(of)g(the)h
(CCL)f(design,)i(Eric)f(Leu)g(for)f(his)h(commen)o(ts)f(on)h(a)f(draft)g(of)g
(this)h(pap)q(er,)g(man)o(y)74 1754 y(in)o(ternal)17 b(and)f(external)h
(review)o(ers)f(of)f([21])g(for)h(their)g(v)m(aluable)i(commen)o(ts)d(to)h
(the)g(CCL)g(seman)o(tics,)74 1811 y(and)g(Dragutin)e(P)o(etk)o(o)o(vic)h
(for)g(his)h(constan)o(t)e(supp)q(ort)h(and)h(help.)949 2727
y(17)p eop
%%Page: 18 18
bop 74 157 a Fm(App)r(endix:)30 b(List)23 b(of)g(CCL)f(routines)74
290 y Fn(CCL)14 b(consists)f(of)g(t)o(w)o(o)f(parts,)h(the)h(collectiv)o(e)h
(comm)o(unication)f(routines)g(\()p Fl(CC)f Fn(part\))f(and)i(the)f(pro)q
(cess)74 346 y(group)k(routines)h(\()p Fl(PG)e Fn(part)g(whic)o(h)i(is)g
(called)h Fl(TG)e Fn(for)f(task)g(group)h(in)h(the)f(EUI)h(do)q(cumen)o(t.\))
25 b(The)18 b Fl(CC)74 403 y Fn(routines)d(pro)o(vide)g(users)g(with)f(the)h
(functionalit)o(y)g(of)f(op)q(erations)h(in)o(v)o(olving)h(collectiv)o(e)g
(comm)o(unica-)74 459 y(tion.)23 b(The)17 b Fl(PG)f Fn(routines)g(pro)o(vide)
h(users)f(with)h(the)f(functionalit)o(y)i(of)d(sp)q(ecifying)k(and)d
(manipulating)74 516 y(groups.)74 603 y(The)g(a)o(v)m(ailable)g
Fl(CC)f Fn(routines)h(are:)74 691 y Fl(bcast\(\))p Fn(:)23
b(Single)c(source)e(broadcast,)f(i.e.,)h(broadcast)g(a)f(message)h(from)f
(one)i(pro)q(cess)f(to)f(all)i(tasks)74 747 y(in)e(a)f(group.)74
835 y Fl(reduce\(\))p Fn(:)k(Apply)c(an)g(asso)q(ciativ)o(e)g(\(but)f(not)g
(necessarily)i(comm)o(utativ)o(e\))d(reduction)j(op)q(eration)f(on)74
891 y(all)h(the)g(pro)q(cesses)f(in)h(a)f(group,)g(and)g(place)h(the)f
(reduction)i(result)e(in)h(one)g(user-sp)q(eci\014ed)h(pro)q(cess.)74
979 y Fl(combine\(\))p Fn(:)25 b(Apply)20 b(an)e(asso)q(ciativ)o(e)h(\(but)f
(not)h(necessarily)g(comm)o(utativ)o(e\))f(reduction)h(op)q(eration)74
1035 y(on)e(all)h(the)f(pro)q(cesses)g(in)h(a)e(group,)h(and)g(place)h(the)f
(reduction)h(result)f(in)h(eac)o(h)f(of)f(the)h(pro)q(cesses)h(in)74
1092 y(the)d(group.)74 1179 y Fl(scatter\(\))p Fn(:)k(Distribute)d(distinct)g
(messages)f(from)f(a)h(single)i(source)e(to)f(eac)o(h)i(pro)q(cess)f(in)h(a)f
(group.)74 1267 y Fl(gather\(\))p Fn(:)23 b(Gather)17 b(distinct)i(messages)e
(from)f(eac)o(h)i(pro)q(cess)f(in)i(a)e(group)g(to)g(a)g(single)i
(destination)74 1323 y(pro)q(cess.)74 1411 y Fl(concat\(\))p
Fn(:)25 b(Concatenate)18 b(to)f(all)i(pro)q(cesses)g(in)g(a)f(group.)29
b(Eac)o(h)18 b(pro)q(cess)g(in)h(a)f(group)g(p)q(erforms)g(a)74
1467 y Fl(bcast)d Fn(within)h(the)f(group.)74 1555 y Fl(index\(\))p
Fn(:)k(Eac)o(h)c(task)g(in)h(a)e(group)h(p)q(erforms)g(a)g
Fl(scatter)f Fn(op)q(eration.)74 1643 y Fl(prefix\(\))p Fn(:)19
b(P)o(arallel)d(pre\014x)g(op)q(eration.)k(It)15 b(is)h(sometimes)f(called)i
Fl(scan)p Fn(.)74 1730 y Fl(shift\(\))p Fn(:)i(Shift)d(data)e(up)i(or)f(do)o
(wn)g(some)g(n)o(um)o(b)q(er)g(of)g(steps)g(in)h(a)f(group.)74
1818 y Fl(sync\(\))p Fn(:)k(Barrier)c(sync)o(hronization)i(in)f(a)f(group.)74
1905 y(The)h Fl(PG)e Fn(routines)i(are)f(summarized)h(b)q(elo)o(w.)74
1993 y Fl(group\(\))p Fn(:)h(Create)11 b(a)g(\(static\))g(pro)q(cess)h(group)
f(b)o(y)h(explicitly)i(sp)q(ecifying)g(the)d(pro)q(cesses)h(participating)74
2049 y(in)k(the)f(group.)74 2137 y Fl(partition\(\))p Fn(:)23
b(De\014ne)c(a)e(\(dynamic\))h(pro)q(cess)g(group)f(b)o(y)h(partitioning)h
(an)e(existing)i(group)e(based)74 2193 y(on)e(a)g(lo)q(cally)i(supplied)h(in)
o(teger)d(lab)q(el.)74 2281 y Fl(getsize\(\))p Fn(:)k(Get)14
b(the)i(size)g(\(the)f(n)o(um)o(b)q(er)g(of)g(pro)q(cesses\))g(of)g(an)g
(existing)h(pro)q(cess)g(group.)74 2369 y Fl(getmembers\(\))p
Fn(:)i(Get)d(the)g(ordered)h(arra)o(y)e(of)g(pro)q(cess)i(ids)g(of)f(an)g
(existing)h(pro)q(cess)f(group.)74 2456 y Fl(getrank\(\))p
Fn(:)k(Get)14 b(the)i(rank)f(of)f(a)h(pro)q(cess)h(in)g(a)f(pro)q(cess)g
(group.)74 2544 y Fl(getpid\(\))p Fn(:)k(Get)c(the)g(pro)q(cess)g(id)h(of)f
(the)g(pro)q(cess)h(with)f(a)g(certain)h(rank)f(in)h(a)f(pro)q(cess)g(group.)
949 2727 y(18)p eop
%%Page: 19 19
bop 74 157 a Fl(getlabel\(\))p Fn(:)20 b(Get)c(the)g(lab)q(el)i(\(whic)o(h)e
(w)o(as)g(supplied)i(b)o(y)e(a)g(user)g(when)g(the)h(group)e(w)o(as)h
(formed\))f(of)74 214 y(an)g(existing)h(pro)q(cess)g(group.)949
2727 y(19)p eop
%%Page: 20 20
bop 74 157 a Fm(References)97 277 y Fn([1])22 b(A.)14 b(Aggarw)o(al)g(and)g
(S.)h(Kipnis,)h(\\Message-Time)f(T)l(radeo\013)f(for)g(Com)o(bining)h(Data)f
(in)h(Message-)168 334 y(P)o(assing)g(Systems",)f Fh(IBM)i(R)n(ese)n(ar)n(ch)
f(R)n(ep)n(ort)p Fn(,)g(R)o(C-18349,)e(Septem)o(b)q(er)j(1992.)97
428 y([2])22 b(V.)d(Bala)h(and)f(S.)h(Kipnis,)i(\\Pro)q(cess)d(Groups:)29
b(a)19 b(mec)o(hanism)h(for)f(the)h(co)q(ordination)g(of)f(and)168
484 y(comm)o(unication)c(among)e(pro)q(cesses)i(in)g(the)g(V)l(en)o(us)g
(collectiv)o(e)h(comm)o(unication)f(library",)f Fh(Pr)n(o-)168
541 y(c)n(e)n(e)n(dings)g(of)i(the)h(7th)g(International)e(Par)n(al)r(lel)g
(Pr)n(o)n(c)n(essing)f(Symp)n(osium)p Fn(,)h(IEEE,)g(April)h(1993.)97
634 y([3])22 b(A.)d(Bar-No)o(y)f(and)i(S.)f(Kipnis,)j(\\Designing)e
(broadcasting)f(algorithms)h(in)g(the)f(p)q(ostal)h(mo)q(del)168
691 y(for)f(message-passing)g(systems",)h(to)f(app)q(ear)h(in)h
Fh(Mathematic)n(al)f(Systems)f(The)n(ory)p Fn(.)g(Also)h(ap-)168
747 y(p)q(eared)15 b(in)g Fh(Pr)n(o)n(c)n(e)n(e)n(dings)e(of)j(the)g(4th)g(A)
o(nnual)f(A)o(CM)f(Symp)n(osium)i(on)f(Par)n(al)r(lel)g(A)o(lgorithms)h(and)
168 804 y(A)o(r)n(chite)n(ctur)n(es)p Fn(,)d(June)k(1992,)c(pp.)j(11{22.)97
898 y([4])22 b(A.)34 b(Bar-No)o(y)g(and)h(S.)f(Kipnis,)41 b(\\Broadcasting)35
b(m)o(ultiple)h(messages)e(in)i(sim)o(ultaneous)168 954 y(send/receiv)o(e)18
b(systems",)e(to)g(app)q(ear)h(in)h Fh(Discr)n(ete)f(Applie)n(d)h
(Mathematics)p Fn(.)e(Also)h(app)q(eared)h(as)168 1010 y Fh(IBM)d(R)n(ese)n
(ar)n(ch)h(R)n(ep)n(ort)p Fn(,)e(R)o(C-18352,)g(Septem)o(b)q(er)i(1992.)97
1104 y([5])22 b(A.)15 b(Bar-No)o(y)l(,)f(S.)i(Kipnis,)h(and)e(B.)g(Sc)o(hieb)
q(er,)i(\\An)f(optimal)g(algorithm)f(for)g(computing)h(census)168
1161 y(functions)h(in)g(message-passing)g(systems",)e(to)h(app)q(ear)h(in)g
Fh(Par)n(al)r(lel)g(Pr)n(o)n(c)n(essing)e(L)n(etters)p Fn(.)g(Also)168
1217 y(app)q(eared)g(as)g Fh(IBM)h(R)n(ese)n(ar)n(ch)f(R)n(ep)n(ort)p
Fn(,)g(R)o(C-18527,)f(No)o(v)o(em)o(b)q(er)g(1992.)97 1311
y([6])22 b(A.)17 b(Beguelin,)i(J.)f(Dongarra,)e(A.)h(Geist,)g(R.)h(Manc)o
(hek,)f(and)h(V.)f(Sunderam,)h(\\A)f(user's)g(guide)168 1367
y(to)e(PVM)g(P)o(arallel)i(Virtual)f(Mac)o(hine",)g Fh(ORNL)g(T)m(e)n(chnic)n
(al)e(R)n(ep)n(ort)p Fn(,)i(ORNL/TM-11826,)e(Ma)o(y)168 1424
y(1992.)97 1518 y([7])22 b(J.)16 b(Bruc)o(k,)g(R.)g(Cypher,)g(L.)g(Gra)o(v)m
(ano,)f(A.)h(Ho,)f(C.)h(T.)f(Ho,)h(S.)g(Kipnis,)h(S.)f(Konstan)o(tinidou,)h
(M.)168 1574 y(Snir)g(and)g(E.)g(Upfal,)g(\\Surv)o(ey)g(of)f(routing)h
(issues)g(for)f(the)h(V)l(ulcan)h(parallel)h(computer",)d Fh(IBM)168
1631 y(R)n(ese)n(ar)n(ch)f(R)n(ep)n(ort)p Fn(,)g(RJ-8839,)g(June)h(1992.)97
1724 y([8])22 b(J.)c(Bruc)o(k,)h(R.)g(Cypher,)g(P)l(.)f(Elustondo,)i(A.)e
(Ho,)h(and)f(C.T.)g(Ho,)h(\\A)f(Prop)q(osal)g(for)g(Common)168
1781 y(Group)13 b(Structures)g(in)i(a)e(Collectiv)o(e)i(Comm)o(unication)e
(Library",)h Fh(IBM)g(R)n(ese)n(ar)n(ch)g(R)n(ep)n(ort)p Fn(,)g(RJ-)168
1837 y(9421,)f(Marc)o(h)i(1993.)97 1931 y([9])22 b(J.)g(Bruc)o(k,)i(R.)e
(Cypher,)i(and)f(C.T.)e(Ho,)i(\\E\016cien)o(t)g(fault-toleran)o(t)f(mesh)g
(and)h(h)o(yp)q(ercub)q(es)168 1988 y(arc)o(hitectures",)g
Fh(Pr)n(o)n(c)n(e)n(e)n(dings)d(of)j(the)g(1992)g(International)e(Symp)n
(osium)i(on)f(F)m(ault-T)m(oler)n(ant)168 2044 y(Computing)p
Fn(,)14 b(pp.)i(162{169.)74 2138 y([10])22 b(J.)16 b(Bruc)o(k,)h(R.)g
(Cypher,)g(and)g(C.T.)f(Ho,)g(\\Multiple)j(message)d(broadcasting)h(with)g
(generalized)168 2194 y(Fib)q(onacci)f(trees",)e Fh(Pr)n(o)n(c)n(e)n(e)n
(dings)f(of)j(the)g(4th)g(IEEE)f(Symp)n(osium)h(on)f(Par)n(al)r(lel)g(and)h
(Distribute)n(d)168 2251 y(Pr)n(o)n(c)n(essing)p Fn(,)c(Decem)o(b)q(er)k
(1992,)d(pp.)j(424{431.)74 2345 y([11])22 b(J.)16 b(Bruc)o(k,)g(C.T.)f(Ho,)g
(and)h(S.)g(Kipnis,)i(\\Concatenating)e(data)f(optimally)i(in)g
(message-passing)168 2401 y(systems",)d Fh(IBM)h(R)n(ese)n(ar)n(ch)h(R)n(ep)n
(ort)p Fn(,)e(RJ-9191,)h(Jan)o(uary)g(1993.)74 2495 y([12])22
b(J.)g(Bruc)o(k,)i(R.)e(Cypher,)i(C.T.)d(Ho,)i(and)g(S.)f(Kipnis,)k
(\\E\016cien)o(t)c(algorithms)g(for)g(the)g(index)168 2551
y(op)q(eration)15 b(in)h(message-passing)f(systems",)f Fh(IBM)i(R)n(ese)n(ar)
n(ch)f(R)n(ep)n(ort)p Fn(,)g(in)h(preparation.)949 2727 y(20)p
eop
%%Page: 21 21
bop 74 157 a Fn([13])22 b(D.)16 b(Culler,)k(R.)d(Karp,)h(D.)f(P)o(atterson,)g
(A.)g(Saha)o(y)l(,)g(K.E.)h(Sc)o(hauser,)g(E.)f(San)o(tos,)g(R.)h(Subramo-)
168 214 y(nian,)g(and)g(T.)e(v)o(on)i(Eic)o(k)o(en,)g(\\LogP:)e(to)o(w)o
(ards)g(a)h(realistic)i(mo)q(del)f(of)f(parallel)i(computation",)168
270 y Fh(Pr)n(o)n(c)n(e)n(e)n(dings)c(of)k(the)f(4th)h(SIGPLAN)d(Symp)n
(osium)j(on)f(Principles)f(and)h(Pr)n(actic)n(es)f(of)h(Par)n(al)r(lel)168
327 y(Pr)n(o)n(gr)n(amming)p Fn(,)c(A)o(CM,)g(Ma)o(y)g(1993.)74
420 y([14])22 b(W.)14 b(J.)h(Dally)l(,)g(A.)g(Chien,)g(S.)g(Fisk)o(e,)g(W.)f
(Horw)o(at,)f(J.)i(Keen,)h(M.)e(Lariv)o(ee,)h(R.)g(Lethin,)h(P)l(.)f(Nuth,)
168 477 y(S.)d(Wills,)j(P)l(.)d(Carric)o(k,)h(and)g(G.)f(Fyler)h(\\The)g
(J-Mac)o(hine:)20 b(a)12 b(\014ne-grain)i(concurren)o(t)f(computer",)168
533 y Fh(Information)j(Pr)n(o)n(c)n(essing)d(89)p Fn(,)j(Elsevier)g(Science)h
(Publishers,)g(IFIP)l(,)e(1989,)f(pp.)h(1147{1153.)74 627 y([15])22
b(J.)11 b(Dongarra,)g(R.)h(Hemp)q(el,)i(A.)d(Hey)l(,)i(and)f(D.)f(W)l(alk)o
(er,)h(\\A)g(Prop)q(osal)g(for)f(a)h(user-lev)o(el,)i(message-)168
684 y(passing)23 b(in)o(terface)g(in)h(a)f(distributed)h(memory)e(en)o
(vironmen)o(t",)j Fh(ORNL)e(T)m(e)n(chnic)n(al)e(R)n(ep)n(ort)p
Fn(,)168 740 y(ORNL/TM-12231,)14 b(Octob)q(er)h(1992.)74 834
y([16])22 b(S.)f(Dutt)f(and)i(J.)f(P)l(.)g(Ha)o(y)o(es,)h(\\Designing)g
(fault-toleran)o(t)f(systems)g(using)h(automorphisms",)168
890 y Fh(Journal)16 b(of)g(Par)n(al)r(lel)g(and)g(Distribute)n(d)h(Computing)
p Fn(,)d(V)l(ol.)i(12,)e(1991,)g(pp.)h(249{268.)74 984 y([17])22
b(B.)11 b(Elspas)i(and)f(J.)g(T)l(urner,)h(\\Graphs)e(with)i(circulan)o(t)g
(adjacency)f(matrices",)g Fh(Journal)i(of)f(Com-)168 1041 y(binatorial)j(The)
n(ory)p Fn(,)e(No.)h(9,)f(1970,)g(pp.)h(297{307.)74 1134 y([18])22
b(B.)h(G.)f(Fitc)o(h)i(and)f(M.)g(E.)g(Giampapa,)h(\\The)g(V)l(ulcan)g(Op)q
(eration)h(En)o(vironmen)o(t:)36 b(a)23 b(brief)168 1191 y(o)o(v)o(erview)14
b(and)h(status)e(rep)q(ort",)h Fh(Pr)n(o)n(c)n(e)n(e)n(dings)f(of)j(the)g
(5th)g(Workshop)g(on)g(Use)f(of)h(Par)n(al)r(lel)e(Pr)n(o-)168
1247 y(c)n(essors)h(in)g(Mete)n(or)n(olo)n(gy)p Fn(,)f(ECMWF,)g(No)o(v)o(em)o
(b)q(er)h(1992.)74 1341 y([19])22 b(G.)13 b(F)l(o)o(x)h(and)h(W.)e(F)l
(urmanski,)i(\\Optimal)g(comm)o(unication)g(algorithms)g(for)e(regular)i
(decomp)q(o-)168 1398 y(sitions)e(on)f(the)g(h)o(yp)q(ercub)q(e",)i
Fh(Pr)n(o)n(c)n(e)n(e)n(dings)e(of)h(the)h(3r)n(d)g(Confer)n(enc)n(e)e(on)h
(Hyp)n(er)n(cub)n(e)g(Concurr)n(ent)168 1454 y(Computers)j(and)g(Applic)n
(ations)p Fn(,)e(A)o(CM,)g(1988,)g(pp.)h(648{713.)74 1548 y([20])22
b(G.)17 b(F)l(o)o(x,)g(M.)g(Johnson,)i(G.)e(Lyzenga,)h(S.)g(Otto,)g(J.)f
(Salmon,)i(and)f(D.)f(W)l(alk)o(er,)h Fh(Solving)f(Pr)n(ob-)168
1604 y(lems)e(on)g(Concurr)n(ent)g(Pr)n(o)n(c)n(essors,)f(V)m(olume)h(I:)g
(Gener)n(al)g(T)m(e)n(chniques)f(and)h(R)n(e)n(gular)h(Pr)n(oblems)p
Fn(,)168 1661 y(Pren)o(tice-Hall,)g(Englew)o(o)q(o)q(d)g(Cli\013s,)f(New)g
(Jersey)l(,)h(1988.)74 1755 y([21])22 b(D.)c(F)l(ry)o(e,)h(R.)f(Bry)o(an)o
(t,)h(C.T.)f(Ho,)h(P)l(.)f(de)h(Jong,)h(R.)f(La)o(wrence,)g(and)g(M.)f(Snir,)
j(\\An)d(External)168 1811 y(User)c(In)o(terface)g(for)f(Scalable)j(P)o
(arallel)f(Systems:)k(F)o(OR)l(TRAN)c(In)o(terface",)f Fh(T)m(e)n(chnic)n(al)
f(R)n(ep)n(ort)p Fn(,)168 1867 y(IBM)i(Highly)h(P)o(arallel)h(Sup)q
(ercomputing)f(Systems)f(Lab)q(oratory)l(,)g(No)o(v)o(em)o(b)q(er)f(1992.)74
1961 y([22])22 b(G.)g(A.)h(Geist,)h(M.)f(T.)f(Heath,)j(B.)e(W.)f(P)o(eyton,)i
(and)g(P)l(.)e(H.)h(W)l(orley)l(,)i(\\A)e(user's)g(guide)h(to)168
2018 y(PICL:)c(a)h(P)o(ortable)f(Instrumen)o(ted)h(Comm)o(unication)g
(Library",)g Fh(ORNL)g(T)m(e)n(chnic)n(al)e(R)n(ep)n(ort)p
Fn(,)168 2074 y(ORNL/TM-11616,)14 b(Octob)q(er)h(1990.)74 2168
y([23])22 b(M.)11 b(E.)g(Giampapa,)h(B.)g(G.)f(Fitc)o(h,)h(G.)f(R.)h(Irwin,)h
(and)f(D.)f(G.)g(Shea,)i(\\V)l(ulcan)g(op)q(erating)f(en)o(viron-)168
2224 y(men)o(t:)27 b(programmer's)17 b(reference",)j Fh(Internal)e(Memor)n
(andum)p Fn(,)i(IBM)g(T.J.)e(W)l(atson)g(Researc)o(h)168 2281
y(Cen)o(ter,)c(Marc)o(h)h(1991.)74 2375 y([24])22 b(R.)d(Hemp)q(el,)i(\\The)d
(ANL/GMD)h(macros)f(\(P)l(ARMA)o(CS\))g(in)i(F)o(OR)l(TRAN)g(for)e(p)q
(ortable)i(par-)168 2431 y(allel)h(programming)e(using)h(the)f(message)g
(passing)h(programming)f(mo)q(del,)i(user's)e(guide)h(and)168
2488 y(reference)c(man)o(ual",)g Fh(T)m(e)n(chnic)n(al)e(Memor)n(andum)p
Fn(,)j(Gesellsc)o(haft)f(f)q(\177)-24 b(ur)16 b(Mathematik)f(und)i(Daten-)168
2544 y(v)o(erab)q(eitung)e(m)o(bH,)g(W)l(est)g(German)o(y)l(.)949
2727 y(21)p eop
%%Page: 22 22
bop 74 157 a Fn([25])22 b(C.T.)e(Ho,)j(\\Optimal)g(broadcasting)f(on)g(SIMD)g
(h)o(yp)q(ercub)q(es)h(without)f(indirect)i(addressing)168
214 y(capabilit)o(y",)c Fh(Journal)f(of)h(Par)n(al)r(lel)e(and)i(Distribute)n
(d)f(Computing)p Fn(,)g(V)l(ol.)g(13,)f(No.)g(2,)h(Octob)q(er)168
270 y(1991,)13 b(pp.)j(246{255.)74 364 y([26])22 b(S.)13 b(L.)h(Johnsson)g
(and)g(C.T.)f(Ho,)g(\\Spanning)i(graphs)e(for)h(optim)o(um)f(broadcasting)h
(and)g(p)q(erson-)168 420 y(alized)19 b(comm)o(unication)g(in)g(h)o(yp)q
(ercub)q(es",)g Fh(IEEE)f(T)m(r)n(ansactions)f(on)i(Computers)p
Fn(,)f(V)l(ol.)g(C-38,)168 477 y(No.)c(9,)h(Septem)o(b)q(er)h(1989,)d(pp)j
(1249{1268.)74 571 y([27])22 b(J.)f(F.)g(P)o(almer)g(\\The)h(NCUBE)f(family)h
(of)f(parallel)i(sup)q(ercomputers",)g Fh(Pr)n(o)n(c)n(e)n(e)n(dings)d(of)i
(the)168 627 y(International)15 b(Confer)n(enc)n(e)f(on)i(Computer)h(Design)p
Fn(,)d(IEEE,)h(1986.)74 721 y([28])22 b(A.)e(Skjellum)i(and)e(A.)g(P)l(.)g
(Leung,)i(\\Zip)q(co)q(de:)32 b(a)20 b(p)q(ortable)h(m)o(ulticomputer)g(comm)
o(unication)168 777 y(library)e(atop)e(the)h(Reactiv)o(e)h(Kernel",)h
Fh(Pr)n(o)n(c)n(e)n(e)n(dings)d(of)i(the)g(5th)h(Distribute)n(d)f(Memory)g
(Com-)168 834 y(puting)d(Confer)n(enc)n(e)p Fn(,)d(IEEE,)i(April)h(1990,)e
(pp.)h(328{337.)74 928 y([29])22 b Fh(Conne)n(ction)j(Machine)h(CM-5)h(T)m(e)
n(chnic)n(al)d(Summary)p Fn(,)30 b(Thinking)e(Mac)o(hines)g(Corp)q(oration,)
168 984 y(1991.)74 1078 y([30])22 b Fh(Expr)n(ess)15 b(3.0)i(Intr)n(o)n
(ductory)f(Guide)p Fn(,)f(P)o(arasoft)f(Corp)q(oration,)g(1990.)74
1172 y([31])22 b Fh(Par)n(agon)16 b(XP/S)f(Overview)p Fn(,)g(In)o(tel)h(Corp)
q(oration,)e(1991.)74 1266 y([32])22 b(\\V)l(ulcan)12 b(system)e(summary",)h
Fh(Internal)f(Memor)n(andum)p Fn(,)i(IBM)f(T.J.)g(W)l(atson)f(Researc)o(h)h
(Cen)o(ter.)949 2727 y(22)p eop
%%Page: 23 23
bop 353 679 a
 19537183 19800310 7762247 25786449 27299430 45586759 startTexFig
353 679 a
%%BeginDocument: Figs/circ16.ps

50 dict begin

/arrowHeight 8 def
/arrowWidth 4 def
/none null def
/numGraphicParameters 17 def
/stringLimit 65535 def

/Begin {
save
numGraphicParameters dict begin
} def

/End {
end
restore
} def

/SetB {
dup type /nulltype eq {
pop
false /brushRightArrow idef
false /brushLeftArrow idef
true /brushNone idef
} {
/brushDashOffset idef
/brushDashArray idef
0 ne /brushRightArrow idef
0 ne /brushLeftArrow idef
/brushWidth idef
false /brushNone idef
} ifelse
} def

/SetCFg {
/fgblue idef
/fggreen idef
/fgred idef
} def

/SetCBg {
/bgblue idef
/bggreen idef
/bgred idef
} def

/SetF {
/printSize idef
/printFont idef
} def

/SetP {
dup type /nulltype eq {
pop true /patternNone idef
} {
/patternGrayLevel idef
patternGrayLevel -1 eq {
/patternString idef
} if
false /patternNone idef
} ifelse
} def

/BSpl {
0 begin
storexyn
newpath
n 1 gt {
0 0 0 0 0 0 1 1 true subspline
n 2 gt {
0 0 0 0 1 1 2 2 false subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 2 copy false subspline
} if
n 2 sub dup n 1 sub dup 2 copy 2 copy false subspline
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Circ {
newpath
0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
} def

/CBSpl {
0 begin
dup 2 gt {
storexyn
newpath
n 1 sub dup 0 0 1 1 2 2 true subspline
1 1 n 3 sub {
/i exch def
i 1 sub dup i dup i 1 add dup i 2 add dup false subspline
} for
n 3 sub dup n 2 sub dup n 1 sub dup 0 0 false subspline
n 2 sub dup n 1 sub dup 0 0 1 1 false subspline
patternNone not { ifill } if
brushNone not { istroke } if
} {
Poly
} ifelse
end
} dup 0 4 dict put def

/Elli {
0 begin
newpath
4 2 roll
translate
scale
0 0 1 0 360 arc
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 1 dict put def

/Line {
0 begin
2 storexyn
newpath
x 0 get y 0 get moveto
x 1 get y 1 get lineto
brushNone not { istroke } if
0 0 1 1 leftarrow
0 0 1 1 rightarrow
end
} dup 0 4 dict put def

/MLine {
0 begin
storexyn
newpath
n 1 gt {
x 0 get y 0 get moveto
1 1 n 1 sub {
/i exch def
x i get y i get lineto
} for
patternNone not brushLeftArrow not brushRightArrow not and and { ifill } if
brushNone not { istroke } if
0 0 1 1 leftarrow
n 2 sub dup n 1 sub dup rightarrow
} if
end
} dup 0 4 dict put def

/Poly {
3 1 roll
newpath
moveto
-1 add
{ lineto } repeat
closepath
patternNone not { ifill } if
brushNone not { istroke } if
} def

/Rect {
0 begin
/t exch def
/r exch def
/b exch def
/l exch def
newpath
l b moveto
l t lineto
r t lineto
r b lineto
closepath
patternNone not { ifill } if
brushNone not { istroke } if
end
} dup 0 4 dict put def

/Text {
ishow
} def

/idef {
dup where { pop pop pop } { exch def } ifelse
} def

/ifill {
0 begin
gsave
patternGrayLevel -1 ne {
fgred bgred fgred sub patternGrayLevel mul add
fggreen bggreen fggreen sub patternGrayLevel mul add
fgblue bgblue fgblue sub patternGrayLevel mul add setrgbcolor
eofill
} {
eoclip
originalCTM setmatrix
pathbbox /t exch def /r exch def /b exch def /l exch def
/w r l sub ceiling cvi def
/h t b sub ceiling cvi def
/imageByteWidth w 8 div ceiling cvi def
/imageHeight h def
bgred bggreen bgblue setrgbcolor
eofill
fgred fggreen fgblue setrgbcolor
w 0 gt h 0 gt and {
l b translate w h scale
w h true [w 0 0 h neg 0 h] { patternproc } imagemask
} if
} ifelse
grestore
end
} dup 0 8 dict put def

/istroke {
gsave
brushDashOffset -1 eq {
[] 0 setdash
1 setgray
} {
brushDashArray brushDashOffset setdash
fgred fggreen fgblue setrgbcolor
} ifelse
brushWidth setlinewidth
originalCTM setmatrix
stroke
grestore
} def

/ishow {
0 begin
gsave
fgred fggreen fgblue setrgbcolor
/fontDict printFont findfont printSize scalefont dup setfont def
/descender fontDict begin 0 [FontBBox] 1 get FontMatrix end
transform exch pop def
/vertoffset 0 descender sub printSize sub printFont /Courier ne
printFont /Courier-Bold ne and { 1 add } if def {
0 vertoffset moveto show
/vertoffset vertoffset printSize sub def
} forall
grestore
end
} dup 0 3 dict put def

/patternproc {
0 begin
/patternByteLength patternString length def
/patternHeight patternByteLength 8 mul sqrt cvi def
/patternWidth patternHeight def
/patternByteWidth patternWidth 8 idiv def
/imageByteMaxLength imageByteWidth imageHeight mul
stringLimit patternByteWidth sub min def
/imageMaxHeight imageByteMaxLength imageByteWidth idiv patternHeight idiv
patternHeight mul patternHeight max def
/imageHeight imageHeight imageMaxHeight sub store
/imageString imageByteWidth imageMaxHeight mul patternByteWidth add string def
0 1 imageMaxHeight 1 sub {
/y exch def
/patternRow y patternByteWidth mul patternByteLength mod def
/patternRowString patternString patternRow patternByteWidth getinterval def
/imageRow y imageByteWidth mul def
0 patternByteWidth imageByteWidth 1 sub {
/x exch def
imageString imageRow x add patternRowString putinterval
} for
} for
imageString
end
} dup 0 12 dict put def

/min {
dup 3 2 roll dup 4 3 roll lt { exch } if pop
} def

/max {
dup 3 2 roll dup 4 3 roll gt { exch } if pop
} def

/arrowhead {
0 begin
transform originalCTM itransform
/taily exch def
/tailx exch def
transform originalCTM itransform
/tipy exch def
/tipx exch def
/dy tipy taily sub def
/dx tipx tailx sub def
/angle dx 0 ne dy 0 ne or { dy dx atan } { 90 } ifelse def
gsave
originalCTM setmatrix
tipx tipy translate
angle rotate
newpath
0 0 moveto
arrowHeight neg arrowWidth 2 div lineto
arrowHeight neg arrowWidth 2 div neg lineto
closepath
patternNone not {
originalCTM setmatrix
/padtip arrowHeight 2 exp 0.25 arrowWidth 2 exp mul add sqrt brushWidth mul
arrowWidth div def
/padtail brushWidth 2 div def
tipx tipy translate
angle rotate
padtip 0 translate
arrowHeight padtip add padtail add arrowHeight div dup scale
arrowheadpath
ifill
} if
brushNone not {
originalCTM setmatrix
tipx tipy translate
angle rotate
arrowheadpath
istroke
} if
grestore
end
} dup 0 9 dict put def

/arrowheadpath {
newpath
0 0 moveto
arrowHeight neg arrowWidth 2 div lineto
arrowHeight neg arrowWidth 2 div neg lineto
closepath
} def

/leftarrow {
0 begin
y exch get /taily exch def
x exch get /tailx exch def
y exch get /tipy exch def
x exch get /tipx exch def
brushLeftArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/rightarrow {
0 begin
y exch get /tipy exch def
x exch get /tipx exch def
y exch get /taily exch def
x exch get /tailx exch def
brushRightArrow { tipx tipy tailx taily arrowhead } if
end
} dup 0 4 dict put def

/midpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 x1 add 2 div
y0 y1 add 2 div
end
} dup 0 4 dict put def

/thirdpoint {
0 begin
/y1 exch def
/x1 exch def
/y0 exch def
/x0 exch def
x0 2 mul x1 add 3 div
y0 2 mul y1 add 3 div
end
} dup 0 4 dict put def

/subspline {
0 begin
/movetoNeeded exch def
y exch get /y3 exch def
x exch get /x3 exch def
y exch get /y2 exch def
x exch get /x2 exch def
y exch get /y1 exch def
x exch get /x1 exch def
y exch get /y0 exch def
x exch get /x0 exch def
x1 y1 x2 y2 thirdpoint
/p1y exch def
/p1x exch def
x2 y2 x1 y1 thirdpoint
/p2y exch def
/p2x exch def
x1 y1 x0 y0 thirdpoint
p1x p1y midpoint
/p0y exch def
/p0x exch def
x2 y2 x3 y3 thirdpoint
p2x p2y midpoint
/p3y exch def
/p3x exch def
movetoNeeded { p0x p0y moveto } if
p1x p1y p2x p2y p3x p3y curveto
end
} dup 0 17 dict put def

/storexyn {
/n exch def
/y n array def
/x n array def
n 1 sub -1 0 {
/i exch def
y i 3 2 roll put
x i 3 2 roll put
} for
} def

Begin
[ 0.9 0 0 0.9 0 0 ] concat
/originalCTM matrix currentmatrix def

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -31.2139 101.893 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 110.786 -40.107 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 70.107 61.2139 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 26.107 89.3209 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 99.3209 15 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 -1 -31.2139 1101.89 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 -1 70.107 1142.57 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 -1 26.107 1114.47 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 -1 99.3209 1188.79 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 1 490.786 -40.107 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 1 531.465 61.2139 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 1 575.465 89.3209 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 1 502.251 15 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 -1 531.465 1142.57 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 -1 575.465 1114.47 ] concat
332 642 4 4 Elli
End

Begin %I Elli
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ -1 0 0 -1 502.251 1188.79 ] concat
332 642 4 4 Elli
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 296.428 762 ] concat
[
(0)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 363 744 ] concat
[
(1)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 407 717 ] concat
[
(2)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 435.107 671.893 ] concat
[
(3)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 452 606.572 ] concat
[
(4)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 443 549 ] concat
[
(5)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 407 496 ] concat
[
(6)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 363 469 ] concat
[
(7)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 296.428 449.786 ] concat
[
(8)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 230 469 ] concat
[
(9)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 177 496 ] concat
[
(10)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 151 540 ] concat
[
(11)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 133 606.428 ] concat
[
(12)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 151 673 ] concat
[
(13)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 177 717 ] concat
[
(14)
] Text
End

Begin %I Text
0 0 0 SetCFg
/Helvetica-Bold 14 SetF
[ 1 0 0 1 221 744 ] concat
[
(15)
] Text
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
313 729 370 716 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
370 716 414 688 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
414 688 444 641 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
443 643 455 588 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
455 588 443 533 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
443 533 412 486 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
412 487 370 458 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
370 458 313 446 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
313 446 256 458 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
256 458 211 486 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
211 486 182 532 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
182 533 171 588 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
170 588 182 643 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
182 643 211 689 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
211 689 255 718 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
313 729 455 587 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
369 716 443 531 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
413 688 413 487 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
443 643 369 459 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
455 588 312 447 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
443 533 255 459 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
414 486 210 487 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
370 458 182 533 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
313 446 171 588 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
255 459 182 643 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
211 485 211 688 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
183 532 256 718 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
256 718 313 730 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
172 588 313 730 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
183 643 370 717 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
212 689 413 688 Line
End

Begin %I Line
1 0 0 [] 0 SetB
0 0 0 SetCFg
1 1 1 SetCBg
0 SetP
[ 1 0 0 1 -11 14 ] concat
256 717 443 643 Line
End

End %I eop

showpage

end
%%EndDocument
 353 679 a
 endTexFig
349 2031 a Fn(Figure)15 b(1:)20 b(A)15 b(circulan)o(t)h(graph)f(with)h(16)e
(no)q(des)i(and)f(o\013sets)f(1)h(and)h(4.)949 2727 y(23)p
eop
%%Page: 24 24
bop -92 619 a
 33564236 36585014 1184071 1512980 35719495 39469056 startTexFig
-92 619 a
%%BeginDocument: Figs/concat.ps

/Times-Roman findfont 12 scalefont setfont
407.929993 448.610016 moveto
(After round 2) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(After round 2) show

190.970001 448.610016 moveto
(After round 1) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(After round 1) show

407.929993 575.169983 moveto
(After round 0) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(After round 0) show

0.400000 setlinewidth
newpath 109.609993 674.609985 moveto
 109.609993 584.210022 lineto
 127.689995 584.210022 lineto
 127.689995 674.609985 lineto
closepath stroke

newpath 109.609993 656.530029 moveto
closepath stroke

newpath 109.609993 656.530029 moveto
 127.689995 656.530029 lineto
stroke

newpath 109.609993 638.450012 moveto
 127.689995 638.450012 lineto
stroke

newpath 109.609993 620.369995 moveto
 127.689995 620.369995 lineto
stroke

newpath 109.609993 602.289978 moveto
 127.689995 602.289978 lineto
stroke

newpath 145.770004 674.609985 moveto
 145.770004 584.210022 lineto
 163.850006 584.210022 lineto
 163.850006 674.609985 lineto
closepath stroke

newpath 145.770004 656.530029 moveto
closepath stroke

newpath 145.770004 656.530029 moveto
 163.850006 656.530029 lineto
stroke

newpath 145.770004 638.450012 moveto
 163.850006 638.450012 lineto
stroke

newpath 145.770004 620.369995 moveto
 163.850006 620.369995 lineto
stroke

newpath 145.770004 602.289978 moveto
 163.850006 602.289978 lineto
stroke

newpath 181.930008 602.289978 moveto
 200.010010 602.289978 lineto
stroke

newpath 181.930008 620.369995 moveto
 200.010010 620.369995 lineto
stroke

newpath 181.930008 638.450012 moveto
 200.010010 638.450012 lineto
stroke

newpath 181.930008 656.530029 moveto
 200.010010 656.530029 lineto
stroke

newpath 181.930008 656.530029 moveto
closepath stroke

newpath 181.930008 674.609985 moveto
 181.930008 584.210022 lineto
 200.010010 584.210022 lineto
 200.010010 674.609985 lineto
closepath stroke

newpath 218.089996 674.609985 moveto
 218.089996 584.210022 lineto
 236.169998 584.210022 lineto
 236.169998 674.609985 lineto
closepath stroke

newpath 218.089996 656.530029 moveto
closepath stroke

newpath 218.089996 656.530029 moveto
 236.169998 656.530029 lineto
stroke

newpath 218.089996 638.450012 moveto
 236.169998 638.450012 lineto
stroke

newpath 218.089996 620.369995 moveto
 236.169998 620.369995 lineto
stroke

newpath 218.089996 602.289978 moveto
 236.169998 602.289978 lineto
stroke

newpath 254.250000 602.289978 moveto
 272.330017 602.289978 lineto
stroke

newpath 254.250000 620.369995 moveto
 272.330017 620.369995 lineto
stroke

newpath 254.250000 638.450012 moveto
 272.330017 638.450012 lineto
stroke

newpath 254.250000 656.530029 moveto
 272.330017 656.530029 lineto
stroke

newpath 254.250000 656.530029 moveto
closepath stroke

newpath 254.250000 674.609985 moveto
 254.250000 584.210022 lineto
 272.330017 584.210022 lineto
 272.330017 674.609985 lineto
closepath stroke

118.650002 683.650024 moveto
(P0) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P0) show

154.809998 683.650024 moveto
(P1) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P1) show

190.970001 683.650024 moveto
(P2) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P2) show

227.130005 683.650024 moveto
(P3) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P3) show

263.290009 683.650024 moveto
(P4) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P4) show

/Times-Roman findfont 8 scalefont setfont
118.650002 665.570007 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

154.809998 665.570007 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

190.970001 665.570007 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

227.130005 665.570007 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

263.290009 665.570007 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

newpath 326.570007 674.609985 moveto
 326.570007 584.210022 lineto
 344.649994 584.210022 lineto
 344.649994 674.609985 lineto
closepath stroke

newpath 326.570007 656.530029 moveto
closepath stroke

newpath 326.570007 656.530029 moveto
 344.649994 656.530029 lineto
stroke

newpath 326.570007 638.450012 moveto
 344.649994 638.450012 lineto
stroke

newpath 326.570007 620.369995 moveto
 344.649994 620.369995 lineto
stroke

newpath 326.570007 602.289978 moveto
 344.649994 602.289978 lineto
stroke

newpath 362.730011 674.609985 moveto
 362.730011 584.210022 lineto
 380.809998 584.210022 lineto
 380.809998 674.609985 lineto
closepath stroke

newpath 362.730011 656.530029 moveto
closepath stroke

newpath 362.730011 656.530029 moveto
 380.809998 656.530029 lineto
stroke

newpath 362.730011 638.450012 moveto
 380.809998 638.450012 lineto
stroke

newpath 362.730011 620.369995 moveto
 380.809998 620.369995 lineto
stroke

newpath 362.730011 602.289978 moveto
 380.809998 602.289978 lineto
stroke

newpath 398.890015 602.289978 moveto
 416.970001 602.289978 lineto
stroke

newpath 398.890015 620.369995 moveto
 416.970001 620.369995 lineto
stroke

newpath 398.890015 638.450012 moveto
 416.970001 638.450012 lineto
stroke

newpath 398.890015 656.530029 moveto
 416.970001 656.530029 lineto
stroke

newpath 398.890015 656.530029 moveto
closepath stroke

newpath 398.890015 674.609985 moveto
 398.890015 584.210022 lineto
 416.970001 584.210022 lineto
 416.970001 674.609985 lineto
closepath stroke

newpath 435.049988 674.609985 moveto
 435.049988 584.210022 lineto
 453.130005 584.210022 lineto
 453.130005 674.609985 lineto
closepath stroke

newpath 435.049988 656.530029 moveto
closepath stroke

newpath 435.049988 656.530029 moveto
 453.130005 656.530029 lineto
stroke

newpath 435.049988 638.450012 moveto
 453.130005 638.450012 lineto
stroke

newpath 435.049988 620.369995 moveto
 453.130005 620.369995 lineto
stroke

newpath 435.049988 602.289978 moveto
 453.130005 602.289978 lineto
stroke

newpath 471.209991 602.289978 moveto
 489.290009 602.289978 lineto
stroke

newpath 471.209991 620.369995 moveto
 489.290009 620.369995 lineto
stroke

newpath 471.209991 638.450012 moveto
 489.290009 638.450012 lineto
stroke

newpath 471.209991 656.530029 moveto
 489.290009 656.530029 lineto
stroke

newpath 471.209991 656.530029 moveto
closepath stroke

newpath 471.209991 674.609985 moveto
 471.209991 584.210022 lineto
 489.290009 584.210022 lineto
 489.290009 674.609985 lineto
closepath stroke

335.610016 665.570007 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

371.769989 665.570007 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

407.929993 665.570007 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

444.089996 665.570007 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

480.250000 665.570007 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

335.610016 647.489990 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

371.769989 647.489990 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

407.929993 647.489990 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

444.089996 647.489990 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

480.250000 647.489990 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

newpath 109.609993 548.049988 moveto
 109.609993 457.649994 lineto
 127.689995 457.649994 lineto
 127.689995 548.049988 lineto
closepath stroke

newpath 109.609993 529.970032 moveto
closepath stroke

newpath 109.609993 529.970032 moveto
 127.689995 529.970032 lineto
stroke

newpath 109.609993 511.890015 moveto
 127.689995 511.890015 lineto
stroke

newpath 109.609993 493.809998 moveto
 127.689995 493.809998 lineto
stroke

newpath 109.609993 475.730011 moveto
 127.689995 475.730011 lineto
stroke

newpath 145.770004 548.049988 moveto
 145.770004 457.649994 lineto
 163.850006 457.649994 lineto
 163.850006 548.049988 lineto
closepath stroke

newpath 145.770004 529.970032 moveto
closepath stroke

newpath 145.770004 529.970032 moveto
 163.850006 529.970032 lineto
stroke

newpath 145.770004 511.890015 moveto
 163.850006 511.890015 lineto
stroke

newpath 145.770004 493.809998 moveto
 163.850006 493.809998 lineto
stroke

newpath 145.770004 475.730011 moveto
 163.850006 475.730011 lineto
stroke

newpath 181.930008 475.730011 moveto
 200.010010 475.730011 lineto
stroke

newpath 181.930008 493.809998 moveto
 200.010010 493.809998 lineto
stroke

newpath 181.930008 511.890015 moveto
 200.010010 511.890015 lineto
stroke

newpath 181.930008 529.970032 moveto
 200.010010 529.970032 lineto
stroke

newpath 181.930008 529.970032 moveto
closepath stroke

newpath 181.930008 548.049988 moveto
 181.930008 457.649994 lineto
 200.010010 457.649994 lineto
 200.010010 548.049988 lineto
closepath stroke

newpath 218.089996 548.049988 moveto
 218.089996 457.649994 lineto
 236.169998 457.649994 lineto
 236.169998 548.049988 lineto
closepath stroke

newpath 218.089996 529.970032 moveto
closepath stroke

newpath 218.089996 529.970032 moveto
 236.169998 529.970032 lineto
stroke

newpath 218.089996 511.890015 moveto
 236.169998 511.890015 lineto
stroke

newpath 218.089996 493.809998 moveto
 236.169998 493.809998 lineto
stroke

newpath 218.089996 475.730011 moveto
 236.169998 475.730011 lineto
stroke

newpath 254.250000 475.730011 moveto
 272.330017 475.730011 lineto
stroke

newpath 254.250000 493.809998 moveto
 272.330017 493.809998 lineto
stroke

newpath 254.250000 511.890015 moveto
 272.330017 511.890015 lineto
stroke

newpath 254.250000 529.970032 moveto
 272.330017 529.970032 lineto
stroke

newpath 254.250000 529.970032 moveto
closepath stroke

newpath 254.250000 548.049988 moveto
 254.250000 457.649994 lineto
 272.330017 457.649994 lineto
 272.330017 548.049988 lineto
closepath stroke

118.650002 539.010010 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

154.809998 539.010010 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

190.970001 539.010010 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

227.130005 539.010010 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

263.290009 539.010010 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

118.650002 520.929993 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

154.809998 520.929993 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

190.970001 520.929993 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

227.130005 520.929993 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

263.290009 520.929993 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

118.650002 502.849976 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

118.650002 484.769989 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

154.809998 502.849976 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

154.809998 484.769989 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

190.970001 502.849976 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

190.970001 484.769989 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

227.130005 502.849976 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

227.130005 484.769989 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

263.290009 502.849976 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

263.290009 484.769989 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

newpath 326.570007 548.049988 moveto
 326.570007 457.649994 lineto
 344.649994 457.649994 lineto
 344.649994 548.049988 lineto
closepath stroke

newpath 326.570007 529.970032 moveto
closepath stroke

newpath 326.570007 529.970032 moveto
 344.649994 529.970032 lineto
stroke

newpath 326.570007 511.890015 moveto
 344.649994 511.890015 lineto
stroke

newpath 326.570007 493.809998 moveto
 344.649994 493.809998 lineto
stroke

newpath 326.570007 475.730011 moveto
 344.649994 475.730011 lineto
stroke

newpath 362.730011 548.049988 moveto
 362.730011 457.649994 lineto
 380.809998 457.649994 lineto
 380.809998 548.049988 lineto
closepath stroke

newpath 362.730011 529.970032 moveto
closepath stroke

newpath 362.730011 529.970032 moveto
 380.809998 529.970032 lineto
stroke

newpath 362.730011 511.890015 moveto
 380.809998 511.890015 lineto
stroke

newpath 362.730011 493.809998 moveto
 380.809998 493.809998 lineto
stroke

newpath 362.730011 475.730011 moveto
 380.809998 475.730011 lineto
stroke

newpath 398.890015 475.730011 moveto
 416.970001 475.730011 lineto
stroke

newpath 398.890015 493.809998 moveto
 416.970001 493.809998 lineto
stroke

newpath 398.890015 511.890015 moveto
 416.970001 511.890015 lineto
stroke

newpath 398.890015 529.970032 moveto
 416.970001 529.970032 lineto
stroke

newpath 398.890015 529.970032 moveto
closepath stroke

newpath 398.890015 548.049988 moveto
 398.890015 457.649994 lineto
 416.970001 457.649994 lineto
 416.970001 548.049988 lineto
closepath stroke

newpath 435.049988 548.049988 moveto
 435.049988 457.649994 lineto
 453.130005 457.649994 lineto
 453.130005 548.049988 lineto
closepath stroke

newpath 435.049988 529.970032 moveto
closepath stroke

newpath 435.049988 529.970032 moveto
 453.130005 529.970032 lineto
stroke

newpath 435.049988 511.890015 moveto
 453.130005 511.890015 lineto
stroke

newpath 435.049988 493.809998 moveto
 453.130005 493.809998 lineto
stroke

newpath 435.049988 475.730011 moveto
 453.130005 475.730011 lineto
stroke

newpath 471.209991 475.730011 moveto
 489.290009 475.730011 lineto
stroke

newpath 471.209991 493.809998 moveto
 489.290009 493.809998 lineto
stroke

newpath 471.209991 511.890015 moveto
 489.290009 511.890015 lineto
stroke

newpath 471.209991 529.970032 moveto
 489.290009 529.970032 lineto
stroke

newpath 471.209991 529.970032 moveto
closepath stroke

newpath 471.209991 548.049988 moveto
 471.209991 457.649994 lineto
 489.290009 457.649994 lineto
 489.290009 548.049988 lineto
closepath stroke

335.610016 539.010010 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

371.769989 539.010010 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

407.929993 539.010010 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

444.089996 539.010010 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

480.250000 539.010010 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

335.610016 520.929993 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

371.769989 520.929993 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

407.929993 520.929993 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

444.089996 520.929993 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

480.250000 520.929993 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

335.610016 502.849976 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

335.610016 484.769989 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

371.769989 502.849976 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

371.769989 484.769989 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

407.929993 502.849976 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

407.929993 484.769989 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

444.089996 502.849976 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

444.089996 484.769989 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

480.250000 502.849976 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

480.250000 484.769989 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

335.610016 466.690002 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

371.769989 466.690002 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

407.929993 466.690002 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

444.089996 466.690002 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

480.250000 466.690002 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

/Times-Roman findfont 12 scalefont setfont
335.610016 683.650024 moveto
(P0) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P0) show

371.769989 683.650024 moveto
(P1) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P1) show

407.929993 683.650024 moveto
(P2) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P2) show

444.089996 683.650024 moveto
(P3) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P3) show

480.250000 683.650024 moveto
(P4) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(P4) show

newpath 109.609993 421.489990 moveto
 109.609993 331.089996 lineto
 127.689995 331.089996 lineto
 127.689995 421.489990 lineto
closepath stroke

newpath 109.609993 403.410004 moveto
closepath stroke

newpath 109.609993 403.410004 moveto
 127.689995 403.410004 lineto
stroke

newpath 109.609993 385.330017 moveto
 127.689995 385.330017 lineto
stroke

newpath 109.609993 367.250000 moveto
 127.689995 367.250000 lineto
stroke

newpath 109.609993 349.170013 moveto
 127.689995 349.170013 lineto
stroke

/Times-Roman findfont 8 scalefont setfont
118.650002 412.450012 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

118.650002 394.369995 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

118.650002 376.290009 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

118.650002 358.209991 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

118.650002 340.130005 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

154.809998 340.130005 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

154.809998 358.209991 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

154.809998 376.290009 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

154.809998 394.369995 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

154.809998 412.450012 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

newpath 145.770004 349.170013 moveto
 163.850006 349.170013 lineto
stroke

newpath 145.770004 367.250000 moveto
 163.850006 367.250000 lineto
stroke

newpath 145.770004 385.330017 moveto
 163.850006 385.330017 lineto
stroke

newpath 145.770004 403.410004 moveto
 163.850006 403.410004 lineto
stroke

newpath 145.770004 403.410004 moveto
closepath stroke

newpath 145.770004 421.489990 moveto
 145.770004 331.089996 lineto
 163.850006 331.089996 lineto
 163.850006 421.489990 lineto
closepath stroke

newpath 181.930008 421.489990 moveto
 181.930008 331.089996 lineto
 200.010010 331.089996 lineto
 200.010010 421.489990 lineto
closepath stroke

newpath 181.930008 403.410004 moveto
closepath stroke

newpath 181.930008 403.410004 moveto
 200.010010 403.410004 lineto
stroke

newpath 181.930008 385.330017 moveto
 200.010010 385.330017 lineto
stroke

newpath 181.930008 367.250000 moveto
 200.010010 367.250000 lineto
stroke

newpath 181.930008 349.170013 moveto
 200.010010 349.170013 lineto
stroke

190.970001 412.450012 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

190.970001 394.369995 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

190.970001 376.290009 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

190.970001 358.209991 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

190.970001 340.130005 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

227.130005 340.130005 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

227.130005 358.209991 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

227.130005 376.290009 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

227.130005 394.369995 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

227.130005 412.450012 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

newpath 218.089996 349.170013 moveto
 236.169998 349.170013 lineto
stroke

newpath 218.089996 367.250000 moveto
 236.169998 367.250000 lineto
stroke

newpath 218.089996 385.330017 moveto
 236.169998 385.330017 lineto
stroke

newpath 218.089996 403.410004 moveto
 236.169998 403.410004 lineto
stroke

newpath 218.089996 403.410004 moveto
closepath stroke

newpath 218.089996 421.489990 moveto
 218.089996 331.089996 lineto
 236.169998 331.089996 lineto
 236.169998 421.489990 lineto
closepath stroke

newpath 254.250000 421.489990 moveto
 254.250000 331.089996 lineto
 272.330017 331.089996 lineto
 272.330017 421.489990 lineto
closepath stroke

newpath 254.250000 403.410004 moveto
closepath stroke

newpath 254.250000 403.410004 moveto
 272.330017 403.410004 lineto
stroke

newpath 254.250000 385.330017 moveto
 272.330017 385.330017 lineto
stroke

newpath 254.250000 367.250000 moveto
 272.330017 367.250000 lineto
stroke

newpath 254.250000 349.170013 moveto
 272.330017 349.170013 lineto
stroke

263.290009 412.450012 moveto
(0) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(0) show

263.290009 394.369995 moveto
(1) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(1) show

263.290009 376.290009 moveto
(2) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(2) show

263.290009 358.209991 moveto
(3) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(3) show

263.290009 340.130005 moveto
(4) stringwidth pop 2.0 div -1 mul -2.400000 rmoveto
(4) show

/Times-Roman findfont 16 scalefont setfont
299.450012 629.409973 moveto
(==>) stringwidth pop 2.0 div -1 mul -5.600000 rmoveto
(==>) show

299.450012 502.849976 moveto
(==>) stringwidth pop 2.0 div -1 mul -5.600000 rmoveto
(==>) show

516.409973 629.409973 moveto
(==>) stringwidth pop 2.0 div -1 mul -5.600000 rmoveto
(==>) show

516.409973 502.849976 moveto
(==>) stringwidth pop 2.0 div -1 mul -5.600000 rmoveto
(==>) show

/Times-Roman findfont 12 scalefont setfont
190.970001 575.169983 moveto
(Initial) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(Initial) show

190.970001 322.050018 moveto
(After local shift) stringwidth pop 2.0 div -1 mul -4.000000 rmoveto
(After local shift) show

showpage
%%EndDocument
 -92 619 a
 endTexFig
286 2090 a Fn(Figure)15 b(2:)20 b(Example)c(of)e(the)i(concatenation)f
(algorithm)g(with)h(5)f(pro)q(cessors.)949 2727 y(24)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF