From: "Marc Snir" <[email-masked]>
Date: Sat, 28 Nov 92 18:32:22 EST

%!PS-Adobe-2.0
%%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software
%%Title: MPIOUTLN.DVI.*
%%Pages: 10 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: texc.pro
/TeXDict 250 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
/BitMaps X /BuildChar{CharBuilder} N /Encoding IE N end dup{/foo setfont}2
array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
setfont}B /ch-width{ch-data dup length 5 sub get} B /ch-height{ch-data dup
length 4 sub get} B /ch-xoff{128 ch-data dup length 3 sub get sub} B /ch-yoff{
ch-data dup length 2 sub get 127 sub} B /ch-dx{ch-data dup length 1 sub get} B
/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]/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}bind{adv 1 chg nd}bind{1 add chg}bind{1 add chg nd}bind{adv lsh}bind{
adv lsh nd}bind{adv rsh}bind{adv rsh nd}bind{1 add adv}bind{/rc X nd}bind{1
add set}bind{1 add clr}bind{adv 2 chg}bind{adv 2 chg nd}bind{pop nd}bind]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}N /eop{clear SI restore showpage userdict /eop-hook
known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if
/VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1
string dup 0 3 index put cvn put} for}N /p /show load N /RMat[1 0 0 -1 0 0]N
/BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V
statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval
(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale
rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex
ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{moveto}B
/delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}
B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B
/k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1
w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{
/SS save N}B /eos{clear SS restore}B end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 1 16 df<EA07E0EA1FF8EA3FFCEA7FFEA2B5FCA8
EA7FFEA2EA3FFCEA1FF8EA07E010127D9317>15 D E /Fb 51 125 df<127012F8B012701200A5
127012F8A31270051C779B18>33 D<137013F01201EA03C0EA0780EA0F00121E121C123C123812
781270A212F05AA87E1270A212781238123C121C121E7EEA0780EA03C0EA01F0120013700C2479
9F18>40 D<126012F012787E7E7EEA0780120313C0120113E01200A213F01370A813F013E0A212
0113C0120313801207EA0F00121E5A5A5A12600C247C9F18>I<123C127E127FA3123F120F120E
121E127C12F81270080C788518>44 D<EA7FFFB51280A26C130011047D8F18>I<EA01F0EA07FC
487EEA1F1FEA1C0738380380007813C0EA7001A238E000E0A9EAF001007013C0A2EA7803003813
80381C0700EA1F1FEA0FFE6C5AEA01F0131C7E9B18>48 D<EA018012031207A2120F123F12FF12
FB12631203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA07F8EA1FFE487E387C0F80387003C038
F001E01300A3C7FCA2130114C01303EB0780EB0F00131E5B5B5BEA03E0485A485A381E00E05AEA
7FFFB5FC7E131C7E9B18>I<387FFFC0B512E0A3C8FCA4B512E0A36C13C0130C7E9318>61
D<137013F8A213D8A2EA01DCA3138CEA038EA41306EA0707A4380FFF80A3EA0E03A2381C01C0A2
387F07F038FF8FF8387F07F0151C7F9B18>65 D<EAFFFC13FF1480381C03C01301EB00E0A41301
14C01307381FFF80140014C0EA1C03EB00E014F01470A414F014E01303B512C01480EBFE00141C
7F9B18>I<3801FCE0EA03FEEA07FFEA0F07EA1E03EA3C01EA78001270A200F013005AA87E0070
13E0A21278EA3C01001E13C0EA0F073807FF806C1300EA01FC131C7E9B18>I<EA7FF8EAFFFE6C
7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114C01303EB0F80387FFF0048
5AEA7FF8141C7F9B18>I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA214
38A5B512F8A3151C7F9B18>I<B512E0A3EA1C00A41400A2131CA3EA1FFCA3EA1C1CA390C7FCA7
EAFFC0A3131C7E9B18>I<3801F9C0EA07FF5AEA1F0FEA1C03123CEA78011270A200F0C7FC5AA5
EB0FF0131F130F38F001C0127013031278123CEA1C07EA1F0FEA0FFFEA07FDEA01F9141C7E9B18
>I<387F07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8387F07F0
151C7F9B18>I<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>I<EA7FE0
12FF127F000EC7FCB11470A5387FFFF0B5FC7E141C7F9B18>76 D<38FC01F8EAFE03A2383B06E0
A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03F8A3151C7F9B18>I<387E07F0
38FF0FF8387F07F0381D81C0A313C1121CA213E1A313611371A213311339A31319A2131D130DA3
EA7F07EAFF87EA7F03151C7F9B18>I<EA0FF8EA3FFE487EEA780FEA700700F01380EAE003B0EA
F00700701300EA780FEA7FFF6C5AEA0FF8111C7D9B18>I<EAFFFEEBFF8014C0EA1C03EB01E013
001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<EA7FF8EAFF
FE6C7E381C0F80130314C01301A313031480130F381FFF005BA2EA1C0FEB07801303A5149CA300
7F13FC38FF81F8387F00F0161C7F9B18>82 D<3807F380EA1FFF5AEA7C1FEA7007EAF00312E0A2
90C7FC7E1278123FEA1FF0EA0FFEEA01FF38001F80EB03C0EB01E01300A2126012E0130100F013
C0EAFC07B512801400EAE7FC131C7E9B18>I<387FFFF8B5FCA238E07038A400001300B2EA07FF
A3151C7F9B18>I<38FF83FEA3381C0070B2001E13F0000E13E0EA0F013807C7C03803FF806C13
00EA007C171C809B18>I<38FF07F8A3381C01C0A4380E0380A4EA0F0700071300A4EA038EA4EA
018C13DCA3EA00D813F8A21370151C7F9B18>I<38FE03F8A338700070A36C13E0A513F8A2EA39
DCA2001913C0A3138CEA1D8DA4000D13801305EA0F07A2EA0E03151C7F9B18>I<EA1FE0EA3FF8
487EEA783EEA300FC67EA248B4FC120F123FEA7F07127812F012E0A26C5AEA783F387FFFF0EA3F
FBEA0FE114147D9318>97 D<127E12FE127E120EA5133EEBFF80000F13C0EBE3E0EB80F0EB0070
1478000E1338A5120F14781470EB80F0EBC3E0EBFFC0000E138038067E00151C809B18>I<EA01
FEEA07FF001F1380EA3F07383C030048C7FC127012F05AA47E1270387801C0123CEA3F07381FFF
8000071300EA01FC12147D9318>I<EB1F80133F131F1303A5EA03F3EA0FFBEA1FFFEA3E1FEA78
0FEA700712F0EAE003A5130712F01270EA780FEA3E3F381FFFF0380FFBF83803E3F0151C7E9B18
>I<EA03F0EA0FFC487EEA3E1F38780780EA700300F013C0EAE001A2B5FCA300F0C7FC12703878
01C0123CEA3F07381FFF8000071300EA01FC12147D9318>I<EB1FC0EB7FE013FFEA01F1EBC0C0
1400A3387FFFC0B5FCA23801C000AEEA7FFFA3131C7F9B18>I<3803F1F03807FFF85A381E1F30
383C0F00EA3807A5EA3C0FEA1E1EEA1FFC485AEA3BF00038C7FC123CEA1FFF14C04813E0387801
F038F00078481338A36C1378007813F0EA7E03383FFFE0000F13803803FE00151F7F9318>I<12
7E12FE127E120EA5133FEBFF80000F13C0EBE1E013801300A2120EAA387FC3FC38FFE7FE387FC3
FC171C809B18>I<EA0380487EA36C5AC8FCA4EA7FC012FF127F1201AEB5FC14801400111D7C9C
18>I<12FEA3120EA5EB3FF0137F133FEB0780EB0F00131E5B5B5BEA0FF87F139C131EEA0E0FEB
0780130314C038FFC7F8A3151C7F9B18>107 D<EA7FE012FF127F1200B3A4387FFFC0B512E06C
13C0131C7E9B18>I<387DF1F038FFFBF86CB47E381F1F1CEA1E1EA2EA1C1CAB387F1F1F39FFBF
BF80397F1F1F001914819318>I<EA7E3F38FEFF80007F13C0380FE1E013801300A2120EAA387F
C3FC38FFE7FE387FC3FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A238E0
00E0A5EAF001007013C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318>I<EA7E3E
38FEFF80007F13C0380FE3E0EB80F0EB00701478000E1338A5120F14781470EB80F0EBC3E0EBFF
C0000E1380EB7E0090C7FCA7EA7FC0487E6C5A151E809318>I<387F87E038FF9FF8EA7FBF3803
FC78EBF030EBE0005BA35BA8EA7FFEB5FC6C5A15147F9318>114 D<EA0FF7EA3FFF5AEAF81FEA
E007A212F0007CC7FCEA7FF0EA1FFCEA07FEEA001F38600780EAE00312F0130738FC0F00B5FC5B
EAE7F811147D9318>I<487E1203A4387FFFC0B5FCA238038000A9144014E0A21381EBC3C0EA01
FF6C1380EB7E0013197F9818>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F073807FFFC6C13
FE3801FCFC1714809318>I<38FF8FF8A3383800E0A3381C01C0A2137113F9A213D9A2380DDD80
A3138DEA0F8FA23807070015147F9318>119 D<387F8FF000FF13F8007F13F0380E01C0EB0380
A21207EB0700A2EA03871386138EEA01CEA2EA00CCA213DC1378A31370A313F05B1279EA7BC0EA
7F806CC7FC121E151E7F9318>121 D<126012F0B3B012600424769F18>124
D E /Fc 12 119 df<EBF1803803FDC038078F80EA0E07121C123C14001278A3EAF00EA31430EB
1C60133CEA707C3878FCC0EA3FCF380F078014147C9317>97 D<EA0780123F13001207A3120EA4
5AA213F0EA1FFCEA3F1EEA3E0EEA3C0F12381270A4EAE01EA3133CA21338EA6070EA71E0EA3FC0
EA1F0010207B9F15>I<137E48B4FC38038380EA0F07121E001C1300EA3C0248C7FCA35AA5EA70
021307EA381EEA1FF8EA07E011147C9315>I<1478EB03F814F0EB0070A314E0A4EB01C0A213F1
EA03FD38078F80EA0E07121C123C14001278A3EAF00EA31430EB1C60133CEA707C3878FCC0EA3F
CF380F078015207C9F17>I<137C48B4FCEA0783380F0180121E123CEB0300EA780EEA7FFC13E0
00F0C7FCA412701302EA7807EA3C1EEA1FF8EA07E011147C9315>I<EB3C60EBFF703801E3E0EA
0381EA0701120F14C0121EA3383C0380A4EB07005BEA1C1FEA1E3FEA0FFEEA03CEEA000EA25BA2
1230EA7838EAF0F0EA7FE0EA3F80141D7E9315>103 D<136013F0A213E01300A7120FEA1F8012
3113C0EA6380A212C3EA0700A3120EA3EA1C301360A2EA38C01218EA1F80EA0F000C1F7D9E0E>
105 D<EA03C0121F13801203A3EA0700A4120EA45AA45AA45AA3EA7180EAE300A312E6127E123C
0A207C9F0C>108 D<381E07C0383F1FE03833B870EA63E0EBC038138000C71370EA0700A3000E
13E0A3EB01C3001C13C6A2EB038C1301003813F8381800F018147D931A>110
D<137C48B4FC38038380380F01C0121E001C13E0123C1278A338F003C0A3EB07801400EA700F13
1EEA3838EA1FF0EA07C013147C9317>I<EA018013C0EA0380A4EA0700A2EAFFF0A2EA0E00A45A
A45AA31330EA7060A213C0EA7180EA3F00121E0C1C7C9B0F>116 D<380F01C0EA1F83003113E0
13C1EA6380A200C313C0EA0700A3380E0180A3EB0300A21306A2EA0F0CEA07F8EA01E013147D93
15>118 D E /Fd 28 121 df<903807F83F017FB512C03A01FC0FE3E03903F01FC7EA07E0D80F
C01387ED83C0ED8000A6B612FCA2390FC01F80B2397FF8FFF8A223237FA221>11
D<13181330136013C01201EA0380120713005A121EA2123E123CA2127CA3127812F8AD1278127C
A3123CA2123E121EA27E7E13801203EA01C012001360133013180D317BA416>40
D<12C012607E7E121C7E120F7E1380EA03C0A213E01201A213F0A3120013F8AD13F01201A313E0
A2120313C0A2EA078013005A120E5A12185A5A5A0D317DA416>I<EA07FCEA1FFF38380F803870
07C000F813E012FCA3127838000FC0EB1F801400133C5B13705BA25BA690C7FCA5EA01C0487E48
7EA36C5A6C5A13237DA21A>63 D<D903FE138090381FFF819038FF01E33901F8003FD803E0131F
4848130F48481307121F48C71203A2481401127EA200FE91C7FCA8127EED0180127F7E15036C6C
1400120F6C6C1306D803F05B6C6C13386CB413F090381FFFC0D903FEC7FC21227DA128>67
D<D903FE134090391FFFC0C090387F00F1D801F8133F4848130FD807C01307000F1403485A48C7
1201A2481400127EA200FE1500A791380FFFFC127E007F9038001FC0A27EA26C7E6C7E6C7E6C7E
D801FC133F39007F80E790381FFFC30103130026227DA12C>71 D<D8FFF0EC0FFF6D5C000716E0
D806FC1437A3017E1467A26D14C7A290391F800187A290390FC00307A3903807E006A2903803F0
0CA2903801F818A3903800FC30A2EC7E60A2EC3FC0A2EC1F80A3EC0F00D8FFF091B5FC14063022
7EA135>77 D<B53A0FFFF01FFEA2260FF00090C712E000076E14C0A26C6C9138800180153F6D15
03000103C01300A26C6C90387FE006156F7F6D9038C7F00CA20280EBF81C90263F81831318A2D9
1FC36D5A150114E3903A0FE600FE60A202F6EBFFE0D907FC6D5AA201035D4A133FA26D486DC7FC
A20100141E4A130EA237227FA13A>87 D<EA07FC381FFF80383F0FC0EB07E0130314F0121E1200
A213FF1207EA1FC3EA3F03127E12FCA4EA7E07EB1DF8381FF8FF3807E07F18167E951B>97
D<B47EA2121FABEB8FE0EBBFF8EBF07CEBC01EEB801FEC0F80A215C0A81580141F1500EBC03EEB
607C381E3FF8381C0FC01A237EA21F>I<EBFF80000713E0380F83F0EA1F03123E127E387C01E0
90C7FC12FCA6127C127EA2003E13306C1360380FC0E03807FF803800FE0014167E9519>I<EB03
FEA2EB007EABEA01FCEA07FF380F81FEEA1F00003E137E127E127C12FCA8127CA27E001E13FEEA
0F833907FF7FC0EA01FC1A237EA21F>I<13FE3807FF80380F87C0381E01E0003E13F0EA7C0014
F812FCA2B5FCA200FCC7FCA3127CA2127E003E13186C1330380FC0703803FFC0C6130015167E95
1A>I<EB3F80EBFFC03801F3E0EA03E7EA07C7120FEBC3C0EBC000A6EAFFFCA2EA0FC0B2EA7FFC
A213237FA211>I<3801FE1F0007B51280380F87E7EA1F03391E01E000003E7FA5001E5BEA1F03
380F87C0EBFF80D819FEC7FC0018C8FC121CA2381FFFE014F86C13FE80123F397C003F8048131F
140FA3007CEB1F00007E5B381F80FC6CB45A000113C019217F951C>I<B47EA2121FABEB87E0EB
9FF8EBB8FCEBE07CEBC07EA21380AE39FFF1FFC0A21A237EA21F>I<120E121FEA3F80A3EA1F00
120EC7FCA7EAFF80A2121FB2EAFFF0A20C247FA30F>I<EAFF80A2121FB3ADEAFFF0A20C237FA2
0F>108 D<3AFF87F00FE090399FFC3FF83A1FB87E70FC9039E03EC07C9039C03F807EA2018013
00AE3BFFF1FFE3FFC0A22A167E952F>I<38FF87E0EB9FF8381FB8FCEBE07CEBC07EA21380AE39
FFF1FFC0A21A167E951F>I<13FE3807FFC0380F83E0381E00F0003E13F848137CA300FC137EA7
007C137CA26C13F8381F01F0380F83E03807FFC03800FE0017167E951C>I<38FF8FE0EBBFF838
1FF07CEBC03E497E1580A2EC0FC0A8EC1F80A2EC3F00EBC03EEBE0FCEBBFF8EB8FC00180C7FCA8
EAFFF0A21A207E951F>I<EAFF1FEB3FC0381F67E013C7A3EB83C0EB8000ADEAFFF8A213167E95
17>114 D<EA07F3EA1FFFEA780FEA7007EAF003A26CC7FCB4FC13F0EA7FFC6C7E6C7E12073800
3F80EAC00F130712E0A200F01300EAFC1EEAEFFCEAC7F011167E9516>I<13C0A41201A2120312
07120F121FB5FCA2EA0FC0ABEBC180A51207EBE300EA03FEC65A11207F9F16>I<38FF83FEA238
1F807EAF14FEA2EA0F833907FF7FC0EA01FC1A167E951F>I<39FFF01FE0A2390FC00600A2EBE0
0E0007130CEBF01C0003131813F800015BA26C6C5AA2EB7EC0A2137F6D5AA26DC7FCA2130EA21B
167F951E>I<39FFF07FC0A2390FC01C006C6C5A6D5A6C6C5A00015B3800FD80017FC7FCA27F6D
7E497E80EB67F013E33801C1F8380381FC48C67E000E137E39FF81FFE0A21B167F951E>120
D E /Fe 1 4 df<1207A3EAE738EAFFF8EA7FF0EA1FC0A2EA7FF0EAFFF8EAE738EA0700A30D0E
7E8E12>3 D E /Ff 33 118 df<1318137013E0EA01C0EA0380A2EA0700120EA2121E121C123C
A25AA412F85AA97E1278A47EA2121C121E120EA27EEA0380A2EA01C0EA00E0137013180D2D7DA1
14>40 D<12C012707E7E7EA27EEA0380A213C0120113E0A2EA00F0A413F81378A913F813F0A4EA
01E0A213C012031380A2EA0700120EA25A5A5A12C00D2D7DA114>I<14E0B0B712C0A3C700E0C7
FCB022237D9C29>43 D<1238127C12FE12FFA2127F123B1203A21206A2120E120C121812701220
08107C860F>I<137013F0120F12FF12F31203B3A4B51280A2111D7C9C1A>49
D<EA07F0EA1FFEEA383F387C1F8038FE0FC0A214E01307127C1238EA000F14C0A2EB1F80140013
3E13785B5B3801C060EA0380EA0700000C13E0EA1FFF14C05A5AB5FCA2131D7D9C1A>I<EA01FC
EA07FF380E0F80001E13C0383F07E01387A3381F0FC0120E00001380EB1F00EA01FCA238000F80
EB07C0EB03E014F0003C13F8127E12FFA314F0127E387C07E0383C0FC0380FFF803803FC00151D
7E9C1A>I<EB01C013031307A2130F131F133F1377136713C7EA01871203EA0707120E120C1218
1238127012E0B512FEA238000FC0A63801FFFEA2171D7F9C1A>I<14E0A2497EA3497EA2497EA2
497E130CA2EB187FA201307F143F01707FEB601FA201C07F140F48B57EA2EB800748486C7EA200
06801401000E803AFFE01FFFE0A2231F7E9E28>65 D<B612E0A23807F007140114001560157015
30A21460A21500A2EBF1E013FFA213F1EBF060A2150CA214001518A31538157815F8EC03F0B6FC
A21E1F7E9E22>69 D<B612E0A23807F00714011400156015701530A21460A21500A2EBF1E013FF
A213F1EBF060A491C7FCA8B512C0A21C1F7E9E21>I<B51280A23807F000B3A9B51280A2111F7F
9E14>73 D<D8FFF8EBFFF0A2D807FCEB06007F7F00061380137FEB3FC0EB1FE0EB0FF014F8EB07
FC1303EB01FEEB00FFEC7F8615C6EC3FE6141FEC0FF6EC07FE1403A214011400157E153E151EA2
D8FFF0130E1506241F7E9E29>78 D<B512F814FF3907F01FC0EC07E06E7EA281A45DA24A5AEC1F
C090B5C7FC5C9038F03F806E7E81140FA61630A2EDF070913807F860B53881FFE09138807F8024
1F7E9E27>82 D<3803FC08380FFF38381E03F8EA3C00481378143812F814187E1400B4FC13F86C
B4FC14C06C13E06C13F06C13F8120338001FFC13011300A200C0137CA36C1378A200F813F038FE
01E038E7FFC000811300161F7D9E1D>I<007FB512FCA2397C0FE07C0070141C0060140CA200E0
140E00C01406A400001400B10007B512C0A21F1E7E9D24>I<B53A1FFFC0FFE0A23C0FE001FC00
0E00D807F0150C81EBF80000035E816D1538000149EB803015BFD800FE5D9138031FC001FF15E0
017F6E5AEC060FD93F86EBE180028E13F1ECCC07011F02F3C7FC9138D803FB02F813FF010F5CEC
F00101075CECE000A201035C4A1378010114704A1330331F7F9E36>87 D<EA07FCEA1FFF383F0F
80EB07C0EB03E0A2120C1200EA01FF120FEA3F83EA7E03127C12F8A3EAFC07EA7E0D383FF9FE38
07E07E17147F9319>97 D<EB07F8A21300AAEA01F8EA0FFEEA1F83EA3E01EA7E00127CA212FCA6
127CA2127EEA3E01EA1F07380FFEFFEA03F818207E9F1D>100 D<EA01FE3807FF80381F83E038
3F01F0EA7E0014F85AA2B5FCA200FCC7FCA3127C127E003E1318003F1338380F80703807FFE0C6
138015147F9318>I<EB1F80EBFFC03801F3E0EA03E713C71207EBC3C0EBC000A5EAFFFCA2EA07
C0B0EA3FFCA213207F9F10>I<3801FC3C3807FFFE380F07DEEA1E03003E13E0A5001E13C0380F
0780EBFF00EA19FC0018C7FCA2121C381FFF8014F06C13F8003F13FC387C007C0070133E00F013
1EA30078133CA2383F01F8380FFFE000011300171E7F931A>I<B4FCA2121FAAEB0FC0EB3FE0EB
61F0EBC0F813801300AD38FFE3FFA218207D9F1D>I<121C123F5AA37E121CC7FCA6B4FCA2121F
B0EAFFE0A20B217EA00E>I<B4FCA2121FB3AAEAFFE0A20B207E9F0E>108
D<3AFE0FE03F8090393FF0FFC03A1E70F9C3E09039C07F01F0381F807EA2EB007CAC3AFFE3FF8F
FEA227147D932C>I<38FE0FC0EB3FE0381E61F0EBC0F8EA1F801300AD38FFE3FFA218147D931D>
I<48B4FC000713C0381F83F0383E00F8A248137CA200FC137EA6007C137CA26C13F8A2381F83F0
3807FFC00001130017147F931A>I<38FF1FC0EB7FF0381FE1F8EB80FCEB007EA2143E143FA614
3E147E147CEB80FCEBC1F8EB7FE0EB1F8090C7FCA7EAFFE0A2181D7E931D>I<EAFE3EEB7F8038
1ECFC0EA1F8FA3EB030090C7FCABEAFFF0A212147E9316>114 D<EA0FE6EA3FFEEA701EEA600E
EAE006A2EAF800EAFFC0EA7FF8EA3FFCEA1FFE1203EA001FEAC007A212E0EAF006EAF81EEAFFFC
EAC7F010147E9315>I<EA0180A31203A31207120F123FEAFFFCA2EA0F80AA1386A5EA07CCEA03
F8EA01F00F1D7F9C14>I<38FF07F8A2EA1F00AD1301A2EA0F073807FEFFEA03F818147D931D>I
E /Fg 77 124 df<90380FC3E090387FEFF09038E07C783801C0F8D8038013303907007000A7B6
1280A23907007000B0387FE3FFA21D20809F1B>11 D<EB1F80EB7FC03801E0E0EA0381A2EA0701
90C7FCA6B512E0A2EA0700B0387FC3FEA21720809F19>I<EB1FE0137FEA01E1EA03811380EA07
00A7B5FCA2EA0700B0387FE7FEA21720809F19>I<90380F80F890387FE7FE9038E06E063901C0
FC0F380380F8380700F00270C7FCA6B7FCA23907007007B03A7FE3FE3FF0A22420809F26>I<90
380FC0FFEB7FE79038E07E0F3801C0FC4848487E38070070A7B7FCA23907007007B03A7FE3FE3F
F0A22420809F26>I<EA7038EAF87CEAFC7EA2EA7C3EEA0C06A3EA180CA2EA381CEA3018EA6030
EA40200F0E7E9F17>34 D<127012F812FCA2127C120CA31218A21238123012601240060E7C9F0D
>39 D<136013C0EA0180EA03005A12065A121C12181238A212301270A31260A212E0AC1260A212
70A312301238A21218121C120C7E12077EEA0180EA00C013600B2E7DA112>I<12C012607E7E12
1C120C7E12077E1380A2120113C0A31200A213E0AC13C0A21201A313801203A213005A12065A12
1C12185A5A5A0B2E7DA112>I<1306AFB612F0A2D80006C7FCAF1C207D9A23>43
D<127012F812FCA2127C120CA31218A21238123012601240060E7C840D>I<EAFFC0A30A037F8A
0F>I<127012F8A3127005057C840D>I<1303A213071306A2130E130CA2131C1318A213381330A2
13701360A213E013C0A212011380A312031300A25A1206A2120E120CA2121C1218A212381230A2
12701260A212E05AA2102D7DA117>I<EA03F0EA0FFCEA1E1EEA1C0E487E00781380EA7003A300
F013C0AD00701380A3EA780700381300EA1C0EEA1E1EEA0FFCEA03F0121F7E9D17>I<EA018012
03121F12FF12E31203B3A5EAFFFEA20F1E7C9D17>I<EA03F0EA0FFCEA183EEA300F00601380EA
C00700F013C012F81303A21220EA00071480A2EB0F00130E5B5B5B5B485A485A90C7FC000613C0
5A5A38300180EA7FFFB5FCA2121E7E9D17>I<EA03F0EA0FFCEA1C1EEA300F00781380A21307EA
380F12001400A2131E5BEA03F85BEA001C7F130FEB0780A214C0122012F8A300F01380EA600F00
701300EA3C1EEA1FFCEA03F0121F7E9D17>I<130EA2131E133EA2136E13EE13CEEA018E120313
0E1206120E120C121812381230126012E0B512F0A238000E00A7EBFFE0A2141E7F9D17>I<EA38
03EA3FFF5B13F813E00030C7FCA6EA31F0EA37FCEA3E0EEA3C0700381380EA3003120014C0A312
6012F0A21480EAC00700601300EA700EEA3C1EEA0FF8EA07E0121F7E9D17>I<137CEA01FEEA07
83380E0380EA0C07121C3838030090C7FC12781270A2EAF3F8EAF7FEEAFC0E487EEB0380A200F0
13C0A51270A214801238EB0700121CEA0E1EEA07FCEA01F0121F7E9D17>I<1260387FFFC0A214
80EA600138C003001306A2C65A5BA25B5BA213E05B1201A3485AA41207A76CC7FC121F7D9D17>
I<EA03F0EA0FFCEA1E1EEA3807123038700380A438780700123EEA3F0EEA1FDCEA0FF81203487E
EA1E7EEA383F38700F80130738E003C01301A400F01380EA700338380700EA1E0EEA0FFCEA03F0
121F7E9D17>I<EA03F0487EEA1E1CEA380E7F1270EB038012F0A214C0A5EA7007A2EA380F121C
EA1FFBEA07F338000380A2130714001230EA780EA2EA701CEA3078EA1FF0EA0FC0121F7E9D17>
I<127012F8A312701200AA127012F8A3127005147C930D>I<127012F8A312701200AA127012F8
A312781218A41230A21260A21240051D7C930D>I<007FB512E0B612F0C9FCA8B612F06C14E01C
0C7D9023>61 D<EA0FC0EA3FF0EA7078EA6038EAE03C12F0A212601200137813F013E0EA01C013
8012031300A7C7FCA51207EA0F80A3EA07000E207D9F15>63 D<EB0380A3497EA3EB0DE0A3EB18
F0A3EB3078A3497EA3EBE01E13C0EBFFFE487FEB800FA200031480EB0007A24814C01403EA0F80
39FFE03FFEA21F207F9F22>65 D<B512E014F83807803E80801580A515005C143E5CEBFFF880EB
801E801580140715C0A51580140FEC1F00143EB512FC14F01A1F7E9E20>I<90381FC04090387F
F0C03801F8393803C00D38078007380F0003121E003E1301123C127C1400127812F81500A80078
14C0127CA2123C003EEB0180121E6CEB0300EA07803803C00E3801F81C38007FF0EB1FC01A217D
9F21>I<B512E014FC3807803E140FEC0780EC03C015E0140115F01400A215F8A915F0A2140115
E0A2EC03C0EC0780EC0F00143EB512FC14E01D1F7E9E23>I<B6FCA23807801F140780A2158014
01A214C1A2ECC000A2138113FFA213811380A21560A2140015C0A31401A21403EC0F80B6FCA21B
1F7E9E1F>I<B6FCA23807801F140780A215801401A214C1A2ECC000A2138113FFA213811380A4
91C7FCA8EAFFFEA2191F7E9E1E>I<90380FC02090387FF8603901F81CE03803E0063807800338
0F0001121E14005A127C1560127812F81500A6EC7FFCA20078EB01E0127CA2123C7EA27E380780
03EA03E03901F80E6039007FFC2090380FE0001E217D9F24>I<39FFF8FFF8A23907800F00AC90
B5FCA2EB800FAD39FFF8FFF8A21D1F7E9E22>I<EAFFFCA2EA0780B3A9EAFFFCA20E1F7F9E10>I<
EAFFFEA2EA0780B11406A4140EA2140C141C143C14FCB5FCA2171F7E9E1C>76
D<B46CEB1FF86D133F00071500A2D806E0136FA3017013CFA3903838018FA390381C030FA3EB0E
06A3EB070CA3EB0398A3EB01F0A3380F00E03AFFF0E1FFF8A2251F7E9E2A>I<39FF807FF813C0
0007EB07809038E00300A2EA06F0A21378133CA2131EA2130FA2EB078314C31303EB01E3A2EB00
F3A2147BA2143F80A280A2000F7FEAFFF0801D1F7E9E22>I<EB1F80EBFFF03801E0783807C03E
48487E497E001EEB078048EB03C0A2007C14E0A20078130100F814F0A9007814E0007C1303A200
3C14C0003E1307001E14806CEB0F006D5A3807C03E3801F0F86CB45AEB1F801C217D9F23>I<B5
12E014F83807807C141E141F801580A515005C141E147CEBFFF814E00180C7FCACEAFFFCA2191F
7E9E1F>I<B57E14F0380780F8143C143E141E141FA4141E143E143C14F8EBFFF01480EB81C0EB
80E01470A21478A3147CA3150C147E143E39FFFC1F18EC0FF0C7EA03E01E207E9E21>82
D<3807E080EA0FF9EA1C1FEA300FEA7007EA600312E01301A36CC7FCA21278127FEA3FF0EA1FFC
6C7EEA03FF38001F801307EB03C0A2130112C0A400E01380EAF00338F80700EAFE0EEACFFCEA81
F812217D9F19>I<007FB512E0A238780F010070130000601460A200E0147000C01430A4000014
00B23807FFFEA21C1F7E9E21>I<39FFFC7FF8A23907800780EC0300B3A300031302EBC006A200
015B6C6C5AEB7830EB3FE0EB0FC01D207E9E22>I<39FFF007FEA2390F8001F090C712E06C6C13
C0A2EBC00100031480A2EBE00300011400A23800F006A3EB780CA36D5AA36D5AA2EB1F70EB0F60
A214E06D5AA26D5AA31F207F9E22>I<3BFFF07FF83FF0A23B0F0007800F80EE0300A23A07800F
C006A3913819E00ED803C0140CA214393A01E030F018A33A00F0607830A3ECE07C903978C03C60
A390393D801EC0A390383F000F6D5CA3010E6DC7FCA32C207F9E2F>I<397FF83FF8A23907C00F
800003EB06003801E00EEBF00C00005BEB7838EB7C30EB3C70EB3E60EB1EC0130F5C1307808013
0DEB1DF0EB18F8EB3878EB307CEB603CEBE01EEBC01F48487E0003EB0780010013C0EA0F8039FF
E01FFEA21F1F7F9E22>I<EA0804EA180CEA3018EA7038EA6030A2EAC060A3EAF87CEAFC7EA2EA
7C3EEA381C0F0E7B9F17>92 D<EA1FE0487EEA78387FEA300E1200A3EA03FE121FEA3E0E127812
F800F01330A3131E38783F70383FEFE0380F878014147E9317>97 D<120E12FEA2120EA9133FEB
FF80380FC3C0EB00E0000E13F014701478A7147014F0120FEB01E0EBC3C0380CFF80EB3E001520
7F9F19>I<EA03F8EA0FFCEA1E1E123CEA380CEA7800127012F0A612701278EA3803123CEA1F0E
EA0FFCEA03F010147E9314>I<EB0380133FA21303A9EA03E3EA0FFBEA1E0FEA3C07EA7803A212
7012F0A61270A2EA78071238EA1E1F380FFBF8EA03E315207E9F19>I<EA03F0EA0FFCEA1E1E48
7EEA380712783870038012F0B5FCA200F0C7FCA31270127838380180EA1C03380F0700EA07FEEA
01F811147F9314>I<133C13FEEA01CFEA038F1306EA0700A7EAFFF0A2EA0700B0EA7FF0A21020
809F0E>I<EB01E03803E3F0380FFF70EA1C1C383C1E00EA380EEA780FA4EA380EEA3C1EEA1C1C
EA3FF8EA33E00030C7FCA21238EA3FFE381FFF804813C0387003E0EB00F0481370A36C13F03878
01E0383E07C0380FFF00EA03FC141F7F9417>I<120E12FEA2120EA9133E13FF380FC380EB01C0
A2120EAD38FFE7FCA216207F9F19>I<121C121E123E121E121CC7FCA6120E127EA2120EAFEAFF
C0A20A1F809E0C>I<13E0EA01F0A3EA00E01300A61370EA07F0A212001370B3A21260EAF0E0EA
F1C0EA7F80EA3E000C28829E0E>I<120E12FEA2120EA9EB1FF0A2EB0F80EB0E00130C5B5B1370
13F0EA0FF81338EA0E1C131E130E7F1480130314C038FFCFF8A215207F9F18>I<120E12FEA212
0EB3A9EAFFE0A20B20809F0C>I<390E3F03F039FEFF8FF839FFC1DC1C390F80F80EEB00F0000E
13E0AD3AFFE7FE7FE0A223147F9326>I<EA0E3EEAFEFF38FFC380380F01C0A2120EAD38FFE7FC
A216147F9319>I<EA01F8EA07FE381E0780383C03C0EA3801387000E0A200F013F0A6007013E0
EA7801003813C0EA3C03381E07803807FE00EA01F814147F9317>I<EA0E3F38FEFF8038FFC3C0
380F01E0380E00F0A21478A7147014F0120FEB01E0EBC3C0380EFF80EB3E0090C7FCA7EAFFE0A2
151D7F9319>I<3803E180EA0FF9EA1E1FEA3C0712781303127012F0A6127012781307EA3C0FEA
1E1FEA0FF3EA03E3EA0003A7EB3FF8A2151D7E9318>I<EA0E78EAFEFCEAFF9EEA0F1E130C1300
120EACEAFFE0A20F147F9312>I<EA1F90EA3FF0EA7070EAE030A3EAF0001278EA7F80EA3FE0EA
0FF01200EAC0781338A212E0A2EAF070EADFE0EA8F800D147E9312>I<1206A4120EA2121E123E
EAFFF8A2EA0E00AA1318A5EA073013E0EA03C00D1C7F9B12>I<380E01C0EAFE1FA2EA0E01AC13
03A2EA070FEBFDFCEA01F116147F9319>I<38FF87F8A2381E01E0000E13C01480A238070300A3
EA0386A2138EEA01CCA213FC6C5AA21370A315147F9318>I<39FF9FF3FCA2391C0780F01560EC
C0E0D80E0F13C0130C14E00007EBE180EB186114713903987300EBB033A2143F3801F03EEBE01E
A20000131CEBC00C1E147F9321>I<387FC7FCA2380703E0148038038300EA01C7EA00EE13EC13
781338133C137C13EEEA01C7138738030380380701C0000F13E038FF87FEA21714809318>I<38
FF87F8A2381E01E0000E13C01480A238070300A3EA0386A2138EEA01CCA213FC6C5AA21370A313
60A35B12F0EAF18012F3007FC7FC123C151D7F9318>I<EA3FFFA2EA380EEA301CEA703CEA6038
137013F0EA01E013C0EA0380EA0783EA0F03120EEA1C07EA3C061238EA701EEAFFFEA210147F93
14>I<B512FCA21602808C17>I E /Fh 29 122 df<48B4FC000F13E0383E03F8007813FCEA7E01
00FF13FEA5387E03FC1200EB07F0EB0FE01480EB1F00131E5BA25BA21370A690C7FCA61370EA01
FC487EA56C5AEA0070172A7CA920>63 D<B712C0A33903FE003FED0FE015031501A21500A316F0
9138038070A31600A21407140F90B5FCA3EBFE0F14071403A591C8FCA9B512FEA324297DA82B>
70 D<91387FE003903903FFFC0F011FEBFF1F90397FF00FFF9038FF8001D803FEC7FC48488048
48804980485A003F815B007F81A3484891C7FCA90203B512F8A2EA7FC0DA00011300A2123F7F12
1F6C7E7F6C7E6C6C5B3800FF8090387FF00F011FB5123F0103EBFC0F9039007FE0032D297CA836
>I<B512FEA300011300B3B1B512FEA317297FA81A>73 D<B592383FFFC0A26E5C0003EFF000A2
D9BFC014EFA2D99FE0EB01CFA2D98FF0EB038FA3D987F8EB070FA2D983FC130EA2D981FE131CA3
D980FF1338A291387F8070A291383FC0E0A391381FE1C0A291380FF380A2913807FF00A36E5AA2
6E5AA26E5AD8FFFE0203B512C0A215703A297DA841>77 D<90387F80603903FFF0E0000F13FF38
1F807F383F001F003E1307007E1303127C00FC1301A214007E7E6D130013F8EBFF806C13F814FE
6C7F6C14C07E6C14E0000114F0EA003F010113F8EB001F1407A200E013031401A37E15F06C1303
6C14E0B413079038E01FC090B5120000E05B38C01FF01D297CA826>83 D<B53CF87FFFF807FFF0
A32703FE000190C7EA1C00A26C6C6F5B816E16786C701370A26E6E13F0017F495D14E0013F496D
485A169F02F01503011F9026070FF85BA2DAF80FEBFC07010FD90E0791C7FC14FC0107011EEBFE
0EED1C0302FE151E010390393801FF1CA2902601FF7814B8ED700015F06D16F04B137FA26E486D
5AA2023F5D4B131FA2021F5D92C7120FA2020E6EC8FC44297FA847>87 D<48B47E000F13F0381F
81FC486C7E147FA2EC3F80A2EA0F00C7FCA2EB0FFF90B5FC3807FC3FEA1FE0EA3F80127F130012
FEA3147F7E6CEBFFC0393F83DFFC380FFF0F3801FC031E1B7E9A21>97 D<EB1FF0EBFFFE3803F0
3F390FE07F80EA1FC0EA3F80A2127F9038001E004890C7FCA97E7F003FEB01C013C0001F130339
0FE007803903F01F003800FFFCEB1FE01A1B7E9A1F>99 D<EC3FF8A31403ACEB1FE3EBFFFB3803
F03F380FE00F381FC007383F8003A2127F13005AA97EA2EA3F801407381FC00F380FE01F3A03F0
3FFF803800FFF3EB3FC3212A7EA926>I<EB3FE03801FFF83803F07E380FE03F391FC01F80393F
800FC0A2EA7F00EC07E05AA390B5FCA290C8FCA47E7F003F14E01401D81FC013C0380FE0033903
F81F803900FFFE00EB1FF01B1B7E9A20>I<EB07F8EB3FFEEBFE3F3901FC7F80EA03F8A2EA07F0
A2EC3F0091C7FCA6B512C0A3D807F0C7FCB3A3387FFF80A3192A7EA915>I<9038FF81F00003EB
E7FC390FC1FE7C391F80FCFC003FEBFE7C9038007E3848EB7F00A66C137EEB80FE001F5B380FC1
F8381FFFE0001813800038C8FC123CA2123E383FFFF814FF6C14C06C14E06C14F0121F397E0007
F8007C13015A1400A36C1301007EEB03F06CEB07E0390FC01F803903FFFE0038007FF01E287E9A
22>I<EAFFE0A3120FAC147F9038E1FFC09038E787E09038EE07F09038FC03F813F813F0A313E0
AF3AFFFE3FFF80A3212A7DA926>I<1207EA1FC013E0123FA3121F13C0EA0700C7FCA7EAFFE0A3
120FB3A3EAFFFEA30F2B7DAA14>I<EAFFE0A3120FACEC1FFCA3EC07C0EC0F80EC1E00147C5CEB
E1F0EBE3E0EBE7C0EBEFE0EBFFF0A280EBF3FCEBE1FE13C080EC7F80143F15C0EC1FE0EC0FF039
FFFC3FFEA31F2A7EA924>107 D<EAFFE0A3120FB3B2EAFFFEA30F2A7DA914>I<3BFFC07F800FF0
903AC1FFE03FFC903AC783F0F07E3B0FCE03F9C07F903ADC01FB803F01F8D9FF00138001F05BA3
01E05BAF3CFFFE1FFFC3FFF8A3351B7D9A3A>I<38FFC07F9038C1FFC09038C787E0390FCE07F0
9038DC03F813F813F0A313E0AF3AFFFE3FFF80A3211B7D9A26>I<EB3FE03801FFFC3803F07E39
0FC01F80391F800FC0003F14E0EB00074814F0A34814F8A86C14F0A2393F800FE0A2001F14C039
0FC01F803907F07F003801FFFC38003FE01D1B7E9A22>I<38FFE1FE9038E7FF809038FE07E039
0FF803F8496C7E01E07F140081A2ED7F80A9EDFF00A25DEBF0014A5A01F85B9038FE0FE09038EF
FF80D9E1FCC7FC01E0C8FCA9EAFFFEA321277E9A26>I<38FFC3F0EBCFFCEBDC7E380FD8FF13F8
5BA3EBE03C1400AFB5FCA3181B7E9A1C>114 D<3803FE30380FFFF0EA3E03EA7800127000F013
70A27E6C1300EAFFE013FE387FFFC06C13E06C13F0000713F8C613FC1303130000E0137C143C7E
A26C13787E38FF01F038F7FFC000C11300161B7E9A1B>I<1370A413F0A312011203A21207381F
FFF0B5FCA23807F000AD1438A73803F870000113F03800FFE0EB1F8015267FA51B>I<39FFE03F
F8A3000F1303B11407A2140F0007131F3A03F03BFF803801FFF338003FC3211B7D9A26>I<3AFF
FE03FF80A33A07F0007000A26D13F000035CEBFC0100015CA26C6C485AA2D97F07C7FCA2148FEB
3F8E14DEEB1FDCA2EB0FF8A36D5AA26D5AA26D5A211B7F9A24>I<3BFFFE7FFC0FFEA33B0FE007
E000E03B07F003F001C0A29039F807F80300031680A23B01FC0EFC0700A2D9FE1E5B000090381C
7E0EA29039FF383F1E017F141C0278133C90393FF01FB8A216F86D486C5AA26D486C5AA36D486C
5AA22F1B7F9A32>I<39FFFC0FFFA33907F003C06C6C485AEA01FC6C6C48C7FCEBFF1E6D5AEB3F
F86D5A130FA2130780497E497E131EEB3C7F496C7E496C7ED801E07FEBC00F00036D7E3AFFF01F
FF80A3211B7F9A24>I<3AFFFE03FF80A33A07F0007000A26D13F000035CEBFC0100015CA26C6C
485AA2D97F07C7FCA2148FEB3F8E14DEEB1FDCA2EB0FF8A36D5AA26D5AA26D5AA2495AA2EA3807
007C90C8FCEAFE0F130E131E5BEA7C78EA3FE0EA0FC021277F9A24>I E
/Fi 18 119 df<127012F812FCA2127C120CA41218A21230A212601240060F7C840E>44
D<EA01801203120F12FF12F31203B3A8EAFFFEA20F217CA018>49 D<EA03F0EA0FFCEA1C1F3830
0F80EA6007EB03C012C000F013E0EAF801A3EA2003120014C0A2EB0780A2EB0F00131E131C5B5B
5B485A485A38070060120E120C4813E04813C0EA7FFFB5FCA213217EA018>I<EA01F0EA07FCEA
0E0F38180780EA3803383001C01270A31278EB0380123E383F0700EA1FCEEA0FFCEA03F87FEA0F
7F381C3F80EA380F387007C0130338E001E01300A5387001C0A238380380381E0F00EA0FFEEA03
F013227EA018>56 D<EA01F0EA07FCEA0E0E487E383803801278127038F001C0A314E0A5127013
031278EA3807EA1C0DEA0FF9EA07F1380081C0130113031480A2383007001278130EEA701C6C5A
EA1FF0EA0FC013227EA018>I<D8FFC0EB03FF6D5B000715E0A2D806F0130DA301781319A36D13
31A36D1361A36D13C1A29038078181A3903803C301A3EB01E6A3EB00FCA31478EA1F80D8FFF0EB
3FFF143028227EA12D>77 D<39FF800FFF13C00007EB01F89038E000607F12061378A27F133E13
1E7FA2EB078014C01303EB01E0A2EB00F01478A2143CA2141E140FA2EC07E0A214031401A2381F
8000EAFFF0156020227EA125>I<3803F020380FFC60381C0EE0EA3803EA7001A2EAE000A21460
A36C1300A21278127FEA3FF0EA1FFE6C7E0003138038003FC0EB07E01301EB00F0A2147012C0A4
6C136014E06C13C0EAF80138EF038038C7FF00EA81FC14247DA21B>83 D<EA0FE0EA1FF8EA3C1C
7FEA18071200A25BEA03FF120FEA3F07127C127812F01418A2130F1278387C3FB8383FF3F0380F
C3C015157E9418>97 D<120E12FEA2121E120EAAEB1F80EB7FE0380FC0F0EB0078000E1338143C
141C141EA7141C143C000F1338EB8070EBC1F0380C7FC0EB1F0017237FA21B>I<EA01FEEA07FF
380F0780121C383803000078C7FC127012F0A7127814C07E381E0180380F0300EA07FEEA01F812
157E9416>I<EA01FCEA07FF380F0780381C03C0EA3801007813E0EA7000B5FCA200F0C7FCA512
7814607E6C13C0380F83803807FF00EA00FC13157F9416>101 D<121C121E123E121E121CC7FC
A8120E12FEA2121E120EAFEAFFC0A20A227FA10E>105 D<390E1FC07F3AFE7FE1FF809039C0F3
03C03A1F807E01E0390F003C00000E1338AE3AFFE3FF8FFEA227157F942A>109
D<380E1F8038FE7FC038FFC1E0381F80F0380F0070120EAE38FFE7FFA218157F941B>I<EA01FC
EA07FF380F0780381C01C0383800E0007813F00070137000F01378A700701370007813F0003813
E0381C01C0380F07803807FF00EA01FC15157F9418>I<EA0E3CEAFEFEEAFFCFEA1F8FEA0F0613
00120EADEAFFF0A210157F9413>114 D<38FFC3FEA2381E00F8000E1360A26C13C0A338038180
A213C300011300A2EA00E6A3137CA31338A217157F941A>118 D E /Fj
17 124 df<B51280A23807F0006C5AB3B3A7487EB51280A211317DB017>73
D<D8FFF0ED7FF86D15FF0007170000035E017CEC01BEA36DEC033EA36D1406A36D6C130CA36D6C
1318A36D6C1330A36D6C1360A216C06D7EA291387C0180A391383E0300A3EC1F06A3EC0F8CA3EC
07D8A3EC03F0A3486C6C5AD80FC0157FD8FFFC91380FFFF8EC00C035317CB03D>77
D<EC3FC0903801FFF8903807C03E90391F000F80013CEB03C001F8EB01F048486D7E4848147C49
143C0007153E484880A248C8EA0F80A2003EED07C0A2007E16E0A2007C1503A200FC16F0AB007E
ED07E0A4003E16C0003F150F6C1680A26C6CEC1F00A26C6C143E6C6C5CA26C6C5C6C6C495A013E
EB07C06D495A902607E07EC7FC903801FFF89038003FC02C337CB134>79
D<B612C015F83907E000FE0003141FED0F80ED07C0ED03E016F01501A216F8A616F0A2150316E0
ED07C0ED0F80ED1F0015FE90B512F815C001E0C8FCB3A2487EB57EA225317CB02D>I<EA01FE38
0FFFC0381C03E0383C00F0003E137880141C0008131EC7FCA4EB01FE133F3801FF1EEA07F0EA0F
80EA1F00123E5AA248140CA3143EA2007C137E6CEBDF1C391F038FB8390FFF07F03903F803C01E
1F7D9E21>97 D<EB3FC0EBFFF83803E01C3807801E380F003E121EA2481308007C1300A2127812
F8A9127CA36C1303121E001F1306380F800E3807C01C3803F0383800FFE0EB3F80181F7D9E1D>
99 D<EB3F80EBFFE03803E0F83807803C48487E121E805A127C15800078130712F8B6FCA200F8
C8FCA61278127C123CEC01807E6CEB0300EB80063807C00E3801F03C3800FFF0EB1FC0191F7E9E
1D>101 D<EB03E0EB1FF8EB3C38EB707C13F0EA01E014383803C000ACB512C0A23803C000B3A8
487EEA7FFFA216327FB114>I<15F090387F03F83901FFCF1C3803C1FC390780F818390F007800
48137C001E133C003E133EA7001E133C001F137C6C13786C6C5A380FC1E0380DFFC0D81C7FC7FC
0018C8FCA2121CA2121E380FFFF814FF6C14804814C0391E0007E00038EB01F048EB0070157848
1438A500701470007814F06CEB01E06CEB03C03907C01F003801FFFC38003FE01E2F7E9F21>I<
1207EA0F80121FA2120FEA0700C7FCABEA078012FFA2120F1207B3A6EA0FC0EAFFF8A20D307EAF
12>105 D<EA078012FFA2120F1207B3B3A7EA0FC0EAFFFCA20E327EB112>108
D<380781FE39FF87FF8090388E07C0390F9803E03807B0019038E000F05BA35BB3486C487E3AFF
FC1FFF80A2211F7E9E25>110 D<380783E038FF8FF8EB9C7CEA0FB0EA07F0EBE038EBC000A35B
B3487EEAFFFEA2161F7E9E19>114 D<3801FC10380FFF30381E03F0EA38004813705A1430A37E
6C1300127EEA3FF06CB4FC6C1380000313E038003FF0EB03F8EB007800C0133CA2141C7EA27E14
186C13386C137038EF01E038C3FFC03880FE00161F7E9E1A>I<13C0A51201A31203A21207120F
121FB512E0A23803C000B01430A83801E060A23800F0C0EB7F80EB1F00142C7FAB19>I<D80780
13F000FF131FA2000F130100071300B31401A2140300031307EBC00E3901F03CF83A00FFF0FF80
EB3FC0211F7E9E25>I<B71280A22102809321>123 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 1 1
bop 457 227 a Fj(Message)21 b(P)n(assing)g(In)n(terface)i({)f(Outline)869
354 y Fi(Marc)16 b(Snir)772 456 y(No)o(v)o(em)o(b)q(er)d(28,)k(1992)75
643 y Fh(In)n(tro)r(duction)75 745 y Fg(The)f(purp)q(ose)h(of)f(this)g(do)q
(cumen)o(t)h(is)f(to)g(pro)o(vide)g(a)g(framew)o(ork)f(that)g(w)o(e)h(can)g
(use)h(to)e(discuss)i(issues)75 801 y(in)i(the)e(de\014nition)j(of)d(MPI,)h
(to)f(list)i(questions)f(w)o(e)f(need)i(to)e(answ)o(er,)h(and)g(prop)q(ose)f
(some)h(answ)o(ers.)75 857 y(I)g(plan)g(to)e(use)i(this)g(do)q(cumen)o(t)f
(as)g(a)g(framew)o(ork)f(for)h(the)g(discussions)i(in)f(the)f(p)q(oin)o
(t-to-p)q(oin)o(t)h(sub-)75 914 y(committee;)d(I)g(broadcast)g(it)g(to)g(the)
g(en)o(tire)g(committee,)g(b)q(ecause)h(man)o(y)f(issues)h(are)f(relev)m(an)o
(t)g(to)g(the)75 970 y(other)g(sub)q(committees.)75 1113 y
Fh(Goals)131 1214 y Fg(1.)22 b(Design)17 b(an)h(application)h(programming)d
(in)o(terface)i(\(not)e(necessarily)j(a)e(target)f(for)h(compilers)189
1271 y(or)d(a)h(system)g(implemen)o(tation)h(library\))131
1363 y(2.)22 b(Allo)o(w)15 b(e\016cien)o(t)h(comm)o(unication:)21
b(Av)o(oid)16 b(memory)e(to)h(memory)g(cop)o(ying)g(and)h(allo)o(w)f(o)o(v)o
(erlap)189 1420 y(of)e(computation)g(and)h(comm)o(unication)g(and)g(o\017oad)
f(to)g(comm)o(unication)h(copro)q(cessor,)g(where)189 1476
y(a)o(v)m(ailable)131 1569 y(3.)22 b(Allo)o(w)15 b(\(but)g(no)h(mandate\))e
(extensions)i(for)f(use)g(in)h(heterogeneous)f(en)o(vironmen)o(t.)131
1661 y(4.)22 b(Allo)o(w)15 b(con)o(v)o(enien)o(t)h(C,)f(C++,)g(F77)f(and)i
(F90)e(bindings)j(for)e(in)o(terface.)131 1754 y(5.)22 b(Pro)o(vide)15
b(a)g(reliable)i(comm)o(unication)f(in)o(terface:)21 b(User)15
b(need)h(not)f(cop)q(e)h(with)f(comm)o(unication)189 1810 y(failures.)21
b(Suc)o(h)15 b(failures)i(are)d(dealt)i(b)o(y)f(the)h(underlying)h(comm)o
(unication)f(subsystem.)131 1902 y(6.)22 b(F)l(o)q(cus)15 b(on)g(a)g(prop)q
(osal)h(that)e(can)h(b)q(e)h(agreed)f(up)q(on)h(in)g(6)f(mon)o(ths.)131
1995 y(7.)22 b(De\014ne)10 b(an)g(in)o(terface)h(that)e(is)i(not)f(to)q(o)f
(di\013eren)o(t)i(from)e(curren)o(t)h(practice)h(\(PVM/Express/P)o(armacs\))
131 2087 y(8.)22 b(De\014ne)13 b(an)g(in)o(terface)f(that)g(can)h(b)q(e)h
(quic)o(kly)g(implemen)o(ted)g(on)f(man)o(y)f(v)o(endors)g(platforms,)h(with)
189 2144 y(no)i(signi\014can)o(t)h(c)o(hanges)f(in)h(the)f(underlying)j(comm)
o(unication)d(and)h(system)f(soft)o(w)o(are.)146 2245 y(Do)f(w)o(e)h(agree)g
(on)g(this?)75 2388 y Fh(F)-6 b(ramew)n(ork)75 2489 y Fg(I)11
b(prop)q(ose)g(to)g(consider)g(comm)o(unication)h(op)q(erations)f(as)g
(consisting)g(of)g(the)g(follo)o(wing)g(sub)q(op)q(erations:)75
2591 y Ff(INIT\(op)q(eration,)19 b(params,)d(handle\))24 b
Fg(Pro)q(cess)15 b(pro)o(vides)f(all)i(relev)m(an)o(t)e(parameters)g(for)g
(its)g(par-)189 2647 y(ticipation)19 b(in)f(the)g(comm)o(unication)g(op)q
(eration)g(\(data)f(bu\013er,)h(t)o(yp)q(e,)g(participan)o(ts,)g(etc.\).)27
b(A)189 2704 y(handle)16 b(is)g(created)f(that)g(iden)o(ti\014es)h(the)g(op)q
(eration.)964 2828 y(1)p eop
%%Page: 2 2
bop 75 45 a Ff(ST)l(AR)l(T\(handle\))24 b Fg(The)16 b(comm)o(unication)g(op)q
(eration)f(is)h(started)75 139 y Ff(A)-6 b(W)g(AIT\(handle\))24
b Fg(The)15 b(comm)o(unication)h(op)q(eration)g(is)g(completed.)75
232 y Ff(FREE\(handle\))25 b Fg(The)16 b(handle,)g(and)f(asso)q(ciated)g
(resources)h(are)f(freed.)75 337 y(Correct)g(in)o(v)o(o)q(cation)h(of)g
(these)g(sub)q(op)q(erations)g(is)h(a)e(sequence)i(of)e(the)h(form)f(1\(23\))
1539 321 y Fe(\003)1558 337 y Fg(4.)21 b(I.e.,)15 b(a)h(handle)75
394 y(need)g(b)q(e)g(created)g(b)q(efore)g(comm)o(unication)g(o)q(ccurs;)g
(it)f(can)h(b)q(e)g(reused)g(only)g(after)f(the)g(previous)i(use)75
450 y(has)12 b(completed;)h(and)f(it)g(need)h(to)e(b)q(e)h(freed)g(ev)o(en)o
(tually)h(\(of)e(course,)h(one)g(can)g(assume)f(that)g(all)i(handles)75
507 y(are)i(freed)g(at)g(program)f(termination,)h(b)o(y)g(default\).)146
563 y(The)f(c)o(hoice)i(of)e(these)h(sub)q(op)q(erations)g(is)h(somewhat)d
(arbitrary)l(.)20 b(The)15 b(justi\014cation)g(is)g(that)f(com-)75
619 y(m)o(unication)k(ma)o(y)f(b)q(e)h(a)g(length)o(y)g(pro)q(cess)f(one)h
(desires)h(to)d(o)o(v)o(erlap)i(with)g(computation,)f(hence)i(the)75
676 y(separation)g(of)g(2)h(and)f(3;)i(also)e(comm)o(unication)i(setup)e(ma)o
(y)g(in)o(v)o(olv)o(e)h(a)f(signi\014can)o(t)i(o)o(v)o(erhead)e(one)75
732 y(desires)i(to)f(amortize)h(o)o(v)o(er)e(man)o(y)h(successiv)o(e)i(comm)o
(unications)f(with)g(the)g(same)f(c)o(haracteristics,)75 789
y(hence)c(the)g(separation)f(of)f(1)h(and)h(4)f(from)f(2)h(and)g(3.)75
932 y Fh(Issues)75 1035 y Fd(Whic)n(h)20 b(op)r(erations?)75
1121 y Fg(SEND)15 b(and)g(RECEIVE)g(for)g(p)q(oin)o(t)g(to)f(p)q(oin)o(t)i
(comm)o(unication.)k(Longer)15 b(list)h(for)e(collectiv)o(e)j(comm)o(u-)75
1177 y(nication)g(\(note:)k(SEND)16 b(and)g(RECEIVE)g(are)g(particular)g
(case)g(of)g(broadcast,)f(for)g(group)g(of)h(size)h(2;)75 1234
y(this)i(observ)m(ation)g(can)g(b)q(e)g(used)h(to)e(c)o(hec)o(k)h(if)g
(de\014nition)i(of)d(collectiv)o(e)i(comm)o(unication)g(seman)o(tics)75
1290 y(are)15 b(consisten)o(t)g(with)h(de\014nition)h(of)e(p)q(oin)o(t-to-p)q
(oin)o(t)h(comm)o(unication\).)146 1347 y(One)g(can)f(argue)g(for)f(a)h(SEND)
p 684 1347 14 2 v 17 w(RECV)g(\(or)f(EX)o(CHANGE\))h(op)q(eration.)146
1403 y(I)g(prop)q(ose)g(to)g(lea)o(v)o(e)g(out,)f(for)g(the)i(time)f(b)q
(eing,)h(things)f(lik)o(e)i(remote)d(pro)q(cedure)i(calls,)g(monitors,)75
1460 y(atomic)h(op)q(erations,)i(semaphores,)e(activ)o(e)h(messages,)g
(message)f(handlers,)i(etc.)27 b(This,)19 b(in)f(order)g(to)75
1516 y(fo)q(cus)f(initially)j(on)c(a)h(smaller)g(set)g(of)f(issues,)i(with)f
(less)g(dep)q(endencie)q(s)i(on)e(the)g(underlying)i(pro)q(cess)75
1572 y(mo)q(del.)146 1629 y(Opinions?)75 1750 y Fd(What)g(calls)h(are)e(made)
h(a)n(v)m(ailable)h(to)f(the)f(user?)75 1836 y Fg(Options:)75
1941 y Ff(\(1+2+3+4\))23 b Fg(blo)q(c)o(king)16 b(send/receiv)o(e)75
2035 y Ff(\(1+2\))i(\(3+4\))23 b Fg(non)o(blo)q(c)o(king)17
b(send/receiv)o(e,)f(follo)o(w)o(ed)f(b)o(y)h(w)o(ait)75 2128
y Ff(\(1\))i(\(2+3\))g(\(4\))24 b Fg(c)o(hannel)16 b(creation;)f(blo)q(c)o
(king)i(c)o(hannel)f(send/receiv)o(e;)g(c)o(hannel)h(cancelation)75
2222 y Ff(\(1\))h(\(2\))g(\(3\))h(\(4\))k Fg(c)o(hannel)17
b(creation;)e(non)o(blo)q(c)o(king)h(send/receiv)o(e;)g(w)o(ait;)f(c)o
(hannel)h(destruction)146 2327 y(An)o(y)f(more)g(needed?)22
b(An)o(y)15 b(less?)75 2448 y Fd(When)j(is)i(a)f(comm)n(unication)h(op)r
(eration)e(completed?)75 2534 y Fg(The)12 b(main)f(distinction)j(is)e(b)q(et)
o(w)o(een)f Fc(lo)n(c)n(al)g Fg(termination)g(and)h Fc(glob)n(al)f
Fg(termination.)19 b(A)11 b(send)h(terminates)75 2591 y(lo)q(cally)23
b(when)f(data)f(has)h(b)q(een)h(copied)g(out)e(of)g(the)h(sender)g(bu\013er)g
(\(formally)l(,)h(when)f(the)f(sender)75 2647 y(cannot)e(a\013ect)g(an)o
(ymore)g(the)h(outcome)g(of)f(the)h(send)g(op)q(eration\).)33
b(It)20 b(terminates)g(globally)g(when)75 2704 y(data)d(has)h(b)q(een)h
(receiv)o(ed)g(b)o(y)f(the)f(receiv)o(er)i(\(formally)l(,)f(when)h(receiv)o
(er)f(has)g(terminated)g(executing)964 2828 y(2)p eop
%%Page: 3 3
bop 75 45 a Fg(an)o(y)15 b(op)q(eration)h(that)f(logically)j(precedes)f(the)f
(execution)g(of)g(the)g(receiv)o(e\).)22 b(The)16 b(distinction)h(has)f(no)75
102 y(meaning)g(for)e(a)h(receiv)o(e)h({)f(since)i(lo)q(cal)f(termination)g
(of)e(a)h(receiv)o(e)h(implies)i(global)d(termination.)146
158 y(Choices:)131 252 y(1.)22 b(T)l(ermination)16 b(is)f(alw)o(a)o(ys)g(lo)q
(cal.)131 346 y(2.)22 b(T)l(ermination)e(is)g(either)g(lo)q(cal)h(or)e
(global,)i(at)e(user)g(c)o(hoice)i(\(e.g.,)e(user)g(can)h(c)o(ho)q(ose)g(b)q
(et)o(w)o(een)189 402 y(sync)o(hronous)15 b(and)g(async)o(hronous)g(comm)o
(unication\))131 496 y(3.)22 b(T)l(ermination)16 b(is)f(alw)o(a)o(ys)g
(global.)146 590 y(The)21 b(curren)o(t)f(MPI)h(prop)q(osal)g(c)o(ho)q(oses)g
(2.)37 b(If)21 b(w)o(e)g(stic)o(k)g(to)f(this)h(c)o(hoice)h(then)f(I)g
(suggest)g(that)75 646 y(termination)h(mo)q(de)g(\(global)g(or)f(lo)q(cal\))h
(is)g(part)f(of)g(the)h(op)q(eration)f(parameters)g(that)g(are)g(set)g(up)75
703 y(in)g(sub)q(op)q(eration)g(1.)34 b(F)l(urthermore,)21
b(I)f(w)o(ould)h(suggest)e(to)h(o\013er)f(the)h(same)g(option)h(for)e
(collectiv)o(e)75 759 y(comm)o(unications.)146 816 y(Another)13
b(issue)h(is)g(whether)g(termination)g(mo)q(de)f(need)h(b)q(e)h(consisten)o
(t)e(for)g(all)h(participan)o(ts.)20 b(Cur-)75 872 y(ren)o(t)c(MPI)g(prop)q
(osal)g(requires)h(that)e(a)g(sync)o(hronous)h(send)h(b)q(e)g(matc)o(hed)e(b)
o(y)h(a)g(sync)o(hronous)g(receiv)o(e)75 928 y(\(either)i(all)h(participan)o
(ts)f(use)g(lo)q(cal)h(completion)g(or)e(all)i(use)f(global)g(completion\).)
29 b(There)18 b(seem)g(to)75 985 y(b)q(e)d(no)g(comp)q(elling)i(logical)f
(reason)f(for)f(this)h(restriction,)g(and)g(I)g(am)g(not)f(sure)h(it)g(has)g
(signi\014can)o(t)g(im-)75 1041 y(plemen)o(tation)i(adv)m(an)o(tages.)k(The)
16 b(alternativ)o(e)g(is)g(to)f(allo)o(w)h(eac)o(h)g(participan)o(t)g(in)h(a)
e(comm)o(unication)75 1098 y(op)q(eration)h(to)g(c)o(ho)q(ose)g(either)h(lo)q
(cal)h(or)e(global)h(termination)f(\(this)h(b)q(ecomes)g(more)e(signi\014can)
o(t)j(for)d(a)75 1154 y(collectiv)o(e)i(op)q(eration,)e(where)g(the)h(c)o
(hoice)g(is)g(meaningful)g(at)f(more)f(than)i(one)f(pro)q(cess\).)146
1211 y(I)i(assume)h(lo)q(cal)g(termination)g(for)f(sub)q(op)q(eration)h(1)f
({)g(no)h(sync)o(hronization)g(with)g(another)f(pro-)75 1267
y(cessor)e(is)h(required)g(for)f(this)g(phase.)146 1324 y(Opinions?)146
1380 y(Should)h(w)o(e)f(c)o(ho)q(ose)g(1)g(or)g(3,)f(rather)h(than)g(2?)146
1437 y(Should)g(w)o(e)f(use)g(another)g(mec)o(hanism)g(to)g(c)o(ho)q(ose)g
(lo)q(cal)h(and)f(global)h(termination)f(\(e.g.,)f(a)g(global)75
1493 y(\015ag\)?)146 1549 y(Should)g(w)o(e)e(require)h(the)g(c)o(hoice)h(of)e
(\\sync)o(hronous")g(to)g(b)q(e)h(done)g(consisten)o(tly)h(b)q(e)f(all)h
(participan)o(ts)75 1606 y(in)j(a)f(comm)o(unication?)75 1728
y Fd(When)j(do)r(es)g(a)h(call)h(return?)75 1813 y Fg(The)14
b(ob)o(vious)f(c)o(hoice)i(is:)k(\\A)13 b(call)i(return)e(when)h(the)f
(corresp)q(onding)i(sub)q(op)q(eration\(s\))e(terminated".)75
1870 y(An)21 b(alternativ)o(e)f(is)h(to)f(allo)o(w)h(for)f(unsuccessful)i
(return)f(as)f(w)o(ell.)37 b(E.g.,)20 b(send)h(can)g(return)f(unsuc-)75
1926 y(cessfully)l(,)d(if)f(the)f(system)g(cannot)g(accept)g(the)h(message,)e
(for)h(whatev)o(er)g(reasons;)f(or)h(receiv)o(e)h(returns)75
1983 y(unsuccessfully)f(if)e(the)g(receiv)o(e)h(cannot)e(execute)i(within)g
(a)e(set)h(time;)g(and)g(so)g(on.)19 b(This)13 b(is)g(the)g(curren)o(t)75
2039 y(MPI)i(de\014nition.)146 2096 y(My)j(p)q(ersonal)i(c)o(hoice)g(is)g
(against)e(unsuccessful)j(return.)32 b(This)20 b(is)f(more)g(adequate)g(for)f
(system)75 2152 y(programming,)f(rather)h(than)f(application)j(programming;)e
(it)g(in)o(tro)q(duces)h(seman)o(tic)f(dep)q(endencies)75 2209
y(on)h(implemen)o(tation;)i(it)e(forces)f(the)h(user)f(to)g(c)o(hec)o(k)h
(for)f(success)i(at)e(eac)o(h)g(op)q(eration,)i(rather)e(then)75
2265 y(deal)j(with)g(failure)g(of)f(comm)o(unication)h(using)g(an)f
(exception)i(handling)g(mec)o(hanism.)36 b(Of)20 b(course,)75
2322 y(implemen)o(ters)f(are)f(w)o(elcome)g(to)f(pro)o(vide)i(a)e(reasonable)
i(exception)f(handling)i(mec)o(hanism)f(for)e(the)75 2378 y(MPI)e(library)h
({)f(I)h(suggest)e(to)h(lea)o(v)o(e)g(op)q(en)h(the)f(de\014nition)i(of)e
(suc)o(h)h(mec)o(hanism.)146 2434 y(Opinions?)75 2556 y Fd(Correctness)i
(criteria)75 2642 y Fg(I)e(use)f(the)g(follo)o(wing)h(terminology:)964
2828 y(3)p eop
%%Page: 4 4
bop 75 45 a Ff(safe)17 b(program)22 b Fg(A)c(program)f(that)h(should)h
(execute)f(successfully)i(in)f(an)o(y)f(implemen)o(tation,)i(inde-)189
102 y(p)q(enden)o(tly)c(of)f(the)h(amoun)o(t)e(of)h(a)o(v)m(ailable)i(system)
d(resources.)75 195 y Ff(unsafe)j(program)23 b Fg(A)d(program)f(that)g(will)j
(succeed)f(or)f(fail,)i(dep)q(ending)g(on)e(implemen)o(tation)h(or)189
252 y(a)o(v)m(ailable)c(system)d(resources.)75 346 y Ff(erroneous)i(program)
22 b Fg(A)16 b(program)e(that)g(will)j(alw)o(a)o(ys)e(fail.)146
452 y(Examples)g(\(in)o(v)o(olving)h(t)o(w)o(o)e(pro)q(cessors)h(with)h(ids)g
(1)f(and)g(2,)f(and)i(using)g(MPI)f(lik)o(e)h(syn)o(tax\))146
508 y(The)f(follo)o(wing)h(program)e(is)i(safe,)e(and)i(should)g(alw)o(a)o
(ys)e(succeed.)75 659 y Fb(IF)24 b(\(GETID\(\))e(==)i(1\))g(THEN)147
715 y(CALL)f(CSEND\(mode=blocking,)e(buf=sendbuf,)h(dest=2,)h(type=0,)g
(len=1000\))147 772 y(CALL)g(CRECV\(mode=blocking,)e(buf=recdbuf,)h
(source=2,)h(type=0,)g(len=1000\))75 884 y(ELSE)g(!)h(\(GETID\(\))f(==)g(2\))
147 941 y(CALL)g(CRECV\(mode=blocking,)e(buf=recbuf,)h(source=1,)h(type=0,)g
(len=1000\))147 997 y(CALL)g(CSEND\(mode=blocking,)e(buf=sendbuf,)h(dest=1,)h
(type=0,)g(len=1000\))146 1148 y Fg(The)15 b(follo)o(wing)h(program)e(is)i
(erroneous,)e(and)i(should)g(alw)o(a)o(ys)e(fail.)75 1310 y
Fb(IF)24 b(\(GETID\(\))e(==)i(1\))g(THEN)147 1367 y(CALL)f
(CSEND\(mode=synchronous,)e(buf=sendbuf,)h(dest=2,)h(type=0,)g(len=1000\))147
1423 y(CALL)g(CRECV\(mode=synchronous,)e(buf=recdbuf,)h(source=2,)g(type=0,)h
(len=1000\))75 1536 y(ELSE)47 b(!)24 b(\(GETID\(\))f(==)g(2\))147
1593 y(CALL)g(CSEND\(mode=synchronous,)e(buf=sendbuf,)h(dest=1,)h(type=0,)g
(len=1000\))147 1649 y(CALL)g(CRECV\(mode=synchronous,)e(buf=recbuf,)h
(source=1,)h(type=0,)g(len=1000\))146 1755 y Fg(The)12 b(follo)o(wing)h
(program)d(is)j(unsafe,)f(and)h(ma)o(y)e(succeed)i(or)f(fail,)h(dep)q(ending)
h(on)e(implemen)o(tation.)75 1918 y Fb(IF)24 b(\(GETID\(\))e(==)i(1\))g(THEN)
147 1975 y(CALL)f(CSEND\(mode=blocking,)e(buf=sendbuf,)h(dest=2,)h(type=0,)g
(len=1000000\))147 2031 y(CALL)g(CRECV\(mode=blocking,)e(buf=recdbuf,)h
(source=2,)h(type=0,)g(len=1000000\))75 2144 y(ELSE)g(!)h(\(GETID\(\))f(==)g
(2\))147 2200 y(CALL)g(CSEND\(mode=blocking,)e(buf=sendbuf,)h(dest=1,)h
(type=0,)g(len=1000000\))147 2257 y(CALL)g(CRECV\(mode=blocking,)e
(buf=recbuf,)h(source=1,)h(type=0,)g(len=1000000\))146 2363
y Fg(This)14 b(program)f(can)h(succeed)h(only)g(if)f(the)g(system)g(has)g
(su\016cien)o(t)g(bu\013er)g(space)g(to)g(bu\013er)g(1)f(MgB)75
2420 y(of)i(data.)146 2476 y(The)j(strict)g(de\014nition)i(of)e(\\safe")f
(needs)i(to)f(b)q(e)g(somewhat)g(temp)q(ered)h(in)g(practice.)29
b(A)18 b(correct)75 2532 y(sequen)o(tial)13 b(program)d(ma)o(y)h(fail)i(b)q
(ecause)f(of)g(time)g(limits)h(or)e(other)g(resource)h(restrictions.)19
b(Lik)o(ewise,)13 b(a)75 2589 y(safe)h(parallel)i(program)d(ma)o(y)l(,)g
(exceptionally)l(,)k(exceed)e(system)f(resources.)19 b(Still,)d(common)e
(sense)h(can)75 2645 y(di\013eren)o(tiate)i(b)q(et)o(w)o(een)g(resources)f
(that)g(are)h(\\practically)g(un)o(b)q(ounded",)h(i.e.)25 b(with)17
b(limits)g(that)f(are)75 2702 y(unlik)o(ely)k(to)d(b)q(e)h(normally)g(encoun)
o(tered)g(b)o(y)g(correct)f(programs,)g(and)g(resources)h(that)f
(\\practically)964 2828 y(4)p eop
%%Page: 5 5
bop 75 45 a Fg(b)q(ounded",)23 b(i.e.)37 b(with)21 b(limits)h(one)f(encoun)o
(ters)g(frequen)o(tly)g(with)g(correct)g(programs,)f(and)h(whic)o(h)75
102 y(often)13 b(impinges)i(on)f(program)e(p)q(ortabilit)o(y)l(.)20
b(A)14 b(formal)f(de\014nition)i(will)h(assume)d(that)g(some)g(resources)75
158 y(are)19 b(unlimited,)k(and)c(implemen)o(tations)i(will)g(striv)o(e)f(to)
f(pro)o(vide)h(a)f(reasonable)h(appro)o(ximation)f(of)75 214
y(this)f(assumption.)26 b(F)l(urthermore,)17 b(the)g(user)h(should)g(b)q(e)g
(able)g(to)f(query)g(and)g(p)q(ossibly)i(con)o(trol)e(an)o(y)75
271 y(implemen)o(tation)f(sp)q(eci\014c)i(resource)d(limitation)h(that)f
(a\013ects)f(program)g(b)q(eha)o(vior.)146 327 y(One)k(need)g(to)f(allo)o(w)h
(\(indeed,)h(one)f(cannot)f(disallo)o(w\))h(v)o(endors)g(to)e(supp)q(ort)i
(some)f(unsafe)h(pro-)75 384 y(grams)c(as)h(w)o(ell.)21 b(The)15
b(requiremen)o(ts)h(there)f(should)h(b)q(e)g(that)143 478 y
Fa(\017)23 b Fg(The)15 b(seman)o(tics)g(of)g(successful)i(program)d
(execution)i(b)q(e)g(w)o(ell-de\014ned)143 571 y Fa(\017)23
b Fg(The)16 b(system)f(pro)o(vide)i(clear)f(information)h(and)f(p)q(ossibly)h
(con)o(trol)f(on)g(those)g(parameters)f(that)189 628 y(determine)h(the)f(b)q
(eha)o(vior)h(of)f(unsafe)g(programs)f(\(e.g.,)g(bu\013er)h(sizes\).)146
722 y(A)g(handle)j(is)e Fc(active)g Fg(\(at)f(a)g(pro)q(cess\))h(from)f(the)h
(start)f(of)g(sub)q(op)q(eration)i(1)e(to)g(the)h(completion)h(of)75
778 y(sub)q(op)q(eration)f(4)g(for)f(this)h(handle.)22 b(A)15
b(comm)o(unication)i(is)f Fc(active)f Fg(\(at)g(a)g(pro)q(cess\))h(from)e
(the)i(start)e(of)75 835 y(sub)q(op)q(eration)i(2)f(to)g(the)g(completion)h
(of)f(sub)q(op)q(eration)h(3.)k(I)15 b(suggest)g(the)g(follo)o(wing)h(design)
g(p)q(oin)o(t:)131 941 y(1.)22 b(The)13 b(n)o(um)o(b)q(er)g(of)g(activ)o(e)g
(comm)o(unication)g(handles)i(p)q(er)e(pro)q(cess)g(is)h(\\practically)g(un)o
(b)q(ounded".)131 1035 y(2.)22 b(The)d(n)o(um)o(b)q(er)g(of)f(initiated)j
(comm)o(unications)e(p)q(er)h(pro)q(cessor)f(is)g(\\practically)h(un)o(b)q
(ounded".)189 1091 y(\(Note)12 b(that)h(there)g(ma)o(y)g(b)q(e)g(only)h(one)g
(activ)o(e)f(comm)o(unication)h(op)q(eration)f(p)q(er)h(activ)o(e)f
(handle\).)131 1185 y(3.)22 b(The)16 b(amoun)o(t)g(of)g(a)o(v)m(ailable)i
(system)d(bu\013er)i(space)f(is)h(limited)h({)e(a)g(safe)g(program)f(cannot)h
(rely)189 1241 y(on)f(it.)146 1348 y(This)g(design)h(p)q(oin)o(t)g(has)f(the)
h(follo)o(wing)f(implications:)131 1454 y(1.)22 b(A)11 b(t)o(yp)q(e)g(1)f(or)
h(t)o(yp)q(e)g(2)g(sub)q(op)q(eration)g(will)i(alw)o(a)o(ys)d(complete,)i
(indep)q(enden)o(tl)q(y)h(of)e(other)g(pro)q(cesses)189 1510
y(activities.)21 b(Of)15 b(course,)g(the)g(same)g(is)h(true)f(for)g(a)f(t)o
(yp)q(e)i(4)f(sub)q(op)q(eration.)131 1604 y(2.)22 b(The)15
b(successful)h(completion)h(of)d(a)h(t)o(yp)q(e)g(3)g(sub)q(op)q(eration)h
(ma)o(y)e(dep)q(end)j(on)e(the)g(participation)189 1661 y(of)h(other)g(pro)q
(cesses.)24 b(A)17 b(send)g(ma)o(y)f(b)q(e)h(blo)q(c)o(k)o(ed)g(un)o(til)h(a)
e(matc)o(hing)h(receiv)o(e)g(o)q(ccurs.)24 b(And,)17 b(of)189
1717 y(course,)h(a)g(receiv)o(e)h(ma)o(y)e(not)h(complete)g(un)o(til)i(a)d
(matc)o(hing)h(send)h(o)q(ccurs.)29 b(\(This)18 b(extends)h(to)189
1774 y(collectiv)o(e)e(comm)o(unication.\))146 1880 y(T)l(o)e(this,)h(w)o(e)f
(need)i(add)f(p)q(ositiv)o(e)g(requiremen)o(ts)g(for)f(progress)g(and/or)h
(fairness.)21 b(Let's)16 b(sa)o(y)f(that)75 1936 y(a)k(comm)o(unication)h(is)
f Fc(enable)n(d)f Fg(\(at)h(a)f(pro)q(cess\))h(if)h(a)f(matc)o(hing)g(comm)o
(unication)h(is)f(activ)o(e)h(\(i.e.)31 b(a)75 1993 y(matc)o(hing)16
b(receiv)o(e)h(for)e(a)h(send)g(or)f(a)h(matc)o(hing)g(send)g(for)g(a)f
(receiv)o(e\).)23 b(An)16 b(enabled)h(comm)o(unication)75 2049
y(ma)o(y)g(b)q(ecome)i(disabled)h(either)e(b)q(ecause)h(it)g(completes)f
(successfully)i(\(the)e(comm)o(unication)h(o)q(ccurs)75 2106
y(and)d(sub)q(op)q(eration)h(3)e(terminates\))g(or)h(b)q(ecause)g(the)g(matc)
o(hing)g(comm)o(unication)h(b)q(ecomes)f(inactiv)o(e)75 2162
y(\(e.g.,)e(a)h(receiv)o(e)h(that)e(matc)o(hes)h(one)h(send)g(ma)o(y)e(b)q(e)
i(satis\014ed)g(b)o(y)f(another)g(send,)h(th)o(us)f(disabling)i(the)75
2219 y(\014rst)e(send\).)75 2325 y Ff(progress)21 b Fg(If)14
b(some)f(comm)o(unication)h(in)g(the)f(system)g(is)h(enabled)h(then)e(some)g
(comm)o(unication)h(ev)o(en-)189 2381 y(tually)i(o)q(ccurs)f(in)h(the)g
(system.)75 2475 y Ff(fairness)22 b Fg(An)c(activ)o(e)f(comm)o(unication)h
(either)g(completes)g(successfully)h(or)d(b)q(ecomes)i(p)q(ermanen)o(tly)189
2532 y(disabled.)964 2828 y(5)p eop
%%Page: 6 6
bop 146 45 a Fg(W)l(e)19 b(assume)g(in)h(these)f(de\014nitions)i(that)d(eac)o
(h)h(pro)q(cess)g(in)o(v)o(ok)o(e)g(sub)q(op)q(erations)h(in)g(the)f(correct)
75 102 y(order,)c(i.e.)23 b(1\(23\))393 85 y Fe(\003)411 102
y Fg(4.)f(Of)16 b(course,)f(a)h(program)f(where)h(an)g(activ)o(e)g(comm)o
(unication)g(b)q(ecomes)h(p)q(erma-)75 158 y(nen)o(tly)f(disabled)h(\(e.g.,)c
(a)i(send)h(is)f(left)h(forev)o(er)e(with)i(no)f(matc)o(hing)g(receiv)o(e\))h
(is)f(erroneous,)g(and)g(will)75 214 y(not)g(terminate)g(successfully)l(.)146
271 y(The)20 b(enforcemen)o(t)g(of)g(these)g(t)o(w)o(o)f(conditions)i
(requires)g(a)f(\015o)o(w)g(con)o(trol)g(proto)q(col:)29 b(A)21
b(pro)q(cess)75 327 y(should)c(not)f(b)q(e)h(prev)o(en)o(ted)g(from)e
(accepting)j(one)e(message)g(that)g(w)o(as)f(sen)o(t)h(b)q(ecause)i(its)e
(bu\013ers)g(are)75 384 y(full)21 b(with)f(other)g(messages,)g(p)q(ossibly)h
(sen)o(t)f(earlier.)34 b(When)21 b(a)e(receiv)o(e)i(matc)o(hes)e(sev)o(eral)h
(p)q(ossible)75 440 y(messages)d(\(e.g.,)f(a)h(receiv)o(e)h(with)g(a)f
(\\don't)f(care")h(sender)h(\014eld\))g(then)g(alternativ)o(e)g(options)f
(should)75 497 y(b)q(e)f(considered)g(fairly)g(\(e.g.,)e(b)o(y)h(using)h(an)f
(LR)o(U)h(p)q(olicy)h(when)e(considering)i(matc)o(hing)e(senders\).)146
553 y(A\014cionados)d(of)f(formalism)h(will)i(note)d(that)g(I)h(used)g(the)g
(w)o(eak)o(est)f(de\014nition)j(of)d(fairness)h(\(ev)o(en)o(tual)75
610 y(fairness\),)j(rather)f(than)h(b)q(ounded)i(fairness)f(or)e(other)h
(alternativ)o(es.)146 666 y(Examples:)146 723 y(The)g(follo)o(wing)h
(programs)e(are)h(safe,)f(and)i(should)g(succeed:)75 823 y
Fb(!)24 b(assume)f(only)g(two)h(processes,)e(numbered)h(1)h(and)f(2)75
936 y(IF)h(\(GETID\(\))e(==)i(1\))g(THEN)147 992 y(DO)f(I=0,)g(N)218
1048 y(CALL)g(CSEND\(mode=nonblocking,)e(buf=buf\(I\),)i(dest=2,)f(type=I,)h
(len=1000\))147 1105 y(END)g(DO)75 1218 y(ELSE)g(!)h(\(GETID\(\))f(==)g(2\))
147 1274 y(DO)g(I=0,)g(N)218 1331 y(CALL)g(CRECV\(mode=nonblocking,)e
(buf=buf\(I\),)i(dest=2,)f(type=N-I,)h(len=1000\))147 1387
y(END)g(DO)146 1487 y Fg(Pro)q(cess)16 b(1)g(uses)h(non)o(blo)q(c)o(king)h
(sends)f(to)f(send)h(a)f(sequence)i(of)e(messages)g(to)f(pro)q(cess)i(2;)g
(pro)q(cess)75 1544 y(2)d(receiv)o(es)h(these)f(messages)f(in)i(the)f(rev)o
(erse)g(order,)g(using)h(non)o(blo)q(c)o(king)g(receiv)o(es.)20
b(In)15 b(practice,)g(suc)o(h)75 1600 y(program)e(ma)o(y)g(fail)h(if)g(the)g
(n)o(um)o(b)q(er)g(of)g(p)q(ending)h(messages)f(implied)i(b)o(y)d(this)i
(program)d(is)i(larger)g(than)75 1657 y(the)20 b(system)g(limit.)36
b(But)21 b(the)f(system)g(limit)h(should)h(b)q(e)e(large)h(enough)f(as)g(to)g
(mak)o(e)f(suc)o(h)i(failure)75 1713 y(extremely)16 b(unlik)o(ely)l(.)75
1813 y Fb(!)24 b(Assume)f(a)g(large)h(number)f(of)g(processes)75
1926 y(!)h(Consumer)e(code)75 1983 y(IF)i(\(GETID\(\))e(==)i(1\))g(THEN)123
2039 y(DO)f(I=)h(1,)f(INFOG\(\))194 2095 y(CALL)h(CRECV\(mode=blocking,)d
(buf=buf\(I\),)h(source=I,)h(type=0,)g(len=1000\))123 2152
y(END)g(DO)75 2265 y(!)h(Producers)75 2321 y(ELSE)123 2378
y(CALL)f(CSEND\(mode=blocking,)e(buf=sendbuf,)h(dest=1,)h(type=0,)g
(len=1000\))146 2478 y Fg(All)17 b(pro)q(cesses)f(send)g(a)f(message)h(to)f
(pro)q(cess)h(1.)21 b(Pro)q(cess)15 b(1)h(receiv)o(es)g(these)g(messages)f
(in)i(a)e(\014xed)75 2534 y(order.)31 b(A)20 b(\015o)o(w)e(con)o(trol)h
(proto)q(col)g(is)h(needed)g(to)f(mak)o(e)f(sure)h(that)g(bu\013ers)g(at)f
(pro)q(cess)i(1)f(will)h(not)75 2591 y(o)o(v)o(er\015o)o(w.)e(The)c(sending)h
(pro)q(cesses)f(ma)o(y)g(b)q(e)g(dela)o(y)o(ed)h(un)o(til)g(the)f(receiv)o(e)
g(pro)q(cess)g(is)h(ready)f(to)f(accept)75 2647 y(their)j(message.)146
2704 y(Consider)f(the)h(follo)o(wing)g(implemen)o(tation)g(alternativ)o(es)f
(for)g(this)h(co)q(de:)964 2828 y(6)p eop
%%Page: 7 7
bop 143 45 a Fa(\017)23 b Fg(Messages)18 b(are)h(sen)o(t)g(immediately)i(and)
e(stored)g(in)h(the)f(ph)o(ysical)i(memory)d(of)h(the)g(receiving)189
102 y(no)q(de)g({)g(no)g(pro)o(vision)g(for)g(retry)l(.)31
b(This)19 b(is)h(a)e(bad)i(implemen)o(tation)g(since)g(ph)o(ysical)g(storage)
189 158 y(limits)c(are)f(lik)o(ely)i(to)e(b)q(e)g(encoun)o(tered.)143
252 y Fa(\017)23 b Fg(Messages)c(are)g(sen)o(t)h(immediately)h(and)f(stored)f
(in)i(the)f(receiv)o(er)g(ph)o(ysical)i(memory)l(.)33 b(If)20
b(the)189 308 y(receiv)o(er)e(is)g(unable)h(to)f(receiv)o(e)g(the)g(message,)
g(the)f(send)i(is)f(retried.)28 b(This)19 b(is)f(a)f(correct,)h(but)189
365 y(p)q(ossibly)e(ine\016cien)o(t)h(implemen)o(tation.)143
459 y Fa(\017)23 b Fg(A)16 b(\\request-to-send")h(proto)q(col)g(is)g(used;)h
(the)f(receiv)o(er)g(allo)o(ws)g(the)g(send)g(to)g(pro)q(ceed)g(only)g(if)189
515 y(it)g(has)g(storage)f(for)h(the)g(message.)26 b(The)18
b(receiv)o(ers)g(need)g(to)e(store)h(information)g(on)h(p)q(ending,)189
571 y(unsatis\014ed)13 b(requests)g(to)f(send.)19 b(The)13
b(maxim)o(um)f(n)o(um)o(b)q(er)h(of)f(p)q(ending)j(requests)d(at)g(a)g(no)q
(de)h(is)g(a)189 628 y(system)f(limit)i(that)e(should)i(b)q(e)f(set)f(large)h
(enough)g(as)f(to)g(b)q(e)i(considered)g(\\practically)g(in\014nite".)146
722 y(Opinions?)146 778 y(Should)k(w)o(e)e(b)q(e)h(ev)o(en)h(more)e
(restrictiv)o(e)h(and)g(require)g(that)g(safe)f(programs)f(run)i(correctly)l
(,)h(ev)o(en)75 835 y(when)c(exceeding)h(\\v)o(ery)d(large")h(resource)h
(limits?)21 b(\(Or)13 b(should)i(w)o(e)e(a)o(v)o(oid)g(to)f(burden)j(the)e
(implemen-)75 891 y(tation)i(with)g(requiremen)o(ts)h(to)f(handle)h(what)f
(most)f(lik)o(ely)j(are)e(pathologic)h(programs?\))146 948
y(Should)h(w)o(e)f(try)g(to)g(b)q(e)h(more)f(formal)g(in)h(de\014ning)h(when)
f(some)f(of)g(the)h(\\unsafe")f(programs)f(will)75 1004 y(run)h(to)g
(completions?)24 b(\(Can)16 b(w)o(e)g(do)g(it)g(without)g(b)q(eing)i(more)d
(sp)q(eci\014c)j(ab)q(out)e(the)h(implemen)o(tation)75 1060
y(mo)q(del?\))146 1117 y(Should)f(w)o(e)f(require)h(fairness?)21
b(Should)c(w)o(e)d(ha)o(v)o(e)h(a)g(stronger)f(requiremen)o(t)i(of)f
(fairness?)75 1260 y Fh(What)23 b(are)g(the)g(comm)n(unication)d(parameters?)
75 1363 y Fd(Message)e(data)i(\(bu\013er\))131 1449 y Fg(1.)i(scalar)15
b(\(b)o(yte/halfw)o(ord/w)o(ord/doublew)o(ord\),)e(presumably)j(coming)f
(from)g(a)g(register)131 1543 y(2.)22 b(Con)o(tiguous)15 b(space)g(in)h
(memory)f(\(initial)i(address/length\))131 1637 y(3.)22 b(Bu\013er)15
b(with)g(constan)o(t)g(stride)g(\(initial)i(address/size)f(of)f(eac)o(h)g
(blo)q(c)o(k/stride/n)o(um)o(b)q(er)i(blo)q(c)o(ks\))131 1731
y(4.)22 b(A)15 b(t)o(yp)q(ed)g(message)g(\(of)g(a)f(t)o(yp)q(e)i(supp)q
(orted)g(in)g(the)f(domain)g(language\).)131 1824 y(5.)22 b(A)d(union)i(of)d
(sev)o(eral)i(messages)f(\(p)q(ossibly)i(sp)q(eci\014ed)g(b)o(y)e(an)h(arra)o
(y)e(of)h(p)q(oin)o(ters)h(to)e(message)189 1881 y(descriptors\).)g(The)13
b(seman)o(tics)f(of)f(a)h(union)h(is)f(probably)h(conjunctiv)o(e)f(at)g(the)g
(sender)g(end)h(\(send)189 1937 y(all\);)g(at)f(the)h(receiv)o(e)g(end,)h(it)
f(ma)o(y)e(b)q(e)j(conjunctiv)o(e)f(\(receiv)o(e)g(all\))h(or)e(disjunctiv)o
(e)i(\(receiv)o(e)f(an)o(y\).)146 2044 y(The)j(curren)o(t)g(MPI)f(prop)q
(osal)i(has)e(2)h(and)g(3)g(\(2)f(is)h(really)h(a)f(particular)g(case)g(of)g
(3\).)21 b(Do)15 b(w)o(e)h(w)o(an)o(t)75 2100 y(more?)k(In)c(particular,)g
(do)f(w)o(e)g(w)o(an)o(t)f(t)o(yp)q(ed)h(messages?)20 b(Ho)o(w)15
b(general?)75 2222 y Fd(Groups)k(and)g(con)n(text)75 2307 y
Fg(Messages)c(are)g(tagged)g(b)o(y)g(pro)q(cess)h(names)f(\(sender)h(and)f
(receiv)o(er\))h(and)g(t)o(yp)q(e)f(names.)21 b(Both)15 b(names)75
2364 y(spaces)g(can)f(b)q(e)i(\015at)e(or)g(structured.)20
b(If)14 b(a)h(\015at)f(pro)q(cess)h(name)f(space)h(is)g(used,)g(then)g(a)f
(pro)q(cess)h(names)75 2420 y(is)e(an)f(in)o(teger)g(\(from)f(0)h(to)f(n)o
(um)o(b)q(er)p 687 2420 14 2 v 17 w(of)p 741 2420 V 16 w(pro)q(cesses-1,)i
(for)e(C)h(think)o(ers\).)19 b(If)13 b(a)e(structured)i(pro)q(cess)f(name)75
2477 y(space)18 b(is)g(used)f(then)h(a)f(pro)q(cess)h(name)f(is)h(a)f(pair)h
(of)f(the)g(form)g(\(group,)g(rank\).)26 b(Similarly)19 b(in)f(a)f(\015at)75
2533 y(t)o(yp)q(e)g(name)h(space,)g(a)f(t)o(yp)q(e)g(is)h(a)f(n)o(um)o(b)q
(er)h(in)g(a)f(range;)h(in)g(a)f(structured)g(t)o(yp)q(e)h(name)f(space,)h
(it)f(is)h(a)75 2590 y(pair)e(of)e(the)i(form)e(\(group,)g(lo)q(cal)p
659 2590 V 18 w(t)o(yp)q(e\).)146 2646 y(The)21 b(usefulness)h(of)f(groups)f
(seem)h(clear)h(in)f(the)g(con)o(text)g(of)f(collectiv)o(e)j(op)q(erations,)f
(where)f(a)75 2703 y(groupid)c(is)g(a)f(handle)h(to)f(sp)q(ecify)h(the)g(set)
f(of)f(participan)o(ts)i(in)g(a)f(collectiv)o(e)i(comm)o(unication)f(\(Note:)
964 2828 y(7)p eop
%%Page: 8 8
bop 75 45 a Fg(some)15 b(of)h(the)f(discussions)j(on)d(groups)g(seem)h(to)f
(assume)h(that)f(a)g(group)g(is)i(alw)o(a)o(ys)e(represen)o(ted)h(b)o(y)f(a)
75 102 y(mem)o(b)q(ership)f(list)g(that)f(is)h(presen)o(t)f(at)f(eac)o(h)i
(group)f(mem)o(b)q(er.)19 b(While)14 b(is)g(the)f(represen)o(tation)h(lik)o
(ely)h(to)75 158 y(b)q(e)g(used)h(on)e(small)i(systems,)e(it)h(is)g(b)o(y)g
(no)g(means)f(the)h(unique)h(p)q(ossible)h(one.)j(An)o(y)15
b(connected)g(graph)75 214 y(structure)h(can)h(b)q(e)g(used)g(to)f(k)o(eep)h
(trac)o(k)f(of)g(group)g(mem)o(b)q(ership,)i(with)f(ob)o(vious)f(tradeo\013s)
g(b)q(et)o(w)o(een)75 271 y(storage)h(and)h(p)q(erformance.)28
b(A)18 b(complete)g(list)h(at)e(eac)o(h)h(no)q(de)h(is)f(one)g(extreme)g(of)g
(this,)g(namely)l(,)h(a)75 327 y(complete)g(graph.)28 b(Therefore,)19
b(a)e(group)h(handle)i(is)e(a)g(more)g(abstract)f(and)h(more)g(general)g
(concept)75 384 y(than)d(a)g(list)h(of)f(group)g(mem)o(b)q(ers.\))146
440 y(The)h(collectiv)o(e)j(comm)o(unication)e(sub)q(committee)g(has)g(to)f
(deal)h(with)g(mec)o(hanisms)g(for)f(creating)75 497 y(and)j(destro)o(ying)f
(groups)g(\(for)g(the)g(record,)h(I)g(fa)o(v)o(or)e(dynamic)i(group)g
(creation)f(b)q(oth)h(b)o(y)f(explicitly)75 553 y(listing)j(group)f(mem)o(b)q
(ers)f(and)h(b)o(y)g(partitioning)h(an)e(existing)i(group.)33
b(I)20 b(do)g(not)f(fa)o(v)o(or)g(a)g(complex)75 610 y(stac)o(k)e(or)h(tree)g
(mec)o(hanism)h(to)e(manage)h(groups)f(and)i(na)o(vigate)e(from)h(one)g
(group)g(to)f(another)h({)g(at)75 666 y(least)d(not)g(in)h(the)f(basic)h(MPI)
f(prop)q(osal\).)146 723 y(In)i(the)f(con)o(text)g(of)g(p)q(oin)o(t-to-p)q
(oin)o(t)h(comm)o(unication,)g(the)f(issue)h(is)g(whether)g(w)o(e)f(w)o(an)o
(t)f(to)h(use)g(a)75 779 y(structured)f(name)g(space)h(for)e(t)o(yp)q(e)i
(and)f(pro)q(cess)h(argumen)o(ts)e(and,)h(if)h(so,)e(ho)o(w.)146
835 y(The)21 b(adv)m(an)o(tage)h(of)f(ha)o(ving)h(a)f(structured)h(name)g
(space)f(for)h(pro)q(cesses)g(is)g(that)f(it)h(simpli\014es)75
892 y(com)o(bining)14 b(of)e(distinct)i(parallel)g(co)q(des)f(in)h(a)e(lo)q
(osely)i(coupled)g(application:)20 b(Eac)o(h)13 b(functional)h(subset)75
948 y(can)j(use)h(message)f(passing)h(within)g(its)g(con)o(text,)f(with)g(no)
h(c)o(hanges)f(in)h(the)f(lo)q(cal)i(co)q(de.)27 b(The)17 b(same)75
1005 y(concern)k(for)f(mo)q(dularit)o(y)h(militates)h(for)e(a)g(structured)g
(t)o(yp)q(e)h(space.)36 b(This)21 b(do)q(es)g(not)g(necessarily)75
1061 y(implies)j(or)d(requires)h(a)f(stac)o(k)g(mec)o(hanism)h(for)f
(managing)g(groups,)i(or)e(a)g(tree)g(structure)h(among)75
1118 y(groups.)146 1174 y(First,)14 b(t)o(w)o(o)g(remarks:)143
1268 y Fa(\017)23 b Fg(The)c(preexisting)h(group)f Fb(ALL)f
Fg(that)g(includes)j(all)f(pro)q(cesses)g(pro)o(vides)f(a)g(global)g(con)o
(text.)31 b(If)189 1324 y(all)17 b(comm)o(unications)f(use)h(this)f(con)o
(text,)f(then)i(one)f(defaults)g(to)g(\015at)f(name)h(space.)23
b(With)16 b(the)189 1381 y(righ)o(t)g(syn)o(tax,)h(the)g(existence)h(of)f(a)g
(structured)g(name)g(space)g(can)g(b)q(e)h(ignored)g(b)o(y)f(users)g(that)189
1437 y(prefer)e(a)g(\015at,)f(global)i(name)f(space.)143 1531
y Fa(\017)23 b Fg(A)c(structured)f(name)h(space)g(can)g(alw)o(a)o(ys)g(fak)o
(ed,)g(with)g(no)g(c)o(hanges)g(in)g(the)g(comm)o(unication)189
1588 y(op)q(erations:)g(Replace)d(eac)o(h)e Fb(process)p 868
1588 15 2 v 16 w(id)g Fg(actual)h(parameter)e(b)o(y)h(a)g(a)g(reference)h(to)
e(a)h(function)189 1644 y Fb(process\(rank,)22 b(group)p 646
1644 V 16 w(id\))p Fg(;)c(replace)h(eac)o(h)e Fb(type)h Fg(actual)f
(parameter)g(b)o(y)h(a)f(reference)h(to)f(a)189 1701 y(function)f
Fb(type\(local)p 610 1701 V 15 w(type,)24 b(group)p 889 1701
V 16 w(id\))p Fg(.)146 1794 y(F)l(or)16 b(simplicit)o(y)l(,)j(I)e(shall)h
(assume)f(the)f(same)h(group)f(con)o(text)h(is)g(used)g(b)q(oth)g(for)f
(relativ)o(e)i(pro)q(cess)75 1851 y(n)o(um)o(b)q(ering)h(and)g(for)f(relativ)
o(e)h(t)o(yp)q(e)g(naming.)30 b(I)19 b(b)q(eliev)o(e)h(this)f(simpli\014es)i
(the)d(discussion,)j(without)75 1907 y(in)o(tro)q(ducing)13
b(undue)g(restrictions.)20 b(A)12 b(con)o(text)f(for)g(a)h(comm)o(unication)g
(op)q(eration)h(can)f(b)q(e)g(established)75 1964 y(in)k(t)o(w)o(o)e(w)o(a)o
(ys:)131 2070 y(1.)22 b(The)f(curren)o(t)h(scop)q(e)g(\(curren)o(t)f(group\))
g(of)g(a)g(comm)o(unication)h(op)q(eration)g(is)g(implicit;)27
b(it)21 b(is)189 2126 y(established)16 b(b)o(y)g(the)f(last)g(executed)h(con)
o(text)f(con)o(trolling)h(call)g(\()p Fb(MPI)p 1401 2126 V
17 w(PUSHC)e Fg(and)i Fb(MPI)p 1713 2126 V 16 w(POPC)f Fg(in)189
2183 y(the)e(curren)o(t)h(draft\).)k(Th)o(us,)c(an)o(y)f(pro)q(cess)h(n)o(um)
o(b)q(er)h(is)f(understo)q(o)q(d)g(to)f(b)q(e)i(relativ)o(e)f(rank)f(in)i
(the)189 2239 y(curren)o(t)g(group,)f(and)h(an)o(y)g(t)o(yp)q(e)g(name)g(is)h
(understo)q(o)q(d)f(to)g(b)q(e)g(relativ)o(e)h(to)e(curren)o(t)h(group,)g
(and)189 2296 y(do)q(es)j(not)f(con\015icts)i(with)f(t)o(yp)q(e)h(names)e
(used)i(within)g(other)f(groups.)27 b(Of)18 b(course,)h(the)f(initial)189
2352 y(scop)q(e)d(is)g Fb(ALL)p Fg(,)e(and)i(the)g(system)f(defaults)h(to)f
(a)g(\015at)g(name)h(space)g(if)g(scop)q(e)g(setting)f(commands)189
2409 y(are)h(nev)o(er)g(used.)131 2503 y(2.)22 b(The)g(con)o(text)g(of)f(a)h
(comm)o(unication)h(op)q(erations)f(need)h(to)f(b)q(e)h(explicitly)i(sp)q
(eci\014ed)f(in)f(the)189 2559 y(comm)o(unication)15 b(op)q(eration)f
(itself.)21 b(A)14 b(pro)q(cess)h(ma)o(y)e(b)q(elong)j(to)d(sev)o(eral)i
(groups)f(at)f(an)o(y)h(p)q(oin)o(t)189 2615 y(in)19 b(time,)g(and)g(ma)o(y)f
(use)h(an)o(y)f(of)g(these)h(groups)f(as)g(scop)q(e)h(for)f(a)g(comm)o
(unication)h(op)q(eration.)189 2672 y(Again,)14 b(the)f(initial)j(scop)q(e)e
Fb(ALL)f Fg(is)h(prede\014ned,)h(and)f(can)g(b)q(e)g(used)g(as)g(a)f(\015at)g
(name)h(space.)19 b(\(In)14 b(a)964 2828 y(8)p eop
%%Page: 9 9
bop 189 45 a Fg(language)13 b(where)g(argumen)o(ts)f(are)h(optional,)h(con)o
(text)e(w)o(ould)i(b)q(e)g(an)f(optional)g(parameter)g(with)189
102 y(default)i(v)m(alue)i Fb(ALL)p Fg(.\))146 208 y(The)h(adv)m(an)o(tage)f
(of)g(an)h(explicit)i(con)o(text)d(parameter)g(is)h(that)g(it)g(prev)o(en)o
(ts)f(the)h(confusion)h(that)75 264 y(o)q(ccurs)13 b(when)g(an)g(implicit)i
(con)o(text)d(is)h(c)o(hanged)g(mid)g(comm)o(unication.)20
b(More)12 b(generally)l(,)i(it)f(prev)o(en)o(ts)75 321 y(the)e(confusion)h
(arising)g(when)g(the)f(seman)o(tics)h(of)e(an)i(op)q(eration)f(is)h
(quali\014ed)h(b)o(y)e(a)g(scop)q(e)h(that)e(dep)q(ends)75
377 y(on)18 b(the)g(con)o(trol)g(\015o)o(w)g(of)g(the)g(program,)g(rather)f
(than)h(its)h(static)f(structure.)29 b(The)18 b(disadv)m(an)o(tage)g(is)75
434 y(the)e(need)g(for)f(an)g(additional)i(parameter,)d(in)j(languages)e
(that)g(don't)g(ha)o(v)o(e)g(optional)h(parameters)e(or)75
490 y(o)o(v)o(erloading)h(of)g(pro)q(cedures.)146 547 y(Opinions?)75
690 y Fh(Matc)n(hing)23 b(of)g(send)g(and)h(receiv)n(e)75 793
y Fd(receiv)n(e)18 b(criteria)75 879 y Fg(Messages)c(are)h(matc)o(hed)g(b)o
(y)h(sender)f(and)h(t)o(yp)q(e,)f(where)g(eac)o(h)g(can)h(b)q(e)g(a)e
(\\don't)h(care".)146 935 y(Our)f(exp)q(erience)j(is)e(that)f(matc)o(hing)g
(b)o(y)g(t)o(yp)q(e)h(only)l(,)g(or)f(disallo)o(wing)i(\\don't)e(care")g(in)h
(the)f(sender)75 992 y(\014eld)20 b(signi\014can)o(tly)h(simpli\014es)g(the)e
(implemen)o(tation)i({)d(but)h(some)g(users)g(complained)i(ab)q(out)e(suc)o
(h)75 1048 y(restriction.)146 1105 y(Also,)c(do)g(w)o(e)g(w)o(an)o(t)f(to)g
(b)q(e)i(explicit)i(ab)q(out)d(the)g(don't)g(care)g(v)m(alue,)h(or)e(use)i
(named)f(constan)o(ts?)146 1161 y(Opinions?)75 1283 y Fd(Matc)n(hing)20
b(of)f(data)75 1369 y Fg(F)l(or)c(un)o(t)o(yp)q(ed)g(messages)g(the)g
(options)h(are)131 1462 y(1.)22 b(Send)16 b(and)f(receiv)o(e)h(bu\013er)f(ha)
o(v)o(e)g(same)g(size)131 1556 y(2.)22 b(Receiv)o(e)16 b(bu\013er)g(is)f(no)g
(shorter)g(than)g(send)h(bu\013er)131 1650 y(3.)22 b(No)15
b(constrain)o(ts)f(\(messages)h(ma)o(y)f(b)q(e)i(truncated\).)131
1744 y(4.)22 b(User)15 b(c)o(ho)q(ose)g(one)g(of)g(the)g(ab)q(o)o(v)o(e)g
(options)h(\(one)f(more)f(call)j(parameter,)d(or)g(a)h(global)h(\015ag\).)146
1838 y(Choices)f(should)g(b)q(e)g(the)f(same)g(for)f(all)j(t)o(yp)q(es)e(of)g
(send)h(op)q(eration)f(\(the)g(curren)o(t)g(MPI)g(draft)g(seem)75
1894 y(to)h(allo)o(w)g(truncation)g(for)g(con)o(tiguous)g(data,)f(but)i
(disallo)o(w)g(it)f(for)g(receiv)o(e)h(with)g(stride\))146
1951 y(The)d(EUI)h(prop)q(osal)f(uses)g(option)h(4.)19 b(I)13
b(w)o(ould)h(b)q(e)g(happier)g(with)f(2,)g(but)h(am)e(uncomfortable)i(with)75
2007 y(3)i(\(truncation)h(seems)g(to)f(fall)i(in)f(the)g(category)f(of)g
(comm)o(unication)i(errors,)e(for)g(whic)o(h)h(I)h(assume)e(a)75
2063 y(global)g(exception)g(handling)h(mec)o(hanism\).)146
2120 y(Opinions?)146 2176 y(If)12 b(t)o(yp)q(ed)g(messages)g(are)g(supp)q
(orted)g(then)h(one)f(should)h(sp)q(ell)h(out)e(requiremen)o(ts)g(on)g(t)o
(yp)q(e)g(compat-)75 2233 y(ibilit)o(y)18 b(\(e.g.,)d(can)h(t)o(w)o(o)e(real)
i(n)o(um)o(b)q(ers)g(b)q(e)h(receiv)o(ed)g(in)o(to)f(a)g(complex)g(n)o(um)o
(b)q(er?\))23 b({)16 b(this)g(is)g(probably)75 2289 y(sp)q(eci\014c)h(to)e
(eac)o(h)g(language)g(binding.)146 2346 y(Opinions?)75 2489
y Fh(Syn)n(tax)75 2590 y Fg(This)h(ma)o(y)e(b)q(e,)i(of)f(course,)f(a)h(sub)s
(ject)g(of)g(endless)i(dispute.)k(A)15 b(few)g(ob)o(vious)g(guidelines:)143
2684 y Fa(\017)23 b Fg(Short,)14 b(mnemonic)i(names)964 2828
y(9)p eop
%%Page: 10 10
bop 143 45 a Fa(\017)23 b Fg(Systematic)15 b(naming)h(con)o(v)o(en)o(tion)143
137 y Fa(\017)23 b Fg(Systematic)15 b(ordering)g(of)g(parameters)143
230 y Fa(\017)23 b Fg(Use,)15 b(in)h(languages)g(where)g(this)f(is)h(p)q
(ossible,)h(of)e(optional)h(parameters)f(and)h(k)o(eyw)o(ord)e(param-)189
286 y(eters.)143 379 y Fa(\017)23 b Fg(Use,)15 b(in)h(languages)f(where)g
(this)h(p)q(ossible,)h(of)d(o)o(v)o(erloading.)146 469 y(I)d(heard)g(in)h
(our)f(last)g(meeting)g(a)g(preference)h(for)f(m)o(ultiple)h(function)g
(names,)g(rather)e(than)h(m)o(ultiple)75 525 y(mo)q(des.)146
582 y(Th)o(us,)f(in)h(C++)g(or)f(F90,)f(one)i(could)g(ha)o(v)o(e)f(the)g(c)o
(hoice)h(of)f(the)g(t)o(yp)q(e)g(of)g(datum)g(sen)o(t)g(\(scalar/con)o
(tiguous)75 638 y(v)o(ector/noncon)o(tiguous\))15 b(b)q(e)i(dictated)g(b)o(y)
f(the)h(t)o(yp)q(e)f(and)h(n)o(um)o(b)q(er)f(of)g(parameters,)f(rather)h
(than)g(b)q(e)75 695 y(enco)q(ded)f(in)f(the)g(function)g(name.)19
b(Then)14 b(a)f(p)q(ossible)i(naming)f(c)o(hoice)h(is)f Fb(mode)23
b(|)h(operation)p Fg(,)12 b(where)75 751 y Fb(mode)18 b Fg(=)g
Fb(init)g Fg(\(1\),)f Fb(nonblocking)g Fg(\(1+2\),)h Fb(blocking)f
Fg(\(1+2+3+4,)h(lo)q(cal)h(termination\),)g(or)f Fb(sync)75
808 y Fg(\(1+2+3+4)d(global)h(termination\),)f(and)g Fb(operation)f
Fg(=)h(send,)h(or)e(recv.)146 864 y(In)h(addition,)h(one)f(has)g
Fb(DO\(handle\))p Fg(,)f Fb(START\(handle\))p Fg(,)e Fb(AWAIT\(handle\))i
Fg(and)h Fb(FREE\(handle\))p Fg(.)146 921 y(Another)21 b(issue)i(is)f
(function)g(vs)f(pro)q(cedure)i(call,)h(in)e(F)l(ortran.)38
b(Pro)q(cedure)22 b(calls)h(seem)e(more)75 977 y(natural)15
b(in)h(F)l(ortran,)e(where)h(function)h(in)o(v)o(o)q(cations)g(cannot)f(b)q
(e)h(used)g(as)e(statemen)o(ts.)146 1033 y(Opinions?)22 b(Preferences)16
b(for)f(mnemonics?)21 b(Suggestions)16 b(for)e(F77)h(and)g(C?)75
1176 y Fh(Miscelania)75 1277 y Fg(Do)h(w)o(e)g(w)o(an)o(t)g(a)g
Fb(TEST)p Fg(,)f(a)i(non)o(blo)q(c)o(king)h Fb(AWAIT)d Fg(op)q(eration?)25
b(\(Alw)o(a)o(ys)16 b(returns;)h(a)f(successful)i(return)75
1334 y(is)e(equiv)m(alen)o(t)h(to)d(a)h(successful)i(return)e(of)g(a)f(blo)q
(c)o(king)j Fb(AWAIT)p Fg(\).)146 1390 y(Do)d(w)o(e)h(w)o(an)o(t)f(to)h
Fb(AWAIT)f Fg(sev)o(eral)i(messages?)146 1447 y(Do)h(w)o(e)h(w)o(an)o(t)f(a)g
Fb(PROBE)h Fg(function)h(\(tells)f(me)g(whic)o(h)h(messages)f(are)g(w)o
(aiting)g(to)f(b)q(e)i(receiv)o(ed)g(b)o(y)75 1503 y(me\)?)146
1560 y(Where)12 b(do)h(w)o(e)f(return)h(information)g(on)g(parameters)f(of)g
(receiv)o(ed)i(messages)e(suc)o(h)h(as)f(length,)i(and)75 1616
y(t)o(yp)q(e?)24 b(The)16 b(curren)o(t)g(MPI)h(prop)q(osal)f(has)g(length)h
(b)q(e)g(the)f(v)m(alue)i(returned)e(b)o(y)h(the)f(receiv)o(e)h(function)75
1673 y(and)d(t)o(yp)q(e)g(returned)h(b)o(y)f(a)f(subsequen)o(t)i(call)g(to)e
Fb(MP)p 964 1673 15 2 v 17 w(INFOT)p Fg(.)g(Another)h(natural)g(c)o(hoice)h
(w)o(ould)f(seem)h(to)75 1729 y(b)q(e)f(that)f(that)f(length)i(and)g(t)o(yp)q
(e)f(are)g(returned)h(b)o(y)f(the)h(len)g(and)g(t)o(yp)q(e)f(parameters)f(of)
h(the)h(initial)h(call,)75 1786 y(but)g(this)h(is)g(error)e(prone:)143
1876 y Fa(\017)23 b Fg(The)d(v)m(alues)h(are)e(returned)i(async)o(hronously)f
(for)f(non)o(blo)q(c)o(king)j(receiv)o(es.)35 b(The)20 b(user)g(has)g(to)189
1932 y(remem)o(b)q(er)11 b(not)h(to)f(touc)o(h)g(the)h(actual)g(len)g(and)g
(t)o(yp)q(e)g(parameters,)f(in)h(addition)h(of)e(not)h(touc)o(hing)189
1989 y(the)j(receiv)o(e)h(bu\013er,)f(un)o(til)h(the)f(op)q(eration)h
(completes.)143 2081 y Fa(\017)23 b Fg(A)f(natural)h(implemen)o(tation)h(w)o
(ould)f(b)q(e)g(to)f(alw)o(a)o(ys)g(return)g(the)h(length)g(and)g(t)o(yp)q(e)
g(of)f(the)189 2138 y(receiv)o(ed)f(messages.)36 b(Ho)o(w)o(ev)o(er,)20
b(most)g(users)g(will)i(assume)f(that)e(the)i(actual)g(len)g(and)g(t)o(yp)q
(e)189 2194 y(parameters)14 b(are)h(not)g(up)q(dated)h(when)f(their)h(v)m
(alue)h(is)e(not)g(\\don't)f(care".)143 2286 y Fa(\017)23 b
Fg(The)13 b(user)h(will)h(not)e(b)q(e)h(able)g(to)f(use)h(constan)o(ts)e(as)h
(actual)h(\\don't)f(care")g(parameter)f(v)m(alues)j(\(or)189
2343 y(an)o(ytime,)g(if)g(the)g(\\natural")g(implemen)o(tation)i(is)e(allo)o
(w)o(ed\))143 2435 y Fa(\017)23 b Fg(This)17 b(c)o(hoice)h(b)q(ecomes)g(ev)o
(en)f(less)h(app)q(etizing)h(when)e(a)g(handle)h(is)g(reused;)g(then)g(the)f
(len)h(and)189 2492 y(t)o(yp)q(e)d(v)m(ariables)h(w)o(ould)g(b)q(e)g(reused,)
f(to)q(o.)75 2582 y(It)g(seems)g(safer)f(to)g(return)h(these)g(v)m(alues)h
(with)f(the)g(call)g(that)g(concludes)h(the)f(execution)h(of)e(sub)q(op)q
(er-)75 2638 y(ation)h(3)g({)g(but)g(w)o(e)g(need)h(to)f(think)h(syn)o(tax.)
146 2695 y(Opinions?)952 2828 y(10)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF