- the new proposal for a character representation of a datatype is
included.
- a proposal for support for layered products
- a more detailed second proposal for MPI_Datatype
Steve
----------------------------------------------------------------------
%!PS-Adobe-2.0
%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
%%Title: temp.dvi
%%Pages: 36
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: dvips -o temp.ps temp
%DVIPSParameters: dpi=300, compressed, comments removed
%DVIPSSource: TeX output 1996.07.08:1343
%%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 20 118 df<13E01201EA0380EA0700120E5AA25AA25AA35AA91270A37EA2
7EA27E7EEA0380EA01E012000B217A9C16>40 D<12C07E12707E7E7EA27EA2EA0380A3EA
01C0A9EA0380A3EA0700A2120EA25A5A5A5A5A0A217B9C16>I<127012F8A312701200A8
127012F8A312700512789116>58 D<EA7FF8EAFFFE6C7EEA1C0FEB0780EB03C01301A214
E01300A8EB01C0A21303EB0780130F387FFF00485AEA7FF81319809816>68
D<387FFFC0B5FC7EEA1C01A490C7FCA2131CA2EA1FFCA3EA1C1CA290C7FC14E0A5EA7FFF
B5FC7E13197F9816>I<3801F180EA07FBEA0FFFEA1F0FEA3C07EA38031270A200F0C7FC
5AA4EB1FC014E014C038F00380127013071238123CEA1E0FEA0FFFEA07FBEA01F313197F
9816>71 D<EA7FFCEAFFFEEA7FFCEA0380B3EA7FFCEAFFFEEA7FFC0F197D9816>73
D<387E07F038FF0FF8387F07F0381D81C0A313C1121C13E1A213611371A313311339A213
19131D130DA3EA7F07EAFF87EA7F031519809816>78 D<EA7FF8EAFFFE6C7E381C0F8013
0314C01301A313031480130F381FFF005B13F8001CC7FCA7127F487E6CC7FC12197F9816
>80 D<EA7FF0EAFFFC6C7EEA1C0FEB07801303A41307EB0F00EA1FFE5B7FEA1C0E7FA414
101438A2387F03F0EAFF83387F01E01519809816>82 D<387FFFE0B5FCA2EAE0E0A40000
1300AFEA07FC487E6C5A13197F9816>84 D<EA1FE0487E487EEA783CEA300E1200A2EA03
FE121FEA3E0E127012E0A3EA783E387FFFE0EA3FE7EA0F8313127E9116>97
D<133FA31307A4EA03C7EA0FF748B4FCEA3C1F487EEA700712E0A6EA700F12786C5A381F
FFE0EA0FF7EA07C713197F9816>100 D<EA03F0EA0FFC487EEA3C0F487E3870038012E0
B5FCA300E0C7FCA2387003801278EA3E07381FFF00EA07FEEA01F811127E9116>I<131E
137F3801FF8013C7380383001380A2EA7FFFB5FCA2EA0380ACEA7FFC487E6C5A11197F98
16>I<EA7FC012FF127F1201B3EA7FFFB512806C130011197E9816>108
D<387F0FC038FF3FE0EA7F7F3807F040EBC0005BA290C7FCA8EA7FFC12FF127F13127F91
16>114 D<EA0FECEA3FFC127FEAF03CEAE01CA2EA7000EA7F80EA1FF0EA07F8EA003CEA
600E12E012F0EAF81EEAFFFC13F8EAC7E00F127D9116>I<12035AA4EA7FFFB5FCA20007
C7FCA75BEB0380A3EB8700EA03FE6C5A6C5A11177F9616>I<EAFC3FA3EA1C07AB131F38
1FFFE0EA0FF7EA07C713127F9116>I E /Fb 34 122 df<EC3FE0ECE010903801803801
031378A290380700301500A3130EA390B512E0EB0E0090381C01C0A4EC03801338A3EC07
00A2137801701310EC0E20A313609038E00640EC038091C7FC5BA21201EA3180127948C8
FC1262123C1D29829F1A>12 D<EA7FF0EAFFE0127F0C037D8A10>45
D<127012F8A212F012E005057B840E>I<14021406A2140E141EA2143F142F144F14CF14
8FEB010FA21302A213041308A20110138014071320EB3FFFEB40071380A2EA0100A21202
12061204001E14C039FF807FF81D207E9F22>65 D<48B512FE39001E001C150C1504A25B
A490387804081500A2140C495AEBFFF8EBF018A23801E010A3EC001048481320A21540A2
48481380140115001407380F001FB512FE1F1F7D9E1F>69 D<3801FFF038001F00131EA3
5BA45BA45BA4485AA4485AA4485AA4120FEAFFF0141F7D9E12>73
D<D801FEEC7FC0D8001EECFC005E0117EB0178A20127EB02F01504A215080147EB09E015
111521A20187495AEB83801583A23A01038107801482A2148400024AC7FC14881490A239
0401E01EA214C0000C1380001C143E3AFF8103FFC02A1F7D9E29>77
D<48B5128039001E00E015701538153C5BA4491378A215F015E09038F003C0EC0F00EBFF
FC01F0C7FC485AA4485AA4485AA4120FEAFFF01E1F7D9E1F>80 D<90B5FC90381E03C0EC
00E0157015785BA44913F0A2EC01E015C09038F00700141EEBFFF0EBF01C48487E140F80
15803903C00F00A43807801E1508A21510000F130ED8FFF01320C7EA03C01D207D9E21>
82 D<000FB512FC391E03C03800181418001014081220EB078012601240A239800F0010
00001400A3131EA45BA45BA45BA41201387FFF801E1F799E21>84
D<EBF180380389C038070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2
EA703C135C38308C80380F070013147C9317>97 D<EA0780123FEA0700A4120EA45AA213
F0EA1D0CEA3A0E123CEA380FA21270A4EAE01EA3131C133C1338EA607013E0EA31C0EA1F
0010207B9F15>I<137EEA01C138030080EA0E07121E001C1300EA3C0248C7FCA35AA5EA
70011302EA3004EA1838EA07C011147C9315>I<1478EB03F8EB0070A414E0A4EB01C0A2
13F1EA038938070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C
135C38308C80380F070015207C9F17>I<137CEA01C2EA0701120E121C123CEA3802EA78
0CEA7BF0EA7C0012F0A4127013011302EA3804EA1838EA07C010147C9315>I<1478EB01
9CEB033CA2EB07181400A2130EA5EBFFE0EB1C00A45BA55BA55BA5485AA35B1231007BC7
FC12F31266123C1629829F0E>I<EA01E0120FEA01C0A4485AA448C7FCA2131E1363380E
8180380F01C0120EA2381C0380A438380700A3EB0E1000701320A2131CEB0C4000E01380
3860070014207D9F17>104 D<13C0EA01E0A213C0C7FCA7120E12131223EA4380EA4700
A21287120EA35AA3EA38401380A21270EA31001232121C0B1F7C9E0E>I<EB0180EB03C0
A2148090C7FCA7133C13461387A2EA0107A2EA020E1200A35BA45BA45BA45BA21230EA79
C0EAF1800063C7FC123C1228829E0E>I<EA01E0120FEA01C0A4485AA448C7FCA2EB03C0
EB0420380E08E013111321EB40C0381C8000001DC7FC121EEA1FC0EA38E01370A2EB3840
38707080A3EB310012E0EA601E13207D9F15>I<EA03C0121FEA0380A4EA0700A4120EA4
5AA45AA45AA3127112E2A4126412380A207C9F0C>I<391C0F80F0392630C31839474064
0C903880680EEB0070A2008E495A120EA34848485AA3ED70803A3803807100A215E11562
3970070064D83003133821147C9325>I<381C0F80382630C0384740601380EB0070A200
8E13E0120EA3381C01C0A3EB038400381388A2EB0708EB031000701330383001C016147C
931A>I<137CEA01C338030180000E13C0121E001C13E0123C1278A338F003C0A3EB0780
1400EA700F130EEA3018EA1870EA07C013147C9317>I<3801C1E0380262183804741C13
78EB701EA2EA08E01200A33801C03CA3143838038078147014E0EBC1C038072380EB1E00
90C7FCA2120EA45AA2B47E171D809317>I<EBF040380388C038070580EA0E03121C123C
383807001278A3EAF00EA45BA2EA703C135CEA30B8EA0F381200A25BA45BA2EA0FFE121D
7C9315>I<EA1C1EEA266138278380EA47871307EB0300008EC7FC120EA35AA45AA45A12
3011147C9313>I<13FCEA0302EA0601EA0C03130713061300EA0F8013F0EA07F8EA03FC
EA003E130E1270EAF00CA2EAE008EA4010EA2060EA1F8010147D9313>I<EA018013C0EA
0380A4EA0700A2EAFFF0EA0700120EA45AA45AA31320EA7040A21380A2EA3100121E0C1C
7C9B0F>I<000E13C0001313E0382301C0EA4381EA4701A238870380120EA3381C0700A3
1410EB0E201218A2381C1E40EA0C263807C38014147C9318>I<380E0380EA1307002313
C0EA4383EA4701130000871380120EA3381C0100A31302A25BA25BEA0E30EA03C012147C
9315>I<000EEBC1C0001313E3392301C3E0384381C1384701C015603987038040120EA3
391C070080A3EC0100A21306EB0F02000C5B380E13083803E1F01B147C931E>I<380383
80380CC440381068E013711220EB70C03840E0001200A3485AA314403863808012F3EB81
0012E5EA84C6EA787813147D9315>I<000E13C0001313E0382301C0EA4381EA4701A238
870380120EA3381C0700A4130E1218A2EA1C1EEA0C3CEA07DCEA001CA25B12F05BEAE060
485AEA4380003EC7FC131D7C9316>I E /Fc 7 113 df<127012F012F8A212781208A312
10A31220A21240050E7C840D>59 D<EC01C0EC0780EC1E001478EB01E0EB0780010EC7FC
133813F0EA03C0000FC8FC123C12F0A2123C120FEA03C0EA00F01338130E6D7EEB01E0EB
0078141EEC0780EC01C01A1A7C9723>I<12E01278121EEA0780EA01E0EA0078131C1307
EB03C0EB00F0143C140FEC03C0A2EC0F00143C14F0EB03C049C7FC131C1378EA01E0EA07
80001EC8FC127812E01A1A7C9723>62 D<EBF180380389C038070780EA0E03121C123C38
3807001278A3EAF00EA31410EB1C20A2EA703CEB5C40EA308C380F078014147E9318>97
D<13E01201A2EA00C01300A7120E1213EA23801243A3EA87001207A2120EA25AA21320EA
3840A31380EA1900120E0B1F7E9E10>105 D<14C0EB01E0A214C090C7FCA7131E1323EB
43801383EA0103A2380207001200A3130EA45BA45BA45BA21230EA78E0EAF1C0EA638000
3EC7FC1328819E13>I<3803C1E038046218EB741CEA0878EB701EA2EA10E01200A33801
C03CA3143838038078147014E0EBC1C038072380EB1E0090C7FCA2120EA45AA2EAFFC017
1D819317>112 D E /Fd 87 126 df<127012F8B012701200A5127012F8A31270051C77
9B18>33 D<EA4010EAE038EAF078EAE038AAEA60300D0E7B9C18>I<EA3803387C0780A2
EAEE0F1400A25B131EA2133EEA7C3CA2EA387CEA0078A213F85B12015BA212035BA21207
EB8380EB87C0120FEB0EE0A2121F121EA2123E383C07C0A23818038013247E9F18>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<EA0FF0EA3FFC48B4FCEA700F38F00380A2EA60
0738000F00133E5BEA01F05B485AA55BC8FCA5EA0380487EA36C5A111C7D9B18>I<1370
13F8A213D8A2EA01DCA3138CEA038EA4EA0707A5380FFF80A3EA0E03381C01C0A3387F07
F000FF13F8007F13F0151C7F9B18>65 D<EA7FFCB5FC6C1380381C03C01301EB00E0A413
0114C01307381FFF80140014C0EA1C03EB00E014F01470A414F014E01303387FFFC0B512
80387FFE00141C7F9B18>I<EBF8E0EA03FEEA07FFEA0F07EA1E03EA3C01EA38005AA214
005AA8127014E0A27E123C381E01C0EA0F073807FF803803FE00EA00F8131C7E9B18>I<
EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114C0
1303EB0F80387FFF00485AEA7FF8141C7F9B18>I<B512F0A3381C0070A41400A2130EA3
EA1FFEA3EA1C0EA390C7FCA21438A5B512F8A3151C7F9B18>I<B512F8A3381C0038A414
00A21307A3EA1FFFA3EA1C07A390C7FCA7EAFFC0A3151C7F9B18>I<3801F1C0EA03FDEA
0FFFEA1F0FEA1C03123813011270A290C7FC5AA5EB0FF0131F130F387001C0A213031238
A2EA1C07EA1F0FEA0FFFEA03FDEA01F1141C7E9B18>I<387F07F038FF8FF8387F07F038
1C01C0A9EA1FFFA3EA1C01AA387F07F038FF8FF8387F07F0151C7F9B18>I<EA7FFFB512
806C1300EA01C0B3A4EA7FFFB512806C1300111C7D9B18>I<387F07F038FF87F8387F07
F0381C03C0EB07801400130E131E5B13385B13F0121DA2EA1FB8A2131C121EEA1C0EA27F
A2EB0380A2EB01C0387F03F038FF87F8387F03F0151C7F9B18>75
D<EAFFC0A3001CC7FCB114E0A5B5FCA3131C7E9B18>I<38FC01F8EAFE03A2383B06E0A4
138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03F8A3151C7F9B18>I<387E
07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A313611371A213311339A31319A2
131D130DA3EA7F07EAFF87EA7F03151C7F9B18>I<EA0FFE383FFF804813C0EA7803EA70
0100F013E0EAE000B0EAF001007013C0EA7C07EA7FFF6C1380380FFE00131C7E9B18>I<
EAFFFEEBFF8014C0EA1C03EB01E013001470A514E01301EB03C0EA1FFF1480EBFE00001C
C7FCA8B47EA3141C7F9B18>I<EA0FFE383FFF804813C0EA7803EA700100F013E0EAE000
AE1370A2EAF079387039C0EA783FEA7FFF6C1380380FFE00EA000FEB0780A2EB03C01301
A213227E9B18>I<EA7FF8EAFFFE6C7E381C0F80130314C01301A313031480130F381FFF
005BA2EA1C0F7FEB0380A5149CA3387F01F8EAFF81387F00F0161C7F9B18>I<3803F1C0
EA1FFF5AEA7C0FEA7003EAE001A390C7FC12701278123FEA1FF0EA07FEC67EEB0F80EB03
C01301EB00E0A2126012E0130100F013C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<
387FFFF8B5FCA238E07038A400001300B2EA07FFA3151C7F9B18>I<38FF83FEA3381C00
70B36C13E0EA0F01380783C03803FF806C1300EA007C171C809B18>I<38FE03F8EAFF07
EAFE03383C01E0001C13C0A3EA1E03000E1380A438070700A4EA038EA4EA018C13DCA3EA
00D813F8A21370151C7F9B18>I<38FE03F8A338700070A36C13E0A513F8EA39FC13DCA2
001913C0A3138CA2EA1D8DA31305000D1380EA0F07A2EA0E03151C7F9B18>I<387F0FE0
139F130F380E0700120FEA070E138EEA039C13DCEA01F8A212005B137013F07F487E13DC
EA039E138EEA070F7F000E13801303001E13C0387F07F000FF13F8007F13F0151C7F9B18
>I<38FE03F8EAFF07EAFE03381C01C0EA1E03000E1380EA0F0700071300A2EA038EA2EA
01DCA3EA00F8A21370A9EA01FC487E6C5A151C7F9B18>I<383FFFE05AA2387001C01303
EB07801400C65A131E131C133C5B137013F0485A5B1203485A90C7FC5A001E13E0121C12
3C5A1270B5FCA3131C7E9B18>I<EAFFF8A3EAE000B3ACEAFFF8A30D24779F18>I<126012
F0A27E1278127C123CA2123E121E121F7EA27F12077F1203A27F12017F12007F1378A213
7C133C133E131EA2131F7F14801307A2EB030011247D9F18>I<EAFFF8A3EA0038B3ACEA
FFF8A30D247F9F18>I<387FFFC0B512E0A26C13C013047E7F18>95
D<EA0FF0EA1FFC487EEA3C0FEA180738000380A213FF1207121FEA7F03127812E0A3EAF0
07EA780F383FFFF8EA1FFDEA07F015147E9318>97 D<127E12FE127E120EA5133EEBFF80
000F13C0EBC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFFC0000E13803806
3E00151C809B18>I<EA01FEEA07FF001F1380EA3E073838030048C7FCA25AA61270EB01
C01238EA3E03381FFF8000071300EA01FC12147D9318>I<EB1F80133F131F1303A5EA03
E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007A2EA380FEA3C1F381FFFF038
0FFBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA3E0F38380780EA7003A238E0
01C0A2B5FCA300E0C7FC1270EB01C01238EA3E07381FFF8000071300EA01F812147D9318
>I<EB1F80EB7FC0EBFFE013E13801C0C01400A3387FFFC0B5FCA23801C000AEEA7FFFA3
131C7F9B18>I<3801E1F03807FFF85A381E1E30381C0E00487EA5EA1C0EEA1E1EEA1FFC
5BEA39E00038C7FC7EEA1FFEEBFFC04813E0387801F038700070481338A4007813F0EA7E
03381FFFC06C13803801FC00151F7F9318>I<127E12FE127E120EA5133EEBFF80000F13
C013C1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC171C809B18>I<EA0380EA07C0
A3EA0380C7FCA4EA7FC012FF127F1201AEB5FCA3101D7C9C18>I<1338137CA313381300
A4EA0FFCA3EA001CB3A4EA6038EAF078EAFFF0EA7FE0EA3F800E277E9C18>I<127E12FE
127E120EA5EB3FF0A3EB0780EB0F00131E5B5B5BEA0FF87F139C130EEA0E0F7FEB038014
C0387FC7F812FF127F151C7F9B18>I<EAFFC0A31201B3A4B51280A3111C7D9B18>I<38F9
C1C038FFF7F013FF383E3E38EA3C3CA2EA3838AB38FE3E3EEB7E7EEB3E3E1714809318>
I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAB387FC7FC38FFE7FE387FC7FC17
14809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A238E000E0A5EAF0010070
13C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318>I<EA7E3E38FEFF8000
7F13C0380FC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFFC0000E1380EB3E
0090C7FCA7EA7FC0487E6C5A151E809318>I<3801F380EA07FBEA1FFFEA3E1FEA380FEA
7007A2EAE003A6EA7007A2EA380FEA3C1FEA1FFFEA0FFBEA03E3EA0003A7EB1FF0EB3FF8
EB1FF0151E7E9318>I<38FF0FC0EB3FE0EB7FF0EA07F0EBE060EBC0005BA290C7FCA9EA
FFFC7F5B14147E9318>I<EA07F7EA3FFF5AEA780FEAE007A3007CC7FCEA7FE0EA1FFCEA
03FEEA001F38600780EAE003A212F038F80F00B5FC13FCEAE7F011147D9318>I<487E12
03A4387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C1380EB3E0013197F9818
>I<387E07E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C13FE3801FCFC17148093
18>I<387F8FF000FF13F8007F13F0381C01C0380E0380A338070700A3138FEA038EA3EA
01DCA3EA00F8A2137015147F9318>I<38FF07F8138F1307383800E0A4381C01C0137113
F9A213D9EA1DDD000D1380A3138DEA0F8FA23807070015147F9318>I<387F8FF0139F13
8F380F0700EA078EEA039EEA01DC13F81200137013F07FEA01DCEA039E138EEA0707000E
1380387F8FF000FF13F8007F13F015147F9318>I<387F8FF000FF13F8007F13F0380E01
C0EB0380A21207EB0700A2EA0387A2138EEA01CEA213CC120013DC1378A31370A313F05B
1279EA7BC0EA7F806CC7FC121E151E7F9318>I<383FFFF05AA2387001E0EB03C0EB0780
38000F00131E5B13F8485AEA03C0485A380F0070121E5A5AB512F0A314147F9318>I<EB
07E0131F137FEB780013E0AB1201EA7FC0485AA26C7EEA01E01200AB1378EB7FE0131F13
0713247E9F18>I<126012F0B3B012600424769F18>I<127CB4FC13C01203C67EAB7FEB7F
C0EB3FE0A2EB7FC0EBF0005BABEA03C012FF90C7FC127C13247E9F18>I
E /Fe 47 122 df<3801F1C0120312071301120EA7EAFFF1A2EA0E01B0121D809C16>13
D<130113031306A3130CA31318A31330A31360A213C0A3EA0180A3EA0300A31206A25AA3
5AA35AA35AA35AA210297E9E15>47 D<EA07C0EA1FF0EA3878EA701CEA601EEAE00EEAC0
0F124013071200A2130F130E131E131C133C137813F0EA01E013C0EA0380EA0700120E5A
5A5AB5FCA2101C7E9B15>50 D<131C133EA2132E1367A2EBE78013C713C300017F138313
8100037F1301486C7EA21206000E1378380FFFF8A2381C003CA2121800387FA248131F80
126000E0EB0780191D7F9C1C>65 D<EAFFF813FF38F00F80EB03C0EB01E0EB00F0A5EB01
E0EB07C0B51280EBFE00EBFF8038F01FC0EB03E0EB01F013001478A514F0EB01E0EB07C0
B51280EBFC00151D7C9C1C>I<EB3FC03801FFF8EA03C03807801848C7FC121E5AA25AA3
5AA91278A37EA27E6C1308380780183803C0783801FFF038003F80151F7D9D1B>I<EAFF
FC13FF38F00F80EB03E01301EB00F014781438143CA2141C141EA8143CA3147814F0A2EB
03E0EB0FC0B5120013FC171D7C9C1E>I<B512C0A200F0C7FCABB51280A200F0C7FCACB5
12C0A2121D7C9C19>I<B51280A200F0C7FCABB5FCA200F0C7FCAE111D7C9C18>I<EB3FC0
EBFFF83803E07C3807801C380F000C001E1300121C123C12381278A25AA6EB03FCA2EB00
1C1278A21238123C121C121E7EEA07803803E07C3800FFF8EB3FC0161F7E9D1C>I<00F0
13F0ADB5FCA2EAF000AE141D7C9C1D>I<12F0B3AB041D7C9C0C>I<00F0133C147814F0EB
01E0EB03C0EB0780EB0F00131E5B5B5B5BEAF1F012F3EAF778EAFE7CEAFC3C7FEAF81F48
7E14801307EB03C014E01301EB00F0A21478147C161D7C9C1D>75
D<12F0B3A9B5FCA2101D7D9C16>I<00FCEB07E0A300EE130DA300E71319A3EB803900E3
1331EBC071A200E11361A2EBE0E1A200E013C113F1EB7181A3EB3B01A3131EA313001B1D
7C9C24>I<00FC1370A27E12EE12EF12E7A2138012E313C0A2EAE1E0A212E013F0137013
78A2133CA2131C131E130EA2130F130714F01303A2141D7C9C1D>I<133F3801FFE0487F
3807C0F8380F807C381E001E003E131F003C7F48EB0780A348EB03C0A86C130700781480
A2007C130F003C1400003E5B6C133E6C6C5A6C6C5A6CB45A6C5BD8003FC7FC1A1F7E9D1F
>I<EAFFFC13FF38F00F80EB03C0EB01E0EB00F0A6EB01E01303EB0FC0B51280EBFE0000
F0C7FCAD141D7C9C1B>I<133F3801FFE0487F3807C0F8380F807C48487E003E7F003C7F
48EB0780A348EB03C0A90078EB0780A2130E393C0F0F00383E079F381E03DE380F83FC6C
6C5A6CB45A6C7F38003F78EB003C143E80EC0F801A237E9D1F>I<EAFFF813FF38F00F80
EB03C0EB01E0EB00F0A5EB01E01303EB0FC0B51280140013F8EAF03C131C131E7FA2EB07
80A2EB03C0A2EB01E0EB00F0A21478151D7C9C1B>I<EA03F8EA0FFEEA1C0F487E487E00
60C7FC12E0A47E1278127FEA3FE0EA1FFCEA07FEEA01FF38001F801307EB03C0A21301A4
00C01380EAE00338F00700EA7C0EEA1FFCEA07F0121F7E9D17>I<B61280A2D8001EC7FC
B3A9191D7F9C1C>I<00F01370B3A5007813E0A2383C01C0381E0380EA0F073807FE00EA
01F8141E7C9C1D>I<00F0EB0380A2007814005CA26C130EA2123E001E5BA26C5BA36C6C
5AA23803C06014E0A26C6C5A13E1A23800F18013F30173C7FCA2137B133EA2131C191D7F
9C1C>I<00F001F81370A3007801B81360D9019C13E0A3D83C03EB01C0141E140E001E15
809038070F0313061407000F1500010E1387130C0007EB0386A2019C138E019813CE0003
EB01CCA339019000C801D013D801F013F85B00001470241D7F9C27>I<00F8130E007C13
1E003C5B6C13386C13785C380781E03803C1C0EA01C3EBE780D800F7C7FC137E133E133C
A2137E1377EBE780EA01E33803C1C0EB81E048C67E487F000E1378487F003C133E487F00
707F00F01480191D7F9C1C>I<00F8EB01E0007C14C06CEB0380001E1307001F1400380F
800E0007131EEBC01C3803E03C000113386D5A000013F0EB78E0EB7DC0133F6D5A91C7FC
7FAC1B1D809C1C>I<EA0FC0EA3FF0EA7FF8EA7038EA401C1200A213FC120F123FEA781C
12E0A3EAF07CEA7FFC13DCEA3F1C0E127E9114>97 D<12E0ABEAE3E0EAEFF8EAFFFCEAF8
3EEAE01E130E1307A6130EEAF01EEAF83CEAFFF8EAEFF0EAE3E0101D7D9C15>I<EA03F0
EA0FFCEA1FFEEA3C0EEA7802EA70005AA61270EA7802EA3C0EEA1FFEEA0FFCEA03F00F12
7F9112>I<1307ABEA07C7EA1FF7EA3FFFEA3C1FEA7807127012E0A61270EA780FEA3C1F
EA3FFFEA1FF7EA07C7101D7F9C15>I<EA07E0EA0FF0EA3FF8EA3C3CEA700C130EEAFFFE
A3EAE000A31270EA7802EA3C0EEA1FFEEA0FFCEA03F00F127F9112>I<13FC12011203EA
0700120EA7EAFFE0A2EA0E00B00E1D809C0D>I<3807C3C0EA0FFF5A38383800487EA56C
5AEA3FF05BEA77C00070C7FCA2EA3FFC13FF481380EA700738E001C0A3EAF003387C0F80
383FFF006C5AEA07F8121B7F9115>I<12E0ABEAE3E0EAEFF0EAFFF8EAF83CEAF01C12E0
AD0E1D7D9C15>I<12F0A41200A71270B2041D7E9C0A>I<12E0B3AB031D7D9C0A>108
D<38E3F03F39EFF8FF80D8FFFD13C039F81F81E038F00F00EAE00EAD1B127D9122>I<EA
E3E0EAEFF0EAFFF8EAF83CEAF01C12E0AD0E127D9115>I<EA03F0EA0FFC487EEA3C0F38
780780EA700338E001C0A5EAF00300701380EA7807383C0F00EA1FFE6C5AEA03F012127F
9115>I<EAE3E0EAEFF8EAFFFCEAF83EEAE01E130E1307A5130F130EEAF01EEAF87CEAFF
F8EAEFF0EAE3E0EAE000A8101A7D9115>I<EA07C7EA0FF7EA1FFFEA3E1FEA780FEA7007
12F012E0A51270EA780FEA3C1FEA3FFFEA1FF7EA07C7EA0007A8101A7F9115>I<EAE380
12E712EFEAFC005A5AA25AAB09127D910E>I<EA1FC0EA3FF0127FEAF030EAE000A27E12
7FEA3FC0EA1FE0EA01F0EA0038A21280EAF078EAFFF0EA7FE0EA1FC00D127F9110>I<12
1CA6EAFFE0A2EA1C00AC1320EA1FF0120FEA07C00C187F970F>I<EAE01CAE137CEAFFFC
EA7FDCEA3F1C0E127D9115>I<EAE007A2EA700EA21278EA381CA2121C1338120CEA0E30
13701206EA0760120313C01201A21380A2EA0300A25A12FE5A5A101A7F9113>121
D E /Ff 1 64 df<EA07F8EA1FFE38381F80EA780F00FC13C0A3127838301F8000001300
133E5B13705BA25BA690C7FCA4EA01C0487E487EA36C5A6C5A12207D9F19>63
D E /Fg 53 123 df<EAFFF8A30D03808C10>45 D<12F0A404047B830E>I<14801301A2
EB0300A31306A35BA35BA35BA35BA35BA3485AA448C7FCA31206A35AA35AA35AA35AA35A
A311317DA418>I<EA01F0EA07FC487EEA1F1F383C0780A2387803C0A3EA700100F013E0
AF387803C0A4383C0780A2381F1F00EA0FFE6C5AEA01F013237EA118>I<1340EA01C012
0712FFA212FB1203B3A7B5FCA310227CA118>I<EA03F0EA0FFC487EEA3C1F3830078038
7003C0126000E013E0EAC0011240A21200A3EB03C0A2EB0780A2EB0F00131E5B5B5B485A
5B485A48C7FC120E5A5A5AB512E0A313227EA118>I<EA03F0EA07FCEA1FFFEA3E0F3838
0780387003C01220A21200A3EB0780A2EB0F00133EEA03FC5B13FEEA000FEB0780EB03C0
A2EB01E0A5128038C003C012E038700780EA3C0F381FFF00EA0FFCEA03F013237EA118>
I<131FA2132FA2136F13EF13CF1201A2EA038FA21207130F120F120E121E123CA21278A2
12F0B512F8A338000F00A915217FA018>I<387FFF80A30078C7FCA9EA79F8EA7BFCEA7F
FFEB0F80EA7E07387C03C01278380001E0A7384003C0A212E038700780387C1F00EA3FFE
EA0FFCEA03F013227EA018>I<137E48B4FC5AEA07C148C7FC121EA25AA25AA213F8EAF1
FEEAF7FF38FF0F80EAFC0738F803C0A2130100F013E0A51270A21278EB03C01238003C13
80EA1C07381F0F00EA0FFE6C5AEA01F013237EA118>I<B512E0A3C7FCEB01C0EB038013
071400130E131E131C133C13381378A25BA25B1201A3485AA5485AA713217EA018>I<EA
01F0EA07FC487EEA1E0F383C0780A2387803C0A500381380EA3C07381E0F00EA0F1EEA07
FC6C5AEA0FFEEA1E0F383C0780387803C0A238F001E0A6387803C0A2383C0780EA3E0F38
1FFF00EA07FCEA01F013237EA118>I<EA01F0EA07FC487EEA1E0F487E00381380EA7803
14C012F0130114E0A6EA70031278A2EA3C07EA3E1FEA1FFDEA0FF13803E3C0EA0003A214
80130714005BEA201EEA383CEA7FF86C5AEA0FC013237EA118>I<EB0F80A2497EA2131D
EB3DE013391338EB78F0A2EB7070EBF078A213E000017FA213C000037FA2138000077FA2
90B5FC481480A2380E0007001EEB03C0A24814E01401A24814F01400A24814F81D237FA2
20>65 D<EB0FF0EB7FFC90B5FC3801F01F3807C00749C7FC48C8FC121E123E123CA25AA3
5AA91278A37EA2123E121E7E6C6C1380EBC0033801F00F6CB51200EB7FFCEB0FF019257D
A31F>67 D<EAFFFEEBFFC08038F003F0EB00F8147C80141E80A2EC0780A3EC03C0A91580
1407A3EC0F005C141E5C14F81303B512E05C49C7FC1A237BA223>I<B512F0A300F0C7FC
ACB512E0A300F0C7FCAEB512F8A315237BA21D>I<B512F0A300F0C7FCADB512C0A300F0
C7FCB014237BA21C>I<EB0FF0EB3FFE90B512803801F80F3803E003D80780C7FC48C8FC
121EA25AA25AA35AA6ECFFC0A300781303A37EA27EA27EEA0780EA03E03801F8076CB5FC
013F1300EB0FF81A257DA321>I<00F0131EAFB512FEA338F0001EB117237BA222>I<12F0
B3B104237CA20D>I<12F0B3AEB512C0A312237BA21A>76 D<00FC147E6C14FEA300F7EB
01DEA3EB800300F3149EA2EBC007A200F1141EA2EBE00F00F0130EA2EBF01EA2EB701CEB
783CA2EB3838EB3C78A2EB1C70A2EB1EF0EB0EE0A2130FEB07C0A390C7FC1F237BA22A>
I<EAFFFEEBFF8014C038F003E0EB00F01478A2143CA61478A214F0EB03E0B512C01480EB
FE0000F0C7FCAF16237BA21F>80 D<EAFFFCEBFF8014C038F003E0EB00F014781438143C
A51438147814F0EB03E0B512C01480EBFE00EAF01E7FA2EB0780130314C0EB01E0A2EB00
F0A21478A2143C141EA2140F18237BA21F>82 D<13FF000313C04813F0EA1F81381E0070
481300A25AA5127C123C123FEA1FC0EA0FFC6CB4FC0001138038003FC0EB07E0EB01F013
0014F81478A600C013F07E38F801E0387E07C0383FFF80000F1300EA01FC15257EA31B>
I<B612F0A3D8000FC7FCB3AE1C237EA221>I<00F0133CB3A900781378A36C13F0381E01
E0EA1F87380FFFC000031300EA00FC16247BA221>I<EA07F0EA3FFC487EEA781FEA400F
38000780A4137FEA07FF121FEA3E07127812F0A3130FEA7C1FEA7FFFEA3FF7EA1F871116
7E9517>97 D<12F0AD13F8EAF3FEB5FC38FE0F80EAF80738F003C0A2EB01E0A7130314C0
A238F80780EAFE1F38F7FF00EAF3FCEAF1F813237DA219>I<EA01FCEA07FF481380EA1F
03EA3C0148C7FCA2127012F0A61278A36C1340381F03C0EA0FFF6C13803801FC0012167E
9516>I<EB01E0ADEA03E1EA0FF9EA1FFFEA3F07EA3C03EA7801A212F0A812781303123C
EA3E0FEA1FFDEA0FF9EA03E113237EA219>I<EA01F8EA07FE487E381F0780383C03C0EA
7801A2387000E0B5FCA300F0C7FCA312701278127C6C1340381F03C0EA0FFF6C13803800
FC0013167F9516>I<137FEA01FF5AEA07C013005AA8EAFFF8A3EA0F00B3102380A20F>I<
3803F078380FFFF85A383E1F00EA3C0F38780780A5383C0F00EA3E1FEA1FFE485AEA33F0
0070C7FCA21278EA3FFEEBFFC06C13E04813F0EA780138F000F81478A4007813F0383E03
E0381FFFC06C13803801FC0015217F9518>I<12F0ADEAF1F8EAF3FCEAF7FEEAFE1EEAF8
0FA212F0B010237CA219>I<12F0A41200A912F0B3A404237DA20B>I<12F0ADEB1F80EB3F
00133E5B5BEAF1F0EAF3E0EAF7C012FFA27FA2EAFDF0EAF8F8EAF078137C7F131E131F7F
1480EB07C012237CA218>107 D<12F0B3B104237DA20B>I<39F0F807C039F3FE1FF039F7
FF3FF839FE0F707800FCEBE07C39F807C03CA200F01380AF1E167C9527>I<EAF1F8EAF3
FCEAF7FEEAFE1EEAF80FA212F0B010167C9519>I<EA01FCEA07FF481380381F07C0383C
01E0387800F0A20070137000F01378A6007813F0A2EA7C01383E03E0381F07C0380FFF80
6C1300EA01FC15167F9518>I<EAF0F8EAF3FEB5FC38FE1F80EAF80738F003C0A214E013
01A6130314C0130700F81380EAFE1F38F7FF00EAF3FCEAF1F800F0C7FCAA13207D9519>
I<3803E1E0EA07F9EA1FFD130FEA3C03127CEA780112F812F0A612F812781303123CEA3F
0FEA1FFDEA0FF9EA03E1EA0001AA13207E9519>I<EAF0E012F312F7EAFF005A5A5AA25A
AE0B167C9511>I<EA07F0EA1FFCEA3FFEEA3C0EEA78061300A2127C123F13F0EA1FF8EA
0FFCEA01FEEA001F130FA312C0EAF81EEAFFFEEA3FFCEA0FF010167F9513>I<121EA6EA
FFFCA3EA1E00AE1308EA1F1CEA0FFC13F8EA07C00E1C7F9B12>I<EAF00FB1131FEAF83F
EA7FFF13CFEA1F0F10167C9519>I<38F001E0A212F8387803C0A2003C13801307A2001E
13005BA2EA0E0EEA0F1EA2EA071C139C13BCEA03B8A213F86C5AA213167F9516>I<39F0
07803CEB0FC0A2D8780D1378131D14E0131CD83C1813F0133814F0001C14E0001E137113
701479000EEB39C01360000F133B00071480141BEBC01FA2000314001E167F9521>I<00
7813F0387C01E0383E03C0EA1E07000F138038078F0013DEEA03FE6C5A6C5A137013F848
7EEA03DC139EEA078F380F0780121EEB03C0383C01E0387800F000F813F81516809516>
I<38F001E0A2387803C0A2127C383C0780A2121EEB0F00A2120F130E131E1207139C1203
139813B8120113F01200A25BA212015BA2485A1207007FC7FCA2127C13207F9516>I<38
7FFFC0A338000F801400131E133E5B13785B1201485A5B485A120F48C7FC121E5A127CB5
12C0A312167F9515>I E /Fh 1 16 df<EA03C0EA0FF0EA1FF8EA3FFCEA7FFEA2B5FCA4
EA7FFEA2EA3FFCEA1FF8EA0FF0EA03C010107E9115>15 D E /Fi
69 123 df<EB7E1F3901C1B180390303E3C0000713C3000EEBC180903801C000A6B512FC
380E01C0B0387F87FC1A1D809C18>11 D<137E3801C180EA0301380703C0120EEB018090
C7FCA5B512C0EA0E01B0387F87F8151D809C17>I<EB7FC0EA01C1EA03031207EA0E01A7
B5FCEA0E01B0387FCFF8151D809C17>I<90383F07E03901C09C18380380F0D80701133C
000E13E00100131892C7FCA5B612FC390E00E01CB03A7FC7FCFF80211D809C23>I<EA60
60EAF0F0EAF8F8EA6868EA0808A3EA1010A2EA2020EA4040EA80800D0C7F9C15>34
D<126012F012F812681208A31210A2122012401280050C7C9C0C>39
D<1380EA0100120212065AA25AA25AA35AA412E0AC1260A47EA37EA27EA27E12027EEA00
80092A7C9E10>I<7E12407E12307EA27EA27EA37EA41380AC1300A41206A35AA25AA25A
12205A5A092A7E9E10>I<1203A4EAC30CEAE31CEA7338EA1FE0EA0780A2EA1FE0EA7338
EAE31CEAC30CEA0300A40E127D9E15>I<126012F0A212701210A41220A212401280040C
7C830C>44 D<EAFFE0A20B0280890E>I<126012F0A2126004047C830C>I<130113031306
A3130CA31318A31330A31360A213C0A3EA0180A3EA0300A31206A25AA35AA35AA35AA35A
A210297E9E15>I<EA03C0EA0C30EA1818EA300CA2EA700EEA6006A2EAE007ADEA6006A2
EA700EEA300CA2EA1818EA0C30EA07E0101D7E9B15>I<5A1207123F12C71207B3A5EAFF
F80D1C7C9B15>I<EA07C0EA1830EA201CEA400C130EEAF00F12F81307A21270EA000F13
0EA2131CA213381370136013C0EA0180EA0300EA0601120C1218EA1002EA3FFE127F12FF
101C7E9B15>I<EA07E0EA1830EA201CA2EA781E130E131E1238EA001CA2131813301360
EA07C0EA0030131CA2130E130FA2127012F8A3EAF00EEA401C1220EA1830EA07C0101D7E
9B15>I<126012F0A212601200AA126012F0A2126004127C910C>58
D<126012F0A212601200AA126012F0A212701210A41220A212401280041A7C910C>I<00
7FB512C0B612E0C9FCA8B612E06C14C01B0C7E8F20>61 D<EA0FE0EA3038EA401CEAE00E
12F0A3EA000C131C1330136013C0138012011300A6C7FCA51203EA0780A2EA03000F1D7E
9C14>63 D<1306A3130FA3EB1780A2EB37C01323A2EB43E01341A2EB80F0A338010078A2
EBFFF83802003CA3487FA2000C131F80001E5BB4EBFFF01C1D7F9C1F>65
D<90381F8080EBE0613801801938070007000E13035A14015A00781300A2127000F01400
A8007014801278A212386CEB0100A26C13026C5B380180083800E030EB1FC0191E7E9C1E
>67 D<B512C0380F00F0143C140E80A2EC038015C01401A215E0A815C0A2140315801407
1500140E5C1470B512C01B1C7E9B20>I<B512FC380F003C140C1404A214061402A21301
1400A35B13FF13037FA3140113001402A31406A2140C143CB512FC181C7E9B1C>I<B512
F8380F007814181408A2140C1404A213011400A35B13FF13037FA490C7FCA8EAFFF8161C
7E9B1B>I<90381F8080EBE0613801801938070007000E13035A14015A00781300A21270
00F01400A6ECFFF0EC0F80007013071278A212387EA27E6C130B380180113800E0609038
1F80001C1E7E9C21>I<39FFF0FFF0390F000F00AC90B5FCEB000FAD39FFF0FFF01C1C7F
9B1F>I<EAFFF0EA0F00B3A8EAFFF00C1C7F9B0F>I<3807FF8038007C00133CB3127012F8
A21338EA7078EA4070EA30E0EA0F80111D7F9B15>I<EAFFF8EA0F8090C7FCB01408A314
18A2141014301470EB01F0B5FC151C7E9B1A>76 D<B46CEBFF80000FECF800A2390BC001
78A33809E002A23808F004A3EB7808A3EB3C10A3EB1E20A3EB0F40A2EB0780A3EB030012
1C3AFF8307FF80211C7E9B26>I<B4EB1FF0390F8003809038C00100120BEA09E0EA08F0
A21378133C133E131E130F14811307EB03C1EB01E114F113001479147D143D141FA28080
80121CB46C7E1C1C7F9B1F>I<EB3F80EBE0E03803803848487E000E7F487F003C148000
381303007814C0A20070130100F014E0A8007014C000781303A200381480003C1307001C
14006C130E6C5B6C6C5A3800E0E0EB3F801B1E7E9C20>I<B51280380F00E01478143C14
1C141EA5141C143C147814E0EBFF8090C7FCACEAFFF0171C7E9B1C>I<EB3F80EBE0E038
03803848487E000E7F487F003C148000381303007814C0A20070130100F014E0A8007014
C000781303A200381480383C0E07D81C111300380E208E0007135C3803A0783900F0E020
133FEB0060EC3060EC38E0EC3FC0A2EC1F80EC0F001B257E9C20>I<B5FC380F01E0EB00
7880141C141EA4141C143C5CEB01E001FFC7FCEB01E0EB0070147880A61510A2141CA239
FFF00E20C7EA03C01C1D7E9B1F>I<3807E080EA1C19EA30051303EA600112E01300A36C
13007E127CEA7FC0EA3FF8EA1FFEEA07FFC61380130FEB07C0130313011280A300C01380
A238E00300EAD002EACC0CEA83F8121E7E9C17>I<007FB512C038700F01006013000040
1440A200C014201280A300001400B1497E3803FFFC1B1C7F9B1E>I<39FFF01FF0390F00
0380EC0100B3A26C1302138000035BEA01C03800E018EB7060EB0F801C1D7F9B1F>I<39
FFE00FF0391F0003C0EC01806C1400A238078002A213C000035BA2EBE00C00011308A26C
6C5AA213F8EB7820A26D5AA36D5AA2131F6DC7FCA21306A31C1D7F9B1F>I<3AFFE1FFC0
FF3A1F003E003C001E013C13186C6D1310A32607801F1320A33A03C0278040A33A01E043
C080A33A00F081E100A39038F900F3017913F2A2017E137E013E137CA2013C133C011C13
38A20118131801081310281D7F9B2B>I<39FFF003FC390F8001E00007EB00C06D138000
03EB01006D5A000113026C6C5A13F8EB7808EB7C18EB3C10EB3E20131F6D5A14C06D5AAB
EB7FF81E1C809B1F>89 D<EA1FC0EA3070EA78387F12301200A2EA01FCEA0F1C12381270
126000E01340A3EA603C38304E80381F870012127E9115>97 D<12FC121CAA137CEA1D87
381E0180381C00C014E014601470A6146014E014C0381E018038190700EA10FC141D7F9C
17>I<EA03F8EA0C0CEA181E1230EA700CEA600012E0A61260EA70021230EA1804EA0C18
EA03E00F127F9112>I<EB1F801303AAEA03F3EA0E0BEA1807EA30031270126012E0A612
6012701230EA1807EA0E1B3803E3F0141D7F9C17>I<EA07E0EA0C30EA1818EA300CEA70
0EEA600612E0EAFFFEEAE000A41260EA70021230EA1804EA0C18EA03E00F127F9112>I<
13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA0E00B0EA7FE00F1D809C0D>I<EB0380
3807C4C0EA1C783838388038301800EA701CA4EA3018EA38386C5AEA27C00020C7FCA212
30EA3FF86CB4FC1480EA2003386001C0EAC000A33860018038300300EA1C0EEA07F8121C
7F9215>I<12FC121CAA137C1387EA1D03001E1380121CAD38FF9FF0141D7F9C17>I<1218
123CA21218C7FCA712FC121CB0EAFF80091D7F9C0C>I<13C0EA01E0A2EA00C01300A7EA
07E01200B3A21260EAF0C012F1EA6180EA3E000B25839C0D>I<12FC121CAAEB0FE0EB07
80EB06005B13105B5B13E0121DEA1E70EA1C781338133C131C7F130F148038FF9FE0131D
7F9C16>I<12FC121CB3A9EAFF80091D7F9C0C>I<39FC7E07E0391C838838391D01901800
1EEBE01C001C13C0AD3AFF8FF8FF8021127F9124>I<EAFC7CEA1C87EA1D03001E138012
1CAD38FF9FF014127F9117>I<EA03F0EA0E1CEA1806487E00701380EA600100E013C0A6
00601380EA700300301300EA1806EA0E1CEA03F012127F9115>I<EAFC7CEA1D87381E01
80001C13C0EB00E0A21470A614E0A2EB01C0001E1380381D0700EA1CFC90C7FCA7B47E14
1A7F9117>I<3803E080EA0E19EA1805EA3807EA7003A212E0A61270A2EA38071218EA0E
1BEA03E3EA0003A7EB1FF0141A7F9116>I<EAFCE0EA1D38EA1E78A2EA1C301300ACEAFF
C00D127F9110>I<EA1F90EA2070EA4030EAC010A212E0EAF800EA7F80EA3FE0EA0FF0EA
00F8EA8038131812C0A2EAE010EAD060EA8FC00D127F9110>I<1204A4120CA2121C123C
EAFFE0EA1C00A91310A5120CEA0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD130712
0CEA0E1B3803E3F014127F9117>I<38FF07E0383C0380381C0100A2EA0E02A2EA0F06EA
0704A2EA0388A213C8EA01D0A2EA00E0A3134013127F9116>I<39FF3FC7E0393C0703C0
001CEB01801500130B000E1382A21311000713C4A213203803A0E8A2EBC06800011370A2
EB8030000013201B127F911E>I<38FF0FE0381E0700EA1C06EA0E046C5AEA039013B0EA
01E012007F12011338EA021C1204EA0C0E487E003C138038FE1FF014127F9116>I<38FF
07E0383C0380381C0100A2EA0E02A2EA0F06EA0704A2EA0388A213C8EA01D0A2EA00E0A3
1340A25BA212F000F1C7FC12F312661238131A7F9116>I<EA7FFCEA70381260EA407013
F013E0EA41C012031380EA0700EA0F04120E121CEA3C0CEA380812701338EAFFF80E127F
9112>I E /Fj 10 118 df<127812FCA412781200A6127812FCA4127806127D910D>58
D<B512F814FF390FC01FC0EC07E0EC01F015F8140015FC157CA2157EA8157CA315F8A2EC
01F0EC07E0EC1FC0B6120014F81F1C7E9B25>68 D<D8FFC0EB03FF6D5B000F15F0D80DF0
130DA3D80CF81319A2017C1331A26D1361A26D13C1A390380F8181A2903807C301A2EB03
E6A2EB01FCA3EB00F8A23AFFC0701FFFA2281C7E9B2D>77 D<EA03FCEA0E0EEA1C1F123C
1278130E00F8C7FCA61278EB0180123C381C0300EA0E0EEA03F811127E9115>99
D<3803F0F0380E1F38EA3C0F3838073000781380A400381300EA3C0FEA1E1CEA33F00030
C7FCA3EA3FFF14C06C13E014F0387801F838F00078A300701370007813F0381E03C03807
FF00151B7F9118>103 D<121E123FA4121EC7FCA6127FA2121FAEEAFFC0A20A1E7F9D0E>
105 D<38FF0FC0EB31E0381F40F0EB80F8A21300AB38FFE7FFA218127F911B>110
D<EA01FC380F0780381C01C0003C13E0387800F0A200F813F8A6007813F0A2383C01E038
1E03C0380F07803801FC0015127F9118>I<EA1FD8EA3078EA601812E0A2EAF000EAFF80
EA7FE013F0EA1FF8EA07FCEA007CEAC01CA212E01318EAF830EACFC00E127E9113>115
D<38FF07F8A2EA1F00AC1301120F380786FFEA01F818127F911B>117
D E /Fk 29 91 df<1230127812F81278127005057C840D>46 D<EB3F80EBC1E0380100
70000213785AA2000F137C1380A2EB00781206C712F814F0EB01E014C0EB0380EB070013
0E5B5B13605B485A380300201206000813405A383FFFC0481380B5FC161E7E9D17>50
D<1460A214E0EB01C013031305130D13091311EB2380134313C31383EA01031202380407
0012081218121012201240B512F038000E00A55B131E3801FFC0141E7E9D17>52
D<380180303803FFE014C0140013FC0002C7FCA25AA4137CEA0587380A0380EA0C010008
13C0120014E0A4387003C012F812F000E01380EA800700401300130E6C5AEA1070EA0FC0
141F7D9D17>I<EB1F80EB7040EBC020380180E0EA03011207380E00C0001E1300121C12
3C1238EA78F8EA790EEA7A07EA7C0300F81380A200F013C0A4EB078012E0A214005BEA60
0EEA701CEA3018EA1870EA07C0131F7C9D17>I<1220383FFFF04813E014C03840008038
C0010012801302485A5B5B5BA25B13C0485AA2120390C7FC5AA25A120EA2121EA35AA312
18141F7A9D17>I<137EEA01C338030180000613C0120EEA1C00003C13E0A213011278A4
1303A2003813C01307EA1C0BEA0C133803E380EA0007A214005BEA600EEAF01C1318485A
EA8060EA41C0003FC7FC131F7C9D17>57 D<120E121FA2121E120C1200AA1230127812F8
1278127008147C930D>I<1408140C141C143CA2147C147E149EA2EB011EA21302801304
A21308A20110138014071320A2EB7FFF90384007C0EB8003A2EA0100A21202EC01E01206
001F130339FF801FFE1F207F9F22>65 D<ECFE02903807018690381C004E0170133E4913
1E4848131C4848130C120748C7FC5A121E003E1408003C1400127CA45AA4127815101520
A27E1540001C14806CEB01006C13023803800C3800E030EB3FC01F217C9F21>67
D<0007B57E3900F801E0903878007081497F151E150E150FA348481480A6484814005DA3
151E153E4848133C5DA25D4A5A4A5A260F000FC7FC143CB512F0211F7E9E23>I<0007B5
12FC3900F8007C0178131C150C5B1504A414043901E00800A31438EBFFF8EBE0383803C0
10A4EC00081510485AA21520A2156015C0380F00011407B612801E1F7E9E1F>I<0007B5
12F83900F800780178133815185B1508A53901E00800A314181438EBFFF83803C0301410
A491C7FC485AA648C8FC7FEAFFFC1D1F7E9E1E>I<ECFE02903807018690381C004E0170
133E49131E4848131C4848130C120748C7FC5A121E003E1408003C1400127CA45AA2EC3F
FEEC01F000781300A2EC01E0A27EA2121C6C13036CEB05C0380380083900E0304090383F
C0001F217C9F24>I<3A07FF83FFC03A00F8007C000178133CA2495BA648485BA490B5FC
EBE0004848485AA64848485AA64848485A01807F39FFF07FF8221F7E9E22>I<3807FF80
3800F8001378A25BA6485AA6485AA6485AA648C7FC7FEAFFF0111F7E9E10>I<3807FFE0
D800FCC7FC1378A25BA6485AA6485AA41580EC0100EA0780A25C14021406140E380F001E
147CB512FC191F7E9E1C>76 D<D807F8EC7FE00000ED7C00017814BCA2019C495AA21502
A2018E13041508D8010E5C1510A26D1320A215400002EC41E09038038081EC8101A21482
A23A0401C403C0A214C8A2EB00F0000C13E04B5A001E01C07FD8FFC0EB7FFC2B1F7E9E2A
>I<D807F8EB7FC0D8007CEB1F00150C015E1304019E5B138FA2EB8780A2EB83C0D80103
5BEB01E0A2EB00F0A2147800025C143CA2141EA2140F485CEC07C0A21403A21401000C5C
001E1300B47E221F7E9E22>I<EB01FCEB0E0790383801C090387000E0484813F0484813
78485A153C48C7FC5A001E143E123E123C127CA448147CA3157815F81278EC01F0007C14
E01403003C14C0001CEB0780001EEB0F006C131E380780383801C0E038007F801F217C9F
23>I<0007B5FC3900F803C090387800F015785B157CA41578484813F815F0EC01E0EC03
C0EC0F00EBFFFCD803C0C7FCA6485AA648C8FC7FEAFFF81E1F7E9E1F>I<EB01FCEB0E07
90383803C090387001E03901E000F048481378485A153C48C7FC5A001E143E123E123C12
7CA448147CA3157815F8127815F0EC01E0EA7C0F393C1083C0391C204780001EEB4F0038
0F405E3807A0783901E0E010EA007F9038006030EC702015E0147F15C0EC3F80A2EC1E00
1F297C9F23>I<3807FFFE3900F8078090387801E0EC00F05B15F8A415F03801E00115E0
EC03C0EC0780EC1E00EBFFF03803C03880141E140EA2140F48485AA51502D80F001304EB
800F39FFF00788C7EA01F01F207E9E21>I<EB1F82EB7066EBC01E3801800EEA03004813
0C00061304120EA3000F1300A27FEA07F013FF6C13C06C13E038003FF0EB03F813001478
143CA200401338A3143000601370146000F013C038E8018038C60300EA81FC17217E9F19
>I<003FB512F0383C078000301430126039400F0010A212C01280A3D8001E1300A65BA6
5BA65B7F383FFFE01C1F7A9E21>I<39FFF00FF8391F0003E06CEB01801400001EEB0100
A6481302A6485BA600705BA25CA200785B1238001813C06C48C7FCEA0706EA01F81D2079
9E22>I<3A03FFC0FFC03A007F003E00013C1318013E1310011E5B011F5B6D5B0281C7FC
EB078314C2EB03C414E8EB01F0A2130080A2EB017CEB023CEB043EEB0C1EEB081F497E13
2001407FEB8007000180EB0003000780391F8007F039FFC01FFE221F7F9E22>88
D<39FFF001FF391F8000786CC712606D134000071480EBC00100031400EBE0025C12016D
5A00005B6D5A1378EB7C40EB3C80013FC7FC7F131EA3131C133CA513381378137C3807FF
80201F7A9E22>I<0003B512F09038F001E0EB8003010013C00006EB0780EC0F00000413
1E143E143C5CC75A495A13035C495A49C7FC131E133E133C4913805B3901E00100120313
C048485A380F0002001E1306003E130E003C131E4813FCB5FC1C1F7E9E1C>I
E /Fl 64 123 df<14F013F8120112033807800090C7FC5AA738FFF8F0A3EA0F00B11421
80A018>12 D<EBF8F012011203EA078013005AA7EAFFF8A3EA0F00B11420809F18>I<13
E0EA01C0EA0380120713005A121EA2121C123CA212381278A3127012F0AE12701278A312
38123CA2121C121EA27E7E13801203EA01C0EA00E00B2E7CA112>40
D<12E012707E123C121C121E7EA27E1380A2120313C0A3120113E0AE13C01203A3138012
07A213005AA2121E121C123C12385A5A0B2E7EA112>I<1278A412181230A21260A212E0
050A7D830D>44 D<EAFFF0A30C03808B0F>I<12F0A404047C830D>I<144014C0EB0180A3
EB0300A31306A25BA35BA35BA25BA35BA3485AA348C7FCA21206A35AA35AA25AA35AA35A
A2122D7EA117>I<EA03F0487EEA1FFEEA1E1E487EEA380700781380A2EA700300F013C0
AE38780780A300381300EA3C0FEA1E1EEA1FFE6C5AEA03F012207E9E17>I<13C0120112
0712FFA212FB1203B3A4EAFFFEA30F1F7C9E17>I<EA03F0EA0FFC487EEA383FEA700F38
60078012E0EB03C01240A21200A3EB0780A2EB0F00130E5B133C5B13E0485A485A48C7FC
120E5A5A5AB512C0A3121F7E9E17>I<12F0A41200AC12F0A404147C930D>58
D<B612FCA2C9FCA8B612FCA21E0C7E9023>61 D<131FA2497E133BA2EB7BC013731371EB
F1E013E113E000017FA213C000031378A2138000077FA21300380FFFFEA2487F381E000F
A24814801407A24814C01403A248EB01E01B207F9F1E>65 D<EAFFFCEBFF8014C038F007
E0EB01F013001478A514F0EB01E0EB0FC0B51280A214E038F003F0EB00F8143C141C141E
A5143C14FCEB03F8B512F014C0EBFE0017207C9F1E>I<EB1FC0EBFFF84813FC3803E03C
3807800C48C7FC121E123E123C127C1278A35AA81278A3127C123C123E121E6C13023807
800E3803E03E3801FFFC6C13F0EB1FC017227DA01D>I<B5FC14C08038F003F8EB00FC14
3E141E80A2EC0780A3EC03C0A815801407A2EC0F00A2141E143E5CEB03F8B55A14C091C7
FC1A207C9F21>I<B512F0A300F0C7FCABB512C0A300F0C7FCACB512F0A314207C9F1B>I<
B512E0A300F0C7FCABB51280A300F0C7FCAF13207C9F1A>I<EB1FE0EBFFF84813FE3803
E03E3807800E48C7FC121E123E123C5AA35AA7EB03FEA33878001EA37E123E121E7EEA07
803803E03E3801FFFE6C13F8EB1FC017227DA01E>I<00F0131EAEB512FEA338F0001EAF
17207C9F20>I<12F0B3AE04207C9F0D>I<00F0EB1F801500143E5C5C495A495A495A495A
49C7FC133E5B5B12F1EAF3FC12F7EAFF9E131F487E486C7E00F87FEAF0038013016D7E80
147880143E141E80158019207C9F20>75 D<12F0B3ABB512C0A312207C9F19>I<00F814
7E6C14FEA200F414DE00F61301A300F3EB039EA2EB8007A200F1141EEBC00FA200F0130E
EBE01EA2EB601CEB703CA2EB3038EB3878A2EB1870EB1CF0A2EB0CE0A2EB07C0A390C7FC
1F207C9F28>I<00FC131E7EA212F7A2138012F3A2EAF1C0A213E012F013F013701378A2
133CA2131C131E130E130F1307A2EB039EA214DE1301A2EB00FEA2147E17207C9F20>I<
EB1F80EBFFF0487F3803E07C3807801E48487E001EEB078048EB03C0A248EB01E0A30070
130000F014F0A86C1301007814E0A2007C1303003C14C0003E1307001E14806CEB0F00EB
C03F3807E07E3801FFF86C5BEB1F801C227EA021>I<EAFFFEEBFF8014E038F003F01300
14781438143CA51438147814F01303B512E01480EBFE0000F0C7FCAD16207C9F1D>I<EB
1F80EBFFF0487F3803E07C3807801E48487E001EEB0780003E14C0003C130348EB01E0A3
0070130000F014F0A90078EB01E0A2130F393C0783C0003E13C7D81E031380390F01EF00
EB81FF3807E0FE3801FFF86C7FEB1FBCEB003E80801580EC07C01C277EA021>I<EAFFFE
EBFF8014E038F003F0EB00F81478143CA5147814F8EB03F0B512E01480EBFE00EAF01E13
0E130FEB0780A2EB03C0A2EB01E0A2EB00F014701478143CA2141E17207C9F1D>I<EA01
FC3807FF80001F13C0EA3E03EA7C00007813005AA57E127C127EEA3FE0EA1FFCEA07FF00
01138038003FC0EB07E01303EB01F01300A5EB01E012C038F003C0EAFC0F387FFF80381F
FE00EA03F814227EA019>I<B612C0A3D8001EC7FCB3AB1A207E9F1F>I<00F0133CB3A700
781378A26C13F0EA3E01381F03E0380FFFC000031300EA00FC16217C9F1F>I<00F0EB01
E0A2007814C01403A26CEB0780A36CEB0F00A36C131EA2138000075BA23803C0381478A2
3801E07014F0A26C6C5A13F1A2EB71C0137BEB3B80A2133F6DC7FCA21B207F9F1E>I<00
F0017C130F147EA20078016E130E02EE131E14E7A26C153C0101138014C714C3001E1578
010313C01483000E01811370000F15F0010713E014010007010013E0018713E1018F13F1
138E0003EC71C0A201CE1373D801DCEB7B80153BA213D8D800F8EB1F00A328207F9F2B>
I<0078EB0780007C130F6CEB1F00001E131E001F133E6C6C5A000713786C6C5A13E13801
F1E03800F3C0137F5C6DC7FC7F131E133F80497E13F33801F1E0EBE0F048487E00071378
497E380F003E48131E001E7F481480007CEB07C0007813034814E01B207F9F1E>I<00F8
14F8007CEB01F0003C14E0003E13036C14C06CEB0780EB800FD807C0130000035BEBE01E
6C6C5A0000137CEB78785C133CEB1CE0131F6D5A6D5AAE1D20809F1E>I<387FFFFEA3C7
127C147814F8EB01F014E0130314C0EB0780130F1400131E133E133C5B13F85B485A1203
5B485A120F90C7FC5A123E123C127CB512FEA317207E9F1C>I<EAFF80A3EAF000B3B3A3
EAFF80A3092D7DA10D>I<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<387801E0387C03C0383E0780EA1E
0F000F1300EA079EEA03FC5B12016C5A12017F487EEA079EEA0F0F120E381E0780383C03
C0387801E000F813F01414809315>120 D<38F003C0A238780780A2127C383C0F00A212
1E131EA2EA0F1CA2EA073C133813B8120313B0EA01F05B1200A2485AA212035B1207B4C7
FC5A5A121D7F9315>I<EA7FFFA3EA003E133C137813F813F0EA01E01203EA07C01380EA
0F005A121E5A127CB5FCA310147F9314>I E /Fm 16 122 df<12041208121012301220
1260A2124012C0AA12401260A212201230121012081204061A7D920C>40
D<128012401220123012101218A21208120CAA12081218A212101230122012401280061A
7F920C>I<121FEA3180EA60C0EA4040EAC060A8EA4040EA60C0EA3180EA1F000B107F8F
0F>48 D<1218127812981218AC12FF08107D8F0F>I<121FEA6180EA40C0EA806012C012
00A213C0EA0180EA030012065AEA10201220EA7FC012FF0B107F8F0F>I<121FEA2180EA
60C0A212001380EA0100121FEA00801340136012C0A2EA8040EA6080EA1F000B107F8F0F
>I<EA0180A212031205120D121912111221124112C1EAFFE0EA0180A4EA0FE00B107F8F
0F>I<EA20C0EA3F80EA2E001220A3122FEA3080EA2040EA0060A312C0EA80C0EA6180EA
1F000B107F8F0F>I<EA0780EA1840EA30C0126013005A12CFEAF080EAE040EAC060A312
40EA60C0EA3080EA1F000B107F8F0F>I<1240EA7FF013E0EA8040A2EA0080EA01001202
A212061204A2120CA50C117F900F>I<121FEA3180EA60C0A3EA3180EA3F00120EEA3380
EA61C0EAC060A31340EA60C0EA1F000B107F8F0F>I<121FEA3180EA60C0EAC0401360A3
EA40E01221EA1E6012001340EA60C01380EA6300121E0B107F8F0F>I<EA0FE0EA0180AC
12C1A2EA4300123E0B117E9010>74 D<12F01230AF12FC0611809008>108
D<EAF1E0EA3060A813E0EA0F780D0B7F8A11>117 D<EAF8F0EA7060EA3040A2EA1880A2
EA0D00A37EA21204A212C812D812700C107F8A10>121 D E /Fn
9 107 df<B612C0A21A027C8B23>0 D<EA03F0EA0FFC487E487E481380A2B512C0A66C13
80A26C13006C5A6C5AEA03F012127E9317>15 D<15C01403EC0F00143C14F0EB03C049C7
FC131C1378EA01E0EA0780001EC8FC127812E01278121EEA0780EA01E0EA0078131C1307
EB03C0EB00F0143C140FEC03C014001500A7007FB51280B612C01A247C9C23>20
D<140CA21418A21430A21460A214C0A2EB0180A3EB0300A21306A25BA25BA25BA25BA25B
A2485AA248C7FCA21206A35AA25AA25AA25AA25A1240162C7AA000>54
D<B612F8A2D80006C7FCB3A913021D1E7D9D23>62 D<13021306B3A9B612F8A21D1E7D9D
23>I<130F1338136013E0EA01C0AFEA0380EA0700121E12F8121E1207EA0380EA01C0AF
EA00E013601338130F102D7DA117>102 D<12F8121E1207EA0380EA01C0AFEA00E01360
1338130F1338136013E0EA01C0AFEA0380EA0700121E12F8102D7DA117>I<12C0B3B3A9
022D7BA10D>106 D E /Fo 49 123 df<12F8A505057B8410>46
D<13301370EA01F0120F12FFA212F11201B3ACB512E0A313287BA71D>49
D<13FE3803FF80000F13C04813E0EB07F0383C01F8387800FC147C127000F0133EA21260
1220C7FCA3147CA2147814F8EB01F014E01303EB07C0EB0F80EB1F00133E5B5B485A485A
5B485A48C7FC121E5A387FFFFEA417287EA71D>I<137E3803FF804813E0001F13F0383F
83F8EA3E0048137C123812301210C7FCA214F8A21301EB03F0EB0FE03801FFC0148014C0
14E0380001F8EB00FC147C143EA2141FA57E6C133E7E6C137E007C13FC383F01F8381FFF
F06C13E0000313C03800FE0018297EA71D>I<EB07E0130F130B131BA2133BA21373A213
F3A2EA01E3A2120313C31207EA0F83A2EA1F03A2123EA2127CA212F8B6FCA4380003E0AA
18277EA61D>I<383FFFF8A4003EC7FCAA133EEBFF80003F13E014F013C1EB00F8147C12
3EC7FC143EA712400060137C12E06C13F8EA7801387F07F0383FFFE0000F13C06C1300EA
01FC17287EA61D>I<EB0FE0EB3FF813FF5A3803F0183807E000EA0F8090C7FC5A123EA2
123C127C1302EB3FC038F8FFE000F913F000FB13F838FF80FC38FE007C143E5A143F141F
5AA41278127CA2141E003C133E123E001E137C001F13FC380FC1F83807FFF06C13E06C13
8038007E0018297EA71D>I<B6FCA4C7120F141E143C147814F814F0EB01E0130314C0EB
0780130F14005B131E133EA2133C137CA25BA35B1201A5485AA718277EA61D>I<137E38
03FFC04813E04813F0381F81F8383F00FC003E137C007E137E007C133EA56C137CA26C13
F8380FC3F03807FFE06C13C0A2000F13F0381F81F8383F00FC003E137C48133EA248131F
A6007C133EA2007E137E6C13FC381F81F8380FFFF06C13E06C13C038007E0018297EA71D
>I<137E3801FF80000713C04813E0381F83F0EB00F8003E137848137C143C0078133E12
F8A2141E141FA4143F7E127C147F7E383F01FF381FFFDF6C139F6C131F3803FC1E380040
3E1300A2147CA214F8A2EB01F0381803E0381E0FC0383FFF806C13006C5AEA03F818297E
A71D>I<12F8A51200B112F8A5051B7B9A10>I<EB03F0A2497EA21478497EA3EB1E3E141E
A2EB3E1F133C90387C0F80A213789038F807C0A213F000016D7EA213E000036D7EA213C0
00076D7E90B5FCA24880903880007C90C7FC4880A2121E003E80A2123C007CEC0F80A248
15C01507A2222A7EA927>65 D<EB03FF010F13E0013F13F890B5FC3801FE013903F80070
D807E01310491300485A121F90C8FC123EA25AA45AAA127CA47EA27E7F120F6C7E6D1308
D803F813383901FE01F86CB5FC013F13F0010F13C0903803FE001D2C7CAA25>67
D<B512E014FC14FF39F8007F80EC0FC06E7EEC01F06E7EA2157C81A2151E151FA2811680
AA16005DA3153EA25DA25D4A5A4A5AEC0FC0EC3F80B6C7FC14FC14E0212A7BA92A>I<B6
12C0A400F8C8FCAEB6FCA400F8C8FCB0B612E0A41B2A7BA923>I<EB03FE90380FFFC001
3F13F84913FC3801FE013903F8007CD807E01318491300485A121F90C8FC123EA2127E12
7CA35AA7EC3FFCA3127CEC007CA2127E123EA27E7F120F6C7E7FEA03F83901FE01FC3800
7FFF6D13F8010F13C0903803FE001E2C7CAA27>71 D<00F8147CB2B612FCA400F8C7127C
B3A21E2A7BA929>I<12F8B3B3A6052A7BA910>I<12F8B3B3A2B6FCA4182A7BA920>76
D<00FE15FFA36C5C00FB15DF6D1303A3D8F9C0EB079FA36D130F00F8151FA26D131F0170
131EA20178133E0138133C013C137CA2011C1378011E13F8A2010E13F0EB0F01A2010713
E01483A2010313C014C7A20101138014EFA20100130014FF147EA391C7FC282A7BA933>
I<B4147CA27FA2EAFBC0A2EAF9E0A27F12F8A27F1378137C133C133E131E131F7F1480A2
EB07C0A2130314E0130114F0130014F81478147C143CA2143E141EA2140FA2EC07FCA214
03A21E2A7BA929>I<EB03FCEB0FFF013F13C090B512F03901FE07F83903F801FC3907E0
007E48487F497F48C7EA0F80A2003EEC07C0A248EC03E0A30078140100F815F0AA007CEC
03E0A3007E1407003E15C0A26CEC0F806D131F000F15006D5B6C6C137E3903F801FC3901
FE07F86CB55A013F13C06D5BD903FCC7FC242C7DAA2B>I<B512C014F814FE38F8007FEC
1F80EC07C0140315E0140115F0A615E01403A2EC07C0EC1F80EC7F00B512FE5C14F000F8
C8FCB21C2A7BA925>I<B512E014FC14FF39F8003F80EC0FC0EC03E0EC01F0A2EC00F8A6
EC01F0A2EC03E0140FEC3FC0B61280ECFE0014F814E0EAF801806D7EA2147C143C143E14
1E141FEC0F80A2EC07C0A2EC03E0140115F0EC00F8A2157C1E2A7BA926>82
D<EB7FC03801FFF8000713FE487F381FC07F383F000F007E1306007C90C7FCA25AA57E12
7E127F6C7EEA1FF86CB4FC6C13E06C13F8C67FEB0FFEEB00FF143FEC1F80140F15C01407
A6EC0F80126000F0EB1F0000FC5B38FF80FE6CB45A001F5B000713E0C613801A2C7DAA21
>I<B712E0A4260001F0C7FCB3B3A2232A7EA928>I<EA01FC380FFF80003F13C014E0383C
03F0EA3001000013F81300A4130113FF1207121FEA3FC0EA7E005A5AA3EAFC01EA7E07EA
7FFF7EEA1FFCEA0FE0151B7E9A1C>97 D<12F8AF133F38F9FFC000FB13E0B512F0EB07F8
EAFC0138F800FC147CA2143EA8147E147CA26C13F8130138FF07F0EBFFE000FB13C000F9
138038F87E00172A7CA91E>I<EB7F803801FFE0000713F85A381FC078383F0010003E13
005AA35AA7127CA37E003F1318381FC078380FFFF87E000113E038007F80151B7E9A1A>
I<143EAFEA01FCEA03FF000F13BE4813FE13C1383F007E003E133E5AA212FC5AA77E127C
A2007E137E6C13FEEA1FC113FF6C13BE3803FE3EEA01F8172A7EA91E>I<13FCEA03FF48
13804813C0381F87E0EA3F01383E00F05A1470481378B512F8A400F8C7FCA31278127CA2
7E003F1318381FC0F8EA0FFF7E000113E038007F00151B7E9A1A>I<EB3FC013FF5A5A38
07E0005B485AA9EAFFFEA3EA0F80B3A6122A7FA912>I<90387C07803901FF3FC0000713
FF5A903883E000381F01F0A2383E00F8A56C485AA2380F83E013FF485B001D90C7FCEA1C
7C003CC8FCA2123E381FFFE014F86C13FE487F481480387E003F007CEB0FC0481307A46C
130F007EEB1F80393F807F00381FFFFE6C5B000313F038007F801A287F9A1D>I<12F8AF
133FEBFFC000FB13E0B512F0138338FE01F8EAFC00A35AB2152A7CA91E>I<12F8A51200
AA12F8B3A9052A7CA90E>I<13F8A51300AA13F8B3AF1240EAE3F012FF13E0EA7FC0EA1F
800D3683A90F>I<12F8B3B3A6052A7CA90E>108 D<D8F83F133F9039FFC0FFC000FB01E3
13E0B500F713F0018313833AFE01FE01F839FC00FC00A3485BB2251B7C9A2E>I<EAF83F
EBFFC000FB13E0B512F0138338FE01F8EAFC00A35AB2151B7C9A1E>I<137E3801FF8000
0713E04813F0381F81F8383F00FC003E137C48133EA20078131E00F8131FA7007C133EA3
6C137C003F13FC381FC3F8380FFFF06C13E06C13C038007E00181B7E9A1D>I<EAF83F38
F9FFC000FB13E0B512F0EB07F8EAFC0138F800FCA2147C147E143EA7147E147C14FC6C13
F8130138FF07F0EBFFE000FB13C000F9138038F87E0090C7FCAC17277C9A1E>I<EBFC3E
EA03FF4813BE4813FEEA1FC1EA3F00003E137E007E133E127C12FC5AA77E127C127E147E
6C13FEEA1FC113FF6C13BE3807FE3EEA01F8C7FCAC17277E9A1E>I<EAF83C13FC12F912
FBEAFFE0138013005A5AA35AB00E1B7C9A14>I<EA07F8EA1FFF4813805AEA7C0738F801
0090C7FCA37E127F13F0EA3FFC6C7EEA07FFC61380EB1FC0130F1307A2124012E038FC1F
80B5FC6C1300EA1FFEEA07F8121B7E9A16>I<EA0F80A7B51280A3380F8000B2148013C3
3807FFC0A26C1300EA01F812227FA115>I<00F813F8B3A213011303EAFC07B5FCEA7FFE
EA3FF8EA1FC0151B7C9A1E>I<007CEB1F80007EEB3F006C133E6C5B380F80FC6C6C5AEB
E1F03803E3E0EA01F76CB45A6D5A91C7FC133EA2133F497E497E3801F3E0EA03E1803807
C0F8380F807C121F497E003E7F007E148048EB0FC01A1B809A1B>120
D<00F8131F7E007C133EA27E147CA27E14F81380000F13F01381EA07C114E013C31203EB
E3C0120113E71480EA00F714001377A2137E133EA2133CA2137C1378A25BA21201EA7FE0
5B5B90C7FC18277F9A1B>I<B512F8A314F0EA0003EB07E014C0130FEB1F801400133E13
7E5B5B1201485A5B485A120F485A90C7FC5A127E387FFFF8B5FCA3151B7E9A19>I
E /Fp 12 121 df<BA12FCA4D8001F90268000017FEF001F1807180318011800197E193E
193F85A385A40578EB0780A496C7FCA217F8A316011603161F92B5FCA4ED801F16031601
1600A31778A21AF0A3F101E094C7FCA41903A21AC01907A3190F191FA2F13F80197F19FF
1803180F95B5FCBBFC1A00A344477CC64C>69 D<B712F0A4D8001FEB8000B3B3B3A9B712
F0A424477DC62B>73 D<90380FFFF090B6FC000315C03A07F8007FF0486CEB1FFCED07FE
486C6D7E838183816C48816C5A6C5AC9FCA5157F023FB5FC0103B6FC011F13F090387FFE
003801FFE0481380D80FFEC7FC485A5B123F485AA2485AA45DA26C6C5BED077F6C6C130F
6C6C013E13F83C0FFF80F83FFFE000039038FFF01FC6ECC00F90390FFE0003332E7CAD38
>97 D<91381FFFC049B512FC010714FF903A1FF8007F80D97FE0EBFFC0EBFF8048494813
E0485A1207485AA248486D13C0003FED7F80EE3F00007F92C7FC5BA312FFAA127FA27FA2
123FA26C6C15F0120F6DEC01E012076C6CEC03C06C6DEB07806C6DEB0F00D97FF0133E90
391FFC01FC0107B512F0010114C09026001FFCC7FC2C2E7CAD34>99
D<EC1FFC49B512C0010714F090391FF80FFC90397FC001FE49486C7E4890C7EA7F804848
EC3FC04848EC1FE0120F484815F0160F003F16F8A25B007F150717FCA212FFA290B7FCA3
01F0C9FCA5127FA36C7EA2001F163CA26C7E17786C6C15F86C6CEC01F06C6DEB03E06C6D
EB07C0D93FE0EB1F80903A1FFC01FF000107B512FC010014E0020F90C7FC2E2E7DAD35>
101 D<EDFFC0021F13F0027F13FC903901FFC0FE49EB01FF903807FC034948481380131F
EB3FF0137F14E001FF6D13006F5A6F5A163093C7FCABB612FEA4C601E0C8FCB3B3A2007F
EBFFF0A429487DC724>I<EB7FC0B5FCA412037EB3B3B3A8B61280A419487CC720>108
D<9039FF8007FEB590383FFFC04B13F0913981F81FF8913983C00FFC00039039870007FE
6C138E029C8002B87F188014F0A25CA35CB3A9B60081B6FCA4382E7BAD41>110
D<90397F803F80B5EBFFE0028113F8913883C3FC91388707FE0003138E6C90389C0FFF14
B8A214F0A2ED07FE9138E003FCED01F892C7FCA25CB3A8B612E0A4282E7DAD2F>114
D<90390FFE01C090B512C7000314FF3807F801390FC0007F48C7121F48140F007E1407A2
150312FEA27E7F01E090C7FC13F8387FFFC014FF6C14E015F86C806C14FF6C1580000115
C06C6C14E0131F010014F014039138007FF80070141F00F0140F15077E1503A26C15F0A2
7E6CEC07E07F6DEB0FC001F0EB1F80D8FEFCEBFF0039F87FFFFCD8F01F13F0D8E0031380
252E7CAD2E>I<EB01E0A61303A31307A3130FA2131F133FA2137FEA01FF5A000F90B512
C0B7FCA3C601E0C7FCB3A616F0A9017F14E0ECF001133FED03C0D91FF8138090390FFE0F
00903807FFFE01015B9038001FF024427EC12D>I<B500FE90381FFFFCA4C601E0903803
FE006EEB01F86D6C5C6D6C495A011F4A5A6D6C495A6E49C7FC6D6D5A6DEBC07E6D147C6D
6D5AEDF1F091387FFBE06EB45A806E5B93C8FC6E7F6E7F6E7FA24A7F4A7F8291380F9FFE
EC1F0F91383E07FF027C804A6C7F01016D7F49487E4A6D7E49488049486D7E49C76C7E01
3E140F017E6E7E48B41680B500E0017F13FFA4382E7EAD3D>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<EA0180A5EAE187EA
718EEA399CEA0FF0EA03C0A2EA0FF0EA399CEA718EEAE187EA0180A510147DA117>I<13
03AFB612FCA2D80003C7FCAF1E207E9A23>I<127012F012F8A212781208A31210A31220
A21240050E7C840D>I<EAFFF0A20C02808A0F>I<127012F8A3127005057C840D>I<1440
14C0EB0180A3EB0300A31306A25BA35BA35BA25BA35BA3485AA348C7FCA21206A35AA35A
A25AA35AA35AA2122D7EA117>I<EA03F0EA0E1C487EEA1806EA380738700380A400F013
C0AD00701380A3EA780700381300EA1806EA1C0E6C5AEA03F0121F7E9D17>I<13801203
120F12F31203B3A6EA07C0EAFFFE0F1E7C9D17>I<EA03F0EA0C1CEA100E487E00401380
128000F013C0EAF803A3EA200712001480A2EB0F00130E5B5B5B13605B485A48C7FC0006
13405A5A00101380EA3FFF5AB5FC121E7E9D17>I<EA03F0EA0C1CEA100EEA200F007813
801307A2EA380F12001400A2131E131C1370EA07F0EA003C130E130FEB0780A214C01220
12F8A300F013801240EB0F00EA200EEA183CEA07F0121F7E9D17>I<1306A2130EA2131E
132EA2134E138EA2EA010E1202A212041208A212101220A2124012C0B512F038000E00A7
EBFFE0141E7F9D17>I<EA1803EA1FFE5B5B13E00010C7FCA6EA11F0EA161CEA180EEA10
071480EA0003A214C0A3127012F0A200E013801240EB0700EA20066C5AEA0838EA07E012
1F7E9D17>I<137CEA0182EA0701380E0380EA0C0712183838030090C7FC12781270A2EA
F1F0EAF21CEAF406EAF807EB0380A200F013C0A51270A214801238EB07001218EA0C0E6C
5AEA01F0121F7E9D17>I<1240387FFFE014C0A23840008038800100A21302485AA25B5B
A25BA21360A213E05B1201A41203A76C5A131F7E9D17>I<EA03F0EA0C0CEA1006EA3003
382001801260A3127038780300123EEA3F06EA1FC8EA0FF0EA03F8487EEA0C7EEA103F38
300F80EA6007EB01C012C01300A31480EA600100201300EA1002EA0C0CEA03F0121F7E9D
17>I<EA03F0EA0E18487E487E13071270EB038012F0A214C0A5EA7007A21238EA180BEA
0E13EA03E338000380A3EB07001230EA7806130EEA700CEA2018EA1070EA0FC0121F7E9D
17>I<127012F8A312701200AA127012F8A3127005147C930D>I<127012F8A312701200AA
127012F012F8A212781208A31210A31220A21240051D7C930D>I<007FB512F8B612FCC9
FCA8B612FC6C14F81E0C7E9023>61 D<EA0FE0EA103CEA601EEA400EEAE00F12F0A21260
EA001E131C13381370136013C01380A2EA0100A6C7FCA5EA0380EA07C0A3EA038010207E
9F15>63 D<5B497EA3497EA3EB09E0A3EB10F0A3EB2078A3497EA2EBC03EEB801EA248B5
FCEB000FA20002EB0780A348EB03C0A2120C001E14E039FF801FFE1F207F9F22>65
D<B512E0380F0078141EA2801580A515005C141E147CEBFFF0EB007C141FEC0F80EC07C0
140315E0A515C014071580EC0F00143EB512F01B1F7E9E20>I<90380FE0109038381C30
9038E002703803C00139078000F048C71270121E15305A1510127C127800F81400A91278
007C1410123CA26C1420A27E6C6C13406C6C13803900E00300EB380CEB0FF01C217E9F21
>I<B512F83807801EEC0780EC03C0EC01E0EC00F015701578A2153CA3153EA8153CA215
7C1578A215F0EC01E0EC03C0EC0780EC1E00B512F81F1F7F9E23>I<B61280380F000F14
031401140015C01540A314401500A214C0130113FF130113001440A3EC0020A31540A315
C01401EC0380140FB6FC1B1F7E9E1F>I<B61280380780071401A2140015C01540A4EC20
00A3146014E013FF138014601420A391C7FCA87FEAFFFE1A1F7F9E1E>I<90380FE01090
38381C309038E002703803C00139078000F048C71270121E15305A1510127C127800F814
00A7EC3FFEEC01F000781300127C123CA27EA27E6C7E3903C001703900E002309038380C
1090380FF0001F217E9F24>I<39FFF07FF8390F000780AD90B5FCEB0007AF39FFF07FF8
1D1F7E9E22>I<EAFFF0EA0F00B3ABEAFFF00C1F7E9E10>I<39FFF007FC390F0003E0EC01
80150014025C5C5C5C5C5C49C7FC5B497E130FEB13C0EB21E01341EB80F0EB0078A28080
A280EC0780A2EC03C015E015F039FFF01FFE1F1F7E9E23>75 D<EAFFF8EA0F8090C7FCB2
1402A414061404A2140C141C147CB512FC171F7E9E1C>I<B46CEB07FE000715C0A2D805
C0130BA2D804E01313A301701323A26D1343A36D1383A290380E0103A3EB0702A3EB0384
A2EB01C8A3EB00F0A21460121FD8FFE0EB7FFE271F7F9E2A>I<B4EB0FF8390F8003E0EC
0080EA0BC0EA09E0A2EA08F01378A27F7FA27FEB0780A2EB03C0EB01E0A2EB00F01478A2
143C141EA2140F1407A214031401123E38FF80001D1F7E9E22>I<EB1FE0EB70383801C0
0E48487E39070003804814C0001EEB01E048EB00F0A2007C14F8A20078147800F8147CA9
00781478007C14F8A2003C14F0003E1301001E14E06CEB03C06C148039038007003801E0
1E38007038EB1FE01E217E9F23>I<B512E0380F007C141E80EC0780A215C0A41580A2EC
0F00141E147CEBFFE090C8FCAEEAFFF01A1F7E9E1F>I<B57E380F00F0143C8080A21580
A41500A2141E5C14F0EBFF80EB01C0EB0070A280143CA3143EA31504143F141FEC0F0839
FFF00788C7EA01F01E207E9E21>82 D<3803F040380C0CC0EA1803EA3001EA6000A212E0
1440A36C13007E127CEA7F80EA3FF86CB4FC00071380C613C0EB1FE013031301EB00F014
707EA46C136014E06C13C038F8018038C60300EA81FC14217E9F19>I<007FB512E03878
0F010060EB006000401420A200C0143000801410A400001400B3497E3803FFFC1C1F7E9E
21>I<39FFF00FF8390F0003E0EC0080B3A46CEB01001380120314026C6C5A6C6C5AEB38
30EB0FC01D207E9E22>I<3BFFF07FF81FF03B1F000FC007C06C903907800180170015C0
01805C00071502EC09E013C000035DEC19F01410D801E05CA2EC2078D800F05CA2EC403C
01785CA2EC801E017C1460013C144090383D000F133F6D5CA2011E1307010E91C7FCA201
0C7F010413022C207F9E2F>87 D<397FF81FF8390FE007C03907C0030000031302EBE006
3801F00400005BEBF818EB78106D5AEB3E60EB1E406D5AA213076D7E497E1305EB08F0EB
18F8EB1078EB207CEB603EEB401EEB801F3901000F801407000214C000061303001FEB07
E039FFC01FFE1F1F7F9E22>I<12FFA212C0B3B3A512FFA2082D7CA10D>91
D<EA0804EA1008EA2010A2EA4020A2EA8040A3EAB85CEAFC7EA2EA7C3EEA381C0F0E7A9F
17>I<12FFA21203B3B3A512FFA2082D80A10D>I<EA1FE0EA3030EA7818131CEA300E1200
A313FEEA078EEA1E0E1238127800F01310A3131E127838386720380F83C014147E9317>
97 D<121C12FC121CAA137CEA1D87381E0180EB00C0001C13E01470A21478A6147014F0
14E0001E13C0381A018038198700EA107C15207E9F19>I<EA01FCEA0706EA1C0F123813
060078C7FC127012F0A61270127800381380A2381C0100EA0706EA01F811147F9314>I<
EB01C0130F1301AAEA01F1EA070DEA0C03EA180112381278127012F0A61270A21238EA18
03120CEA070D3801F1F815207F9F19>I<EA03F0EA0E1C487E487EA21270EB038012F0A2
B5FC00F0C7FCA31270A26C1380A2381C0100EA0706EA01F811147F9314>I<137CEA01C6
EA030F1207EA0E061300A7EAFFF0EA0E00B2EA7FE01020809F0E>I<14E03803E330EA0E
3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE381F
FF8014C0383001E038600070481330A4006013606C13C0381C03803803FC00141F7F9417
>I<121C12FC121CAA137C1386EA1D03001E1380A2121CAE38FF8FF014207E9F19>I<1238
127CA31238C7FCA6121C12FC121CB1EAFF80091F7F9E0C>I<13E0EA01F0A3EA00E01300
A61370EA07F012001370B3A31260EAF06013C0EA6180EA3F000C28829E0E>I<121C12FC
121CAAEB1FE0EB0780EB060013045B5B5B136013E0EA1DF0EA1E70EA1C38133C131C7F13
0F7F148014C038FF9FF014207E9F18>I<121C12FC121CB3ABEAFF8009207F9F0C>I<391C
3E03E039FCC30C30391D039038391E01E01CA2001C13C0AE3AFF8FF8FF8021147E9326>
I<EA1C7CEAFC86EA1D03001E1380A2121CAE38FF8FF014147E9319>I<EA01F8EA070E38
1C0380383801C0A2387000E0A200F013F0A6007013E0A2383801C0A2381C038038070E00
EA01F814147F9317>I<EA1C7CEAFD87381E018014C0381C00E014F014701478A6147014
F014E0381E01C0EB0380381D8700EA1C7C90C7FCA8B47E151D7E9319>I<3801F0403807
0CC0EA0E02EA1C03EA38011278127012F0A6127012781238EA1C03EA0C05EA0709EA01F1
EA0001A8EB0FF8151D7F9318>I<EA1CF0EAFD18EA1E3CA21318EA1C00AEEAFFC00E147E
9312>I<EA0FC8EA3038EA6018EAC008A3EAE000127CEA3FE0EA1FF0EA07F8EA003CEA80
0E130612C0A21304EAE00CEAD818EA87E00F147F9312>I<1202A31206A2120EA2123EEA
FFF8EA0E00AB1304A5EA07081203EA01F00E1C7F9B12>I<381C0380EAFC1FEA1C03AE13
07120CEA061B3803E3F014147E9319>I<38FF83F8383E00E0001C13C06C1380A3380701
00A21383EA0382A2EA01C4A213E4EA00E8A21370A3132015147F9318>I<39FF9FE1FC39
3C078070391C030060EC8020000E1440A214C0D80704138014E0A239038861001471A238
01D032143A143E3800E01CA2EB6018EB40081E147F9321>I<38FF87F8381E03C0380E01
80EB0300EA0702EA0384EA01C813D8EA00F01370137813F8139CEA010E1202EA06073804
0380000C13C0003C13E038FE07FC16147F9318>I<38FF83F8383E00E0001C13C06C1380
A338070100A21383EA0382A2EA01C4A213E4EA00E8A21370A31320A25BA3EAF080A200F1
C7FC1262123C151D7F9318>I<EA7FFFEA700E1260EA401C133813781370EA00E0120113
C0EA038012071301120E121EEA1C03EA3802EA7006130EEAFFFE10147F9314>I<B512FC
1601808C17>I E /Fs 46 122 df<127012F812FCA212741204A41208A21210A2122012
40060F7C840E>44 D<EAFFF8A20D02808B10>I<127012F8A3127005057C840E>I<EA01F0
EA071CEA0C06487E00381380A2387001C0A400F013E0AE007013C0A3EA780300381380A2
381C0700EA0C06EA071CEA01F013227EA018>48 D<13801203120F12F31203B3A9EA07C0
EAFFFE0F217CA018>I<EA03F8EA0C1EEA100F38200780004013C0127813031307123800
001380A214005B130C1338EA03F0EA001C130FEB0780A2EB03C0A214E01220127012F8A2
00F013C01240EB0780122038100F00EA0C1CEA03F013227EA018>51
D<1303A25BA25B1317A21327136713471387120113071202120612041208A212101220A2
124012C0B512F838000700A7EB0F80EB7FF015217FA018>I<00101380381E0700EA1FFF
5B13F8EA17E00010C7FCA6EA11F8EA120CEA1C07381803801210380001C0A214E0A41270
12F0A200E013C01280EA4003148038200700EA1006EA0C1CEA03F013227EA018>I<137E
EA01C138030080380601C0EA0C03121C381801800038C7FCA212781270A2EAF0F8EAF30C
EAF4067F00F81380EB01C012F014E0A51270A3003813C0A238180380001C1300EA0C06EA
070CEA01F013227EA018>I<EA01F8EA060EEA0803381001801220386000C0A31270A238
780180003E1300EA3F02EA1FC4EA0FF812036C7EEA067EEA083F38100F80383007C0EA60
03EB00E05A1460A40060134014C06C138038180300EA0E0EEA03F013227EA018>56
D<EA01F0EA060C487EEA1807383803801270A238F001C0A314E0A5127013031238EA1805
120CEA0619EA03E1380001C0A3EB0380A21230387807001306EA700CEA20186C5AEA0FC0
13227EA018>I<497EA3497EA3EB05E0A2EB09F01308A2EB1078A3497EA3497EA2EBC01F
497EA248B51280EB0007A20002EB03C0A348EB01E0A348EB00F0121C003EEB01F839FF80
0FFF20237EA225>65 D<903807E0109038381830EBE0063901C0017039038000F048C7FC
000E1470121E001C1430123CA2007C14101278A200F81400A812781510127C123CA2001C
1420121E000E14407E6C6C13803901C001003800E002EB381CEB07E01C247DA223>67
D<B612C0380F80070007130114001540A215601520A314201500A3146014E013FF138014
601420A315081400A21510A31530A2157015E0000F1303B6FC1D227EA121>69
D<B612C0380F80070007130114001540A215601520A314201500A3146014E013FF138014
601420A491C7FCA9487EEAFFFE1B227EA120>I<EAFFFCEA0FC0EA0780B3ACEA0FC0EAFF
FC0E227EA112>73 D<3803FFE038001F007FB3A6127012F8A2130EEAF01EEA401C6C5AEA
1870EA07C013237EA119>I<D8FFC0EB03FF000F15F0000715E0D805E01305A2D804F013
09A301781311A36D1321A36D1341A26D1381A39038078101A3EB03C2A2EB01E4A3EB00F8
A31470120E001FEC03F03AFFE0203FFF28227EA12D>77 D<39FF8007FF3907C000F81570
D805E01320EA04F0A21378137C133C7F131F7FEB0780A2EB03C0EB01E0A2EB00F014F814
78143C143E141E140FA2EC07A0EC03E0A21401A21400000E1460121FD8FFE0132020227E
A125>I<B512F0380F803C0007130FEC078015C0140315E0A615C014071580EC0F00143C
EBFFF00180C7FCAE487EEAFFFC1B227EA121>80 D<B512E0380F803C0007130E6E7E8114
0381A55D14075D020EC7FC143CEBFFE0EB80708080141E140E140FA481A3168015C01407
3A0FC003C10039FFFC01E2C8127C21237EA124>82 D<3803F020380C0C60EA1802383001
E0EA70000060136012E0A21420A36C1300A21278127FEA3FF0EA1FFE6C7E000313803800
3FC0EB07E01301EB00F0A214707EA46C1360A26C13C07E38C8018038C60700EA81FC1424
7DA21B>I<007FB512F839780780780060141800401408A300C0140C00801404A4000014
00B3A3497E3801FFFE1E227EA123>I<EA1FE0EA3038EA780C130EEA30071200A313FFEA
07C7EA1E07123C1278127000F01308A3130FEA7817383C2390380FC1E015157E9418>97
D<120E12FE121E120EAB131FEB61C0EB8060380F0030000E1338143C141C141EA7141C14
3C1438000F1370380C8060EB41C038083F0017237FA21B>I<EA01FEEA0703380C078012
1C383803000078C7FC127012F0A712700078134012386C1380380C0100EA0706EA01F812
157E9416>I<14E0130F13011300ABEA01F8EA0704EA0C02EA1C01EA38001278127012F0
A7127012781238EA1801EA0C0238070CF03801F0FE17237EA21B>I<EA01FCEA0707380C
0380381C01C01238007813E0EA700012F0B5FC00F0C7FCA512700078132012386C13406C
138038070300EA00FC13157F9416>I<133E13E33801C780EA0387130748C7FCA9EAFFF8
0007C7FCB27FEA7FF0112380A20F>I<14703803F198380E1E18EA1C0E38380700A20078
1380A400381300A2EA1C0EEA1E1CEA33F00020C7FCA212301238EA3FFE381FFFC06C13E0
383000F0481330481318A400601330A2003813E0380E03803803FE0015217F9518>I<12
0E12FE121E120EABEB1F80EB60C0EB80E0380F0070A2120EAF38FFE7FF18237FA21B>I<
121C123EA3121CC7FCA8120E127E121E120EB1EAFFC00A227FA10E>I<13E0EA01F0A3EA
00E01300A81370EA07F012001370B3A51260EAF0E013C0EA6180EA3F000C2C83A10F>I<
120E12FE121E120EABEB03FCEB01F014C01480EB02005B5B5B133813F8EA0F1CEA0E1E13
0E7F1480EB03C0130114E0EB00F014F838FFE3FE17237FA21A>I<120E12FE121E120EB3
ADEAFFE00B237FA20E>I<390E1FC07F3AFE60E183803A1E807201C03A0F003C00E0A200
0E1338AF3AFFE3FF8FFE27157F942A>I<380E1F8038FE60C0381E80E0380F0070A2120E
AF38FFE7FF18157F941B>I<EA01FCEA0707380C0180381800C0003813E0481370A200F0
1378A700701370007813F0003813E0381C01C0380E038038070700EA01FC15157F9418>
I<EA0E1F38FE61C0380E8060380F0070000E1338143CA2141EA7143CA21438000F137038
0E80E0EB41C0EB3F0090C7FCA9EAFFE0171F7F941B>I<EA0E3CEAFE46EA1E8FEA0F0F13
061300120EAD120FEAFFF010157F9413>114 D<EA0F88EA3078EA601812C01308A212E0
EAF000127FEA3FE0EA0FF0EA01F8EA003CEA801C130CA212C01308EAE018EAD030EA8FC0
0E157E9413>I<1202A41206A3120E121E123EEAFFFCEA0E00AB1304A6EA07081203EA01
F00E1F7F9E13>I<000E137038FE07F0EA1E00000E1370AD14F0A2380601703803827838
00FC7F18157F941B>I<38FF80FE381E00781430000E1320A26C1340A2EB80C000031380
A23801C100A2EA00E2A31374A21338A3131017157F941A>I<39FF8FF87F393E01E03C00
1CEBC01814E0000E1410EB0260147000071420EB04301438D803841340EB8818141CD801
C81380EBD00C140E3900F00F00497EA2EB6006EB400220157F9423>I<38FF80FE381E00
781430000E1320A26C1340A2EB80C000031380A23801C100A2EA00E2A31374A21338A313
10A25BA35B12F05B12F10043C7FC123C171F7F941A>121 D E /Ft
20 118 df<B51280A311037F9016>45 D<B612E015FC3907E0007F0003EC0F80ED03C06F
7E6F7E16788282A282A21780160717C0A21603A217E0AB17C0A21607A21780A2160F1700
5E161E5E5E16F84B5A4B5AED0F800007023FC7FCB612FC15E02B317CB033>68
D<B51280A23807F0006C5AB3B3A7487EB51280A211317DB017>73
D<D8FFF0ED7FF8A200071700D802F815BEA3017CEC013EA26D1402A36D1404A36D6C1308
A36D6C1310A36D6C1320A26D6C1340A36D6C1380A391387C0100A3EC3E02A36E5AA2EC0F
88A3EC07D0A3EC03E0A300076D5AD80F80157FD8FFF891380FFFF8EC008035317CB03D>
77 D<B612E015FC3907E0003F0003EC0F80ED03C0ED01E016F0ED00F8A21678167CA616
7816F816F0150116E0ED03C0ED0F80ED3E0090B512F801E0C8FCB3A3487EB57EA226317D
B02D>80 D<90387F80203801FFE03907C07860380F001C001EEB06E04813030038130100
7813001270156012F0A21520A37E1500127C127E7E13C0EA1FF86CB47E6C13F06C13FCC6
13FF010F1380010013C0EC1FE01407EC03F01401140015F8A26C1478A57E15706C14F015
E07E6CEB01C000ECEB038000C7EB070038C1F01E38807FFCEB0FF01D337CB125>83
D<13FE380303C0380C00E00010137080003C133C003E131C141EA21208C7FCA3EB0FFEEB
FC1EEA03E0EA0F80EA1F00123E123C127C481404A3143EA21278007C135E6CEB8F08390F
0307F03903FC03E01E1F7D9E21>97 D<EB1FC0EBF0303801C00C38078002EA0F00000E13
0F001E5B5AA2007C1304007890C7FC12F8A91278127C123C15807E000EEB0100120F3807
80023801C00C3800F030EB1FC0191F7E9E1D>99 D<15F0141FA214011400AFEB0FC0EB70
303801C00C3803800238070001120E001E13005AA2127C1278A212F8A71278A2127C123C
A27E000E13016C1302380380046C6C487E3A00F030FF80EB1FC021327EB125>I<EB3F80
EBE0E0380380383807003C000E7F121E001C7F123C127C00781480140712F8A2B6FC00F8
C8FCA61278127C123C15807E000EEB0100000F13027E3801C00C3800F030EB1FC0191F7E
9E1D>I<EB07E0EB1C10EB3838EB707C13E01201EBC03800031300ACB512C0A23803C000
B3A8487EEA7FFFA216327FB114>I<15F090387F03083901C1C41C380380E83907007008
48EB7800001E7FA2003E133EA6001E133CA26C5B6C13706D5A3809C1C0D8087FC7FC0018
C8FCA5121C7E380FFFF86C13FF6C1480390E000FC00018EB01E048EB00F0007014704814
38A500701470A26C14E06CEB01C00007EB07003801C01C38003FE01E2F7E9F21>I<120F
EA1F80A4EA0F00C7FCABEA0780127FA2120F1207B3A6EA0FC0EAFFF8A20D307EAF12>
105 D<260780FEEB1FC03BFF83078060F0903A8C03C180783B0F9001E2003CD807A013E4
DA00F47F01C013F8A2495BB3A2486C486C133F3CFFFC1FFF83FFF0A2341F7E9E38>109
D<380780FE39FF83078090388C03C0390F9001E0EA07A06E7E13C0A25BB3A2486C487E3A
FFFC1FFF80A2211F7E9E25>I<EB1FC0EBF0783801C01C38070007481480001EEB03C000
1C1301003C14E0A248EB00F0A300F814F8A8007814F0007C1301003C14E0A26CEB03C0A2
6CEB07803907800F003801C01C3800F078EB1FC01D1F7E9E21>I<380783E038FF8418EB
887CEA0F90EA07A01438EBC000A35BB3487EEAFFFEA2161F7E9E19>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: 0 1
0 0 bop 799 911 a Fu(D)25 b(R)g(A)g(F)g(T)225 1002 y
Ft(Do)r(cumen)n(t)20 b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n
(terface)621 1196 y Fs(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)
845 1323 y(July)h(8,)g(1996)77 1381 y(This)h(w)o(ork)f(w)o(as)h(supp)q
(orted)g(in)f(part)h(b)o(y)e(ARP)l(A)h(and)h(NSF)e(under)h(gran)o(t)h
(ASC-9310330,)i(the)192 1439 y(National)d(Science)f(F)l(oundation)i
(Science)e(and)i(T)l(ec)o(hnology)f(Cen)o(ter)f(Co)q(op)q(erativ)o(e)76
1497 y(Agreemen)o(t)e(No.)22 b(CCR-8809615,)d(and)e(b)o(y)e(the)h
(Commission)e(of)j(the)f(Europ)q(ean)i(Comm)o(unit)n(y)654
1555 y(through)f(Esprit)f(pro)s(ject)g(P6643.)p eop
%%Page: 1 2
1 1 bop 166 49 a Fr(This)20 b(is)h(the)f(result)g(of)f(a)h(LaT)l(eX)g
(run)g(of)g(a)f(draft)g(of)h(a)f(single)j(c)o(hapter)d(of)h(the)g(MPIF)
f(Final)75 106 y(Rep)q(ort)d(do)q(cumen)o(t.)969 2828
y(i)p eop
%%Page: 1 3
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)1875
854 y Fn(>)16 b Fm(\(July\))75 910 y Fr(The)f(ma)s(jor)f(c)o(hanges)h
(to)g(this)h(c)o(hapter)f(are:)143 997 y Fn(\017)23 b
Fr(The)14 b(section)g(on)g(\\Information)f(from)g(P)o(ersisten)o(t)g
(Send/Recv)j(Requests")e(\(former)e(6.3.2\))g(has)189
1054 y(b)q(een)17 b(remo)o(v)o(ed.)k(The)16 b(added)g(capabilit)o(y)h
(is)f(to)f(allo)o(w)h(cac)o(hing)h(on)f(p)q(ersisten)o(t)g(requests.)21
b(This)189 1110 y(means)13 b(that)g(pro\014lers)h(will)h(ha)o(v)o(e)e
(to)g(cac)o(he)h(info)g(to)f(get)g(it.)20 b(The)13 b(adv)m(an)o(tage)g
(is)h(they)g(can)g(cac)o(he)189 1167 y(what)e(they)h(w)o(an)o(t)f
(whereas)h(w)o(e)g(ha)o(v)o(e)g(had)g(lots)g(of)f(problems)i(trying)f
(to)g(de\014ne)h(go)q(o)q(d)f(seman)o(tics)189 1223 y(for)19
b(a)h(prede\014ned)i(set)e(of)g(accessor)f(functions.)36
b(The)20 b(negativ)o(es)h(are)e(that)h(cac)o(hing)h(ma)o(y)e(b)q(e)189
1280 y(hea)o(vier)h(w)o(eigh)o(t)g(than)f(pro\014lers)i(w)o(an)o(t)e
(and)h(turning)g(on/o\013)f(pro\014ling)i(will)h(cause)e(a)f(loss)h(of)
189 1336 y(information.)143 1427 y Fn(\017)j Fr(I)15
b(mo)o(v)o(ed)f(the)h(section)h(\\Idenifying)h(P)o(ersisten)o(t)d
(Requests")i(\(former)d(6.3.3\))g(to)i(the)g(end)g(of)g(the)189
1484 y(section)g(after)g(the)g(cac)o(hing)h(section)g(since)g(this)g
(is)f(what)g(is)h(no)o(w)f(need)h(for.)143 1575 y Fn(\017)23
b Fr(The)16 b(cac)o(hing)h(section)g(w)o(as)f(c)o(hanged)h(so)f(that)f
(there)i(are)f(new)h(functions)g(that)f(tak)o(e)f(the)i(t)o(yp)q(e)189
1631 y(of)d(handle)j(as)e(an)g(argumen)o(t)f(and)i(\014le)g(handles)g
(w)o(ere)f(added.)143 1722 y Fn(\017)23 b Fr(New)15 b(alternativ)o(e)g
(prop)q(osal)h(for)e(generalized)j(requests.)143 1813
y Fn(\017)23 b Fr(The)15 b(MPI)p 374 1813 14 2 v 16 w(Datat)o(yp)q(e)f
(prop)q(osals)g(w)o(ere)h(b)q(oth)g(in)o(tegrated)f(in)o(to)h(this)g(c)
o(hapter.)20 b(One)15 b(used)g(to)f(b)q(e)189 1870 y(in)i(misc.)143
1961 y Fn(\017)23 b Fr(The)15 b(prop)q(osal)h(for)e(naming)i(of)e(comm)
o(unicators)h(w)o(as)g(added.)143 2052 y Fn(\017)23 b
Fr(The)15 b(revised)h(section)g(on)f(a)g(c)o(haracter)f(represen)o
(tation)i(of)e(a)h(datat)o(yp)q(e)g(is)h(still)g(needed.)1875
2091 y Fn(?)g Fm(\(July\))166 2139 y Fr(The)i Fl(MPI)f
Fr(F)l(orum)h(has)f(alw)o(a)o(ys)g(w)o(an)o(ted)h(writers)f(of)h
(external)g(pac)o(k)m(ages)g(to)f(b)q(e)h(able)h(to)e(create)75
2195 y(the)k(t)o(yp)q(e)g(of)f(functionalit)o(y)i(found)f(in)o(ternal)g
(to)f Fl(MPI)p Fr(.)g(F)l(or)g(example,)i(in)g Fl(MPI-1)p
Fr(,)f(the)g(cac)o(hing)g(on)75 2252 y(comm)o(unicators)16
b(allo)o(ws)h(users)g(to)f(store)g(information)h(in)g(a)g(w)o(a)o(y)e
(similar)j(to)e(whic)o(h)i(an)e Fl(MPI)g Fr(imple-)75
2308 y(men)o(tations)i(could)i(store)e(top)q(ology)g(information.)30
b(The)19 b(cac)o(hing)g(capabilit)o(y)h(has)e(b)q(een)i(expanded)75
2365 y(to)e(other)f(handles)j(in)f Fl(MPI-2)p Fr(.)28
b(Another)18 b(mec)o(hanism)g(in)h(whic)o(h)g(users)g(ha)o(v)o(e)e
(expressed)i(in)o(terest)f(is)75 2421 y(the)f(abilit)o(y)h(to)e(create)
h(new)g(non-blo)q(c)o(king)i(op)q(erations)e(similar)h(to)e(the)h(ones)
g(o\013ered)g(in)g Fl(MPI)p Fr(.)f(This)75 2478 y(c)o(hapter)f
(includes)j(this)d(capabilit)o(y)l(.)166 2534 y Fl(MPI-1)g
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
2591 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
2647 y(already)h(presen)o(t)g(in)g Fl(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 2704 y(jects,)f Fl(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 Fl(MPI)p
1375 2704 V 16 w(GET)p 1479 2704 V 17 w(COUNT)g Fr(will)h(return)964
2828 y(1)p eop
%%Page: 2 4
2 3 bop 75 -100 a Fr(2)894 b Fk(CHAPTER)15 b(6.)35 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)75 49 y Fr(the)17 b(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 106 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 162
y(easily)f(and)g(p)q(ortably)g(gotten)e(from)h(an)g Fl(MPI)g
Fr(implemenation.)21 b(In)14 b Fl(MPI-1)p Fr(,)e(the)i
Fl(MPI)e Fr(F)l(orum)h(included)75 219 y(all)j(the)f(accessor)g
(functions)h(that)e(seemed)i(to)f(b)q(e)h(needed)g(b)o(y)f(users.)20
b(Ho)o(w)o(ev)o(er,)14 b(extension)i(in)g Fl(MPI-2)-1993
b Fn(>)15 b Fm(\(July\))75 275 y Fr(and)j(exp)q(erience)i(has)e(sho)o
(wn)g(a)g(need)g(for)g(other)f(accessor)h(functions.)29
b(This)19 b(c)o(hapter)e(has)h(accessor)75 332 y(functions)e(to)f(allo)
o(w)g(access)g(to)g(the)g(opaque)g(datat)o(yp)q(e)g(handle.)-1318
b Fn(?)15 b Fm(\(July\))75 474 y Fo(6.2)59 b(Generalized)20
b(Requests)75 616 y Fj(Discussion:)166 666 y Fi(A)o(t)15
b(the)g(April)f(meeting)g(the)h(F)m(orum)e(v)o(oted)i(to)f(remo)o(v)o
(e)g(comm)o(unicatio)o(n)e(handlers)j(from)e(the)i(one-sided)75
716 y(c)o(hapter)h(and)f(put)h(them)e(in)h(a)g(separate)h(c)o(hapter)g
(on)f(threads.)23 b(Generalized)16 b(requests)h(w)o(ere)f(built)f(on)f
(top)i(of)75 766 y(this)g(mec)o(hanism.)22 b(As)16 b(a)g(consequence,)i
(it)e(is)g(not)g(clear)g(what)g(is)g(going)f(to)g(happ)q(en)i(to)f
(this)g(section.)25 b(It)16 b(has)75 816 y(not)e(b)q(een)h(up)q(dated.)
k(I)13 b(am)g(a)o(w)o(aiting)f(the)i(decisions)h(on)e(comm)o(unication)
e(handlers.)166 865 y(W)m(e)f(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)f(requests)i(mec)o
(hanism)c(but)j(w)o(as)f(in)o(terested)75 915 y(in)j(something)g(lik)o
(e)g(generalized)i(requests.)20 b(W)m(e)13 b(need)i(to)f(discuss)h
(this)f(to)q(o.)166 1060 y Fj(Discussion:)166 1109 y
Fi(If)g(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)75 1159 y(can)k(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 1209 y(out)e(when)g(they)h
(are)f(complete)f(ma)o(y)f(degrade)j(p)q(erformance.)166
1353 y Fj(Missing:)166 1403 y Fi(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 1453 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
1503 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 1588 y Fh(\017)23
b Fi(Ho)o(w)13 b(can)h(w)o(e)g(use)h(status)145 1662
y Fh(\017)23 b Fi(Ho)o(w)13 b(do)h(w)o(e)g(do)g(cancel)145
1736 y Fh(\017)23 b Fi(There)15 b(is)e(no)h(complete)f(function)h(in)f
(the)i(example)75 1940 y Fg(6.2.1)49 b(Intro)q(duction)75
2026 y Fr(The)20 b(goal)f(of)g(this)h Fl(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 2083 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 2139 y(supp)q(orted)d(b)o(y)g Fl(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 2195
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 2252 y(The)20 b(metho)q(d)g(tak)o(en)g(in)g
(de\014ning)i(this)e Fl(MPI-2)f Fr(extension)i(is)f(to)f(try)h(and)g
(generalize)h(curren)o(t)75 2308 y Fl(MPI)e Fr(functions.)33
b(F)l(or)19 b(example,)i(the)e Fl(MPI)g Fr(functions)h(of)f
Fl(MPI)p 1208 2308 14 2 v 16 w Fn(f)p Fl(TEST)p Fn(j)p
Fl(W)l(AIT)p Fn(gf)p Fl(ANY)p Fn(j)p Fl(SOME)p Fn(j)p
Fl(ALL)p Fn(g)75 2365 y Fr(are)h(generalized.)36 b(The)21
b(one-sided)g Fl(MPI)p 811 2365 V 16 w(POST)p 945 2365
V 17 w(HANDLER)g Fr(function)g(of)f(Section)h Ff(??)e
Fr(is)i(used)g(for)75 2421 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 2478 y(similar)h
(functions)g(curren)o(tly)f(a)o(v)m(ailable)i(in)e Fl(MPI)p
Fr(.)f(Th)o(us,)h(these)g(extensions)h(are)f(based)g(on)g(the)g
Fl(MPI)75 2534 y Fr(p)q(ersisten)o(t)f(comm)o(unication)g(requests)f
(and)g(the)g(cac)o(hing)h(features.)166 2591 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
2647 y(function)c Fl(MPI)p 340 2647 V 16 w(REQUEST)p
559 2647 V 18 w(TYPE)p 694 2647 V 16 w(CREA)l(TE)h Fr(and)e(freed)g
(with)h Fl(MPI)p 1290 2647 V 16 w(REQUEST)p 1509 2647
V 18 w(TYPE)p 1644 2647 V 16 w(FREE)p Fr(.)g(The)75 2704
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)1967
46 y Fm(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 5
3 4 bop 75 -100 a Fk(6.2.)34 b(GENERALIZED)16 b(REQUESTS)1071
b Fr(3)75 49 y(user)18 b(creates)f(a)g(sp)q(eci\014c)j(instance)e(of)f
(a)g(request)h(via)g Fl(MPI)p 1125 49 14 2 v 16 w(REQUEST)p
1344 49 V 17 w(INIT)p Fr(.)f(The)h(op)q(eration)g(asso-)75
106 y(ciated)k(with)f(the)g(request)g(is)g(b)q(egun)h(with)f
Fl(MPI)p 958 106 V 16 w(ST)l(ART)p Fn(f)p Fl(ALL)p Fn(g)p
Fr(.)37 b(Completion)21 b(of)g(the)g(request)f(is)75
162 y(done)g(with)g Fl(MPI)p 381 162 V 16 w Fn(f)p Fl(TEST)p
Fn(j)p Fl(W)l(AIT)p Fn(gf)p Fl(ANY)p Fn(j)p Fl(SOME)p
Fn(j)p Fl(ALL)p Fn(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 219 y Fl(MPI)p 160 219
V 16 w(REQUEST)p 379 219 V 18 w(FREE)p Fr(.)166 275 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 332
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 388 y(blo)q(c)o(king)f(v)o(ersion)e(of)g
Fl(MPI)p 547 388 V 16 w(ALLGA)l(THER)p Fr(.)75 509 y
Fg(6.2.2)49 b(F)o(unctionalit)o(y)75 594 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 694 y Fl(init)p 139 694
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 751 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
807 y(p)q(erform)15 b(other)f(initialization.)75 899
y Fl(sta)o(rt)p 164 899 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 955 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 1012 y(comm)o(unications)c(that)g
(initiate)i(the)e(op)q(eration.)75 1103 y Fl(complete)p
248 1103 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 1160 y(used)d(to)g(set)g(return)g(v)m(alues)h
(in)g(extra)p 852 1160 V 16 w(state)f(or)f(clean)i(up)g(from)f(the)g
(op)q(eration.)75 1251 y Fl(free)p 148 1251 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
1308 y(example,)15 b(to)g(deallo)q(cate)h(memory)l(.)75
1399 y Fl(cancel)p 194 1399 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
1456 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 Fl(MPI)p 1448 1456 V 16 w(CANCEL)h
Fr(is)f(called)i(to)189 1512 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 1569 y(cancel)c(in)o(ternal)g
(messages,)e(reset)h(state,)f(etc.)166 1669 y(A)h(new)h(t)o(yp)q(e)f
(of)g(request)g(is)h(created)f(with)75 1819 y Fl(MPI)p
160 1819 V 16 w(REQUEST)p 379 1819 V 18 w(TYPE)p 514
1819 V 17 w(CREA)l(TE\(init)p 779 1819 V 17 w(fn,)f(sta)o(rt)p
946 1819 V 17 w(fn,)f(complete)p 1196 1819 V 17 w(fn,)h(free)p
1347 1819 V 16 w(fn,)g(cancel)p 1543 1819 V 17 w(fn,)g(t)o(yp)q(e)p
1704 1819 V 17 w(req\))117 1897 y Fi(IN)155 b Fl(init)p
382 1897 V 17 w(fn)472 b Fi(Creation)14 b(callbac)o(k)f(function)h(for)
f(t)o(yp)q(e)p 1542 1897 13 2 v 16 w(req)117 1971 y(IN)155
b Fl(sta)o(rt)p 407 1971 14 2 v 17 w(fn)447 b Fi(Request)15
b(start)g(callbac)o(k)e(function)g(for)h(t)o(yp)q(e)p
1630 1971 13 2 v 15 w(req)117 2045 y(IN)155 b Fl(complete)p
491 2045 14 2 v 17 w(fn)363 b Fi(Request)15 b(complete)e(callbac)o(k)g
(function)h(for)g(t)o(yp)q(e)p 1706 2045 13 2 v 15 w(req)117
2119 y(IN)155 b Fl(free)p 391 2119 14 2 v 17 w(fn)463
b Fi(Request)15 b(free)g(callbac)o(k)e(function)g(for)h(t)o(yp)q(e)p
1610 2119 13 2 v 15 w(req)117 2193 y(IN)155 b Fl(cancel)p
437 2193 14 2 v 18 w(fn)416 b Fi(Request)15 b(cancel/failure)f(callbac)
o(k)f(function)g(for)h(t)o(yp)q(e)p 1790 2193 13 2 v
15 w(req)117 2267 y(OUT)108 b Fl(t)o(yp)q(e)p 401 2267
14 2 v 18 w(req)430 b Fe(MPI)13 b Fi(created)j(request)f(t)o(yp)q(e)g
(for)e(future)i(reference)75 2391 y Fd(int)23 b(MPI)p
245 2391 15 2 v 17 w(Request)p 430 2391 V 16 w(type)p
542 2391 V 17 w(create\(MPI)p 799 2391 V 16 w(Init)p
911 2391 V 17 w(function)f(*init)p 1262 2391 V 17 w(fn,)h(MPI)p
1446 2391 V 17 w(Start)p 1583 2391 V 17 w(function)393
2448 y(*start)p 540 2448 V 17 w(fn,)g(MPI)p 724 2448
V 17 w(Complete)p 933 2448 V 16 w(function)g(*complete)p
1380 2448 V 16 w(fn,)393 2504 y(MPI)p 468 2504 V 17 w(Free)p
581 2504 V 17 w(function)f(*free)p 932 2504 V 17 w(fn,)h(MPI)p
1116 2504 V 17 w(Cancel)p 1277 2504 V 16 w(function)g(*cancel)p
1676 2504 V 16 w(fn,)393 2561 y(MPI)p 468 2561 V 17 w(Type)p
581 2561 V 17 w(Request)f(*type)p 908 2561 V 17 w(req\))75
2647 y(MPI)p 150 2647 V 17 w(REQUEST)p 335 2647 V 16
w(TYPE)p 447 2647 V 17 w(CREATE\(INIT)p 728 2647 V 15
w(FN,)i(START)p 959 2647 V 16 w(FN,)g(COMPLETE)p 1263
2647 V 16 w(FN,)f(FREE)p 1470 2647 V 17 w(FN,)g(CANCEL)p
1726 2647 V 17 w(FN,)393 2704 y(TYPE)p 492 2704 V 17
w(REQ,)g(IERROR\))-32 46 y Fm(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 6
4 5 bop 75 -100 a Fr(4)899 b Fk(CHAPTER)15 b(6.)30 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)170 49 y Fd(EXTERNAL)23 b(INIT)p
484 49 15 2 v 17 w(FN,)g(START)p 716 49 V 17 w(FN,)g(COMPLETE)p
1020 49 V 16 w(FN,)h(FREE)p 1228 49 V 16 w(FN,)g(CANCEL)p
1484 49 V 16 w(FN)170 106 y(INTEGER)f(type)p 460 106
V 17 w(req,)g(IERROR)166 192 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 249 y(called.)j Fl(t)o(yp)q(e)p
304 249 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 Fl(MPI)g Fr(that)g(can)h(b)q(e)g(used)g(to)f
(create)g(requests)75 305 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 Fl(t)o(yp)q(e)p
925 305 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 362 y(cannot)15 b(b)q(e)h(transfered)f
(to)f(another)h(pro)q(cess.)166 418 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 Fl(MPI)p 1711 418 V 16 w(HLOCK)75 474 y Fr(and)j
Fl(MPI)p 248 474 V 16 w(UNHLOCK)h Fr(as)e(describ)q(ed)k(in)e(Section)g
Ff(??)o Fr(.)166 531 y(T)l(o)f(get)g(an)g(instance)h(of)f
Fl(t)o(yp)q(e)p 684 531 V 17 w(req)p Fr(,)g(one)g(calls:)75
682 y Fl(MPI)p 160 682 V 16 w(REQUEST)p 379 682 V 18
w(INIT\(t)o(yp)q(e)p 584 682 V 16 w(req,)g(extra)p 782
682 V 17 w(state,)h(comm,)d(request\))117 759 y Fi(IN)155
b Fl(t)o(yp)q(e)p 401 759 V 18 w(req)430 b Fi(T)o(yp)q(e)10
b(of)f(request)h(desired)h(\(from)c(MPI)p 1519 759 13
2 v 16 w(REQUEST)p 1738 759 V 15 w(TYPE)p 1870 759 V
16 w(CREA)m(TE\))117 830 y(IN)155 b Fl(extra)p 416 830
14 2 v 17 w(state)384 b Fi(Extra)14 b(state)h(passed)g(to)f
Fe(init)p 1365 830 13 2 v 15 w(fn)117 901 y Fi(IN)155
b Fl(comm)470 b Fi(Comm)o(unicator)11 b(to)j(asso)q(ciate)g(request)i
(with)117 972 y(OUT)108 b Fl(request)452 b Fi(Handle)14
b(to)g(request)75 1097 y Fd(int)23 b(MPI)p 245 1097 15
2 v 17 w(Request)p 430 1097 V 16 w(init\(MPI)p 638 1097
V 17 w(Type)p 751 1097 V 16 w(request)g(type)p 1054 1097
V 17 w(req,)g(void)g(*extra)p 1453 1097 V 17 w(state,)g(MPI)p
1709 1097 V 17 w(Comm)393 1153 y(comm,)g(MPI)p 611 1153
V 17 w(TYPE)p 724 1153 V 17 w(Request)g(*request\))75
1240 y(MPI)p 150 1240 V 17 w(REQUEST)p 335 1240 V 16
w(INIT\(TYPE)p 567 1240 V 16 w(REQ,)g(EXTRA)p 822 1240
V 17 w(STATE,)g(COMM,)g(REQUEST,)g(IERROR\))170 1296
y(INTEGER)g(TYPE)p 460 1296 V 17 w(REQ,)g(EXTRA)p 716
1296 V 17 w(STATE,)g(COMM,)g(REQUEST,)g(IERROR)166 1383
y Fr(This)16 b(function)g(in)o(v)o(ok)o(es)f(the)g(callbac)o(k)h
(function)g Fl(init)p 1100 1383 14 2 v 17 w(fn)p Fr(.)21
b(In)15 b(C)g(this)h(is)g(de\014ned)g(as:)75 1464 y Fd(typedef)23
b(int)g(MPI_Request_init_fn\(MPI_Reque)o(st)e(type\\_req,)h(void)75
1521 y(*extra_state,)g(MPI_Comm)h(comm,)g(MPI_Request)f(request\);)166
1603 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 1659 y Fd(INTEGER)23
b(FUNCTION)g(REQUEST)p 652 1659 15 2 v 16 w(INIT)p 764
1659 V 17 w(FN\(TYPE)p 949 1659 V 16 w(REQ,)g(EXTRA)p
1204 1659 V 17 w(STATE,)g(COMM,)g(REQUEST\))170 1716
y(INTEGER)g(TYPE)p 460 1716 V 17 w(REQ,)g(EXTRA)p 716
1716 V 17 w(STATE,)g(COMM,)g(REQUEST)166 1802 y Fl(MPI)p
251 1802 14 2 v 16 w(REQUEST)p 470 1802 V 18 w(INIT)18
b Fr(in)o(v)o(ok)o(es)g(the)h(user)f(function)i Fl(init)p
1180 1802 V 17 w(fn)f Fr(with)f(input)i(argumen)o(ts)e
Fl(t)o(yp)q(e)p 1789 1802 V 17 w(req)p Fr(,)75 1859 y
Fl(extra)p 173 1859 V 16 w(state)p Fr(,)h Fl(comm)p Fr(,)d(and)i
Fl(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 1915 y Fl(MPI)p
160 1915 V 16 w(REQUEST)p 379 1915 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 1971 y(structures)j(of)g(the)h
(request.)29 b(It)18 b(can)h(return)f(in)h Fl(extra)p
1048 1971 V 17 w(state)g Fr(a)f(p)q(oin)o(ter)h(to)f(this)h(in)o
(ternal)g(structure)75 2028 y(since)g Fl(extra)p 287
2028 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 2084 y(user)g(function,)h Fl(MPI)p 457 2084
V 16 w(REQUEST)p 676 2084 V 18 w(INIT)e Fr(creates)g(and)h(returns)g
(in)g Fl(request)i Fr(a)d(handle)i(to)e(the)h(newly)75
2141 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 Fl(init)p 1345 2141
V 17 w(fn)15 b Fr(returns)g Fe(MPI)p 1645 2141 13 2 v
15 w(SUCCESS)e Fr(if)75 2197 y(it)i(succeeds.)21 b(The)16
b(consequence)g(of)f(returning)h(failure)g(is)g(discussed)h(later.)166
2294 y Fj(Discussion:)166 2344 y Fe(MPI)p 243 2344 V
14 w(REQUEST)p 445 2344 V 14 w(INIT)d Fi(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 2394 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 2444 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
2494 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 2543 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 2647 y Fr(A)k(request)f(is)h(b)q(egun)h(with)e(the)h
(curren)o(t)g Fl(MPI)e Fr(functions)j Fl(MPI)p 1284 2647
14 2 v 16 w(ST)l(ART)f Fr(and)g Fl(MPI)p 1631 2647 V
16 w(ST)l(ART)l(ALL)p Fr(.)75 2704 y(Calling)g(these)e(functions)h
(cause)f(the)h Fl(sta)o(rt)p 833 2704 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:)1967 46 y Fm(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 7
5 6 bop 75 -100 a Fk(6.2.)29 b(GENERALIZED)16 b(REQUESTS)1076
b Fr(5)75 49 y Fd(typedef)23 b(int)g(MPI_Request_start_fn\(void)e
(*extra_state,)h(MPI_Comm)h(comm,)75 106 y(MPI_Request)f(request\);)166
209 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 265 y Fd(INTEGER)23
b(FUNCTION)g(REQUEST)p 652 265 15 2 v 16 w(START)p 788
265 V 16 w(FN\(EXTRA)p 996 265 V 16 w(STATE,)h(COMM,)f(REQUEST\))170
322 y(INTEGER)g(EXTRA)p 484 322 V 17 w(STATE,)g(COMM,)g(REQUEST)166
408 y Fr(The)14 b(input)h Fl(extra)p 476 408 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 464
y(b)o(y)23 b(the)f Fl(init)p 295 464 V 17 w(fn)h Fr(callbac)o(k)h
(function.)43 b Fl(sta)o(rt)p 858 464 V 17 w(fn)23 b
Fr(ma)o(y)f(initiate)i(one)f(or)f(more)g(comm)o(unications,)j(as)75
521 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 Fl(MPI)p 1285
521 V 16 w(POST)p 1419 521 V 17 w(HANDLER)g Fr(function)g(in)75
577 y(Section)f Ff(??)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
634 y Fl(sta)o(rt)p 255 634 V 17 w(fn)k Fr(returns)g
Fe(MPI)p 565 634 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
690 y(co)q(de)c(is)g(discussed)g(later.)166 747 y(A)f(request)g(is)h
(mark)o(ed)f(completed)h(b)o(y)f(calling:)75 898 y Fl(MPI)p
160 898 14 2 v 16 w(REQUEST)p 379 898 V 18 w(MARK)p 528
898 V 16 w(COMPLETE\(request\))117 975 y Fi(INOUT)62
b Fl(request)452 b Fi(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 1099 y Fd(int)23 b(MPI)p 245
1099 15 2 v 17 w(Request)p 430 1099 V 16 w(mark)p 542
1099 V 17 w(complete\(MPI)p 847 1099 V 16 w(Request)g(*request\))75
1186 y(MPI)p 150 1186 V 17 w(REQUEST)p 335 1186 V 16
w(MARK)p 447 1186 V 17 w(COMPLETE\(REQUEST,)e(IERROR\))170
1242 y(INTEGER)i(REQUEST,)g(IERROR)166 1329 y Fr(This)16
b(function)g(in)o(v)o(ok)o(es)f(the)g(callbac)o(k)h(function)g
Fl(complete)p 1209 1329 14 2 v 17 w(fn)f Fr(de\014ned)i(as:)75
1432 y Fd(typedef)23 b(int)g(MPI_Request_complete_fn\(void)d
(*extra_state,)i(MPI_Request)h(request\);)166 1534 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 1591 y Fd(INTEGER)23 b(FUNCTION)g(REQUEST)p
652 1591 15 2 v 16 w(COMPLETE)p 860 1591 V 16 w(FN\(EXTRA)p
1068 1591 V 16 w(STATE,)g(REQUEST\))170 1647 y(INTEGER)g(EXTRA)p
484 1647 V 17 w(STATE,)g(TYPE)p 764 1647 V 17 w(REQ)166
1734 y Fl(MPI)p 251 1734 14 2 v 16 w(REQUEST)p 470 1734
V 18 w(MARK)p 619 1734 V 16 w(COMPLETE)c Fr(in)o(v)o(ok)o(es)g(the)g
(user)h(function)g Fl(complete)p 1592 1734 V 16 w(fn)g
Fr(with)f(input)75 1790 y(argumen)o(ts)d Fl(request)i
Fr(and)f Fl(extra)p 639 1790 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
1847 y(of)e Fl(MPI)p 212 1847 V 16 w(REQUEST)p 431 1847
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
1903 y(mation)g(in)g Fl(extra)p 381 1903 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 1960 y(a)e(call)h(to)f
Fl(MPI)p 337 1960 V 16 w Fn(f)p Fl(TEST)p Fn(j)p Fl(W)l(AIT)p
Fn(g)f Fr(will)j(indicate)g(that)d Fl(request)j Fr(has)e(completed.)166
2016 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 2073 y Fl(MPI)p 160 2073 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 Fl(MPI)p 1670 2073
V 16 w(REQUEST)p 1889 2073 V 18 w(FREE)75 2129 y Fr(whic)o(h)16
b(uses)g(the)f(callbac)o(k)h(function:)75 2232 y Fd(typedef)23
b(int)g(MPI_Request_free_function\(voi)o(d)e(*extra_state,)h(MPI_Comm)h
(comm,)75 2288 y(MPI_Request)f(request\);)166 2391 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 2448 y Fd(INTEGER)23 b(FUNCTION)g(REQUEST)p
652 2448 15 2 v 16 w(FREE)p 764 2448 V 17 w(FN\(EXTRA)p
973 2448 V 16 w(STATE,)g(COMM,)g(REQUEST\))170 2504 y(INTEGER)g(EXTRA)p
484 2504 V 17 w(STATE,)g(COMM,)g(REQUEST)166 2591 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
2647 y(w)o(ere)h(storted)f(in)i Fl(extra)p 485 2647 14
2 v 17 w(state)p Fr(.)166 2704 y(The)f Fl(cancel)p 378
2704 V 18 w(fn)g Fr(is)h(de\014ned)g(as:)-32 46 y Fm(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 8
6 7 bop 75 -100 a Fr(6)894 b Fk(CHAPTER)15 b(6.)35 b(EXTERNAL)16
b(INTERF)-5 b(A)o(CES)75 49 y Fd(typedef)23 b(int)g
(MPI_Request_cancel_fn\(void)e(*extra_state,)h(MPI_Comm)h(comm,)75
106 y(MPI_Request)f(request\);)166 212 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
268 y Fd(INTEGER)23 b(FUNCTION)g(REQUEST)p 652 268 15
2 v 16 w(CANCEL)p 812 268 V 16 w(FN\(EXTRA)p 1020 268
V 16 w(STATE,)g(COMM,)h(REQUEST\))170 325 y(INTEGER)f(EXTRA)p
484 325 V 17 w(STATE,)g(COMM,)g(TYPE)p 907 325 V 17 w(REQ)166
411 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 Fl(MPI)g Fr(when)h(the)g(request)f(is)h(cancelled)i(\(via)d(a)g
(call)i(to)75 468 y Fl(MPI)p 160 468 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 Fl(init)p 1351 468 V 17 w(fn)p Fr(,)f Fl(sta)o(rt)p
1518 468 V 17 w(fn)p Fr(,)g(or)g Fl(complete)p 1824 468
V 17 w(fn)75 524 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 581 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 637 y(via)g Fl(extra)p 247
637 V 17 w(state)p Fr(\).)166 694 y(Finally)l(,)26 b(since)d(allo)q
(cation)h(of)e(the)h Fl(t)o(yp)q(e)p 901 694 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
750 y(returned)16 b(to)e(the)h(system)g(with:)75 901
y Fl(MPI)p 160 901 V 16 w(TYPE)p 293 901 V 17 w(REQUEST)p
513 901 V 18 w(FREE\(t)o(yp)q(e)p 738 901 V 17 w(req\))117
978 y Fi(INOUT)62 b Fl(t)o(yp)q(e)p 401 978 V 18 w(req)430
b Fi(T)o(yp)q(e)14 b(of)g(request)h(to)f(b)q(e)g(freed)75
1103 y Fd(int)23 b(MPI)p 245 1103 15 2 v 17 w(Type)p
358 1103 V 17 w(request)p 543 1103 V 16 w(free\(MPI)p
751 1103 V 16 w(TYPE)p 863 1103 V 17 w(REQUEST)g(*type)p
1191 1103 V 16 w(req\))75 1189 y(MPI)p 150 1189 V 17
w(TYPE)p 263 1189 V 16 w(REQUEST)p 447 1189 V 17 w(FREE\(type)p
680 1189 V 16 w(req,)g(IERROR\))170 1246 y(INTEGER)g(TYPE)p
460 1246 V 17 w(REQ,)g(IERROR)166 1332 y Fr(It)14 b(is)h(legal)g(to)e
(free)i(a)f Fl(t)o(yp)q(e)p 625 1332 14 2 v 17 w(req)g
Fr(for)g(whic)o(h)h(an)f(activ)o(e)g Fl(request)i Fr(still)g(exists.)k
Fl(MPI)13 b Fr(will)j(deallo)q(ciate)75 1389 y(the)f
Fl(t)o(yp)q(e)p 236 1389 V 18 w(req)g Fr(when)h(it)f(is)h(safe)f(to)f
(do)i(so.)166 1445 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 1501 y(t)o(yp)q(e)15 b(of)g(request)g
(one)h(can)f(use:)75 1652 y Fl(MPI)p 160 1652 V 16 w(REQUEST)p
379 1652 V 18 w(TYPE\(request,)h(t)o(yp)q(e)p 776 1652
V 18 w(req\))117 1730 y Fi(IN)155 b Fl(request)452 b
Fi(request)117 1805 y(OUT)108 b Fl(t)o(yp)q(e)p 401 1805
V 18 w(req)430 b Fi(t)o(yp)q(e)15 b(of)e(request)75 1929
y Fd(int)23 b(MPI)p 245 1929 15 2 v 17 w(Request)p 430
1929 V 16 w(type\(MPI)p 638 1929 V 17 w(REQUEST)f(request,)h(MPI)p
1132 1929 V 17 w(TYPE)p 1245 1929 V 17 w(REQUEST)g(type)p
1549 1929 V 16 w(req\))75 2016 y(MPI)p 150 2016 V 17
w(REQUEST)p 335 2016 V 16 w(TYPE\(REQUEST,)f(TYPE)p 781
2016 V 17 w(REQ\))170 2072 y(INTEGER)h(REQUEST,)g(TYPE)p
675 2072 V 17 w(REQ)166 2199 y Fj(Missing:)166 2249 y
Fi(W)m(e)13 b(ha)o(v)o(e)g(not)h(carefully)f(de\014ned)h(what)g(this)f
(function)h(can)f(return.)19 b(Is)14 b(it)f(just)h(a)f(id)g(of)g(a)g
(generalized)h(re-)75 2299 y(quest?)k(What)11 b(if)g(other)h(requests)h
(are)f(giv)o(en?)17 b(Ho)o(w)11 b(do)q(es)h(it)f(relate)h(to)g(the)g
(MPI)p 1357 2299 13 2 v 15 w(REQUEST)p 1575 2299 V 15
w(PERSIST)m(ANT?)166 2443 y Fj(Missing:)166 2493 y Fi(It)k(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 Fi(,)h(so)f(that)g(new)h(op)q
(erations)75 2543 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 2592 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 2592
V 15 w(state)g(and)f(the)g(status)h(argumen)o(ts.)k(This)15
b(callbac)o(k)f(function)75 2642 y(transfers)h(information)10
b(from)i(the)i(extra)p 733 2642 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)
1967 46 y Fm(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 9
7 8 bop 75 -100 a Fk(6.2.)34 b(GENERALIZED)16 b(REQUESTS)1071
b Fr(7)75 49 y Fi(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 99 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
149 y(status)j(\014eld.)j(This)c(could)f(also)h(b)q(e)g(done)g(with)g
(extra)p 938 149 13 2 v 15 w(state)h(on)f(the)g(complete)f(call.)75
318 y Fg(6.2.3)49 b(F)o(ailed)17 b(User)e(F)o(unctions)h(and)g
(Cancelling)i(Requests)75 404 y Fr(When)i(a)f(callbac)o(k)h(function)h
(fails,)g Fl(MPI)d Fr(in)o(v)o(ok)o(es)i(callbac)o(k)g(function)h
Fl(cancel)p 1471 404 14 2 v 17 w(fn)p Fr(.)33 b(When)19
b Fl(cancel)p 1823 404 V 18 w(fn)75 460 y Fr(returns,)c
Fl(MPI)f Fr(terminates)h(the)g(request.)20 b(The)15 b
Fl(cancel)p 1032 460 V 17 w(fn)g Fr(should)h(cancel)h(all)e(in)o
(ternal)h(messages)f(and)75 517 y(free)g(all)h(in)o(ternal)g(data)f
(structures)g(asso)q(ciated)g(with)h(the)f(request.)166
614 y Fj(Missing:)166 663 y Fi(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 713 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
763 y(here.)166 907 y Fj(Discussion:)166 957 y Fi(Should)h(a)h(failure)
f(in)g Fe(free)p 580 957 13 2 v 16 w(fn)h Fi(in)o(v)o(ok)o(e)f
Fe(cancel)p 877 957 V 17 w(fn)p Fi(?)166 1007 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 1057 y(curren)o(tly)c(unrelated.)166 1107 y(Can)f
Fe(cancel)p 361 1107 V 16 w(fn)g Fi(fail?)j(If)c(so,)h(what)f(happ)q
(ens?)166 1156 y(I)h(don't)f(ha)o(v)o(e)h(an)o(y)f(brigh)o(t)h(ideas)g
(here.)166 1206 y(Should)f Fe(MPI)g Fi(in)o(v)o(ok)o(e)g
Fe(free)p 585 1206 V 16 w(fn)h Fi(immediately)d(after)j
Fe(cancel)p 1089 1206 V 16 w(fn)g Fi(for)g(all)e(dynamic)h(memory)e
(allo)q(cation?)166 1256 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 1306 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 1356
y(Stev)o(e)i(Lederman)e(raised)h(the)h(follo)o(wing)c(p)q(oin)o(ts:)166
1405 y(Should)i(there)i(b)q(e)g(a)e(default)h Fe(cancel)p
748 1405 V 16 w(fn)p Fi(?)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 1455
y(during)e(a)h(CANCEL)g(to)f(a)o(v)o(oid)f(writing)h(a)g
Fe(cancel)p 867 1455 V 17 w(fn)p Fi(.)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
1455 V 15 w(ABORT)p Fi(.)75 1505 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 1555
y(user)j(an)o(yw)o(a)o(y)m(.)166 1699 y Fj(Discussion:)166
1749 y Fi(Since)21 b(there)h(are)f(lots)g(of)f(p)q(oten)o(tial)g
Fe(comm)p 901 1749 V 13 w(req)i Fi(and)e(only)g(one)h(status)h
(returned)g(b)o(y)f Fe(MPI)p 1702 1749 V 14 w(W)m(AIT)f
Fi(or)75 1799 y Fe(MPI)p 152 1799 V 14 w(TEST)p Fi(,)d(it)f(is)g(not)g
(clear)h(where)h(the)f Fe(status)g Fi(for)f(eac)o(h)h
Fe(comm)p 1151 1799 V 13 w(req)g Fi(is)g(returned.)27
b(F)m(or)16 b(example,)g(ho)o(w)g(can)75 1849 y(y)o(ou)d(do)h(a)g
Fe(MPI)p 323 1849 V 14 w(TEST)p 441 1849 V 15 w(CANCELLED)g
Fi(to)f(see)j(whic)o(h)d Fe(comm)p 1048 1849 V 13 w(req)i
Fi(completed.)75 2018 y Fg(6.2.4)49 b(Example)17 b(of)f(MPI)p
556 2018 15 2 v 18 w(ALLGA)l(THER)75 2103 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
Fl(MPI)p 1392 2103 14 2 v 15 w(ALLGA)l(THER)p Fr(.)f(It)f(will)h(b)q(e)
75 2160 y(done)13 b(with)f(a)g(generalized)i(request)e(b)o(y)g(p)q
(erforming)h Fc(p)t Fn(\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 2216 y(in)k(the)f(comm)o
(unicator\).)166 2273 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
2329 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 Fn(\000)h Fr(1\)\045)p Fc(p)17 b Fr(and)g(sending)i(data)e
(to)75 2386 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 2442 y(shift)i Fc(p)11
b Fn(\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 2499 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 2555 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
2612 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 2668 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 Fm(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 10
8 9 bop 75 -100 a Fr(8)894 b Fk(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 Fl(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
Fn(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 Fn(\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 Fl(MPI)g Fr(to)g(call)h(y)o
(our)g Fl(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 Fm(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 11
9 10 bop 75 -100 a Fk(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 Fm(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 12
10 11 bop 75 -100 a Fr(10)876 b Fk(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 Fm(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 13
11 12 bop 75 -100 a Fk(6.2.)34 b(GENERALIZED)16 b(REQUESTS)1049
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 1607 y Fj(Missing:)166
1657 y Fi(The)14 b Fe(cancel)p 358 1657 13 2 v 17 w(fn)g
Fi(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.)1875
1713 y Fn(>)h Fm(\(July\))75 1826 y Fg(6.2.5)49 b(Alternative)16
b(p)o(rop)q(osal)75 1912 y Fr(The)i(original)h(prop)q(osal)f(relies)h
(on)f(comm)o(unication)g(handlers,)h(whic)o(h)g(is)f(there)g(in)g
Fl(MPI-2)f Fr(but)h(will)75 1969 y(b)q(e)e(required)g(only)g(in)g
(systems)f(ha)o(ving)g(full)i(threading)e(facilit)o(y)l(.)22
b(Without)15 b(handlers,)g(it)h(is)g(not)e(clear)75 2025
y(who)k(should)i(call)g Fl(MPI)p 494 2025 14 2 v 15 w(MARK)p
640 2025 V 17 w(COMPLETE)p Fr(.)e(The)h(lac)o(k)g(of)f(supp)q(ort)g
(for)g(generalized)j(requests)d(in)75 2081 y(some)e(systems)g(prev)o
(en)o(ts)f(in)i(those)f(systems)g(the)g(la)o(y)o(ered)h(implemen)o
(tation)g(of)f(extended)h(collectiv)o(e)75 2138 y(op)q(erations)e(and)h
(IO)g(op)q(erations)f(in)h Fl(MPI-2)166 2194 y Fr(This)f(alternativ)o
(e)f(prop)q(osal)g(aims)g(to)g(mak)o(e)f(generalized)j(requests)e
(usable)h(in)g(systems)f(without)75 2251 y(comm)o(unication)22
b(handlers.)39 b Fl(MPI)p 701 2251 V 16 w(MARK)p 848
2251 V 16 w(COMPLETE)22 b Fr(need)g(not)f(b)q(e)h(called)g(if)g
Fl(TEST/W)l(AIT)f Fr(is)75 2307 y(called)15 b(with)f(non-generalized,)h
(plain)g(requests,)e(whic)o(h)h(I)g(assume)f(ev)o(ery)g(generalized)i
(request)f(w)o(ould)75 2364 y(usually)j(main)o(tain)f(a)f(few)g
(inside.)23 b(This)16 b(can)g(b)q(e)g(ac)o(hiev)o(ed)g(b)o(y)g(adding)g
(a)f(new)h(callbac)o(k)g(function)h(for)75 2420 y(extracting)e(the)g
(in)o(ternal)h(non-generalized)i(requests)d(from)f(a)h(generalized)i
(request.)166 2477 y(It)12 b(is)g(prop)q(osed)g(that)f
Fl(MPI)p 624 2477 V 16 w(MARK)p 771 2477 V 16 w(COMPLETE)h
Fr(b)q(e)h(remo)o(v)o(ed,)e(and)h(that)f(the)h(callbac)o(k)h(function)
75 2533 y Fl(complete)p 248 2533 V 17 w(fn)g Fr(b)q(e)g(replaced)h
(with)g(a)e(new)h(callbac)o(k)h(function)g Fl(p)o(ro)q(ceed)p
1272 2533 V 17 w(fn)p Fr(,)f(whic)o(h)h(is)g(de\014ned)g(as)e(follo)o
(ws:)75 2639 y Fd(typedef)23 b(int)g(MPI_Request_proceed_fn\(void)e
(*extra_state,)h(MPI_Request)g(request,)528 2696 y(MPI_Request)h
(*subrequest,)f(MPI_Status)g(*status\);)-32 46 y Fm(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 14
12 13 bop 75 -100 a Fr(12)876 b Fk(CHAPTER)15 b(6.)30
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(PROCEED)p 836 106 V 16 w(FN\(EXTRA)p
1044 106 V 16 w(STATE,)g(REQUEST,)g(SUBREQUEST,)393 162
y(STATUS\))170 219 y(INTEGER)g(EXTRA)p 484 219 V 17 w(STATE,)g
(REQUEST,)g(SUBREQEST,)f(STATUS\(MPI)p 1385 219 V 16
w(STATUS)p 1545 219 V 16 w(SIZE\))166 305 y Fr(This)16
b(callbac)o(k)h(function)g(is)f(rep)q(eatedly)i(in)o(v)o(ok)o(ed)e(b)o
(y)f Fl(MPI)p 1208 305 14 2 v 16 w(TEST)p Fr(,)h Fl(MPI)p
1449 305 V 16 w(W)l(AIT)p Fr(,)f(and)h(the)g(other)75
362 y(completion)d(functions)f(passed)g(one)g(or)f(more)h(generalized)h
(requests)f(as)f(their)h(input)h(argumen)o(ts.)18 b(The)75
418 y(callbac)o(k)f(function)g(returns)f(one)g(of)g(the)g(requests)g
(main)o(tained)h(in)g(the)g(generalized)h(request)e(passed)75
474 y(in)h(to)f(the)g(function.)24 b(The)16 b(function)h(is)g(called)h
(with)e(the)h(request)f(as)g(an)g(input)h(that)f(w)o(ere)g(returned)75
531 y(b)o(y)h(the)h(previous)g(call)h(to)e(the)g(function.)28
b(The)17 b(initial)j(call)f(is)f(made)f(with)h Fe(MPI)p
1500 531 13 2 v 14 w(REQUEST)p 1702 531 V 14 w(NULL)g
Fr(as)75 587 y(an)d(input,)g(and)g(returning)g Fe(MPI)p
635 587 V 14 w(REQUEST)p 837 587 V 14 w(NULL)h Fr(signals)f(the)g(end)g
(of)g(the)f(rep)q(etition)i(to)e(the)h(calling)75 644
y(completion)h(function.)166 700 y(Subrequests)h(returned)h(b)o(y)e
Fl(p)o(ro)q(ceed)p 818 700 14 2 v 18 w(fn)h Fr(ma)o(y)f(ha)o(v)o(e)g(b)
q(een)i(created)f(b)o(y)g Fl(init)p 1492 700 V 17 w(fn)g
Fr(or)g Fl(sta)o(rt)p 1707 700 V 16 w(fn)p Fr(;)h(they)75
757 y(ma)o(y)12 b(also)h(b)q(e)g(created)g(b)o(y)g Fl(p)o(ro)q(ceed)p
685 757 V 17 w(fn)p Fr(.)19 b(If)13 b(some)g(subrequests)g(are)f(to)h
(b)q(e)g(started)f(in)i Fl(p)o(ro)q(ceed)p 1702 757 V
17 w(fn)p Fr(,)f(com-)75 813 y(pletion)f(of)e(the)h(generalized)h
(request)f(dep)q(ends)h(on)e(a)g(call)i(to)e Fl(p)o(ro)q(ceed)p
1267 813 V 17 w(fn)p Fr(,)i(and)e(hence,)i(to)e Fl(TEST/W)l(AIT)p
Fr(.)166 870 y Fl(extra)p 264 870 V 16 w(state)21 b Fr(is)f(an)f(input)
i(argumen)o(t)d(whic)o(h)i(the)g(completion)g(function)h(should)f
(extract)f(from)75 926 y(the)d(generalized)i(request)e(and)g(pass)g(to)
g Fl(p)o(ro)q(ceed)p 943 926 V 17 w(fn)p Fr(.)23 b Fl(request)18
b Fr(is)e(the)g(generalized)i(request)e(that)g(w)o(as)75
983 y(passed)k(as)e(an)i(input)g(to)f(the)g(completion)h(function.)34
b Fl(sub)o(request)22 b Fr(is)d(an)h(in-out)g(argumen)o(t;)g(initial)75
1039 y(input)15 b(to)e(the)i(argumen)o(t)e(is)h Fe(MPI)p
650 1039 13 2 v 15 w(REQUEST)p 853 1039 V 13 w(NULL)p
Fr(.)h(In)g(the)f(subsequen)o(t)g(calls,)h(the)g(request)f(returned)75
1095 y(b)o(y)g(the)g(previous)h(call)h(concerning)f(the)f(same)g
(generalized)i(request)e(is)h(giv)o(en)g(in)g(this)g(argumen)o(t,)e
(and)75 1152 y(the)j(input)h(request)f(is)h(already)f
Fb(c)n(omplete)n(d)p Fr(.)22 b(Note)15 b(that)h(if)g(the)g(previously)i
(returned)e(request)g(w)o(as)f(a)75 1208 y(non-p)q(ersisten)o(t)k
(request,)f Fl(sub)o(request)j Fr(is)e Fe(MPI)p 892 1208
V 14 w(REQUEST)p 1094 1208 V 14 w(NULL)p Fr(.)f Fl(p)o(ro)q(ceed)p
1387 1208 14 2 v 18 w(fn)g Fr(should)h(return)f(a)g(non-)75
1265 y(generalized)13 b(request)e(in)h Fl(sub)o(request)p
Fr(;)j(its)c(returning)g Fe(MPI)p 1065 1265 13 2 v 15
w(REQUEST)p 1268 1265 V 13 w(NULL)h Fr(signals)g(the)f(completion)h(of)
75 1321 y(the)g(generalized)i(request)e(to)f(the)h(calling)i
(completion)f(function.)19 b Fl(status)14 b Fr(is)f(also)f(an)g(in-out)
g(argumen)o(t;)75 1378 y(as)j(an)g(input)i(it)f(con)o(tains)f(the)h
(status)e(corresp)q(onding)j(to)e(the)g(request)h(passed)f(in)h
Fl(sub)o(request)p Fr(.)24 b(In)16 b(an)75 1434 y(initial)21
b(call,)g(the)e(v)m(alue)h(of)f Fl(status)i Fr(is)f(an)f(empt)o(y)g
(status.)30 b(As)19 b(an)g(output)g(argumen)o(t)f(the)i(returned)75
1491 y(v)m(alue)d(is)f(not)g(touc)o(hed)g(unless)h Fl(sub)o(request)h
Fr(returned)e(b)o(y)g(the)g(same)g(call)g(is)h Fe(MPI)p
1492 1491 V 14 w(REQUEST)p 1694 1491 V 14 w(NULL)p Fr(,)f(in)75
1547 y(whic)o(h)k(case)e(the)h(returned)h Fl(status)g
Fr(will)h(b)q(e)e(returned)h(b)o(y)e(the)h(calling)i(completion)f
(function)f(as)g(its)75 1604 y Fl(status)p Fr(.)j(A)15
b(table)h(of)e(inputs)j(and)e(outputs)g(of)g Fl(p)o(ro)q(ceed)p
1030 1604 14 2 v 17 w(fn)g Fr(is)h(sho)o(wn)f(b)q(elo)o(w:)p
164 1652 1623 2 v 188 1692 a(argumen)o(t)p 578 1709 2
57 v 227 w(input)548 b(output)p 164 1710 1623 2 v 188
1750 a Fl(extra)p 286 1750 14 2 v 17 w(state)p 578 1767
2 57 v 213 w Fr(extra)p 710 1750 14 2 v 16 w(state)14
b(k)o(ept)h(in)h(the)g(GR)121 b(N/A)188 1806 y Fl(request)p
578 1823 2 57 v 281 w Fr(the)15 b(generalized)i(request)197
b(N/A)188 1863 y Fl(sub)o(request)53 b Fr(initial)p 578
1880 V 52 w Fe(MPI)p 681 1863 13 2 v 14 w(REQUEST)p 883
1863 V 14 w(NULL)260 b Fr(a)15 b(non-generalized)i(request)438
1919 y(usual)p 578 1936 2 57 v 63 w(the)e(last)h Fl(sub)o(request)i
Fr(returned)104 b(a)15 b(non-generalized)i(request)438
1976 y(\014nal)p 578 1992 V 81 w(the)e(last)h Fl(sub)o(request)i
Fr(returned)104 b Fe(MPI)p 1334 1976 13 2 v 15 w(REQUEST)p
1537 1976 V 13 w(NULL)188 2032 y Fl(status)139 b Fr(initial)p
578 2049 2 57 v 52 w(an)15 b(empt)o(y)g(status)331 b(don't)15
b(care)438 2088 y(usual)p 578 2105 V 63 w(the)g(status)g(for)f(input)j
Fl(sub)o(request)52 b Fr(don't)15 b(care)438 2145 y(\014nal)p
578 2162 V 81 w(the)g(status)g(for)f(input)j Fl(sub)o(request)52
b Fr(returned)16 b(b)o(y)f Fl(TEST/W)l(AIT)p 164 2163
1623 2 v 189 2245 a Fb(A)n(dvic)n(e)c(to)h(implementors.)37
b Fr(The)11 b(usage)f(of)h Fl(p)o(ro)q(ceed)p 1102 2245
14 2 v 17 w(fn)g Fr(in)g(completion)h(functions)f(is)h(illustrated)189
2301 y(in)k(the)f(follo)o(wing)h(pseudo)g(co)q(de.)189
2421 y Fd(int)23 b(MPI_Wait\(MPI_Request)e(*request,)i(MPI_Status)f
(*status\))189 2478 y({)260 2534 y(MPI_Request)h(subrequest;)260
2647 y(/*)h(if)f(the)h(request)f(is)g(plain,)g(handle)g(it)48
b(as)23 b(we)h(do)g(now)f(*/)260 2704 y(if)h(\(!request->is_general\))d
({)1967 46 y Fm(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 15
13 14 bop 75 -100 a Fk(6.2.)29 b(GENERALIZED)16 b(REQUESTS)1054
b Fr(13)308 49 y Fd(return)23 b(non_generalized_wait\(reque)o(st,)e
(status\);)260 106 y(})260 219 y(/*)j(otherwise,)e(first)h(extract)g
(an)h(inner)f(request)g(*/)260 275 y(subrequest)g(=)g
(MPI_REQUEST_NULL;)260 332 y(request->proceed_fn\(request-)o(>extra_)o
(state,)737 388 y(request,)737 444 y(&subrequest,)737
501 y(status\);)260 614 y(/*)h(then)f(repeat)g(calling)g('plain)g
(wait')g(and)h(proceed_fn)332 670 y(until)f(the)g(latter)g(returns)g
(MPI_REQUEST_NULL)f(*/)260 727 y(while)h(\(subrequest)g(!=)g
(MPI_REQUEST_NULL\))f({)332 783 y(non_generalized_wait\(&sub)o(request)
o(,)f(status\);)332 840 y(request->proceed_fn\(reque)o(st->ext)o
(ra_stat)o(e,)809 896 y(&subrequest,)h(status\);)260
953 y(})260 1065 y(return)h(MPI_SUCCESS;)189 1122 y(})189
1243 y Fr(\()p Fb(End)15 b(of)i(advic)n(e)f(to)g(implementors.)p
Fr(\))166 1387 y Fj(Discussion:)23 b Fe(p)o(ro)q(ceed)p
556 1387 13 2 v 17 w(fn)18 b Fi(could)f(return)i(more)e(than)g(one)h
(in)o(ternal)f(requests)j(at)d(a)h(time)e(and)i(let)f(the)75
1437 y(completion)9 b(function)h(blo)q(c)o(k)h(on)f(them,)g(but)h(that)
g(w)o(ould)f(mak)o(e)f Fe(p)o(ro)q(ceed)p 1235 1437 V
17 w(fn)i Fi(and)f(its)h(usage)g(lo)q(ok)f(m)o(uc)o(h)f(messier.)166
1487 y(The)14 b(c)o(hanges)h(ab)q(o)o(v)o(e)e(supplies)i(a)e(few)h(of)g
("Missing")f(items)f(indicated)i(in)g(the)g(original)e(prop)q(osal.)145
1572 y Fh(\017)23 b Fi(Ho)o(w)18 b(can)g(w)o(e)h(use)g(status:)28
b(y)o(ou)18 b(can)h(put)f(whatev)o(er)h(y)o(ou)f(w)o(an)o(t)g(in)g
(status)h(in)f(a)g(call)g(to)g Fe(p)o(ro)q(ceed)p 1814
1572 V 17 w(fn)p Fi(,)189 1622 y(whic)o(h)c(w)o(orks)h(lik)o(e)f(a)h
(new)g(callbac)o(k)f(function)h(suggested)h(in)f(a)f("Missing")g
(paragraph)h(in)f(the)i(original)189 1672 y(prop)q(osal.)145
1746 y Fh(\017)23 b Fi(There)15 b(is)e(no)h(complete)f(function)h(in)f
(the)i(example:)i(no)o(w)c(there)i(is)f(none)g(in)g(the)g(prop)q(osal,)
f(either.)75 1950 y Fg(6.2.6)49 b(An)17 b(example)f(of)g(the)g
(alternative)g(p)o(rop)q(osal)75 2036 y Fr(The)c(example)h(for)f(the)g
(original)h(prop)q(osal)f(can)g(b)q(e)h(c)o(hanged)f(to)g(ha)o(v)o(e)f
(a)h Fl(p)o(ro)q(ceed)p 1471 2036 14 2 v 17 w(fn)h Fr(as)e(follo)o(ws)h
(instead)75 2092 y(of)j(a)g Fl(handler)p 306 2092 V 17
w(fn)g Fr(there:)75 2195 y Fd(int)23 b(proceed_fn\(void)f
(*extra_state,)433 2252 y(MPI_Request)g(*request,)433
2308 y(MPI_Status)g(*status\))75 2365 y({)147 2421 y(struct)h(my_extra)
f(*myextra)h(=)h(\(struct)f(my_extra)g(*\)extra_state;)147
2534 y(/*)g(myextra->phase)f(can)i(be)f(initialized)g(in)g(start_fn)g
(*/)147 2591 y(switch)g(\(myextra->phase\))e({)147 2647
y(case)i(1:)194 2704 y(*request)g(=)h(myextra->req_recv;)-32
46 y Fm(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 16
14 15 bop 75 -100 a Fr(14)871 b Fk(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)194 49 y Fd(break;)147
106 y(case)23 b(2:)194 162 y(MPI_Request_free\(request\);)194
219 y(*request)g(=)h(myextra->req_send;)194 275 y(break;)147
332 y(case)f(3:)194 388 y(MPI_Request_free\(request\);)194
444 y(*request)g(=)h(MPI_Request_null;)194 501 y(/*)g(fill)f(status)g
(as)h(you)f(like)h(*/)194 557 y(break;)147 614 y(})147
670 y(myextra->phase++;)147 727 y(return)f(MPI_SUCCESS;)75
783 y(})-117 837 y Fn(?)15 b Fm(\(July\))75 976 y Fo(6.3)59
b(Communicato)n(r)22 b(ID)75 1078 y Fr(Pro\014ling)14
b(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
1134 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 1191 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 1247 y(Th)o(us,)c(the)g(follo)o
(wing)h(call)g(is)g(giv)o(en:)75 1398 y Fl(MPI)p 160
1398 14 2 v 16 w(COMMUNICA)l(TOR)p 542 1398 V 18 w(ID\(comm,)c(id\))117
1475 y Fi(IN)155 b Fl(comm)470 b Fi(Comm)o(unicator)11
b(to)j(return)h(id)e(of)117 1550 y(OUT)108 b Fl(id)553
b Fi(id)14 b(of)f(comm)75 1675 y Fd(int)23 b(MPI)p 245
1675 15 2 v 17 w(Communicator)p 550 1675 V 16 w(id\(MPI)p
710 1675 V 16 w(Comm)g(comm,)h(int)f(*id\))75 1761 y(MPI)p
150 1761 V 17 w(COMMUNICATOR)p 455 1761 V 15 w(ID\(COMM,)g(ID\))170
1818 y(INTEGER)g(COMM,)h(ID)166 1904 y Fr(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.)189
2010 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 2067 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 2123 y(loss)h(is)h(the)f(error)f(co)q(de)
i(but)g(this)f(seemed)h(acceptable.)21 b(\()p Fb(End)16
b(of)g(r)n(ationale.)p Fr(\))166 2230 y(T)l(o)e(sp)q(ecify)h(the)f
(uniqueness)i(of)e Fl(ID)g Fr(returned,)g(the)g(k)o(ey)g
Fe(MPI)p 1228 2230 13 2 v 15 w(COMM)p 1373 2230 V 14
w(ID)p 1429 2230 V 15 w(IS)p 1479 2230 V 14 w(UNIQUE)f
Fr(is)h(a)o(v)m(ailable)75 2286 y(on)h Fe(MPI)p 215 2286
V 14 w(COMM)p 359 2286 V 15 w(W)o(ORLD)p Fr(.)g(This)h(attribute)f
(returns)g(one)g(of)g(the)g(follo)o(wing)h(v)m(alues:)75
2380 y Fe(MPI)p 152 2380 V 14 w(COMM)p 296 2380 V 15
w(ID)p 353 2380 V 14 w(UNIQUE)22 b Fr(Means)c(that)h(the)g(v)m(alues)h
(returned)g(b)o(y)f Fl(MPI)p 1353 2380 14 2 v 16 w(COMMUNICA)l(TOR)p
1735 2380 V 18 w(ID)f Fr(are)189 2436 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 Fl(MPI)g Fr(job.)75 2530 y Fe(MPI)p 152
2530 13 2 v 14 w(COMM)p 296 2530 V 15 w(ID)p 353 2530
V 14 w(GLOBAL)23 b Fr(Means)18 b(that)g(the)g(v)m(alues)i(returned)e(b)
o(y)h Fl(MPI)p 1354 2530 14 2 v 16 w(COMMUNICA)l(TOR)p
1736 2530 V 17 w(ID)f Fr(are)189 2587 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 2643 y(the)c(en)o(tire)h
Fl(MPI)e Fr(job.)1967 46 y Fm(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 17
15 16 bop 75 -100 a Fk(6.4.)34 b(A)o(CCESSING)15 b Fl(MPI)g
Fk(D)o(A)l(T)l(A)l(TYPES)994 b Fr(15)75 49 y Fe(MPI)p
152 49 13 2 v 14 w(COMM)p 296 49 V 15 w(ID)p 353 49 V
14 w(NOT)p 455 49 V 16 w(GLOBAL)22 b Fr(Means)14 b(that)g(the)g(v)m
(alues)i(returned)f(b)o(y)f Fl(MPI)p 1433 49 14 2 v 16
w(COMMUNICA)l(TOR)p 1815 49 V 18 w(ID)189 106 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.)-1876 b Fn(>)15 b Fm(\(July\))75
198 y Fe(MPI)p 152 198 13 2 v 14 w(COMM)p 296 198 V 15
w(ID)p 353 198 V 14 w(NOT)p 455 198 V 16 w(UNIQUE)21
b Fr(Means)15 b(that)f(the)i(v)m(alues)g(returned)g(b)o(y)f
Fl(MPI)p 1433 198 14 2 v 16 w(COMMUNICA)l(TOR)p 1815
198 V 18 w(ID)189 254 y Fr(are)g(not)f(necessarily)j(di\013eren)o(t)e
(for)g(di\013eren)o(t)g(comm)o(unicators)g(on)g(the)h(same)e(pro)q
(cess.)166 384 y Fj(Discussion:)166 434 y Fi(It)e(has)h(b)q(een)g(prop)
q(osed)g(that)g(these)g(b)q(e)g(compile)e(time)g(\015ags.)17
b(I)12 b(am)f(not)h(inclined)g(to)g(write)g(this)h(up)f(unless)75
484 y(it)i(gets)g(supp)q(ort.)19 b(F)m(ortran)14 b(is)f(alw)o(a)o(ys)g
(a)h(problem)e(with)i(this)g(idea.)1875 539 y Fn(?)i
Fm(\(July\))189 632 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 689 y Fl(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
745 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
802 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
858 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 915 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 971 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 1027 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(\))1875 1083
y Fn(>)g Fm(\(July\))189 1173 y Fb(A)n(dvic)n(e)23 b(to)h
(implementors.)91 b Fr(The)24 b(return)g(v)m(alue)h(of)e
Fe(MPI)p 1289 1173 13 2 v 14 w(COMM)p 1433 1173 V 15
w(ID)p 1490 1173 V 15 w(NOT)p 1593 1173 V 15 w(UNIQUE)f
Fr(from)189 1230 y Fl(MPI)p 274 1230 14 2 v 15 w(COMMUNICA)l(TOR)p
655 1230 V 18 w(ID)e Fr(allo)o(ws)g(one)g(to)g(implemen)o(t)h(this)g
(function)g(so)f(that)f(it)i(simply)189 1286 y(returns)16
b(a)h(set)f(v)m(alue)i(ev)o(ery)f(time)g(without)f(doing)h(an)o(y)g(w)o
(ork.)23 b(A)17 b(high)h(qualit)o(y)f(implemen)o(ta-)189
1342 y(tion)e(will)i(a)o(v)o(oid)e(doing)h(this.)k(\()p
Fb(End)15 b(of)i(advic)n(e)f(to)h(implementors.)p Fr(\))1875
1398 y Fn(?)f Fm(\(July\))75 1529 y Fo(6.4)59 b(Accessing)20
b(MPI)g(Datat)n(yp)r(es)75 1631 y Fl(MPI-1)14 b 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
1687 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 1744 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 1800 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
1857 y(this.)166 1913 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 1970 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 Fl(MPI)p 1212
1970 V 15 w(PUT)20 b Fr(and)h Fl(MPI)p 1514 1970 V 15
w(GET)g Fr(discussed)g(in)75 2026 y(Chapter)13 b Ff(??)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
2083 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 2139 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 2195 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
2252 y(sp)q(ecify)l(.)166 2308 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
Fl(MPI)e Fr(pro\014ler,)i(tracer,)75 2365 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
2421 y(accessed)h(b)o(y)f Fl(MPI)p Fr(.)f(Use)i(of)f
Fl(MPI)p 647 2421 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
2478 y Fl(MPI)h Fr(accesses,)g(but)g(not)g Fb(wher)n(e)p
Fr(.)166 2534 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 2591 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.)75 2647 y(Files)e(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 2704 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 Fl(MPI)-32 46 y Fm(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 18
16 17 bop 75 -100 a Fr(16)871 b Fk(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y Fr(datat)o(yp)q(e)15
b(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
106 y(a)g(la)o(y)o(out)g(of)f(data)h(in)h(a)f(\014le)h(is)g(natural.)
166 162 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
219 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 275 y(a)g(general)h(data)e(la)o(y)o
(out)h(represen)o(tation.)166 332 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 388 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 444 y(datat)o(yp)q(e.)75
566 y Fg(6.4.1)49 b(Lo)o(w)17 b(level)g(datat)o(yp)q(e)f(accessing)75
693 y Fj(Missing:)166 742 y Fi(A)e(sligh)o(tly)e(mo)q(di\014ed)h(v)o
(ersion)h(of)f(this)h(section)h(is)e(exp)q(ected)j(so)q(on.)75
941 y Fl(MPI)p 160 941 14 2 v 16 w(TYPE)p 293 941 V 17
w(ENVELOPE\(datat)o(yp)q(e,)h(count,)f(combiner\))117
1018 y Fi(IN)155 b Fl(datat)o(yp)q(e)424 b Fi(datat)o(yp)q(e)14
b(to)g(access)117 1093 y(OUT)108 b Fl(count)482 b Fi(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(in)h Fe(datat)o(yp)q(e)117 1168
y Fi(OUT)108 b Fl(combiner)414 b Fi(\015ag)16 b(indicating)g(the)h
(constructor)h(function)e(used)i(for)e(cre-)905 1225
y(ating)d Fe(datat)o(yp)q(e)75 1349 y Fd(int)23 b(MPI)p
245 1349 15 2 v 17 w(Type)p 358 1349 V 17 w(envelope\(MPI)p
663 1349 V 15 w(Datatype)g(datatype,)g(int*)g(count,)g(int*)g
(combiner\))75 1435 y(MPI)p 150 1435 V 17 w(TYPE)p 263
1435 V 16 w(ENVELOPE\(DATATYPE,)f(COUNT,)h(COMBINER,)f(IERROR\))170
1492 y(INTEGER)h(DATATYPE,)g(COUNT,)g(COMBINER,)g(IERROR)166
1578 y Fr(Giv)o(en)16 b(an)f Fl(MPI)f Fr(datat)o(yp)q(e)h
Fl(datat)o(yp)q(e)p Fr(,)h(returns)f(in)h Fl(combiner)f
Fr(one)h(of)e(the)i(constan)o(ts:)143 1685 y Fn(\017)23
b Fe(MPI)p 266 1685 13 2 v 14 w(BASIC)143 1778 y Fn(\017)g
Fe(MPI)p 266 1778 V 14 w(CONTIG)143 1872 y Fn(\017)g
Fe(MPI)p 266 1872 V 14 w(VECTOR)143 1966 y Fn(\017)g
Fe(MPI)p 266 1966 V 14 w(HVECTOR)143 2060 y Fn(\017)g
Fe(MPI)p 266 2060 V 14 w(INDEXED)143 2154 y Fn(\017)g
Fe(MPI)p 266 2154 V 14 w(HINDEXED)143 2247 y Fn(\017)g
Fe(MPI)p 266 2247 V 14 w(STRUCT)166 2354 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 2410 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 2467 y(If)f Fl(combiner)f Fr(is)g Fe(MPI)p 516 2467
V 15 w(BASIC)p Fr(,)e(then)j(the)f(returned)h Fl(count)h
Fr(is)f(1;)f(if)h Fl(combiner)f Fr(is)h(an)o(ything)f(else)i(\(i.e.,)75
2523 y Fe(MPI)p 152 2523 V 14 w(CONTIG)p Fr(,)21 b Fe(MPI)p
430 2523 V 14 w(VECTOR)p Fr(,)g Fe(MPI)p 719 2523 V 14
w(HVECTOR)p Fr(,)g Fe(MPI)p 1037 2523 V 14 w(INDEXED)p
Fr(,)g Fe(MPI)p 1339 2523 V 15 w(HINDEXED)p Fr(,)g Fe(MPI)p
1671 2523 V 14 w(STRUCT)p Fr(\),)75 2580 y(then)10 b(the)h(returned)f
Fl(count)i Fr(is)e(the)h Fl(count)g Fr(argumen)o(t)e(passed)i(in)g(to)e
(the)h(corresp)q(onding)i Fl(MPI)p 1655 2580 14 2 v 15
w(TYPE)p 1787 2580 V 17 w(XXX)75 2636 y Fr(function)f(\(resp)q(ectiv)o
(ely:)19 b Fl(MPI)p 614 2636 V 15 w(TYPE)p 746 2636 V
17 w(CONTIGUOUS)p Fr(,)12 b Fl(MPI)p 1158 2636 V 16 w(TYPE)p
1291 2636 V 16 w(VECTOR)p Fr(,)f Fl(MPI)p 1592 2636 V
16 w(TYPE)p 1725 2636 V 17 w(HVECTOR)p Fr(,)75 2692 y
Fl(MPI)p 160 2692 V 16 w(TYPE)p 293 2692 V 17 w(INDEXED)p
Fr(,)j Fl(MPI)p 614 2692 V 16 w(TYPE)p 747 2692 V 17
w(HINDEXED)p Fr(,)h Fl(MPI)p 1101 2692 V 16 w(TYPE)p
1234 2692 V 17 w(STRUCT)p Fr(\).)1967 46 y Fm(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 19
17 18 bop 75 -100 a Fk(6.4.)34 b(A)o(CCESSING)15 b Fl(MPI)g
Fk(D)o(A)l(T)l(A)l(TYPES)994 b Fr(17)166 49 y Fj(Discussion:)20
b Fi(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
Fi(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 Fi(,)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 Fi(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 Fi(do)g(lo)q(ok)g(b)q(etter.)166
355 y(Also,)k(what)g(should)g(b)q(e)g(returned)i(in)e
Fe(combiner)g Fi(for)g(a)g(com)o(binded)f(datat)o(yp)q(e)h(for)g(lo)q
(cater)g(op)q(erations,)75 411 y(suc)o(h)d(as)f Fe(MPI)p
295 411 V 14 w(2REAL)f Fi(and)h Fe(MPI)p 599 411 V 14
w(DOUBLE)p 778 411 V 14 w(INT)p Fi(?)g(Should)f(it)h(b)q(e)g
Fe(MPI)p 1202 411 V 15 w(CONTIG)e Fi(and)i Fe(MPI)p 1538
411 V 14 w(STRUCT)p Fi(,)f(or)h(a)g(y)o(et)75 468 y(another)h(new)h
(constan)o(t?)75 666 y Fl(MPI)p 160 666 14 2 v 16 w(TYPE)p
293 666 V 17 w(CONTENTS\(datat)o(yp)q(e,)e(sta)o(rt,)e(count,)h(a)o
(rra)o(y)p 1092 666 V 15 w(blo)q(cklens,)g(stride,)g(a)o(rra)o(y)p
1526 666 V 14 w(disps,)h(a)o(rra)o(y)p 1752 666 V 14
w(t)o(yp)q(es\))117 800 y Fi(IN)155 b Fl(datat)o(yp)q(e)424
b Fi(datat)o(yp)q(e)14 b(to)g(access)117 873 y(IN)155
b Fl(sta)o(rt)501 b Fi(index)14 b(of)f(\014rst)i(elemen)o(ts)f(to)f
(access)117 946 y(IN)155 b Fl(count)482 b Fi(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(to)h(access)117 1019 y(OUT)108 b
Fl(a)o(rra)o(y)p 416 1019 V 15 w(blo)q(cklens)306 b Fi(arra)o(y)14
b(of)f(blo)q(c)o(klengths)117 1093 y(OUT)108 b Fl(a)o(rra)o(y)p
416 1093 V 15 w(disps)386 b Fi(arra)o(y)14 b(of)f(displacemen)o(ts)h
(or)f(stride,)i(expressed)h(in)d(in)o(teger)117 1166
y(OUT)108 b Fl(a)o(rra)o(y)p 416 1166 V 15 w(hdisps)363
b Fi(arra)o(y)9 b(of)g(displacemen)o(ts)g(or)g(stride,)i(expressed)g
(in)e(MPI)p 1790 1166 13 2 v 15 w(Ain)o(t)117 1239 y(OUT)108
b Fl(a)o(rrry)p 411 1239 14 2 v 15 w(t)o(yp)q(es)385
b Fi(arra)o(y)14 b(of)f(elemen)o(t)g(t)o(yp)q(es)75 1364
y Fd(int)23 b(MPI)p 245 1364 15 2 v 17 w(Type)p 358 1364
V 17 w(contents\(MPI)p 663 1364 V 15 w(Datatype)g(datatype,)g(int)g
(start,)g(int)h(count,)393 1420 y(int)g(*array)p 636
1420 V 16 w(blocklens,)e(int)i(*array)p 1154 1420 V 16
w(disps,)f(MPI)p 1409 1420 V 17 w(Aint)g(*array)p 1689
1420 V 17 w(hdisps,)393 1476 y(MPI)p 468 1476 V 17 w(Datatype)g(*array)
p 844 1476 V 16 w(types\))75 1563 y(MPI)p 150 1563 V
17 w(TYPE)p 263 1563 V 16 w(CONTENTS\(DATATYPE,)f(START,)h(COUNT,)g
(ARRAY)p 1187 1563 V 16 w(BLOCKLENS,)g(ARRAY)p 1586 1563
V 16 w(DISPS,)393 1619 y(ARRAY)p 516 1619 V 17 w(HDISPS,)g(ARRAY)p
844 1619 V 16 w(TYPES,)g(IERROR\))170 1676 y(INTEGER)g(DATATYPE,)g
(START,)g(COUNT,)g(ARRAY)p 1057 1676 V 17 w(BLOCKLENS\(*\),)f(ARRAY)p
1528 1676 V 16 w(DISPS\(*\),)170 1732 y(ARRAY)p 293 1732
V 17 w(HDISPS\(*\),)g(ARRAY)p 692 1732 V 17 w(TYPES\(*\),)h(IERROR)166
1819 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 Fl(datat)o(yp)q(e)f
Fr(except)f(it)g(skips)75 1875 y(the)k(\014rst)g Fl(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 Fl(count)h Fr(datat)o(yp)q(es.)166 1932
y(More)e(sp)q(eci\014cally)m(,)j(If)f Fl(count)g Fr(is)g
Fn(\024)d Fr(0,)h(then)i(nothing)g(is)f(returned;)166
1988 y(otherwise,)e(if)g(the)f Fl(combiner)g Fr(returned)h(b)o(y)f
Fl(MPI)p 1005 1988 14 2 v 16 w(TYPE)p 1138 1988 V 17
w(ENVELOPE)h Fr(w)o(as)f Fe(MPI)p 1557 1988 13 2 v 14
w(BASIC)p Fr(,)e Fl(datat)o(yp)q(e)75 2045 y Fr(is)16
b(returned)f(in)h Fl(a)o(rra)o(y)p 456 2045 14 2 v 15
w(t)o(yp)q(es[0])p Fr(.)21 b Fl(a)o(rra)o(y)p 746 2045
V 15 w(blo)q(cklens)p Fr(,)16 b Fl(a)o(rra)o(y)p 1056
2045 V 15 w(disps)p Fr(,)g(and)g Fl(a)o(rra)o(y)p 1375
2045 V 14 w(hdisps)h Fr(are)e(not)g(mo)q(di\014ed.)166
2148 y Fj(Discussion:)g Fi(Will)d(passing)h(a)g(basic)g(datat)o(yp)q(e)
h(to)f(MPI)p 1095 2148 13 2 v 15 w(TYPE)p 1227 2148 V
16 w(ENVELOPE)h(b)q(e)g(necessary?)20 b(I)13 b(think)75
2205 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
2308 y Fr(If)23 b(the)h Fl(combiner)e Fr(returned)i(b)o(y)f
Fl(MPI)p 850 2308 14 2 v 16 w(TYPE)p 983 2308 V 17 w(ENVELOPE)h
Fr(w)o(as)e Fe(MPI)p 1423 2308 13 2 v 15 w(CONTIG)p Fr(,)f(then)j
Fl(oldt)o(yp)q(e)75 2365 y Fr(passed)15 b(to)f Fl(MPI)p
359 2365 14 2 v 16 w(TYPE)p 492 2365 V 16 w(CONTIGUOUS)j
Fr(to)d(construct)g Fl(datat)o(yp)q(e)i Fr(is)f(returned)g(in)g
Fl(a)o(rra)o(y)p 1622 2365 V 15 w(t)o(yp)q(es[0])p Fr(.)21
b Fl(Ar-)75 2421 y(ra)o(y)p 136 2421 V 15 w(blo)q(cklens)p
Fr(,)c Fl(a)o(rra)o(y)p 447 2421 V 14 w(disps)p Fr(,)g(and)e
Fl(a)o(rra)o(y)p 765 2421 V 15 w(hdisps)i Fr(are)e(not)g(mo)q
(di\014ed.)166 2478 y(If)k(the)g Fl(combiner)f Fr(returned)h(b)o(y)g
Fl(MPI)p 828 2478 V 15 w(TYPE)p 960 2478 V 17 w(ENVELOPE)h
Fr(w)o(as)e Fe(MPI)p 1392 2478 13 2 v 14 w(VECTOR)p Fr(,)f(then)i
Fl(blo)q(cklen)p Fr(,)75 2534 y Fl(stride)k Fr(and)g
Fl(oldt)o(yp)q(e)g Fr(passed)g(to)f Fl(MPI)p 757 2534
14 2 v 15 w(TYPE)p 889 2534 V 17 w(VECTOR)i Fr(to)d(construct)h
Fl(datat)o(yp)q(e)i Fr(are)e(returned)h(in)75 2591 y
Fl(a)o(rra)o(y)p 173 2591 V 15 w(blo)q(cklens[0])p Fr(,)15
b Fl(a)o(rra)o(y)p 531 2591 V 14 w(disps[0])h Fr(and)d
Fl(a)o(rra)o(y)p 882 2591 V 15 w(t)o(yp)q(es[0])p Fr(,)i(resp)q(ectiv)o
(ely)l(.)21 b Fl(a)o(rra)o(y)p 1427 2591 V 15 w(hdisps)16
b Fr(is)e(not)f(mo)q(di\014ed.)166 2647 y(If)18 b(the)g
Fl(combiner)f Fr(returned)h(b)o(y)g Fl(MPI)p 823 2647
V 16 w(TYPE)p 956 2647 V 17 w(ENVELOPE)h Fr(w)o(as)d(or)i
Fe(MPI)p 1444 2647 13 2 v 14 w(HVECTOR)p Fr(,)e(then)j(then)75
2704 y Fl(blo)q(cklen)p Fr(,)k Fl(stride)f Fr(and)f Fl(oldt)o(yp)q(e)h
Fr(passed)g(to)e Fl(MPI)p 940 2704 14 2 v 16 w(TYPE)p
1073 2704 V 16 w(VECTOR)j Fr(to)d(construct)h Fl(datat)o(yp)q(e)h
Fr(are)f(re-)-32 46 y Fm(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 20
18 19 bop 75 -100 a Fr(18)871 b Fk(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y Fr(turned)14
b(in)h Fl(a)o(rra)o(y)p 370 49 14 2 v 14 w(blo)q(cklens[0])p
Fr(,)g Fl(a)o(rra)o(y)p 727 49 V 15 w(hdisps[0])h Fr(and)e
Fl(a)o(rra)o(y)p 1103 49 V 14 w(t)o(yp)q(es[0])p Fr(,)h(resp)q(ectiv)o
(ely)l(.)21 b Fl(a)o(rra)o(y)p 1647 49 V 15 w(disps)15
b Fr(is)f(not)75 106 y(mo)q(di\014ed.)166 162 y(If)h(the)h
Fl(combiner)e Fr(is)i Fe(MPI)p 600 162 13 2 v 14 w(INDEXED)p
Fr(,)e Fe(MPI)p 895 162 V 15 w(HINDEXED)p Fr(,)g(or)h
Fe(MPI)p 1276 162 V 14 w(STRUCT)p Fr(,)f(then)i(de\014ne)g
Fl(\014lled)p Fr(:)189 266 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 273 y Fr(con)758
266 y Fc(;)g Fb(c)n(ount)885 273 y Fr(en)o(v)965 266
y Fn(\000)j Fb(start)p Fr(\)\))166 370 y(where)75 462
y Fb(c)n(ount)182 469 y Fr(con)275 462 y Fl(count)16
b Fr(returned)g(b)o(y)f Fl(MPI)p 729 462 14 2 v 16 w(TYPE)p
862 462 V 17 w(ENVELOPE)75 556 y Fb(start)23 b Fl(sta)o(rt)15
b Fr(passed)h(in)g(to)e Fl(MPI)p 628 556 V 16 w(TYPE)p
761 556 V 17 w(CONTENTS)75 649 y Fb(c)n(ount)182 656
y Fr(en)o(v)275 649 y Fl(count)i Fr(passed)g(in)g(to)e
Fl(MPI)p 734 649 V 16 w(TYPE)p 867 649 V 17 w(CONTENTS)166
741 y Fr(If)19 b(the)f Fl(combiner)g Fr(returned)h(b)o(y)g
Fl(MPI)p 827 741 V 15 w(TYPE)p 959 741 V 17 w(ENVELOPE)h
Fr(w)o(as)d Fe(MPI)p 1390 741 13 2 v 15 w(INDEXED)p Fr(,)g(then)i
Fl(\014lled)g Fr(el-)75 797 y(emen)o(ts,)k(starting)f(from)f
Fl(sta)o(rt)p Fr(,)j(of)d Fl(a)o(rra)o(y)p 819 797 14
2 v 15 w(of)p 871 797 V 16 w(blo)q(cklengths)j Fr(and)f
Fl(a)o(rra)o(y)p 1335 797 V 14 w(of)p 1386 797 V 16 w(displacements)h
Fr(passed)f(to)75 854 y Fl(MPI)p 160 854 V 16 w(TYPE)p
293 854 V 17 w(INDEXED)18 b Fr(to)g(construct)g Fl(datat)o(yp)q(e)i
Fr(are)e(returned)h(in)g(the)f(\014rst)g Fl(\014lled)h
Fr(p)q(ositions)h(of)e Fl(a)o(r-)75 910 y(ra)o(y)p 136
910 V 15 w(blo)q(cklens)f Fr(and)e Fl(a)o(rra)o(y)p 522
910 V 15 w(disps)p Fr(,)h(resp)q(ectiv)o(ely)h(and)e
Fl(oldt)o(yp)q(e)h Fr(passed)g(to)e(the)h(same)g(constructor)f(func-)75
967 y(tion)h(is)h(returned)g(in)g Fl(a)o(rra)o(y)p 550
967 V 14 w(t)o(yp)q(es[0])p Fr(.)22 b Fl(a)o(rra)o(y)p
840 967 V 14 w(hdisps)17 b Fr(is)f(not)f(mo)q(di\014ed.)166
1023 y(If)23 b(the)f Fl(combiner)h Fr(returned)g(b)o(y)f
Fl(MPI)p 847 1023 V 16 w(TYPE)p 980 1023 V 17 w(ENVELOPE)h
Fr(w)o(as)f Fe(MPI)p 1419 1023 13 2 v 15 w(HINDEXED)p
Fr(,)f(then)i Fl(\014lled)75 1079 y Fr(elemen)o(ts,)d(starting)e(from)g
Fl(sta)o(rt)p Fr(,)h(of)f Fl(a)o(rra)o(y)p 833 1079 14
2 v 15 w(of)p 885 1079 V 16 w(blo)q(cklengths)j Fr(and)e
Fl(a)o(rra)o(y)p 1342 1079 V 14 w(of)p 1393 1079 V 16
w(displacements)i Fr(passed)e(to)75 1136 y Fl(MPI)p 160
1136 V 16 w(TYPE)p 293 1136 V 17 w(HINDEXED)h Fr(for)g(constructing)g
Fl(datat)o(yp)q(e)i Fr(are)e(returned)g(in)h(the)f(\014rst)g
Fl(\014lled)h Fr(p)q(ositions)75 1192 y(of)15 b Fl(a)o(rra)o(y)p
225 1192 V 14 w(blo)q(cklens)j Fr(and)d Fl(a)o(rra)o(y)p
611 1192 V 15 w(hdisps)p Fr(,)i(resp)q(ectiv)o(ely)g(and)e
Fl(oldt)o(yp)q(e)i Fr(passed)e(to)g(the)h(same)f(constructor)75
1249 y(function)h(is)g(returned)f(in)h Fl(a)o(rra)o(y)p
634 1249 V 15 w(t)o(yp)q(es[0])p Fr(.)21 b Fl(a)o(rra)o(y)p
924 1249 V 15 w(disps)c Fr(is)e(not)g(mo)q(di\014ed.)166
1305 y(If)j(the)h Fl(combiner)e Fr(returned)i(b)o(y)f
Fl(MPI)p 825 1305 V 16 w(TYPE)p 958 1305 V 16 w(ENVELOPE)i
Fr(w)o(as)d Fe(MPI)p 1388 1305 13 2 v 14 w(STRUCT)p Fr(,)g(then)i
Fl(\014lled)g Fr(ele-)75 1362 y(men)o(ts,)13 b(starting)f(from)g
Fl(sta)o(rt)p Fr(,)i(of)e Fl(a)o(rra)o(y)p 751 1362 14
2 v 15 w(of)p 803 1362 V 16 w(blo)q(cklengths)p Fr(,)j
Fl(a)o(rra)o(y)p 1175 1362 V 15 w(of)p 1227 1362 V 16
w(displacements)p Fr(,)g(and)e Fl(a)o(rra)o(y)p 1712
1362 V 15 w(of)p 1764 1362 V 16 w(t)o(yp)q(es)75 1418
y Fr(passed)h(to)f Fl(MPI)p 357 1418 V 16 w(TYPE)p 490
1418 V 16 w(STRUCT)i Fr(for)e(constructing)h Fl(datat)o(yp)q(e)h
Fr(are)e(returned)h(in)h(the)e(\014rst)h Fl(\014lled)g
Fr(p)q(osi-)75 1475 y(tions)d(of)f Fl(a)o(rra)o(y)p 327
1475 V 15 w(blo)q(cklens)p Fr(,)i Fl(a)o(rra)o(y)p 633
1475 V 15 w(hdisps)p Fr(,)h(and)e Fl(a)o(rra)o(y)p 967
1475 V 15 w(t)o(yp)q(es)p Fr(,)h(resp)q(ectiv)o(ely)l(.)21
b Fl(a)o(rra)o(y)p 1460 1475 V 14 w(disps)12 b Fr(is)g(not)e(mo)q
(di\014ed.)189 1579 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 Fl(MPI)p
1327 1579 V 16 w(TYPE)p 1460 1579 V 16 w(CONTENTS)h Fr(did)g(not)189
1635 y(ha)o(v)o(e)d Fl(sta)o(rt)g Fr(and)h Fl(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 1692 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
Fl(MPI)p 1264 1692 V 16 w(TYPE)p 1397 1692 V 17 w(CONTENTS)i
Fr(that)e(are)g(a)189 1748 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 1823 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 1879 y(allo)q(cated)d(arra)o(ys)d(whose)i(length)h(is)
f Fl(count)h Fr(returned)g(b)o(y)f Fl(MPI)p 1314 1879
V 15 w(TYPE)p 1446 1879 V 17 w(ENVELOPE)p Fr(.)h(\()p
Fb(End)f(of)189 1936 y(r)n(ationale.)p Fr(\))166 2081
y Fj(Discussion:)27 b Fi(In)19 b(the)h(original)e(sp)q(eci\014cation)i
(of)f Fe(MPI)p 1089 2081 13 2 v 15 w(TYPE)p 1212 2081
V 14 w(CONTENTS)p Fi(,)g(t)o(w)o(o)g(argumen)o(ts,)h
Fe(stride)75 2130 y Fi(and)13 b Fe(a)o(rra)o(y)p 242
2130 V 15 w(disps)g Fi(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 2180 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 2180 V 15 w(disps)g Fi(for)f(in)o(teger)h(v)n
(alues)f(and)75 2230 y Fe(a)o(rra)o(y)p 162 2230 V 15
w(hdisps)c Fi(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 2280 y(its)g(t)o(yp)q(e.)166 2336
y(In)e(F)o(OR)m(TRAN,)f(b)q(oth)i Fe(a)o(rra)o(y)p 632
2336 V 15 w(disps)g Fi(and)f Fe(a)o(rra)o(y)p 908 2336
V 15 w(hdisps)i Fi(are)f(arra)o(y)f(of)g Fa(INTEGER)p
Fi(.)e(This)j(ma)o(y)d(b)q(e)j(confusing.)-117 2392 y
Fn(>)i Fm(\(July\))75 2505 y Fg(6.4.2)49 b(Prop)q(osal)18
b(F)o(o)o(r)d(cha)o(racter)f(rep)o(resenation)h(of)h(an)h(MPI)g(Datat)o
(yp)q(e)75 2591 y Fl(String)h(F)o(o)o(rmat:)43 b Fr(The)17
b(string)g(format)f(con)o(tains)i(a)f(sequence)h(n)o(um)o(b)q(er)g
(preceded)h(b)o(y)e(a)g(U)g(\(for)g(user)75 2647 y(de\014ned)d(t)o(yp)q
(e\))f(and)g(follo)o(w)o(ed)g(b)o(y)g(an)f(op)q(en)i(paren)o(theses.)19
b(The)13 b(top)f(lev)o(el)j(description)f(follo)o(ws)f(ending)75
2704 y(with)h(a)g(close)g(paren)o(theses)g(\(in)h(the)f(BNF)g(b)q(elo)o
(w,)g(this)g(is)h(de\014ned)g(as)e Fc(<)p Fr(t)o(yp)q(eDesc)p
Fc(>)p Fr(\).)20 b(A)14 b(sequence)h(of)1967 46 y Fm(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 21
19 20 bop 75 -100 a Fk(6.4.)29 b(A)o(CCESSING)15 b Fl(MPI)g
Fk(D)o(A)l(T)l(A)l(TYPES)999 b Fr(19)75 49 y(these)14
b(strings)f(are)g(nested)h(to)f(supply)i(the)f(lo)o(w)o(er)f(lev)o(el)i
(datat)o(yp)q(es)e(as)g(they)g(are)h(de\014ned)g(\(in)g(the)g(BNF)75
106 y(b)q(elo)o(w,)20 b(see)f Fc(<)p Fr(t)o(yp)q(eDescUser)p
Fc(>)p Fr(\).)32 b(Lo)o(w)o(er)19 b(lev)o(el)h(t)o(yp)q(es)f(are)g
(de\014ned)h(up)q(on)g(\014rst)e(use)h(in)h(the)f(string.)75
162 y(The)h(basic)h(pre-de\014ned)h(data)d(t)o(yp)q(es)h(app)q(ear)g
(in)h(the)f(BNF)g(b)q(elo)o(w)g(as)g Fc(<)p Fr(t)o(yp)q(eDescC)p
Fc(>)h Fr(for)e(C)h(and)75 219 y Fc(<)p Fr(t)o(yp)q(eDescF77)p
Fc(>)d Fr(for)g(the)g(F)l(ortran)f(77.)25 b(The)17 b(enco)q(ding)i(of)e
(the)g(names)g(are)g(en)o(umerated)g(in)h(T)l(able)75
275 y(I)e(b)q(elo)o(w.)23 b(User)16 b(de\014ned)h(data)e(t)o(yp)q(es)h
(ha)o(v)o(e)g(the)g(co)q(de)g(U)g(follo)o(w)o(ed)h(b)o(y)e(their)i
(sequence)g(n)o(um)o(b)q(er)f(\(e.g.)75 332 y(U3129)e(refers)h(to)g(t)o
(yp)q(e)g(3129)f(whic)o(h)i(sho)o(ws)f(up)g(as)g(U3129\(....\)\).)75
451 y Fl(Cha)o(racter)i(Set)g(and)h(Sto)o(rage:)45 b
Fr(The)17 b(c)o(haracters)f(set)g(used)i(will)g(b)q(e)g(ASCI)q(I)g
(with)f(the)g(parit)o(y)g(bit)g(set)75 507 y(to)g(0)g(\(o\013)t(\).)26
b(The)18 b(string)f(format)g(itself)h(will)h(b)q(e)g(stored)e(in)h(a)g
(b)o(yte)f(stream)g(\(MPI)p 1545 507 14 2 v 16 w(P)l(A)o(CKED\).)g
(\(Do)75 564 y(w)o(e)d(w)o(an)o(t)g(to)g(sa)o(y)g(w)o(e)g(will)i(NULL)g
(terminate)e(it,)h(if)g(so)f(w)o(e)h(can)f(place)i(that)e(in)h(the)g
(BNF\).)f(\(Are)g(there)75 620 y(more)h(precise)h(w)o(ords)f(other)f
(than)h(ASCI)q(I)i(with)e(parit)o(y)g(o\013)t(?\))75
740 y Fl(Interlanguage)j(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 796 y(creating)e(language.)189
898 y Fb(A)n(dvic)n(e)k(to)i(users.)70 b Fr(The)20 b(follo)o(wing)h
(data)e(t)o(yp)q(es)h(are)g(not)f(necessarily)j(p)q(ortable:)30
b(h)o(v)o(ector,)189 954 y(hindexed,)16 b(struct,)e(and)h(the)g(use)g
(of)g(Upp)q(er/Lo)o(w)o(er)f(b)q(ound.)21 b(When)15 b(mo)o(ving)g(to)f
(systems)h(with)189 1011 y(di\013eren)o(t)j(data)g(t)o(yp)q(e)h(sizes)h
(or)e(di\013eren)o(t)h(alignmen)o(t)g(rules,)h(repro)q(ducing)g(a)e
(data)g(t)o(yp)q(e)h(from)189 1067 y(its)d(c)o(haracter)f(represen)o
(tation)h(ma)o(y)f(not)g(meet)h(the)g(user's)f(exp)q(ectations.)23
b(\()p Fb(End)16 b(of)h(advic)n(e)g(to)189 1124 y(users.)p
Fr(\))166 1266 y Fj(Discussion:)42 b Fi(Since)17 b(the)f(implemen)o
(tation)d(ma)o(y)h(c)o(ho)q(ose)j(to)e("optimize")f(a)i(user)h
(de\014ned)g(data)f(t)o(yp)q(e,)75 1316 y(w)o(e)g(ha)o(v)o(e)f(to)g
(mak)o(e)f(a)h(decision)h(ab)q(out)f(ho)o(w)g(accurate)i(w)o(e)f
(demand)e(the)i(represen)o(tation)h(b)q(e.)23 b(W)m(e)15
b(ha)o(v)o(e)h(three)75 1366 y(c)o(hoices:)166 1415 y(1\))e(Don't)g
(place)g(an)o(y)g(reqiremen)o(ts)g(on)h(the)f(returned)i(t)o(yp)q(e)f
(\(for)f(instance,)h(v)o(ector)g(can)g(b)q(e)g(con)o(v)o(erted)g(to)75
1465 y(h)o(v)o(ector\).)k(The)14 b(sub)q(committee)f(felt)g(this)h(did)
g(not)g(meet)f(the)i(spirit)e(of)h(the)g(prop)q(osal.)166
1515 y(2\))h(Allo)o(w)e(the)i(c)o(haracter)i(represen)o(tation)f(to)f
(only)e(guaran)o(tee)j(to)e(accurately)i(represen)o(t)h(the)e(t)o(yp)q
(e)h(map)75 1565 y(of)f(the)i(user)g(de\014ned)g(data)f(t)o(yp)q(e.)24
b(P)o(arsing)16 b(the)h(string)f(and)g(pro)q(ducing)g(a)f(user)i
(de\014ned)g(data)f(t)o(yp)q(e)h(will)d(not)75 1615 y(necessarily)20
b(result)f(in)f(the)h(same)f(sequence)j(of)d(calls,)h(but)f(will)f
(result)j(in)e(a)g(data)g(t)o(yp)q(e)h(that)g(can)g(b)q(e)g(used)75
1665 y(in)o(terc)o(hangeably)d(with)g(the)g(original)e(data)i(t)o(yp)q
(e.)25 b(In)16 b(particular,)g(o\013sets)h(w)o(ould)e(b)q(e)i(in)e
(their)i(original)d(units)75 1714 y(rather)h(than)f(con)o(v)o(erted)h
(to)e(b)o(ytes.)166 1764 y(3\))h(Require)g(that)g(the)g(c)o(haracter)h
(represen)o(tation)h(result)e(in)g(the)g(same)f(sequence)j(of)e(calls.)
166 1821 y(In)h(some)f(existing)g(MPI-1)h(implemen)o(tatio)o(ns,)d
(options)j(2)f(and)h(3)f(will)g(require)h(that)g(either)h(the)f(in)o
(ternal)75 1877 y(represen)o(tations)j(of)e(the)h(data)g(t)o(yp)q(es)g
(c)o(hange)g(or)f(that)h(companion)d(information)g(b)q(e)j(k)o(ept)g
(that)f(records)i(the)75 1934 y(original)12 b(calling)g(sequence)17
b(\(for)c(3\))h(or)g(units)g(of)f(displacemen)o(t)g(\(for)h(2\).)934
2083 y Fd(TABLE)23 b(I)719 2139 y(Character)g(representations)123
2252 y(Type)333 b(Character)23 b(representation)123 2308
y(-----------------)e(----------------------------)o(--)123
2365 y(byte)333 b(b)123 2421 y(packed)285 b(p)123 2478
y(char)333 b(c)123 2534 y(unsigned)22 b(char)119 b(uc)123
2591 y(short)309 b(s)123 2647 y(unsigned)22 b(short)95
b(us)123 2704 y(int)357 b(i)-32 46 y Fm(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 22
20 21 bop 75 -100 a Fr(20)876 b Fk(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)123 49 y Fd(unsigned)22
b(int)143 b(ui)123 106 y(long)333 b(l)123 162 y(unsigned)22
b(long)119 b(ul)123 219 y(long)23 b(long)214 b(ll)123
275 y(unsigned)22 b(ll)167 b(ull)123 332 y(float)309
b(f)123 388 y(double)285 b(d)123 444 y(long)23 b(double)166
b(ld)123 501 y(INTEGER)261 b(I)123 557 y(INTEGER*2)213
b(I2)123 614 y(INTEGER*4)g(I4)123 670 y(INTEGER*8)g(I8)123
727 y(LOGICAL)261 b(L)123 783 y(REAL)333 b(R)123 840
y(REAL*4)285 b(R4)123 896 y(REAL*8)g(R8)123 953 y(DOUBLE)23
b(PRECISION)46 b(D)123 1009 y(COMPLEX)261 b(C)123 1065
y(DOUBLE)23 b(COMPLEX)94 b(DC)123 1122 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 1178 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 1235 y(vector)285
b(V:Type:count:blocklength:str)o(ide)123 1291 y(hvector)261
b(HV:Type:count:blocklength:st)o(ride)123 1348 y(Indexed)g
(X:Type:count:blocklength/dis)o(placeme)o(nt,...)123
1404 y(HIndexed)237 b(HX:Type:count:blocklength/di)o(splacem)o(ent,...)
123 1461 y(Struct)285 b(S:count:Type/count/displacem)o(ent,...)75
1574 y(Examples:)147 1686 y(Type)23 b(threeslice)f(from)i(example)f
(3.29)g(\(assume)g(sizeofreal)f(is)i(4\))147 1799 y
("U329\(HV:U3291\(HV:U3292)o(\(V:R:9:)o(1:2\):9:1)o(:400\):9)o(:1:4000)
o(0\)")147 1912 y(Type)f(ltype)g(from)g(example)g(3.30)147
2025 y("U330\(X:R:100:1/99,101/)o(98,202/)o(97,...,1)o(0000/0\))o(")147
2138 y(Type)g(xpose)g(from)g(example)g(3.31)h(\(assume)f(sizeofreal)f
(is)i(4\))147 2251 y("U331\(HV:U3311\(V:R:100:)o(1:100\):)o(100:1:4\))o
(")147 2364 y(Type)f(Particletype)f(from)h(example)g(3.33)h(\(assume)f
(double)g(alignment,)f(sizeof)h(int)h(4,)1030 2420 y(sizeof)f(double)g
(8,)g(base)h(=)f(96\))147 2533 y("U333\(S:4:i/1/0,d/6/8,c)o(/7/56,U)o
(B/1/64\)")147 2646 y(Type)g(Particletype)f(from)h(example)g(3.34)h
(\(assume)f(addr)g(particle)g(is)g(96,)1030 2703 y(double)g(alignment,)
f(sizeof)h(int)h(4,)1967 46 y Fm(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 23
21 22 bop 75 -100 a Fk(6.4.)29 b(A)o(CCESSING)15 b Fl(MPI)g
Fk(D)o(A)l(T)l(A)l(TYPES)999 b Fr(21)1030 49 y Fd(sizeof)23
b(double)g(8\))147 162 y("U334\(S:3:i/1/96,d/6/10)o(4,c/7/1)o(52\)")75
275 y(\045start)238 b(<start>)75 388 y(\045\045)75 501
y(<digit>)214 b(::=)23 b(0)h(|)g(1)f(|)h(2)g(|)g(3)f(|)h(4)g(|)g(5)f(|)
h(6)g(|)f(7)h(|)g(8)g(|)f(9)75 614 y(<Int>)262 b(::=)23
b(-)h(<digit>)f(|)h(<digit>)f(|)g(<Int><digit>)75 727
y(<nonNegInt>)118 b(::=)23 b(<digit>)g(|)h(<nonNegInt>)e(<digit>)75
840 y(<posDigit>)142 b(::=)23 b(1)h(|)g(2)f(|)h(3)g(|)g(4)f(|)h(5)g(|)g
(6)f(|)h(7)g(|)f(8)h(|)g(9)75 953 y(<posInt>)190 b(::=)23
b(<posDigit>)g(|)g(<posInt>)g(<digit>)75 1065 y(<typeDescC>)118
b(::=)23 b(b)h(|)g(p)f(|)h(c)g(|)g(uc)f(|)h(s)g(|)f(us)h(|)g(i)f(|)h
(ui)g(|)f(l)h(|)457 1122 y(ul)f(|)h(ll)g(|)f(ull)h(|)g(f)f(|)h(d)g(|)g
(ld)75 1235 y(<typeDescF77>)70 b(::=)23 b(p)h(|)g(I)f(|)h(L)g(|)g(R)f
(|)h(D)g(|)g(C)f(|)h(DC)g(|)f(Char)h(|)457 1291 y(I2)f(|)h(I4)g(|)f(I8)
h(|)g(R4)f(|)h(R8)75 1404 y(<typeDescUser>)46 b(::=)23
b(U<nonNegInt>)f(|)i(U<nonNegInt>\(<typeDesc>\))75 1517
y(<typeDescBasic>)e(::=)h(<typeDescC>)g(|)g(<typeDescF77>)f(|)i
(<typeDescUser>)75 1630 y(<typeDescAdv>)70 b(::=)23 b(UB)h(|)g(LB)f(|)h
(<typeDescBasic>)75 1743 y(<typeDescVec>)70 b(::=)23
b(V:<typeDescBasic>:<posInt>:<)o(posInt>)o(:<Int>)75
1856 y(<typeDescHVec>)46 b(::=)23 b(HV:<typeDescBasic>:<posInt>:)o
(<posInt)o(>:<Int>)75 1969 y(<typeDescIndex>)f(::=)h
(X:<typeDescBasic>:<posInt>:<)o(posInt>)o(/<Int>)e(|)457
2025 y(<typeDescIndex>,<posInt>/)o(<Int>)75 2138 y(<typeDescHIndex>)189
b(::=)23 b(HX:<typeDescBasic>:<posInt>)o(:<posInt)o(>/<Int>)d(|)457
2195 y(<typeDescHIndex>,<posInt>)o(/<Int>)75 2307 y(<typeDescStruct>)
189 b(::=)23 b(S:<posInt>:<typeDescAdv>/<p)o(osInt>/<)o(Int>)e(|)457
2364 y(<typeDescStruct>,<typeDes)o(cAdv>/<)o(posInt>)o(/<Int>)75
2477 y(<typeDescSimple>)189 b(::=)23 b(<typeDescBasic>)f(|)i
(<typeDescVec>)e(|)457 2533 y(<typeDescHVec>)g(|)h(<typeDescIndex>)f(|)
481 2590 y(<typeDescHIndex>)f(|)j(<typeDescStruct>)75
2703 y(<typeDesc>)142 b(::=)23 b(<posInt>)g(<typeDescSimple>)f(|)h
(<typeDescSimple>)-32 46 y Fm(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 24
22 23 bop 75 -100 a Fr(22)871 b Fk(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 106 y Fd(<start>)214
b(::=)23 b(<typeDesc>)75 219 y(\045\045)-117 272 y Fn(?)15
b Fm(\(July\))-117 331 y Fn(>)g Fm(\(July\))75 390 y
Fg(6.4.3)49 b(P)o(acking/Unpacking)18 b(Datat)o(yp)q(es)e(and)g
(Communicato)o(rs)75 478 y(6.4.4)49 b(Intro)q(duction)75
563 y Fr(The)21 b(abilit)o(y)i(to)d(transp)q(ort)g(datat)o(yp)q(e)h
(and)g(comm)o(unicator)g(in)o(ternal)h(structure)f(is)g(of)g(in)o
(terest)g(in)75 620 y(serv)o(ers,)e(middlew)o(are,)h(and)f(one-sided)h
(comm)o(unication.)31 b(P)o(arallel)20 b(IO)f(serv)o(ers)f(are)h(one)f
(example.)75 676 y(New)d(comm)o(unication)h(paradigms)f(are)g(also)g(p)
q(ossible)i(with)f(pac)o(k)o(ed)f(t)o(yp)q(es)g(and)h(comm)o
(unicators.)166 733 y(When)e(a)f(user's)g(data)f(is)i(pac)o(k)o(ed)g
(along)f(with)h(a)f(pac)o(k)o(ed)g(comm)o(unicator)g(and)g(pac)o(k)o
(ed)h(datat)o(yp)q(e,)75 789 y(the)k(resulting)h(comp)q(ound)g(pac)o(k)
o(ed)f(ob)s(ject)g(is)h(a)e(transp)q(ortable)h(self-describing)j
(structure.)28 b(Alter-)75 846 y(nately)l(,)23 b(pac)o(k)o(ed)e(datat)o
(yp)q(es)f(and)h(comm)o(unicators)g(can)g(b)q(e)h(stored)e(as)h(format)
f(metadata)f(for)i(the)75 902 y(user's)e(\014le.)32 b(In)20
b(clien)o(t-serv)o(er)g(en)o(vironmen)o(ts,)g(a)e(serv)o(er)h(can)g
(\\mail")g(a)g(pac)o(k)o(ed)g(comm)o(unicator)g(to)75
959 y(an)c(external)h(pro)q(cess)f(and)h(thereb)o(y)f(instan)o(tiate)g
(an)h(in)o(tercomm)o(unicator)f(with)g(the)h(serv)o(er.)j(P)o(ac)o(k)o
(ed)75 1015 y(comm)o(unicators)12 b(can)h(also)g(b)q(e)g(used)h(to)e
(determine)i(if)f(the)g(binary)g(transp)q(ort)f(\(think)h(storage\))e
(format)75 1072 y(are)k(readable)h(or)f(in)h(a)e(net)o(w)o(ork)h
(\(XDR-lik)o(e\))h(format.)166 1128 y(The)f(datat)o(yp)q(e)f
(information)h(can)g(b)q(e)h(used)f(to)f(dynamically)j(instan)o(tiate)e
(a)g(memory)f(con)o(tainer)75 1184 y(for)d(the)h(data)f(and)h(apply)g
(collectiv)o(e)i(comm)o(unication)e(op)q(erations)g(on)g(the)g(ob)s
(ject.)18 b(Not)11 b(all)i(datat)o(yp)q(es)75 1241 y(can)f(b)q(e)h
(re-instan)o(ted)g(on)f(all)i(systems)e(in)h(a)f(meaningful)h(w)o(a)o
(y)l(.)19 b(The)12 b(abilit)o(y)i(to)d(store)h(the)g(comm)o(unica-)75
1297 y(tor)h(and)h(datat)o(yp)q(e)f(conditions)j(at)d(the)h(time)g(of)f
(origination)i(will)h(help)f(users)f(\(and)f(to)q(ols\))h(determine)75
1354 y(the)h(exten)o(t)g(of)g(transp)q(ort)f(limitations.)166
1410 y(This)k(prop)q(osal)g(adds)g(new)h(functionalit)o(y)g(to)e
Fl(MPI)p 1076 1410 14 2 v 16 w(P)l(A)o(CK)p 1207 1410
V 16 w(SIZE)p Fr(,)g Fl(MPI)p 1428 1410 V 16 w(P)l(A)o(CK)p
Fr(,)g Fl(MPI)p 1671 1410 V 16 w(UNP)l(A)o(CK)p Fr(,)75
1467 y(and)i Fl(MPI)p 252 1467 V 16 w(COMM)p 410 1467
V 16 w(COMP)l(ARE)i Fr(but)e(otherwise)g(prop)q(oses)g(\\no)g(new)g
(functions".)32 b(It)19 b(do)q(es)h(not)e(at-)75 1523
y(tempt)c(to)g(b)q(e)i(a)e(panacea)h(for)f(heterogeneous)h(datat)o(yp)q
(e)f(transp)q(ort,)g(but)h(instead)g(pro)o(vides)g(a)g(mec)o(h-)75
1580 y(anism)h(for)e(transp)q(ort)g(when)i(solutions)g(are)f(straigh)o
(tforw)o(ard)e(to)i(implemen)o(t.)75 1701 y Fg(6.4.5)49
b(P)o(ack)o(ed)15 b(rep)o(resentation)f(of)j(a)f(datat)o(yp)q(e)75
1787 y Fr(When)h(an)g(MPI)f(implemen)o(tation)i(pro)q(duces)f(a)g
(\\\015at")e(\(pac)o(k)o(ed\))h(represen)o(tation)h(of)f(a)h(datat)o
(yp)q(e)f(at)75 1844 y(the)h(user)g(lev)o(el,)h(it)f(will)i(b)q(e)f(in)
f(the)g(format)f(describ)q(ed)j(in)e Ff(??)p Fr(.)25
b(The)17 b(binary)g(enco)q(ding)h(will)h(b)q(e)f(8-bit)75
1900 y(ASCI)q(I)e(c)o(haracter,)f(suitable)h(for)f(storage)e(as)i(a)g
(F)l(ortran)f(arra)o(y)g(of)h Fl(MPI)p 1338 1900 V 16
w(BYTE)p Fr(.)75 2022 y Fg(6.4.6)49 b(P)o(ack)o(ed)15
b(rep)o(resentation)f(of)j(a)f(communicato)o(r)75 2108
y Fr(When)d(an)f(MPI)g(implemen)o(tation)h(pro)q(duces)g(a)f(\\\015at")
f(\(pac)o(k)o(ed\))h(represen)o(tation)g(of)f(a)h(comm)o(unicator)75
2164 y(at)h(the)h(user)g(lev)o(el,)h(it)f(will)i(b)q(e)e(in)h(the)f
(format)e(describ)q(ed)k(in)f Ff(??)o Fr(.)20 b(The)14
b(binary)g(enco)q(ding)i(will)f(b)q(e)g(8-bit)75 2221
y(ASCI)q(I)h(c)o(haracter,)f(suitable)h(for)f(storage)e(as)i(a)g(F)l
(ortran)f(arra)o(y)g(of)h Fl(MPI)p 1338 2221 V 16 w(BYTE)p
Fr(.)166 2324 y Fj(Missing:)i Fi(A)c(prop)q(osal)h(for)g(a)f
(\015attened)i(comm)o(unicator)c(represen)o(tation)16
b(is)d(needed.)75 2493 y Fg(6.4.7)49 b(Size)17 b(of)f(pack)o(ed)g(rep)o
(resentations)75 2579 y Fr(A)j(pac)o(k)o(ed)h(represen)o(tation)f(of)g
(a)h(deriv)o(ed)g(datat)o(yp)q(e)f(or)g(a)g(comm)o(unicator)g(is)h
(dynamic)g(in)h(length.)75 2635 y(Hence,)f(for)e(users)h(to)g(allo)q
(cate)g(bu\013er)g(space)g(for)f(a)h(pac)o(k)o(ed)g(datat)o(yp)q(e,)f
(comm)o(unicator,)h(they)g(will)1967 46 y Fm(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 25
23 24 bop 75 -100 a Fk(6.4.)34 b(A)o(CCESSING)15 b Fl(MPI)g
Fk(D)o(A)l(T)l(A)l(TYPES)994 b Fr(23)p 135 55 1681 2
v 134 112 2 57 v 160 95 a Fi(IN)160 b(IN)420 b(IN)396
b(OUT)p 1814 112 V 134 168 V 160 151 a Fl(incount)67
b(datat)o(yp)q(e)303 b(comm)325 b(size)p 1814 168 V 135
170 1681 2 v 134 226 2 57 v 160 209 a Fr(1)183 b(v)m(alid)17
b(datat)o(yp)q(e)180 b Fe(MPI)p 909 209 13 2 v 15 w(COMM)p
1054 209 V 14 w(NULL)106 b Fr(length)16 b(of)e(pac)o(k)o(ed)i(datat)o
(yp)q(e)p 1814 226 2 57 v 134 283 V 160 266 a(1)183 b
Fe(MPI)p 443 266 13 2 v 14 w(D)o(A)m(T)m(A)m(TYPE)p 669
266 V 13 w(NULL)50 b Fr(v)m(alid)17 b(comm)o(unicator)50
b(length)16 b(of)e(pac)o(k)o(ed)i(comm)p 1814 283 2 57
v 134 339 V 160 322 a(an)o(y)f Fc(>)e Fr(0)49 b(v)m(alid)17
b(datat)o(yp)q(e)180 b(v)m(alid)17 b(comm)o(unicator)50
b Fl(MPI-1)14 b Fr(de\014nition)p 1814 339 V 135 341
1681 2 v 423 418 a(T)l(able)i(6.1:)j(API)d(for)e(extended)j(v)o(ersion)
e(of)g Fl(MPI)p 1290 418 14 2 v 16 w(P)l(A)o(CK)p 1421
418 V 16 w(SIZE)p 123 569 1704 2 v 122 625 2 57 v 148
609 a Fi(IN)223 b(IN)160 b(IN)420 b(IN)341 b(OUT)p 1826
625 V 122 682 V 148 665 a Fr(in)o(buf)169 b(incoun)o(t)59
b(datat)o(yp)q(e)290 b(comm)268 b(outbuf)p 1826 682 V
123 684 1704 2 v 122 740 2 57 v 148 723 a(an)o(y/NULL)51
b(1)183 b(v)m(alid)17 b(datat)o(yp)q(e)180 b Fe(MPI)p
1166 723 13 2 v 15 w(COMM)p 1311 723 V 14 w(NULL)51 b
Fr(pac)o(k)o(ed)15 b(datat)o(yp)q(e)p 1826 740 2 57 v
122 796 V 148 780 a(an)o(y/NULL)51 b(1)183 b Fe(MPI)p
700 780 13 2 v 14 w(D)o(A)m(T)m(A)m(TYPE)p 926 780 V
12 w(NULL)51 b Fr(v)m(alid)17 b(comm)158 b(pac)o(k)o(ed)15
b(comm)p 1826 796 2 57 v 122 853 V 148 836 a(some)g(buf)91
b(an)o(y)14 b Fc(>)f Fr(0)50 b(v)m(alid)17 b(datat)o(yp)q(e)180
b(v)m(alid)17 b(comm)158 b Fl(MPI-1)14 b Fr(de\014nition)p
1826 853 V 123 855 1704 2 v 478 932 a(T)l(able)i(6.2:)j(API)c(for)g
(extended)h(v)o(ersion)g(of)e Fl(MPI)p 1344 932 14 2
v 16 w(P)l(A)o(CK)75 1110 y Fr(need)k(to)e(determine)i(the)f(length)h
(at)e(run-time.)26 b(This)17 b(can)g(b)q(e)h(ac)o(hiev)o(ed)g(with)f
Fl(MPI)p 1571 1110 V 16 w(P)l(A)o(CK)p 1702 1110 V 16
w(SIZE)p Fr(,)f(in)75 1167 y(the)f(same)g(manner)g(that)g
Fl(MPI-1)f Fr(determines)j(the)e(length)h(of)f(pac)o(k)o(ed)g(user)g
(data.)k(Sp)q(eci\014call)q(y:)75 1318 y Fl(MPI)p 160
1318 V 16 w(P)l(A)o(CK)p 291 1318 V 16 w(SIZE\(incount,)d(datat)o(yp)q
(e,)g(comm,)d(size,)i(ierro)o(r\))117 1395 y(.)7 b(.)g(.)148
b(.)8 b(.)f(.)533 b Fi(\(argumen)o(t)13 b(list)h(unc)o(hanged\))166
1519 y Fr(The)h Fe(MPI)p 336 1519 13 2 v 15 w(D)o(A)m(T)m(A)m(TYPE)p
563 1519 V 12 w(NULL)h Fr(macro)e(is)i(in)o(tro)q(duced)h(here)e([see)g
(Using)h(MPI,)f(p.)20 b(51].)189 1626 y Fb(A)n(dvic)n(e)15
b(to)i(implementors.)41 b Fr(A)15 b(pac)o(k)o(ed)h(represen)o(tation)f
(of)g(these)h(otherwise)f(opaque)h(ob)s(jects)189 1682
y(could)22 b(b)q(e)h(pro)q(duced)g(in)o(ternally)g(either)g(at)e(the)h
(time)g(the)g(ob)s(ject)f(is)h(committed)g(or)f(when)189
1739 y Fl(MPI)p 274 1739 14 2 v 15 w(P)l(A)o(CK)p 404
1739 V 17 w(SIZE)15 b Fr(is)g(called.)22 b(\()p Fb(End)15
b(of)i(advic)n(e)f(to)g(implementors.)p Fr(\))75 1860
y Fg(6.4.8)49 b(P)o(acking)17 b(datat)o(yp)q(es)e(and)i(communicato)o
(rs)75 1946 y Fr(Once)h(the)f(length)h(of)f(a)g(pac)o(k)o(ed)g(ob)s
(ject)g(is)h(kno)o(wn,)f(the)g(user)g(can)h(allo)q(cate)g(bu\013er)f
(space)g(and)h(then)75 2003 y(call)e Fl(MPI)p 243 2003
V 16 w(P)l(A)o(CK)p Fr(:)75 2153 y Fl(MPI)p 160 2153
V 16 w(P)l(A)o(CK\(inbuf,)f(incount,)i(datat)o(yp)q(e,)f(outbuf,)g
(outcount,)h(p)q(os,)f(comm,)d(ierro)o(r\))117 2231 y(.)7
b(.)g(.)148 b(.)8 b(.)f(.)533 b Fi(\(argumen)o(t)13 b(list)h(unc)o
(hanged\))166 2355 y Fr(The)f(in)o(buf)g(argumen)o(t)f(is)h(extraneous)
f(when)h(pac)o(king)f(datat)o(yp)q(es)g(and)h(comm)o(unicators.)18
b(Hence,)75 2412 y(it)f(can)g(b)q(e)h(NULL)f(in)h(C)f(and)g(an)f
(arbitrary)g Fl(MPI)p 951 2412 V 16 w(Aint)i Fr(in)g(F)l(ortran.)23
b(Remaining)c(argumen)o(ts)d(are)g(as)75 2468 y(de\014ned)21
b(b)o(y)e Fl(MPI-1)p Fr(.)31 b(Some)20 b(F)l(ortran)e(compilers)i(do)g
(not)f(supp)q(ort)g(an)o(y)g(memory)g(allo)q(cation)h(func-)75
2525 y(tions.)26 b(Users)17 b(of)g(these)h(systems)f(will)h(either)g
(ha)o(v)o(e)f(to)g(\(a\))f(main)o(tain)i(a)f(suitably)h(large)g
Fl(MPI)p 1744 2525 V 15 w(BYTE)75 2581 y Fr(arra)o(y)d(for)h(bu\013er)g
(space)h(and)g(compare)f(it's)g(length)h(to)f(the)g(size)i(returned)e
(b)o(y)h Fl(MPI)p 1569 2581 V 15 w(P)l(A)o(CK)p 1699
2581 V 17 w(SIZE)p Fr(,)e(or)75 2637 y(\(b\))k(write/obtain)h(their)g
(o)o(wn)f(fmallo)q(c)h(wrapp)q(er)f(to)g(a)g(C)h(mallo)q(c,)h(or)e
(\(c\))g(go)g(without)g(the)h(use)f(of)75 2694 y Fl(MPI)p
160 2694 V 16 w(P)l(A)o(CK)p Fr(.)-32 46 y Fm(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 26
24 25 bop 75 -100 a Fr(24)871 b Fk(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)p 223 55 1505 2 v
222 112 2 57 v 248 95 a Fi(IN)179 b(IN)420 b(INOUT)303
b(OUT)p 1726 112 V 222 168 V 248 151 a Fr(outcoun)o(t)49
b(datat)o(yp)q(e)290 b(comm)323 b(outbuf)p 1726 168 V
223 170 1505 2 v 222 226 2 57 v 248 209 a(1)202 b Fe(MPI)p
550 209 13 2 v 14 w(D)o(A)m(T)m(A)m(TYPE)p 776 209 V
13 w(NULL)50 b Fr(spare)16 b(comm)e(ob)s(ject)66 b(an)o(y/NULL)p
1726 226 2 57 v 222 283 V 248 266 a(an)o(y)15 b Fc(>)e
Fr(0)68 b(v)m(alid)17 b(datat)o(yp)q(e)180 b(v)m(alid)17
b(comm)o(unicator)50 b Fl(MPI-1)14 b Fr(de\014nition)p
1726 283 V 223 284 1505 2 v 526 361 a(T)l(able)i(6.3:)i(API)e(for)f
(unpac)o(king)h(comm)o(unicators)166 549 y Fb(A)o(lternate)i(version.)
28 b Fr(Restrict)18 b(the)g(pac)o(king)h(of)e(datat)o(yp)q(es)h(and)g
(comm)o(unicators)g(to)f(the)h(case)75 605 y(when)e Fl(inbuf)h
Fr(is)f Fe(NULL)p Fr(.)g(Then,)f(extend)h(the)g(seman)o(tics)f(of)g
(the)h(1st)f(case)g(ab)q(o)o(v)o(e)g(so)g(that)g(sp)q(eci\014cation)75
662 y(of)f(a)f(v)m(alid)j(\(non-NULL\))e Fl(inbuf)h Fr(and)g(NULL)f
(comm)o(unicator)g(will)i(pro)q(duce)e(data)g(in)g Fl(outbuf)i
Fr(that)d(has)75 718 y(b)q(een)20 b(pac)o(k)o(ed)e(in)i(a)e(net)o(w)o
(ork-neutral)h(format)e(suc)o(h)i(as)f(XDR.)h(Whic)o(h)g(net)o(w)o(ork)
f(format)f(is)i(still)h(in)75 775 y(question.)g(Choices)c(are)f(lik)o
(ely)i(to)e(b)q(e)h(nominated)f(b)o(y)h(the)f(I/O)g(sub)q(committee.)75
896 y Fg(6.4.9)49 b(Unpacking)17 b(communicato)o(rs)75
982 y Fr(Giv)o(en)i(a)f(pac)o(k)o(ed)h(comm)o(unicator,)g(MPI)p
811 982 14 2 v 16 w(Unpac)o(k)g(will)i(instan)o(tiate)d(it)h(in)h(an)f
(MPI)p 1577 982 V 16 w(Comm)f(ob)s(ject.)75 1039 y Fb(The)d(use)h(of)g
(an)f(unp)n(acke)n(d)h(c)n(ommunic)n(ator)g(is)f(unde\014ne)n(d)g(exc)n
(ept)g(in)g(the)h(c)n(omp)n(arison)f(to)h(other)h(c)n(om-)75
1095 y(munic)n(ator)g(obje)n(cts)t Fr(.)75 1246 y Fl(MPI)p
160 1246 V 16 w(UNP)l(A)o(CK\(inbuf,)f(insize,)f(p)q(os,)h(outbuf,)g
(outcount,)h(datat)o(yp)q(e,)f(comm,)d(ierro)o(r\))117
1323 y(.)7 b(.)g(.)148 b(.)8 b(.)f(.)533 b Fi(\(argumen)o(t)13
b(list)h(unc)o(hanged\))166 1448 y Fr(The)i(outbuf)f(argumen)o(t)g(is)h
(extraneous)f(when)h(unpac)o(king)h(comm)o(unicators.)j(It)c(can)g(b)q
(e)g(NULL)75 1504 y(in)k(C)f(and)g(an)h(arbitrary)e Fl(MPI)p
626 1504 V 16 w(Aint)i Fr(in)g(F)l(ortran.)31 b(The)19
b(user)h(needs)g(to)e(declare)i(the)g Fi(INOUT)p Fr(comm)75
1561 y(ob)s(ject)f(in)h(their)g(co)q(de;)i(e.g.,)d Fl(MPI)p
697 1561 V 16 w(COMM)g(comm)p 991 1561 V 15 w(extern)p
Fr(.)33 b(It)20 b(m)o(ust)e(b)q(e)i(free)g(at)f(the)g(time)h(of)f(use.)
75 1617 y(Remaining)e(argumen)o(ts)d(are)h(as)g(de\014ned)i(b)o(y)e
Fl(MPI-1)p Fr(.)75 1739 y Fg(6.4.10)49 b(Compa)o(ring)17
b(communicato)o(rs)75 1825 y Fr(Giv)o(en)h(a)g(lo)q(cal)h(and)g(an)f
(external)g(\(unpac)o(k)o(ed\))g(comm)o(unicator,)g(the)g(user)g(w)o
(ould)h(lik)o(e)g(to)e(compare)75 1881 y(attributes)e(of)g(the)g(t)o(w)
o(o)f(ob)s(jects)g(whic)o(h)i(are)f(p)q(ossibly)i(separated)e(in)h(b)q
(oth)f(space)h(and)f(time.)75 2032 y Fl(MPI)p 160 2032
V 16 w(COMM)p 318 2032 V 16 w(COMP)l(ARE\(comm1,)f(comm2,)f(result,)i
(ierro)o(r\))117 2109 y(.)7 b(.)g(.)148 b(.)8 b(.)f(.)533
b Fi(\(argumen)o(t)13 b(list)h(unc)o(hanged\))166 2234
y Fr(\\Same")e(arc)o(hitecture)g(format)f(means)h(that)g(the)g
(implemen)o(tation)h(recognizes)g(the)g(arc)o(hitecture)75
2290 y(format)h(and)i(can)f(p)q(erform)h(in-transit)g(translation)f(of)
g(data)g(from)g(one)h(comm)o(unicator)f(CPU)g(to)g(the)75
2347 y(other.)29 b(Implemen)o(tations)20 b(are)e(only)h(required)h(to)e
(recognize)h(their)g(o)o(wn)f(arc)o(hitecture)h(v)o(ersion)g(\(at)75
2403 y(compilation)d(time\))g(and)f(XDR-lik)o(e)i(net)o(w)o(ork)d
(format.)75 2525 y Fg(6.4.11)49 b(Unpacking)18 b(datat)o(yp)q(es)75
2610 y Fr(Giv)o(en)j(a)g(pac)o(k)o(ed)f(datat)o(yp)q(e,)h
Fl(MPI)p 706 2610 V 16 w(UNP)l(A)o(CK)g Fr(will)i(allo)q(cate)e(memory)
f(for)g(the)h(data)f(and)h(commit)75 2667 y(the)e(data)f
(structure\(s\))h(to)f(an)h Fl(MPI)p 728 2667 V 16 w(D)o(A)l(T)l(A)l
(TYPE)h Fr(ob)s(ject.)31 b Fb(The)19 b(use)h(of)g(an)f(unp)n(acke)n(d)h
(datatyp)n(e)g(is)1967 46 y Fm(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 27
25 26 bop 75 -100 a Fk(6.4.)34 b(A)o(CCESSING)15 b Fl(MPI)g
Fk(D)o(A)l(T)l(A)l(TYPES)994 b Fr(25)p 391 55 1168 2
v 390 112 2 57 v 416 95 a(Con)o(text)49 b(Group)h(Arc)o(h)15
b(F)l(ormat)48 b(Result)p 1558 112 V 391 113 1168 2 v
390 170 2 57 v 416 153 a(Same)103 b(Same)71 b(Same)199
b Fe(MPI)p 1184 153 13 2 v 15 w(IDENT)177 b Fr(*)p 1558
170 2 57 v 390 226 V 625 209 a(Same)71 b(Same)199 b Fe(MPI)p
1184 209 13 2 v 15 w(CONGRUENT)48 b Fr(*)p 1558 226 2
57 v 390 283 V 416 266 a(Same)280 b(Same)199 b Fe(MPI)p
1184 266 13 2 v 15 w(SIMILAR)141 b Fr(*)p 1558 283 2
57 v 391 284 1168 2 v 390 341 2 57 v 802 324 a(Same)199
b Fe(MPI)p 1184 324 13 2 v 15 w(ARCH)p 1310 324 V 14
w(EQUIV)51 b Fr(+)p 1558 341 2 57 v 390 397 V 1107 380
a Fe(MPI)p 1184 380 13 2 v 15 w(UNEQUAL)108 b Fr(+)p
1558 397 2 57 v 390 454 V 416 437 a(Same)103 b(Same)376
b Fe(MPI)p 1184 437 13 2 v 15 w(UNEQUAL)108 b Fr(+)p
1558 454 2 57 v 390 510 V 625 493 a(Same)376 b Fe(MPI)p
1184 493 13 2 v 15 w(UNEQUAL)108 b Fr(+)p 1558 510 2
57 v 390 566 V 416 550 a(Same)585 b Fe(MPI)p 1184 550
13 2 v 15 w(UNEQUAL)108 b Fr(+)p 1558 566 2 57 v 391
568 1168 2 v 75 648 a(T)l(able)15 b(6.4:)j(Seman)o(tics)c(for)g
(extended)h(v)o(ersion)f(of)g Fl(MPI)p 1051 648 14 2
v 15 w(COMM)p 1208 648 V 17 w(COMP)l(ARE)h Fr(*)f(equiv)m(alen)o(t)h
(to)f Fl(MPI-1)75 704 y Fr(de\014nition.)22 b(+)15 b(prop)q(osed)h
(extension.)p 205 864 1541 2 v 204 921 2 57 v 229 904
a Fi(IN)180 b(INOUT)364 b(IN)395 b(OUT)p 1745 921 V 204
977 V 229 960 a Fr(outcoun)o(t)50 b(datat)o(yp)q(e)327
b(comm)322 b(outbuf)p 1745 977 V 205 979 1541 2 v 204
1035 2 57 v 229 1018 a(1)203 b(uncommitted)16 b(datat)o(yp)q(e)49
b Fe(MPI)p 1035 1018 13 2 v 14 w(COMM)p 1179 1018 V 15
w(NULL)105 b Fr(an)o(y/NULL)p 1745 1035 2 57 v 204 1092
V 229 1075 a(an)o(y)15 b Fc(>)e Fr(0)69 b(v)m(alid)17
b(datat)o(yp)q(e)217 b(v)m(alid)17 b(comm)o(unicator)49
b Fl(MPI-1)15 b Fr(de\014nition)p 1745 1092 V 205 1093
1541 2 v 579 1171 a(T)l(able)h(6.5:)j(API)c(for)g(unpac)o(king)h(datat)
o(yp)q(es)75 1358 y Fb(unde\014ne)n(d)j(when)i(the)f(datatyp)n(e)i(c)n
(ontains)d(MPI)g(derive)n(d)i(typ)n(es)f(which)h(only)e(sp)n(e)n(cify)h
(memory)h(dis-)75 1414 y(plac)n(ements)t Fr(.)75 1565
y Fl(MPI)p 160 1565 14 2 v 16 w(UNP)l(A)o(CK\(inbuf,)16
b(insize,)f(p)q(os,)h(outbuf,)g(outcount,)h(datat)o(yp)q(e,)f(comm,)d
(ierro)o(r\))117 1643 y(.)7 b(.)g(.)148 b(.)8 b(.)f(.)533
b Fi(\(argumen)o(t)13 b(list)h(unc)o(hanged\))166 1767
y Fr(The)19 b(outbuf)h(argumen)o(t)e(is)i(extraneous)f(when)h(unpac)o
(king)g(datat)o(yp)q(es.)32 b(It)19 b(can)h(b)q(e)g(NULL)g(in)75
1824 y(C)g(and)g(an)h(arbitrary)e Fe(MPI)p 565 1824 13
2 v 15 w(Aint)h Fr(in)h(F)l(ortran.)34 b(The)20 b(user)h(needs)g(to)e
(declare)j(the)e Fi(INOUT)p Fr(datat)o(yp)q(e)75 1880
y(ob)s(ject)c(in)h(their)g(co)q(de;)g(e.g.,)f Fl(MPI)p
680 1880 14 2 v 16 w(D)o(A)l(T)l(A)l(TYPE)h(t)o(yp)q(e)p
1021 1880 V 18 w(extern)p Fr(.)24 b(It)16 b(m)o(ust)g(b)q(e)h(free)g
(at)f(the)g(time)h(of)f(use.)75 1936 y(Remaining)h(argumen)o(ts)d(are)h
(as)g(de\014ned)i(b)o(y)e Fl(MPI-1)p Fr(.)75 2058 y Fg(6.4.12)49
b(Canonical)19 b(data)d(enco)q(ding)h(-)g(alternative)f(to)h(ab)q(ove)
75 2144 y Fr(It)j(is)h(desirable,)h(in)f(man)o(y)e(situations,)i(to)f
(b)q(e)g(able)h(to)e(enco)q(de)i(data)f(in)o(to)g(a)f(canonical,)j(p)q
(ortable)75 2200 y(represen)o(tation.)d(Suc)o(h)c(canonical)g(represen)
o(tation)e(will)i(facilitate)g(supp)q(ort)f(of)f(MPI-IO)h(in)h(a)e
(hetero-)75 2257 y(geneous)18 b(en)o(vironmen)o(t.)26
b(F)l(or)16 b(that)h(purp)q(ose,)h(it)g(is)f(prop)q(osed)h(that)e(the)i
(functions)g Fl(MPI)p 1657 2257 V 16 w(P)l(A)o(CK)f Fr(and)75
2313 y Fl(MPI)p 160 2313 V 16 w(UNP)l(A)o(CK)e Fr(b)q(e)h(extended)g
(as)f(follo)o(ws.)166 2370 y(If)g(the)g(comm)o(unicator)f(argumen)o(t)g
(in)h Fl(MPI)p 925 2370 V 16 w(P)l(A)o(CK)g Fr(call)h(is)f
Fl(comm)e(=)i(MPI)p 1461 2370 V 16 w(COMM)p 1619 2370
V 16 w(UNIVERSAL)75 2426 y Fr(then)e(the)g(message)f(is)i(pac)o(k)o(ed)
f(using)g(an)g(XDR)g(represen)o(tation)g(for)f(the)h(data.)18
b(I.e.,)13 b(the)g(pac)o(king)g(unit)75 2483 y(generated)j(b)o(y)h(a)f
(sequence)i(of)e Fl(MPI)p 715 2483 V 15 w(P)l(A)o(CK)h
Fr(calls)g(with)g Fl(comm)e(=)h(MPI)p 1334 2483 V 16
w(COMM)p 1492 2483 V 16 w(UNIVERSAL)i Fr(is)f(the)75
2539 y(same)11 b(string)g(that)f(w)o(ould)i(obtain)f(b)o(y)g(con)o(v)o
(erting)g(the)g(sequence)h(of)f(basic)h(comp)q(onen)o(ts)f(to)f(XDR)i
(co)q(de.)75 2596 y(If)18 b(the)f(comm)o(unicator)g(argumen)o(t)g(in)h
Fl(MPI)p 848 2596 V 16 w(UNP)l(A)o(CK)g Fr(call)g(is)g
Fl(comm)e(=)i(MPI)p 1461 2596 V 16 w(COMM)p 1619 2596
V 16 w(UNIVERSAL)75 2652 y Fr(then)g(the)g(message)f(is)h(unpac)o(k)o
(ed)g(assuming)g(that)f(the)h(pac)o(k)o(ed)f(data)g(is)i(stored)e(in)h
(an)g(XDR)g(repre-)-32 46 y Fm(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 28
26 27 bop 75 -100 a Fr(26)871 b Fk(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y Fr(sen)o(tation.)20
b Fe(MPI)p 366 49 13 2 v 14 w(COMM)p 510 49 V 15 w(UNIVERSAL)14
b Fr(is)h(a)g(new)h(constan)o(t)e(comm)o(unicator)h(handle.)166
106 y(A)d(pac)o(king)g(unit)h(pac)o(k)o(ed)f(with)g Fl(comm)e(=)i(MPI)p
974 106 14 2 v 16 w(COMM)p 1132 106 V 17 w(UNIVERSAL)g
Fr(can)g(b)q(e)h(sen)o(t)f(and)g(receiv)o(ed)75 162 y(with)h(datat)o
(yp)q(e)g Fe(MPI)p 442 162 13 2 v 14 w(P)m(A)o(CKED)p
Fr(.)d(Unlik)o(e)15 b(other)d(pac)o(king)h(units,)h(it)f(cannot)g(b)q
(e)h(receiv)o(ed)g(using)f(another)75 219 y(datat)o(yp)q(e.)166
275 y(The)j(function)h Fl(MPI)p 524 275 14 2 v 16 w(P)l(A)o(CK)p
655 275 V 16 w(SIZE)f Fr(can)g(b)q(e)h(used)g(to)e(\014nd)i(the)f(size)
h(of)e(the)i(XDR)f(represen)o(tation)75 332 y(of)f(a)g(string)g(of)g(v)
m(alues.)75 453 y Fg(6.4.13)49 b(Datat)o(yp)q(e)17 b(transfer)75
539 y Fr(One)k(sided)h(comm)o(unication)f(and)g(MPI-IO)g(require)h(the)
e(capabilit)o(y)i(of)e(transferring)g(a)g(datat)o(yp)q(e)75
596 y(from)15 b(pro)q(cess)g(to)g(pro)q(cess.)20 b(In)c(addition,)g
(datat)o(yp)q(e)f(deco)q(ding)h(is)g(needed)h(for)d(debuggers)i(and)f
(other)75 652 y(to)q(ols.)35 b(It)20 b(is)g(prop)q(osed)h(to)e(extend)i
(the)f(functions)h Fl(MPI)p 1103 652 V 16 w(P)l(A)o(CK)f
Fr(and)g Fl(MPI)p 1429 652 V 16 w(UNP)l(A)o(CK)p Fr(,)g(in)h(order)f
(to)75 708 y(ac)o(hiev)o(e)c(these)f(goals.)166 765 y(A)d(call)h(to)e
Fl(MPI)p 429 765 V 16 w(P)l(A)o(CK\(handle,)i(1,)f(MPI)p
856 765 V 15 w(D)o(A)l(T)l(A)l(TYPE,)h(outbuf,)h(outsize,)e(p)q
(osition,)i(comm\))p Fr(,)c(where)75 821 y Fl(handle)j
Fr(is)e(the)h(address)f(of)g(a)f(datat)o(yp)q(e)h(handle,)i(will)g(pac)
o(k)e(in)o(to)g Fl(outbuf)i Fr(a)e(description)h(of)f(the)g(datat)o(yp)
q(e)75 878 y(argumen)o(t.)166 934 y(A)17 b(call)h(to)f
Fl(MPI)p 445 934 V 16 w(UNP)l(A)o(CK\(inbuf,)h(insize,)g(p)q(osition,)g
(handle,)h(1,)e(MPI)p 1383 934 V 16 w(D)o(A)l(T)l(A)l(TYPE,)g(comm\))e
Fr(will)75 991 y(unpac)o(k)g(from)f(the)h(bu\013er)g(a)f(datat)o(yp)q
(e)h(description)h(and)f(return)g(in)g Fl(handle)h Fr(a)f(handle)h(to)e
(a)g(datat)o(yp)q(e)75 1047 y(ob)s(ject.)27 b(This)19
b(datat)o(yp)q(e)e(is)i Fb(structur)n(al)r(ly)g(e)n(quivalent)e
Fr(to)g(the)h(datat)o(yp)q(e)g(that)f(w)o(as)g(enco)q(ded)i(b)o(y)f
(the)75 1104 y(sending)e(pro)q(cess.)k(I.e.,)14 b(it)g(is)h(a)f(datat)o
(yp)q(e)g(that)g(w)o(ould)h(b)q(e)g(created)f(at)g(the)h(receiving)h
(pro)q(cess)e(b)o(y)h(the)75 1160 y(same)i(sequence)h(of)f(datat)o(yp)q
(e)g(constructing)h(calls)g(that)f(w)o(as)f(used)i(to)f(de\014ne)h(the)
f(datat)o(yp)q(e)g(at)g(the)75 1217 y(sending)f(pro)q(cess.)166
1273 y Fe(MPI)p 243 1273 13 2 v 14 w(D)o(A)m(T)m(A)m(TYPE)c
Fr(is)j(a)g(new)g(constan)o(t)e(datat)o(yp)q(e)i(handle.)21
b(It)14 b(can)h(b)q(e)g(used)h(in)f(pac)o(k)g(and)g(unpac)o(k)75
1329 y(calls)24 b(wherev)o(er)f(a)f(regular)h(datat)o(yp)q(e)f(argumen)
o(t)g(can)h(b)q(e)h(used.)43 b(E.g.,)23 b(a)f(pro)q(cess)i(can)e(pac)o
(k)h(in)75 1386 y(the)c(same)g(pac)o(king)g(unit)h(sev)o(eral)f(datat)o
(yp)q(e)g(descriptions,)i(or)e(pac)o(k)g(in)g(a)g(pac)o(king)h(unit)f
(datat)o(yp)q(e)75 1442 y(descriptions)13 b(as)f(w)o(ell)g(as)g
(regular)g(data,)f(using)i(successiv)o(e)g(calls)g(to)e
Fl(MPI)p 1338 1442 14 2 v 16 w(P)l(A)o(CK)p Fr(.)g(A)h(pac)o(king)g
(unit)h(that)75 1499 y(con)o(tains)f(a)g(datat)o(yp)q(e)g(descriptor)h
(can)f(only)h(b)q(e)g(receiv)o(ed)g(with)f(t)o(yp)q(e)h
Fe(MPI)p 1367 1499 13 2 v 14 w(P)m(A)o(CKED)p Fr(.)d(The)i(\\datat)o
(yp)q(e")75 1555 y Fe(MPI)p 152 1555 V 14 w(D)o(A)m(T)m(A)m(TYPE)j
Fr(cannot)j(b)q(e)h(used)f(as)g(a)f(comp)q(onen)o(t)h(in)h(a)e
(constructed)h(datat)o(yp)q(e)g(and)g(cannot)f(b)q(e)75
1612 y(used)f(in)g(send/receiv)o(e)g(calls.)166 1668
y(A)e(call)i(to)d Fl(MPI)p 436 1668 14 2 v 16 w(P)l(A)o(CK)p
567 1668 V 16 w(SIZE)h Fr(can)g(b)q(e)h(used)g(to)f(\014nd)h(out)f(ho)o
(w)f(m)o(uc)o(h)h(space)h(is)g(needed)g(to)f(store)f(a)75
1725 y(datat)o(yp)q(e)i(represen)o(tation.)166 1781 y(The)21
b(pac)o(k)o(ed)g(represen)o(tation)f(of)h(a)f(datat)o(yp)q(e)g(can)h(b)
q(e)h(implemen)o(tation)g(dep)q(enden)o(t.)38 b(If)21
b(the)75 1838 y Fl(comm)e Fr(argumen)o(t)g(of)h(the)h
Fl(MPI)p 645 1838 V 16 w(P)l(A)o(CK)f Fr(call)i(indicates)f(that)f(the)
h(datat)o(yp)q(e)f(will)i(b)q(e)f(transfered)f(in)75
1894 y(a)f(homogeneous)f(en)o(vironmen)o(t,)i(then)g(one)f(ma)o(y)f
(use)h(an)g(in)o(ternal,)i(\\binary")e(datat)o(yp)q(e)f(represen-)75
1950 y(tation.)42 b(Ho)o(w)o(ev)o(er,)23 b(a)f Fl(MPI)p
584 1950 V 16 w(P)l(A)o(CK)g Fr(call)i(that)e(pac)o(ks)g(a)g(datat)o
(yp)q(e)g(descriptor)h(can)g(use)g Fl(comm)e(=)75 2007
y(MPI)p 160 2007 V 16 w(COMM)p 318 2007 V 16 w(UNIVERSAL)p
Fr(,)d(to)g(require)g(that)f(a)g(canonical)i(datat)o(yp)q(e)e(represen)
o(tation)h(b)q(e)g(created.)75 2063 y(In)13 b(this)f(case,)g(the)g
Fl(MPI)p 480 2063 V 16 w(P)l(A)o(CK)g Fr(call)h(will)g(store)e(in)i
(the)f(pac)o(king)g(unit)h(a)f(c)o(haracter)f(string)h(that)f(enco)q
(des)75 2120 y(the)k(datat)o(yp)q(e,)f(using)i(the)f(grammar)f(in)i
(Section)g Ff(??)o Fr(.)k(\(One)15 b(ma)o(y)g(think)h(of)e(this)i
(grammar)d(as)i(de\014n-)75 2176 y(ing)k(the)g(XDR)g(enco)q(ding)h(of)e
(datat)o(yp)q(es.\))30 b(Similarly)l(,)21 b(a)e(call)g(to)g
Fl(MPI)p 1340 2176 V 15 w(UNP)l(A)o(CK)g Fr(with)g Fl(datat)o(yp)q(e)i
(=)75 2233 y(MPI)p 160 2233 V 16 w(D)o(A)l(T)l(A)l(TYPE)p
Fr(,)14 b(and)g Fl(comm)e(=)h(MPI)p 777 2233 V 16 w(COMM)p
935 2233 V 17 w(UNIVERSAL)h Fr(will)h(deco)q(de)g(a)e(datat)o(yp)q(e)g
(enco)q(ded)i(in)75 2289 y(a)e(string,)g(according)h(to)f(the)g
(grammar)f(in)i(Section)g Ff(??)p Fr(,)f(and)h(create)f(at)f(the)i
(target)e(the)h(corrsp)q(onding)75 2346 y(datat)o(yp)q(e)i(ob)s(ject.)
166 2443 y Fj(Discussion:)166 2492 y Fi(Do)e(w)o(e)h(w)o(an)o(t)g(the)g
(unpac)o(k)o(ed)h(datat)o(yp)q(e)f(to)f(b)q(e)i(committed?)166
2542 y(W)m(e)d(could)h(allo)o(w)e Fe(MPI)p 529 2542 13
2 v 14 w(D)o(A)m(T)m(A)m(TYPE)f Fi(to)j(b)q(e)g(used)h(in)e(datat)o(yp)
q(e)h(constructors,)h(and)f(in)f(send-receiv)o(e)j(calls.)75
2592 y(An)h(ada)o(v)n(an)o(tage)f(is)h(that)h(the)g(design)f(is)g
(clean:)23 b Fe(MPI)p 951 2592 V 14 w(D)o(A)m(T)m(A)m(TYPE)14
b Fi(b)q(eha)o(v)o(es)j(as)f(an)o(y)g(other)h(prede\014ned)h(MPI)75
2642 y(datat)o(yp)q(e.)g(One)c(problem)e(if)g(w)o(e)i(go)e(this)i(w)o
(a)o(y)e(is)h(that)h(a)f(message)g(bu\013er)h(descriptor)g(\(coun)o(t,)
g(datat)o(yp)q(e\))f(do)q(es)75 2692 y(not)h(tell)f(an)o(ymore)f(what)i
(is)g(the)g(size)g(of)g(the)g(corresp)q(onding)h(message.)i(Another)e
(problem)d(is)i(that)g(one)g(needs)1967 46 y Fm(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 29
27 28 bop 75 -100 a Fk(6.5.)34 b(TR)o(UE)15 b(EXTEXT)g(OF)g(D)o(A)l(T)l
(A)l(TYPES)936 b Fr(27)75 49 y Fi(to)13 b(create)h(MPI)f(ob)r(jects)h
(as)e(part)h(of)f(the)i(receiving)f(co)q(de.)18 b(This)13
b(ma)o(y)e(cause)i(problems)f(on)h(systems)f(where)i(the)75
99 y(receiving)j(co)q(de)g(ma)o(y)e(execute)j(in)e(a)g(signal)f(con)o
(text,)j(or)e(is)h(otherwise)g(restricted.)28 b(The)17
b(curren)o(t)h(constrain)o(t)75 149 y(\()p Fe(MPI)p 168
149 13 2 v 14 w(D)o(A)m(T)m(A)m(YPE)d Fi(can)j(only)f(b)q(e)h(used)g
(as)g(an)g(argumen)o(t)e(in)h(pac)o(k)h(and)f(unpac)o(k\))h(seems)g(to)
f(pro)o(vide)h(enough)75 199 y(function)c(and)f(allo)o(ws)g(for)g
(simpler)g(implemen)o(tation)d(strategies.)166 249 y(The)k(grammar)d
(for)j(univ)o(ersal)f(datat)o(yp)q(e)h(descriptors)i(should)e
(ful\014ll)e(these)j(t)o(w)o(o)f(conditions.)75 298 y(\(1\))g(Strings)g
(that)g(describ)q(e)h(datat)o(yp)q(es)g(are)f(self-delimiting.)75
348 y(\(2\))h(Strings)h(that)f(describ)q(e)i(datat)o(yp)q(es)f(ha)o(v)o
(e)f(enough)h(information)c(so)j(that)h(one)f(can)h(use)g(them)e(to)h
(create)i(a)75 398 y(new)d(structurally)h(equiv)n(alen)o(t)e(datat)o
(yp)q(e,)g(ev)o(en)i(on)f(a)f(no)q(de)i(with)e(a)h(di\013eren)o(t)h
(arc)o(hitecture.)166 454 y(The)j(same)f(design)i(can)f(b)q(e)g(used)h
(to)f(\015atten)h(and)e(transfer)i(other)g(MPI)f(opaque)g(ob)r(jects,)i
(where)f(this)75 511 y(mak)o(es)e(sense.)33 b(MPI)18
b(groups)h(are)f(a)g(p)q(ossible)h(candidate.)31 b(W)m(e)18
b(can)g(in)o(tro)q(duce)h(a)f(new)h(datat)o(yp)q(e)f(constan)o(t)75
567 y Fe(MPI)p 152 567 V 14 w(GROUP)13 b Fi(and)i(allo)o(w)e(group)i
(ob)r(jects)h(to)f(b)q(e)h(transferred,)g(using)f(the)h(same)e(design)h
(as)g(for)f(datat)o(yp)q(es.)22 b(If)75 624 y(w)o(e)14
b(tak)o(e)g(this)g(w)o(alk,)e(then)j(w)o(e)f(need)h(to)f(deal)f(with)h
(the)g(follo)o(wing)e(issues:)75 680 y(\(1\))k(What)g(is)h(the)g(univ)o
(ersal)f(represen)o(tation)i(for)e(groups)h(\(actually)m(,)e(for)h(MPI)
h(pro)q(cesses\)?)29 b(This)16 b(migh)o(t)e(b)q(e)75
737 y(something)e(lik)o(e)h Fa(\(IP)21 b(address)f(:)44
b(PID\))p Fi(.)12 b(This)i(represen)o(tation)h(should)e(b)q(e)h
(compatible)e(with)h(the)h(one)g(used)75 793 y(for)g(serv)o(ers)h(in)f
(the)g(clien)o(t/serv)o(er)h(section)g(of)e(the)i(Dynamic)d(c)o
(hapter.)75 850 y(\(2\))17 b(What)g(can)h(a)f(pro)q(cess)j(do)d(with)g
(suc)o(h)h(comm)o(unicated)d(group?)29 b(I.e.,)17 b(what)h(capabilit)o
(y)e(do)q(es)i(a)f(pro)q(cess)75 906 y(transfers)f(to)e(another)h(pro)q
(cess,)h(when)f(it)f(sends)i(to)f(that)f(other)h(pro)q(cess)i(a)d
(represen)o(tation)i(of)e(a)g(group?)20 b(Can)75 962
y(the)14 b(receiv)o(er)i(kill)c(an)o(y)i(pro)q(cess)h(in)f(the)g(group)
g(whic)o(h)g(description)g(it)g(receiv)o(ed?)1875 1018
y Fn(?)i Fm(\(July\))75 1153 y Fo(6.5)59 b(T)-5 b(rue)20
b(Extext)f(of)h(Datat)n(yp)r(es)75 1254 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 1311 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
1367 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 1424 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 1480 y(the)i Fe(MPI)p
237 1480 V 14 w(UB)g Fr(and)g Fe(MPI)p 500 1480 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 1537 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
1593 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.)75 1744 y Fl(MPI)p 160 1744 14 2 v 16 w(TRUE)p 294
1744 V 17 w(EXTENT\(datat)o(yp)q(e,)i(true)p 775 1744
V 17 w(lb,)e(true)p 929 1744 V 17 w(extent\))117 1821
y Fi(IN)155 b Fl(datat)o(yp)q(e)424 b Fi(datat)o(yp)q(e)14
b(to)g(get)g(information)d(on)117 1896 y(OUT)108 b Fl(true)p
396 1896 V 17 w(lb)461 b Fi(true)15 b(lo)o(w)o(er)e(b)q(ound)h(of)g
(datat)o(yp)q(e)117 1972 y(OUT)108 b Fl(true)p 396 1972
V 17 w(extent)379 b Fi(true)15 b(size)g(of)e(datat)o(yp)q(e)75
2096 y Fd(int)23 b(MPI)p 245 2096 15 2 v 17 w(True)p
358 2096 V 17 w(extent\(MPI)p 615 2096 V 16 w(Datatype)f(datatype,)h
(MPI)p 1156 2096 V 17 w(Aint)g(true)p 1388 2096 V 17
w(lb,)g(MPI)p 1572 2096 V 17 w(Aint)393 2152 y(true)p
492 2152 V 17 w(extent\))75 2239 y(MPI)p 150 2239 V 17
w(TRUE)p 263 2239 V 16 w(EXTENT\(DATATYPE,)f(TRUE)p 781
2239 V 17 w(LB,)h(TRUE)p 989 2239 V 17 w(EXTENT\))170
2295 y(INTEGER)g(DATATYPE,)g(TRUE)p 699 2295 V 17 w(LB,)g(TRUE)p
907 2295 V 17 w(EXTENT)166 2382 y Fl(true)p 244 2382
14 2 v 17 w(lb)14 b Fr(returns)f(the)g(o\013set)g(of)g(the)g(lo)o(w)o
(est)g(unit)h(of)f(store)g(whic)o(h)h(is)g(addressed)g(b)o(y)f(the)h
(datat)o(yp)q(e.)75 2438 y Fl(true)p 153 2438 V 17 w(extent)k
Fr(returns)f(the)g(true)f(size)i(of)e(the)h(datat)o(yp)q(e.)24
b(The)17 b Fl(true)p 1244 2438 V 17 w(extent)i Fr(is)e(the)g(minim)o
(um)h(n)o(um)o(b)q(er)75 2495 y(of)13 b(b)o(ytes)g(of)h(memory)f
(necessary)g(to)g(hold)i(a)e(datat)o(yp)q(e)g(and)h(ignores)g(the)f
Fl(LB)h Fr(and)g Fl(UB)g Fr(that)e(ma)o(y)h(ha)o(v)o(e)75
2551 y(b)q(een)j(used)g(in)g(creating)g(the)f(datat)o(yp)q(e.)-32
46 y Fm(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272
y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780
y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006
y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232
y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457
y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683
y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909
y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587
y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Page: 28 30
28 29 bop 75 -100 a Fr(28)876 b Fk(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y Fo(6.6)59
b(Caching)20 b(on)g(MPI)g(Handles)75 151 y Fr(The)11
b Fl(MPI)f Fr(standard)g(pro)o(vides)g(a)h(\\cac)o(hing")f(facilit)o(y)
i(that)d(allo)o(ws)i(an)f(application)i(to)e(attac)o(h)g(arbitrary)75
207 y(pieces)k(of)f(information,)g(called)i(attributes,)d(to)h(comm)o
(unicators.)18 b(Pro)o(viding)c(cac)o(hing)g(for)e(other)h
Fl(MPI)75 264 y Fr(handles)j(pro)o(vides)g(a)f(w)o(a)o(y)f(for)h(attac)
o(hing)f(information)i(to)e(these)i(handles)g(as)f(w)o(ell.)-1664
b Fn(>)15 b Fm(\(July\))166 320 y Fr(An)k(example)h(of)f(the)h(utilit)o
(y)g(of)f(cac)o(hing)h(is)f(for)g(a)g(pro\014ling)h(library)g(to)f(in)o
(tercept)h(ev)o(ery)f(call)75 377 y(that)g(creates)h(a)f(p)q(ersistan)o
(t)h(request)g(in)g Fl(MPI)p Fr(.)f(The)h(pro\014ling)h(library)g
(needs)f(to)f(\\remem)o(b)q(er")h(the)75 433 y(information)15
b(ab)q(out)g(a)g(p)q(ersistan)o(t)h(request)f(since)h(it)g(is)g(not)e
(a)o(v)m(ailable)j(when)f Fl(MPI)p 1532 433 14 2 v 16
w(ST)l(ART)g Fr(is)g(called.)75 489 y(The)j(pro\014ling)h(library)f
(could)g(cac)o(he)g(the)g(p)q(ersistan)o(t)f(requests)h(c)o
(haracteristics)g(on)f(the)h(p)q(ersistan)o(t)75 546
y(request.)h(Then,)15 b(whenev)o(er)h(this)f(p)q(ersistan)o(t)g
(request)g(is)h(used)f(in)h(a)f(pro\014led)h(call,)g(the)f(needed)i
(infor-)75 602 y(mation)11 b(can)g(b)q(e)h(extracted.)18
b(The)11 b(adv)m(an)o(tage)g(of)g(cac)o(hing)g(the)h(information)f(is)h
(that)e(risk)h(of)g(using)h(stale)75 659 y(information)j(from)g(reuse)g
(of)g(requests)g(while)i(the)e(pro\014ling)i(library)f(w)o(as)e
(disabled)j(is)f(eliminated.)-1943 b Fn(?)15 b Fm(\(July\))75
781 y Fg(6.6.1)49 b(F)o(unctions)75 866 y Fr(MPI-2)11
b(pro)o(vides)i(general)f(cac)o(hing)g(functions)g(that)f(allo)o(w)h
(attributes)g(to)f(b)q(e)h(cac)o(hed)g(on)g(the)f(follo)o(wing)75
923 y(t)o(yp)q(es)k(MPI)g(handles:)143 1017 y Fn(\017)23
b Fd(MPI)p 264 1017 15 2 v 16 w(COMM)143 1110 y Fn(\017)g
Fd(MPI)p 264 1110 V 16 w(DATATYPE)143 1204 y Fn(\017)g
Fd(MPI)p 264 1204 V 16 w(GROUP)-514 b Fn(>)15 b Fm(\(July\))143
1298 y Fn(\017)23 b Fd(MPI)p 264 1298 V 16 w(REQUEST)15
b Fr(\(P)o(ersistan)o(t)f(only\))143 1392 y Fn(\017)23
b Fd(MPI)p 264 1392 V 16 w(File)-117 1429 y Fn(?)15 b
Fm(\(July\))166 1526 y Fj(Missing:)166 1576 y Fi(W)m(e)e(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 1730 y Fb(R)n(ationale.)49
b Fr(It)17 b(w)o(as)f(decided)i(not)f(to)f(allo)o(w)h(cac)o(hing)g(on)g
(all)g(handles)h(since)g(it)f(could)h(ha)o(v)o(e)e(a)189
1786 y(p)q(erformance)h(impact.)24 b(F)l(or)16 b(example,)i(\(a)e
(non-p)q(ersistan)o(t\))h Fl(MPI)p 1360 1786 14 2 v 16
w(REQUEST)h Fr(is)f(created)g(and)-1992 b Fn(>)15 b Fm(\(July\))189
1843 y Fr(destro)o(y)o(ed)i(in)i(time)g(critical)h(sections)e(of)g(co)q
(de.)29 b(Ho)o(w)o(ev)o(er,)18 b(pro\014lers)h(w)o(ould)f(lik)o(e)i(to)
d(b)q(e)i(able)189 1899 y(to)d(cac)o(he)i(on)f(p)q(ersistan)o(t)g
(requests.)26 b(Since)18 b(they)f(are)g(longer)h(liv)o(ed,)g(it)g(w)o
(as)e(decided)j(to)e(allo)o(w)189 1955 y(cac)o(hing)f(on)f(them.)k(\()p
Fb(End)d(of)g(r)n(ationale.)p Fr(\))-1038 b Fn(?)15 b
Fm(\(July\))166 2062 y Fr(A)e Fd(keyval)f Fr(created)h(b)o(y)g(the)h
Fl(MPI)e Fr(function)i Fl(MPI)p 1019 2062 V 16 w(KEYV)l(AL)p
1205 2062 V 17 w(CREA)l(TE)g Fr(ma)o(y)e(b)q(e)i(used)g(for)e(cac)o
(hing)75 2118 y(on)i(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 2175 y(that)g(is)i(an)o(y)f
(allo)o(w)o(ed)h(handle.)75 2281 y Fd(typedef)23 b(int)g
(MPI_Copy_function\(void)e(*handle,)i(int)g(keyval,)791
2337 y(void)g(*extra_state,)f(void)i(*attribute_val_in,)791
2394 y(void)f(*attribute_val_out,)e(int)j(*flag\))75
2507 y(typedef)f(int)g(MPI_Delete_function\(void)e(*handle,)i(int)g
(keyval,)839 2563 y(void)g(*attribute_val,)f(void)h(*extra_state\);)
1967 46 y Fm(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967
272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498
y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724
y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949
y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959
1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959
1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959
1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959
1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959
2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959
2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959
2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p
eop
%%Page: 29 31
29 30 bop 75 -100 a Fk(6.6.)34 b(CA)o(CHING)15 b(ON)h(MPI)f(HANDLES)
1005 b Fr(29)75 49 y Fd(SUBROUTINE)22 b(COPY_FUNCTION\(HANDLE,)f
(KEYVAL,)i(EXTRA_STATE,)672 106 y(ATTRIBUTE_VAL_IN,)e
(ATTRIBUTE_VAL_OUT,)h(FLAG,)h(IERR\))75 162 y(INTEGER)g(HANDLE,)g
(KEYVAL,)g(EXTRA_STATE,)f(ATTRIBUTE_VAL_IN,)75 275 y(SUBROUTINE)g
(DELETE_FUNCTION\(HANDLE,)f(KEYVAL,)i(ATTRIBUTE_VAL,)f(EXTRA_STATE,)g
(IERR\))75 332 y(INTEGER)h(HANDLE,)g(KEYVAL,)g(ATTRIBUTE_VAL,)f
(EXTRA_STATE,)g(IERR)1875 388 y Fn(>)16 b Fm(\(July\))166
438 y Fr(The)c(follo)o(wing)h(functions)g(are)e(similar)i(to)f(the)g(p)
q(ervious)h(ones)f(for)f(comm)o(unicators)h(but)g(w)o(ork)f(on)75
494 y(all)16 b(allo)o(w)o(ed)g(handle)h(t)o(yp)q(es.)k(Th)o(us,)15
b(b)q(oth)h(the)g(old)g(functions)g(\()p Fl(MPI)p 1276
494 14 2 v 16 w(A)l(TTR)p 1409 494 V 17 w(PUT)p Fr(,)f
Fl(MPI)p 1627 494 V 16 w(A)l(TTR)p 1760 494 V 17 w(GET)p
Fr(,)75 551 y(and)g Fl(MPI)p 248 551 V 16 w(A)l(TTR)p
381 551 V 17 w(DELETE)p Fr(\))g(and)g(the)h(new)f(functions)h(w)o(ork)e
(on)h(comm)o(unicators.)189 657 y Fb(R)n(ationale.)46
b Fr(The)17 b(di\016cult)o(y)h(with)e(using)h(the)g(old)g(functions)g
(is)f(that)g(the)h(function)g(do)q(es)f(not)189 713 y(kno)o(w)i(the)h
(t)o(yp)q(e)g(of)g(handle)h(b)q(eing)g(passed.)32 b(Th)o(us,)19
b(new)g(functions)h(are)f(required.)32 b(\()p Fb(End)19
b(of)189 770 y(r)n(ationale.)p Fr(\))75 971 y Fl(MPI)p
160 971 V 16 w(HANDLE)p 355 971 V 16 w(A)l(TTR)p 488
971 V 18 w(PUT\(handle,)d(handle)p 888 971 V 17 w(t)o(yp)q(e,)g(k)o
(eyval,)f(attribute)p 1321 971 V 18 w(val\))117 1048
y Fi(IN)155 b Fl(handle)465 b Fi(handle)14 b(to)g(whic)o(h)f(attribute)
i(will)d(b)q(e)j(attac)o(hed)117 1123 y(IN)155 b Fl(handle)p
443 1123 V 18 w(t)o(yp)q(e)367 b Fi(t)o(yp)q(e)15 b(of)e
Fe(handle)117 1198 y Fi(IN)155 b Fl(k)o(eyval)471 b Fi(k)o(ey)14
b(v)n(alue,)f(as)h(returned)h(b)o(y)f Fe(MPI)p 1453 1198
13 2 v 14 w(KEYV)m(AL)p 1624 1198 V 14 w(CREA)m(TE)117
1273 y Fi(IN)155 b Fl(attribute)p 484 1273 14 2 v 18
w(val)352 b Fi(attribute)15 b(v)n(alue)75 1398 y Fd(int)23
b(MPI)p 245 1398 15 2 v 17 w(Handle)p 406 1398 V 17 w(attr)p
519 1398 V 16 w(put\(void)g(*handle,)g(int)g(handle)p
1204 1398 V 17 w(type,)g(int)g(keyval,)g(void)393 1454
y(*attribute)p 636 1454 V 16 w(val\))75 1541 y(MPI)p
150 1541 V 17 w(HANDLE)p 311 1541 V 16 w(ATTR)p 423 1541
V 17 w(PUT\(HANDLE,)f(HANDLE)p 870 1541 V 16 w(TYPE,)i(KEYVAL,)f
(ATTRIBUTE)p 1437 1541 V 16 w(VAL\))170 1597 y(INTEGER)g(HANDLE,)g
(HANDLE)p 699 1597 V 17 w(TYPE,)g(KEYVAL,)g(ATTRIBUTE)p
1266 1597 V 16 w(VAL)75 1778 y Fl(MPI)p 160 1778 14 2
v 16 w(HANDLE)p 355 1778 V 16 w(A)l(TTR)p 488 1778 V
18 w(GET\(handle,)16 b(handle)p 885 1778 V 17 w(t)o(yp)q(e,)g(k)o
(eyval,)f(attribute)p 1318 1778 V 18 w(val,)f(\015ag\))117
1855 y Fi(IN)155 b Fl(handle)465 b Fi(handle)14 b(to)g(whic)o(h)f
(attribute)i(is)f(attac)o(hed)g(\(handle\))117 1930 y(IN)155
b Fl(handle)p 443 1930 V 18 w(t)o(yp)q(e)367 b Fi(t)o(yp)q(e)15
b(of)e Fe(handle)117 2005 y Fi(IN)155 b Fl(k)o(eyval)471
b Fi(k)o(ey)14 b(v)n(alue)f(\(in)o(teger\))117 2081 y(OUT)108
b Fl(attribute)p 484 2081 V 18 w(val)352 b Fi(attribute)15
b(v)n(alue,)d(unless)j Fe(\015ag)f Fi(=)g(false)117 2156
y(OUT)108 b Fl(\015ag)518 b Fa(true)14 b Fi(if)h(an)f(attribute)i(v)n
(alue)e(w)o(as)h(extracted;)i Fa(false)d Fi(if)g(no)905
2212 y(attribute)h(is)e(asso)q(ciated)i(with)f(the)g(k)o(ey)75
2337 y Fd(int)23 b(MPI)p 245 2337 15 2 v 17 w(Handle)p
406 2337 V 17 w(attr)p 519 2337 V 16 w(get\(void)g(*handle,)g(int)g
(handle)p 1204 2337 V 17 w(type,)g(int)g(keyval,)g(void)393
2393 y(*attribute)p 636 2393 V 16 w(val,)g(int)h(*flag\))75
2480 y(MPI)p 150 2480 V 17 w(HANDLE)p 311 2480 V 16 w(ATTR)p
423 2480 V 17 w(GET\(HANDLE,)e(HANDLE)p 870 2480 V 16
w(TYPE,)i(KEYVAL,)f(ATTRIBUTE)p 1437 2480 V 16 w(VAL,)g(FLAG\))170
2536 y(INTEGER)g(HANDLE,)g(HANDLE)p 699 2536 V 17 w(TYPE,)g(KEYVAL,)g
(ATTRIBUTE)p 1266 2536 V 16 w(VAL,)g(FLAG)-32 46 y Fm(1)-32
103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32
385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611
y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40
1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40
1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40
1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40
2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40
2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40
2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40
2699 y(48)p eop
%%Page: 30 32
30 31 bop 75 -100 a Fr(30)871 b Fk(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y Fl(MPI)p
160 49 14 2 v 16 w(HANDLE)p 355 49 V 16 w(A)l(TTR)p 488
49 V 18 w(DELETE\(handle,)15 b(handle)p 966 49 V 18 w(t)o(yp)q(e,)h(k)o
(eyval\))117 126 y Fi(IN)155 b Fl(handle)465 b Fi(handle)14
b(to)g(whic)o(h)f(attribute)i(is)f(attac)o(hed)g(\(handle\))117
199 y(IN)155 b Fl(handle)p 443 199 V 18 w(t)o(yp)q(e)367
b Fi(t)o(yp)q(e)15 b(of)e Fe(handle)117 272 y Fi(IN)155
b Fl(k)o(eyval)471 b Fi(The)15 b(k)o(ey)e(v)n(alue)h(of)f(the)i
(deleted)f(attribute)h(\(in)o(teger\))75 397 y Fd(int)23
b(MPI)p 245 397 15 2 v 17 w(Handle)p 406 397 V 17 w(attr)p
519 397 V 16 w(delete\(void)g(*handle,)f(int)i(handle)p
1276 397 V 16 w(type,)f(int)h(keyval\))75 483 y(MPI)p
150 483 V 17 w(HANDLE)p 311 483 V 16 w(ATTR)p 423 483
V 17 w(DELETE\(HANDLE,)e(HANDLE)p 942 483 V 16 w(TYPE,)h(KEYVAL\))170
540 y(INTEGER)g(HANDLE,)g(HANDLE)p 699 540 V 17 w(TYPE,)g(KEYVAL)166
626 y Fr(The)10 b(argumen)o(t)g Fl(handle)p 578 626 14
2 v 17 w(t)o(yp)q(e)i Fr(m)o(ust)d(b)q(e)i Fe(MPI)p 925
626 13 2 v 14 w(HANDLE)p 1102 626 V 16 w(COMM)p Fr(,)e
Fe(MPI)p 1345 626 V 15 w(HANDLE)p 1523 626 V 15 w(D)o(A)m(T)m(A)m(TYPE)
p Fr(,)e Fe(MPI)p 1845 626 V 15 w(HANDLE)p 2023 626 V
15 w(GROUP)p Fr(,)75 683 y Fe(MPI)p 152 683 V 14 w(HANDLE)p
329 683 V 16 w(PREQUEST)p Fr(,)16 b(or)i Fe(MPI)p 723
683 V 15 w(HANDLE)p 901 683 V 15 w(FILE)g Fr(if)h(the)g
Fl(handle)g Fr(is)g(a)f(comm)o(unicator,)h(datat)o(yp)q(e,)75
739 y(group,)c(p)q(ersisten)o(t)g(request,)g(or)g(\014le,)h(resp)q
(ectiv)o(ely)l(.)166 836 y Fj(Discussion:)166 886 y Fi(Is)e(it)g(ok)f
(to)h(use)h(v)o(oid*)d(for)i(the)g(handles)-117 933 y
Fn(?)h Fm(\(July\))75 1053 y Fg(6.6.2)49 b(Example)75
1139 y Fr(An)17 b(example)h(of)f(ho)o(w)g(one)g(migh)o(t)g(use)g(these)
g(cac)o(hing)h(functions)g(to)f(cac)o(he)g(the)g(deco)q(ded)h(datat)o
(yp)q(e)75 1195 y(information)d(on)g(the)h(datat)o(yp)q(e.)75
1288 y Fd(int)23 b(datatype_keyval;)75 1401 y(/*)h(library)e
(initialization)g(function.)47 b(MUST)23 b(be)h(called)f(before)g(the)g
(library)75 1458 y(is)h(used)f(*/)75 1514 y(lib_init\(int)f
(*datatype_keyval\))75 1571 y({)147 1627 y(MPI_Keyval_create\(MPI_N)o
(ULL_COP)o(Y_FN,)f(MPI_NULL_DEL_FN,)g(datatype_keyval,)h(NULL\);)75
1684 y(})75 1853 y(/*)i(the)f(library)g(*/)75 1909 y(lib\(MPI_DATATYPE)
f(datatype,)g(int)i(datatype_keyval\))75 1966 y({)147
2022 y(char)f(datatype_char[1024];)147 2079 y(int)g(flag;)147
2192 y(MPI_Attr_get\(datatype,)d(MPI_HANDLE_DATATYPE,)i
(datatype_keyval,)f(datatype_char,)h(flag\);)147 2248
y(if)h(\(!flag\))g({)218 2305 y(/*)h(get)f(datatype)g(and)g(cache)h
(for)f(later)g(use)h(*/)218 2361 y(MPI_Get_char_data_type\(data)o
(type,)d(datatype_char\);)218 2418 y(MPI_Attr_put\(datatype,)g
(MPI_HANDLE_DATATYPE,)g(datatype_keyval,)h(datatype_char\))147
2474 y(})147 2587 y(/*)h(use)h(datatype_char)e(*/)75
2700 y(})1967 46 y Fm(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Page: 31 33
31 32 bop 75 -100 a Fk(6.7.)29 b(IDENTIFYING)16 b(PERSISTENT)g
(REQUESTS)768 b Fr(31)75 49 y Fo(6.7)59 b(Identifying)19
b(P)n(ersistent)i(Requests)1875 106 y Fn(>)16 b Fm(\(July\))75
151 y Fr(The)i(cac)o(hing)h(capabilit)o(y)h(can)e(only)g(b)q(e)h(used)g
(on)f(p)q(ersisten)o(t)g(requests.)29 b(Th)o(us,)18 b(it)g(is)h(imp)q
(ortan)o(t)f(to)75 207 y(kno)o(w)10 b(whether)i(a)e(giv)o(en)i(request)
f(is)g(p)q(ersisten)o(t)h(or)e(not.)18 b(This)12 b(can)f(b)q(e)g
(accomplished)i(b)o(y)e(the)g(follo)o(wing)q Fn(?)16
b Fm(\(July\))75 264 y Fr(function.)75 415 y Fl(MPI)p
160 415 14 2 v 16 w(REQUEST)p 379 415 V 18 w(PERSISTENT\(request,)h(p)q
(ersistent\))117 492 y Fi(IN)155 b Fl(request)452 b Fi(An)14
b(MPI)p 1056 492 13 2 v 15 w(Request)117 567 y(OUT)108
b Fl(p)q(ersistent)407 b Fi(true)15 b(if)e(request)j(is)d(p)q(ersisten)
o(t)75 691 y Fd(int)23 b(MPI)p 245 691 15 2 v 17 w(Request)p
430 691 V 16 w(persistent\(MPI)p 782 691 V 16 w(Request)g(request,)f
(int)i(*persistent\))75 778 y(MPI)p 150 778 V 17 w(REQUEST)p
335 778 V 16 w(PERSISTENT\(REQUEST,)d(PERSISTENT\))170
834 y(INTEGER)i(REQUEST)170 891 y(LOGICAL)g(PERSISTENT)166
977 y Fr(This)16 b(routine)f(returns)g(true)g(in)h Fl(p)q(ersistent)i
Fr(if)e(the)f(request)g(is)h(a)f(p)q(ersisten)o(t)g(request.)20
b(Otherwise)75 1034 y(it)15 b(returns)h(false.)75 1177
y Fo(6.8)59 b(Naming)20 b(Objects)1875 1234 y Fn(>)c
Fm(\(July\))75 1278 y Fd(There)23 b(are)h(many)f(occasions)g(on)g
(which)g(it)h(would)f(potentially)f(be)i(useful)f(to)75
1335 y(allow)g(a)h(user)f(to)h(associate)e(a)i(print)f(name)h(with)f
(an)h(MPI)f(communicator,)f(for)75 1391 y(instance)h(:)g(error)h
(reporting,)e(debugging,)h(profiling,)f(etc.)75 1504
y(This)h(objective)g(can)g(be)h(achieved)f(using)g(the)g(following)g
(two)g(functions)75 1617 y(int)g(MPI_Comm_set_name)f(\(IN)h(MPI_Comm)g
(comm,)g(IN)48 b(string)23 b(name\))123 1674 y(int)g
(MPI_Comm_set_name\(MPI_Comm)d(comm,)k(char)f(*)h(name\);)123
1730 y(integer)f(MPI_Comm_set_name\()e(integer)i(comm,)g
(character*\(*\))f(name\))75 1843 y(int)h(MPI_Comm_get_name)f(\(IN)h
(MPI_Comm)g(comm,)g(OUT)h(string)f(name\))123 1899 y(int)g
(MPI_Comm_get_name\(MPI_Comm)d(comm,)k(char)f(**)h(name\);)123
1956 y(integer)f(MPI_Comm_get_name\()e(integer)i(comm,)g
(character*\(*\))f(name\))75 2069 y(MPI_Comm_set_name)g(allows)h(a)g
(user)h(to)f(associate)g(a)h(name)f(string)g(with)g(a)75
2125 y(communicator.)f(The)i(passed)f(in)g(character)g(string)g(will)g
(be)h(saved)f(inside)g(the)75 2182 y(MPI)g(library)g(\(so)h(need)f(not)
h(be)f(allocated)g(in)g(persistent)g(store\).)75 2295
y(MPI_Comm_get_name)f(returns)g(any)i(name)f(which)g(had)h(previously)e
(been)i(associated)75 2351 y(with)f(the)h(given)f(communicator.)f
(\(Note)h(that)h(in)f(the)h(C)f(binding)g(it)h(returns)f(a)75
2407 y(reference)g(to)g(the)h(internal)e(copy)i(of)f(the)h(name,)f
(which)g(should)g(not)h(be)75 2464 y(modified)f(by)g(the)h(user,)f(and)
g(which)h(will)f(become)g(invalid)g(should)g(the)g(name)h(be)75
2520 y(altered)f(\(by)g(another)g(call)h(to)f(MPI_Comm_set_name\),)e
(or)j(the)f(communicator)75 2577 y(deleted\).)75 2690
y(If)h(the)f(user)g(has)h(not)f(associated)g(a)g(name)h(with)f(a)h
(communicator)e(the)i(system)-32 46 y Fm(1)-32 103 y(2)-32
159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32
441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667
y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40
949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40
1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40
1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40
2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40
2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40
2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p
eop
%%Page: 32 34
32 33 bop 75 -100 a Fr(32)876 b Fk(CHAPTER)15 b(6.)30
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)75 49 y Fd(should)23
b(return)g(a)h(null)f(string)g(\(all)g(spaces)h(in)f(Fortran,)g("")g
(in)h(C\),)g(or)f(a)75 106 y(system)g(dependent)g(name.)g(\(This)g
(allows)g(the)h(MPI)f(system)g(to)h(give)f(default)75
162 y(print)g(names)g(to)h(communicators,)e(one)h(might)h(expect)f
(MPI_COMM_WORLD)f(to)75 219 y(return)h("MPI_COMM_WORLD",)f(for)h
(instance\).)75 332 y(We)h(also)f(add)g(a)h(pre-defined)e(attribute)h
(key)h(MPI_NAME)e(to)i(the)f(C)h(binding)75 388 y(only.)f(This)g
(behaves)g(as)h(if)g(the)f(following)g(code)g(had)g(been)h(executed)f
(in)75 444 y(MPI_Init)g(\(give)g(or)h(take)f(the)g(issue)g(that)h
(MPI_NAME)f(is)g(here)g(treated)g(as)h(a)75 501 y(variable)f(whereas)g
(it)g(should)g(look)h(like)f(a)h(constant)e(to)i(user)f(code\).)75
614 y(static)g(int)g(name_delete\(MPI_Comm)f(comm,)h(int)g(keyval,)g
(void)g(*name,)75 670 y(void)g(*extra\))75 727 y({)147
783 y(free\(name\);)147 840 y(return)g(MPI_SUCCESS;)75
896 y(})75 1009 y(MPI_Keyval_create\(MPI_Null)o(_copy_f)o(n,)e
(name_delete,)h(&MPI_NAME,)h(0\);)75 1122 y(Then)g(the)h(C)f(version)g
(of)h(MPI_Comm_set_name)e(can)h(be)h(implemented)e(as)75
1235 y(int)h(MPI_Comm_set_name\(MPI_Comm)e(comm,)i(char)g(*)h(name\))75
1291 y({)147 1348 y(char)f(*)h(local_name)e(=)i(strdup\(name\);)147
1461 y(return)f(MPI_Attr_put\(comm,)e(MPI_NAME,)i(local_name\);)75
1517 y(})75 1630 y(and)g(the)h(C)g(version)f(of)g(MPI_Comm_get_name)f
(is)h(simply)75 1743 y(int)g(MPI_Comm_get_name\(MPI_Comm)e(comm,)i
(char)g(**name\))75 1799 y({)147 1856 y(int)g(flag;)147
1912 y(int)g(res)g(=)h(MPI_Attr_get\(comm,)e(MPI_NAME,)g(name,)h
(&flag\);)147 2025 y(if)g(\(!flag\))194 2082 y(*name)g(=)h("";)g(/*)f
(No)h(name,)f(give)g(it)h(a)g(null)f(string)g(*/)147
2138 y(return)g(res;)75 2195 y(})75 2307 y(Rationale:)75
2420 y(We)h(provide)e(the)i(full)f(set)h(of)f(functions)g(above)g(as)h
(well)f(as)h(the)f(pre-defined)75 2477 y(attribute)g(key)g(for)h(the)f
(following)g(reasons)75 2590 y(1\))h(It)f(is)h(not)f(in)h(general)f
(possible)f(to)i(store)f(a)h(string)f(as)h(an)f(attribute)147
2646 y(from)g(Fortran.)75 2703 y(2\))h(To)f(make)g(the)h(attribute)f
(key)g(useful)g(the)h(additional)e(code)h(to)h(call)f(strdup)1967
46 y Fm(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: 33 35
33 34 bop 75 -100 a Fk(6.9.)34 b(PR)o(OPOSAL:)16 b(SUPPOR)l(T)h(F)o(OR)
e(LA)l(YERED)h(PR)o(ODUCTS)526 b Fr(33)147 49 y Fd(is)23
b(necessary.)g(If)g(this)h(is)f(not)h(standardised)e(then)h(users)g
(have)h(to)f(write)147 106 y(it.)g(This)g(is)h(extra)f(unneeded)g(work)
g(which)g(we)h(can)f(easily)g(eliminate.)75 162 y(3\))h(The)f(Fortran)g
(binding)g(is)g(not)h(trivial)f(to)g(write)h(\(it)f(will)g(depend)g(on)
147 219 y(details)f(of)i(the)g(Fortran)e(compilation)h(system\),)g(and)
g(will)g(not)h(be)147 275 y(portable.)e(Therefore)h(it)g(should)g(be)h
(in)g(the)f(library)g(rather)g(than)g(in)h(user)147 332
y(code.)75 444 y(***Open)f(issues***)75 501 y(1\))h(Does)f(the)g
(MPI_Info)g(mechanism)g(provide)g(a)g(way)h(of)f(creating)g(an)h
(object)f(which)147 557 y(could)g(then)g(be)h(cached)f(allowing)f(us)i
(to)g(bundle)f(up)g(a)h(string)f(?)147 670 y(Even)g(if)g(we)h(could)f
(implement)g(this)g(way)h(I'd)f(still)g(like)h(to)f(keep)h(simple)f
(user)147 727 y(level)g(functions)f(as)i(described)f(above,)g(because)g
(people)g(won't)g(use)g(them)147 783 y(otherwise...)75
896 y(2\))h(If)f(we're)g(allowing)g(attributes)g(on)g(many)h(objects)e
(we)i(should)f(allow)g(names)147 953 y(there)g(too.)1875
984 y Fn(?)16 b Fm(\(July\))1875 1042 y Fn(>)g Fm(\(July\))75
1124 y Fo(6.9)59 b(Prop)r(osal:)27 b(Supp)r(o)n(rt)20
b(fo)n(r)f(La)n(y)n(ered)h(Pro)r(ducts)75 1226 y Fr(On)e(o)q(ccasion,)g
(users)f(wish)h(to)f(write)g(la)o(y)o(ered)h(MPI)f(pro)q(ducts.)26
b(This)18 b(happ)q(ens)h(when)e(the)h(pro\014ling)75
1282 y(in)o(terface)f(is)h(used)g(and)f(MPI-IO)h(w)o(ould)f(also)h(lik)
o(e)g(for)e(third)i(part)o(y)e(I/O)i(libraries)g(to)f(b)q(e)h(a)o(v)m
(ailable.)75 1338 y(T)l(o)g(b)q(e)h(able)g(to)f(do)g(this)h(it)g(is)g
(necessary)f(to)g(b)q(e)h(able)g(to)f(raise)g(the)h(error)f(handler)h
(from)f(a)g(la)o(y)o(ered)75 1395 y(library)l(.)35 b(It)20
b(is)h(also)f(p)q(oten)o(tially)h(necessary)g(to)e(b)q(e)i(able)g(to)e
(execute)i(clean-up)g(co)q(de)g(immedately)75 1451 y(b)q(efore)13
b(MPI)p 301 1451 14 2 v 17 w(Finalize)h(executes.)20
b(Belo)o(w)13 b(is)h(a)f(prop)q(osal)g(to)f(allo)o(w)h(the)g(raising)h
(of)f(error)f(handlers)i(and)75 1508 y(a)h(prop)q(osal)g(to)g(allo)o(w)
g(the)h(attac)o(hmen)o(t)e(of)g(\014nalize)j(co)q(de.)75
1659 y Fl(MPI)p 160 1659 V 16 w(RAISE)p 300 1659 V 17
w(ERROR)p 464 1659 V 18 w(Handler)f(\(Comm,)c(Erro)o(rCo)q(de\))117
1736 y Fi(IN)155 b Fl(Comm)461 b Fi(Comm)o(unicator)11
b(that)j(scop)q(es)h(the)g(relev)n(an)o(t)f(error)g(handler)117
1808 y(IN)155 b Fl(Erro)o(rCo)q(de)394 b Fi(MPI)14 b(Error)h(Status)75
1964 y Fd(int)23 b(MPI_Raise_error_handler)e(\(MPI_Comm)i(Comm,)g(int)g
(ErrorCode\))75 2077 y(MPI_RAISE_ERROR_HANDLER)e(\(COMM,)i(ERROR_CODE,)
f(IERROR\))147 2133 y(INTEGER)g(COMM)147 2189 y(INTEGER)g(ERROR_CODE)
147 2246 y(INTEGER)g(IERROR)166 2334 y Fr(This)c(function)g(in)o(v)o
(ok)o(es)f(the)h(error)f(handler)h(assigned)g(to)f(the)g(comm)o
(unicator)g(with)h(the)g(error)75 2390 y(co)q(de)11 b(supplied.)20
b(If)11 b(the)f(error)f(handler)j(do)q(es)e(not)g(ab)q(ort)f(the)i(MPI)
f(pro)q(cess,)h(MPI)p 1472 2390 V 16 w(RAISE)p 1627 2390
V 18 w(ERR)o(OR)p 1809 2390 V 17 w(HANDLER)75 2447 y(will)h(return)e
(with)g(its)h(error)e(status)g(equal)i(to)f(the)g(input)h(error)f(co)q
(de)g(\(unless)h(MPI)p 1482 2447 V 17 w(RAISE)p 1638
2447 V 17 w(ERR)o(OR)p 1819 2447 V 18 w(HANDLER)75 2503
y(itself)16 b(encoun)o(tered)g(an)f(error\).)k(Belo)o(w)c(is)h(a)f
(sample)h(usage:)99 2591 y Fd(ptr)23 b(=)h(malloc\(32\);)99
2647 y(if)f(\(ptr)h(==)f(NULL\))147 2704 y(return)g
(\(MPI_Raise_error_handle)o(r)e(\(Comm,)i(MPI_ERR_SYSRESOURCE\)\);)-32
46 y Fm(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: 34 36
34 35 bop 75 -100 a Fr(34)871 b Fk(CHAPTER)15 b(6.)35
b(EXTERNAL)16 b(INTERF)-5 b(A)o(CES)166 49 y Fj(Discussion:)31
b Fi(There)13 b(are)e(some)g(unclear)g(issues)i(regarding)e(error)h
(handlers)g(in)f(general,)g(this)g(discussion)75 99 y(b)q(elongs)j(in)f
(either)i(dynamic,)d(misc,)g(external,)i(or)g(the)g(committee)e(as)i(a)
g(whole.)166 149 y(1\))h(Is)h(ERR)o(ORS)p 442 149 13
2 v 14 w(ARE)p 546 149 V 15 w(F)-5 b(A)m(T)m(AL)15 b(lo)q(cal)g(or)g
(do)q(es)h(the)g(ab)q(ort)g(reac)o(h)g(across)h(an)e(in)o(tercomm?)20
b(The)c(MPI-1)75 199 y(standard)c(talks)f(ab)q(out)g(the)g(ERR)o(ORS)p
705 199 V 15 w(ARE)p 810 199 V 14 w(F)-5 b(A)m(T)m(AL)11
b(error)h(handler)g(ha)o(ving)e(the)i(same)e(e\013ect)j(as)e(MPI)p
1753 199 V 15 w(Ab)q(ort)75 249 y(\(MPI)p 174 249 V 15
w(COMM)p 327 249 V 16 w(W)o(ORLD,)18 b(ErrorCo)q(de\),)k(with)d
(dynamic)f(pro)q(cesses)k(w)o(e)e(no)f(longer)g(ha)o(v)o(e)h(an)f(all)f
(inclusiv)o(e)75 298 y(MPI)p 158 298 V 15 w(COMM)p 311
298 V 16 w(W)o(ORLD.)9 b(W)m(e)h(simply)f(need)j(to)f(express)i(the)e
(in)o(ten)o(t)g(of)f(the)i(ERR)o(ORS)p 1466 298 V 14
w(ARE)p 1570 298 V 15 w(F)-5 b(A)m(T)m(AL)10 b(handler.)75
348 y(It)i(w)o(ould)e(b)q(e)j(nice)f(if)e(the)j(ERR)o(ORS)p
656 348 V 14 w(ARE)p 760 348 V 15 w(F)-5 b(A)m(T)m(AL)11
b(handler)h(didn't)f(ab)q(ort)g(pro)q(cesses)j(that)e(w)o(ere)h(indep)q
(enden)o(t)75 398 y(and)h(w)o(ere)h(attac)o(hed.)166
454 y(2\))f(Related:)k(do)q(es)d(MPI)p 563 454 V 15 w(Ab)q(ort)g(\(In)o
(terComm,)c(0\))j(ab)q(ort)g(the)h(serv)o(er)h(\(whic)o(h)e(hop)q(es)h
(to)f(b)q(e)g(p)q(ersisten)o(t\)?)75 709 y Fl(MPI)p 160
709 14 2 v 16 w(ADD)p 272 709 V 16 w(FINALIZE)p 482 709
V 16 w(CODE)h(\(Handler,)g(HandlerData\))117 786 y Fi(IN)155
b Fl(Handler)440 b Fi(A)11 b(function)g(to)g(b)q(e)g(executed)i(up)q
(on)e(en)o(tering)g(MPI)p 1719 786 13 2 v 16 w(Finalize)117
861 y(IN)155 b Fl(HandlerData)347 b Fi(Data)13 b(to)h(b)q(e)h(passed)g
(to)e(Handler)75 1036 y Fd(int)23 b(MPI_Add_finalize_code)e(\(void)j
(*Handler\(\),)e(void)h(*HandlerData\))75 1149 y(MPI_ADD_FINALIZE_CODE)
e(\(HANDLER,)i(HANDLER_DATA,)f(IERROR\))147 1205 y(EXTERNAL)g(HANDLER)
147 1261 y(INTEGER)g(HANDLER_DATA)147 1318 y(INTEGER)g(IERROR)75
1431 y(C)i(Binding)f(for)g(Handler:)123 1544 y(void)g(*MyHandler)g
(\(void)g(*MyData\))170 1600 y({)170 1657 y(/*)h(Cast)f(MyData)g(into)h
(whatever)e(is)i(useful)f(*/)170 1713 y(})166 1819 y
Fr(This)11 b(function)g(adds)f(a)g(function)h(to)e(the)h(list)h(of)f
(functions)h(that)e(are)h(in)o(v)o(ok)o(ed)h(when)f(MPI)p
1707 1819 14 2 v 17 w(Finalize)75 1876 y(is)15 b(called,)h(but)f(b)q
(efore)g(it)f(b)q(egins)i(its)f(actual)g(w)o(ork.)j(The)d(order)f(of)h
(calls)g(of)f(m)o(ultiple)j(handlers)e(is)g(not)75 1932
y(de\014ned.)29 b(A)18 b(handler)g(ma)o(y)f(assume)h(that)f(MPI)h(is)g
(not)f(y)o(et)h(\014nalized)h(and)f(th)o(us)g(ma)o(y)f(p)q(erform)g(an)
o(y)75 1989 y(v)m(alid)g(MPI)e(op)q(eration.)-607 b Fn(?)15
b Fm(\(July\))1967 46 y(1)1967 103 y(2)1967 159 y(3)1967
215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441
y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667
y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893
y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959
1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959
1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959
1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959
1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959
2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959
2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959
2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959
2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF