And thanks to Dick Treumann about his comments and better
formulations of the volatile section.
Rolf
Rolf Rabenseifner (Computer Center )
Rechenzentrum Universitaet Stuttgart (University of Stuttgart)
Allmandring 30 Phone: ++49 711 6855530
D-70550 Stuttgart 80 FAX: ++49 711 6787626
Germany rabenseifner@rus.uni-stuttgart.de
--------------------------------------------------------------
%!PS-Adobe-2.0
%%Creator: dvips 5.490 Copyright 1986, 1992 Radical Eye Software
%%Title: mpi2_main.dvi
%%Pages: 3 1
%%BoundingBox: 0 0 596 842
%%EndComments
%DVIPSCommandLine: dvips mpi2_main
%%BeginProcSet: tex.pro
%!
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}
B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0]
concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize
-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix
currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put
setmatrix}N /@landscape{/isls true 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 /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
.99 lt{/FV}{/RV}ifelse load def pop}N /eop{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 65781.76 div /vsize X 65781.76 div
/hsize X}N /p{show}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{}B /RV statusdict begin /product where{pop
product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval
(NeXT)eq or}{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 /FV{gsave
transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
rlineto rulex neg 0 rlineto fill grestore}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{SS restore}B end
%%EndProcSet
TeXDict begin 39158280 55380996 1000 300 300 @start /Fa 21
91 df<3078F8787005057C840D>46 D<0018003801F80E700070007000700070007000E000E000
E000E000E000E001C001C001C001C001C001C003800380038003800380038007000780FFFC0E1E
7B9D17>49 D<007E0001C3000301800601C00E01C01C00C03C00E03C00E03C01E07801E07801E0
7801E07801E07803E07803E03803C03807C01C0BC00C13C003E380000780000780000700000F00
600E00F01C00F01800E0300080600041C0003F0000131F7C9D17>57 D<0000080000000C000000
1C0000003C0000003C0000007C0000007E0000009E0000009E0000011E0000011E0000021E0000
020F0000040F0000040F0000080F0000080F0000100F80001007800020078000200780007FFF80
004007C0008003C0008003C0010003C0010003C0020003C0020001E0060001E01F0003E0FF801F
FE1F207F9F22>65 D<07FFFF0000F803C0007801E0007800F000F000F800F000F800F000F800F0
00F800F000F800F000F001E001F001E003E001E003C001E00F8001FFFE0001E00F8003C003C003
C001E003C001F003C001F003C000F003C000F0078000F0078001F0078001F0078001E0078003E0
078007C00F000F800F003E00FFFFF0001D1F7E9E20>I<0000FE0200070186001C004E0070003E
00E0001E01C0001C0380000C0780000C0F00000C1F00000C1E00000C3E0000083C0000007C0000
007C0000007C0000007C000000F8000000F8000000F8000000F800000078000000780000107800
0020780000203C0000203C0000401C0000800E0001000700020003800C0000E03000003FC0001F
217C9F21>I<07FFFF800000F801E0000078007000007800380000F0001C0000F0001E0000F000
0E0000F0000F0000F0000F0000F0000F0001E0000F8001E0000F8001E0000F8001E0000F8001E0
000F8001E0000F8003C0000F0003C0001F0003C0001F0003C0001F0003C0001E0003C0003E0007
80003C0007800078000780007800078000F000078001E000078003C0000F000F00000F003C0000
FFFFF00000211F7E9E23>I<07FFFFFC00F8007C0078001C0078000C00F0000C00F0000400F000
0400F0000400F0000400F0040401E0080001E0080001E0080001E0380001FFF80001E0380003C0
100003C0100003C0100003C0100003C0000803C000100780001007800010078000200780002007
800060078000C00F0001C00F0007C0FFFFFF801E1F7E9E1F>I<0000FE0200070186001C004E00
70003E00E0001E01C0001C0380000C0780000C0F00000C1F00000C1E00000C3E0000083C000000
7C0000007C0000007C0000007C000000F8000000F8000000F8003FFEF80001F0780000F0780000
F0780001E0780001E03C0001E03C0001E01C0001E00E0003E0070005C0038008C000E03040003F
C0001F217C9F24>71 D<07FF83FFC000F8007C000078003C000078003C0000F000780000F00078
0000F000780000F000780000F000780000F000780001E000F00001E000F00001E000F00001E000
F00001FFFFF00001E000F00003C001E00003C001E00003C001E00003C001E00003C001E00003C0
01E000078003C000078003C000078003C000078003C000078003C000078003C0000F000780000F
8007C000FFF07FF800221F7E9E22>I<07FF8000F80000780000780000F00000F00000F00000F0
0000F00000F00001E00001E00001E00001E00001E00001E00003C00003C00003C00003C00003C0
0003C0000780000780000780000780000780000780000F00000F8000FFF000111F7E9E10>I<07
FFE00000FC0000007800000078000000F0000000F0000000F0000000F0000000F0000000F00000
01E0000001E0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C000
0003C0008003C00100078001000780010007800300078002000780060007800E000F001E000F00
7C00FFFFFC00191F7E9E1C>76 D<07F800007FE000F800007C0000780000BC0000780000BC0000
9C00017800009C00017800009C00027800009C00027800008E00047800008E00087800010E0008
F000010E0010F000010E0010F00001070020F00001070020F00001070040F00002070041E00002
038081E00002038101E00002038101E00002038201E00002038201E0000401C403C0000401C403
C0000401C803C0000401C803C0000400F003C0000C00E003C0000C00E00780001E00C007C000FF
C0C07FFC002B1F7E9E2A>I<07F8007FC0007C001F00007C000C00005E000400009E000800008F
000800008F000800008780080000878008000083C008000103C010000101E010000101E0100001
00F010000100F010000100781000020078200002003C200002003C200002001E200002001E2000
02000F200004000F4000040007C000040007C000040003C000040003C000040001C0000C000180
001E00008000FF80008000221F7E9E22>I<0001FC00000E0700003801C0007000E001E000F003
C00078078000780780003C0F00003C1F00003C1E00003E3E00003E3C00003E7C00003E7C00003E
7C00003E7C00003EF800007CF800007CF800007CF8000078F80000F8780000F8780001F07C0001
E07C0003E03C0003C01C0007801E000F000F001E000780380001C0E000007F80001F217C9F23>
I<07FFFF0000F803C0007800F00078007800F0007800F0007C00F0007C00F0007C00F0007C00F0
007801E000F801E000F001E001E001E003C001E00F0001FFFC0003C0000003C0000003C0000003
C0000003C0000003C000000780000007800000078000000780000007800000078000000F000000
0F800000FFF800001E1F7E9E1F>I<07FFFE0000F80780007801E0007800F000F000F000F000F8
00F000F800F000F800F000F800F000F001E001F001E001E001E003C001E0078001E01E0001FFF0
0003C0380003C01C0003C01E0003C00E0003C00E0003C00F0007801F0007801F0007801F000780
1F0007801F0007801F020F001F040F800F04FFF00788000001F01F207E9E21>82
D<001F8200706600C01E01800E03000E07000C0600040E00040E00040E00040F00000F00000F80
0007F00007FF0003FFC001FFE0003FF00003F80000F800007800003C00003C4000384000384000
38400030600070600060F000C0E80180C6030081FC0017217E9F19>I<3FFFFFF03C0780F03007
803060078030400F0010400F0010C00F0010800F0010800F0010800F0010001E0000001E000000
1E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C0000003C0000
00780000007800000078000000780000007800000078000000F0000000F800003FFFE0001C1F7A
9E21>I<FFF07FF81FF01F000FC007C01E00078003801F00078001000F00078002000F000F8002
000F000F8004000F0017C004000F0013C008000F0023C008000F8023C01000078043C010000780
43C020000780C3C02000078083E04000078081E04000078101E0800007C101E0800003C201E180
0003C201E1000003C401E1000003C401F2000003C800F2000003C800F4000001F000F4000001F0
00F8000001E000F8000001E000F0000001C000F0000001C0006000000180006000000080004000
002C207A9E2F>87 D<03FFFFF003F001E0038003E0030003C00600078006000F0004001E000400
3E0004003C00040078000000F0000001E0000003E0000003C00000078000000F0000001E000000
3E0000003C00000078008000F0008001E0010003E0010003C00100078003000F0002001E000600
3E000E003C001E007800FC00FFFFFC001C1F7E9E1C>90 D E /Fb 10 117
df<07FC001FFF803F07C03F03E03F01F03F01F00C01F00001F0003FF007FDF01F81F03E01F07C
01F0F801F0F801F0F801F0FC02F07E0CF03FF87E0FE03E17147F9319>97
D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F1F
C01F7FF01FE0F81F807C1F007E1F003E1F003E1F003F1F003F1F003F1F003F1F003F1F003F1F00
3E1F003E1F007C1F807C1EC1F81C7FE0181F8018207E9F1D>I<01FE0007FF800F83C01E01E03E
00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00003E00181E00180F
807007FFE000FF8015147F9318>101 D<1C003E007F007F007F003E001C000000000000000000
00000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
00FFE0FFE00B217EA00E>105 D<FF00FF001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0
0B207E9F0E>108 D<FE0FC0FE3FE01E61F01EC0F81E80F81F00F81F00F81F00F81F00F81F00F8
1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18147D931D>110
D<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC00
7E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>I<FF1FC0FF7FF01FE1F81F
80FC1F007E1F007E1F003E1F003F1F003F1F003F1F003F1F003F1F003F1F003E1F007E1F007C1F
80FC1FC1F81F7FE01F1F801F00001F00001F00001F00001F00001F00001F0000FFE000FFE00018
1D7E931D>I<0FE63FFE701E600EE006E006F800FFC07FF83FFC1FFE03FE001FC007C007E007F0
06F81EFFFCC7F010147E9315>115 D<0300030003000300070007000F000F003F00FFFCFFFC1F
001F001F001F001F001F001F001F001F001F001F061F061F061F061F060F8C07F803F00F1D7F9C
14>I E /Fc 17 119 df<70F8F8F0E005057B840E>46 D<00000200000006000000060000000E
0000001E0000001E0000003F0000002F0000004F000000CF0000008F0000010F0000010F000002
0F0000020F0000040F0000080F0000080F0000100F800010078000200780003FFF800040078000
8007800080078001000780010007800200078006000780040007801E0007C0FF807FF81D207E9F
22>65 D<01FFFFFE001E001C001E000C001E0004001E0004003C0004003C0004003C0004003C00
0400780408007804000078040000780C0000F0180000FFF80000F0180000F0180001E0100001E0
100001E0100001E0001003C0002003C0002003C0004003C0004007800080078001800780010007
8007000F001F00FFFFFE001F1F7D9E1F>69 D<00F1800389C00707800E03801C03803C03803807
00780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C40308C800F07
0013147C9317>97 D<007E0001C1000300800E07801E07801C07003C0200780000780000780000
F00000F00000F00000F00000F0000070010070020030040018380007C00011147C9315>99
D<0000780003F80000700000700000700000700000E00000E00000E00000E00001C00001C000F1
C00389C00707800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E
20F01C40F01C40703C40705C40308C800F070015207C9F17>I<007C01C207010E011C013C0138
02780C7BF07C00F000F000F000F0007000700170023804183807C010147C9315>I<0000780001
9C00033C00033C000718000700000700000E00000E00000E00000E00000E0000FFE0001C00001C
00001C00001C0000380000380000380000380000380000700000700000700000700000700000E0
0000E00000E00000E00000E00001C00001C00001C0000180003180007B0000F300006600003C00
001629829F0E>I<00C001E001E001C000000000000000000000000000000E0013002300438047
00470087000E000E000E001C001C001C003840388038807080310032001C000B1F7C9E0E>105
D<03C01FC0038003800380038007000700070007000E000E000E000E001C001C001C001C003800
3800380038007000700070007100E200E200E200E200640038000A207C9F0C>108
D<1C0F802630C04740604780604700704700708E00E00E00E00E00E00E00E01C01C01C01C01C01
C01C03843803883803883807083803107003303001C016147C931A>110
D<007C0001C3000301800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003
C0F00780F00700700F00700E0030180018700007C00013147C9317>I<1C1E0026610027838047
87804707804703008E00000E00000E00000E00001C00001C00001C00001C000038000038000038
000038000070000030000011147C9313>114 D<00FC030206010C030C070C060C000F800FF007
F803FC003E000E700EF00CF00CE008401020601F8010147D9313>I<018001C003800380038003
8007000700FFF007000E000E000E000E001C001C001C001C003800380038003820704070407080
708031001E000C1C7C9B0F>I<0E00C01300E02301C04381C04701C04701C08703800E03800E03
800E03801C07001C07001C07001C07101C0E20180E20180E201C1E400C264007C38014147C9318
>I<0E03801307802307C04383C04701C04700C08700800E00800E00800E00801C01001C01001C
01001C02001C02001C04001C04001C08000E300003C00012147C9315>I
E /Fd 1 16 df<03F0000FFC001FFE003FFF007FFF807FFF80FFFFC0FFFFC0FFFFC0FFFFC0FFFF
C0FFFFC07FFF807FFF803FFF001FFE000FFC0003F00012127E9317>15 D
E /Fe 10 58 df<1F00318060C04040C060C060C060C060C060C060C060C060404060C031801F
000B107F8F0F>48 D<187898181818181818181818181818FF08107D8F0F>I<1F00618040C080
60C0600060006000C00180030006000C00102020207FC0FFC00B107F8F0F>I<1F00218060C060
C000C0008001001F00008000400060C060C060804060801F000B107F8F0F>I<01800180038005
800D801980118021804180C180FFE001800180018001800FE00B107F8F0F>I<20C03F802E0020
00200020002F0030802040006000600060C06080C061801F000B107F8F0F>I<0780184030C060
C06000C000CF00F080E040C060C060C060406060C030801F000B107F8F0F>I<40007FF07FE080
40804000800100020002000600040004000C000C000C000C000C000C117F900F>I<1F00318060
C060C060C031803F000E00338061C0C060C060C060C04060C01F000B107F8F0F>I<1F00318060
C0C040C060C060C06040E021E01E600060004060C0608063001E000B107F8F0F>I
E /Ff 27 120 df<007F03F801FF0FF803FF1FF807C03E00070038000F0078000F0078000F0078
000F0078000F0078000F0078000F0078000F007800FFF87FC0FFF87FC0FFF87FC00F0078000F00
78000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F
0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078001D2380A21C>11
D<F0F0F0F004047B830E>46 D<004001C007C0FFC0FFC0FBC003C003C003C003C003C003C003C0
03C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0FFFFFF
FFFFFF10227CA118>49 D<03F0000FFC001FFE003C1F003007807003C06003C0E003E0C001E040
01E04001E00001E00001E00001E00003C00003C0000780000780000F00001E00003C0000780000
F00001E00001C0000380000700000E00001C0000380000700000FFFFE0FFFFE0FFFFE013227EA1
18>I<01F00007FC000FFE001E0F003C07003807807803807803C0F003C0F001C0F001E0F001E0
F001E0F001E0F001E0F001E07003E07803E07803E03C07E03E1FE01FFDE00FF1E003E3C00003C0
0003C0000380000780000700000F00201E00383C007FF8003FF0000FC00013237EA118>57
D<000F8000000F8000001FC000001FC000001DC000003DE0000039E0000038E0000078F0000078
F0000070700000F0780000F0780000E0780001E03C0001E03C0001C03C0003C01E0003C01E0003
801E0007800F0007800F0007FFFF000FFFFF800FFFFF800E0007801E0003C01E0003C03C0003E0
3C0001E03C0001E0780001F0780000F0780000F0F00000F81D237FA220>65
D<FFFE00FFFF80FFFFE0F007F0F001F8F00078F0003CF0003CF0003CF0003CF0003CF0003CF000
78F000F0F003E0FFFFC0FFFF00FFFFC0F00FF0F001F8F00078F0003CF0001CF0001EF0001EF000
1EF0001EF0001EF0003CF0007CF000F8F003F0FFFFE0FFFFC0FFFF0017237BA220>I<000FF000
007FFC0000FFFF0001F01F0007C00700078000000F0000001E0000003E0000003C0000003C0000
00780000007800000078000000F0000000F0000000F0000000F0000000F0000000F0000000F000
0000F0000000F00000007800000078000000780000003C0000003C0000003E0000001E0000000F
0000000780008007C0038001F00F8000FFFF00007FFC00000FF00019257DA31F>I<FFFFF0FFFF
F0FFFFF0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F0000014237BA21C>70 D<FFFE00FFFF80FFFFC0
F003E0F000F0F00078F00078F0003CF0003CF0003CF0003CF0003CF0003CF00078F00078F000F0
F003E0FFFFC0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F0000016237BA21F>80 D<F0000078F0000078780000F078
0000F0780000F03C0001E03C0001E03C0001E01E0003C01E0003C01E0003C00F0007800F000780
0F80078007800F0007800F0003C00E0003C01E0003C01E0001E01C0001E03C0001E03C0000F038
0000F0780000F07800007870000078F0000078F0000038E000003DE000001DC000001FC000001F
C000000F8000000F80001D237FA220>86 D<07F0003FFC007FFE00781F00400F00000780000780
000780000780007F8007FF801FFF803E0780780780F00780F00780F00780F00F807C1F807FFF80
3FF7801F878011167E9517>97 D<F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F0F800F3FE00FFFF00FE0F80F80780F003C0F003C0F001E0F0
01E0F001E0F001E0F001E0F001E0F001E0F003E0F003C0F003C0F80780FE1F80F7FF00F3FC00F1
F80013237DA219>I<01FC0007FF000FFF801F03803C0180780000780000700000F00000F00000
F00000F00000F00000F000007800007800007800003C00401F03C00FFFC007FF8001FC0012167E
9516>I<01F80007FE000FFF001F07803C03C07801C07801C07000E0FFFFE0FFFFE0FFFFE0F000
00F00000F000007000007800007C00003E00401F03C00FFFC007FF8000FC0013167F9516>101
D<03F0780FFFF81FFFF83E1F003C0F007807807807807807807807807807803C0F003E1F001FFE
003FFC0033F0007000007000007800003FFE003FFFC01FFFE03FFFF07801F0F000F8F00078F000
78F00078F000787800F03E03E01FFFC00FFF8001FC0015217F9518>103
D<F000F000F000F000F000F000F000F000F000F000F000F000F000F1F8F3FCF7FEFE1EF80FF80F
F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10237CA219>I<
F0F0F0F0000000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA2
0B>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004
237DA20B>108 D<F0F807C0F3FE1FF0F7FF3FF8FE0F7078FC0FE07CF807C03CF807C03CF00780
3CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007
803CF007803CF007803CF007803CF007803C1E167C9527>I<F1F8F3FCF7FEFE1EF80FF80FF00F
F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10167C9519>I<01FC
0007FF000FFF801F07C03C01E07800F07800F0700070F00078F00078F00078F00078F00078F000
787800F07800F07C01F03E03E01F07C00FFF8007FF0001FC0015167F9518>I<F0E0F3E0F7E0FF
00FE00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F000F000F0000B16
7C9511>114 D<07F01FFC3FFE3C0E7806780078007C003F003FF01FF80FFC01FE001F000F000F
000FC00FF81EFFFE3FFC0FF010167F9513>I<1E001E001E001E001E001E00FFFCFFFCFFFC1E00
1E001E001E001E001E001E001E001E001E001E001E001E001E001E081F1C0FFC0FF807C00E1C7F
9B12>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
1FF83F7FFF7FCF1F0F10167C9519>I<F007803CF00FC03CF00FC03C780DC078781DC078781DE0
78781CE0783C18E0F03C38E0F03C38F0F01C38F0E01E3871E01E7071E01E7079E00E7039C00E60
39C00F603BC007603B8007601B8007C01F8007C01F8003C01F001E167F9521>119
D E /Fg 29 116 df<0000400000C0000180000180000180000300000300000300000600000600
000C00000C00000C0000180000180000180000300000300000600000600000600000C00000C000
00C0000180000180000180000300000300000600000600000600000C00000C00000C0000180000
180000300000300000300000600000600000600000C00000C00000122D7EA117>47
D<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003C003C003C003C003C003C003C003C0
03C003C003C003C003C003C003C003C003C0FFFEFFFEFFFE0F1F7C9E17>49
D<03F0000FFC001FFE00383F00700F00600780E00780E003C04003C04003C00003C00003C00003
C0000780000780000F00000E00001C00003C0000780000E00001C0000380000700000E00001C00
00380000700000FFFFC0FFFFC0FFFFC0121F7E9E17>I<F0F0F0F0000000000000000000000000
F0F0F0F004147C930D>58 D<001F0000001F0000003F8000003B8000003B8000007BC0000073C0
000071C00000F1E00000E1E00000E0E00001E0F00001E0F00001C0F00003C0780003C078000380
780007803C0007803C0007003C000FFFFE000FFFFE001FFFFF001E000F001E000F003C000F803C
0007803C000780780007C0780003C0780003C0F00001E01B207F9F1E>65
D<FFFC00FFFF80FFFFC0F007E0F001F0F000F0F00078F00078F00078F00078F00078F000F0F001
E0F00FC0FFFF80FFFF80FFFFE0F003F0F000F8F0003CF0001CF0001EF0001EF0001EF0001EF000
1EF0003CF000FCF003F8FFFFF0FFFFC0FFFE0017207C9F1E>I<001FC000FFF801FFFC03E03C07
800C0F00001E00003E00003C00007C0000780000780000780000F00000F00000F00000F00000F0
0000F00000F00000F000007800007800007800007C00003C00003E00001E00000F000207800E03
E03E01FFFC00FFF0001FC017227DA01D>I<FFFF0000FFFFC000FFFFE000F003F800F000FC00F0
003E00F0001E00F0000F00F0000F00F0000780F0000780F0000780F00003C0F00003C0F00003C0
F00003C0F00003C0F00003C0F00003C0F00003C0F0000380F0000780F0000780F0000F00F0000F
00F0001E00F0003E00F0007C00F003F800FFFFF000FFFFC000FFFF00001A207C9F21>I<FFFFF0
FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000FFFFF0FFFFF0FFFFF014207C9F1B>I<001FE000FFF801FFFE03E03E07800E0F00
001E00003E00003C0000780000780000780000F00000F00000F00000F00000F00000F00000F000
00F003FEF003FEF003FE78001E78001E78001E3C001E3E001E1E001E0F001E07801E03E03E01FF
FE00FFF8001FC017227DA01E>71 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F004207C9F0D>73 D<F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0FFFFC012207C9F19
>76 D<F800007EFC0000FEFC0000FEF40000DEF60001DEF60001DEF60001DEF300039EF300039E
F380079EF380079EF180071EF1C00F1EF1C00F1EF0C00E1EF0E01E1EF0E01E1EF0601C1EF0703C
1EF0703C1EF030381EF038781EF038781EF018701EF01CF01EF01CF01EF00CE01EF00CE01EF007
C01EF007C01EF007C01EF000001E1F207C9F28>I<FC001EFE001EFE001EF7001EF7001EF7801E
F3801EF3801EF1C01EF1C01EF1E01EF0E01EF0F01EF0701EF0781EF0781EF03C1EF03C1EF01C1E
F01E1EF00E1EF00F1EF0071EF0071EF0039EF0039EF003DEF001DEF001DEF000FEF000FEF0007E
17207C9F20>I<001F800000FFF00001FFF80003E07C0007801E000F000F001E0007803C0003C0
3C0003C0780001E0780001E0780001E0700000E0F00000F0F00000F0F00000F0F00000F0F00000
F0F00000F0F00000F0F00000F0F80001F0780001E0780001E07C0003E03C0003C03E0007C01E00
07800F000F000FC03F0007E07E0001FFF80000FFF000001F80001C227EA021>I<FFFE00FFFF80
FFFFE0F003F0F000F0F00078F00038F0003CF0003CF0003CF0003CF0003CF00038F00078F000F0
F003F0FFFFE0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F0000016207C9F1D>I<FFFE00FFFF80FFFFE0F003F0F000F8F00078F000
3CF0003CF0003CF0003CF0003CF00078F000F8F003F0FFFFE0FFFF80FFFE00F01E00F00E00F00F
00F00780F00780F003C0F003C0F001E0F001E0F000F0F00070F00078F0003CF0003CF0001E1720
7C9F1D>82 D<01FC0007FF801FFFC03E03C07C00C0780000F00000F00000F00000F00000F00000
F800007C00007E00003FE0001FFC0007FF0001FF80003FC00007E00003E00001F00000F00000F0
0000F00000F00000F00001E0C001E0F003C0FC0FC07FFF801FFE0003F80014227EA019>I<FFFF
FFC0FFFFFFC0FFFFFFC0001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000
001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E00001A207E9F1F>I<F0003CF0003CF0003CF0003CF0003CF0003CF0003CF000
3CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF000
3CF0003CF0003CF0003CF0003C7800787800783C00F03E01F01F03E00FFFC003FF0000FC001621
7C9F1F>I<F00001E0F00001E0780001C0780003C0780003C03C0007803C0007803C0007801E00
0F001E000F001E000F000F001E000F001E000F801E0007803C0007803C0003C0380003C0780003
C0780001E0700001E0F00001E0F00000F0E00000F1E00000F1E0000071C000007BC000003B8000
003B8000003F8000001F0000001F00001B207F9F1E>I<F0007C000FF0007E000FF0007E000F78
006E000E7800EE001E7800E7001E7800E7001E3C00E7003C3C01E7803C3C01C7803C3C01C3803C
1E01C380781E03C3C0781E0383C0780E0381C0700F0381C0F00F0781E0F00F0701E0F0070700E0
E0078700E1E0078F00F1E0078E00F1E0038E0071C0038E0071C003CE0073C001DC007B8001DC00
3B8001DC003B8001D8003B8000F8001F0000F8001F0000F8001F0028207F9F2B>I<F80000F87C
0001F03C0001E03E0003E01F0003C00F0007800F800F8007C00F0003C01F0003E01E0001F03C00
00F07C00007878000078F000003CF000001CE000001FE000000FC0000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
8000000780001D20809F1E>89 D<07E03FF87FFC701E401F000F000F000F003F07FF1FFF7E0FF8
0FF00FF00FF00FF83F7FFF3FEF1F8F10147E9316>97 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>108 D<01F80007FE001FFF803F0FC03C03
C07801E07801E0F000F0F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03F0FC01FFF
8007FE0001F80014147F9317>111 D<F1F000F7FC00FFFE00FC3F00F80F80F00780F00780F003
C0F003C0F003C0F003C0F003C0F003C0F00780F00780F80F00FC3F00FFFE00F7FC00F1F000F000
00F00000F00000F00000F00000F00000F00000F00000F00000121D7D9317>I<F0E0F3E0F7E0FF
00FC00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F0000B147D9310>
114 D<0FF03FFC7FFC780CF000F000F000FC007FE03FF01FF803FC003E001E001EC01EF03CFFFC
7FF80FE00F147F9311>I E /Fh 25 123 df<F8F8F8F8F805057A8411>46
D<00180000380000F80007F800FFF800FFF800F8F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8007FFFF07FFF
F07FFFF014287BA71E>49 D<007F000001FFC00003FFE0000FFFF0001FC1F8001F007C003E007C
007C003E007C001E007C001F00F8001F00F8001F00F8000F00F8000F80F8000F80F8000F80F800
0F80F8001F807C001F807C001F807E003F803E007F803F00FF801FFFEF800FFFCF8007FF8F8003
FE1F0000001F0000001F0000001E0000003E0000003E0000007C0000007C000000F8001801F000
1E07E0003FFFC0001FFF80000FFF000001F8000019297EA71E>57 D<0001FF00000FFFE0003FFF
F8007FFFF801FE01F803F8003003E0001007C000000F8000001F8000001F0000003E0000003E00
00007E0000007C0000007C0000007C000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F80000007C0000007C0000007C0000007E0000003E000000
3E0000001F0000001F8000000F80000007C0000003E0000403F8001C01FE00FC007FFFFC003FFF
F8000FFFE00001FF001E2C7CAA26>67 D<0001FC0000000FFF8000003FFFE000007FFFF00001FE
03FC0003F800FE0007E0003F0007C0001F000F80000F801F000007C01F000007C03E000003E03E
000003E07C000001F07C000001F07C000001F078000000F0F8000000F8F8000000F8F8000000F8
F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F8F8000000F87C000001
F07C000001F07C000001F07E000003F03E000003E03F000007E01F000007C01F80000FC00FC000
1F8007E0003F0007F0007F0003F800FE0001FE03FC0000FFFFF800003FFFE000000FFF80000001
FC0000252C7DAA2C>79 D<FFFFE000FFFFFC00FFFFFF00F8003F80F8000FC0F80007E0F80003E0
F80001F0F80000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F0F80001
F0F80001F0F80007E0F8000FC0F8003F80FFFFFF00FFFFFE00FFFFF000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F80000001D2A7BA926>I<FFFFE000FFFFFC00FF
FFFF00F8003FC0F80007E0F80001F0F80000F8F80000F8F800007CF800007CF800007CF800007C
F800007CF800007CF80000F8F80000F8F80001F0F80007F0F8003FE0FFFFFF80FFFFFF00FFFFFC
00FFFFF000F801F000F800F800F8007800F8007C00F8003C00F8003E00F8001F00F8001F00F800
0F80F8000780F80007C0F80003E0F80003E0F80001F0F80001F0F80000F8F800007CF800007CF8
00003E1F2A7BA927>82 D<01FE000FFF803FFFC03FFFE03C03F03001F00001F80000F80000F800
00F80000F80000F8007FF807FFF81FFFF83FE0F87F00F8FC00F8F800F8F800F8F800F8FC01F87E
07F87FFFF83FFFF81FFCF807E0F8151B7E9A1D>97 D<F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F80000F83F00F9FF80FBFFE0FFFF
F0FF07F0FC01F8F800FCF8007CF8007CF8007EF8003EF8003EF8003EF8003EF8003EF8003EF800
3EF8007CF8007CF800FCFC00F8FC01F8FF07F0FFFFE0FBFFC0F9FF80F87E00172A7BA91F>I<00
7FC001FFF007FFFC0FFFFC1FC07C1F00083E00007C00007C00007C0000F80000F80000F80000F8
0000F80000F80000F800007C00007C00007E00003E00001F000C1FC07C0FFFFC07FFFC01FFF000
7F80161B7E9A1B>I<00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E
00003E00003E00003E00003E00003E00FC3E03FF3E07FFFE0FFFFE1FC1FE3F007E3E003E7C003E
7C003EFC003EF8003EF8003EF8003EF8003EF8003EF8003EF8003EFC003E7C003E7C003E3E007E
3F00FE1FC1FE0FFFFE07FFBE03FF3E00FC3E172A7EA91F>I<007E0003FF8007FFC00FFFE01F83
F03F00F03E00787C00787C003878003CFFFFFCFFFFFCFFFFFCFFFFFCF80000F80000F800007800
007C00007C00003E00003F000C1FC07C0FFFFC07FFFC01FFF0007F80161B7E9A1B>I<00FC0780
03FF3FC007FFFFC00FFFFFC01F87E0003E01F0003E01F0007C00F8007C00F8007C00F8007C00F8
007C00F8007C00F8003E01F0003E01F0001F87E0001FFFC0003FFF80003BFF000038FC00007800
0000780000003C0000003FFFC0003FFFF8001FFFFC001FFFFE003FFFFF007C007F00F8001F80F8
000F80F8000F80F8000F80FC001F807E003F003F80FE003FFFFE000FFFF80007FFF00000FF8000
1A287E9A1E>103 D<F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F83F80F8FFE0F9FFF0FBFFF8FF81F8FE00FCFE007CFC007C
FC007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007C
F8007CF8007CF8007CF8007CF8007CF8007C162A7CA91F>I<F8F8F8F8F8000000000000000000
00F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>I<F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F805
2A7CA90E>108 D<F83F801FC0F8FFE07FF0F9FFF0FFF8FBFFF9FFFCFF81FBC0FCFE00FF007EFE
007F003EFC007E003EFC007E003EF8007C003EF8007C003EF8007C003EF8007C003EF8007C003E
F8007C003EF8007C003EF8007C003EF8007C003EF8007C003EF8007C003EF8007C003EF8007C00
3EF8007C003EF8007C003EF8007C003EF8007C003EF8007C003E271B7C9A30>I<F83F80F8FFE0
F9FFF0FBFFF8FF81F8FE00FCFE007CFC007CFC007CF8007CF8007CF8007CF8007CF8007CF8007C
F8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007C161B7C
9A1F>I<007F000001FFC00007FFF0000FFFF8001FC1FC003F007E003E003E007C001F007C001F
0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8000F807C001F007C00
1F007E003F003E003E003F007E001FC1FC000FFFF80007FFF00001FFC000007F0000191B7E9A1E
>I<F83F00F9FF80FBFFE0FFFFF0FF07F0FC01F8F800FCF800FCF8007CF8007EF8003EF8003EF8
003EF8003EF8003EF8003EF8003EF8007CF8007CF800FCFC00F8FC03F8FF07F0FFFFE0FBFFC0F9
FF80F87E00F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8
000017277B9A1F>I<F83CF8FCF9FCFBFCFFE0FF80FF00FE00FC00FC00FC00F800F800F800F800
F800F800F800F800F800F800F800F800F800F800F800F8000E1B7C9A14>114
D<03FC001FFF803FFFC07FFFC07C07C0F80080F80000F80000F80000FC00007F80007FF8003FFE
001FFF0007FF8000FFC0000FE00007E00003E00003E04003E0E007E0FC0FC0FFFFC07FFF801FFE
0003F800131B7E9A17>I<07C00007C00007C00007C00007C00007C00007C000FFFFC0FFFFC0FF
FFC007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C00007C00007C00007C00007C04007E1C003FFE003FFE001FF8000FC0013227FA1
16>I<F800FC007CF801FC007C7C01FE00787C01DE00F87C01DE00F87C03DE00F83E03CF00F03E
03CF01F03E078F01F03E078F01F01F078783E01F078783E01F070783E00F0F0783C00F8F03C3C0
0F8F03C7C00F8E03C7C0079E03C780079E01C780079E01E78003DC01EF0003DC01EF0003DC00EF
0003D800EF0001F800FE0001F800FE0001F8007E00261B7F9A29>119 D<FFFFF8FFFFF8FFFFF8
FFFFF00003F00007E00007C0000FC0001F80001F00003E00007E0000FC0000F80001F80003F000
03E00007C0000FC0001F80001F00003F00007E00007FFFFCFFFFFCFFFFFCFFFFFC161B7E9A1A>
122 D E /Fi 73 124 df<001F83E000F06E3001C078780380F8780300F0300700700007007000
0700700007007000070070000700700007007000FFFFFF80070070000700700007007000070070
000700700007007000070070000700700007007000070070000700700007007000070070000700
7000070070000700700007007000070070003FE3FF001D20809F1B>11 D<003F0000E0C001C0C0
0381E00701E00701E0070000070000070000070000070000070000FFFFE00700E00700E00700E0
0700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0
0700E00700E03FC3FC1620809F19>I<003FE000E0E001C1E00381E00700E00700E00700E00700
E00700E00700E00700E00700E0FFFFE00700E00700E00700E00700E00700E00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E03FE7FC1620809F19
>I<001F81FF0000F06F070001C07C0F000380F80F000300F00700070070070007007007000700
7007000700700700070070070007007007000700700700FFFFFFFF000700700700070070070007
007007000700700700070070070007007007000700700700070070070007007007000700700700
070070070007007007000700700700070070070007007007000700700700070070070007007007
003FE3FE3FE02320809F26>15 D<70F8F8F8F8F8F8F87070707070707070707020202020200000
00000070F8F8F87005217CA00D>33 D<7038F87CFC7EFC7E743A04020402040208040804100810
08201040200F0E7F9F17>I<007800000084000001840000030200000702000007020000070200
0007020000070400000704000007080000070800000390000003A00FFC03C001E003C000C001C0
008001C0010002E0010004E00200087002001878040030380800703C0800701C1000F00E1000F0
0F2000F007C000F00380047001C0047802E008380470181C183C3007E00FC01E227EA023>38
D<70F8FCFC74040404080810102040060E7C9F0D>I<0040008001000300060004000C00180018
0038003000300070006000600060006000E000E000E000E000E000E000E000E000E000E000E000
E00060006000600060007000300030003800180018000C000400060003000100008000400A2E7B
A112>I<8000400020003000180008000C00060006000700030003000380018001800180018001
C001C001C001C001C001C001C001C001C001C001C001C001800180018001800380030003000700
060006000C000800180030002000400080000A2E7EA112>I<70F0F8F878080808101010202040
050E7C840D>44 D<FFF0FFF00C02808A0F>I<70F8F8F87005057C840D>I<0000400000C0000180
000180000180000300000300000300000600000600000C00000C00000C00001800001800001800
00300000300000600000600000600000C00000C00000C000018000018000018000030000030000
0600000600000600000C00000C00000C0000180000180000300000300000300000600000600000
600000C00000C00000122D7EA117>I<03F0000E1C001C0E001806003807007003807003807003
80700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003
C0F003C07003807003807003807807803807001806001C0E000E1C0003F000121F7E9D17>I<00
8003800F80F3800380038003800380038003800380038003800380038003800380038003800380
0380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E00200700
400780800780F007C0F803C0F803C0F803C02007C00007C0000780000780000F00000E00001C00
00380000700000600000C0000180000300000600400C00401800401000803FFF807FFF80FFFF80
121E7E9D17>I<03F0000C1C00100E00200F00780F80780780780780380F80000F80000F00000F
00001E00001C0000700007F000003C00000E00000F000007800007800007C02007C0F807C0F807
C0F807C0F00780400780400F00200E00183C0007F000121F7E9D17>I<000600000600000E0000
0E00001E00002E00002E00004E00008E00008E00010E00020E00020E00040E00080E00080E0010
0E00200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E00000E00000E0000
FFE0141E7F9D17>I<007C000182000701000E03800C0780180780380300380000780000700000
700000F1F000F21C00F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C0
7003C07003803803803807001807000C0E00061C0001F000121F7E9D17>54
D<4000007FFFE07FFFC07FFFC04000808001008001008002000004000004000008000010000010
0000200000200000600000600000E00000C00001C00001C00001C00001C00003C00003C00003C0
0003C00003C00003C00003C000018000131F7E9D17>I<03F0000E18001C0C0038060038070070
0700700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E
13C003E3C0000380000380000380000700300700780600780E00700C002018001070000FC00012
1F7E9D17>57 D<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F870
0000000000000000000070F0F8F878080808101010202040051D7C930D>I<7FFFFFF8FFFFFFFC
0000000000000000000000000000000000000000000000000000000000000000FFFFFFFC7FFFFF
F81E0C7E9023>61 D<000100000003800000038000000380000007C0000007C0000007C0000009
E0000009E0000009E0000010F0000010F0000010F00000207800002078000020780000403C0000
403C0000C03E0000801E0000801E0001FFFF0001000F0001000F00020007800200078002000780
040003C0040003C00C0003C01E0003E0FF801FFE1F207F9F22>65 D<FFFFE0000F0078000F001E
000F001E000F000F000F000F800F000F800F000F800F000F800F000F800F000F000F001F000F00
1E000F007C000FFFF0000F007C000F001F000F000F800F0007C00F0003C00F0003E00F0003E00F
0003E00F0003E00F0003E00F0003C00F0007C00F0007800F000F000F003E00FFFFF0001B1F7E9E
20>I<000FE01000381C3000E0027003C00170078000F00F0000701E0000701E0000303C000030
3C0000107C00001078000010F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000780000007C0000103C0000103C0000101E0000201E0000200F0000200780
004003C0008000E0030000380C00000FF0001C217E9F21>I<FFFFF80007801E00078007800780
03C0078001E0078000F00780007007800078078000780780003C0780003C0780003C0780003E07
80003E0780003E0780003E0780003E0780003E0780003E0780003E0780003C0780003C0780007C
0780007807800078078000F0078001E0078003C00780078007801E00FFFFF8001F1F7F9E23>I<
FFFFFF800F000F800F0003800F0001800F0000800F0000C00F0000400F0000400F0000400F0040
400F0040000F0040000F00C0000F01C0000FFFC0000F01C0000F00C0000F0040000F0040000F00
40000F0000200F0000200F0000200F0000400F0000400F0000400F0000C00F0001C00F0003800F
000F80FFFFFF801B1F7E9E1F>I<FFFFFF8007800780078001800780018007800080078000C007
800040078000400780004007800040078020000780200007802000078060000780E00007FFE000
0780E0000780600007802000078020000780200007800000078000000780000007800000078000
0007800000078000000780000007C00000FFFE00001A1F7F9E1E>I<000FE01000381C3000E002
7003C00170078000F00F0000701E0000701E0000303C0000303C0000107C00001078000010F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8003FFEF80001F0780000F07C
0000F03C0000F03C0000F01E0000F01E0000F00F0000F0078000F003C0017000E0023000380C10
000FF0001F217E9F24>I<FFF07FF80F0007800F0007800F0007800F0007800F0007800F000780
0F0007800F0007800F0007800F0007800F0007800F0007800F0007800FFFFF800F0007800F0007
800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F00
07800F0007800F0007800F000780FFF07FF81D1F7E9E22>I<FFF00F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
000F000F000F00FFF00C1F7E9E10>I<FFF8000F80000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
020F00020F00020F00020F00060F00040F00040F000C0F001C0F007CFFFFFC171F7E9E1C>76
D<FF800007FE07800007C007800007C005C0000BC005C0000BC004E00013C004E00013C004E000
13C004700023C004700023C004380043C004380043C004380043C0041C0083C0041C0083C0040E
0103C0040E0103C0040E0103C004070203C004070203C004070203C004038403C004038403C004
01C803C00401C803C00401C803C00400F003C00400F003C004006003C01F006003C0FFE0607FFE
271F7F9E2A>I<FF000FF80F8003E00F8000800BC0008009E0008009E0008008F0008008780080
08780080083C0080081E0080081E0080080F008008078080080780800803C0800801E0800801E0
800800F080080078800800788008003C8008001E8008001E8008000F8008000780080007800800
0380080001803E000180FF8000801D1F7E9E22>I<001FE0000070380001C00E00038007000700
03800F0003C01E0001E03C0000F03C0000F07C0000F87C0000F878000078F800007CF800007CF8
00007CF800007CF800007CF800007CF800007CF800007CF800007C780000787C0000F87C0000F8
3C0000F03E0001F01E0001E00F0003C0070003800380070001E01E0000703800001FE0001E217E
9F23>I<FFFFE0000F007C000F001E000F000F000F0007800F0007800F0007C00F0007C00F0007
C00F0007C00F0007800F0007800F000F000F001E000F007C000FFFE0000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F000000FFF000001A1F7E9E1F>I<FFFF80000F00F0000F003C000F001E000F000F000F
000F000F000F800F000F800F000F800F000F800F000F000F000F000F001E000F003C000F00F000
0FFF80000F01C0000F0070000F0070000F0038000F003C000F003C000F003C000F003E000F003E
000F003E000F003E040F003F040F001F040F000F08FFF00788000001F01E207E9E21>82
D<03F0400C0CC01803C03001C06000C06000C0E000C0E00040E00040E00040F00000F800007C00
007F80003FF8001FFF0007FF8000FFC0001FE00003E00001E00000F00000708000708000708000
70800070C00060C000E0E000C0F80180C6030081FC0014217E9F19>I<7FFFFFE0780F01E0600F
0060400F0020400F0020C00F0030800F0010800F0010800F0010800F0010000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC001C1F7E
9E21>I<FFF00FF80F0003E00F0000800F0000800F0000800F0000800F0000800F0000800F0000
800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F0000800F00
00800F0000800F0000800F0000800F0000800F0000800700010007800100038001000380020001
C0040000E0080000383000000FC0001D207E9E22>I<FFF003FE1F8000F80F0000600F00002007
800040078000400780004003C0008003C0008003E0018001E0010001E0010000F0020000F00200
00F802000078040000780400003C0800003C0800003C0800001E1000001E1000001F1000000F20
00000F20000007C0000007C0000007C000000380000003800000038000000100001F207F9E22>
I<FFF07FF81FF01F000FC007C00F00078001800F00078001000F0007C001000F8007C003000780
07C00200078009E0020007C009E0020003C009E0040003C019F0040003C010F0040001E010F008
0001E010F0080001E02078080000F02078100000F02078100000F0403C10000078403C20000078
403C20000078801E2000007C801E6000003C801E4000003D000F4000003F000F4000001F000F80
00001F000F8000001E00078000000E00070000000E00070000000C000300000004000200002C20
7F9E2F>I<080410082010201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7A9F17>
92 D<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E001E0E00380E00
780E00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>97
D<1C0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C
001D87001E01801E00C01C00E01C00701C00701C00781C00781C00781C00781C00781C00781C00
701C00F01C00E01E00C01A0180198700107C0015207E9F19>I<01FC000706001C0F00380F0038
0600780000700000F00000F00000F00000F00000F00000F000007000007800003800803800801C
010007060001F80011147F9314>I<0001C0000FC00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C001F1C0070DC00C03C01801C03801C07801C07001C0F001C0F001C0
F001C0F001C0F001C0F001C07001C07001C03801C01803C00C03C0070DC001F1F815207F9F19>
I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F00000F00000F000
007000007000003800803800801C010007060001F80011147F9314>I<007C01C6030F070F0E06
0E000E000E000E000E000E000E00FFF00E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E007FE01020809F0E>I<0000E003E3300E3C301C1C30380E00780F
00780F00780F00780F00780F00380E001C1C001E380033E0002000002000003000003000003FFE
001FFF801FFFC03001E0600070C00030C00030C00030C000306000603000C01C038003FC00141F
7F9417>I<1C0000FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
00001C7C001C86001D03001E03801E03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C03801C03801C0380FF8FF014207E9F19>I<38007C007C007C0038
000000000000000000000000001C00FC001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C00FF80091F7F9E0C>I<00E001F001F001F000E00000000000000000
00000000007007F000F00070007000700070007000700070007000700070007000700070007000
700070007000700070007000706070F060F0C061803F000C28829E0E>I<1C0000FC00001C0000
1C00001C00001C00001C00001C00001C00001C00001C00001C00001C1FE01C07801C06001C0400
1C08001C10001C20001C60001CE0001DF0001E70001C38001C3C001C1C001C0E001C0F001C0700
1C07801C07C0FF9FF014207E9F18>I<1C00FC001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
FF8009207F9F0C>I<1C3E03E000FCC30C30001D039038001E01E01C001E01E01C001C01C01C00
1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C
001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021147E9326>I<1C
7C00FC86001D03001E03801E03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C03801C0380FF8FF014147E9319>I<01F800070E001C03803801C0
3801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C03801C0
1C0380070E0001F80014147F9317>I<1C7C00FD87001E01801E01C01C00E01C00F01C00701C00
781C00781C00781C00781C00781C00781C00701C00F01C00E01E01C01E03801D87001C7C001C00
001C00001C00001C00001C00001C00001C00001C0000FF8000151D7E9319>I<01F040070CC00E
02C01C03C03801C07801C07001C0F001C0F001C0F001C0F001C0F001C0F001C07001C07801C038
01C01C03C00C05C00709C001F1C00001C00001C00001C00001C00001C00001C00001C00001C000
0FF8151D7F9318>I<1CF0FD181E3C1E3C1E181C001C001C001C001C001C001C001C001C001C00
1C001C001C001C00FFC00E147E9312>I<0FC830386018C008C008C008E0007C003FE01FF007F8
003C800E8006C006C006C004E00CD81887E00F147F9312>I<020002000200060006000E000E00
3E00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E04070803
0801F00E1C7F9B12>I<1C0380FC1F801C03801C03801C03801C03801C03801C03801C03801C03
801C03801C03801C03801C03801C03801C03801C07800C0780061B8003E3F014147E9319>I<FF
83F83E00E01C00C00E00800E00800E008007010007010007830003820003820001C40001C40001
E40000E80000E80000700000700000700000200015147F9318>I<FF9FE1FC3C0780701C030060
1C0380200E0380400E0380400E03C0400704C0800704E0800704E0800388610003887100038871
0001D0320001D03A0001D03E0000E01C0000E01C0000601800004008001E147F9321>I<FF87F8
1E03C00E01800E030007020003840001C80001D80000F00000700000780000F800009C00010E00
020E000607000403800C03C03C03E0FE07FC16147F9318>I<FF83F83E00E01C00C00E00800E00
800E008007010007010007830003820003820001C40001C40001E40000E80000E8000070000070
00007000002000002000004000004000004000F08000F08000F100006200003C0000151D7F9318
>I<7FFF700E600E401C40384078407000E001E001C00380078007010E011E011C033802700670
0EFFFE10147F9314>I<FFFFFC1601808C17>I E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin
%%PaperSize: a4
%%EndSetup
%%Page: 1 1
0 bop 1852 -100 a Fi(1)75 49 y Fh(9.1)59 b(Problems)20 b(with)f(Register)g
(Optimization)g(and)g(Caching)75 151 y Fi(MPI)j(pro)o(vides)h(op)q(erations)f
(whic)o(h)h(ma)o(y)e(b)q(e)i(hidden)h(from)e(the)g(user)g(co)q(de)h(and)f
(run)g(in)h(parallel)75 207 y(with)18 b(it,)f(accessing)h(the)g(same)e
(memory)h(as)g(user)g(co)q(de.)27 b(Examples)18 b(include)h(the)f(data)e
(transfer)h(for)75 264 y(an)i Fg(MPI)p 227 264 14 2 v 16 w(IRECV)h
Fi(or)f(for)g(an)h Fg(MPI)p 675 264 V 16 w(PUT)p Fi(.)f(The)h(optimizer)g(of)
f(a)h(compiler)g(will)i(assume)d(that)g(it)h(can)75 320 y(recognize)14
b(p)q(erio)q(ds)g(when)f(a)g(cop)o(y)g(of)f(a)h(v)m(ariable)h(can)f(b)q(e)g
(k)o(ept)g(in)h(a)e(register)h(without)g(reloading)h(from)75
377 y(or)g(storing)g(to)g(memory)l(.)19 b(When)c(the)f(user)h(co)q(de)f(is)h
(w)o(orking)f(with)h(a)f(register)g(cop)o(y)h(of)f(some)g(v)m(ariable)75
433 y(while)i(the)g(hidden)g(op)q(eration)f(reads)g(or)g(writes)g(the)g
(memory)f(cop)o(y)l(,)h(problems)h(o)q(ccur.)k(This)15 b(section)75
489 y(discusses)h(register)g(optimization)g(pitfalls)g(and)g(related)f
(problems)h(with)g(cac)o(he)f(coherence.)75 611 y Ff(9.1.1)49
b(A)17 b(F)o(o)o(rtran)d(Problem)i(with)h(V)o(olatile)g(Bu\013ers)75
697 y Fi(When)22 b(a)f(v)m(ariable)h(is)g(lo)q(cal)h(to)d(a)h(F)l(ortran)f
(subroutine)j(\(i.e.)38 b(not)21 b(in)h(a)f(COMMON)g(blo)q(c)o(k\),)i(the)75
753 y(compiler)14 b(will)h(assume)e(that)g(it)g(cannot)g(b)q(e)h(mo)q
(di\014ed)h(b)o(y)e(a)f(called)j(subroutine)f(unless)h(it)e(is)h(an)f(actual)
75 810 y(argumen)o(t)j(of)g(the)h(call.)25 b(In)17 b(the)g(most)e(common)i
(link)m(age)h(con)o(v)o(en)o(tion,)e(the)h(subroutine)h(is)f(exp)q(ected)75
866 y(to)d(sa)o(v)o(e)g(and)h(restore)f(certain)i(registers.)j(Th)o(us,)c
(the)g(optimizer)h(will)g(assume)f(that)f(a)g(register)h(whic)o(h)75
923 y(held)h(a)f(v)m(alid)i(cop)o(y)e(of)g(suc)o(h)h(a)e(v)m(ariable)j(b)q
(efore)f(the)f(call)h(will)h(still)g(hold)f(a)f(v)m(alid)h(cop)o(y)f(on)h
(return.)166 979 y(Normally)i(users)f(are)h(not)f(a\017icted)h(with)g(this.)
27 b(But)18 b(the)f(user)h(should)g(pa)o(y)g(atten)o(tion)f(to)g(this)75
1036 y(section)k(if)g(in)h(his/her)f(program)e(a)h(bu\013er)h(argumen)o(t)f
(to)g(an)g Fg(MPI)p 1289 1036 V 16 w(SEND)p Fi(,)h Fg(MPI)p
1538 1036 V 15 w(RECV)h Fi(etc.)36 b(uses)75 1092 y(a)17 b(name)g(whic)o(h)h
(hides)h(the)e(actual)h(v)m(ariables)g(in)o(v)o(olv)o(ed.)27
b Fg(MPI)p 1185 1092 V 16 w(BOTTOM)18 b Fi(with)f(an)h(MPI)p
1677 1092 V 16 w(Datat)o(yp)q(e)75 1149 y(con)o(taining)d(absolute)g
(addresses)g(is)g(one)g(example.)21 b(Creating)14 b(a)g(datat)o(yp)q(e)g
(whic)o(h)i(uses)f(one)g(v)m(ariable)75 1205 y(as)k(an)g(anc)o(hor)g(and)g
(brings)h(along)f(others)g(b)o(y)g(using)h Fg(MPI)p 1128 1205
V 16 w(ADDRESS)g Fi(to)f(determine)h(their)g(o\013sets)75 1262
y(from)c(the)h(anc)o(hor)g(is)h(another.)25 b(The)17 b(anc)o(hor)g(v)m
(ariable)h(w)o(ould)g(b)q(e)f(the)g(only)h(one)f(men)o(tioned)h(in)g(the)75
1318 y(call.)j(Also)14 b(atten)o(tion)g(m)o(ust)g(b)q(e)h(pa)o(y)o(ed)f(if)h
(MPI)f(op)q(erations)g(are)g(used)h(that)f(run)g(in)h(parallel)h(with)f(the)
75 1374 y(user's)e(application.)21 b(This)13 b(op)q(erations)h(are)f(mainly)h
Fg(MPI)p 1080 1374 V 16 w(IRECV)p Fi(,)f Fg(MPI)p 1332 1374
V 15 w(PUT)p Fi(,)g Fg(MPI)p 1546 1374 V 16 w(GET)p Fi(,)g
Fg(MPI)p 1758 1374 V 16 w(IPUT)75 1431 y Fi(and)i Fg(MPI)p
248 1431 V 16 w(IGET)p Fi(.)166 1487 y(The)g(follo)o(wing)h(example)g(sho)o
(ws,)e(what)h(F)l(ortran)f(compilers)j(are)d(allo)o(w)o(ed)i(to)f(do:)288
1594 y(Source)g(of)g(Pro)q(cess)g(1)122 b(Source)16 b(of)f(Pro)q(cess)g(2)122
b(Executed)16 b(in)g(Pro)q(cess)f(2)288 1650 y(bbbb)h(=)f(777)272
b(aaa)15 b(=)g(bu\013)297 b(reg)p 1367 1650 V 16 w(A:=bu\013)1303
1707 y(aaa:=reg)p 1484 1707 V 16 w(A)795 1763 y(call)17 b(MPI)p
971 1763 V 16 w(SEND\(rdy\))91 b(call)17 b(MPI)p 1479 1763
V 16 w(SEND\(rdy\))288 1819 y(call)f(MPI)p 463 1819 V 16 w(RECV\(rdy\))795
1876 y(call)h(MPI)p 971 1876 V 16 w(W)-5 b(AIT)194 b(stop)15
b(appl.)8 b(thread)288 1932 y(call)16 b(MPI)p 463 1932 V 16
w(PUT\(bbbb)611 b(bu\013:=777)15 b(in)h(PUT)f(thread)288 1989
y(in)o(to)g(bu\013)g(of)g(pro)q(cess)g(2\))580 b(con)o(tin)o(ue)16
b(appl.)8 b(thread)795 2045 y(ccc)16 b(=)g(bu\013)304 b(ccc:=reg)p
1475 2045 V 17 w(A)166 2152 y(In)18 b(this)g(example,)g(v)m(ariable)h(bu\013)
e(is)h(allo)q(cated)h(in)f(the)f(register)h(reg)p 1384 2152
V 16 w(A)f(while)i Fg(MPI)p 1654 2152 V 16 w(SEND)f Fi(and)75
2208 y Fg(MPI)p 160 2208 V 16 w(W)l(AIT)e Fi(are)f(executed,)i(and)f
(therefore)f(ccc)i(will)g(ha)o(v)o(e)f(the)g(old)g(v)m(alue)h(of)e(bu\013)h
(and)g(not)g(the)g(new)75 2264 y(v)m(alue)g(777.)166 2321 y(The)f(next)h
(example)g(sho)o(ws)e(extreme,)h(but)g(allo)o(w)o(ed)h(p)q(ossibilities!)288
2427 y(Source)376 b(compiled)17 b(as)275 b(or)15 b(compiled)i(as)288
2484 y(call)f(xxx\(bu\013,id\))189 b(call)17 b(xxx\(bu\013,id\))189
b(call)17 b(xxx\(bu\013,id\))795 2540 y(reg)p 859 2540 V 17
w(A)e(=)g(bu\013)254 b(b1)15 b(=)h(bu\013)288 2597 y(call)g(yyy\(a,id\))243
b(call)17 b(yyy\(a,id\))243 b(call)17 b(yyy\(a,id\))288 2653
y(b1)e(=)g(bu\013)317 b(b1)16 b(:=)f(reg)p 986 2653 V 16 w(A)-32
46 y Fe(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: 2 2
1 bop 75 -100 a Fi(2)166 49 y(If)12 b(yyy\(a,id\))f(is)i(able)g(to)e(mo)q
(dify)h(bu\013,)g(either)h(b)q(ecause)g(a)e(passes)h(the)g(address)g(of)g
(bu\013)g(or)f(b)q(ecause)75 106 y(xxx)k(retained)g(the)g(address)g(of)g
(bu\013)f(and)i(id)f(is)h(the)f(k)o(ey)f(whic)o(h)i(iden)o(ti\014es)h(bu\013)
d(in)i(yyy)l(,)f(the)g(compiler)75 162 y(will)j(not)f(recognize)h(this)f(p)q
(ossible)h(mo)q(di\014cation.)26 b(It)17 b(has)g(no)g(reason)f(to)g(a)o(v)o
(oid)h(using)g(a)g(register)g(to)75 219 y(hold)e(bu\013)f(across)f(the)h
(call)h(to)e(yyy)l(.)19 b(It)14 b(also)g(can)g(reorder)g(the)g(instructions)h
(as)e(in)i(the)f(left)g(case.)19 b(This)75 275 y(example)d(is)g(v)o(ery)f(m)o
(uc)o(h)g(lik)o(e)h(a)f(non)o(blo)q(c)o(king)i(comm)o(unication)e(and)h(a)f
(w)o(ait.)166 332 y(T)l(o)f(prev)o(en)o(t)h(instruction)g(reordering)g(or)g
(the)f(allo)q(cation)i(of)e(a)h(v)m(ariable)h(or)e(bu\013er)h(in)g(a)f
(register,)75 388 y(there)h(are)g(three)g(p)q(ossibiliti)q(es)j(in)e(F)l
(ortran:)143 482 y Fd(\017)23 b Fi(One)13 b(can)g(put)f(the)h(v)m(ariables)h
(and)f(bu\013ers)f(in)o(to)h(common)f(blo)q(c)o(ks;)i(then)f(they)f(will)j(b)
q(e)e(allo)q(cated)189 538 y(in)j(the)f(memory)g(while)h(an)o(y)f(subroutine)
h(\(e.g.)j(an)c(MPI)h(routine\))f(is)h(called,)g(or)143 632
y Fd(\017)23 b Fi(one)18 b(can)h(declare)g(them)g(as)f(V)o(OLA)l(TILE,)h(but)
g(this)g(is)g(not)f(part)g(of)g(the)g(standards)g(F)l(ortran)189
689 y(77)f(and)h(90,)g(and)h(y)o(our)e(co)q(de)i(will)h(not)d(b)q(e)i(p)q
(ortable)g(b)q(ecause)g(there)f(are)g(compilers)h(without)189
745 y(V)o(OLA)l(TILE,)d(and)f(normally)h(it)g(prev)o(en)o(ts)e(an)o(y)h
(optimization,)h(or)143 839 y Fd(\017)23 b Fi(one)18 b(can)h(add)f(the)g(v)m
(ariable)i(or)e(bu\013er)g(as)g(a)g Fc(senseless)e Fi(additional)j(actual,)g
(but)g(un)o(used,)g(ar-)189 895 y(gumen)o(t)d(at)g(the)g(end)i(of)e(the)g
(argumen)o(t)g(list;)i(this)f(will)h(cause)f(that)e(the)i(v)m(ariable)h(or)e
(bu\013er)g(is)189 952 y(allo)q(cated)g(in)g(the)f(memory)g(while)h(that)f
(subroutine)h(is)g(executed.)166 1046 y(In)j(C,)f(subroutines)h(whic)o(h)h
(mo)q(dify)f(v)m(ariables)g(that)f(are)g(not)g(in)i(the)e(parameter)g(list)h
(will)h(not)75 1102 y(cause)15 b(register)f(optimization)h(problems.)20
b(This)15 b(is)g(b)q(ecause)g(taking)g(p)q(oin)o(ters)g(to)e(storage)g(ob)s
(jects)h(b)o(y)75 1158 y(using)i(the)g(&)g(op)q(erator)f(and)h(later)g
(referencing)g(the)g(ob)s(jects)f(b)o(y)h(w)o(a)o(y)f(of)g(the)h(p)q(oin)o
(ter)g(is)g(an)g(in)o(tegral)75 1215 y(part)f(of)f(the)i(language.)k(A)15
b(C)g(compiler)h(understands)g(the)f(implications.)75 1337
y Ff(9.1.2)49 b(Caching)75 1422 y Fi(There)13 b(are)g(only)h(one)f(group)g
(of)g(MPI)g(functions)h(that)e(can)h(cause)h(problems)f(with)h(cac)o(he)f
(incoherency)75 1479 y({)e(the)g(one-sided)i(comm)o(unication)f(with)g
Fg(MPI)p 877 1479 14 2 v 15 w(PUT)g Fi(and)f Fg(MPI)p 1161
1479 V 16 w(GET)h Fi(called)g(on)g(a)e(origin)i(no)q(de)g(to)f(write)75
1535 y(or)k(read)h(the)g(memory)f(on)h(the)g(target)e(no)q(de.)23
b(Problems)16 b(can)g(arise)g(if)g(there)g(is)g(no)g(cac)o(he)g(coherency)75
1592 y(b)q(et)o(w)o(een)h(the)g(memory)f(accesses)g(b)o(y)h(the)g
(application)h(on)e(the)h(target)e(no)q(de)i(and)g(b)o(y)g(the)f(PUT)h(and)75
1648 y(GET)e(op)q(erations)g(started)f(b)o(y)h(the)h(application)h(on)e(the)g
(origin)h(no)q(de.)k(There)c(are)f(three)g(cases:)143 1742
y Fd(\017)23 b Fi(Data)10 b(from)h(the)h(application)i(on)e(the)g(target)e
(no)q(de)j(is)f Fb(not)h Fi(stored)e(in)o(to)h(the)g(memory)f(as)h(so)q(on)f
(as)189 1799 y(p)q(ossible)16 b(and)f(subsequen)o(t)g(accesses)g(to)f(that)g
(memory)g(b)o(y)h Fg(MPI)p 1327 1799 V 16 w(GET)g Fi(issued)h(from)d(the)i
(origin)189 1855 y(no)q(de)g(will)i(giv)o(e)f(older)g(v)m(alues.)189
1930 y Fg(Prop)q(osal)f(1:)20 b Fi(A)c(call)g(to)f Fg(MPI)p
699 1930 V 16 w(RMA)p 814 1930 V 17 w(WINDO)o(W)p 1027 1930
V 16 w(READ)o(Y)h Fi(guaran)o(tees)e(that)h(all)i(cac)o(hed)f(data)e(is)189
1987 y(written)19 b(to)g(the)g(memory)l(.)33 b Fg(MPI)p 782
1987 V 15 w(RMA)p 896 1987 V 17 w(WINDO)o(W)p 1109 1987 V 16
w(READ)o(Y)20 b Fi(m)o(ust)f(b)q(e)h(called)h(on)f(the)f(target)189
2043 y(no)q(de)f(after)e(data)h(is)h(written)g(to)f(the)g(memory)g(lo)q
(cally)i(on)f(the)f(target)f(no)q(de)i(and)g(b)q(efore)g(the)189
2099 y(memory)g(on)h(the)f(target)g(no)q(de)h(is)h(accessed)f(with)g
Fg(MPI)p 1192 2099 V 16 w(GET)g Fi(from)f(the)h(origin)h(no)q(de.)31
b(Load)189 2156 y(access)13 b(b)o(y)h(the)f(application)i(on)e(the)h(target)e
(system)h(is)h(allo)o(w)o(ed)g(in)g(parallel)h(to)e(the)g(accesses)h(b)o(y)
189 2212 y Fg(MPI)p 274 2212 V 15 w(GET)p Fi(.)189 2288 y Fg(Prop)q(osal)g
(2:)20 b Fi(This)15 b(case)g(is)g Fb(not)g Fi(addressed)g(b)o(y)g(MPI)g(and)f
(the)h(user)g(is)g(resp)q(onsible)i(to)d(prev)o(en)o(t)189
2344 y(this.)20 b(Programs)12 b(using)j Fg(MPI)p 702 2344 V
16 w(GET)f Fi(are)g(therefore)g(not)f(p)q(ortable.)20 b(The)15
b(do)q(cumen)o(tation)f(of)g(the)189 2400 y(MPI)h(implemen)o(tation)h(m)o
(ust)f(include)i(hin)o(ts,)f(ho)o(w)e(the)i(user)f(can)g(solv)o(e)h(this)f
(problem.)143 2494 y Fd(\017)23 b Fi(Data)14 b(from)g(the)i(application)h(on)
e(the)h(target)e(no)q(de)i(is)g Fb(not)g Fi(stored)e(in)o(to)i(the)f(memory)g
(as)g(so)q(on)189 2551 y(as)e(p)q(ossible)i(and)f(subsequen)o(t)g(stores)f
(to)g(that)f(memory)h(b)o(y)h Fg(MPI)p 1329 2551 V 16 w(PUT)f
Fi(issued)i(from)e(the)g(origin)189 2607 y(no)q(de)k(are)g(done)g(b)q(efore)g
(the)g(application)h(data)e(is)i(written)f(from)f(the)h(cac)o(he)g(to)f(the)h
(memory)l(.)189 2664 y(The)e(data)g(written)g(b)o(y)g Fg(MPI)p
693 2664 V 16 w(PUT)g Fi(is)h(therefore)f(o)o(v)o(erwritten.)1967
46 y Fe(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
2 bop 75 -100 a Fa(9.1.)34 b(PR)o(OBLEMS)16 b(WITH)f(REGISTER)h(OPTIMIZA)l
(TION)h(AND)e(CA)o(CHING)297 b Fi(3)189 49 y Fg(Prop)q(osal)15
b(1:)20 b Fi(A)c(call)g(to)f Fg(MPI)p 699 49 14 2 v 16 w(RMA)p
814 49 V 17 w(WINDO)o(W)p 1027 49 V 16 w(READ)o(Y)h Fi(guaran)o(tees)e(that)h
(all)i(cac)o(hed)f(data)e(is)189 106 y(written)19 b(to)g(the)g(memory)l(.)33
b Fg(MPI)p 782 106 V 15 w(RMA)p 896 106 V 17 w(WINDO)o(W)p
1109 106 V 16 w(READ)o(Y)20 b Fi(m)o(ust)f(b)q(e)h(called)h(on)f(the)f
(target)189 162 y(no)q(de)i(after)f(the)h(memory)f(is)h(used)g(lo)q(cally)i
(on)d(the)h(target)f(no)q(de)h(and)g(b)q(efore)g Fg(MPI)p 1720
162 V 16 w(PUT)f Fi(is)189 219 y(issued)c(on)f(the)g(origin)h(no)q(de)g(to)f
(write)g(data)g(in)o(to)g(the)g(memory)g(of)f(the)i(target)e(no)q(de.)189
294 y Fg(Prop)q(osal)g(2:)20 b Fi(This)15 b(case)g(is)g Fb(not)g
Fi(addressed)g(b)o(y)g(MPI)g(and)f(the)h(user)g(is)g(resp)q(onsible)i(to)d
(prev)o(en)o(t)189 350 y(this.)19 b(Programs)13 b(using)h Fg(MPI)p
701 350 V 16 w(PUT)g Fi(are)g(therefore)f(not)g(p)q(ortable.)20
b(The)14 b(do)q(cumen)o(tation)h(of)e(the)189 407 y(MPI)i(implemen)o(tation)h
(m)o(ust)f(include)i(hin)o(ts,)f(ho)o(w)e(the)i(user)f(can)g(solv)o(e)h(this)
f(problem.)143 500 y Fd(\017)23 b Fi(Data)14 b(from)h(the)h(application)i(on)
d(the)h(target)f(no)q(de)h(is)g(stored)g(in)o(to)f(the)h(memory)f
Fb(as)k(so)q(on)f(as)189 557 y(p)q(ossible)f Fi(and)f(subsequen)o(t)g(stores)
g(to)f(that)g(memory)h(b)o(y)g Fg(MPI)p 1319 557 V 16 w(PUT)g
Fi(issued)h(from)e(the)h(origin)189 613 y(no)q(de)f(are)g(done)g(also)g
Fb(as)i(so)q(on)h(as)f(p)q(ossible)f Fi(but)f(subsequen)o(t)g(loads)g(from)f
(that)h(memory)f(b)o(y)189 670 y(the)i(application)i(on)e(the)h(target)e(no)q
(de)i(is)g(done)g(b)o(y)f(using)h(the)g(older)g(data)e(in)j(the)e(cac)o(he)h
(that)189 726 y(w)o(as)d(written)h(when)h(the)f(data)g(w)o(as)f(stored)h(b)o
(y)g(the)g(application)i(on)e(the)h(target)d(no)q(de.)189 801
y Fg(Prop)q(osal)f(1:)18 b Fi(A)13 b(call)g(to)f Fg(MPI)p 685
801 V 16 w(DELIVER)h Fi(\015ushes)g(the)f(cac)o(hes)h(and)g(guaran)o(tees)f
(that)f(subsequen)o(t)189 858 y(loads)18 b(are)h(fetc)o(hed)g(from)f(the)g
(actual)h(memory)f(and)h(not)f(from)g(old)h(cac)o(hes.)30 b
Fg(MPI)p 1678 858 V 16 w(DELIVER)189 914 y Fi(m)o(ust)15 b(b)q(e)i(called)g
(on)f(the)g(target)f(no)q(de)i(after)e(the)h(memory)g(is)g(up)q(dated)h(b)o
(y)f(\(some\))f Fg(MPI)p 1771 914 V 16 w(PUT)189 971 y Fi(issued)23
b(from)f(one)h(or)f(more)g(origin)h(no)q(des.)43 b(The)22 b(application)i(m)o
(ust)e(guaran)o(tee,)i(e.g.)41 b(b)o(y)189 1027 y(lo)q(oking)19
b(to)e(the)h(windo)o(w)h(coun)o(ter,)f(that)f(there)h(is)h(no)f(ongoing)g
Fg(MPI)p 1430 1027 V 16 w(PUT)g Fi(to)g(that)f(windo)o(w.)189
1084 y(Before)f(calling)i Fg(MPI)p 562 1084 V 16 w(DELIVER)e
Fi(the)h(application)h(on)e(the)g(target)g(no)q(de)h(m)o(ust)e(not)h(access)h
(the)189 1140 y(windo)o(w)e(memory)l(.)20 b(After)15 b(calling)i
Fg(MPI)p 892 1140 V 16 w(DELIVER)e Fi(the)g(application)i(on)e(the)h(target)e
(host)h(ma)o(y)189 1197 y(access)d(the)h(memory)e(again)i(but)f(the)h
(application)g(on)g(the)f(origin)h(no)q(de)g(m)o(ust)f(not)g(issue)h(further)
189 1253 y Fg(MPI)p 274 1253 V 15 w(PUT)p Fi(s.)189 1328 y
Fg(Prop)q(osal)h(2:)20 b Fi(This)15 b(case)g(is)g Fb(not)g
Fi(addressed)g(b)o(y)g(MPI)g(and)f(the)h(user)g(is)g(resp)q(onsible)i(to)d
(prev)o(en)o(t)189 1385 y(this.)19 b(Programs)13 b(using)h
Fg(MPI)p 701 1385 V 16 w(PUT)g Fi(are)g(therefore)f(not)g(p)q(ortable.)20
b(The)14 b(do)q(cumen)o(tation)h(of)e(the)189 1441 y(MPI)i(implemen)o(tation)
h(m)o(ust)f(include)i(hin)o(ts,)f(ho)o(w)e(the)i(user)f(can)g(solv)o(e)h
(this)f(problem.)p 75 1535 827 2 v 75 1591 a(The)g(follo)o(wing)h(advice)h(m)
o(ust)d(b)q(e)i(added)g(in)75 1660 y(-)f(MPI)g(2,)g(c)o(hapter)g(4.3)f
Fg(MPI)p 581 1660 14 2 v 16 w(PUT/GET)p Fi(,)75 1716 y(-)h(MPI)g(2,)g(c)o
(hapter)g(4.10)f(Handlers,)75 1773 y(-)h Fg(MPI)p 190 1773
V 16 w(ADDRESS)h Fi(\(MPI)f(1.1,)f(page)h(70,)f(line)j(16\),)d(and)h(in)75
1829 y(-)g Fg(MPI)p 190 1829 V 16 w(IRECV)h Fi(\(MPI)f(1.1,)e(\\Non)o(blo)q
(c)o(king)k(comm)o(unication",)e(end)h(of)e(page)h(40\))189
1935 y Fc(A)n(dvic)n(e)i(to)i(users.)53 b Fi(T)l(o)17 b(prev)o(en)o(t)g
(troubles)h(with)g(the)f(register)g(optimization)i(of)e(the)g(F)l(ortran)189
1992 y(compilers)g(or)f(with)g(cac)o(hing)h(please)g(pa)o(y)f(atten)o(tion)g
(to)g(the)g(hin)o(ts)h(in)g(section)g(9.1)e(\\Problems)189
2048 y(with)g(register)g(optimization)h(and)g(cac)o(hing")f(on)h(page)f(1.)k
(\()p Fc(End)d(of)g(advic)n(e)g(to)h(users.)p Fi(\))-32 46
y Fe(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
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF