chapter 4 -- draft for next meeting (comments/corrections are welcome)

Marc Snir (snir@watson.ibm.com)
Wed, 27 Sep 1995 11:52:17 -0400

%!PS-Adobe-2.0
%%Creator: dvips 5.47 (RS/6000 1.0) Copyright 1986-91 Radical Eye Software
%%Title: temp.dvi
%%Pages: 32 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
TeXDict begin 1000 300 300 @start /Fa 13 118 df<70F8FCFC7C0C0C0C18183830604006
0E7C840D>59 D<000001C00000078000001E00000078000001E00000078000000E0000003C0000
00F0000003C000000F0000003C000000F0000000F00000003C0000000F00000003C0000000F000
00003C0000000E0000000780000001E0000000780000001E0000000780000001C01A1A7C9723>
I<E0000000780000001E0000000780000001E0000000780000001C0000000F00000003C0000000
F00000003C0000000F00000003C0000003C000000F0000003C000000F0000003C000000F000000
1C00000078000001E00000078000001E00000078000000E00000001A1A7C9723>62
D<00F18003FDC0078F800E07801C07803C07803C0700780700780700780700F00E00F00E00F00E
00F00E18F01C30F03C30707C3078FC603FCFC00F078015147E9318>97 D<07803F803F00070007
0007000E000E000E000E001C001C001CF01FFC3F1E3E0E3C0F380F700F700F700F700FE01EE01E
E01EE03CE03CE038607071E03FC01F0010207E9F14>I<007C01FE07870F0F1E0F1C0E3C047800
78007800F000F000F000F000F00070027007381E1FF80FE010147E9314>I<00007C0000FE0001
9E00039E00030C000700000700000700000700000E00000E00000E0000FFF001FFF0000E00001C
00001C00001C00001C00001C000038000038000038000038000038000070000070000070000070
0000700000E00000E00000E00000E00000C00001C00031C000798000F300007E00003C00001729
7E9F16>102 D<007000F000F00060000000000000000000000000000007001F8039C031C061C0
61C0C38003800380070007000E000E000E181C301C301C601CE00FC007000D1F7F9E10>105
D<0F07C0001F8FE00031D8700061F0380061E0380061C03800C3C0700003807000038070000380
70000700E0000700E0000700E0000701C1800E01C3000E0383000E0386000E018E001C01FC000C
00F00019147F931B>110 D<007C0001FF000383800F01C01E01C01C01E03C01E07801E07801E0
7801E0F003C0F003C0F003C0F00780F00700700F00701E003838001FF00007C00013147E9316>
I<03C1E007E7F80C7E3C187C1C18781E18701E30E01E00E01E00E01E00E01E01C03C01C03C01C0
3C01C07803C07803C07003C0E003E3C0077F80071E000700000700000E00000E00000E00000E00
001C0000FFC000FFC000171D819317>I<00C000E001C001C001C001C003800380FFF8FFF80700
0700070007000E000E000E000E001C001C001C001C1838303830386038E01FC00F000D1C7F9B10
>116 D<0780301FC03838C07030E07060E07061C070C1C0E00380E00380E00380E00701C00701
C00701C00701C3070386070386070786070F8C03F9F801F0F018147F931A>I
E /Fb 1 1 df<FFFFC0FFFFC012027D871A>0 D E /Fc 5 62 df<03060C1C183830706060E0E0
E0E0E0E0E0E0E0E06060703038181C0C0603081E7E950D>40 D<C0603038181C0C0E0606070707
0707070707070706060E0C1C18383060C0081E7E950D>I<06001E00FE00EE000E000E000E000E
000E000E000E000E000E000E000E000E000E00FFE0FFE00B137D9211>49
D<1F003FC061E0C0E0E070E0700070007000E000C001C0030006000C30183030707FE0FFE0FFE0
0C137E9211>I<7FFFE0FFFFF0000000000000000000000000000000000000FFFFF07FFFE0140A
7E8B19>61 D E /Fd 6 113 df<0C000C001C003C00FC004C000C000C000C000C000C000C000C
000C000C000C007FC07FC00A127E910F>49 D<7C00FF00E380418001801F807F80E180C180C180
E3807FF03CF00C0D7E8C0F>97 D<0E000E000E000000000000007E007E00060006000600060006
000600060006000600FFE0FFE00B137E920F>105 D<0380038003800000000000003F803F8001
800180018001800180018001800180018001800180018001804180E380FF007C0009197F920F>
I<FEE0FFF03BB033303330333033303330333033303330FFFCFFFC0E0D808C0F>109
D<F780FFC038E0387030303030303030303030387038E03FC037003000300030003000FC00FC00
0C137F8C0F>112 D E /Fe 2 81 df<00001C00003C0000F80001E00003C0000780000F00000E
00001E00003C00003C00003C000078000078000078000078000078000078000078000078000078
000078000078000078000078000078000078000078000078000078000078000078000078000078
000078000078000078000078000078000078000078000078000078000078000078000078000078
0000780000780000780000F00000F00000F00001E00001E00003C0000380000700000E00001C00
00780000E00000E000007800001C00000E000007000003800003C00001E00001E00000F00000F0
0000F0000078000078000078000078000078000078000078000078000078000078000078000078
000078000078000078000078000078000078000078000078000078000078000078000078000078
000078000078000078000078000078000078000078000078000078000078000078000078000078
00003C00003C00003C00001E00000E00000F000007800003C00001E00000F800003C00001C167C
7B8121>40 D<FFFFFFFFE0FFFFFFFFF07800001FF07C000003F03E000000F81F000000380F0000
001C0F8000000C07C000000C03C000000603E000000001F000000000F80000000078000000007C
000000003E000000001E000000001F000000000F8000000007C000000003C000000003C0000000
01800000000380000000030000000006000000000C000000001800000000380000000030000000
006000000000C0000006018000000C038000000C030000001C06000000380C000000F818000001
F83800001FF03FFFFFFFF07FFFFFFFF0FFFFFFFFE0272A7E7F2C>80 D E
/Ff 6 103 df<70F0F8F8781818183030706040050D7D840C>59 D<0000038000000F0000003C
000000F0000003C000000F0000003C000000F0000003C000000F0000003C000000F0000000F000
00003C0000000F00000003C0000000F00000003C0000000F00000003C0000000F00000003C0000
000F000000038019187D9520>I<E0000000780000001E0000000780000001E000000078000000
1E0000000780000001E0000000780000001E00000007800000078000001E00000078000001E000
00078000001E00000078000001E00000078000001E00000078000000E000000019187D9520>62
D<00F18003FB800F0F801E0F803C0700380700780700780700F00E00F00E00F00E00F00E20F01C
60F01C60703C6070FCC03FCFC00F078013127F9116>97 D<3F007F000F000E000E000E000E001C
001C001C001C0039E03FF83E383C1C781C701E701E701EE03CE03CE03CE038E078E070E0E071C0
3F801E000F1D7E9C12>I<0001E00007F0000E78000EF0001C60001C00001C00001C00003C0000
380000380003FFC003FF8000380000700000700000700000700000700000E00000E00000E00000
E00000E00001C00001C00001C00001C00001C000038000038000038000630000F70000F60000FC
000078000015257E9C14>102 D E /Fg 3 55 df<C0000CE0001C7000383800701C00E00E01C0
06018007038003870001CE0000FC0000780000780000FC0001CE000387000703800601800E01C0
1C00E0380070700038E0001CC0000C16187A9623>2 D<000000C0000003C000000F0000003C00
0000F0000003C000000F0000001C00000078000001E00000078000001E00000078000000E00000
00780000001E0000000780000001E0000000780000001C0000000F00000003C0000000F0000000
3C0000000F00000003C0000000C000000000000000000000000000000000000000000000000000
000000FFFFFFC0FFFFFFC01A247C9C23>20 D<00000C00000C00001C0000180000380000300000
700000600000E00000C00001C0000180000380000300000700000600000E00000C00001C000018
0000380000300000300000700000600000E00000C00001C0000180000380000300000700000600
000E00000C00001C0000180000380000300000700000600000E00000C00000C00000162C7AA000
>54 D E /Fh 9 116 df<00E001E007C007000F001E003C0038007800700070007000F000E000
E000E000E000E000E000E000F000700070007000780038003C001E000F00070007C001E000E00B
217A9C16>40 D<E000F0007C001C001E000F000780038003C001C001C001C001E000E000E000E0
00E000E000E000E001E001C001C001C003C0038007800F001E001C007C00F000E0000B217C9C16
>I<1FE0007FF8007FFC00783C00301E00000E00003E0007FE003FFE007FCE00F80E00E00E00E0
0E00F01E00F83E007FFFE03FF7E00FC3E013127E9116>97 D<03F80FFE1FFE3C1E780C7000F000
E000E000E000E000F000700778073E0F1FFE0FFC03F010127D9116>99 D<7E0000FE00007E0000
0E00000E00000E00000E00000E7C000FFF000FFF800F87800F03800F03800E03800E03800E0380
0E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816>104
D<FFC000FFC000FFC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF80FFFF80FFFF801119
7E9816>108 D<FBC780FFEFC0FFFFE03E7CE03C78E03870E03870E03870E03870E03870E03870
E03870E03870E03870E03870E0FE7CF8FE7CF8FE7CF81512809116>I<03E0000FF8001FFC003C
1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F003C1E001FFC000F
F80003E00011127E9116>111 D<0FEC3FFC7FFCF03CE01CE01CF0007F801FF007FC003EE00EE0
0EF00EF81EFFFCFFF8C7E00F127D9116>115 D E /Fi 42 123 df<003E0000007F000000FF80
0001E3C00001C3C00001C1E00003C1E0000381E0000381E00003C1E00003C3C00003C3C00003C7
800003CF800003CF000001FE001001FC001C01F8003C01F0003803F0003807F000780F7800701E
7C00F03C3C00E0783E01E0781F01C0F01F03C0F00F8780F007C700F003EE00F003FE007801FC00
7C01FC023E07FE0E1FFFFFFE0FFF0FFE03F803F81F257EA325>38 D<FFE0FFE0FFE00B037F8C10
>45 D<F0F0F0F004047B830E>I<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003C003
C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0FFFF
FFFFFFFF10227CA118>49 D<03F0000FFC001FFE003C1F003807807007C07003C0F003E0E001E0
6001E02001E00001E00001E00001E00003C00003C0000780000780000F00001E00003C00007800
00F00001E00001C0000380000700000E00001C0000380000700000FFFFE0FFFFE0FFFFE013227E
A118>I<01F00007FC001FFF003E0F003807807003C02003C02003C00003C00003C00003C00007
80000780000F00001E0003FC0003F80003FE00000F000007800003C00003C00001E00001E00001
E00001E00001E08001E0C003C0E003C07007803C0F801FFF000FFC0003F00013237EA118>I<00
1F00001F00002F00002F00006F0000EF0000CF0001CF0001CF00038F00038F00078F00070F000F
0F000E0F001E0F003C0F003C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F00000F0000
0F00000F00000F00000F00000F00000F00000F0015217FA018>I<3FFF803FFF803FFF803C0000
3C00003C00003C00003C00003C00003C00003C00003C00003CF8003FFE003FFF003F0F803E0780
3C03C03803C00001E00001E00001E00001E00001E00001E00001E04003C04003C0E003C0700780
7C1F003FFE000FFC0003F00013227EA018>I<FFFFE0FFFFE0FFFFE00001E00003C00003800007
80000F00000E00001E00001C00003C0000380000780000780000F00000F00000E00001E00001E0
0001E00003C00003C00003C00003C00003C0000780000780000780000780000780000780000780
0013217EA018>55 D<001F0000001F0000003F8000003F8000003B8000007BC0000073C0000071
C00000F1E00000F1E00000E0E00001E0F00001E0F00001C0F00003C0780003C078000380780007
803C0007803C0007003C000F001E000F001E000FFFFE001FFFFF001FFFFF001C000F003C000780
3C00078038000780780003C0780003C0700003C0F00001E0F00001E0E00001E01B237EA220>65
D<FFFC00FFFF80FFFFC0F007F0F001F0F00078F0003CF0003CF0003CF0003CF0003CF00038F000
78F000F0F003E0FFFFC0FFFF00FFFFC0F00FE0F001F8F00078F0003CF0001CF0001EF0001EF000
1EF0001EF0001EF0003CF0007CF000F8F003F0FFFFE0FFFFC0FFFE0017237BA220>I<000FF000
007FFC0000FFFF0001F01F0003C00700078002000F0000001E0000003E0000003C0000003C0000
00780000007800000078000000F0000000F0000000F0000000F0000000F0000000F0000000F000
0000F0000000F00000007800000078000000780000003C0000003C0000003E0000001E0000000F
0000800780018003C0038001F00F8000FFFF00007FFC00000FF00019257DA31F>I<FFFFF0FFFF
F0FFFFF0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00FFFFE0FFFFE0FFFFE0F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000FFFFF8FFFFF8FFFFF815237BA21D>69 D<000FF000003FFE0000
FFFF8001F81F8003E00780078001000F0000001E0000001E0000003C0000003C00000078000000
7800000078000000F0000000F0000000F0000000F0000000F0000000F0000000F000FFC0F000FF
C0F000FFC0780003C0780003C0780003C03C0003C03C0003C01E0003C01E0003C00F0003C00780
03C003E003C001F80FC000FFFFC0003FFF00000FF8001A257DA321>71 D<F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237CA20D>73
D<FC00007EFE0000FEFE0000FEFE0000FEF70001DEF70001DEF70001DEF78003DEF380039EF380
039EF3C0079EF3C0079EF1C0071EF1C0071EF1E00F1EF0E00E1EF0E00E1EF0F01E1EF0F01E1EF0
701C1EF0783C1EF0783C1EF038381EF03C781EF03C781EF01C701EF01C701EF01EF01EF00EE01E
F00EE01EF00FE01EF007C01EF007C01EF007C01EF000001E1F237BA22A>77
D<FC001EFE001EFE001EFE001EF7001EF7001EF3801EF3801EF3C01EF1C01EF1C01EF1E01EF0E0
1EF0F01EF0F01EF0781EF0781EF0381EF03C1EF03C1EF01E1EF01E1EF00E1EF00F1EF0071EF007
1EF0079EF0039EF0039EF001DEF001DEF000FEF000FEF000FEF0007E17237BA222>I<FFFE00FF
FF80FFFFC0F003E0F000F0F00078F00078F0003CF0003CF0003CF0003CF0003CF0003CF00078F0
0078F000F0F003E0FFFFC0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F0000016237BA21F>80
D<00FF0003FFC007FFF00F83F01E00F03C00203C00007800007800007800007800007800007C00
003C00003F00001FC0000FFC0007FF0001FF80003FC00007E00001F00000F00000F80000780000
78000078000078000078400078E000F0F000F0F801E07F07C03FFF800FFF0001FC0015257EA31B
>83 D<F0000078F0000078780000F0780000F0780000F03C0001E03C0001E03C0001E01E0003C0
1E0003C01F0003C00F0007800F0007800F80078007800F0007800F0003C00E0003C01E0003C01E
0001E03C0001E03C0001E03C0000F0780000F0780000F07800007870000078F0000078F0000038
E000003DE000001DC000001FC000001FC000000F8000000F80001D237FA220>86
D<07E01FF83FFC3C1E301E200F000F000F000F01FF0FFF3FFF7F0F780FF00FF00FF00FF80F7C3F
7FFF3FFF1F8F10167E9517>97 D<F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F1F000F7FC00FFFE00FC1F00F80F00F00780F00780F003C0F0
03C0F003C0F003C0F003C0F003C0F003C0F003C0F00780F00780F80F00FC3E00FFFE00F7F800F3
F00012237CA219>I<01FC0007FF000FFF801F07803C0180780000780000700000F00000F00000
F00000F00000F00000F000007800007800007800403C00C01F07C00FFFC007FF8001FC0012167E
9516>I<0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C003F3C00FFFC01FFFC03F0FC03C07C07803C07803C0F003C0F003C0F003C0F003C0F003
C0F003C0F003C0F003C07803C07803C03C07C03E0FC01FFFC00FFBC003E3C012237EA219>I<03
F00007FC001FFE003E0F003C0780780380780380F001C0FFFFC0FFFFC0FFFFC0F00000F00000F0
00007000007800007800003C00801F07800FFF8007FF0001F80012167E9516>I<003F00FF01FF
03C1038007800780078007800780078007800780FFF8FFF8FFF807800780078007800780078007
80078007800780078007800780078007800780078007800780102380A20F>I<01F0F807FFF80F
FFF81F1F801E0F003C07803C07803C07803C07803C07801E0F001F1F001FFE001FFC0039F00038
00003800003C00003FFE001FFFC01FFFE03FFFF07801F0F800F8F00078F00078F00078F0007878
00F03E03E01FFFC00FFF8001FC0015217F9518>I<F0F0F0F0000000000000000000F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>105 D<F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F01F80F03F00F03E00F07C00F0
F800F1F000F3E000F7C000FFC000FFC000FFE000FFE000FDF000F8F800F07800F07C00F03E00F0
1E00F01F00F00F00F00F80F007C012237CA218>107 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>I<F0F807C0F3FE1FF0FFFF7FF8FE
0FF078FC0FE07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803CF007803C
F007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C1E167C
9529>I<F1F8F7FCFFFEFE1EF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00F10167C9519>I<01FC0007FF000FFF801F07C03C01E07800F07800F07000
70F00078F00078F00078F00078F00078F000787800F07800F07C01F03E03E01F07C00FFF8007FF
0001FC0015167F9518>I<F1F000F7FC00FFFE00FC3F00F80F00F00780F00780F007C0F003C0F0
03C0F003C0F003C0F003C0F003C0F007C0F00780F00F80F80F00FC3E00FFFE00F7F800F3F000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F0000012207C9519>I<F0E0F3
E0F7E0FFE0FF00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F000F000
F0000B167C9511>114 D<07F01FFE3FFF3C0F7803780078007C003F003FF01FF80FFC01FE001F
000F000F400FE00FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00FFF8FFF8
FFF80F000F000F000F000F000F000F000F000F000F000F000F000F000F000F080F1C07FC07F803
E00E1C7F9B12>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF01FF83F7FFF7FEF1F8F10167C9519>I<F001E0F001E07803C07803C07803C03C07803C
07803C07801E07001E0F001E0F000F0E000F1E000F1E00071C00079C0007BC0003B80003B80003
F80001F00001F00013167F9516>I<7801F07C01E03E03C01E07C00F0780078F0007DE0003FC00
01FC0000F80000700000F80001FC0003DC00039E00078F000F07801E07801E03C03C01E07800F0
F800F81516809516>120 D<F001E0F001E07803C07803C07C03C03C07803C07801E07801E0700
1E0F000F0F000F0E00071E00079E00039C00039C00039C0001980001D80000F80000F00000F000
00F00000E00000E00001E00001C00001C0004380007F80007F00007E000013207F9516>I<7FFF
C07FFFC07FFFC0000F80000F00001E00003E00007C0000780000F00001F00003E00003C0000780
000F80001F00001E00003C00007C0000FFFFC0FFFFC0FFFFC012167F9515>I
E /Fj 20 119 df<70F8F8F0E005057B840E>46 D<000007000000070000000F0000000F000000
1F0000003F0000003F0000006F0000006F000000CF000000CF0000018F0000038F0000030F0000
060F0000060F00000C0F80000C07800018078000180780003FFF80007FFF800060078000C00780
00C00780018007800180078003000780070007800F0007807FC07FF8FFC07FF81D207E9F22>65
D<01FFFFFE01FFFFFC001E003C001E001C001E001C003C000C003C000C003C000C003C00180078
0C1800780C1800780C0000781C0000F0380000FFF80000FFF80000F0380001E0300001E0300001
E0303001E0306003C0006003C0006003C000C003C001C007800180078003800780070007801F00
FFFFFF00FFFFFE001F1F7D9E1F>69 D<01FFFF0001FFFFC0001E01E0001E00F0001E0078003C00
78003C0078003C0078003C0078007800F0007800F0007801E0007803C000F00F0000FFFE0000FF
F80000F03C0001E01E0001E00E0001E00F0001E00F0003C01E0003C01E0003C01E0003C01E0007
803C0007803C1807803C1807803C30FFF81E30FFF00FE0000007C01D207D9E21>82
D<00F18003FDC0078F800E07801C07803C07803C0700780700780700780700F00E00F00E00F00E
00F00E30F01C60F03C60707C6078FCC03FCFC00F078014147C9317>97 D<007E0001FF00038380
0F07801E07801C07003C0200780000780000780000F00000F00000F00000F00000F00000700200
700700381E001FF80007E00011147C9315>99 D<0000780003F80003F000007000007000007000
00E00000E00000E00000E00001C00001C000F1C003FDC0078F800E07801C07803C07803C070078
0700780700780700F00E00F00E00F00E00F00E30F01C60F03C60707C6078FCC03FCFC00F078015
207C9F17>I<007C0001FF000783000F01801E01803C01803C0300780E007FFC007FE000F00000
F00000F00000F000007000007002007807003C1E001FF80007E00011147C9315>I<0000F80001
FC0003BC00033C000718000700000700000E00000E00000E00000E00000E0001FFE001FFE0001C
00001C00001C000038000038000038000038000038000070000070000070000070000070000070
0000E00000E00000E00000E00001C00001C00001C0000180003380007B8000F300007E00003C00
001629829F0E>I<006000F000F000E000000000000000000000000000000F001F80318031C063
806380C3800700070007000E000E000E001C301C601C6038C018C01F800F000C1F7D9E0E>105
D<03C01FC01F8003800380038007000700070007000E000E000E000E001C001C001C001C003800
3800380038007000700070007180E300E300E300E6007E003C000A207C9F0C>108
D<1E07C0F8003F1FE1FC0033B8730E0063E076070063C03C07006380380700C780780E00070070
0E000700700E000700700E000E00E01C000E00E01C000E00E01C000E00E038601C01C038C01C01
C038C01C01C071801C01C031803803803F001801801E0023147D9325>I<1E07C03F1FE033B870
63E07063C038638038C780700700700700700700700E00E00E00E00E00E00E01C31C01C61C01C6
1C038C1C018C3801F81800F018147D931A>I<007C0001FF000383800F01C01E01C01C01E03C01
E07801E07801E07801E0F003C0F003C0F003C0F00780F00700700F00701E003838001FF00007C0
0013147C9317>I<03C1E007E7F8067E3C0C7C1C0C781E0C701E18E01E00E01E00E01E00E01E01
C03C01C03C01C03C01C07803C07803C07003C0E003E3C0077F80071E000700000700000E00000E
00000E00000E00001C0000FFC000FFC000171D809317>I<1E0F003F3F8033F1C063C1C063C3C0
6383C0C783800700000700000700000E00000E00000E00000E00001C00001C00001C00001C0000
38000018000012147D9313>114 D<00FC03FE07070E0F0E0F0E0E1E000F800FF007F803FC003E
001E701EF01CF01CE03860703FE01F8010147D9313>I<018001C0038003800380038007000700
FFF0FFF00E000E000E000E001C001C001C001C0038003800380038307060706070C071803F001E
000C1C7C9B0F>I<0F00601F80703180E031C0E06380E06380E0C381C00701C00701C00701C00E
03800E03800E03800E038C0E07180E07180E0F180E1F3007F3F003E1E016147D9318>I<0F01C0
1F83C03183E031C1E06380E06380E0C380C00700C00700C00700C00E01800E01800E01800E0300
0E03000E06000E06000F0C0007F80001E00013147D9315>I E /Fk 39 122
df<00E001C0038007000E000E001C001C003800380038007000700070007000E000E000E000E0
00E000E000E000E000E000E000E000E00070007000700070003800380038001C001C000E000E00
0700038001C000E00B2A7E9E10>40 D<E000700038001C000E000E000700070003800380038001
C001C001C001C000E000E000E000E000E000E000E000E000E000E000E000E001C001C001C001C0
038003800380070007000E000E001C0038007000E0000B2A7E9E10>I<7878787838307060E005
097D830C>44 D<001C0000003E0000003E0000002E0000006700000067000000E7800000C78000
00C3800001C3C0000183C0000181C0000381E0000381E0000700F0000700F0000600F0000E0078
000FFFF8000FFFF8001FFFFC001C003C0018003C0038001E0038001E0070001F0070000F007000
0F00E0000780191D7F9C1C>65 D<FFF800FFFF00FFFF80F00FC0F003E0F000F0F000F0F000F0F0
00F0F000F0F001E0F007C0FFFF80FFFE00FFFF80F01FC0F003E0F000F0F00078F00078F00078F0
0078F00078F000F0F001F0F007E0FFFFC0FFFF80FFFC00151D7C9C1C>I<003FC000FFF003FFF0
07C0700F80001E00003E00003C0000780000780000780000F00000F00000F00000F00000F00000
F00000F00000F00000F000007800007800007800003C00003E00001E00000F800807C07803FFF8
00FFF0003F80151F7D9D1B>I<FFFC00FFFF00FFFF80F00FE0F003F0F000F0F00078F00078F000
3CF0003CF0001CF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0003CF0003CF000
7CF00078F000F0F001F0F007E0FFFFC0FFFF00FFFC00171D7C9C1E>I<FFFFC0FFFFC0FFFFC0F0
0000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80FFFF80F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0FFFFC012
1D7C9C19>I<FFFF80FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000FFFF00FFFF00FFFF00F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000111D7C9C18>I<003F8001FFF003FFF807C0F80F00181E00
003E00003C0000780000780000780000F00000F00000F00000F00000F00000F00000F007F8F007
F8F007F87800387800387800383C00383E00381E00380F003807C07803FFF801FFF0003F80151F
7D9D1C>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0FFFFF0FFFFF0FFFFF0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0141D7C9C1D>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0041D7C9C0C>I<F000F000F000F000F000F000F000F000F000F000F0
00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000FFFEFFFEFFFE0F1D
7C9C16>76 D<FC0007E0FC0007E0FC0007E0EE000DE0EE000DE0EE000DE0E70019E0E70019E0E7
0019E0E78039E0E38031E0E3C071E0E3C071E0E1C061E0E1C061E0E1E0E1E0E1E0E1E0E0E0C1E0
E0F1C1E0E07181E0E07181E0E07181E0E03B01E0E03B01E0E03B01E0E01E01E0E01E01E0E01E01
E0E00001E01B1D7C9C24>I<FC0070FC0070FE0070EE0070EF0070E70070E70070E78070E38070
E3C070E3C070E1E070E1E070E0E070E0F070E07070E07870E07870E03C70E03C70E01C70E01E70
E00E70E00E70E00F70E00770E007F0E003F0E003F0141D7C9C1D>I<003F000001FFE00003FFF0
0007C0F8000F807C001E001E003E001F003C000F00780007807800078078000780F00003C0F000
03C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F80007C078000780780007807C
000F803C000F003E001F001F003E000F807C0007C0F80003FFF00001FFE000003F00001A1F7E9D
1F>I<FFFC00FFFF00FFFF80F007C0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F001E0
F003E0F007C0FFFF80FFFF00FFFC00F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000141D7C9C1B>I<FFF800FFFF00FFFF80F007C0F001E0F000E0F000
F0F000F0F000F0F000F0F000E0F001E0F007C0FFFF80FFFF00FFF800F03C00F01C00F01E00F00F
00F00F00F00780F00780F003C0F003C0F001E0F000F0F000F0F00078151D7C9C1B>82
D<03F8000FFE001FFF003E0F00780300780000F00000F00000F00000F00000F800007C00007F00
003FE0001FFC0007FE0001FF00001F800007800007C00003C00003C00003C00003C00003C0C007
80E00780FC1F007FFE001FFC0007F000121F7E9D17>I<FFFFFF80FFFFFF80FFFFFF80001E0000
001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000191D7F9C1C>I<F00070F00070F00070F0
0070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F0
0070F00070F00070F00070F00070F00070F000F07800E07801E03C03C01F07800FFF8007FE0001
F800141E7C9C1D>I<F0000380F00003807800070078000700780007003C000E003C000E003E00
0E001E001C001E001C000F0038000F0038000F003800078070000780700003C0600003C0E00003
C0E00001E0C00001E1C00001E1C00000F1800000F380000073000000730000007B0000003E0000
003E0000001C0000191D7F9C1C>I<F80001E07C0001C03E0003801E0007801F0007000F800E00
07801E0007C01C0003E03C0001E0380001F0700000F0F0000078E000007DC000003FC000001F80
00001F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F00001B1D809C1C>89 D<0FC03FF07FF87038401C001C001C00FC0F
FC3FFC781CE01CE01CE01CF07C7FFC7FDC3F1C0E127E9114>97 D<07E00FF81FFC3C1C70047000
E000E000E000E000E000E000700070043C1C1FFC0FF807E00E127E9112>99
D<000E000E000E000E000E000E000E000E000E000E000E0F8E1FEE3FFE7C3E700E700EE00EE00E
E00EE00EE00EE00EF00E701E7C3E3FFE1FEE0F8E0F1D7E9C15>I<07C01FE03FF078787018601C
FFFCFFFCFFFCE000E000E000700070043C1C3FFC1FF807E00E127E9112>I<03C3C00FFFC01FFF
C01C3800381C00381C00381C00381C00381C001C38001FF8001FF0003BC0003800003800001FFC
001FFF003FFF80700780E001C0E001C0E001C0F003C07C0F803FFF001FFE0007F800121B7F9115
>103 D<F0F0F0F000000000000000707070707070707070707070707070707070041D7E9C0A>
105 D<E3F03F00EFF8FF80FFFDFFC0F81F81E0F00F00E0E00E00E0E00E00E0E00E00E0E00E00E0
E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E01B127D
9124>109 D<E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE0
1CE01C0E127D9115>I<03F0000FFC001FFE003C0F00780780700380E001C0E001C0E001C0E001
C0E001C0F003C07003807807803C0F001FFE000FFC0003F00012127F9115>I<E3E0EFF0FFF8F8
7CF01CE01EE00EE00EE00EE00EE00EE00EE01CF03CF87CFFF8EFF0E3C0E000E000E000E000E000
E000E000E0000F1A7D9115>I<078E1FEE3FFE7C3E781E700EE00EE00EE00EE00EE00EE00EF00E
701E7C3E3FFE1FEE0F8E000E000E000E000E000E000E000E000E0F1A7E9115>I<E380E780EF80
FC00F800F000F000E000E000E000E000E000E000E000E000E000E000E00009127D910E>I<1FC0
3FF07FF0F030E000E000F0007F003FC01FE000F0003800388038F078FFF07FE01FC00D127F9110
>I<1C001C001C001C001C001C00FFE0FFE0FFE01C001C001C001C001C001C001C001C001C001C
001C001C201FF00FF007C00C187F970F>I<E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE0
1CE01CE01CE01CE07CFFFC7FDC3F1C0E127D9115>I<E007E007700E700E780E381C381C1C181C
380C380E300E7006700760036003C001C001C001800180030003000700FE00FC00F800101A7F91
13>121 D E /Fl 10 58 df<1F003F8060C04040C060C060C060C060C060C060C060C06060C060
C03F801F000B107F8F0F>48 D<18007800F8009800180018001800180018001800180018001800
1800FF80FF8009107E8F0F>I<3F007F80F1C0F0E06060006000E000C00180030006001C003860
6060FFC0FFC00B107F8F0F>I<1F003F8071C071C031C001800F800F0001C000E060E0F0E0F0E0
F1C07F801F000B107F8F0F>I<070007000F001F001B003B0033006300E300FFE0FFE003000300
03001FE01FE00B107F8F0F>I<60807F807F007C00600060006F007F8070C060E000E060E0E0E0
E1C07F803F000B107F8F0F>I<07801FC039C061C06000C000DF80FFC0E060C060C060C0606060
60C03F801F000B107F8F0F>I<60007FE07FE0C0C0C1800180030006000E000C000C001C001C00
1C001C001C0008000B117E900F>I<1F003F8061C060C060C079C03F801F803FC063E0C0E0C060
C06060C03F801F000B107F8F0F>I<1F003F8060C0C0C0C060C060C060C0E07FE03F60006000C0
70C071807F003E000B107F8F0F>I E /Fm 63 123 df<007F07F001FF1FF003FF3FF007807800
070070000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F000FFF8FF80FFF8FF
80FFF8FF800F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00
F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0001C20809F1B
>11 D<007000E001C00380078007000E001E001E003C003C003C0078007800780078007000F000
F000F000F000F000F000F000F000F000F000F000F000700078007800780078003C003C003C001E
001E000E0007000780038001C000E000700C2E7EA112>40 D<E000700038001C001E000E000700
0780078003C003C003C001E001E001E001E000E000F000F000F000F000F000F000F000F000F000
F000F000F000E001E001E001E001E003C003C003C00780078007000E001E001C0038007000E000
0C2E7DA112>I<0006000000060000000600000006000000060000000600000006000000060000
00060000000600000006000000060000000600000006000000060000FFFFFFF0FFFFFFF0000600
000006000000060000000600000006000000060000000600000006000000060000000600000006
0000000600000006000000060000000600001C207D9A23>43 D<787878781830306060E0050A7D
830D>I<FFC0FFC0FFC00A037F8B0F>I<03F00007F8001FFE001E1E003C0F003807007807807807
80700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003
C0F003C0F003C07807807807807807803807003C0F001E1E001FFE000FFC0003F00012207E9E17
>48 D<00C001C00FC0FFC0FFC0F3C003C003C003C003C003C003C003C003C003C003C003C003C0
03C003C003C003C003C003C003C003C003C003C0FFFEFFFEFFFE0F1F7C9E17>I<07F0000FFC00
1FFE00383F00700F00600780E00780E003C04003C04003C00003C00003C00003C0000780000780
000F00000E00001C00003C0000780000E00001C0000380000700000E00001C0000380000700000
FFFFC0FFFFC0FFFFC0121F7E9E17>I<03F0000FFC001FFE003C1F00780F003007802007800007
80000780000780000F00000F00003E0003FC0003F80003FC00001E00000F000007800003800003
C00003C00003C00003C08003C0C003C0C00780700F807C1F003FFE000FFC0003F00012207E9E17
>I<003E00003E00005E00005E0000DE0001DE00019E00039E00039E00079E00071E000F1E000E
1E001E1E003C1E003C1E00781E00781E00F01E00FFFFF0FFFFF0FFFFF0001E00001E00001E0000
1E00001E00001E00001E00001E00141E7F9D17>I<7FFF007FFF007FFF00780000780000780000
78000078000078000078000079F0007FFC007FFE007F1F007C07007C07807807800003C00003C0
0003C00003C00003C00003C00003C0400780600780F00F007C1E003FFC001FF80007E000121F7E
9D17>I<F0F0F0F0000000000000000000000000F0F0F0F004147C930D>58
D<FFFFFFF0FFFFFFF0000000000000000000000000000000000000000000000000000000000000
0000FFFFFFF0FFFFFFF01C0C7D9023>61 D<001F0000001F0000003F8000003B8000003B800000
7BC0000073C0000071C00000F1E00000E1E00000E0E00001E0F00001E0F00001C0F00003C07800
03C078000380780007803C0007803C0007003C000FFFFE000FFFFE000FFFFE001E000F001E000F
003C000F803C0007803C000780780007C0780003C0780003C0F00003E01B207F9F1E>65
D<FFF800FFFF00FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003
C0F01F80FFFF00FFFF00FFFF80F007E0F001E0F000F0F00078F00078F00078F00078F00078F000
78F000F0F001F0F007E0FFFFC0FFFF80FFFC0015207B9F1E>I<001FC000FFF801FFFC03E03C07
800C0F00001E00003E00003C00007C0000780000780000780000F00000F00000F00000F00000F0
0000F00000F00000F000007800007800007800007C00003C00003E00001E00000F000207800E03
E03E01FFFC00FFF0001FC017227DA01D>I<FFFC00FFFF80FFFFC0F007E0F001F0F000F8F00078
F0003CF0003CF0001EF0001EF0000EF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000F
F0000FF0001EF0001EF0001EF0003CF0007CF000F8F001F0F007E0FFFFC0FFFF80FFFC0018207B
9F21>I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000FFFF80FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000FFFFE0FFFFE0FFFFE013207B9F1B>I<FFFFC0FFFFC0FFFFC0F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF00FFFF00FF
FF00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F0000012207B9F1A>I<001FE000FFF801FFFE03E03E07800E0F00001E00003E0000
3C00007C0000780000780000780000F00000F00000F00000F00000F00000F00000F003FEF003FE
7803FE78001E78001E7C001E3C001E3E001E1E001E0F001E07801E03E03E01FFFE00FFF8001FC0
17227DA01E>I<F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F000
78F00078F00078F00078FFFFF8FFFFF8FFFFF8F00078F00078F00078F00078F00078F00078F000
78F00078F00078F00078F00078F00078F00078F00078F0007815207B9F20>I<F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207C9F0D>I<F0003EF0007CF0
00F8F001F0F003E0F007C0F00780F00F00F01F00F03E00F07C00F0F800F1F000F3F800F3F800F7
FC00FFBC00FF1E00FE1F00FC0F00F80780F00780F003C0F003E0F001E0F000F0F000F8F00078F0
003CF0003CF0001EF0001F18207B9F20>75 D<F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80FFFF801120
7B9F19>I<F80001F8FC0003F8FC0003F8F4000378F6000778F6000778F6000778F7000F78F300
0E78F3000E78F3801E78F3801E78F1801C78F1C03C78F1C03C78F1C03C78F0C03878F0E07878F0
E07878F0607078F070F078F070F078F030E078F039E078F039E078F019C078F019C078F019C078
F00F8078F00F8078F00F8078F00000781D207B9F28>I<FC0078FE0078FE0078F60078F70078F7
0078F38078F38078F38078F3C078F1C078F1E078F1E078F0E078F0F078F07078F07078F07878F0
3878F03C78F03C78F01C78F01E78F00E78F00E78F00E78F00778F00778F00378F003F8F003F8F0
01F815207B9F20>I<003F000000FFC00003FFF00007E1F8000F807C001F003E001E001E003C00
0F003C000F00780007807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F0
0003C0F00003C0F00003C0F00003C0F80007C07800078078000780780007803C000F003C000F00
1E001E001F003E000F807C0007E1F80003FFF00000FFC000003F00001A227DA021>I<FFF800FF
FF00FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F001E0F0
03E0F00FC0FFFF80FFFF00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F0000014207B9F1D>I<FFF800FFFF00FFFF80F007C0F003E0F001E0
F000F0F000F0F000F0F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFF800F03C00F01E00
F01E00F00F00F00F00F00780F00780F003C0F001C0F001E0F000F0F000F0F00078F00078F0003C
16207B9F1D>82 D<01FC0007FF800FFFC01F03C03C00C03C000078000078000078000078000078
00007C00003C00003F00001FE0000FFC0007FE0001FF00003F800007C00003C00003E00001E000
01E00001E00001E00001E00001C0C003C0F007C0FC0F807FFF001FFE0003F80013227EA019>I<
FFFFFFC0FFFFFFC0FFFFFFC0001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E00001A207E9F1F>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03C03C01F0F800FFF0007FE0001F800
14217B9F1F>I<F00001E0F00001E0780003C0780003C0780003C03C0007803C0007803C000780
1E000F001E000F001F000F000F001E000F001E0007801C0007803C0007803C0003C0380003C078
0003C0780001E0700001E0F00001E0F00000F0E00000F1E00000F1E0000071C000007BC000003B
8000003B8000003F8000001F0000001F00001B207F9F1E>I<F0007C000FF0007E000FF0007E00
0F78006E000E7800EE001E7800E7001E7800E7001E3C00E7003C3C01E7803C3C01C7803C3C01C3
803C1E01C380781E03C3C0781E0383C0780E0381C0700F0381C0F00F0781E0F00F0701E0F00707
00E0E0078700E1E0078F00F1E0078E00F1E0038E0071C0038E0071C003CE0073C001DC007B8001
DC003B8001DC003B8001DC003B8000F8003F0000F8001F0000F8001F0028207F9F2B>I<780007
807C000F003E001F001E001E000F003C000F807C000780780003C0F00003E1F00001F1E00000F3
C000007FC000007F8000003F0000001F0000001E0000003F0000007F8000007FC00000F3C00001
F1E00001E0F00003C0F80007C0780007803C000F003E001F001E001E000F003C000F807C0007C0
780003C0F00003E01B207F9F1E>I<F80000F87C0001F03C0001E03E0003E01F0003C00F000780
0F800F8007C00F0003C01F0003E01E0001F03C0000F07C00007878000078F000003CF000001DE0
00001FE000000FC000000780000007800000078000000780000007800000078000000780000007
80000007800000078000000780000007800000078000000780001D20809F1E>I<FFFFFFF0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0FFFFFF
082D7DA10D>91 D<FFFFFF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
0F0F0F0F0F0F0F0F0F0F0FFFFFFF082D7FA10D>93 D<07E03FF87FFC701E401F000F000F000F00
3F07FF1FFF7E0FF80FF00FF00FF00FF83F7FFF3FEF1F8F10147E9316>97
D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F1F0
00F7FC00FFFE00FC3E00F80F00F00F00F00780F00780F00780F00780F00780F00780F00780F00F
00F00F00F81F00FC3E00FFFC00F7F800F1E00011207D9F17>I<03F00FFC1FFE3E0E3C02780078
00F000F000F000F000F000F000780078003C013E0F1FFF0FFE03F010147E9314>I<0007800007
8000078000078000078000078000078000078000078000078000078000078007C7800FF7801FFF
803E1F807C0780780780F80780F00780F00780F00780F00780F00780F00780F00780780780780F
803E1F801FFF800FF78007C78011207E9F17>I<03F0000FFC001FFE003E1F003C070078070070
0380FFFF80FFFF80FFFF80F00000F00000F000007000007800003C01003E07001FFF0007FE0001
F80011147F9314>I<007E01FE03FE078007000F000F000F000F000F000F000F00FFF0FFF0FFF0
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F20809F0E
>I<03E0F00FFFF01FFFF03E3E003C1E00780F00780F00780F00780F00780F003C1E003E3E001F
FC003FF80033E0003000003800003FFE003FFF801FFFC03FFFE07803F0F000F0F000F0F000F0F8
01F07E07E03FFFC00FFF0003FC00141E7F9317>I<F000F000F000F000F000F000F000F000F000
F000F000F000F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00F10207D9F17>I<F0F0F0F00000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F004207D9F0B>I<F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F01F00F01E00F03C00F07800F0F000F1E000F3C000F78000FFC000FF
C000FFE000F9F000F8F000F0F800F07C00F07C00F03E00F01E00F01F00F00F8011207D9F16>
107 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F
0B>I<F0FC07E0F3FE1FF0F7FF3FF8FE0FF07CF807C03CF807C03CF007803CF007803CF007803C
F007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF00780
3CF007803C1E147D9327>I<F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00FF00F10147D9317>I<01F80007FE001FFF803F0FC03C03C07801E078
01E0F000F0F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03F0FC01FFF8007FE0001
F80014147F9317>I<F1F000F7FC00FFFE00FC3E00F81F00F00F00F00F80F00780F00780F00780
F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E000F00000F00000F00000
F00000F00000F00000F00000F00000F00000111D7D9317>I<03C7800FF7801FFF803E1F807C0F
80780780780780F00780F00780F00780F00780F00780F00780F807807807807C0F803E1F801FFF
800FF78007C780000780000780000780000780000780000780000780000780000780111D7E9317
>I<F0E0F3E0F7E0FF00FC00FC00F800F800F000F000F000F000F000F000F000F000F000F000F0
00F0000B147D9310>I<07F01FFC3FFC780C7800780078007C003FC01FF00FF803F8007C003C00
3CC03CF07CFFF87FF00FC00E147F9311>I<1E001E001E001E001E001E00FFF0FFF0FFF01E001E
001E001E001E001E001E001E001E001E001E001E001E001E201FF00FF007C00C1A7F9910>I<F0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01FF03FFFFF7FEF3F0F
10147D9317>I<F01F00F0F01F80F0F01F80F0781B81E0783B81E0783BC1E07839C1E03C31C3C0
3C71C3C03C71E3C01C70E3801E60E7801E60E7801EE0E7800EE077000EC077000EC0770007C07E
0007C03E0007803E001C147F931F>119 D<7801E07C03C03E07801E0F000F0F00079E0003FC00
03F80001F80000F00001F00001F80003FC00079E000F0F000E0F001E07803C03C07801E0F801F0
1414809315>I<F003C0F003C07807807807807C07803C0F003C0F001E0F001E1E000E1E000F1C
000F1C00073C0007380003B80003B80003B00001F00001F00000E00000E00001C00001C00003C0
000380000780007F00007E00007C0000121D7F9315>I<7FFF7FFF7FFF003E003C007800F800F0
01E003E007C007800F001F001E003C007C00FFFFFFFFFFFF10147F9314>I
E /Fn 31 91 df<3078F8787005057C840D>46 D<007E0001FF0003C3800701C00E01C00E01E0
1C00E01C01E03C01E03C01E07801E07801E07801E07801E07801E0F003C0F003C0F003C0F003C0
F003C0F00380F00780E00780E00700E00F00E00E00701E00701C003878003FF0000FC000131F7C
9D17>48 D<000C001C00FC0FF80F38003800380038003800700070007000700070007000E000E0
00E000E000E000E001C001C001C001C001C001C003C07FFEFFFE0F1E7C9D17>I<003F0000FFC0
01C1E00300F00600780600780F007C0F807C0F807C0F00780600780000F80000F00001F00001E0
0003C0000780000F00001C0000380000700000C0000180000300600600601C00C03800C07FFFC0
FFFF80FFFF80161E7E9D17>I<007F0001FFC00383E00701E00700F00F00F00F01F00F01F00001
E00001E00003C0000780000F0000FE0000F800000E000007000007800003C00003C00003C03007
C07807C0F807C0F807C0F00F80C00F00601E00383C001FF80007E000141F7D9D17>I<0001C000
03C00003C0000780000F80001B80003B8000738000638000C7000187000307000707000E07000C
0700180E00300E00600E00E00E00FFFFF0FFFFF0001C00001C00001C00001C00001C00001C0000
3C0003FFC003FFC0141E7D9D17>I<03007003FFF003FFE003FF8003FE00060000060000060000
0600000600000600000C7C000DFF000F87800E03800C01C00C01C00001E00001E00001E00001E0
7003C0F003C0F003C0F00380C00780E00700600E00383C001FF0000FC000141F7D9D17>I<000F
80007FC000F0E001C0E00381E00701E00E00C01E00001C00003C000038000079FC007BFE007E07
007C0380F80380F803C0F003C0F003C0F003C0F003C0F00780E00780E00780E00700E00F00700E
00701C003838001FF00007C000131F7C9D17>I<3000003FFFE07FFFE07FFFC0600180E00300C0
0600C00C0000180000180000300000600000C00001C0000180000380000300000700000600000E
00000E00001E00001C00001C00003C00003C00003C0000780000780000780000300000131F799D
17>I<003F0000FF8001C1E00380E00700700E00700E00700E00700E00E00F00E00F81C00FC380
07F70003FC0001FC0003FF000F3F801C0F803807C03803C07001C07001C0E001C0E001C0E001C0
E003807003007007003C1C001FF80007E000141F7D9D17>I<0000180000003800000038000000
780000007C000000FC000000FC000001BC000001BC0000033C0000033E0000061E0000061E0000
0C1E00000C1E0000181E0000181F0000300F0000300F0000600F00007FFF0000FFFF0000C00F00
0180078001800780030007800300078006000780060007801F0007C0FFC07FFCFFC07FFC1E207E
9F22>65 D<0003F808000FFE18003F0738007801F801F000F803C000F007C00070078000700F00
00701F0000701E0000703E0000603C0000607C0000007C0000007C0000007C000000F8000000F8
000000F8000000F8000000F80000C0780000C0780001807C0001803C0003003C0003001E000600
1E000C000F80180007E0700001FFC000007F00001D217B9F21>67 D<07FFFF0007FFFFE0003C01
F0003C00F80078007C0078003C0078001E0078001E0078001E0078001F00F0001F00F0001F00F0
001F00F0001F00F0001F00F0001F01E0001E01E0003E01E0003E01E0003E01E0003C01E0007C03
C0007803C000F003C000F003C001E003C003C003C00F8007C03F007FFFFC00FFFFE000201F7E9E
23>I<07FFFFF807FFFFF8003C00F8003C00780078003800780038007800380078003800780038
00780C3000F0183000F0180000F0180000F0380000FFF80000FFF80001E0700001E0300001E030
0001E0301801E0303001E0003003C0003003C0006003C0006003C000E003C001C003C003C007C0
0FC07FFFFF80FFFFFF801D1F7E9E1F>I<07FFFFF807FFFFF8003C00F8003C0078007800380078
003800780038007800380078003800780C3000F0183000F0180000F0180000F0380000FFF80000
FFF80001E0700001E0300001E0300001E0300001E0300001E0000003C0000003C0000003C00000
03C0000003C0000003C0000007C000007FFE0000FFFE00001D1F7E9E1E>I<0001FC04000FFF0C
003F039C007800FC00F000FC03E0007803C00078078000380F0000381F0000381E0000383E0000
303E0000307C0000007C0000007C0000007C000000F8000000F8000000F8007FFCF8007FFCF800
01E0780001E0780003C07C0003C03C0003C03C0003C01E0003C00F0007C007800F8003E0398001
FFF080003F80001E217B9F24>I<07FFC7FFC007FFC7FFC0003C007800003C007800007800F000
007800F000007800F000007800F000007800F000007800F00000F001E00000F001E00000F001E0
0000F001E00000FFFFE00000FFFFE00001E003C00001E003C00001E003C00001E003C00001E003
C00001E003C00003C007800003C007800003C007800003C007800003C007800003C007800007C0
0F80007FFCFFF800FFF8FFF800221F7E9E22>I<07FFE007FFE0003C00003C0000780000780000
780000780000780000780000F00000F00000F00000F00000F00000F00001E00001E00001E00001
E00001E00001E00003C00003C00003C00003C00003C00003C00007C000FFFC00FFFC00131F7F9E
10>I<07FFF00007FFF000003C0000003C00000078000000780000007800000078000000780000
0078000000F0000000F0000000F0000000F0000000F0000000F0000001E0000001E0000001E000
0001E0018001E0018001E0030003C0030003C0030003C0070003C0060003C00E0003C01E0007C0
7E007FFFFC00FFFFFC00191F7E9E1C>76 D<07FC0000FFC007FC0001FFC0003E0001F800003E00
037800006E0003F000006E0006F000006E0006F000006E000CF0000067000CF00000670018F000
00C70019E00000C70031E00000C70031E00000C70061E00000C38061E00000C380C1E000018380
C3C00001838183C00001838183C0000181C303C0000181C303C0000181C603C0000301C6078000
0301CC0780000301CC0780000300F80780000300F80780000700F00780000F80F00F80007FF0E0
FFF800FFF0E1FFF8002A1F7E9E2A>I<07FC03FFC007FC03FFC0003E007C00003E003800006F00
3000006F003000006F003000006780300000678030000063C0300000C3C0600000C3C0600000C1
E0600000C1E0600000C0F0600000C0F060000180F0C000018078C000018078C00001803CC00001
803CC00001803CC00003001F800003001F800003000F800003000F800003000F80000700078000
0F800700007FF0030000FFF0030000221F7E9E22>I<0003F800001FFE00003C1F0000F0078001
E003C003C001E0078001E00F8000F00F0000F01F0000F01E0000F83E0000F83C0000F87C0000F8
7C0000F87C0000F87C0000F8F80001F0F80001F0F80001F0F80001F0F80003E0780003E0780007
C07C0007C07C000F803C000F003E001E001E003C000F00780007C1F00003FFC00000FE00001D21
7B9F23>I<07FFFF0007FFFFC0003C03E0003C01F0007800F0007800F8007800F8007800F80078
00F8007800F800F001F000F001F000F001E000F003C000F00F8000FFFE0001FFF80001E0000001
E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C0000003C00000
07C000007FFC0000FFFC00001D1F7E9E1F>I<0003F800001FFE00003C1F0000F0078001E003C0
03C001E0078001E00F8001F00F0000F01F0000F01E0000F83E0000F83C0000F87C0000F87C0000
F87C0000F87C0000F8F80001F0F80001F0F80001F0F80001F0F80003E0780003E0780003C07800
07C07C1E07803C3F0F003C619E001E61BC000FC0F80007E1F00003FFC04000FEC0400000E04000
00E0800000E1800000FF800000FF000000FF0000007E0000003C001D297B9F23>I<07FFFC0007
FFFF00003C07C0003C03E0007801E0007801F0007801F0007801F0007801F0007801E000F003E0
00F003C000F0078000F01F0000FFFC0000FFF00001E0380001E03C0001E01C0001E01C0001E01E
0001E01E0003C03E0003C03E0003C03E0003C03E0003C03E0603C03E0607C03E0C7FFC1F18FFFC
0FF8000003E01F207E9E21>I<003F04007FCC01E0FC03807C03003C0700380600180E00180E00
180E00180E00000F00000F00000FE00007FE0003FF8001FFC0007FE00007E00001E00000E00000
F00000F06000E06000E06000E06000E07001C0700180F80380FE0F00C7FC0081F80016217D9F19
>I<1FFFFFF81FFFFFF81E03C0F83803C038380780383007803870078018600780186007803860
078030C00F0030000F0000000F0000000F0000000F0000000F0000001E0000001E0000001E0000
001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C0000003C0000007C00
001FFFF0003FFFF0001D1F7B9E21>I<FFFC7FF8FFFC7FF807800F80078007000F0006000F0006
000F0006000F0006000F0006000F0006001E000C001E000C001E000C001E000C001E000C001E00
0C003C0018003C0018003C0018003C0018003C0018003C00180038003000380030003800300038
0060003C00C0001C00C0001E0180000F07000007FC000001F800001D20799E22>I<FFF007FEFF
F007FE0F0001F00F0000C00F0000C00F0001800780018007800300078007000780060007800E00
07C00C0003C01C0003C0180003C0300003C0300003C0600001E0600001E0C00001E0C00001E180
0001E1800000F3000000F3000000F6000000F6000000FC000000FC000000780000007800000070
0000007000001F207A9E22>I<FFF07FF83FF0FFF07FF83FF01F000F800F800F000F8007000F00
0F8006000F000F8006000F001F800C000F001F800C000F00378018000F00378018000F0063C030
00078063C030000780C3C060000780C3C06000078183C0E000078183C0C000078383C0C0000783
03E1800007C701E1800003C601E3000003C601E3000003CC01E6000003CC01E6000003D801EC00
0003D801EC000003F001F8000001F000F8000001E000F8000001E000F0000001C000F0000001C0
00E0000001C000E000002C207A9E2F>I<03FFFFC003FFFFC003F0078007C00F0007001F000700
1E000E003C000C0078000C00F8000C00F0001801E0000003C00000078000000F8000000F000000
1E0000003C0000007C00000078030000F0030001E0030003E0060003C00600078006000F000E00
1F001C001E001C003C007C007801FC00FFFFF800FFFFF8001A1F7D9E1C>90
D E /Fo 8 117 df<07FC001FFF003F0F803F07C03F03E03F03E00C03E00003E001FFE00FFFE0
3F83E07E03E07C03E0F803E0F803E0F803E0FC07E07E0DE03FF9FE07E07E17147F9319>97
D<01FE0007FF801F83E03F01F07E00F07E00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00
007C00007E00003E00183F00380F807007FFE000FF8015147F9318>101
D<01FC3C07FFFE0F07DE1E03DE3E03E03E03E03E03E03E03E03E03E01E03C00F07800FFF0019FC
001800001800001C00001FFF801FFFF00FFFF83FFFFC7C007C70003EF0001EF0001EF0001E7800
3C78003C3F01F80FFFE001FF00171E7F931A>103 D<1C003F007F007F007F003F001C00000000
000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F00FFE0FFE00B217EA00E>105 D<FE0FC0FE3FE01E61F01EC0F81F80F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3
FF18147D931D>110 D<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC00
7EFC007EFC007EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>I<FE
3E00FE7F801ECFC01F8FC01F8FC01F8FC01F03001F00001F00001F00001F00001F00001F00001F
00001F00001F00001F00001F0000FFF000FFF00012147E9316>114 D<01800180018003800380
038007800F803F80FFFCFFFC0F800F800F800F800F800F800F800F800F800F800F860F860F860F
860F8607CC03F801F00F1D7F9C14>116 D E /Fp 69 124 df<003F0F0000FFBF8003C3F3C007
03E3C00703C1800E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC00FFFFFC00
0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0
000E01C0000E01C0000E01C0000E01C0007F87FC007F87FC001A1D809C18>11
D<003F0000FF8003C1C00703C00703C00E01800E00000E00000E00000E00000E0000FFFFC0FFFF
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C07F87F87F87F8151D809C17>I<003F03F00000FFCFF80003C0FC1C000701F03C000701
F03C000E00E018000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC00FF
FFFFFC000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00
0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF
807FC7FCFF80211D809C23>14 D<7070F8F8FCFCFCFC7C7C0C0C0C0C0C0C181818183030606040
400E0D7F9C15>34 D<00F0000001F8000003980000030C0000070C0000070C0000070C0000070C
0000070C000007180000073800000730000007607FE003C07FE003801F0003800C0007C00C000D
C0180019E0180038E0300070F06000F0706000F038C000F03CC000F01F8000F00F006078070060
780F80C03C39E1C01FF0FF8007C03E001B1F7E9D20>38 D<00C00180030006000E000C001C0018
003800300030007000700060006000E000E000E000E000E000E000E000E000E000E000E000E000
600060007000700030003000380018001C000C000E0006000300018000C00A2A7D9E10>40
D<C0006000300018001C000C000E000600070003000300038003800180018001C001C001C001C0
01C001C001C001C001C001C001C001C0018001800380038003000300070006000E000C001C0018
0030006000C0000A2A7E9E10>I<018001C0018001806186F99F7DBE1FF807E007E01FF87DBEF9
9F61860180018001C0018010127E9E15>I<000600000006000000060000000600000006000000
06000000060000000600000006000000060000000600000006000000060000FFFFFFE0FFFFFFE0
000600000006000000060000000600000006000000060000000600000006000000060000000600
000006000000060000000600001B1C7E9720>I<70F0F8F8781818183030706040050D7D840C>I<
FFE0FFE0FFE00B0380890E>I<70F8F8F87005057D840C>I<00030003000700060006000E000C00
1C0018001800380030003000700060006000E000C000C001C00180038003000300070006000600
0E000C000C001C001800180038003000700060006000E000C000C00010297E9E15>I<03C00FF0
1C38381C381C700E700E700EF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F70
0E700E700E381C381C1C380FF007E0101D7E9B15>I<030007003F00FF00C70007000700070007
0007000700070007000700070007000700070007000700070007000700070007000700FFF8FFF8
0D1C7C9B15>I<07C01FF03878603C601EF01EF80FF80FF80F700F000F000E001E001C003C0078
007000E001C0038007000E030C03180330067FFEFFFEFFFE101C7E9B15>I<001C00001C00003C
00007C00007C0000DC0001DC00019C00039C00071C00061C000E1C000C1C00181C00381C00301C
00601C00E01C00FFFFC0FFFFC0001C00001C00001C00001C00001C00001C0001FFC001FFC0121C
7F9B15>52 D<00F003FC070C0E0E1C1E381E380C780070007000F3F0F7F8FC1CF81EF80EF00EF0
0FF00FF00FF00FF00F700F700F700E380E381C1C380FF003E0101D7E9B15>54
D<6000007FFF807FFF807FFF00600300C00600C00C00C00C000018000030000030000060000060
0000C00000C00001C00001C0000380000380000380000380000780000780000780000780000780
00078000078000030000111D7E9B15>I<03C00FF01C38381C781C700EF00EF00EF00FF00FF00F
F00FF00F700F701F781F383F1FEF0FCF000E000E000E301C781C7838703030F03FC00F80101D7E
9B15>57 D<70F8F8F870000000000000000070F8F8F87005127D910C>I<70F8F8F87000000000
0000000070F0F8F8781818183030706040051A7D910C>I<7FFFFFC0FFFFFFE000000000000000
00000000000000000000000000000000000000000000000000FFFFFFE07FFFFFC01B0C7E8F20>
61 D<0FE03FF8703C601CF01EF01EF01E001E003C007800E001C0018003800300030003000300
03000200000000000000000007000F800F800F8007000F1D7E9C14>63 D<00060000000F000000
0F0000000F0000001F8000001F8000001F8000001F80000033C0000033C0000033C0000061E000
0061E0000061E00000C0F00000C0F00000C0F000018078000180780001FFF80003FFFC0003003C
0003003C0006001E0006001E0006001E001F001F00FFC0FFF0FFC0FFF01C1D7F9C1F>65
D<001F808000FFE18003F0338007801B800F000F801E0007801C0003803C000380780003807800
018070000180F0000180F0000000F0000000F0000000F0000000F0000000F0000000F000000070
00018078000180780001803C0001801C0003001E0003000F00060007800C0003F0380000FFF000
001F8000191E7E9C1E>67 D<FFFFC000FFFFF0000F007C000F001E000F000F000F0007000F0003
800F0003C00F0003C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F00
01E00F0001E00F0001C00F0001C00F0003C00F0003800F0007800F000F000F001E000F007C00FF
FFF000FFFFC0001B1C7E9B20>I<FFFFFCFFFFFC0F007C0F001C0F000C0F000E0F00060F03060F
03060F03060F03000F07000FFF000FFF000F07000F03000F03000F03030F03030F00030F00060F
00060F00060F000E0F001E0F007CFFFFFCFFFFFC181C7E9B1C>I<FFFFF8FFFFF80F00780F0038
0F00180F001C0F000C0F000C0F030C0F030C0F03000F03000F07000FFF000FFF000F07000F0300
0F03000F03000F03000F00000F00000F00000F00000F00000F0000FFF800FFF800161C7E9B1B>
I<001F808000FFE18003F0338007801B800F000F801E0007801C0003803C000380780003807800
018070000180F0000180F0000000F0000000F0000000F0000000F0000000F000FFF0F000FFF070
00078078000780780007803C0007801C0007801E0007800F00078007800F8003F0398000FFF080
001FC0001C1E7E9C21>I<FFF3FFC0FFF3FFC00F003C000F003C000F003C000F003C000F003C00
0F003C000F003C000F003C000F003C000F003C000FFFFC000FFFFC000F003C000F003C000F003C
000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00FFF3
FFC0FFF3FFC01A1C7E9B1F>I<FFF0FFF00F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0FFF00C1C7F9B0F>I<FF80
00FF80FFC001FF800FC001F8000FC001F8000DE00378000DE00378000DE00378000CF00678000C
F00678000CF00678000C780C78000C780C78000C780C78000C3C1878000C3C1878000C3C187800
0C1E3078000C1E3078000C1E3078000C0F6078000C0F6078000C0F6078000C07C078000C07C078
000C07C078001E03807800FFC387FF80FFC387FF80211C7E9B26>77 D<FF00FFC0FF80FFC00F80
1E000FC00C000FC00C000DE00C000CF00C000CF00C000C780C000C780C000C3C0C000C1E0C000C
1E0C000C0F0C000C0F0C000C078C000C07CC000C03CC000C01EC000C01EC000C00FC000C00FC00
0C007C000C003C000C003C001E001C00FFC01C00FFC00C001A1C7E9B1F>I<003F800000FFE000
03E0F80007803C000E000E001E000F003C00078038000380780003C0780003C0700001C0F00001
E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0780003C0780003C07800
03C03C0007803C0007801E000F000F001E0007803C0003E0F80000FFE000003F80001B1E7E9C20
>I<FFFF80FFFFE00F00F00F00380F003C0F001E0F001E0F001E0F001E0F001E0F001E0F003C0F
00380F00F00FFFE00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F
0000FFF000FFF000171C7E9B1C>I<FFFF0000FFFFE0000F00F0000F0038000F003C000F001E00
0F001E000F001E000F001E000F001E000F003C000F0038000F00F0000FFFE0000FFFC0000F01E0
000F00F0000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078300F00
3830FFF03C60FFF01FE0000007C01C1D7E9B1F>82 D<07E0801FF9803C1F80700780700380E003
80E00180E00180E00180F00000F000007C00007FC0003FF8001FFE0007FF0000FF80000F800003
C00003C00001C0C001C0C001C0C001C0E00180E00380F00300FC0E00CFFC0083F800121E7E9C17
>I<7FFFFFC07FFFFFC0780F03C0700F01C0600F00C0E00F00E0C00F0060C00F0060C00F0060C0
0F0060000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F000003FFFC0003FFFC001B1C7F
9B1E>I<FFF0FFC0FFF0FFC00F001E000F000C000F000C000F000C000F000C000F000C000F000C
000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F00
0C000F000C000F000C000F000C0007001800078018000380300001C0300000E0E000007FC00000
1F00001A1D7E9B1F>I<FFE0FFE1FFFFE0FFE1FF1F001E007C0F001E00300F003F00300F003F00
300F803F007007806780600780678060078067806003C0E780C003C0C3C0C003C0C3C0C001E0C3
C18001E181E18001E181E18001E181E18000F381F30000F300F30000F300F300007B00F600007E
007E00007E007E00007E007E00003C003C00003C003C00003C003C00001C003800001800180028
1D7F9B2B>87 D<08081818303060606060C0C0C0C0C0C0F8F8FCFCFCFC7C7C38380E0D7B9C15>
92 D<0FE0001FF8003C3C003C1E00180E00000E00001E0007FE001FFE003E0E00780E00F00E00
F00E60F00E60F01E60783E603FFFC01F878013127F9115>97 D<FC0000FC00001C00001C00001C
00001C00001C00001C00001C00001C00001C00001C7E001DFF001F87801E01C01C01E01C00E01C
00F01C00F01C00F01C00F01C00F01C00F01C00E01C01E01E01C01F078019FF00187C00141D7F9C
17>I<03F00FF81E3C383C78187000F000F000F000F000F000F000780078063C061E0C0FF803E0
0F127F9112>I<001F80001F800003800003800003800003800003800003800003800003800003
8003E3800FFB801E0F80380780780380700380F00380F00380F00380F00380F00380F003807003
807803803807801E1F800FFBF007E3F0141D7F9C17>I<03E00FF01C38381C781E700EFFFEFFFE
F000F000F000F000700078063C061E0C0FF803E00F127F9112>I<007801FC039E071E0E0C0E00
0E000E000E000E000E00FFE0FFE00E000E000E000E000E000E000E000E000E000E000E000E000E
000E007FE07FE00F1D809C0D>I<00038007E7C00FFDC03C3DC0381C00781E00781E00781E0078
1E00381C003C3C003FF00037E0007000007000003000003FFC001FFF003FFF80700780E001C0E0
01C0E001C0E001C07003803C0F001FFE0007F800121C7F9215>I<FC0000FC00001C00001C0000
1C00001C00001C00001C00001C00001C00001C00001C7C001DFF001F07001E03801E03801C0380
1C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0FF9FF0141D7F
9C17>I<18003C007C003C001800000000000000000000000000FC00FC001C001C001C001C001C
001C001C001C001C001C001C001C001C001C00FF80FF80091D7F9C0C>I<01C003E003E003E001
C00000000000000000000000000FE00FE000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000E000E060E0F1C0F1C07F803E000B25839C0D>I<FC0000FC0000
1C00001C00001C00001C00001C00001C00001C00001C00001C00001C7FC01C7FC01C3E001C1800
1C30001C60001CC0001DE0001FE0001E70001C78001C38001C3C001C1C001C0E001C0F00FF9FE0
FF9FE0131D7F9C16>I<FC00FC001C001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C00FF80FF80091D7F9C0C>I<FC7E07
E000FDFF9FF8001F83B838001E01E01C001E01E01C001C01C01C001C01C01C001C01C01C001C01
C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF
8FF8FF80FF8FF8FF8021127F9124>I<FC7C00FDFF001F07001E03801E03801C03801C03801C03
801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0FF9FF014127F9117>I<03
F0000FFC001E1E00380700780780700380F003C0F003C0F003C0F003C0F003C0F003C070038078
07803807001E1E000FFC0003F00012127F9115>I<FC7E00FDFF001F87801E03C01C01E01C01E0
1C00F01C00F01C00F01C00F01C00F01C00F01C01E01C01E01E03C01F07801DFF001C7C001C0000
1C00001C00001C00001C00001C0000FF8000FF8000141A7F9117>I<03E1800FF9801E1F803C07
80780780780380F00380F00380F00380F00380F00380F003807803807807803C07801E1F800FFB
8007E380000380000380000380000380000380000380001FF0001FF0141A7F9116>I<FDE0FFF0
1F781E781E301C001C001C001C001C001C001C001C001C001C001C00FFC0FFC00D127F9110>I<
1F903FF07070E030E030E030F8007F803FE00FF000F8C038C038E038E038F070DFE08FC00D127F
9110>I<0C000C000C000C000C001C001C003C00FFE0FFE01C001C001C001C001C001C001C001C
001C301C301C301C301C301E600FC007800C1A7F9910>I<FC1F80FC1F801C03801C03801C0380
1C03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C0F800FFBF003E3F0
14127F9117>I<FF0FE0FF0FE01C07801C03000E06000E06000E0600070C00070C00071C000398
0003980003F80001F00001F00000E00000E00000E00013127F9116>I<FF3FCFE0FF3FCFE01C0F
07801C0F03001C1F03000E1B06000E1B86000E1B86000E318E000731CC000731CC000760CC0003
E0F80003E0F80003E0F80001C0700001C0700001C070001B127F911E>I<7F8FF07F8FF00F0780
070600038E0001DC0001D80000F00000700000780000F80001DC00038E00030E000607000F0380
FF8FF8FF8FF81512809116>I<FF0FE0FF0FE01C07801C03000E06000E06000E0600070C00070C
00071C0003980003980003F80001F00001F00000E00000E00000E00000C00000C00000C000F180
00F18000C700007E00003C0000131A7F9116>I<7FFC7FFC7838707060F060E061C063C0038007
0C0F0C0E0C1C1C3C1838187078FFF8FFF80E127F9112>I<FFFFF0FFFFF01402808B15>I
E /Fq 10 118 df<387CFEFEFE7C3800000000387CFEFEFE7C3807127D910D>58
D<FFFFF800FFFFFF000FC01FC00FC007E00FC003F00FC001F80FC001F80FC000FC0FC000FC0FC0
00FC0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FC0F
C000FC0FC000FC0FC001F80FC001F80FC003F00FC007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B
25>68 D<FFC00003FFFFE00007FF0FE00007F00DF0000DF00DF0000DF00DF0000DF00CF80019F0
0CF80019F00C7C0031F00C7C0031F00C3E0061F00C3E0061F00C1F00C1F00C1F00C1F00C1F00C1
F00C0F8181F00C0F8181F00C07C301F00C07C301F00C03E601F00C03E601F00C01FC01F00C01FC
01F00C01FC01F00C00F801F00C00F801F0FFC0701FFFFFC0701FFF281C7E9B2D>77
D<03FC000FFE001F1F003E1F007C1F007C0E00FC0000FC0000FC0000FC0000FC0000FC00007C00
007E01803E03801F07000FFE0003F80011127E9115>99 D<03F0F00FFFF83E1F383C0F307C0F80
7C0F807C0F807C0F803C0F003E1F001FFC0033F0003000007000003800003FFF003FFFC01FFFE0
3FFFF07801F8F00078F00078F000787800F03E03E01FFFC003FE00151B7F9118>103
D<1E003F003F007F003F003F001E0000000000000000000000FF00FF001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>105
D<FF1FC0FF7FE01FE1F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>110 D<01FC000FFF801F07C03E03E07C01
F07C01F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01F87C01F07C01F03E03E01F07C00FFF8001FC
0015127F9118>I<1FD83FF87038E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CF0
38FFF0CFC00E127E9113>115 D<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F01F80F03F80FFEFF03F8FF18127F911B>117
D E /Fr 72 126 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8F870051C
779B18>33 D<007000F001F003C007800F001E001C003C003800780070007000F000E000E000E0
00E000E000E000E000E000F00070007000780038003C001C001E000F00078003C001F000F00070
0C24799F18>40 D<6000F00078003C001E000F000780038003C001C001E000E000E000F0007000
7000700070007000700070007000F000E000E001E001C003C0038007800F001E003C007800F000
60000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007F000
07F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D9718>I<0060
0000F00000F00000F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F0
0000F00000F00000F00000F00000F00000600013147E9718>I<3C7E7F7F7F3F0F0E1E7CF87008
0C788518>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<78FCFCFCFC780606778518>I<0003
00000780000F80000F80000F00001F00001F00003E00003E00003C00007C00007C0000F80000F8
0000F00001F00001F00003E00003E00007C00007C0000780000F80000F80001F00001F00001E00
003E00003E00007C00007C0000780000F80000F80000F0000060000011247D9F18>I<01F00007
FC000FFE001F1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0E0
00E0E000E0E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE0007FC0001
F000131C7E9B18>I<01800380078007800F803F80FF80FB806380038003800380038003800380
03800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>I<07F8001FFE00
3FFF007C0F807003C0F001E0F000E0F000E0F000E00000E00000E00001E00001C00003C0000780
000F00001E00003C0000780000F00003E00007C0000F80001E00E03C00E07FFFE0FFFFE07FFFE0
131C7E9B18>I<78FCFCFCFC78000000000000000078FCFCFCFC780614779318>58
D<3C7E7E7E7E3C0000000000000000387C7E7E7E3E0E1E3C78F060071A789318>I<000300000F
80001F80003F0000FE0001FC0003F00007E0001FC0003F80007E0000FC0000FC00007E00003F80
001FC00007E00003F00001FC0000FE00003F00001F80000F8000030011187D9918>I<7FFFC0FF
FFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<
600000F80000FC00007E00003F80001FC00007E00003F00001FC0000FE00003F00001F80001F80
003F0000FE0001FC0003F00007E0001FC0003F80007E0000FC0000F8000060000011187D9918>
I<0FF8003FFE007FFF00F80F80F00380F00380F00780001F00003E0000FC0001F00001E00003C0
0003C00003C00003C00003C00003800000000000000000000000000000000003800007C00007C0
0007C000038000111C7D9B18>I<00700000F80000F80000D80000D80001DC0001DC0001DC0001
8C00038E00038E00038E00038E000306000707000707000707000707000FFF800FFF800FFF800E
03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65 D<FFFC00FFFF00FFFF801C03
C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C00
E01C00F01C00701C00701C00701C00701C00F01C00E01C03E0FFFFC0FFFF80FFFE00141C7F9B18
>I<01FCE003FEE007FFE00F07E01E03E03C01E07800E07000E07000E0F00000E00000E00000E0
0000E00000E00000E00000E00000E00000F000007000E07000E07800E03C01E01E01C00F07C007
FF8003FF0001FC00131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E0
1C00E01C00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00E0
1C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00
701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E
001C0E001C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18
>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001C1C001F
FC001FFC001FFC001C1C001C1C001C1C001C00001C00001C00001C00001C00001C00001C0000FF
C000FFC000FFC000131C7E9B18>I<01F9C007FFC00FFFC01F0FC01C03C03C03C07801C07001C0
7001C0F00000E00000E00000E00000E00000E00000E00FF0E01FF0E00FF0F001C07001C07003C0
7803C03C03C01C07C01F0FC00FFFC007FDC001F9C0141C7E9B18>I<7F07F0FF8FF87F07F01C01
C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01
C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18
>I<7FFF00FFFF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007F
FF00FFFF807FFF00111C7D9B18>I<7F07F0FF87F87F07F01C03C01C07801C07001C0F001C1E00
1C3C001C38001C78001CF0001DF0001DF8001FF8001FBC001F1C001E1E001E0E001C0F001C0700
1C07801C03801C03C01C01C07F03F0FF87F87F03F0151C7F9B18>75 D<7FE000FFE0007FE0000E
00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E
00000E00000E00000E00000E00700E00700E00700E00700E00707FFFF0FFFFF07FFFF0141C7F9B
18>I<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E03B8EE03B8EE0398CE0398CE039DCE0
39DCE039DCE038D8E038D8E038F8E03870E03870E03800E03800E03800E03800E03800E03800E0
FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1
C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19
C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FF8003FFE007FFF0078
0F00700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E0
0380E00380E00380E00380E00380E00380F00780700700780F007FFF003FFE000FF800111C7D9B
18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C00701C00701C00701C00701C00E0
1C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C00001C00001C00001C00001C0000
FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E003
80E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E1E3
80E1E380F0E78070F700787F007FFF003FFE000FFC00001C00001E00000E00000F000007000007
0011227D9B18>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C
03801C0F801FFF001FFE001FFE001C0F001C07801C03801C03801C03801C03801C03801C039C1C
039C1C039C7F03FCFF81F87F00F0161C7F9B18>I<07F3801FFF803FFF807C1F80700780F00380
E00380E00380E00000F000007800003F00001FF0000FFE0001FF00001F800003C00001E00000E0
0000E06000E0E000E0E001E0F001C0FC07C0FFFF80FFFF00E7FC00131C7E9B18>I<7FFFF8FFFF
F8FFFFF8E07038E07038E07038E070380070000070000070000070000070000070000070000070
0000700000700000700000700000700000700000700000700000700000700007FF0007FF0007FF
00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C00701C00701C00701C
00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701E00F00E00E00F
01E007C7C003FF8001FF00007C00171C809B18>I<FF07F8FF07F8FF07F81C01C01C01C01C01C0
1C01C00E03800E03800E03800E03800F0780070700070700070700070700038E00038E00038E00
038E00018C0001DC0001DC0001DC0000D80000F80000F800007000151C7F9B18>I<FE03F8FE03
F8FE03F87000707000707000703800E03800E03800E03800E03800E038F8E038F8E039DCE039DC
E019DCC019DCC019DCC0198CC01D8DC01D8DC01D8DC01D8DC00D8D800D05800F07800F07800E03
80151C7F9B18>I<7F8FE07F9FE07F8FE00E07000F0700070E00078E00039C0003DC0001F80001
F80000F00000F00000700000F00000F80001F80001DC00039E00038E00070F000707000E07800E
03801E03C07F07F0FF8FF87F07F0151C7F9B18>I<FF07F8FF07F8FF07F81C01C01E03C00E0380
0F0780070700070700038E00038E0001DC0001DC0001FC0000F80000F800007000007000007000
00700000700000700000700000700000700001FC0003FE0001FC00151C7F9B18>I<3FFFE07FFF
E07FFFE07001C07003C0700780700700000F00001E00001C00003C0000780000700000F00001E0
0001C00003C0000780000700000F00001E00E01C00E03C00E07800E07000E0FFFFE0FFFFE0FFFF
E0131C7E9B18>I<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00783E
00300F0000070000070001FF000FFF003FFF007F0700780700F00700E00700E00700F00F00783F
007FFFF03FFBF00FE1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E0000
0E00000E3E000EFF800FFFC00FE3E00F80F00F00700F00780E00380E00380E00380E00380E0038
0F00380F00780F00700F80F00FC3E00FFFC00EFF80067E00151C809B18>I<01FE0007FF001FFF
803F07803C0300780000700000F00000E00000E00000E00000E00000F000007000007801C03C01
C03F07C01FFF8007FF0001FC0012147D9318>I<001F80003F80001F8000038000038000038000
038000038003F3800FFB801FFF803E1F80780F80700780F00780E00380E00380E00380E00380E0
0380E00780F00780700780780F803E3F801FFFF00FFBF803E3F0151C7E9B18>I<03F0000FFC00
1FFE003E1F00780780700380F003C0E001C0E001C0FFFFC0FFFFC0FFFFC0F000007000007801C0
3C01C03F07C01FFF8007FF0001FC0012147D9318>I<001FC0007FE000FFE001F1E001C0C001C0
0001C00001C0007FFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<03F1F007
FFF80FFFF81E1F303C0F003807003807003807003807003807003C0F001E1E001FFC003FF8003B
F0003800003C00001FFF001FFFC03FFFE07801F0F00078E00038E00038E00038F000787800F07E
03F03FFFE00FFF8003FE00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E0000
0E00000E3F000EFF800FFFC00FE1E00F80E00F00E00F00E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C0
0007C0000380000000000000000000000000007FC000FFC0007FC00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FFFF
00111D7C9C18>I<0038007C007C007C003800000000000000000FFC1FFC0FFC001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C003C6038
F078FFF07FE03FC00E277E9C18>I<FE0000FE0000FE00000E00000E00000E00000E00000E0000
0E3FF00E7FF00E3FF00E07800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F1E00
0E0F000E07800E03800E03C0FFC7F8FFC7F8FFC7F8151C7F9B18>I<7FE000FFE0007FE00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18
>I<7DF1F000FFFBF8007FFFFC001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C
1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF80
7F1F1F001914819318>I<7E3F00FEFF807FFFC00FE1E00F80E00F00E00F00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<
01F0000FFE001FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E0
7001C07803C03C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FE3
E00F80F00F00700F00780E00380E00380E00380E00380E00380F00380F00780F00700F80F00FC3
E00FFFC00EFF800E7E000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC0
00151E809318>I<03F3800FFB801FFF803E1F80780F80700780F00780E00380E00380E00380E0
0380E00380E00380F00780700780780F803E1F801FFF800FFB8003F38000038000038000038000
0380000380000380000380003FF8003FF8003FF8151E7E9318>I<7F87E0FF9FF87FBFF803FC78
03F03003E00003C00003C00003C000038000038000038000038000038000038000038000038000
7FFE00FFFF007FFE0015147F9318>I<0FF7003FFF007FFF00F81F00E00700E00700F007007C00
007FF0001FFC0007FE00001F00600780E00380F00380F00780FC0F00FFFF00FFFE00E7F8001114
7D9318>I<0180000380000380000380000380007FFFC0FFFFC0FFFFC003800003800003800003
80000380000380000380000380000380000380400380E00380E00381E003C3C001FFC000FF8000
7E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E00E01E00F07E007FFFC03FFFE01FCFC1714809318>I<7F8F
F0FF8FF87F8FF01E03C00E03800E03800E0380070700070700070700038E00038E00038E00038E
0001DC0001DC0001DC0000F80000F80000700015147F9318>I<FF8FF8FF8FF8FF8FF83800E038
00E03800E01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C00DDD800DDD800DDD800D8D800F
8F800F8F8007070015147F9318>I<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F800
00F80000700000F00000F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF015147F
9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E0380070380070700070700038700038600038E
0001CE0001CE0000CC0000CC0000DC0000780000780000780000700000700000700000F00000E0
0079E0007BC0007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C070
0780000F00001E00007C0000F80001F00003E0000780000F00701E00703C0070780070FFFFF0FF
FFF0FFFFF014147F9318>I<0007E0003FE0007FE000FC0000E00000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00001E0007FC000FF8000FF80007FC00001E00000E000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000FC00007FE0003FE0
0007E013247E9F18>I<7C0000FF8000FFC00007E00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000F000007FC0003FE0003FE0007FC000F00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00007E000FFC000FF80007C00
0013247E9F18>125 D E /Fs 46 123 df<F8F8F8F8F805057B8410>46
D<007E0001FF8007FFE00FFFF01FC3F81F00F83E007C3E007C3C003C7C003E7C003E78001E7800
1EF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF800
1FF8001FF8001F78001E7C003E7C003E7C003E7C003E3E007C3F00FC1F00F81FC3F80FFFF007FF
E001FF80007E0018297EA71D>48 D<00180000380000F80007F800FFF800FFF800FFF800F8F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F8007FFFF07FFFF07FFFF07FFFF014287CA71D>I<00FE0003FF800FFFC01FFFE01F07
F03C01F87800FC78007C70007CF0003EF0003E60003E20003E00003E00003E00003E00007C0000
7C0000780000F80001F00001E00003E00007C0000F80001F00003E00007C0000F80001F00003E0
0003C0000780000F00001E00003C00007FFFFE7FFFFE7FFFFE7FFFFE17287EA71D>I<007E0003
FF8007FFE00FFFF01F81F83E00F87C007C78007C30007C10007C00007C00007C0000780000F800
00F80001F00007E000FFC000FF8000FFC000FFF00001F80000FC00007C00003E00003E00001F00
001F00001F00001F00001F80001FC0003EE0003EF0007E7C00FC3F01F81FFFF00FFFE003FFC000
FE0018297EA71D>I<0007E0000FE0000BE0001BE0001BE0003BE0003BE00073E00073E000F3E0
00F3E001E3E001E3E003E3E003C3E007C3E00F83E00F83E01F03E01F03E03E03E03E03E07C03E0
7C03E0F803E0FFFFFFFFFFFFFFFFFFFFFFFF0003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E018277EA61D>I<3FFFF83FFFF83FFFF83FFFF83E00003E00003E00003E00
003E00003E00003E00003E00003E00003E00003E3E003EFF803FFFE03FFFF03FC1F03F80F83F00
7C3E007C00007C00003E00003E00003E00003E00003E00003E00003E20003E60007C70007CF800
F87C01F87F07F03FFFE00FFFC007FF0001FC0017287EA61D>I<000FE0003FF800FFF801FFF803
F81807E0000F80000F80001F00003E00003E00003C00007C00007C02007C3FC0F8FFE0F9FFF0FB
FFF8FF80FCFE007CFE003EFC003EFC003FFC001FF8001FF8001FF8001FF8001F78001F7C001F7C
001F7C001E3C003E3E003E1E007C1F00FC0FC1F807FFF003FFE001FF80007E0018297EA71D>I<
FFFFFFFFFFFFFFFFFFFFFFFF00000F00001E00003C0000780000780000F00001F00001E00003E0
0003C00007C0000F80000F80000F00001F00001E00003E00003E00003C00007C00007C00007C00
00F80000F80000F80000F80000F80000F00001F00001F00001F00001F00001F00001F00001F000
18277EA61D>I<007E0003FFC007FFE00FFFF01F81F83F00FC3E007C7E007E7C003E7C003E7C00
3E7C003E7C003E3E007C3E007C1F00F80FC3F007FFE003FFC003FFC00FFFF01F81F83F00FC3E00
7C7C003E7C003EF8001FF8001FF8001FF8001FF8001FF8001F7C003E7C003E7E007E3F00FC1F81
F80FFFF007FFE003FFC0007E0018297EA71D>I<007E0001FF8007FFC00FFFE01F83F01F00F83E
00787C007C7C003C78003EF8003EF8003EF8001EF8001FF8001FF8001FF8001FF8003FFC003F7C
003F7C007F3E007F3F01FF1FFFDF0FFF9F07FF1F03FC1E00403E00003E00003E00007C00007C00
00F80000F80001F01803E01E0FC03FFF801FFF000FFE0003F80018297EA71D>I<0003F0000000
03F000000007F800000007F800000007780000000F7C0000000F3C0000000F3C0000001F3E0000
001E3E0000001E1E0000003E1F0000003C1F0000007C0F8000007C0F800000780F800000F807C0
0000F807C00000F007C00001F003E00001F003E00001E003E00003E001F00003E001F00003C001
F00007C000F80007FFFFF80007FFFFF8000FFFFFFC000FFFFFFC000F00007C001F00003E001F00
003E001E00003E003E00001F003E00001F003C00001F007C00000F807C00000F80F800000FC0F8
000007C0F8000007C0222A7EA927>65 D<0003FE00000FFFC0003FFFF000FFFFF001FE03F003F8
006007E0002007C000000F8000001F8000001F0000003E0000003E0000007C0000007C0000007C
0000007C000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F80000007C0000007C0000007C0000007C0000003E0000003E0000001F0000001F8000
000F80000007C0000007E0000803F8003801FE01F800FFFFF8003FFFF0000FFFC00003FE001D2C
7CAA25>67 D<FFFFE00000FFFFFC0000FFFFFF0000FFFFFF8000F8003FC000F8000FE000F80003
F000F80001F800F80000F800F800007C00F800007E00F800003E00F800003E00F800001F00F800
001F00F800001F00F800000F80F800000F80F800000F80F800000F80F800000F80F800000F80F8
00000F80F800000F80F800000F80F800000F80F800000F00F800001F00F800001F00F800001F00
F800003E00F800007E00F800007C00F80000FC00F80001F800F80003F000F8000FE000F8003FC0
00FFFFFF8000FFFFFF0000FFFFFC0000FFFFE00000212A7BA92A>I<FFFFFF80FFFFFF80FFFFFF
80FFFFFF80F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000FFFFFC00FFFFFC00FFFFFC00FF
FFFC00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00192A7BA921>70 D<0003FE00000FFFC0003FFFF8007FFFFC01FE01FC03F8007C07E0001807C0
00000F8000001F8000001F0000003E0000003E0000007E0000007C0000007C0000007C000000F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F8003FFCF8003FFCF8003FFC
7C003FFC7C00007C7C00007C7E00007C3E00007C3E00007C1F00007C1F80007C0F80007C07C000
7C07E0007C03F8007C01FE01FC007FFFFC003FFFF8000FFFC00003FE001E2C7CAA27>I<F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
052A7BA910>73 D<FE000000FFFE000000FFFE000000FFFF000001FFFB000001DFFB800003DFFB
800003DFFB800003DFF9C000079FF9C000079FF9C000079FF9E0000F9FF8E0000F1FF8E0000F1F
F8F0001F1FF870001E1FF870001E1FF878003E1FF838003C1FF83C007C1FF83C007C1FF81C0078
1FF81E00F81FF81E00F81FF80E00F01FF80F01F01FF80F01F01FF80701E01FF80783E01FF80783
E01FF80383C01FF803C7C01FF803C7C01FF801C7801FF801EF801FF801EF801FF800EF001FF800
FF001FF8007E001FF8007E001FF8007E001FF80000001F282A7BA933>77
D<0003FC0000000FFF0000003FFFC00000FFFFF00001FE07F80003F801FC0007E0007E000FC000
3F000F80001F001F00000F801F00000F803E000007C03E000007C07C000003E07C000003E07C00
0003E078000001E0F8000001F0F8000001F0F8000001F0F8000001F0F8000001F0F8000001F0F8
000001F0F8000001F0F8000001F0F8000001F07C000003E07C000003E07C000003E07E000007E0
3E000007C03E000007C01F00000F801F80001F800F80001F000FC0003F0007E0007E0003F801FC
0001FE07F80000FFFFF000003FFFC000001FFF80000003FC0000242C7DAA2B>79
D<FFFFC000FFFFF800FFFFFE00FFFFFF00F8007F80F8001FC0F80007C0F80003E0F80003E0F800
01F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80003E0F80003E0F80007C0F8
001FC0F8007F80FFFFFF00FFFFFE00FFFFF800FFFFC000F8000000F8000000F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F80000001C2A7BA925>I<FFFFE000FFFFFC00FFFFFE00FFFFFF80F8003F
C0F8000FE0F80003F0F80001F0F80000F0F80000F8F80000F8F80000F8F80000F8F80000F8F800
00F0F80001F0F80003F0F8000FE0F8003FC0FFFFFF80FFFFFE00FFFFFC00FFFFE000F801F000F8
01F000F800F800F800F800F8007C00F8003C00F8003E00F8001E00F8001F00F8000F80F8000F80
F80007C0F80007C0F80003E0F80001E0F80001F0F80000F8F80000F8F800007C1E2A7BA926>82
D<007FC00001FFF80007FFFE000FFFFF001FC07F003F000F007E0006007C0000007C000000F800
0000F8000000F8000000F8000000F8000000FC0000007E0000007F0000003F8000001FF800000F
FF000007FFE00003FFF80000FFFC00000FFE000000FF0000003F0000001F8000000F8000000FC0
000007C0000007C0000007C0000007C0000007C0000007C000000F8060000F80F0001F00FC003F
00FF80FE007FFFFC001FFFF80007FFE00000FF80001A2C7DAA21>I<FFFFFFFFE0FFFFFFFFE0FF
FFFFFFE0FFFFFFFFE00001F000000001F000000001F000000001F000000001F000000001F00000
0001F000000001F000000001F000000001F000000001F000000001F000000001F000000001F000
000001F000000001F000000001F000000001F000000001F000000001F000000001F000000001F0
00000001F000000001F000000001F000000001F000000001F000000001F000000001F000000001
F000000001F000000001F000000001F000000001F000000001F000000001F000000001F0000000
01F00000232A7EA928>I<F80001F80001F0F80003F80001F0FC0003FC0001F07C0003FC0003E0
7C0003BC0003E07C0007BC0003E03E00079E0003C03E00079E0007C03E00079E0007C03E000F9F
0007C01F000F1F0007801F000F0F000F801F000F0F000F801F001F0F800F800F801E0F800F000F
801E07801F000F801E07801F000F803E07C01F0007C03C07C01E0007C03C03C03E0007C03C03C0
3E0007C07C03E03E0003E07803E03C0003E07801E07C0003E07801E07C0001E0F801F0780001E0
F001F0780001F0F000F0F80001F0F000F0F80000F0F000F0F00000F1E000F8F00000F9E00078F0
0000F9E00079F0000079E00079E0000079C00079E000007BC0003DE000007BC0003DE000003BC0
003DC000003F80003FC000003F80001FC000001F80001F8000001F00001F8000342A7FA937>87
D<01FC000FFF003FFF803FFFC03C07E03003E00001F00001F00001F00001F00001F00003F001FF
F007FFF01FFFF03FC1F07E01F0FC01F0F801F0F801F0F801F0FC03F07E0FF07FFFF03FFFF01FF9
F00FE1F0141B7E9A1C>97 D<F80000F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F87E00F9FF80FFFFC0FFFFE0FF07E0FC03F0F801F8
F800F8F800F8F8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF800FCF800F8F800F8
F801F0FC03F0FE0FE0FFFFC0FFFF80FBFF00F8FC00162A7BA91E>I<007F8001FFE007FFF80FFF
F81FC0783F00103E00007C00007C00007C0000F80000F80000F80000F80000F80000F80000F800
007C00007C00007C00003E00003F00181FC0780FFFF807FFF801FFE0007F80151B7E9A1A>I<00
007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00
007C00007C00FC7C03FF7C07FFFC0FFFFC1FC1FC3F00FC3E007C7C007C7C007CFC007CF8007CF8
007CF8007CF8007CF8007CF8007CF8007CF8007C7C007C7C007C7E00FC3F00FC1F83FC1FFFFC0F
FF7C03FE7C01F87C162A7EA91E>I<00FC0003FF0007FF800FFFC01F87E03F01E03E00F07C00F0
7C0070F80078FFFFF8FFFFF8FFFFF8FFFFF8F80000F80000F800007800007C00007C00003E0000
3F00181FC0F80FFFF807FFF801FFE0007F00151B7E9A1A>I<001FC0007FC000FFC001FFC003F0
0003E00007C00007C00007C00007C00007C00007C00007C00007C00007C000FFFE00FFFE00FFFE
00FFFE0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0
0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000122A7FA912
>I<00F80F0003FE7F800FFFFF801FFFFF801F07C0003E03E0003E03E0007C01F0007C01F0007C
01F0007C01F0007C01F0003E03E0003E03E0001F07C0001FFFC0003FFF80003BFE000038F80000
78000000780000007C0000003FFF80003FFFF0001FFFF8001FFFFC003FFFFE007C00FE007C003F
00F8001F00F8001F00F8001F00F8001F00FC003F007E007E003F81FC001FFFF8000FFFF00007FF
E00000FF000019287E9A1D>I<F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F87E00F9FF00FBFF80FFFFC0FF0FC0FE07E0FC03
E0FC03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803
E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0132A7BA91E>I<F8F8F8F8F80000000000
0000000000F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>I<
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8052A7CA90E>108 D<F83F007E00F9FF83FF00FBFFC7FF80FFFFEFFFC0FF07FE0FC0FE03
FC07E0FC01F803E0FC01F803E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F8
01F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0
F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0231B7B9A30>I<F87E
00F9FF00FBFF80FFFFC0FF0FC0FE07E0FC03E0FC03E0F803E0F803E0F803E0F803E0F803E0F803
E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803
E0131B7B9A1E>I<007E0001FF8007FFE00FFFF01F81F83F00FC3E007C7C003E7C003E78001EF8
001FF8001FF8001FF8001FF8001FF8001FF8001F7C003E7C003E7C003E3E007C3F00FC1FC3F80F
FFF007FFE003FFC0007E00181B7E9A1D>I<F87E00F9FF80FFFFC0FFFFE0FF0FE0FC03F0F801F8
F800F8F800F8F800FCF8007CF8007CF8007CF8007CF8007CF8007CF8007CF800FCF800F8F801F8
F801F0FC03F0FE0FE0FFFFC0FFFF80FBFF00F8FC00F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F8000016277B9A1E>I<00FC7C03FF7C07FFFC0FFFFC1FC1
FC3F00FC3E00FC7E007C7C007CFC007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CFC00
7C7C007C7C007C7E007C3F00FC1FC3FC1FFFFC0FFF7C03FE7C01F87C00007C00007C00007C0000
7C00007C00007C00007C00007C00007C00007C00007C00007C16277E9A1E>I<F838F8F8F9F8FB
F8FFC0FF00FE00FE00FC00FC00F800F800F800F800F800F800F800F800F800F800F800F800F800
F800F800F800F8000D1B7B9A14>I<07F8001FFF003FFF807FFF807C0780F80100F80000F80000
F80000FC00007F00007FF0003FFC001FFE0007FF0000FF80001FC0000FC00007C00007C04007C0
E007C0FC1F80FFFF807FFF001FFE0007F800121B7E9A16>I<07C00007C00007C00007C00007C0
0007C00007C000FFFF80FFFF80FFFF80FFFF8007C00007C00007C00007C00007C00007C00007C0
0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C08007E38003FF
C003FFC001FF0000FC0012227FA115>I<F803E0F803E0F803E0F803E0F803E0F803E0F803E0F8
03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F8
07E0F807E0FC1FE0FFFFE07FFBE03FF3E01F83E0131B7B9A1E>I<F8001FF8001F7C003E7C003E
7C003E3E007C3E007C3E007C1F00F81F00F81F00F80F81F00F81F00F81F007C3E007C3E007C3E0
03C3C003E7C001E78001E78001E78000E70000F70000FF00007E00007E00181B7F9A1B>I<F800
1FFC001F7C003E7C003E3E003E3E007C3F007C1F007C1F00F80F80F80F80F00F81F007C1F007C1
E003C1E003E3E003E3C001E3C001E3C000F78000F78000F780007700007700003F00003E00003E
00003E00003C00003C0000780000780000780000F00001F0007FE0007FE0007FC0007F00001827
7F9A1B>121 D<FFFFF0FFFFF0FFFFF0FFFFE00007E00007C0000F80001F80001F00003E00007E
00007C0000F80001F80001F00003E00007E00007C0000F80001F80001F00003E00007E00007FFF
F8FFFFF8FFFFF8FFFFF8151B7E9A19>I E /Ft 22 122 df<FFFFFFFFFFFFC00000FFFFFFFFFF
FFFC0000FFFFFFFFFFFFFF8000FFFFFFFFFFFFFFE000FFFFFFFFFFFFFFF800001FFF000003FFFC
00001FFF0000007FFE00001FFF0000003FFF00001FFF0000001FFF80001FFF0000000FFFC0001F
FF0000000FFFC0001FFF00000007FFE0001FFF00000007FFE0001FFF00000007FFE0001FFF0000
0003FFF0001FFF00000003FFF0001FFF00000003FFF0001FFF00000003FFF0001FFF00000003FF
F0001FFF00000003FFF0001FFF00000003FFF0001FFF00000003FFF0001FFF00000007FFE0001F
FF00000007FFE0001FFF00000007FFC0001FFF0000000FFFC0001FFF0000000FFF80001FFF0000
001FFF00001FFF0000003FFE00001FFF0000007FFC00001FFF000001FFF800001FFF00000FFFE0
00001FFFFFFFFFFF8000001FFFFFFFFFFC0000001FFFFFFFFFFF8000001FFFFFFFFFFFF000001F
FF000000FFFC00001FFF0000003FFF00001FFF0000000FFF80001FFF00000007FFE0001FFF0000
0003FFF0001FFF00000001FFF0001FFF00000001FFF8001FFF00000000FFFC001FFF00000000FF
FC001FFF000000007FFE001FFF000000007FFE001FFF000000007FFE001FFF000000007FFF001F
FF000000007FFF001FFF000000007FFF001FFF000000007FFF001FFF000000007FFF001FFF0000
00007FFF001FFF000000007FFF001FFF000000007FFF001FFF000000007FFE001FFF00000000FF
FE001FFF00000000FFFE001FFF00000001FFFC001FFF00000001FFFC001FFF00000003FFF8001F
FF00000007FFF0001FFF0000000FFFE0001FFF0000003FFFC0001FFF000001FFFF80FFFFFFFFFF
FFFFFF00FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFF000FFFFFFFFFFFFFF8000FFFFFFFFFFFFF800
0048477CC653>66 D<000000007FFC00000E0000000FFFFFC0001E0000007FFFFFF8003E000003
FFFFFFFE007E00000FFFFFFFFF80FE00003FFFF8007FC1FE0000FFFF80000FF3FE0003FFFC0000
03FFFE0007FFF0000001FFFE000FFFC00000007FFE001FFF800000003FFE003FFF000000001FFE
007FFC000000000FFE00FFFC000000000FFE01FFF80000000007FE03FFF00000000003FE03FFE0
0000000003FE07FFE00000000001FE0FFFC00000000001FE0FFFC00000000000FE1FFF80000000
0000FE1FFF8000000000007E3FFF8000000000007E3FFF0000000000007E3FFF0000000000003E
7FFF0000000000003E7FFF0000000000003E7FFF0000000000003E7FFE000000000000007FFE00
000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000
000000FFFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000
FFFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00000000000000FFFE00
0000000000007FFE000000000000007FFE000000000000007FFF000000000000007FFF00000000
00003E7FFF0000000000003E3FFF0000000000003E3FFF0000000000003E3FFF8000000000003E
1FFF8000000000007E1FFF8000000000007C0FFFC000000000007C0FFFC00000000000FC07FFE0
0000000000FC03FFE00000000000F803FFF00000000001F801FFF80000000003F000FFFC000000
0003F0007FFE0000000007E0003FFF000000000FC0001FFF800000001F80000FFFC00000003F00
0007FFF0000000FE000003FFFC000001FC000000FFFF80000FF80000003FFFF8007FE00000000F
FFFFFFFFC000000003FFFFFFFF00000000007FFFFFFC00000000000FFFFFE00000000000007FFE
00000047497AC754>I<00000003FFF0000000000000007FFFFF80000000000003FFFFFFF00000
0000000FFFFFFFFC00000000003FFF003FFF0000000000FFF80007FFC000000003FFE00001FFF0
00000007FF8000007FF80000000FFF0000003FFC0000001FFE0000001FFE0000003FFC0000000F
FF0000007FF800000007FF800000FFF000000003FFC00001FFF000000003FFE00003FFE0000000
01FFF00003FFC000000000FFF00007FFC000000000FFF80007FFC000000000FFF8000FFF800000
00007FFC000FFF80000000007FFC001FFF80000000007FFE001FFF00000000003FFE003FFF0000
0000003FFF003FFF00000000003FFF003FFF00000000003FFF007FFF00000000003FFF807FFE00
000000001FFF807FFE00000000001FFF807FFE00000000001FFF807FFE00000000001FFF80FFFE
00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FF
FE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0
FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFF
C0FFFE00000000001FFFC0FFFE00000000001FFFC07FFE00000000001FFF807FFF00000000003F
FF807FFF00000000003FFF807FFF00000000003FFF803FFF00000000003FFF003FFF0000000000
3FFF003FFF80000000007FFF001FFF80000000007FFE001FFF80000000007FFE001FFF80000000
007FFE000FFFC000000000FFFC000FFFC000000000FFFC0007FFE000000001FFF80003FFE00000
0001FFF00003FFF000000003FFF00001FFF000000003FFE00000FFF800000007FFC000007FFC00
00000FFF8000007FFE0000001FFF8000003FFF0000003FFF0000000FFFC00000FFFC00000007FF
E00001FFF800000003FFF80007FFF000000000FFFF003FFFC0000000007FFFFFFFFF8000000000
0FFFFFFFFC000000000003FFFFFFF00000000000007FFFFF8000000000000003FFF0000000004A
497AC757>79 D<00007FF00007000007FFFF000F00001FFFFFE01F00007FFFFFF83F0000FFFFFF
FC7F0003FFC00FFFFF0007FE0000FFFF000FFC00003FFF000FF800001FFF001FF000000FFF003F
E0000007FF003FE0000003FF007FE0000001FF007FC0000000FF007FC0000000FF00FFC0000000
7F00FFC00000007F00FFC00000003F00FFE00000003F00FFE00000003F00FFE00000001F00FFF0
0000001F00FFF80000001F00FFFC0000001F00FFFE00000000007FFF80000000007FFFF8000000
007FFFFF800000003FFFFFFC0000003FFFFFFFC000001FFFFFFFF800001FFFFFFFFF00000FFFFF
FFFFC00007FFFFFFFFE00003FFFFFFFFF00001FFFFFFFFFC0000FFFFFFFFFC00003FFFFFFFFE00
000FFFFFFFFF000003FFFFFFFF8000007FFFFFFF80000003FFFFFFC00000003FFFFFC000000001
FFFFE0000000003FFFE0000000000FFFE00000000003FFF00000000001FFF00000000001FFF0F8
00000000FFF0F8000000007FF0F8000000007FF0F8000000007FF0F8000000003FF0FC00000000
3FF0FC000000003FF0FC000000003FE0FE000000003FE0FE000000003FE0FF000000007FE0FF80
0000007FC0FF800000007FC0FFC0000000FF80FFF0000001FF80FFF8000001FF00FFFE000003FE
00FFFFC0000FFC00FF7FFC007FF800FE3FFFFFFFF000FC0FFFFFFFC000F803FFFFFF0000F0007F
FFFC0000E00003FFE0000034497AC741>83 D<0003FFF0000000003FFFFF00000000FFFFFFE000
0001FFFFFFF8000003FF003FFC000007FF800FFE000007FF8007FF000007FF8003FF800007FF80
03FFC00007FF8001FFC00007FF8001FFC00003FF0000FFE00001FE0000FFE00000FC0000FFE000
00000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000000FF
FFE00000007FFFFFE0000007FFFFFFE000003FFFFCFFE00000FFFE00FFE00003FFF000FFE00007
FFC000FFE0000FFF0000FFE0001FFE0000FFE0003FFC0000FFE0007FFC0000FFE0007FF80000FF
E000FFF80000FFE000FFF00000FFE000FFF00000FFE000FFF00000FFE000FFF00001FFE000FFF0
0001FFE000FFF80003FFE0007FFC0007FFE0007FFC000FFFE0003FFE001F7FF8001FFF80FE7FFF
F007FFFFFC3FFFF003FFFFF01FFFF0007FFFC00FFFF00007FE0003FFF0342E7DAD38>97
D<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC0
0000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000
01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000
00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001
FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00FFE000001FFC0FFFF
C00001FFC3FFFFF00001FFCFFFFFFC0001FFFFE01FFF0001FFFF0007FF8001FFFC0001FFC001FF
F80000FFE001FFF00000FFF001FFE000007FF001FFC000007FF801FFC000003FFC01FFC000003F
FC01FFC000003FFC01FFC000001FFE01FFC000001FFE01FFC000001FFE01FFC000001FFF01FFC0
00001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF
01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000
001FFE01FFC000001FFE01FFC000003FFE01FFC000003FFC01FFC000003FFC01FFC000003FF801
FFC000007FF801FFE000007FF001FFF00000FFE001FFF80001FFE001FFFC0003FFC001FF7F0007
FF0001FE3FC03FFE0001FC0FFFFFF80001FC03FFFFF00001F800FFFF800001F0001FF800003848
7CC741>I<00001FFF80000001FFFFF8000007FFFFFE00001FFFFFFF00007FF801FF8000FFE003
FFC003FFC003FFC007FF8003FFC007FF0003FFC00FFE0003FFC01FFE0003FFC01FFC0001FF803F
FC0000FF003FFC00007E007FFC000000007FF8000000007FF800000000FFF800000000FFF80000
0000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FF
F800000000FFF800000000FFF800000000FFF8000000007FFC000000007FFC000000007FFC0000
00003FFC000000003FFE000000001FFE000001F01FFF000001F00FFF000003F007FF800007E007
FFC00007C003FFE0000FC000FFF8003F80007FFF00FF00001FFFFFFC000007FFFFF0000001FFFF
C00000001FFC00002C2E7CAD34>I<0000000000FF8000000001FFFF8000000001FFFF80000000
01FFFF8000000001FFFF8000000001FFFF800000000007FF800000000003FF800000000003FF80
0000000003FF800000000003FF800000000003FF800000000003FF800000000003FF8000000000
03FF800000000003FF800000000003FF800000000003FF800000000003FF800000000003FF8000
00000003FF800000000003FF800000000003FF800000000003FF800000000003FF800000000003
FF8000001FF803FF800001FFFF03FF80000FFFFFE3FF80003FFFFFFBFF80007FFC03FFFF8001FF
E0007FFF8003FFC0003FFF8007FF80000FFF800FFF000007FF800FFE000003FF801FFE000003FF
801FFC000003FF803FFC000003FF803FFC000003FF807FFC000003FF807FF8000003FF807FF800
0003FF80FFF8000003FF80FFF8000003FF80FFF8000003FF80FFF8000003FF80FFF8000003FF80
FFF8000003FF80FFF8000003FF80FFF8000003FF80FFF8000003FF80FFF8000003FF80FFF80000
03FF80FFF8000003FF807FF8000003FF807FF8000003FF807FF8000003FF803FFC000003FF803F
FC000003FF803FFC000003FF801FFE000007FF800FFE000007FF800FFF00000FFF8007FF00001F
FF8003FF80007FFF8001FFE000FFFFC000FFF807FBFFFF003FFFFFE3FFFF000FFFFFC3FFFF0003
FFFE03FFFF00003FF003FFFF38487CC741>I<00003FFE00000001FFFFC000000FFFFFF800003F
FFFFFC00007FFC0FFE0000FFE003FF0001FF8000FF8003FF0000FFC007FF00007FE00FFE00003F
F01FFE00003FF01FFC00003FF03FFC00001FF83FFC00001FF87FFC00001FF87FF800001FFC7FF8
00000FFC7FF800000FFCFFF800000FFCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFFFF
FCFFF800000000FFF800000000FFF800000000FFF800000000FFF8000000007FF8000000007FF8
000000007FFC000000007FFC000000003FFC000000003FFC0000007C1FFE0000007C0FFE000000
FC0FFF000000F807FF800001F803FFC00003F001FFE00007E000FFF8001FC0007FFF00FF80001F
FFFFFF000007FFFFFC000000FFFFF00000000FFF00002E2E7DAD35>I<00000000003F000000FF
F000FFC00007FFFE03FFE0003FFFFFCFFFF0007FFFFFFFCFF001FFE07FFE0FF003FF801FFC1FF0
07FF000FFE0FF00FFE0007FF0FF00FFE0007FF07E01FFC0003FF81801FFC0003FF80003FFC0003
FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003FFC0003F
FC0003FFC0003FFC0003FFC0003FFC0003FFC0001FFC0003FF80001FFC0003FF80000FFE0007FF
00000FFE0007FF000007FF000FFE000003FF801FFC000001FFE07FF8000003FFFFFFE0000003FF
FFFFC000000787FFFE0000000780FFF0000000078000000000000F8000000000000F8000000000
000FC000000000000FC000000000000FE000000000000FF8000000000007FFFFFFF0000007FFFF
FFFF000007FFFFFFFFE00003FFFFFFFFF80003FFFFFFFFFC0001FFFFFFFFFE0000FFFFFFFFFF00
03FFFFFFFFFF800FFFFFFFFFFF801FF000001FFFC03FC0000001FFC07F800000007FE07F800000
003FE0FF000000003FE0FF000000001FE0FF000000001FE0FF000000001FE0FF000000001FE0FF
800000003FE07F800000003FC07FC00000007FC03FE0000000FF801FF8000003FF000FFE00000F
FE0007FFE000FFFC0001FFFFFFFFF000003FFFFFFF8000000FFFFFFE000000007FFFC000003444
7DAE3A>103 D<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000
000000FFFFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001
FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000
000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC007FE00
0001FFC03FFFC00001FFC0FFFFF00001FFC1FFFFFC0001FFC7F01FFC0001FFCFC00FFE0001FFDF
0007FF0001FFDE0007FF0001FFFC0007FF0001FFF80003FF8001FFF80003FF8001FFF00003FF80
01FFE00003FF8001FFE00003FF8001FFE00003FF8001FFC00003FF8001FFC00003FF8001FFC000
03FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001
FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003
FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF
C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF
8001FFC00003FF80FFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF
81FFFFFF38487BC741>I<00FC0001FF0003FF8007FF800FFFC00FFFC00FFFE00FFFE00FFFE00F
FFC00FFFC007FF8003FF8001FF0000FC0000000000000000000000000000000000000000000000
0000000000000000000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001
FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18497CC8
20>I<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFF
FF80FFFFFF80FFFFFF80FFFFFF80FFFFFF8019487CC720>108 D<00FF8003FF000003FF000000
FFFF801FFFE0001FFFE00000FFFF807FFFF8007FFFF80000FFFF81FFFFFC01FFFFFC0000FFFF83
F01FFE03F01FFE0000FFFF87C007FF07C007FF000003FF8F0007FF8F0007FF800001FF9E0003FF
9E0003FF800001FFBC0003FFBC0003FF800001FFF80001FFF80001FFC00001FFF80001FFF80001
FFC00001FFF00001FFF00001FFC00001FFE00001FFE00001FFC00001FFE00001FFE00001FFC000
01FFE00001FFE00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF
80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80592E7BAD62>
I<00FF8007FE0000FFFF803FFFC000FFFF80FFFFF000FFFF81FFFFFC00FFFF87F01FFC00FFFF8F
C00FFE0003FF9F0007FF0001FF9E0007FF0001FFBC0007FF0001FFF80003FF8001FFF80003FF80
01FFF00003FF8001FFE00003FF8001FFE00003FF8001FFE00003FF8001FFC00003FF8001FFC000
03FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001
FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003
FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF
C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF
8001FFC00003FF8001FFC00003FF80FFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF
81FFFFFFFFFFFF81FFFFFF382E7BAD41>I<00000FFE0000000001FFFFF000000007FFFFFC0000
001FFFFFFF0000007FF803FFC00000FFE000FFE00001FF80003FF00003FF00001FF80007FE0000
0FFC000FFE00000FFE000FFC000007FE001FFC000007FF003FFC000007FF803FF8000003FF803F
F8000003FF807FF8000003FFC07FF8000003FFC07FF8000003FFC0FFF8000003FFE0FFF8000003
FFE0FFF8000003FFE0FFF8000003FFE0FFF8000003FFE0FFF8000003FFE0FFF8000003FFE0FFF8
000003FFE0FFF8000003FFE0FFF8000003FFE07FF8000003FFC07FF8000003FFC07FF8000003FF
C07FF8000003FFC03FFC000007FF803FFC000007FF801FFC000007FF001FFC000007FF000FFE00
000FFE0007FF00001FFC0003FF00001FF80001FFC0007FF00000FFE000FFE000007FFC07FFC000
001FFFFFFF00000007FFFFFC00000001FFFFF0000000001FFF000000332E7DAD3A>I<007FC00F
FE0000FFFFC0FFFFC000FFFFC3FFFFF000FFFFCFFFFFFC00FFFFFFE03FFF00FFFFFF000FFF8003
FFFC0007FFC001FFF80003FFE001FFF00001FFF001FFE00000FFF001FFC00000FFF801FFC00000
7FFC01FFC000007FFC01FFC000003FFC01FFC000003FFE01FFC000003FFE01FFC000003FFE01FF
C000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001F
FF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC000001FFF01FFC0
00001FFF01FFC000003FFE01FFC000003FFE01FFC000003FFE01FFC000007FFC01FFC000007FFC
01FFC000007FF801FFC00000FFF801FFE00000FFF001FFF00001FFE001FFF80003FFE001FFFC00
07FFC001FFFF000FFF0001FFFFC07FFE0001FFCFFFFFF80001FFC3FFFFF00001FFC0FFFF800001
FFC01FF8000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000
000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
C00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000FFFFFF800000
00FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF8000000038427CAD41>I<00FF80
7F00FFFF81FFC0FFFF87FFF0FFFF8FFFF8FFFF9F8FFCFFFF9F1FFE03FFBE1FFE01FFBC1FFE01FF
F81FFE01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F801FFE003F001FFE0000001FFE0000001
FFE0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC00000
01FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC000
0001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0
000001FFC00000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFFE000272E7CAD2F>
114 D<000FFE01C000FFFFC7C003FFFFFFC007FFFFFFC01FF001FFC03FC0007FC03F80003FC07F
00001FC07E00000FC0FE00000FC0FE000007C0FE000007C0FF000007C0FF800007C0FFC0000000
FFF8000000FFFFC000007FFFFE00007FFFFFE0003FFFFFF8001FFFFFFE000FFFFFFF0007FFFFFF
8001FFFFFFC0007FFFFFE0001FFFFFF00000FFFFF0000007FFF00000007FF80000001FF8F80000
0FF8F8000007F8FC000007F8FC000003F8FC000003F8FE000003F8FF000003F0FF000007F0FF80
0007F0FFC0000FE0FFF0001FC0FFFC00FF80FFFFFFFF00FC7FFFFC00F01FFFF000E003FF800025
2E7CAD2E>I<0001F000000001F000000001F000000001F000000001F000000001F000000003F0
00000003F000000003F000000007F000000007F000000007F00000000FF00000000FF00000001F
F00000003FF00000003FF00000007FF0000001FFF0000003FFF000000FFFFFFFC0FFFFFFFFC0FF
FFFFFFC0FFFFFFFFC0FFFFFFFFC0007FF00000007FF00000007FF00000007FF00000007FF00000
007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF000
00007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF00000007FF0
0000007FF00000007FF00000007FF001F0007FF001F0007FF001F0007FF001F0007FF001F0007F
F001F0007FF001F0007FF001F0007FF001F0007FF003F0003FF803E0003FF807E0001FFC07C000
1FFE0F80000FFFFF800003FFFE000000FFFC0000001FE00024427EC12D>I<007FC00000FF80FF
FFC001FFFF80FFFFC001FFFF80FFFFC001FFFF80FFFFC001FFFF80FFFFC001FFFF8003FFC00007
FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF
C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF
8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC0
0003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF80
01FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00007FF8001FFC000
07FF8001FFC00007FF8001FFC0000FFF8001FFC0001FFF8000FFC0003FFF8000FFE0007FFF8000
7FE000FBFFC0007FF803F3FFFF003FFFFFE3FFFF000FFFFF83FFFF0003FFFE03FFFF00007FF003
FFFF382E7BAD41>I<FFFFFF0003FFFFFFFFFF0003FFFFFFFFFF0003FFFFFFFFFF0003FFFFFFFF
FF0003FFFF01FFE000001F8000FFE000001F0000FFF000003F00007FF000003E00007FF800007E
00003FF800007C00003FFC0000FC00001FFC0000F800001FFC0000F800001FFE0001F800000FFE
0001F000000FFF0003F0000007FF0003E0000007FF8007E0000003FF8007C0000003FFC007C000
0003FFC00FC0000001FFC00F80000001FFE01F80000000FFE01F00000000FFF03F000000007FF0
3E000000007FF87E000000003FF87C000000003FF87C000000003FFCFC000000001FFCF8000000
001FFFF8000000000FFFF0000000000FFFF00000000007FFE00000000007FFE00000000003FFC0
0000000003FFC00000000003FFC00000000001FF800000000001FF800000000000FF0000000000
00FF0000000000007E0000000000007E0000000000007E0000000000007C000000000000FC0000
00000000F8000000000001F8000000000001F00000001F0003F00000003F8003E00000007FC003
E0000000FFE007C0000000FFE00FC0000000FFE00F80000000FFE01F80000000FFE03F00000000
7FC0FE000000007F83FC000000003FFFF8000000001FFFE00000000007FF800000000001FE0000
00000038427EAD3D>121 D E /Fu 8 117 df<0000000F80000000000F80000000001F80000000
003F80000000007F80000000007F8000000000FF8000000001FF8000000003FF8000000003FF80
00000007FF800000000FFF800000001FFF800000001FFF800000003DFF8000000079FF80000000
F9FF80000000F1FF80000001E1FF80000003C1FF8000000781FF8000000F81FF8000000F01FF80
00001E01FF8000003C01FF8000007C01FF8000007801FF800000F001FF800001E001FF800003E0
01FF800003C001FF8000078001FF80000F0001FF80001F0001FF80001E0001FF80003C0001FF80
00780001FF8000F80001FF8000FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF80FFFFFFFFFF800000
03FF8000000003FF8000000003FF8000000003FF8000000003FF8000000003FF8000000003FF80
00000003FF8000000003FF8000000003FF80000007FFFFFF800007FFFFFF800007FFFFFF800007
FFFFFF8029387DB730>52 D<0000001FFE0000E0000003FFFFE001E000001FFFFFF803E000007F
FFFFFE07E00001FFFC00FF0FE00007FFC0001FDFE0000FFF000007FFE0003FFC000001FFE0007F
F0000000FFE000FFE00000007FE001FFC00000003FE003FF800000001FE007FF800000001FE007
FF000000000FE00FFE0000000007E00FFE0000000007E01FFC0000000007E01FFC0000000003E0
3FFC0000000003E03FF80000000003E07FF80000000001E07FF80000000001E07FF80000000001
E07FF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF000000000
0000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000
000000FFF0000000000000FFF0000000000000FFF0000000000000FFF00000000000007FF00000
000000007FF80000000000007FF80000000001E07FF80000000001E03FF80000000001E03FFC00
00000001E01FFC0000000001E01FFC0000000003E00FFE0000000003C00FFE0000000007C007FF
0000000007C007FF800000000F8003FF800000000F8001FFC00000001F0000FFE00000003E0000
7FF00000007C00003FFC000000F800000FFF000003F0000007FFC0000FE0000001FFFC007FC000
00007FFFFFFF000000001FFFFFFC0000000003FFFFE000000000001FFE0000003B3D7BBB46>67
D<003FFF00000001FFFFE0000007FFFFFC00000FF007FE00001FF801FF80001FF800FFC0001FF8
007FE0001FF8007FE0001FF8007FF0000FF0003FF00007E0003FF00003C0003FF0000000003FF0
000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF000007FF83FF00003FF
803FF00007FE003FF0001FFC003FF0003FF8003FF0007FF0003FF0007FE0003FF000FFE0003FF0
00FFC0003FF000FFC0003FF000FFC0003FF000FFC0007FF000FFC0007FF000FFE000FFF0007FE0
01DFF0003FF003DFFC001FFC0F9FFFE00FFFFE0FFFE001FFF807FFE0003FE001FFE02B267DA52F
>97 D<0003FF8000001FFFF000007FFFFC0000FF83FF0003FE00FF8007FC003F800FF8003FC01F
F8001FE01FF0001FE03FF0001FF03FF0000FF07FE0000FF07FE0000FF87FE0000FF8FFE0000FF8
FFE0000FF8FFFFFFFFF8FFFFFFFFF8FFFFFFFFF8FFE0000000FFE0000000FFE0000000FFE00000
00FFE00000007FE00000007FE00000007FF00000003FF00000783FF00000781FF80000F80FF800
00F007FC0001F003FE0003E001FF000FC000FFC07F80003FFFFE00000FFFFC000001FFC0002526
7DA52C>101 D<00FF0000000000FFFF0000000000FFFF0000000000FFFF0000000000FFFF0000
00000007FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003
FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003FF000000
000003FF000000000003FF000000000003FF000000000003FF000000000003FF000000000003FF
000000000003FF003FE0000003FF01FFFC000003FF07FFFE000003FF0F81FF800003FF3C00FF80
0003FF3800FFC00003FF7000FFC00003FFE0007FE00003FFC0007FE00003FFC0007FE00003FF80
007FE00003FF80007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE000
03FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF0000
7FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003
FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007F
E00003FF00007FE000FFFFFC1FFFFF80FFFFFC1FFFFF80FFFFFC1FFFFF80FFFFFC1FFFFF80313C
7DBB36>104 D<00FF00FF8000FFFF0FFFF800FFFF3FFFFE00FFFFFE03FF00FFFFF000FFC007FF
E0007FE003FFC0003FF003FF80003FF803FF00001FF803FF00001FFC03FF00000FFC03FF00000F
FE03FF00000FFE03FF00000FFE03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF
000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF00000F
FE03FF00000FFE03FF00000FFE03FF00000FFC03FF00001FFC03FF00001FF803FF80003FF003FF
C0007FF003FFE000FFE003FFF001FF8003FFFE07FF0003FF3FFFFC0003FF0FFFF00003FF01FF00
0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF
0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000
00FFFFFC000000FFFFFC000000FFFFFC000000FFFFFC00000030377EA536>112
D<00FE01F800FFFE07FF00FFFE1FFF80FFFE3E3FC0FFFE787FE007FE707FE003FEE07FE003FEE0
7FE003FFC07FE003FFC03FC003FF801F8003FF800F0003FF80000003FF80000003FF00000003FF
00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003
FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000
03FF00000003FF00000003FF000000FFFFFE0000FFFFFE0000FFFFFE0000FFFFFE000023267EA5
28>114 D<000F0000000F0000000F0000000F0000000F0000001F0000001F0000001F0000001F
0000003F0000003F0000007F0000007F000000FF000001FF000003FF000007FF00001FFFFFF0FF
FFFFF0FFFFFFF0FFFFFFF003FF000003FF000003FF000003FF000003FF000003FF000003FF0000
03FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF00
0003FF000003FF000003FF003C03FF003C03FF003C03FF003C03FF003C03FF003C03FF003C03FF
003C01FF807801FF807800FFC0F000FFE1F0003FFFE0000FFF800001FE001E377EB626>116
D E /Fv 75 124 df<000FC3E0007FEFF000E07C7801C0F8780380F83007007000070070000700
700007007000070070000700700007007000FFFFFF80FFFFFF8007007000070070000700700007
007000070070000700700007007000070070000700700007007000070070000700700007007000
0700700007007000070070007FE3FF007FE3FF001D20809F1B>11 D<001F80007FC001E0E00381
E00381E00701E0070000070000070000070000070000070000FFFFE0FFFFE00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E07FC3FE7FC3FE1720809F19>I<001FE0007FE001E1E00381E00380E00700E00700E00700E007
00E00700E00700E00700E0FFFFE0FFFFE00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E00700E00700E00700E07FE7FE7FE7FE1720809F19>I<
000F80F800007FE7FE0000E06E060001C0FC0F000380F80F000700F00F00070070000007007000
000700700000070070000007007000000700700000FFFFFFFF00FFFFFFFF000700700700070070
070007007007000700700700070070070007007007000700700700070070070007007007000700
7007000700700700070070070007007007000700700700070070070007007007007FE3FE3FF07F
E3FE3FF02420809F26>I<7038F87CFC7EFC7E7C3E0C060C060C06180C180C381C301860304020
0F0E7E9F17>34 D<0078000000FC00000186000003860000030300000703000007030000070300
00070300000706000007060000070C00000718000003B81FFC03F01FFC03E003E003C0018003C0
030007C003000EE006001CE0060038700C0078780C0070381800F01C3000F01E3000F00E6000F0
07C000F003C0187801C0187807E0303E1E78701FF83FE007E00F801E227EA023>38
D<70F8FCFC7C0C0C0C181838306040060E7C9F0D>I<006000C001800300070006000C001C0018
0038003800300070007000700060006000E000E000E000E000E000E000E000E000E000E000E000
E0006000600070007000700030003800380018001C000C00060007000300018000C000600B2E7D
A112>I<C0006000300018001C000C0006000700030003800380018001C001C001C000C000C000
E000E000E000E000E000E000E000E000E000E000E000E000C000C001C001C001C0018003800380
0300070006000C001C00180030006000C0000B2E7DA112>I<70F8FCFC7C0C0C0C181838306040
060E7C840D>44 D<FFC0FFC0FFC00A037F8A0F>I<70F8F8F87005057C840D>I<00030003000700
060006000E000C000C001C0018001800380030003000700060006000E000C000C001C001800180
01800380030003000700060006000E000C000C001C0018001800380030003000700060006000E0
00C000C000102D7DA117>I<03F0000FFC001E1E001C0E00380700780780700380700380700380
F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0
7003807003807003807807803807001C0E001E1E000FFC0003F000121F7E9D17>I<018003801F
80FF80E38003800380038003800380038003800380038003800380038003800380038003800380
038003800380038003800380FFFEFFFE0F1E7C9D17>I<03F0000FFC00183E00300F00600F80C0
0780F007C0F807C0F803C0F803C02003C00007C0000780000780000F00000E00001C0000380000
700000E00001C0000380000300000600C00C00C01800C03001807FFF80FFFF80FFFF80121E7E9D
17>I<03F0000FFC001C1E00300F00780F80780F80780780380F80000F80000F00000F00001E00
003C0003F80003F000001C00000E00000F000007800007800007C02007C0F807C0F807C0F807C0
F00780600F80700F003C1E001FFC0003F000121F7E9D17>I<000E00000E00001E00003E00003E
00006E0000EE0000CE00018E00038E00030E00060E000E0E000C0E00180E00380E00300E00600E
00E00E00FFFFF0FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE000FFE0141E
7F9D17>I<3803003FFF003FFE003FF8003FE00030000030000030000030000030000030000031
F00037FC003E0E003C07003807803003800003800003C00003C00003C06003C0F003C0F003C0F0
0380C00780600700700E003C1E000FF80007E000121F7E9D17>I<007C0001FE000783000E0380
0C07801C0780380300380000780000700000700000F3F800F7FE00FC0E00F80700F80380F80380
F003C0F003C0F003C0F003C0F003C07003C07003C07003803803803807001C07000E1E0007FC00
01F000121F7E9D17>I<6000007FFFC07FFFC07FFF80600180C00300C00600C00600000C000018
0000180000300000600000600000E00000C00001C00001C00001C0000380000380000380000380
00078000078000078000078000078000078000078000030000121F7D9D17>I<03F0000FFC001E
1E003807003007007003807003807003807003807807003E07003F0E001FDC000FF80003F80007
FC001E7E00383F00700F80700780E003C0E001C0E001C0E001C0E001C0F001807003803807001E
0E000FFC0003F000121F7E9D17>I<03F00007F8001E1C00380E00380700700700700380F00380
F00380F003C0F003C0F003C0F003C0F003C07007C07007C0380FC01C0FC01FFBC007F3C0000380
000380000780000700300700780E00780E00701C003078001FF0000FC000121F7E9D17>I<70F8
F8F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F870000000000000000000
0070F8F8F878181818183030606040051D7C930D>I<7FFFFFE0FFFFFFF0000000000000000000
0000000000000000000000000000000000000000000000FFFFFFF07FFFFFE01C0C7D9023>61
D<0FC03FF070786038E03CF03CF03C603C003C007800F000E001C0018003800300030003000300
0300030003000000000000000000000007000F800F800F8007000E207D9F15>63
D<0003800000038000000380000007C0000007C0000007C000000DE000000DE000000DE0000018
F0000018F0000018F00000307800003078000030780000603C0000603C0000603C0000E01E0000
C01E0000FFFE0001FFFF0001800F0001800F0003800F800300078003000780070007C0070003C0
0F8003C0FFE03FFEFFE03FFE1F207F9F22>65 D<FFFFE000FFFFF80007803E0007801F0007800F
0007800F8007800F8007800F8007800F8007800F8007800F0007801F0007803E0007807C0007FF
F80007FFFC0007801E0007800F0007800F8007800780078007C0078007C0078007C0078007C007
8007C00780078007800F8007801F0007803E00FFFFFC00FFFFF0001A1F7E9E20>I<001FC04000
7FF0C001F839C003C00DC0078007C00F0003C01E0003C03E0001C03C0001C07C0001C07C0000C0
780000C0F80000C0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00780000C07C0000C07C0000C03C0000C03E0001801E0001800F0003000780030003C00E0001F8
1C00007FF000001FC0001A217D9F21>I<FFFFE000FFFFFC0007803E0007800F00078007800780
03C0078003E0078001E0078001F0078000F0078000F0078000F8078000F8078000F8078000F807
8000F8078000F8078000F8078000F8078000F8078000F0078000F0078001F0078001E0078001E0
078003C00780078007800F0007803E00FFFFFC00FFFFE0001D1F7E9E23>I<FFFFFF00FFFFFF00
07801F000780070007800300078003000780038007800180078001800780C1800780C1800780C0
000780C0000781C00007FFC00007FFC0000781C0000780C0000780C0000780C0600780C0600780
0060078000C0078000C0078000C0078001C0078001C0078003C007800F80FFFFFF80FFFFFF801B
1F7E9E1F>I<FFFFFF00FFFFFF0007801F00078007000780030007800300078003800780018007
8001800780C1800780C1800780C0000780C0000781C00007FFC00007FFC0000781C0000780C000
0780C0000780C0000780C000078000000780000007800000078000000780000007800000078000
0007800000FFFE0000FFFE0000191F7E9E1E>I<FFF8FFF8FFF8FFF807800F0007800F0007800F
0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007FF
FF0007FFFF0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007
800F0007800F0007800F0007800F0007800F00FFF8FFF8FFF8FFF81D1F7E9E22>72
D<FFFCFFFC07800780078007800780078007800780078007800780078007800780078007800780
0780078007800780078007800780078007800780FFFCFFFC0E1F7F9E10>I<FFFE00FFFE000780
000780000780000780000780000780000780000780000780000780000780000780000780000780
0007800007800007800007800607800607800607800607800E07800E07800C07801C07803C0780
FCFFFFFCFFFFFC171F7E9E1C>76 D<FF80001FF8FFC0003FF807C0003F0007C0003F0006E0006F
0006E0006F0006E0006F00067000CF00067000CF00067000CF000638018F000638018F00063801
8F00061C030F00061C030F00061C030F00060E060F00060E060F00060E060F0006070C0F000607
0C0F0006070C0F000603980F000603980F000603980F000601F00F000601F00F000601F00F000F
00E00F00FFF0E1FFF8FFF0E1FFF8251F7E9E2A>I<FF807FF8FFC07FF807C0078007E0030007E0
030006F0030006F0030006780300063C0300063C0300061E0300061E0300060F0300060F030006
0783000607C3000603C3000601E3000601E3000600F3000600F30006007B0006007B0006003F00
06001F0006001F0006000F0006000F000F000700FFF00700FFF003001D1F7E9E22>I<001F8000
00FFF00001E0780007C03E000F801F000F000F001E0007803C0003C03C0003C07C0003E07C0003
E0780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F800
01F0780001E07C0003E07C0003E03C0003C03E0007C01E0007800F000F000F801F0007C03E0001
F0F80000FFF000001F80001C217D9F23>I<FFFFE000FFFFF80007807C0007801E0007801F0007
800F0007800F8007800F8007800F8007800F8007800F8007800F0007801F0007801E0007807C00
07FFF80007FFE00007800000078000000780000007800000078000000780000007800000078000
0007800000078000000780000007800000FFFC0000FFFC0000191F7E9E1F>I<FFFF8000FFFFF0
000780F80007803C0007803E0007801E0007801F0007801F0007801F0007801F0007801E000780
3E0007803C000780F80007FFF00007FF80000781C0000780E00007807000078070000780780007
8078000780780007807C0007807C0007807C0007807C0C07807E0C07803E0CFFFC1F18FFFC0FF0
000003E01E207E9E21>82 D<07E0800FF9801C1F80300F80700780600380E00380E00180E00180
E00180F00000F000007800007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C0
0001C0C001C0C001C0C001C0C001C0E00180F00380F80700FE0E00CFFC0081F80012217D9F19>
I<7FFFFFE07FFFFFE0780F01E0700F00E0600F0060600F0060E00F0070C00F0030C00F0030C00F
0030C00F0030000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
07FFFE0007FFFE001C1F7E9E21>I<FFFC7FF8FFFC7FF807800780078003000780030007800300
078003000780030007800300078003000780030007800300078003000780030007800300078003
0007800300078003000780030007800300078003000780030007800300078003000380020003C0
060003C0060001C00C0000E0180000783000003FE000000FC0001D207E9E22>I<FFF07FF83FF0
FFF07FF83FF00F0007800F800F00078003000F000780030007800FC0060007800FC0060007800F
C00600078019E00E0003C019E00C0003C019E00C0003C039E00C0001E030F0180001E030F01800
01E030F0180000F06078300000F06078300000F06078300000F0E07C30000078C03C60000078C0
3C60000078C03C6000003D801EC000003D801EC000003D801EC000003F000FC000001F000F8000
001F000F8000001F000F8000000E00070000000E00070000000E000700002C207F9E2F>87
D<7FF83FF87FF83FF807C00F8003C0060001E00E0001F00C0000F0180000783800007C3000003C
7000003E6000001EC000000FC000000F8000000780000007C0000007E000000DE000001DF00000
18F8000038780000307C0000603C0000E01E0000C01F0001800F0003800780030007C00F8007C0
FFE01FFEFFE01FFE1F1F7F9E22>I<FFF007FFFFF007FF0F8001F0078000C007C001C003E00180
01E0038001F0030000F0070000F80600007C0C00003C0C00003E1800001E3800001F3000000FF0
000007E0000007C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003
C0000003C0000003C0000003C000007FFE00007FFE00201F7F9E22>I<0804180C301870386030
6030C060C060C060F87CFC7EFC7E7C3E381C0F0E7B9F17>92 D<1FE0003FF000783800781C0030
0E00000E00000E00000E0003FE001FFE003E0E00780E00F80E00F00E30F00E30F00E30F01E3078
3F703FEFE00F878014147E9317>97 D<0E0000FE0000FE00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E3F000EFF800FC3C00F00E00E00F00E00700E00780E00780E00
780E00780E00780E00780E00780E00700E00F00F00F00F01E00FC3C00CFF800C3E0015207F9F19
>I<03F80FFC1E1E3C1E380C78007000F000F000F000F000F000F0007000780038033C031F0E0F
FC03F010147E9314>I<000380003F80003F800003800003800003800003800003800003800003
8000038000038003E3800FFB801E0F803C0780780380780380700380F00380F00380F00380F003
80F00380F003807003807003807807803807801E1F800FFBF803E3F815207E9F19>I<03F0000F
FC001E1E003C0F00380700780700700380F00380FFFF80FFFF80F00000F00000F0000070000078
00003801801C03800F070007FE0001F80011147F9314>I<003C00FE01CF038F03060700070007
000700070007000700FFF0FFF00700070007000700070007000700070007000700070007000700
0700070007007FF07FF01020809F0E>I<0001E003E3F00FFF701C1C703C1E00380E00780F0078
0F00780F00780F00380E003C1E001C1C003FF80033E0003000003000003800003FFE001FFF803F
FFC07003E07000F0E00070E00070E00070F000F07801E03E07C00FFF0003FC00141F7F9417>I<
0E0000FE0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E00
0EFF000FC3800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C0FFE7FCFFE7FC16207F9F19>I<1C001E003E001E001C0000000000
00000000000000000E007E007E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E00FFC0FFC00A1F809E0C>I<00E001F001F001F000E000000000000000000000000000
7007F007F000F00070007000700070007000700070007000700070007000700070007000700070
00700070007000706070F0E0F1C07F803E000C28829E0E>I<0E0000FE0000FE00000E00000E00
000E00000E00000E00000E00000E00000E00000E00000E1FF00E1FF00E0F800E0E000E0C000E18
000E30000E70000EF0000FF8000F38000E1C000E1E000E0E000E07000E07800E03800E03C0FFCF
F8FFCFF815207F9F18>I<0E00FE00FE000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00B2080
9F0C>I<0E3F03F000FEFF8FF800FFC1DC1C000F80F80E000F00F00E000E00E00E000E00E00E00
0E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E
000E00E00E000E00E00E000E00E00E00FFE7FE7FE0FFE7FE7FE023147F9326>I<0E3E00FEFF00
FFC3800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C0FFE7FCFFE7FC16147F9319>I<01F80007FE001E07803C03C03801C07000
E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07801E03801C03C03C01E078007FE
0001F80014147F9317>I<0E3F00FEFF80FFC3C00F01E00E00F00E00F00E00780E00780E00780E
00780E00780E00780E00780E00700E00F00F00F00F01E00FC3C00EFF800E3E000E00000E00000E
00000E00000E00000E00000E0000FFE000FFE000151D7F9319>I<03E1800FF9801E1F803C0780
780780780380700380F00380F00380F00380F00380F00380F003807003807803807807803C0F80
1E1F800FF38003E380000380000380000380000380000380000380000380003FF8003FF8151D7E
9318>I<0E78FEFCFF9E0F1E0F0C0F000E000E000E000E000E000E000E000E000E000E000E000E
00FFE0FFE00F147F9312>I<1F903FF07070E030E030E030F00078007F803FE00FF000F0C078C0
38C038E038E038F070DFE08F800D147E9312>I<06000600060006000E000E001E003E00FFF8FF
F80E000E000E000E000E000E000E000E000E000E000E180E180E180E180E18073007E003C00D1C
7F9B12>I<0E01C0FE1FC0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E03C00E03C0070FC007FDFC01F1FC16147F9319>I<FF87F8FF87F8
1E01E00E01C00E01800E0180070300070300070300038600038600038E0001CC0001CC0001FC00
00F80000F80000700000700000700015147F9318>I<FF9FF3FCFF9FF3FC1C0780F01C0780601C
07C0E00E0FC0C00E0CC0C00E0CE0C0070CE18007186180071871800398730003B0330003B03300
03B03F0001F03E0001E01E0001E01E0000E01C0000C00C001E147F9321>I<7FC7FC7FC7FC0703
E007038003830001C70000EE0000EC00007800003800003C00007C0000EE0001C7000187000303
800701C00F01E0FF87FEFF87FE1714809318>I<FF87F8FF87F81E01E00E01C00E01800E018007
0300070300070300038600038600038E0001CC0001CC0001FC0000F80000F80000700000700000
700000600000600000600000C000F0C000F18000F380007F00003C0000151D7F9318>I<3FFF3F
FF380E301C703C6038607060F001E001C0038007830F030E031C073C063806701EFFFEFFFE1014
7F9314>I<FFFFFCFFFFFC1602808C17>I E /Fw 47 122 df<70F8FCFC7C0C0C0C0C1818303060
40060F7C840E>44 D<FFE0FFE0FFE00B037F8B10>I<70F8F8F87005057C840E>I<01F00007FC00
0E0E001C07003803803803807803C07001C07001C07001C0F001E0F001E0F001E0F001E0F001E0
F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C07803C0
3803803803801C07000E0E0007FC0001F00013227EA018>48 D<018003800F80FF80F380038003
800380038003800380038003800380038003800380038003800380038003800380038003800380
03800380038003800380FFFEFFFE0F217CA018>I<03F0000FFC001C1F00300F806007806003C0
C003C0F003E0F801E0F801E0F801E02003E00003E00003C00003C0000780000780000F00001E00
001C0000380000700000E00001C0000380000700600E00600C00601800E03000C07FFFC0FFFFC0
FFFFC013217EA018>I<03F0000FFC001C1F003007807007807807C07807C07803C03807C00007
C0000780000780000F00000E00003C0003F80003F800001E00000F000007800007C00003C00003
E02003E07003E0F803E0F803E0F003C06003C06007803007801C1F000FFC0003F00013227EA018
>I<000E00000E00001E00001E00003E00003E00006E0000EE0000CE0001CE00018E00030E0007
0E00060E000E0E000C0E00180E00180E00300E00700E00600E00E00E00FFFFF8FFFFF8000E0000
0E00000E00000E00000E00000E00000E0001FFF001FFF015217FA018>I<1000801C07801FFF00
1FFE001FFC001FF00018000018000018000018000018000018000018F8001BFE001F0F001C0780
1803801803C00001C00001E00001E00001E00001E06001E0F001E0F001E0F001C0C003C06003C0
6003803007001C1E000FFC0003F00013227EA018>I<007E0001FF0003C1800701C00E03C01C03
C01C0180380000380000780000700000702000F1FC00F3FE00F60700FC0380F803C0F801C0F001
C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801C03803C01803801C07000E0E
0007FC0001F00013227EA018>I<6000007000007FFFE07FFFE07FFFC06000C0E00180C00300C0
0300C00600000C00000C0000180000180000300000300000600000600000E00000E00000E00001
C00001C00001C00001C00001C00003C00003C00003C00003C00003C00003C00003C00003C00001
800013237DA118>I<01F00007FC000E0F001807803803803001C07001C07001C07001C07801C0
7803803E03803F07001FCE000FFC0003F80003FC000F7F001C3F80380F807007C07003C0E001E0
E000E0E000E0E000E0E000E0E000E07001C07001C03803801E0F000FFE0003F00013227EA018>
I<01F00007FC000E0E001C0700380380780380700380F001C0F001C0F001C0F001E0F001E0F001
E0F001E0F001E07001E07003E07803E03807E01C0DE00FF9E007F1E00081C00001C00003C00003
80000380300700780700780E00701C003838001FF0000FC00013227EA018>I<000180000003C0
000003C0000003C0000007E0000007E0000007E000000FF000000CF000000CF000001CF8000018
78000018780000383C0000303C0000303C0000601E0000601E0000601E0000C00F0000C00F0000
C00F0001FFFF8001FFFF8001800780030003C0030003C0030003C0060001E0060001E0060001E0
0E0000F01F0001F0FFC00FFFFFC00FFF20237EA225>65 D<000FE010003FF83000F81C7001E006
7003C003F0078001F00F0000F01E0000F03E0000703C0000707C0000707C000030780000307800
0030F8000030F8000000F8000000F8000000F8000000F8000000F8000000F80000007800003078
0000307C0000307C0000303C0000603E0000601E0000600F0000C0078000C003C0018001E00300
00F80E00003FF800000FE0001C247DA223>67 D<FFFFFFC0FFFFFFC007800FC0078003C0078001
C0078000C0078000E0078000E007800060078060600780606007806060078060000780E0000781
E00007FFE00007FFE0000781E0000780E000078060000780600007806018078060180780001807
80003007800030078000300780003007800070078000F0078001F0078007E0FFFFFFE0FFFFFFE0
1D227EA121>69 D<FFFFFFC0FFFFFFC007800FC0078003C0078001C0078000C0078000E0078000
E00780006007800060078060600780606007806000078060000780E0000781E00007FFE00007FF
E0000781E0000780E0000780600007806000078060000780600007800000078000000780000007
80000007800000078000000780000007800000FFFE0000FFFE00001B227EA120>I<FFFCFFFC07
800780078007800780078007800780078007800780078007800780078007800780078007800780
0780078007800780078007800780078007800780FFFCFFFC0E227EA112>73
D<FFC00003FFFFE00007FF07E00007E007E00007E006F0000DE006F0000DE006F0000DE0067800
19E006780019E006780019E0063C0031E0063C0031E0063C0031E0061E0061E0061E0061E0061E
0061E0060F00C1E0060F00C1E006078181E006078181E006078181E00603C301E00603C301E006
03C301E00601E601E00601E601E00601E601E00600FC01E00600FC01E00600FC01E006007801E0
1F807801E0FFF0783FFFFFF0303FFF28227EA12D>77 D<FF800FFFFFC00FFF07C001F807E00060
07F0006006F000600678006006780060063C0060063E0060061E0060060F0060060F0060060780
600607C0600603C0600601E0600601E0600600F060060078600600786006003C6006003C600600
1E6006000F6006000F60060007E0060007E0060003E0060001E0060001E01F8000E0FFF000E0FF
F0006020227EA125>I<FFFFF000FFFFFC0007803F0007800F8007800780078003C0078003C007
8003E0078003E0078003E0078003E0078003E0078003C0078003C00780078007800F8007803F00
07FFFC0007FFF00007800000078000000780000007800000078000000780000007800000078000
000780000007800000078000000780000007800000FFFC0000FFFC00001B227EA121>80
D<FFFFE00000FFFFF8000007803E000007800F00000780078000078007C000078003E000078003
E000078003E000078003E000078003E000078003E000078007C000078007800007800F00000780
3E000007FFF8000007FFF00000078078000007803C000007801E000007800E000007800F000007
800F000007800F000007800F000007800F800007800F800007800F800007800F818007800FC180
078007C180FFFC03E300FFFC01FE000000007C0021237EA124>82 D<03F0200FFC601C0EE03803
E07001E07001E0E000E0E000E0E00060E00060E00060F00000F000007800007F00003FF0001FFE
000FFF0003FF80003FC00007E00001E00000F00000F0000070C00070C00070C00070C00070E000
60E000E0F000C0F801C0EF0380C7FF0081FC0014247DA21B>I<7FFFFFF87FFFFFF87C0780F870
0780386007801860078018E007801CC007800CC007800CC007800CC007800CC007800C00078000
000780000007800000078000000780000007800000078000000780000007800000078000000780
0000078000000780000007800000078000000780000007800000078000000780000007800003FF
FF0003FFFF001E227EA123>I<0FE0001FF8003C1C003C0E00180700000700000700000F0003FF
000FFF003F07007C0700780700F00700F00718F00718F00F18780F187C3FB83FF3F00FC3C01515
7E9418>97 D<0E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E1F800E7FE00FC0F00F00780E00380E003C0E001C0E001E0E001E0E001E
0E001E0E001E0E001E0E001E0E001C0E003C0F00380F80700FC1F00C7FC00C1F0017237FA21B>
I<01FE0007FF000F07801C0780380300780000700000F00000F00000F00000F00000F00000F000
00F000007800007800C03C00C01E01800F030007FE0001F80012157E9416>I<0000E0000FE000
0FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E003F0E007
FEE01F07E03C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E070
00E07800E03801E03C03E01E0EF00FFCFE03F0FE17237EA21B>I<01FC0007FF000F07801C03C0
3801C07801E07000E0FFFFE0FFFFE0F00000F00000F00000F00000F000007800007800603C0060
1E00C00F838007FF0000FC0013157F9416>I<003C00FE01CF038F038F07000700070007000700
0700070007000700FFF8FFF8070007000700070007000700070007000700070007000700070007
000700070007007FF87FF8102380A20F>I<0000F001F1F807FFB80F1F381E0F001C07003C0780
3C07803C07803C07803C07801C07001E0F000F1E001FFC0019F0001800001800001C00001FFF00
0FFFC01FFFE03801F0700070E00038E00038E00038E000387000707800F01E03C00FFF8001FC00
15217F9518>I<0E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E1F800E7FC00FC1E00F80F00F00700E00700E00700E00700E00700E00
700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FFFFE7FF18237FA21B
>I<1C001E003E001E001C00000000000000000000000000000000000E00FE00FE001E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC0FFC00A227FA10E>I<01
C003E003E003E001C00000000000000000000000000000000001E00FE00FE001E000E000E000E0
00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060
C0F1C0F1807F003E000B2C82A10F>I<0E0000FE0000FE00001E00000E00000E00000E00000E00
000E00000E00000E00000E00000E00000E00000E0FFC0E0FFC0E07E00E03800E07000E0E000E18
000E30000E78000EF8000F9C000F1E000E0E000E07000E07800E03C00E01C00E01E00E01F0FFE3
FEFFE3FE17237FA21A>I<0E00FE00FE001E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FF
E0FFE00B237FA20E>I<0E1FC07F00FE7FE1FF80FEC0F303C01F807E01E00F003C00E00E003800
E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038
00E00E003800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFEFFE3FF8FFE2715
7F942A>I<0E1F80FE7FC0FFC1E01F80F00F00700E00700E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00700E00700E00700E0070FFE7FFFFE7FF18157F941B>I<01FC00
07FF000F07801C01C03800E07800F0700070F00078F00078F00078F00078F00078F00078F00078
7000707800F03800E01C01C00F078007FF0001FC0015157F9418>I<0E1F80FE7FE0FFC1F00F00
780E00780E003C0E003C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0F00
780F80700FC1F00E7FC00E1F000E00000E00000E00000E00000E00000E00000E00000E0000FFE0
00FFE000171F7F941B>I<0E3CFEFEFFCF1F8F0F060F000E000E000E000E000E000E000E000E00
0E000E000E000E000E00FFF0FFF010157F9413>114 D<0F883FF87078E038E018E018E018F000
7F003FE01FF001F8003CC01CC01CE01CE01CF018F878DFF08FC00E157E9413>I<060006000600
060006000E000E000E001E003E00FFF8FFF80E000E000E000E000E000E000E000E000E000E000E
0C0E0C0E0C0E0C0E0C0E08071803F001E00E1F7F9E13>I<0E0070FE07F0FE07F01E00F00E0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00F00E01F0
07037803FE7F01F87F18157F941B>I<FFC3FEFFC3FE1E00F80E00600E00600700C00700C00700
C003818003818003C38001C30001C30000E60000E60000E600007C00007C00007C000038000038
0017157F941A>I<FF8FF9FFFF8FF9FF1E01C07C1C03C0380E03E0300E03E0300E066030070670
6007067060070E7060038C30C0038C38C0039C38C001D8198001D81D8001D81D8001F00F8000F0
0F0000F00F0000E007000060060020157F9423>I<FFC3FEFFC3FE1E00F80E00600E00600700C0
0700C00700C003818003818003C38001C30001C30000E60000E60000E600007C00007C00007C00
003800003800003000003000007000006000006000F0C000F1C000F380007F00003E0000171F7F
941A>121 D E /Fx 20 118 df<FFFF80FFFF80FFFF8011037F9016>45
D<FFFFFFE00000FFFFFFFC000007E0007F000003E0000F800003E00007C00003E00001E00003E0
0000F00003E00000780003E000007C0003E000003E0003E000003E0003E000001F0003E000001F
0003E000000F8003E000000F8003E000000FC003E000000FC003E0000007C003E0000007C003E0
000007E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007
E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007C003E0000007C003E0
000007C003E000000FC003E000000F8003E000000F8003E000000F8003E000001F0003E000001F
0003E000003E0003E000007C0003E00000780003E00000F80003E00001F00003E00007E00003E0
000F800007E0007F0000FFFFFFFC0000FFFFFFE000002B317CB033>68 D<FFFF80FFFF8007F000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00007F000FFFF80FFFF8011317DB017>73 D<FFF00000007FF8FFF800
0000FFF807F8000000FF0003F8000000FE00037C000001BE00037C000001BE00037C000001BE00
033E0000033E00033E0000033E00033E0000033E00031F0000063E00031F0000063E00031F0000
063E00030F80000C3E00030F80000C3E00030F80000C3E000307C000183E000307C000183E0003
07C000183E000303E000303E000303E000303E000303E000303E000301F000603E000301F00060
3E000301F000C03E000300F800C03E000300F800C03E0003007C01803E0003007C01803E000300
7C01803E0003003E03003E0003003E03003E0003003E03003E0003001F06003E0003001F06003E
0003001F06003E0003000F8C003E0003000F8C003E0003000F8C003E00030007D8003E00030007
D8003E00030007D8003E00030003F0003E00030003F0003E00030003F0003E00078001E0003E00
0FC001E0007F00FFFC01E00FFFF8FFFC00C00FFFF835317CB03D>77 D<FFFFFFC000FFFFFFF800
07E000FE0003E0001F0003E0000F8003E00007C003E00003E003E00003F003E00001F003E00001
F003E00001F803E00001F803E00001F803E00001F803E00001F803E00001F803E00001F003E000
01F003E00003F003E00003E003E00007C003E0000F8003E0001F0003E000FE0003FFFFF80003FF
FFC00003E000000003E000000003E000000003E000000003E000000003E000000003E000000003
E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000003E000000003E000000007F0000000FFFF800000FFFF8000
0025317CB02D>80 D<007F802001FFE06007C0F8600F001CE01E000FE03C0007E0380003E07800
01E0700001E0700000E0F00000E0F00000E0F0000060F0000060F0000060F8000060F80000007C
0000007E0000003F0000003FC000001FF800000FFF800007FFF80003FFFC0000FFFF00000FFF80
0000FFC000001FE0000007E0000003F0000001F0000000F0000000F8000000F8C0000078C00000
78C0000078C0000078C0000078E0000078E0000070F00000F0F00000E0F80000E0FC0001C0FE00
0380E7800700C1F01E00C07FFC00800FF0001D337CB125>83 D<01FE00000FFFC0001C03E0003C
00F0003E0078003E003C003E001C0008001E0000001E0000001E0000001E0000001E000001FE00
003FFE0001FF1E0007F01E000F801E001F001E003E001E007C001E007C001E00F8001E0CF8001E
0CF8001E0CF8003E0CF8003E0C7C007E0C3E00DF1C1F038FB80FFF07F003F803C01E1F7D9E21>
97 D<003FC000FFF803E01C07801E0F003E1E003E1E003E3C00087C00007C0000780000F80000
F80000F80000F80000F80000F80000F80000F80000F800007C00007C00007C00003E00031E0003
1F00060F800E07C01C03F03800FFE0003F80181F7D9E1D>99 D<000001E000003FE000003FE000
0003E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0
000001E0000001E0000001E0000001E0000001E0000001E0003F81E000FFE1E003E079E007800D
E00F0007E01E0003E01E0001E03C0001E07C0001E07C0001E0780001E0F80001E0F80001E0F800
01E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0780001E07C0001E07C0001E03C
0001E03E0003E01E0007E00F000FE007801DE003E071F001FFE1FF003F01FF20327DB125>I<00
3F800000FFE00003E0F80007803C000F001E001E001E001E000F003C000F007C000F007C000F80
78000780F8000780FFFFFF80FFFFFF80F8000000F8000000F8000000F8000000F8000000F80000
00780000007C0000003C0000003C0001801E0001800F0003000F80060007C00E0001F03C0000FF
F000001FC000191F7E9E1D>I<0003E0001FF8003C3800707C00F07C01E07C01E03803C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007E0
007FFF007FFF0016327FB114>I<000000F0007F03F801FFCF1C03C1FC1C0780F8180F0078001F
007C001E003C003E003E003E003E003E003E003E003E003E003E003E003E003E003E001E003C00
1F007C000F0078000780F0000FC1E0000DFFC0001C7F000018000000180000001C0000001C0000
001E0000000FFFF8000FFFFF0007FFFF800FFFFFC01E0007E0380001F07000007070000078E000
0038E0000038E0000038E0000038E000003870000070780000F03C0001E01E0003C007C01F0001
FFFC00003FE0001E2F7E9F21>I<07000F801F801F800F80070000000000000000000000000000
0000000000000000000780FF80FF800F8007800780078007800780078007800780078007800780
07800780078007800780078007800780078007800780078007800FC0FFF8FFF80D307EAF12>
105 D<0781FE003FC000FF87FF80FFF000FF8E07C1C0F8000F9803E3007C0007B001E6003C0007
E000FC001E0007C000F8001E0007C000F8001E0007C000F8001E00078000F0001E00078000F000
1E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780
00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E
00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>109
D<0781FE0000FF87FF8000FF8E07C0000F9803E00007B001E00007E000F00007C000F00007C000
F00007C000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078000F000078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF80
211F7E9E25>I<001FC00000FFF80001E03C0007800F000F0007801E0003C01E0003C03C0001E0
3C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000
F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003C00F00078007C0
1F0001F07C0000FFF800001FC0001D1F7E9E21>I<0783E0FF8FF8FF9C7C0FB07C07F07C07E038
07C00007C00007C000078000078000078000078000078000078000078000078000078000078000
0780000780000780000780000780000780000780000780000780000FC000FFFE00FFFE00161F7E
9E19>114 D<01FC100FFF301E03F03800F0700070E00070E00030E00030E00030F00030F80000
7E00003FF0001FFF000FFF8003FFE0003FF00003F8000078C0003CC0003CC0001CE0001CE0001C
F0001CF00018F80038FC0070EF01E0C3FFC080FE00161F7E9E1A>I<00C00000C00000C00000C0
0000C00001C00001C00001C00003C00003C00007C0000FC0001FC000FFFFE0FFFFE003C00003C0
0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0
0003C00003C03003C03003C03003C03003C03003C03003C03003C03001E06001E06000F0C0007F
80001F00142C7FAB19>I<078000F000FF801FF000FF801FF0000F8001F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078001F000078001F000078003F000038007F00003C00EF00001F03CF800
00FFF0FF80003FC0FF80211F7E9E25>I E /Fy 5 85 df<00000000600000000000E000000000
00E00000000001E00000000001F00000000003F00000000003F00000000007F0000000000FF000
0000000FF0000000001BF0000000001BF00000000033F00000000033F00000000063F000000000
63F000000000C3F000000001C3F00000000183F00000000303F00000000303F00000000603F800
00000603F80000000C01F80000000C01F80000001801F80000003801F80000003001F800000060
01F80000006001F8000000C001F8000000C001F80000018001F8000001FFFFF8000003FFFFF800
00070001F80000060001F800000C0001F800000C0001F80000180001FC0000180001FC00003000
00FC0000300000FC0000600000FC0000E00000FC0000C00000FC0001C00000FC0003C00000FC00
0FE00003FC00FFFC003FFFE0FFF8003FFFE02B337CB234>65 D<000FFFFFFC00000FFFFFFF8000
007F000FC000007E0003E000007E0001F000007E0000F800007E00007C0000FC00007C0000FC00
003E0000FC00003E0000FC00003E0001F800001E0001F800001F0001F800001F0001F800001F00
03F000001F0003F000001F0003F000001F0003F000001F0007E000003F0007E000003F0007E000
003F0007E000003F000FC000003E000FC000007E000FC000007E000FC000007E001F8000007C00
1F800000FC001F800000FC001F800000F8003F000001F8003F000001F0003F000003F0003F0000
03E0007E000007E0007E000007C0007E00000F80007E00000F0000FC00001F0000FC00003E0000
FC00007C0000FC0000F80001F80001F00001F80007C00001F8000F800003F8007E0000FFFFFFF8
0000FFFFFFC0000030317BB035>68 D<000FFFFFFFF8000FFFFFFFF800007F0003F800007E0000
F800007E00007800007E00007800007E0000300000FC0000300000FC0000300000FC0000300000
FC0000300001F80000300001F80000300001F80000300001F80000600003F00180600003F00180
000003F00180000003F00180000007E00300000007E00300000007E00700000007E01F0000000F
FFFE0000000FFFFE0000000FC01E0000000FC00E0000001F800C0000001F800C0000001F800C00
00001F800C0000003F00180000003F00180000003F00000000003F00000000007E00000000007E
00000000007E00000000007E0000000000FC0000000000FC0000000000FC0000000000FC000000
0001F80000000001F80000000001F80000000003F800000000FFFFF0000000FFFFF00000002D31
7BB02E>70 D<000FFFFFE000000FFFFFFC0000007F003F0000007E000F8000007E0007C000007E
0003E000007E0003F00000FC0001F00000FC0001F00000FC0001F00000FC0001F00001F80003F0
0001F80003F00001F80003F00001F80003E00003F00007E00003F00007C00003F0000FC00003F0
001F800007E0003F000007E0007C000007E000F8000007E007E000000FFFFF8000000FFFFF0000
000FC00FC000000FC007E000001F8003F000001F8001F000001F8001F800001F8001F800003F00
01F800003F0001F800003F0001F800003F0001F800007E0003F000007E0003F000007E0003F000
007E0003F00000FC0007E00000FC0007E00000FC0007E00000FC0007E01801F80007E03001F800
07E03001F80007E06003F80003E060FFFFE001F1C0FFFFC000FF80000000003E002D327BB033>
82 D<07FFFFFFFFF007FFFFFFFFF00FE007F007F00F8007E001F00E0007E000E00C0007E000E0
1C0007E000E018000FC000E018000FC000E030000FC000C030000FC000C030001F8000C060001F
8000C060001F8000C060001F8000C0C0003F00018000003F00000000003F00000000003F000000
00007E00000000007E00000000007E00000000007E0000000000FC0000000000FC0000000000FC
0000000000FC0000000001F80000000001F80000000001F80000000001F80000000003F0000000
0003F00000000003F00000000003F00000000007E00000000007E00000000007E00000000007E0
000000000FC0000000000FC0000000000FC0000000000FC0000000001F80000000001F80000000
001F80000000003F800000007FFFFF8000007FFFFF8000002C3174B032>84
D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 1 1
bop 75 361 a Fu(Chapter)31 b(4)75 568 y Ft(One)39 b(Sided)e(Comm)m
(unications)75 809 y Fs(4.1)59 b(Intro)r(duction)75 910 y Fv(Remote)14
b(Memory)e(Cop)o(y)h(\(RMC\))g(extends)h(the)g(comm)o(unication)g(mec)o
(hanisms)g(of)f(MPI)h(b)o(y)f(allo)o(wing)75 967 y(transfer)g(of)g(data)f
(from)h(the)h(memory)f(of)g(one)g(pro)q(cess)h(to)f(the)g(memory)g(of)g
(another)g(pro)q(cess)h(to)f(o)q(ccur)75 1023 y(with)19 b(the)g(explicit)h
(in)o(v)o(olv)o(emen)o(t)f(of)f(one)h(of)f(the)h(t)o(w)o(o)e(pro)q(cesses)i
(only:)27 b(either)19 b(the)g(source)g(pro)q(cess)75 1080 y(\(put\))c(or)f
(the)i(destination)g(pro)q(cess)f(\(get\).)166 1136 y(This)g(mo)q(de)g(of)f
(comm)o(unication)h(facilitates)h(the)e(co)q(ding)i(of)e(some)g(applications)
j(with)d(irregular)75 1193 y(comm)o(unication)21 b(patterns)f(\(irregular)g
(in)h(time)f(or)g(in)h(space\).)35 b(One)21 b(situation)f(is)h(where)g(the)f
(ap-)75 1249 y(plication)f(is)g(a)e(distributed)j(memory)d(application)i
(that)e(needs)i(some)e(shared)h(memory)g(for)f(shared)75 1306
y(tables)g(that)e(are)h(accessed)h(\\randomly")e(\(quan)o(tum)h(c)o
(hemistry?\).)23 b(Some)16 b(of)g(the)g(pro)q(cesses)h(can)f(b)q(e)75
1362 y(used)k(as)f(\\memory)g(serv)o(ers",)h(and)f(the)h(other)f(pro)q
(cesses)h(access)g(the)f(data)g(using)h(get)g(calls.)34 b(An-)75
1418 y(other)15 b(o)q(ccurrence)h(is)f(with)h(a)e(distributed)j(memory)d(co)q
(de)i(where)f(the)g(data)g(distribution)h(is)g(\014xed)f(or)75
1475 y(slo)o(wly)j(c)o(hanging,)g(but)f(w)o(ere)g(the)g(\\use")g(pattern)g(c)
o(hanges)g(v)o(ery)g(dynamically)i(\(N-b)q(o)q(dy?)28 b(particle)75
1531 y(in)14 b(cell?\).)21 b(Eac)o(h)13 b(pro)q(cess)g(can)h(compute)f(what)f
(data)h(it)g(needs)h(from)f(remote)f(pro)q(cesses)i(and)f(generate)75
1588 y(the)h(required)i(\\receiv)o(es";)e(in)h(order)f(to)g(generate)g(the)g
(matc)o(hing)h(sends,)f(one)h(needs)g(to)e(compute)i(the)75
1644 y(in)o(v)o(erse)20 b(of)e(the)h(receiv)o(e)h(mapping,)h(whic)o(h)f(is)f
(time)h(consuming)g(\(P)o(arti,)e(Chaos\).)31 b(The)19 b(use)h(of)e(get)75
1701 y(calls)h(a)o(v)o(oids)f(the)h(needs)g(for)f(sends.)30
b(A)18 b(generic)h(example)g(of)f(this)h(nature)f(is)h(the)g(execution)g(of)f
(an)75 1757 y(assignmen)o(t)c(of)h(the)f(form)g Fr(A)24 b(=)g(B\(map\))p
Fv(,)13 b(where)i Fr(map)f Fv(is)h(a)g(p)q(erm)o(utation)f(v)o(ector,)g(and)h
Fr(A,)23 b(B)15 b Fv(and)f Fr(map)75 1814 y Fv(are)h(distributed)i(in)f(the)f
(same)g(manner.)166 1953 y Fq(Discussion:)34 b Fp(What)13 b(is)h(a)g(natural)
f(example)g(for)g(\\put"?)166 2092 y Fv(The)k(de\014nition)i(of)e(RMC)g
(should)h(allo)o(w)g(systems)e(with)i(dedicated)g(put/get)f(hardw)o(are)f
(\(Cra)o(y)75 2148 y(T3D\))k(to)g(tak)o(e)h(adv)m(an)o(tage)f(of)h(that)f
(hardw)o(are,)i(at)e(least)h(for)g(simple)h(transfers.)37 b(More)20
b(complex)75 2205 y(transfers)f(ma)o(y)h(require)h(the)f(execution)i(of)d
(s/w)h(at)g(the)g(target)f(no)q(de.)36 b(It)20 b(should)h(allo)o(w)f(systems)
75 2261 y(with)d(comm)o(unication)g(copro)q(cessors)f(\(P)o(aragon,)e(Meik)o
(o\))i(to)g(tak)o(e)g(adv)m(an)o(tage)g(of)g(that)f(copro)q(cessor)75
2318 y(in)g(order)f(to)f(implemen)o(t)j(RMC)e(with)g(no)g(need)h(to)f(in)o
(terfere)g(with)h(the)f(application)h(pro)q(cessor)f(at)g(the)75
2374 y(target)f(no)q(de,)h(at)g(least)g(for)f(common)h(transfers.)k(RMC)c
(should)h(b)q(e)g(easily)g(implemen)o(table)h(in)f(shared)75
2431 y(memory)l(.)38 b(It)22 b(should)h(b)q(e)f(feasible)h(to)e(implemen)o(t)
h(RMC)g(en)o(tirely)g(in)h(s/w,)f(on)f(top)g(of)g(TCP/IP)l(,)75
2487 y(on)f(clusters)g(of)f(w/s)g(with)h(no)f(sp)q(ecial)j(comm)o(unication)e
(h/w.)33 b(On)20 b(suc)o(h)g(systems,)g(RMC)f(will)i(b)q(e)75
2544 y(implemen)o(ted)h(on)e(top)g(of)g(an)h(\\activ)o(e)f(message")f(or)h
(\\receiv)o(e&call")i(comm)o(unication)g(la)o(y)o(er)e(that)75
2600 y(in)o(v)o(ok)o(es)15 b(a)g(suitable)h(RMC)g(serv)o(er)e(up)q(on)i
(arriv)m(al)g(of)f(RMC)g(requests.)166 2656 y(W)l(e)f(shall)h(denote)f(b)o(y)
g Fo(origin)h Fv(the)f(pro)q(cess)g(that)g(p)q(erforms)f(the)i(call,)g(and)f
(b)o(y)g Fo(target)g Fv(the)g(other)964 2828 y(1)p eop
%%Page: 2 2
bop 75 -100 a Fv(2)746 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)l
(TIONS)75 49 y Fv(in)o(v)o(olv)o(ed)h(pro)q(cess.)k(Th)o(us,)14
b(in)i(a)f(put)g(op)q(eration,)g(source=origin)h(and)f(destination=target;)g
(in)h(a)e(get)75 106 y(op)q(eration,)h(source=target)f(and)i
(destination=origin.)166 162 y(This)d(c)o(hapter)f(also)g(co)o(v)o(ers)f
(additional)j(\\one-sided")f(comm)o(unication)g(mec)o(hanisms,)g(that)f(allo)
o(w)75 219 y(to)j(trigger)f(an)i(activit)o(y)f(up)q(on)h(message)f(arriv)m
(al.)21 b(These)15 b(are)g(the)h(receiv)o(e&call)i(and)d(activ)o(e)g(message)
75 275 y(calls)h(discussed)h(at)e(the)g(end)h(of)e(this)i(c)o(hapter.)75
418 y Fs(4.2)59 b(Initialization)75 520 y Fv(The)12 b(initialization)i(op)q
(eration)d(allo)o(ws)h(eac)o(h)f(pro)q(cess)h(to)f(sp)q(ecify)l(,)i(in)f(a)f
(collectiv)o(e)i(op)q(eration,)f(a)f(\\mem-)75 576 y(ory)17
b(windo)o(w")g(that)g(is)h(made)g(accessible)h(to)e(accesses)h(b)o(y)f
(remote)g(pro)q(cesses.)27 b(The)18 b(information)f(is)75 633
y(attac)o(hed)d(to)g(a)h(comm)o(unicator)f(returned)i(b)o(y)e(the)h(call.)21
b(The)15 b(initialization)j(op)q(eration)d(sp)q(eci\014es)i(the)75
689 y(lo)q(cation)f(of)e(the)i(windo)o(w)f(in)h(memory)e(and)i(the)f(la)o(y)o
(out)f(and)h(t)o(yp)q(e)h(of)e(the)h(elemen)o(ts)h(in)g(the)f(windo)o(w.)75
746 y(The)k(t)o(yp)q(e)g(information)g(facilitates)h(data)e(format)f(con)o(v)
o(ersion)i(in)h(a)e(heterogeneous)h(en)o(vironmen)o(t:)75 802
y(as)d(for)f(send-receiv)o(e,)j(t)o(yp)q(e)e(information)g(is)h(a)o(v)m
(ailable)h(at)d(b)q(oth)h(pro)q(cesses,)h(so)e(that)h(con)o(v)o(ersion)g(can)
75 858 y(b)q(e)f(done)g(either)g(b)o(y)g(the)f(sender)h(or)f(b)o(y)h(the)f
(receiv)o(er)h(or)f(b)o(y)h(b)q(oth.)k(Ho)o(w)o(ev)o(er,)14
b(an)g(escap)q(e)h(mec)o(hanism)75 915 y(is)k(pro)o(vided)h(for)e(\\un)o(t)o
(yp)q(ed")h(windo)o(ws.)30 b(This)19 b(is)h(useful)f(when)h(the)e(windo)o(w)h
(consists)g(of)g(memory)75 971 y(that)e(is)h(dynamically)i(allo)q(cated,)f
(or)e(when)h(the)g(t)o(yp)q(e)f(information)h(is)g(to)q(o)f(complex)i(to)e
(sp)q(ecify)l(.)29 b(If)75 1028 y(t)o(yp)q(e)14 b(information)g(is)h(not)e
(pro)o(vided)i(at)f(windo)o(w)g(initialization,)j(then)d(additional)i(t)o(yp)
q(e)e(information)75 1084 y(needs)i(to)f(b)q(e)g(carried)h(for)f(a)g(put)g
(or)g(get)f(request)i(from)e(the)h(origin)h(pro)q(cess)g(to)e(the)i(target)e
(pro)q(cess.)166 1141 y(In)22 b(addition,)h(the)f(windo)o(w)f(initialization)
k(command)c(ma)o(y)g(sp)q(ecify)h(an)f(arra)o(y)g(of)f(p)q(ersisten)o(t)75
1197 y(request)15 b(ob)s(jects,)f(that)h(can)g(b)q(e)h(subsequen)o(tly)h
(used)e(to)g(sync)o(hronize)h(RMC)f(op)q(erations.)75 1348
y Fm(MPI)p 160 1348 14 2 v 16 w(RMC)p 274 1348 V 16 w(INIT)g(\(buf,)g(count,)
h(t)o(yp)q(e,)g(numreq,)d(a)o(rra)o(y)p 1008 1348 V 15 w(of)p
1060 1348 V 16 w(requests,)k(comm)m(,)12 b(new)o(comm)m(\))117
1425 y Fp(IN)155 b Fm(buf)527 b Fp(initial)12 b(address)j(of)f(target)g
(windo)o(w)f(\(c)o(hoice\))117 1501 y(IN)155 b Fm(count)482
b Fp(n)o(um)o(b)q(er)18 b(of)g(elemen)o(ts)h(in)f(target)h(windo)o(w)f(\(non)
g(negativ)o(e)905 1557 y(in)o(teger\))117 1632 y(IN)155 b Fm(t)o(yp)q(e)507
b Fp(data)14 b(t)o(yp)q(e)g(of)f(eac)o(h)i(target)f(windo)o(w)f(elemen)o(t)h
(\(handle\))117 1707 y(IN)155 b Fm(numreq)443 b Fp(n)o(um)o(b)q(er)13
b(of)h(requests)i(\(in)o(teger\))117 1782 y(OUT)108 b Fm(a)o(rra)o(y)p
416 1782 V 15 w(of)p 468 1782 V 16 w(requests)272 b Fp(arra)o(y)14
b(of)f(requests)j(\(handles\))117 1857 y(IN)155 b Fm(comm)466
b Fp(comm)o(unicator)11 b(\(handle\))117 1933 y(OUT)108 b Fm(new)o(comm)393
b Fp(new)15 b(comm)o(uni)o(cator)d(to)h(b)q(e)i(used)g(for)e(RMC)h
(\(handle\))75 2057 y Fr(int)23 b(MPI)p 245 2057 15 2 v 17
w(RMC)p 334 2057 V 17 w(init\(void*)f(buf,)i(int)f(count,)g(MPI)p
1067 2057 V 17 w(Datatype)g(type,)g(int)g(numreqs,)393 2114
y(MPI)p 468 2114 V 17 w(Request)g(array)p 796 2114 V 16 w(of)p
860 2114 V 17 w(requests,)g(MPI)p 1188 2114 V 17 w(Comm)g(comm,)393
2170 y(MPI)p 468 2170 V 17 w(Comm)g(*newcomm\))75 2256 y(MPI)p
150 2256 V 17 w(RMC)p 239 2256 V 17 w(INIT\(BUF,)f(COUNT,)h(TYPE,)g(NUMREQ,)g
(ARRAY)p 1115 2256 V 17 w(OF)p 1180 2256 V 17 w(REQUESTS,)f(COMM,)i(NEWCOMM,)
393 2313 y(IERROR\))170 2369 y(<type>)f(BUF\(*\))170 2426 y(INTEGER)g(COUNT,)
g(TYPE,)h(NUMREQS,)e(ARRAY)p 1009 2426 V 17 w(OF)p 1074 2426
V 17 w(REQUESTS\(*\),)g(COMM,)h(NEWCOMM,)170 2482 y(IERROR)166
2569 y Fv(This)d(is)h(a)e(collectiv)o(e)j(call)f(executed)g(b)o(y)e(all)i
(pro)q(cesses)g(in)f(the)g(group)g(of)f Fm(comm)m Fv(.)31 b(It)20
b(returns)75 2625 y(a)e(comm)o(unicator)h(that)f(can)h(b)q(e)g(used)h(b)o(y)f
(these)g(pro)q(cesses)g(to)f(p)q(erform)h(RMC)f(op)q(erations.)31
b(Eac)o(h)75 2682 y(pro)q(cess)13 b(sp)q(eci\014es)i(a)e(windo)o(w)g(of)g
(memory)g(that)f(it)h(exp)q(oses)h(to)e(remote)h(accesses)g(b)o(y)g(other)g
(pro)q(cesses,)1967 46 y Fl(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959
1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959
1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959
1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959
1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959
1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959
2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959
2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959
2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 3 3
bop 75 -100 a Fn(4.2.)34 b(INITIALIZA)l(TION)1302 b Fv(3)75
49 y(for)18 b(RMC)g(op)q(eration)g(that)g(use)g(comm)o(unicator)g
Fm(new)o(comm)n Fv(.)26 b(A)18 b(pro)q(cess)h(ma)o(y)e(elect)j(to)d(exp)q
(ose)i(no)75 106 y(memory)11 b(b)o(y)g(sp)q(ecifying)j Fm(count)f(=)e(0)p
Fv(.)19 b(It)11 b(ma)o(y)g(elect)i(not)e(to)g(restrict)g(the)h(upp)q(er)g(b)q
(ound)g(of)g(the)f(exp)q(osed)75 162 y(windo)o(w)i(b)o(y)f(sp)q(ecifying)j
Fm(count)f(=)f(MPI)p 759 162 14 2 v 16 w(UNDEFINED)p Fv(.)f(It)g(exp)q(oses)i
(its)e(en)o(tire)h(memory)f(b)o(y)h(sp)q(ecifying)75 219 y
Fm(buf)j(=)g(MPI)p 287 219 V 15 w(BOTTOM)g Fv(and)g Fm(count)g(=)g(MPI)p
859 219 V 15 w(UNDEFINED)p Fv(.)166 275 y(A)e(pro)q(cess)h(ma)o(y)f(elect)h
(not)f(to)g(sp)q(ecify)i(the)e(t)o(yp)q(e)h(of)f(the)h(windo)o(w)f(elemen)o
(ts,)h(b)o(y)g(pro)o(viding)g Fm(t)o(yp)q(e)75 332 y(=)h(MPI)p
211 332 V 15 w(D)o(A)l(T)l(A)l(TYPE)p 454 332 V 18 w(NULL)p
Fv(.)e(The)i(size)g(of)f(an)g(\\un)o(t)o(yp)q(ed")g(windo)o(w)g(is)h
(measured)f(in)i(b)o(ytes.)166 388 y(The)12 b(pro)q(cess)h(also)f(pro)o
(vides)h Fm(numreq)d Fv(request)i(handles.)20 b(The)13 b(call)g(asso)q
(ciates)f(with)g(eac)o(h)h(handle)75 444 y(a)i(p)q(ersisten)o(t)g(request)g
(ob)s(ject)g(that)f(can)h(b)q(e)h(used)f(b)o(y)g(remote)g(pro)q(cesses)g(to)f
(signal)i(the)f(execution)h(of)75 501 y(remote)f(accesses.)20
b(A)15 b(pro)q(cess)g(ma)o(y)g(elect)h(to)f(use)g(no)g(request)g(ob)s(jects,)
g(b)o(y)g(pro)o(viding)h Fm(numreq)d(=)j(0)p Fv(.)166 557 y(A)i(comm)o
(unicator)g(can)h(b)q(e)g(used)g(for)e(RMC)i(commands)f(only)h(after)e(the)i
(RMC)f(initialization)75 614 y(call.)27 b(Suc)o(h)18 b(comm)o(unicator)f(can)
g(then)h(b)q(e)g(only)g(used)g(for)e(RMC)h(comm)o(unication)h(in)g(the)g(sp)q
(eci\014ed)75 670 y(windo)o(w\(s\).)166 727 y(The)h(v)m(arious)h(pro)q
(cesses)f(in)h(the)f(group)g(of)f Fm(comm)13 b Fv(ma)o(y)18
b(sp)q(ecify)j(completely)f(di\013eren)o(t)f(target)75 783
y(windo)o(ws,)c(in)i(lo)q(cation,)e(t)o(yp)q(e)h(and)g(size.)21
b(The)16 b(n)o(um)o(b)q(er)g(of)f(requests)g(can)g(also)h(di\013er.)21
b(As)15 b(long)h(as)f(all)75 840 y(the)h(gets)g(and)g(puts)g(to)g(a)f
(particular)i(pro)q(cess)g(\014t)f(its)g(sp)q(eci\014c)i(target)d(windo)o(w)h
(this)h(should)g(p)q(ose)f(no)75 896 y(problem.)166 1035 y
Fq(Discussion:)36 b Fp(I)15 b(suggest)g(to)g(pic)o(k)f(a)g(sligh)o(tly)f
(alternativ)o(e)i(de\014nition)f(of)g(windo)o(w)f(t)o(yp)q(e.)21
b(Namely)m(,)12 b(that)75 1092 y(the)17 b(target)h(bu\013er)f(will)f(alw)o(a)
o(ys)f(o)o(v)o(erlap)i(a)f(concatenation)h(of)f(copies)i(of)e
Fk(t)o(yp)q(e)p Fp(,)i(but)f(that)g(the)g(windo)o(w)f(do)q(es)75
1148 y(not)h(necessarily)i(consists)f(of)f(copies)h(of)f Fk(t)o(yp)q(e)p
Fp(.)29 b(Th)o(us,)18 b(if)f(one)g(has)h(a)f(link)o(ed)g(list)g(of)g(elemen)o
(ts)g(of)g(t)o(yp)q(e)g Fk(t)o(yp)q(e)p Fp(,)75 1205 y(then)f(one)f(could)g
(op)q(en)g(a)g(windo)o(w)f(that)h(con)o(tains)g(the)g(heap,)g(and)g(declare)h
(it)f(of)f(t)o(yp)q(e)h Fk(t)o(yp)q(e)p Fp(.)23 b(Get)15 b(op)q(erations)75
1261 y(can)f(b)q(e)g(used)g(to)f(follo)o(w)e(up)j(a)f(link)o(ed)g(list)f(and)
i(fetc)o(h)g(one)f(elemen)o(t)g(after)g(another,)h(ev)o(en)g(if)e(the)i(heap)
g(con)o(tains)75 1317 y(other)j(stu\013.)26 b(The)17 b(same)f(mo)q
(di\014cation)e(is)i(also)g(useful)h(for)f(the)h(accum)o(ulate)e(functions.)
26 b(The)17 b(windo)o(w)e(t)o(yp)q(e)75 1374 y(sp)q(eci\014es)j(the)f(t)o(yp)
q(e)f(of)g(the)g(elemen)o(ts)g(that)g(are)h(op)q(erated)g(up)q(on)f(b)o(y)g
(the)h(accum)o(ulate)e(op)q(eration.)24 b(One)17 b(ma)o(y)75
1430 y(wish)c(to)g(sp)q(ecify)h(this)g(t)o(yp)q(e)g(at)f(windo)o(w)f
(initialization)f(ev)o(en)j(though)f(the)h(windo)o(w)e(also)h(con)o(tains)g
(elemen)o(ts)h(of)75 1487 y(other)h(t)o(yp)q(es)h(\(sa)o(y)m(,)e(as)h(comp)q
(onen)o(ts)f(of)g(C)h(structures\).)23 b(With)14 b(this)h(in)o(terpretation)g
(of)g(windo)o(w)f(t)o(yp)q(e,)h(it)f(ma)o(y)75 1543 y(b)q(e)h(more)d(useful)i
(to)g(de\014ne)h(windo)o(w)e(size)i(in)e(b)o(ytes,)h(rather)h(than)f(elemen)o
(t)f(coun)o(t.)189 1732 y Fj(A)n(dvic)n(e)h(to)h(users.)39
b Fv(The)14 b(declaration)h(of)e(a)g(windo)o(w)h(to)g(b)q(e)g(of)f(t)o(yp)q
(e)h Fk(MPI)p 1460 1732 13 2 v 14 w(BYTE)g Fv(has)f(a)h(di\013eren)o(t)189
1789 y(e\013ect)h(then)g(a)g(declaration)h(with)g Fk(MPI)p
866 1789 V 14 w(D)o(A)m(T)m(A)m(TYPE)p 1092 1789 V 12 w(NULL)p
Fv(.)g(In)g(the)f(\014rst)g(case,)g(a)g(datat)o(yp)q(e)f(in)i(a)189
1845 y(RMC)g(op)q(eration)h(that)f(de\014nes)i(the)f(target)f(comm)o
(unication)h(bu\013er)g(m)o(ust)f(b)q(e)i(built)g(of)e(basic)189
1902 y(t)o(yp)q(e)d Fk(MPI)p 366 1902 V 15 w(BYTE)p Fv(,)g(for)g(t)o(yp)q(e)g
(compatibilit)o(y)j(\(see)e(Section)g(4.3\).)k(In)d(the)e(second)i(case,)e
(there)h(are)189 1958 y(no)h(constrain)o(ts)f(on)i(suc)o(h)f(datat)o(yp)q(e.)
189 2033 y(One)c(can)f(pro)o(vide)h(m)o(ultiple)h(views)e(of)g(the)g(same)g
(target)f(windo)o(w,)i(sa)o(y)e(with)i(di\013eren)o(t)f(datat)o(yp)q(es)189
2090 y(or)j(la)o(y)o(out,)h(b)o(y)g(calling)i Fm(MPI)p 683
2090 14 2 v 16 w(RMC)p 797 2090 V 16 w(INIT)e Fv(m)o(ultiple)i(times)e(and)h
(using)g(the)f(resulting)h(comm)o(uni-)189 2146 y(cators)f(to)g(distinguish)k
(b)q(et)o(w)o(een)d(the)h(di\013eren)o(t)f(views.)20 b(\()p
Fj(End)c(of)g(advic)n(e)g(to)h(users.)p Fv(\))75 2268 y Fi(4.2.1)49
b(Initialization)19 b(and)e(Memo)o(ry)d(Allo)q(cation)75 2354
y Fv(It)j(is)g(con)o(v)o(enien)o(t)g(to)f(com)o(bine)h(windo)o(w)g
(declaration)g(and)g(memory)f(allo)q(cation)i(for)e(windo)o(w)g(in)i(one)75
2410 y(call.)-32 46 y Fl(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498
y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40
780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40
1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796
y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304
y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 4 4
bop 75 -100 a Fv(4)746 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)l
(TIONS)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(RMC)p 274 49 V 16
w(MALLOC\(size,)g(numreq,)e(a)o(rra)o(y)p 851 49 V 14 w(of)p
902 49 V 16 w(requests,)k(comm)n(,)11 b(bu\013,)16 b(new)o(comm)m(\))117
126 y Fp(IN)155 b Fm(size)519 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f
(in)h(windo)o(w)f(\(non)h(negativ)o(e)f(in)o(teger\))117 202
y(IN)155 b Fm(t)o(yp)q(e)507 b Fp(data)14 b(t)o(yp)q(e)g(of)f(eac)o(h)i
(target)f(windo)o(w)f(elemen)o(t)h(\(handle\))117 277 y(IN)155
b Fm(numreq)443 b Fp(n)o(um)o(b)q(er)13 b(of)h(requests)i(\(in)o(teger\))117
352 y(OUT)108 b Fm(a)o(rra)o(y)p 416 352 V 15 w(of)p 468 352
V 16 w(requests)272 b Fp(arra)o(y)14 b(of)f(requests)j(\(handles\))117
427 y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11 b(\(handle\))117
502 y(OUT)108 b Fm(buf)527 b Fp(initial)12 b(address)j(of)f(windo)o(w)f(\(c)o
(hoice\))117 577 y(OUT)108 b Fm(new)o(comm)393 b Fp(comm)o(unicator)11
b(to)j(b)q(e)h(used)f(for)g(RMC)f(\(handle\))75 702 y Fr(int)23
b(MPI)p 245 702 15 2 v 17 w(RMC)p 334 702 V 17 w(malloc\(int)f(size,)i(int)f
(numreq,)g(MPI)p 1115 702 V 17 w(Datatype)g(type,)393 758 y(MPI)p
468 758 V 17 w(Request)g(array)p 796 758 V 16 w(of)p 860 758
V 17 w(requests,)g(MPI)p 1188 758 V 17 w(Comm)g(comm,)g(void*)g(buf,)393
815 y(MPI)p 468 815 V 17 w(Comm)g(comm\))166 901 y Fv(Lik)o(e)f(MPI)p
363 901 14 2 v 16 w(RMC)p 487 901 V 16 w(INIT)g(except)f(this)h(call)g(allo)q
(cates)f Fm(size)g Fv(b)o(ytes)g(of)g(memory)f(for)g(the)h(target)75
958 y(windo)o(w)15 b(and)h(returns)f(the)g(address)g(in)h Fm(buf)p
Fv(.)189 1064 y Fj(A)n(dvic)n(e)e(to)i(implementors.)39 b Fv(This)15
b(function)g(pro)o(vides)f(the)h(opp)q(ortunit)o(y)f(to)g(allo)q(cate)h
(memory)189 1120 y(that)21 b(is)i(more)f(easily)i(shared)e(within)i(the)e(sp)
q(eci\014ed)j(comm)o(unicator.)41 b(\()p Fj(End)22 b(of)h(advic)n(e)g(to)189
1177 y(implementors.)p Fv(\))166 1359 y Fq(Discussion:)34 b
Fp(This)14 b(function)f(su\013ers)j(from)c(t)o(w)o(o)h(problems:)166
1409 y(\(1\))h(There)h(seem)f(to)g(b)q(e)h(no)f(adequate)g(F)m(ortran)g
(binding:)k(F)m(ortran)c(77)f(do)q(es)i(not)f(ha)o(v)o(e)g(supp)q(ort)h(to)f
(heap)75 1459 y(memory)d(allo)q(cation.)16 b(F)m(ortran)d(90)f(do)q(es)i(\()p
Fk(ALLOCA)m(T)m(ABLE)p Fp(\),)d(but)i(it)g(is)g(strongly)g(t)o(yp)q(ed:)18
b(one)13 b(cannot)g(allo)q(cate)75 1508 y(memory)e(without)j(creating)g(a)g
(v)n(ariable.)166 1565 y(\(2\))f(It)h(is)f(not)h(clear)g(ho)o(w)f(useful)h
(it)f(is.)18 b(The)c(same)e(e\013ect)k(can)d(b)q(e)h(ac)o(hiev)o(ed)g(in)f(C)
h(b)o(y)f(a)g(call)g(to)h Fh(malloc\(\))75 1621 y Fp(\(or)g
Fh(shmalloc)p Fp(\),)e(follo)o(w)o(ed)g(b)o(y)i(a)f(call)g(to)h
Fk(MPI)p 814 1621 13 2 v 15 w(RMC)p 919 1621 V 14 w(INIT)p
Fp(.)166 1761 y Fv(A)k(bu\013er)g(allo)q(cated)g(b)o(y)g Fm(MPI)p
697 1761 14 2 v 16 w(RMC)p 811 1761 V 17 w(MALLOC)f Fv(is)i(freed)f
(automatically)g(when)g(the)g(comm)o(uni-)75 1817 y(cator)e(that)g(w)o(as)g
(created)h(b)o(y)g(the)g(same)g(call)h(is)g(freed)f(b)o(y)g(a)f(collectiv)o
(e)j(call)f(to)f Fm(MPI)p 1582 1817 V 15 w(COMM)p 1739 1817
V 17 w(FREE)p Fv(.)75 1873 y(The)g(comm)o(unicator)g(and)g(the)h(bu\013ers)f
(are)g(deallo)q(cated)h(only)g(after)e(all)i(ongoing)f(comm)o(unications)75
1930 y(asso)q(ciated)e(with)h(them)f(ha)o(v)o(e)g(completed.)189
2036 y Fj(R)n(ationale.)55 b Fv(The)18 b(\\bu\013er)p 683 2036
V 16 w(free")g(op)q(eration)g(need)g(b)q(e)h(collectiv)o(e,)h(with)e
Fm(new)o(comm)12 b Fv(as)17 b(argu-)189 2093 y(men)o(t,)j(otherwise)h(it)f
(lea)o(v)o(es)g(the)h(other)e(pro)q(cesses)i(with)f(in)o(v)m(alid)j
(information)d(on)g(a)o(v)m(ailable)189 2149 y(windo)o(ws.)29
b(Since)20 b Fm(new)o(comm)12 b Fv(should)20 b(not)e(b)q(e)h(used)f(after)g
(a)g(bu\013er)g(is)h(freed,)g(it)f(is)h(logical)h(to)189 2206
y(asso)q(ciate)14 b(the)g(\\bu\013er)p 597 2206 V 16 w(free")f(op)q(eration)h
(with)h(the)f(destruction)g(of)g(the)g(comm)o(unicator.)19
b(\()p Fj(End)189 2262 y(of)d(r)n(ationale.)p Fv(\))75 2405
y Fs(4.3)59 b(Put)20 b(and)g(Get)f(Calls)75 2507 y Fv(The)c(execution)g(of)f
(a)g(put)h(op)q(eration)g(is)g(similar)g(to)f(the)h(execution)g(of)f(a)g
(send)i(b)o(y)e(the)h(origin)g(pro)q(cess)75 2563 y(and)f(a)g(matc)o(hing)g
(receiv)o(e)h(b)o(y)g(the)f(target)f(pro)q(cess.)19 b(The)c(ob)o(vious)f
(di\013erence)i(is)e(that)g(all)h(parameters)75 2620 y(are)g(pro)o(vided)h(b)
o(y)f(one)g(call)i({)e(the)g(call)h(executed)g(b)o(y)f(the)h(origin)g(pro)q
(cess.)1967 46 y Fl(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959
554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780
y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 5 5
bop 75 -100 a Fn(4.3.)34 b(PUT)15 b(AND)g(GET)g(CALLS)1177
b Fv(5)75 49 y Fi(4.3.1)49 b(Non-blo)q(cking)19 b(and)d(Blo)q(cking)i(Standa)
o(rd)e(Puts)75 230 y Fm(MPI)p 160 230 14 2 v 16 w(IPUT\()22
b(o)o(rigin)p 426 230 V 15 w(addr,)i(o)o(rigin)p 668 230 V
16 w(count,)h(o)o(rigin)p 933 230 V 15 w(datat)o(yp)q(e,)h(ta)o(rget,)d(ta)o
(rget)p 1410 230 V 17 w(disp,)i(ta)o(rget)p 1651 230 V 16 w(count,)g(ta)o(r-)
75 286 y(get)p 137 286 V 17 w(datat)o(yp)q(e,)16 b(comm)m(,)c(o)o(rigin)p
595 286 V 15 w(request,)17 b(ta)o(rget)p 887 286 V 16 w(request\))117
363 y Fp(IN)155 b Fm(o)o(rigin)p 427 363 V 16 w(addr)381 b
Fp(address)15 b(of)f(origin)e(bu\013er)j(\(c)o(hoice\))117
438 y(IN)155 b Fm(o)o(rigin)p 427 438 V 16 w(count)360 b Fp(n)o(um)o(b)q(er)
13 b(of)h(elemen)o(ts)f(sen)o(t)i(\(in)o(teger\))117 513 y(IN)155
b Fm(o)o(rigin)p 427 513 V 16 w(datat)o(yp)q(e)302 b Fp(datat)o(yp)q(e)14
b(of)g(elemen)o(ts)f(sen)o(t)i(\(handle\))117 589 y(IN)155
b Fm(ta)o(rget)475 b Fp(rank)14 b(of)f(target)i(\(in)o(teger\))117
664 y(IN)155 b Fm(ta)o(rget)p 433 664 V 17 w(disp)384 b Fp(displacemen)o(t)20
b(from)f(start)i(of)f(windo)o(w)g(to)h(target)g(bu\013er)905
720 y(\(in)o(teger\))117 795 y(IN)155 b Fm(ta)o(rget)p 433
795 V 17 w(count)353 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(receiv)o
(ed)j(\(in)o(teger\))117 870 y(IN)155 b Fm(ta)o(rget)p 433
870 V 17 w(datat)o(yp)q(e)295 b Fp(datat)o(yp)q(e)14 b(used)h(at)f(the)g
(target)h(\(handle\))117 946 y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11
b(used)k(for)f(comm)o(unicati)o(on)d(\(handle\))117 1021 y(OUT)108
b Fm(o)o(rigin)p 427 1021 V 16 w(request)330 b Fp(request)16
b(at)d(origin)g(pro)q(cess)j(\(handle\))117 1096 y(IN)155 b
Fm(ta)o(rget)p 433 1096 V 17 w(request)323 b Fp(index)14 b(of)f(request)j(at)
e(target)g(pro)q(cess)i(\(in)o(teger\))75 1220 y Fr(int)47
b(MPI)p 269 1220 15 2 v 17 w(Iput\()23 b(void)h(*origin)p 717
1220 V 16 w(addr,)f(int)g(origin)p 1115 1220 V 17 w(count,)g(MPI)p
1371 1220 V 17 w(Datatype)393 1277 y(origin)p 540 1277 V 17
w(datatype,)f(int)i(target,)f(int)g(target)p 1321 1277 V 16
w(disp,)h(int)393 1333 y(target)p 540 1333 V 17 w(count,)f(MPI)p
796 1333 V 16 w(Datatype)g(target)p 1171 1333 V 16 w(datatype,)g(MPI)p
1498 1333 V 17 w(Comm)g(comm,)393 1390 y(MPI)p 468 1390 V 17
w(Request)g(*origin)p 844 1390 V 16 w(request,)g(int)g(target)p
1314 1390 V 17 w(request\))75 1476 y(MPI)p 150 1476 V 17 w(IPUT\()g(ORIGIN)p
454 1476 V 16 w(ADDR,)g(ORIGIN)p 757 1476 V 17 w(COUNT,)g(ORIGIN)p
1085 1476 V 16 w(DATATYPE,)g(TARGET,)g(TARGET)p 1675 1476 V
16 w(DISP,)393 1533 y(TARGET)p 540 1533 V 17 w(COUNT,)g(TARGET)p
868 1533 V 16 w(DATATYPE,)g(COMM,)g(ORIGIN)p 1410 1533 V 16
w(REQUEST,)393 1589 y(TARGET)p 540 1589 V 17 w(REQUEST,)f(IERROR\))170
1646 y(<type>)h(ORIGIN)p 484 1646 V 17 w(ADDR\(*\))170 1702
y(INTEGER)g(ORIGIN)p 508 1702 V 17 w(COUNT,)g(ORIGIN)p 836
1702 V 16 w(DATATYPE,)g(TARGET,)g(TARGET)p 1426 1702 V 16 w(DISP,)170
1758 y(TARGET)p 317 1758 V 17 w(COUNT,)g(TARGET)p 645 1758
V 16 w(DATATYPE,)g(COMM,)g(ORIGIN)p 1187 1758 V 16 w(REQUEST,)g(TARGET)p
1562 1758 V 17 w(REQUEST,)170 1815 y(IERROR)166 1901 y Fv(T)l(ransfers)d
Fm(o)o(rigin)p 478 1901 14 2 v 16 w(count)i Fv(successiv)o(e)g(en)o(tries)f
(of)g(the)g(t)o(yp)q(e)g(sp)q(eci\014ed)i(b)o(y)d(the)h Fm(o)o(rigin)p
1685 1901 V 16 w(datat)o(yp)q(e)p Fv(,)75 1958 y(starting)13
b(at)h(address)g Fm(o)o(rigin)p 568 1958 V 15 w(addr)g Fv(on)g(the)g(origin)h
(no)q(de)f(to)g(the)g(target)f(no)q(de)h(sp)q(eci\014ed)i(b)o(y)e(the)g
Fm(comm)m Fv(,)75 2014 y Fm(rank)22 b Fv(pair.)39 b(Let)22
b Fm(windo)o(w)p 542 2014 V 17 w(base)h Fv(b)q(e)f(the)g(b)q(ottom)f(address)
g(of)h(the)f(comm)o(unication)i(windo)o(w,)g(and)75 2071 y(let)17
b Fm(windo)o(w)p 286 2071 V 17 w(t)o(yp)q(e)h Fv(b)q(e)f(the)g(windo)o(w)g(t)
o(yp)q(e)f(sp)q(eci\014ed)j(at)d(windo)o(w)h(initialization,)j(or)c
Fk(MPI)p 1634 2071 13 2 v 14 w(BYTE)p Fv(,)g(if)h(no)75 2127
y(t)o(yp)q(e)11 b(w)o(as)g(sp)q(eci\014ed.)21 b(If)11 b Fr(window)p
645 2127 15 2 v 16 w(base)24 b Fg(6)p Fv(=)g Fr(MPI)p 912 2127
V 17 w(BOTTOM)p Fv(,)10 b(then)h(the)h(data)e(are)h(written)h(in)o(to)f(the)g
(target)75 2184 y(bu\013er)h(at)f(address)h Fm(windo)o(w)p
557 2184 14 2 v 16 w(base)h(+)f(ta)o(rget)p 827 2184 V 16 w(disp)p
Fg(\002)p Fm(extent)q(\(windo)o(w)p 1228 2184 V 19 w(t)o(yp)q(e\))g
Fv(sp)q(eci\014ed)i(b)o(y)e(the)g(argumen)o(ts)75 2240 y Fm(ta)o(rget)p
190 2240 V 16 w(count)23 b Fv(and)e Fm(ta)o(rget)p 540 2240
V 17 w(datat)o(yp)q(e)p Fv(.)39 b(If)22 b Fr(window)p 968 2240
15 2 v 16 w(base)i Fv(=)g Fr(MPI)p 1235 2240 V 17 w(BOTTOM)p
Fv(,)c(then)h Fm(ta)o(rget)p 1650 2240 14 2 v 17 w(disp)h Fv(is)g(the)75
2297 y(absolute)15 b(address)f(of)f(the)i(target)e(bu\013er)h(\(i.e.,)f
(displacemen)o(ts)j(are)e(in)h(b)o(ytes,)f(rather)f(than)h(m)o(ultiples)75
2353 y(of)h(the)g(windo)o(w)g(t)o(yp)q(e)h(exten)o(t\).)166
2409 y(The)j(outcome)g(is)h(as)e(if)i(the)f(origin)h(pro)q(cess)f(executed)h
(a)f(non)o(blo)q(c)o(king)i(send)e(op)q(eration)h(with)75 2466
y(argumen)o(ts)j Fm(o)o(rigin)p 414 2466 V 15 w(addr,)i(o)o(rigin)p
657 2466 V 16 w(count,)h(o)o(rigin)p 923 2466 V 15 w(datat)o(yp)q(e,)h(ta)o
(rget,)e(tag,)g(comm)m(,)d(request)p Fv(,)27 b(and)d(the)75
2522 y(target)17 b(pro)q(cess)i(executed)g(a)f(receiv)o(e)i(op)q(eration)e
(with)h(argumen)o(ts)f Fm(ta)o(rget)p 1412 2522 V 16 w(addr,)h(ta)o(rget)p
1656 2522 V 16 w(count,)h(ta)o(r-)75 2579 y(get)p 137 2579
V 17 w(datat)o(yp)q(e,)c(source,)e(tag,)h(comm)m Fv(,)c(where)k
Fm(ta)o(rget)p 966 2579 V 16 w(addr)g Fv(is)g(the)g(target)e(bu\013er)i
(address)f(computed)h(as)75 2635 y(explained)i(ab)q(o)o(v)o(e.)j(The)15
b(message)g(sen)o(t)g(should)h(\014t,)f(without)g(truncation,)g(in)h(the)f
(target)f(bu\013er.)-32 46 y Fl(1)-32 103 y(2)-32 159 y(3)-32
215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40
780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40
1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796
y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304
y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 6 6
bop 75 -100 a Fv(6)746 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)l
(TIONS)166 49 y Fv(The)j Fm(o)o(rigin)p 371 49 14 2 v 15 w(request)i
Fv(argumen)o(t)d(is)h(a)f(handle)j(to)d(a)g(lo)q(cal)i(request)f(ob)s(ject.)
27 b(The)18 b Fm(ta)o(rget)p 1725 49 V 16 w(request)75 106
y Fv(argumen)o(t)d(is)h(an)g(index)h(in)o(to)f(the)g(arra)o(y)e(of)i
(requests)g(that)f(the)h(target)e(pro)q(cess)i(created)g(b)o(y)g(the)g(call)
75 162 y(to)e Fm(MPI)p 215 162 V 16 w(RMC)p 329 162 V 16 w(INIT)p
Fv(.)g(The)g(caller)i(ma)o(y)d(sp)q(ecify)j(that)e(no)g(up)q(date)h(of)f(a)g
(target)g(request)g(ob)s(ject)g(should)75 219 y(o)q(ccur)i(b)o(y)f(sp)q
(ecifying)i Fm(ta)o(rget)p 587 219 V 16 w(request)g(=)e(MPI)p
887 219 V 16 w(UNDEFINED)p Fv(.)166 275 y(The)g(comm)o(unication)g(op)q
(eration)g(completes)h(at)e(the)h(origin)g(after)f(the)h(data)f(ha)o(v)o(e)h
(b)q(een)h(copied)75 332 y(out)g(of)g(the)h(origin)g(bu\013er,)g(p)q(ossibly)
h(b)q(efore)f(the)f(data)g(has)h(b)q(een)g(copied)h(in)o(to)f(the)f(target)g
(memory)l(.)75 388 y(The)f(target)f(request)i(is)f(up)q(dated)h(after)f(data)
f(ha)o(v)o(e)h(b)q(een)h(copied)h(in)o(to)e(the)g(target)f(memory)l(.)166
444 y(The)f(origin)g(pro)q(cess)g(ma)o(y)f(test)g(or)g(w)o(ait)g(for)g(the)h
(comm)o(unication)g(op)q(eration)g(to)f(complete)h(using)75
501 y(MPI)h(test)g(and)h(w)o(ait)f(constructs.)19 b(The)c(seman)o(tics)f(of)h
(target)e(requests)h(is)h(explained)i(in)e(Section)g(4.5.)166
557 y(The)k(completion)h(of)e(the)h(RMC)g(request)g(do)q(es)g(not)f(dep)q
(end)j(nor)d(in)o(terfere)i(in)f(an)o(y)g(w)o(a)o(y)f(with)75
614 y(other)d(concurren)o(tly)h(activ)o(e)f(MPI)g(comm)o(unications)h(b)q(et)
o(w)o(een)g(the)f(origin)h(and)f(target.)166 670 y(The)g(function)h(returns)f
(an)h(error)e(co)q(de)i(as)f(in)h(MPI.)166 727 y(If)21 b(the)h(windo)o(w)f
(is)h(t)o(yp)q(ed,)h(then)f(the)f(target)f(bu\013er)h(should)i(b)q(e)f(t)o
(yp)q(e-compatible)g(with)g(the)75 783 y(windo)o(w.)28 b(If)18
b(th)g(windo)o(w)g(w)o(as)f(initialized)k(with)d Fm(t)o(yp)q(e)h(=)f(MPI)p
1188 783 V 16 w(D)o(A)l(T)l(A)l(TYPE)p 1432 783 V 17 w(NULL)p
Fv(,)f(then)h(there)g(are)75 840 y(no)d(t)o(yp)q(e)g(constrain)o(ts)g(on)g
(the)h(target)d(bu\013er.)166 972 y Fq(Discussion:)34 b Fp(There)15
b(are)f(t)o(w)o(o)g(c)o(hoices)g(to)g(b)q(e)h(made)d(on)i(the)g(meaning)e(of)
i(the)g Fk(ta)o(rget)p 1577 972 13 2 v 15 w(disp)h Fp(argumen)o(t:)75
1022 y(\(1\))d(Whether)h(displacemen)o(t)f(to)g(target)g(bu\013er)h(is)f
(coun)o(ted)h(in)f(b)o(ytes)h(or)f(in)g(m)o(ultiples)e(of)h(windo)o(w)h(t)o
(yp)q(e)g(exten)o(t.)75 1072 y(\(2\))i(Whether)h(displacemen)o(t)e(is)h
(relativ)o(e,)f(from)f(windo)o(w)h(start,)h(or)g(absolute.)166
1122 y(Coun)o(ting)f(in)g(m)o(ultiples)f(of)i(t)o(yp)q(e)g(exten)o(t)h(mak)o
(es)e(little)g(sense)i(for)f(an)g(absolute)f(address.)166 1171
y(If)k(b)o(yte)h(displacemen)o(t)f(is)g(used,)i(it)e(is)g(probably)g(easier)i
(to)e(use)h(an)g(absolute)f(address,)i(rather)g(than)e(a)75
1221 y(relativ)o(e)d(address.)166 1271 y(Therefore,)k(the)f(c)o(hoice)g(w)o
(e)g(made)e(\(displacemen)o(t)h(is)h(alw)o(a)o(ys)e(relativ)o(e)h(and)h(b)o
(yte)g(coun)o(t)g(is)f(used)h(when)75 1321 y(windo)o(w)12 b(start)i(is)e
Fk(MPI)p 441 1321 V 15 w(BOTTOM)p Fp(\))g(rules)i(out)e(only)g(one)i(in)o
(teresting)f(option:)k(the)c(usage)g(of)g(absolute)g(address)75
1371 y(\(or)h(b)o(yte)h(displacemen)o(t\))f(for)f(a)h(t)o(yp)q(ed)h(windo)o
(w)e(that)i(do)q(es)g(not)f(start)h(at)f Fk(MPI)p 1353 1371
V 14 w(BOTTOM)p Fp(.)f(This)h(is)g(useful,)g(in)75 1420 y(the)i(previously)f
(discussed)i(case)g(of)e(a)g(link)o(ed)g(list)g(on)g(heap.)23
b(Th)o(us,)16 b(w)o(e)f(do)g(not)h(co)o(v)o(er)g(the)g(case)g(of)f(a)g
(system)75 1470 y(where)21 b(put/get)e(can)h(access)h(only)e(\\sp)q(ecial)g
(memory",)f(and)h(this)g(sp)q(ecial)h(memory)d(is)i(used)i(for)e(dynamic)75
1520 y(memory)12 b(allo)q(cation.)20 b(If)15 b(w)o(e)g(wish)g(to)g(co)o(v)o
(er)g(this)g(case,)h(then)f(w)o(e)h(need)g(to)e(add)h(one)g(additional)f
(argumen)o(t)f(in)75 1570 y Fk(MPI)p 152 1570 V 14 w(RMC)p
256 1570 V 15 w(INIT)p Fp(,)g(to)h(sp)q(ecify)g(ho)o(w)g(displacemen)o(ts)f
(are)h(computed.)166 1620 y(Since)i(addresses)h(are)f(going)e(to)i(b)q(e)g
(comm)o(unicated)d(across)j(mac)o(hines,)f(w)o(e)g(need)i(a)e(new)h(t)o(yp)q
(e)g(whic)o(h)f(is)75 1669 y(\\in)o(teger)d(big)f(enough)g(to)h(store)g
(addresses)i(of)d(an)o(y)g(mac)o(hine",)f(i.e.,)h(for)g(all)f(practical)i
(purp)q(oses,)h(64)e(bit)g(in)o(teger.)75 1719 y(W)m(e)j(also)h(need)h(this)e
(in)h(F)m(ortran)g(\(MPI1)g(also)f(needs)i(64)e(in)o(tegers\).)22
b(W)m(e)15 b(shall)f(pro)o(visionally)e(assumes)j(this)g(is)75
1769 y(the)f(meaning)f(of)g Fk(MPI)p 437 1769 V 14 w(Aint)p
Fp(.)166 1826 y(Is)18 b(a)f(handle)h(to)g(an)f(ob)r(ject)i(on)e(the)i(target)
f(pro)q(cess)i(that)d(is)h(mo)q(di\014ed)e(b)o(y)i(the)g(call)f(and)h(IN)g
(or)g(OUT)75 1882 y(argumen)o(t?)189 2071 y Fj(R)n(ationale.)63
b Fv(A)19 b(target)f(request)h(is)h(pro)o(vided)g(in)g(the)f(put)g(call)h(so)
f(as)g(to)f(allo)o(w)h(data)g(to)f(b)q(e)189 2127 y(scattered)e(\(put\))g(or)
g(gathered)g(\(get\))f(in)i(the)g(remote)f(memory)l(,)g(without)g(in)o(v)o
(olv)o(emen)o(t)h(of)f(the)189 2184 y(remote)f(pro)q(cess;)h(see)g(example)g
(in)h(Section)f(4.3.3.)k(In)d(the)f(general)g(case,)f(this)h(implies)i(that)d
(a)189 2240 y(put)g(call)i(requires)g(the)e(transfer)g(of)g(a)h(datat)o(yp)q
(e)f(descriptor)h(to)f(the)h(target)e(pro)q(cess,)i(together)189
2297 y(with)e(the)g(data,)g(and)g(its)g(in)o(terpretation)g(b)o(y)g(an)g
(agen)o(t)g(at)f(the)h(target)f(pro)q(cess)i(who)f(stores)f(the)189
2353 y(data.)25 b(\(If)17 b(the)g(windo)o(w)h(is)g(t)o(yp)q(ed,)f(then)h(one)
f(only)h(need)g(transfer)e(the)i(data)e(la)o(y)o(out,)h(not)g(the)189
2410 y(t)o(yp)q(e)f(signature.\))23 b(In)17 b(the)f(simple)i(cases)e(\(con)o
(tiguous)g(target)f(bu\013er\),)h(it)g(should)h(b)q(e)g(p)q(ossible)189
2466 y(to)12 b(transfer)f(only)j(a)e(coun)o(t,)g(and,)h(in)h(a)e(homogeneous)
h(system)f(with)h(h/w)f(supp)q(ort)h(for)f(put/get,)189 2523
y(or)17 b(with)h(a)f(comm)o(unication)h(copro)q(cessor,)g(suc)o(h)g(op)q
(eration)g(could)g(b)q(e)h(executed)f(directly)h(b)o(y)189
2579 y(hardw)o(are)h(or)h(copro)q(cessor.)39 b(The)22 b(o)o(v)o(erhead)f(for)
g(the)g(general)h(case)g(can)g(b)q(e)g(alleviated)h(b)o(y)189
2636 y(ha)o(ving)14 b(globally)h(de\014ned)g(datat)o(yp)q(es)f(\(see)g
(Section)h(4.9\),)d(so)i(that)f(one)h(can)g(transfer)f(a)h(concise)189
2692 y(datat)o(yp)q(e)d(de\014nition.)20 b(This)13 b(is)f(useful)h(in)f
(those)g(cases)f(where)h(there)g(is)g(m)o(uc)o(h)g(reuse)g(of)f(the)h(same)
1967 46 y Fl(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959
554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780
y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 7 7
bop 75 -100 a Fn(4.3.)34 b(PUT)15 b(AND)g(GET)g(CALLS)1177
b Fv(7)189 49 y(deriv)o(ed)20 b(datat)o(yp)q(e)e(in)i(RMC)f(op)q(erations)g
(\(e\013ectiv)o(ely)l(,)h(pro)o(viding)g(for)e(cac)o(hing)i(of)e(datat)o(yp)q
(e)189 106 y(information)d(on)g(the)g(target)f(pro)q(cess\).)20
b(\()p Fj(End)c(of)g(r)n(ationale.)p Fv(\))75 306 y Fm(MPI)p
160 306 14 2 v 16 w(PUT\()24 b(o)o(rigin)p 415 306 V 15 w(addr,)i(o)o(rigin)p
659 306 V 15 w(count,)h(o)o(rigin)p 925 306 V 16 w(datat)o(yp)q(e,)g(ta)o
(rget,)f(ta)o(rget)p 1407 306 V 16 w(disp,)h(ta)o(rget)p 1649
306 V 16 w(count,)g(ta)o(r-)75 363 y(get)p 137 363 V 17 w(datat)o(yp)q(e,)16
b(comm)m(,)c(ta)o(rget)p 601 363 V 16 w(request\))117 440 y
Fp(IN)155 b Fm(o)o(rigin)p 427 440 V 16 w(addr)381 b Fp(address)15
b(of)f(origin)e(bu\013er)j(\(c)o(hoice\))117 515 y(IN)155 b
Fm(o)o(rigin)p 427 515 V 16 w(count)360 b Fp(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(sen)o(t)i(\(in)o(teger\))117 590 y(IN)155
b Fm(o)o(rigin)p 427 590 V 16 w(datat)o(yp)q(e)302 b Fp(datat)o(yp)q(e)14
b(of)g(elemen)o(ts)f(sen)o(t)i(\(handle\))117 666 y(IN)155
b Fm(ta)o(rget)475 b Fp(rank)14 b(of)f(target)i(\(in)o(teger\))117
741 y(IN)155 b Fm(ta)o(rget)p 433 741 V 17 w(disp)384 b Fp(displacemen)o(t)20
b(from)f(start)i(of)f(windo)o(w)g(to)h(target)g(bu\013er)905
797 y(\(in)o(teger\))117 872 y(IN)155 b Fm(ta)o(rget)p 433
872 V 17 w(count)353 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(receiv)o
(ed)j(\(in)o(teger\))117 947 y(IN)155 b Fm(ta)o(rget)p 433
947 V 17 w(datat)o(yp)q(e)295 b Fp(datat)o(yp)q(e)14 b(used)h(at)f(the)g
(target)h(\(handle\))117 1023 y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11
b(used)k(for)f(comm)o(unicati)o(on)d(\(handle\))117 1098 y(IN)155
b Fm(ta)o(rget)p 433 1098 V 17 w(request)323 b Fp(index)14
b(of)f(request)j(at)e(target)g(pro)q(cess)i(\(in)o(teger\))75
1222 y Fr(int)47 b(MPI)p 269 1222 15 2 v 17 w(Put\()23 b(void)h(*origin)p
693 1222 V 16 w(addr,)f(int)h(origin)p 1092 1222 V 16 w(count,)f(MPI)p
1347 1222 V 17 w(Datatype)393 1279 y(origin)p 540 1279 V 17
w(datatype,)f(int)i(target,)f(int)g(target)p 1321 1279 V 16
w(disp,)h(int)393 1335 y(target)p 540 1335 V 17 w(count,)f(MPI)p
796 1335 V 16 w(Datatype)g(target)p 1171 1335 V 16 w(datatype,)g(MPI)p
1498 1335 V 17 w(Comm)g(comm,)g(int)393 1391 y(target)p 540
1391 V 17 w(request\))75 1478 y(MPI)p 150 1478 V 17 w(PUT\()g(ORIGIN)p
430 1478 V 16 w(ADDR,)h(ORIGIN)p 734 1478 V 16 w(COUNT,)f(ORIGIN)p
1061 1478 V 16 w(DATATYPE,)g(TARGET,)g(TARGET)p 1651 1478 V
16 w(DISP,)393 1534 y(TARGET)p 540 1534 V 17 w(COUNT,)g(TARGET)p
868 1534 V 16 w(DATATYPE,)g(COMM,)g(TARGET)p 1410 1534 V 16
w(REQUEST,)g(IERROR\))170 1591 y(<type>)g(ORIGIN)p 484 1591
V 17 w(ADDR\(*\))170 1647 y(INTEGER)g(ORIGIN)p 508 1647 V 17
w(COUNT,)g(ORIGIN)p 836 1647 V 16 w(DATATYPE,)g(TARGET,)g(TARGET)p
1426 1647 V 16 w(DISP,)170 1704 y(TARGET)p 317 1704 V 17 w(COUNT,)g(TARGET)p
645 1704 V 16 w(DATATYPE,)g(COMM,)g(ORIGIN)p 1187 1704 V 16
w(REQUEST,)g(TARGET)p 1562 1704 V 17 w(REQUEST,)170 1760 y(IERROR)166
1847 y Fv(This)16 b(is)f(the)g(blo)q(c)o(king)i(v)o(ersion)e(of)f(put.)20
b(It)15 b(is)h(iden)o(tical)h(to)d Fm(MPI)p 1298 1847 14 2
v 16 w(IPUT)p Fv(,)g(except)i(that)e(it)h(has)g(not)75 1903
y Fm(o)o(rigin)p 184 1903 V 15 w(request)i Fv(argumen)o(t.)-32
46 y Fl(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 8 8
bop 75 -100 a Fv(8)746 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)l
(TIONS)75 49 y Fi(4.3.2)49 b(Non-blo)q(cking)19 b(and)d(Blo)q(cking)i(Get)75
230 y Fm(MPI)p 160 230 14 2 v 16 w(IGET\()k(o)o(rigin)p 423
230 V 16 w(addr,)i(o)o(rigin)p 666 230 V 16 w(count,)h(o)o(rigin)p
931 230 V 15 w(datat)o(yp)q(e,)h(ta)o(rget,)f(ta)o(rget)p 1410
230 V 16 w(disp,)g(ta)o(rget)p 1650 230 V 17 w(count,)g(ta)o(r-)75
286 y(get)p 137 286 V 17 w(datat)o(yp)q(e,)16 b(comm)m(,)c(o)o(rigin)p
595 286 V 15 w(request,)17 b(ta)o(rget)p 887 286 V 16 w(request\))117
363 y Fp(IN)155 b Fm(o)o(rigin)p 427 363 V 16 w(addr)381 b
Fp(address)15 b(of)f(origin)e(bu\013er)j(\(c)o(hoice\))117
438 y(IN)155 b Fm(o)o(rigin)p 427 438 V 16 w(count)360 b Fp(n)o(um)o(b)q(er)
13 b(of)h(elemen)o(ts)f(receiv)o(ed)j(\(in)o(teger\))117 513
y(IN)155 b Fm(o)o(rigin)p 427 513 V 16 w(datat)o(yp)q(e)302
b Fp(datat)o(yp)q(e)14 b(of)g(elemen)o(ts)f(receiv)o(ed)j(\(handle\))117
589 y(IN)155 b Fm(ta)o(rget)475 b Fp(rank)14 b(of)f(target)i(\(in)o(teger\))
117 664 y(IN)155 b Fm(ta)o(rget)p 433 664 V 17 w(disp)384 b
Fp(displacemen)o(t)16 b(from)e(windo)o(w)i(start)g(to)h(target)f(bu\013er)h
(\(in-)905 720 y(teger\))117 795 y(IN)155 b Fm(ta)o(rget)p
433 795 V 17 w(count)353 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(sen)o
(t)i(\(in)o(teger\))117 870 y(IN)155 b Fm(ta)o(rget)p 433 870
V 17 w(datat)o(yp)q(e)295 b Fp(datat)o(yp)q(e)14 b(used)h(at)f(the)g(target)h
(\(handle\))117 946 y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11
b(used)k(for)f(comm)o(unicati)o(on)d(\(handle\))117 1021 y(OUT)108
b Fm(request)452 b Fp(request)16 b(at)d(origin)g(pro)q(cess)j(\(handle\))117
1096 y(IN)155 b Fm(ta)o(rget)p 433 1096 V 17 w(request)323
b Fp(index)14 b(of)f(target)i(request)g(\(in)o(teger\))75 1220
y Fr(int)47 b(MPI)p 269 1220 15 2 v 17 w(Iget\()23 b(void)h(*origin)p
717 1220 V 16 w(addr,)f(int)g(origin)p 1115 1220 V 17 w(count,)g(MPI)p
1371 1220 V 17 w(Datatype)393 1277 y(origin)p 540 1277 V 17
w(datatype,)f(int)i(target,)f(integer)f(target)p 1416 1277
V 17 w(disp,)h(int)393 1333 y(target)p 540 1333 V 17 w(count,)g(MPI)p
796 1333 V 16 w(Datatype)g(target)p 1171 1333 V 16 w(datatype,)g(MPI)p
1498 1333 V 17 w(Comm)g(comm,)393 1390 y(MPI)p 468 1390 V 17
w(Request)g(*origin)p 844 1390 V 16 w(request,)g(int)g(target)p
1314 1390 V 17 w(request\))75 1476 y(MPI)p 150 1476 V 17 w(Iget\()g(ORIGIN)p
454 1476 V 16 w(ADDR,)g(ORIGIN)p 757 1476 V 17 w(COUNT,)g(ORIGIN)p
1085 1476 V 16 w(DATATYPE,)g(TARGET,)g(TARGET)p 1675 1476 V
16 w(DISP,)393 1533 y(TARGET)p 540 1533 V 17 w(COUNT,)g(TARGET)p
868 1533 V 16 w(DATATYPE,)g(COMM,)g(ORIGIN)p 1410 1533 V 16
w(REQUEST,)393 1589 y(TARGET)p 540 1589 V 17 w(REQUEST,)f(IERROR\))170
1646 y(<type>)h(ORIGIN)p 484 1646 V 17 w(ADDR\(*\))170 1702
y(INTEGER)g(ORIGIN)p 508 1702 V 17 w(COUNT,)g(ORIGIN)p 836
1702 V 16 w(DATATYPE,)g(TARGET,)g(TARGET)p 1426 1702 V 16 w(DISP,)170
1758 y(TARGET)p 317 1758 V 17 w(COUNT,)g(TARGET)p 645 1758
V 16 w(DATATYPE,)g(COMM,)g(ORIGIN)p 1187 1758 V 16 w(REQUEST,)g(TARGET)p
1562 1758 V 17 w(REQUEST,)170 1815 y(IERROR)166 1901 y Fv(Similar)18
b(to)e Fm(MPI)p 466 1901 14 2 v 16 w(IPUT)p Fv(,)g(except)h(that)f(the)g
(direction)i(of)e(data)g(transfer)g(is)h(rev)o(ersed.)24 b(Data)15
b(are)75 1958 y(copied)g(from)f(the)g(target)f(no)q(de)i(to)e(the)i(origin.)
20 b(The)14 b Fm(ta)o(rget)p 1126 1958 V 16 w(request)i Fv(completes)f(after)
f(the)g(data)f(ha)o(v)o(e)75 2014 y(b)q(een)k(copied)g(out)f(of)f(the)h
(memory)f(at)h(the)g(target)e(no)q(de.)23 b(The)16 b Fm(o)o(rigin)p
1317 2014 V 15 w(request)i Fv(completes)e(when)h(the)75 2071
y(data)e(ha)o(v)o(e)f(arriv)o(ed)i(at)e(the)h(origin.)1967
46 y Fl(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 9 9
bop 75 -100 a Fn(4.3.)29 b(PUT)15 b(AND)g(GET)g(CALLS)1182
b Fv(9)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(GET\()24 b(o)o(rigin)p
412 49 V 15 w(addr,)j(o)o(rigin)p 657 49 V 15 w(count,)h(o)o(rigin)p
924 49 V 15 w(datat)o(yp)q(e,)g(ta)o(rget,)e(ta)o(rget)p 1406
49 V 16 w(disp,)i(ta)o(rget)p 1649 49 V 16 w(count,)f(ta)o(r-)75
106 y(get)p 137 106 V 17 w(datat)o(yp)q(e,)16 b(comm)m(,)c(ta)o(rget)p
601 106 V 16 w(request\))117 183 y Fp(IN)155 b Fm(o)o(rigin)p
427 183 V 16 w(addr)381 b Fp(address)15 b(of)f(origin)e(bu\013er)j(\(c)o
(hoice\))117 258 y(IN)155 b Fm(o)o(rigin)p 427 258 V 16 w(count)360
b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(receiv)o(ed)j(\(in)o(teger\))117
333 y(IN)155 b Fm(o)o(rigin)p 427 333 V 16 w(datat)o(yp)q(e)302
b Fp(datat)o(yp)q(e)14 b(of)g(elemen)o(ts)f(receiv)o(ed)j(\(handle\))117
408 y(IN)155 b Fm(ta)o(rget)475 b Fp(rank)14 b(of)f(target)i(\(in)o(teger\))
117 483 y(IN)155 b Fm(ta)o(rget)p 433 483 V 17 w(disp)384 b
Fp(displacemen)o(t)16 b(from)e(windo)o(w)i(start)g(to)h(target)f(bu\013er)h
(\(in-)905 540 y(teger\))117 615 y(IN)155 b Fm(ta)o(rget)p
433 615 V 17 w(count)353 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(sen)o
(t)i(\(in)o(teger\))117 690 y(IN)155 b Fm(ta)o(rget)p 433 690
V 17 w(datat)o(yp)q(e)295 b Fp(datat)o(yp)q(e)14 b(used)h(at)f(the)g(target)h
(\(handle\))117 765 y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11
b(used)k(for)f(comm)o(unicati)o(on)d(\(handle\))117 840 y(IN)155
b Fm(ta)o(rget)p 433 840 V 17 w(request)323 b Fp(index)14 b(of)f(target)i
(request)g(\(in)o(teger\))75 965 y Fr(int)47 b(MPI)p 269 965
15 2 v 17 w(Iget\()23 b(void)h(*origin)p 717 965 V 16 w(addr,)f(int)g(origin)
p 1115 965 V 17 w(count,)g(MPI)p 1371 965 V 17 w(Datatype)393
1021 y(origin)p 540 1021 V 17 w(datatype,)f(int)i(target,)f(int)g(target)p
1321 1021 V 16 w(disp,)h(int)393 1078 y(target)p 540 1078 V
17 w(count,)f(MPI)p 796 1078 V 16 w(Datatype)g(target)p 1171
1078 V 16 w(datatype,)g(MPI)p 1498 1078 V 17 w(Comm)g(comm,)g(int)393
1134 y(target)p 540 1134 V 17 w(request\))75 1221 y(MPI)p 150
1221 V 17 w(IGET\()g(ORIGIN)p 454 1221 V 16 w(ADDR,)g(ORIGIN)p
757 1221 V 17 w(COUNT,)g(ORIGIN)p 1085 1221 V 16 w(DATATYPE,)g(TARGET,)g
(TARGET)p 1675 1221 V 16 w(DISP,)393 1277 y(TARGET)p 540 1277
V 17 w(COUNT,)g(TARGET)p 868 1277 V 16 w(DATATYPE,)g(COMM,)g(TARGET)p
1410 1277 V 16 w(REQUEST,)g(IERROR\))170 1334 y(<type>)g(ORIGIN)p
484 1334 V 17 w(ADDR\(*\))170 1390 y(INTEGER)g(ORIGIN)p 508
1390 V 17 w(COUNT,)g(ORIGIN)p 836 1390 V 16 w(DATATYPE,)g(TARGET,)g(TARGET)p
1426 1390 V 16 w(DISP,)170 1447 y(TARGET)p 317 1447 V 17 w(COUNT,)g(TARGET)p
645 1447 V 16 w(DATATYPE,)g(COMM,)g(TARGET)p 1187 1447 V 16
w(REQUEST,)g(IERROR)166 1533 y Fv(This)16 b(is)f(the)h(blo)q(c)o(king)g(v)o
(ersion)g(of)e Fm(MPI)p 865 1533 14 2 v 16 w(ISGET)p Fv(.)75
1655 y Fi(4.3.3)49 b(Example)75 1741 y Fm(Example)13 b(1:)75
1826 y Fv(W)l(e)k(sho)o(w)f(ho)o(w)h(to)f(implemen)o(t)i(the)f(generic)h
(indirect)g(assignmen)o(t)f Fr(A)24 b(=)f(B\(map\))p Fv(,)16
b(where)i Fr(A,)23 b(B)17 b Fv(and)75 1883 y Fr(map)e Fv(ha)o(v)o(e)g(the)h
(same)f(distribution,)i(and)e Fr(map)g Fv(is)h(a)f(p)q(erm)o(utation.)21
b(T)l(o)15 b(simplify)l(,)j(w)o(e)d(assume)g(a)g(blo)q(c)o(k)75
1939 y(distribution)i(with)e(equal)h(size)g(blo)q(c)o(ks.)75
2046 y Fr(SUBROUTINE)22 b(MAP\()i(A,)f(B,)h(map,)f(m,)h(comm,)f(p\))75
2102 y(INTEGER)g(m,)g(map\(m\),)g(comm,)h(p)75 2158 y(REAL)f(A\(m\),)g
(B\(m\))75 2271 y(INTEGER)g(odisps\(p\),)f(ocounts\(p\),)266
2328 y(otypes\(p\),)g(oindex\(m\),)94 b(!)24 b(used)g(to)f(construct)g
(origin)g(datatypes)266 2384 y(tdisps\(p\),)f(tcounts\(p\),)266
2441 y(tytpes\(p\),)g(tindex\(m\),)94 b(!)24 b(used)g(to)f(construct)g
(target)g(datatypes)266 2497 y(count\(p\),)g(blen\(m\),)f(total\(p\))75
2610 y(!)i(This)f(part)g(does)h(the)f(work)g(that)h(depends)f(on)g(the)h
(locations)e(of)i(B.)75 2667 y(!)g(Can)f(be)h(reused)f(while)g(this)g(does)h
(not)f(change)-32 46 y Fl(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498
y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40
780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40
1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796
y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304
y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 10 10
bop 75 -100 a Fv(10)728 b Fn(CHAPTER)15 b(4.)30 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 106 y Fr(DO)24 b(i=1,m)147 162 y(blen\(i\))e(=)i(1)75
219 y(END)f(DO)75 332 y(DO)h(i=1,p)147 388 y(odisps\(i\))e(=)i(0)147
444 y(tdisps\(i\))e(=)i(0)147 501 y(ocounts\(i\))e(=)i(1)147
557 y(tcounts\(i\))e(=)i(1)75 614 y(END)f(DO)75 727 y(CALL)g
(MPI_RMC_INIT\(B,)f(m,)i(MPI_REAL,)e(0,)i(0,)g(comm,)f(getcomm,)f(ierr\))75
840 y(!)i(This)f(part)g(does)h(the)f(work)g(that)h(depends)f(on)g(the)h
(value)f(of)g(map)h(and)75 896 y(!)g(the)f(locations)g(of)g(the)h(arrays.)75
953 y(!)g(Can)f(be)h(reused)f(while)g(these)g(do)h(not)f(change)75
1065 y(!)h(Compute)f(number)g(of)g(elements)g(to)h(be)f(received)g(from)g
(each)h(process)75 1122 y(DO)g(i=1,p)147 1178 y(count\(i\))e(=)i(0)75
1235 y(END)f(DO)75 1348 y(DO)h(i=1,m)147 1404 y(j)f(=)h(map\(i\)/m)147
1461 y(count\(j\))e(=)i(count\(j\)+1)75 1517 y(END)f(DO)75
1630 y(total\(1\))g(=)g(1)75 1686 y(DO)h(i=2,p)147 1743 y(total\(i\))e(=)i
(total\(i-1\))f(+)g(count\(i-1\))75 1856 y(DO)h(i=1,p)147 1912
y(count\(i\))e(=)i(0)75 1969 y(EN)g(DO)75 2082 y(!)g(compute)f(origin)g(and)g
(target)g(indices)g(of)h(elements)75 2138 y(!)g(received)e(from)i(each)f
(process)75 2195 y(DO)h(i=1,m)147 2251 y(j)f(=)h(map\(i\)/m)147
2307 y(k)f(=)h(MOD\(map\(i\),m\))147 2364 y(count\(j\))e(=)i(count\(j\)+1)147
2420 y(oindex\(total\(j\))d(+)j(count\(j\)\))f(=)g(i)147 2477
y(tindex\(total\(j\))e(+)j(count\(j\)\))f(=)g(k)75 2533 y(END)g(DO)75
2646 y(!)h(create)f(origin)g(and)g(target)g(datatypes)g(for)g(each)h(get)f
(operation)75 2703 y(DO)h(i=1,p)1967 46 y Fl(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 11 11
bop 75 -100 a Fn(4.3.)29 b(PUT)15 b(AND)g(GET)g(CALLS)1160
b Fv(11)147 49 y Fr(CALL)23 b(MPI_TYPE_INDEXED\(count\(i\))o(,)e(blen,)i
(oindex\(total\(i\),)743 106 y(MPI_REAL,)g(otype\(i\),)f(ierr\))147
162 y(CALL)h(MPI_TYPE_COMMIT\(otype\(i\),)d(ierr\))147 219
y(CALL)j(MPI_TYPE_INDEXED\(count\(i\))o(,)e(blen,)i(tindex\(total\(i\)\),)743
275 y(MPI_REAL,)g(ttype\(i\),)f(ierr\))147 332 y(CALL)h
(MPI_TYPE_COMMIT\(ttype\(i\),)d(ierr\))75 388 y(END)j(DO)75
501 y(!)h(this)f(part)g(does)h(the)f(assignment)g(itself)75
614 y(DO)h(i=1,p)147 670 y(CALL)f(MPI_GET)g(\(A,)g(1,)h(otype\(i\),)e(i,)i
(0,)g(tytpe\(i\),)e(comm,)910 727 y(MPI_UNDEFINED,)g(ierr\))75
783 y(END)h(DO)75 840 y(RETURN)75 960 y Fm(Example)13 b(2:)75
1045 y Fv(A)k(simpler)h(v)o(ersion)f(can)g(b)q(e)g(written,)g(that)f(do)q(es)
h(not)g(require)g(to)f(built)i(a)f(datat)o(yp)q(e)f(for)g(the)h(target)75
1102 y(bu\013er.)j(But,)15 b(then)h(one)f(needs)h(a)f(separate)g(get)f(call)j
(for)d(eac)o(h)i(elemen)o(t,)f(as)g(illustrated)i(b)q(elo)o(w.)j(This)75
1158 y(co)q(de)13 b(is)f(m)o(uc)o(h)g(simpler,)i(but)e(m)o(uc)o(h)g(less)h
(e\016cien)o(t,)g(unless)g(h/w)f(is)g(fast)g(enough)g(to)f(transfer)h
(e\016cien)o(tly)75 1215 y(single)17 b(w)o(ords.)75 1320 y
Fr(SUBROUTINE)22 b(MAP\()i(A,)f(B,)h(map,)f(m,)h(comm,)f(p\))75
1376 y(INTEGER)g(m,)g(map\(m\),)g(comm,)h(p)75 1433 y(REAL)f(A\(m\),)g
(B\(m\))75 1546 y(CALL)g(MPI_RMC_INIT\(B,)f(m,)i(MPI_REAL,)e(0,)i(0,)g(comm,)
f(getcomm,)f(ierr\))75 1659 y(DO)i(i=1,m)147 1715 y(j)f(=)h(map\(i\)/m)147
1772 y(k)f(=)h(MOD\(map\(i\),m\))147 1828 y(CALL)f(MPI_GET\(A\(i\),)f(1,)i
(MPI_REAL,)e(j,)i(k,)f(1,)h(MPI_REAL,)791 1885 y(getcomm,)f(MPI_UNDEFINED,)f
(ierr\))75 1941 y(END)h(DO)75 1997 y(RETURN)75 2117 y Fm(Example)13
b(3:)75 2203 y Fv(Here)18 b(w)o(e)g(sho)o(w)g(ho)o(w)g(to)f(get)h(a)g(link)o
(ed)h(list)g(from)f(a)g(remote)f(memory)l(.)29 b(W)l(e)18 b(assume)g(that)f
(previous)75 2260 y(comm)o(unication)e(has)e(established)j(the)e(lo)q(cation)
g(of)g(the)g(\014rst)f(no)q(de.)20 b(Eac)o(h)14 b(no)q(de)g(is)h(a)e
(structure)h(that)75 2316 y(starts)k(with)h(a)g(\014eld)i(con)o(taining)f(a)e
(p)q(oin)o(ter)i(to)f(next)g(no)q(de,)h(of)f(t)o(yp)q(e)g Fk(MPI)p
1417 2316 13 2 v 14 w(Aint)p Fv(.)32 b(The)20 b(structure)e(is)75
2373 y(describ)q(ed)f(b)o(y)e(an)g(MPI)h(datat)o(yp)q(e)e Fm(no)q(de)p
790 2373 14 2 v 18 w(t)o(yp)q(e)p Fv(.)75 2534 y Fr(/*)24 b(communicator)e
(for)h(RMC)h(*/)75 2647 y(MPI_RMC_init\()e(MPI_BOTTOM,)g(MPI_UNDEFINED,)g
(node_type,)h(0,)g(0,)h(comm,)1411 2704 y(getcomm\);)-32 46
y Fl(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 12 12
bop 75 -100 a Fv(12)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fr(...)75 162 y(/*)24 b(function)e(for)i(list)f(copying)g(*/)
75 275 y(void)g(*copylist\(MPI_Aint)f(target_head,)g(MPI_Datatype)g
(node_type,)624 332 y(int)h(target_rank,)g(MPI_Comm)f(comm\))75
444 y(void)h(*head,)g(*lptr;)75 501 y(MPI_Aint)g(tptr;)75 557
y(int)g(nodesize;)75 670 y({)75 727 y(MPI_Type_extent\(node_type,)d
(nodesize\);)75 783 y(tptr)j(=)h(target_head;)75 840 y(head)f(=)h
(malloc\(nodesize\);)75 896 y(lptr)f(=)h(head;)75 1009 y(while\(1\))f({)147
1065 y(MPI_Get\(lptr,)f(1,)h(node_type,)g(target_rank,)f(tptr,)600
1122 y(1,)i(node_type,)e(comm,)h(MPI_UNDEFINED\);)147 1178
y(tptr)g(=)h(*\(\(MPI_Aint)e(*\)lptr\);)147 1235 y(if)h(\(tptr)g(==)h(0\))g
(break;)147 1291 y(*\(\(void)e(**\)lptr\))h(=)h(malloc\(nodesize\);)147
1348 y(lptr)f(=)h(*\(\(void)f(**\)lptr\);)147 1404 y(})75 1461
y(})75 1604 y Fs(4.4)59 b(Accumulate)18 b(F)n(unctions)75 1705
y Fv(It)e(is)g(often)g(useful)g(in)h(a)e(put)h(op)q(eration)g(to)f(com)o
(bine)i(the)f(data)f(mo)o(v)o(ed)g(to)g(the)h(target)f(pro)q(cess)h(with)75
1762 y(the)f(data)f(that)g(resides)h(at)f(that)g(pro)q(cess,)h(rather)f(then)
h(replacing)h(the)f(data)f(there.)20 b(This)15 b(will)h(allo)o(w,)75
1818 y(for)f(example,)i(to)e(accum)o(ulate)i(a)e(sum,)h(b)o(y)g(ha)o(ving)g
(all)h(in)o(v)o(olv)o(ed)g(pro)q(cesses)g(add)f(their)g(con)o(tribution)75
1875 y(to)f(the)g(sum)g(v)m(ariable)i(in)f(the)f(memory)g(of)f(one)i(pro)q
(cess.)1967 46 y Fl(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959
554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780
y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 13 13
bop 75 -100 a Fn(4.4.)34 b(A)o(CCUMULA)l(TE)15 b(FUNCTIONS)1029
b Fv(13)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(A)o(CCUMULA)l(TE\(o)o(rigin)p
598 49 V 15 w(buf,)21 b(o)o(rigin)p 813 49 V 15 w(count,)g(o)o(rigin)p
1073 49 V 15 w(datat)o(yp)q(e,)g(dest,)g(ta)o(rget)p 1507 49
V 16 w(disp,)g(ta)o(rget)p 1743 49 V 16 w(count,)75 106 y(ta)o(rget)p
190 106 V 16 w(datat)o(yp)q(e,)c(op,)e(comm)m(,)d(ta)o(rget)p
728 106 V 16 w(request\))117 183 y Fp(IN)155 b Fm(buf)527 b
Fp(initial)12 b(address)j(of)f(bu\013er)g(\(c)o(hoice\))117
258 y(IN)155 b Fm(count)482 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h
(bu\013er)h(\(non)f(negativ)o(e)f(in)o(teger\))117 333 y(IN)155
b Fm(datat)o(yp)q(e)424 b Fp(data)14 b(t)o(yp)q(e)g(of)f(eac)o(h)i(bu\013er)g
(elemen)o(t)e(\(handle\))117 408 y(IN)155 b Fm(dest)511 b Fp(rank)14
b(of)f(destination)h(pro)q(cess)i(in)d(tcomm)f(\(in)o(teger\))117
483 y(IN)155 b Fm(ta)o(rget)p 433 483 V 17 w(disp)384 b Fp(displacemen)o(t)20
b(from)f(start)i(of)f(windo)o(w)g(to)h(target)g(bu\013er)905
540 y(\(in)o(teger\))117 615 y(IN)155 b Fm(ta)o(rget)p 433
615 V 17 w(count)353 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h
(target)g(bu\013er)h(\(in)o(teger\))117 690 y(IN)155 b Fm(ta)o(rget)p
433 690 V 17 w(datat)o(yp)q(e)295 b Fp(datat)o(yp)q(e)14 b(used)h(at)f
(target)g(\(handle\))117 765 y(IN)155 b Fm(op)541 b Fp(reduce)16
b(op)q(eration)e(\(handle\))117 840 y(IN)155 b Fm(comm)466
b Fp(comm)o(unicator)11 b(\(handle\))117 916 y(OUT)108 b Fm(ta)o(rget)p
433 916 V 17 w(request)323 b Fp(index)14 b(of)f(target)i(request)g(\(in)o
(teger\))75 1040 y Fr(int)23 b(MPI)p 245 1040 15 2 v 17 w(Accumulate\(void*)f
(origin)p 812 1040 V 16 w(buf,)i(int)f(origin)p 1187 1040 V
16 w(count,)393 1096 y(MPI)p 468 1096 V 17 w(Datatype)g(origin)p
844 1096 V 16 w(datatype,)g(int)g(dest,)g(int)h(target)p 1577
1096 V 16 w(disp,)393 1153 y(int)g(target)p 636 1153 V 16 w(count,)f(MPI)p
891 1153 V 17 w(Datatype)g(target)p 1267 1153 V 16 w(datatype,)g(MPI)p
1594 1153 V 16 w(Op)h(op,)393 1209 y(MPI)p 468 1209 V 17 w(Comm)f(comm,)g
(int)h(target)p 987 1209 V 16 w(request\))75 1296 y(MPI)p 150
1296 V 17 w(ACCUMULATE\(BUF,)e(COUNT,)h(DATATYPE,)f(DEST,)h(TARGET)p
1241 1296 V 17 w(DISP,)g(TARGET)p 1545 1296 V 16 w(COUNT,)393
1352 y(TARGET)p 540 1352 V 17 w(DATATYPE,)f(OP,)i(COMM,)f(TARGET)p
1178 1352 V 16 w(REQUEST,)g(IERROR\))170 1409 y(<type>)g(BUF\(*\))170
1465 y(INTEGER)g(COUNT,)g(DATATYPE,)g(DEST,)g(TARGET)p 1057
1465 V 17 w(DISP,)g(TARGET)p 1361 1465 V 16 w(DATATYPE,)g(OP,)g(COMM,)170
1522 y(TARGET)p 317 1522 V 17 w(REQUEST,)g(IERROR)-32 46 y
Fl(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328
y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 14 14
bop 75 -100 a Fv(14)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(IA)o(CCUMULA)l(TE\(o)o(rigin)p
611 49 V 15 w(buf,)j(o)o(rigin)p 823 49 V 15 w(count,)g(o)o(rigin)p
1080 49 V 16 w(datat)o(yp)q(e,)g(dest,)g(ta)o(rget)p 1509 49
V 17 w(disp,)g(ta)o(rget)p 1743 49 V 16 w(count,)75 106 y(ta)o(rget)p
190 106 V 16 w(datat)o(yp)q(e,)f(op,)e(comm)m(,)d(o)o(rigin)p
722 106 V 15 w(request,)k(ta)o(rget)p 1013 106 V 17 w(request\))117
183 y Fp(IN)155 b Fm(buf)527 b Fp(initial)12 b(address)j(of)f(bu\013er)g(\(c)
o(hoice\))117 258 y(IN)155 b Fm(count)482 b Fp(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(in)h(bu\013er)h(\(non)f(negativ)o(e)f(in)o(teger\))117
333 y(IN)155 b Fm(datat)o(yp)q(e)424 b Fp(data)14 b(t)o(yp)q(e)g(of)f(eac)o
(h)i(bu\013er)g(elemen)o(t)e(\(handle\))117 408 y(IN)155 b
Fm(dest)511 b Fp(rank)14 b(of)f(destination)h(pro)q(cess)i(in)d(tcomm)f(\(in)
o(teger\))117 483 y(IN)155 b Fm(ta)o(rget)p 433 483 V 17 w(disp)384
b Fp(displacemen)o(t)20 b(from)f(start)i(of)f(windo)o(w)g(to)h(target)g
(bu\013er)905 539 y(\(in)o(teger\))117 614 y(IN)155 b Fm(ta)o(rget)p
433 614 V 17 w(count)353 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h
(target)g(bu\013er)h(\(in)o(teger\))117 689 y(IN)155 b Fm(ta)o(rget)p
433 689 V 17 w(datat)o(yp)q(e)295 b Fp(datat)o(yp)q(e)14 b(used)h(at)f
(target)g(\(handle\))117 764 y(IN)155 b Fm(op)541 b Fp(reduce)16
b(op)q(eration)e(\(handle\))117 839 y(IN)155 b Fm(comm)466
b Fp(comm)o(unicator)11 b(\(handle\))117 914 y(OUT)108 b Fm(o)o(rigin)p
427 914 V 16 w(request)330 b Fp(request)16 b(at)d(origin)g(pro)q(cess)j
(\(handle\))117 989 y(OUT)108 b Fm(ta)o(rget)p 433 989 V 17
w(request)323 b Fp(index)14 b(of)f(target)i(request)g(\(in)o(teger\))75
1113 y Fr(int)23 b(MPI)p 245 1113 15 2 v 17 w(Iaccumulate\(void*)f(origin)p
836 1113 V 16 w(buf,)h(int)h(origin)p 1211 1113 V 16 w(count,)393
1169 y(MPI)p 468 1169 V 17 w(Datatype)f(origin)p 844 1169 V
16 w(datatype,)g(int)g(dest,)g(int)h(target)p 1577 1169 V 16
w(disp,)393 1226 y(int)g(target)p 636 1226 V 16 w(count,)f(MPI)p
891 1226 V 17 w(Datatype)g(target)p 1267 1226 V 16 w(datatype,)g(MPI)p
1594 1226 V 16 w(Op)h(op,)393 1282 y(MPI)p 468 1282 V 17 w(Comm)f(comm,)g
(MPI)p 819 1282 V 17 w(Request)g(*origin)p 1195 1282 V 16 w(request,)g(int)h
(target)p 1666 1282 V 16 w(request\))75 1369 y(MPI)p 150 1369
V 17 w(IACCUMULATE\(BUF,)d(COUNT,)i(DATATYPE,)g(DEST,)g(TARGET)p
1265 1369 V 17 w(DISP,)g(TARGET)p 1569 1369 V 16 w(COUNT,)393
1425 y(TARGET)p 540 1425 V 17 w(DATATYPE,)f(OP,)i(COMM,)f(ORIGIN)p
1178 1425 V 16 w(REQUEST,)g(TARGET)p 1553 1425 V 16 w(REQUEST,)393
1482 y(IERROR\))170 1538 y(<type>)g(BUF\(*\))170 1595 y(INTEGER)g(COUNT,)g
(DATATYPE,)g(DEST,)g(TARGET)p 1057 1595 V 17 w(DISP,)g(TARGET)p
1361 1595 V 16 w(COUNT,)170 1651 y(TARGET)p 317 1651 V 17 w(DATATYPE,)f(OP,)i
(COMM,)f(ORIGIN)p 955 1651 V 16 w(REQUEST,)g(TARGET)p 1330
1651 V 17 w(REQUEST,)f(IERROR)166 1738 y Fv(Accum)o(ulate)c(the)g(con)o(ten)o
(ts)f(of)g Fm(buf)i Fv(\(as)e(de\014ned)i(b)o(y)f Fm(buf)p
Fv(,)g Fm(count)h Fv(and)f Fm(datat)o(yp)q(e)p Fv(\))h(to)e(the)h(bu\013er)75
1794 y(sp)q(eci\014ed)h(b)o(y)d(argumen)o(ts)g Fm(ta)o(rget)p
662 1794 14 2 v 16 w(count)i Fv(and)f Fm(ta)o(rget)p 1003 1794
V 16 w(datat)o(yp)q(e)p Fv(,)h(at)e(o\013set)g Fm(ta)o(rget)p
1504 1794 V 16 w(disp)p Fv(,)i(in)f(the)g(target)75 1850 y(windo)o(w)e(sp)q
(eci\014ed)j(b)o(y)d Fm(dest)i Fv(and)e Fm(comm)m Fv(,)d(using)k(the)f(op)q
(eration)g Fm(op)p Fv(.)166 1907 y(This)22 b(is)f(lik)o(e)h
Fm(MPI)p 501 1907 V 16 w(PUT)f Fv(except)h(that)e(data)h(is)g(com)o(bined)h
(in)o(to)f(the)g(target)f(area)h(instead)g(of)75 1963 y(o)o(v)o(erwriting)14
b(it.)20 b(An)o(y)15 b(of)f(the)h(op)q(erations)g(for)f Fm(MPI)p
977 1963 V 15 w(REDUCE)i Fv(can)f(b)q(e)g(used,)g(including)i(user-de\014ned)
75 2020 y(functions.)166 2076 y(F)l(or)j(example,)i(if)g Fm(op)e
Fv(is)i Fm(MPI)p 701 2076 V 15 w(SUM)p Fv(,)f(eac)o(h)g(elemen)o(t)g(of)f
Fm(buf)i Fv(is)f(added)g(to)f(the)h(corresp)q(onding)75 2133
y(elemen)o(t)16 b(in)g(the)f(target,)f(replacing)i(the)g(former)e(v)m(alue)j
(in)f(the)f(target.)166 2189 y(The)f(op)q(eration)g Fm(op)g
Fv(applies)i(to)d(elemen)o(ts)h(of)g(the)g(t)o(yp)q(e)g(sp)q(eci\014ed)i(in)e
(the)g(windo)o(w)g(initialization.)75 2246 y(Both)h(origin)i(bu\013er)e(and)h
(the)g(target)e(bu\013er)i(should)h(b)q(e)f(comp)q(osed)g(of)f(m)o(ultiples)j
(of)d(this)h(datat)o(yp)q(e.)75 2302 y(The)f(accum)o(ulate)h(op)q(eration)f
(can)h(apply)g(only)g(to)e(a)h(t)o(yp)q(ed)h(windo)o(w.)166
2435 y Fq(Discussion:)34 b Fk(MPI)p 511 2435 13 2 v 14 w(PUT)14
b Fp(is)g(a)f(sp)q(ecial)h(case)h(of)f Fk(MPI)p 1045 2435 V
14 w(A)o(CCUMULA)m(TE)p Fp(,)d(with)j(the)g(\(asso)q(ciativ)o(e\))h(op)q
(era-)75 2484 y(tion)e Fk(MPI)p 237 2484 V 14 w(LAST)h Fp(that)f(returns)i
(the)f(second)h(argumen)o(t)d(\()p Ff(f)t Fp(\()p Ff(a;)7 b(b)p
Fp(\))12 b(=)g Ff(b)p Fp(\).)17 b(If)c(desired,)h(the)g(t)o(w)o(o)f
(functions)h(can)f(b)q(e)75 2534 y(com)o(bined.)166 2591 y(MPI)j(reduction)h
(op)q(erations)f(at)g(p)q(olymorphic:)21 b(the)c(same)e(name)g(is)h(used)h
(for)f(op)q(erations)g(w)o(orking)f(on)75 2647 y(di\013eren)o(t)g(t)o(yp)q
(es)g(of)e(argumen)o(ts,)g(and)h(the)g(righ)o(t)g(op)q(eration)g(is)g(pic)o
(k)o(ed)g(from)e(the)j(datat)o(yp)q(e)f(of)f(the)i(bu\013er.)k(W)m(e)75
2704 y(assumed)c(here)i(that)f(the)h(datat)o(yp)q(e)f(is)f(pic)o(k)o(ed)h
(from)e(the)j(windo)o(w)e(initialization.)21 b(Th)o(us,)16
b(the)g(windo)o(w)f(m)o(ust)1967 46 y Fl(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 15 15
bop 75 -100 a Fn(4.5.)34 b(COUNTING)16 b(T)l(AR)o(GET)e(REQUEST)947
b Fv(15)75 49 y Fp(b)q(e)15 b(t)o(yp)q(ed,)f(and)g(it)g(is)g(imp)q(ortan)o(t)
f(to)h(b)q(e)h(able)f(to)g(asso)q(ciate)h(a)f(t)o(yp)q(e)g(with)g(a)g(windo)o
(w)g(ev)o(en)h(if)e(not)h(all)f(elemen)o(ts)75 106 y(in)g(the)g(windo)o(w)g
(are)g(of)g(this)g(t)o(yp)q(e.)18 b(A)c(p)q(ossible)f(alternativ)o(e)g(is)g
(to)g(ha)o(v)o(e)g(a)g(t)o(yp)q(e)g(argumen)o(t)f(in)h(the)h(accum)o(ulate)75
162 y(call.)75 367 y Fi(4.4.1)49 b(Example)75 452 y Fv(W)l(e)14
b(w)o(an)o(t)f(to)h(compute)g Fr(B)p Fv(\()p Fr(j)p Fv(\))e(=)644
420 y Fe(P)688 464 y Fd(map)p Fc(\()p Fd(i)p Fc(\)=)p Fd(j)826
452 y Fr(A)p Fv(\()p Fr(i)p Fv(\).)19 b(The)14 b(arra)o(ys)f
Fr(A,)24 b(B)14 b Fv(and)g Fr(map)g Fv(are)g(distributed)i(in)f(the)75
509 y(same)g(manner.)20 b(W)l(e)15 b(write)g(\014rst)g(the)h(simple)g(v)o
(ersion.)75 615 y Fr(SUBROUTINE)22 b(SUM\()i(A,)f(B,)h(map,)f(m,)h(comm,)f
(p\))75 672 y(INTEGER)g(m,)g(map\(m\),)g(comm,)h(p)75 728 y(REAL)f(A\(m\),)g
(B\(m\))75 841 y(CALL)g(MPI_RMC_INIT\(B,)f(m,)i(MPI_REAL,)e(0,)i(0,)g(comm,)f
(sumcomm,)f(ierr\))75 954 y(DO)i(i=1,m)147 1010 y(j)f(=)h(map\(i\)/m)147
1067 y(k)f(=)h(MOD\(map\(i\),m\))147 1123 y(CALL)f(MPI_ACCUMULATE\(A\(i\),)e
(1,)j(MPI_REAL,)e(j,)i(k,)f(1,)h(MPI_SUM,)f(sumcomm,)910 1180
y(MPI_UNDEFINED,)f(ierr\))75 1236 y(END)h(DO)75 1293 y(RETURN)166
1399 y Fv(This)17 b(co)q(de)g(is)f(iden)o(tical)j(to)c(the)i(co)q(de)f(in)i
(Example)e(2)g(of)g(Section)h(4.3.3,)e(except)i(that)e(a)h(call)i(to)75
1455 y(get)f(has)h(b)q(een)h(replaced)f(b)o(y)g(a)f(call)i(to)e(accum)o
(ulate.)28 b(\(Note)17 b(that,)g(if)h Fr(map)g Fv(is)g(one-to-one,)g(then)g
(the)75 1512 y(co)q(de)i(computes)g Fr(B)f Fv(=)h Fr(A)p Fv(\()p
Fr(map)603 1495 y Fb(\000)p Fd(1)646 1512 y Fv(\),)g(whic)o(h)g(the)g(rev)o
(erse)f(assignmen)o(t)g(to)g(he)h(one)g(computed)f(in)i(that)75
1568 y(example.\))28 b(In)19 b(a)f(similar)h(manner,)f(w)o(e)g(can)g(replace)
g(the)g(call)h(to)f(get)f(b)o(y)h(a)g(call)h(to)e(accum)o(ulate)h(in)75
1625 y(Example)c(1)f(of)g(Section)h(4.3.3,)d(th)o(us)i(p)q(erforming)h(the)f
(computation)g(with)h(only)g(one)f(comm)o(unication)75 1681
y(b)q(et)o(w)o(een)j(an)o(y)e(pair)i(of)f(pro)q(cesses.)75
1824 y Fs(4.5)59 b(Counting)21 b(T)-5 b(a)n(rget)20 b(Request)75
1926 y Fv(This)11 b(section)f(con)o(tains)h(syn)o(tax)e(for)h(a)f(sp)q
(eci\014c)j(sync)o(hronization)g(op)q(eration)e(asso)q(ciated)g(with)h
(put/get:)75 1982 y(namely)16 b(the)g(one)g(where)f(a)h(target)e(request)i
(is)g(a)f(coun)o(ter)h(that)e(is)j(incremen)o(ted)f(b)o(y)g(eac)o(h)g(put)f
(or)g(get)75 2039 y(that)j(sp)q(eci\014es)j(it.)32 b(The)20
b(t)o(w)o(o)e(functions)i(pro)o(vided)g(here)f(allo)o(w)g(one)h(to)e(set)h(a)
g(threshold)h(that)e(will)75 2095 y(indicate)c(when)g(a)e(test)h(or)f(w)o
(ait)h(on)f(the)h(request)g(will)i(succeed,)f(and)f(to)f(get)h(the)g(v)m
(alue)h(of)f(the)g(coun)o(ter.)166 2152 y(When)h(the)h(request)f(ob)s(jects)g
(are)f(created)i(b)o(y)f(the)g(call)h(to)f Fm(MPI)p 1281 2152
14 2 v 16 w(RMC)p 1395 2152 V 16 w(INIT)p Fv(,)f(then)i(eac)o(h)f(coun)o(ter)
75 2208 y(is)g(initialized)i(to)d(zero)g(and)g(eac)o(h)g(threshold)h(to)f
(one.)19 b(The)13 b(requests)g(are)g(p)q(ersisten)o(t,)h(and)f(initially)j
(in-)75 2265 y(activ)o(e.)j(A)13 b(coun)o(ter)f(is)h(incremen)o(ted)h(b)o(y)e
(one)h(b)o(y)g(eac)o(h)f(put)h(or)f(get)g(that)g(references)h(it.)19
b(The)13 b(threshold)75 2321 y(is)f(established)i(and)e(the)g(asso)q(ciated)g
(request)g(activ)m(ated)h(b)o(y)e Fm(MPI)p 1212 2321 V 16 w(SET)p
1311 2321 V 17 w(COUNTER)p 1540 2321 V 18 w(THRESHOLD)h Fv(or)75
2377 y Fm(MPI)p 160 2377 V 16 w(ST)l(ART)k Fv(at)f(the)g(target.)20
b(The)15 b(request)h(completes)g(when)g(the)f(coun)o(ter)h(reac)o(hes)f(the)h
(threshold.)75 2434 y(When)h(the)f(program)f(\014nds)i(out)f(that)g(the)g
(request)g(is)h(complete)g(through)f(one)g(of)g(the)h(normal)f(MPI)75
2490 y(w)o(ait)e(or)f(test)h(calls,)h(the)f(threshold)h(is)f(subtracted)g
(from)g(the)g(coun)o(ter.)19 b(T)l(o)14 b(reactiv)m(ate)g(the)h(request)f(it)
75 2547 y(is)i(necessary)g(to)f(call)i Fm(MPI)p 548 2547 V
16 w(SET)p 647 2547 V 17 w(COUNTER)p 876 2547 V 18 w(THRESHOLD)f
Fv(to)f(reset)h(the)g(threshold)g(or)g(one)g(of)f(the)75 2603
y Fm(MPI)p 160 2603 V 16 w(ST)l(ART)h Fv(calls)g(to)f(reuse)g(the)h(existing)
g(threshold)g(v)m(alue.)-32 46 y Fl(1)-32 103 y(2)-32 159 y(3)-32
215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40
780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40
1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796
y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304
y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 16 16
bop 75 -100 a Fv(16)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(SET)p 259 49 V
17 w(COUNTER)p 488 49 V 17 w(THRESHOLD)h(\(request,)h(count\))117
126 y Fp(IN)155 b Fm(request)452 b Fp(coun)o(ter)15 b(request)h(\(handle\))
117 202 y(IN)155 b Fm(count)482 b Fp(n)o(um)o(b)q(er)13 b(of)h(units)g
(\(non-negativ)o(e)f(in)o(teger\))75 326 y Fr(int)23 b(MPI)p
245 326 15 2 v 17 w(Set)p 334 326 V 17 w(counter)p 519 326
V 16 w(threshold\(MPI)p 847 326 V 16 w(Request)g(request,)f(int)i(count\))75
413 y(MPI)p 150 413 V 17 w(SET)p 239 413 V 17 w(COUNTER)p 424
413 V 16 w(THRESHOLD\(REQUEST,)d(COUNT,)i(IERROR\))170 469
y(INTEGER)g(REQUEST,)g(COUNT,)g(IERROR)166 555 y Fv(Set)15
b(the)g(threshold)h(asso)q(ciated)g(with)f Fm(request)i Fv(to)e
Fm(count)h Fv(and)g(activ)m(ate)f(the)g(request.)75 706 y Fm(MPI)p
160 706 14 2 v 16 w(GET)p 264 706 V 17 w(COUNTER)h(\(request,)g(count\))117
784 y Fp(IN)155 b Fm(request)452 b Fp(coun)o(ter)15 b(request)h(\(handle\))
117 859 y(OUT)108 b Fm(count)482 b Fp(n)o(um)o(b)q(er)13 b(of)h(units)g
(\(non)g(negativ)o(e)f(in)o(teger\))75 983 y Fr(int)23 b(MPI)p
245 983 15 2 v 17 w(Get)p 334 983 V 17 w(counter\(MPI)p 615
983 V 16 w(Request)g(request,)f(int)i(count\))75 1070 y(MPI)p
150 1070 V 17 w(GET)p 239 1070 V 17 w(COUNTER\(REQUEST,)d(COUNT,)i(IERROR\))
170 1126 y(INTEGER)g(REQUEST,)g(COUNT,)g(IERROR)166 1213 y
Fv(Returns)16 b(the)f(curren)o(t)g(v)m(alue)h(from)f(the)g(coun)o(ter)g(asso)
q(ciated)h(with)f Fm(request)p Fv(.)189 1319 y Fj(A)n(dvic)n(e)j(to)h(users.)
58 b Fv(Note)18 b(that)g(coun)o(ter)g(seman)o(tics)g(are)g(carefully)i
(designed)f(to)f(a)o(v)o(oid)g(race)189 1375 y(conditions.)43
b(Since)24 b(coun)o(ters)e(are)h(only)g(incremen)o(ted)h(and)f(decremen)o
(ted)g(and)g(nev)o(er)g(set,)189 1432 y(incremen)o(ts)14 b(from)f(incoming)i
(puts)e(and)h(gets)f(are)h(nev)o(er)f(lost.)20 b(Also,)14 b(while)h(a)e
(request)h(is)g(activ)o(e)189 1488 y(the)j(asso)q(ciated)g(coun)o(ter)g(is)g
(monotonically)h(increasing.)26 b(The)18 b(only)f(thing)h(to)e(w)o(atc)o(h)g
(out)h(for)189 1545 y(is)e(that)g(a)g(coun)o(ter)g(ma)o(y)f(exceed)i(its)g
(threshold)g(v)m(alue.)21 b(\()p Fj(End)15 b(of)i(advic)n(e)f(to)g(users.)p
Fv(\))166 1734 y Fq(Discussion:)41 b Fp(This)16 b(form)e(assumes)i(that)f
(implemen)o(tation)e(of)i(the)h(coun)o(ter)h(mec)o(hanism)c(migh)o(t)h(tak)o
(e)75 1790 y(adv)n(an)o(tage)k(of)g(extended)i(requests,)h(so)e(coun)o(ters)h
(are)f(em)o(b)q(edded)f(in)h(request)h(ob)r(jects.)33 b(An)19
b(alternativ)o(e)f(is)75 1846 y(to)i(mak)o(e)e(coun)o(ters)j(explicit)f(ob)r
(jects,)i(and)e(de\014ne)h(blo)q(c)o(king)e(and)g(non)o(blo)q(c)o(king)g(w)o
(ait)g(calls)h(replacing)f(the)75 1903 y Fk(MPI)p 152 1903
13 2 v 14 w(SET)p 242 1903 V 15 w(COUNTER)p 453 1903 V 14 w(THRESHOLD)c
Fp(call)e(while)g(preserving)i(its)f(seman)o(tics.)75 2107
y Fi(4.5.1)49 b(Generalizations)75 2193 y Fv(There)15 b(are)f(man)o(y)h
(other)f(sensible)i(c)o(hoices)g(for)e(the)h(seman)o(tics)g(of)f(remote)g
(requests.)20 b(They)15 b(could)g(b)q(e)75 2250 y(full/empt)o(y)h(\015ags,)e
(whic)o(h)i(are)f(up)q(dated)h(b)o(y)f(an)o(y)g(RMC)g(op)q(eration)g(that)f
(uses)i(it)f(as)g(argumen)o(t;)f(they)75 2306 y(could)f(b)q(e)h(also)e(used)h
(to)f(pro)o(vide)h(a)f(conditional)i(put/get)e(op)q(erations:)18
b(put,)13 b(put-and-set,)g(put-if-not-)75 2363 y(set,)19 b
(put-if-not-set-and-set,)h(etc.)31 b(They)19 b(could)h(b)q(e)f(coun)o(ters,)g
(whic)o(h)h(are)e(incremen)o(ted)i(b)o(y)f(RMC)75 2419 y(op)q(erations)c(b)o
(y)g(an)h(arbitrary)e(amoun)o(t)h(sp)q(eci\014ed)i(in)f(the)f(op)q(eration,)g
(or)g(b)o(y)g(an)g(elemen)o(t)h(coun)o(t.)166 2475 y(There)g(are)g(other)g
(useful)h(c)o(hoices.)23 b(F)l(or)16 b(example,)h(a)e(c)o(hoice)i(that)f
(seems)g(to)f(reduce)i(comm)o(uni-)75 2532 y(cation)d(is)g(a)g(three)g(state)
f(\015ag:)19 b Fr(Full,)k(Ready,)g(Empty)p Fv(.)c(The)14 b(idea)h(is)f(that)f
(a)h(put)g(attempts)e(to)i(mo)o(v)o(e)75 2588 y(data)h(from)f(pro)q(ducer)j
(to)d(consumer.)21 b(If)16 b(it)g(fails)g(b)q(ecause)g(consumer)g(is)g(not)f
(ready)l(,)g(then)h(it)g(sets)f(the)75 2645 y(target)f(request)h(to)g
(indicate)h(so.)k(The)15 b(consumer)h(will)h(then)e(get)g(the)g(data)g(from)f
(the)h(pro)q(ducer.)1967 46 y Fl(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959
1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959
1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959
1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959
1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959
1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959
2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959
2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959
2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 17 17
bop 75 -100 a Fn(4.5.)29 b(COUNTING)16 b(T)l(AR)o(GET)e(REQUEST)952
b Fv(17)166 49 y(Assume)15 b(that)f(one)g(has)h(unconditional)i(get)d(and)g
(put)h(calls)h(that)e(execute)h(the)g(transfer)e(and)i(set)75
106 y(a)g(target)e(\015ag.)20 b(In)c(addition)g(one)f(has)g(conditional)h
(get)f(and)g(put)g(calls.)21 b(The)15 b(conditional)i(put)e(call)h(is)75
162 y(sho)o(wn)f(b)q(ello)o(w.)75 253 y Fr(int)23 b(cond_put\(local_buffer,)e
(target_buffer,)h(target_flag\))75 309 y({)75 366 y(if)i(\(target_flag)e(==)h
(Empty\))g({)147 422 y(target_buffer)f(=)h(local_buffer;)70
b(/*)24 b(copy)f(data)g(*/)147 479 y(target_flag)f(=)i(Full;)309
b(/*)24 b(indicate)f(completion)f(*/)147 535 y(return)h(1;)147
591 y(})75 648 y(else)g({)147 704 y(target_flag)f(=)i(Ready;)261
b(/*)24 b(leave)f(indication)g(that)958 761 y(producer)g(is)g(ready)g(*/)147
817 y(return)g(0;)147 874 y(})166 964 y Fv(The)15 b(co)q(de)h(for)f(the)g
(conditional)i(get)e(is)g(sho)o(wn)g(b)q(ello)o(w.)75 1055
y Fr(int)23 b(cond_get\(local_buffer,)e(target_buffer,)h(target_flag\))75
1111 y({)75 1168 y(if)i(\(target_flag)e(==)h(Full\))h({)147
1224 y(local_buffer)e(=)i(target_buffer;)69 b(/*)24 b(copy)f(data)g(*/)147
1281 y(target_flag)f(=)i(Empty;)309 b(/*)24 b(indicate)e(completion)h(*/)147
1337 y(return)g(1;)147 1393 y(})75 1450 y(else)g({)147 1506
y(target_flag)f(=)i(Ready;)261 b(/*)24 b(leave)f(indication)g(that)958
1563 y(consumer)g(is)g(ready)g(*/)147 1619 y(return)g(0;)147
1676 y(})166 1766 y Fv(\(Assignmen)o(ts)15 b(and)g(tests)g(of)g
Fr(target)p 841 1766 15 2 v 16 w(flag)g Fv(are)g(assumed)g(to)f(b)q(e)i
(atomic.\))166 1823 y(A)f(pro)q(ducer-consumer)h(co)q(de)g(can)g(b)q(e)f
(written)h(as)75 1913 y Fr(producer_flag)22 b(=)i(0;)75 1970
y(consumer_flag)e(=)i(Empty;)75 2083 y(if)g(\(producer\))147
2139 y(while\(1\))e({)218 2195 y(produce\(producer_buffer\)\);)218
2252 y(success)h(=)h(cond_put\(producer_buffer,)c(consumer_buffer,)i
(consumer_flag\);)218 2308 y(if)i(\(!success\))46 b({)24 b(/*)f(wait)h(for)f
(consumer)g(to)h(pick)f(the)g(data)h(*/)290 2365 y(wait\(producer_flag\);)290
2421 y(producer_flag)e(=)i(0;)290 2478 y(})218 2534 y(})75
2591 y(else)f(if)h(\(consumer\))147 2647 y(while\(1\))e({)218
2704 y(switch)h(\(consumer_flag\))f({)-32 46 y Fl(1)-32 103
y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385
y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175
y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40
1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699
y(48)p eop
%%Page: 18 18
bop 75 -100 a Fv(18)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)290 49 y Fr(case)23 b(Empty:)g({wait\(consumer_flag)e(==)j(Full\);)47
b(break;})290 106 y(case)23 b(Ready:)47 b(get\(producer_buffer,)21
b(consumer_buffer,)h(producer_flag\);)290 162 y(case)h(Full:)290
219 y(})218 275 y(consume\(consumer_buffer\);)218 332 y(consumer_flag)f(=)i
(Empty;)147 388 y(})166 482 y Fv(The)16 b(conditional)h(get)e(can)g(b)q(e)i
(used)f(to)f(write)g(the)h(symmetric)f(co)q(de)h(where)g(consumer)g(tries)g
(to)75 538 y(get)f(the)g(data)g(and,)g(if)g(it)h(fails,)f(w)o(aits)g(for)g
(the)g(pro)q(ducer)h(to)e(put)i(it.)166 595 y(This)22 b(eager)f(comm)o
(unication)h(proto)q(col)g(pro)o(vides)g(a)f(pro)q(ducer-consumer)i(co)q(de)f
(where)g(eac)o(h)75 651 y(pro)q(cess)15 b(executes)g(at)e(most)h(one)h(comm)o
(unication)g(p)q(er)g(data)e(exc)o(hange)i(\(as)f(in)h(a)f(regular)h
(handshak)o(e)75 708 y(proto)q(col\),)f(but)i(where)f(only)h(the)f(data)g
(transfer)f(comm)o(unication)i(will)h(o)q(ccur,)e(with)h(righ)o(t)f(timing.)
166 764 y(A)g(sc)o(heme)h(that)e(co)o(v)o(ers)h(all)h(these)f(cases)g(is)h
(as)f(follo)o(ws:)166 821 y(An)j(RMC)f(op)q(eration)g(will)i(ha)o(v)o(e)e(t)o
(w)o(o)f(additional)j(argumen)o(t)d Fm(syncin,)j(syncout)p
Fv(.)28 b(The)17 b(b)q(eha)o(vior)75 877 y(of)e(RMC)g(op)q(erations)g(and)h
(remote)e(request)h(will)i(b)q(e)f(de\014ned)h(b)o(y)e(the)g(follo)o(wing)h
(functions.)75 971 y Fr(Condition\(syncin,)22 b(target)p 652
971 15 2 v 16 w(request\))g Fv(A)10 b(Bo)q(olean)h(function)g(that)e
(indicates)j(whether)e(the)g(trans-)189 1027 y(fer)15 b(of)f(data)h(will)i(o)
q(ccur.)75 1121 y Fr(Update\(syncin,)22 b(target)p 580 1121
V 16 w(request\))g Fv(The)13 b(v)m(alue)h(of)f(the)g(target)f(request)h
(after)f(the)h(completion)h(of)189 1178 y(the)h(op)q(eration.)75
1271 y Fr(Return\(syncin,)22 b(target)p 580 1271 V 16 w(request\))g
Fv(The)11 b(output)g(v)m(alue)i(returned)f(b)o(y)f(the)g(op)q(eration)h(in)g
Fm(syncout)p Fv(.)75 1365 y Fr(Trigger\(target)p 414 1365 V
15 w(request\))22 b Fv(a)c(Bo)q(olean)h(function)h(that)d(indicates)j
(whether)f(the)g(target)e(request)189 1422 y(has)e(completed.)75
1515 y Fr(Trigger)p 246 1515 V 16 w(update\(target)p 574 1515
V 16 w(request\))21 b Fv(A)i(function)g(that)f(indicates)i(ho)o(w)e(to)g(up)q
(date)i(the)e(target)189 1572 y(request)15 b(when)h(it)f(completes.)166
1666 y(F)l(or)f(example,)i(the)f(sc)o(heme)h(de\014ned)h(in)f(the)f(previous)
h(section)g(has)75 1760 y Fr(Condition\(syncin,)22 b(target_request\))f(=)j
(True)75 1816 y(Update\(syncin,)e(target_request\))g(=)h(target_request+1)75
1872 y(Return\(syncin,)f(target_request\))g(=)h(dontcare)75
1929 y(Trigger\(target_request\))e(=)i(\(target_request)f(==)i(threshold\))75
1985 y(Trigger_update\(target_requ)o(est\))d(=)i(target_request)f(-)i
(threshold)166 2079 y Fv(The)15 b(argumen)o(ts)g Fm(syncin)h
Fv(and)g Fm(syncout)g Fv(are)f(not)g(needed.)166 2136 y(The)g(conditional)h
(put)e(de\014ned)i(ab)q(o)o(v)o(e)e(is)i(sp)q(eci\014ed)g(b)o(y)f(the)f(the)h
(follo)o(wing)g(c)o(hoice)g(of)g(functions.)75 2229 y Fr(Condition\(syncin,)
22 b(target_request\))f(=)j(\(target_request)e(==)h(Empty\))75
2286 y(Update\(syncin,)f(target_request\))528 2342 y(=)i(\(target_request)e
(==)i(Empty\)?)e(Full)i(:)f(Ready)75 2399 y(Return\(syncin,)f
(target_request\))g(=)h(\(target_request)f(==)i(Empty\))75
2493 y Fv(\()p Fr(syncin)14 b Fv(is)i(not)f(used\))166 2549
y(All)g(these)g(options)f(ha)o(v)o(e)g(useful)h(applications)h({)e(w)o(e)g
(need)h(to)e(trade-o\013)g(design)j(and)e(implemen-)75 2606
y(tation)h(complexit)o(y)h(against)f(usefulness.)21 b(The)15
b(c)o(hoices)h(are:)1967 46 y Fl(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959
1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959
1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959
1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959
1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959
1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959
2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959
2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959
2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 19 19
bop 75 -100 a Fn(4.6.)34 b(FENCE)1490 b Fv(19)131 49 y(1.)22
b(Most)e(general:)32 b(eac)o(h)21 b(put/get)g(op)q(eration)h(carries,)g(in)g
(addition)g(to)f(the)g(argumen)o(ts)g(listed)189 106 y(ab)q(o)o(v)o(e,)g(a)g
Fr(sync)p 480 106 15 2 v 17 w(op)g Fv(argumen)o(t)f(that)g(de\014nes)i(the)f
(sync)o(hronization)h(op)q(eration,)h(a)e Fr(sync)p 1814 106
V 16 w(in)189 162 y Fv(input)16 b(argumen)o(t,)e(and)h(a)g
Fr(sync)p 751 162 V 17 w(out)g Fv(output)g(argumen)o(t.)131
256 y(2.)22 b(No)10 b Fr(sync)p 355 256 V 16 w(op)g Fv(:)17
b(the)11 b Fr(sync)p 629 256 V 16 w(op)f Fv(could)h(b)q(e)g(sp)q(eci\014ed)h
(when)f(the)f(windo)o(w)h(is)f(created)g(b)o(y)g Fm(MPI)p 1736
256 14 2 v 16 w(RMC)p 1850 256 V 17 w(INIT)p Fv(,)189 312 y(rather)k(then)i
(separately)f(for)g(eac)o(h)g(access.)20 b(This)c(will)h(cause)e(little)i
(loss)e(of)g(generalit)o(y)l(.)131 406 y(3.)22 b(No)c Fr(sync)p
363 406 15 2 v 17 w(out)g Fv(argumen)o(t:)26 b(this)19 b(rules)h(out)e
(conditional)j(put/get)d(op)q(erations.)30 b(E.g.,)19 b(rather)189
463 y(than)e(adding)i(one)f(to)f(the)h(target)e(request)i(coun)o(ter)g(for)f
(eac)o(h)h(access,)g(one)g(could)h(sp)q(ecify)g(an)189 519
y(incremen)o(t)d(in)g(the)f(RMC)g(op)q(eration.)131 613 y(4.)22
b(No)15 b Fr(sync)p 360 613 V 17 w(in)h Fv(argumen)o(t:)k(E.g.,)15
b(one)h(can)g(ha)o(v)o(e)f(a)h(coun)o(ter)g(that)f(coun)o(ts)g(n)o(um)o(b)q
(er)i(of)e(accesses,)189 669 y(or)j(n)o(um)o(b)q(er)g(of)h(en)o(tries)f
(transferred,)h(but)g(not)f(a)g(coun)o(ter)g(that)g(can)h(b)q(e)g(incremen)o
(ted)h(b)o(y)e(an)189 726 y(arbitrary)c(amoun)o(t)h(for)f(eac)o(h)h(access.)
20 b(This)c(is)g(the)f(c)o(hoice)h(made)g(in)g(this)f(c)o(hapter.)131
820 y(5.)22 b(No)17 b(target)g(request)h(argumen)o(t.)28 b(An)o(y)18
b(sync)o(hronization)h(will)g(b)q(e)g(done)f(via)h(additional)g(com-)189
876 y(m)o(unication,)c(using)h(semaphores,)f(lo)q(c)o(ks,)g(etc.,)g(as)g(in)h
(shared)f(memory)g(co)q(des.)166 982 y(Note)h(that)g(eac)o(h)g(of)h(the)f
(more)g(complex)i(c)o(hoices)f(can)g(default)g(to)f(a)g(simpler)i(c)o(hoice,)
f(with)g(the)75 1039 y(use)f(of)e(default)i(v)m(alues)g(for)f(argumen)o(ts.)
166 1178 y Fq(Discussion:)34 b Fp(W)m(e)13 b(need)i(to)f(discuss)h(these)g(c)
o(hoices)g(and)f(select)h(\(hop)q(efully\))e(ONE)i(of)e(the)i(options.)75
1404 y Fs(4.6)59 b(F)n(ence)75 1505 y Fv(The)21 b(de\014nition)i(of)d(the)h
(put)g(op)q(eration)g(implies)i(that)d(the)h(comm)o(unication)g(ma)o(y)f(con)
o(tin)o(ue)i(after)75 1562 y(the)f(call)h(completed.)38 b(A)22
b(mec)o(hanisms)f(is)h(needed)g(to)e(c)o(hec)o(k)i(that)e(RMC)h(comm)o
(unications)g(ha)o(v)o(e)75 1618 y(completed)f(at)d(the)i(target)e(pro)q
(cess.)31 b(A)18 b(useful)i(construct)e(is)h(a)g(collectiv)o(e)h(call)g(that)
e(ensures)h(that)75 1675 y(all)h(RMC)f(calls)g(ha)o(v)o(e)g(completed)h(in)f
(a)g(group.)31 b(This)19 b(will)h(allo)o(w)g(to)e(implemen)o(t)i(algorithms)f
(that)75 1731 y(consists)c(of)f(successiv)o(e)i(phases,)f(where)g(a)g(new)g
(phase)g(starts)e(when)i(all)h(comm)o(unication)g(p)q(ertaining)75
1788 y(to)f(the)g(previous)h(phase)f(has)g(completed.)166 1844
y(The)g(MPI)h(collectiv)o(e)h(function)f Fm(MPI)p 824 1844
14 2 v 16 w(BARRIER\(comm)n(\))p Fv(,)c(when)k(called)h(with)e(a)g(comm)o
(unicator)75 1901 y Fm(comm)6 b Fv(used)13 b(for)f(RMC)g(comm)o(unication,)h
(has)f(the)h(additional)g(seman)o(tics)g(of)e(a)h(fence)h(with)g(resp)q(ect)g
(to)75 1957 y(put)i(and)g(get)g(calls)h(that)f(use)g(this)g(comm)o(unicator.)
20 b(All)c(the)f(put)h(and)f(get)g(calls)h(issued)g(on)f(the)g(com-)75
2013 y(m)o(unicator)d(b)q(efore)g(the)g(call)h(to)e Fm(MPI)p
713 2013 V 16 w(BARRIER)i Fv(will)h(complete)f(at)e(the)h(target)f(b)q(efore)
h Fm(MPI)p 1674 2013 V 16 w(BARRIER)75 2070 y Fv(completes.)166
2202 y Fq(Discussion:)48 b Fp(W)m(e)17 b(do)g(not)g(require)i(that)e(the)h
(calls)f(complete)g(also)g(at)g(the)h(origin)e({)h(the)h(caller)g(can)75
2252 y(ensure)d(this)f(b)o(y)g(using)g(a)f(W)m(aitall)f(call.)17
b(This)d(c)o(hoice)g(simpli\014es)e(implemen)o(tation.)166
2309 y(A)i(non)o(blo)q(c)o(king)e(barrier)j Fk(MPI)p 655 2309
13 2 v 14 w(IBARRIER\(com)n(m)m(,)c(request\))k Fp(will)e(help.)166
2448 y Fv(It)g(is)h(also)f(useful)h(to)e(ha)o(v)o(e)h(a)g(\\fence")g(mec)o
(hanism)h(that)e(guaran)o(tees)h(completion)h(of)f(puts)g(issued)75
2504 y(b)o(y)g(one)g(pro)q(cess.)19 b(This)13 b(is)g(useful)h(is)f(a)g(pro)q
(cess)g(has)f(to)g(mo)q(dify)i(atomically)f(a)g(structure)f(stored)g(in)i
(the)75 2561 y(memory)g(of)h(other)f(pro)q(cess\(es\).)19 b(The)d(op)q
(eration)f(ma)o(y)f(consists)h(of)f(a)g(lo)q(c)o(k,)h(follo)o(w)o(ed)h(b)o(y)
e(a)h(sequence)75 2617 y(of)i(gets)g(and)h(puts,)g(follo)o(w)o(ed)g(b)o(y)f
(an)h(unlo)q(c)o(k)g(op)q(eration.)28 b(One)18 b(has)f(to)g(ensure)h(that)f
(all)i(c)o(hanges)e(of)75 2674 y(remote)e(data)f(o)q(ccurred)i(b)q(efore)g
(the)f(unlo)q(c)o(k)h(op)q(eration)f(is)h(issued.)-32 46 y
Fl(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328
y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 20 20
bop 75 -100 a Fv(20)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(FENCE\(comm)m(\))117
126 y Fp(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11 b(used)k(RMC)f
(\(handle\))75 251 y Fr(int)23 b(MPI)p 245 251 15 2 v 17 w(fence\(MPI)p
478 251 V 16 w(Comm)g(comm\))75 337 y(MPI)p 150 337 V 17 w(FENCE\()g(COMM,)g
(IERROR\))170 394 y(INTEGER)g(COMM,)h(IERROR)166 480 y Fv(The)17
b(call)i(can)e(b)q(e)h(issued)g(with)g(a)f(comm)o(unicator)g(used)h(for)e
(one-sided)j(comm)o(unication.)27 b(The)75 537 y(call)16 b(returns)e(when)h
(all)g(previous)g(RMC)g(calls)g(issued)h(b)o(y)e(the)g(caller)i(ha)o(v)o(e)e
(completed)h(at)f(the)h(target.)166 676 y Fq(Discussion:)34
b Fp(The)14 b(need)g(for)g(a)f(fence)i(call)e(can)h(b)q(e)g(ob)o(viated)f(b)o
(y)h(in)o(tro)q(ducing)f(sync)o(hronous)i(put)f(calls,)75 732
y(that)g(complete)f(at)h(the)g(origin)f(only)g(if)g(the)i(ha)o(v)o(e)f
(completed)f(at)h(the)g(target.)75 958 y Fs(4.7)59 b(Collective)20
b(RMC)f(Op)r(erations)75 1061 y Fi(4.7.1)49 b(Main)17 b(Issues)75
1147 y Fv(Collectiv)o(e)e(message)e(passing)h(op)q(erations)f(ha)o(v)o(e)h
(the)f(same)g(seman)o(tics)h(as)f(the)h(execution)g(of)f(m)o(ultiple)75
1204 y(p)q(oin)o(t-to-p)q(oin)o(t)k(comm)o(unications,)f(with)g(some)g
(restrictions)g(on)g(the)f(generalit)o(y)i(of)e(the)h(argumen)o(ts.)75
1260 y(T)l(o)f(the)g(same)f(exten)o(t,)h(collectiv)o(e)h(put/get)f(op)q
(erations)g(will)h(ha)o(v)o(e)f(the)g(same)g(seman)o(tics)g(as)f(m)o(ultiple)
75 1317 y(put/get)h(calls,)h(with)f(some)g(restrictions)h(on)f(the)g
(generalit)o(y)h(of)e(the)i(argumen)o(ts.)166 1373 y(The)d(t)o(w)o(o)e(calls)
j(that)e(mak)o(e)g(most)g(sense)h(are)f(a)h(put-scatter,)f(whic)o(h)i(puts)e
(at)g(m)o(ultiple)j(pro)q(cesses,)75 1429 y(and)g(a)g(get-gather,)f(that)g
(gets)h(from)f(m)o(ultiple)j(pro)q(cesses.)j(As)15 b(usual,)h(one)f(should)h
(b)q(e)g(the)f(in)o(v)o(erse)g(of)75 1486 y(the)g(other.)166
1542 y(If)i(a)g(get-gather)g(w)o(ere)g(to)f(b)q(e)i(as)f(general)g(as)g(n)h
(get)e(calls,)j(then)e(it)h(should)g(ha)o(v)o(e)f(the)g(follo)o(wing)75
1599 y(list)f(of)f(argumen)o(ts)75 1750 y Fm(MPI)p 160 1750
14 2 v 16 w(IGET)p 277 1750 V 16 w(GA)l(THER\(\))117 1827 y
Fp(OUT)108 b Fm(obufs)487 b Fp(origin)13 b(input)h(bu\013ers)117
1902 y(IN)155 b Fm(o)q(counts)441 b Fp(length)14 b(of)f(eac)o(h)i(origin)d
(bu\013er)117 1977 y(IN)155 b Fm(ot)o(yp)q(es)467 b Fp(datat)o(yp)q(e)14
b(for)g(eac)o(h)g(origin)f(bu\013er)117 2052 y(IN)155 b Fm(tdisps)480
b Fp(displacemen)o(t)13 b(for)h(eac)o(h)g(target)h(bu\013er)117
2127 y(IN)155 b Fm(tcounts)449 b Fp(length)14 b(of)f(eac)o(h)i(target)f
(bu\013er)117 2203 y(IN)155 b Fm(tt)o(yp)q(es)474 b Fp(datat)o(yp)q(e)14
b(for)g(eac)o(h)g(target)h(bu\013er)117 2278 y(IN)155 b Fm(comm)466
b Fp(comm)o(unicator)117 2353 y(OUT)108 b Fm(o)o(req)506 b
Fp(origin)13 b(request)117 2428 y(OUT)108 b Fm(treqs)495 b
Fp(index)14 b(of)f(eac)o(h)i(target)f(request)166 2552 y Fv(Where)h(do)g(w)o
(e)g(giv)o(e)h(up?)1967 46 y Fl(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959
1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959
1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959
1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959
1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959
1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959
2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959
2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959
2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 21 21
bop 75 -100 a Fn(4.7.)34 b(COLLECTIVE)16 b(RMC)f(OPERA)l(TIONS)905
b Fv(21)75 49 y Fm(V)o(ersion)15 b(1)75 135 y Fv(One)20 b(p)q(ossibilit)o(y)h
(is)e(to)f(a)o(v)o(oid)h(the)g(use)g(of)g(target)e(requests,)j(with)f
(collectiv)o(e)i(put/get)d(op)q(erations.)75 192 y(Separate)12
b(sync)o(hronization)h(will)g(b)q(e)g(needed)g(b)q(et)o(w)o(een)g(origin)f
(and)h(targets.)k(Also,)c(an)f(arra)o(y)e(of)i(bu\013er)75
248 y(argumen)o(ts)k(is)h(not)f(p)q(ossible)i(in)g(F)l(ortran)d(\(no)h(p)q
(oin)o(ters\),)h(so)f(that)g(w)o(e)g(need)h(a)g(unique)h(origin)f(bu\013er)75
304 y(argumen)o(t.)i(The)d(get)p 454 304 14 2 v 15 w(gather)f(call)h(will)h
(b)q(e)f(as)f(follo)o(ws.)75 455 y Fm(MPI)p 160 455 V 16 w(IGET)p
277 455 V 16 w(GA)l(THER\(obuf,)i(o)q(disps,)f(o)q(counts,)h(ot)o(yp)q(es,)f
(tdisps,)g(tcounts,)h(tt)o(yp)q(es,)g(comm)m(,)12 b(o)o(req\))117
533 y Fp(OUT)108 b Fm(obuf)504 b Fp(initial)12 b(address)j(of)f(origin)e
(bu\013er)j(\(c)o(hoice\))117 608 y(IN)155 b Fm(o)q(disps)472
b Fp(displacemen)o(t)9 b(to)h(start)h(of)e(eac)o(h)h(origin)f(bu\013er,)i(in)
f(m)o(ultiples)905 664 y(of)j(elemen)o(t)h(exten)o(t)h(\(arra)o(y)e(of)h(in)o
(tegers\))117 739 y(IN)155 b Fm(o)q(counts)441 b Fp(n)o(um)o(b)q(er)14
b(of)f(elemen)o(ts)h(in)g(eac)o(h)h(origin)e(bu\013er)i(\(arra)o(y)f(of)g
(in-)905 796 y(tegers\))117 871 y(IN)155 b Fm(ot)o(yp)q(es)467
b Fp(datat)o(yp)q(e)20 b(of)e(elemen)o(ts)h(in)g(eac)o(h)g(origin)f(bu\013er)
j(\(arra)o(y)e(of)905 927 y(handles\))117 1002 y(IN)155 b Fm(tdisps)480
b Fp(displacemen)o(t)13 b(for)g(eac)o(h)g(target)h(bu\013er)g(\(arra)o(y)f
(of)g(in)o(tegers\))117 1078 y(IN)155 b Fm(tcounts)449 b Fp(n)o(um)o(b)q(er)
13 b(of)g(elemen)o(ts)h(in)f(eac)o(h)h(target)g(bu\013er)h(\(arra)o(y)f(of)f
(in-)905 1134 y(tegers\))117 1209 y(IN)155 b Fm(tt)o(yp)q(es)474
b Fp(datat)o(yp)q(e)19 b(of)f(elemen)o(ts)g(in)g(eac)o(h)i(target)f(bu\013er)
g(\(arra)o(y)g(of)905 1266 y(handles\))117 1341 y(IN)155 b
Fm(comm)466 b Fp(comm)o(unicator)11 b(\(handle\))117 1416 y(OUT)108
b Fm(o)o(req)506 b Fp(origin)13 b(request)i(\(handle\))166
1540 y Fv(The)h(blo)q(c)o(king)h(call)f(is)g(iden)o(tical,)i(except)e(it)f
(has)h(no)f(request)h(argumen)o(t.)k(Let's)15 b(sho)o(w)g(ho)o(w)h(this)75
1597 y(call)21 b(is)f(used)h(for)e(the)h(assignmen)o(t)g Fr(A)k(=)g(B\(map\))
p Fv(.)33 b(W)l(e)20 b(can)g(use)g(a)g(co)q(de)g(that)f(is)i(iden)o(tical)h
(to)d(the)75 1653 y(co)q(de)c(in)f(Example)h(1,)f(Section)h(4.3.3,)d(except)i
(that)g(the)g(lo)q(op)g(of)g(get)f(calls)j(is)e(replaced)h(b)o(y)f(one)g
(call)i(to)75 1710 y(get-gather.)75 1816 y Fr(...)75 1872 y(CALL)23
b(MPI_GET_GATHER)f(\(A,)i(odisps,)f(ocounts,)f(otypes,)h(tdisps,)719
1929 y(tcounts,)g(ttypes,)g(getcomm,)g(ierr\))75 2049 y Fm(V)o(ersion)15
b(2)75 2135 y Fv(Another)h(p)q(ossibilit)o(y)h(is)g(to)d(ha)o(v)o(e)i(only)g
(one)g(bu\013er,)f(coun)o(t)g(and)h(datat)o(yp)q(e)f(argumen)o(t)g(at)g(the)h
(origin.)75 2191 y(The)g(data)f(got)f(from)h(the)h(pro)q(cesses)g(in)g(the)g
(group)f(of)g Fm(comm)m Fv(,)d(origin)17 b(included,)g(is)g(concatenated)e
(in)75 2248 y(rank)g(order)g(and)g(then)h(copied)g(in)o(to)f(the)h(origin)g
(bu\013er.)j(The)d(call)g(is)g(illustrated)g(b)q(elo)o(w.)-32
46 y Fl(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 22 22
bop 75 -100 a Fv(22)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(IGET)p 277 49 V
16 w(GA)l(THER\(obuf,)i(o)q(count,)f(ot)o(yp)q(e,)f(tdisps,)i(tcounts,)g(tt)o
(yp)q(es,)g(comm)m(,)12 b(o)o(req\))117 126 y Fp(OUT)108 b
Fm(obuf)504 b Fp(initial)12 b(address)j(of)f(origin)e(bu\013er)j(\(c)o
(hoice\))117 202 y(IN)155 b Fm(o)q(counts)441 b Fp(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(in)h(origin)f(bu\013er)h(\(in)o(teger\))117
277 y(IN)155 b Fm(ot)o(yp)q(es)467 b Fp(datat)o(yp)q(e)14 b(of)g(eac)o(h)g
(elemen)o(t)f(in)h(origin)f(bu\013er)h(\(handle\))117 352 y(IN)155
b Fm(tdisps)480 b Fp(displacemen)o(t)13 b(for)g(eac)o(h)g(target)h(bu\013er)g
(\(arra)o(y)f(of)g(in)o(tegers\))117 427 y(IN)155 b Fm(tcounts)449
b Fp(n)o(um)o(b)q(er)13 b(of)g(elemen)o(ts)h(in)f(eac)o(h)h(target)g
(bu\013er)h(\(arra)o(y)f(of)f(in-)905 483 y(tegers\))117 559
y(IN)155 b Fm(tt)o(yp)q(es)474 b Fp(datat)o(yp)q(e)19 b(of)f(elemen)o(ts)g
(in)g(eac)o(h)i(target)f(bu\013er)g(\(arra)o(y)g(of)905 615
y(handles\))117 690 y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11
b(\(handle\))117 765 y(OUT)108 b Fm(o)o(req)506 b Fp(origin)13
b(request)i(\(handle\))166 890 y Fv(The)h(blo)q(c)o(king)h(call)f(is)g(iden)o
(tical,)i(except)e(it)f(has)h(no)f(request)h(argumen)o(t.)k(Let's)15
b(sho)o(w)g(ho)o(w)h(this)75 946 y(call)i(is)g(used)f(for)g(the)g(assignmen)o
(t)g Fr(A)23 b(=)h(B\(map\))p Fv(.)g(Rather)17 b(than)g(de\014ning)i
Fa(p)e Fv(origin)g(datat)o(yp)q(es,)g(one)75 1003 y(de\014nes)f(one)g(origin)
f(datat)o(yp)q(e.)75 1109 y Fr(...)75 1222 y(CALL)23 b(MPI_TYPE_INDEXED\(m,)f
(blen,)h(oindex,)743 1278 y(MPI_REAL,)g(otype,)g(ierr\))147
1335 y(CALL)g(MPI_TYPE_COMMIT\(otype,)e(ierr\))75 1448 y(DO)j(i=1,p)147
1504 y(CALL)f(MPI_TYPE_INDEXED\(count\(i\))o(,)e(blen,)i
(tindex\(total\(i\)\),)743 1561 y(MPI_REAL,)g(ttype\(i\),)f(ierr\))147
1617 y(CALL)h(MPI_TYPE_COMMIT\(ttype\(i\),)d(ierr\))75 1673
y(END)j(DO)75 1786 y(CALL)g(MPI_GET_GATHER)f(\(A,)i(0,)f(1,)h(otype,)f
(tdisps,)719 1843 y(tcounts,)g(ttypes,)g(getcomm,)g(ierr\))75
1899 y(RETURN)166 2006 y Fv(The)12 b(co)q(de)h(is)g(not)f(signi\014can)o(tly)
i(simpler,)f(and)g(the)f(comm)o(unication)h(ma)o(y)f(b)q(ecome)h(less)g
(e\016cien)o(t,)75 2062 y(since)j(it)g(ma)o(y)e(b)q(e)i(hard)f(to)g(\014gure)
g(out)g(ho)o(w)g(is)h(the)f(origin)h(bu\013er)f(split)h(among)f(targets.)75
2182 y Fm(V)o(ersion)g(3)75 2268 y Fv(Another)d(c)o(hoice)i(is)f(to)e(ha)o(v)
o(e)h(a)g(get-gather)g(with)g(a)h(functionalit)o(y)g(equiv)m(alen)o(t)h(to)e
(the)g Fm(MPI)p 1655 2268 V 16 w(GA)l(THERV)75 2324 y Fv(call:)21
b(all)16 b(elemen)o(ts)g(in)g(the)f(receiv)o(e)h(bu\013er)g(ha)o(v)o(e)e(to)h
(ha)o(v)o(e)g(the)g(same)g(t)o(yp)q(e.)20 b(The)15 b(call)i(is)e(as)g(b)q
(elo)o(w.)1967 46 y Fl(1)1967 103 y(2)1967 159 y(3)1967 215
y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959
1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959
1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959
1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959
1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959
1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959
2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959
2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959
2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 23 23
bop 75 -100 a Fn(4.7.)34 b(COLLECTIVE)16 b(RMC)f(OPERA)l(TIONS)905
b Fv(23)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(IGET)p 277 49 V
16 w(GA)l(THER\(obuf,)17 b(o)q(disps,)f(o)q(counts,)h(ot)o(yp)q(e,)e(tdisps,)
i(tcounts,)g(tt)o(yp)q(es,)g(comm)m(,)12 b(o)o(req\))117 126
y Fp(OUT)108 b Fm(obuf)504 b Fp(initial)12 b(address)j(of)f(origin)e
(bu\013er)j(\(c)o(hoice\))117 202 y(IN)155 b Fm(o)q(disps)472
b Fp(displacemen)o(t)9 b(to)h(start)h(of)e(eac)o(h)h(origin)f(bu\013er,)i(in)
f(m)o(ultiples)905 258 y(of)j(elemen)o(t)h(exten)o(t)h(\(arra)o(y)e(of)h(in)o
(tegers\))117 333 y(IN)155 b Fm(o)q(counts)441 b Fp(n)o(um)o(b)q(er)14
b(of)f(elemen)o(ts)h(in)g(eac)o(h)h(origin)e(bu\013er)i(\(arra)o(y)f(of)g
(in-)905 390 y(tegers\))117 465 y(IN)155 b Fm(ot)o(yp)q(e)484
b Fp(datat)o(yp)q(e)14 b(of)g(elemen)o(ts)f(in)h(origin)f(bu\013er)h
(\(handle\))117 540 y(IN)155 b Fm(tdisps)480 b Fp(displacemen)o(t)13
b(for)g(eac)o(h)g(target)h(bu\013er)g(\(arra)o(y)f(of)g(in)o(tegers\))117
615 y(IN)155 b Fm(tcounts)449 b Fp(n)o(um)o(b)q(er)13 b(of)g(elemen)o(ts)h
(in)f(eac)o(h)h(target)g(bu\013er)h(\(arra)o(y)f(of)f(in-)905
672 y(tegers\))117 747 y(IN)155 b Fm(tt)o(yp)q(es)474 b Fp(datat)o(yp)q(e)19
b(of)f(elemen)o(ts)g(in)g(eac)o(h)i(target)f(bu\013er)g(\(arra)o(y)g(of)905
803 y(handles\))117 878 y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11
b(\(handle\))117 953 y(OUT)108 b Fm(o)o(req)506 b Fp(origin)13
b(request)i(\(handle\))166 1078 y Fv(This)h(is)f(iden)o(tical)i(to)e(v)o
(ersion)g(1,)g(except)h(that)e(there)h(is)h(a)f(unique)i(origin)f(datat)o(yp)
q(e.)166 1134 y(The)f(generic)i(example)f(cannot)f(b)q(e)g(written)h(with)f
(one)g(comm)o(unication)h(call,)g(an)o(ymore.)166 1273 y Fq(Discussion:)33
b Fp(This,)13 b(b)o(y)g(the)h(w)o(a)o(y)m(,)d(is)j(also)e(a)h(w)o(eakness)h
(of)f(curren)o(t)i(collectiv)o(e)e(MPI)g(calls.)18 b(One)c(cannot)75
1330 y(do)h(the)g(general)h(scatter)g(op)q(eration)f(of)f(the)i(example)e(ab)
q(o)o(v)o(e,)g(using)h(one)g(collectiv)o(e)g(comm)o(unication,)d(or)j(one)75
1386 y(collectiv)o(e)d(comm)o(uni)o(cation)d(p)q(er)j(pro)q(cess.)19
b(One)12 b(cannot)g(implemen)o(t)d(ev)o(en)j(simpler)e(comm)o(unication)e
(patterns,)75 1443 y(suc)o(h)17 b(as)g(gathering)f(a)h(2D)f(matrix)f(that)h
(is)h(distributed)g(\(blo)q(c)o(k,blo)q(c)o(k\))f(to)g(one)h(no)q(de.)27
b Fk(MPI)p 1595 1443 13 2 v 14 w(GA)m(THERV)16 b Fp(can)75
1499 y(b)q(e)j(used)h(in)e(the)h(case)g(all)f(blo)q(c)o(ks)g(ha)o(v)o(e)h
(equal)f(size)h(\(n)o(um)o(b)q(er)f(of)g(pro)q(cessors)j(divides)d(matrix)f
(size)i(in)f(eac)o(h)75 1556 y(dimension\);)12 b(if)i(blo)q(c)o(ks)g(are)h
(not)f(of)f(equal)h(size,)h Fk(MPI)p 933 1556 V 14 w(GA)m(THERV)e
Fp(do)q(es)i(not)f(w)o(ork.)k(W)m(e)c(w)o(ould)g(need)h(a)f(gather)75
1612 y(function)k(with)g(functionalit)o(y)f(equiv)n(alen)o(t)h(to)g(one)h(of)
f(the)h(\014rst)g(t)o(w)o(o)f(v)o(ersions)h(of)f(get-gather:)28
b(an)18 b(arra)o(y)h(of)75 1669 y(datat)o(yp)q(es)14 b(at)g(ro)q(ot,)g(or)g
(one)g(datat)o(yp)q(e)g(that)g(spans)g(the)h(en)o(tire)f(receiv)o(e)h
(bu\013er.)166 1808 y Fv(A)g(v)m(arian)o(t)g(of)g(this)h(prop)q(osal)f(is)h
(to)e(giv)o(e)i(up)f(on)h(the)f Fm(o)q(disps)i Fv(argumen)o(t,)d(and)h
(assume)g(that)g(data)75 1864 y(is)h(stored)e(con)o(tiguously)i(at)f(origin,)
g(ev)o(en)h(though)f(successiv)o(e)h(blo)q(c)o(ks)g(ma)o(y)f(ha)o(v)o(e)g
(di\013eren)o(t)g(length.)75 1984 y Fm(V)o(ersion)g(4)75 2070
y Fv(Y)l(et)20 b(more)f(restricted)h(c)o(hoice)g(is)g(to)f(ha)o(v)o(e)h(a)f
(get-gather)g(with)h(a)f(functionalit)o(y)i(equiv)m(alen)o(t)g(to)e(the)75
2127 y Fm(MPI)p 160 2127 14 2 v 16 w(GA)l(THER)e Fv(call:)k(all)16
b(elemen)o(ts)g(in)h(the)e(receiv)o(e)h(bu\013er)g(ha)o(v)o(e)f(to)g(ha)o(v)o
(e)g(the)g(same)g(t)o(yp)q(e)h(and)f(same)75 2183 y(coun)o(t,)g(and)g(are)g
(concatenated)g(in)h(con)o(tiguous)f(p)q(ositions.)21 b(The)16
b(call)g(is)g(as)f(b)q(elo)o(w.)-32 46 y Fl(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 24 24
bop 75 -100 a Fv(24)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(IGET)p 277 49 V
16 w(GA)l(THER\(obuf,)i(o)q(count,)f(ot)o(yp)q(e,)f(tdisps,)i(tcounts,)g(tt)o
(yp)q(es,)g(comm)m(,)12 b(o)o(req\))117 126 y Fp(OUT)108 b
Fm(obuf)504 b Fp(initial)12 b(address)j(of)f(origin)e(bu\013er)j(\(c)o
(hoice\))117 202 y(IN)155 b Fm(o)q(count)458 b Fp(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(got)h(from)e(eac)o(h)i(target)h(\(in)o(teger\))117
277 y(IN)155 b Fm(ot)o(yp)q(e)484 b Fp(datat)o(yp)q(e)14 b(of)g(eac)o(h)g
(elemen)o(t)f(in)h(origin)f(bu\013er)h(\(handle\))117 352 y(IN)155
b Fm(tdisps)480 b Fp(displacemen)o(t)13 b(for)g(eac)o(h)g(target)h(bu\013er)g
(\(arra)o(y)f(of)g(in)o(tegers\))117 427 y(IN)155 b Fm(tcounts)449
b Fp(n)o(um)o(b)q(er)13 b(of)g(elemen)o(ts)h(in)f(eac)o(h)h(target)g
(bu\013er)h(\(arra)o(y)f(of)f(in-)905 483 y(tegers\))117 559
y(IN)155 b Fm(tt)o(yp)q(es)474 b Fp(datat)o(yp)q(e)19 b(of)f(elemen)o(ts)g
(in)g(eac)o(h)i(target)f(bu\013er)g(\(arra)o(y)g(of)905 615
y(handles\))117 690 y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11
b(\(handle\))117 765 y(OUT)108 b Fm(o)o(req)506 b Fp(origin)13
b(request)i(\(handle\))75 953 y Fm(V)o(ersion)g(5)75 1039 y
Fv(Finally)l(,)i(w)o(e)d(could)j(giv)o(e)e(up)h(the)f(option)g(of)g(ha)o
(ving)h(di\013eren)o(t)f(datat)o(yp)q(es)g(at)f(eac)o(h)h(target)f(pro)q
(cess.)75 1190 y Fm(MPI)p 160 1190 V 16 w(IGET)p 277 1190 V
16 w(GA)l(THER\(obuf,)j(count,)f(t)o(yp)q(e,)g(tdisps,)g(comm)n(,)11
b(o)o(req\))117 1267 y Fp(OUT)108 b Fm(obuf)504 b Fp(initial)12
b(address)j(of)f(origin)e(bu\013er)j(\(c)o(hoice\))117 1342
y(IN)155 b Fm(o)q(count)458 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(got)
h(from)e(eac)o(h)i(target)h(\(in)o(teger\))117 1418 y(IN)155
b Fm(ot)o(yp)q(e)484 b Fp(datat)o(yp)q(e)16 b(of)e(eac)o(h)i(elemen)o(t)f(in)
g(origin)f(and)h(target)h(bu\013ers)905 1474 y(\(handle\))117
1549 y(IN)155 b Fm(tdisps)480 b Fp(displacemen)o(t)13 b(for)g(eac)o(h)g
(target)h(bu\013er)g(\(arra)o(y)f(of)g(in)o(tegers\))117 1624
y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11 b(\(handle\))117
1699 y(OUT)108 b Fm(o)o(req)506 b Fp(origin)13 b(request)i(\(handle\))166
1824 y Fv(The)h(origin)h(gets)e Fm(count)i Fv(elemen)o(ts)g(of)e(t)o(yp)q(e)h
Fm(t)o(yp)q(e)h Fv(from)e(eac)o(h)h(target,)f(concatenates)g(them,)h(and)75
1880 y(put)f(them)g(in)i(bu\013er)e(starting)f(at)h(address)g
Fm(obuf)p Fv(.)75 2002 y Fi(4.7.2)49 b(V)o(a)o(riants)16 b(and)h(Issues)75
2088 y Fv(T)l(o)e(eac)o(h)h(v)o(ersion)g(of)f Fm(MPI)p 537
2088 V 16 w(GET)p 641 2088 V 16 w(GA)l(THER)i Fv(there)f(corresp)q(onds)g(a)f
(v)o(ersion)h(of)f Fm(MPI)p 1543 2088 V 16 w(PUT)p 1650 2088
V 16 w(SCA)l(TTER)p Fv(,)75 2144 y(with)g(the)g(same)f(argumen)o(ts,)g(where)
g(data)g(are)h(mo)o(ving)f(in)i(the)f(rev)o(erse)f(direction.)21
b(In)15 b(addition,)h(one)75 2201 y(can)21 b(ha)o(v)o(e)g(a)g(collectiv)o(e)i
(accum)o(ulate)f(scatter,)g Fm(MPI)p 1022 2201 V 15 w(A)o(CCUMULA)l(TE)p
1335 2201 V 17 w(SCA)l(TTER)p Fv(,)g(with)g(the)f(same)75 2257
y(argumen)o(ts)g(as)h Fm(MPI)p 451 2257 V 16 w(PUT)p 558 2257
V 16 w(SCA)l(TTER)p Fv(.)h(The)f(elemen)o(ts)h(put)f(are)g(added)h(to)e(the)h
(elemen)o(ts)h(in)g(the)75 2314 y(target)14 b(bu\013er.)166
2446 y Fq(Discussion:)34 b Fp(\\Collectiv)o(e")13 b(is)g(misleading)f(here)j
({)f(since)g(only)f(one)i(pro)q(cess)g(mak)o(es)e(the)h(call.)166
2496 y(W)m(e)f(still)g(need)i(the)g(use)f(of)g Fk(MPI)p 683
2496 13 2 v 14 w(FENCE)f Fp(to)h(sync)o(hronize)h(after)f(collectiv)o(e)g
(put/get)g(calls.)166 2552 y(An)i(in)o(teresting)h(option)f(that)g(needs)i(b)
q(e)f(considered)h(is)e(to)g(em)o(b)q(ed)g(in)o(to)f(a)i(deriv)o(ed)f(datat)o
(yp)q(e)h(ranks)g(of)75 2609 y(target)c(pro)q(cesses,)i(so)e(that)f(a)g
(regular)h(get)g(op)q(eration)f(could)h(b)q(e)g(used)g(to)g(access)h(m)o
(ultiple)c(target)j(pro)q(cesses.)1967 46 y Fl(1)1967 103 y(2)1967
159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959
724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175
y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401
y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627
y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853
y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078
y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304
y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530
y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Page: 25 25
bop 75 -100 a Fn(4.8.)34 b(RMW)15 b(OPERA)l(TIONS)1209 b Fv(25)75
49 y Fs(4.8)59 b(RMW)19 b(op)r(erations)75 151 y Fv(Remote)12
b(Read)p 343 151 14 2 v 17 w(Mo)q(dify)p 501 151 V 16 w(W)l(rite)g(op)q
(erations)g(pro)o(vide)g(atomic)f(test)g(and)h(up)q(date)g(of)f(a)g(remote)g
(v)m(ariable.)75 207 y(They)17 b(can)h(b)q(e)g(used)f(to)g(implemen)o(t)i
(sync)o(hronization)f(op)q(erations)f(suc)o(h)h(as)e(semaphores,)i(coun)o
(ting)75 264 y(semaphores,)d(etc.)75 415 y Fm(MPI)p 160 415
V 16 w(RMW\()g(inbuf,)h(outbuf,)g(count,)g(datat)o(yp)q(e,)g(dest,)h(disp,)f
(op,)f(comm)9 b(\))117 492 y Fp(IN)155 b Fm(inbuf)493 b Fp(address)15
b(of)f(input)f(bu\013er)i(\(c)o(hoice\))117 567 y(OUT)108 b
Fm(outbuf)465 b Fp(address)15 b(of)f(output)g(bu\013er)h(\(c)o(hoice\))117
642 y(IN)155 b Fm(count)482 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h
(bu\013ers)h(\(in)o(teger\))117 717 y(IN)155 b Fm(datat)o(yp)q(e)424
b Fp(datat)o(yp)q(e)14 b(of)g(v)n(ariables)f(\(handle\))117
792 y(IN)155 b Fm(ta)o(rget)475 b Fp(rank)14 b(of)f(target)i(pro)q(cess)g
(\(in)o(teger\))117 867 y(IN)155 b Fm(disp)513 b Fp(displacemen)o(t)13
b(to)h(target)g(bu\013er)h(\(in)o(teger\))117 943 y(IN)155
b Fm(op)541 b Fp(read-mo)q(dify-write)12 b(op)q(eration)i(\(handle\))117
1018 y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11 b(\(handle\))75
1142 y Fr(int)23 b(MPI)p 245 1142 15 2 v 17 w(Rmw\()h(void)f(*inbuf,)g(void)g
(*outbuf,)g(int)g(count,)g(MPI)p 1360 1142 V 17 w(Datatype)g(datatype,)393
1199 y(int)h(target,)f(int)g(disp,)g(MPI)p 993 1199 V 17 w(Op)h(op,)f(MPI)p
1249 1199 V 17 w(Comm)g(comm)g(\))75 1285 y(MPI)p 150 1285
V 17 w(RMW\()g(INBUF,)g(OUTBUF,)g(COUNT,)g(DATATYPE,)g(TARGET,)g(DISP,)g(OP,)
g(COMM,)g(IERROR\))170 1342 y(<type>)g(INBUF,)h(OUTBUF,)170
1398 y(INTEGER)f(DATATYPE,)g(TARGET,)g(DISP,)g(OP,)h(COMM,)f(IERROR)166
1484 y Fv(Accum)o(ulate)17 b(the)e(con)o(ten)o(ts)h(of)f(the)h(input)h
(bu\013er)f(at)f(address)h Fm(inbuf)p Fv(,)g(as)g(de\014ned)h(b)o(y)f
Fm(count)h Fv(and)75 1541 y Fm(datat)o(yp)q(e)p Fv(,)e(to)e(the)g(target)g
(bu\013er)g(in)h(the)g(windo)o(w)f(sp)q(eci\014ed)j(b)o(y)d
Fm(dest)i Fv(and)f Fm(comm)m Fv(,)c(at)j(o\013set)g Fm(disp)h
Fv(using)75 1597 y(the)h(op)q(eration)f Fm(op)p Fv(.)20 b(The)15
b(original)g(v)m(alue)h(of)e(the)h(target)e(bu\013er)h(is)h(returned)g(in)g
(the)g(output)f(bu\013er)h(at)75 1654 y(address)g Fm(outbuf)p
Fv(.)166 1710 y(Mo)q(di\014cation)f(of)f(the)h(target)e(bu\013er)i(is)g
(atomic:)k(no)c(other)f(MPI)g(op)q(eration)h(accesses)g(the)f(target)75
1767 y(bu\013er)i(while)i(the)e(op)q(eration)h(is)f(in)h(progress.)166
1823 y(This)g(call)g(can)f(b)q(e)h(used)g(to)e(implemen)o(t)i(test)f(and)g
(set)g(with)g Fm(MPI)p 1316 1823 14 2 v 16 w(LOR)h Fv(or)e
Fm(MPI)p 1572 1823 V 16 w(MAX)p Fv(,)h(test)g(and)75 1880 y(or)g(with)g
Fm(MPI)p 319 1880 V 16 w(BOR)h Fv(and)g(fetc)o(h)f(and)g(add)h(with)f
Fm(MPI)p 1005 1880 V 16 w(SUM)p Fv(.)166 1936 y(Additional)f(op)q(erations)e
(for)f(sw)o(ap)g(and)h(compare&sw)o(ap)f(are)h(prede\014ned.)20
b(The)12 b(sw)o(ap)g(op)q(eration)75 1993 y(is)22 b(the)g Fk(MPI)p
289 1993 13 2 v 15 w(LAST)g Fv(op)q(eration)g(that)f(has)g(already)i(b)q(een)
f(discussed,)j(de\014ned)e(b)o(y)f Fa(f)5 b Fv(\()p Fa(a;)j(b)p
Fv(\))22 b(=)i Fa(b)p Fv(.)39 b(A)75 2049 y(Read)p 179 2049
14 2 v 17 w(Mo)q(dify)p 337 2049 V 17 w(W)l(rite)13 b(with)h
Fk(MPI)p 654 2049 13 2 v 14 w(LAST)g Fv(stores)e(in)i(the)f(target)f
(bu\013er)i(the)f(v)m(alue)h(in)g Fm(inbuf)h Fv(and)e(returns)75
2105 y(the)k(previous)g(v)m(alue)h(of)e(the)h(target)e(bu\013er)i(in)g
Fm(outbuf)p Fv(.)26 b(The)16 b(compare&sw)o(ap)h(op)q(eration)f(is)i
(de\014ned)75 2162 y(b)o(y)189 2286 y Fa(f)5 b Fv(\()p Fa(<)12
b(a)305 2293 y Fc(1)324 2286 y Fa(;)c(a)369 2293 y Fc(2)400
2286 y Fa(>;)g(b)p Fv(\))j(=)553 2214 y Fe(\()607 2258 y Fa(a)631
2265 y Fc(2)691 2258 y Fv(if)16 b Fa(a)757 2265 y Fc(1)788
2258 y Fv(=)d Fa(b)607 2314 y(b)64 b Fv(otherwise)75 2410 y(It)15
b(is)h(a)f(conditional)i(sw)o(ap,)d(that)g(o)q(ccurs)i(if)g(k)o(eys)f(matc)o
(h.)189 2516 y Fj(A)n(dvic)n(e)h(to)i(users.)47 b Fv(One)17
b(can)f(use)h(a)f(RMW)g Fk(MPI)p 1069 2516 V 14 w(BOR)g Fv(op)q(eration)g(on)
h(an)f(arra)o(y)f(of)h(v)m(ariables,)189 2573 y(in)f(order)g(to)f(implemen)o
(t)i(a)f(Bo)q(olean)g(OR)h(on)f(more)f(than)h(32)f(\(or)g(64\))g(bits.)21
b(\()p Fj(End)15 b(of)h(advic)n(e)g(to)189 2629 y(users.)p
Fv(\))-32 46 y Fl(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 26 26
bop 75 -100 a Fv(26)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)166 49 y Fq(Discussion:)33 b Fp(The)13 b(curren)o(t)h(de\014nition)f
(of)f(RMW)g(op)q(erations)h(has)g(no)g(remote)f(request.)20
b(The)13 b(assump-)75 99 y(tion)j(is)h(that)g(these)h(op)q(erations)f(are)g
(used)h(as)e(in)h(a)f(shared)i(memory)c(en)o(vironmen)o(t,)i(so)h(that)g(use)
g(of)f(remote)75 149 y(requests)f(mak)o(es)d(no)g(sense.)20
b(If)12 b(one)i(exp)q(ects)h(a)d(use)i(of)e(RMC)h(more)f(akin)g(to)h(put)g
(or)g(get,)g(one)g(should)g(put)g(bac)o(k)75 199 y(the)h(remote)g(request)h
(argumen)o(t.)166 249 y(The)f(de\014nition)g(of)f(compare&sw)o(ap)g(has)i(t)o
(w)o(o)e(problems:)75 298 y(\(1\))g(The)h(t)o(w)o(o)f(op)q(erands)h(are)g
(not)f(of)f(the)i(same)f(t)o(yp)q(e.)18 b(This)13 b(can)h(remedied)f(b)o(y)g
(arti\014cially)e(replacing)i Ff(b)g Fp(b)o(y)g(the)75 348
y(pair)g Ff(<)f(b;)7 b(b)j(>)p Fp(.)18 b(Th)o(us,)13 b(compare&sw)o(ap)g
(will)f(w)o(ork)h(on)g(pairs)g(of)g(op)q(erands)h(\(or,)f(for)g(that)g
(matter,)f(it)h(can)g(w)o(ork)75 398 y(on)h(op)q(erands)g(of)g(the)g(st)o
(yle)g(used)h(for)f(minlo)q(c)e(and)h(maxlo)q(c\).)75 448 y(\(2\))h(The)g(op)
q(eration)g(is)g(not)g(asso)q(ciativ)o(e.)166 504 y(Using)20
b(nonasso)q(ciativ)o(e)h(op)q(erations)f(in)h(reduce)h(ma)o(y)c(ha)o(v)o(e)j
(strange)g(results.)39 b(One)21 b(p)q(ossibilit)o(y)f(is)g(to)75
561 y(allo)o(w)12 b(a)i(nonasso)q(ciativ)o(e)g(op)q(eration)f(as)h(argumen)o
(t)f(to)h Fk(MPI)p 1041 561 13 2 v 14 w(OP)p 1113 561 V 14
w(CREA)m(TE)p Fp(,)e(but)i(sp)q(ecify)h(that)f(the)g(outcome)f(is)75
617 y(unde\014ned)i(if)e(suc)o(h)h(op)q(eration)f(is)h(used)g(in)f(a)h
(collectiv)o(e)f(reduce.)20 b(Another)14 b(option)f(is)h(to)f(extend)i(the)f
Fk(comm)m(ute)75 674 y Fp(argumen)o(t)h(of)h Fk(MPI)p 390 674
V 15 w(OP)p 463 674 V 14 w(CREA)m(TE)p Fp(,)e(so)j(as)g(to)f(ha)o(v)o(e)g
(three)i(v)n(alues:)24 b(nonasso)q(ciativ)o(e,)16 b(asso)q(ciativ)o(e,)h
(asso)q(ciativ)o(e)75 730 y(and)d(comm)o(utativ)n(e.)75 964
y Fm(MPI)p 160 964 14 2 v 16 w(IRMW\()g(inbuf,)i(outbuf,)h(count,)f(datat)o
(yp)q(e,)g(dest,)g(disp,)g(op,)f(comm)n(,)c(request)17 b(\))117
1041 y Fp(IN)155 b Fm(inbuf)493 b Fp(address)15 b(of)f(input)f(bu\013er)i
(\(c)o(hoice\))117 1116 y(OUT)108 b Fm(outbuf)465 b Fp(address)15
b(of)f(output)g(bu\013er)h(\(c)o(hoice\))117 1191 y(IN)155
b Fm(count)482 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(bu\013ers)h
(\(in)o(teger\))117 1266 y(IN)155 b Fm(datat)o(yp)q(e)424 b
Fp(datat)o(yp)q(e)14 b(of)g(v)n(ariables)f(\(handle\))117 1341
y(IN)155 b Fm(ta)o(rget)475 b Fp(rank)14 b(of)f(target)i(pro)q(cess)g(\(in)o
(teger\))117 1417 y(INOUT)62 b Fm(disp)513 b Fp(displacemen)o(t)13
b(to)h(target)g(bu\013er)h(\(in)o(teger\))117 1492 y(IN)155
b Fm(op)541 b Fp(read-mo)q(dify-write)12 b(op)q(eration)i(\(handle\))117
1567 y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11 b(\(handle\))117
1642 y(OUT)108 b Fm(request)452 b Fp(request)16 b(ob)r(ject)e(\(handle\))75
1766 y Fr(int)23 b(MPI)p 245 1766 15 2 v 17 w(Irmw\()g(void)h(*inbuf,)f(void)
g(*outbuf,)g(int)g(count,)g(MPI)p 1384 1766 V 17 w(Datatype)g(datatype,)393
1823 y(int)h(target,)f(int)g(disp,)g(MPI)p 993 1823 V 17 w(Op)h(op,)f(MPI)p
1249 1823 V 17 w(Comm)g(comm,)g(MPI)p 1600 1823 V 17 w(Request)393
1879 y(*request)g(\))75 1966 y(MPI)p 150 1966 V 17 w(IRMW\()g(INBUF,)g
(OUTBUF,)g(COUNT,)g(DATATYPE,)g(TARGET,)f(DISP,)i(OP,)f(COMM,)g(REQUEST)393
2022 y(IERROR\))170 2079 y(<type>)g(INVBUF,)g(OUTBUF,)170 2135
y(INTEGER)g(DATATYPE,)g(TARGET,)g(DISP,)g(OP,)h(COMM,)f(REQUEST,)f(IERROR)166
2222 y Fv(Non)o(blo)q(c)o(king)16 b(v)o(ersion.)75 2365 y Fs(4.9)59
b(Global)20 b(Datat)n(yp)r(es)75 2466 y Fv(The)12 b(execution)g(of)f(a)g
(put/get)g(call)i(usually)g(requires)f(the)f(transfer)g(of)g(the)h(target)e
(datat)o(yp)q(e)h(argumen)o(t)75 2523 y(to)j(the)i(target)e(pro)q(cess.)20
b(When)15 b(the)g(same)g(target)f(datat)o(yp)q(e)h(is)g(rep)q(eatedly)h
(used,)g(the)f(problem)h(can)75 2579 y(b)q(e)g(alleviated)h(b)o(y)e(making)g
(this)h(datat)o(yp)q(e)e(\\globally)j(kno)o(wn".)1967 46 y
Fl(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 27 27
bop 75 -100 a Fn(4.10.)34 b(SEMANTICS)15 b(OF)g(PUT)g(AND)h(GET)e(OPERA)l
(TIONS)609 b Fv(27)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(TYPE)p
293 49 V 17 w(GLOBAL\(count,)16 b(t)o(yp)q(es,)g(comm)m(\))117
126 y Fp(IN)155 b Fm(count)482 b Fp(n)o(um)o(b)q(er)13 b(of)h(t)o(yp)q(es)g
(\(in)o(teger\))117 202 y(IN)155 b Fm(t)o(yp)q(es)490 b Fp(arra)o(y)14
b(of)f Fk(count)i Fp(t)o(yp)q(es)g(\(arra)o(y)f(of)f(handles\))117
277 y(IN)155 b Fm(comm)466 b Fp(RMC)14 b(comm)o(unicator)d(\(handle\))75
401 y Fr(int)23 b(MPI)p 245 401 15 2 v 17 w(Type)p 358 401
V 17 w(bcast\(int)f(count,)i(MPI)p 853 401 V 16 w(Datatype)f(*type,)g(MPI)p
1323 401 V 17 w(comm)g(comm\))75 488 y(MPI)p 150 488 V 17 w(TYPE)p
263 488 V 16 w(BCAST\()g(COUNT,)g(TYPES\(*\),)g(COMM,)g(IERROR\))170
544 y(INTEGER)g(COUNT,)g(TYPES,)g(COMM,)h(IERROR)166 631 y
Fv(This)16 b(function)h(allo)o(w)g(pro)q(cesses)f(to)f(\\publish")j(the)e
(datat)o(yp)q(es)f(in)i(the)f(arra)o(y)f Fm(t)o(yp)q(es)i Fv(and)f(mak)o(e)75
687 y(them)i(globally)i(kno)o(wn)e(to)g(all)i(pro)q(cesses)e(in)i(the)e
(group)g(of)g Fm(comm)n Fv(.)26 b(Eac)o(h)18 b(datat)o(yp)q(e)g(in)i(the)e
(arra)o(y)75 743 y Fm(t)o(yp)q(es)e Fv(should)g(b)q(e)f(a)f(committed)h
(datat)o(yp)q(e,)f(and)g Fm(t)o(yp)q(es[i])i Fv(should)g(ha)o(v)o(e)e(the)h
(same)f(t)o(yp)q(e)h(signature)g(at)75 800 y(all)k(pro)q(cesses,)f(for)f(eac)
o(h)g Fr(0)g Fg(\024)g Fr(i)f Fa(<)h Fr(count)g Fv(\(0)f Fa(<)h(i)f
Fg(\024)h Fa(count)p Fv(,)i(F)l(ortran\).)25 b(The)18 b(datat)o(yp)q(es)f
(need)h(not)75 856 y(ha)o(v)o(e)d(the)g(same)g(displacemen)o(ts.)166
913 y(If)g(a)f(pro)q(cess)g(subsequen)o(tly)i(uses)e(one)h(of)f(the)g(datat)o
(yp)q(es)g(it)h(published)i(in)e(the)f(arra)o(y)f Fm(t)o(yp)q(es)j
Fv(as)e(a)75 969 y(target)h(datat)o(yp)q(e)h(for)g(an)g(RMC)h(op)q(eration)f
(with)h(comm)o(unicator)f Fm(comm)m Fv(,)e(then)i(the)h(corresp)q(onding)75
1026 y(datat)o(yp)q(e)e(pro)o(vided)h(b)o(y)f(the)g(target)f(pro)q(cess)h
(will)i(b)q(e)f(substituted.)166 1165 y Fq(Discussion:)32 b
Fp(This)13 b(de\014nition)f(is)g(really)g(only)f(a)h(placeholder.)18
b(There)c(are)e(man)o(y)f(alternativ)o(es)h(that)h(w)o(e)75
1221 y(should)f(discuss.)18 b(The)13 b(datat)o(yp)q(es)f(could)g(b)q(e)h
(de\014ned)g(only)e(b)o(y)h(one)g(pro)q(cess,)i(then)f(broadcast;)f(the)h
(publication)75 1278 y(of)g(a)h(datat)o(yp)q(e)f(could)h(b)q(e)g(a)g
(one-sided)g(op)q(eration,)f(whereb)o(y)i(a)e(pro)q(cess)j(can)e(register)h
(a)e(datat)o(yp)q(e)h(at)g(another)75 1334 y(pro)q(cess,)f(via)e(an)g
(RPC-lik)o(e)f(mec)o(hanism.)15 b(W)m(e)c(could)g(mak)o(e)f(these)i(datat)o
(yp)q(es)g(global,)e(rather)i(than)f(asso)q(ciating)75 1391
y(them)i(with)h(a)f(sp)q(eci\014c)j(comm)o(uni)o(cator;)11
b(etc.)75 1617 y Fs(4.10)60 b(Semantics)17 b(of)j(Put)g(and)f(Get)h(Op)r
(erations)75 1718 y Fv(When)11 b(a)g(put)g(or)f(get)g(completes)i(then)f(the)
g(origin)h(bu\013er)e(can)h(b)q(e)h(used:)18 b(the)11 b(op)q(eration)g(has)g
(completed)75 1775 y(at)16 b(the)g(origin.)24 b(In)17 b(the)g(case)f(of)g(a)g
(put,)h(the)f(data)g(has)g(b)q(een)i(copied)g(out;)e(in)h(the)g(case)f(of)g
(a)g(get,)g(the)75 1831 y(data)f(has)g(b)q(een)h(copied)g(in.)166
1887 y(When)f(a)g(put)g(or)f(get)g(up)q(dates)i(the)f(target)e(request,)i
(then)g(the)g(target)e(bu\013er)i(can)g(b)q(e)h(used:)k(the)75
1944 y(op)q(eration)c(has)g(completed)h(at)e(the)h(target.)21
b(In)16 b(the)g(case)g(of)g(a)f(get,)h(the)g(data)f(has)h(b)q(een)h(copied)g
(out;)75 2000 y(in)f(the)f(case)h(of)e(a)h(put,)g(the)g(data)g(has)g(b)q(een)
h(copied)h(in.)166 2057 y(Calling)22 b Fm(MPI)p 413 2057 14
2 v 15 w(BARRIER)g Fv(with)f(a)f(comm)o(unicator)g(returned)g(b)o(y)h(one)f
(of)g(the)g Fm(MPI)p 1659 2057 V 16 w(RMC)p 1773 2057 V 17
w(INIT)75 2113 y Fv(calls)j(has)f(the)g(additional)h(seman)o(tics)g(of)e(a)h
(fence)h(with)f(resp)q(ect)g(to)g(puts)g(and)g(gets.)40 b(All)23
b(RMC)75 2170 y(comm)o(unications)14 b(issued)g(on)e(the)h(comm)o(unicator)g
(b)q(efore)g(the)g(call)h(to)f Fm(MPI)p 1401 2170 V 15 w(BARRIER)i
Fv(will)f(complete)75 2226 y(at)e(the)h(target)e(b)q(efore)i
Fm(MPI)p 554 2226 V 16 w(BARRIER)h Fv(completes.)20 b(Similarly)l(,)15
b(a)d(call)i(to)e Fm(MPI)p 1449 2226 V 16 w(FENCE)h Fv(has)f(the)h(e\013ect)
75 2283 y(that)h(all)i(RMC)f(comm)o(unications)h(issued)g(b)o(y)f(the)g
(caller)h(b)q(efore)f(the)g(call)h(to)f(fence)g(will)i(complete)f(at)75
2339 y(the)f(target)f(b)q(efore)i(the)f(fence)h(call)g(returns.)166
2396 y(W)l(e)f(prop)q(ose)h(the)f(follo)o(wing)h(atomicit)o(y)f(requiremen)o
(ts)g(for)g(RMC)g(op)q(erations:)131 2489 y(1.)22 b(The)14
b(execution)h(of)e(a)h(Read)p 674 2489 V 17 w(Mo)q(dify)p 832
2489 V 17 w(W)l(rite)g(op)q(eration)g(at)f(the)h(target)f(pro)q(cess)h(is)h
(atomic)f(with)189 2546 y(resp)q(ect)j(to)f(other)g(Read)p
627 2546 V 17 w(Mo)q(dify)p 785 2546 V 17 w(W)l(rite)h(op)q(erations.)25
b(I.e.,)16 b(the)h(outcome)f(is)i(as)e(if)h(the)g(RMW)189 2602
y(op)q(erations)e(w)o(ere)g(serialized.)22 b(This)16 b(allo)o(ws,)f(for)f
(example,)i(to)f(use)g(an)g Fk(MPI)p 1516 2602 13 2 v 15 w(LOR)g
Fv(op)q(eration)g(on)189 2659 y(an)g(arra)o(y)f(of)g(v)m(ariables)j(as)e(one)
g(atomic)g(sync)o(hronization)h(op)q(eration.)-32 46 y Fl(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40
667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175
y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40
1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699
y(48)p eop
%%Page: 28 28
bop 75 -100 a Fv(28)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)131 49 y Fv(2.)22 b(The)13 b(execution)g(of)g(an)f(accum)o(ulate)h
(op)q(eration)g(at)f(the)h(target)f(pro)q(cess)h(is)g(atomic)f(with)h(resp)q
(ect)189 106 y(to)k(other)g(accum)o(ulate)h(op)q(erations)g(for)f(eac)o(h)h
(up)q(dated)h(elemen)o(t.)28 b(I.e.,)18 b(the)g(outcome)f(is)h(as)f(if)189
162 y(all)h(accum)o(ulation)h(op)q(erations)f(o)q(ccurred)g(in)h(some)e
(serial)i(order)e(for)g(eac)o(h)h(elemen)o(t,)h(but)e(not)189
219 y(necessarily)f(the)f(same)g(order)f(for)h(eac)o(h)g(elemen)o(t.)20
b(This)c(is)f(the)h(minimal)g(requiremen)o(t)g(needed)189 275
y(for)e(concurren)o(t)h(accum)o(ulates)h(to)f(b)q(e)g(useful.)131
369 y(3.)22 b(The)15 b(outcome)g(of)f(concurren)o(t)i(puts)f(and)g(gets)g
(that)f(access)h(the)g(same)g(memory)g(is)g(unde\014ned.)189
425 y(If)g(the)f(user)h(w)o(an)o(ts)f(more)g(stringen)o(t)g(atomicit)o(y)h
(requiremen)o(ts)g(on)g(put/get,)f(he/she)h(will)h(need)189
482 y(to)e(implemen)o(t)j(them)e(as)g(sw)o(ap)f(RMC)h(calls,)h(or)f
Fk(MPI)p 1122 482 13 2 v 14 w(LAST)h Fv(accum)o(ulate)g(calls.)166
658 y Fq(Discussion:)48 b Fp(The)18 b(curren)o(t)g(prop)q(osal)f(assumes)h
(no)f(ordering)g(requiremen)o(ts)h(on)f(RMC)g(op)q(erations.)75
715 y(P)o(ossible)d(additional)e(ordering)i(requiremen)o(ts:)75
771 y(1.)j(A)c(get)g(follo)o(wing)d(a)i(put)h(from)d(the)k(same)d(pro)q(cess)
k(to)d(the)h(same)f(target)h(area)g(reads)g(the)g(data)f(from)f(the)i(put.)75
828 y(2.)k(Tw)o(o)c(puts)g(called)f(in)h(succession)h(from)d(the)j(same)d
(pro)q(cess)k(to)e(the)g(same)f(target)h(area)g(result)g(in)g(the)g(data)f
(in)75 884 y(the)i(target)h(from)d(the)i(second)h(put.)75 1166
y Fs(4.11)60 b(Communication)16 b(handlers)75 1268 y Fv(In)g(man)o(y)f
(situations)h(it)g(is)g(desirable)h(to)e(in)o(v)o(ok)o(e,)g(up)q(on)h
(message)f(arriv)m(al,)h(a)f(message)g(handler.)22 b(The)75
1324 y(send&call)c(and)e(receiv)o(e&call)j(functions)e(in)o(tro)q(duced)g(b)q
(elo)o(w)f(can)h(b)q(e)f(used)h(to)e(implemen)o(t)j(the)e(gen-)75
1381 y(eralized)22 b(requests)e(in)o(tro)q(duced)h(in)g(the)f(External)g(In)o
(terface)g(c)o(hapter;)i(they)e(can)g(also)g(b)q(e)h(used)g(to)75
1437 y(implemen)o(t)f(new)g(non)o(blo)q(c)o(king)g(calls,)h(suc)o(h)e(as)g
(non)o(blo)q(c)o(king)h(comm)o(unication)g(or)f(task)f(spa)o(wning.)75
1494 y(Con)o(v)o(ersely)l(,)13 b(the)f(generalized)i(requests)f(of)f(the)g
(External)h(In)o(terface)f(c)o(hapter)g(are)g(more)g(general)h(than)75
1550 y(the)k(send&call)i(and)e(receiv)o(e&call)j(functions)d(discussed)i
(here,)e(and)h(can)f(b)q(e)g(used)h(to)e(implemen)o(ted)75
1607 y(those.)166 1663 y(The)23 b(activ)o(e)h(message)f(in)o(terface)g
(presen)o(ted)h(in)g(the)f(next)h(section)f(is)h(a)f(lo)o(w)o(er-lev)o(el,)j
(lo)o(w)o(er-)75 1720 y(o)o(v)o(erhead)15 b(mec)o(hanism)h(for)e(triggering)i
(an)f(activit)o(y)g(up)q(on)h(message)f(arriv)m(al.)1967 46
y Fl(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 29 29
bop 75 -100 a Fn(4.11.)34 b(COMMUNICA)l(TION)16 b(HANDLERS)939
b Fv(29)75 49 y Fi(4.11.1)49 b(Comm)o(unicate&Call)15 b(functions)75
230 y Fm(MPI)p 160 230 14 2 v 16 w(HRECV\()h(buf,)f(count,)h(datat)o(yp)q(e,)
h(source,)e(tag,)g(comm)m(,)d(status,)17 b(extra)p 1387 230
V 16 w(state,)f(handler\))117 307 y Fp(OUT)108 b Fm(buf)527
b Fp(initial)12 b(address)j(of)f(receiv)o(e)h(bu\013er)g(\(c)o(hoice\))117
382 y(IN)155 b Fm(count)482 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h
(receiv)o(e)h(bu\013er)g(\(in)o(teger\))117 457 y(IN)155 b
Fm(datat)o(yp)q(e)424 b Fp(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(receiv)o(e)h
(bu\013er)g(elemen)o(t)e(\(handle\))117 532 y(IN)155 b Fm(source)468
b Fp(rank)14 b(of)f(source)j(\(in)o(teger\))117 607 y(IN)155
b Fm(tag)526 b Fp(message)14 b(tag)f(\(in)o(teger\))117 682
y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11 b(\(handle\))117
758 y(IN)155 b Fm(extra)p 416 758 V 17 w(state)384 b Fp(extra)15
b(state)f(for)g(handler)117 833 y(OUT)108 b Fm(status)476 b
Fp(status)15 b(ob)r(ject)117 908 y(IN)155 b Fm(handler)449
b Fp(receiv)o(e)15 b(handler)f(\(function\))75 1032 y Fr(int)23
b(MPI)p 245 1032 15 2 v 17 w(Hrecv\(void*)g(buf,)g(int)g(count,)g(MPI)p
1002 1032 V 17 w(Datatype)g(datatype,)g(int)g(source,)393 1089
y(int)h(tag,)f(MPI)p 683 1089 V 17 w(Comm)g(comm,)g(MPI)p 1034
1089 V 17 w(Status)g(*status,)g(void)g(*extra)p 1696 1089 V
16 w(state,)393 1145 y(MPI)p 468 1145 V 17 w(Hrecv)p 605 1145
V 16 w(handler)g(*handler\))75 1232 y(MPI)p 150 1232 V 17 w(IRECV\(BUF,)f
(COUNT,)h(DATATYPE,)g(SOURCE,)g(TAG,)g(COMM,)g(EXTRA)p 1408
1232 V 17 w(STATE,)g(IERROR\))170 1288 y(<type>)g(BUF\(*\))170
1345 y(INTEGER)g(COUNT,)g(DATATYPE,)g(SOURCE,)g(TAG,)g(COMM,)g(STATUS\(MPI)p
1463 1345 V 16 w(STATUS)p 1623 1345 V 17 w(SIZE\),)170 1401
y(EXTRA)p 293 1401 V 17 w(STATE,)g(IERROR)170 1457 y(PROCEDURE)g(HANDLER)166
1544 y Fv(Beha)o(v)o(es)18 b(iden)o(tically)i(to)e Fr(MPI)p
700 1544 V 17 w(IRECV)p Fv(,)f(except)h(that,)g(after)f(message)h(reception)h
(is)f(completed,)75 1600 y(the)d(function)h(indicated)h(b)o(y)e
Fr(handler)g Fv(is)g(in)o(v)o(ok)o(ed.)20 b Fr(handler)15 b
Fv(is)g(a)g(p)q(oin)o(ter)h(to)e(a)h(function)h(of)f(t)o(yp)q(e)75
1707 y Fr(typedef)23 b(int)g(MPI_Hrecv_handler\()f(void)h(*extra_state,)f
(MPI_status)h(*status\))166 1813 y Fv(in)16 b(C,)f(and)g(of)g(t)o(yp)q(e)75
1919 y Fr(PROCEDURE)46 b(MPI_HRECV_HANDLER\()22 b(EXTRA_STATE,)46
b(STATUS,)23 b(IERR\))99 1976 y(INTEGER)70 b(EXTRA_STATE,)23
b(STATUS\(MPI_STATUS_SIZE\),)d(IERR)166 2082 y Fv(in)g(F)l(ortran.)31
b(When)20 b(in)o(v)o(ok)o(ed)f(b)o(y)g(MPI,)g(the)g(receiv)o(e)i(handler)f
(is)g(passed)f(the)g Fm(extra)p 1694 2082 14 2 v 17 w(state)h
Fv(ar-)75 2138 y(gumen)o(t)g(and)g(and)h(a)e Fm(status)k Fv(argumen)o(t)c
(that)g(con)o(tains)i(information)f(on)g(the)g(completed)h(Receiv)o(e)75
2195 y(\(coun)o(t,)d(tag,)g(source)g(and)h(error)e(co)q(de\).)30
b(If)18 b(an)g(error)g(o)q(ccurs)g(during)i(the)e(receiv)o(e)h(op)q(eration)g
(then)75 2251 y(the)c(error)f(co)q(de)i(is)g(passed)f(to)f(the)i(receiv)o(e)g
(handler)g(via)f(the)g(status)f(argumen)o(t)h(\(this,)g(assuming)g(the)75
2308 y(error)f(is)i(not)f(fatal;)f(the)i(regular)f(error)f(handler)j(is)e(in)
o(v)o(ok)o(ed)h(\014rst\).)166 2447 y Fq(Discussion:)35 b Fp(Is)14
b(an)g(exception)h(during)f(the)h(execution)f(of)g(the)h(handler)f(treated)h
(as)g(an)e(MPI)i(comm)o(u-)75 2503 y(nication)e(error?)-32
46 y Fl(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 30 30
bop 75 -100 a Fv(30)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(HSEND\()g(buf,)h(count,)g(datat)o
(yp)q(e,)g(dest,)h(tag,)d(comm)n(,)d(extra)p 1205 49 V 17 w(state,)16
b(handler\))117 126 y Fp(OUT)108 b Fm(buf)527 b Fp(initial)12
b(address)j(of)f(receiv)o(e)h(bu\013er)g(\(c)o(hoice\))117
201 y(IN)155 b Fm(count)482 b Fp(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h
(receiv)o(e)h(bu\013er)g(\(in)o(teger\))117 275 y(IN)155 b
Fm(datat)o(yp)q(e)424 b Fp(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(receiv)o(e)h
(bu\013er)g(elemen)o(t)e(\(handle\))117 349 y(IN)155 b Fm(dest)511
b Fp(rank)14 b(of)f(destination)h(\(in)o(teger\))117 423 y(IN)155
b Fm(tag)526 b Fp(message)14 b(tag)f(\(in)o(teger\))117 498
y(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)11 b(\(handle\))117
572 y(IN)155 b Fm(extra)p 416 572 V 17 w(state)384 b Fp(extra)15
b(state)f(for)g(handler)g(function)117 646 y(IN)155 b Fm(handler)449
b Fp(send)15 b(handler)f(\(function\))75 771 y Fr(int)23 b(MPI)p
245 771 15 2 v 17 w(Hsend\(void*)g(buf,)g(int)g(count,)g(MPI)p
1002 771 V 17 w(Datatype)g(datatype,)g(int)g(dest,)393 827
y(int)h(tag,)f(MPI)p 683 827 V 17 w(Comm)g(comm,)g(void)h(*extra)p
1226 827 V 16 w(state,)393 884 y(MPI)p 468 884 V 17 w(Handler)f(*handler\))75
970 y(MPI)p 150 970 V 17 w(IRECV\(BUF,)f(COUNT,)h(DATATYPE,)g(SOURCE,)g(TAG,)
g(COMM,)g(IERROR\))170 1026 y(<type>)g(BUF\(*\))170 1083 y(INTEGER)g(COUNT,)g
(DATATYPE,)g(DEST,)g(TAG,)h(COMM,)f(EXTRA)p 1296 1083 V 16
w(STATE,)g(IERROR)170 1139 y(PROCEDURE)g(MPI)p 484 1139 V 17
w(HANDLER)166 1226 y Fv(Beha)o(v)o(es)16 b(iden)o(tically)i(to)d
Fr(MPI)p 693 1226 V 17 w(ISEND)p Fv(,)f(except)i(that,)f(after)g(send)h(has)g
(completed,)g(the)g(function)75 1282 y(indicated)h(b)o(y)e
Fr(handler)f Fv(is)i(in)o(v)o(ok)o(ed.)k(The)c(send)f(handler)i(function)f
(is)f(of)g(t)o(yp)q(e)75 1382 y Fr(typedef)23 b(int)g(MPI_Hsend_handler\()f
(void)h(*extra_state\))166 1482 y Fv(in)16 b(C,)f(and)g(of)g(t)o(yp)q(e)75
1582 y Fr(PROCEDURE)46 b(MPI_HSEND_HANDLER\()22 b(EXTRA_STATE,)g(IERR\))99
1639 y(INTEGER)70 b(EXTRA_STATE,)47 b(IERR)166 1739 y Fv(in)13
b(F)l(ortran.)k(When)c(in)o(v)o(ok)o(ed)f(b)o(y)g(MPI,)g(the)g(send)g
(handler)i(is)e(passed)g(the)h Fm(extra)p 1557 1739 14 2 v
16 w(state)g Fv(argumen)o(t.)75 1890 y Fm(MPI)p 160 1890 V
16 w(HLOCK\(com)o(m)n(\))117 1967 y Fp(IN)155 b Fm(comm)466
b Fp(comm)o(unicator)11 b(\(handle\))75 2092 y Fr(int)23 b(MPI)p
245 2092 15 2 v 17 w(Hlock\(MPI)p 478 2092 V 16 w(Comm)g(comm\))75
2178 y(MPI)p 150 2178 V 17 w(HLOCK\()g(COMM,)g(IERR\))170 2235
y(INTEGER)g(COMM,)h(IERR)75 2415 y Fm(MPI)p 160 2415 14 2 v
16 w(HUNLOCK\(comm)m(\))117 2493 y Fp(IN)155 b Fm(comm)466
b Fp(comm)o(unicator)11 b(\(handle\))75 2617 y Fr(int)23 b(MPI)p
245 2617 15 2 v 17 w(Hunlock\(MPI)p 526 2617 V 16 w(Comm)g(comm\))75
2704 y(MPI)p 150 2704 V 17 w(HUNLOCK\()g(COMM,)g(IERR\))1967
46 y Fl(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967
328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836
y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 31 31
bop 75 -100 a Fn(4.11.)34 b(COMMUNICA)l(TION)16 b(HANDLERS)939
b Fv(31)170 49 y Fr(INTEGER)23 b(COMM,)h(IERR)166 136 y Fv(The)17
b(call)h Fm(MPI)p 431 136 14 2 v 16 w(HLOCK)f Fv(disables)h(the)f(execution)h
(of)f(comm)o(unication)h(handlers)g(in)f(comm)o(uni-)75 192
y(cations)e(that)f(use)h(the)g(comm)o(unicator)g Fm(comm)m
Fv(.)i(The)e(call)h Fm(MPI)p 1189 192 V 15 w(UNLOCK)f Fv(enables)h(them)f
(bac)o(k.)20 b(The)75 249 y(calls)14 b(can)f(b)q(e)h(executed)g(within)g(a)f
(handler,)h(in)g(whic)o(h)g(case)f Fm(MPI)p 1209 249 V 16 w(HLOCK)g
Fv(disables)h(execution)h(of)d(an)o(y)75 305 y(additional)17
b(handler.)166 444 y Fq(Discussion:)34 b Fp(Ma)o(y)14 b(w)o(an)o(t)f(\014ner)
i(\(p)q(er)g(handler)f(t)o(yp)q(e\))h(or)f(coarser)h(\(global\))e(lo)q(c)o
(king)g(gran)o(ularit)o(y)m(.)k(Note)75 501 y(that)c(an)g(implem)o(en)o
(tation)d(that)j(disables)g(all)f(handlers,)h(not)g(just)g(those)h(asso)q
(ciated)f(with)g Fk(comm)m Fp(,)d(is)j(incorrect)75 557 y(\(it)h(violates)f
(the)h(progress)i(rule\).)166 696 y Fv(Handlers)g(are)f(in)o(v)o(ok)o(ed)h
(within)h(the)e(same)h(thread)f(of)g(execution)i(as)e(the)g(Hsend)h(or)f
(Hrecv)h(call.)75 753 y(They)f(can)h(execute)g(MPI)f(calls,)h(with)f(no)g
(restrictions.)166 885 y Fq(Discussion:)33 b Fp(What)13 b(happ)q(ens)h(if)e
(the)i(calling)e(thread)i(is)f(blo)q(c)o(k)o(ed)g(\(not)g(necessarily)h(on)f
(a)g(comm)o(unica-)75 935 y(tion\)?)18 b(Will)12 b(the)i(handler)g(execution)
h(b)q(e)f(dela)o(y)o(ed)g(un)o(til)f(it)h(un)o(blo)q(c)o(ks?)166
985 y(Additional)d(constructs)k(ma)o(y)10 b(b)q(e)k(required)f(for)f(in)o(v)o
(oking)f(handlers)i(that)g(execute)h(in)f(a)f(separate)i(thread.)166
1041 y(Since)19 b(w)o(e)g(allo)o(w)e(arbitrary)h(comm)o(unication)e(calls)i
(within)g(the)h(handler,)g(this)g(will)e(include)i(blo)q(c)o(king)75
1098 y(comm)o(unication)10 b(calls)k(and)g(also)f(receiv)o(e&call.)19
b(Handler)14 b(in)o(v)o(o)q(cations)f(can)h(b)q(e)g(nested.)166
1320 y Fq(Missing:)40 b Fp(W)m(e)15 b(ma)o(y)e(w)o(an)o(t)i(additional)e
(\\H")i(calls.)22 b(E.g.,)14 b Fk(MPI)p 1222 1320 13 2 v 14
w(HINIT)h Fp(and)g Fk(MPI)p 1518 1320 V 15 w(HFREE)f Fp(\(these)j(t)o(w)o(o,)
75 1376 y(together)12 b(with)e Fk(MPI)p 404 1376 V 15 w(HSEND)h
Fp(and)g Fk(MPI)p 719 1376 V 14 w(HRECV)p Fp(,)f(allo)o(w)f(to)h(build)g(the)
i(generalized)f(requests\);)j Fk(MPI)p 1687 1376 V 14 w(HBSEND,)75
1432 y(MPI)p 152 1432 V 14 w(HSSEND,)c(MPI)p 422 1432 V 14
w(HRSEND)p Fp(,)f(for)g(the)h(other)g(comm)o(unication)c(mo)q(des;)j
Fk(MPI)p 1346 1432 V 15 w(HSENDRECV)f Fp(and)i Fk(MPI)p 1764
1432 V 14 w(SENDRECV)p 1992 1432 V 14 w(REPLA)o(CE)p Fp(;)75
1489 y(p)q(ersisten)o(t)16 b(v)o(ersions)e(of)f(those.)75 1693
y Fi(4.11.2)49 b(Active)17 b(Messages)75 1862 y Fq(Discussion:)37
b Fp(There)16 b(has)e(b)q(een)i(no)e(discussion)i(of)e(this)g(section.)21
b(This)15 b(is)f(a)h(placeholder)g(un)o(til)e(the)i(sub)r(ject)75
1918 y(gets)g(discussed.\))-32 46 y Fl(1)-32 103 y(2)-32 159
y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441
y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40
724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40
1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248
y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 32 32
bop 75 -100 a Fv(32)723 b Fn(CHAPTER)15 b(4.)35 b(ONE)16 b(SIDED)f(COMMUNICA)
l(TIONS)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(AM)p 246 49 V 16
w(INIT\()f(comm)n(,)d(count,)16 b(t)o(yp)q(es,)h(handler,)e(new)o(comm)n(\))
117 126 y Fp(IN)155 b Fm(comm)466 b Fp(comm)o(unicator)14 b(for)i(group)h(of)
f(pro)q(cesses)j(in)o(v)o(olv)o(ed)d(in)g(ini-)905 183 y(tialization)c
(\(handle\))117 258 y(IN)155 b Fm(count)482 b Fp(n)o(um)o(b)q(er)13
b(of)h(handler)g(argumen)o(ts)f(\(in)o(teger\))117 333 y(IN)155
b Fm(t)o(yp)q(es)490 b Fp(handler)14 b(argumen)o(t)f(t)o(yp)q(es)i(\(arra)o
(y)f(of)f(handles\))117 408 y(IN)155 b Fm(handler)449 b Fp(activ)o(e)14
b(message)g(handler)g(\(function\))117 483 y(OUT)108 b Fm(new)o(comm)393
b Fp(new)10 b(comm)o(unicator)c(to)k(b)q(e)f(used)i(for)e(activ)o(e)g
(messages)g(\(han-)905 540 y(dle\))75 664 y Fr(int)23 b(MPI)p
245 664 15 2 v 17 w(AM)p 310 664 V 17 w(init\()g(MPI)p 542
664 V 17 w(Comm)g(comm,)h(int)f(count,)g(MPI)p 1156 664 V 17
w(Datatype)g(*types,)g(void*)393 721 y(handler,)g(MPI)p 683
721 V 17 w(Comm*)g(newcomm\))75 807 y(MPI)p 150 807 V 17 w(AM)p
215 807 V 17 w(INIT\()g(COMM,)g(COUNT,)g(TYPES\(*\),)g(HANDLER,)f(NEWCOMM,)h
(IERROR\))170 864 y(INTEGER)g(COMM,)h(COUNT,)f(TYPES\(*\),)f(NEWCOMM,)h
(IERROR)170 920 y(EXTERNAL)g(HANDLER)166 1007 y Fv(This)13
b(is)f(a)g(collectiv)o(e)i(call)f(executed)g(b)o(y)f(all)h(pro)q(cesses)f(in)
h(the)f(group)g(of)f Fm(comm)m Fv(.)16 b(It)c(returns)g(a)g(new)75
1063 y(comm)o(unicator)k Fm(new)o(comm)n Fv(,)d(whic)o(h)k(is)f(a)g(cop)o(y)h
(of)e Fm(comm)n Fv(.)20 b(It)c(asso)q(ciates)g(with)h(this)f(comm)o
(unication)75 1120 y(the)11 b(activ)o(e)h(message)f(handler)h
Fm(handler)p Fv(.)19 b(This)12 b(is)g(a)f(C)g(function)h(with)g
Fm(count)g Fv(argumen)o(ts)f(whic)o(h)h(returns)75 1176 y(no)f(v)m(alue.)20
b(Eac)o(h)11 b(argumen)o(t)g(is)g(of)g(a)g(basic)h(t)o(yp)q(e.)19
b(The)11 b(arra)o(y)f Fm(t)o(yp)q(es)j Fv(sp)q(eci\014es)g(the)e(basic)h(MPI)
f(datat)o(yp)q(e)75 1232 y(that)j(corresp)q(onds)i(to)f(the)g(C)g(t)o(yp)q(e)
g(of)g(eac)o(h)g(argumen)o(t)g(of)f Fm(handler)p Fv(.)166 1289
y(A)f(message)f(sen)o(t)h(with)g(comm)o(unicator)g Fm(new)o(comm)7
b Fv(m)o(ust)12 b(ha)o(v)o(e)h(a)f(t)o(yp)q(e)h(signature)g(that)f(matc)o
(hes)75 1345 y Fm(t)o(yp)q(es)p Fv(.)21 b(Up)q(on)13 b(arriv)m(al)g(of)g(suc)
o(h)g(message,)f(the)h(function)h Fm(handler)f Fv(is)h(in)o(v)o(ok)o(ed)f
(and)g(passed)g(the)f(message)75 1402 y(as)j(argumen)o(t.)k(Th)o(us,)c(no)g
(receiv)o(e)h(calls)g(can)g(b)q(e)f(p)q(osted)h(with)f Fm(new)o(comm)n
Fv(.)166 1458 y(An)g(activ)o(e)h(message)e(handler)j(should)f(not)f(in)o(v)o
(ok)o(e)g(other)g(MPI)g(functions)h(or)f(system)f(calls.)166
1591 y Fq(Discussion:)33 b Fp(W)m(e)14 b(use)g(a)f(comm)o(unicator)e(to)i
(select)i(whic)o(h)f(handler)g(is)f(in)o(v)o(ok)o(ed,)f(so)i(as)g(to)f(ha)o
(v)o(e)g(a)h(v)o(ery)75 1641 y(fast)j(selection)g(mec)o(hanism.)24
b(W)m(e)16 b(could)h(use)g(comm)o(unicator+tag,)d(if)i(this)h(seems)f
(preferable.)28 b(In)16 b(a)h(\\true")75 1690 y(activ)o(e)c(message)f(in)o
(terface,)h(the)g(sender)h(sp)q(eci\014es)h(directly)e(whic)o(h)f(handler)h
(to)f(in)o(v)o(ok)o(e.)17 b(I)c(am)e(not)h(sure)i(w)o(e)f(can)75
1740 y(\014t)j(suc)o(h)h(in)o(terface)g(in)o(to)f(MPI)g(\(think)g
(heterogeneous,)j(dynamic)14 b(linking,)h(pro)q(cess)j(migration,)c(etc.\).)
25 b(More)75 1790 y(imp)q(ortan)o(tly)m(,)7 b(w)o(e)j(will)d(w)o(an)o(t)i(to)
g(preserv)o(e)j(the)e(insulation)e(b)q(et)o(w)o(een)i(di\013eren)o(t)h(comm)o
(unicati)o(on)c(domains.)14 b(Th)o(us,)75 1840 y(iden)o(tifying)g(the)h
(handler)h(b)o(y)f(comm)o(unicator)d(is)j(the)h(most)e(e\016cien)o(t)i(mec)o
(hanism)c(that)k(preserv)o(es)h(insulation)75 1890 y(b)q(et)o(w)o(een)e(comm)
o(unication)c(domains)h(and)h(asso)q(ciates)i(handlers)g(to)e(incoming)f
(messages.)166 1939 y(W)m(e)i(assumed)g(that)h(the)g(message)f(is)g(passed)i
(b)o(y)e(v)n(alue)g(\(in)g(registers)i(or)e(on)h(the)g(stac)o(k\))g(to)f(the)
h(handler.)75 1989 y(This)g(causes)i(a)e(problem)g(for)g(a)g(F)m(ortran)g
(binding.)22 b(If,)15 b(instead,)h(the)g(message)f(is)h(passed)g(b)o(y)f
(reference,)j(then)75 2039 y(the)g(implem)o(en)o(tation)c(needs)19
b(to)e(k)o(eep)h(trac)o(k)f(of)f(activ)o(e)i(handlers,)g(so)f(as)g(to)g(free)
h(bu\013ers)g(once)g(the)g(handler)75 2089 y(completed)13 b(execution)i(\(or)
f(garbage)g(collect\).)166 2139 y(The)e(function)f(is)h(passed)g(as)g(p)q
(oin)o(ter)g(of)f(t)o(yp)q(e)h Fk(\()p Fp(v)o(oid)f(*\),)g(so)h(as)f(to)h(a)o
(v)o(oid)e(the)i(need)h(to)e(sp)q(ecify)h(the)h(n)o(um)o(b)q(er)75
2189 y(and)h(t)o(yp)q(es)g(or)g(its)g(argumen)o(ts.)166 2238
y(W)m(e)g(ma)o(y)f(w)o(an)o(t)h(di\013eren)o(t)i(kinds)e(of)g(handlers:)20
b(handlers)15 b(that)g(can)g(execute)h(MPI)f(or)f(system)h(calls,)f(but)75
2288 y(ma)o(y)e(b)q(e)i(slo)o(w)o(er)g(to)f(react,)h(handlers)h(that)e(are)h
(in)o(v)o(ok)o(ed)f(in)g(a)h(new)g(thread,)g(etc.)19 b(If)13
b(this)h(is)f(required,)h(then)h(one)75 2338 y(will)d(need)j(an)f(additional)
e(argumen)o(t)h(in)g(the)i(initialization)c(call.)166 2388
y(Do)f(w)o(e)g(sp)q(ecify)h(that)g(only)f(one)g(handler)h(instance)g(execute)
i(at)d(a)g(time?)16 b(Or)11 b(is)f(this)g(y)o(et)h(another)g(argumen)o(t)75
2438 y(of)j(the)i(initialization)c(call?)19 b(If)c(m)o(ultiple)d(handlers)k
(can)e(b)q(e)i(asso)q(ciated)f(with)g(the)g(same)f(comm)o(unicator)e(\(and)75
2487 y(disam)o(biguated)g(b)o(y)i(tag,)f(for)g(example\),)g(then)h(one)h
(could)e(ha)o(v)o(e,)h(for)f(eac)o(h)i(suc)o(h)g(comm)o(unicator,)10
b(a)k(b)q(ound)g(on)75 2537 y(the)g(n)o(um)o(b)q(er)g(of)f(concurren)o(t)j
(instances.)166 2594 y(Do)f(w)o(e)h(w)o(an)o(t)f(the)h(message)f(tag)g(to)h
(b)q(e)g(passed)g(as)g(an)f(additional)f(argumen)o(t)h(to)g(the)h(handler?)23
b(Or)16 b(the)75 2650 y(message)e(source?)19 b(Or)14 b(the)h(en)o(tire)f
(message)g(status?)1967 46 y Fl(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967
498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959
1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959
1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959
1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959
1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959
1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959
2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959
2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959
2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF

-------------------

Marc Snir
IBM T.J. Watson Research Center
P.O. Box 218, Yorktown Heights, NY 10598
email: snir@watson.ibm.com
phone: 914-945-3204
fax: 914-945-4425