- generalized requests are up in the air. The full forum voted to
remove communication handlers.
- information from requests are limited to persistant ones. there is
now only one call. Also, only whether a request is persistant can now
be probed.
- comm_id now uses caching.
- there is a summary of the discussion for datatype decoding. The
functions themselves have not yet changed.
- MPI_True_extent now returns and lb and ub.
and points for discussion:
- we do not have a written proposal for making an MPI_DATATYPE.
- we need to decide what functions we want in datatype accessing and
their exact usage.
- how do we get the correct binding for the new caching proposal.
- it is proposed that we allow macros to implement the persistant
request inquiry functions. Is this ok?
We have about 2 weeks to discuss these items before the next version
needs to be done. I welcome/encourage discussion.
Steve
----------------------------------------------------------------------
%!PS-Adobe-2.0
%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
%%Title: temp.dvi
%%Pages: 27
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips -o temp.ps temp
%DVIPSParameters: dpi=300, compressed, comments removed
%DVIPSSource: TeX output 1996.05.07:1236
%%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 (temp.dvi)
@start /Fa 14 118 df<387FFFC0B5FC7EEA1C01A490C7FCA2131CA2EA1FFCA3EA1C1C
A290C7FC14E0A5EA7FFFB5FC7E13197F9816>69 D<3801F180EA07FBEA0FFFEA1F0FEA3C
07EA38031270A200F0C7FC5AA4EB1FC014E014C038F00380127013071238123CEA1E0FEA
0FFFEA07FBEA01F313197F9816>71 D<EA7FFCEAFFFEEA7FFCEA0380B3EA7FFCEAFFFEEA
7FFC0F197D9816>73 D<387E07F038FF0FF8387F07F0381D81C0A313C1121C13E1A21361
1371A313311339A21319131D130DA3EA7F07EAFF87EA7F031519809816>78
D<EA7FF0EAFFFC6C7EEA1C0FEB07801303A41307EB0F00EA1FFE5B7FEA1C0E7FA4141014
38A2387F03F0EAFF83387F01E01519809816>82 D<387FFFE0B5FCA2EAE0E0A400001300
AFEA07FC487E6C5A13197F9816>84 D<EA1FE0487E487EEA783CEA300E1200A2EA03FE12
1FEA3E0E127012E0A3EA783E387FFFE0EA3FE7EA0F8313127E9116>97
D<EA03F0EA0FFC487EEA3C0F487E3870038012E0B5FCA300E0C7FCA2387003801278EA3E
07381FFF00EA07FEEA01F811127E9116>101 D<131E137F3801FF8013C7380383001380
A2EA7FFFB5FCA2EA0380ACEA7FFC487E6C5A11197F9816>I<EA7FC012FF127F1201B3EA
7FFFB512806C130011197E9816>108 D<387F0FC038FF3FE0EA7F7F3807F040EBC0005B
A290C7FCA8EA7FFC12FF127F13127F9116>114 D<EA0FECEA3FFC127FEAF03CEAE01CA2
EA7000EA7F80EA1FF0EA07F8EA003CEA600E12E012F0EAF81EEAFFFC13F8EAC7E00F127D
9116>I<12035AA4EA7FFFB5FCA20007C7FCA75BEB0380A3EB8700EA03FE6C5A6C5A1117
7F9616>I<EAFC3FA3EA1C07AB131F381FFFE0EA0FF7EA07C713127F9116>I
E /Fb 21 120 df<EC3FE0ECE010903801803801031378A290380700301500A3130EA390
B512E0EB0E0090381C01C0A4EC03801338A3EC0700A2137801701310EC0E20A313609038
E00640EC038091C7FC5BA21201EA3180127948C8FC1262123C1D29829F1A>12
D<127012F8A212F012E005057B840E>46 D<14021406A2140E141EA2143F142F144F14CF
148FEB010FA21302A213041308A20110138014071320EB3FFFEB40071380A2EA0100A212
0212061204001E14C039FF807FF81D207E9F22>65 D<48B512FE39001E001C150C1504A2
5BA490387804081500A2140C495AEBFFF8EBF018A23801E010A3EC001048481320A21540
A248481380140115001407380F001FB512FE1F1F7D9E1F>69 D<90B5FC90381E03C0EC00
E0157015785BA44913F0A2EC01E015C09038F00700141EEBFFF0EBF01C48487E140F8015
803903C00F00A43807801E1508A21510000F130ED8FFF01320C7EA03C01D207D9E21>82
D<EBF180380389C038070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2
EA703C135C38308C80380F070013147C9317>97 D<137EEA01C138030080EA0E07121E00
1C1300EA3C0248C7FCA35AA5EA70011302EA3004EA1838EA07C011147C9315>99
D<1478EB03F8EB0070A414E0A4EB01C0A213F1EA038938070780EA0E03121C123C383807
001278A3EAF00EA31420EB1C40A2EA703C135C38308C80380F070015207C9F17>I<137C
EA01C2EA0701120E121C123CEA3802EA780CEA7BF0EA7C0012F0A4127013011302EA3804
EA1838EA07C010147C9315>I<1478EB019CEB033CA2EB07181400A2130EA5EBFFE0EB1C
00A45BA55BA55BA5485AA35B1231007BC7FC12F31266123C1629829F0E>I<EA01E0120F
EA01C0A4485AA448C7FCA2131E1363380E8180380F01C0120EA2381C0380A438380700A3
EB0E1000701320A2131CEB0C4000E013803860070014207D9F17>104
D<13C0EA01E0A213C0C7FCA7120E12131223EA4380EA4700A21287120EA35AA3EA384013
80A21270EA31001232121C0B1F7C9E0E>I<EA03C0121FEA0380A4EA0700A4120EA45AA4
5AA45AA3127112E2A4126412380A207C9F0C>108 D<381C0F80382630C0384740601380
EB0070A2008E13E0120EA3381C01C0A3EB038400381388A2EB0708EB0310007013303830
01C016147C931A>110 D<137CEA01C338030180000E13C0121E001C13E0123C1278A338
F003C0A3EB07801400EA700F130EEA3018EA1870EA07C013147C9317>I<EA1C1EEA2661
38278380EA47871307EB0300008EC7FC120EA35AA45AA45A123011147C9313>114
D<13FCEA0302EA0601EA0C03130713061300EA0F8013F0EA07F8EA03FCEA003E130E1270
EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>I<EA018013C0EA0380A4EA0700A2
EAFFF0EA0700120EA45AA45AA31320EA7040A21380A2EA3100121E0C1C7C9B0F>I<000E
13C0001313E0382301C0EA4381EA4701A238870380120EA3381C0700A31410EB0E201218
A2381C1E40EA0C263807C38014147C9318>I<380E0380EA1307002313C0EA4383EA4701
130000871380120EA3381C0100A31302A25BA25BEA0E30EA03C012147C9315>I<000EEB
C1C0001313E3392301C3E0384381C1384701C015603987038040120EA3391C070080A3EC
0100A21306EB0F02000C5B380E13083803E1F01B147C931E>I E
/Fc 7 113 df<127012F012F8A212781208A31210A31220A21240050E7C840D>59
D<EC01C0EC0780EC1E001478EB01E0EB0780010EC7FC133813F0EA03C0000FC8FC123C12
F0A2123C120FEA03C0EA00F01338130E6D7EEB01E0EB0078141EEC0780EC01C01A1A7C97
23>I<12E01278121EEA0780EA01E0EA0078131C1307EB03C0EB00F0143C140FEC03C0A2
EC0F00143C14F0EB03C049C7FC131C1378EA01E0EA0780001EC8FC127812E01A1A7C9723
>62 D<EBF180380389C038070780EA0E03121C123C383807001278A3EAF00EA31410EB1C
20A2EA703CEB5C40EA308C380F078014147E9318>97 D<13E01201A2EA00C01300A7120E
1213EA23801243A3EA87001207A2120EA25AA21320EA3840A31380EA1900120E0B1F7E9E
10>105 D<14C0EB01E0A214C090C7FCA7131E1323EB43801383EA0103A2380207001200
A3130EA45BA45BA45BA21230EA78E0EAF1C0EA6380003EC7FC1328819E13>I<3803C1E0
38046218EB741CEA0878EB701EA2EA10E01200A33801C03CA3143838038078147014E0EB
C1C038072380EB1E0090C7FCA2120EA45AA2EAFFC0171D819317>112
D E /Fd 84 126 df<127012F8B012701200A5127012F8A31270051C779B18>33
D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA3803387C0780A2EAEE0F14
00A25B131EA2133EEA7C3CA2EA387CEA0078A213F85B12015BA212035BA21207EB8380EB
87C0120FEB0EE0A2121F121EA2123E383C07C0A23818038013247E9F18>37
D<EA01C0EA07E0487EEA0E70487EA4EB73F813F313E3380FC1C0EBC38013831303381F07
00EA3F87EA7B8EEA71CEEAE1FC12E0137CEB7870A2EA70FE387FFFE0EA3FC7380F03C015
1C7F9B18>I<1238127CA2127E123E120EA3121CA2123812F812F012C0070E789B18>I<13
7013F0EA01E0EA03C0EA0780EA0F00121E121C5AA25AA45AA81270A47EA27E121E7EEA07
80EA03C0EA01F0120013700C24799F18>I<126012F012787E7E7EEA07801203EA01C0A2
EA00E0A41370A813E0A4EA01C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18>I<
EA01C0A4EA41C138F1C780EAFDDF387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38FDDF80EA
F1C73841C100EA01C0A411147D9718>I<136013F0A7387FFFC0B512E0A26C13C03800F0
00A7136013147E9718>I<121C123E127E127F123F121F1207120E121E127C12F8126008
0C788518>I<387FFFC0B512E0A26C13C013047E8F18>I<1230127812FCA2127812300606
778518>I<1303EB0780A2130F14005B131EA2133E133C137C1378A213F85B12015B1203
5BA212075B120F90C7FCA25A121E123E123CA2127C127812F85AA2126011247D9F18>I<
EA01F0EA07FC487EEA1F1FEA1C0738380380007813C0EA7001A238E000E0A9EAF0010070
13C0A2EA780300381380381C0700EA1F1FEA0FFE6C5AEA01F0131C7E9B18>I<EA018012
03A21207120F123F12FF12FB12431203B0EA7FFCEAFFFEEA7FFC0F1C7B9B18>I<EA03F0
EA0FFEEA3FFF387C0F80387003C0EAE00138F000E0A21260C7FCA2EB01C0A21303EB0780
EB0F00131E5B5B5B485AEA07C0485A381E00E05AEA7FFFB5FC7E131C7E9B18>I<EA07F8
EA1FFE487E38780780EB03C0130112301200EB0380A2EB0F00EA03FF5B7F38000780EB03
C01301EB00E0A312F0A2EB01C01303387C0780383FFF006C5AEA03F8131C7E9B18>I<13
1F5B1377A213E7120113C7EA038712071307120E121E123C1238127812F0B512F8A33800
0700A6EB7FF0A3151C7F9B18>I<383FFF80A30038C7FCA8EA3BF8EA3FFE7F383C078038
3003C0EA0001EB00E0A2126012F0A238E001C0EA7003387C0F80383FFF00EA1FFCEA03F0
131C7E9B18>I<137E48B4FC00071380380F83C0EA1E03121C3838018090C7FC5AA2EAE1
F8EAE7FEB5FC38FE078038F803C0EAF001EB00E05A7E1270A3383801C0EA3C03381E0780
380FFF006C5AEA01F8131C7E9B18>I<12E0B512E0A214C038E00380EB0700C65A131E13
1C5BA25B13F05BA2485AA3485AA448C7FCA7131D7E9C18>I<EA03F8EA0FFE487E383E0F
80EA3803387001C0A438380380EA3C07381FFF00EA07FC487EEA1F1F383C0780387001C0
00F013E0EAE000A4387001C0EA7803383E0F80381FFF006C5AEA03F8131C7E9B18>I<EA
03F0EA0FFC487EEA3C0F38780780EA700338E001C0A314E0A21270EA7803EA3C0FEA1FFF
EA0FFEEA03F0C7FCEB01C0A338300380EA7807EB0F00133EEA3FFCEA1FF0EA07C0131C7E
9B18>I<1230127812FCA2127812301200A81230127812FCA2127812300614779318>I<12
18123C127EA2123C12181200A81218123C127EA2123E121E120E121C123C127812F01260
071A789318>I<14C0EB03E01307EB1FC0EB3F80EBFE00485AEA07F0485AEA3F8048C7FC
12FCA2127F6C7EEA0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E01303EB00C013187E9918
>I<387FFFC0B512E0A3C8FCA4B512E0A36C13C0130C7E9318>I<126012F87E127F6C7EEA
0FE06C7EEA01FC6C7EEB3F80EB1FC0EB07E0A2EB1FC0EB3F80EBFE00485AEA07F0485AEA
3F8048C7FC12FC5A126013187E9918>I<137013F8A213D8A2EA01DCA3138CEA038EA4EA
0707A5380FFF80A3EA0E03381C01C0A3387F07F000FF13F8007F13F0151C7F9B18>65
D<EA7FFCB5FC6C1380381C03C01301EB00E0A4130114C01307381FFF80140014C0EA1C03
EB00E014F01470A414F014E01303387FFFC0B51280387FFE00141C7F9B18>I<EBF8E0EA
03FEEA07FFEA0F07EA1E03EA3C01EA38005AA214005AA8127014E0A27E123C381E01C0EA
0F073807FF803803FE00EA00F8131C7E9B18>I<EA7FF8EAFFFE6C7E381C0F80EB03C0A2
EB01E01300A214F01470A814F014E0A2130114C01303EB0F80387FFF00485AEA7FF8141C
7F9B18>I<B512F0A3381C0070A41400A2130EA3EA1FFEA3EA1C0EA390C7FCA21438A5B5
12F8A3151C7F9B18>I<B512F8A3381C0038A41400A21307A3EA1FFFA3EA1C07A390C7FC
A7EAFFC0A3151C7F9B18>I<3801F1C0EA03FDEA0FFFEA1F0FEA1C03123813011270A290
C7FC5AA5EB0FF0131F130F387001C0A213031238A2EA1C07EA1F0FEA0FFFEA03FDEA01F1
141C7E9B18>I<387F07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F0
38FF8FF8387F07F0151C7F9B18>I<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C
1300111C7D9B18>I<387F07F038FF87F8387F07F0381C03C0EB07801400130E131E5B13
385B13F0121DA2EA1FB8A2131C121EEA1C0EA27FA2EB0380A2EB01C0387F03F038FF87F8
387F03F0151C7F9B18>75 D<EAFFC0A3001CC7FCB114E0A5B5FCA3131C7E9B18>I<38FC
01F8EAFE03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03
F8A3151C7F9B18>I<387E07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A31361
1371A213311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C7F9B18>I<EA0FFE38
3FFF804813C0EA7803EA700100F013E0EAE000B0EAF001007013C0EA7C07EA7FFF6C1380
380FFE00131C7E9B18>I<EAFFFEEBFF8014C0EA1C03EB01E013001470A514E01301EB03
C0EA1FFF1480EBFE00001CC7FCA8B47EA3141C7F9B18>I<EA0FFE383FFF804813C0EA78
03EA700100F013E0EAE000AE1370A2EAF079387039C0EA783FEA7FFF6C1380380FFE00EA
000FEB0780A2EB03C01301A213227E9B18>I<EA7FF8EAFFFE6C7E381C0F80130314C013
01A313031480130F381FFF005BA2EA1C0F7FEB0380A5149CA3387F01F8EAFF81387F00F0
161C7F9B18>I<3803F1C0EA1FFF5AEA7C0FEA7003EAE001A390C7FC12701278123FEA1F
F0EA07FEC67EEB0F80EB03C01301EB00E0A2126012E0130100F013C038F80780B5FCEBFE
00EAE7F8131C7E9B18>I<387FFFF8B5FCA238E07038A400001300B2EA07FFA3151C7F9B
18>I<38FF83FEA3381C0070B36C13E0EA0F01380783C03803FF806C1300EA007C171C80
9B18>I<38FE03F8EAFF07EAFE03383C01E0001C13C0A3EA1E03000E1380A438070700A4
EA038EA4EA018C13DCA3EA00D813F8A21370151C7F9B18>I<38FE03F8A338700070A36C
13E0A513F8EA39FC13DCA2001913C0A3138CA2EA1D8DA31305000D1380EA0F07A2EA0E03
151C7F9B18>I<387F0FE0139F130F380E0700120FEA070E138EEA039C13DCEA01F8A212
005B137013F07F487E13DCEA039E138EEA070F7F000E13801303001E13C0387F07F000FF
13F8007F13F0151C7F9B18>I<38FE03F8EAFF07EAFE03381C01C0EA1E03000E1380EA0F
0700071300A2EA038EA2EA01DCA3EA00F8A21370A9EA01FC487E6C5A151C7F9B18>I<38
3FFFE05AA2387001C01303EB07801400C65A131E131C133C5B137013F0485A5B1203485A
90C7FC5A001E13E0121C123C5A1270B5FCA3131C7E9B18>I<EAFFF8A3EAE000B3ACEAFF
F8A30D24779F18>I<EAFFF8A3EA0038B3ACEAFFF8A30D247F9F18>93
D<387FFFC0B512E0A26C13C013047E7F18>95 D<EA0FF0EA1FFC487EEA3C0FEA18073800
0380A213FF1207121FEA7F03127812E0A3EAF007EA780F383FFFF8EA1FFDEA07F015147E
9318>97 D<127E12FE127E120EA5133EEBFF80000F13C0EBC1E01380EB0070120E1438A6
000F1370A2EB80E013C1EBFFC0000E138038063E00151C809B18>I<EA01FEEA07FF001F
1380EA3E073838030048C7FCA25AA61270EB01C01238EA3E03381FFF8000071300EA01FC
12147D9318>I<EB1F80133F131F1303A5EA03E3EA0FFBEA1FFFEA3C1FEA380FEA700713
0312E0A6EA7007A2EA380FEA3C1F381FFFF0380FFBF83803E3F0151C7E9B18>I<EA01F0
EA07FCEA1FFEEA3E0F38380780EA7003A238E001C0A2B5FCA300E0C7FC1270EB01C01238
EA3E07381FFF8000071300EA01F812147D9318>I<EB1F80EB7FC0EBFFE013E13801C0C0
1400A3387FFFC0B5FCA23801C000AEEA7FFFA3131C7F9B18>I<3801E1F03807FFF85A38
1E1E30381C0E00487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEBFFC04813
E0387801F038700070481338A4007813F0EA7E03381FFFC06C13803801FC00151F7F9318
>I<127E12FE127E120EA5133EEBFF80000F13C013C1EB80E01300120EAB387FC7FC38FF
E7FE387FC7FC171C809B18>I<EA0380EA07C0A3EA0380C7FCA4EA7FC012FF127F1201AE
B5FCA3101D7C9C18>I<127E12FE127E120EA5EB3FF0A3EB0780EB0F00131E5B5B5BEA0F
F87F139C130EEA0E0F7FEB038014C0387FC7F812FF127F151C7F9B18>107
D<EAFFC0A31201B3A4B51280A3111C7D9B18>I<38F9C1C038FFF7F013FF383E3E38EA3C
3CA2EA3838AB38FE3E3EEB7E7EEB3E3E1714809318>I<EA7E3E38FEFF80007F13C0EA0F
C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC1714809318>I<EA01F0EA0FFE487E
383E0F80EA3803387001C0A238E000E0A5EAF001007013C0EA7803383C0780EA3E0F381F
FF006C5AEA01F013147E9318>I<EA7E3E38FEFF80007F13C0380FC1E01380EB0070120E
1438A6000F1370A2EB80E013C1EBFFC0000E1380EB3E0090C7FCA7EA7FC0487E6C5A151E
809318>I<3801F380EA07FBEA1FFFEA3E1FEA380FEA7007A2EAE003A6EA7007A2EA380F
EA3C1FEA1FFFEA0FFBEA03E3EA0003A7EB1FF0EB3FF8EB1FF0151E7E9318>I<38FF0FC0
EB3FE0EB7FF0EA07F0EBE060EBC0005BA290C7FCA9EAFFFC7F5B14147E9318>I<EA07F7
EA3FFF5AEA780FEAE007A3007CC7FCEA7FE0EA1FFCEA03FEEA001F38600780EAE003A212
F038F80F00B5FC13FCEAE7F011147D9318>I<487E1203A4387FFFC0B5FCA238038000A9
144014E0A33801C1C013FF6C1380EB3E0013197F9818>I<387E07E0EAFE0FEA7E07EA0E
00AC1301EA0F033807FFFC6C13FE3801FCFC1714809318>I<387F8FF000FF13F8007F13
F0381C01C0380E0380A338070700A3138FEA038EA3EA01DCA3EA00F8A2137015147F9318
>I<38FF07F8138F1307383800E0A4381C01C0137113F9A213D9EA1DDD000D1380A3138D
EA0F8FA23807070015147F9318>I<387F8FF0139F138F380F0700EA078EEA039EEA01DC
13F81200137013F07FEA01DCEA039E138EEA0707000E1380387F8FF000FF13F8007F13F0
15147F9318>I<387F8FF000FF13F8007F13F0380E01C0EB0380A21207EB0700A2EA0387
A2138EEA01CEA213CC120013DC1378A31370A313F05B1279EA7BC0EA7F806CC7FC121E15
1E7F9318>I<383FFFF05AA2387001E0EB03C0EB078038000F00131E5B13F8485AEA03C0
485A380F0070121E5A5AB512F0A314147F9318>I<EB07E0131F137FEB780013E0AB1201
EA7FC0485AA26C7EEA01E01200AB1378EB7FE0131F130713247E9F18>I<126012F0B3B0
12600424769F18>I<127CB4FC13C01203C67EAB7FEB7FC0EB3FE0A2EB7FC0EBF0005BAB
EA03C012FF90C7FC127C13247E9F18>I E /Fe 50 122 df<3801F1C012031207130112
0EA7EAFFF1A2EA0E01B0121D809C16>13 D<EAFFE0A20B0280890E>45
D<130113031306A3130CA31318A31330A31360A213C0A3EA0180A3EA0300A31206A25AA3
5AA35AA35AA35AA210297E9E15>47 D<5A1207123FB4FC12C71207B3A3EAFFF8A20D1C7C
9B15>49 D<EA07C0EA1FF0EA3878EA701CEA601EEAE00EEAC00F124013071200A2130F13
0E131E131C133C137813F0EA01E013C0EA0380EA0700120E5A5A5AB5FCA2101C7E9B15>
I<131C133EA2132E1367A2EBE78013C713C300017F1383138100037F1301486C7EA21206
000E1378380FFFF8A2381C003CA2121800387FA248131F80126000E0EB0780191D7F9C1C
>65 D<EAFFF813FF38F00F80EB03C0EB01E0EB00F0A5EB01E0EB07C0B51280EBFE00EBFF
8038F01FC0EB03E0EB01F013001478A514F0EB01E0EB07C0B51280EBFC00151D7C9C1C>
I<EB3FC03801FFF8EA03C03807801848C7FC121E5AA25AA35AA91278A37EA27E6C130838
0780183803C0783801FFF038003F80151F7D9D1B>I<EAFFFC13FF38F00F80EB03E01301
EB00F014781438143CA2141C141EA8143CA3147814F0A2EB03E0EB0FC0B5120013FC171D
7C9C1E>I<B512C0A200F0C7FCABB51280A200F0C7FCACB512C0A2121D7C9C19>I<B51280
A200F0C7FCABB5FCA200F0C7FCAE111D7C9C18>I<EB3FC0EBFFF83803E07C3807801C38
0F000C001E1300121C123C12381278A25AA6EB03FCA2EB001C1278A21238123C121C121E
7EEA07803803E07C3800FFF8EB3FC0161F7E9D1C>I<00F013F0ADB5FCA2EAF000AE141D
7C9C1D>I<12F0B3AB041D7C9C0C>I<00F0133C147814F0EB01E0EB03C0EB0780EB0F0013
1E5B5B5B5BEAF1F012F3EAF778EAFE7CEAFC3C7FEAF81F487E14801307EB03C014E01301
EB00F0A21478147C161D7C9C1D>75 D<12F0B3A9B5FCA2101D7D9C16>I<00FCEB07E0A3
00EE130DA300E71319A3EB803900E31331EBC071A200E11361A2EBE0E1A200E013C113F1
EB7181A3EB3B01A3131EA313001B1D7C9C24>I<00FC1370A27E12EE12EF12E7A2138012
E313C0A2EAE1E0A212E013F013701378A2133CA2131C131E130EA2130F130714F01303A2
141D7C9C1D>I<133F3801FFE0487F3807C0F8380F807C381E001E003E131F003C7F48EB
0780A348EB03C0A86C130700781480A2007C130F003C1400003E5B6C133E6C6C5A6C6C5A
6CB45A6C5BD8003FC7FC1A1F7E9D1F>I<EAFFFC13FF38F00F80EB03C0EB01E0EB00F0A6
EB01E01303EB0FC0B51280EBFE0000F0C7FCAD141D7C9C1B>I<133F3801FFE0487F3807
C0F8380F807C48487E003E7F003C7F48EB0780A348EB03C0A90078EB0780A2130E393C0F
0F00383E079F381E03DE380F83FC6C6C5A6CB45A6C7F38003F78EB003C143E80EC0F801A
237E9D1F>I<EAFFF813FF38F00F80EB03C0EB01E0EB00F0A5EB01E01303EB0FC0B51280
140013F8EAF03C131C131E7FA2EB0780A2EB03C0A2EB01E0EB00F0A21478151D7C9C1B>
I<EA03F8EA0FFEEA1C0F487E487E0060C7FC12E0A47E1278127FEA3FE0EA1FFCEA07FEEA
01FF38001F801307EB03C0A21301A400C01380EAE00338F00700EA7C0EEA1FFCEA07F012
1F7E9D17>I<B61280A2D8001EC7FCB3A9191D7F9C1C>I<00F01370B3A5007813E0A2383C
01C0381E0380EA0F073807FE00EA01F8141E7C9C1D>I<00F0EB0380A2007814005CA26C
130EA2123E001E5BA26C5BA36C6C5AA23803C06014E0A26C6C5A13E1A23800F18013F301
73C7FCA2137B133EA2131C191D7F9C1C>I<00F001F81370A3007801B81360D9019C13E0
A3D83C03EB01C0141E140E001E15809038070F0313061407000F1500010E1387130C0007
EB0386A2019C138E019813CE0003EB01CCA339019000C801D013D801F013F85B00001470
241D7F9C27>I<00F8130E007C131E003C5B6C13386C13785C380781E03803C1C0EA01C3
EBE780D800F7C7FC137E133E133CA2137E1377EBE780EA01E33803C1C0EB81E048C67E48
7F000E1378487F003C133E487F00707F00F01480191D7F9C1C>I<00F8EB01E0007C14C0
6CEB0380001E1307001F1400380F800E0007131EEBC01C3803E03C000113386D5A000013
F0EB78E0EB7DC0133F6D5A91C7FC7FAC1B1D809C1C>I<387FFFF0A2380001E0130314C0
13071480EB0F005B131E133E133C5B13F85B12015B485A12075B120F90C7FC121E123E12
3C127C1278B512F0A2141D7E9C19>I<EA0FC0EA3FF0EA7FF8EA7038EA401C1200A213FC
120F123FEA781C12E0A3EAF07CEA7FFC13DCEA3F1C0E127E9114>97
D<12E0ABEAE3E0EAEFF8EAFFFCEAF83EEAE01E130E1307A6130EEAF01EEAF83CEAFFF8EA
EFF0EAE3E0101D7D9C15>I<EA03F0EA0FFCEA1FFEEA3C0EEA7802EA70005AA61270EA78
02EA3C0EEA1FFEEA0FFCEA03F00F127F9112>I<1307ABEA07C7EA1FF7EA3FFFEA3C1FEA
7807127012E0A61270EA780FEA3C1FEA3FFFEA1FF7EA07C7101D7F9C15>I<EA07E0EA0F
F0EA3FF8EA3C3CEA700C130EEAFFFEA3EAE000A31270EA7802EA3C0EEA1FFEEA0FFCEA03
F00F127F9112>I<13FC12011203EA0700120EA7EAFFE0A2EA0E00B00E1D809C0D>I<3807
C3C0EA0FFF5A38383800487EA56C5AEA3FF05BEA77C00070C7FCA2EA3FFC13FF481380EA
700738E001C0A3EAF003387C0F80383FFF006C5AEA07F8121B7F9115>I<12E0ABEAE3E0
EAEFF0EAFFF8EAF83CEAF01C12E0AD0E1D7D9C15>I<12F0A41200A71270B2041D7E9C0A>
I<12E0B3AB031D7D9C0A>108 D<38E3F03F39EFF8FF80D8FFFD13C039F81F81E038F00F
00EAE00EAD1B127D9122>I<EAE3E0EAEFF0EAFFF8EAF83CEAF01C12E0AD0E127D9115>I<
EA03F0EA0FFC487EEA3C0F38780780EA700338E001C0A5EAF00300701380EA7807383C0F
00EA1FFE6C5AEA03F012127F9115>I<EAE3E0EAEFF8EAFFFCEAF83EEAE01E130E1307A5
130F130EEAF01EEAF87CEAFFF8EAEFF0EAE3E0EAE000A8101A7D9115>I<EA07C7EA0FF7
EA1FFFEA3E1FEA780FEA700712F012E0A51270EA780FEA3C1FEA3FFFEA1FF7EA07C7EA00
07A8101A7F9115>I<EAE38012E712EFEAFC005A5AA25AAB09127D910E>I<EA1FC0EA3FF0
127FEAF030EAE000A27E127FEA3FC0EA1FE0EA01F0EA0038A21280EAF078EAFFF0EA7FE0
EA1FC00D127F9110>I<121CA6EAFFE0A2EA1C00AC1320EA1FF0120FEA07C00C187F970F>
I<EAE01CAE137CEAFFFCEA7FDCEA3F1C0E127D9115>I<EAE007A2EA700EA21278EA381C
A2121C1338120CEA0E3013701206EA0760120313C01201A21380A2EA0300A25A12FE5A5A
101A7F9113>121 D E /Ff 10 58 df<121FEA3180EA60C0EA4040EAC060A8EA4040EA60
C0EA3180EA1F000B107F8F0F>48 D<1218127812981218AC12FF08107D8F0F>I<121FEA
6180EA40C0EA806012C01200A213C0EA0180EA030012065AEA10201220EA7FC012FF0B10
7F8F0F>I<121FEA2180EA60C0A212001380EA0100121FEA00801340136012C0A2EA8040
EA6080EA1F000B107F8F0F>I<EA0180A212031205120D121912111221124112C1EAFFE0
EA0180A4EA0FE00B107F8F0F>I<EA20C0EA3F80EA2E001220A3122FEA3080EA2040EA00
60A312C0EA80C0EA6180EA1F000B107F8F0F>I<EA0780EA1840EA30C0126013005A12CF
EAF080EAE040EAC060A31240EA60C0EA3080EA1F000B107F8F0F>I<1240EA7FF013E0EA
8040A2EA0080EA01001202A212061204A2120CA50C117F900F>I<121FEA3180EA60C0A3
EA3180EA3F00120EEA3380EA61C0EAC060A31340EA60C0EA1F000B107F8F0F>I<121FEA
3180EA60C0EAC0401360A3EA40E01221EA1E6012001340EA60C01380EA6300121E0B107F
8F0F>I E /Fg 43 122 df<12F0A404047B830E>46 D<14801301A2EB0300A31306A35B
A35BA35BA35BA35BA3485AA448C7FCA31206A35AA35AA35AA35AA35AA311317DA418>I<
1340EA01C0120712FFA212FB1203B3A7B5FCA310227CA118>49 D<EA03F0EA0FFC487EEA
3C1F38300780387003C0126000E013E0EAC0011240A21200A3EB03C0A2EB0780A2EB0F00
131E5B5B5B485A5B485A48C7FC120E5A5A5AB512E0A313227EA118>I<EA03F0EA07FCEA
1FFFEA3E0F38380780387003C01220A21200A3EB0780A2EB0F00133EEA03FC5B13FEEA00
0FEB0780EB03C0A2EB01E0A5128038C003C012E038700780EA3C0F381FFF00EA0FFCEA03
F013237EA118>I<131FA2132FA2136F13EF13CF1201A2EA038FA21207130F120F120E12
1E123CA21278A212F0B512F8A338000F00A915217FA018>I<387FFF80A30078C7FCA9EA
79F8EA7BFCEA7FFFEB0F80EA7E07387C03C01278380001E0A7384003C0A212E038700780
387C1F00EA3FFEEA0FFCEA03F013227EA018>I<137E48B4FC5AEA07C148C7FC121EA25A
A25AA213F8EAF1FEEAF7FF38FF0F80EAFC0738F803C0A2130100F013E0A51270A21278EB
03C01238003C1380EA1C07381F0F00EA0FFE6C5AEA01F013237EA118>I<EB0F80A2497E
A2131DEB3DE013391338EB78F0A2EB7070EBF078A213E000017FA213C000037FA2138000
077FA290B5FC481480A2380E0007001EEB03C0A24814E01401A24814F01400A24814F81D
237FA220>65 D<EB0FF0EB7FFC90B5FC3801F01F3807C00749C7FC48C8FC121E123E123C
A25AA35AA91278A37EA2123E121E7E6C6C1380EBC0033801F00F6CB51200EB7FFCEB0FF0
19257DA31F>67 D<EAFFFEEBFFC08038F003F0EB00F8147C80141E80A2EC0780A3EC03C0
A915801407A3EC0F005C141E5C14F81303B512E05C49C7FC1A237BA223>I<B512F0A300
F0C7FCACB512E0A300F0C7FCAEB512F8A315237BA21D>I<B512F0A300F0C7FCADB512C0
A300F0C7FCB014237BA21C>I<EB0FF0EB3FFE90B512803801F80F3803E003D80780C7FC
48C8FC121EA25AA25AA35AA6ECFFC0A300781303A37EA27EA27EEA0780EA03E03801F807
6CB5FC013F1300EB0FF81A257DA321>I<00F0131EAFB512FEA338F0001EB117237BA222>
I<12F0B3B104237CA20D>I<12F0B3AEB512C0A312237BA21A>76
D<00FC147E6C14FEA300F7EB01DEA3EB800300F3149EA2EBC007A200F1141EA2EBE00F00
F0130EA2EBF01EA2EB701CEB783CA2EB3838EB3C78A2EB1C70A2EB1EF0EB0EE0A2130FEB
07C0A390C7FC1F237BA22A>I<EAFFFEEBFF8014C038F003E0EB00F01478A2143CA61478
A214F0EB03E0B512C01480EBFE0000F0C7FCAF16237BA21F>80 D<EAFFFCEBFF8014C038
F003E0EB00F014781438143CA51438147814F0EB03E0B512C01480EBFE00EAF01E7FA2EB
0780130314C0EB01E0A2EB00F0A21478A2143C141EA2140F18237BA21F>82
D<13FF000313C04813F0EA1F81381E0070481300A25AA5127C123C123FEA1FC0EA0FFC6C
B4FC0001138038003FC0EB07E0EB01F0130014F81478A600C013F07E38F801E0387E07C0
383FFF80000F1300EA01FC15257EA31B>I<B612F0A3D8000FC7FCB3AE1C237EA221>I<00
F0133CB3A900781378A36C13F0381E01E0EA1F87380FFFC000031300EA00FC16247BA221
>I<EA07F0EA3FFC487EEA781FEA400F38000780A4137FEA07FF121FEA3E07127812F0A3
130FEA7C1FEA7FFFEA3FF7EA1F8711167E9517>97 D<EA01FCEA07FF481380EA1F03EA3C
0148C7FCA2127012F0A61278A36C1340381F03C0EA0FFF6C13803801FC0012167E9516>
99 D<EB01E0ADEA03E1EA0FF9EA1FFFEA3F07EA3C03EA7801A212F0A812781303123CEA
3E0FEA1FFDEA0FF9EA03E113237EA219>I<EA01F8EA07FE487E381F0780383C03C0EA78
01A2387000E0B5FCA300F0C7FCA312701278127C6C1340381F03C0EA0FFF6C13803800FC
0013167F9516>I<137FEA01FF5AEA07C013005AA8EAFFF8A3EA0F00B3102380A20F>I<38
03F078380FFFF85A383E1F00EA3C0F38780780A5383C0F00EA3E1FEA1FFE485AEA33F000
70C7FCA21278EA3FFEEBFFC06C13E04813F0EA780138F000F81478A4007813F0383E03E0
381FFFC06C13803801FC0015217F9518>I<12F0A41200A912F0B3A404237DA20B>105
D<12F0B3B104237DA20B>108 D<39F0F807C039F3FE1FF039F7FF3FF839FE0F707800FC
EBE07C39F807C03CA200F01380AF1E167C9527>I<EAF1F8EAF3FCEAF7FEEAFE1EEAF80F
A212F0B010167C9519>I<EA01FCEA07FF481380381F07C0383C01E0387800F0A2007013
7000F01378A6007813F0A2EA7C01383E03E0381F07C0380FFF806C1300EA01FC15167F95
18>I<EAF0F8EAF3FEB5FC38FE1F80EAF80738F003C0A214E01301A6130314C0130700F8
1380EAFE1F38F7FF00EAF3FCEAF1F800F0C7FCAA13207D9519>I<3803E1E0EA07F9EA1F
FD130FEA3C03127CEA780112F812F0A612F812781303123CEA3F0FEA1FFDEA0FF9EA03E1
EA0001AA13207E9519>I<EAF0E012F312F7EAFF005A5A5AA25AAE0B167C9511>I<EA07F0
EA1FFCEA3FFEEA3C0EEA78061300A2127C123F13F0EA1FF8EA0FFCEA01FEEA001F130FA3
12C0EAF81EEAFFFEEA3FFCEA0FF010167F9513>I<121EA6EAFFFCA3EA1E00AE1308EA1F
1CEA0FFC13F8EA07C00E1C7F9B12>I<EAF00FB1131FEAF83FEA7FFF13CFEA1F0F10167C
9519>I<38F001E0A212F8387803C0A2003C13801307A2001E13005BA2EA0E0EEA0F1EA2
EA071C139C13BCEA03B8A213F86C5AA213167F9516>I<007813F0387C01E0383E03C0EA
1E07000F138038078F0013DEEA03FE6C5A6C5A137013F8487EEA03DC139EEA078F380F07
80121EEB03C0383C01E0387800F000F813F81516809516>120 D<38F001E0A2387803C0
A2127C383C0780A2121EEB0F00A2120F130E131E1207139C1203139813B8120113F01200
A25BA212015BA2485A1207007FC7FCA2127C13207F9516>I E /Fh
1 16 df<EA03C0EA0FF0EA1FF8EA3FFCEA7FFEA2B5FCA4EA7FFEA2EA3FFCEA1FF8EA0FF0
EA03C010107E9115>15 D E /Fi 28 91 df<1230127812F81278127005057C840D>46
D<EB3F80EBC1E038010070000213785AA2000F137C1380A2EB00781206C712F814F0EB01
E014C0EB0380EB0700130E5B5B13605B485A380300201206000813405A383FFFC0481380
B5FC161E7E9D17>50 D<137F380183C0380201E0EA0400000713F05A1301A2000013E0A2
EB03C0EB07801400131CEA01F8EA000E7F148014C0130313071230127812F8A200F01380
38800F00EA400E6C5AEA1078EA0FE0141F7D9D17>I<380180303803FFE014C0140013FC
0002C7FCA25AA4137CEA0587380A0380EA0C01000813C0120014E0A4387003C012F812F0
00E01380EA800700401300130E6C5AEA1070EA0FC0141F7D9D17>53
D<EB1F80EB7040EBC020380180E0EA03011207380E00C0001E1300121C123C1238EA78F8
EA790EEA7A07EA7C0300F81380A200F013C0A4EB078012E0A214005BEA600EEA701CEA30
18EA1870EA07C0131F7C9D17>I<1408140C141C143CA2147C147E149EA2EB011EA21302
801304A21308A20110138014071320A2EB7FFF90384007C0EB8003A2EA0100A21202EC01
E01206001F130339FF801FFE1F207F9F22>65 D<0007B5FC3900F803C090387801E0EC00
F04913F8A515F03801E001EC03E015C0EC0F809038FFFE009038E00F803903C003C0EC01
E015F0A21400A2485A1401A215E01403EC07C0390F000F80EC3E00B512F01D1F7E9E20>
I<ECFE02903807018690381C004E0170133E49131E4848131C4848130C120748C7FC5A12
1E003E1408003C1400127CA45AA4127815101520A27E1540001C14806CEB01006C130238
03800C3800E030EB3FC01F217C9F21>I<0007B57E3900F801E0903878007081497F151E
150E150FA348481480A6484814005DA3151E153E4848133C5DA25D4A5A4A5A260F000FC7
FC143CB512F0211F7E9E23>I<0007B512FC3900F8007C0178131C150C5B1504A4140439
01E00800A31438EBFFF8EBE0383803C010A4EC00081510485AA21520A2156015C0380F00
011407B612801E1F7E9E1F>I<0007B512F83900F800780178133815185B1508A53901E0
0800A314181438EBFFF83803C0301410A491C7FC485AA648C8FC7FEAFFFC1D1F7E9E1E>
I<ECFE02903807018690381C004E0170133E49131E4848131C4848130C120748C7FC5A12
1E003E1408003C1400127CA45AA2EC3FFEEC01F000781300A2EC01E0A27EA2121C6C1303
6CEB05C0380380083900E0304090383FC0001F217C9F24>I<3A07FF83FFC03A00F8007C
000178133CA2495BA648485BA490B5FCEBE0004848485AA64848485AA64848485A01807F
39FFF07FF8221F7E9E22>I<3807FF803800F8001378A25BA6485AA6485AA6485AA648C7
FC7FEAFFF0111F7E9E10>I<EB7FFCEB03E01301A2EB03C0A6EB0780A6EB0F00A6131E12
30127812F8131CEAF03CEA8038EA40706C5AEA1F8016207E9E17>I<3807FFE0D800FCC7
FC1378A25BA6485AA6485AA41580EC0100EA0780A25C14021406140E380F001E147CB512
FC191F7E9E1C>76 D<D807F8EC7FE00000ED7C00017814BCA2019C495AA21502A2018E13
041508D8010E5C1510A26D1320A215400002EC41E09038038081EC8101A21482A23A0401
C403C0A214C8A2EB00F0000C13E04B5A001E01C07FD8FFC0EB7FFC2B1F7E9E2A>I<D807
F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83C0D801035BEB01E0
A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A21401000C5C001E1300
B47E221F7E9E22>I<EB01FCEB0E0790383801C090387000E0484813F048481378485A15
3C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01F0007C14E0140300
3C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F801F217C9F23>I<00
07B5FC3900F803C090387800F015785B157CA41578484813F815F0EC01E0EC03C0EC0F00
EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<EB01FCEB0E0790383803
C090387001E03901E000F048481378485A153C48C7FC5A001E143E123E123C127CA44814
7CA3157815F8127815F0EC01E0EA7C0F393C1083C0391C204780001EEB4F00380F405E38
07A0783901E0E010EA007F9038006030EC702015E0147F15C0EC3F80A2EC1E001F297C9F
23>I<3807FFFE3900F8078090387801E0EC00F05B15F8A415F03801E00115E0EC03C0EC
0780EC1E00EBFFF03803C03880141E140EA2140F48485AA51502D80F001304EB800F39FF
F00788C7EA01F01F207E9E21>I<EB1F82EB7066EBC01E3801800EEA030048130C000613
04120EA3000F1300A27FEA07F013FF6C13C06C13E038003FF0EB03F813001478143CA200
401338A3143000601370146000F013C038E8018038C60300EA81FC17217E9F19>I<003F
B512F0383C078000301430126039400F0010A212C01280A3D8001E1300A65BA65BA65B7F
383FFFE01C1F7A9E21>I<39FFF00FF8391F0003E06CEB01801400001EEB0100A6481302
A6485BA600705BA25CA200785B1238001813C06C48C7FCEA0706EA01F81D20799E22>I<
3A03FFC0FFC03A007F003E00013C1318013E1310011E5B011F5B6D5B0281C7FCEB078314
C2EB03C414E8EB01F0A2130080A2EB017CEB023CEB043EEB0C1EEB081F497E132001407F
EB8007000180EB0003000780391F8007F039FFC01FFE221F7F9E22>88
D<39FFF001FF391F8000786CC712606D134000071480EBC00100031400EBE0025C12016D
5A00005B6D5A1378EB7C40EB3C80013FC7FC7F131EA3131C133CA513381378137C3807FF
80201F7A9E22>I<0003B512F09038F001E0EB8003010013C00006EB0780EC0F00000413
1E143E143C5CC75A495A13035C495A49C7FC131E133E133C4913805B3901E00100120313
C048485A380F0002001E1306003E130E003C131E4813FCB5FC1C1F7E9E1C>I
E /Fj 66 123 df<EB7E1F3901C1B180390303E3C0000713C3000EEBC180903801C000A6
B512FC380E01C0B0387F87FC1A1D809C18>11 D<137E3801C180EA0301380703C0120EEB
018090C7FCA5B512C0EA0E01B0387F87F8151D809C17>I<EB7FC0EA01C1EA03031207EA
0E01A7B5FCEA0E01B0387FCFF8151D809C17>I<90383F07E03901C09C18380380F0D807
01133C000E13E00100131892C7FCA5B612FC390E00E01CB03A7FC7FCFF80211D809C23>
I<EA6060EAF0F0EAF8F8EA6868EA0808A3EA1010A2EA2020EA4040EA80800D0C7F9C15>
34 D<126012F012F812681208A31210A2122012401280050C7C9C0C>39
D<1380EA0100120212065AA25AA25AA35AA412E0AC1260A47EA37EA27EA27E12027EEA00
80092A7C9E10>I<7E12407E12307EA27EA27EA37EA41380AC1300A41206A35AA25AA25A
12205A5A092A7E9E10>I<126012F0A212701210A41220A212401280040C7C830C>44
D<EAFFE0A20B0280890E>I<126012F0A2126004047C830C>I<130113031306A3130CA313
18A31330A31360A213C0A3EA0180A3EA0300A31206A25AA35AA35AA35AA35AA210297E9E
15>I<EA03C0EA0C30EA1818EA300CA2EA700EEA6006A2EAE007ADEA6006A2EA700EEA30
0CA2EA1818EA0C30EA07E0101D7E9B15>I<5A1207123F12C71207B3A5EAFFF80D1C7C9B
15>I<126012F0A212601200AA126012F0A2126004127C910C>58
D<126012F0A212601200AA126012F0A212701210A41220A212401280041A7C910C>I<00
7FB512C0B612E0C9FCA8B612E06C14C01B0C7E8F20>61 D<EA0FE0EA3038EA401CEAE00E
12F0A3EA000C131C1330136013C0138012011300A6C7FCA51203EA0780A2EA03000F1D7E
9C14>63 D<1306A3130FA3EB1780A2EB37C01323A2EB43E01341A2EB80F0A338010078A2
EBFFF83802003CA3487FA2000C131F80001E5BB4EBFFF01C1D7F9C1F>65
D<B512C0380F00788080140E140FA4140E141E5C14F8EBFFF0EB003C8080801580A5EC0F
00A2141E1478B512E0191C7F9B1D>I<90381F8080EBE0613801801938070007000E1303
5A14015A00781300A2127000F01400A8007014801278A212386CEB0100A26C13026C5B38
0180083800E030EB1FC0191E7E9C1E>I<B512C0380F00F0143C140E80A2EC038015C014
01A215E0A815C0A21403158014071500140E5C1470B512C01B1C7E9B20>I<B512FC380F
003C140C1404A214061402A213011400A35B13FF13037FA3140113001402A31406A2140C
143CB512FC181C7E9B1C>I<B512F8380F007814181408A2140C1404A213011400A35B13
FF13037FA490C7FCA8EAFFF8161C7E9B1B>I<90381F8080EBE061380180193807000700
0E13035A14015A00781300A2127000F01400A6ECFFF0EC0F80007013071278A212387EA2
7E6C130B380180113800E06090381F80001C1E7E9C21>I<39FFF0FFF0390F000F00AC90
B5FCEB000FAD39FFF0FFF01C1C7F9B1F>I<EAFFF0EA0F00B3A8EAFFF00C1C7F9B0F>I<38
07FF8038007C00133CB3127012F8A21338EA7078EA4070EA30E0EA0F80111D7F9B15>I<
EAFFF8EA0F8090C7FCB01408A31418A2141014301470EB01F0B5FC151C7E9B1A>76
D<B46CEBFF80000FECF800A2390BC00178A33809E002A23808F004A3EB7808A3EB3C10A3
EB1E20A3EB0F40A2EB0780A3EB0300121C3AFF8307FF80211C7E9B26>I<B4EB1FF0390F
8003809038C00100120BEA09E0EA08F0A21378133C133E131E130F14811307EB03C1EB01
E114F113001479147D143D141FA2808080121CB46C7E1C1C7F9B1F>I<EB3F80EBE0E038
03803848487E000E7F487F003C148000381303007814C0A20070130100F014E0A8007014
C000781303A200381480003C1307001C14006C130E6C5B6C6C5A3800E0E0EB3F801B1E7E
9C20>I<B51280380F00E01478143C141C141EA5141C143C147814E0EBFF8090C7FCACEA
FFF0171C7E9B1C>I<EB3F80EBE0E03803803848487E000E7F487F003C14800038130300
7814C0A20070130100F014E0A8007014C000781303A200381480383C0E07D81C11130038
0E208E0007135C3803A0783900F0E020133FEB0060EC3060EC38E0EC3FC0A2EC1F80EC0F
001B257E9C20>I<B5FC380F01E0EB007880141C141EA4141C143C5CEB01E001FFC7FCEB
01E0EB0070147880A61510A2141CA239FFF00E20C7EA03C01C1D7E9B1F>I<3807E080EA
1C19EA30051303EA600112E01300A36C13007E127CEA7FC0EA3FF8EA1FFEEA07FFC61380
130FEB07C0130313011280A300C01380A238E00300EAD002EACC0CEA83F8121E7E9C17>
I<007FB512C038700F010060130000401440A200C014201280A300001400B1497E3803FF
FC1B1C7F9B1E>I<39FFF01FF0390F000380EC0100B3A26C1302138000035BEA01C03800
E018EB7060EB0F801C1D7F9B1F>I<39FFE00FF0391F0003C0EC01806C1400A238078002
A213C000035BA2EBE00C00011308A26C6C5AA213F8EB7820A26D5AA36D5AA2131F6DC7FC
A21306A31C1D7F9B1F>I<3AFFE1FFC0FF3A1F003E003C001E013C13186C6D1310A32607
801F1320A33A03C0278040A33A01E043C080A33A00F081E100A39038F900F3017913F2A2
017E137E013E137CA2013C133C011C1338A20118131801081310281D7F9B2B>I<39FFF0
03FC390F8001E00007EB00C06D13800003EB01006D5A000113026C6C5A13F8EB7808EB7C
18EB3C10EB3E20131F6D5A14C06D5AABEB7FF81E1C809B1F>89 D<EA1FC0EA3070EA7838
7F12301200A2EA01FCEA0F1C12381270126000E01340A3EA603C38304E80381F87001212
7E9115>97 D<12FC121CAA137CEA1D87381E0180381C00C014E014601470A6146014E014
C0381E018038190700EA10FC141D7F9C17>I<EA03F8EA0C0CEA181E1230EA700CEA6000
12E0A61260EA70021230EA1804EA0C18EA03E00F127F9112>I<EB1F801303AAEA03F3EA
0E0BEA1807EA30031270126012E0A6126012701230EA1807EA0E1B3803E3F0141D7F9C17
>I<EA07E0EA0C30EA1818EA300CEA700EEA600612E0EAFFFEEAE000A41260EA70021230
EA1804EA0C18EA03E00F127F9112>I<13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA
0E00B0EA7FE00F1D809C0D>I<EB03803807C4C0EA1C783838388038301800EA701CA4EA
3018EA38386C5AEA27C00020C7FCA21230EA3FF86CB4FC1480EA2003386001C0EAC000A3
3860018038300300EA1C0EEA07F8121C7F9215>I<12FC121CAA137C1387EA1D03001E13
80121CAD38FF9FF0141D7F9C17>I<1218123CA21218C7FCA712FC121CB0EAFF80091D7F
9C0C>I<12FC121CAAEB0FE0EB0780EB06005B13105B5B13E0121DEA1E70EA1C78133813
3C131C7F130F148038FF9FE0131D7F9C16>107 D<12FC121CB3A9EAFF80091D7F9C0C>I<
39FC7E07E0391C838838391D019018001EEBE01C001C13C0AD3AFF8FF8FF8021127F9124
>I<EAFC7CEA1C87EA1D03001E1380121CAD38FF9FF014127F9117>I<EA03F0EA0E1CEA18
06487E00701380EA600100E013C0A600601380EA700300301300EA1806EA0E1CEA03F012
127F9115>I<EAFC7CEA1D87381E0180001C13C0EB00E0A21470A614E0A2EB01C0001E13
80381D0700EA1CFC90C7FCA7B47E141A7F9117>I<3803E080EA0E19EA1805EA3807EA70
03A212E0A61270A2EA38071218EA0E1BEA03E3EA0003A7EB1FF0141A7F9116>I<EAFCE0
EA1D38EA1E78A2EA1C301300ACEAFFC00D127F9110>I<EA1F90EA2070EA4030EAC010A2
12E0EAF800EA7F80EA3FE0EA0FF0EA00F8EA8038131812C0A2EAE010EAD060EA8FC00D12
7F9110>I<1204A4120CA2121C123CEAFFE0EA1C00A91310A5120CEA0E20EA03C00C1A7F
9910>I<38FC1F80EA1C03AD1307120CEA0E1B3803E3F014127F9117>I<38FF07E0383C03
80381C0100A2EA0E02A2EA0F06EA0704A2EA0388A213C8EA01D0A2EA00E0A3134013127F
9116>I<39FF3FC7E0393C0703C0001CEB01801500130B000E1382A21311000713C4A213
203803A0E8A2EBC06800011370A2EB8030000013201B127F911E>I<38FF0FE0381E0700
EA1C06EA0E046C5AEA039013B0EA01E012007F12011338EA021C1204EA0C0E487E003C13
8038FE1FF014127F9116>I<38FF07E0383C0380381C0100A2EA0E02A2EA0F06EA0704A2
EA0388A213C8EA01D0A2EA00E0A31340A25BA212F000F1C7FC12F312661238131A7F9116
>I<EA7FFCEA70381260EA407013F013E0EA41C012031380EA0700EA0F04120E121CEA3C
0CEA380812701338EAFFF80E127F9112>I E /Fk 20 122 df<127812FCA412781200A6
127812FCA4127806127D910D>58 D<B512F814FF390FC01FC0EC07E0EC01F015F8140015
FC157CA2157EA8157CA315F8A2EC01F0EC07E0EC1FC0B6120014F81F1C7E9B25>68
D<D8FFC0EB03FF6D5B000F15F0D80DF0130DA3D80CF81319A2017C1331A26D1361A26D13
C1A390380F8181A2903807C301A2EB03E6A2EB01FCA3EB00F8A23AFFC0701FFFA2281C7E
9B2D>77 D<EA0FF8EA1C1E383E0F80130714C0121C1200137FEA07E7EA1F07123C127C12
F8A3EA780B383E13F8EA0FE115127F9117>97 D<EA03FCEA0E0EEA1C1F123C1278130E00
F8C7FCA61278EB0180123C381C0300EA0E0EEA03F811127E9115>99
D<EA03FCEA0F07381C0380383C01C0127814E012F8A2B5FC00F8C7FCA3127814607E6C13
C0380F03803801FC0013127F9116>101 D<3803F0F0380E1F38EA3C0F38380730007813
80A400381300EA3C0FEA1E1CEA33F00030C7FCA3EA3FFF14C06C13E014F0387801F838F0
0078A300701370007813F0381E03C03807FF00151B7F9118>103
D<B4FCA2121FA9EB0FC0EB31E0EB40F0EB80F8A21300AB38FFE7FFA2181D7F9C1B>I<12
1E123FA4121EC7FCA6127FA2121FAEEAFFC0A20A1E7F9D0E>I<B4FCA2121FB3A7EAFFE0
A20B1D7F9C0E>108 D<39FF0FC07E903831E18F3A1F40F20780D980FC13C0A2EB00F8AB
3AFFE7FF3FF8A225127F9128>I<38FF0FC0EB31E0381F40F0EB80F8A21300AB38FFE7FF
A218127F911B>I<EA01FC380F0780381C01C0003C13E0387800F0A200F813F8A6007813
F0A2383C01E0381E03C0380F07803801FC0015127F9118>I<38FF3F80EBE1E0381F80F0
EB0078147C143C143EA6143C147C1478EB80F0EBC1E0EB3F0090C7FCA6EAFFE0A2171A7F
911B>I<EAFE3E1347381E8F80A3381F070090C7FCAAEAFFE0A211127F9114>114
D<EA1FD8EA3078EA601812E0A2EAF000EAFF80EA7FE013F0EA1FF8EA07FCEA007CEAC01C
A212E01318EAF830EACFC00E127E9113>I<1203A45AA25AA2EA3FFC12FFEA1F00A9130C
A4EA0F08EA0798EA03F00E1A7F9913>I<38FF07F8A2EA1F00AC1301120F380786FFEA01
F818127F911B>I<38FFC1FCA2381F00601380000F13C0A23807C180A23803E300A213F7
EA01F613FE6C5AA21378A2133016127F9119>I<38FFC1FCA2381F00601380000F13C0A2
3807C180A23803E300A213F7EA01F613FE6C5AA21378A21330A25B1270EAF8E05BEAF980
0073C7FC123E161A7F9119>121 D E /Fl 5 118 df<EA07F8EA1FFE38381F80EA780F00
FC13C0A3127838301F8000001300133E5B13705BA25BA690C7FCA4EA01C0487E487EA36C
5A6C5A12207D9F19>63 D<3803FFFCA238000FC0B3A21210127C12FEA21480EAFC1F3878
3F00EA3FFEEA0FF0161F7F9E1B>74 D<EA01FE3807FF80380F83C0381E01E0383E00F05A
14F812FCB5FCA200FCC7FCA3127CA26C1318121E380F80703807FFE0C6138015147F9318
>101 D<38FE0FC0EB3FE0381E61F0EBC0F81380EA1F00AD38FFE7FFA218147D931D>110
D<38FF07F8A2EA1F00AD1301A2EA0F063807FCFF6C5A18147D931D>117
D E /Fm 9 107 df<B612C0A21A027C8B23>0 D<EA03F0EA0FFC487E487E481380A2B512
C0A66C1380A26C13006C5A6C5AEA03F012127E9317>15 D<15C01403EC0F00143C14F0EB
03C049C7FC131C1378EA01E0EA0780001EC8FC127812E01278121EEA0780EA01E0EA0078
131C1307EB03C0EB00F0143C140FEC03C014001500A7007FB51280B612C01A247C9C23>
20 D<140CA21418A21430A21460A214C0A2EB0180A3EB0300A21306A25BA25BA25BA25B
A25BA2485AA248C7FCA21206A35AA25AA25AA25AA25A1240162C7AA000>54
D<B612F8A2D80006C7FCB3A913021D1E7D9D23>62 D<13021306B3A9B612F8A21D1E7D9D
23>I<130F1338136013E0EA01C0AFEA0380EA0700121E12F8121E1207EA0380EA01C0AF
EA00E013601338130F102D7DA117>102 D<12F8121E1207EA0380EA01C0AFEA00E01360
1338130F1338136013E0EA01C0AFEA0380EA0700121E12F8102D7DA117>I<12C0B3B3A9
022D7BA10D>106 D E /Fn 59 122 df<14F013F8120112033807800090C7FC5AA738FF
F8F0A3EA0F00B1142180A018>12 D<EBF8F012011203EA078013005AA7EAFFF8A3EA0F00
B11420809F18>I<13E0EA01C0EA0380120713005A121EA2121C123CA212381278A31270
12F0AE12701278A31238123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>
40 D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A313
801207A213005AA2121E121C123C12385A5A0B2E7EA112>I<1278A412181230A21260A2
12E0050A7D830D>44 D<EAFFF0A30C03808B0F>I<EA03F0487EEA1FFEEA1E1E487EEA38
0700781380A2EA700300F013C0AE38780780A300381300EA3C0FEA1E1EEA1FFE6C5AEA03
F012207E9E17>48 D<13C01201120712FFA212FB1203B3A4EAFFFEA30F1F7C9E17>I<EA
03F0EA0FFC487EEA383FEA700F3860078012E0EB03C01240A21200A3EB0780A2EB0F0013
0E5B133C5B13E0485A485A48C7FC120E5A5A5AB512C0A3121F7E9E17>I<12F0A41200AC
12F0A404147C930D>58 D<131FA2497E133BA2EB7BC013731371EBF1E013E113E000017F
A213C000031378A2138000077FA21300380FFFFEA2487F381E000FA24814801407A24814
C01403A248EB01E01B207F9F1E>65 D<EB1FC0EBFFF84813FC3803E03C3807800C48C7FC
121E123E123C127C1278A35AA81278A3127C123C123E121E6C13023807800E3803E03E38
01FFFC6C13F0EB1FC017227DA01D>67 D<B5FC14C08038F003F8EB00FC143E141E80A2EC
0780A3EC03C0A815801407A2EC0F00A2141E143E5CEB03F8B55A14C091C7FC1A207C9F21
>I<B512F0A300F0C7FCABB512C0A300F0C7FCACB512F0A314207C9F1B>I<B512E0A300F0
C7FCABB51280A300F0C7FCAF13207C9F1A>I<EB1FE0EBFFF84813FE3803E03E3807800E
48C7FC121E123E123C5AA35AA7EB03FEA33878001EA37E123E121E7EEA07803803E03E38
01FFFE6C13F8EB1FC017227DA01E>I<00F0131EAEB512FEA338F0001EAF17207C9F20>I<
12F0B3AE04207C9F0D>I<00F0EB1F801500143E5C5C495A495A495A495A49C7FC133E5B
5B12F1EAF3FC12F7EAFF9E131F487E486C7E00F87FEAF0038013016D7E80147880143E14
1E80158019207C9F20>75 D<12F0B3ABB512C0A312207C9F19>I<00F8147E6C14FEA200
F414DE00F61301A300F3EB039EA2EB8007A200F1141EEBC00FA200F0130EEBE01EA2EB60
1CEB703CA2EB3038EB3878A2EB1870EB1CF0A2EB0CE0A2EB07C0A390C7FC1F207C9F28>
I<00FC131E7EA212F7A2138012F3A2EAF1C0A213E012F013F013701378A2133CA2131C13
1E130E130F1307A2EB039EA214DE1301A2EB00FEA2147E17207C9F20>I<EB1F80EBFFF0
487F3803E07C3807801E48487E001EEB078048EB03C0A248EB01E0A30070130000F014F0
A86C1301007814E0A2007C1303003C14C0003E1307001E14806CEB0F00EBC03F3807E07E
3801FFF86C5BEB1F801C227EA021>I<EAFFFEEBFF8014E038F003F0130014781438143C
A51438147814F01303B512E01480EBFE0000F0C7FCAD16207C9F1D>I<EB1F80EBFFF048
7F3803E07C3807801E48487E001EEB0780003E14C0003C130348EB01E0A30070130000F0
14F0A90078EB01E0A2130F393C0783C0003E13C7D81E031380390F01EF00EB81FF3807E0
FE3801FFF86C7FEB1FBCEB003E80801580EC07C01C277EA021>I<EAFFFEEBFF8014E038
F003F0EB00F81478143CA5147814F8EB03F0B512E01480EBFE00EAF01E130E130FEB0780
A2EB03C0A2EB01E0A2EB00F014701478143CA2141E17207C9F1D>I<EA01FC3807FF8000
1F13C0EA3E03EA7C00007813005AA57E127C127EEA3FE0EA1FFCEA07FF0001138038003F
C0EB07E01303EB01F01300A5EB01E012C038F003C0EAFC0F387FFF80381FFE00EA03F814
227EA019>I<B612C0A3D8001EC7FCB3AB1A207E9F1F>I<00F0133CB3A700781378A26C13
F0EA3E01381F03E0380FFFC000031300EA00FC16217C9F1F>I<00F0EB01E0A2007814C0
1403A26CEB0780A36CEB0F00A36C131EA2138000075BA23803C0381478A23801E07014F0
A26C6C5A13F1A2EB71C0137BEB3B80A2133F6DC7FCA21B207F9F1E>I<00F0017C130F14
7EA20078016E130E02EE131E14E7A26C153C0101138014C714C3001E1578010313C01483
000E01811370000F15F0010713E014010007010013E0018713E1018F13F1138E0003EC71
C0A201CE1373D801DCEB7B80153BA213D8D800F8EB1F00A328207F9F2B>I<0078EB0780
007C130F6CEB1F00001E131E001F133E6C6C5A000713786C6C5A13E13801F1E03800F3C0
137F5C6DC7FC7F131E133F80497E13F33801F1E0EBE0F048487E00071378497E380F003E
48131E001E7F481480007CEB07C0007813034814E01B207F9F1E>I<00F814F8007CEB01
F0003C14E0003E13036C14C06CEB0780EB800FD807C0130000035BEBE01E6C6C5A000013
7CEB78785C133CEB1CE0131F6D5A6D5AAE1D20809F1E>I<EAFF80A3EAF000B3B3A3EAFF
80A3092D7DA10D>91 D<EAFF80A31207B3B3A312FFA3092D80A10D>93
D<EA07E0EA3FF8EA7FFCEA701EEA401FEA000FA3133FEA07FF121FEA7E0F12F812F0A3EA
F83FEA7FFFEA3FEFEA1F8F10147E9316>97 D<12F0ACEAF1F0EAF7FCB47EEAFC1F38F80F
80EAF007A2EB03C0A6EB0780A238F80F00EAFC3FEAFFFEEAF7FCEAF1F012207D9F17>I<
EA01FCEA07FF001F1380EA3E07EA3C0148C7FCA25AA61278A26C1380EA3E07EA1FFF0007
1300EA01F811147F9314>I<EB03C0ACEA03E3EA0FFBEA1FFFEA3F0FEA7C031278A212F0
A61278A2EA7C07EA3E0FEA1FFFEA0FFBEA03E312207F9F17>I<EA03F0EA0FFC487EEA3E
1FEA7C07127838700380B5FCA300F0C7FCA3127012786C1380EA3E07EA1FFF00071300EA
01F811147F9314>I<137EEA01FE1203EA078013005AA7EAFFF0A3EA0F00B10F20809F0E>
I<3803E0F0EA0FFF5A383E3E00EA3C1E487EA5EA3C1EEA3E3EEA1FFC485AEA33E00030C7
FC1238EA3FFEEBFF806C13C0007F13E0387803F0EAF000A3EAF801387E07E0383FFFC000
0F1300EA03FC141E7F9317>I<12F0ACEAF1F8EAF3FCEAF7FEEAFC1FEAF80FA212F0AE10
207D9F17>I<12F0A41200A812F0B3A204207D9F0B>I<12F0AC131F131E5B5B5BEAF1E0EA
F3C0EAF780B47EA27FEAF9F012F8487E137CA27F131E131FEB0F8011207D9F16>107
D<12F0B3AE04207D9F0B>I<39F0FC07E039F3FE1FF039F7FF3FF839FE0FF07C39F807C0
3CA200F01380AE1E147D9325>I<EAF1F8EAF3FCEAF7FEEAFC1FEAF80FA212F0AE10147D
9317>I<EA01F8EA07FE381FFF80383F0FC0EA3C03387801E0A238F000F0A6387801E0A2
383C03C0EA3F0F381FFF803807FE00EA01F814147F9317>I<EAF1F0EAF7FCB47EEAFC3F
38F80F80EAF007A2EB03C0A6EB0780A238F80F00EAFC3FEAFFFEEAF7FCEAF1F000F0C7FC
A9121D7D9317>I<3803E3C0EA0FFBEA1FFFEA3F0FEA3C07EA7803A212F0A61278A2EA7C
07EA3F0FEA1FFFEA0FFBEA03E3EA0003A9121D7F9317>I<EAF0E012F312F7EAFF0012FC
A25AA25AAC0B147D9310>I<EA0FF0EA3FFC127FEA780CEAF000A312FCEA7FE0EA3FF0EA
1FF8EA03FCEA003E131EA212C0EAF03CEAFFFCEA7FF8EA0FE00F147F9311>I<121EA6EA
FFF0A3EA1E00AD1310EA0FF8A2EA07E00D1A7F9910>I<EAF00FAF131F133FB5FCEA7FEF
EA3F0F10147D9317>I<38F003C0A212F838780780A2383C0F00A3EA1E0E131EA2EA0F1C
133CA2EA0738A213B8EA03F0A26C5A12147F9315>I<D8F01F13F01480A239781B81E013
3B14C11339393C31C3C0137114E3D81C701380EA1E6014E713E0000EEB770013C0A20007
137E143E13801C147F931F>I<387801E0387C03C0383E0780EA1E0F000F1300EA079EEA
03FC5B12016C5A12017F487EEA079EEA0F0F120E381E0780383C03C0387801E000F813F0
1414809315>I<38F003C0A238780780A2127C383C0F00A2121E131EA2EA0F1CA2EA073C
133813B8120313B0EA01F05B1200A2485AA212035B1207B4C7FC5A5A121D7F9315>I
E /Fo 42 123 df<12F8A505057B8410>46 D<13301370EA01F0120F12FFA212F11201B3
ACB512E0A313287BA71D>49 D<13FE3803FF80000F13C04813E0EB07F0383C01F8387800
FC147C127000F0133EA212601220C7FCA3147CA2147814F8EB01F014E01303EB07C0EB0F
80EB1F00133E5B5B485A485A5B485A48C7FC121E5A387FFFFEA417287EA71D>I<137E38
03FF804813E0001F13F0383F83F8EA3E0048137C123812301210C7FCA214F8A21301EB03
F0EB0FE03801FFC0148014C014E0380001F8EB00FC147C143EA2141FA57E6C133E7E6C13
7E007C13FC383F01F8381FFFF06C13E0000313C03800FE0018297EA71D>I<EB07E0130F
130B131BA2133BA21373A213F3A2EA01E3A2120313C31207EA0F83A2EA1F03A2123EA212
7CA212F8B6FCA4380003E0AA18277EA61D>I<383FFFF8A4003EC7FCAA133EEBFF80003F
13E014F013C1EB00F8147C123EC7FC143EA712400060137C12E06C13F8EA7801387F07F0
383FFFE0000F13C06C1300EA01FC17287EA61D>I<EB0FE0EB3FF813FF5A3803F0183807
E000EA0F8090C7FC5A123EA2123C127C1302EB3FC038F8FFE000F913F000FB13F838FF80
FC38FE007C143E5A143F141F5AA41278127CA2141E003C133E123E001E137C001F13FC38
0FC1F83807FFF06C13E06C138038007E0018297EA71D>I<EB03F0A2497EA21478497EA3
EB1E3E141EA2EB3E1F133C90387C0F80A213789038F807C0A213F000016D7EA213E00003
6D7EA213C000076D7E90B5FCA24880903880007C90C7FC4880A2121E003E80A2123C007C
EC0F80A24815C01507A2222A7EA927>65 D<EB03FF010F13E0013F13F890B5FC3801FE01
3903F80070D807E01310491300485A121F90C8FC123EA25AA45AAA127CA47EA27E7F120F
6C7E6D1308D803F813383901FE01F86CB5FC013F13F0010F13C0903803FE001D2C7CAA25
>67 D<B512E014FC14FF39F8007F80EC0FC06E7EEC01F06E7EA2157C81A2151E151FA281
1680AA16005DA3153EA25DA25D4A5A4A5AEC0FC0EC3F80B6C7FC14FC14E0212A7BA92A>
I<B612C0A400F8C8FCAEB6FCA400F8C8FCB0B612E0A41B2A7BA923>I<EB03FE90380FFF
C0013F13F84913FC3801FE013903F8007CD807E01318491300485A121F90C8FC123EA212
7E127CA35AA7EC3FFCA3127CEC007CA2127E123EA27E7F120F6C7E7FEA03F83901FE01FC
38007FFF6D13F8010F13C0903803FE001E2C7CAA27>71 D<00F8147CB2B612FCA400F8C7
127CB3A21E2A7BA929>I<12F8B3B3A6052A7BA910>I<00FE15FFA36C5C00FB15DF6D1303
A3D8F9C0EB079FA36D130F00F8151FA26D131F0170131EA20178133E0138133C013C137C
A2011C1378011E13F8A2010E13F0EB0F01A2010713E01483A2010313C014C7A201011380
14EFA20100130014FF147EA391C7FC282A7BA933>77 D<EB03FCEB0FFF013F13C090B512
F03901FE07F83903F801FC3907E0007E48487F497F48C7EA0F80A2003EEC07C0A248EC03
E0A30078140100F815F0AA007CEC03E0A3007E1407003E15C0A26CEC0F806D131F000F15
006D5B6C6C137E3903F801FC3901FE07F86CB55A013F13C06D5BD903FCC7FC242C7DAA2B
>79 D<B512C014F814FE38F8007FEC1F80EC07C0140315E0140115F0A615E01403A2EC07
C0EC1F80EC7F00B512FE5C14F000F8C8FCB21C2A7BA925>I<B512E014FC14FF39F8003F
80EC0FC0EC03E0EC01F0A2EC00F8A6EC01F0A2EC03E0140FEC3FC0B61280ECFE0014F814
E0EAF801806D7EA2147C143C143E141E141FEC0F80A2EC07C0A2EC03E0140115F0EC00F8
A2157C1E2A7BA926>82 D<B712E0A4260001F0C7FCB3B3A2232A7EA928>84
D<EA01FC380FFF80003F13C014E0383C03F0EA3001000013F81300A4130113FF1207121F
EA3FC0EA7E005A5AA3EAFC01EA7E07EA7FFF7EEA1FFCEA0FE0151B7E9A1C>97
D<12F8AF133F38F9FFC000FB13E0B512F0EB07F8EAFC0138F800FC147CA2143EA8147E14
7CA26C13F8130138FF07F0EBFFE000FB13C000F9138038F87E00172A7CA91E>I<EB7F80
3801FFE0000713F85A381FC078383F0010003E13005AA35AA7127CA37E003F1318381FC0
78380FFFF87E000113E038007F80151B7E9A1A>I<143EAFEA01FCEA03FF000F13BE4813
FE13C1383F007E003E133E5AA212FC5AA77E127CA2007E137E6C13FEEA1FC113FF6C13BE
3803FE3EEA01F8172A7EA91E>I<13FCEA03FF4813804813C0381F87E0EA3F01383E00F0
5A1470481378B512F8A400F8C7FCA31278127CA27E003F1318381FC0F8EA0FFF7E000113
E038007F00151B7E9A1A>I<EB3FC013FF5A5A3807E0005B485AA9EAFFFEA3EA0F80B3A6
122A7FA912>I<90387C07803901FF3FC0000713FF5A903883E000381F01F0A2383E00F8
A56C485AA2380F83E013FF485B001D90C7FCEA1C7C003CC8FCA2123E381FFFE014F86C13
FE487F481480387E003F007CEB0FC0481307A46C130F007EEB1F80393F807F00381FFFFE
6C5B000313F038007F801A287F9A1D>I<12F8AF133FEBFFC000FB13E0B512F0138338FE
01F8EAFC00A35AB2152A7CA91E>I<12F8A51200AA12F8B3A9052A7CA90E>I<13F8A51300
AA13F8B3AF1240EAE3F012FF13E0EA7FC0EA1F800D3683A90F>I<12F8B3B3A6052A7CA9
0E>108 D<D8F83F133F9039FFC0FFC000FB01E313E0B500F713F0018313833AFE01FE01
F839FC00FC00A3485BB2251B7C9A2E>I<EAF83FEBFFC000FB13E0B512F0138338FE01F8
EAFC00A35AB2151B7C9A1E>I<137E3801FF80000713E04813F0381F81F8383F00FC003E
137C48133EA20078131E00F8131FA7007C133EA36C137C003F13FC381FC3F8380FFFF06C
13E06C13C038007E00181B7E9A1D>I<EAF83F38F9FFC000FB13E0B512F0EB07F8EAFC01
38F800FCA2147C147E143EA7147E147C14FC6C13F8130138FF07F0EBFFE000FB13C000F9
138038F87E0090C7FCAC17277C9A1E>I<EBFC3EEA03FF4813BE4813FEEA1FC1EA3F0000
3E137E007E133E127C12FC5AA77E127C127E147E6C13FEEA1FC113FF6C13BE3807FE3EEA
01F8C7FCAC17277E9A1E>I<EAF83C13FC12F912FBEAFFE0138013005A5AA35AB00E1B7C
9A14>I<EA07F8EA1FFF4813805AEA7C0738F8010090C7FCA37E127F13F0EA3FFC6C7EEA
07FFC61380EB1FC0130F1307A2124012E038FC1F80B5FC6C1300EA1FFEEA07F8121B7E9A
16>I<EA0F80A7B51280A3380F8000B2148013C33807FFC0A26C1300EA01F812227FA115>
I<00F813F8B3A213011303EAFC07B5FCEA7FFEEA3FF8EA1FC0151B7C9A1E>I<007CEB1F
80007EEB3F006C133E6C5B380F80FC6C6C5AEBE1F03803E3E0EA01F76CB45A6D5A91C7FC
133EA2133F497E497E3801F3E0EA03E1803807C0F8380F807C121F497E003E7F007E1480
48EB0FC01A1B809A1B>120 D<00F8131F7E007C133EA27E147CA27E14F81380000F13F0
1381EA07C114E013C31203EBE3C0120113E71480EA00F714001377A2137E133EA2133CA2
137C1378A25BA21201EA7FE05B5B90C7FC18277F9A1B>I<B512F8A314F0EA0003EB07E0
14C0130FEB1F801400133E137E5B5B1201485A5B485A120F485A90C7FC5A127E387FFFF8
B5FCA3151B7E9A19>I E /Fp 12 121 df<BA12FCA4D8001F90268000017FEF001F1807
180318011800197E193E193F85A385A40578EB0780A496C7FCA217F8A316011603161F92
B5FCA4ED801F160316011600A31778A21AF0A3F101E094C7FCA41903A21AC01907A3190F
191FA2F13F80197F19FF1803180F95B5FCBBFC1A00A344477CC64C>69
D<B712F0A4D8001FEB8000B3B3B3A9B712F0A424477DC62B>73 D<90380FFFF090B6FC00
0315C03A07F8007FF0486CEB1FFCED07FE486C6D7E838183816C48816C5A6C5AC9FCA515
7F023FB5FC0103B6FC011F13F090387FFE003801FFE0481380D80FFEC7FC485A5B123F48
5AA2485AA45DA26C6C5BED077F6C6C130F6C6C013E13F83C0FFF80F83FFFE000039038FF
F01FC6ECC00F90390FFE0003332E7CAD38>97 D<91381FFFC049B512FC010714FF903A1F
F8007F80D97FE0EBFFC0EBFF8048494813E0485A1207485AA248486D13C0003FED7F80EE
3F00007F92C7FC5BA312FFAA127FA27FA2123FA26C6C15F0120F6DEC01E012076C6CEC03
C06C6DEB07806C6DEB0F00D97FF0133E90391FFC01FC0107B512F0010114C09026001FFC
C7FC2C2E7CAD34>99 D<EC1FFC49B512C0010714F090391FF80FFC90397FC001FE49486C
7E4890C7EA7F804848EC3FC04848EC1FE0120F484815F0160F003F16F8A25B007F150717
FCA212FFA290B7FCA301F0C9FCA5127FA36C7EA2001F163CA26C7E17786C6C15F86C6CEC
01F06C6DEB03E06C6DEB07C0D93FE0EB1F80903A1FFC01FF000107B512FC010014E0020F
90C7FC2E2E7DAD35>101 D<EDFFC0021F13F0027F13FC903901FFC0FE49EB01FF903807
FC034948481380131FEB3FF0137F14E001FF6D13006F5A6F5A163093C7FCABB612FEA4C6
01E0C8FCB3B3A2007FEBFFF0A429487DC724>I<EB7FC0B5FCA412037EB3B3B3A8B61280
A419487CC720>108 D<9039FF8007FEB590383FFFC04B13F0913981F81FF8913983C00F
FC00039039870007FE6C138E029C8002B87F188014F0A25CA35CB3A9B60081B6FCA4382E
7BAD41>110 D<90397F803F80B5EBFFE0028113F8913883C3FC91388707FE0003138E6C
90389C0FFF14B8A214F0A2ED07FE9138E003FCED01F892C7FCA25CB3A8B612E0A4282E7D
AD2F>114 D<90390FFE01C090B512C7000314FF3807F801390FC0007F48C7121F48140F
007E1407A2150312FEA27E7F01E090C7FC13F8387FFFC014FF6C14E015F86C806C14FF6C
1580000115C06C6C14E0131F010014F014039138007FF80070141F00F0140F15077E1503
A26C15F0A27E6CEC07E07F6DEB0FC001F0EB1F80D8FEFCEBFF0039F87FFFFCD8F01F13F0
D8E0031380252E7CAD2E>I<EB01E0A61303A31307A3130FA2131F133FA2137FEA01FF5A
000F90B512C0B7FCA3C601E0C7FCB3A616F0A9017F14E0ECF001133FED03C0D91FF81380
90390FFE0F00903807FFFE01015B9038001FF024427EC12D>I<B500FE90381FFFFCA4C6
01E0903803FE006EEB01F86D6C5C6D6C495A011F4A5A6D6C495A6E49C7FC6D6D5A6DEBC0
7E6D147C6D6D5AEDF1F091387FFBE06EB45A806E5B93C8FC6E7F6E7F6E7FA24A7F4A7F82
91380F9FFEEC1F0F91383E07FF027C804A6C7F01016D7F49487E4A6D7E49488049486D7E
49C76C7E013E140F017E6E7E48B41680B500E0017F13FFA4382E7EAD3D>120
D E /Fq 8 117 df<EC0FF8ECFFFE0103EBFF8090390FF80FC090391FE003E090397F80
01F09038FF0003484813074848EB0FF8151F485A120F5B001FEC0FF0ED07E0003FEC03C0
92C7FC5B127FA3EC7FF039FFE1FFFC01E37F9039E7007F8001EEEB3FC001ECEB1FE001F8
14F0A249EB0FF8A216FCA24914FEA4127FA5123FA216FC6C7E16F8120FED1FF06C7E6C6C
EB3FE06C6CEB7FC03A00FF81FF8090397FFFFE006D5B010F13F00101138027397CB730>
54 D<DB1FFE14600203B500E013E0021FECF801027FECFE03903B01FFFC00FF07010701
C0EB1FCF4990C7EA07FFD91FFC1401D93FF0804948157F4948153F4849151F4890C9120F
5A48481607A248481603A2485A1801A2127FA24993C7FCA212FFAB127FA27FF001E0123F
A36C7EF003C06C7EA26C6CEE07807E6C6DED0F006C6D5D6D6C153E6D6C5DD91FFC5D6DB4
EC03F06D01C0EB0FE0010101FCEB7F806D6CB6C7FC021F14FC020314E09126001FFEC8FC
3B3D7BBB46>67 D<EB3FFE48B512E0000714F8390FE007FC9038F001FE486C6C7E6F7E82
153F6C48806C5A6C5AC8FCA491B5FC131F90387FF83F3803FF803807FC00EA0FF0485A12
3F485AA2485AA4157F6C7E15DF3A3FE0039FF03B1FF80F0FFFE03807FFFE0001497E3900
3FE0002B267DA52F>97 D<49B47E010F13F0017F13FC9038FF81FE3A03FE007F80D807F8
133F4848EB1FC0ED0FE0485A003F15F01507485A16F8A212FFA290B6FCA301C0C8FCA412
7FA36C7E1678121F7F000F15F06C6C13016C6CEB03E06C6CEB0FC03A00FFC07F8090393F
FFFE00010F13F8010013C025267DA52C>101 D<13FE12FFA412071203B0EDFF80020313
F0020F7F91381E03FC91383801FE02607F4A7E01FF15805C91C7FCA35BB3A4B5D8F83F13
FEA42F3C7CBB36>104 D<9038FE01FF00FF011F13F0027F13FC9138FC07FE9039FFF001
FF00079039C0007F806C90C7EA3FC04915E0EE1FF017F8160F17FCA2160717FEA917FC16
0FA317F8EE1FF0A26DEC3FE06EEB7FC06EEBFF806E4813009039FEFC07FE91387FFFF802
1F13E0DA03FEC7FC91C9FCADB512F8A42F377DA536>112 D<3901FC03F000FFEB0FFC4A
B4FC91383C3F80EC707F00079038E0FFC000035BEBFD80A201FFEB7F809138003F00151E
92C7FC5BB3A3B512FCA422267DA528>114 D<130FA55BA45BA25BA25B5A5A5A001FEBFF
F0B6FCA3000190C7FCB3153CA86C14781480017F13F090383FC1E090381FFFC06D138090
3801FE001E377EB626>116 D E /Fr 81 124 df<90381F83E09038F06E303901C07878
380380F8903800F03048EB7000A7B612803907007000B2383FE3FF1D20809F1B>11
D<133FEBE0C0EA01C0380381E0EA0701A290C7FCA6B512E0EA0700B2383FC3FC1620809F
19>I<EB3FE013E0EA01C1EA0381EA0700A8B5FCEA0700B2383FE7FC1620809F19>I<9038
1F81F89038F04F043901C07C06390380F80FEB00F05A0270C7FCA6B7FC3907007007B23A
3FE3FE3FE02320809F26>I<EA7038EAF87CEAFC7EA2EA743AEA0402A3EA0804A2EA1008
A2EA2010EA40200F0E7F9F17>34 D<9038018030A449485AA501065BA549485A007FB6FC
B7128026001803C7FCA2EB3006A4495AA2B712806C15002600C018C7FC48485AA548485A
A500065BA321297E9F26>I<D807801318EA1840486C5B011813E03960170360903808FC
C000E0EB0180A24AC7FC1406A25C00605B131000305B495AEA1840380780C03900018078
EC8184903803030281EB0607EB0C0691380E008013181330A2136013C0A23A0180060100
3803000714030006140248EB01840004EB007821257EA126>37 D<127012F812FCA21274
1204A31208A21210A212201240060E7C9F0D>39 D<13401380EA01005A12061204120C5A
A212381230A212701260A412E0AC1260A412701230A212381218A27E120412067E7EEA00
8013400A2E7BA112>I<7E12407E12307E1208120C7EA212077EA213801201A413C0AC13
80A412031300A25A1206A25A120812185A12205A5A0A2E7EA112>I<1303AFB612FCA2D8
0003C7FCAF1E207E9A23>43 D<127012F012F8A212781208A31210A31220A21240050E7C
840D>I<EAFFF0A20C02808A0F>I<127012F8A3127005057C840D>I<144014C0EB0180A3
EB0300A31306A25BA35BA35BA25BA35BA3485AA348C7FCA21206A35AA35AA25AA35AA35A
A2122D7EA117>I<EA03F0EA0E1C487EEA1806EA380738700380A400F013C0AD00701380
A3EA780700381300EA1806EA1C0E6C5AEA03F0121F7E9D17>I<13801203120F12F31203
B3A6EA07C0EAFFFE0F1E7C9D17>I<EA03F0EA0C1CEA100E487E00401380128000F013C0
EAF803A3EA200712001480A2EB0F00130E5B5B5B13605B485A48C7FC000613405A5A0010
1380EA3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA200F007813801307A2EA38
0F12001400A2131E131C1370EA07F0EA003C130E130FEB0780A214C0122012F8A300F013
801240EB0F00EA200EEA183CEA07F0121F7E9D17>I<1306A2130EA2131E132EA2134E13
8EA2EA010E1202A212041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F
9D17>I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161CEA180EEA10071480EA0003
A214C0A3127012F0A200E013801240EB0700EA20066C5AEA0838EA07E0121F7E9D17>I<
137CEA0182EA0701380E0380EA0C0712183838030090C7FC12781270A2EAF1F0EAF21CEA
F406EAF807EB0380A200F013C0A51270A214801238EB07001218EA0C0E6C5AEA01F0121F
7E9D17>I<1240387FFFE014C0A23840008038800100A21302485AA25B5BA25BA21360A2
13E05B1201A41203A76C5A131F7E9D17>I<EA03F0EA0C0CEA1006EA3003382001801260
A3127038780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C7EEA103F38300F80EA6007
EB01C012C01300A31480EA600100201300EA1002EA0C0CEA03F0121F7E9D17>I<EA03F0
EA0E18487E487E13071270EB038012F0A214C0A5EA7007A21238EA180BEA0E13EA03E338
000380A3EB07001230EA7806130EEA700CEA2018EA1070EA0FC0121F7E9D17>I<127012
F8A312701200AA127012F8A3127005147C930D>I<127012F8A312701200AA127012F012
F8A212781208A31210A31220A21240051D7C930D>I<007FB512F8B612FCC9FCA8B612FC
6C14F81E0C7E9023>61 D<5B497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA2EBC03E
EB801EA248B5FCEB000FA20002EB0780A348EB03C0A2120C001E14E039FF801FFE1F207F
9F22>65 D<B512E0380F0078141EA2801580A515005C141E147CEBFFF0EB007C141FEC0F
80EC07C0140315E0A515C014071580EC0F00143EB512F01B1F7E9E20>I<90380FE01090
38381C309038E002703803C00139078000F048C71270121E15305A1510127C127800F814
00A91278007C1410123CA26C1420A27E6C6C13406C6C13803900E00300EB380CEB0FF01C
217E9F21>I<B512F83807801EEC0780EC03C0EC01E0EC00F015701578A2153CA3153EA8
153CA2157C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F7F9E23>I<B6128038
0F000F14031401140015C01540A314401500A214C0130113FF130113001440A3EC0020A3
1540A315C01401EC0380140FB6FC1B1F7E9E1F>I<B61280380780071401A2140015C015
40A4EC2000A3146014E013FF138014601420A391C7FCA87FEAFFFE1A1F7F9E1E>I<9038
0FE0109038381C309038E002703803C00139078000F048C71270121E15305A1510127C12
7800F81400A7EC3FFEEC01F000781300127C123CA27EA27E6C7E3903C001703900E00230
9038380C1090380FF0001F217E9F24>I<39FFF07FF8390F000780AD90B5FCEB0007AF39
FFF07FF81D1F7E9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<39FFF007FC390F00
03E0EC0180150014025C5C5C5C5C5C49C7FC5B497E130FEB13C0EB21E01341EB80F0EB00
78A28080A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E9E23>75
D<EAFFF8EA0F8090C7FCB21402A414061404A2140C141C147CB512FC171F7E9E1C>I<B4
6CEB07FE000715C0A2D805C0130BA2D804E01313A301701323A26D1343A36D1383A29038
0E0103A3EB0702A3EB0384A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>
I<B4EB0FF8390F8003E0EC0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03
C0EB01E0A2EB00F01478A2143C141EA2140F1407A214031401123E38FF80001D1F7E9E22
>I<EB1FE0EB70383801C00E48487E39070003804814C0001EEB01E048EB00F0A2007C14
F8A20078147800F8147CA900781478007C14F8A2003C14F0003E1301001E14E06CEB03C0
6C148039038007003801E01E38007038EB1FE01E217E9F23>I<B512E0380F007C141E80
EC0780A215C0A41580A2EC0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<B57E
380F00F0143C8080A21580A41500A2141E5C14F0EBFF80EB01C0EB0070A280143CA3143E
A31504143F141FEC0F0839FFF00788C7EA01F01E207E9E21>82 D<3803F040380C0CC0EA
1803EA3001EA6000A212E01440A36C13007E127CEA7F80EA3FF86CB4FC00071380C613C0
EB1FE013031301EB00F014707EA46C136014E06C13C038F8018038C60300EA81FC14217E
9F19>I<007FB512E038780F010060EB006000401420A200C0143000801410A400001400
B3497E3803FFFC1C1F7E9E21>I<39FFF00FF8390F0003E0EC0080B3A46CEB0100138012
0314026C6C5A6C6C5AEB3830EB0FC01D207E9E22>I<39FFF003FE391F8000F86CC71260
15206C6C1340A36C6C1380A2EBE00100011400A23800F002A213F8EB7804A26D5AA36D5A
A2131F6D5AA2EB07C0A36D5AA36DC7FC1F207F9E22>I<3BFFF07FF81FF03B1F000FC007
C06C903907800180170015C001805C00071502EC09E013C000035DEC19F01410D801E05C
A2EC2078D800F05CA2EC403C01785CA2EC801E017C1460013C144090383D000F133F6D5C
A2011E1307010E91C7FCA2010C7F010413022C207F9E2F>I<397FF81FF8390FE007C039
07C0030000031302EBE0063801F00400005BEBF818EB78106D5AEB3E60EB1E406D5AA213
076D7E497E1305EB08F0EB18F8EB1078EB207CEB603EEB401EEB801F3901000F80140700
0214C000061303001FEB07E039FFC01FFE1F1F7F9E22>I<39FFF001FF391F800078000F
146012076D1340000314807F3901F001001200EBF802EB7C06EB3C04EB3E08131EEB1F10
EB0FB0EB07A014E06D5AACEB3FFC201F7F9E22>I<12FFA212C0B3B3A512FFA2082D7CA1
0D>91 D<EA0804EA1008EA2010A2EA4020A2EA8040A3EAB85CEAFC7EA2EA7C3EEA381C0F
0E7A9F17>I<12FFA21203B3B3A512FFA2082D80A10D>I<EA1FE0EA3030EA7818131CEA30
0E1200A313FEEA078EEA1E0E1238127800F01310A3131E127838386720380F83C014147E
9317>97 D<121C12FC121CAA137CEA1D87381E0180EB00C0001C13E01470A21478A61470
14F014E0001E13C0381A018038198700EA107C15207E9F19>I<EA01FCEA0706EA1C0F12
3813060078C7FC127012F0A61270127800381380A2381C0100EA0706EA01F811147F9314
>I<EB01C0130F1301AAEA01F1EA070DEA0C03EA180112381278127012F0A61270A21238
EA1803120CEA070D3801F1F815207F9F19>I<EA03F0EA0E1C487E487EA21270EB038012
F0A2B5FC00F0C7FCA31270A26C1380A2381C0100EA0706EA01F811147F9314>I<137CEA
01C6EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE01020809F0E>I<14E03803E330
EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE
381FFF8014C0383001E038600070481330A4006013606C13C0381C03803803FC00141F7F
9417>I<121C12FC121CAA137C1386EA1D03001E1380A2121CAE38FF8FF014207E9F19>I<
1238127CA31238C7FCA6121C12FC121CB1EAFF80091F7F9E0C>I<13E0EA01F0A3EA00E0
1300A61370EA07F012001370B3A31260EAF06013C0EA6180EA3F000C28829E0E>I<121C
12FC121CAAEB1FE0EB0780EB060013045B5B5B136013E0EA1DF0EA1E70EA1C38133C131C
7F130F7F148014C038FF9FF014207E9F18>I<121C12FC121CB3ABEAFF8009207F9F0C>I<
391C3E03E039FCC30C30391D039038391E01E01CA2001C13C0AE3AFF8FF8FF8021147E93
26>I<EA1C7CEAFC86EA1D03001E1380A2121CAE38FF8FF014147E9319>I<EA01F8EA070E
381C0380383801C0A2387000E0A200F013F0A6007013E0A2383801C0A2381C038038070E
00EA01F814147F9317>I<EA1C7CEAFD87381E018014C0381C00E014F014701478A61470
14F014E0381E01C0EB0380381D8700EA1C7C90C7FCA8B47E151D7E9319>I<3801F04038
070CC0EA0E02EA1C03EA38011278127012F0A6127012781238EA1C03EA0C05EA0709EA01
F1EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD18EA1E3CA21318EA1C00AEEAFFC00E14
7E9312>I<EA0FC8EA3038EA6018EAC008A3EAE000127CEA3FE0EA1FF0EA07F8EA003CEA
800E130612C0A21304EAE00CEAD818EA87E00F147F9312>I<1202A31206A2120EA2123E
EAFFF8EA0E00AB1304A5EA07081203EA01F00E1C7F9B12>I<381C0380EAFC1FEA1C03AE
1307120CEA061B3803E3F014147E9319>I<38FF83F8383E00E0001C13C06C1380A33807
0100A21383EA0382A2EA01C4A213E4EA00E8A21370A3132015147F9318>I<39FF9FE1FC
393C078070391C030060EC8020000E1440A214C0D80704138014E0A239038861001471A2
3801D032143A143E3800E01CA2EB6018EB40081E147F9321>I<38FF87F8381E03C0380E
0180EB0300EA0702EA0384EA01C813D8EA00F01370137813F8139CEA010E1202EA060738
040380000C13C0003C13E038FE07FC16147F9318>I<38FF83F8383E00E0001C13C06C13
80A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A31320A25BA3EAF080A200
F1C7FC1262123C151D7F9318>I<EA7FFFEA700E1260EA401C133813781370EA00E01201
13C0EA038012071301120E121EEA1C03EA3802EA7006130EEAFFFE10147F9314>I<B512
FC1601808C17>I E /Fs 46 122 df<127012F812FCA212741204A41208A21210A21220
1240060F7C840E>44 D<EAFFF8A20D02808B10>I<127012F8A3127005057C840E>I<EA01
F0EA071CEA0C06487E00381380A2387001C0A400F013E0AE007013C0A3EA780300381380
A2381C0700EA0C06EA071CEA01F013227EA018>48 D<13801203120F12F31203B3A9EA07
C0EAFFFE0F217CA018>I<EA03F8EA0C1EEA100F38200780004013C01278130313071238
00001380A214005B130C1338EA03F0EA001C130FEB0780A2EB03C0A214E01220127012F8
A200F013C01240EB0780122038100F00EA0C1CEA03F013227EA018>51
D<1303A25BA25B1317A21327136713471387120113071202120612041208A212101220A2
124012C0B512F838000700A7EB0F80EB7FF015217FA018>I<00101380381E0700EA1FFF
5B13F8EA17E00010C7FCA6EA11F8EA120CEA1C07381803801210380001C0A214E0A41270
12F0A200E013C01280EA4003148038200700EA1006EA0C1CEA03F013227EA018>I<137E
EA01C138030080380601C0EA0C03121C381801800038C7FCA212781270A2EAF0F8EAF30C
EAF4067F00F81380EB01C012F014E0A51270A3003813C0A238180380001C1300EA0C06EA
070CEA01F013227EA018>I<12401260387FFFE014C0A23840008038C0010012801302A2
485A5BA25B5BA21360134013C0A21201A25B1203A41207A76CC7FC13237DA118>I<EA01
F8EA060EEA0803381001801220386000C0A31270A238780180003E1300EA3F02EA1FC4EA
0FF812036C7EEA067EEA083F38100F80383007C0EA6003EB00E05A1460A40060134014C0
6C138038180300EA0E0EEA03F013227EA018>I<EA01F0EA060C487EEA18073838038012
70A238F001C0A314E0A5127013031238EA1805120CEA0619EA03E1380001C0A3EB0380A2
1230387807001306EA700CEA20186C5AEA0FC013227EA018>I<497EA3497EA3EB05E0A2
EB09F01308A2EB1078A3497EA3497EA2EBC01F497EA248B51280EB0007A20002EB03C0A3
48EB01E0A348EB00F0121C003EEB01F839FF800FFF20237EA225>65
D<903807E0109038381830EBE0063901C0017039038000F048C7FC000E1470121E001C14
30123CA2007C14101278A200F81400A812781510127C123CA2001C1420121E000E14407E
6C6C13803901C001003800E002EB381CEB07E01C247DA223>67 D<B612C0380F80070007
130114001540A215601520A314201500A3146014E013FF138014601420A315081400A215
10A31530A2157015E0000F1303B6FC1D227EA121>69 D<B612C0380F8007000713011400
1540A215601520A314201500A3146014E013FF138014601420A491C7FCA9487EEAFFFE1B
227EA120>I<EAFFFCEA0FC0EA0780B3ACEA0FC0EAFFFC0E227EA112>73
D<D8FFC0EB03FF000F15F0000715E0D805E01305A2D804F01309A301781311A36D1321A3
6D1341A26D1381A39038078101A3EB03C2A2EB01E4A3EB00F8A31470120E001FEC03F03A
FFE0203FFF28227EA12D>77 D<39FF8007FF3907C000F81570D805E01320EA04F0A21378
137C133C7F131F7FEB0780A2EB03C0EB01E0A2EB00F014F81478143C143E141E140FA2EC
07A0EC03E0A21401A21400000E1460121FD8FFE0132020227EA125>I<B512F0380F803C
0007130FEC078015C0140315E0A615C014071580EC0F00143CEBFFF00180C7FCAE487EEA
FFFC1B227EA121>80 D<B512E0380F803C0007130E6E7E81140381A55D14075D020EC7FC
143CEBFFE0EB80708080141E140E140FA481A3168015C014073A0FC003C10039FFFC01E2
C8127C21237EA124>82 D<3803F020380C0C60EA1802383001E0EA70000060136012E0A2
1420A36C1300A21278127FEA3FF0EA1FFE6C7E0003138038003FC0EB07E01301EB00F0A2
14707EA46C1360A26C13C07E38C8018038C60700EA81FC14247DA21B>I<007FB512F839
780780780060141800401408A300C0140C00801404A400001400B3A3497E3801FFFE1E22
7EA123>I<EA1FE0EA3038EA780C130EEA30071200A313FFEA07C7EA1E07123C12781270
00F01308A3130FEA7817383C2390380FC1E015157E9418>97 D<120E12FE121E120EAB13
1FEB61C0EB8060380F0030000E1338143C141C141EA7141C143C1438000F1370380C8060
EB41C038083F0017237FA21B>I<EA01FEEA0703380C0780121C383803000078C7FC1270
12F0A712700078134012386C1380380C0100EA0706EA01F812157E9416>I<14E0130F13
011300ABEA01F8EA0704EA0C02EA1C01EA38001278127012F0A7127012781238EA1801EA
0C0238070CF03801F0FE17237EA21B>I<EA01FCEA0707380C0380381C01C01238007813
E0EA700012F0B5FC00F0C7FCA512700078132012386C13406C138038070300EA00FC1315
7F9416>I<133E13E33801C780EA0387130748C7FCA9EAFFF80007C7FCB27FEA7FF01123
80A20F>I<14703803F198380E1E18EA1C0E38380700A200781380A400381300A2EA1C0E
EA1E1CEA33F00020C7FCA212301238EA3FFE381FFFC06C13E0383000F0481330481318A4
00601330A2003813E0380E03803803FE0015217F9518>I<120E12FE121E120EABEB1F80
EB60C0EB80E0380F0070A2120EAF38FFE7FF18237FA21B>I<121C123EA3121CC7FCA812
0E127E121E120EB1EAFFC00A227FA10E>I<13E0EA01F0A3EA00E01300A81370EA07F012
001370B3A51260EAF0E013C0EA6180EA3F000C2C83A10F>I<120E12FE121E120EABEB03
FCEB01F014C01480EB02005B5B5B133813F8EA0F1CEA0E1E130E7F1480EB03C0130114E0
EB00F014F838FFE3FE17237FA21A>I<120E12FE121E120EB3ADEAFFE00B237FA20E>I<39
0E1FC07F3AFE60E183803A1E807201C03A0F003C00E0A2000E1338AF3AFFE3FF8FFE2715
7F942A>I<380E1F8038FE60C0381E80E0380F0070A2120EAF38FFE7FF18157F941B>I<EA
01FCEA0707380C0180381800C0003813E0481370A200F01378A700701370007813F00038
13E0381C01C0380E038038070700EA01FC15157F9418>I<EA0E1F38FE61C0380E806038
0F0070000E1338143CA2141EA7143CA21438000F1370380E80E0EB41C0EB3F0090C7FCA9
EAFFE0171F7F941B>I<EA0E3CEAFE46EA1E8FEA0F0F13061300120EAD120FEAFFF01015
7F9413>114 D<EA0F88EA3078EA601812C01308A212E0EAF000127FEA3FE0EA0FF0EA01
F8EA003CEA801C130CA212C01308EAE018EAD030EA8FC00E157E9413>I<1202A41206A3
120E121E123EEAFFFCEA0E00AB1304A6EA07081203EA01F00E1F7F9E13>I<000E137038
FE07F0EA1E00000E1370AD14F0A238060170380382783800FC7F18157F941B>I<38FF80
FE381E00781430000E1320A26C1340A2EB80C000031380A23801C100A2EA00E2A31374A2
1338A3131017157F941A>I<39FF8FF87F393E01E03C001CEBC01814E0000E1410EB0260
147000071420EB04301438D803841340EB8818141CD801C81380EBD00C140E3900F00F00
497EA2EB6006EB400220157F9423>I<38FF80FE381E00781430000E1320A26C1340A2EB
80C000031380A23801C100A2EA00E2A31374A21338A31310A25BA35B12F05B12F10043C7
FC123C171F7F941A>121 D E /Ft 20 118 df<B51280A311037F9016>45
D<B612E015FC3907E0007F0003EC0F80ED03C06F7E6F7E16788282A282A21780160717C0
A21603A217E0AB17C0A21607A21780A2160F17005E161E5E5E16F84B5A4B5AED0F800007
023FC7FCB612FC15E02B317CB033>68 D<B51280A23807F0006C5AB3B3A7487EB51280A2
11317DB017>73 D<D8FFF0ED7FF8A200071700D802F815BEA3017CEC013EA26D1402A36D
1404A36D6C1308A36D6C1310A36D6C1320A26D6C1340A36D6C1380A391387C0100A3EC3E
02A36E5AA2EC0F88A3EC07D0A3EC03E0A300076D5AD80F80157FD8FFF891380FFFF8EC00
8035317CB03D>77 D<B612E015FC3907E0003F0003EC0F80ED03C0ED01E016F0ED00F8A2
1678167CA6167816F816F0150116E0ED03C0ED0F80ED3E0090B512F801E0C8FCB3A3487E
B57EA226317DB02D>80 D<90387F80203801FFE03907C07860380F001C001EEB06E04813
0300381301007813001270156012F0A21520A37E1500127C127E7E13C0EA1FF86CB47E6C
13F06C13FCC613FF010F1380010013C0EC1FE01407EC03F01401140015F8A26C1478A57E
15706C14F015E07E6CEB01C000ECEB038000C7EB070038C1F01E38807FFCEB0FF01D337C
B125>83 D<13FE380303C0380C00E00010137080003C133C003E131C141EA21208C7FCA3
EB0FFEEBFC1EEA03E0EA0F80EA1F00123E123C127C481404A3143EA21278007C135E6CEB
8F08390F0307F03903FC03E01E1F7D9E21>97 D<EB1FC0EBF0303801C00C38078002EA0F
00000E130F001E5B5AA2007C1304007890C7FC12F8A91278127C123C15807E000EEB0100
120F380780023801C00C3800F030EB1FC0191F7E9E1D>99 D<15F0141FA214011400AFEB
0FC0EB70303801C00C3803800238070001120E001E13005AA2127C1278A212F8A71278A2
127C123CA27E000E13016C1302380380046C6C487E3A00F030FF80EB1FC021327EB125>
I<EB3F80EBE0E0380380383807003C000E7F121E001C7F123C127C00781480140712F8A2
B6FC00F8C8FCA61278127C123C15807E000EEB0100000F13027E3801C00C3800F030EB1F
C0191F7E9E1D>I<EB07E0EB1C10EB3838EB707C13E01201EBC03800031300ACB512C0A2
3803C000B3A8487EEA7FFFA216327FB114>I<15F090387F03083901C1C41C380380E839
0700700848EB7800001E7FA2003E133EA6001E133CA26C5B6C13706D5A3809C1C0D8087F
C7FC0018C8FCA5121C7E380FFFF86C13FF6C1480390E000FC00018EB01E048EB00F00070
1470481438A500701470A26C14E06CEB01C00007EB07003801C01C38003FE01E2F7E9F21
>I<120FEA1F80A4EA0F00C7FCABEA0780127FA2120F1207B3A6EA0FC0EAFFF8A20D307E
AF12>105 D<260780FEEB1FC03BFF83078060F0903A8C03C180783B0F9001E2003CD807
A013E4DA00F47F01C013F8A2495BB3A2486C486C133F3CFFFC1FFF83FFF0A2341F7E9E38
>109 D<380780FE39FF83078090388C03C0390F9001E0EA07A06E7E13C0A25BB3A2486C
487E3AFFFC1FFF80A2211F7E9E25>I<EB1FC0EBF0783801C01C38070007481480001EEB
03C0001C1301003C14E0A248EB00F0A300F814F8A8007814F0007C1301003C14E0A26CEB
03C0A26CEB07803907800F003801C01C3800F078EB1FC01D1F7E9E21>I<380783E038FF
8418EB887CEA0F90EA07A01438EBC000A35BB3487EEAFFFEA2161F7E9E19>114
D<3801FC10380E0330381800F048137048133012E01410A37E6C1300127EEA3FF06CB4FC
6C13C0000313E038003FF0EB01F813006C133CA2141C7EA27E14186C1338143000CC1360
38C301C03880FE00161F7E9E1A>I<1340A513C0A31201A212031207120F381FFFE0B5FC
3803C000B01410A80001132013E000001340EB78C0EB1F00142C7FAB19>I<D8078013F0
00FF131FA2000F130100071300B31401A300031302EBC0040001497E3A007030FF80EB1F
C0211F7E9E25>I E /Fu 5 85 df<166016E0A215011503A2150782150DA21519153915
311561A215C1A2EC0181140315011406A2020C7F15005C143814305CA25CA249B5FCA249
C7FC1306A25B8249147CA25B137013605BA212011203D80FE014FED8FFF890381FFFE0A2
2B327CB134>65 D<010FB512FCEEFF80903A007E000FE0027CEB03F0EE00F8177CA24A80
171E171FA2495AEF0F80A3495AA3171F495AA4494815005FA349C8127EA3177C013E15FC
5F16015F494A5AA24C5A4C5A4992C7FC161E5E5E4848495A4B5AED0F800003027FC8FCB6
12FC15C031317BB035>68 D<010FB612F8A29039007E0003027C13001778A217305CA449
5AA31760903903E001801700A3494848C7FCA25D151F90380FFFFEA2EC801E150E90381F
000CA4013E5BA292C8FCA25BA45BA4485AA31203B512E0A22D317BB02E>70
D<010FB512E016FC9039007E003F027CEB0F80EE07C0EE03E0A24AEB01F0A31603495AA3
17E04948130717C0160F17804948EB1F00163E1678ED01E090390F800F80DAFFFCC7FCEC
800E8149486C7E826F7EA2013E80A4491303A25EA2491307A3171848481530A217200003
02031360B5D8800113C0923800F180C9EA3E002D327BB033>82 D<0007B712F0A23A0FE0
07E0070180EBC001D80E00EC00E0120C121C0018495AA24816C0A24AC7FC5AA348013EEB
0180C791C7FCA35CA45CA4495AA4495AA4495AA4495AA449C9FCA35B003FB5FCA22C3174
B032>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin
%%EndSetup
%%Page: 1 1
1 2 bop 75 361 a Fq(Chapter)31 b(6)75 568 y Fp(External)40
b(In)m(terfaces)75 809 y Fo(6.1)59 b(Intro)r(duction)75
910 y Fr(The)12 b Fn(MPI)f Fr(F)l(orum)h(has)g(alw)o(a)o(ys)f(w)o(an)o
(ted)g(writers)h(of)f(external)i(pac)o(k)m(ages)e(to)h(b)q(e)g(able)h
(to)e(create)h(the)g(t)o(yp)q(e)75 967 y(of)e(functionalit)o(y)i(found)
g(in)o(ternal)f(to)g Fn(MPI)p Fr(.)e(F)l(or)i(example,)h(in)g
Fn(MPI-1)p Fr(,)e(the)h(cac)o(hing)h(on)e(comm)o(unicators)75
1023 y(allo)o(ws)16 b(users)g(to)f(store)h(information)g(in)h(a)e(w)o
(a)o(y)g(similar)i(to)f(whic)o(h)g(an)g Fn(MPI)g Fr(implemen)o(tations)
h(could)75 1080 y(store)e(top)q(ology)g(information.)21
b(The)15 b(cac)o(hing)h(capabilit)o(y)h(has)f(b)q(een)g(expanded)h(to)d
(other)h(handles)i(in)75 1136 y Fn(MPI-2)p Fr(.)24 b(Another)17
b(mec)o(hanism)h(in)g(whic)o(h)g(users)f(ha)o(v)o(e)f(expressed)i(in)o
(terest)f(is)h(the)f(abilit)o(y)h(to)e(create)75 1193
y(new)g(non-blo)q(c)o(king)h(op)q(erations)f(similar)h(to)e(the)h(ones)
g(o\013ered)f(in)i Fn(MPI)p Fr(.)e(This)h(c)o(hapter)f(includes)k(this)
75 1249 y(capabilit)o(y)l(.)166 1306 y Fn(MPI-1)c Fr(w)o(as)g(delib)q
(erately)j(designed)f(with)f(opaque)g(ob)s(jects.)k(This)d(allo)o(ws)f
(\015exibilit)o(y)i(in)e(imple-)75 1362 y(men)o(tations)f(and)g(allo)o
(ws)g(for)f(future)h(enhancemen)o(ts)g(without)g(c)o(hanging)h(the)f
(users)g(view)g(of)g(ob)s(jects)75 1418 y(already)h(presen)o(t)g(in)g
Fn(MPI)p Fr(.)f(T)l(o)g(allo)o(w)h(users)g(to)f(gain)h(access)g(to)f
(needed)i(information)f(in)g(opaque)g(ob-)75 1475 y(jects,)f
Fn(MPI)g Fr(has)g(a)g(n)o(um)o(b)q(er)h(of)f(accessor)h(functions.)21
b(F)l(or)15 b(example,)h Fn(MPI)p 1375 1475 14 2 v 16
w(GET)p 1479 1475 V 17 w(COUNT)g Fr(will)h(return)75
1531 y(the)g(the)g(n)o(um)o(b)q(er)g(of)f(en)o(tries)h(receiv)o(ed)h
(as)e(stored)h(in)g(the)g(opaque)g(part)f(of)h(the)f(status)g(ob)s
(ject.)24 b(One)75 1588 y(dra)o(wbac)o(k)15 b(to)f(this)i(approac)o(h)f
(is)h(that)e(only)i(information)g(with)f(explicit)j(accessor)d
(functions)h(can)f(b)q(e)75 1644 y(easily)f(and)g(p)q(ortably)g(gotten)
e(from)h(an)g Fn(MPI)g Fr(implemenation.)21 b(In)14 b
Fn(MPI-1)p Fr(,)e(the)i Fn(MPI)e Fr(F)l(orum)h(included)75
1701 y(all)19 b(the)e(accessor)g(functions)i(that)e(seemed)h(to)f(b)q
(e)h(needed)h(b)o(y)e(users.)28 b(Ho)o(w)o(ev)o(er,)16
b(to)q(ol)i(writers)f(ha)o(v)o(e)75 1757 y(noted)g(that)f(they)g(need)i
(access)e(to)g(information)h(not)f(t)o(ypically)i(needed)g(b)o(y)f
(users.)24 b(F)l(or)16 b(example,)h(a)75 1814 y(pro\014ling)f(library)g
(often)e(needs)i(the)f(length)h(of)e(a)h(message)f(b)q(egun)i(b)o(y)f
Fn(MPI)p 1403 1814 V 15 w(ST)l(ART)h Fr(for)e(a)h(p)q(ersistan)o(t)75
1870 y(request.)20 b(This)c(c)o(hapter)e(adds)i(in)g(a)e(n)o(um)o(b)q
(er)i(of)e(functions)i(to)f(allo)o(w)g(greater)f(access)h(to)g
(information)75 1927 y(in)h Fn(MPI)f Fr(opaque)g(ob)s(jects.)75
2070 y Fo(6.2)59 b(Generalized)20 b(Requests)75 2171
y Fr(A)o(t)e(the)g(April)i(meeting)f(the)f(F)l(orum)g(v)o(oted)g(to)g
(remo)o(v)o(e)f(comm)o(unication)i(handlers)h(from)d(the)i(one-)-170
2158 y Fm(>)p Fr(\()p Fl(June)p Fr(\))75 2217 y(sided)g(c)o(hapter)f
(and)g(put)g(them)g(in)h(a)f(separate)g(c)o(hapter)f(on)h(threads.)29
b(Generalized)19 b(requests)f(w)o(ere)75 2273 y(built)f(on)f(top)g(to)f
(this)i(mec)o(hanism.)23 b(As)16 b(a)f(consequence,)j(it)e(is)g(not)g
(clear)g(what)g(is)g(going)g(to)g(happ)q(en)75 2330 y(to)h(this)i
(section.)29 b(It)18 b(has)f(not)h(b)q(een)h(up)q(dated.)29
b(I)18 b(am)g(a)o(w)o(aiting)g(the)g(decisions)h(on)f(comm)o(unication)
75 2386 y(handlers.)166 2443 y(W)l(e)c(also)g(v)o(oted)g(to)g(b)q(egin)
h(w)o(ork)f(on)g(I/O.)g(MPI-IO)h(has)f(its)h(o)o(wn)e(requests)i(mec)o
(hanism)f(but)h(w)o(as)75 2499 y(in)o(terested)h(in)g(something)f(lik)o
(e)i(generalized)f(requests.)k(W)l(e)c(need)g(to)e(discuss)i(this)g(to)
q(o.)-170 2485 y Fm(?)p Fr(\()p Fl(June)p Fr(\))166 2620
y Fk(Discussion:)166 2670 y Fj(If)e(w)o(e)i(k)o(eep)f(GR,)f(w)o(e)h
(need)h(to)f(mak)o(e)e(sure)j(that)f(the)h(curren)o(t)g(de\014nition)e
(allo)o(ws)g(implemen)o(tations)e(that)964 2828 y Fr(1)p
eop
%%Page: 2 2
2 3 bop 75 -100 a Fr(2)894 b Fi(CHAPTER)15 b(6.)35 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)75 49 y Fj(can)16 b(ha)o(v)o(e)g(high)g(p)q
(erformance.)24 b(A)16 b(concern)i(raised)f(is)e(that)i(GR)e(ma)o(y)f
(not)i(mak)o(e)f(an)o(y)g(MPI)i(calls)e(so)h(\014nding)75
99 y(out)e(when)g(they)h(are)f(complete)f(ma)o(y)f(degrade)j(p)q
(erformance.)166 314 y Fk(Missing:)166 364 y Fj(Sev)o(eral)e(minor)e
(or)i(mo)q(dest)g(issues)h(w)o(ere)f(raised)h(ab)q(out)f(generalized)g
(requests)i(at)e(the)h(Jan)o(uary)e(meeting.)75 414 y(I)g(am)f(not)h
(psyc)o(hed)i(ab)q(out)e(tuning)g(this)h(section)g(un)o(til)f(w)o(e)g
(decide)i(if)d(w)o(e)i(are)g(going)e(to)h(k)o(eep)h(it.)18
b(These)13 b(c)o(hanges)75 464 y(will)f(b)q(e)j(made)e(once)h(a)g
(decision)g(is)g(reac)o(hed.)19 b(The)14 b(issues)h(recalled)g(are:)145
546 y Fh(\017)23 b Fj(Ho)o(w)13 b(can)h(w)o(e)g(use)h(status)145
618 y Fh(\017)23 b Fj(Ho)o(w)13 b(do)h(w)o(e)g(do)g(cancel)145
690 y Fh(\017)23 b Fj(There)15 b(is)e(no)h(complete)f(function)h(in)f
(the)i(example)75 925 y Fg(6.2.1)49 b(Intro)q(duction)75
1011 y Fr(The)20 b(goal)f(of)g(this)h Fn(MPI-2)e Fr(extension)j(is)f
(to)e(allo)o(w)i(users)g(to)e(create)i(requests)f(for)g(additional)i
(non-)75 1068 y(blo)q(c)o(king)g(op)q(erations.)33 b(These)20
b(requests)f(could)i(b)q(e)f(used)g(to)f(p)q(erform)h(additional)h(op)q
(erations)e(not)75 1124 y(supp)q(orted)d(b)o(y)g Fn(MPI)f
Fr(suc)o(h)h(as)f(in)o(tricate)h(non-blo)q(c)o(king)h(collectiv)o(e)h
(op)q(erations.)j(They)16 b(could)h(also)e(b)q(e)75 1181
y(used)h(to)e(create)h(a)g(non-blo)q(c)o(king)i(send-receiv)o(e)g(t)o
(yp)q(e)e(function.)166 1237 y(The)20 b(metho)q(d)g(tak)o(en)g(in)g
(de\014ning)i(this)e Fn(MPI-2)f Fr(extension)i(is)f(to)f(try)h(and)g
(generalize)h(curren)o(t)75 1293 y Fn(MPI)e Fr(functions.)33
b(F)l(or)19 b(example,)i(the)e Fn(MPI)g Fr(functions)h(of)f
Fn(MPI)p 1208 1293 14 2 v 16 w Fm(f)p Fn(TEST)p Fm(j)p
Fn(W)l(AIT)p Fm(gf)p Fn(ANY)p Fm(j)p Fn(SOME)p Fm(j)p
Fn(ALL)p Fm(g)75 1350 y Fr(are)h(generalized.)36 b(The)21
b(one-sided)g Fn(MPI)p 811 1350 V 16 w(POST)p 945 1350
V 17 w(HANDLER)g Fr(function)g(of)f(Section)h Fl(??)e
Fr(is)i(used)g(for)75 1406 y(the)16 b(in)o(terrupts.)24
b(Also,)17 b(whenev)o(er)g(additional)g(functions)h(are)e(needed)h
(they)g(are)f(made)g(to)g(lo)q(ok)h(lik)o(e)75 1463 y(similar)h
(functions)g(curren)o(tly)f(a)o(v)m(ailable)i(in)e Fn(MPI)p
Fr(.)f(Th)o(us,)h(these)g(extensions)h(are)f(based)g(on)g(the)g
Fn(MPI)75 1519 y Fr(p)q(ersisten)o(t)f(comm)o(unication)g(requests)f
(and)g(the)g(cac)o(hing)h(features.)166 1576 y(In)22
b(analogy)f(to)g(the)h(cac)o(hing)g(feature,)h(a)e(new)h(t)o(yp)q(e)g
(of)f(request)h(is)g(\014rst)f(created)h(using)g(the)75
1632 y(function)c Fn(MPI)p 340 1632 V 16 w(REQUEST)p
559 1632 V 18 w(TYPE)p 694 1632 V 16 w(CREA)l(TE)h Fr(and)e(freed)g
(with)h Fn(MPI)p 1290 1632 V 16 w(REQUEST)p 1509 1632
V 18 w(TYPE)p 1644 1632 V 16 w(FREE)p Fr(.)g(The)75 1689
y(rest)i(of)f(the)h(prop)q(osal)h(mimics)g(the)f(mec)o(hanisms)h(in)g
(p)q(ersisten)o(t)f(comm)o(unication)h(requests.)35 b(The)75
1745 y(user)18 b(creates)f(a)g(sp)q(eci\014c)j(instance)e(of)f(a)g
(request)h(via)g Fn(MPI)p 1125 1745 V 16 w(REQUEST)p
1344 1745 V 17 w(INIT)p Fr(.)f(The)h(op)q(eration)g(asso-)75
1802 y(ciated)k(with)f(the)g(request)g(is)g(b)q(egun)h(with)f
Fn(MPI)p 958 1802 V 16 w(ST)l(ART)p Fm(f)p Fn(ALL)p Fm(g)p
Fr(.)37 b(Completion)21 b(of)g(the)g(request)f(is)75
1858 y(done)g(with)g Fn(MPI)p 381 1858 V 16 w Fm(f)p
Fn(TEST)p Fm(j)p Fn(W)l(AIT)p Fm(gf)p Fn(ANY)p Fm(j)p
Fn(SOME)p Fm(j)p Fn(ALL)p Fm(g)p Fr(.)31 b(The)20 b(sp)q(eci\014c)h
(request)f(can)g(b)q(e)g(freed)g(with)75 1914 y Fn(MPI)p
160 1914 V 16 w(REQUEST)p 379 1914 V 18 w(FREE)p Fr(.)166
1971 y(This)i(section)h(b)q(egins)g(with)f(an)f(o)o(v)o(erview)h(of)f
(the)h(functionalit)o(y)h(whic)o(h)g(is)f(follo)o(w)o(ed)g(b)o(y)g(the)
75 2027 y(sp)q(eci\014c)e(calls.)28 b(It)18 b(is)g(follo)o(w)o(ed)g(b)o
(y)f(sho)o(wing)h(ho)o(w)f(these)h(functions)g(can)g(b)q(e)h(used)f(to)
f(create)g(a)h(non-)75 2084 y(blo)q(c)o(king)f(v)o(ersion)e(of)g
Fn(MPI)p 547 2084 V 16 w(ALLGA)l(THER)p Fr(.)75 2204
y Fg(6.2.2)49 b(F)o(unctionalit)o(y)75 2290 y Fr(The)15
b(b)q(eha)o(vior)h(of)f(the)g(request)g(is)h(de\014ned)h(b)o(y)e(these)
g(callbac)o(k)h(functions:)75 2387 y Fn(init)p 139 2387
V 17 w(fn)23 b Fr(This)13 b(callbac)o(k)h(function)g(is)f(in)o(v)o(ok)o
(ed)g(when)h(a)e(new)h(instance)h(of)e(the)h(request)g(is)g(created.)19
b(This)189 2443 y(function)i(can)f(b)q(e)i(used,)f(for)f(example,)i(to)
e(allo)q(cate)h(memory)f(for)g(the)g(request)h(ob)s(ject)f(and)189
2500 y(p)q(erform)15 b(other)f(initialization.)75 2591
y Fn(sta)o(rt)p 164 2591 V 17 w(fn)23 b Fr(This)e(callbac)o(k)h
(function)g(is)f(in)o(v)o(ok)o(ed)g(when)g(the)g(op)q(eration)g(asso)q
(ciated)g(with)g(request)f(is)189 2647 y(started.)30
b(This)19 b(function)h(can)f(b)q(e)g(used,)h(for)e(example,)i(to)e
(start)g(one)h(or)f(more)h(non)o(blo)q(c)o(king)189 2704
y(comm)o(unications)c(that)g(initiate)i(the)e(op)q(eration.)1967
46 y Ff(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 3 3
3 4 bop 75 -100 a Fi(6.2.)34 b(GENERALIZED)16 b(REQUESTS)1071
b Fr(3)75 49 y Fn(complete)p 248 49 14 2 v 17 w(fn)23
b Fr(This)18 b(callbac)o(k)h(function)f(is)h(in)o(v)o(ok)o(ed)f(when)g
(the)g(request)f(has)h(completed.)29 b(It)17 b(can)h(b)q(e)189
106 y(used)d(to)g(set)g(return)g(v)m(alues)h(in)g(extra)p
852 106 V 16 w(state)f(or)f(clean)i(up)g(from)f(the)g(op)q(eration.)75
200 y Fn(free)p 148 200 V 16 w(fn)23 b Fr(This)f(callbac)o(k)f
(function)h(is)f(in)o(v)o(ok)o(ed)g(when)g(the)g(request)g(is)g(freed.)
37 b(It)21 b(can)g(b)q(e)g(used,)i(for)189 256 y(example,)15
b(to)g(deallo)q(cate)h(memory)l(.)75 350 y Fn(cancel)p
194 350 V 17 w(fn)23 b Fr(This)15 b(callbac)o(k)h(function)f(is)g(in)o
(v)o(ok)o(ed)g(whenev)o(er)g(there)g(is)g(a)f(failure)h(in)h(callbac)o
(k)f(functions)189 406 y(\(see)k(section)g(6.2.3)f(for)g(a)h
(discussion)h(of)f(failure\))h(or)e(whenev)o(er)h Fn(MPI)p
1448 406 V 16 w(CANCEL)h Fr(is)f(called)i(to)189 463
y(cancel)f(the)f(request.)31 b(This)19 b(function)h(can)f(b)q(e)h
(used,)g(for)e(example,)i(to)f(deallo)q(cate)h(memory)l(,)189
519 y(cancel)c(in)o(ternal)g(messages,)e(reset)h(state,)f(etc.)166
625 y(A)h(new)h(t)o(yp)q(e)f(of)g(request)g(is)h(created)f(with)75
776 y Fn(MPI)p 160 776 V 16 w(REQUEST)p 379 776 V 18
w(TYPE)p 514 776 V 17 w(CREA)l(TE\(init)p 779 776 V 17
w(fn,)f(sta)o(rt)p 946 776 V 17 w(fn,)f(complete)p 1196
776 V 17 w(fn,)h(free)p 1347 776 V 16 w(fn,)g(cancel)p
1543 776 V 17 w(fn,)g(t)o(yp)q(e)p 1704 776 V 17 w(req\))117
854 y Fj(IN)155 b Fn(init)p 382 854 V 17 w(fn)472 b Fj(Creation)14
b(callbac)o(k)f(function)h(for)f(t)o(yp)q(e)p 1542 854
13 2 v 16 w(req)117 929 y(IN)155 b Fn(sta)o(rt)p 407
929 14 2 v 17 w(fn)447 b Fj(Request)15 b(start)g(callbac)o(k)e
(function)g(for)h(t)o(yp)q(e)p 1630 929 13 2 v 15 w(req)117
1004 y(IN)155 b Fn(complete)p 491 1004 14 2 v 17 w(fn)363
b Fj(Request)15 b(complete)e(callbac)o(k)g(function)h(for)g(t)o(yp)q(e)
p 1706 1004 13 2 v 15 w(req)117 1079 y(IN)155 b Fn(free)p
391 1079 14 2 v 17 w(fn)463 b Fj(Request)15 b(free)g(callbac)o(k)e
(function)g(for)h(t)o(yp)q(e)p 1610 1079 13 2 v 15 w(req)117
1154 y(IN)155 b Fn(cancel)p 437 1154 14 2 v 18 w(fn)416
b Fj(Request)15 b(cancel/failure)f(callbac)o(k)f(function)g(for)h(t)o
(yp)q(e)p 1790 1154 13 2 v 15 w(req)117 1229 y(OUT)108
b Fn(t)o(yp)q(e)p 401 1229 14 2 v 18 w(req)430 b Fe(MPI)13
b Fj(created)j(request)f(t)o(yp)q(e)g(for)e(future)i(reference)75
1354 y Fd(int)23 b(MPI)p 245 1354 15 2 v 17 w(Request)p
430 1354 V 16 w(type)p 542 1354 V 17 w(create\(MPI)p
799 1354 V 16 w(Init)p 911 1354 V 17 w(function)f(*init)p
1262 1354 V 17 w(fn,)h(MPI)p 1446 1354 V 17 w(Start)p
1583 1354 V 17 w(function)393 1410 y(*start)p 540 1410
V 17 w(fn,)g(MPI)p 724 1410 V 17 w(Complete)p 933 1410
V 16 w(function)g(*complete)p 1380 1410 V 16 w(fn,)393
1467 y(MPI)p 468 1467 V 17 w(Free)p 581 1467 V 17 w(function)f(*free)p
932 1467 V 17 w(fn,)h(MPI)p 1116 1467 V 17 w(Cancel)p
1277 1467 V 16 w(function)g(*cancel)p 1676 1467 V 16
w(fn,)393 1523 y(MPI)p 468 1523 V 17 w(Type)p 581 1523
V 17 w(Request)f(*type)p 908 1523 V 17 w(req\))75 1610
y(MPI)p 150 1610 V 17 w(REQUEST)p 335 1610 V 16 w(TYPE)p
447 1610 V 17 w(CREATE\(INIT)p 728 1610 V 15 w(FN,)i(START)p
959 1610 V 16 w(FN,)g(COMPLETE)p 1263 1610 V 16 w(FN,)f(FREE)p
1470 1610 V 17 w(FN,)g(CANCEL)p 1726 1610 V 17 w(FN,)393
1666 y(TYPE)p 492 1666 V 17 w(REQ,)g(IERROR\))170 1722
y(EXTERNAL)g(INIT)p 484 1722 V 17 w(FN,)g(START)p 716
1722 V 17 w(FN,)g(COMPLETE)p 1020 1722 V 16 w(FN,)h(FREE)p
1228 1722 V 16 w(FN,)g(CANCEL)p 1484 1722 V 16 w(FN)170
1779 y(INTEGER)f(type)p 460 1779 V 17 w(req,)g(IERROR)166
1865 y Fr(The)c(callbac)o(k)g(functions)h(are)e(describ)q(ed)j(b)q(elo)
o(w)e(with)g(the)g(routines)g(that)f(cause)h(them)f(to)g(b)q(e)75
1922 y(called.)j Fn(t)o(yp)q(e)p 304 1922 14 2 v 18 w(req)14
b Fr(is)h(a)f(unique)i(id)g(that)e(is)h(generated)f(b)o(y)g
Fn(MPI)g Fr(that)g(can)h(b)q(e)g(used)g(to)f(create)g(requests)75
1978 y(of)h(this)g(t)o(yp)q(e.)20 b(This)c(call)h(is)e(lo)q(cal)i(and)e
(the)g Fn(t)o(yp)q(e)p 925 1978 V 18 w(req)g Fr(is)h(a)f(lo)q(cal)h
(quan)o(tit)o(y)f(to)f(the)i(calling)h(pro)q(cess.)j(It)75
2035 y(cannot)15 b(b)q(e)h(transfered)f(to)f(another)h(pro)q(cess.)166
2091 y(If)c(the)h(user)f(needs)h(their)f(callbac)o(k)i(function)f(to)e
(b)q(e)i(atomic,)f(then)h(s/he)f(should)h(call)g Fn(MPI)p
1711 2091 V 16 w(HLOCK)75 2148 y Fr(and)j Fn(MPI)p 248
2148 V 16 w(UNHLOCK)h Fr(as)e(describ)q(ed)k(in)e(Section)g
Fl(??)o Fr(.)166 2204 y(T)l(o)f(get)g(an)g(instance)h(of)f
Fn(t)o(yp)q(e)p 684 2204 V 17 w(req)p Fr(,)g(one)g(calls:)-32
46 y Ff(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 4 4
4 5 bop 75 -100 a Fr(4)894 b Fi(CHAPTER)15 b(6.)35 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)75 49 y Fn(MPI)p 160 49 14 2 v
16 w(REQUEST)p 379 49 V 18 w(INIT\(t)o(yp)q(e)p 584 49
V 16 w(req,)15 b(extra)p 782 49 V 17 w(state,)h(comm,)d(request\))117
126 y Fj(IN)155 b Fn(t)o(yp)q(e)p 401 126 V 18 w(req)430
b Fj(T)o(yp)q(e)10 b(of)f(request)h(desired)h(\(from)c(MPI)p
1519 126 13 2 v 16 w(REQUEST)p 1738 126 V 15 w(TYPE)p
1870 126 V 16 w(CREA)m(TE\))117 201 y(IN)155 b Fn(extra)p
416 201 14 2 v 17 w(state)384 b Fj(Extra)14 b(state)h(passed)g(to)f
Fe(init)p 1365 201 13 2 v 15 w(fn)117 275 y Fj(IN)155
b Fn(comm)470 b Fj(Comm)o(unicator)11 b(to)j(asso)q(ciate)g(request)i
(with)117 349 y(OUT)108 b Fn(request)452 b Fj(Handle)14
b(to)g(request)75 474 y Fd(int)23 b(MPI)p 245 474 15
2 v 17 w(Request)p 430 474 V 16 w(init\(MPI)p 638 474
V 17 w(Type)p 751 474 V 16 w(request)g(type)p 1054 474
V 17 w(req,)g(void)g(*extra)p 1453 474 V 17 w(state,)g(MPI)p
1709 474 V 17 w(Comm)393 530 y(comm,)g(MPI)p 611 530
V 17 w(TYPE)p 724 530 V 17 w(Request)g(*request\))75
617 y(MPI)p 150 617 V 17 w(REQUEST)p 335 617 V 16 w(INIT\(TYPE)p
567 617 V 16 w(REQ,)g(EXTRA)p 822 617 V 17 w(STATE,)g(COMM,)g(REQUEST,)
g(IERROR)g(\))170 673 y(INTEGER)g(TYPE)p 460 673 V 17
w(REQ,)g(EXTRA)p 716 673 V 17 w(STATE,)g(COMM,)g(REQUEST,)g(IERROR)166
759 y Fr(This)16 b(function)g(in)o(v)o(ok)o(es)f(the)g(callbac)o(k)h
(function)g Fn(init)p 1100 759 14 2 v 17 w(fn)p Fr(.)21
b(In)15 b(C)g(this)h(is)g(de\014ned)g(as:)75 860 y Fd(typedef)23
b(int)g(MPI_Request_init_fn\(MPI_Reque)o(st)e(type_req,)i(void)75
917 y(*extra_state,)f(MPI_Comm)h(comm,)g(MPI_Request)f(request\);)166
1018 y Fr(A)15 b(F)l(ortran)f(declaration)i(for)f(suc)o(h)g(a)g
(function)h(is)g(as)f(follo)o(ws:)75 1074 y Fd(INTEGER)23
b(FUNCTION)g(REQUEST)p 652 1074 15 2 v 16 w(INIT)p 764
1074 V 17 w(FN\(TYPE)p 949 1074 V 16 w(REQ,)g(EXTRA)p
1204 1074 V 17 w(STATE,)g(COMM,)g(REQUEST\))170 1131
y(INTEGER)g(TYPE)p 460 1131 V 17 w(REQ,)g(EXTRA)p 716
1131 V 17 w(STATE,)g(COMM,)g(REQUEST)166 1217 y Fn(MPI)p
251 1217 14 2 v 16 w(REQUEST)p 470 1217 V 18 w(INIT)18
b Fr(in)o(v)o(ok)o(es)g(the)h(user)f(function)i Fn(init)p
1180 1217 V 17 w(fn)f Fr(with)f(input)i(argumen)o(ts)e
Fn(t)o(yp)q(e)p 1789 1217 V 17 w(req)p Fr(,)75 1274 y
Fn(extra)p 173 1274 V 16 w(state)p Fr(,)h Fn(comm)p Fr(,)d(and)i
Fn(request)h Fr(whic)o(h)f(are)f(the)h(argumen)o(ts)e(that)h(w)o(ere)g
(passed)h(b)o(y)f(the)h(caller)g(of)75 1330 y Fn(MPI)p
160 1330 V 16 w(REQUEST)p 379 1330 V 18 w(INIT)p Fr(.)12
b(The)h(callbac)o(k)i(function)f(will)h(usually)g(allo)q(cate)f(and)f
(initialize)j(in)o(ternal)f(data)75 1387 y(structures)j(of)g(the)h
(request.)29 b(It)18 b(can)h(return)f(in)h Fn(extra)p
1048 1387 V 17 w(state)g Fr(a)f(p)q(oin)o(ter)h(to)f(this)h(in)o
(ternal)g(structure)75 1443 y(since)g Fn(extra)p 287
1443 V 17 w(state)g Fr(is)g(passed)g(to)e(all)j(the)e(user)g(callbac)o
(k)i(functions)f(for)e(this)i(request.)29 b(Outside)20
b(the)75 1499 y(user)g(function,)h Fn(MPI)p 457 1499
V 16 w(REQUEST)p 676 1499 V 18 w(INIT)e Fr(creates)g(and)h(returns)g
(in)g Fn(request)i Fr(a)d(handle)i(to)e(the)h(newly)75
1556 y(created)15 b(request.)21 b(This)15 b(request)h(is)g(lo)q(cal)g
(to)f(the)g(calling)i(pro)q(cess.)k Fn(init)p 1345 1556
V 17 w(fn)15 b Fr(returns)g Fe(MPI)p 1645 1556 13 2 v
15 w(SUCCESS)e Fr(if)75 1612 y(it)i(succeeds.)21 b(The)16
b(consequence)g(of)f(returning)h(failure)g(is)g(discussed)h(later.)166
1745 y Fk(Discussion:)166 1795 y Fe(MPI)p 243 1795 V
14 w(REQUEST)p 445 1795 V 14 w(INIT)d Fj(tak)o(es)h(a)f(comm)o
(unicator)e(as)i(an)h(argumen)o(t.)j(Is)d(this)g(call)e(in)o(tended)j
(to)e(b)q(e)h(collec-)75 1844 y(tiv)o(e?)i(Must)c(all)f(comm)o(uni)o
(cations)e(used)j(in)f(this)h(request)g(use)h(this)e(comm)o(unicator?)j
(My)d(thinking)g(is)g(that)g(the)75 1894 y(call)h(is)h(lo)q(cal)g(and)g
(the)h(comm)o(unicator)c(is)j(giv)o(en)g(to)g(allo)o(w)e
(initialization)g(and)i(creation)g(of)g(appropriate)g(arra)o(y)75
1944 y(and)e(structures.)20 b(Comm)n(unications)9 b(are)j(not)g
(limited)e(to)h(that)h(comm)o(unicator)e(but)i(are)g(lik)o(ely)e(to)i
(only)f(in)o(v)o(olv)o(e)75 1994 y(the)j(comm)o(unicator)e(giv)o(en.)17
b(F)m(or)d(example,)e(y)o(ou)h(could)h(create)h(a)f(subgroup)g(to)g(w)o
(ork)f(with.)166 2133 y Fr(A)k(request)f(is)h(b)q(egun)h(with)e(the)h
(curren)o(t)g Fn(MPI)e Fr(functions)j Fn(MPI)p 1284 2133
14 2 v 16 w(ST)l(ART)f Fr(and)g Fn(MPI)p 1631 2133 V
16 w(ST)l(ART)l(ALL)p Fr(.)75 2189 y(Calling)g(these)e(functions)h
(cause)f(the)h Fn(sta)o(rt)p 833 2189 V 16 w(fn)g Fr(callbac)o(k)g
(function)g(to)f(b)q(e)h(in)o(v)o(ok)o(ed.)k(It)15 b(is)h(de\014ned)g
(as:)75 2290 y Fd(typedef)23 b(int)g(MPI_Request_start_fn\(void)e
(*extra_state,)h(MPI_Comm)h(comm,)75 2347 y(MPI_Request)f(request\);)
166 2448 y Fr(A)15 b(F)l(ortran)f(declaration)i(for)f(suc)o(h)g(a)g
(function)h(is)g(as)f(follo)o(ws:)75 2504 y Fd(INTEGER)23
b(FUNCTION)g(REQUEST)p 652 2504 15 2 v 16 w(START)p 788
2504 V 16 w(FN\(EXTRA)p 996 2504 V 16 w(STATE,)h(COMM,)f(REQUEST\))170
2561 y(INTEGER)g(EXTRA)p 484 2561 V 17 w(STATE,)g(COMM,)g(REQUEST)166
2647 y Fr(The)14 b(input)h Fn(extra)p 476 2647 14 2 v
16 w(state)g Fr(is)f(a)g(p)q(oin)o(ter)g(to)f(the)h(in)o(ternal)h
(state)e(of)g(the)h(request)g(that)f(w)o(as)g(returned)75
2704 y(b)o(y)23 b(the)f Fn(init)p 295 2704 V 17 w(fn)h
Fr(callbac)o(k)h(function.)43 b Fn(sta)o(rt)p 858 2704
V 17 w(fn)23 b Fr(ma)o(y)f(initiate)i(one)f(or)f(more)g(comm)o
(unications,)j(as)1967 46 y Ff(1)1967 103 y(2)1967 159
y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967
441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959
667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959
893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 5 5
5 6 bop 75 -100 a Fi(6.2.)34 b(GENERALIZED)16 b(REQUESTS)1071
b Fr(5)75 49 y(part)16 b(of)g(starting)g(the)g(op)q(eration.)24
b(The)17 b(user)f(should)i(use)e(the)h Fn(MPI)p 1285
49 14 2 v 16 w(POST)p 1419 49 V 17 w(HANDLER)g Fr(function)g(in)75
106 y(Section)f Fl(??)f Fr(to)f(cause)i(a)f(user)g(function)h(to)e(b)q
(e)i(in)o(v)o(ok)o(ed)g(when)f(the)h(comm)o(unication)g(completes.)166
162 y Fn(sta)o(rt)p 255 162 V 17 w(fn)k Fr(returns)g
Fe(MPI)p 565 162 13 2 v 15 w(SUCCESS)e Fr(if)j(it)f(succeeds.)36
b(The)21 b(consequence)g(of)f(returning)h(a)f(failure)75
219 y(co)q(de)c(is)g(discussed)g(later.)166 351 y Fk(Discussion:)166
401 y Fj(This)i(name)g(is)h(no)o(w)f(v)o(ery)h(m)o(uc)o(h)e(lik)o(e)h
(the)h Fe(MPI)p 964 401 V 15 w(REQUEST)p 1167 401 V 14
w(COMPLETE)e Fj(in)i(the)g(\(p)q(ossible)g(defunct\))75
451 y(one-sided)14 b(c)o(hapter.)166 590 y Fr(A)h(request)g(is)h(mark)o
(ed)f(completed)h(b)o(y)f(calling:)75 741 y Fn(MPI)p
160 741 14 2 v 16 w(REQUEST)p 379 741 V 18 w(MARK)p 528
741 V 16 w(COMPLETE\(request\))117 818 y Fj(INOUT)62
b Fn(request)452 b Fj(T)o(yp)q(e)14 b(of)g(request)h(to)f(b)q(e)g(mark)
o(ed)f(as)h(complete)75 942 y Fd(int)23 b(MPI)p 245 942
15 2 v 17 w(Request)p 430 942 V 16 w(mark)p 542 942 V
17 w(complete\(MPI)p 847 942 V 16 w(Request)g(*request\))75
1029 y(MPI)p 150 1029 V 17 w(REQUEST)p 335 1029 V 16
w(MARK)p 447 1029 V 17 w(COMPLETE\(REQUEST,)e(IERROR)i(\))170
1085 y(INTEGER)g(REQUEST,)g(IERROR)166 1172 y Fr(This)16
b(function)g(in)o(v)o(ok)o(es)f(the)g(callbac)o(k)h(function)g
Fn(complete)p 1209 1172 14 2 v 17 w(fn)f Fr(de\014ned)i(as:)75
1274 y Fd(typedef)23 b(int)g(MPI_Request_complete_fn\(void)d
(*extra_state,)i(MPI_Request)h(request\);)166 1377 y
Fr(A)15 b(F)l(ortran)f(declaration)i(for)f(suc)o(h)g(a)g(function)h(is)
g(as)f(follo)o(ws:)75 1433 y Fd(INTEGER)23 b(FUNCTION)g(REQUEST)p
652 1433 15 2 v 16 w(COMPLETE)p 860 1433 V 16 w(FN\(EXTRA)p
1068 1433 V 16 w(STATE,)g(REQUEST\))170 1490 y(INTEGER)g(EXTRA)p
484 1490 V 17 w(STATE,)g(TYPE)p 764 1490 V 17 w(REQ)166
1576 y Fn(MPI)p 251 1576 14 2 v 16 w(REQUEST)p 470 1576
V 18 w(MARK)p 619 1576 V 16 w(COMPLETE)c Fr(in)o(v)o(ok)o(es)g(the)g
(user)h(function)g Fn(complete)p 1592 1576 V 16 w(fn)g
Fr(with)f(input)75 1632 y(argumen)o(ts)d Fn(request)i
Fr(and)f Fn(extra)p 639 1632 V 16 w(state)h Fr(whic)o(h)g(are)e(the)h
(argumen)o(ts)e(that)h(w)o(ere)h(passed)g(b)o(y)f(the)h(caller)75
1689 y(of)e Fn(MPI)p 212 1689 V 16 w(REQUEST)p 431 1689
V 17 w(INIT)p Fr(.)g(This)g(function)h(t)o(ypically)h(cleans)f(up)g
(after)e(the)h(call)h(and)g(ma)o(y)e(put)i(infor-)75
1745 y(mation)g(in)g Fn(extra)p 381 1745 V 17 w(state)h
Fr(whic)o(h)f(is)h(of)e(in)o(terest)h(to)f(the)h(calling)i(program.)j
(Once)16 b(this)h(call)g(completes,)75 1802 y(a)e(call)h(to)f
Fn(MPI)p 337 1802 V 16 w Fm(f)p Fn(TEST)p Fm(j)p Fn(W)l(AIT)p
Fm(g)f Fr(will)j(indicate)g(that)d Fn(request)j Fr(has)e(completed.)166
1858 y(Once)20 b(the)f(non-blo)q(c)o(king)i(request)e(has)f
(\014nished,)k(it)d(can)g(b)q(e)g(restarted)g(with)g(another)g(call)h
(to)75 1915 y Fn(MPI)p 160 1915 V 16 w(ST)l(ART)p Fr(.)11
b(Once)g(the)f(user)g(is)h(done)f(with)h(a)f(request,)g(it)h(is)g
(freed)f(using)h(the)f(curren)o(t)g Fn(MPI)p 1670 1915
V 16 w(REQUEST)p 1889 1915 V 18 w(FREE)75 1971 y Fr(whic)o(h)16
b(uses)g(the)f(callbac)o(k)h(function:)75 2074 y Fd(typedef)23
b(int)g(MPI_Request_free_function\(voi)o(d)e(*extra_state,)h(MPI_Comm)h
(comm,)75 2130 y(MPI_Request)f(request\);)166 2232 y
Fr(A)15 b(F)l(ortran)f(declaration)i(for)f(suc)o(h)g(a)g(function)h(is)
g(as)f(follo)o(ws:)75 2289 y Fd(INTEGER)23 b(FUNCTION)g(REQUEST)p
652 2289 15 2 v 16 w(FREE)p 764 2289 V 17 w(FN\(EXTRA)p
973 2289 V 16 w(STATE,)g(COMM,)g(REQUEST\))170 2345 y(INTEGER)g(EXTRA)p
484 2345 V 17 w(STATE,)g(COMM,)g(REQUEST)166 2432 y Fr(This)15
b(callbac)o(k)g(function)h(can)e(deallo)q(cate)i(the)e(in)o(ternal)h
(data)f(structures)g(of)g(the)h(request)f(whic)o(h)75
2488 y(w)o(ere)h(storted)f(in)i Fn(extra)p 485 2488 14
2 v 17 w(state)p Fr(.)166 2545 y(The)f Fn(cancel)p 378
2545 V 18 w(fn)g Fr(is)h(de\014ned)g(as:)75 2647 y Fd(typedef)23
b(int)g(MPI_Request_cancel_fn\(void)e(*extra_state,)h(MPI_Comm)h(comm,)
75 2704 y(MPI_Request)f(request\);)-32 46 y Ff(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 6 6
6 7 bop 75 -100 a Fr(6)894 b Fi(CHAPTER)15 b(6.)35 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)166 49 y Fr(A)15 b(F)l(ortran)f(declaration)i
(for)f(suc)o(h)g(a)g(function)h(is)g(as)f(follo)o(ws:)75
106 y Fd(INTEGER)23 b(FUNCTION)g(REQUEST)p 652 106 15
2 v 16 w(CANCEL)p 812 106 V 16 w(FN\(EXTRA)p 1020 106
V 16 w(STATE,)g(COMM,)h(REQUEST\))170 162 y(INTEGER)f(EXTRA)p
484 162 V 17 w(STATE,)g(COMM,)g(TYPE)p 907 162 V 17 w(REQ)166
249 y Fr(This)18 b(callbac)o(k)g(function)h(is)e(in)o(v)o(ok)o(ed)h(b)o
(y)f Fn(MPI)g Fr(when)h(the)g(request)f(is)h(cancelled)i(\(via)d(a)g
(call)i(to)75 305 y Fn(MPI)p 160 305 14 2 v 16 w(CANCEL)p
Fr(\))14 b(or)g(when)g(there)g(is)h(a)f(failure)h(in)g(callbac)o(k)g
(function)g Fn(init)p 1351 305 V 17 w(fn)p Fr(,)f Fn(sta)o(rt)p
1518 305 V 17 w(fn)p Fr(,)g(or)g Fn(complete)p 1824 305
V 17 w(fn)75 362 y Fr(\(failure)g(is)g(describ)q(ed)i(b)q(elo)o(w)e(in)
g(section)g(6.2.3\).)k(This)c(callbac)o(k)g(function)h(can)e(deallo)q
(cate)i(the)f(in)o(ter-)75 418 y(nal)h(data)e(structures)h(and)h
(cancel)g(the)f(in)o(ternal)i(messages)d(of)h(the)g(request)h(\(these)f
(can)g(b)q(e)h(accessible)75 474 y(via)g Fn(extra)p 247
474 V 17 w(state)p Fr(\).)166 531 y(Finally)l(,)26 b(since)d(allo)q
(cation)h(of)e(the)h Fn(t)o(yp)q(e)p 901 531 V 17 w(req)g
Fr(ma)o(y)f(use)h(some)f(system)g(resources,)i(it)f(can)f(b)q(e)75
587 y(returned)16 b(to)e(the)h(system)g(with:)75 738
y Fn(MPI)p 160 738 V 16 w(TYPE)p 293 738 V 17 w(REQUEST)p
513 738 V 18 w(FREE\(t)o(yp)q(e)p 738 738 V 17 w(req\))117
816 y Fj(INOUT)62 b Fn(t)o(yp)q(e)p 401 816 V 18 w(req)430
b Fj(T)o(yp)q(e)14 b(of)g(request)h(to)f(b)q(e)g(freed)75
940 y Fd(int)23 b(MPI)p 245 940 15 2 v 17 w(Type)p 358
940 V 17 w(request)p 543 940 V 16 w(free\(MPI)p 751 940
V 16 w(TYPE)p 863 940 V 17 w(REQUEST)g(*type)p 1191 940
V 16 w(req\))75 1026 y(MPI)p 150 1026 V 17 w(TYPE)p 263
1026 V 16 w(REQUEST)p 447 1026 V 17 w(FREE\(type)p 680
1026 V 16 w(req,)g(IERROR)g(\))170 1083 y(INTEGER)g(TYPE)p
460 1083 V 17 w(REQ,)g(IERROR)166 1169 y Fr(It)14 b(is)h(legal)g(to)e
(free)i(a)f Fn(t)o(yp)q(e)p 625 1169 14 2 v 17 w(req)g
Fr(for)g(whic)o(h)h(an)f(activ)o(e)g Fn(request)i Fr(still)g(exists.)k
Fn(MPI)13 b Fr(will)j(deallo)q(ciate)75 1226 y(the)f
Fn(t)o(yp)q(e)p 236 1226 V 18 w(req)g Fr(when)h(it)f(is)h(safe)f(to)f
(do)i(so.)166 1282 y(One)j(ma)o(y)f(receiv)o(e)i(a)e(non-blo)q(c)o
(king)i(request)f(for)f(whic)o(h)h(the)g(t)o(yp)q(e)g(is)g(unkno)o(wn.)
30 b(T)l(o)18 b(tell)i(the)75 1339 y(t)o(yp)q(e)15 b(of)g(request)g
(one)h(can)f(use:)75 1490 y Fn(MPI)p 160 1490 V 16 w(REQUEST)p
379 1490 V 18 w(TYPE\(request,)h(t)o(yp)q(e)p 776 1490
V 18 w(req\))117 1567 y Fj(IN)155 b Fn(request)452 b
Fj(request)117 1642 y(OUT)108 b Fn(t)o(yp)q(e)p 401 1642
V 18 w(req)430 b Fj(t)o(yp)q(e)15 b(of)e(request)75 1766
y Fd(int)23 b(MPI)p 245 1766 15 2 v 17 w(Request)p 430
1766 V 16 w(type\(MPI)p 638 1766 V 17 w(REQUEST)f(request,)h(MPI)p
1132 1766 V 17 w(TYPE)p 1245 1766 V 17 w(REQUEST)g(type)p
1549 1766 V 16 w(req\))75 1853 y(MPI)p 150 1853 V 17
w(REQUEST)p 335 1853 V 16 w(TYPE\(REQUEST,)f(TYPE)p 781
1853 V 17 w(REQ\))170 1909 y(INTEGER)h(REQUEST,)g(TYPE)p
675 1909 V 17 w(REQ)166 2072 y Fk(Missing:)166 2122 y
Fj(It)16 b(w)o(ould)f(b)q(e)i(con)o(v)o(enien)o(t)g(to)f(b)q(e)h(able)e
(to)h(attac)o(h)h(new)f(attributes)h(to)f Fe(status)p
Fj(,)h(so)f(that)g(new)h(op)q(erations)75 2171 y(can)c(return)i(new)f
(information)c(with)j(status.)19 b(T)m(o)12 b(do)h(so,)g(w)o(e)h(need)g
(one)f(additional)f(callbac)o(k)g(function,)h(that)g(is)75
2221 y(in)o(v)o(ok)o(ed)h(b)o(y)h(W)m(ait/T)m(est)e(calls,)i(with)f
(the)i(extra)p 855 2221 13 2 v 15 w(state)g(and)f(the)g(status)h
(argumen)o(ts.)k(This)15 b(callbac)o(k)f(function)75
2271 y(transfers)h(information)10 b(from)i(the)i(extra)p
733 2271 V 16 w(state)g(to)g(the)g(status)g(\(it)f(is)h(only)e(the)j
(later)e(that)h(is)f(accessible)i(to)e(the)75 2321 y(user\).)31
b(W)m(e)17 b(also)g(need)i(a)e(new)i(status)f(\014eld)g(whic)o(h)f(is)h
(used)h(for)e(stu\016ng)h(information)c(generated)20
b(b)o(y)d(user-)75 2371 y(de\014ned)c(requests.)19 b(The)12
b(user)h(pro)o(vides)f(its)g(o)o(wn)f(status)h(deco)q(ding)g(functions)
g(that)g(can)g(access)h(this)f(additional)75 2421 y(status)j(\014eld.)j
(This)c(could)f(also)h(b)q(e)g(done)g(with)g(extra)p
938 2421 V 15 w(state)h(on)f(the)g(complete)f(call.)1967
46 y Ff(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 7 7
7 8 bop 75 -100 a Fi(6.2.)34 b(GENERALIZED)16 b(REQUESTS)1071
b Fr(7)75 49 y Fg(6.2.3)49 b(F)o(ailed)17 b(User)e(F)o(unctions)h(and)g
(Cancelling)i(Requests)75 135 y Fr(When)i(a)f(callbac)o(k)h(function)h
(fails,)g Fn(MPI)d Fr(in)o(v)o(ok)o(es)i(callbac)o(k)g(function)h
Fn(cancel)p 1471 135 14 2 v 17 w(fn)p Fr(.)33 b(When)19
b Fn(cancel)p 1823 135 V 18 w(fn)75 192 y Fr(returns,)c
Fn(MPI)f Fr(terminates)h(the)g(request.)20 b(The)15 b
Fn(cancel)p 1032 192 V 17 w(fn)g Fr(should)h(cancel)h(all)e(in)o
(ternal)h(messages)f(and)75 248 y(free)g(all)h(in)o(ternal)g(data)f
(structures)g(asso)q(ciated)g(with)h(the)f(request.)166
380 y Fk(Missing:)166 430 y Fj(The)h(MPIF)g(has)g(not)g(b)q(een)h(able)
e(to)h(agree)g(on)f(ho)o(w)h(to)f(cancel)i(non-blo)q(c)o(king)d(op)q
(erations.)24 b(This)16 b(needs)75 480 y(further)d(discussion)g(and)g
(a)f(new)h(prop)q(osal.)k(What)12 b(happ)q(ens)i(with)e(non-blo)q(c)o
(king)f(collectiv)o(e)i(will)e(ha)o(v)o(e)h(impact)75
530 y(here.)166 745 y Fk(Discussion:)166 795 y Fj(Should)h(a)h(failure)
f(in)g Fe(free)p 580 795 13 2 v 16 w(fn)h Fj(in)o(v)o(ok)o(e)f
Fe(cancel)p 877 795 V 17 w(fn)p Fj(?)166 845 y(This)18
b(is)g(not)g(in)g(the)h(curren)o(t)g(prop)q(osal.)31
b(The)19 b("request-free")h(and)e("cancel/failure")f(op)q(erations)i
(are)75 895 y(curren)o(tly)c(unrelated.)166 944 y(Can)f
Fe(cancel)p 361 944 V 16 w(fn)g Fj(fail?)j(If)c(so,)h(what)f(happ)q
(ens?)166 994 y(I)h(don't)f(ha)o(v)o(e)h(an)o(y)f(brigh)o(t)h(ideas)g
(here.)166 1044 y(Should)f Fe(MPI)g Fj(in)o(v)o(ok)o(e)g
Fe(free)p 585 1044 V 16 w(fn)h Fj(immediately)d(after)j
Fe(cancel)p 1089 1044 V 16 w(fn)g Fj(for)g(all)e(dynamic)h(memory)e
(allo)q(cation?)166 1094 y(This)h(migh)o(t)f(a)o(v)o(oid)g(duplicating)
h(co)q(de)i(for)e(deallo)q(cation)f(in)i(b)q(oth)f(callbac)o(k)g
(functions)h(at)g(the)g(exp)q(ense)i(of)75 1144 y(some)d(\015exibilit)o
(y)g(\(the)i("request-free")h(and)f("cancel/failure")e(op)q(erations)i
(w)o(ould)e(no)h(longer)h(b)q(e)f(orthogonal\).)166 1193
y(Stev)o(e)i(Lederman)e(raised)h(the)h(follo)o(wing)c(p)q(oin)o(ts:)166
1243 y(Should)i(there)i(b)q(e)g(a)e(default)h Fe(cancel)p
748 1243 V 16 w(fn)p Fj(?)k(This)c(w)o(ould)f(allo)o(w)f(a)i(user)h
(who)e(do)q(es)i(not)f(care)g(what)g(happ)q(ens)75 1293
y(during)e(a)h(CANCEL)g(to)f(a)o(v)o(oid)f(writing)h(a)g
Fe(cancel)p 867 1293 V 17 w(fn)p Fj(.)18 b(The)13 b(default)f(b)q(eha)o
(vior)g(migh)o(t)f(b)q(e)i(to)f(call)g Fe(MPI)p 1710
1293 V 15 w(ABORT)p Fj(.)75 1343 y(The)h(coun)o(ter-argumen)o(t)f(here)
h(is)f(that)h(an)o(y)e(user)j(who)e(is)g(using)g(generalized)h
(requests)h(should)e(b)q(e)h(an)f("exp)q(ert")75 1393
y(user)j(an)o(yw)o(a)o(y)m(.)166 1608 y Fk(Discussion:)166
1658 y Fj(Since)21 b(there)h(are)f(lots)g(of)f(p)q(oten)o(tial)g
Fe(comm)p 901 1658 V 13 w(req)i Fj(and)e(only)g(one)h(status)h
(returned)g(b)o(y)f Fe(MPI)p 1702 1658 V 14 w(W)m(AIT)f
Fj(or)75 1707 y Fe(MPI)p 152 1707 V 14 w(TEST)p Fj(,)d(it)f(is)g(not)g
(clear)h(where)h(the)f Fe(status)g Fj(for)f(eac)o(h)h
Fe(comm)p 1151 1707 V 13 w(req)g Fj(is)g(returned.)27
b(F)m(or)16 b(example,)g(ho)o(w)g(can)75 1757 y(y)o(ou)d(do)h(a)g
Fe(MPI)p 323 1757 V 14 w(TEST)p 441 1757 V 15 w(CANCELLED)g
Fj(to)f(see)j(whic)o(h)d Fe(comm)p 1048 1757 V 13 w(req)i
Fj(completed.)75 1962 y Fg(6.2.4)49 b(Example)17 b(of)f(MPI)p
556 1962 15 2 v 18 w(ALLGA)l(THER)75 2047 y Fr(In)h(this)h(example)f
(the)g(user)g(is)h(trying)f(to)f(p)q(erform)g(a)h(non-blo)q(c)o(king)i
Fn(MPI)p 1392 2047 14 2 v 15 w(ALLGA)l(THER)p Fr(.)f(It)f(will)h(b)q(e)
75 2104 y(done)13 b(with)f(a)g(generalized)i(request)e(b)o(y)g(p)q
(erforming)h Fc(p)t Fm(\000)t Fr(1)f(wrapp)q(ed)h(shifts)f(of)g(data)f
(\()p Fc(p)h Fr(=)h(#)f(pro)q(cesses)75 2160 y(in)k(the)f(comm)o
(unicator\).)166 2217 y(More)k(sp)q(eci\014cally)l(,)j(assume)e(eac)o
(h)f(pro)q(cess)g(i)h(has)f(an)h(arra)o(y)e(of)g(size)j
Fc(a)p Fr([)p Fc(p)p Fr(])d(and)h(its)h(v)m(alue)g(is)g(in)75
2273 y Fc(a)p Fr([)p Fc(i)p Fr(].)25 b(The)18 b(algorithm)f(w)o(orks)g
(b)o(y)g(accepting)h(data)f(from)g(pro)q(cess)g(\()p
Fc(i)11 b Fm(\000)h Fr(1\)\045)p Fc(p)17 b Fr(and)g(sending)i(data)e
(to)75 2330 y(\()p Fc(i)10 b Fr(+)g(1\)\045)p Fc(p)p
Fr(.)20 b(A)o(t)15 b(eac)o(h)h(step,)f(pro)q(cess)h Fc(i)f
Fr(forw)o(ards)f(the)h(data)g(it)h(receiv)o(ed)h(in)f(the)g(last)f
(step.)21 b(Once)16 b(y)o(ou)75 2386 y(shift)i Fc(p)11
b Fm(\000)h Fr(1)17 b(times,)g(eac)o(h)h(pro)q(cess)f(has)g(a)g(cop)o
(y)g(of)g(what)g(w)o(as)f(stored)h(on)g(all)h(other)f(pro)q(cesses.)27
b(Use)75 2443 y(p)q(ersisten)o(t)17 b(comm)o(unication)f(requests)g(to)
g(send)g(and)h(receiv)o(e)g(the)f(data.)22 b(T)l(o)16
b(accomplish)h(this,)f(ha)o(v)o(e)75 2499 y(a)f(separate)f(send)i(and)f
(recv)g(bu\013er.)20 b(Initialize)e(the)d(send)h(bu\013er)f(on)g(pro)q
(cess)h(i)f(to)g(b)q(e)g Fc(a)p Fr([)p Fc(i)p Fr(].)k(After)c(the)75
2556 y(send)h(and)f(recv)h(has)f(o)q(ccurred,)g(cop)o(y)h(the)f(recv)g
(bu\013er)h(in)o(to)f(arra)o(y)f(a)h(and)g(also)h(in)o(to)f(the)g(send)
h(bu\013er)75 2612 y(and)f(rep)q(eat)g(the)g(pro)q(cess)g(un)o(til)h
(done.)21 b(\(This)15 b(ma)o(y)f(not)h(b)q(e)g(the)g(normal)g(w)o(a)o
(y)f(to)g(do)h(this)h(but)f(I)g(w)o(an)o(t)-32 46 y Ff(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 8 8
8 9 bop 75 -100 a Fr(8)894 b Fi(CHAPTER)15 b(6.)35 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)75 49 y Fr(to)15 b(utilize)j(di\013eren)o(t)e
(features)f(for)g(discussion)i(sak)o(e.)k(Most)14 b(p)q(eople)j(w)o
(ould)f(probably)g(do)g(a)f(sendrecv)75 106 y(directly)i(in)o(to)e(the)
g(correct)g(lo)q(cations)h(in)g(arra)o(y)e(a.\))166 162
y(The)20 b(Blo)q(c)o(king)i(C)e(co)q(de)g(is)h(b)q(elo)o(w.)35
b(This)21 b(is)f(to)g(sho)o(w)f(ho)o(w)h(it)g(w)o(ould)h(b)q(e)g(done)f
(no)o(w)g(in)h Fn(MPI)75 219 y Fr(without)15 b(a)g(non-blo)q(c)o(king)i
(request.)75 360 y Fd(MPI_Comm_size\(comm,)k(&p\);)75
416 y(MPI_Comm_rank\(comm,)g(&i\);)75 473 y(/*)j(init)f(your)g
(location)g(in)h(array)f(*/)75 529 y(a[i])g(=)h(i;)75
586 y(/*)g(set)f(initial)g(send)g(value)g(*/)75 642 y(as)h(=)f(a[i])75
699 y(/*)h(process)e(to)i(recv)f(from)h(and)f(persistent)g(request)g
(*/)75 755 y(from)g(=)h(\(i)g(-)f(1\))h(\045)g(p;)75
811 y(MPI_Recv_init\(&ar,)d(1,)j(MPI_DOUBLE,)e(from,)i(13,)f(comm,)g
(&req_recv\);)75 868 y(/*)h(process)e(to)i(send)f(to)h(and)f
(persistent)g(request)g(*/)75 924 y(to)h(=)f(\(i)h(+)g(1\))f(\045)h(p;)
75 981 y(MPI_Send_init\(&as,)d(1,)j(MPI_DOUBLE,)e(to,)i(13,)f(comm,)g
(&req_send\);)75 1037 y(/*)h(do)f(send)g(and)h(recv)f(p)h(-)g(1)f
(times)h(*/)75 1094 y(for)f(\(c1)h(=)g(0;)f(c1)h(<)g(p)f(-)h(1;)g
(c1++\))f({)147 1150 y(/*)g(begin)g(persistent)g(send)g(and)h(recv)f
(*/)147 1207 y(MPI_Start\(&req_recv\);)147 1263 y
(MPI_Start\(&req_send\);)147 1320 y(/*)g(when)g(recv)h(complete)f(copy)
g(result)g(in)h(final)f(array)g(a)h(*/)147 1376 y(MPI_Wait\(&req_recv,)
d(&status_recv\);)147 1432 y(a[\(i)i(-)h(1)f(-)h(c1)g(+)f(p\))h(\045)g
(p])f(=)h(ar;)47 b(/*)24 b(add)f(p)h(to)g(make)f(sure)g(mod)h(is)f
(positive)g(*/)147 1489 y(/*)g(when)g(send)h(completes,)e(copy)i(recv)f
(buf)g(into)h(send)f(buf)g(for)h(next)f(round)g(*/)147
1545 y(MPI_Wait\(&req_send,)e(&status_send\);)147 1602
y(as)i(=)h(ar;)75 1658 y(})75 1715 y(/*)g(free)f(up)g(persistent)g
(requests)g(*/)75 1771 y(MPI_Request_free\(&req_recv)o(\);)75
1828 y(MPI_Request_free\(&req_send)o(\);)166 1912 y Fr(A)o(t)17
b(the)i(start,)e Fc(a)p Fr([)p Fc(i)p Fr(])f(=)i Fc(i)g
Fr(and)g Fc(a)p Fr([)p Fc(j)s Fr(])e(=)i(0)g(\()p Fc(j)i
Fm(6)p Fr(=)d Fc(i)p Fr(\))h(on)g(pro)q(cess)g Fc(i)p
Fr(.)29 b(A)o(t)17 b(the)h(end,)i Fc(a)p Fr([)p Fc(j)s
Fr(])c(=)i Fc(j)i Fr(on)e(all)75 1969 y(pro)q(cesses.)166
2025 y(As)d(an)g(example,)h(with)f Fc(p)e Fr(=)g(4,)h(pro)q(cess)i(1)f
(do)q(es:)p 75 2070 364 2 v 74 2126 2 57 v 100 2110 a(c1)p
167 2126 V 50 w(send)p 305 2126 V 50 w(recv)p 437 2126
V 75 2128 364 2 v 74 2185 2 57 v 110 2168 a(0)p 167 2185
V 68 w Fc(a)p Fr([1])p 305 2185 V 62 w Fc(a)p Fr([0])p
437 2185 V 74 2241 V 110 2224 a(1)p 167 2241 V 68 w Fc(a)p
Fr([0])p 305 2241 V 62 w Fc(a)p Fr([3])p 437 2241 V 74
2297 V 110 2281 a(2)p 167 2297 V 68 w Fc(a)p Fr([3])p
305 2297 V 62 w Fc(a)p Fr([2])p 437 2297 V 75 2299 364
2 v 166 2365 a(No)o(w)e(to)h(do)g(this)h(with)g(a)e(non-blo)q(c)o(king)
j(generalized)g(request.)k(Create)14 b(a)g(p)q(ersisten)o(t)g(comm)o
(uni-)75 2421 y(cation)j(request)g(to)f(send)i(to)e(\()p
Fc(i)11 b Fr(+)g(1\)\045)p Fc(p)16 b Fr(and)h(a)g(request)g(to)f(recv)h
(from)f(\()p Fc(i)11 b Fm(\000)h Fr(1\)\045)p Fc(p)p
Fr(.)24 b(The)17 b(algorithm)75 2478 y(is)g(demand)f(driv)o(en.)24
b(Begin)17 b(b)o(y)f(starting)g(the)g(p)q(ersisten)o(t)h(recv)f(and)h
(send.)23 b(Eac)o(h)16 b(time)h(one)f(of)g(these)75 2534
y(\014nishes,)21 b(y)o(ou)d(w)o(an)o(t)g Fn(MPI)g Fr(to)g(call)h(y)o
(our)g Fn(handler)p 950 2534 14 2 v 17 w(fn)p Fr(.)30
b(When)20 b(the)e(recv)h(\014nishes)h(y)o(ou)f(can)f(cop)o(y)h(the)75
2591 y(data)e(in)o(to)i(the)f(correct)f(lo)q(cation)i(in)g(the)f(arra)o
(y)f(a.)29 b(If)18 b(the)g(send)h(is)g(done,)f(then)h(y)o(ou)f(can)g
(cop)o(y)g(the)75 2647 y(recv)g(data)e(in)o(to)i(the)f(send)h
(bu\013er.)26 b(Once)19 b(b)q(oth)e(are)g(done)h(y)o(ou)f(can)h(start)e
(a)h(new)g(send)h(and)g(recv)f(if)75 2704 y(y)o(ou)e(ha)o(v)o(e)g(not)f
(\014nished.)1967 46 y Ff(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 9 9
9 10 bop 75 -100 a Fi(6.2.)29 b(GENERALIZED)16 b(REQUESTS)1076
b Fr(9)166 49 y(Belo)o(w)15 b(is)h(C)f(co)q(de.)166 106
y(The)g(main)h(routine)g(whic)o(h)g(calls)g(the)f(non-blo)q(c)o(king)i
(op)q(eration)f(w)o(ould)f(do:)75 212 y Fd(/*)24 b(this)f(supplies)g
(the)g(init,)g(start,)g(complete,)g(free,)g(and)h(cancel)f(functions)
147 268 y(for)g(the)g(request.)47 b(MPI)24 b(returns)e(in)i(type_req)f
(the)g(new)h(request)f(*/)75 325 y(MPI_Request_type_create\(in)o
(it_fn,)d(start_fn,)j(complete_fn,)f(free_fn,)75 381
y(cancel_fn,)g(&type_req\);)75 494 y(/*)i(set)f(up)h(the)f(information)
f(needed)h(by)h(the)g(calls.)46 b(Thus,)24 b(the)f(extra_state)147
551 y(is)g(done.)47 b(Need)24 b(to)f(put)h(all)f(the)g(extra_state)g
(into)g(some)g(sort)h(of)f(structure)147 607 y(associated)f(with)h
(extra_state.)g(This)g(is)h(not)f(shown)g(*/)75 720 y(/*)h(Initialize)e
(the)i(request.)46 b(This)23 b(MPI)h(routine)f(will)g(call)g(the)h
(init_fn.)f(*/)75 777 y(MPI_Request_init\(type_req,)d(extra,)j(comm,)h
(&request\);)75 889 y(/*)g(start)f(the)g(non-blocking)f(operation.)47
b(This)23 b(calls)g(start_fn.)g(*/)75 946 y(MPI_Start\(&request\);)75
1059 y(/*)h(do)f(other)g(stuff)h(that)f(can)g(go)h(on)f(while)h
(non-blocking)e(operation)h(is)147 1115 y(going.)46 b(This)24
b(is)f(not)h(shown.)f(*/)75 1228 y(/*)h(now)f(wait)g(until)h
(non-blocking)e(operation)g(is)i(done)f(*/)75 1285 y(/*)h(it)f(is)h
(not)f(clear)g(what)h(is)f(put)h(into)f(status)g(*/)75
1341 y(MPI_Wait\(&request,)e(&status\);)75 1454 y(/*)j(done)f(with)g
(request,)g(free)g(up.)48 b(This)23 b(calls)g(free_fn.)g(*/)75
1510 y(MPI_Request_free\(&request\))o(;)75 1623 y(/*)h(done)f(with)g
(type_req,)g(free)g(up)h(*/)75 1680 y(MPI_Type_request_free\(&typ)o
(e_req\);)166 1786 y Fr(The)15 b(functions)h(for)f(the)g(generalized)i
(request)e(are:)75 1949 y Fd(init_fn\(type_req,)22 b(*extra,)g(comm,)i
(request\))75 2005 y({)75 2118 y(/*)g(initialize)e(counters)h(and)g
(info)h(*/)75 2175 y(MPI_Comm_size\(comm,)d(&extra->p\);)75
2231 y(MPI_Comm_rank\(comm,)g(&extra->i\);)75 2288 y(extra->request)h
(=)i(request;)75 2344 y(/*)g(process)e(to)i(recv)f(from)h(and)f
(persistent)g(request)g(*/)75 2400 y(from)g(=)h(\(extra->i)f(-)g(1\))h
(\045)g(extra->p;)75 2457 y(MPI_Recv_init\(&extra->ar,)c(1,)k
(MPI_DOUBLE,)e(from,)i(13,)f(comm,)g(extra,)123 2513
y(&extra->req_recv\);)75 2570 y(/*)h(process)e(to)i(send)f(to)h(and)f
(persistent)g(request)g(*/)75 2626 y(to)h(=)f(\(extra->i)g(+)h(1\))f
(\045)h(extra->p;)75 2683 y(MPI_Send_init\(&extra->as,)c(1,)k
(MPI_DOUBLE,)e(to,)i(13,)f(comm,)-32 46 y Ff(1)-32 103
y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 10 10
10 11 bop 75 -100 a Fr(10)876 b Fi(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)123 49 y Fd(&extra->req_send\);)75
106 y(*)24 b(completed)e(ok)i(*/)75 162 y(return)f(MPI_SUCCESS;)75
219 y(})75 444 y(start_fn\(*extra,)f(comm,)h(request\))75
501 y({)75 557 y(/*)h(init)f(your)g(location)g(in)h(array)f(*/)75
614 y(extra->a[extra->i])e(=)j(extra->i;)75 670 y(/*)g(set)f(initial)g
(send)g(value)g(*/)75 727 y(extra->as)g(=)g(extra->a[extra->i])75
783 y(/*)h(haven't)e(done)i(any)f(yet)h(*/)75 840 y
(extra->num_completed)d(=)j(0;)75 896 y(extra->num_done)e(=)i(0;)75
1009 y(/*)g(begin)f(persistent)f(recv)i(and)f(send)g(*/)75
1065 y(MPI_Start\(&extra->req_recv)o(\);)75 1122 y
(MPI_Post_Handler\(&extra->r)o(eq_recv)o(,)e(&extra->status_recv,)g
(handler_fn\);)75 1178 y(MPI_Start\(&extra->req_send)o(\);)75
1235 y(MPI_Post_Handler\(&extra->r)o(eq_send)o(,)g
(&extra->status_send,)g(handler_fn\);)75 1348 y(return)i(MPI_SUCCESS;)
75 1404 y(})166 1510 y Fr(Eac)o(h)15 b(time)g(a)g(hsend)h(or)f(hrecv)h
(\014nishes,)g(the)f(handler)p 1129 1510 14 2 v 18 w(fn)g(gets)g
(called:)75 1617 y Fd(handler_fn\(extra,)22 b(status,)g(comm\))75
1673 y({)75 1730 y(/*)i(note)f(a)h(send)f(or)h(recv)f(finished)g(*/)75
1786 y(extra->num_completed++;)75 1843 y(/*)h(if)f(num_complete)f(!=)i
(2)g(then)f(not)g(both)h(send)f(and)h(recv)f(done)g(*/)75
1899 y(if)h(\(extra->num_completed)d(!=)i(2\))h({)170
1955 y(return)f(\(MPI_SUCCESS\);)75 2012 y(})75 2125
y(extra->num_completed)e(=)j(0;)f(/*)h(reset)f(*/)75
2238 y(/*)h(We)f(don't)g(get)h(here)f(unless)g(both)g(the)h(send)f(&)h
(recv)f(completed)g(*/)75 2294 y(/*)h(note)f(another)g(round)g
(completed)g(*/)75 2351 y(extra->num_done++;)75 2464
y(/*)h(copy)f(received)g(data)g(*/)75 2520 y(extra->a[\(extra->i)e(-)j
(1)g(-)g(extra->num_done)d(+)j(extra->p\))f(\045)g(extra->p])218
2576 y(=)h(extra->ar;)75 2633 y(/*)g(see)f(if)h(completely)e(done)h(*/)
75 2689 y(if)h(\(extra->num_done)d(==)j(extra->p)f(-)g(1\))h({)1967
46 y Ff(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 11 11
11 12 bop 75 -100 a Fi(6.3.)34 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)i
(IN)f Fn(MPI)e Fi(OP)l(A)o(QUE)i(OBJECTS)429 b Fr(11)170
49 y Fd(/*)24 b(mark)f(request)g(done)h(*/)170 106 y
(MPI_Request_mark_completed\(&e)o(xtra->re)o(quest\);)75
162 y(})75 219 y(else)f({)170 275 y(/*)h(set)f(data)h(to)f(be)h(sent)f
(*/)170 332 y(extra->as)g(=)h(extra->ar;)170 444 y(/*)g(begin)f(new)h
(round)f(*/)170 501 y(MPI_Start\(extra->req_recv\);)170
557 y(MPI_Start\(extra->req_send\);)170 614 y
(MPI_Post_Handler\(&extra->req_)o(recv,)e(&extra->status_recv,)g
(handler_fn\);)170 670 y(MPI_Post_Handler\(&extra->req_)o(send,)g
(&extra->status_send,)g(handler_fn\);)75 727 y(})75 840
y(return)i(\(MPI_SUCCESS\);)75 896 y(})75 1065 y(free_fn\(comm,)f
(request,)h(*extra\))75 1122 y({)75 1178 y(/*)h(free)f(up)g(the)h
(persistent)e(communications)g(requests)h(*/)75 1235
y(MPI_Request_free\(&extra->r)o(eq_recv)o(\);)75 1291
y(MPI_Request_free\(&extra->r)o(eq_send)o(\);)75 1348
y(return)g(MPI_SUCCESS;)75 1404 y(})166 1643 y Fk(Missing:)166
1693 y Fj(The)14 b Fe(cancel)p 358 1693 13 2 v 17 w(fn)g
Fj(is)g(not)f(sho)o(wn)h(since)h(it)e(is)h(not)g(clear)g(ho)o(w)g(this)
g(is)f(going)g(to)h(w)o(ork)f(at)h(the)h(curren)o(t)g(time.)75
1919 y Fo(6.3)59 b(Accessing)20 b(Info)n(rmation)h(in)e(MPI)h(Opaque)f
(Objects)75 2022 y Fg(6.3.1)49 b(Intro)q(duction)75 2108
y Fr(The)19 b(success)h(of)f Fn(MPI-1)g Fr(has)g(motiv)m(ated)g(man)o
(y)g(to)q(ol)g(writers)g(to)g(la)o(y)o(er)g(pac)o(k)m(ages)g(on)g(top)g
(of)g Fn(MPI)p Fr(.)75 2164 y(A)i(common)f(t)o(yp)q(e)h(of)g(pac)o(k)m
(age)g(b)q(eing)h(implemen)o(ted)h(is)e(designed)h(to)f(p)q(erform)f
(pro\014ling.)39 b Fn(MPI-1)75 2220 y Fr(included)21
b(a)d(pro\014ling)i(in)o(terface)f(to)e(allo)o(w)i(for)f(easy)g(la)o(y)
o(ering)h(of)f(suc)o(h)h(a)f(pac)o(k)m(age)g(on)h(top)f(of)g
Fn(MPI)p Fr(.)75 2277 y(Though)c(the)g(pro\014ling)h(in)o(terface)g
(has)e(b)q(een)j(successful,)f(pro\014ling)g(library)g(writers)f(ha)o
(v)o(e)f(found)i(that)75 2333 y(a)e(n)o(um)o(b)q(er)h(of)e(pieces)j(of)
e(information)g(that)g(they)g(need)h(concerning)h(information)e(inside)
i Fn(MPI)e Fr(cannot)75 2390 y(b)q(e)k(gotten)g(in)g(a)g(p)q(ortable)g
(w)o(a)o(y)l(.)24 b(This)17 b(arises,)g(mostly)l(,)g(as)g(a)f
(consequence)i(of)f(the)g(extensiv)o(e)g(use)g(of)75
2446 y(opaque)e(ob)s(jects)g(in)h Fn(MPI)p Fr(.)166 2503
y(This)d(section)f(adds)g(a)g(n)o(um)o(b)q(er)h(of)e(new)i(opaque)f(ob)
s(ject)f(accessor)h(functions.)20 b(Though)12 b(primarily)75
2559 y(motiv)m(ated)j(b)o(y)h(pro\014ling)g(libraries,)g(these)g
(functions)g(ha)o(v)o(e)e(more)h(general)h(applicabilit)o(y)l(.)189
2665 y Fb(R)n(ationale.)-32 46 y Ff(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 12 12
12 13 bop 75 -100 a Fr(12)871 b Fi(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)189 49 y Fr(The)13
b Fn(MPI)g Fr(F)l(orum)g(decided)j(to)d(include)i(these)f(calls)h
(instead)f(of)f(the)h(alternativ)o(es.)19 b(An)14 b(alterna-)189
106 y(tiv)o(e)g(to)f(get)g(the)h(request)g(t)o(yp)q(e)g(in)h(a)e
(pro\014ling)j(library)e(is)h(to)e(in)o(tercept)h(ev)o(ery)g(call)h
(that)e(creates)189 162 y(or)i(destro)o(ys)f(a)i(request)f(in)h
Fn(MPI)p Fr(.)f(The)h(pro\014ling)h(library)f(could)g(log)g(eac)o(h)g
(ev)o(en)o(t)f(and)h(note)f(the)189 219 y(address)c(of)h(the)g(handle)h
(along)e(with)i(its)f(c)o(haracteristics.)19 b(Then)12
b(whenev)o(er)g(a)f(handle)i(is)g(used)f(in)189 275 y(a)h(pro\014led)h
(call,)h(the)e(address)h(w)o(ould)g(b)q(e)g(logged.)19
b(By)14 b(matc)o(hing)f(up)h(these)g(ev)o(en)o(ts,)f(the)h(needed)189
332 y(information)i(could)h(b)q(e)f(gotten.)21 b(Ho)o(w)o(ev)o(er,)15
b(the)h Fn(MPI)f Fr(F)l(orum)h(felt)g(that)f(this)h(mec)o(hanism)h(w)o
(as)189 388 y(cum)o(b)q(ersome)g(and)g(could)g(substan)o(tially)h(add)f
(to)f(the)h(o)o(v)o(erhead)f(either)i(during)f(the)g(program)189
444 y(execution)d(or)f(during)h(p)q(ost)f(pro)q(cessing)h(of)f(log)g
(\014les)h(to)f(matc)o(h)f(up)i(the)f(information)h(for)e(ev)o(en)o(ts)
189 501 y(in)o(v)o(olving)19 b(the)g(same)f(request.)30
b(Also,)19 b(some)f(pro\014lers)h(can)g(start)e(and)i(stop)f
(pro\014ling)h(at)f(ar-)189 557 y(bitrary)e(p)q(oin)o(ts)h(in)g(the)g
(program.)22 b(These)17 b(systems)f(do)g(not)h(w)o(an)o(t)e(to)h(do)g
(an)o(y)g(logging)h(during)189 614 y(p)q(oin)o(ts)i(where)f(they)h(are)
f(turned)h(o\013)f(to)g(a)o(v)o(oid)g(p)q(erturbing)i(the)e(program.)29
b(Ha)o(ving)19 b(to)f(k)o(eep)189 670 y(trac)o(k)d(of)i(all)g
Fn(MPI)g Fr(calls)g(w)o(ould)h(not)e(allo)o(w)h(suc)o(h)g(a)f(system)h
(to)f(giv)o(e)h(full)h(information.)25 b(These)189 727
y(new)14 b(accessor)g(functions)h(w)o(ere)g(felt)f(to)g(b)q(e)h(inexp)q
(ensiv)o(e)i(and)d(ha)o(v)o(e)g(no)h(additional)h(o)o(v)o(erhead)d(if)
189 783 y(they)i(are)g(not)g(called.)189 858 y(\()p Fb(End)g(of)i(r)n
(ationale.)p Fr(\))189 965 y Fb(R)n(ationale.)189 1040
y Fr(An)h(original)h(goal)f(w)o(as)f(to)h(allo)o(w)g(debuggers)g(to)g
(b)q(e)g(able)h(to)f(p)q(ortably)g(get)g(the)g(information)189
1096 y(of)e(in)o(terest)g(from)g Fn(MPI)p Fr(.)f(The)i(t)o(yp)q(e)f(of)
g(information)g(desired)i(w)o(as)e(message)f(state,)h(datat)o(yp)q(es,)
189 1153 y(comm)o(uicators,)i(etc.)31 b(Some)19 b(of)f(these)h(items)g
(are)f(di\016cult)i(to)f(giv)o(e)g(since)g Fn(MPI)g Fr(delib)q(erately)
189 1209 y(do)q(es)c(not)g(sp)q(ecify)i(their)e(meaning,)h(e.g.,)e
(message)h(queues.)20 b(The)c(problem)g(with)f(giving)h(other)189
1266 y(information)c(is)h(that)e(debuggers)i(are)f(often)f(making)i
(information)f(requests)g(at)g(un)o(usual)h(places)189
1322 y(in)g(a)f(programs)g(execution.)20 b(F)l(or)12
b(example,)h(it)g(ma)o(y)f(b)q(e)h(in)h(the)f(middle)h(of)e(an)h
Fn(MPI)f Fr(op)q(eration)g(or)189 1378 y(in)k(an)g(error)f(state.)21
b(A)o(t)16 b(these)g(p)q(oin)o(ts,)g(it)g(can)g(b)q(e)g(hard)g(or)g
(imp)q(ossible)i(to)d(return)h(the)g(desired)189 1435
y(information.)37 b(The)21 b(alternativ)o(e)g(prop)q(osed)g(w)o(as)f
(to)h(ha)o(v)o(e)f Fn(MPI)g Fr(k)o(eep)i(shado)o(w)e(information)189
1491 y(whic)o(h)h(the)f(debugger)h(could)g(access.)35
b(The)21 b(problem)g(with)f(this)h(is)g(that)e(it)i(adds)f(o)o(v)o
(erhead)189 1548 y(to)c(program)h(execution)h(ev)o(en)g(when)g(the)f
(information)h(is)g(not)f(used.)27 b(No)17 b(concrete)h(prop)q(osal)189
1604 y(w)o(as)e(giv)o(en)i(that)f(meet)g(all)h(of)f(the)h(desired)g
(goals.)26 b(As)17 b(a)g(result,)h(man)o(y)f(of)g(the)h(features)f
(that)189 1661 y(debuggers)e(ma)o(y)g(ha)o(v)o(e)f(w)o(an)o(ted)h(are)g
(left)g(out)g(of)g(this)h(section.)k(\()p Fb(End)c(of)g(r)n(ationale.)p
Fr(\))75 1782 y Fg(6.3.2)49 b(Info)o(rmation)17 b(from)e(P)o(ersistant)
g(Send/Recv)h(Request)75 1868 y Fr(The)21 b(functionalit)o(y)h(has)f(b)
q(een)h(limited)h(to)d(p)q(ersistan)o(t)h(requests.)38
b(Also,)22 b(only)g(one)f(function)g(no)o(w)-170 1855
y Fm(>)p Fr(\()p Fl(June)p Fr(\))75 1914 y(returns)e(all)g(the)g(info.)
31 b(the)19 b(problems)g(with)g(length)g(\(no)o(w)f(coun)o(t\))g(has)h
(b)q(een)h(resolv)o(ed)f(b)q(ecause)g(of)75 1970 y(adding)d(MPI)p
316 1970 14 2 v 16 w(GET)p 432 1970 V 16 w(ST)l(A)l(TUS)g(elsewhere.)
-170 1957 y Fm(?)p Fr(\()p Fl(June)p Fr(\))166 2016 y(Pro\014ling)g
(libraries)g(usually)g(w)o(an)o(t)e(to)g(log)g(information)h(ab)q(out)g
(sends)g(and)g(receiv)o(es)h(when)f(they)75 2072 y(b)q(egin)i(and/or)d
(end.)21 b(This)16 b(information)g(can)f(b)q(e)h(gotten)f(from)g(most)f
(send)i(and)g(receiv)o(e)g(calls.)21 b(Ho)o(w-)75 2129
y(ev)o(er,)16 b(it)h(is)g(not)f(a)o(v)m(ailable)i(when)f(a)f(p)q
(ersistan)o(t)g(request)g(is)h(b)q(egun.)24 b(The)17
b(follo)o(wing)g(call)h(returns)e(the)75 2185 y(same)h(information)h
(ab)q(out)f(a)h(p)q(ersistan)o(t)f(request)h(that)f(is)h(a)o(v)m
(ailable)h(when)f(a)f(non-p)q(ersistan)o(t)h(send)75
2241 y(or)f(receiv)o(e)i(is)f(b)q(egun.)28 b(With)18
b(the)f(addition)i(of)e Fn(MPI)p 1014 2241 V 16 w(GET)p
1118 2241 V 17 w(ST)l(A)l(TUS)i Fr(to)e(non-destructiv)o(ely)i(get)e
(the)75 2298 y Fn(status)g Fr(from)c(a)i Fn(request)p
Fr(,)h(the)f(information)f(needed)i(at)e(the)h(w)o(ait)f(can)h(no)o(w)f
(b)q(e)h(gotten)f(easily)i(without)75 2354 y(creating)f(another)g
(function.)1967 46 y Ff(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 13 13
13 14 bop 75 -100 a Fi(6.3.)34 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)i
(IN)f Fn(MPI)e Fi(OP)l(A)o(QUE)i(OBJECTS)429 b Fr(13)75
49 y Fn(MPI)p 160 49 14 2 v 16 w(REQUEST)p 379 49 V 18
w(INF)o(O\(request,)16 b(tag,)f(pa)o(rtner,)g(count\))117
126 y Fj(IN)155 b Fn(request)452 b Fj(P)o(ersistan)o(t)15
b(send)g(or)f(receiv)o(e)h(request)117 201 y(OUT)108
b Fn(tag)526 b Fj(tag)14 b(asso)q(ciated)g(with)g(request)117
275 y(OUT)108 b Fn(pa)o(rtner)452 b Fj(partner)15 b(asso)q(ciated)g
(with)e(request)117 350 y(OUT)108 b Fn(count)482 b Fj(coun)o(t)14
b(asso)q(ciated)h(with)f(request)75 474 y Fd(int)23 b(MPI)p
245 474 15 2 v 17 w(Request)p 430 474 V 16 w(info\(MPI)p
638 474 V 17 w(Request)f(request,)h(int)h(*tag,)f(int)g(*partner,)g
(int)393 530 y(*count\))75 617 y(MPI)p 150 617 V 17 w(REQUEST)p
335 617 V 16 w(INFO\(REQUEST,)f(TAG,)h(PARTNER,)g(COUNT\))170
673 y(INTEGER)g(REQUEST,)g(TAG,)g(PARTNER,)g(COUNT)166
760 y Fr(If)18 b Fn(request)h Fr(is)f(a)f(send)h(then)g(the)f
(destination)i(is)f(returned)g(in)g Fn(pa)o(rtner)p Fr(.)27
b(If)18 b Fn(request)h Fr(is)f(a)f(receiv)o(e)75 816
y(then)f(the)f(source)g(is)h(returned)f(in)h Fn(pa)o(rtner)p
Fr(.)166 873 y Fn(count)g Fr(gets)f(the)g(coun)o(t)g(giv)o(en)h(when)g
(the)f(p)q(ersistan)o(t)g(send)h(or)f(receiv)o(e)h(w)o(as)e(created.)
189 974 y Fb(A)n(dvic)n(e)i(to)h(users.)46 b Fr(In)17
b(the)f(case)g(of)g(a)g(receiv)o(e,)g(the)h(coun)o(t)f(from)f
Fn(MPI)p 1439 974 14 2 v 16 w(REQUEST)p 1658 974 V 18
w(INF)o(O)h Fr(ma)o(y)189 1031 y(di\013er)f(from)f(the)h(coun)o(t)f
(actually)i(receiv)o(ed.)21 b(One)16 b(should)f(use)h
Fn(MPI)p 1383 1031 V 15 w(GET)p 1486 1031 V 17 w(ST)l(A)l(TUS)g
Fr(to)e(get)h(the)189 1087 y Fn(status)e Fr(from)e(the)h(\014nished)h
Fn(request)g Fr(and)f(then)g(use)g Fn(MPI)p 1148 1087
V 16 w(GET)p 1252 1087 V 16 w(COUNT)h Fr(to)e(get)g(the)g(actual)h
(coun)o(t)189 1144 y(receiv)o(ed.)21 b(\()p Fb(End)15
b(of)i(advic)n(e)f(to)g(users.)p Fr(\))189 1245 y Fb(R)n(ationale.)53
b Fr(A)o(t)17 b(\014rst)g(glance)h(it)g(ma)o(y)e(seem)i(unreasonable)g
(to)f(limit)i(the)e(inquiry)i(functions)189 1302 y(to)d(p)q(ersistan)o
(t)g(requests.)25 b(Ho)o(w)o(ev)o(er,)15 b(it)i(is)h(p)q(ossible)g(to)e
(ha)o(v)o(e)g(an)h(implemen)o(tation)h(where)f(one)189
1358 y(do)q(es)23 b(not)f(store)g(the)h(t)o(yp)q(e)f(of)h(request)f
(but)h(rather)f(stores)g(the)h(actions)g(that)f(need)h(to)f(b)q(e)189
1415 y(tak)o(en,)d(e.g.,)h(the)g(functions)g(to)f(execute.)34
b(Adding)20 b(the)g(requiremen)o(t)g(to)f(store)g(the)h(t)o(yp)q(e)f
(of)189 1471 y(request)i(adds)h(o)o(v)o(erhead)f(to)g(time)g(critical)i
(co)q(de.)39 b(Since)23 b(the)f(information)g(is)g(usually)g(not)189
1528 y(needed)d(for)e(non-p)q(ersistan)o(t)h(requests,)g(it)g(do)q(es)g
(not)f(mak)o(e)g(sense)i(to)e(add)h(this)g(requiremen)o(t.)189
1584 y(Ho)o(w)o(ev)o(er,)11 b(additional)j(information)f(is)g(often)f
(needed)i(for)d(p)q(ersistan)o(t)i(requests.)19 b(The)12
b(o)o(v)o(erhead)189 1641 y(of)18 b(requiring)i(information)g(here)f
(is)h(generally)g(not)e(as)h(great)f(since)i(p)q(ersistan)o(t)f
(requests)g(are)189 1697 y(usually)d(reused)g(man)o(y)f(times.)20
b(\()p Fb(End)15 b(of)i(r)n(ationale.)p Fr(\))166 1875
y Fk(Discussion:)166 1925 y Fj(T)m(o)g(giv)o(e)g(all)f(the)i
(information)d(a)o(v)n(ailable)g(at)i(a)g(non-p)q(ersistan)o(t)i
(send/recv)g(w)o(e)f(also)f(need)h(to)f(giv)o(e)g(the)75
1974 y(datat)o(yp)q(e.)27 b(I)17 b(don't)g(kno)o(w)f(ho)o(w)h(this)g(w)
o(ould)f(e\013ect)i(implemen)o(tations.)24 b(Also,)17
b(no)g(one)g(seems)g(to)g(b)q(e)h(asking)75 2024 y(for)d(this.)23
b(Ho)o(w)o(ev)o(er,)16 b(I)f(w)o(ould)g(think)g(that)g(it)g(migh)o(t)f
(b)q(e)i(something)e(a)h(pro\014ler)h(or)f(debugger)h(w)o(ould)f(w)o
(an)o(t)g(to)75 2074 y(displa)o(y)m(.)166 2289 y Fk(Discussion:)166
2339 y Fj(It)f(has)f(b)q(een)i(prop)q(osed)f(that)g(the)g(pro\014ling)f
(v)o(ersions)h(of)f(these)i(routines)f(b)q(e)g(implemen)o(table)d(as)i
(macros.)75 2389 y(The)g(rationale)e(is)i(that)f(pro\014lers)h(are)g
(lik)o(ely)e(to)h(call)f(the)i(pro\014ling)f(v)o(ersions)h(when)f(they)
h(need)h(information)9 b(\(to)75 2439 y(a)o(v)o(oid)k(getting)i(added)g
(to)g(the)g(time)f(traces\).)22 b(If)15 b(these)h(are)f(macros)f(they)h
(ma)o(y)e(b)q(e)j(faster.)21 b(Doing)14 b(this)h(w)o(ould)75
2488 y(break)f(the)h(symmetry)d(b)q(et)o(w)o(een)j(the)g(pro\014ling)d
(and)i(regular)g(v)o(ersion.)k(Do)c(w)o(e)g(w)o(an)o(t)f(to)h(do)g
(this?)166 2704 y Fk(Missing:)-32 46 y Ff(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 14 14
14 15 bop 75 -100 a Fr(14)871 b Fi(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)166 49 y Fj(if)16
b(w)o(e)i(add)f(p)q(ersistan)o(t)i(collectiv)o(e)e(op)q(erations)h
(then)g(w)o(e)f(need)h(to)g(decide)g(if)e(w)o(e)i(are)g(going)e(to)h
(supp)q(ort)75 99 y(them)c(and)h(ho)o(w.)75 303 y Fg(6.3.3)49
b(Identifying)17 b(P)o(ersistant)e(Requests)90 383 y
Fk(Discussion:)-170 360 y Fm(>)p Fr(\()p Fl(June)p Fr(\))166
504 y Fj(This)20 b(function)g(has)h(b)q(een)g(c)o(hanged)g(so)g(it)f
(only)f(returns)j(whether)g(a)e(request)i(is)f(p)q(ersistan)o(t)g(or)g
(not.)75 554 y(This)15 b(capabilit)o(y)e(is)i(needed)h(to)f(tell)f
(whether)i(the)g(accessor)h(functions)d(describ)q(ed)j(b)q(elo)o(w)e
(can)g(get)g(additional)75 604 y(information.)24 b(The)18
b(rationale)e(in)h(that)g(section)g(describ)q(es)i(wh)o(y)e(w)o(e)g
(limit)e(these)j(capabilities)e(to)h(p)q(ersistan)o(t)75
654 y(request.)-170 770 y Fm(?)p Fr(\()p Fl(June)p Fr(\))166
838 y(The)d(accessor)g(functions)g(for)f Fn(requests)j
Fr(can)e(only)h(retriv)o(e)f(information)g(on)f(p)q(ersistan)o(t)h
(requests.)75 895 y(Th)o(us,)19 b(it)g(is)f(imp)q(ortan)o(t)g(to)g(kno)
o(w)g(whether)h(a)f(giv)o(en)h(request)f(is)h(p)q(ersistan)o(t)g(or)f
(not.)29 b(This)19 b(can)f(b)q(e)75 951 y(accomplished)f(b)o(y)e(the)g
(follo)o(wing)h(function.)75 1102 y Fn(MPI)p 160 1102
14 2 v 16 w(REQUEST)p 379 1102 V 18 w(PERSIST)l(ANT\(request,)h(p)q
(ersistant\))117 1179 y Fj(IN)155 b Fn(request)452 b
Fj(An)14 b(MPI)p 1056 1179 13 2 v 15 w(Request)117 1254
y(OUT)108 b Fn(p)q(ersistant)405 b Fj(true)15 b(if)e(request)j(is)d(p)q
(ersistan)o(t)75 1379 y Fd(int)23 b(MPI)p 245 1379 15
2 v 17 w(Request)p 430 1379 V 16 w(persistant\(MPI)p
782 1379 V 16 w(Request)g(request,)f(int)i(*persistant\))75
1465 y(MPI)p 150 1465 V 17 w(REQUEST)p 335 1465 V 16
w(PERSISTANT\(REQUEST,)d(PERSISTANT\))170 1522 y(INTEGER)i(REQUEST)170
1578 y(LOGICAL)g(PERSISTANT)166 1665 y Fr(This)15 b(routine)h(returns)e
(true)h(in)h Fn(p)q(ersistant)h Fr(if)e(the)g(request)g(is)g(a)g(p)q
(ersistan)o(t)f(request.)20 b(Otherwise)75 1721 y(it)15
b(returns)h(false.)75 1843 y Fg(6.3.4)49 b(Communicato)o(r)16
b(ID)75 1929 y Fr(Pro\014ling)e(libraries)h(often)e(w)o(an)o(t)g(a)g
(comm)o(unicator)g(ID)g(so)g(that)g(they)g(can)h(asso)q(ciate)f(calls)i
(that)e(o)q(ccur)75 1985 y(on)k(the)g(same)f(comm)o(unicator.)25
b(This)17 b(is)h(also)e(useful)i(since)g(pro)q(cesses)g(can)f(ha)o(v)o
(e)f(the)h(same)g(rank)f(in)75 2042 y(di\013eren)o(t)i(comm)o
(unicators)g(or)f(the)i(same)e(pro)q(cess)i(can)f(b)q(e)h(in)o(v)o(olv)
o(ed)g(in)f(di\013eren)o(t)h(comm)o(unicators.)75 2098
y(Th)o(us,)c(the)g(follo)o(wing)h(call)g(is)g(giv)o(en:)75
2249 y Fn(MPI)p 160 2249 14 2 v 16 w(COMMUNICA)l(TOR)p
542 2249 V 18 w(ID\(comm,)c(id\))117 2326 y Fj(IN)155
b Fn(comm)470 b Fj(Comm)o(unicator)11 b(to)j(return)h(id)e(of)117
2401 y(OUT)108 b Fn(id)553 b Fj(id)14 b(of)f(comm)75
2526 y Fd(int)23 b(MPI)p 245 2526 15 2 v 17 w(Communicator)p
550 2526 V 16 w(id\(MPI)p 710 2526 V 16 w(Comm)g(comm,)h(int)f(*id\))75
2612 y(MPI)p 150 2612 V 17 w(COMMUNICATOR)p 455 2612
V 15 w(ID\(COMM,)g(ID\))170 2669 y(INTEGER)g(COMM,)h(ID)1967
46 y Ff(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 15 15
15 16 bop 75 -100 a Fi(6.3.)34 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)i
(IN)f Fn(MPI)e Fi(OP)l(A)o(QUE)i(OBJECTS)429 b Fr(15)166
49 y(The)15 b(ab)q(o)o(v)o(e)g(function)h(can)f(b)q(e)h(implemen)o(ted)
h(as)e(a)g(macro.)-170 36 y Fm(>)p Fr(\()p Fl(June)p
Fr(\))189 138 y Fb(R)n(ationale.)37 b Fr(Since)13 b(these)f(functions)g
(are)f(lik)o(ely)i(to)e(b)q(e)h(used)g(in)g(pro\014ling)h(libraries,)g
(minimizing)189 195 y(the)h(o)o(v)o(erhead)f(is)i(v)o(ery)f(imp)q
(ortan)o(t.)19 b(Allo)o(wing)c(a)f(macro)f(helps)i(to)f(accomplish)h
(this.)20 b(The)14 b(only)189 251 y(loss)h(is)h(the)f(error)f(co)q(de)i
(but)g(this)f(seemed)h(acceptable)g(\()p Fb(End)g(of)g(r)n(ationale.)p
Fr(\))-170 329 y Fm(?)p Fr(\()p Fl(June)p Fr(\))166 397
y(Changed)k(from)g(a)f(function)i(to)f(an)g(attribute)g(to)f(mak)o(e)h
(it)g(similar)h(to)f(the)g(metho)q(d)g(used)h(to)-170
383 y Fm(>)p Fr(\()p Fl(June)p Fr(\))75 442 y(sp)q(ecify)c(if)e(the)g
(clo)q(c)o(k)h(is)g(globally)h(sync)o(hronized)f(or)f(not.)-170
429 y Fm(?)p Fr(\()p Fl(June)p Fr(\))166 488 y(T)l(o)21
b(sp)q(ecify)i(the)f(uniqueness)h(of)e Fn(ID)g Fr(returned,)i(the)f
(attribute)g Fe(MPI)p 1407 488 13 2 v 14 w(COMM)p 1551
488 V 15 w(ID)p 1608 488 V 14 w(IS)p 1657 488 V 15 w(UNIQUE)d
Fr(is)75 544 y(a)o(v)m(ailable)e(on)e Fe(MPI)p 402 544
V 14 w(COMM)p 546 544 V 15 w(W)o(ORLD)p Fr(.)g(This)g(attribute)g(can)h
(return)f(the)g(follo)o(wing)h(v)m(alues:)75 633 y Fe(MPI)p
152 633 V 14 w(COMM)p 296 633 V 15 w(ID)p 353 633 V 14
w(UNIQUE)22 b Fr(Means)c(that)h(the)g(v)m(alues)h(returned)g(b)o(y)f
Fn(MPI)p 1353 633 14 2 v 16 w(COMMUNICA)l(TOR)p 1735
633 V 18 w(ID)f Fr(are)189 689 y(unique)e(for)f(eac)o(h)g(comm)o
(unicator)g(\(on)g(di\013eren)o(t)g(pro)q(cesses\))h(and)f(for)g(the)g
(en)o(tire)g Fn(MPI)g Fr(job.)75 781 y Fe(MPI)p 152 781
13 2 v 14 w(COMM)p 296 781 V 15 w(ID)p 353 781 V 14 w(GLOBAL)23
b Fr(Means)18 b(that)g(the)g(v)m(alues)i(returned)e(b)o(y)h
Fn(MPI)p 1354 781 14 2 v 16 w(COMMUNICA)l(TOR)p 1736
781 V 17 w(ID)f Fr(are)189 837 y(the)f(same)g(for)f(eac)o(h)h(comm)o
(unicator)g(\(on)g(di\013eren)o(t)g(pro)q(cesses\))g(but)g(ma)o(y)g
(not)f(b)q(e)i(unique)h(for)189 894 y(the)c(en)o(tire)h
Fn(MPI)e Fr(job.)75 986 y Fe(MPI)p 152 986 13 2 v 14
w(COMM)p 296 986 V 15 w(ID)p 353 986 V 14 w(NOT)p 455
986 V 16 w(GLOBAL)22 b Fr(Means)14 b(that)g(the)g(v)m(alues)i(returned)
f(b)o(y)f Fn(MPI)p 1433 986 14 2 v 16 w(COMMUNICA)l(TOR)p
1815 986 V 18 w(ID)189 1042 y Fr(are)h(not)f(necessarily)j(the)e(same)g
(for)g(the)g(same)g(comm)o(unicator)g(on)g(di\013eren)o(t)g(pro)q
(cesses.)189 1142 y Fb(R)n(ationale.)38 b Fr(Most)12
b(libraries)j(w)o(ould)e(prefer)g(a)g(globally)h(unique)h(comm)o
(unicator)e(ID.)f(Ho)o(w)o(ev)o(er,)189 1199 y Fn(MPI)h
Fr(w)o(as)g(carefully)j(sp)q(eci\014ed)g(so)e(as)g(to)f(a)o(v)o(oid)h
(needing)h(suc)o(h)g(a)f(v)m(alue)h(in)g(an)f(implemen)o(tation.)189
1255 y(This)20 b(w)o(as)e(done)i(to)f(reduce)h(p)q(oten)o(tial)g(o)o(v)
o(erheads)f(in)h(comm)o(unicator)f(creation.)33 b(Requiring)189
1311 y(that)13 b(a)i(comm)o(unicator)f(ID)h(b)q(e)g(unique)h(could)f
(add)g(o)o(v)o(erhead)f(to)g(all)i(comm)o(unicators)e(in)h(some)189
1368 y(implemen)o(tations.)20 b(Ho)o(w)o(ev)o(er,)14
b(some)f(implemenations)k(ma)o(y)c(already)i(ha)o(v)o(e)f(a)g(unique)h
(ID)g(that)189 1424 y(can)e(b)q(e)i(giv)o(en)f(for)f(no)h(additional)h
(cost.)k(Th)o(us,)13 b(the)h(F)l(orum)f(did)i(not)e(w)o(an)o(t)g(to)g
(require)i(globally)189 1481 y(unique)g(comm)o(unicator)e(IDs)g(but)h
(did)g(w)o(an)o(t)e(to)h(mak)o(e)g(them)g(a)o(v)m(ailable)i(if)f(the)g
(implemen)o(tation)189 1537 y(could)i(easily)g(pro)o(vide)g(this)f
(information.)20 b(\()p Fb(End)c(of)g(r)n(ationale.)p
Fr(\))75 1658 y Fg(6.3.5)49 b(Accessing)16 b(MPI)h(Datat)o(yp)q(es)75
1744 y Fn(MPI-1)d Fr(pro)o(vided)i(datat)o(yp)q(e)f(ob)s(jects,)f(whic)
o(h)i(allo)o(ws)f(users)h(to)e(sp)q(ecify)j(an)e(arbitrary)f(la)o(y)o
(out)h(of)g(data)75 1800 y(in)k(memory)l(.)30 b(The)19
b(la)o(y)o(out)e(information,)j(once)e(put)h(in)g(a)g(datat)o(yp)q(e,)f
(could)i(not)e(b)q(e)h(deco)q(ded)h(from)75 1857 y(the)e(datat)o(yp)q
(e.)27 b(There)19 b(are)e(sev)o(erl)h(cases,)h(ho)o(w)o(ev)o(er,)e
(where)h(accessing)h(the)f(la)o(y)o(out)f(information)h(in)75
1913 y(opaque)i(datat)o(yp)q(e)f(ob)s(jects)g(w)o(ould)h(b)q(e)g
(useful.)34 b(This)20 b(section)g(describ)q(es)h(functions)g(for)e(ac)o
(hieving)75 1970 y(this.)166 2026 y(One)f(of)e(the)h(cases)g(where)h
(access)f(to)f(in)o(ternal)i(information)f(of)g(a)g(datat)o(yp)q(e)f
(is)i(useful)g(is)f(when)75 2083 y(a)j(datat)o(yp)q(e)f(needs)i(to)e(b)
q(e)i(passed)f(b)q(et)o(w)o(een)g(pro)q(cesses.)35 b
Fn(MPI)p 1212 2083 V 15 w(PUT)20 b Fr(and)h Fn(MPI)p
1514 2083 V 15 w(GET)g Fr(discussed)g(in)75 2139 y(Chapter)13
b Fl(??)f Fr(require)h(the)g(origin)h(pro)q(cess)f(to)f(sp)q(ecify)j(a)
d(datat)o(yp)q(e)g(to)h(b)q(e)g(used)h(in)f(the)g(target)f(pro)q(cess.)
75 2195 y(A)18 b(natural)g(w)o(a)o(y)f(to)g(pro)o(vide)i(the)e(datat)o
(yp)q(e)h(is)g(to)g(de\014ne)h(it)f(in)h(the)f(target)e(and)i(transfer)
f(it)i(to)e(the)75 2252 y(origin)j(b)q(efore)f(the)g(one-sided)h(call.)
32 b(Datat)o(yp)q(e)18 b(passing)h(ma)o(y)f(also)h(b)q(e)g(necessary)g
(in)h(clien)o(t-serv)o(er)75 2308 y(t)o(yp)q(e)h(programs.)35
b(A)20 b(serv)o(er)g(ma)o(y)g(need)i(to)e(access)h(a)f(lo)q(cal)i
(bu\013er)e(in)i(the)e(w)o(a)o(y)g(only)h(clien)o(ts)h(can)75
2365 y(sp)q(ecify)l(.)166 2421 y(Another)c(case)g(is)h(when)f(they)g
(are)g(used)g(in)h(implemen)o(ting)h(a)e(p)q(ortable)h
Fn(MPI)e Fr(pro\014ler,)i(tracer,)75 2478 y(or)14 b(debugger.)20
b(Users)14 b(of)g(suc)o(h)h(to)q(ols)f(ma)o(y)g(w)o(an)o(t)f(to)h(iden)
o(tify)i(lo)q(cations)f(in)g(message)f(bu\013ers)g(actually)75
2534 y(accessed)h(b)o(y)f Fn(MPI)p Fr(.)f(Use)i(of)f
Fn(MPI)p 647 2534 V 15 w(P)o(ack)h Fr(ma)o(y)e(giv)o(es)i(a)f(means)g
(for)g(iden)o(tifying)i Fb(which)e Fr(data)g(in)h(a)f(bu\013er)75
2591 y Fn(MPI)h Fr(accesses,)g(but)g(not)g Fb(wher)n(e)p
Fr(.)166 2647 y(A)d(third)g(case)g(is)g(when)h(datat)o(yp)q(es)e(are)g
(used)i(to)e(represen)o(t)h(la)o(y)o(outs)f(of)h(data,)f(esp)q(ecially)
j(in)f(some-)75 2704 y(where)18 b(other)g(than)f(memory)l(.)28
b(F)l(or)17 b(example,)i(when)g(p)q(erforming)f(\014le)h(I/O)f(using)h
(MPI)f(datat)o(yp)q(es.)-32 46 y Ff(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 16 16
16 17 bop 75 -100 a Fr(16)871 b Fi(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y Fr(Files)16
b(in)g(a)f(database)f(system)h(or)f(ones)h(storing)g(out-of-core)f
(data)h(for)f(large-scale)i(scien)o(ti\014c)h(compu-)75
106 y(tation)g(ma)o(y)f(w)o(an)o(t)g(to)h(main)o(tain)g(the)h(same)e
(la)o(y)o(out)h(of)g(data)f(as)h(they)g(are)g(in)h(memory)l(.)25
b(As)17 b(an)h Fn(MPI)75 162 y Fr(datat)o(yp)q(e)d(is)h(used)g(to)f
(express)g(an)h(arbitrary)f(la)o(y)o(out)g(of)g(data)f(in)j(memory)l(,)
e(also)g(using)h(it)g(to)f(express)75 219 y(a)g(la)o(y)o(out)g(of)f
(data)h(in)h(a)f(\014le)h(is)g(natural.)166 275 y(The)k(next)h(section)
g(describ)q(es)g(a)f(set)g(of)g(datat)o(yp)q(e)g(accessing)h(functions)
g(whic)o(h)g(constitute)f(a)75 332 y(lo)o(w)o(er-lev)o(el)c(in)o
(terface.)21 b(It)15 b(could)i(serv)o(e)e(the)g(needs)i(of)d
(pro\014lers)i(and)g(debuggers)f(as)g(w)o(ell)i(as)e(yielding)75
388 y(a)g(general)h(data)e(la)o(y)o(out)h(represen)o(tation.)166
444 y(The)h(second)h(section)f(describ)q(es)i(functions)f(to)e(con)o(v)
o(ert)g(a)h(datat)o(yp)q(e)f(to)h(and)g(from)f(a)h(c)o(haracter)75
501 y(represen)o(tation.)k(This)15 b(allo)o(ws)h(a)e(simple)j(mec)o
(hanism)f(for)e(creating)h(a)g(p)q(ortable)h(represen)o(tation)f(of)f
(a)75 557 y(datat)o(yp)q(e.)166 690 y Fk(Missing:)166
740 y Fj(There)k(is)g(a)f(third)g(prop)q(osal)g(\015oating)f(around)i
(to)f(create)i(a)e(MPI)p 1250 740 13 2 v 15 w(D)o(A)m(T)m(A)m(TYPE)f
(for)h(datat)o(yp)q(es.)29 b(This)75 789 y(w)o(ould)13
b(allo)o(w)f(them)h(to)h(b)q(e)h(sen)o(t/receiv)o(ed)h(directly)m(.)h
(The)e(prop)q(osal)e(needs)i(to)f(b)q(e)h(written)f(up)g(for)g
(discussion.)181 922 y Fk(Discussion:)-170 900 y Fm(>)p
Fr(\()p Fl(June)p Fr(\))166 1043 y Fj(A)o(t)h(the)g(April)f(meeting)g
(w)o(e)g(had)h(an)f(extended)j(discussion)e(ab)q(out)f(these)i
(functions.)21 b(One)15 b(decision)g(w)o(as)75 1093 y(that)e(the)g
(last)f(t)o(w)o(o)g(sections)i(really)e(w)o(ere)h(obsolite)f(\(as)h
(mark)o(ed\))e(and)i(ha)o(v)o(e)f(b)q(een)i(remo)o(v)o(ed)d(from)g
(this)i(section.)75 1143 y(Another)i(useful)f(discussion)g(w)o(as)g
(what)g(t)o(yp)q(e)g(of)f(functionalit)o(y)g(w)o(e)h(w)o(an)o(t)f(to)h
(supp)q(ort.)19 b(Here)c(is)f(a)f(summary:)145 1230 y
Fh(\017)23 b Fj(Pro\014lers,)14 b(debuggers,)g(and)g(other)h(should)e
(b)q(e)i(able)e(to)h(deco)q(de)h(the)g(opaque)e(datat)o(yp)q(e.)19
b(This)13 b(do)q(es)i(not)189 1280 y(sp)q(ecify)g(ho)o(w)g(the)g
(access)i(should)e(b)q(e.)22 b(It)15 b(ma)o(y)e(b)q(e)i(the)h(lo)o(w)e
(lev)o(el)h(recursiv)o(e)h(deco)q(ding)f(or)g(a)g(single)g(call)189
1330 y(to)e(get)i(a)e(c)o(haracter)i(string.)k(There)c(w)o(as)e(strong)
i(supp)q(ort)f(for)g(this.)145 1405 y Fh(\017)23 b Fj(Create)12
b(a)g(datat)o(yp)q(e)g(on)f(one)h(pro)q(cess)i(and)d(transp)q(ort)i(it)
e(to)h(another)g(pro)q(cess)h(to)f Fk(access)h(the)g(memory)189
1454 y(on)19 b(the)f(original)f(pro)q(cess)p Fj(.)26
b(An)17 b(example)f(of)h(this)g(usage)g(w)o(ould)f(b)q(e)i(for)f(pro)q
(cess)i(1)e(to)f(access)j(the)189 1504 y(memory)14 b(on)i(pro)q(cess)i
(0)f(with)f(a)g(get)h(b)o(y)f(\014rst)i(receiving)f(the)g(datat)o(yp)q
(e)f(from)f(pro)q(cess)k(0.)25 b(There)18 b(w)o(as)189
1554 y(strong)c(supp)q(ort)h(for)e(this.)145 1629 y Fh(\017)23
b Fj(Create)11 b(a)f(datat)o(yp)q(e)h(on)f(one)g(pro)q(cess)i(and)f
(transp)q(ort)g(it)f(to)g(another)h(pro)q(cess)h(to)e
Fk(use)h(on)g(the)g(receiving)189 1679 y(pro)q(cess)p
Fj(.)30 b(This)18 b(di\013ers)h(from)d(the)j(ab)q(o)o(v)o(e)f(in)f
(that)i(it)e(m)o(ust)g(no)o(w)h(represen)o(t)j(memory)15
b(store)k(on)f(the)189 1728 y(receiving)12 b(pro)q(cess.)20
b(This)12 b(w)o(ould)f(allo)o(w)g(pro)q(cess)j(0)e(to)g(send)h(a)f
(datat)o(yp)q(e)h(to)f(pro)q(cess)i(1)e(and)g(then)h(send)g(a)189
1778 y(message)f(to)h(pro)q(cess)i(1)d(with)h(this)g(datat)o(yp)q(e.)18
b(pro)q(cess)d(1)d(could)h(then)h(p)q(ost)f(a)g(receiv)o(e)h(on)f(this)
g(datat)o(yp)q(e)189 1828 y(and)g(get)i(the)f(correct)i(data.)h(There)e
(w)o(as)f(supp)q(ort)h(for)e(this)h(but)g(it)g(w)o(as)g(more)f(mixed.)
166 1915 y(Another)i(signi\014can)o(t)g(issue)g(is)f(the)i(life)d(time)
h(that)g(the)i(datat)o(yp)q(e)f(deco)q(ding)f(is)h(go)q(o)q(d)f(for.)20
b(This)15 b(ma)o(y)d(b)q(e)75 1965 y(clearest)17 b(in)f(reference)i(to)
d(getting)h(a)f(c)o(haracter)j(represen)o(tation)f(of)e(a)h(datat)o(yp)
q(e.)24 b(When)16 b(can)g(this)g(c)o(haracter)75 2015
y(represen)o(tation)f(b)q(e)g(used?)k(The)14 b(c)o(hoices)h(w)o(ere:)
145 2102 y Fh(\017)23 b Fj(Within)9 b(a)h(run.)17 b(All)9
b(pro)q(cesses)k(\(mo)q(dulo)8 b(heterogeneous)k(represen)o(tation)g
(problems\))e(m)o(ust)f(understand)189 2152 y(the)14
b(deco)q(ded)h(datat)o(yp)q(e.)k(Ev)o(ery)o(one)14 b(agreed)h(with)e
(this.)145 2227 y Fh(\017)23 b Fj(Across)13 b(runs)g(for)f(the)h(same)e
(v)o(ersion)h(and)g(MPI)h(implemenatio)o(n.)i(This)d(sa)o(ys)g(that)g
(the)h(c)o(haracter)h(string)189 2276 y(pro)q(duced)j(b)o(y)f(a)g(giv)o
(en)f(implemen)o(tation)e(and)i(v)o(ersion)i(has)f(to)g(w)o(ork)g(if)f
(it)g(is)h(reused)i(in)e(another)g(run.)189 2326 y(Put)e(another)g(w)o
(a)o(y)m(,)e(it)i(has)g(p)q(ersistance)i(after)e Fe(MPI)p
1019 2326 V 14 w(FINALIZE)p Fj(.)f(There)i(w)o(as)f(strong)g(supp)q
(ort)h(for)e(this.)145 2401 y Fh(\017)23 b Fj(Across)12
b(runs)h(and)e(v)o(ersions)h(of)f(one)h(MPI)g(implem)o(enation.)i(This)
e(is)f(lik)o(e)g(the)h(ab)q(o)o(v)o(e)f(except)i(MPI)f(imple-)189
2451 y(men)o(tations)f(ha)o(v)o(e)h(to)g(remain)f(compatible)f(from)h
(v)o(ersion)h(to)h(v)o(ersion.)k(This)12 b(do)q(es)i(not)e(sa)o(y)g
(they)h(cannot)189 2500 y(c)o(hange)g(represen)o(tations)j(but)d(if)g
(they)g(do)h(they)f(need)i(to)e(enco)q(de)h(the)g(v)o(ersion)g(in)o(to)
e(the)i(represen)o(tation)189 2550 y(so)e(it)g(can)g(still)f(b)q(e)i
(used.)18 b(This)12 b(receiv)o(ed)i(supp)q(ort)f(but)f(I)g(note)h(that)
f(most)f(implem)o(en)o(tors)f(v)o(oted)j(against)189
2600 y(this.)1967 46 y Ff(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 17 17
17 18 bop 75 -100 a Fi(6.3.)34 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)i
(IN)f Fn(MPI)e Fi(OP)l(A)o(QUE)i(OBJECTS)429 b Fr(17)145
49 y Fh(\017)23 b Fj(The)13 b(c)o(haracter)i(string)e(m)o(ust)f(w)o
(ork)h(across)h(implemen)o(tatio)o(ns)d(on)i(the)g(same)g(arc)o
(hitecture.)19 b(F)m(or)13 b(this)g(to)189 99 y(b)q(e)j(practical,)g(w)
o(e)h(w)o(ould)e(sp)q(ecify)i(the)g(represen)o(tation)g(used.)26
b(This)16 b(w)o(ould)f(guaran)o(tee,)i(for)f(example,)189
149 y(that)c(one)i(could)e(deco)q(de)i(a)f(datat)o(yp)q(e)g(in)f
(MPICH,)h(write)g(it)f(to)h(disk)g(and)f(then)i(reread)g(it)e(in)o(to)g
(the)i(IBM)189 199 y(v)o(ersion)j(of)f(MPI.)h(This)g(assumes)g(that)g
(the)g(co)q(de)h(uses)g(the)g(same)e(compiler)f(switc)o(hes,)k
(hardare,)e(etc.)189 249 y(W)m(e)c(v)o(oted)h(against)f(this)h(but)g
(there)i(w)o(ere)e(as)g(man)o(y)e(abstain)o(tions)i(as)g(other)g(v)o
(otes.)145 321 y Fh(\017)23 b Fj(The)16 b(represen)o(tation)i(should)e
(b)q(e)h(in)o(terop)q(erable.)26 b(This)16 b(adds)g(the)h(requiremen)o
(t)g(that)f(it)g(has)g(to)g(w)o(ork)189 371 y(across)e(mac)o(hines.)k
(Giv)o(en)13 b(the)h(v)o(ote)g(ab)q(o)o(v)o(e)g(w)o(e)g(didn't)f(b)q
(other)i(to)f(v)o(ote)g(on)f(this.)166 454 y(The)f(group)g(agreed)g
(that)g(the)g(lo)o(w)f(lev)o(el)h(datat)o(yp)q(e)g(accessing)h(can)f(b)
q(e)g(used)h(to)e(build)g(all)g(the)h(others.)19 b(The)75
504 y(issue)14 b(is)g(that)g(if)f(one)h(w)o(an)o(ts)f(to)h(get)g(the)g
(later)g(forms)e(of)h(in)o(terop)q(eatbilit)o(y)m(,)f(one)i(needs)h
(something)d(more)h(along)75 554 y(the)h(lines)g(of)g(the)g(c)o
(haracter)h(represen)o(tation)h(to)d(create)j(standardization.)-170
671 y Fm(?)p Fr(\()p Fl(June)p Fr(\))75 801 y Fn(Lo)o(w)e(level)i
(datat)o(yp)q(e)g(accessing)75 982 y(MPI)p 160 982 14
2 v 16 w(TYPE)p 293 982 V 17 w(ENVELOPE\(datat)o(yp)q(e,)h(count,)f
(combiner\))117 1059 y Fj(IN)155 b Fn(datat)o(yp)q(e)424
b Fj(datat)o(yp)q(e)14 b(to)g(access)117 1133 y(OUT)108
b Fn(count)482 b Fj(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h
Fe(datat)o(yp)q(e)117 1207 y Fj(OUT)108 b Fn(combiner)414
b Fj(\015ag)16 b(indicating)g(the)h(constructor)h(function)e(used)i
(for)e(cre-)905 1263 y(ating)d Fe(datat)o(yp)q(e)75 1388
y Fd(int)23 b(MPI)p 245 1388 15 2 v 17 w(Type)p 358 1388
V 17 w(envelope\(MPI)p 663 1388 V 15 w(Datatype)g(datatype,)g(int*)g
(count,)g(int*)g(combiner\))75 1474 y(MPI)p 150 1474
V 17 w(TYPE)p 263 1474 V 16 w(ENVELOPE\(DATATYPE,)f(COUNT,)h(COMBINER,)
f(IERROR\))170 1531 y(INTEGER)h(DATATYPE,)g(COUNT,)g(COMBINER,)g
(IERROR)166 1617 y Fr(Giv)o(en)16 b(an)f Fn(MPI)f Fr(datat)o(yp)q(e)h
Fn(datat)o(yp)q(e)p Fr(,)h(returns)f(in)h Fn(combiner)f
Fr(one)h(of)e(the)i(constan)o(ts:)143 1716 y Fm(\017)23
b Fe(MPI)p 266 1716 13 2 v 14 w(BASIC)143 1808 y Fm(\017)g
Fe(MPI)p 266 1808 V 14 w(CONTIG)143 1899 y Fm(\017)g
Fe(MPI)p 266 1899 V 14 w(VECTOR)143 1991 y Fm(\017)g
Fe(MPI)p 266 1991 V 14 w(HVECTOR)143 2082 y Fm(\017)g
Fe(MPI)p 266 2082 V 14 w(INDEXED)143 2174 y Fm(\017)g
Fe(MPI)p 266 2174 V 14 w(HINDEXED)143 2265 y Fm(\017)g
Fe(MPI)p 266 2265 V 14 w(STRUCT)166 2365 y Fr(Eac)o(h)e(of)f(the)h(ab)q
(o)o(v)o(e)g(constan)o(ts)f(is)i(a)e(de\014ned)j(in)o(teger)e(constan)o
(t)f(\(C\))g(or)h(parameter)f(\(F)o(OR-)75 2421 y(TRAN\).)15
b(In)h(C,)e(they)i(are)f(usable)h(in)g(a)f(switc)o(h)g(statemen)o(t.)
166 2478 y(If)f Fn(combiner)f Fr(is)g Fe(MPI)p 516 2478
V 15 w(BASIC)p Fr(,)e(then)j(the)f(returned)h Fn(count)h
Fr(is)f(1;)f(if)h Fn(combiner)f Fr(is)h(an)o(ything)f(else)i(\(i.e.,)75
2534 y Fe(MPI)p 152 2534 V 14 w(CONTIG)p Fr(,)21 b Fe(MPI)p
430 2534 V 14 w(VECTOR)p Fr(,)g Fe(MPI)p 719 2534 V 14
w(HVECTOR)p Fr(,)g Fe(MPI)p 1037 2534 V 14 w(INDEXED)p
Fr(,)g Fe(MPI)p 1339 2534 V 15 w(HINDEXED)p Fr(,)g Fe(MPI)p
1671 2534 V 14 w(STRUCT)p Fr(\),)75 2591 y(then)10 b(the)h(returned)f
Fn(count)i Fr(is)e(the)h Fn(count)g Fr(argumen)o(t)e(passed)i(in)g(to)e
(the)h(corresp)q(onding)i Fn(MPI)p 1655 2591 14 2 v 15
w(TYPE)p 1787 2591 V 17 w(XXX)75 2647 y Fr(function)f(\(resp)q(ectiv)o
(ely:)19 b Fn(MPI)p 614 2647 V 15 w(TYPE)p 746 2647 V
17 w(CONTIGUOUS)p Fr(,)12 b Fn(MPI)p 1158 2647 V 16 w(TYPE)p
1291 2647 V 16 w(VECTOR)p Fr(,)f Fn(MPI)p 1592 2647 V
16 w(TYPE)p 1725 2647 V 17 w(HVECTOR)p Fr(,)75 2704 y
Fn(MPI)p 160 2704 V 16 w(TYPE)p 293 2704 V 17 w(INDEXED)p
Fr(,)j Fn(MPI)p 614 2704 V 16 w(TYPE)p 747 2704 V 17
w(HINDEXED)p Fr(,)h Fn(MPI)p 1101 2704 V 16 w(TYPE)p
1234 2704 V 17 w(STRUCT)p Fr(\).)-32 46 y Ff(1)-32 103
y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 18 18
18 19 bop 75 -100 a Fr(18)871 b Fi(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)166 49 y Fk(Discussion:)20
b Fj(These)d(in)o(teger-represen)o(ted)i(datat)o(yp)q(e)d(iden)o
(ti\014ers)h(are)g(not)f(enough)g(for)f(implemen)o(ting)75
99 y(datat)o(yp)q(e)k(passing)g(functions)g(suc)o(h)h(as)f
Fe(MPI)p 821 99 13 2 v 14 w(TYPE)p 943 99 V 14 w(SEND/RECV)f
Fj(curren)o(tly)i(discussed)g(in)f(the)g(one-sided)75
149 y(c)o(hapter.)37 b(In)20 b(order)h(to)e(pass)i(basic)f(datat)o(yp)q
(es,)h(suc)o(h)g(an)e(implemen)o(tation)e(w)o(ould)i(require)i(more)e
(in)o(teger)75 199 y(constan)o(ts,)e(one)g(for)f(eac)o(h)h(basic)f
(datat)o(yp)q(e.)25 b(Although)16 b(the)h(in)o(teger)g(constan)o(ts)g
(do)f(not)g(ha)o(v)o(e)g(to)g(b)q(e)h(part)g(of)75 249
y Fe(MPI)p Fj(,)e(asso)q(ciating)g(those)i(in)o(tegers)f(and)g(basic)g
(datat)o(yp)q(es)h(outside)f(of)f Fe(MPI)g Fj(ma)o(y)f(b)q(e)j(cum)o(b)
q(ersome.)23 b(Explicit)75 298 y(supp)q(ort)15 b(for)e(datat)o(yp)q(e)h
(passing)g(in)g Fe(MPI)f Fj(do)g(lo)q(ok)g(b)q(etter.)166
355 y(Also,)d(what)g(should)g(b)q(e)h(returned)g(in)f
Fe(combiner)h Fj(for)e(a)h(com)o(binded)f(datat)o(yp)q(e)h(for)g(lo)q
(cater)h(op)q(erations,)f(suc)o(h)75 411 y(as)g Fe(MPI)p
199 411 V 14 w(2REAL)f Fj(and)h Fe(MPI)p 497 411 V 14
w(DOUBLE)p 676 411 V 14 w(INT)p Fj(?)f(Should)g(it)h(b)q(e)g
Fe(MPI)p 1087 411 V 14 w(BASIC)p Fj(,)e(or)h Fe(MPI)p
1360 411 V 15 w(CONTIG)f Fj(and)i Fe(MPI)p 1690 411 V
14 w(STRUCT)p Fj(,)75 468 y(or)k(a)f(y)o(et)i(another)f(new)g(constan)o
(t?)75 701 y Fn(MPI)p 160 701 14 2 v 16 w(TYPE)p 293
701 V 17 w(CONTENTS\(datat)o(yp)q(e,)f(sta)o(rt,)e(count,)h(a)o(rra)o
(y)p 1092 701 V 15 w(blo)q(cklens,)g(stride,)g(a)o(rra)o(y)p
1526 701 V 14 w(disps,)h(a)o(rra)o(y)p 1752 701 V 14
w(t)o(yp)q(es\))117 835 y Fj(IN)155 b Fn(datat)o(yp)q(e)424
b Fj(datat)o(yp)q(e)14 b(to)g(access)117 909 y(IN)155
b Fn(sta)o(rt)501 b Fj(index)14 b(of)f(\014rst)i(elemen)o(ts)f(to)f
(access)117 984 y(IN)155 b Fn(count)482 b Fj(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(to)h(access)117 1058 y(OUT)108 b
Fn(a)o(rra)o(y)p 416 1058 V 15 w(blo)q(cklens)306 b Fj(arra)o(y)14
b(of)f(blo)q(c)o(klengths)117 1132 y(OUT)108 b Fn(a)o(rra)o(y)p
416 1132 V 15 w(disps)386 b Fj(arra)o(y)14 b(of)f(displacemen)o(ts)h
(or)f(stride,)i(expressed)h(in)d(in)o(teger)117 1207
y(OUT)108 b Fn(a)o(rra)o(y)p 416 1207 V 15 w(hdisps)363
b Fj(arra)o(y)9 b(of)g(displacemen)o(ts)g(or)g(stride,)i(expressed)g
(in)e(MPI)p 1790 1207 13 2 v 15 w(Ain)o(t)117 1281 y(OUT)108
b Fn(a)o(rrry)p 411 1281 14 2 v 15 w(t)o(yp)q(es)385
b Fj(arra)o(y)14 b(of)f(elemen)o(t)g(t)o(yp)q(es)75 1406
y Fd(int)23 b(MPI)p 245 1406 15 2 v 17 w(Type)p 358 1406
V 17 w(contents\(MPI)p 663 1406 V 15 w(Datatype)g(datatype,)g(int)g
(start,)g(int)h(count,)393 1462 y(int)g(*array)p 636
1462 V 16 w(blocklens,)e(int)i(*array)p 1154 1462 V 16
w(disps,)f(MPI)p 1409 1462 V 17 w(Aint)g(*array)p 1689
1462 V 17 w(hdisps,)393 1518 y(MPI)p 468 1518 V 17 w(Datatype)g(*array)
p 844 1518 V 16 w(types\))75 1605 y(MPI)p 150 1605 V
17 w(TYPE)p 263 1605 V 16 w(CONTENTS\(DATATYPE,)f(START,)h(COUNT,)g
(ARRAY)p 1187 1605 V 16 w(BLOCKLENS,)g(ARRAY)p 1586 1605
V 16 w(DISPS,)393 1661 y(ARRAY)p 516 1661 V 17 w(HDISPS,)g(ARRAY)p
844 1661 V 16 w(TYPES,)g(IERROR\))170 1718 y(INTEGER)g(DATATYPE,)g
(START,)g(COUNT,)g(ARRAY)p 1057 1718 V 17 w(BLOCKLENS\(*\),)f(ARRAY)p
1528 1718 V 16 w(DISPS\(*\),)170 1774 y(ARRAY)p 293 1774
V 17 w(HDISPS\(*\),)g(ARRAY)p 692 1774 V 17 w(TYPES\(*\),)h(IERROR)166
1861 y Fr(Returns)11 b(information)g(ab)q(out)f(the)h(top-lev)o(el)h
(datat)o(yp)q(es)e(that)g(underlie)j Fn(datat)o(yp)q(e)f
Fr(except)f(it)g(skips)75 1917 y(the)k(\014rst)g Fn(sta)o(rt)h
Fr(underlying)h(datat)o(yp)q(es)d(and)i(returns)f(information)g(on)g
(the)h(next)f Fn(count)h Fr(datat)o(yp)q(es.)166 1974
y(More)e(sp)q(eci\014cally)m(,)j(If)f Fn(count)g Fr(is)g
Fm(\024)d Fr(0,)h(then)i(nothing)g(is)f(returned;)166
2030 y(otherwise,)e(if)g(the)f Fn(combiner)g Fr(returned)h(b)o(y)f
Fn(MPI)p 1005 2030 14 2 v 16 w(TYPE)p 1138 2030 V 17
w(ENVELOPE)h Fr(w)o(as)f Fe(MPI)p 1557 2030 13 2 v 14
w(BASIC)p Fr(,)e Fn(datat)o(yp)q(e)75 2087 y Fr(is)16
b(returned)f(in)h Fn(a)o(rra)o(y)p 456 2087 14 2 v 15
w(t)o(yp)q(es[0])p Fr(.)21 b Fn(a)o(rra)o(y)p 746 2087
V 15 w(blo)q(cklens)p Fr(,)16 b Fn(a)o(rra)o(y)p 1056
2087 V 15 w(disps)p Fr(,)g(and)g Fn(a)o(rra)o(y)p 1375
2087 V 14 w(hdisps)h Fr(are)e(not)g(mo)q(di\014ed.)166
2226 y Fk(Discussion:)g Fj(Will)d(passing)h(a)g(basic)g(datat)o(yp)q(e)
h(to)f(MPI)p 1095 2226 13 2 v 15 w(TYPE)p 1227 2226 V
16 w(ENVELOPE)h(b)q(e)g(necessary?)20 b(I)13 b(think)75
2282 y(this)h(case)h(can)f(b)q(e)g(unde\014ned,)h(or)f(de\014ned)h(as)f
(no)g(argumen)o(ts)f(will)f(b)q(e)j(mo)q(di\014ed.)166
2421 y Fr(If)23 b(the)h Fn(combiner)e Fr(returned)i(b)o(y)f
Fn(MPI)p 850 2421 14 2 v 16 w(TYPE)p 983 2421 V 17 w(ENVELOPE)h
Fr(w)o(as)e Fe(MPI)p 1423 2421 13 2 v 15 w(CONTIG)p Fr(,)f(then)j
Fn(oldt)o(yp)q(e)75 2478 y Fr(passed)15 b(to)f Fn(MPI)p
359 2478 14 2 v 16 w(TYPE)p 492 2478 V 16 w(CONTIGUOUS)j
Fr(to)d(construct)g Fn(datat)o(yp)q(e)i Fr(is)f(returned)g(in)g
Fn(a)o(rra)o(y)p 1622 2478 V 15 w(t)o(yp)q(es[0])p Fr(.)21
b Fn(Ar-)75 2534 y(ra)o(y)p 136 2534 V 15 w(blo)q(cklens)p
Fr(,)c Fn(a)o(rra)o(y)p 447 2534 V 14 w(disps)p Fr(,)g(and)e
Fn(a)o(rra)o(y)p 765 2534 V 15 w(hdisps)i Fr(are)e(not)g(mo)q
(di\014ed.)166 2591 y(If)k(the)g Fn(combiner)f Fr(returned)h(b)o(y)g
Fn(MPI)p 828 2591 V 15 w(TYPE)p 960 2591 V 17 w(ENVELOPE)h
Fr(w)o(as)e Fe(MPI)p 1392 2591 13 2 v 14 w(VECTOR)p Fr(,)f(then)i
Fn(blo)q(cklen)p Fr(,)75 2647 y Fn(stride)k Fr(and)g
Fn(oldt)o(yp)q(e)g Fr(passed)g(to)f Fn(MPI)p 757 2647
14 2 v 15 w(TYPE)p 889 2647 V 17 w(VECTOR)i Fr(to)d(construct)h
Fn(datat)o(yp)q(e)i Fr(are)e(returned)h(in)75 2704 y
Fn(a)o(rra)o(y)p 173 2704 V 15 w(blo)q(cklens[0])p Fr(,)15
b Fn(a)o(rra)o(y)p 531 2704 V 14 w(disps[0])h Fr(and)d
Fn(a)o(rra)o(y)p 882 2704 V 15 w(t)o(yp)q(es[0])p Fr(,)i(resp)q(ectiv)o
(ely)l(.)21 b Fn(a)o(rra)o(y)p 1427 2704 V 15 w(hdisps)16
b Fr(is)e(not)f(mo)q(di\014ed.)1967 46 y Ff(1)1967 103
y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967
385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 19 19
19 20 bop 75 -100 a Fi(6.3.)34 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)i
(IN)f Fn(MPI)e Fi(OP)l(A)o(QUE)i(OBJECTS)429 b Fr(19)166
49 y(If)18 b(the)g Fn(combiner)f Fr(returned)h(b)o(y)g
Fn(MPI)p 823 49 14 2 v 16 w(TYPE)p 956 49 V 17 w(ENVELOPE)h
Fr(w)o(as)d(or)i Fe(MPI)p 1444 49 13 2 v 14 w(HVECTOR)p
Fr(,)e(then)j(then)75 106 y Fn(blo)q(cklen)p Fr(,)k Fn(stride)f
Fr(and)f Fn(oldt)o(yp)q(e)h Fr(passed)g(to)e Fn(MPI)p
940 106 14 2 v 16 w(TYPE)p 1073 106 V 16 w(VECTOR)j Fr(to)d(construct)h
Fn(datat)o(yp)q(e)h Fr(are)f(re-)75 162 y(turned)14 b(in)h
Fn(a)o(rra)o(y)p 370 162 V 14 w(blo)q(cklens[0])p Fr(,)g
Fn(a)o(rra)o(y)p 727 162 V 15 w(hdisps[0])h Fr(and)e
Fn(a)o(rra)o(y)p 1103 162 V 14 w(t)o(yp)q(es[0])p Fr(,)h(resp)q(ectiv)o
(ely)l(.)21 b Fn(a)o(rra)o(y)p 1647 162 V 15 w(disps)15
b Fr(is)f(not)75 219 y(mo)q(di\014ed.)166 275 y(If)h(the)h
Fn(combiner)e Fr(is)i Fe(MPI)p 600 275 13 2 v 14 w(INDEXED)p
Fr(,)e Fe(MPI)p 895 275 V 15 w(HINDEXED)p Fr(,)g(or)h
Fe(MPI)p 1276 275 V 14 w(STRUCT)p Fr(,)f(then)i(de\014ne)g
Fn(\014lled)p Fr(:)189 381 y Fb(\014l)r(le)n(d)11 b Fr(=)i(max\(0)p
Fc(;)8 b Fr(min)o(\()p Fb(c)n(ount)688 388 y Fr(con)758
381 y Fc(;)g Fb(c)n(ount)885 388 y Fr(en)o(v)965 381
y Fm(\000)j Fb(start)p Fr(\)\))166 488 y(where)75 581
y Fb(c)n(ount)182 588 y Fr(con)275 581 y Fn(count)16
b Fr(returned)g(b)o(y)f Fn(MPI)p 729 581 14 2 v 16 w(TYPE)p
862 581 V 17 w(ENVELOPE)75 675 y Fb(start)23 b Fn(sta)o(rt)15
b Fr(passed)h(in)g(to)e Fn(MPI)p 628 675 V 16 w(TYPE)p
761 675 V 17 w(CONTENTS)75 769 y Fb(c)n(ount)182 776
y Fr(en)o(v)275 769 y Fn(count)i Fr(passed)g(in)g(to)e
Fn(MPI)p 734 769 V 16 w(TYPE)p 867 769 V 17 w(CONTENTS)166
863 y Fr(If)19 b(the)f Fn(combiner)g Fr(returned)h(b)o(y)g
Fn(MPI)p 827 863 V 15 w(TYPE)p 959 863 V 17 w(ENVELOPE)h
Fr(w)o(as)d Fe(MPI)p 1390 863 13 2 v 15 w(INDEXED)p Fr(,)g(then)i
Fn(\014lled)g Fr(el-)75 919 y(emen)o(ts,)k(starting)f(from)f
Fn(sta)o(rt)p Fr(,)j(of)d Fn(a)o(rra)o(y)p 819 919 14
2 v 15 w(of)p 871 919 V 16 w(blo)q(cklengths)j Fr(and)f
Fn(a)o(rra)o(y)p 1335 919 V 14 w(of)p 1386 919 V 16 w(displacements)h
Fr(passed)f(to)75 976 y Fn(MPI)p 160 976 V 16 w(TYPE)p
293 976 V 17 w(INDEXED)18 b Fr(to)g(construct)g Fn(datat)o(yp)q(e)i
Fr(are)e(returned)h(in)g(the)f(\014rst)g Fn(\014lled)h
Fr(p)q(ositions)h(of)e Fn(a)o(r-)75 1032 y(ra)o(y)p 136
1032 V 15 w(blo)q(cklens)f Fr(and)e Fn(a)o(rra)o(y)p
522 1032 V 15 w(disps)p Fr(,)h(resp)q(ectiv)o(ely)h(and)e
Fn(oldt)o(yp)q(e)h Fr(passed)g(to)e(the)h(same)g(constructor)f(func-)75
1089 y(tion)h(is)h(returned)g(in)g Fn(a)o(rra)o(y)p 550
1089 V 14 w(t)o(yp)q(es[0])p Fr(.)22 b Fn(a)o(rra)o(y)p
840 1089 V 14 w(hdisps)17 b Fr(is)f(not)f(mo)q(di\014ed.)166
1145 y(If)23 b(the)f Fn(combiner)h Fr(returned)g(b)o(y)f
Fn(MPI)p 847 1145 V 16 w(TYPE)p 980 1145 V 17 w(ENVELOPE)h
Fr(w)o(as)f Fe(MPI)p 1419 1145 13 2 v 15 w(HINDEXED)p
Fr(,)f(then)i Fn(\014lled)75 1202 y Fr(elemen)o(ts,)d(starting)e(from)g
Fn(sta)o(rt)p Fr(,)h(of)f Fn(a)o(rra)o(y)p 833 1202 14
2 v 15 w(of)p 885 1202 V 16 w(blo)q(cklengths)j Fr(and)e
Fn(a)o(rra)o(y)p 1342 1202 V 14 w(of)p 1393 1202 V 16
w(displacements)i Fr(passed)e(to)75 1258 y Fn(MPI)p 160
1258 V 16 w(TYPE)p 293 1258 V 17 w(HINDEXED)h Fr(for)g(constructing)g
Fn(datat)o(yp)q(e)i Fr(are)e(returned)g(in)h(the)f(\014rst)g
Fn(\014lled)h Fr(p)q(ositions)75 1315 y(of)15 b Fn(a)o(rra)o(y)p
225 1315 V 14 w(blo)q(cklens)j Fr(and)d Fn(a)o(rra)o(y)p
611 1315 V 15 w(hdisps)p Fr(,)i(resp)q(ectiv)o(ely)g(and)e
Fn(oldt)o(yp)q(e)i Fr(passed)e(to)g(the)h(same)f(constructor)75
1371 y(function)h(is)g(returned)f(in)h Fn(a)o(rra)o(y)p
634 1371 V 15 w(t)o(yp)q(es[0])p Fr(.)21 b Fn(a)o(rra)o(y)p
924 1371 V 15 w(disps)c Fr(is)e(not)g(mo)q(di\014ed.)166
1427 y(If)j(the)h Fn(combiner)e Fr(returned)i(b)o(y)f
Fn(MPI)p 825 1427 V 16 w(TYPE)p 958 1427 V 16 w(ENVELOPE)i
Fr(w)o(as)d Fe(MPI)p 1388 1427 13 2 v 14 w(STRUCT)p Fr(,)g(then)i
Fn(\014lled)g Fr(ele-)75 1484 y(men)o(ts,)13 b(starting)f(from)g
Fn(sta)o(rt)p Fr(,)i(of)e Fn(a)o(rra)o(y)p 751 1484 14
2 v 15 w(of)p 803 1484 V 16 w(blo)q(cklengths)p Fr(,)j
Fn(a)o(rra)o(y)p 1175 1484 V 15 w(of)p 1227 1484 V 16
w(displacements)p Fr(,)g(and)e Fn(a)o(rra)o(y)p 1712
1484 V 15 w(of)p 1764 1484 V 16 w(t)o(yp)q(es)75 1540
y Fr(passed)h(to)f Fn(MPI)p 357 1540 V 16 w(TYPE)p 490
1540 V 16 w(STRUCT)i Fr(for)e(constructing)h Fn(datat)o(yp)q(e)h
Fr(are)e(returned)h(in)h(the)e(\014rst)h Fn(\014lled)g
Fr(p)q(osi-)75 1597 y(tions)d(of)f Fn(a)o(rra)o(y)p 327
1597 V 15 w(blo)q(cklens)p Fr(,)i Fn(a)o(rra)o(y)p 633
1597 V 15 w(hdisps)p Fr(,)h(and)e Fn(a)o(rra)o(y)p 967
1597 V 15 w(t)o(yp)q(es)p Fr(,)h(resp)q(ectiv)o(ely)l(.)21
b Fn(a)o(rra)o(y)p 1460 1597 V 14 w(disps)12 b Fr(is)g(not)e(mo)q
(di\014ed.)189 1703 y Fb(R)n(ationale.)43 b Fr(F)o(OR)l(TRAN)17
b(users)f(w)o(ould)g(b)q(e)h(in)f(trouble)h(if)f Fn(MPI)p
1327 1703 V 16 w(TYPE)p 1460 1703 V 16 w(CONTENTS)h Fr(did)g(not)189
1760 y(ha)o(v)o(e)d Fn(sta)o(rt)g Fr(and)h Fn(count)h
Fr(and)e(alw)o(a)o(ys)g(returned)h(the)f(en)o(tire)h(arra)o(ys)e(at)h
(once.)20 b(F)o(OR)l(TRAN)15 b(users)189 1816 y(can't)j(mallo)q(c)i
(and)f(hence)h(has)e(to)g(pass)h(in)h(arra)o(ys)d(to)h
Fn(MPI)p 1264 1816 V 16 w(TYPE)p 1397 1816 V 17 w(CONTENTS)i
Fr(that)e(are)g(a)189 1872 y(\014xed)d(size)i({)d(a)h(size)h(that)f
(migh)o(t)g(b)q(e)h(to)q(o)e(small)i(for)f(a)g(particular)h(datat)o(yp)
q(e.)189 1948 y(In)22 b(C,)f(users)g(can)h(access)g(the)f(en)o(tire)h
(arra)o(ys)e(in)j(a)e(single)i(call)f(b)o(y)g(pro)o(viding)g
(dynamically)189 2004 y(allo)q(cated)d(arra)o(ys)d(whose)i(length)h(is)
f Fn(count)h Fr(returned)g(b)o(y)f Fn(MPI)p 1314 2004
V 15 w(TYPE)p 1446 2004 V 17 w(ENVELOPE)p Fr(.)h(\()p
Fb(End)f(of)189 2060 y(r)n(ationale.)p Fr(\))166 2243
y Fk(Discussion:)27 b Fj(In)19 b(the)h(original)e(sp)q(eci\014cation)i
(of)f Fe(MPI)p 1089 2243 13 2 v 15 w(TYPE)p 1212 2243
V 14 w(CONTENTS)p Fj(,)g(t)o(w)o(o)g(argumen)o(ts,)h
Fe(stride)75 2293 y Fj(and)13 b Fe(a)o(rra)o(y)p 242
2293 V 15 w(disps)g Fj(w)o(ere)h(used)f(b)q(oth)g(for)g(in)o(teger)g(v)
n(alues)g(and)f(for)h(address)h(v)n(alues.)j(This)c(is)f(\014xed)i(in)e
(this)h(v)o(ersion)75 2342 y(b)o(y)19 b(ha)o(ving)f(t)o(w)o(o)h(OUT)h
(argumen)o(ts)e(for)h(an)h(arra)o(y)f(of)f(displacemen)o(ts,)i
Fe(a)o(rra)o(y)p 1350 2342 V 15 w(disps)g Fj(for)f(in)o(teger)h(v)n
(alues)f(and)75 2392 y Fe(a)o(rra)o(y)p 162 2392 V 15
w(hdisps)c Fj(for)e(addresses.)20 b(A)14 b(stride)g(is)f(no)o(w)h
(returned)h(in)e(the)h(\014rst)h(elemen)o(t)e(of)g(either)h(arra)o(y)m
(,)e(according)i(to)75 2442 y(its)g(t)o(yp)q(e.)166 2498
y(In)e(F)o(OR)m(TRAN,)f(b)q(oth)i Fe(a)o(rra)o(y)p 632
2498 V 15 w(disps)g Fj(and)f Fe(a)o(rra)o(y)p 908 2498
V 15 w(hdisps)i Fj(are)f(arra)o(y)f(of)g Fa(INTEGER)p
Fj(.)e(This)j(ma)o(y)d(b)q(e)j(confusing.)-32 46 y Ff(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 20 20
20 21 bop 75 -100 a Fr(20)871 b Fi(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y Fn(Prop)q(osal)15
b(F)o(o)o(r)f(cha)o(racter)h(rep)o(resenation)h(of)f(an)g(MPI)g(Datat)o
(yp)q(e)75 230 y(MPI)p 160 230 14 2 v 16 w(GET)p 264
230 V 17 w(CHAR)p 401 230 V 17 w(D)o(A)l(T)l(A)p 533
230 V 17 w(TYPE)g(\(dataT)l(yp)q(e,)h(cha)o(rDataT)l(yp)q(e\))117
307 y Fj(IN)155 b Fn(dataT)l(yp)q(e)412 b Fj(MPI)14 b(Data)g(T)o(yp)q
(e)g(\(user)h(de\014ned)g(or)f(prede\014ned\))117 382
y(OUT)108 b Fn(cha)o(rDataT)l(yp)q(e)322 b Fj(A)14 b(c)o(haracter)h
(string)f(represen)o(tation)i(of)d(the)i(data)e(t)o(yp)q(e)75
556 y Fd(int)23 b(MPI_Get_char_data_type)e(\(MPI_Datatype)h(dataType,)h
(char)g(charDataType,)743 613 y(int)h(charDataTypeLen\))75
726 y(MPI_GET_CHAR_DATA_TYPE)d(\(DATA_TYPE,)h(CHAR_DATA_TYPE,)g
(CHAR_DATA_TYPE_LEN,)f(IERROR\))147 782 y(INTEGER)h(DATA_TYPE)147
838 y(CHARACTER*\(CHAR_DATA_TY)o(PE_LEN\))e(CHAR_DATA_TYPE)147
895 y(INTEGER)i(CHAR_DATA_TYPE_LEN)147 951 y(INTEGER)g(IERROR)166
1058 y Fr(This)c(routine)g(returns)f(a)g(c)o(haracter)g(represen)o
(tation)h(of)f(an)g(MPI)h(data)e(t)o(yp)q(e.)27 b(This)18
b(represen-)75 1114 y(tation)h(can)g(then)h(b)q(e)g(parsed)f(b)o(y)g
(the)h(user's)e(co)q(de)i(to)f(repro)q(duce)h(or)f(in)o(terpret)g(the)g
(data)g(t)o(yp)q(e)g(as)75 1171 y(is)g(necessary)l(.)30
b(The)18 b(string)h(can,)g(of)e(course,)i(b)q(e)g(sen)o(t)g(to)e
(another)h(pro)q(cess)h(but)f(ma)o(y)g(not)g(b)q(e)h(com-)75
1227 y(pletely)e(p)q(ortable)g(when)f(o\013sets)f(or)h(absolute)g
(addresses)g(are)g(used)g(\(as)f(in)i(STR)o(UCT,)f(HVECTOR,)75
1283 y(HINDEXED,)f(MPI)p 445 1283 V 16 w(UB,)g(MPI)p
644 1283 V 17 w(LB\).)75 1434 y Fn(MPI)p 160 1434 V 16
w(D)o(A)l(T)l(A)p 291 1434 V 17 w(TYPE)p 425 1434 V 16
w(FROM)p 569 1434 V 17 w(CHAR)h(\(cha)o(rDataT)l(yp)q(e,)g(dataT)l(yp)q
(e\))117 1512 y Fj(IN)155 b Fn(cha)o(rDataT)l(yp)q(e)322
b Fj(A)14 b(c)o(haracter)h(string)f(represen)o(tation)i(of)d(a)h(data)f
(t)o(yp)q(e)117 1587 y(OUT)108 b Fn(dataT)l(yp)q(e)412
b Fj(A)14 b(Resulting)f(MPI)i(Data)e(T)o(yp)q(e)75 1761
y Fd(int)23 b(MPI_data_type_from_char)e(\(char)i(*charDataType,)f
(MPI_Datatype)h(dataType\))75 1874 y(MPI_DATA_TYPE_FROM_CHAR)e
(\(CHAR_DATA_TYPE,)g(DATA_TYPE,)i(IERROR\))147 1930 y
(CHARACTER*\(<size>\))e(CHAR_DATA_TYPE)147 1987 y(INTEGER)h(DATA_TYPE)
147 2043 y(INTEGER)g(IERROR)166 2150 y Fr(This)14 b(routine)h(creates)f
(an)g(MPI)g(data)f(t)o(yp)q(e)h(from)f(a)h(string)g(description.)21
b(This)14 b(ma)o(y)g(b)q(e)g(a)g(string)75 2206 y(that)g(came)i(from)e
(MPI)p 489 2206 V 16 w(GET)p 605 2206 V 16 w(CHAR)p 755
2206 V 17 w(D)o(A)l(T)l(A)p 899 2206 V 16 w(TYPE)h(or)g(a)g(string)g
(the)g(program)f(created.)166 2338 y Fk(Discussion:)166
2388 y Fj(A)o(t)f(the)g(last)f(meeting)g(w)o(e)h(v)o(oted)f(to)h(not)g
(sp)q(ecify)g(the)g(string)g(format.)i(Since)f(it)e(w)o(as)g(a)h(mixed)
e(v)o(ote)i(I)f(ha)o(v)o(e)75 2438 y(left)i(the)g(text.)1967
46 y Ff(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 21 21
21 22 bop 75 -100 a Fi(6.3.)29 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)i
(IN)e Fn(MPI)g Fi(OP)l(A)o(QUE)h(OBJECTS)434 b Fr(21)75
49 y Fn(String)15 b(F)o(o)o(rmat:)43 b Fr(The)16 b(string)f(format)f
(con)o(tains)h(a)g(sequence)h(n)o(um)o(b)q(er)g(follo)o(w)o(ed)f(b)o(y)
g(a)g(colon)h(\(:\))j(and)75 106 y(an)i(op)q(en)g(paren)o(theses.)37
b(The)21 b(top)g(lev)o(el)h(description)h(follo)o(ws)d(ending)j(with)e
(a)f(close)i(paren)o(theses)75 162 y(\(in)c(the)g(BNF)f(b)q(elo)o(w,)h
(this)g(is)g(de\014ned)h(as)e Fc(<)p Fr(basicT)o(yp)q(eRep)p
Fc(>)p Fr(\).)29 b(A)17 b(sequence)i(of)e(these)h(strings)f(are)75
219 y(concatenated)12 b(together)g(to)f(supply)i(the)g(lo)o(w)o(er)e
(lev)o(el)j(datat)o(yp)q(es)d(\(in)i(the)f(BNF)g(b)q(elo)o(w,)h(this)g
(is)g(de\014ned)75 275 y(as)j Fc(<)p Fr(t)o(yp)q(eRep)p
Fc(>)p Fr(\).)24 b(Lo)o(w)o(er)15 b(lev)o(el)j(t)o(yp)q(es)e(app)q(ear)
g(in)h(the)f(string)g(suc)o(h)h(that)e(if)i(scanned)f(from)g(righ)o(t)g
(to)75 332 y(left,)e(all)g(t)o(yp)q(es)f(are)g(built)i(b)q(efore)e
(they)h(are)f(used.)20 b(The)13 b(basic)h(pre-de\014ned)h(data)e(t)o
(yp)q(es)g(app)q(ear)h(in)g(the)75 388 y(BNF)d(b)q(elo)o(w)h(as)f
Fc(<)p Fr(t)o(yp)q(eDescC)p Fc(>)h Fr(for)e(C)h(and)g
Fc(<)p Fr(t)o(yp)q(eDescF77)p Fc(>)h Fr(for)e(the)h(F)l(ortran)f(77.)18
b(The)12 b(enco)q(ding)g(of)75 444 y(the)k(names)f(are)h(en)o(umerated)
g(in)g(T)l(able)h(I)f(b)q(elo)o(w.)22 b(User)16 b(de\014ned)h(data)e(t)
o(yp)q(es)h(ha)o(v)o(e)f(the)h(co)q(de)g(U)g(\(for)75
501 y(MPI)p 167 501 14 2 v 16 w(GET)p 283 501 V 16 w(CHAR)p
433 501 V 17 w(D)o(A)l(T)l(A)p 577 501 V 16 w(TYPE\))k(or)g(T)g(and/or)
f(U)i(\(for)e(MPI)p 1266 501 V 16 w(D)o(A)l(T)l(A)p 1409
501 V 16 w(TYPE)p 1554 501 V 17 w(FR)o(OM)p 1710 501
V 16 w(CHAR\))75 557 y(follo)o(w)o(ed)j(b)o(y)f(their)h(sequence)g(n)o
(um)o(b)q(er)g(\(e.g.)38 b(U3129)20 b(refers)h(to)g(t)o(yp)q(e)g(3129)g
(whic)o(h)h(sho)o(ws)f(up)g(as)75 614 y(3129:\(....\))o(\).)29
b(If)19 b(a)g(user)g(is)h(creating)f(a)g(data)f(t)o(yp)q(e)i(from)e(a)h
(string,)h(the)f(T)g(t)o(yp)q(e)g(is)h(used)f(to)g(de\014ne)75
670 y(temp)q(orary)14 b(subt)o(yp)q(es)i(within)h(a)d(single)j(string.)
75 790 y Fn(T)l(emp)q(o)o(ral)k(Uniqueness)k(of)c(Sequence)j(Numb)q
(ers:)46 b Fr(The)22 b(sequence)h(n)o(um)o(b)q(er)f(of)f(eac)o(h)h
(data)f(t)o(yp)q(e)g(is)75 847 y(unique)f(within)h(the)e(pro)q(cess.)31
b(It)19 b(is)g(unique)i(for)d(all)i(time)f(within)h(the)f(pro)q(cess)h
(as)e(w)o(ell,)j(that)d(is)h(a)75 903 y(sequence)c(n)o(um)o(b)q(er)e
(is)h(not)f(reused)h(for)f(a)g(new)h(data)e(t)o(yp)q(e)i(ev)o(en)g(if)g
(the)f(old)h(data)f(t)o(yp)q(e)g(has)g(b)q(een)i(freed.)75
960 y(This)k(temp)q(oral)f(uniqueness)j(allo)o(ws)d(a)g(user)g
(application)i(\(or)e(library\))h(to)e(recognize)j(a)e(previously)75
1016 y(encoun)o(tered)e(t)o(yp)q(e)f(so)g(that)f(reparsing)i(ma)o(y)e
(not)h(b)q(e)h(necessary)l(.)189 1122 y Fb(A)n(dvic)n(e)i(to)i(users.)
61 b Fr(Note)19 b(that)f(some)g(F)l(ortran)g(77)g(implemen)o(tations)i
(limit)g(the)f(maxim)o(um)189 1179 y(length)j(of)f(a)h(c)o(harater)f
(string.)39 b(This)23 b(ma)o(y)e(result)h(in)h(the)f(inabilit)o(y)h(to)
f(extract)f(c)o(haracter)189 1235 y(represen)o(tation)15
b(of)g(v)o(ery)g(complex)h(t)o(yp)q(es)f(in)h(F)l(ortran)e(77.)19
b(\()p Fb(End)d(of)g(advic)n(e)g(to)h(users.)p Fr(\))166
1424 y Fk(Discussion:)32 b Fj(F)m(or)11 b(MPI)p 587 1424
13 2 v 16 w(D)o(A)m(T)m(A)p 720 1424 V 13 w(TYPE)p 850
1424 V 16 w(FR)o(OM)p 993 1424 V 15 w(CHAR)g(w)o(e)h(ma)o(y)e(w)o(an)o
(t)i(to)g(ha)o(v)o(e)f(an)h(extra)g(parameter)75 1481
y(that)k(returns)h(the)f(sequence)i(n)o(um)o(b)q(er)d(of)g(the)i(new)f
(t)o(yp)q(e)g(as)g(an)f(in)o(teger.)24 b(This)16 b(will)e(b)q(e)i
(useful)g(if)f(the)h(user)h(is)75 1537 y(building)11
b(a)g(hierarc)o(h)o(y)i(of)e(data)h(t)o(yp)q(es.)19 b(W)m(e)11
b(ma)o(y)f(also)i(w)o(an)o(t)g(to)g(ha)o(v)o(e)f(a)h(MPI)p
1308 1537 V 15 w(GET)p 1414 1537 V 15 w(TYPE)p 1546 1537
V 16 w(SEQ)p 1645 1537 V 15 w(NUM)h(to)f(get)75 1594
y(the)k(sequence)i(n)o(um)o(b)q(er)d(of)f(a)i(t)o(yp)q(e)g(\(I)f(b)q
(eliev)o(e)h(a)f(function)h(lik)o(e)e(this)i(ma)o(y)d(ha)o(v)o(e)j(b)q
(een)g(in)f(a)h(v)o(ersion)f(of)g(Da)o(vid)75 1650 y(T)m(a)o(ylor's)d
(\(TMC\))i(prop)q(osal\).)75 1853 y Fn(Interlanguage)k(Issues:)46
b Fr(The)18 b(basic)f(\(prede\014ned\))i(data)d(t)o(yp)q(es)h(are)g
(returned)h(in)g(the)f(dialect)h(of)f(the)75 1909 y(creating)e
(language.)75 2029 y Fn(Implementation)i(Note:)45 b Fr(Since)18
b(the)f(implemen)o(tation)h(ma)o(y)e(c)o(ho)q(ose)h(to)f("optimize")h
(a)g(user)g(de\014ned)75 2086 y(data)i(t)o(yp)q(e,)h(the)f(c)o
(haracter)f(represen)o(tation)i(only)g(guaran)o(tees)e(to)h(accurately)
g(represen)o(t)h(the)f(t)o(yp)q(e)75 2142 y(map)e(of)h(the)f(user)h
(de\014ned)h(data)e(t)o(yp)q(e.)27 b(P)o(arsing)17 b(the)h(string)f
(and)h(pro)q(ducing)h(a)e(user)h(de\014ned)h(data)75
2199 y(t)o(yp)q(e)c(will)i(not)e(necessarily)i(result)f(in)g(the)f
(same)g(sequence)h(of)f(calls,)h(but)g(will)h(result)e(in)h(a)f(data)g
(t)o(yp)q(e)75 2255 y(that)f(can)i(b)q(e)g(used)f(in)o(terc)o
(hangeably)i(with)e(the)g(original)i(data)d(t)o(yp)q(e.)934
2361 y Fd(TABLE)23 b(I)719 2418 y(Character)g(representations)123
2531 y(Type)333 b(Character)23 b(representation)123 2587
y(-----------------)e(----------------------------)o(--)123
2644 y(byte)333 b(b)123 2700 y(packed)285 b(p)-32 46
y Ff(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836
y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062
y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288
y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514
y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740
y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966
y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191
y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417
y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Page: 22 22
22 23 bop 75 -100 a Fr(22)876 b Fi(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)123 49 y Fd(char)333
b(c)123 106 y(unsigned)22 b(char)119 b(uc)123 162 y(short)309
b(s)123 219 y(unsigned)22 b(short)95 b(us)123 275 y(int)357
b(i)123 332 y(unsigned)22 b(int)143 b(ui)123 388 y(long)333
b(l)123 444 y(unsigned)22 b(long)119 b(ul)123 501 y(long)23
b(long)214 b(ll)123 557 y(unsigned)22 b(ll)167 b(ull)123
614 y(float)309 b(f)123 670 y(double)285 b(d)123 727
y(long)23 b(double)166 b(ld)123 783 y(INTEGER)261 b(I)123
840 y(INTEGER*2)213 b(I2)123 896 y(INTEGER*4)g(I4)123
953 y(INTEGER*8)g(I8)123 1009 y(LOGICAL)261 b(L)123 1065
y(REAL)333 b(R)123 1122 y(REAL*4)285 b(R4)123 1178 y(REAL*8)g(R8)123
1235 y(DOUBLE)23 b(PRECISION)46 b(D)123 1291 y(COMPLEX)261
b(C)123 1348 y(DOUBLE)23 b(COMPLEX)94 b(DC)123 1404 y(user)23
b(data)g(type)95 b(Uxxxx)23 b(\(where)g(xxx)h(is)g(the)f(sequence)g
(number)g(of)g(the)h(type\))123 1461 y(temporary)e(type)95
b(Txxxx)23 b(\(where)g(xxx)h(is)g(a)f(sequence)g(number)g(of)h(the)f
(type\))123 1517 y(contiguous)189 b(xxxType)23 b(\(where)g(xxx)h(is)f
(positive)g(and)g(Type)h(is)f(any)h(type\))123 1574 y(vector)285
b(V:Type:count:blocklength:str)o(ide)123 1630 y(hvector)261
b(HV:Type:count:blocklength:st)o(ride)123 1686 y(Indexed)g
(X:Type:count:blocklength/dis)o(placeme)o(nt,...)123
1743 y(HIndexed)237 b(HX:Type:count:blocklength/di)o(splacem)o(ent,...)
123 1799 y(Struct)285 b(S:count:Type/count/displacem)o(ent,...)75
1912 y(Examples:)147 2025 y(Type)23 b(threeslice)f(from)i(example)f
(3.29)g(\(assume)g(sizeofreal)f(is)i(4\))147 2138 y
("329:\(HV:U3291:9:1:4000)o(0\)3291:)o(\(HV:U329)o(2:9:1:4)o(00\)3292)o
(:\(V:R:9:)o(1:2\)")147 2251 y(Type)f(ltype)g(from)g(example)g(3.30)147
2364 y("330:\(X:R:100:1/99,101/)o(98,202/)o(97,...,1)o(0000/0\))o(")147
2477 y(Type)g(xpose)g(from)g(example)g(3.31)h(\(assume)f(sizeofreal)f
(is)i(4\))147 2590 y("331:\(HV:U3311:100:1:4\))o(3311:\(V)o(:R:100:1)o
(:100\)")147 2703 y(Type)f(Particletype)f(from)h(example)g(3.33)h
(\(assume)f(double)g(alignment,)f(sizeof)h(int)h(4,)1967
46 y Ff(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 23 23
23 24 bop 75 -100 a Fi(6.3.)29 b(A)o(CCESSING)15 b(INF)o(ORMA)l(TION)i
(IN)e Fn(MPI)g Fi(OP)l(A)o(QUE)h(OBJECTS)434 b Fr(23)1030
49 y Fd(sizeof)23 b(double)g(8,)g(base)h(=)f(96\))147
162 y("333:\(S:4:i/1/0,d/6/8,c)o(/7/56,U)o(B/1/64\)")147
275 y(Type)g(Particletype)f(from)h(example)g(3.34)h(\(assume)f(addr)g
(particle)g(is)g(96,)1030 332 y(double)g(alignment,)f(sizeof)h(int)h
(4,)1030 388 y(sizeof)f(double)g(8\))147 501 y
("334:\(S:3:i/1/96,d/6/10)o(4,c/7/1)o(52\)")75 614 y(BNF:)75
727 y(<digit>)g(::=)g(0)h(|)g(1)g(|)f(2)h(|)g(3)f(|)h(4)g(|)g(5)f(|)h
(6)g(|)g(7)f(|)h(8)g(|)f(9)75 840 y(<Int>)g(::=)h(-<digit>)e(|)i
(<digit>)f(|)h(<Int>)f(<digit>)75 953 y(<nonNegInt>)f(::=)i(<digit>)f
(|)g(<nonNegInt>)g(<digit>)75 1065 y(<posDigit>)f(::=)i(1)g(|)f(2)h(|)g
(3)g(|)f(4)h(|)g(5)f(|)h(6)g(|)g(7)f(|)h(8)g(|)g(9)75
1178 y(<posInt>)f(::=)g(<posDigit>)g(|)g(<posInt>)g(<digit>)75
1291 y(<typeDescC>)f(::=)i(b)g(|)f(p)h(|)g(c)f(|)h(uc)g(|)f(s)h(|)g(us)
g(|)f(i)h(|)g(ui)f(|)h(l)g(|)552 1348 y(ul)g(|)g(ll)f(|)h(ull)f(|)h(f)g
(|)g(d)f(|)h(ld)75 1461 y(<typeDescF77>)e(::=)i(p)f(|)h(I)g(|)f(L)h(|)g
(R)g(|)f(D)h(|)g(C)g(|)f(DC)h(|)g(Char)f(|)h(I2)f(|)h(I4)g(|)f(I8)h(|)g
(R4)f(|)h(R8)75 1574 y(<typeDescUser>)e(::=)h(U<nonNegInt>)g(|)g
(T<nonNegInt>)75 1686 y(<typeDescBasic>)f(::=)h(<typeDescC>)g(|)g
(<typeDescF77>)f(|)i(<typeDescUser>)75 1799 y(<typeDescAdv>)e(::=)i(UB)
f(|)h(LB)f(|)h(<typeDescBasic>)75 1912 y(<typeDescVec>)e(::=)i
(V:<typeDescBasic>:<posI)o(nt>:<po)o(sInt>:<)o(Int>)75
2025 y(<typeDescHVec>)e(::=)h(HV:<typeDescBasic>:<posInt>:<)o(posInt>)o
(:<Int>)75 2138 y(<typeDescIndex>)f(::=)h(X:<typeDescBasic>:<posInt>:<)
o(posInt>)o(/<Int>)e(|)552 2195 y(<typeDescIndex>,<posInt>/<In)o(t>)75
2307 y(<typeDescHIndex>)h(::=)h(HX:<typeDescBasic>:<posInt>)o(:<posIn)o
(t>/<Int>)d(|)576 2364 y(<typeDescIndex>,<posInt>/<I)o(nt>)75
2477 y(<typeDescStruct>)i(::=)h(S:<posInt>:<typeDescAdv>/<p)o(osInt>/)o
(<Int>)e(|)576 2533 y(<typeDescStruct>,<typeDescA)o(dv>/<po)o(sInt>/<I)
o(nt>)75 2646 y(<typeDescSimple>)h(::=)h(<typeDescBasic>)f(|)i
(<typeDescVec>)e(|)h(<typeDescHVec>)f(|)576 2703 y(<typeDescIndex>)g(|)
i(<typeDescHIndex>)d(|)j(<typeDescStruct>)-32 46 y Ff(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 24 24
24 25 bop 75 -100 a Fr(24)871 b Fi(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 106 y Fd(<typeDesc>)22
b(::=)i(<posInt>)f(<typeDescSimple>)e(|)j(<typeDescSimple>)75
219 y(<basicTypeRep>)e(::=)h(<nonNegInt>:\(<typeDesc>\))75
332 y(<typeRep>)g(::=)g(<basicTypeRep>)f(|)i(<basicTypeRep>)e
(<typeRep>)75 444 y(<createTypeRep>)g(::=)h(\(<typeDesc>\))f(|)i
(\(<typeDesc>\))e(<typeRep>)75 644 y Fo(6.4)59 b(T)-5
b(rue)20 b(Extext)f(of)h(Datat)n(yp)r(es)75 746 y Fr(Supp)q(ose)i(w)o
(e)f(implemen)o(t)h(gather)f(as)f(a)h(spanning)h(tree)f(implemen)o(ted)
i(on)e(top)g(of)f(p)q(oin)o(t-to-p)q(oin)o(t)75 802 y(routines.)f
(Since)11 b(the)g(recv)f(bu\013er)g(is)h(only)g(v)m(alid)h(on)e(the)h
(ro)q(ot)e(pro)q(cess,)i(one)g(will)g(need)h(to)d(allo)q(cate)i(some)75
858 y(temp)q(orary)i(space)i(for)e(receiving)j(data)d(on)h(in)o
(termediate)h(no)q(des.)20 b(The)14 b(di\016cultly)i(is)f(in)f
(determining)75 915 y(the)20 b(size)i(one)e(needs)h(to)f(allo)q(ciate.)
37 b(This)20 b(o)q(ccurs)h(since)h(the)e(user)g(can)h(mo)q(dify)g(the)f
(exten)o(t)g(using)75 971 y(the)i Fe(MPI)p 237 971 13
2 v 14 w(UB)g Fr(and)g Fe(MPI)p 500 971 V 14 w(LB)g Fr(v)m(alues.)42
b(The)22 b(writer)g(of)f(the)i(gather)e(routine)h(could)h(determine)h
(this)75 1028 y(information)16 b(b)o(y)g(deco)q(ding)i(the)e(datat)o
(yp)q(e.)21 b(Ho)o(w)o(ev)o(er,)15 b(this)i(is)f(more)g(w)o(ork)f(and)h
(more)g(painful)h(than)75 1084 y(desired.)k(Th)o(us,)15
b(a)g(new)g(function)h(is)g(pro)o(vided)g(whic)o(h)g(returns)f(the)g
(true)g(exten)o(t)g(of)g(the)g(datat)o(yp)q(e.)196 1141
y Fn(MPI)p 281 1141 14 2 v 16 w(TRUE)p 415 1141 V 17
w(EXTENT\(datat)o(yp)q(e,)i(true)p 896 1141 V 17 w(lb,)e(true)p
1050 1141 V 17 w(ub\))-170 1130 y Fm(>)p Fr(\()p Fl(June)p
Fr(\))117 1301 y Fj(IN)155 b Fn(datat)o(yp)q(e)424 b
Fj(datat)o(yp)q(e)14 b(to)g(get)g(information)d(on)117
1377 y(OUT)108 b Fn(true)p 396 1377 V 17 w(lb)461 b Fj(true)15
b(lo)o(w)o(er)e(b)q(ound)h(of)g(datat)o(yp)q(e)117 1452
y(OUT)108 b Fn(true)p 396 1452 V 17 w(ub)449 b Fj(true)15
b(upp)q(er)g(b)q(ound)f(of)f(datat)o(yp)q(e)75 1576 y
Fd(int)23 b(MPI)p 245 1576 15 2 v 17 w(True)p 358 1576
V 17 w(extent\(MPI)p 615 1576 V 16 w(Datatype)f(datatype,)h(MPI)p
1156 1576 V 17 w(Aint)g(true)p 1388 1576 V 17 w(lb,)g(MPI)p
1572 1576 V 17 w(Aint)393 1633 y(true)p 492 1633 V 17
w(ub\))75 1719 y(MPI)p 150 1719 V 17 w(TRUE)p 263 1719
V 16 w(EXTENT\(DATATYPE,)f(SIZE\))170 1776 y(INTEGER)h(DATATYPE,)g
(TRUE)p 699 1776 V 17 w(LB,)g(TRUE)p 907 1776 V 17 w(UB)166
1862 y Fn(true)p 244 1862 14 2 v 17 w(lb)14 b Fr(returns)f(to)f(minim)o
(um)j(of)e(the)g(displacemen)o(ts)i(and)f(the)f(LBs)h(\(if)f(used\).)20
b Fn(true)p 1659 1862 V 17 w(ub)14 b Fr(returns)75 1918
y(to)k(maxim)o(um)h(of)g(the)g(displacemen)o(ts)h(and)f(the)h(UBs)f
(\(if)g(used\).)31 b(The)20 b(true)e(exten)o(t)h(can)g(easily)h(b)q(e)
75 1975 y(determined)d(from)d(the)h(di\013erence)i(of)d(these)i(t)o(w)o
(o)e(v)m(alues.)189 2081 y Fb(R)n(ationale.)38 b Fr(Kno)o(wing)14
b(the)g Fn(true)p 773 2081 V 17 w(lb)f Fr(and)h Fn(true)p
999 2081 V 17 w(ub)g Fr(easily)h(giv)o(es)e(the)h(exten)o(t)f(as)g(w)o
(ell)h(as)f(de\014ning)189 2138 y(where)k(the)h(datat)o(yp)q(e)f
(resides.)28 b(It)18 b(w)o(as)e(felt)i(that)f(this)h(added)g
(information)g(w)o(as)f(w)o(orth)o(while)189 2194 y(and)e(the)g(added)h
(e\013ort)e(to)h(\014nd)h(the)f(true)g(exten)o(t)g(w)o(as)f(minim)o
(umal.)22 b(\()p Fb(End)15 b(of)i(r)n(ationale.)p Fr(\))-170
2278 y Fm(?)p Fr(\()p Fl(June)p Fr(\))75 2433 y Fo(6.5)59
b(Cacheing)20 b(on)g(MPI)g(Handles)75 2534 y Fr(The)f
Fn(MPI)e Fr(standard)h(pro)o(vides)h(a)f(\\cac)o(heing")h(facilit)o(y)g
(that)f(allo)o(ws)g(an)g(application)i(to)e(attac)o(h)f(ar-)75
2591 y(bitrary)g(pieces)h(of)e(information,)h(called)h(attributes,)f
(to)f(comm)o(unicators.)24 b(Pro)o(viding)18 b(cac)o(heing)g(for)75
2647 y(other)d Fn(MPI)f Fr(handles)j(pro)o(vides)e(a)g(w)o(a)o(y)g(for)
f(attac)o(hing)h(information)g(to)g(these)g(handles)i(as)d(w)o(ell.)
1967 46 y Ff(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 25 25
25 26 bop 75 -100 a Fi(6.5.)34 b(CA)o(CHEING)15 b(ON)g(MPI)h(HANDLES)
974 b Fr(25)75 49 y Fg(6.5.1)49 b(F)o(unctions)75 135
y Fr(MPI-2)13 b(pro)o(vides)h(general)h(cac)o(heing)f(functions)g(that)
f(allo)o(w)h(attributes)f(to)g(b)q(e)h(cac)o(hed)h(on)e(the)h(follo)o
(w-)75 192 y(ing)i(t)o(yp)q(es)f(MPI)g(handles:)143 285
y Fm(\017)23 b Fd(MPI)p 264 285 15 2 v 16 w(COMM)143
379 y Fm(\017)g Fd(MPI)p 264 379 V 16 w(DATATYPE)143
473 y Fm(\017)g Fd(MPI)p 264 473 V 16 w(GROUP)166 643
y Fk(Missing:)166 693 y Fj(W)m(e)13 b(ha)o(v)o(e)h(not)g(y)o(et)g
(determined)g(whic)o(h)g(of)f(the)i(new)f(handles)g(w)o(e)g(ma)o(y)e
(also)h(include)189 882 y Fb(R)n(ationale.)43 b Fr(It)16
b(w)o(as)e(decided)k(not)d(to)h(allo)o(w)f(cac)o(heing)i(on)f(all)g
(handles)h(since)g(it)f(could)h(ha)o(v)o(e)e(a)189 938
y(p)q(erformance)g(impact.)20 b(F)l(or)14 b(example,)i
Fn(MPI)p 975 938 14 2 v 16 w(REQUEST)g Fr(are)f(created)g(and)g(destro)
o(y)o(ed)g(in)h(time)189 994 y(critical)g(sections)g(of)f(co)q(de.)20
b(\()p Fb(End)c(of)g(r)n(ationale.)p Fr(\))166 1101 y(A)11
b Fd(keyval)g Fr(created)g(b)o(y)h(the)f Fn(MPI)g Fr(function)h
Fn(MPI)p 1007 1101 V 16 w(KEYV)l(AL)p 1193 1101 V 17
w(CREA)l(TE)g Fr(ma)o(y)f(b)q(e)h(used)g(for)f(cac)o(heing)75
1157 y(on)j(an)o(y)f(of)g(the)h(ab)q(o)o(v)o(e)g(MPI)f(handles.)21
b(The)14 b(cop)o(y)f(and)h(delete)h(functions)g(no)o(w)e(tak)o(e)g(a)g
(\014rst)h(argumen)o(t)75 1214 y(that)g(is)i(an)o(y)f(allo)o(w)o(ed)h
(handle.)75 1320 y Fd(typedef)23 b(int)g(MPI_Copy_function\(void)e
(*handle,)i(int)g(keyval,)791 1376 y(void)g(*extra_state,)f(void)i
(*attribute_val_in,)791 1433 y(void)f(*attribute_val_out,)e(int)j
(*flag\))75 1546 y(typedef)f(int)g(MPI_Delete_function\(void)e
(*handle,)i(int)g(keyval,)839 1602 y(void)g(*attribute_val,)f(void)h
(*extra_state\);)75 1772 y(SUBROUTINE)f(COPY_FUNCTION\(HANDLE,)f
(KEYVAL,)i(EXTRA_STATE,)672 1828 y(ATTRIBUTE_VAL_IN,)e
(ATTRIBUTE_VAL_OUT,)h(FLAG,)h(IERR\))75 1884 y(INTEGER)g(HANDLE,)g
(KEYVAL,)g(EXTRA_STATE,)f(ATTRIBUTE_VAL_IN,)75 1997 y(SUBROUTINE)g
(DELETE_FUNCTION\(HANDLE,)f(KEYVAL,)i(ATTRIBUTE_VAL,)f(EXTRA_STATE,)g
(IERR\))75 2054 y(INTEGER)h(HANDLE,)g(KEYVAL,)g(ATTRIBUTE_VAL,)f
(EXTRA_STATE,)g(IERR)166 2160 y Fr(The)f(follo)o(wing)g(functions)h
(con)o(tin)o(ue)f(to)g(w)o(ork)e(with)i(comm)o(unicators,)h(with)f
(only)g(a)g(sligh)o(tly)75 2217 y(di\013eren)o(t)15 b(formal)f(argumen)
o(t)g(list)i(\(the)e Fd(MPI)p 845 2217 15 2 v 17 w(COMM)g
Fr(argumen)o(t)g(is)h(replaced)h(b)o(y)e(an)o(y)h(of)f(the)h
(previously)75 2273 y(listed)h(t)o(yp)q(es)g(of)e(MPI)i(handles\).)-32
46 y Ff(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 26 26
26 27 bop 75 -100 a Fr(26)876 b Fi(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y Fn(MPI)p
160 49 14 2 v 16 w(A)l(TTR)p 293 49 V 17 w(PUT\(handle,)16
b(k)o(eyval,)f(attribute)p 877 49 V 18 w(val\))117 126
y Fj(IN)155 b Fn(handle)465 b Fj(handle)14 b(to)g(whic)o(h)f(attribute)
i(will)d(b)q(e)j(attac)o(hed)f(\(handle\))117 202 y(IN)155
b Fn(k)o(eyval)471 b Fj(k)o(ey)14 b(v)n(alue,)f(as)h(returned)h(b)o(y)
905 258 y Fe(MPI)p 982 258 13 2 v 15 w(KEYV)m(AL)p 1154
258 V 13 w(CREA)m(TE)d Fj(\(in)o(teger\))117 333 y(IN)155
b Fn(attribute)p 484 333 14 2 v 18 w(val)352 b Fj(attribute)15
b(v)n(alue)75 552 y Fn(MPI)p 160 552 V 16 w(A)l(TTR)p
293 552 V 17 w(GET\(handle,)h(k)o(eyval,)f(attribute)p
874 552 V 18 w(val,)f(\015ag\))117 629 y Fj(IN)155 b
Fn(handle)465 b Fj(handle)14 b(to)g(whic)o(h)f(attribute)i(is)f(attac)o
(hed)g(\(handle\))117 704 y(IN)155 b Fn(k)o(eyval)471
b Fj(k)o(ey)14 b(v)n(alue)f(\(in)o(teger\))117 780 y(OUT)108
b Fn(attribute)p 484 780 V 18 w(val)352 b Fj(attribute)15
b(v)n(alue,)d(unless)j Fe(\015ag)f Fj(=)g(false)117 855
y(OUT)108 b Fn(\015ag)518 b Fa(true)14 b Fj(if)h(an)f(attribute)i(v)n
(alue)e(w)o(as)h(extracted;)i Fa(false)d Fj(if)g(no)905
911 y(attribute)h(is)e(asso)q(ciated)i(with)f(the)g(k)o(ey)75
1130 y Fn(MPI)p 160 1130 V 16 w(A)l(TTR)p 293 1130 V
17 w(DELETE\(handle,)i(k)o(eyval\))117 1207 y Fj(IN)155
b Fn(handle)465 b Fj(handle)14 b(to)g(whic)o(h)f(attribute)i(is)f
(attac)o(hed)g(\(handle\))117 1282 y(IN)155 b Fn(k)o(eyval)471
b Fj(The)15 b(k)o(ey)e(v)n(alue)h(of)f(the)i(deleted)f(attribute)h
(\(in)o(teger\))181 1400 y Fk(Missing:)-170 1386 y Fm(>)p
Fr(\()p Fl(June)p Fr(\))166 1522 y Fj(When)g(trying)g(to)g(sp)q(ecify)g
(the)h(de\014nitions)f(of)f(these)j(functions)e(for)g(C)g(and)g(F)m
(ortan,)f(I)h(realized)h(that)f(w)o(e)75 1572 y(do)f(not)h(ha)o(v)o(e)f
(a)h(t)o(yp)q(e)g(to)f(describ)q(e)j(a)d(handle.)20 b(Under)c
Fe(MPI-1)d Fj(they)i(tak)o(e)g(MPI)p 1352 1572 13 2 v
15 w(Comm.)i(Ho)o(w)e(can)g(w)o(e)f(sp)q(ecify)75 1621
y(MPI)p 158 1621 V 15 w(Comm,)d(MPI)p 400 1621 V 15 w(Datat)o(yp)q(e)j
(and)f(MPI)p 759 1621 V 15 w(Group?)-170 1738 y Fm(?)p
Fr(\()p Fl(June)p Fr(\))75 1871 y Fg(6.5.2)49 b(Example)75
1957 y Fr(An)16 b(example)g(of)g(ho)o(w)f(one)h(migh)o(t)f(use)h(these)
g(cac)o(heing)g(functions)h(to)e(cac)o(he)h(the)g(deco)q(ded)g(datat)o
(yp)q(e)-170 1944 y Fm(>)p Fr(\()p Fl(June)p Fr(\))75
2003 y(information)f(on)g(the)h(datat)o(yp)q(e.)75 2109
y Fd(int)23 b(datatype_keyval;)75 2222 y(/*)h(library)e(initialization)
g(function.)47 b(MUST)23 b(be)h(called)f(before)g(the)g(library)75
2278 y(is)h(used)f(*/)75 2335 y(lib_init\(int)f(*datatype_keyval\))75
2391 y({)147 2448 y(MPI_Keyval_create\(MPI_N)o(ULL_COP)o(Y_FN,)f
(MPI_NULL_DEL_FN,)g(datatype_keyval,)h(NULL\);)75 2504
y(})75 2673 y(/*)i(the)f(library)g(*/)1967 46 y Ff(1)1967
103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328
y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959
611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959
836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959
1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959
1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959
1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959
1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959
1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959
2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959
2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959
2643 y(47)1959 2699 y(48)p eop
%%Page: 27 27
27 28 bop 75 -100 a Fi(6.6.)34 b(COPYING)16 b(D)o(A)l(T)l(A)l(TYPES)
1137 b Fr(27)75 49 y Fd(lib\(MPI_DATATYPE)22 b(datatype,)g(int)i
(datatype_keyval\))75 106 y({)147 162 y(char)f(datatype_char[1024];)147
219 y(int)g(flag;)147 332 y(MPI_Attr_get\(datatype,)d(datatype_keyval,)
i(datatype_char,)g(flag\);)147 388 y(if)h(\(!flag\))g({)218
444 y(/*)h(get)f(datatype)g(and)g(cache)h(for)f(later)g(use)h(*/)218
501 y(MPI_Get_char_data_type\(data)o(type,)d(datatype_char\);)218
557 y(MPI_Attr_put\(datatype,)g(datatype_keyval,)h(datatype_char\))147
614 y(})147 727 y(/*)h(use)h(datatype_char)e(*/)75 840
y(})-170 924 y Fm(?)p Fr(\()p Fl(June)p Fr(\))-170 969
y Fm(>)p Fr(\()p Fl(June)p Fr(\))75 1124 y Fo(6.6)59
b(Cop)n(ying)21 b(Datat)n(yp)r(es)75 1301 y Fk(Missing:)166
1351 y Fj(A)d(request)h(w)o(as)f(made)f(to)g(b)q(e)i(able)e(to)h(dup)g
(a)f(datat)o(yp)q(e.)30 b(This)18 b(migh)o(t)e(b)q(e)i(useful)g(in)f
(co)q(des)i(that)f(use)75 1401 y(datat)o(yp)q(es)11 b(for)g(other)h
(purp)q(oses)g(and)f(w)o(an)o(t)f(to)h(mak)o(e)e(sure)j(that)f(they)g
(can)h(k)o(eep)f(copies)h(around.)17 b(This)10 b(prop)q(osal)75
1451 y(has)15 b(not)g(b)q(een)h(written)g(and)f(it)g(is)f(not)h(clear)h
(it)f(b)q(elongs)g(in)f(this)i(c)o(hapter.)22 b(It)15
b(needs)i(the)e(c)o(hapion)g(to)g(push)g(it)75 1500 y(forw)o(ard.)-170
1617 y Fm(?)p Fr(\()p Fl(June)p Fr(\))-32 46 y Ff(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF