Detailed proposal for Handlers & implications for MPI2

Carter Edwards : carter@ticam.utexas.edu (carter@ticam.utexas.edu)
Mon, 26 Feb 1996 15:27:09 -0600 (CST)

The attached postscript file is a preprint of:
TICAM Report 96-11
"A Consistent Extension of the Message Passing Interface (MPI)
for Nonblocking Communication Handlers"
It is a detailed & expanded version of my earlier
(Feb. 9, 1996) proposal for MPI-2 handlers.
The report also suggests how all "one-sided" message semantics
could be consistently layered on the current MPI semantics.
----------------------------------------------------------------------------
Carter Edwards, carter@ticam.utexas.edu, http://www.ticam.utexas.edu/~carter
----------------------------------------------------------------------------

%!PS-Adobe-2.0
%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
%%Title: handler.dvi
%%Pages: 10
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips handler
%DVIPSParameters: dpi=300, compressed, comments removed
%DVIPSSource: TeX output 1996.02.26:1326
%%BeginProcSet: texc.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 /hsize 8.5 72
mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1}
ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div
hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul
TR[matrix currentmatrix{dup dup round sub abs 0.00001 lt{round}if}
forall round exch round exch]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 sub]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N
/cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id
gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp
add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add
/gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{
dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1
adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2
idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string
putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval
adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}
{adv 1 chg nd}{1 add chg}{1 add chg nd}{adv lsh}{adv lsh nd}{adv rsh}{
adv rsh nd}{1 add adv}{/rc X nd}{1 add set}{1 add clr}{adv 2 chg}{adv 2
chg nd}{pop nd}]dup{bind pop}forall N /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{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore userdict
/eop-hook known{eop-hook}if showpage}N /@start{userdict /start-hook
known{start-hook}if pop /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 /QV{gsave newpath 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 40258431 52099146 1000 300 300 (handler.dvi)
@start /Fa 2 104 df<EB07F0133FEB7F0013FC485AB0485AA2EA0FE0EAFF8000FCC7FC
B47EEA0FE0EA03F0A26C7EB06C7E137FEB3FF0130714317CA41D>102
D<12FEEAFFC0EA0FE0EA03F06C7EB06C7EA2137FEB1FF01303131FEB7F0013FCA2485AB0
485AEA0FE0B45A48C7FC14317CA41D>I E /Fb 22 119 df<127012F8A212F012E00505
7A840F>46 D<1403A25CA25CA25C142FA2EC4F80A21487A2EB01071302A21304A2130813
1813101320A290387FFFC0EB40031380120113001202A25AA2120C003CEB07E0B4EB3FFC
1E237DA224>65 D<90B6128090380F00071501A2131EA21600A25BA2140192C7FCEB7802
A21406140EEBFFFCEBF00CA33801E008A21504EC0008485AA25DA248485B15605D140138
0F0007B65A21227DA121>69 D<903801F02090380E0C4090381802C0EB3001136001E013
8013C01201A200031400A291C7FCA27FEA01F813FF6C13E06D7EEB1FF8EB03FCEB007C14
3C80A30020131CA3141800601338143000705B5C38C80180D8C607C7FCEA81FC1B247DA2
1B>83 D<EBF8C0EA0185EA0705380E0380A2121C123C383807001278A3EAF00EA31410EB
1C201270133C38305C40138C380F078014157B9419>97 D<137EEA01C138030180EA0703
EA0E07121C003CC7FC12381278A35AA45B12701302EA300CEA1830EA0FC011157B9416>
99 D<143CEB03F8EB0038A31470A414E0A4EB01C013F9EA0185EA0705380E0380A2121C
123C383807001278A3EAF00EA31410EB1C201270133C38305C40138C380F078016237BA2
19>I<13F8EA0384EA0E02121C123C1238EA7804EAF018EAFFE0EAF000A25AA41302A2EA
6004EA7018EA3060EA0F800F157A9416>I<143E144714CFEB018F1486EB0380A3EB0700
A5130EEBFFF0EB0E00A35BA55BA55BA55BA45B1201A2EA718012F100F3C7FC1262123C18
2D82A20F>I<EB1F18EB30B813E03801C070A2EA03801207EB00E05AA3381E01C0A4EB03
80120E1307EA060BEB1700EA01E7EA0007A2130EA3EA701CEAF0185BEA60E0EA3F80151F
7E9416>I<13F0EA0FE01200A3485AA4485AA448C7FC131FEB2180EBC0C0380F00E0A212
0EA2381C01C0A438380380A3EB070400701308130E1410130600E01320386003C016237D
A219>I<13C0EA01E013C0A2C7FCA8121E12231243A25AA3120EA25AA35AA21340EA7080
A3EA71001232121C0B217BA00F>I<EA01E0EA0FC01201A3EA0380A4EA0700A4120EA45A
A45AA45AA3127112E2A4126412380B237CA20C>108 D<391C0F80F8392610C10C394760
66063987807807A2EB0070A2000EEBE00EA44848485AA3ED382026380380134015701680
15303A7007003100D83003131E23157B9428>I<38380F80384C30C0384E4060388E8070
EA8F00128EA24813E0A4383801C0A3EB03840070138814081307EB031012E0386001E016
157B941B>I<137EEA01C338038180380701C0120E001C13E0123C12381278A338F003C0
A21480130700701300130E130CEA3018EA1870EA07C013157B9419>I<3801C1F0380262
183804741C3808780CEB700EA2141EEA00E0A43801C03CA3147838038070A2EBC0E0EBC1
C038072380EB1E0090C7FCA2120EA45AA3EAFFC0171F7F9419>I<EA1C1F382620803847
41C0EA87831303EB018090C7FC120EA45AA45AA45A123012157B9415>114
D<13FCEA018338020080EA0401EA0C03140090C7FC120F13F0EA07FC6C7EEA003E130F7F
1270EAF006A2EAE004EA4008EA2030EA1FC011157D9414>I<13C01201A4EA0380A4EA07
00EAFFF8EA0700A2120EA45AA45AA31310EA7020A213401380EA3100121E0D1F7C9E10>
I<001E1360002313E0EA4380EB81C01283EA8701A238070380120EA3381C0700A31408EB
0E101218121CEB1E20EA0C263807C3C015157B941A>I<381C0180382603C0EA47071303
EA8701EA8E00A2000E13805AA338380100A31302A25B5B1218EA0C30EA07C012157B9416
>I E /Fc 1 16 df<EA03F0EA0FFC487E487E481380A2B512C0A86C1380A26C13006C5A
6C5AEA03F012147D9519>15 D E /Fd 51 122 df<91383FFCF00103B5FC90380FF00FEB
3FC0EB7F0013FE12015B1203AAB7FCA33903FC000FB3A8267FFFE1B51280A329327FB12D
>13 D<001E130F003FEB1F80397F803FC039FFC07FE0A201E013F0A2007F133F393F601F
B0001EEB0F3000001300A3491360A3484813C0A239030001800006EB0300481306001C13
0E485B002013101C187DB12A>34 D<121E123FEA7F80EAFFC0A213E0A2127FEA3F60121E
1200A313C0A3EA0180A2EA03001206A25A123812300B187AB116>39
D<B512F8A715077F921B>45 D<EB01C01303130F137FEA1FFFB5FC13BFEAE03F1200B3B1
007FB512F0A31C2E7AAD28>49 D<EB3FE03801FFFE0007EBFF80D80F8013C0391E003FE0
0038EB1FF0007CEB0FF8007EEB07FCB4FC018013FEA21403A2EA7F00003E1307C7FC15FC
A2EC0FF8A215F0EC1FE015C0EC3F80EC7F00147E14F8495A495A495A49C7FC011E130E5B
133849131E49131C485A48C7123C48B512FC5A5A5A4814F8B6FCA31F2E7CAD28>I<EB1F
F890B5FC000314C03907E01FF0390F0007F8D81F807FEA3FC06E7EA4EA1F80380F0007C7
5BA25D4A5A4A5AEC3F8002FFC7FCEB3FF8ECFF809038001FE06E7E6E7E6E7E816E7EA216
80A3121C123E127FEAFF801600A24A5AEA7F00007E495A003C5C391FC01FF06CB512C000
0391C7FC38003FF8212E7DAD28>I<157015F0140114031407140FA2141F143F147714F7
14E7EB01C7EB0387EB0707130F130E131C1338137013F013E0EA01C0EA0380EA07005A12
0E5A5A5A5AB712E0A3C7380FF000A9010FB512E0A3232E7EAD28>I<000C1430390FC007
F090B512E015C0158015005C14F85C1480000EC8FCA8EB1FF0EBFFFE390FE03F80903800
0FC0000EEB07E0000C14F0C713F8140315FCA215FEA21218123E127F5AA215FCA25A0078
EB07F815F06CEB0FE06CEB1FC0390FC07F806CB51200000113FC38003FE01F2E7CAD28>
I<14FF010713E0011F7F90387F80F89038FE003CD801F8137C484813FE00071301EA0FE0
A2EA1FC0003F6D5A157892C7FC485AA338FF83FC90388FFF8090389C0FC09038B003F06E
7E01E07F01C07F140081A2491480A4127FA4003F15007F121F5D000F495AEA07E06C6C48
5A3901FC0FE06CB55A013F90C7FCEB0FFC212E7DAD28>I<1238123E003FB612C0A31680
4815005D5D5D0078C7123800705C5D00F0495A48495A4AC7FCA2C7120E5C5C1478147014
F0495AA213035C1307A2130FA2131F5CA2133FA4137FA86DC8FC131E22307CAF28>I<12
1E123FEA7F80EAFFC0A4EA7F80EA3F00121EC7FCAC121E123FEA7F80EAFFC0A4EA7F80EA
3F00121E0A207A9F16>58 D<EB7FF03803FFFE390F807F80391C001FC048EB0FE0007C14
F000FE14F87EA4007E14F0003C131FC713E0EC3FC0EC7F80ECFE0014F8495A495A5C495A
91C7FC5B130EA990C8FCA7131E133F497E497EA46D5A6DC7FC131E1D327CB126>63
D<1578A215FCA34A7EA24A7EA24A7FA34A7FEC0E7F021E7FEC1C3FA202387F151F02787F
EC700FA202E07F1507010180ECC003A249486C7EA201078191C7FC498191B6FCA2498101
1CC7123F013C810138141FA24981160F01F081491407A2484881486C1403B549B512FCA3
36317DB03D>65 D<913A03FF800180023FEBF00349B5EAFC0701079038003F0FD91FF8EB
079FD93FC0EB01FFD9FF807F4848C8127F4848153F0007161F49150F485A001F1607A248
5A1703127FA24992C7FCA212FFA9127FA27FEF0380123FA26C7E1707000F17006C7E6D15
0E0003161E6C6C151C6C6C6C1478D93FC05CD91FF8EB03E0D907FFEB3F800101D9FFFEC7
FCD9003F13F80203138031317CB03A>67 D<B812F0A3C6903880003FEE07F816031600A2
1778A21738A3171C1507A31700A25D5D5D91B5FCA3EC803F818181A21707A392C7120EA4
171EA2173CA2177C17FC16011607163FB812F8A330317EB035>69
D<B6D8807FB512C0A3C60180C7387FC000B391B7FCA30280C7127FB3A3B6D8807FB512C0
A33A317EB03F>72 D<B61280A3C6EB8000B3B3A7B61280A319317EB01E>I<B6D88003B5
FCA3C60180C7EA1F80051EC7FC5F5F5FEE01C0EE07804CC8FC161E5E5E16E0ED03C04B5A
4BC9FC151E153E157F5D02837F02877F91388F7FE0EC9E3F9138BC1FF002F07F4A6C7EEC
C0074A6C7E826F7F81707E83163F707E707E831607707E83707F8284B6D8801FEBFF80A3
39317EB03F>75 D<B67EA3000190C9FCB3A9EE0380A416071700A25EA35E5E5E5E4B5A15
0FB7FCA329317DB030>I<B500C00303B5FCA26E5DC61900D9EFF0150EA3D9E7F85DA2D9
E3FC5DA2D9E1FE5DA2D9E0FF5DA26E6C495AA26E6C495AA36E6C495AA26E6C130EA26E6C
5BA26E6C5BA26E6C5BA26E6C5BA392387F81C0A292383FC380A2DB1FE7C7FCA2ED0FFEA2
6F5AA36F5A487EB526E001F090B6FCA26F5A48317EB04D>I<B56C49B512C08080C66D90
390003E0006E6E5AEBEFFC13E780EBE3FF01E17F01E07F6E7E143F816E7E6E7E6E7E1403
6E7E16806E13C0ED7FE0ED3FF0151F16F8ED0FFCED07FEED03FF6F13818117C1EE7FE1EE
3FF1EE1FF9EE0FFD160717FF828282177F173FA2171F170F486C1507B500E014031701A2
3A317EB03F>I<EC0FFF91B512F0903907FC03FE903A1FE0007F80D93F80EB1FC049C76C
7ED801FEEC07F848486E7E48486E7EA248486E7E001F178049157F003F17C0A34848ED3F
E0A300FF17F0AB007F17E06D157FA3003F17C0A26C6CEDFF80A26C6C4A130000075E6D14
0300035E6C6C4A5A6C6C4A5AD93FC0EB3FC06D6C495A902707FC03FEC7FC0100B512F002
0F90C8FC34317CB03D>I<B712E016FEEEFF80C6D9800013E0EE3FF0EE0FF8EE07FCA2EE
03FEA217FFA717FEA2EE07FC17F8160FEE3FE0EEFFC091B6120016F80280C8FCB3A2B67E
A330317EB037>I<B77E16F816FEC690398003FF809238007FE0EE1FF0707EA283160783
A65F160F5F4C5A4C5A4C5ADB03FFC8FC91B512F816E091388007F8ED01FC6F7E167F8370
7EA283A583A4F0038017F8161F1900706C5AB6398003FE0E933801FFFC9338001FF03931
7EB03C>82 D<90391FF8018090B51203000314C73907F007EF390F8000FF48C7127F003E
141F150F5A150712FCA215037EA26C91C7FC13C0EA7FF0EBFF806C13F8ECFF806C14F06C
806C806C14FFC6FC013F1480010114C0D9001F13E01401EC003FED1FF0150F1507126000
E01403A316E07EA26CEC07C07EB4EC0F8001C0EB1F00D8FBFC13FE00F1B512F8D8E03F5B
D8C003138024317CB02D>I<B6D88003B51280A3C60180C73807C000715AB3AE137F4DC7
FC80013F150EA26D6C5C6D6C5C6D6C5C6D6C495A903A00FF801FC0023FB55A020F49C8FC
020013E039317EB03E>85 D<6D13400003EB01C0390700038000061400481306485B485B
A2485BA3485BA300CFEB678039DF806FC039FFC07FE001E013F0A2007F133FA2393FC01F
E0391F800FC0390F0007801C1876B12A>92 D<EBFFF0000313FF390F803F809038C00FE0
486C6C7EA26E7ED80FC07FEA0780C7FCA414FF131FEBFFE33803FC03EA0FF0EA1FC0123F
EA7F80A2EAFF00A31407A2387F800D393FC01DFE3A1FE078FFF03907FFE07FC6EB803F24
207E9F27>97 D<EA01F812FFA3120F1207ADEC3FE0ECFFFC9038FBE07F9039FF001F8049
EB0FC04914E049EB07F016F8A2ED03FCA316FEA816FCA3ED07F8A216F06DEB0FE06D14C0
01E7EB3F809039C3C0FE00903880FFF89038003FC027327EB12D>I<EB0FFF017F13C039
01FC01F03803F0033907E007F8120FEA1FC0003FEB03F0EC01E04848C7FCA312FFA8127F
A36C6C131CA2001F14386C7E000714703903F001E03901FC07C039007FFF00EB0FF81E20
7D9F24>I<ED0FC0EC07FFA3EC007F153FADEB07F8EB3FFF9038FE07BF3903F801FF3907
E0007F120F4848133F123FA2485AA312FFA8127FA36C7EA2121F6C6C137F000714FF2603
F00313E03A01FC0F3FFE38007FFEEB0FF027327DB12D>I<EB0FFC90387FFF803901FC0F
C03903F003E03907E001F0000F14F8391FC000FC003F14FEA24848137E157FA212FFA290
B6FCA20180C7FCA4127FA36C6C1307121F150E6C7E6C6C131C6C6C13783900FE03E09038
3FFFC0903807FE0020207E9F25>I<EB01FE90380FFF8090381FC3C090387F07E09038FE
0FF0120113FC1203EC07E0EC018091C7FCA8B512FCA3D803FCC7FCB3A8387FFFF0A31C32
7EB119>I<90391FF007C09039FFFE3FE03A01F83F79F03907E00FC3000F14E19039C007
E0E0001FECF000A2003F80A5001F5CA2000F5CEBE00F00075C2603F83FC7FC3806FFFE38
0E1FF090C9FC121EA2121F7F90B57E6C14F015FC6C806C801680000F15C0003FC7127F00
7EEC1FE0007C140F00FC1407A4007EEC0FC0003E1580003F141FD80FC0EB7E003907F803
FC0001B512F0D8001F90C7FC242F7E9F28>I<EA01F812FFA3120F1207ADEC07F8EC3FFE
EC783F02C013809039F9801FC0EBFB0001FE14E05BA35BB3B500C3B5FCA328327DB12D>
I<EA03C0487E487E487EA46C5A6C5A6C5AC8FCA9EA01F8127FA31207B3A7B51280A31133
7DB217>I<EA01F812FFA3120F1207ADEDFFF8A3ED3F00153C5D5DEC03C04A5A4AC7FC14
1E147814FCEBF9FE13FB90B5FC496C7E01FC7FEBF83F496C7E6E7E816E7E14036E7E6E7E
1680157F16C0B53881FFFEA327327EB12B>107 D<EA01F812FFA3120F1207B3B3A6B512
C0A312327DB117>I<2703F007F8EB1FE000FFD93FFEEBFFF8913A783F01E0FC02C09038
8300FE280FF1801FC6137F2607F30013CC01F602F8148001FC5CA3495CB3B500C3B5380F
FFFCA33E207D9F43>I<3903F007F800FFEB3FFEEC783F02C013803A0FF1801FC03807F3
0001F614E013FCA35BB3B500C3B5FCA328207D9F2D>I<EB07FC90387FFFC03901FC07F0
3903F001F848486C7E4848137E001F147F003F158049133F007F15C0A300FF15E0A8007F
15C0A36C6CEB7F80A2001F15006C6C13FE00075C3903F803F83901FE0FF039007FFFC0D9
07FCC7FC23207E9F28>I<3901F83FE000FFEBFFFC9038FBE07F9039FF003F80D807FEEB
1FC049EB0FE04914F0ED07F8A216FC1503A216FEA816FC1507A216F8A2ED0FF06D14E06D
EB1FC06DEB3F809039FBC0FE009038F8FFF8EC3FC091C8FCABB512C0A3272E7E9F2D>I<
903907F801C090383FFE039038FE07073903F8018F3907F000CF484813FF001F147F485A
153F127FA25B12FFA8127FA27F123FA26C6C137F120F6C6C13FF3903F803BF3901FC0F3F
38007FFEEB0FF090C7FCAB913807FFFEA3272E7D9F2B>I<3803F03F00FFEB7FC09038F1
C3E01487390FF30FF0EA07F6A29038FC07E0EC03C091C7FCA25BB2B512E0A31C207E9F21
>I<3801FF86000713FEEA1F00003C133E48131E140E12F8A36C90C7FCB47E13FC387FFF
C06C13F0806C7F00077F00017FEA003F01001380143F0060131F00E0130FA27E15007E6C
131E6C131C38FF807838F3FFF038C07F8019207D9F20>I<131CA5133CA3137CA213FC12
0112031207381FFFFEB5FCA2D803FCC7FCB0EC0380A71201EC0700EA00FEEB7F0EEB3FFC
EB07F0192E7FAD1F>I<D801F8EB07E000FFEB03FFA3000FEB003F0007141FB3153FA200
03147FA26C6CEBDFF03A00FE039FFF90387FFF1FEB0FFC28207D9F2D>I<B5EB1FFCA3D8
0FF8EB03C0000715806D1307000315007F0001140E7F6C5CA2EC803C017F1338ECC07801
3F1370ECE0F0011F5B14F1010F5B14F9903807FB80A214FF6D90C7FCA26D5AA26D5AA214
78A226207E9F2B>I<3A7FFF807FFCA33A03FC000F006C6C131E6C6C5BEC803890387FC0
78013F5B90381FE1E090380FF3C0ECFF806D90C7FC6D5A13016D7E81815B903803DFE090
38078FF08190380F07FC90381E03FEEB3C01496C7E4914804848EB7FC00003EC3FE026FF
FC01B5FCA328207F9F2B>120 D<B5EB1FFCA3D80FF8EB03C0000715806D130700031500
7F0001140E7F6C5CA2EC803C017F1338ECC078013F1370ECE0F0011F5B14F1010F5B14F9
903807FB80A214FF6D90C7FCA26D5AA26D5AA21478A21470A214F05C1301007C5BEAFE03
5C49C8FC5BEAFC1EEA787CEA3FF0EA0FC0262E7E9F2B>I E /Fe
73 123 df<90381FC1F090387037189038C03E3C3801807C000313783907003800A9B612
C03907003800B2143C397FE1FFC01E2380A21C>11 D<EB1FC0EB7020EBC0103801803800
031378EA0700143091C7FCA7B512F8380700781438B2397FE1FF80192380A21B>I<EB1F
D8EB7038EBC078EA0180120338070038A9B512F838070038B3397FF3FF80192380A21B>
I<EA7038EAF87CEAFC7EA2EA743AEA0402A4EA0804A2EA1008A2EA2010EA40200F0F7EA2
18>34 D<ECC018A349485AA449485AA501065BA449485AB712C0A226001803C7FCA4EB30
06A4B712C0A22600600CC7FC495AA448485AA448485AA400065BA3222D7DA229>I<1270
12F812FCA212741204A41208A21210A212201240060F7CA20E>39
D<132013401380EA01005A12061204120CA25AA25AA312701260A312E0AE1260A3127012
30A37EA27EA2120412067E7EEA0080134013200B327CA413>I<7E12407E7E12187E1204
1206A27EA2EA0180A313C01200A313E0AE13C0A312011380A3EA0300A21206A21204120C
5A12105A5A5A0B327DA413>I<127012F812FCA212741204A41208A21210A21220124006
0F7C840E>44 D<EAFFF8A20D02808B10>I<127012F8A3127005057C840E>I<14801301A2
EB0300A31306A35BA35BA35BA35BA35BA3485AA448C7FCA31206A35AA35AA35AA35AA35A
A311317DA418>I<EA01F0EA071CEA0C06487E00381380A2387001C0A400F013E0AE0070
13C0A3EA780300381380A2381C0700EA0C06EA071CEA01F013227EA018>I<1380120312
0F12F31203B3A9EA07C0EAFFFE0F217CA018>I<EA03F0EA0C1CEA100700201380384003
C0A2008013E012F0EAF801A3EA2003120014C0A2EB07801400130E5B13185B5B5B485A90
C7FC000213205A5A00181360481340383FFFC05AB5FC13217EA018>I<EA03F8EA0C1EEA
100F38200780004013C0127813031307123800001380A214005B130C1338EA03F0EA001C
130FEB0780A2EB03C0A214E01220127012F8A200F013C01240EB0780122038100F00EA0C
1CEA03F013227EA018>I<1303A25BA25B1317A213271367134713871201130712021206
12041208A212101220A2124012C0B512F838000700A7EB0F80EB7FF015217FA018>I<00
101380381E0700EA1FFF5B13F8EA17E00010C7FCA6EA11F8EA120CEA1C07381803801210
380001C0A214E0A4127012F0A200E013C01280EA4003148038200700EA1006EA0C1CEA03
F013227EA018>I<137EEA01C138030080380601C0EA0C03121C381801800038C7FCA212
781270A2EAF0F8EAF30CEAF4067F00F81380EB01C012F014E0A51270A3003813C0A23818
0380001C1300EA0C06EA070CEA01F013227EA018>I<12401260387FFFE014C0A2384000
8038C0010012801302A2485A5BA25B5BA21360134013C0A21201A25B1203A41207A76CC7
FC13237DA118>I<EA01F8EA060EEA0803381001801220386000C0A31270A23878018000
3E1300EA3F02EA1FC4EA0FF812036C7EEA067EEA083F38100F80383007C0EA6003EB00E0
5A1460A40060134014C06C138038180300EA0E0EEA03F013227EA018>I<EA01F0EA060C
487EEA1807383803801270A238F001C0A314E0A5127013031238EA1805120CEA0619EA03
E1380001C0A3EB0380A21230387807001306EA700CEA20186C5AEA0FC013227EA018>I<
127012F8A312701200AB127012F8A3127005157C940E>I<127012F8A312701200AB1270
12F8A312781208A41210A312201240A2051F7C940E>I<EA07E0EA1838EA201CEA400EEA
800F12F0A31200130E131C13381330136013C0A21380A212011300A6C7FCA5EA0380EA07
C0A3EA038010237DA217>63 D<497EA3497EA3EB05E0A2EB09F01308A2EB1078A3497EA3
497EA2EBC01F497EA248B51280EB0007A20002EB03C0A348EB01E0A348EB00F0121C003E
EB01F839FF800FFF20237EA225>65 D<B512F8380F800E0007EB0780EC03C015E0140115
F0A515E01403EC07C0EC0F80EC3E00EBFFFE9038800780EC03C0EC01E015F0140015F8A6
EC01F0A2EC03E0EC07C0000FEB0F00B512FC1D227EA123>I<903807E0109038381830EB
E0063901C0017039038000F048C7FC000E1470121E001C1430123CA2007C14101278A200
F81400A812781510127C123CA2001C1420121E000E14407E6C6C13803901C001003800E0
02EB381CEB07E01C247DA223>I<B512F0380F801E00071307EC0380EC01C0EC00E015F0
1578A2157C153CA3153EA9153CA2157C1578A215F015E01401EC03C0EC0700000F131EB5
12F01F227EA125>I<B612C0380F80070007130114001540A215601520A314201500A314
6014E013FF138014601420A315081400A21510A31530A2157015E0000F1303B6FC1D227E
A121>I<B612C0380F80070007130114001540A215601520A314201500A3146014E013FF
138014601420A491C7FCA9487EEAFFFE1B227EA120>I<39FFFC3FFF390FC003F0390780
01E0AE90B5FCEB8001AF390FC003F039FFFC3FFF20227EA125>72
D<EAFFFCEA0FC0EA0780B3ACEA0FC0EAFFFC0E227EA112>I<3803FFE038001F007FB3A6
127012F8A2130EEAF01EEA401C6C5AEA1870EA07C013237EA119>I<EAFFFCEA1F806CC7
FCB3A21401A41403A214021406A2141E48137EB512FE18227DA11E>76
D<D8FFC0EB03FF000F15F0000715E0D805E01305A2D804F01309A301781311A36D1321A3
6D1341A26D1381A39038078101A3EB03C2A2EB01E4A3EB00F8A31470120E001FEC03F03A
FFE0203FFF28227EA12D>I<39FF8007FF3907C000F81570D805E01320EA04F0A2137813
7C133C7F131F7FEB0780A2EB03C0EB01E0A2EB00F014F81478143C143E141E140FA2EC07
A0EC03E0A21401A21400000E1460121FD8FFE0132020227EA125>I<EB0FE0EB783CEBE0
0E3903C0078039078003C0390F0001E0000E1300001E14F0481478A2007C147CA2007814
3CA200F8143EA90078143C007C147CA2003C1478003E14F8001E14F06CEB01E0A2390780
03C03903C007803900E00E00EB783CEB0FE01F247DA226>I<B512F0380F803C0007130F
EC078015C0140315E0A615C014071580EC0F00143CEBFFF00180C7FCAE487EEAFFFC1B22
7EA121>I<B512E0380F803C0007130E6E7E81140381A55D14075D020EC7FC143CEBFFE0
EB80708080141E140E140FA481A3168015C014073A0FC003C10039FFFC01E2C8127C2123
7EA124>82 D<3803F020380C0C60EA1802383001E0EA70000060136012E0A21420A36C13
00A21278127FEA3FF0EA1FFE6C7E0003138038003FC0EB07E01301EB00F0A214707EA46C
1360A26C13C07E38C8018038C60700EA81FC14247DA21B>I<007FB512F8397807807800
60141800401408A300C0140C00801404A400001400B3A3497E3801FFFE1E227EA123>I<
39FFFC07FF390FC000F86C4813701520B3A5000314407FA2000114806C7E9038600100EB
3006EB1C08EB03F020237EA125>I<3BFFF03FFC03FE3B1F8007E000F86C486C48137017
206E7ED807801540A24A7E2603C0021480A39039E004780100011600A2EC083CD800F014
02A2EC101E01785CA2EC200F013C5CA20260138890391E400790A216D090391F8003F001
0F5CA2EC00016D5CA20106130001025C2F237FA132>87 D<387FFFFE387E003E0078133C
007013781260004013F012C0EB01E0388003C0A2EB07801200EB0F005B131E5BA25BA25B
1201EBE001EA03C0A2EA07801403EA0F00001E1302A2481306140E48131E00F8137EB512
FE18227DA11E>90 D<12FEA212C0B3B3A912FEA207317BA40E>I<EA0804EA1008EA2010
A2EA4020A2EA8040A4EAB85CEAFC7EA2EA7C3EEA381C0F0F7AA218>I<12FEA21206B3B3
A912FEA207317FA40E>I<EA1FE0EA3038EA780C130EEA30071200A313FFEA07C7EA1E07
123C1278127000F01308A3130FEA7817383C2390380FC1E015157E9418>97
D<120E12FE121E120EAB131FEB61C0EB8060380F0030000E1338143C141C141EA7141C14
3C1438000F1370380C8060EB41C038083F0017237FA21B>I<EA01FEEA0703380C078012
1C383803000078C7FC127012F0A712700078134012386C1380380C0100EA0706EA01F812
157E9416>I<14E0130F13011300ABEA01F8EA0704EA0C02EA1C01EA38001278127012F0
A7127012781238EA1801EA0C0238070CF03801F0FE17237EA21B>I<EA01FCEA0707380C
0380381C01C01238007813E0EA700012F0B5FC00F0C7FCA512700078132012386C13406C
138038070300EA00FC13157F9416>I<133E13E33801C780EA0387130748C7FCA9EAFFF8
0007C7FCB27FEA7FF0112380A20F>I<14703803F198380E1E18EA1C0E38380700A20078
1380A400381300A2EA1C0EEA1E1CEA33F00020C7FCA212301238EA3FFE381FFFC06C13E0
383000F0481330481318A400601330A2003813E0380E03803803FE0015217F9518>I<12
0E12FE121E120EABEB1F80EB60C0EB80E0380F0070A2120EAF38FFE7FF18237FA21B>I<
121C123EA3121CC7FCA8120E127E121E120EB1EAFFC00A227FA10E>I<120E12FE121E12
0EABEB03FCEB01F014C01480EB02005B5B5B133813F8EA0F1CEA0E1E130E7F1480EB03C0
130114E0EB00F014F838FFE3FE17237FA21A>107 D<120E12FE121E120EB3ADEAFFE00B
237FA20E>I<390E1FC07F3AFE60E183803A1E807201C03A0F003C00E0A2000E1338AF3A
FFE3FF8FFE27157F942A>I<380E1F8038FE60C0381E80E0380F0070A2120EAF38FFE7FF
18157F941B>I<EA01FCEA0707380C0180381800C0003813E0481370A200F01378A70070
1370007813F0003813E0381C01C0380E038038070700EA01FC15157F9418>I<EA0E1F38
FE61C0380E8060380F0070000E1338143CA2141EA7143CA21438000F1370380E80E0EB41
C0EB3F0090C7FCA9EAFFE0171F7F941B>I<3801F82038070460EA0E02EA1C01003813E0
EA7800A25AA71278A2EA3801121CEA0C02EA070CEA01F0C7FCA9EB0FFE171F7E941A>I<
EA0E3CEAFE46EA1E8FEA0F0F13061300120EAD120FEAFFF010157F9413>I<EA0F88EA30
78EA601812C01308A212E0EAF000127FEA3FE0EA0FF0EA01F8EA003CEA801C130CA212C0
1308EAE018EAD030EA8FC00E157E9413>I<1202A41206A3120E121E123EEAFFFCEA0E00
AB1304A6EA07081203EA01F00E1F7F9E13>I<000E137038FE07F0EA1E00000E1370AD14
F0A238060170380382783800FC7F18157F941B>I<38FF80FE381E00781430000E1320A2
6C1340A2EB80C000031380A23801C100A2EA00E2A31374A21338A3131017157F941A>I<
39FF8FF87F393E01E03C001CEBC01814E0000E1410EB0260147000071420EB04301438D8
03841340EB8818141CD801C81380EBD00C140E3900F00F00497EA2EB6006EB400220157F
9423>I<38FF83FE381F00F0000E13C06C1380EB8100EA0383EA01C2EA00E41378A21338
133C134E138FEA0187EB0380380201C0000413E0EA0C00383E01F038FF03FE17157F941A
>I<38FF80FE381E00781430000E1320A26C1340A2EB80C000031380A23801C100A2EA00
E2A31374A21338A31310A25BA35B12F05B12F10043C7FC123C171F7F941A>I<383FFFC0
38380380EA300700201300EA600EEA401C133C1338C65A5B12015B38038040EA07005A00
0E13C04813805AEA7801EA7007B5FC12157F9416>I E /Ff 56 122
df<EB0FFF137F3801F83FEA03E0EA07C0EA0F8080A7B6FCA2380F801FB2397FF0FFE0A2
1B237FA21F>13 D<38380380387C07C038FE0FE000FF13F0A2EA7F07383B03B038030030
A300061360A24813C0EA1C010018138038700700EA200214117EA21D>34
D<13181330136013C01201EA0380EA0700A2120E121E121C123CA35AA412F85AAB7E1278
A47EA3121C121E120E7EA2EA0380EA01C012001360133013180D317BA416>40
D<12C012607E7E121C7E7EA2EA038013C0120113E0A3EA00F0A413F81378AB13F813F0A4
EA01E0A313C012031380EA0700A2120E5A12185A5A5A0D317DA416>I<137013F81370A2
002013200070137038FC71F8387E73F0383F27E03807AF00EA00F8A2EA07AF383F27E038
7E73F038FC71F8387070700020132000001300A213F8137015167DA41C>I<1238127C12
FE12FFA2127F123B1203A31206A2120C121C12181270122008117C8610>44
D<EAFFFCA40E047F8C13>I<14181438A21470A214E0A3EB01C0A2EB0380A3EB0700A313
0EA25BA35BA25BA35BA2485AA3485AA248C7FCA3120EA35AA25AA35AA25AA25A15317DA4
1C>47 D<1470A214F8A3497EA2497EA3EB067FA2010C7F143FA2496C7EA201307F140F01
707FEB6007A201C07F90B5FC4880EB8001A2D803007F14004880000680A23AFFE007FFF8
A225227EA12A>65 D<D903FE138090381FFF819038FF01E33901F8003FD803E0131F4848
130F48481307121F48C71203A2481401127EA200FE91C7FCA8127EED0180127F7E15036C
6C1400120F6C6C1306D803F05B6C6C13386CB413F090381FFFC0D903FEC7FC21227DA128
>67 D<B67E15F03907F003FCEC007E81ED1F80ED0FC0ED07E0A216F01503A316F8A916F0
A3ED07E0A2ED0FC0ED1F80ED3F00157EEC03FCB612F0158025227EA12B>I<B612FCA238
07F000153C151C150C150EA21506140CA31500141C143CEBFFFCA2EBF03C141C140CA215
03A214001506A3150EA2151E153EEC01FCB6FCA220227EA125>I<B612F8A23807F001EC
007815381518151CA2150CA21418A21500A214381478EBFFF8A2EBF07814381418A491C7
FCA8B512C0A21E227EA123>I<D903FE134090391FFFC0C090387F00F1D801F8133F4848
130FD807C01307000F1403485A48C71201A2481400127EA200FE1500A791380FFFFC127E
007F9038001FC0A27EA26C7E6C7E6C7E6C7ED801FC133F39007F80E790381FFFC3010313
0026227DA12C>I<B53883FFFEA23A07F0001FC0AD90B6FCA29038F0001FAFB53883FFFE
A227227EA12C>I<B51280A23807F000B3ACB51280A211227EA115>I<B538803FFCA23A07
F0000380ED0700150E15185D15E04A5A4A5A4AC7FC140E1418143C14FCEBF1FEEBF3FFEB
F77F9038FE3F8001F87F496C7E140F6E7E816E7E1401816E7E81ED3F8016C0ED1FE0B538
81FFFEA227227EA12C>75 D<B512C0A2D807F0C7FCB31518A41538A21570A215F0140114
07B6FCA21D227EA122>I<D8FFF0EC0FFF6D5C000716E0D806FC1437A3017E1467A26D14
C7A290391F800187A290390FC00307A3903807E006A2903803F00CA2903801F818A39038
00FC30A2EC7E60A2EC3FC0A2EC1F80A3EC0F00D8FFF091B5FC140630227EA135>I<D8FF
F8EB1FFE7F0007EC00C07FEA06FF6D7E6D7E6D7E130F806D7E6D7E6D7E130080EC7F80EC
3FC0EC1FE0EC0FF0140715F8EC03FCEC01FEEC00FF157FA2153F151F150F15071503A2D8
FFF01301150027227EA12C>I<EB07FC90383FFF809038FC07E03903F001F848486C7E48
48137E48487FA248C7EA1F80A24815C0007E140FA200FE15E0A9007E15C0007F141FA26C
15806D133F001F15006C6C137E6C6C5B6C6C485A3900FC07E090383FFF80D907FCC7FC23
227DA12A>I<B6FC15E03907F007F0EC01FC1400157EA2157FA5157EA215FC1401EC07F0
90B512E0150001F0C7FCADB57EA220227EA126>I<EB07FC90383FFF809038FC07E03903
F001F848486C7E4848137E48487FA248C7EA1F80A24815C0007E140FA200FE15E0A9007E
15C0007F141FA26C1580903881F03F261F83F81300390FC70C7E3907E606FC3903F607F8
D800FF13E090383FFF8001071420EB0003EC01C0EDE0E015FF16C080A2ED7F801600151E
232C7DA12A>I<B512FEECFFC03907F007F0EC01F86E7E157E157FA6157E5D4A5AEC07F0
90B512C05D9038F00FE06E7E6E7E6E7EA81606EC00FEEDFF0CB538803FF8ED0FF027227E
A12A>I<3801FE023807FF86381F01FE383C007E007C131E0078130EA200F81306A27E14
00B4FC13E06CB4FC14C06C13F06C13F86C13FC000313FEEA003F1303EB007F143FA200C0
131FA36C131EA26C133C12FCB413F838C7FFE00080138018227DA11F>I<007FB61280A2
397E03F80F00781407007014030060140100E015C0A200C01400A400001500B3A248B512
F0A222227EA127>I<B538803FFCA23A07F0000180B3A60003EC03007F000114066C6C13
0E017E5B90383F80F890380FFFE0010190C7FC26227EA12B>I<B5EB0FFEA2D807F0EB00
C0A26C6CEB0180A26D1303000115007F000014067F6D5BA2EC801C013F1318ECC038011F
133014E0010F5BA26D6C5AA214F901035B14FD6DB4C7FCA26D5AA3147CA21438A227227F
A12A>I<B53A0FFFF00FFEA2260FF00090C712E000076E14C0A26C6C90393F800180A26D
14C00001EE0300A26D496C5A0000026F1306A2017F9038C7F00CA2028113F8013F01835B
A29139C301FC38011F153016FE90260FE6005BA202FEEBFFE06D486D5AA26D486D5AA36D
486DC7FCA36D48130EA237227FA13A>I<3A7FFFC1FFF8A23A03FC000C006C6C5B15386C
6C13306D6C5A15E090383FC1C090381FE18002E3C7FCEB0FF7EB07FE6D5AA26D7E130080
81497F14BF9038031FE0496C7E130E90380C07F8496C7E1338496C7E90386000FF5B0001
EC7F8049EB3FC03AFFFC03FFFEA227227FA12A>I<B5EB0FFEA2D807F8EB00C015016C6C
14806DEB030000015C6C6C13065D90387F801C90383FC018153890381FE0306D6C5A15E0
6D6C5A903803FD8014FF6D90C7FC5C1300AC90381FFFF0A227227FA12A>I<0004134000
0E13E038180180EA380300301300EA6006A2485AA338DC0DC038FE0FE000FF13F0A2EA7F
07383E03E0381C01C014117AA21D>92 D<EA0FFC383FFF80387E07C0EB03E0130114F012
3C1200A2133FEA03FDEA1FC1EA3F01127E12FCA4EA7E02EB0CF8381FF87F3807E03F1816
7E951B>97 D<B4FCA2121FABEB0FE0EB3FF8EBE07CEB803E497EEC0F80A215C0A8158014
1F01801300EBC03E381EE07C381C3FF838180FC01A237EA21F>I<EBFF80000713E0380F
83F0EA1F03123E127E387C01E090C7FC12FCA6127C127EA2003E13186C1330380FC06038
07FFC0C6130015167E9519>I<EB01FEA2EB003EABEA01FC3807FFBE380F81FE381F007E
003E133E127E127C12FCA8127CA26C137E6C13FE380F83BE3907FF3FC0EA01FC1A237EA2
1F>I<13FE3807FF80380F87C0381E01E0003E13F0EA7C0014F812FCA2B5FCA200FCC7FC
A3127CA2127E003E13186C1330380FC0703803FFC0C6130015167E951A>I<EB1FC0EB7F
E0EBF1F0EA01E31203EA07C3EBC1E0EBC000A6EAFFFEA2EA07C0B2EA3FFCA2142380A211
>I<3801FE0F3907FFBF80380F87C7381F03E7391E01E000003E7FA5001E5BEA1F03380F
87C0EBFF80D809FEC7FC0018C8FCA2121C381FFFE06C13F86C13FE001F7F383C003F48EB
0F80481307A40078EB0F006C131E001F137C6CB45A000113C019217F951C>I<B4FCA212
1FABEB07E0EB1FF8EB307CEB403CEB803EA21300AE39FFE1FFC0A21A237EA21F>I<121C
123E127FA3123E121CC7FCA7B4FCA2121FB2EAFFE0A20B247EA310>I<B4FCA2121FABEC
FF80A2EC38001460495A495A49C7FC130E5B137E13FF13CFEB0F806D7E6D7E1301806D7E
147C143C39FFE0FFC0A21A237EA21E>107 D<B4FCA2121FB3ADEAFFE0A20B237EA210>I<
3AFF07F007F090391FFC1FFC3A1F303E303E01401340496C487EA201001300AE3BFFE0FF
E0FFE0A22B167E9530>I<38FF07E0EB1FF8381F307CEB403CEB803EA21300AE39FFE1FF
C0A21A167E951F>I<13FE3807FFC0380F83E0381E00F0003E13F848137CA300FC137EA7
007C137CA26C13F8381F01F0380F83E03807FFC03800FE0017167E951C>I<38FF0FE0EB
3FF8381FE07CEB803E497E1580A2EC0FC0A8EC1F80A29038803F00EBC03EEBE0FCEB3FF8
EB0FC090C8FCA8EAFFE0A21A207E951F>I<EBFE033807FF87380FC1C7381F006F48133F
127E80127C12FCA7127EA2003E5B6C5B380FC1DF3807FF9F3801FC1FC7FCA8ECFFE0A21B
207E951E>I<EAFE1FEB3FC0381E67E013C71387A2381F83C090C7FCADEAFFF0A213167E
9517>I<EA0FF3EA3FFFEA781FEA6007EAE003A212F000FCC7FCEA7FE013F8EA3FFEEA0F
FF120138000F80EAC007130312E0A238F00700EAFC0EEAEFFCEAC7F011167E9516>I<48
7EA41203A21207A2120F123FB5FCA2EA0F80ABEB8180A5EB8300EA07C3EA03FEEA00F811
207F9F16>I<38FF01FEA2381F003EAF147E14FE380F81BE3907FF3FC0EA01FC1A167E95
1F>I<39FFE01FE0A2391F800700000F1306EBC00E0007130C13E000035BA26C6C5AA26C
6C5AA2EB7CC0A2137F6D5AA26DC7FCA2130EA21B167F951E>I<3AFFE3FF07F8A23A1F00
7800C09038807C01000F1580A23A07C07E030014DE5D3903E1DF06148FD801F1138CEBF3
07A2D800FF13D8EBFE0315F890387C01F0A2013C5BEB3800A225167F9528>I<39FFE07F
C0A2390F801C006C6C5A6C6C5AEBF0606C6C5A3800F980137F6DC7FC7F80497E1337EB63
E0EBC1F03801C0F848487E3807007E000E133E39FF80FFE0A21B167F951E>I<39FFE01F
E0A2391F800700000F1306EBC00E0007130C13E000035BA26C6C5AA26C6C5AA2EB7CC0A2
137F6D5AA26DC7FCA2130EA2130CA25B1278EAFC3813305BEA69C0EA7F80001FC8FC1B20
7F951E>I E /Fg 50 122 df<1338137813F0EA01E0EA03C0EA0780EA0F00120E5AA25A
A25AA35AAA1270A37EA27EA27E120FEA0780EA03C0EA01E0EA00F8137813380D2878A21A
>40 D<126012F012787E7E7EEA07801203EA01C0A2EA00E0A21370A31338AA1370A313E0
A2EA01C0A2EA03801207EA0F00121E5A5A5A12600D287CA21A>I<13E0A538F0E1E0EAFC
E7387EEFC0381FFF00EA07FCEA01F0EA07FCEA1FFF387EEFC038FCE7E0EAF0E13800E000
A513157D991A>I<1218123E127E127F123F121F1207120EA2121C12FC12F81260080D77
851A>44 D<1230127812FCA212781230060676851A>46 D<14C0EB01E0A2130314C01307
1480130F1400A25B131E133E133C137C1378A213F85B12015B12035BA212075B120F90C7
FC5A121EA2123E123C127C127812F85AA2126013277DA21A>I<1230127812FCA2127812
301200A91230127812FCA212781230061576941A>58 D<1218123C127EA2123C12181200
A91218123C127EA2123E121E120EA2121C123C12F812F01260071C77941A>I<133E3801
FF804813C03807C1E0EA0F00381E0F70383C3FF0EA387F387070F8EBE078A238E1C038A8
3870E070A2EB70E0EA387F383C3FC0381E0F00380F00383807C0F83803FFF06C13E03800
3F00151E7E9D1A>64 D<1338137CA2136C13EEA313C6A2EA01C7A3138300031380A43807
01C0A213FFA24813E0EA0E00A3001E13F0001C1370387F01FC38FF83FE387F01FC171E7F
9D1A>I<EB7C38EA01FF000713F8EA0F83EA1E00001C13785A14385AA214005AA8127014
38A27EA26C1370001E13F0380F83E03807FFC00001138038007C00151E7E9D1A>67
D<EA7FFEB5FC6C1380381C07C0EB01E0EB00F0147014781438A2143C141CA8143C1438A2
1478147014F0EB01E0EB07C0EA7FFFB512006C5A161E7F9D1A>I<B512F8A3381C0038A4
1400A3130EA3EA1FFEA3EA1C0EA390C7FCA3141CA5B512FCA3161E7E9D1A>I<EBF8E0EA
03FEEA07FFEA0F07EA1E03EA3C01EA38005AA3481300A6EB0FF8A3EB00E01270A2130112
38EA3C03121EEA0F07EA07FFEA03FEEA00F8151E7E9D1A>71 D<38FF83FEA3381C0070AA
381FFFF0A3381C0070AB38FF83FEA3171E7F9D1A>I<EA7FFFB512806C1300EA01C0B3A6
EA7FFFB512806C1300111E7C9D1A>I<EA7FE012FF127F000EC7FCB3141CA5387FFFFCB5
FC7E161E7F9D1A>76 D<00FC137E6C13FEA2383B01B8A31383A200391338A213C7A2EA38
C613EEA2136CA2137C1338A21300A700FE13FEA3171E7F9D1A>I<38FE03FE12FFA2381D
8070A213C0121CA213E0A213601370A213301338A21318131CA2130C130EA21306A21307
1303A238FF81F0A21380171E7F9D1A>I<EA0FFE383FFF804813C0EA7C07EA700100F013
E0EAE000B1EAF001A2007013C0EA7C07EA7FFF6C1380380FFE00131E7D9D1A>I<EAFFFE
EBFF8014C0381C03E0EB00F0147014781438A41478147014F0EB03E0381FFFC01480EBFE
00001CC7FCA9B47EA3151E7E9D1A>I<EA0FFE383FFF804813C0EA7C07EA700100F013E0
EAE000B0137013F0EAF079007013C0EA7C3FEA7FFF6C1380380FFE00EA000F7F14801303
14C01301A213257D9D1A>I<EAFFFC13FF1480381C07C0EB01E0EB00F01470A414F0EB01
E0EB07C0381FFF8014001480381C07C01301EB00E0A514E214E7A338FF807EA21438181E
7F9D1A>I<3803F8E0EA0FFEEA1FFFEA3C07EA780112F0EAE000A3140012701278EA3F80
EA1FF8EA07FF38007FC0EB07E0EB00F014701438A2126012E0A214706C13F038FE01E0B5
12C000EF138038E1FE00151E7E9D1A>I<387FFFFEB5FCA238E0380EA400001300B3A238
03FF80A3171E7F9D1A>I<38FF83FEA3381C0070B3A26C13E0A2380701C013833803FF80
6C1300EA007C171E7F9D1A>I<387F87F8A3380E01C0EA0703EB8380EA0387EBC700EA01
CF13EEEA00FE5B137C13781338137CA213FE13EEEA01CF13C7380387801383380701C0A2
380E00E0A2387F01FC38FF83FE387F01FC171E7F9D1A>88 D<383FFFF85AA23870007014
E0130114C03800038013071400130E131E131C5B13785B5B485A12035B48C7FC5A000E13
385A123C12385AB512F8A3151E7E9D1A>90 D<EA1FF0EA3FFC487EEA780FEA3007380003
80A2137FEA07FF121FEA3F83EA7803127012E0A3EA7007EA780F383FFFFCEA1FFDEA07F0
16157D941A>97 D<127E12FE127E120EA6133EEBFF80000F13E0EBC1F0EB8070EB003812
0E141CA7000F13381478EB80F0EBC1E0EBFFC0000E138038063E00161E7F9D1A>I<EBFF
80000313C0000F13E0EA1F01383C00C04813001270A25AA51270A2007813707E381F01F0
380FFFE0000313C03800FE0014157D941A>I<EB0FC0131F130F1301A6EA01F1EA07FDEA
0FFFEA1E0FEA3C07EA7803EA700112E0A7EA7003A2EA3807EA3E0F381FFFF83807FDFC38
01F1F8161E7E9D1A>I<EA01F8EA07FF481380381E07C0EA3C01387800E01270481370A2
B512F0A300E0C7FC1270A2007813707E381F01F0380FFFE0000313803800FE0014157D94
1A>I<EB07E0EB1FF0EB3FF8EB7878EBF030EBE000A4387FFFF0B5FCA23800E000AF383F
FF804813C06C1380151E7F9D1A>I<127E12FE127E120EA6133EEBFF80000F13C013C1EB
80E01300120EAC387FC3FC38FFE7FE387FC3FC171E7F9D1A>104
D<13C0487EA26C5A90C7FCA6EA7FE0A31200AF387FFF80B512C06C1380121F7C9E1A>I<
EA7FE012FF127F1200B3A6387FFFC0B512E06C13C0131E7D9D1A>108
D<387CE0E038FFFBF8EA7FFF381F1F1CEA1E1EA2EA1C1CAC387F1F1F39FFBFBF80397F1F
1F00191580941A>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAC387FC3FC38
FFE7FE387FC3FC17157F941A>I<EA01F0EA07FCEA1FFF383E0F80EA3C07387803C0EA70
0138E000E0A6EAF001007013C0EA7803383C0780EA3E0F381FFF00EA07FCEA01F013157D
941A>I<EA7E3E38FEFF80007F13E0380FC1F0EB8070EB0038120E141CA7000F13381478
EB80F0EBC1E0EBFFC0000E1380EB3E0090C7FCA8EA7FC0487E6C5A16207F941A>I<3801
F8E0EA07FEEA0FFFEA1E07EA3C03EA78011270EAE000A613011270EA7803123CEA1E0FEA
0FFFEA07FCEA01F0C7FCA8EB0FFEA317207E941A>I<387F81F838FF8FFC387F9FFE3803
FE1EEBF80CEBE000A25B5BAAEA7FFFB5FC7E17157F941A>I<3807FB80EA1FFF127FEA78
07EAE003A30078C7FCEA7FC0EA1FFCEA07FE38003F801307386001C012E0A2EAF00338FC
0780B51200EAEFFEEAE3F812157C941A>I<487E1203A6387FFFE0B5FCA238038000AA14
70A43801C1E013FF6C1380EB3F00141C7F9B1A>I<387E07E0EAFE0FEA7E07EA0E00AD13
01EA0F033807FFFC6C13FE3800FCFC17157F941A>I<387F83FC38FFC7FE387F83FC380E
00E0A3380701C0A338038380A33801C700A3EA00EEA3137CA2133817157F941A>I<38FF
83FEA338380038A26C1370A31338137CA2380C6C60380EEEE0A413C6000613C0EA07C713
83A217157F941A>I<387FC7F8EBCFFCEBC7F8380703C038038380EBC700EA01EFEA00FE
137C13781338137C13EE120113C738038380000713C0EA0F01387FC7FC00FF13FE007F13
FC17157F941A>I<387F83FC38FFC7FE387F83FC380E00E0A27EEB01C0A2EA0381EB8380
13C31201EBC700EA00E7A213E61366136E133CA31338A35BA2EA30F0EA78E01271EA7FC0
6C5A001EC7FC17207F941A>I E /Fh 57 122 df<49B4FC011F13C090387F81E0EBFC01
3901F807F01203EA07F0A4EC01C091C8FCA3EC3FF8B6FCA33807F003B3A33A7FFF3FFF80
A3212A7FA925>12 D<903801FFF8131FEB7F0313FC3801F80712033807F003A9B6FCA338
07F003B3A33A7FFF3FFF80A3212A7FA925>I<1306130C13181338137013E01201EA03C0
A2EA0780A2120F13005AA2123EA3127EA3127CA212FCAE127CA2127EA3123EA37EA27E13
801207A2EA03C0A2EA01E01200137013381318130C13060F3C7AAC1A>40
D<12C012607E12387E7E120FEA0780A2EA03C0A213E0120113F0A2EA00F8A313FCA3137C
A2137EAE137CA213FCA313F8A3EA01F0A213E0120313C0A2EA0780A2EA0F00120E5A5A12
305A5A0F3C7CAC1A>I<123C127FEAFF80A213C0A3127F123E1200A2EA0180A3EA0300A2
1206120E5A5A12100A157B8813>44 D<B51280A611067F9016>I<121C127FA2EAFF80A3
EA7F00A2121C09097B8813>I<EB3F803801FFF03807E0FC380FC07E48487E497E481480
003E130F007E14C0A400FE14E0AF007E14C0A46CEB1F80A26C14006D5A380FC07E6C6C5A
3801FFF038003F801B277DA622>48 D<130E131E137EEA07FE12FFA212F81200B3ABB512
FEA317277BA622>I<EBFF80000713F04813FC381E03FE393800FF80007C133F00FE14C0
6C131F15E0140FA2127E003C131FC7FC15C0A2EC3F801500147E5C5C495A495AEB078049
C7FC131E4913E013705B3901C001C0EA0380EA0600000FB5FC5A5A5AB61280A31B277DA6
22>I<EB7F803803FFF04813FC380F81FE381F007FEA3F80EC3F80A3121F1300C7EA7F00
A2147E5C495AEB07F0EBFFC0A2EB01F8EB007E801580EC1FC0A215E0A2123C127EB4FCA2
15C0143F481480007CEB7F00383F01FE6CB45A000713F0C613801B277DA622>I<140FA2
5C5C5C5C5BA2EB03BFEB073F130E131C133C1338137013E0EA01C0EA038012071300120E
5A5A5A12F0B612F8A3C7EA7F00A890381FFFF8A31D277EA622>I<1238123E003FB512F0
A34814E015C0158015003870000EA25C485B5C5CC6485AA2495A130791C7FC5B5B131E13
3EA2137E137CA213FCA41201A76C5A13701C297CA822>55 D<EB3FC03801FFF04813FC38
07C07E48C67E001E7FEC0F80123EA2123F138001C01300EBF01F381FFC1E6D5A380FFFF8
6C13E06C7F6C13FC8000077FD80F0F1380D81E0713C0EA3E01397C007FE0141F48130F14
071403A315C0127C007EEB07806CEB0F00381FC03F380FFFFC00035B38007FC01B277DA6
22>I<EC0780A24A7EA34A7EA24A7EA3EC77F8A2ECF7FC14E3A2903801C1FEA201037F14
80A249486C7EA24980010E133FA2496D7EA2013FB57EA39039700007F8A201F080491303
000181491301A2000381D8FFFE013F13FCA32E297EA833>65 D<B612F815FF16C03A03F8
001FE0ED0FF0ED07F8150316FCA21501A3150316F8A2ED07F0150FED1FC0EDFF8090B5EA
FE00EDFFC09039F8000FF0ED03F8ED01FC16FE1500A216FFA616FE1501ED03FC1507ED1F
F8B712E016C0EDFE0028297DA830>I<91387FE003903907FFFC07011FEBFF0F90397FF0
0F9F9039FF0001FFD801FC7F4848147F4848143F4848141F485A160F485A1607127FA290
C9FC5AA97E7F1607123FA26C7E160E6C7E6C6C141C6C6C143C6C6C14786CB4EB01F09039
7FF007C0011FB512800107EBFE009038007FF028297CA831>I<B612FCEDFF8016E03A03
FC001FF8ED03FCED00FE167FEE3F80EE1FC0A2EE0FE0A2EE07F0A417F8AA17F0A3EE0FE0
A217C0161FEE3F80EE7F005EED03FCED1FF8B75A168003FCC7FC2D297EA834>I<B712E0
A33903FC001FED07F01501A215001670A3913801C0781638A302031300A2140F90B5FCA3
EBFC0F1403A20201130EA3161C91C7FCA3163C1638167816F815011503151FB712F0A327
297EA82C>I<B712C0A33903FC003FED0FE015031501A21500A316F0913801C070A31600
1403A2140F90B5FCA3EBFC0F1403A21401A491C8FCA9B512FCA324297EA82A>I<B5D8F0
0FB5FCA3D803FCC7EA3FC0AF90B7FCA301FCC7123FB1B5D8F00FB5FCA330297EA835>72
D<B512F0A33803FC00B3B1B512F0A314297EA819>I<B512FCA3D803FCC8FCB3A3ED01C0
A415031680A21507A2150FA2151F157F913801FF00B7FCA322297EA828>76
D<D8FFFE92383FFF80A26D5D0003EFE000A2D9BF8014EFA2D99FC0EB01CFA2D98FE0EB03
8FA3D987F0EB070FA2D983F8130EA2D981FC131CA3D980FE1338A2027F1370A291383F80
E0A391381FC1C0A291380FE380A2913807F700A3EC03FEA26E5AA26E5AD8FFFE0203B512
80A2157039297DA840>I<D8FFFCEC7FFF7F7F00036DEB01C080EBBFE0139F80EB8FF8EB
87FCEB83FEEB81FF01801380147F15C0EC3FE0EC1FF0EC0FF8EC07FC140315FEEC01FF6E
1381ED7FC1ED3FE1ED1FF1150F16F9ED07FDED03FF8181167FA2163F161F160F1607D8FF
FE14031601A230297EA835>I<ECFFC0010F13FC90383F807F9039FE001FC0D801F8EB07
E048486D7E48486D7E000F8148486D7EA24848147FA2007F168090C8123FA34816C0AA6C
16806D147FA2003F1600A26C6C14FEA26C6C495A6C6C495A6C6C495A6C6C495A6C6C495A
90263FC0FFC7FC90380FFFFC010013C02A297CA833>I<B612F815FF16C03A03FC003FE0
ED07F0ED03F816FC150116FEA716FC150316F8ED07F0ED3FE090B61280EDFE0001FCC8FC
B0B512F0A327297EA82E>I<B612E015FE6F7E3A03FC003FE0ED0FF06F7E6F7E150182A6
5E4B5A1507ED0FE0ED3FC090B500FEC7FCA29039FC00FF80ED3FC06F7E6F7E6F7EA9170E
A21503923801FC1CB538F000FEEE7FF8EE0FE02F297EA832>82 D<9038FF80600003EBF0
E0000F13F8381F80FD383F001F003E1307481303A200FC1301A214007EA26C140013C0EA
7FFCEBFFE06C13F86C13FE80000714806C14C0C6FC010F13E0EB007FEC1FF0140F140700
E01303A46C14E0A26C13076C14C0B4EB0F80EBE03F39E3FFFE0000E15B38C01FF01C297C
A825>I<007FB71280A39039807F807FD87C00140F00781507A20070150300F016C0A248
1501A5C791C7FCB3A490B612C0A32A287EA72F>I<B500F0EBFFFEA3D803FCC7EA0380B3
AA0001ED07007F0000150E137F6D143CD91FC05B90390FF003F06DB55A01001480DA1FFC
C7FC2F297EA834>I<B53CE07FFFE01FFFC0A32803FC0003FCC7EA7000A26D6D7E000160
A26D6E13016C604B138002801503017F5F4B13C0D93FC0013F49C7FCA2913AE00E1FE00F
011F160E17F09126F01C0F131E010F161C033C13F8902707F838075BA2037813FC902703
FC70035BA2913AFEE001FEF001015E02FF14FF4B7E6D5EA26E486D5AA36EC76CC8FCA202
3E80021E141EA242297FA845>87 D<3B7FFFF01FFFE0A3000190C7EAF0006C6D485A02C0
5B017F13036D6C485AD91FF090C7FC5D90380FF81E6D6C5A1538903803FE786D6C5A5D6D
5B147F6E7EA26E7E81143F81EC7BFEECF3FFEB01E102C07F01036D7EEB078049486C7E01
0E6D7E131E496D7E01386D7E498001F0130348486D7EB5013F13FCA32E297EA833>I<B5
00F0EB3FFFA3D803FEC7EA03C06C6C15806C6DEB07005E6D6C130E6E5B013F143C6D6C13
386E5B010F14F06D6C5B6E485A01031303D901FF5B0387C7FC6D138FEC7FCE15FC143F6E
5A5D140FAE0103B512C0A330297FA833>I<3803FF80000F13F0381F01FC383F80FE147F
801580EA1F00C7FCA4EB3FFF3801FC3FEA0FE0EA1F80EA3F00127E5AA4145F007E13DF39
3F839FFC381FFE0F3803FC031E1B7E9A21>97 D<EB3FF03801FFFC3803F03E380FC07FEA
1F80EA3F00A248133E007E90C7FCA212FEA7127EA2127F6CEB03801380001FEB0700380F
E00E3803F83C3801FFF838003FC0191B7E9A1E>99 D<EC7FF0A31407ACEB3F873801FFF7
3807F03F380FC00F381F8007EA3F00A2127EA312FEA8127EA27EA2381F800F380FC01F39
07E07FFF3801FFE738007F87202A7EA925>I<EB3FC03801FFF03803E07C380F803E001F
7F130048EB0F80127E15C0A200FE1307A2B6FCA248C8FCA3127EA2127F6CEB01C07E390F
8003803907C007003803F01E3800FFFCEB3FE01A1B7E9A1F>I<EB07F8EB3FFCEB7E3E38
01FC7FEA03F813F01207143E1400A7B512C0A33807F000B3A3387FFF80A3182A7EA915>
I<9038FF80F00003EBE3F8390FC1FE1C391F007C7C48137E003EEB3E10007EEB3F00A600
3E133E003F137E6C137C380FC1F8380BFFE00018138090C8FC1238A2123C383FFFF814FF
6C14C06C14E06C14F0121F383C0007007CEB01F8481300A4007CEB01F0A2003FEB07E039
0FC01F806CB5120038007FF01E287E9A22>I<EAFFE0A3120FAC147E9038E1FF809038E3
0FC001E413E0EBE80701F813F013F0A213E0B039FFFE3FFFA3202A7DA925>I<1207EA0F
80EA1FC0EA3FE0A3EA1FC0EA0F80EA0700C7FCA7EAFFE0A3120FB3A3EAFFFEA30F2B7EAA
12>I<EAFFE0A3120FACEC1FFCA3EC0780EC0F00141E5C5C14E0EBE3C013E7EBEFE0EBFF
F08013F3EBE1FCEBC0FE147FA2EC3F80EC1FC0EC0FE0A2EC07F039FFFC1FFFA3202A7FA9
23>107 D<EAFFE0A3120FB3B2EAFFFEA30F2A7EA912>I<26FFC07FEB1FC0903AC1FFC07F
F0903AC307E0C1F8D80FC49038F101FC9039C803F20001D801FE7F01D05BA201E05BB03C
FFFE3FFF8FFFE0A3331B7D9A38>I<38FFC07E9038C1FF809038C30FC0D80FC413E0EBC8
0701D813F013D0A213E0B039FFFE3FFFA3201B7D9A25>I<EB3FE03801FFFC3803F07E39
0FC01F80391F800FC0393F0007E0A2007EEB03F0A300FE14F8A8007E14F0A26CEB07E0A2
391F800FC0390FC01F803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038
EFFF809038FE0FE0390FF803F09038F001F801E013FC140015FEA2157FA8157E15FEA215
FC140101F013F89038F807F09038FC0FE09038EFFF809038E1FC0001E0C7FCA9EAFFFEA3
20277E9A25>I<90383F80703901FFE0F03803F079380FE01D381F800F123FEB00075AA2
127E12FEA8127FA27E1380001F130F380FC01F3807F0773801FFE738007F87EB0007A9EC
7FFFA320277E9A23>I<38FFC1F0EBC7FCEBC63E380FCC7F13D813D0A2EBF03EEBE000B0
B5FCA3181B7F9A1B>I<3803FE30380FFFF0EA3E03EA7800127000F01370A27E00FE1300
EAFFE06CB4FC14C06C13E06C13F0000713F8C6FCEB07FC130000E0137C143C7E14387E6C
137038FF01E038E7FFC000C11300161B7E9A1B>I<13E0A41201A31203A21207120F381F
FFE0B5FCA2380FE000AD1470A73807F0E0000313C03801FF8038007F0014267FA51A>I<
39FFE07FF0A3000F1307B2140FA2000713173903F067FF3801FFC738007F87201B7D9A25
>I<39FFFC03FFA3390FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE070000
140013FFEB7F0EA2149EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA2201B7F9A23>I<3BFF
FC7FFC1FFCA33B0FE00FE001C02607F007EB0380A201F8EBF00700031600EC0FF801FC5C
0001150EEC1FFC2600FE1C5B15FE9039FF387E3C017F1438EC787F6D486C5A16F0ECE01F
011F5CA26D486C5AA2EC800701075CA22E1B7F9A31>I<39FFFC1FFEA33907F003803803
F8079038FC0F003801FE1E00005BEB7F3814F86D5A6D5A130F806D7E130F497EEB3CFEEB
38FFEB787F9038F03F803901E01FC0D803C013E0EB800F39FFF03FFFA3201B7F9A23>I<
39FFFC03FFA3390FF000F0000714E07F0003EB01C0A2EBFC0300011480EBFE0700001400
13FFEB7F0EA2149EEB3F9C14FC6D5AA26D5AA36D5AA26D5AA25CA21307003890C7FCEA7C
0FEAFE0E131E131C5BEA74F0EA3FE0EA0F8020277F9A23>I E /Fi
29 121 df<140E141E1438147814F0EB01E0EB03C0EB0780130FEB1F00133EA25B13FC5B
1201485AA212075BA2120F5B121FA3485AA4127FA290C7FCA45AAF7EA47FA2123FA46C7E
A3120F7F1207A27F1203A26C7E12007F137C7FA27FEB0F801307EB03C0EB01E0EB00F014
781438141E140E175777C026>40 D<12C07E127012787E7E7E6C7E7F6C7E6C7EA26C7E7F
137C137E7FA21480131FA214C0130F14E0A3EB07F0A414F8A21303A414FCAF14F8A41307
A214F0A4EB0FE0A314C0131F1480A2133F1400A2137E137C13FC5B485AA2485A485A5B48
C7FC121E5A5A12705A5A16577AC026>I<ED01E04B7EA24B7EA34B7EA24B7EA34B7EA24B
7F157BA203F37F15F102018015E00203805D167F020780ED803F020F80ED001FA24A8002
1E130F023E80023C7FA24A818202F8814A7FA249B77EA24982A2D907C0C76C7E5C173F01
0F8291C8121F4982011E150FA2013E82013C81017C8301788113FCB500F00103B612C0A4
423B7DBA49>65 D<DB1FFE14600203B500E013E0021FECF801027FECFE03903B01FFFC00
FF07010701C0EB1FCF4990C7EA07FFD91FFC1401D93FF0804948157F4948153F4849151F
4890C9120F5A48481607A248481603A2485A1801A2127FA24993C7FCA212FFAB127FA27F
F001E0123FA36C7EF003C06C7EA26C6CEE07807E6C6DED0F006C6D5D6D6C153E6D6C5DD9
1FFC5D6DB4EC03F06D01C0EB0FE0010101FCEB7F806D6CB6C7FC021F14FC020314E09126
001FFEC8FC3B3D7BBB46>67 D<B912F0A43A007FF000019338003FF8170F170717031701
1700A21878A4043C137C183CA4047C1300A216FC1501150791B5FCA4ECF0071501150016
7CA2043C130FA3181EA293C7FCA2183EA2183CA2187CA218FC1701EF03F81707170F173F
EE03FFB9FC18F0A3383B7CBA40>69 D<B6D8F803B612E0A426007FF0C70001EBC000B3A4
91B8FCA402F0C71201B3A7B6D8F803B612E0A4433B7CBA4C>72 D<B612F8A439007FF000
B3B3AFB612F8A41D3B7DBA24>I<B500F00403B512E06E5EA26E5ED8007FF1C000A2D97B
FE161EA2D979FF5EA201786D5DA36E6C5DA26E6C4A5AA26E6C4A5AA36E6C4A5AA26E6C4A
5AA26E6C141EA36E6C5CA26E6D5BA26F6C5BA36F6C485AA26F6C485AA26F6C485AA26F6C
48C7FCA3923803FE1EA26F6C5AA26F13F8A3705AA2705AA201FC6E5AB500FC4BB612E0A2
EE0F80EE0700533B7CBA5C>77 D<B500F00207B512E0808080D8007F92390007E0006E6F
5A81017B7F81137901787F6E7E6E7E81141F6E7E6E7F6E7F82806E7F6F7E6F7E826F7E81
6F13806F13C017E06F13F081EE7FF8EE3FFC17FEEE1FFF827013837013C318E37013F382
EF7FFBEF3FFFA283838383A28383187F183FA201FC161FB500FC150F18071803A2433B7C
BA4C>I<B8FC17F017FC17FF28007FF0000F13C0040113E09338007FF0EF3FF8EF1FFCA2
18FE170FA218FFA718FEA2171F18FC18F8173FEF7FF0933801FFE0040F138091B7120017
F817C002F0C9FCB3A5B612F8A4383B7CBA42>80 D<EB3FFE48B512E0000714F8390FE007
FC9038F001FE486C6C7E6F7E82153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F38
03FF803807FC00EA0FF0485A123F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F
0FFFE03807FFFE0001497E39003FE0002B267DA52F>97 D<13FE12FFA412071203B04AB4
FC021F13F0027F13FC9138FC03FE9039FFF000FF02C0EB3F8091C7EA1FC04915E0EE0FF0
17F8A2EE07FCA317FEA917FCA3160F17F817F0161F6D15E06EEB3FC06EEB7F80D9F9E0EB
FF009039F0FC07FE91387FFFF8D9E01F13E09026C003FEC7FC2F3C7DBB36>I<903801FF
F0010F13FE013FEBFF809039FF801FC03901FE003F4848EB7FE0485A485A121F4848EB3F
C0ED1F80007FEC0F004990C7FCA212FFAA127F7FA2123F6D14F0121F6C6CEB01E012076C
6CEB03C06CB4EB0F806C9038C03F0090383FFFFE010F13F8010113C024267DA52B>I<EE
3F80ED3FFFA4150181B0ECFF80010F13F0013F13FC9038FFC03F3901FE000F4848130348
487F48487F121F485AA2127F5BA312FFA9127FA36C7EA2121F6C6C5B6C6C5B00035CD801
FE011F13C02700FF807E13FE90387FFFF8010F13E0010113002F3C7DBB36>I<49B47E01
0F13F0017F13FC9038FF81FE3A03FE007F80D807F8133F4848EB1FC0ED0FE0485A003F15
F01507485A16F8A212FFA290B6FCA301C0C8FCA4127FA36C7E1678121F7F000F15F06C6C
13016C6CEB03E06C6CEB0FC03A00FFC07F8090393FFFFE00010F13F8010013C025267DA5
2C>I<EC1FF0ECFFFC010313FF90390FF83F8090381FE07F90393FC0FFC0495A13FFA248
9038007F80ED3F00151E92C7FCAAB67EA4000190C8FCB3AC007F13FEA4223C7DBB1E>I<
161FD907FEEBFF8090263FFFC113C090B538F3C7E03A01FE07FF0F3903F801FC3907F000
FE000F9138FF07C0484890387F8380EE8000003F81A7001F5DA26C6C49C7FC00075C6C6C
485A3901FE07F848B55AD8073F13C0260607FEC8FC000ECAFCA2120F5A7F6C7E90B512F8
EDFF8016E06C816C816C814881000F81391FC0000F48C8FC48ED7F8000FE153FA5007FED
7F00A26C6C14FE6C6C495AD80FF0EB07F8D807FEEB3FF00001B612C06C6C91C7FC010713
F02B397DA630>I<13FE12FFA412071203B0EDFF80020313F0020F7F91381E03FC913838
01FE02607F4A7E01FF15805C91C7FCA35BB3A4B5D8F83F13FEA42F3C7CBB36>I<EA01E0
EA07F8487EA2487EA46C5AA26C5AEA01E0C8FCAB13FE127FA412071203B3AAB512F0A414
3D7DBC1A>I<13FE12FFA412071203B092381FFFF0A4923803FC0016F04B5AED1F804BC7
FC157E5DEC03F8EC07E04A5A4A5A4A7EECFFE090B57EA281ECCFFCEC07FE496C7E13FC6E
7F6E7F6F7E153F826F7E6F7E1507826F7EB5D8F01F13FCA42E3C7DBB33>107
D<13FE12FFA412071203B3B3AEB512F8A4153C7DBB1A>I<D801FCD97FC0EB0FF800FF90
2603FFF8EB7FFF020F6D48B57E913C1F03FE03E07FC0913C3800FF07001FE0000749028E
80000301C0D97F98130F01FD03F8804A5C01FFC75BA3495DB3A4B5D8F81FB50003B512E0
A44B267CA552>I<D801FCEBFF8000FF010313F0020F7F91381E03FC91383801FE000701
607F0003497E01FD15805C01FFC7FCA35BB3A4B5D8F83F13FEA42F267CA536>I<903801
FFC0010F13F8017F13FFD9FF807F3A03FE003FE0D807F8EB0FF048486D7EA248486D7E00
3F81A248486D7EA400FF1680A9007F1600A36C6C495AA2001F5D6D1307000F5D6C6C495A
D803FEEB3FE03A00FF80FF806DB5C7FC010F13F8010113C029267DA530>I<3901FC03F0
00FFEB0FFC4AB4FC91383C3F80EC707F00079038E0FFC000035BEBFD80A201FFEB7F8091
38003F00151E92C7FC5BB3A3B512FCA422267DA528>114 D<90383FF0383903FFFE7848
EBFFF8381FC00F383F0003003E13005A157812FCA27E6C140013C013FC387FFFF06C13FE
ECFF806C14C06C14E0000314F0C614F8011F13FCEB007FEC07FE0070130100F01300157E
7EA27E157C6C14FC6C14F890388001F09038F00FE000F9B512C0D8F07F130038C01FF81F
267DA526>I<130FA55BA45BA25BA25B5A5A5A001FEBFFF0B6FCA3000190C7FCB3153CA8
6C14781480017F13F090383FC1E090381FFFC06D1380903801FE001E377EB626>I<01FE
EC3F8000FFEC3FFFA400071401000380B3A45DA25D120115066C6C4913C090267F807813
FE6DB45A6D5B010313802F267CA536>I<B539E00FFFF8A4000190390001FC00028013F0
6CEBC0036D6C485A013F5C6D6C485A6D6C48C7FCECFC3E6D6C5A903803FFFC6D5B6D5B5D
147F6E7E141F4A7E4A7E81ECFBFFD901F17FEB03E049486C7E010F8049486C7E4A6C7E01
3E130F496D7E496D7E000181B5011F13FCA42E267EA533>120 D
E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin

%%EndSetup
%%Page: 1 1
1 0 bop 335 63 a Fi(A)33 b(Consisten)m(t)g(Extension)g(of)f(the)271
167 y(Message)i(P)m(assing)g(In)m(terface)e(\(MPI\))80
253 y(for)g(Non)m(blo)s(c)m(king)j(Comm)m(unication)d(Handlers)694
362 y Fh(H.)22 b(Carter)g(Edw)n(ards)78 436 y(T)-6 b(exas)22
b(Institute)h(for)f(Computational)i(and)e(Applied)j(Mathematics)831
511 y(\(TICAM\))471 586 y(The)d(Univ)n(ersit)n(y)j(of)d(T)-6
b(exas)22 b(at)g(Austin)794 660 y(T)-6 b(a)n(ylor)23
b(2.400)712 721 y(Austin,)g(TX)f(78712)578 781 y Fg(\(email:ca)o(rte)o
(r@t)o(ic)o(am.)o(ute)o(xas)o(.e)o(du\))868 922 y Ff(Abstract)122
1015 y Fe(This)h(rep)q(ort)h(prop)q(oses)h(a)f(consisten)o(t)f
(extension)g(of)g(the)h(Message)f(P)o(assing)h(In)o(terface)122
1075 y(\(MPI\))17 b(Standard)j([2)o(])e(for)g(non)o(blo)q(c)o(king)g
(comm)o(unic)o(ation)e(handlers.)27 b(A)17 b(handler)h(allo)o(ws)122
1135 y(non)o(blo)q(c)o(king)g(comm)o(unicati)o(ons)f(to)i(b)q(e)f
(\\self-completing",)f(an)i(MPI)f(user)h(is)f(no)h(longer)122
1196 y(required)i(to)h(explicitly)d(complete)h(all)h(non)o(blo)q(c)o
(king)h(comm)o(unications.)36 b(Handlers,)22 b(as)122
1256 y(prop)q(osed)13 b(here,)f(ha)o(v)o(e)f(b)q(een)h(implem)o(en)o
(te)o(d)e(using)i(MPI)f(in)h(the)g(Scalable)f(Distributed)h(Dy-)122
1316 y(namic)i(Arra)o(y)h(\(SDD)o(A\))h(soft)o(w)o(are)g(pac)o(k)m
(aged)h(dev)o(elop)q(ed)e(at)h(TICAM)f([1].)21 b(This)16
b(pac)o(k)m(age)122 1376 y(has)i(b)q(een)f(used)h(in)f(n)o(umerous)f
(applications)h(at)h(TICAM)e(to)i(pro)o(vide)e(the)h(functionalit)o(y)
122 1436 y(of)f(shared)h(memory)d(on)i(distributed)g(memory)d(arc)o
(hitectures.)0 1600 y Fd(1)81 b(Extension)18 b(of)h(MPI's)g(Non)n(blo)r
(c)n(king)e(Comm)n(unication)i(Se-)121 1691 y(man)n(tics)0
1801 y Fe(The)j(seman)o(tics)e(of)i(MPI)f(non)o(blo)q(c)o(king)g(comm)o
(unications)e([2])i(de\014ne)h Ff(send/receiv)n(e)h(start)e
Fe(op)q(er-)0 1861 y(ations)i(to)g(initiate)e(async)o(hronous)j
(messages)e(follo)o(w)o(ed)g(b)o(y)g(matc)o(hing)f Ff(send/receiv)n(e)j
(complete)0 1921 y Fe(op)q(erations)18 b(to)f(complete)d(the)j
(messages.)22 b(These)16 b(seman)o(tics)f(require)g(that)i(a)g(user)g
(p)q(erio)q(dically)f Ff(test)0 1981 y Fe(for)h(messages)e(to)i
(complete)d(or)i Ff(w)n(ait)h Fe(for)g(a)f(message)g(to)h(complete)c
(if)j(it)g(is)g(in)g(a)h(critical)d(path.)73 2041 y(The)h(initiation)f
(and)h(completion)e(of)i(an)g(async)o(hronous)h(message)e(represen)o
(ts)g(an)i(atomic)d(ev)o(en)o(t)g(in)0 2102 y(MPI.)k(The)g(prop)q(osed)
i(extension)e(to)h(MPI)g(non)o(blo)q(c)o(king)f(comm)o(unic)o(ation)e
(is)j(completely)c(consisten)o(t)0 2162 y(with)23 b(these)f(seman)o
(tics.)38 b(F)l(urthermore,)22 b(the)h(atomicit)o(y)d(of)j(these)f(MPI)
g(ev)o(en)o(ts)g(is)g(critical)f(to)i(the)0 2222 y(prop)q(osed)18
b(handler)e(seman)o(tics.)73 2282 y(It)d(is)g(prop)q(osed)i(to)e
(extend)g(MPI)g(non)o(blo)q(c)o(king)f(comm)o(unication)f(seman)o(tics)
g(suc)o(h)i(that)h(a)f Ff(handler)0 2342 y Fe(routine)22
b(can)h(b)q(e)g(p)q(osted)g(to)g(an)g(async)o(hronous)h(message.)39
b(These)22 b(handler)h(routines)f(are)h(in)o(v)o(ok)o(ed)0
2403 y(b)o(y)f(MPI)g(to)g(complete)e(the)i(async)o(hronous)i(messages,)
f(i.e.)d(they)i(replace)f(the)h(required)g(matc)o(hing)0
2463 y Ff(send/receiv)n(e)15 b(complete)d Fe(op)q(erations.)22
b(By)14 b(p)q(osting)i(a)f(handler)f(to)h(an)h(async)o(hronous)f
(message)f(the)0 2523 y(user)k(is)g(no)g(longer)h(required)e(to)h(p)q
(oll)g(or)g(w)o(ait)g(for)h(the)e(async)o(hronous)j(message)d(to)h
(complete.)25 b(Th)o(us)0 2583 y(an)17 b(async)o(hronous)g(message)f
(with)g(a)g(p)q(osted)h(handler)g(b)q(ecomes)e(\\self)h(completing".)73
2643 y(The)d(in)o(tro)q(duction)f(of)h(async)o(hronous)h(message)e
(handlers)h(in)o(to)f(an)h(MPI)f(impleme)o(n)o(tation)e(requires)0
2704 y(that)17 b Ff(an)h(async)n(hronous)i(message)d(with)h(a)h(p)r
(osted)f(handler)g(\\self-complet)o(e")d(\(in)n(v)n(ok)n(e)k(its)p
0 2768 1950 1 v 0 2828 a Fe(TICAM)d(UT-Austin)546 b(1)579
b(F)l(ebruary)16 b(26,)g(1996)p eop
%%Page: 2 2
2 1 bop 0 53 a Ff(handler\))20 b(during)g(a)g(sync)n(hronous)h(op)r
(eration)e(\(p)r(oin)n(t-to-p)r(oin)n(t)f(or)i(collectiv)n(e\))e(or)i
(while)0 114 y(async)n(hronous)g(messages)d(without)i(handlers)f(are)h
(b)r(eing)e(completed)p Fe(.)i(If)d(this)g(requiremen)o(t)0
174 y(is)21 b(not)g(met)e(an)j(MPI)e(implem)o(en)o(tation)e(in)j(a)g
(non-threaded)h(en)o(vironmen)o(t)c(w)o(ould)j(1\))g(all)g(to)g(easily)
0 234 y(deadlo)q(c)o(k)16 b(and)h(2\))f(force)g(users)h(to)f(constan)o
(tly)g(p)q(oll)h(for)f(request)g(completion.)73 294 y(There)g(are)g(t)o
(w)o(o)g(fundamen)o(tal)f(prop)q(osed)j(extensions)e(to)g(MPI)g(seman)o
(tics:)73 354 y Fc(\017)24 b Fe(Async)o(hronous)16 b(messages)g(can)h
(b)q(e)f(\\self)g(completing")f(through)i(handler)f(routines)g(and)73
415 y Fc(\017)24 b Fe(The)13 b(MPI)g(en)o(vironmen)o(t)d(m)o(ust)i
(enable)g(these)h(messages)f(to)i(\\self-complete")d(during)i(\\blo)q
(c)o(k)o(ed")122 475 y(op)q(erations)j(suc)o(h)f(as)h(sync)o(hronous)g
(p)q(oin)o(t-to-p)q(oin)o(t,)g(sync)o(hronous)f(collectiv)o(e,)d(or)k
(send/receiv)o(e)122 535 y(completes)e(for)j(con)o(v)o(en)o(tional)d
(async)o(hronous)k(messages.)73 595 y(An)d(async)o(hronous)h(message)e
(ma)o(y)f(self-complete)f(at)k(an)o(y)e(time.)19 b(This)c(could)g(lead)
f(to)i(consistency)0 655 y(problems)j(within)h(an)h(application.)33
b(As)20 b(suc)o(h)g(MPI)g(m)o(ust)f(pro)o(vide)h(a)h(mec)o(hanism)c
(for)j(the)g(user)h(to)0 716 y Ff(lo)r(c)n(k)16 b Fe(out)h(and)h
Ff(unlo)r(c)n(k)e Fe(the)h(self-completion)d(of)j(these)g(messages.)23
b(Lo)q(c)o(king)17 b(out)g(handlers)g(prev)o(en)o(ts)0
776 y(the)c(atomic)f(ev)o(en)o(t)f(of)j(async)o(hronous)g(message)e
(completion,)g(i.e.)f(handlers)i(cannot)h(b)q(e)f(in)o(v)o(ok)o(ed.)19
b(Once)0 836 y(a)25 b(handler)f(is)g(in)o(v)o(ok)o(ed)f(the)h(atomic)f
(ev)o(en)o(t)g(of)i(async)o(hronous)g(message)f(completion)e(has)j
(already)0 896 y(o)q(ccurred,)16 b(th)o(us)g(lo)q(c)o(king)g(handlers)g
(has)h(no)g(e\013ect)e(on)i(a)g(handler)f(whic)o(h)g(has)h(already)f(b)
q(een)g(in)o(v)o(ok)o(ed.)0 1062 y Fd(2)81 b(Comm)n(unication)27
b(Request)f(Handlers)0 1172 y Fe(A)19 b(p)q(ersisten)o(t)g(\(async)o
(hronous\))i(comm)o(unic)o(ation)c(request)j(can)f(b)q(e)h(\\self)g
(completing")e(through)i(the)0 1232 y(use)e(of)h(a)g(handler)f
(routine.)28 b(A)18 b(handler)g(routine)g(ma)o(y)f(b)q(e)h(p)q(osted)i
(to)e(a)h(p)q(ersisten)o(t)f(comm)o(unication)0 1292
y(request)h(whic)o(h)g(is)g(in)h(the)f(inactiv)o(e)f(state.)32
b(The)20 b(p)q(osted)g(handler)g(routine)f(is)g(in)o(v)o(ok)o(ed)f(to)i
(complete)0 1353 y(the)14 b(comm)o(unic)o(ation)e(request.)20
b(The)14 b(atomic)f(ev)o(en)o(t)g(of)h(completing)f(the)h(comm)o(uni)o
(cation)e(request)h(has)0 1413 y(t)o(w)o(o)j(actions:)73
1473 y Fc(\017)24 b Fe(the)16 b(request)g(transitions)g(from)f(the)h
(activ)o(e)f(to)i(inactiv)o(e)e(state)h(and)73 1533 y
Fc(\017)24 b Fe(the)16 b(p)q(osted)h(handler)f(is)g(initiated.)0
1593 y(Up)q(on)d(en)o(try)e(in)o(to)h(the)h(handler)f(routine)g(the)g
(async)o(hronous)i(message)d(is)h(complete)e(and)j(the)g(p)q(ersisten)o
(t)0 1654 y(comm)o(unic)o(ation)h(request)i(is)g(inactiv)o(e.)122
1768 y Ff(MPI)p 237 1768 17 2 v 20 w(POST)p 407 1768
V 21 w(HANDLER\(request,ex)o(tra)p 1059 1768 V 17 w(state,handler\))186
1826 y Fe(IN)64 b Ff(request)150 b Fe(comm)o(unic)o(ation)14
b(request)i(\(handle\))186 1887 y(IN)64 b Ff(extra)p
436 1887 V 19 w(state)g Fe(extra)16 b(state)g(for)h(handler)186
1947 y(IN)64 b Ff(handler)145 b Fe(request)15 b(handler)122
2070 y Ff(in)n(t)k(MPI)p 323 2070 V 20 w(P)n(ost)p 451
2070 V 21 w(handler\()216 2130 y(MPI)p 331 2130 V 20
w(Request)26 b(request,)i(v)n(oid)f(*)g(extra)p 1113
2130 V 20 w(state,)h(MPI)p 1408 2130 V 21 w(Request)p
1628 2130 V 18 w(handler)122 2190 y(handler\))122 2314
y(MPI)p 237 2314 V 20 w(POST)p 407 2314 V 21 w(HANDLER\()18
b(REQUEST,)g(EXTRA)p 1261 2314 V 20 w(ST)-5 b(A)g(TE,)19
b(HANDLER,)122 2374 y(IERR\))207 2435 y(INTEGER)f(REQUEST,)g(EXTRA)p
999 2435 V 20 w(ST)-5 b(A)g(TE,)19 b(IERR)207 2495 y(PR)n(OCEDURE)g
(HANDLER)73 2609 y Fe(This)12 b(call)g(attac)o(hes)g(the)g(handler)g
Ff(handler)g Fe(to)h(the)f(p)q(ersisten)o(t)f(comm)o(unication)e
(request)j Ff(request)p Fe(.)0 2669 y Ff(MPI)p 115 2669
V 20 w(POST)p 285 2669 V 21 w(HANDLER)f Fe(ma)o(y)g(only)g(b)q(e)i
(called)d(for)j(a)f(p)q(ersisten)o(t)g(comm)o(uni)o(cation)d(request)j
(whic)o(h)p 0 2768 1950 1 v 0 2828 a(TICAM)k(UT-Austin)546
b(2)579 b(F)l(ebruary)16 b(26,)g(1996)p eop
%%Page: 3 3
3 2 bop 0 53 a Fe(is)17 b(in)f(the)g(inactiv)o(e)f(state;)i(i.e.)22
b(after)16 b(initialization,)f(completion,)f(or)j(cancellation)f(but)h
(b)q(efore)g(a)g(call)0 114 y(to)k Ff(MPI)p 179 114 17
2 v 20 w(ST)-5 b(AR)g(T)21 b Fe(or)g Ff(MPI)p 579 114
V 20 w(ST)-5 b(AR)g(T)p 782 114 V 21 w(ALL)p Fe(.)20
b Ff(MPI)p 1059 114 V 20 w(POST)p 1229 114 V 21 w(HANDLER)f
Fe(ma)o(y)g(b)q(e)h(called)f(an)o(y)0 174 y(n)o(um)o(b)q(er)14
b(of)h(times)f(for)i(a)g(single)f(request,)f(where)h(eac)o(h)g(call)g
(replaces)g(the)g(previous)g Ff(extra)p 1721 174 V 19
w(state)g Fe(and)0 234 y Ff(handler)p Fe(.)30 b(An)19
b(MPI)g(implem)o(e)o(n)o(tation)e(in)o(v)o(ok)o(es)g(the)i(handler)g
(when)h(the)f(request)f(transitions)i(from)0 294 y(its)c(activ)o(e)f
(to)i(inactiv)o(e)d(state)j(\(successful)e(completion)f(or)j
(cancellation\).)73 354 y(The)f(handler)h(is)f(a)g(routine)g(of)h(the)f
(t)o(yp)q(e)122 434 y Fg(typedef)23 b(int)i(MPI)p 511
434 16 2 v 17 w(Request)p 710 434 V 16 w(handler\()212
494 y(void)f(*)h(extra)p 524 494 V 17 w(state)f(,)h(MPI)p
824 494 V 17 w(Request)e(*)j(request)d(,)i(MPI)p 1432
494 V 17 w(Status)f(*)h(status)122 554 y(\);)0 634 y
Fe(in)16 b(C,)g(and)h(of)f(the)g(t)o(yp)q(e)122 713 y
Fg(PROCEDURE)22 b(MPI)p 459 713 V 18 w(REQUEST)p 659
713 V 16 w(HANDLER\()g(EXTRA)p 1035 713 V 17 w(STATE,)h(REQUEST,)g
(STATUS,)g(IERR\))212 774 y(INTEGER)g(EXTRA)p 550 774
V 17 w(STATE,)g(REQUEST,)g(STATUS\(MP)o(I)p 1236 774
V 16 w(STATUS)p 1408 774 V 16 w(SIZE\),)g(IERR)0 853
y Fe(in)17 b(F)o(OR)l(TRAN.)e(When)h(in)o(v)o(ok)o(ed)g(b)o(y)g(MPI)g
(the)h(request)f(handler)h(is)g(passed)h(the)e Ff(extra)p
1687 853 17 2 v 19 w(state)h Fe(argu-)0 913 y(men)o(t)d(supplied)i(to)h
Ff(MPI)p 491 913 V 20 w(POST)p 661 913 V 21 w(HANDLER)e
Fe(and)i(a)g(handle)f(to)g(the)g(asso)q(ciated)i(request.)73
974 y(A)c(call)g(to)h Ff(MPI)p 385 974 V 20 w(POST)p
555 974 V 21 w(HANDLER)f Fe(with)g Ff(MPI)p 1097 974
V 21 w(REQUEST)p 1389 974 V 19 w(HANDLER)p 1694 974 V
20 w(NONE)g Fe(for)0 1034 y(the)h Ff(handler)f Fe(argumen)o(t)g(will)g
(rev)o(ert)g(the)g(p)q(ersisten)o(t)h(comm)o(uni)o(cation)d(request)j
(to)g(a)g(\\non-handled")0 1094 y(state,)j(i.e.)e(it)i(will)f(no)h
(longer)g(b)q(e)g(self-completing.)24 b Ff(MPI)p 1119
1094 V 21 w(REQUEST)p 1411 1094 V 19 w(HANDLER)p 1716
1094 V 20 w(NONE)17 b Fe(is)0 1154 y(an)e(MPI)f(pro)o(vided)g(constan)o
(t)h(of)g(the)f(handler)h(data)g(t)o(yp)q(e.)20 b(F)l(or)15
b(this)g(call)e(the)i Ff(extra)p 1599 1154 V 19 w(state)f
Fe(argumen)o(t)0 1214 y(is)i(ignored.)73 1275 y(Once)23
b(a)h(p)q(ersisten)o(t)f(comm)o(unic)o(ation)e(request)i(is)g(activ)m
(ated)h(b)o(y)e(a)i(call)f(to)h Ff(MPI)p 1682 1275 V
20 w(ST)-5 b(AR)g(T)25 b Fe(or)0 1335 y Ff(MPI)p 115
1335 V 20 w(ST)-5 b(AR)g(T)p 318 1335 V 22 w(ALL)15 b
Fe(the)h(handler)h(is)f(activ)o(e)f(and)h(ma)o(y)f(b)q(e)h(in)o(v)o(ok)
o(ed)f(at)i(an)o(y)f(time.)73 1395 y(The)11 b(in)o(v)o(o)q(cation)f(of)
h(handlers)g(can)g(b)q(e)g(lo)q(c)o(k)o(ed)f(and)h(unlo)q(c)o(k)o(ed)f
(with)h(calls)f(to)h Ff(MPI)p 1592 1395 V 21 w(HANDLER)p
1899 1395 V 19 w(LOCK)0 1455 y Fe(and)20 b Ff(MPI)p 213
1455 V 21 w(HANDLER)p 520 1455 V 19 w(UNLOCK)p Fe(.)f(When)g(handlers)h
(are)g(lo)q(c)o(k)o(ed)e(all)h(p)q(ersisten)o(t)g(comm)o(unic)o(a-)0
1515 y(tion)14 b(requests)g(with)g(p)q(osted)h(handlers)f(are)h(blo)q
(c)o(k)o(ed)e(from)g(in)o(v)o(oking)g(their)g(handlers)h(and)h(th)o(us)
f(cannot)0 1576 y(complete.)0 1716 y Fh(2.1)66 b(F)-6
b(reed)23 b(Requests)0 1809 y Fe(An)i(activ)o(e)f(p)q(ersisten)o(t)h
(comm)o(unication)e(request)h(ma)o(y)g(b)q(e)i(mark)o(ed)e(for)h
(deallo)q(cation)h(via)f(a)h(call)0 1869 y(to)e Ff(MPI)p
182 1869 V 20 w(REQUEST)p 473 1869 V 20 w(FREE)p Fe(.)f(When)g(a)h
(handler)f(is)g(in)o(v)o(ok)o(ed)f(for)h(suc)o(h)h(a)f(\\freed)g
(request")h(an)0 1929 y Ff(MPI)p 115 1929 V 20 w(REQUEST)p
406 1929 V 20 w(NULL)15 b Fe(is)h(input)f(to)h(the)g(handler.)21
b(Th)o(us)16 b(the)f(request)g(is)g(deallo)q(cated)h(prior)g(to)0
1989 y(a)h(call)e(to)i(the)f(handler.)21 b(The)16 b(seman)o(tics)e(of)j
(a)g(self-completion)d(atomic)g(ev)o(en)o(t)h(are)h(then:)54
2049 y(1\))25 b(Data)17 b(transfer)g(completes)d(or)i(cancellation)g(o)
q(ccurs.)54 2109 y(2\))25 b(The)16 b(request)g(mark)o(ed)e(to)j(b)q(e)f
(freed)g(is)g(deallo)q(cated.)54 2170 y(3\))25 b(The)16
b(handler)g(is)g(in)o(v)o(ok)o(ed.)0 2310 y Fh(2.2)66
b(MPI)22 b(Calls)h(Within)i(Handlers)0 2403 y Fe(A)c(handler)h(ma)o(y)e
(call)h(MPI)h(routines)g(during)g(its)f(execution.)37
b(These)22 b(calls)f(w)o(ould)h(commonly)d(in-)0 2463
y(clude:)73 2523 y Fc(\017)24 b Ff(MPI)p 237 2523 V 20
w(ST)-5 b(AR)g(T)18 b Fe(to)e(reactiv)o(e)f(the)h(request,)73
2583 y Fc(\017)24 b Ff(MPI)p 237 2583 V 20 w(REQUEST)p
528 2583 V 20 w(FREE)16 b Fe(to)h(free)e(the)h(request,)f(and)73
2643 y Fc(\017)24 b Ff(MPI)p 237 2643 V 20 w(POST)p 407
2643 V 21 w(HANDLER)15 b Fe(to)i(up)q(date)g(the)f(request.)0
2704 y(Other)g(arbitrary)g(calls)g(to)g(MPI)g(ma)o(y)f(also)i(o)q
(ccur.)p 0 2768 1950 1 v 0 2828 a(TICAM)f(UT-Austin)546
b(3)579 b(F)l(ebruary)16 b(26,)g(1996)p eop
%%Page: 4 4
4 3 bop 0 53 a Ff(MPI)p 115 53 17 2 v 20 w(ST)-5 b(AR)g(T)0
146 y Fe(A)18 b(handler's)g(call)f(to)h Ff(MPI)p 533
146 V 21 w(ST)-5 b(AR)g(T)19 b Fe(on)f(its)g(input)g(comm)o(unication)d
(request)j(enables)g(the)g(request)0 206 y(to)d(b)q(e)g(completed)d
(again.)22 b(By)14 b(calling)f Ff(MPI)p 845 206 V 21
w(ST)-5 b(AR)g(T)15 b Fe(the)g(p)q(ersisten)o(t)f(comm)o(unic)o(ation)e
(request)i(and)0 266 y(its)i(p)q(osted)i(handler)e(b)q(ecome)f(\\self)h
(sustaining".)23 b(A)16 b(call)g(to)h Ff(MPI)p 1279 266
V 20 w(ST)-5 b(AR)g(T)17 b Fe(activ)m(ates)g(the)f(request;)0
326 y(resulting)22 b(in)h(a)g(p)q(ossible)g(re-en)o(trance)e(of)i(the)g
(handler)f(routine.)41 b(It)22 b(is)g(the)h(resp)q(onsibilit)o(y)e(of)i
(the)0 387 y(handler)16 b(routine)g(to)h(accoun)o(t)f(for)g(this)h(p)q
(ossibilit)o(y)l(.)122 488 y Fb(A)n(dvic)n(e)25 b(to)g(users.)45
b Fe(A)24 b(handler)g(should)g(mak)o(e)f(the)h(call)f(to)i
Ff(MPI)p 1435 488 V 20 w(ST)-5 b(AR)g(T)25 b Fe(the)f(last)122
548 y(statemen)o(t)11 b(of)j(the)e(routine)h(or)g(immediatel)o(y)d(b)q
(efore)j(a)g(return)g(statemen)o(t.)18 b Fb(End)d(of)g(advic)n(e)122
609 y(to)i(users.)0 739 y Ff(MPI)p 115 739 V 20 w(REQUEST)p
406 739 V 20 w(FREE)0 831 y Fe(A)h(handler)g(ma)o(y)f(itself)h(call)f
Ff(MPI)p 668 831 V 21 w(REQUEST)p 960 831 V 20 w(FREE)p
Fe(.)g(The)i(request)f(passed)h(to)g(the)f(handler)g(is)0
891 y(guaran)o(teed)h(of)h(b)q(eing)f(in)g(the)g(inactiv)o(e)e(state,)i
(th)o(us)h(a)f(call)f(to)i Ff(MPI)p 1337 891 V 20 w(REQUEST)p
1628 891 V 20 w(FREE)f Fe(within)0 951 y(the)12 b(handler)h(will)e
(immediatel)o(y)f(deallo)q(cate)i(the)g(request.)20 b(If)12
b(the)g(call)g(to)h Ff(MPI)p 1491 951 V 21 w(REQUEST)p
1783 951 V 19 w(FREE)0 1011 y Fe(is)h(made)f(after)i(a)f(call)g(to)h
Ff(MPI)p 588 1011 V 20 w(ST)-5 b(AR)g(T)15 b Fe(the)f(request)g(is)g
(mark)o(ed)f(to)i(b)q(e)f(freed)g(but)g(is)h(not)f(freed)g(un)o(til)0
1072 y(its)i(next)g(completion.)122 1173 y Fb(A)n(dvic)n(e)j(to)f
(users.)25 b Fe(Calls)17 b(to)h Ff(MPI)p 786 1173 V 20
w(ST)-5 b(AR)g(T)18 b Fe(and)g Ff(MPI)p 1215 1173 V 21
w(REQUEST)p 1507 1173 V 20 w(FREE)f Fe(on)g(the)122 1234
y(input)h(p)q(ersisten)o(t)g(comm)o(unic)o(ation)e(request)i(are)g(t)o
(ypically)f(m)o(utually)f(exclusiv)o(e)g(within)122 1294
y(a)h(handler.)k Fb(End)c(of)h(advic)n(e)g(to)f(users.)0
1424 y Ff(MPI)p 115 1424 V 20 w(POST)p 285 1424 V 21
w(HANDLER)0 1516 y Fe(A)g(handler)g(ma)o(y)f(call)g Ff(MPI)p
543 1516 V 21 w(POST)p 714 1516 V 21 w(HANDLER)g Fe(to)i(up)q(date)g
(the)f Ff(extra)p 1476 1516 V 19 w(state)g Fe(or)h(ev)o(en)e(replace)0
1576 y(itself)e(with)h(another)h(handler.)21 b(The)16
b(next)f(completion)e(\(or)j(cancellation\))e(of)i(the)f(p)q(ersisten)o
(t)g(comm)o(u-)0 1636 y(nication)h(request)g(will)f(in)o(v)o(ok)o(e)f
(the)i(new)g Ff(handler)g Fe(with)g(the)g(new)h Ff(extra)p
1411 1636 V 19 w(state)p Fe(.)0 1781 y Fh(2.3)66 b(MPI)p
292 1781 21 2 v 24 w(CANCEL)0 1873 y Fe(A)15 b(call)g(to)h
Ff(MPI)p 315 1873 17 2 v 21 w(CANCEL)g Fe(causes)g(an)g(async)o
(hronous)h(message)e(to)h(b)q(e)g(completed)d(with)j(cancelled)0
1933 y(status.)35 b(Cancellation)19 b(of)i(a)g(p)q(ersisten)o(t)f(comm)
o(unic)o(ation)e(request)i(with)g(a)h(p)q(osted)g(handler)f(is)g(self-)
0 1994 y(completed)h(with)h(the)h(in)o(v)o(o)q(cation)g(of)g(the)f
(handler.)41 b(It)23 b(is)g(the)f(resp)q(onsibilit)o(y)g(of)h(the)g
(handler)g(to)0 2054 y(query)17 b(the)i Ff(status)f Fe(via)g
Ff(MPI)p 585 2054 V 20 w(TEST)p 751 2054 V 20 w(CANCELLED)h
Fe(to)f(determine)e(if)i(the)g(request)f(completed)0
2114 y(normally)e(or)h(w)o(as)h(cancelled.)0 2258 y Fh(2.4)66
b(MPI)p 292 2258 21 2 v 24 w(W)-7 b(AIT,)22 b(MPI)p 677
2258 V 24 w(TEST,)g(and)h(Related)g(Routines)0 2351 y
Fe(A)12 b(user)g(ma)o(y)f(call)h Ff(MPI)p 451 2351 17
2 v 20 w(W)-6 b(AIT)p Fe(,)12 b Ff(MPI)p 763 2351 V 21
w(TEST)p Fe(,)g(or)g(related)g(w)o(ait)g(and)h(test)g(routines)f(for)h
(a)g(p)q(ersisten)o(t)0 2411 y(comm)o(unic)o(ation)e(request)i(with)g
(a)h(p)q(osted)g(handler.)20 b(The)14 b(seman)o(tics)d(of)j(handlers)g
(is)f(that)h(they)f(are)g(in-)0 2471 y(v)o(ok)o(ed)g(as)h(part)g(of)g
(the)g(async)o(hronous)h(message)e(completion)e(\(atomic\))i(ev)o(en)o
(t.)19 b(The)13 b Ff(MPI)p 1716 2471 V 21 w(ST)-5 b(A)g(TUS)0
2531 y Fe(v)m(alue)17 b(describing)f(the)g(message)g(completion)f(ev)o
(en)o(t)g(giv)o(en)h(to)h(the)g(handler)f(routine)h(and)g(is)g(th)o(us)
g(not)0 2591 y(a)o(v)m(ailable)f(to)g(the)g(w)o(ait)g(or)h(test)f
(routine.)p 0 2768 1950 1 v 0 2828 a(TICAM)g(UT-Austin)546
b(4)579 b(F)l(ebruary)16 b(26,)g(1996)p eop
%%Page: 5 5
5 4 bop 73 53 a Fe(A)21 b(user's)h(call)f(to)h(a)g(w)o(ait)f(or)h(test)
g(routine)f(on)i(an)f(inactiv)o(e)e(request)h(will)f(p)q(erform)h(as)h
(if)g(there)0 114 y(w)o(ere)15 b(no)i(handler.)k(The)16
b(handler)g(will)f(not)i(b)q(e)f(in)o(v)o(ok)o(ed)f(during)h(suc)o(h)g
(a)g(call)g(as)h(the)e(handler)i(will)e(not)0 174 y(transition)h(from)g
(activ)o(e)f(to)h(inactiv)o(e)f(state.)73 234 y(A)i(user's)f(call)g(to)
i(w)o(ait)e(or)h(test)g(routine)g(on)g(an)g(activ)o(e)f(comm)o(unic)o
(ation)f(request)h(returns)h Ff(status)0 294 y Fe(and)d
Ff(\015ag)g Fe(v)m(alues)f(consisten)o(t)g(with)g(a)g(w)o(ait)h(or)f
(test)g(called)g(for)g(an)h(inactiv)o(e)d(p)q(ersisten)o(t)i(comm)o
(unication)0 354 y(request.)73 415 y(A)h(user's)g(call)f(to)i(a)g(w)o
(ait)f(routine)f(on)i(an)g(activ)o(e)e(comm)o(unic)o(ation)f(request)h
(with)h(a)h(p)q(osted)g(handler)0 475 y(will)g(not)i(return)f(un)o(til)
f(the)h(request)g(has)h(b)q(een)f(completed)e(and)j(the)f(handler)g
(has)h(returned.)73 535 y(In)11 b(a)g(m)o(ulti-threaded)e(en)o
(vironmen)o(t,)f(a)k(user's)e(call)g(to)i(a)f(w)o(ait)g(or)g(test)g
(routine)f(on)i(a)f(comm)o(unication)0 595 y(request)j(with)g(a)h(p)q
(osted)g(handler)g(whic)o(h)f(is)g(already)g(in)g(execution)g(will)f
(not)i(return)f(un)o(til)g(the)g(handler)0 655 y(has)j(returned.)0
821 y Fd(3)81 b(Lo)r(c)n(king)27 b(and)g(Unlo)r(c)n(king)e(Handlers)122
930 y Ff(MPI)p 237 930 17 2 v 20 w(HANDLER)p 543 930
V 20 w(LOCK\(\))122 991 y(MPI)p 237 991 V 20 w(HANDLER)p
543 991 V 20 w(UNLOCK\(\))122 1094 y(in)n(t)19 b(MPI)p
323 1094 V 20 w(Handler)p 541 1094 V 20 w(lo)r(c)n(k\(\))122
1154 y(in)n(t)g(MPI)p 323 1154 V 20 w(Handler)p 541 1154
V 20 w(unlo)r(c)n(k\(\))122 1257 y(MPI)p 237 1257 V 20
w(HANDLER)p 543 1257 V 20 w(LOCK\()f(IERR)g(\))207 1317
y(INTEGER)g(IERR)122 1377 y(MPI)p 237 1377 V 20 w(HANDLER)p
543 1377 V 20 w(UNLOCK\()g(IERR)g(\))207 1438 y(INTEGER)g(IERR)73
1545 y Fe(A)e(call)g(to)h Ff(MPI)p 391 1545 V 20 w(HANDLER)p
697 1545 V 19 w(LOCK)g Fe(lo)q(c)o(ks)f(out)h(completion)d(of)j(all)f
(p)q(ersisten)o(t)g(comm)o(unic)o(a-)0 1605 y(tion)j(request)e(with)i
(p)q(osted)g(handlers.)28 b(A)18 b(call)g(to)h Ff(MPI)p
1091 1605 V 20 w(HANDLER)p 1397 1605 V 20 w(UNLOCK)f
Fe(un)o(blo)q(c)o(ks)g(the)0 1666 y(completion)c(of)j(these)f
(requests.)73 1726 y(Lo)q(c)o(king)h(prev)o(en)o(ts)e(the)h
Fb(initiation)h Fe(of)g(a)g(handler,)f(th)o(us)g(lo)q(c)o(king)g(is)g
(v)o(ery)g(ligh)o(t-w)o(eigh)o(t.)k(In)c(a)h(m)o(ul-)0
1786 y(tithreaded)d(en)o(vironmen)o(t)d(it)j(will)f(not)h(e\013ect)g
(handlers)g(whic)o(h)f(are)i(already)e(in)h(concurren)o(t)g(execution.)
0 1846 y(There)d(is)h(no)g(con\015ict)f(calling)f Ff(MPI)p
674 1846 V 21 w(HANDLER)p 981 1846 V 19 w(LOCK)i Fe(from)e(within)i(a)f
(handler)h(as)g(that)g(handler)0 1906 y(has)17 b(already)f(b)q(een)g
(initiated.)122 2014 y Fb(A)n(dvic)n(e)e(to)f(implementors.)21
b Fe(P)o(ersisten)o(t)11 b(comm)o(uni)o(cation)e(requests)j(with)f(p)q
(osted)i(handlers)122 2074 y(are)h(lo)q(c)o(k)o(ed)g(out)h(of)g(in)o(v)
o(oking)e(their)h(handlers.)20 b(Once)14 b(the)h(data)g(transfer)g
(asso)q(ciated)g(with)122 2135 y(the)d(send)h(or)g(receiv)o(e)d(is)i
(\014nished)g(the)h(request)f(can)g(b)q(e)h(placed)f(in)g(a)h(queue)f
(for)g(completion.)122 2195 y(The)22 b(queued)f(requests)h(ma)o(y)e
(complete)g(b)o(y)h(in)o(v)o(oking)g(the)h(handlers)g(during)g(a)h
(call)e(to)122 2255 y Ff(MPI)p 237 2255 V 20 w(HANDLER)p
543 2255 V 20 w(UNLOCK)p Fe(.)16 b Fb(End)h(of)h(advic)n(e)g(to)f
(implementors.)122 2363 y(Suggestion.)23 b Fe(\\Named")15
b(lo)q(c)o(ks)f(could)h(b)q(e)g(de\014ned)g(for)h(a)f(single)g
(request,)f(list)h(of)g(requests,)122 2423 y(or)i(all)e(requests)h
(within)g(a)h(giv)o(en)e(comm)o(unic)o(ator.)k(E.g.)122
2503 y Ff(MPI)p 237 2503 V 20 w(HANDLER)p 543 2503 V
20 w(LOCK\()f(request)g(\))186 2563 y Fe(IN)64 b Ff(request)f
Fe(comm)o(unic)o(ation)14 b(request)h(\(handle\))122
2643 y Ff(MPI)p 237 2643 V 20 w(HANDLER)p 543 2643 V
20 w(UNLOCK\()j(request)g(\))186 2704 y Fe(IN)64 b Ff(request)f
Fe(comm)o(unic)o(ation)14 b(request)h(\(handle\))p 0
2768 1950 1 v 0 2828 a(TICAM)h(UT-Austin)546 b(5)579
b(F)l(ebruary)16 b(26,)g(1996)p eop
%%Page: 6 6
6 5 bop 122 53 a Ff(MPI)p 237 53 17 2 v 20 w(HANDLER)p
543 53 V 20 w(LOCKALL\()18 b(n)n(um)n(b)r(er,)f(request)p
1274 53 V 19 w(list)h(\))186 112 y Fe(IN)64 b Ff(n)n(um)n(b)r(er)150
b Fe(n)o(um)o(b)q(er)14 b(of)j(requests)f(in)g(the)g(list)186
172 y(IN)64 b Ff(request)p 488 172 V 19 w(list)f Fe(list)16
b(of)g(comm)o(unic)o(ation)e(requests)i(\(handles\))122
253 y Ff(MPI)p 237 253 V 20 w(HANDLER)p 543 253 V 20
w(UNLOCKALL\()i(n)n(um)n(b)r(er,)f(request)p 1361 253
V 19 w(list)h(\))186 311 y Fe(IN)64 b Ff(n)n(um)n(b)r(er)150
b Fe(n)o(um)o(b)q(er)14 b(of)j(requests)f(in)g(the)g(list)186
372 y(IN)64 b Ff(request)p 488 372 V 19 w(list)f Fe(list)16
b(of)g(comm)o(unic)o(ation)e(requests)i(\(handles\))122
452 y Ff(MPI)p 237 452 V 20 w(HANDLER)p 543 452 V 20
w(LOCK)n(COMM\()k(comm)c(\))186 512 y Fe(IN)64 b Ff(comm)d
Fe(comm)o(unicator)122 593 y Ff(MPI)p 237 593 V 20 w(HANDLER)p
543 593 V 20 w(UNLOCK)n(COMM\()20 b(comm)c(\))186 653
y Fe(IN)64 b Ff(comm)d Fe(comm)o(unicator)122 734 y(Th)o(us)16
b(lo)q(c)o(king)g(and)g(unlo)q(c)o(king)g(w)o(ould)g(b)q(e)g(on)h(a)f
(p)q(er)h(request)e(basis.)22 b Fb(End)17 b(of)g(suggestion.)0
879 y Fh(3.1)66 b(Deadlo)r(c)n(ks)0 971 y Fe(Activ)o(e)19
b(p)q(ersisten)o(t)h(comm)o(unic)o(ation)e(requests)j(with)f(p)q(osted)
i(handlers)f(are)f(blo)q(c)o(k)o(ed)g(from)g(comple-)0
1031 y(tion)i(or)h(cancellation)e(when)i(lo)q(c)o(k)o(ed.)38
b(A)22 b(deadlo)q(c)o(k)f(is)i(guaran)o(teed)f(to)h(o)q(ccur)f(if)g
Ff(MPI)p 1713 1031 V 21 w(W)-6 b(AIT)22 b Fe(or)0 1091
y Ff(MPI)p 115 1091 V 20 w(W)-6 b(AIT)h(ALL)20 b Fe(is)f(called)f(for)h
(a)h(request)e(with)h(a)h(lo)q(c)o(k)o(ed)e(handler.)30
b(Also,)19 b(a)h(deadlo)q(c)o(k)f(is)g(guar-)0 1152 y(an)o(teed)f(to)h
(o)q(ccur)g(for)g(calls)f(to)i Ff(MPI)p 720 1152 V 20
w(W)-6 b(AIT)h(ANY)19 b Fe(or)h Ff(MPI)p 1211 1152 V
20 w(W)-6 b(AITSOME)19 b Fe(where)f(all)g(requests)0
1212 y(ha)o(v)o(e)d(p)q(osted)j(handlers.)73 1272 y(The)g
Ff(MPI)p 290 1272 V 21 w(W)-6 b(AIT*)18 b Fe(routines)g(should)h
(detect)e(these)h(guaran)o(teed)h(deadlo)q(c)o(ks)f(and)g(generate)h
(an)0 1332 y(error)14 b(rather)h(than)g(deadlo)q(c)o(k)f(the)g
(application.)20 b(F)l(or)14 b(the)h(m)o(ultiple)c(request)i
Ff(MPI)p 1565 1332 V 21 w(W)-6 b(AIT*)14 b Fe(routines)0
1392 y(it)h(is)g(acceptable)f(to)i(generate)f(this)g(\\guaran)o(teed)h
(deadlo)q(c)o(k")f(error)g(when)g(an)o(y)g(of)h(the)f(requests)g(has)h
(a)0 1452 y(p)q(osted)h(handler)f(whic)o(h)g(is)g(lo)q(c)o(k)o(ed.)0
1597 y Fh(3.2)66 b(Blo)r(c)n(king)24 b(vs.)29 b(Lo)r(c)n(king)0
1689 y Fe(Lo)q(c)o(king)12 b(prev)o(en)o(ts)f(the)h(initiation)f(of)i
(a)f(handler;)h(ho)o(w)o(ev)o(er,)e(it)h(has)h(no)f(e\013ect)g(on)g(a)h
(handler)f(whic)o(h)f(is)h(al-)0 1749 y(ready)f(in)f(execution.)18
b(In)11 b(a)g(m)o(ulti-threaded)e(en)o(vironmen)o(t)f(a)j(thread)g
(whic)o(h)f(calls)g Ff(MPI)p 1644 1749 V 21 w(HANDLER)p
1951 1749 V 19 w(LOCK)0 1810 y Fe(ma)o(y)16 b(wish)h(to)g(blo)q(c)o(k)g
(un)o(til)f(handlers)h(whic)o(h)f(are)h(already)g(in)g(execution)f(ha)o
(v)o(e)g(returned.)24 b(This)17 b(is)g(ac-)0 1870 y(complished)11
b(b)o(y)h(\014rst)i(lo)q(c)o(king)e(handlers)h(and)h(then)e(testing)h
(the)g(comm)o(unic)o(ation)e(request.)19 b(\(Note)13
b(that)0 1930 y(named)i(lo)q(c)o(ks)h(w)o(ould)g(b)q(e)h(useful)e
(here\).)0 2096 y Fd(4)81 b(Seman)n(tic)26 b(Con\015icts)h(-)g(Request)
f(List)h(P)n(osting)g(Routines)0 2206 y Fe(The)16 b(request)g(handler)g
(p)q(osting)h(routines)g(of)f(the)g(F)l(ebruary)g(1996)i(MPI-2)e(sp)q
(eci\014cation)g([3])122 2266 y Ff(MPI)p 237 2266 V 20
w(POST)p 407 2266 V 21 w(ANY)p 556 2266 V 21 w(HANDLER)122
2326 y(MPI)p 237 2326 V 20 w(POST)p 407 2326 V 21 w(ALL)p
538 2326 V 20 w(HANDLER)122 2387 y(MPI)p 237 2387 V 20
w(POST)p 407 2387 V 21 w(SOME)p 591 2387 V 20 w(HANDLER)0
2447 y Fe(con\015ict)e(with)g(the)g(prop)q(osed)i(handler)f(seman)o
(tics.)j(As)d(suc)o(h)f(these)g(routines)g(should)h(b)q(e)g(deleted)e
(from)0 2507 y(the)j(sp)q(eci\014cation.)73 2567 y(Note)23
b(that)i(these)e(routines)h(m)o(ust)e(b)q(e)i(called)f(prior)g(to)h
(calling)f Ff(MPI)p 1457 2567 V 21 w(ST)-5 b(AR)g(T)24
b Fe(\(and)h(related)0 2627 y(routines\))16 b(on)h(an)o(y)f(request)f
(in)h(their)f(lists.)21 b(Th)o(us)c(the)e(requests)h(in)g(the)g(list)f
(cannot)i(complete)d(during)0 2687 y(a)j(call)e(to)i(these)f(routines.)
p 0 2768 1950 1 v 0 2828 a(TICAM)g(UT-Austin)546 b(6)579
b(F)l(ebruary)16 b(26,)g(1996)p eop
%%Page: 7 7
7 6 bop 0 53 a Fh(4.1)66 b(MPI)p 292 53 21 2 v 24 w(POST)p
497 53 V 24 w(ANY)p 676 53 V 23 w(HANDLER)22 b(Con\015ict)0
146 y Fe(The)15 b(curren)o(t)f(sp)q(eci\014cation)h(states)h(that)f
(\\A)g(handler)g(will)f(b)q(e)i(in)o(v)o(ok)o(ed,)d(with)i(a)g
(complete)e(request)h(as)0 206 y(an)j(argumen)o(t,)d(as)j(so)q(on)h(as)
f(one)f(of)h(the)f(requests)g(in)g(the)g(list)f(completes.")73
266 y(The)k Ff(MPI)p 291 266 17 2 v 20 w(POST)p 461 266
V 21 w(ANY)p 610 266 V 21 w(HANDLER)e Fe(routine)i(violates)f(the)h
(seman)o(tics)d(that)j(a)h(p)q(ersisten)o(t)0 326 y(comm)o(unic)o
(ation)14 b(request)i(either)f(has)i(or)f(do)q(es)i(not)e(ha)o(v)o(e)g
(a)g(p)q(osted)h(handler.)73 387 y(Let)d(us)g(assume)g(that)g(after)g
(the)f(call)g(to)h Ff(MPI)p 941 387 V 21 w(POST)p 1112
387 V 21 w(ANY)p 1261 387 V 20 w(HANDLER)f Fe(all)h(of)g(the)f
(requests)0 447 y(no)o(w)24 b(ha)o(v)o(e)e(the)h(p)q(osted)h(handler.)
43 b(Under)22 b(this)h(assumption)h(this)f(handler)g(m)o(ust)f(b)q(e)h
(\\unp)q(osted")0 507 y(from)15 b(all)g(remaining)f(requests)i(as)g
(part)h(of)f(the)f(request)h(completion.)j(Th)o(us)d(an)g
(unpredictable)f(set)h(of)0 567 y(requests)h(whic)o(h)g(w)o(ere)f
(self-completing)f(are)j(no)g(longer)f(self-completing)e(and)j(m)o(ust)
e(b)q(e)i(matc)o(hed)e(b)o(y)0 627 y(an)j(explicit)e
Ff(send/receiv)n(e)j(complete)p Fe(.)27 b(A)18 b(user)h(is)g(no)o(w)h
(required)d(to)j(query)e(the)h(list)f(of)h(requests)0
687 y(to)e(determine)c(whic)o(h)j(requests)g(had)h(b)q(een)f
(automatically)f(mo)q(di\014ed)g(b)o(y)h(MPI)f(without)i(ha)o(ving)f(b)
q(een)0 748 y(completed.)73 808 y(If)e(after)f(the)h(call)f(to)h
Ff(MPI)p 573 808 V 21 w(POST)p 744 808 V 20 w(ANY)p 892
808 V 21 w(HANDLER)f Fe(only)h(some)e(\(or)j(none\))f(of)g(the)f
(requests)0 868 y(has)k(a)g(p)q(osted)g(handler,)e(then)h(whic)o(h)g
(requests)g(do)h(not)f(ha)o(v)o(e)g(a)g(handler?)0 1012
y Fh(4.2)66 b(MPI)p 292 1012 21 2 v 24 w(POST)p 497 1012
V 24 w(ALL)p 652 1012 V 25 w(HANDLER)21 b(Con\015ict)0
1105 y Fe(The)16 b(curren)o(t)f(sp)q(eci\014cation)h(states)h(that)f
(\\The)h(handler)f(will)f(b)q(e)h(in)o(v)o(ok)o(ed,)e(for)i(eac)o(h)g
(of)g(the)g(requests,)0 1165 y(in)g(some)f(arbitrary)h(order,)g(when)h
(all)e(the)h(requests)g(in)g(the)g(list)g(is)g(complete.")73
1225 y(This)h(routine)f(implies)e(the)i(presence)g(of)h(\\named")f(lo)q
(c)o(ks)g(for)h(handlers.)22 b(If)16 b(suc)o(h)g(functionalit)o(y)f(is)
0 1285 y(in)o(tro)q(duced)e(in)o(to)g(MPI-2)h(then)f(the)g
Ff(MPI)p 791 1285 17 2 v 21 w(POST)p 962 1285 V 20 w(ALL)p
1092 1285 V 20 w(HANDLER)g Fe(routine)g(will)f(b)q(e)i(consisten)o(t,)0
1346 y(otherwise)i(it)g(is)g(inconsisten)o(t)f(with)h(the)g(prop)q
(osed)i(handler)e(and)h(handler)f(lo)q(c)o(king)g(seman)o(tics.)73
1406 y(In)11 b(addition)g(to)g(ha)o(ving)g(a)g(\\named")f(lo)q(c)o(k)h
(for)g(a)g(particular)f(call)g(to)i Ff(MPI)p 1431 1406
V 20 w(POST)p 1601 1406 V 21 w(ALL)p 1732 1406 V 20 w(HANDLER)0
1466 y Fe(an)17 b(MPI)e(impleme)o(n)o(tation)f(w)o(ould)i(b)q(e)g
(required)f(to:)54 1526 y(1\))25 b(automatically)14 b(set)j(the)f
(named)f(lo)q(c)o(k,)54 1586 y(2\))25 b(detect)15 b(all)h(\\partial")h
(completions)d(of)j(the)f(list)g(of)g(requests,)g(and)54
1647 y(3\))25 b(automatically)11 b(remo)o(v)o(e)g(the)i(named)f(lo)q(c)
o(k)h(up)q(on)h(\\partial")g(completion)d(of)i(the)g(the)g(last)h
(request)122 1707 y(in)i(the)g(list.)0 1767 y(T)l(ask)h(#2)f(and)h(#3)g
(m)o(ust)e(b)q(e)i(p)q(erformed)e(after)h(the)g(call)g(to)h
Ff(MPI)p 1260 1767 V 20 w(POST)p 1430 1767 V 21 w(ALL)p
1561 1767 V 20 w(HANDLER)e Fe(has)0 1827 y(returned.)30
b(Th)o(us)20 b(an)g(MPI)f(implem)o(en)o(tation)e(m)o(ust)h
(\(e\013ectiv)o(ely\))e(insert)j(its)h(o)o(wn)g(handler)f(b)q(et)o(w)o
(een)0 1887 y(the)d(user's)g(request)g(and)g(the)g(user's)h(handler)f
(to)g(p)q(erform)g(these)f(tasks.)0 2032 y Fh(4.3)66
b(MPI)p 292 2032 21 2 v 24 w(POST)p 497 2032 V 24 w(SOME)p
717 2032 V 24 w(HANDLER)22 b(Con\015ict)0 2124 y Fe(The)16
b(curren)o(t)g(sp)q(eci\014cation)g(states)h(that)g(\\The)g(handler)f
(will)g(b)q(e)g(in)o(v)o(ok)o(ed,)f(for)h(all)g(the)g(requests)h(that)0
2184 y(completed,)d(in)h(some)h(arbitrary)g(order,)g(when)g(some)f(of)i
(the)f(requests)g(in)g(the)g(list)f(complete.")73 2244
y(If)k(the)g(handler)g(is)h(in)o(v)o(ok)o(ed)d(for)j(\\some)e(of)i(the)
f(requests)g(in)g(the)g(list)g(that)h(complete",)e(then)h(for)0
2305 y(whic)o(h)c(requests)h(that)h(complete)c(is)j(the)g(handler)g
(not)g(in)o(v)o(ok)o(ed?)k(Ho)o(w)c(is)g(this)g(selection)f(made)g(at)h
(the)0 2365 y(time)i Ff(MPI)p 230 2365 17 2 v 20 w(POST)p
400 2365 V 21 w(SOME)p 584 2365 V 20 w(HANDLER)h Fe(is)h(called)f(so)h
(that)h(eac)o(h)e(request)g(either)g(has)i(or)f(do)q(es)0
2425 y(not)d(ha)o(v)o(e)e(a)i(handler?)p 0 2768 1950
1 v 0 2828 a(TICAM)f(UT-Austin)546 b(7)579 b(F)l(ebruary)16
b(26,)g(1996)p eop
%%Page: 8 8
8 7 bop 0 53 a Fd(5)81 b(Handlers:)35 b(A)27 b(Kernel)f(for)h(All)p
972 60 106 2 v 26 w(\\One-Sided")d(Messages?)0 163 y
Fe(It)12 b(is)h(suggested)g(that)g(the)g(prop)q(osed)h(handlers)f(can)g
(b)q(e)f(used)h(to)g(sp)q(ecify)f(and)h(impleme)o(n)o(t)d(all)i
(one-sided)0 223 y(comm)o(unic)o(ations)i(of)j(the)f(curren)o(t)f
(MPI-2)i(sp)q(eci\014cation)f([3].)0 368 y Fh(Remote)22
b(Memory)g(Access)0 460 y Fe(Note)g(that)g(the)g(MPI-2)g(Remote)e
(Memory)h(Access)g(\(RMA\))g(capabilit)o(y)g(can)h(ha)o(v)o(e)f(a)i
(arc)o(hitecture)0 520 y(indep)q(enden)o(t)15 b(implem)o(en)o(tation)e
(la)o(y)o(ered)i(on)h(top)h(of)f(the)g(simple)e(handler)i(primitiv)o(e)
o(s)e(prop)q(osed)j(here.)0 580 y(This)22 b(w)o(ould)h(pro)o(vide)e(a)i
(p)q(ortable)g(\\reference)e(implem)o(en)o(t)o(ation")g(of)h(the)g(RMA)
g(capabilit)o(y)l(.)38 b(This)0 640 y(w)o(ould)14 b(also)h(de\014ne)f
(consisten)o(t)g(seman)o(tics)e(throughout)k(MPI-2)f(one-sided)f
(messages.)20 b(It)14 b(w)o(ould)p 1851 597 99 2 v 1851
653 2 56 v 28 w(not)p 1948 653 V 1851 655 99 2 v 0 701
a(b)q(e)i(necessary)g(to)h(implem)o(en)n(t)c(RMA)j(using)g(handlers,)g
(only)g(to)h(ha)o(v)o(e)e(consisten)o(t)h(seman)o(tics)e(b)q(et)o(w)o
(een)0 761 y(RMA)h(and)i(handlers.)0 905 y Fh(Activ)n(e)23
b(Messages)0 998 y Fe(Note)14 b(that)h(a)f(handler)h(whic)o(h)e(calls)h
Ff(MPI)p 792 998 17 2 v 21 w(ST)-5 b(AR)g(T)15 b Fe(for)f(its)h(input)f
(request)f(is)i(\\self)f(sustaining")h(after)0 1058 y(the)i(request's)f
(initial)g(activ)m(ation.)25 b(Th)o(us)17 b(an)h(activ)o(e)e(message)h
(capabilit)o(y)f(can)h(b)q(e)g(la)o(y)o(ered)f(on)i(top)g(of)0
1118 y(the)h(simple)e(handler)i(primitiv)o(es)d(prop)q(osed)21
b(here.)29 b(Note)19 b(that)h(with)f(minim)o(al)d(e\013ort)k(users)g
(can)f(use)0 1178 y(the)d(handler)g(primitiv)o(es)d(to)k(de\014ne)f
(their)f(o)o(wn)i(sp)q(ecial)e(purp)q(ose)j(activ)o(e)d(messages.)0
1323 y Fh(Uni\014ed)24 b(Seman)n(tics)e(for)h(One-Sided)g(Messages)0
1415 y Fe(These)15 b(suggestions)i(require)d(that)h Ff(activ)n(e)i
(message)f(and)i(remote)d(memory)f(access)j(seman)n(tics)0
1475 y(b)r(e)26 b(an)g(extension)f(of)h(the)g(handler)g(seman)n(tics)p
Fe(.)40 b(Suc)o(h)22 b(an)i(approac)o(h)f(do)q(es)h(ha)o(v)o(e)e(merit)
f(for)0 1535 y(pro)o(viding)j(a)h(consisten)o(t)f(set)g(of)g(seman)o
(tics)f(for)h(all)g(async)o(hronous)i(comm)o(uni)o(cations.)43
b(Note)24 b(the)0 1596 y(immedi)o(ate)13 b(consequence)i(is)g(that)h
(\\lo)q(c)o(ks")g(w)o(ould)g(apply)f(to)h(all)g(forms)e(of)i(one-sided)
g(messages,)f(th)o(us)0 1656 y(named)g(lo)q(c)o(ks)h(w)o(ould)g
(\(again\))h(b)q(ecome)e(necessary)l(.)21 b(Suc)o(h)16
b(named)f(lo)q(c)o(ks)h(could)g(b)q(e:)122 1770 y Ff(MPI)p
237 1770 V 20 w Fa(f)p Ff(UN)p Fa(g)p Ff(LOCK\()i(request)f(\))122
1879 y(MPI)p 237 1879 V 20 w Fa(f)p Ff(UN)p Fa(g)p Ff(LOCKALL\()h(n)n
(um)n(b)r(er,)f(request)p 1113 1879 V 19 w(list)h(\))122
1988 y(MPI)p 237 1988 V 20 w Fa(f)p Ff(UN)p Fa(g)p Ff(LOCKWINDO)n(W\()g
(comm)e(\))122 2097 y(MPI)p 237 2097 V 20 w Fa(f)p Ff(UN)p
Fa(g)p Ff(LOCK)n(COMM\()j(comm)d(\))122 2206 y(MPI)p
237 2206 V 20 w Fa(f)p Ff(UN)p Fa(g)p Ff(LOCKUNIVERSE\(\))73
2320 y Fe(Where)21 b Ff(MPI)p 349 2320 V 21 w Fa(f)p
Ff(UN)p Fa(g)p Ff(LOCKWINDO)n(W)f Fe(lo)q(c)o(ks)h(and)h(unlo)q(c)o(ks)
f(the)h(in)o(ternal)e(\(hidden\))h(\\self-)0 2380 y(sustaining")d
(requests)e(supp)q(orting)j(RMA.)c(The)i Ff(MPI)p 1055
2380 V 21 w Fa(f)p Ff(UN)p Fa(g)p Ff(LOCK)n(COMM)g Fe(routine)g(lo)q(c)
o(ks)f(and)0 2440 y(unlo)q(c)o(ks)11 b(b)q(oth)g(explicitly)d(p)q
(osted)k(handlers)f(as)g(w)o(ell)f(as)h(RMA.)f(Finally)f
Ff(MPI)p 1445 2440 V 21 w Fa(f)p Ff(UN)p Fa(g)p Ff(LOCKUNIVERSE)0
2501 y Fe(w)o(ould)16 b(lo)q(c)o(k)g(and)h(unlo)q(c)o(k)f(ev)o
(erything)e(lo)q(c)o(k)m(able.)p 0 2768 1950 1 v 0 2828
a(TICAM)i(UT-Austin)546 b(8)579 b(F)l(ebruary)16 b(26,)g(1996)p
eop
%%Page: 9 9
9 8 bop 0 53 a Fd(6)81 b(Implications)21 b(for)h(Async)n(hronous)e
(Collectiv)n(e)g(Comm)n(uni-)121 145 y(cations)0 254
y Fe(It)d(is)h(suggested)g(that)g(an)o(y)g(async)o(hronous)g(collectiv)
o(e)d(comm)o(unic)o(ation)g(can)j(easily)f(b)q(e)h(implem)o(en)n(ted)0
314 y(using)23 b(non)o(blo)q(c)o(king)g(sends)g(and)g(receiv)o(es)e
(with)h(p)q(osted)i(handlers.)41 b(The)23 b(non)o(blo)q(c)o(king)f
(sends)h(and)0 375 y(receiv)o(es)d(of)j(a)g(collectiv)o(e)d(op)q
(eration)k(will)d(ha)o(v)o(e)h(a)h(handler)f(with)h(an)g
Ff(extra)p 1506 375 17 2 v 19 w(state)f Fe(con)o(taining)h(or)0
435 y(referencing)18 b(shared)h(parameters.)29 b(These)19
b(shared)g(parameters)f(are)h(essen)o(tially)f(the)h(same)f(parame-)0
495 y(ters)h(used)h(in)g(blo)q(c)o(king)f(collectiv)o(e)d(comm)o
(unications)h(to)j(sc)o(hedule)e(and)j(co)q(ordinate)f(the)f
(individual)0 555 y(messages)d(of)g(the)g(collectiv)o(e)e(op)q
(eration.)73 615 y(Eac)o(h)f(async)o(hronous)h(collectiv)o(e)c(comm)o
(unication)g(routine)j(pro)o(vides)f(the)h(user)g(with)g(a)h(single)e
(com-)0 676 y(m)o(unication)e(request.)20 b(This)12 b(request)g(is)g
(asso)q(ciated)h(with)g(an)f(\\in)o(ternal")g(non)o(blo)q(c)o(king)g
(receiv)o(e.)18 b(When)0 736 y(the)c(\014nal)h(message)f(of)h(the)f
(async)o(hronous)i(collectiv)o(e)c(comm)o(unic)o(ation)g(is)j
(self-completed)d(its)i(handler)0 796 y(sends)k(an)h(in)o(ternal)e
(\\all-done")h(message)g(to)g(the)g(comm)o(uni)o(cation)d(request)j
(whic)o(h)f(w)o(as)h(pro)o(vided)g(to)0 856 y(the)e(user.)73
916 y(Note)k(that)g(suc)o(h)g(an)h(approac)o(h)f(requires)f(that)i(all)
e(MPI)h(lo)q(c)o(ks)g(b)q(e)g(named,)f(otherwise)h(a)h(global)0
977 y(lo)q(c)o(k)d(w)o(ould)i(blo)q(c)o(k)e(all)h(async)o(hronous)h
(collectiv)o(e)c(comm)o(unicati)o(ons.)28 b(P)o(erhaps)19
b(MPI-2)h(should)f(only)0 1037 y(pro)o(vide)e(named)g(lo)q(c)o(ks,)h
(i.e.)f(lo)q(c)o(king)g(is)h(p)q(erformed)f(on)i(requests,)f(lists)g
(of)g(requests,)g(or)h(all)e(requests)0 1097 y(within)f(a)g(giv)o(en)g
(comm)o(uni)o(cator.)0 1263 y Fd(7)81 b(Summary)0 1373
y Fe(It)15 b(has)h(b)q(een)f(sho)o(wn)h(here)f(that)h(an)g(extension)f
(of)g(MPI)g(to)h(include)e(\\self-completing")g(async)o(hronous)0
1433 y(messages,)f(via)g(p)q(ersisten)o(t)g(comm)o(unication)e
(requests)i(with)g(p)q(osted)i(handlers,)f(pro)o(vides)f(a)h(simple)d
(y)o(et)0 1493 y(p)q(o)o(w)o(erful)17 b(capabilit)o(y)l(.)22
b(The)17 b(handler)f(seman)o(tics,)f(as)j(prop)q(osed)g(here,)e(are)h
(a)h(consisten)o(t)e(extension)h(of)0 1553 y(the)f(existing)f(MPI)h
(seman)o(tics.)73 1614 y(It)h(has)i(b)q(een)e(suggested)i(that)f(the)f
(seman)o(tics)f(of)i(all)f(one-sided)h(comm)o(unic)o(ations)e(b)q(e)h
(consisten)o(t)0 1674 y(with)23 b(ha)o(ving)f(\\self-completing")f
(messages)h(as)i(their)e(k)o(ernel.)39 b(It)22 b(has)h(also)h(b)q(een)e
(suggested)i(that)0 1734 y(all)18 b(async)o(hronous)i(collectiv)o(e)15
b(comm)o(unications)h(b)q(e)j(\\built)f(on")h(self-completing)d
(messages.)28 b(These)0 1794 y(suggestion)17 b(require)e(the)h
(capabilit)o(y)f(for)i(named)e(lo)q(c)o(ks.)73 1854 y(The)h(prop)q
(osed)i(handler)e(seman)o(tics)e(\(less)i(suggestions\))i(ha)o(v)o(e)d
(b)q(een)h(implem)o(en)o(te)o(d)e(in)h(a)i(soft)o(w)o(are)0
1915 y(pac)o(k)m(age)j(at)g(the)g(T)l(exas)g(Institute)f(for)i
(Computational)e(and)i(Applied)d(Mathematics)g(\(TICAM\))i(at)0
1975 y(the)15 b(Univ)o(ersit)o(y)d(of)k(T)l(exas.)21
b(This)15 b(pac)o(k)m(age)g(has)h(b)q(een)f(used)g(in)g(n)o(umerous)f
(parallel)g(applications.)21 b(The)0 2035 y(pac)o(k)m(age)g(w)o(as)g
(originally)e(dev)o(elop)q(ed)h(as)h(a)g(k)o(ernel)e(for)i(the)f
(Scalable)g(Distributed)g(Dynamic)f(Arra)o(y)0 2095 y(\(SDD)o(A\),)13
b(a)h(pac)o(k)m(age)g(whic)o(h)f(pro)o(vides)h(functionalit)o(y)e
(similar)g(to)i(the)f(MPI-2)h(remote)e(memory)f(access)0
2155 y(routines.)21 b(Draft)c(do)q(cumen)o(tation)e(of)i(the)f(TICAM's)
f(SDD)o(A)h(pac)o(k)m(age)h(is)f(a)o(v)m(ailable)f(at)122
2257 y Fg(ftp://www.)o(tic)o(am)o(.ut)o(exa)o(s.)o(edu)o(/pu)o(b/c)o
(ar)o(ter)o(/SD)o(DA.)o(ps)o(.Z)p 0 2768 1950 1 v 0 2828
a Fe(TICAM)h(UT-Austin)546 b(9)579 b(F)l(ebruary)16 b(26,)g(1996)p
eop
%%Page: 10 10
10 9 bop 0 53 a Fd(References)0 163 y Fe([1])24 b(James)15
b(C.)h(Bro)o(wne)g(and)h(H.)e(Carter)i(Edw)o(ards.)22
b(Scalable)15 b(distributed)h(dynamic)e(arra)o(y)j(and)g(its)76
223 y(application)f(to)g(a)h Fb(hp)f Fe(adaptiv)o(e)g(\014nite)g
(elemen)o(t)d(mesh.)76 283 y(h)o
(ttp://www.ticam.utexas/edu/users/carter/ftp/SDD)o(A.ps.Z,)i(1995.)0
385 y([2])24 b(Message)16 b(P)o(assing)h(In)o(terface)e(F)l(orum.)20
b(Mpi:)h(A)16 b(message-passing)g(in)o(terface)f(standard.)76
445 y(h)o(ttp://www.mcs.anl.go)o(v/mpi/index)o(.h)o(tm)n(l,)e(1994.)0
547 y([3])24 b(Marc)16 b(Snir.)21 b(\(mpi2\))15 b(c)o(hapter)g(4)i(-)g
(one)f(sided)g(comm)o(unic)o(ations.)76 607 y(h)o
(ttp://parallel.nas.nasa.go)o(v/MPI-2/mpi-1sided/0051.h)o(tml,)e(F)l
(ebruary)i(1996.)p 0 2768 1950 1 v 0 2828 a(TICAM)g(UT-Austin)534
b(10)567 b(F)l(ebruary)16 b(26,)g(1996)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF