A new version is due to Steve by Tuesday at 10am (my time),
so if you are going to send comments and corrections, they
need to get to me by Monday night. Please keep in mind
that it is much easier for an editor to incorporate changes
when you propose new text rather than simply point out faults
in existing text. :-)
Enjoy,
- bill
----- cut here ----- io-2.ps ----- cut here -----
%!PS-Adobe-2.0
%%Creator: dvipsk 5.58f Copyright 1986, 1994 Radical Eye Software
%%Title: temp.dvi
%%Pages: 51
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSCommandLine: /usr/local/bin/dvips -o temp.ps temp
%DVIPSParameters: dpi=300, comments removed
%DVIPSSource: TeX output 1996.09.19:1935
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N
/X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /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]{ch-image}imagemask restore}B /D{/cc X dup type /stringtype ne{]}
if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup
length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{
cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul
add .99 lt{/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
%%BeginProcSet: special.pro
TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N
/vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen
false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B
/@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit
div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{
/CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{
10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B
/@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale
true def end /@MacSetUp{userdict /md known{userdict /md get type
/dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup
length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{}
N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath
clippath mark{transform{itransform moveto}}{transform{itransform lineto}
}{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{
itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{
closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39
0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N
/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1
scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get
ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip
not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0
TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR
pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1
-1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg
TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg
sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr
0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add
2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp
{pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72
div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray}
N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict
maxlength dict begin /magscale true def normalscale currentpoint TR
/psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts
/psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx
psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy
scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR
/showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{
psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2
roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath
moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict
begin /SpecialSave save N gsave normalscale currentpoint TR
@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial
{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto
closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx
sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR
}{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse
CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury
lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath
}N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{
end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin}
N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{
/SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX
SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X
/startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad
yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end
%%EndProcSet
TeXDict begin 40258437 52099154 1000 300 300 (temp.dvi)
@start /Fa 3 62 df<07C018303018701C600C600CE00EE00EE00EE00EE00EE00EE00E
E00EE00E600C600C701C30181C7007C00F157F9412>48 D<03000700FF00070007000700
070007000700070007000700070007000700070007000700070007007FF00C157E9412>
I<FFFFFCFFFFFC000000000000000000000000000000000000FFFFFCFFFFFC160A7E8C1B
>61 D E /Fb 1 1 df<FFFFF0FFFFF014027D881B>0 D E /Fc 5
116 df<003E000C000C000C000C0018001800180018073018F0307060706060C060C060
C06080C080C480C4C1C446C838700F177E9612>100 D<03000380030000000000000000
00000000001C002400460046008C000C0018001800180031003100320032001C0009177F
960C>105 D<383C1E0044C6630047028100460301008E0703000C0603000C0603000C06
0600180C0600180C0620180C0C20180C0C4030180440301807801B0E7F8D1F>109
D<1C3C22462382230346030603060306030C060C060C0C0C081A3019E018001800300030
003000FC001014808D12>112 D<07C00C201870187038001E000FC003E000606060E060
C0C0C1803F000C0E7E8D10>115 D E /Fd 1 82 df<FFFFFFFFC0FFFFFFFFC01F00003E
000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C00
0F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F
00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00
003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F0000
3C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C000F00003C
001F80007E00FFF003FFC0FFF003FFC0222A7E7F27>81 D E /Fe
51 123 df<00FC1F8001FC3F8003FC7F800700E0000E01C0000E01C0000E01C0000E01C0
000E01C0000E01C0000E01C000FFE1FC00FFE1FC000E01C0000E01C0000E01C0000E01C0
000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0
000E01C0000E01C0000E01C000191D809C18>11 D<0001C001F1C003F1C007F000070000
0E00000E00000E00000E00000E00000E00000E0000FFF1C0FFF1C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C0121E809D16>I<001C0000003E0000003E0000002E0000006700000067000000E7
800000C7800000C3800001C3C0000183C0000181C0000381E0000381E0000700F0000700
F0000600F0000E0078000FFFF8000FFFF8001C003C001C003C0018003C0038001E003800
1E0070001F0070000F0070000F00E0000780191D7F9C1C>65 D<FFF800FFFF00F00F80F0
03C0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F007C0FFFF80FFFE00FFFF80F0
3FC0F003E0F001F0F000F0F00078F00078F00078F00078F00078F000F0F001E0F007C0FF
FF80FFFC00151D7C9C1C>I<003FC000FFF003C0F00780300F00001E00003C00003C0000
780000780000780000F00000F00000F00000F00000F00000F00000F00000F00000F00000
7800007800007800003C00003C00001E00000F000807801803C07800FFF0003F80151F7D
9D1B>I<FFFC00FFFF00F00F80F003E0F001F0F000F0F00078F00038F0003CF0003CF000
1CF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0003CF0003CF0003CF000
78F000F0F000F0F003E0F00FC0FFFF00FFFC00171D7C9C1E>I<FFFFC0FFFFC0F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FF
FFC0FFFFC0121D7C9C19>I<FFFF80FFFF80F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000FFFF00FFFF00F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000111D7C9C18>I<003F
8001FFF003C0F80780380F00181E00003C00003C0000780000780000780000F00000F000
00F00000F00000F00000F00000F007F8F007F8F000387800387800387800383C00383C00
381E00380F003807803803C0F801FFF0003F80151F7D9D1C>I<F000F0F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0FFFFF0FFFFF0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0141D7C9C1D>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0041D7C9C0C>I<F0003CF00078F000F0F001E0F003C0F00780F00F00F01E00
F03C00F07800F0F000F0E000F1F000F3F000F77800FE7C00FC3C00FC1E00F81F00F00F00
F00F80F00780F003C0F003E0F001E0F000F0F000F0F00078F0007C161D7C9C1D>75
D<F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F0
00F000F000F000F000F000F000F000F000F000FFFEFFFE0F1D7C9C16>I<FC0007E0FC00
07E0FC0007E0EE000DE0EE000DE0EE000DE0E70019E0E70019E0E70019E0E78039E0E380
31E0E3C071E0E3C071E0E1C061E0E1C061E0E1E0E1E0E1E0E1E0E0E0C1E0E0F1C1E0E071
81E0E07181E0E07181E0E03B01E0E03B01E0E03B01E0E01E01E0E01E01E0E01E01E0E000
01E01B1D7C9C24>I<FC0070FC0070FE0070EE0070EF0070E70070E70070E78070E38070
E3C070E3C070E1E070E1E070E0E070E0F070E07070E07870E07870E03C70E03C70E01C70
E01E70E00E70E00E70E00F70E00770E007F0E003F0E003F0141D7C9C1D>I<003F000001
FFE00003FFF00007C0F8000F807C001E001E003E001F003C000F00780007807800078078
000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F8
0007C078000780780007807C000F803C000F003E001F001F003E000F807C0007C0F80003
FFF00001FFE000003F00001A1F7E9D1F>I<FFFC00FFFF00F00F80F003C0F001E0F000F0
F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFE00F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000141D7C
9C1B>I<FFF800FFFF00F00F80F003C0F001E0F000F0F000F0F000F0F000F0F000F0F001
E0F003E0F00FC0FFFF80FFFF00FFF800F03C00F01C00F01E00F00F00F00F00F00780F007
80F003C0F003C0F001E0F000F0F000F0F00078151D7C9C1B>82 D<03F8000FFE001C0F00
380700700300600000E00000E00000E00000E00000F000007800007F00003FE0001FFC00
07FE0001FF00001F800007800003C00003C00001C00001C00001C00001C0C00180E00380
F007007C0E001FFC0007F000121F7E9D17>I<FFFFFF80FFFFFF80001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E0000001E0000001E0000001E0000001E0000001E0000191D7F9C1C>I<F000
70F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F000
70F00070F00070F00070F00070F00070F00070F00070F00070F00070F000707800E07800
E03C01C01E03800F078007FE0001F800141E7C9C1D>I<F0000380F00003807800070078
000700780007003C000E003C000E003E000E001E001C001E001C000F0038000F0038000F
003800078070000780700003C0600003C0E00003C0E00001E0C00001E1C00001E1C00000
F1800000F380000073000000730000007B0000003E0000003E0000001C0000191D7F9C1C
>I<F000F00070F000F80070F000F800707800B8006078019C00E078019C00E078019C00
E03C039C01C03C031E01C03C030E01C01E030E01801E070F03801E070F03801E06070380
0F060703000F0E0787000F0C078700070C038600070C038600078C038E00079803CE0003
9801CC00039801CC00039801CC0001D001C80001D000D80001F000F80001E000F80000E0
007000241D7F9C27>I<78000E007C001E003C003C001E0038000F0070000F00F0000781
E00003C1C00001C3C00001E7800000F70000007E0000003E0000003C0000003C0000007E
00000077000000E7800001E3800003C1C0000381E0000700F0000F00F8000E0078001C00
3C003C003E0078001F0070000F00F0000F80191D7F9C1C>I<F80001E07C0001C03E0003
801E0007801F0007000F800E0007801E0007C01C0003E03C0001E0380001F0700000F0F0
000078E000007DC000003FC000001F8000001F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00001B1D80
9C1C>I<7FFFF07FFFF00001E00003E00003C00007C0000780000F00001F00001E00003E
00003C0000780000F80000F00001F00001E00003C00007C0000780000F80000F00001E00
003E00003C00007C0000780000FFFFF0FFFFF0141D7E9C19>I<0FC03FF07FF87038401C
001C001C00FC0FFC3FFC781CE01CE01CE01CF07C7FFC7FDC3F1C0E127E9114>97
D<E000E000E000E000E000E000E000E000E000E000E000E3E0EFF0FFF8F87CF01CE01EE0
0EE00EE00EE00EE00EE00EE01CF01CF87CFFF8EFF0E3C00F1D7D9C15>I<07E00FF81FFC
3C1C70047000E000E000E000E000E000E000700070043C1C1FFC0FF807E00E127E9112>
I<000E000E000E000E000E000E000E000E000E000E000E0F8E1FEE3FFE7C3E700E700EE0
0EE00EE00EE00EE00EE00EF00E701E7C3E3FFE1FEE0F8E0F1D7E9C15>I<07C01FE03FF0
78787018601CFFFCFFFCFFFCE000E000E000700070043C1C3FFC1FF807E00E127E9112>
I<00FC01FC03FC07000E000E000E000E000E000E000E00FFE0FFE00E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E1D809C0D>I<03C3C00FFFC0
1FFFC01C3800381C00381C00381C00381C00381C001C38001FF8001FF0003BC000380000
3800001FFC001FFF003FFF80700780E001C0E001C0E001C0F003C07C0F803FFF001FFE00
07F800121B7F9115>I<E000E000E000E000E000E000E000E000E000E000E000E3E0EFF0
FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C0E1D7D9C
15>I<F0F0F0F000000000000000707070707070707070707070707070707070041D7E9C
0A>I<03C003C003C003C0000000000000000000000000000001C001C001C001C001C001
C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C0C3C0FF
80FF003E000A25839C0B>I<E000E000E000E000E000E000E000E000E000E000E000E03C
E078E0F0E1E0E3C0E780EF00FF00FF80FB80F9C0F1E0E0E0E0F0E078E038E03CE01E0F1D
7D9C14>I<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0031D
7D9C0A>I<E3F03F00EFF8FF80FFFDFFC0F81F81E0F00F00E0E00E00E0E00E00E0E00E00
E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00
E0E00E00E01B127D9122>I<E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01C
E01CE01CE01CE01CE01CE01C0E127D9115>I<03F0000FFC001FFE003C0F007807807003
80E001C0E001C0E001C0E001C0E001C0F003C07003807807803C0F001FFE000FFC0003F0
0012127F9115>I<E3E0EFF0FFF8F87CF01CE01EE00EE00EE00EE00EE00EE00EE01CF03C
F87CFFF8EFF0E3C0E000E000E000E000E000E000E000E0000F1A7D9115>I<078E1FEE3F
FE7C3E781E700EE00EE00EE00EE00EE00EE00EF00E701E7C3E3FFE1FEE0F8E000E000E00
0E000E000E000E000E000E0F1A7E9115>I<E380E780EF80FC00F800F000F000E000E000
E000E000E000E000E000E000E000E000E00009127D910E>I<1FC03FF07FF0F030E000E0
00F0007F003FC01FE000F0003800388038F078FFF07FE01FC00D127F9110>I<1C001C00
1C001C001C001C00FFE0FFE01C001C001C001C001C001C001C001C001C001C001C001C00
1C201FF00FF007C00C187F970F>I<E01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE0
1CE01CE01CE01CE07CFFFC7FDC3F1C0E127D9115>I<E007E0077006700E700E381C381C
381C1C381C381C380E700E700660076007E003C003C010127F9113>I<E03E0380E03E03
80E03E03807037030070770700707707007073070038E38E0038E38E0038E38E0018E18C
001CC1CC001DC1DC001DC1DC000D80D8000F80F8000F80F8000780700019127F911C>I<
E007E007700E700E780E381C381C1C181C380C380E300E7006700760036003C001C001C0
01800180030003000700FE00FC00F800101A7F9113>121 D<7FFC7FFC7FFC007800F000
E001E003C0038007000F001E001C003C007800FFFCFFFCFFFC0E127F9112>I
E /Ff 59 125 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C000
0E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C000
0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000
0E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C0
0E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
7F87F8151D809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<60F0F868
0808081010204080050C7C9C0C>39 D<004000800100020006000C000C00180018003000
30007000600060006000E000E000E000E000E000E000E000E000E000E000E000E0006000
60006000700030003000180018000C000C00060002000100008000400A2A7D9E10>I<80
0040002000100018000C000C000600060003000300038001800180018001C001C001C001
C001C001C001C001C001C001C001C001C0018001800180038003000300060006000C000C
00180010002000400080000A2A7E9E10>I<60F0F0701010101020204080040C7C830C>
44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<00010003000600060006000C
000C000C0018001800180030003000300060006000C000C000C001800180018003000300
0300060006000C000C000C00180018001800300030003000600060006000C000C0001029
7E9E15>I<0FE03038401CE00EF00EF00EF00E000C001C0030006000C000800180010001
0001000100010001000000000000000000000003000780078003000F1D7E9C14>63
D<000600000006000000060000000F0000000F0000000F00000017800000178000001780
000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F0000180F8
000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F
001E001F00FF80FFF01C1D7F9C1F>65 D<FFFFC00F00F00F00380F003C0F001C0F001E0F
001E0F001E0F001E0F001C0F003C0F00780F01F00FFFE00F00780F003C0F001E0F000E0F
000F0F000F0F000F0F000F0F000F0F001E0F001E0F003C0F0078FFFFE0181C7E9B1D>I<
001F808000E0618001801980070007800E0003801C0003801C0001803800018078000080
7800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F0000000
F0000000700000807800008078000080380000801C0001001C0001000E00020007000400
0180080000E03000001FC000191E7E9C1E>I<FFFFFC0F003C0F000C0F00040F00040F00
060F00020F00020F02020F02000F02000F02000F06000FFE000F06000F02000F02000F02
000F02010F00010F00020F00020F00020F00060F00060F000C0F003CFFFFFC181C7E9B1C
>69 D<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02040F02000F0200
0F02000F06000FFE000F06000F02000F02000F02000F02000F00000F00000F00000F0000
0F00000F00000F00000F8000FFF800161C7E9B1B>I<FFF3FFC00F003C000F003C000F00
3C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F00
3C000FFFFC000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F00
3C000F003C000F003C000F003C000F003C000F003C00FFF3FFC01A1C7E9B1F>72
D<FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F00FFF00C1C7F9B0F>I<FFF03FE00F000F00
0F000C000F0008000F0010000F0020000F0040000F0080000F0100000F0200000F040000
0F0E00000F1F00000F2F00000F2780000F4780000F83C0000F01E0000F01E0000F00F000
0F00F8000F0078000F003C000F003C000F001E000F001F000F001F80FFF07FF01C1C7E9B
20>75 D<FFF8000F80000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00000F00080F00080F00080F00180F00
180F00100F00300F00700F01F0FFFFF0151C7E9B1A>I<FF8000FF800F8000F8000F8000
F8000BC00178000BC00178000BC001780009E002780009E002780008F004780008F00478
0008F0047800087808780008780878000878087800083C107800083C107800083C107800
081E207800081E207800081E207800080F407800080F4078000807807800080780780008
0780780008030078001C03007800FF8307FF80211C7E9B26>I<FF007FC00F800E000F80
04000BC0040009E0040009E0040008F0040008F8040008780400083C0400083C0400081E
0400080F0400080F0400080784000807C4000803C4000801E4000801E4000800F4000800
7C0008007C0008003C0008003C0008001C0008000C001C000C00FF8004001A1C7E9B1F>
I<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380780003
C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001
E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C
000380380000E0E000003F80001B1E7E9C20>I<FFFF800F00E00F00780F003C0F001C0F
001E0F001E0F001E0F001E0F001E0F001C0F003C0F00780F00E00FFF800F00000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F00000F0000FFF000171C7E9B
1C>I<FFFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F
001E000F001C000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F
0078000F0078000F0078000F0078000F0078000F0078000F0078100F0078100F0038100F
003C20FFF01C20000007C01C1D7E9B1F>82 D<07E0801C1980300580700380600180E001
80E00080E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F
800007C00003C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F8
00121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020
800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000001F800003FFFC001B1C7F9B1E>I<FFF07FC00F000E000F0004000F0004000F
0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F
0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F00040007
00080007800800038010000180100000C020000070C000001F00001A1D7E9B1F>I<FFE0
0FF01F0003C00F0001800F0001000F800300078002000780020003C0040003C0040003C0
040001E0080001E0080001F0080000F0100000F0100000F830000078200000782000003C
4000003C4000003C4000001E8000001E8000001F8000000F0000000F0000000600000006
0000000600001C1D7F9B1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F
00100F001F001007801F00200780278020078027802003C027804003C043C04003C043C0
4003E043C04001E081E08001E081E08001E081E08000F100F10000F100F10000F100F100
007900FA00007A007A00007A007A00003E007C00003C003C00003C003C00003C003C0000
1800180000180018000018001800281D7F9B2B>I<FFF007FC0F8001E00780008007C001
8003C0010003E0020001F0020000F0040000F8040000780800007C1800003C1000001E20
00001F2000000F4000000FC0000007800000078000000780000007800000078000000780
000007800000078000000780000007800000078000007FF8001E1C809B1F>89
D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0FEFE07297C9E0C>91 D<FEFE0606060606060606060606060606060606060606
0606060606060606060606060606060606FEFE0729809E0C>93 D<1FC000307000783800
781C00301C00001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40
603C40304E801F870012127E9115>97 D<FC00001C00001C00001C00001C00001C00001C
00001C00001C00001C00001C00001C7C001D86001E03001C01801C01C01C00C01C00E01C
00E01C00E01C00E01C00E01C00E01C00C01C01C01C01801E030019060010F800131D7F9C
17>I<07E00C301878307870306000E000E000E000E000E000E00060007004300418080C
3007C00E127E9112>I<003F000007000007000007000007000007000007000007000007
0000070000070003E7000C1700180F00300700700700600700E00700E00700E00700E007
00E00700E00700600700700700300700180F000C370007C7E0131D7E9C17>I<03E00C30
1818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803E00F127F91
12>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003
C4C00C38C01C3880181800381C00381C00381C00381C001818001C38000C300013C00010
00003000001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000C060018030
03001C0E0007F800121C7F9215>I<FC00001C00001C00001C00001C00001C00001C0000
1C00001C00001C00001C00001C7C001C87001D03001E03801C03801C03801C03801C0380
1C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>
I<18003C003C0018000000000000000000000000000000FC001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<FC00001C0000
1C00001C00001C00001C00001C00001C00001C00001C00001C00001C3FC01C0F001C0C00
1C08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C001C1C001C0E00
1C0F001C0F80FF9FE0131D7F9C16>107 D<FC001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C01C01C00
1C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C
01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<
FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E1C001806003003
00700380600180E001C0E001C0E001C0E001C0E001C0E001C06001807003803003001806
000E1C0003F00012127F9115>I<FC7C001D86001E03001C01801C01C01C00C01C00E01C
00E01C00E01C00E01C00E01C00E01C01C01C01C01C01801E03001D06001CF8001C00001C
00001C00001C00001C00001C00001C0000FF8000131A7F9117>I<03C1000C3300180B00
300F00700700700700E00700E00700E00700E00700E00700E00700600700700700300F00
180F000C370007C700000700000700000700000700000700000700000700003FE0131A7E
9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C001C001C001C001C00
1C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00FF000F8803880
18C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FFE0
1C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A
7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C0380
1C01001C01000E02000E020007040007040007040003880003880003D80001D00001D000
00E00000E00000E00000400013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C
0B01000E0B82000E0B82000E1182000711C4000711C4000720C40003A0E80003A0E80003
C0680001C0700001C0700001803000008020001B127F911E>I<7F8FF00F03800F030007
020003840001C80001D80000F00000700000780000F800009C00010E00020E0006070004
03801E07C0FF0FF81512809116>I<FF07E03C03801C01001C01000E02000E0200070400
07040007040003880003880003D80001D00001D00000E00000E00000E000004000004000
008000008000F08000F10000F300006600003C0000131A7F9116>I<7FFC703860384070
40F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F9112>I<FF
FFFFFFFF802901808B2A>124 D E /Fg 8 118 df<78FCFCFCFC7800000000000078FCFC
FCFC7806127D910D>58 D<FFFFF800FFFFFF000FC01FC00FC007E00FC001F00FC001F80F
C000F80FC000FC0FC0007C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0F
C0007E0FC0007E0FC0007E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001F00F
C007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B25>68 D<03FC000E0E001C1F003C1F0078
1F00780E00F80000F80000F80000F80000F80000F800007800007801803C01801C03000E
0E0003F80011127E9115>99 D<1E003F003F003F003F001E000000000000000000000000
00FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FF
E00B1E7F9D0E>105 D<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>110
D<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800
F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<1FD830786018E018E018
F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>115
D<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>117
D E /Fh 72 123 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8F8
70051C779B18>33 D<00C00001C00001C00001C00003F0000FFC003FFE007DCF0071C700
E1C380E1C780E1C780E1C780F1C00079C0003DC0001FE0000FF80003FC0001DE0001CF00
01C70061C380F1C380F1C380E1C380E1C70071C70079DE003FFE001FF80007E00001C000
01C00001C00000C00011247D9F18>36 D<01C00007E0000FF0000E70001C38001C38001C
38001C38001C73F01C73F01CE3F00FE3800FC7000F87000F07001F0E003F0E007B8E0073
DC00E1DC00E0F800E0F800E07070E0787070FC707FFFE03FCFE00F03C0141C7F9B18>38
D<007000F001E003C007800F001E001C00380038007000700070007000E000E000E000E0
00E000E000E000E0007000700070007000380038001C001E000F00078003C001F000F000
700C24799F18>40 D<6000F00078003C001E000F000780038001C001C000E000E000E000
E00070007000700070007000700070007000E000E000E000E001C001C0038007800F001E
003C007800F00060000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF
807FFF001FFC0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C0
0001C00011147D9718>I<00600000F00000F00000F00000F00000F00000F00000F0007F
FFC0FFFFE0FFFFE07FFFC000F00000F00000F00000F00000F00000F00000F00000600013
147E9718>I<1C3E7E7F3F1F070E1E7CF860080C788518>I<01F00007FC000FFE001F1F00
1C07003803807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0E000E0E000E0
E000E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE0007FC0001F000
131C7E9B18>48 D<01800380038007800F803F80FF80FB80438003800380038003800380
038003800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>I<03
F0000FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001C000
01C00003C0000780000F00001E00003C0000780000F00001E00007C0000F80001E00E03C
00E07FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C07801C0
3001C00001C00003C0000380000F0003FF0003FE0003FF000007800003C00001C00000E0
0000E00000E0F000E0F000E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B18>
I<1FFF803FFF803FFF803800003800003800003800003800003800003800003800003BF8
003FFE003FFF003C07801803C00001C00000E00000E06000E0F000E0F000E0E001C07003
C07C0F803FFF001FFC0003F000131C7E9B18>53 D<03F8000FFE001FFF003E0F80380380
7001C07001C07001C07001C03803803C07801FFF0007FC000FFE001F1F003C07807001C0
F001E0E000E0E000E0E000E0E000E07001C07803C03E0F801FFF000FFE0003F800131C7E
9B18>56 D<3078FCFC783000000000000000003078FCFC78300614779318>58
D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318>I<0003
00000780001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC0000FC00
007E00003F00001FC00007E00003F00001FC00007E00003F00001F800007800003001118
7D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0FF
FFE07FFFC0130C7E9318>I<600000F00000FC00007E00003F00001FC00007E00003F000
01FC00007E00003F00001F80001F80003F00007E0001FC0003F00007E0001FC0003F0000
7E0000FC0000F0000060000011187D9918>I<00700000F80000F80000D80000D80001DC
0001DC0001DC00018C00038E00038E00038E00038E000306000707000707000707000707
000FFF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18
>65 D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C0
1C07C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C00701C00F0
1C00E01C03E0FFFFC0FFFF80FFFE00141C7F9B18>I<00F8E003FEE007FFE00F07E01E03
E03C01E03800E07000E07000E0700000E00000E00000E00000E00000E00000E00000E000
00E000007000007000E07000E03800E03C00E01E01C00F07C007FF8003FE0000F800131C
7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00E01C00F01C
00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00E01C01E01C
01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>I<FFFFF0FFFFF0FFFFF01C0070
1C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE001FFE001FFE001C0E00
1C0E001C0E001C00001C00001C00381C00381C00381C00381C0038FFFFF8FFFFF8FFFFF8
151C7F9B18>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C00001C1C
001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C1C001C00001C00001C00001C00
001C00001C00001C0000FFC000FFC000FFC000131C7E9B18>I<01F1C003FDC00FFFC01F
0FC01C03C03803C03801C07001C07001C0700000E00000E00000E00000E00000E00000E0
0FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC00FFFC003FDC001
F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C0
1C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C0
1C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF
0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF00FFFF
807FFF00111C7D9B18>I<7F07F0FF87F87F07F01C03C01C07801C07001C0E001C1E001C
3C001C38001C70001CF0001DF0001DF0001FB8001FB8001F1C001E1C001C0E001C0E001C
07001C07001C03801C03801C01C07F03F0FF87F87F03F0151C7F9B18>75
D<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00
700E00707FFFF0FFFFF07FFFF0141C7F9B18>I<FC01F8FE03F8FE03F83B06E03B06E03B
06E03B06E03B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E038
70E03870E03800E03800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B
18>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C0
1CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC0
1C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FF8003FFE007FFF00780F007007
00F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E003
80E00380E00380E00380E00380E00380F00780700700780F007FFF003FFE000FF800111C
7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C00701C00701C00701C
00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C00001C00001C
00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE007FFF00780F00
700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380
E00380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000FFC00
001C00001E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF001C0F
801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F
001C07001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F00
F0161C7F9B18>I<03F3801FFF803FFF807C0F80700780E00380E00380E00380E0000070
00007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E0
00E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8
E07038E07038E07038E07038007000007000007000007000007000007000007000007000
00700000700000700000700000700000700000700000700000700000700007FF0007FF00
07FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00701C00701C00701C00701C00
701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00
701C00700E00E00F01E00783C003FF8001FF00007C00171C809B18>I<FF07F8FF07F8FF
07F81C01C01C01C01C01C01C01C00E03800E03800E03800E03800F078007070007070007
0700070700038E00038E00038E00038E00018C0001DC0001DC0001DC0000D80000F80000
F800007000151C7F9B18>I<FE03F8FE03F8FE03F87000707000707000703800E03800E0
3800E03800E03800E038F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D8DC0
1D8DC01D8DC01D8DC00D8D800D05800F07800F07800E0380151C7F9B18>I<7F8FE07F9F
E07F8FE00E07000F0700070E00078E00039C0003DC0001F80001F80000F00000F0000070
0000F00000F80001F80001DC00039E00038E00070F000707000E07800E03801E03C07F07
F0FF8FF87F07F0151C7F9B18>I<FF07F8FF07F8FF07F81C01C01E03C00E03800F078007
0700070700038E00038E0001DC0001DC0001DC0000F80000F80000700000700000700000
700000700000700000700000700000700001FC0003FE0001FC00151C7F9B18>I<3FFFE0
7FFFE07FFFE07001C07003C0700780700700000F00001E00001C00003C00007800007000
00F00001E00001C00003C0000780000700000F00001E00E01C00E03C00E07800E07000E0
FFFFE0FFFFE0FFFFE0131C7E9B18>I<FFF8FFF8FFF8E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000FFF8FFF8FFF80D24779F18>I<FFF8FFF8FFF800380038003800
380038003800380038003800380038003800380038003800380038003800380038003800
3800380038003800380038003800380038FFF8FFF8FFF80D247F9F18>93
D<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E00300E00
00070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F00
3FFFF01FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E
00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E
00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<
01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E00000
E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80003F
80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F807007
80700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F801FFF
F00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00380780700380700380E0
01C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF8007FF0001
FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007FFFC0
FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFF
F81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0
003800001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800
F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E
00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B
18>I<03800007C00007C00007C0000380000000000000000000000000007FC000FFC000
7FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<FE0000FE0000FE00000E00
000E00000E00000E00000E00000E3FF00E7FF00E3FF00E07800E0F000E1E000E3C000E78
000EF0000FF8000FFC000F9C000F0E000E0F000E07000E03800E03C0FFC7F8FFC7F8FFC7
F8151C7F9B18>107 D<7FE000FFE0007FE00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000FFFBF8
007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C
001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F
001914819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC17148093
18>I<01F0000FFE001FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0
E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E
00FEFF807FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00
380F00700F00700F80E00FC1E00FFFC00EFF800E3E000E00000E00000E00000E00000E00
000E00000E00007FC000FFE0007FC000151E809318>I<01E38007FB801FFF803E1F8038
0F80700780700780E00380E00380E00380E00380E00380E00380700780700780380F803C
1F801FFF800FFB8003E380000380000380000380000380000380000380000380003FF800
3FF8003FF8151E7E9318>I<7F87E0FF9FF07FBFF803F87803F03003E00003C00003C000
0380000380000380000380000380000380000380000380000380007FFE00FFFF007FFE00
15147F9318>I<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC
0003FE00001F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318
>I<0180000380000380000380000380007FFFC0FFFFC0FFFFC003800003800003800003
80000380000380000380000380000380000380400380E00380E00380E001C1C001FFC000
FF80003E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC
1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03800E03800E03800707000707000707
00038E00038E00038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318
>I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C71C01CF9C01CF9C01C
D9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>I<7F8FF0
7F9FF07F8FF0070700078E00039E0001DC0001F80000F80000700000F00000F80001DC00
039E00038E000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8F
F00E01C00E03800E0380070380070700070700038700038600038E0001CE0001CE0000CC
0000CC0000DC0000780000780000780000700000700000700000F00000E00079E0007BC0
007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C070078000
0F00001E00003C0000F80001F00003C0000780000F00701E00703C0070780070FFFFF0FF
FFF0FFFFF014147F9318>I E /Fi 17 123 df<00F1800389C00707800E03801C03803C
0380380700780700780700780700F00E00F00E00F00E00F00E10F01C20F01C20703C2070
5C40308C400F078014147E9318>97 D<07803F8007000700070007000E000E000E000E00
1C001C001CF01D0C3A0E3C0E380F380F700F700F700F700FE01EE01EE01EE01CE03CE038
607060E031C01F0010207E9F14>I<007C01C207010E0F1E0F1C0E3C04780078007800F0
00F000F000F000F00070017002300418380FC010147E9314>I<0000780003F800007000
00700000700000700000E00000E00000E00000E00001C00001C000F1C00389C00707800E
03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E10F01C20F0
1C20703C20705C40308C400F078015207E9F18>I<007C01C207010E011C013C01380278
0C7BF07C00F000F000F000F0007000700170023004183807C010147E9315>I<00007C00
00CE00019E00039E00030C000700000700000700000700000E00000E00000E0000FFF000
0E00000E00001C00001C00001C00001C00001C0000380000380000380000380000380000
700000700000700000700000700000E00000E00000E00000E00000C00001C00031800079
8000F300006200003C000017297E9F16>I<00E001E001E000C000000000000000000000
000000000E00130023804380438043808700070007000E000E001C001C001C2038403840
3840388019000E000B1F7E9E10>105 D<03C01FC0038003800380038007000700070007
000E000E000E000E001C001C001C001C0038003800380038007000700070007100E200E2
00E200E200640038000A207E9F0E>108 D<1E07802318C023A06043C070438070438070
8700E00700E00700E00700E00E01C00E01C00E01C00E03821C03841C07041C07081C0308
3803101801E017147E931B>110 D<007C0001C3000301800E01C01E01C01C01E03C01E0
7801E07801E07801E0F003C0F003C0F003C0F00780F00700700F00700E00301800187000
07C00013147E9316>I<03C1E004621804741C08781C08701E08701E10E01E00E01E00E0
1E00E01E01C03C01C03C01C03C01C0380380780380700380E003C1C0072380071E000700
000700000E00000E00000E00000E00001C00001C0000FFC000171D819317>I<007C0182
03010603060706060E00078007F803FC01FE001F00077007F006F006E004400820301FC0
10147E9315>115 D<00C000E001C001C001C001C003800380FFF8038007000700070007
000E000E000E000E001C001C001C001C10382038203820384018800F000D1C7F9B10>I<
0F00601180702180E021C0E041C0E04380E08381C00701C00701C00701C00E03800E0380
0E03800E03840E07080C07080C07080E0F1006131003E1E016147E931A>I<0F00606011
8070F02180E0F821C0E07841C0E0384380E0188381C0100701C0100701C0100701C0100E
0380200E0380200E0380200E0380400E0380400E0380800E078080060781000709860001
F078001D147E9321>119 D<0F00601180702180E021C0E041C0E04380E08381C00701C0
0701C00701C00E03800E03800E03800E03800E07000C07000C07000E0F00061E0003EE00
000E00000E00001C0078180078380070700060600021C0001F0000141D7E9316>121
D<01E02003F04007F8C00C1F8008010000020000040000080000100000600000C0000100
000200000400800801001003003F060061FC0040F80080700013147E9315>I
E /Fj 31 122 df<00003F03E00000C386700001878CF00003879CF00003031860000700
380000070038000007003800000E003800000E007000000E007000000E00700000FFFFFF
80001C007000001C00E000001C00E000001C00E000001C00E000003800E000003801C000
003801C000003801C000003801C000007001C00000700380000070038000007003800000
70038000006003800000E007000000E007000000E007000000E007000000C006000001C0
0E000001C00E000031860C0000798F180000F31E100000620C6000003C07C00000242982
9F1C>11 D<00003FE00000E0100001803800038078000300780007003000070000000700
0000070000000E0000000E0000000E000000FFFFE0000E00E0001C01C0001C01C0001C01
C0001C01C0001C0380003803800038038000380380003807000038070000700700007007
1000700E2000700E2000700E2000E00E2000E0064000E0038000E0000000C0000001C000
0001C000003180000079800000F3000000620000003C0000001D29829F1A>I<7FF0FFE0
7FE00C037D8A10>45 D<70F8F8F0E005057B840E>I<0000020000000600000006000000
0E0000001E0000001E0000003F0000002F0000004F0000004F0000008F0000010F000001
0F0000020F0000020F0000040F00000C0F0000080F0000100F0000100F0000200F80003F
FF800040078000C007800080078001000780010007800200078002000780060007801E00
0F80FF807FF81D207E9F22>65 D<01FFFFFE001E001C001E000C001E0004001E0004003C
0004003C0004003C0004003C00040078080800780800007808000078180000F0300000FF
F00000F0300000F0300001E0200001E0200001E0200001E0001003C0002003C0002003C0
004003C00040078000800780018007800100078007000F001F00FFFFFE001F1F7D9E1F>
69 D<01FFFF00001E03C0001E00E0001E0070001E0078003C0078003C0078003C007800
3C0078007800F0007800F0007801E0007801C000F0070000F01E0000FFF00000F0380001
E01C0001E01E0001E00E0001E00F0003C01E0003C01E0003C01E0003C01E0007803C0007
803C0807803C0807803C100F801C10FFF00C20000007C01D207D9E21>82
D<00F1800389C00707800E03801C03803C0380380700780700780700780700F00E00F00E
00F00E00F00E20F01C40F01C40703C40705C40308C800F070013147C9317>97
D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E380F38
0F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207B9F15>I<
007E0001C1000300800E07801E07801C07003C0200780000780000780000F00000F00000
F00000F00000F0000070010070020030040018380007C00011147C9315>I<0000780003
F80000700000700000700000700000E00000E00000E00000E00001C00001C000F1C00389
C00707800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E
20F01C40F01C40703C40705C40308C800F070015207C9F17>I<007C01C207010E011C01
3C013802780C7BF07C00F000F000F000F0007000700170023804183807C010147C9315>
I<00007800019C00033C00033C000718000700000700000E00000E00000E00000E00000E
0001FFE0001C00001C00001C00001C000038000038000038000038000038000070000070
0000700000700000700000700000E00000E00000E00000E00000C00001C00001C0000180
003180007B0000F300006600003C00001629829F0E>I<003C6000E27001C1E00380E007
00E00F00E00E01C01E01C01E01C01E01C03C03803C03803C03803C03803C07003C07001C
0F001C17000C2E0003CE00000E00000E00001C00001C00301C00783800F0700060E0003F
8000141D7E9315>I<01E0000FE00001C00001C00001C00001C000038000038000038000
038000070000070000071E000763000E81800F01C00E01C00E01C01C03801C03801C0380
1C0380380700380700380700380E10700E20700C20701C20700C40E00CC060070014207D
9F17>I<00C001E001E001C000000000000000000000000000000E003300230043804300
470087000E000E000E001C001C001C003840388030807080310033001C000B1F7C9E0E>
I<01E0000FE00001C00001C00001C00001C0000380000380000380000380000700000700
000703C00704200E08E00E11E00E21E00E40C01C80001D00001E00001FC00038E0003870
00387000383840707080707080707080703100E03100601E0013207D9F15>107
D<03C01FC0038003800380038007000700070007000E000E000E000E001C001C001C001C
0038003800380038007000700070007100E200E200E200E200640038000A207C9F0C>I<
1C0F80F0002630C318004740640C004780680E004700700E004700700E008E00E01C000E
00E01C000E00E01C000E00E01C001C01C038001C01C038001C01C038001C01C070803803
8071003803806100380380E10038038062007007006600300300380021147C9325>I<1C
0F802630C04740604780604700704700708E00E00E00E00E00E00E00E01C01C01C01C01C
01C01C03843803883803083807083803107003303001C016147C931A>I<007C0001C300
0301800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0F00780
F00700700F00700E0030180018700007C00013147C9317>I<01C1E002621804741C0478
1C04701E04701E08E01E00E01E00E01E00E01E01C03C01C03C01C03C01C0380380780380
700380E003C1C0072380071E000700000700000E00000E00000E00000E00001C00001C00
00FFC000171D809317>I<00F0400388C00705800E03801C03803C038038070078070078
0700780700F00E00F00E00F00E00F00E00F01C00F01C00703C00705C0030B8000F380000
380000380000700000700000700000700000E00000E0000FFE00121D7C9315>I<1C1E00
2661004783804787804707804703008E00000E00000E00000E00001C00001C00001C0000
1C000038000038000038000038000070000030000011147C9313>I<00FC030206010C03
0C070C060C000F800FF007F803FC003E000E700EF00CF00CE008401020601F8010147D93
13>I<018001C0038003800380038007000700FFF007000E000E000E000E001C001C001C
001C003800380038003820704070407080708031001E000C1C7C9B0F>I<0E00C03300E0
2301C04381C04301C04701C08703800E03800E03800E03801C07001C07001C07001C0710
1C0E20180E20180E201C1E200C264007C38014147C9318>I<0E03803307802307C04383
C04301C04700C08700800E00800E00800E00801C01001C01001C01001C02001C02001C04
001C04001C08000E300003C00012147C9315>I<0E00C1C03300E3C02301C3E04381C1E0
4301C0E04701C060870380400E0380400E0380400E0380401C0700801C0700801C070080
1C0701001C0701001C0602001C0F02000C0F04000E13080003E1F0001B147C931E>I<03
83800CC4401068E01071E02071E02070C040E00000E00000E00000E00001C00001C00001
C00001C040638080F38080F38100E5810084C60078780013147D9315>I<0E00C03300E0
2301C04381C04301C04701C08703800E03800E03800E03801C07001C07001C07001C0700
1C0E00180E00180E001C1E000C3C0007DC00001C00001C00003800F03800F07000E06000
C0C0004380003E0000131D7C9316>I E /Fk 31 90 df<3078F8787005057C840D>46
D<00000400000C00000C0000180000180000300000300000600000600000C00000C00001
80000180000300000300000600000600000C00000C000018000018000030000030000060
0000600000C00000C0000180000180000300000300000600000600000600000C00000C00
00180000180000300000300000600000600000C00000C00000800000162D7EA117>I<00
0C001C00FC0F380038003800380038003800700070007000700070007000E000E000E000
E000E000E001C001C001C001C001C001C0038003C0FFFE0F1E7C9D17>49
D<003F8000C1E00100F00200780400780400780F007C0F807C0F807C0F00780600780000
F80000F00001E00001C0000380000700000E00001C0000380000600000C0000180000300
200600200800401000403FFFC07FFF80FFFF80161E7E9D17>I<007F000183C00201E004
00F00700F00F00F00F01F00F01F00001E00001E00003C0000380000700000E0000F80000
0E000007000007800007C00003C00007C03007C07807C0F807C0F807C0F00780800F0040
0E00201C0018780007E000141F7D9D17>I<0000600000600000E00001C00003C00005C0
000DC00009C00011C000238000438000C380008380010380020380040700080700180700
100700200700400700FFFFF0000E00000E00000E00000E00000E00001C00001E0001FFE0
141E7E9D17>I<01803001FFE003FFC003FF0003FC000200000200000200000400000400
00040000047C000587000603800C01800801C00001C00001E00001E00001E00001E07003
C0F803C0F003C0E00380800780400700400E00201C0018700007C000141F7D9D17>I<00
0F8000704000C0200180E00301E00701E00E00C01E00001C00003C000038000078F80079
0E007A07007C0300F80380F80380F003C0F003C0F003C0F003C0F00780E00780E00780E0
0700E00F00600E00701C0030180018700007C000131F7C9D17>I<2000003FFFE07FFFC0
7FFF80400100C00200800200800400000800001000002000004000004000008000018000
0300000300000700000600000E00000E00001E00001C00001C00003C00003C00003C0000
780000780000780000300000131F799D17>I<003F0000C1C00100600200600400300C00
300C00300C00300C00600E00600F80C00FC18007F60003FC0001FC0001FF00063F800C0F
801007C03003C06001C06000C0C000C0C000C0C000C0C00080C001006003003004001818
0007E000141F7D9D17>I<0E1F1F1E0C000000000000000000003078F8787008147C930D>
58 D<0000100000001800000038000000380000007800000078000000FC000001BC0000
013C0000033C0000023C0000063C0000043E0000081E0000081E0000101E0000101E0000
201E0000200F0000400F0000400F0000FFFF0000800F0001000F80010007800200078002
00078004000780040007800C0007C03E0007C0FF807FFC1E207E9F22>65
D<0001F808000E061800380138007000F801E0007803C0007007800030078000300F0000
301F0000301E0000303E0000203C0000007C0000007C0000007C0000007C000000F80000
00F8000000F8000000F8000000F80000007800004078000080780000803C0000803C0001
001C0002000E00020006000C000300100001C0E000003F00001D217B9F21>67
D<07FFFF00007C01E0003C00F0003C00780078003C0078003C0078001E0078001E007800
1E0078001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F01E0001E01E000
3E01E0003E01E0003E01E0003C01E0007C03C0007803C000F003C000F003C001E003C003
C003C0078007800F0007803C00FFFFE000201F7E9E23>I<07FFFFF8007C0078003C0038
003C001800780018007800080078000800780008007800080078080800F0100000F01000
00F0100000F0300000FFF00000F0700001E0200001E0200001E0200001E0200001E00008
01E0001003C0001003C0001003C0002003C0002003C0006003C000C0078001C0078007C0
FFFFFF801D1F7E9E1F>I<07FFFFF8007C0078003C0038003C0018007800180078000800
78000800780008007800080078000800F0100000F0100000F0100000F0300000F0700000
FFF00001E0600001E0200001E0200001E0200001E0200001E0000003C0000003C0000003
C0000003C0000003C0000003C000000780000007C00000FFFE00001D1F7E9E1E>I<07FF
C7FFC0007C00F800003C007800003C007800007800F000007800F000007800F000007800
F000007800F000007800F00000F001E00000F001E00000F001E00000F001E00000FFFFE0
0000F001E00001E003C00001E003C00001E003C00001E003C00001E003C00001E003C000
03C007800003C007800003C007800003C007800003C007800003C007800007800F000007
C00F8000FFF8FFF800221F7E9E22>72 D<07FFE0007C00003C00003C0000780000780000
780000780000780000780000F00000F00000F00000F00000F00000F00001E00001E00001
E00001E00001E00001E00003C00003C00003C00003C00003C00003C00007800007C000FF
FC00131F7F9E10>I<07FFF000007E0000003C0000003C00000078000000780000007800
0000780000007800000078000000F0000000F0000000F0000000F0000000F0000000F000
0001E0000001E0000001E0000001E0000001E0008001E0010003C0010003C0010003C003
0003C0020003C0060003C0060007801E0007807C00FFFFFC00191F7E9E1C>76
D<07FC0000FFC0007C0000F800003C00017800003C00017800004E0002F000004E0002F0
00004E0004F000004E0004F000004E0008F000004E0008F00000870011E00000870011E0
0000870021E00000870021E00000870041E00000838041E00001038083C00001038083C0
0001038103C00001038203C0000101C203C0000101C403C0000201C40780000201C80780
000201C80780000201D00780000200F00780000600E00780000600E00F00000F00C00F80
00FFE0C1FFF8002A1F7E9E2A>I<07FC01FFC0003E003E00003E001800003E001800004F
001000004F001000004780100000478010000043C010000043C010000083C020000081E0
20000081E020000080F020000080F020000080782000010078400001007C400001003C40
0001003C400001001E400001001E400002000F800002000F800002000F80000200078000
0200078000060003800006000300000F00010000FFE0010000221F7E9E22>I<0003F800
001E0E000038070000E0038001C001C003C001E0078000E00F0000F00F0000F01E0000F0
1E0000F83E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8F80001F0F80001F0
F80001F0F80001F0F80003E0780003E0780003C0780007C07C0007803C000F003C001E00
1E001C000E0038000700F00003C3C00000FE00001D217B9F23>I<07FFFF00007C03C000
3C01E0003C00F0007800F0007800F8007800F8007800F8007800F8007800F000F001F000
F001E000F003C000F0078000F00F0000FFF80001E0000001E0000001E0000001E0000001
E0000001E0000003C0000003C0000003C0000003C0000003C0000003C000000780000007
C00000FFFC00001D1F7E9E1F>I<07FFFC00007C0700003C03C0003C01E0007801E00078
01F0007801F0007801F0007801F0007801E000F003E000F003C000F0078000F00F0000F0
3C0000FFF00001E0300001E0380001E01C0001E01C0001E01C0001E01E0003C03E0003C0
3E0003C03E0003C03E0003C03E0003C03E0207803E0407C01F04FFFC0F18000003E01F20
7E9E21>82 D<003F040060CC01803C03801C03001C0700180600080E00080E00080E0008
0E00000F00000F80000FE00007FE0003FF8001FFC0007FE00007E00001E00000E00000F0
0000F04000E04000E04000E04000E06000C0600180E00380F80300C60C0081F80016217D
9F19>I<3FFFFFF03C0780F03007803060078030400F0010400F0010C00F0010800F0010
800F0010800F0010001E0000001E0000001E0000001E0000001E0000001E0000003C0000
003C0000003C0000003C0000003C0000003C000000780000007800000078000000780000
007800000078000000F0000001F800007FFFE0001C1F7A9E21>I<FFFC3FF80F8007C007
800300078003000F0002000F0002000F0002000F0002000F0002000F0002001E0004001E
0004001E0004001E0004001E0004001E0004003C0008003C0008003C0008003C0008003C
0008003C000800380010003800100038001000380020003C0040001C0040001C0080000E
0100000706000001F800001D20799E22>I<FFF003FE1F8000F80F0000600F0000400F00
00400F8000800780018007800100078002000780020007C0040003C0040003C0080003C0
080003C0100003E0100001E0200001E0200001E0400001E0400001F0800000F1000000F1
000000F2000000F2000000FC0000007C0000007800000078000000700000007000000020
00001F207A9E22>I<FFF07FF81FF01F000FC007C01F00078003000F00078003000F0007
8002000F000F8002000F000F8004000F001F8004000F0017C008000F8013C00800078023
C01000078023C01000078043C02000078043C02000078083C04000078083E0400007C101
E0800003C101E0800003C201E1000003C201E1000003C401E2000003C401E2000003C801
F4000003E800F4000001F000FC000001F000F8000001E000F8000001E000F0000001C000
F0000001C00060000000C0006000000080004000002C207A9E2F>I<03FFC0FFC0007F00
7E00003E003800001E003000001E002000000F004000000F008000000F81000000078200
000007C600000003C400000003E800000001F000000001F000000000F000000000F80000
0000F8000000017C000000023C000000043C0000000C1E000000081E000000101F000000
200F000000400F800000C0078000008007C000010003C000070003E0001F8007E000FFE0
1FFE00221F7F9E22>I<FFF003FF1F8000F80F0000600F8000400780008007C0018003C0
010003E0020001E0040001F00C0001F0080000F0100000F8200000786000007C4000003C
8000003F0000001F0000001E0000001E0000001E0000001C0000003C0000003C0000003C
0000003C0000003C00000038000000780000007C00000FFFC000201F7A9E22>I
E /Fl 56 123 df<000078007C7800FC7801FC7803C00003800007800007800007800007
8000078000078000078000078000FFFC78FFFC78FFFC7807807807807807807807807807
807807807807807807807807807807807807807807807807807807807807807807807807
8078078078078078152480A31A>12 D<007000E001C003C0078007000F000E001E001C00
3C003C00380078007800780078007000F000F000F000F000F000F000F000F000F000F000
F000F000F000F0007000780078007800780038003C003C001C001E000E000F0007000780
03C001C000E000700C327DA413>40 D<E000700038003C001E000E000F00070007800380
03C003C001C001E001E001E001E000E000F000F000F000F000F000F000F000F000F000F0
00F000F000F000F000E001E001E001E001E001C003C003C00380078007000F000E001E00
3C0038007000E0000C327DA413>I<F0F0F0F004047B830E>46 D<000080000180000180
000300000300000300000600000600000600000C00000C00000C00001800001800001800
00300000300000300000600000600000600000C00000C00000C000018000018000018000
0180000300000300000300000600000600000600000C00000C00000C0000180000180000
180000300000300000300000600000600000600000C00000C00000C0000011317DA418>
I<01F00007FC000FFE001F1F003C07803C07807803C07803C07803C07001C0F001E0F001
E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001
E0F001E07803C07803C07803C07803C03C07803C07801F1F000FFE0007FC0001F0001323
7EA118>I<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003C003C003C003C003
C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0FFFFFFFFFF
FF10227CA118>I<03F0000FFC001FFE003C1F003007807007C06003C0E003E0C001E040
01E04001E00001E00001E00001E00003C00003C0000780000780000F00001E00003C0000
780000F00001E00001C0000380000700000E00001C0000380000700000FFFFE0FFFFE0FF
FFE013227EA118>I<01F00007FC001FFF003E0F003807807003C02003C02003C00003C0
0003C00003C0000780000780000F00001E0003FC0003F80003FE00000F000007800003C0
0003C00001E00001E00001E00001E00001E08001E0C003C0E003C07007803C0F801FFF00
0FFC0003F00013237EA118>I<001F00001F00002F00002F00006F0000EF0000CF0001CF
0001CF00038F00038F00078F00070F000F0F000E0F001E0F003C0F003C0F00780F00780F
00F00F00FFFFF8FFFFF8FFFFF8000F00000F00000F00000F00000F00000F00000F00000F
00000F0015217FA018>I<3FFF803FFF803FFF803C00003C00003C00003C00003C00003C
00003C00003C00003C00003CF8003FFE003FFF003F0F803E07803C03C03803C00001E000
01E00001E00001E00001E00001E00001E04003C04003C0E003C07007807C1F003FFE000F
FC0003F00013227EA018>I<007E0001FF0003FF0007C1000F00001E00001E00003C0000
3C000078000078000078F800F1FE00F7FF00FF0F80FC0780F803C0F803C0F801C0F001E0
F001E0F001E0F001E0F001E07001E07001E07801E07803C03803C03C03801C07801F0F00
0FFE0007FC0001F00013237EA118>I<FFFFE0FFFFE0FFFFE00000E00001C00003800007
80000700000E00001E00001C00003C0000380000780000780000F00000F00000E00001E0
0001E00001E00003C00003C00003C00003C00003C0000780000780000780000780000780
0007800007800013217EA018>I<01F00007FC000FFE001E0F003C07803C07807803C078
03C07803C07803C07803C03803803C07801E0F000F1E0007FC0003F8000FFE001E0F003C
07807803C07803C0F001E0F001E0F001E0F001E0F001E0F001E07803C07803C03C07803E
0F801FFF0007FC0001F00013237EA118>I<01F00007FC000FFE001E0F003C0700380780
7803807803C0F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001E07003E07803E0
7803E03C07E03E1FE01FFDE00FF1E003E3C00003C00003C0000380000780000700000F00
101E00183C003FF8001FF00007C00013237EA118>I<001F0000001F0000003F8000003F
8000003B8000007BC0000073C0000071C00000F1E00000F1E00000E0E00001E0F00001E0
F00001C0F00003C0780003C078000380780007803C0007803C0007003C000F001E000F00
1E000FFFFE001FFFFF001FFFFF001C000F003C0007803C00078038000780780003C07800
03C0700003C0F00001E0F00001E0E00001E01B237EA220>65 D<FFFC00FFFF80FFFFC0F0
07F0F001F0F00078F0003CF0003CF0003CF0003CF0003CF00038F00078F000F0F003E0FF
FFC0FFFF00FFFFC0F00FE0F001F8F00078F0003CF0001CF0001EF0001EF0001EF0001EF0
001EF0003CF0007CF000F8F003F0FFFFE0FFFFC0FFFE0017237BA220>I<000FF000007F
FC0000FFFF0001F01F0003C00700078000000F0000001E0000003E0000003C0000003C00
0000780000007800000078000000F0000000F0000000F0000000F0000000F0000000F000
0000F0000000F0000000F00000007800000078000000780000003C0000003C0000003E00
00001E0000000F0000000780008003C0038001F00F8000FFFF00007FFC00000FF0001925
7DA31F>I<FFFE0000FFFFC000FFFFE000F003F000F000F800F0007C00F0003E00F0001E
00F0000F00F0000F00F0000780F0000780F0000780F00003C0F00003C0F00003C0F00003
C0F00003C0F00003C0F00003C0F00003C0F00003C0F0000380F0000780F0000780F00007
80F0000F00F0001F00F0001E00F0003C00F000FC00F003F800FFFFE000FFFFC000FFFE00
001A237BA223>I<FFFFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000FFFFE0FFFFE0FFFFE0F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFF8FF
FFF8FFFFF815237BA21D>I<FFFFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0FFFFC0F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F0000014237BA21C>I<000FF000003FFE0000FFFF8001F80F8003E00380
078000000F0000001E0000001E0000003C0000003C000000780000007800000078000000
F0000000F0000000F0000000F0000000F0000000F0000000F000FFC0F000FFC0F000FFC0
780003C0780003C0780003C03C0003C03C0003C01E0003C01E0003C00F0003C0078003C0
03E003C001F807C000FFFFC0003FFF00000FF8001A257DA321>I<F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237CA20D>73
D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0FFFFC01223
7BA21A>76 D<FC001EFE001EFE001EFE001EF7001EF7001EF3801EF3801EF3C01EF1C01E
F1C01EF1E01EF0E01EF0F01EF0F01EF0781EF0781EF0381EF03C1EF03C1EF01E1EF01E1E
F00E1EF00F1EF0071EF0071EF0079EF0039EF0039EF001DEF001DEF000FEF000FEF000FE
F0007E17237BA222>78 D<001FC000007FF00001FFFC0003F07E0007C01F000F800F801F
0007C01E0003C03C0001E03C0001E0780000F0780000F0780000F070000070F0000078F0
000078F0000078F0000078F0000078F0000078F0000078F0000078F0000078780000F078
0000F0780000F07C0001F03C0001E03E0003E01E0003C01F0007C00F800F8007C01F0003
F07E0001FFFC00007FF000001FC0001D257DA324>I<FFFE00FFFF80FFFFC0F003E0F000
F0F00078F00078F0003CF0003CF0003CF0003CF0003CF0003CF00078F00078F000F0F003
E0FFFFC0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F0000016237BA21F>I<001FC000007FF00001FF
FC0003F07E0007C01F000F800F801F0007C01E0003C03C0001E03C0001E0780000F07800
00F0780000F0780000F0F0000078F0000078F0000078F0000078F0000078F0000078F000
0078F0000078F000007870000070780000F0780000F0780780F03C07C1E03C03C1E01E01
E3C01F01F7C00F80FF8007C07F0003F07E0001FFFE00007FFE00001FDF0000000F800000
07C0000003C0000003E0000001F01D2A7DA324>I<FFFC00FFFF80FFFFC0F003E0F000F0
F00078F00038F0003CF0003CF0003CF0003CF0003CF00038F00078F000F0F003E0FFFFC0
FFFF80FFFE00F01E00F00F00F00700F00780F00380F003C0F001E0F001E0F000F0F000F0
F00078F00038F0003CF0001EF0001EF0000F18237BA21F>I<00FE0003FFC007FFE00F81
E01E00603C00003C00007800007800007800007800007800007C00003C00003F00001FC0
000FFC0007FF0001FF80003FC00007E00001F00000F00000F80000780000780000780000
78000078000078C000F0E000F0F801E07E07C03FFF800FFF0001FC0015257EA31B>I<FF
FFFFF0FFFFFFF0FFFFFFF0000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00001C237EA221
>I<F0000078F0000078780000F0780000F0780000F03C0001E03C0001E03C0001E01E00
03C01E0003C01F0003C00F0007800F0007800F80078007800F0007800F0003C00E0003C0
1E0003C01E0001E01C0001E03C0001E03C0000F0380000F0780000F07800007870000078
F0000078F0000038E000003DE000001DC000001FC000001FC000000F8000000F80001D23
7FA220>86 D<F0001F0001E0F0003F8001E0F0003F8001E078003F8001C078003B8003C0
78007BC003C0780073C003C03C0071C007803C00F1C007803C00F1E007803C00E1E00780
1E00E0E00F001E01E0E00F001E01E0F00F001E01C0F00F000F01C0701E000F03C0701E00
0F03C0781E00070380781C00078380383C00078380383C000787803C3C000387003C3800
0387001C380003C7001C780003CF001C780001CE001E700001CE000E700001CE000E7000
01EE000EF00000EC000EE00000FC0007E00000FC0007E00000FC0007E00000780007C000
2B237FA22E>I<07E01FF83FFC381E201E000F000F000F000F00FF07FF1FFF3E0F780FF0
0FF00FF00FF00FF83F7FFF3FEF1F8F10167E9517>97 D<F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F1F000F7FC00FFFE00FC
1F00F80F00F00780F00780F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F0
0780F00780F80F00FC3E00FFFE00F7F800F1F00012237CA219>I<01FC0007FF000FFF80
1F03803C0180780000780000700000F00000F00000F00000F00000F00000F00000780000
7800007800003C00401F03C00FFFC007FF8001FC0012167E9516>I<0003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C003E3C00FFB
C01FFFC03F0FC03C07C07803C07803C0F003C0F003C0F003C0F003C0F003C0F003C0F003
C0F003C07803C07803C03C07C03E0FC01FFFC00FFBC003E3C012237EA219>I<03F00007
FC001FFE003E0F003C0780780380780380F001C0FFFFC0FFFFC0FFFFC0F00000F00000F0
00007000007800007800003C00801F07800FFF8007FF0001F80012167E9516>I<003F00
FF01FF03C0038007800780078007800780078007800780FFF8FFF8FFF807800780078007
80078007800780078007800780078007800780078007800780078007800780102380A20F
>I<01F07807FFF80FFFF81F1F001E0F003C07803C07803C07803C07803C07801E0F001F
1F000FFE001FFC0019F0003800003800003C00001FFE001FFFC01FFFE03FFFF07801F078
00F8F00078F00078F00078F000787800F03E03E01FFFC00FFF8001FC0015217F9518>I<
F000F000F000F000F000F000F000F000F000F000F000F000F000F1F8F3FCF7FEFE1EF80F
F80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F1023
7CA219>I<F0F0F0F0000000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F004237DA20B>I<F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F01F80F03F00F03E00F07C00F0F800F1F000F3E000F7
C000FFC000FFC000FFE000FFE000FDF000F8F800F07800F07C00F03E00F01E00F01F00F0
0F00F00F80F007C012237CA218>107 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>I<F0F807C0F3FE1FF0F7FF3FF8FE
0F7078FC0FE07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF0
07803C1E167C9527>I<F1F8F3FCF7FEFE1EF80FF80FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00FF00FF00FF00F10167C9519>I<01FC0007FF000FFF801F07
C03C01E07800F07800F0700070F00078F00078F00078F00078F00078F000787800F07800
F07C01F03E03E01F07C00FFF8007FF0001FC0015167F9518>I<F1F000F7FC00FFFE00FC
3F00F80F00F00780F00780F007C0F003C0F003C0F003C0F003C0F003C0F003C0F007C0F0
0780F00F80F80F00FC3E00FFFE00F7F800F1F000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F0000012207C9519>I<F0E0F3E0F7E0FF00FE00FC00F800F8
00F000F000F000F000F000F000F000F000F000F000F000F000F000F0000B167C9511>
114 D<07F01FFC3FFE3C0E7806780078007C003F003FF01FF80FFC01FE001F000F000F00
0FC00FF81EFFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00FFF8FFF8FFF8
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F080F1C07FC07F8
03E00E1C7F9B12>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00FF01FF83F7FFF7FCF1F0F10167C9519>I<F001E0F001E07803C07803C0
7803C03C07803C07803C07801E07001E0F001E0F000F0E000F1E000F1E00071C00079C00
07BC0003B80003B80003F80001F00001F00013167F9516>I<F007803CF00FC03CF00FC0
3C780DC078781DC078781DE078781CE0783C18E0F03C38E0F03C38F0F01C38F0E01E3871
E01E3071E01E7079E00E7079C00E7039C00F603BC007603B8007601B8007C01F8007C01F
8003C01F001E167F9521>I<F001E0F001E07803C07803C07C03C03C07803C07801E0780
1E07001E0F000F0F000F0E00071E00079E00039C00039C00039C0001980001D80000F800
00F00000F00000F00000E00000E00001E00001C00001C0000380007F80007F00007E0000
13207F9516>121 D<7FFFC07FFFC07FFFC0000F80000F00001E00003E00007C00007800
00F00001F00003E00003C0000780000F80001F00001E00003C00007C0000FFFFC0FFFFC0
FFFFC012167F9515>I E /Fm 56 123 df<007F07F001FF1FF003FF3FF0078078000700
70000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F000FFF8FF80FFF8
FF80FFF8FF800F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00
F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00
F0001C20809F1B>11 D<0000F000F8F001F8F003F8F00780000700000F00000F00000F00
000F00000F00000F00000F0000FFF8F0FFF8F0FFF8F00F00F00F00F00F00F00F00F00F00
F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00
F0142180A018>I<007000E001C00380078007000E001E001E003C003C003C0078007800
780078007000F000F000F000F000F000F000F000F000F000F000F000F000700078007800
780078003C003C003C001E001E000E0007000780038001C000E000700C2E7EA112>40
D<E000700038001C001E000E0007000780078003C003C003C001E001E001E001E000E000
F000F000F000F000F000F000F000F000F000F000F000F000E001E001E001E001E003C003
C003C00780078007000E001E001C0038007000E0000C2E7DA112>I<7878787818303060
60E0050A7D830D>44 D<00C001C00FC0FFC0FFC0F3C003C003C003C003C003C003C003C0
03C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0FFFEFFFEFFFE
0F1F7C9E17>49 D<07F0000FFC001FFE00383F00700F00600780E00780E003C04003C040
03C00003C00003C00003C0000780000780000F00000E00001C00003C0000780000E00001
C0000380000700000E00001C0000380000700000FFFFC0FFFFC0FFFFC0121F7E9E17>I<
001F0000001F0000003F8000003B8000003B8000007BC0000073C0000071C00000F1E000
00E1E00000E0E00001E0F00001E0F00001C0F00003C0780003C078000380780007803C00
07803C0007003C000FFFFE000FFFFE000FFFFE001E000F001E000F003C000F803C000780
3C000780780007C0780003C0780003C0F00003E01B207F9F1E>65
D<FFF800FFFF00FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F001
E0F003C0F01F80FFFF00FFFF00FFFF80F007E0F001E0F000F0F00078F00078F00078F000
78F00078F00078F000F0F001F0F007E0FFFFC0FFFF80FFFC0015207B9F1E>I<001FC000
FFF801FFFC03E03C07800C0F00001E00003E00003C00007C0000780000780000780000F0
0000F00000F00000F00000F00000F00000F00000F000007800007800007800007C00003C
00003E00001E00000F000207800E03E03E01FFFC00FFF0001FC017227DA01D>I<FFFC00
FFFF80FFFFC0F007E0F001F0F000F8F00078F0003CF0003CF0001EF0001EF0000EF0000F
F0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0001EF0001EF0001EF0003C
F0007CF000F8F001F0F007E0FFFFC0FFFF80FFFC0018207B9F21>I<FFFFC0FFFFC0FFFF
C0F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF
80FFFF80FFFF80F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000FFFFE0FFFFE0FFFFE013207B9F1B>I<FFFFC0FFFFC0FFFFC0F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF00FFFF00FF
FF00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F0000012207B9F1A>I<001FE000FFF801FFFE03E03E07800E0F0000
1E00003E00003C00007C0000780000780000780000F00000F00000F00000F00000F00000
F00000F003FEF003FE7803FE78001E78001E7C001E3C001E3E001E1E001E0F001E07801E
03E03E01FFFE00FFF8001FC017227DA01E>I<F00078F00078F00078F00078F00078F000
78F00078F00078F00078F00078F00078F00078F00078F00078FFFFF8FFFFF8FFFFF8F000
78F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F000
78F00078F0007815207B9F20>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F004207C9F0D>I<F0003EF0007CF000F8F001F0F003E0F007C0F0
0780F00F00F01F00F03E00F07C00F0F800F1F000F3F800F3F800F7FC00FFBC00FF1E00FE
1F00FC0F00F80780F00780F003C0F003E0F001E0F000F0F000F8F00078F0003CF0003CF0
001EF0001F18207B9F20>75 D<F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80FFFF
8011207B9F19>I<F80001F8FC0003F8FC0003F8F4000378F6000778F6000778F6000778
F3000E78F3000E78F3000E78F3801E78F3801E78F1801C78F1C03C78F1C03C78F0C03878
F0C03878F0E07878F0E07878F0607078F070F078F070F078F030E078F039E078F039E078
F019C078F019C078F019C078F00F8078F00F8078F00F8078F00000781D207B9F28>I<FC
0078FE0078FE0078F60078F70078F70078F38078F38078F38078F3C078F1C078F1E078F1
E078F0E078F0F078F07078F07078F07878F03878F03C78F03C78F01C78F01E78F00E78F0
0E78F00E78F00778F00778F00378F003F8F003F8F001F815207B9F20>I<003F000000FF
C00003FFF00007E1F8000F807C001F003E001E001E003C000F003C000F00780007807800
078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F000
03C0F00003C0F80007C07800078078000780780007803C000F003C000F001E001E001F00
3E000F807C0007E1F80003FFF00000FFC000003F00001A227DA021>I<FFF800FFFF00FF
FF80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F001E0F0
03E0F00FC0FFFF80FFFF00FFF800F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F0000014207B9F1D>I<FFF800FFFF00FFFF80F007C0
F003E0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00
FFF800F03C00F01E00F01E00F00F00F00F00F00780F00780F003C0F001C0F001E0F000F0
F000F0F00078F00078F0003C16207B9F1D>82 D<01FC0007FF800FFFC01F03C03C00C03C
00007800007800007800007800007800007C00003C00003F00001FE0000FFC0007FE0001
FF00003F800007C00003C00003E00001E00001E00001E00001E00001E00001C0C003C0F0
07C0FC0F807FFF001FFE0003F80013227EA019>I<FFFFFFC0FFFFFFC0FFFFFFC0001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E00001A207E9F1F>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03C03C01F0F800FFF0007FE00
01F80014217B9F1F>I<F00001E0F00001E0780003C0780003C0780003C03C0007803C00
07803C0007801E000F001E000F001F000F000F001E000F001E0007801C0007803C000780
3C0003C0380003C0780003C0780001E0700001E0F00001E0F00000F0E00000F1E00000F1
E0000071C000007BC000003B8000003B8000003F8000001F0000001F00001B207F9F1E>
I<F0007C000FF0007E000FF0007E000F78006E000E7800EE001E7800E7001E7800E7001E
3C00E7003C3C01E7803C3C01C7803C3C01C3803C1E01C380781E03C3C0781E0383C0780E
0381C0700F0381C0F00F0781E0F00F0701E0F0070700E0E0078700E1E0078F00E1E0078E
00F1E0038E0071C0038E0071C003CE0073C001DC00738001DC003B8001DC003B8001DC00
3B8000F8003F0000F8001F0000F8001F0028207F9F2B>I<780007807C000F003E001F00
1E001E000F003C000F807C000780780003C0F00003E1F00001F1E00000F3C000007FC000
007F8000003F0000001F0000001E0000003F0000007F8000007FC00000F3C00001F1E000
01E0F00003C0F80007C0780007803C000F003E001F001E001E000F003C000F807C0007C0
780003C0F00003E01B207F9F1E>I<F80000F87C0001F03C0001E03E0003E01F0003C00F
0007800F800F8007C00F0003C01F0003E01E0001F03C0000F07C00007878000078F00000
3CF000001CE000001FE000000FC000000780000007800000078000000780000007800000
07800000078000000780000007800000078000000780000007800000078000000780001D
20809F1E>I<FFFFF8FFFFF8FFFFF80000F00001F00001E00003C00007C0000780000F80
000F00001E00003E00003C00007C0000780000F00001F00001E00003E00003C000078000
0F80000F00001F00001E00003C00007C0000780000FFFFFCFFFFFCFFFFFC16207D9F1C>
I<07E03FF87FFC701E401F000F000F000F003F07FF1FFF7E0FF80FF00FF00FF00FF83F7F
FF3FEF1F8F10147E9316>97 D<F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F1F000F7FC00FFFE00FC3E00F80F00F00F00F00780F007
80F00780F00780F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E0
0011207D9F17>I<03F00FFC1FFE3E0E3C0278007800F000F000F000F000F000F0007800
78003C013E0F1FFF0FFE03F010147E9314>I<0007800007800007800007800007800007
8000078000078000078000078000078000078007C7800FF7801FFF803E1F807C07807807
80F80780F00780F00780F00780F00780F00780F00780F00780780780780F803E1F801FFF
800FF78007C78011207E9F17>I<03F0000FFC001FFE003E1F003C0700780700700380FF
FF80FFFF80FFFF80F00000F00000F000007000007800003C01003E07001FFF0007FE0001
F80011147F9314>I<007E01FE03FE078007000F000F000F000F000F000F000F00FFF0FF
F0FFF00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F
000F20809F0E>I<03E0F00FFFF01FFFF03E3E003C1E00780F00780F00780F00780F0078
0F003C1E003E3E001FFC003FF80033E0003000003800003FFE003FFF801FFFC03FFFE078
03F0F000F0F000F0F000F0F801F07E07E03FFFC00FFF0003FC00141E7F9317>I<F000F0
00F000F000F000F000F000F000F000F000F000F000F1F8F3FCF7FEFC1FF80FF80FF00FF0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10207D9F17>I<F0F0F0F0
0000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
1F00F01E00F03C00F07800F0F000F1E000F3C000F78000FFC000FFC000FFE000F9F000F8
F000F0F800F07C00F07C00F03E00F01E00F01F00F00F8011207D9F16>107
D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D
9F0B>I<F0FC07E0F3FE1FF0F7FF3FF8FE0FF07CF807C03CF807C03CF007803CF007803C
F007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C
F007803CF007803CF007803C1E147D9325>I<F1F8F3FCF7FEFC1FF80FF80FF00FF00FF0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10147D9317>I<01F80007FE00
1FFF803F0FC03C03C07801E07801E0F000F0F000F0F000F0F000F0F000F0F000F07801E0
7801E03C03C03F0FC01FFF8007FE0001F80014147F9317>I<F1F000F7FC00FFFE00FC3E
00F81F00F00F00F00F80F00780F00780F00780F00780F00780F00780F00F00F00F00F81F
00FC3E00FFFC00F7F800F1E000F00000F00000F00000F00000F00000F00000F00000F000
00F00000111D7D9317>I<03C7800FF7801FFF803E1F807C0F80780780780780F00780F0
0780F00780F00780F00780F00780F807807807807C0F803E1F801FFF800FF78007C78000
0780000780000780000780000780000780000780000780000780111D7E9317>I<F0E0F3
E0F7E0FF00FC00FC00F800F800F000F000F000F000F000F000F000F000F000F000F000F0
000B147D9310>I<07F01FFC3FFC780C7800780078007C003FC01FF00FF803F8007C003C
003CC03CF07CFFF87FF00FC00E147F9311>I<1E001E001E001E001E001E00FFF0FFF0FF
F01E001E001E001E001E001E001E001E001E001E001E001E001E001E201FF00FF007C00C
1A7F9910>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F01FF03FFFFF7FEF3F0F10147D9317>I<F003C0F003C07803807807807807803C0F003C
0F003C0F001E0E001E1E001E1E000F1C000F3C000F3C0007380007380007B80003F00003
F00001E00012147F9315>I<F01F00F0F01F80F0F01F80F0781B81E0783B81E0783BC1E0
7839C1E03C31C3C03C71C3C03C71E3C01C70E3801E60E7801E60E7801EE0E7800EE07700
0EC077000EC0770007C07E0007C03E0007803E001C147F931F>I<7801E07C03C03E0780
1E0F000F0F00079E0003FC0003F80001F80000F00001F00001F80003FC00079E000F0F00
0E0F001E07803C03C07801E0F801F01414809315>I<F003C0F003C07807807807807C07
803C0F003C0F001E0F001E1E000E1E000F1C000F1C00073C0007380003B80003B80003B0
0001F00001F00000E00000E00001C00001C00001C0000380000780007F00007E00007C00
00121D7F9315>I<7FFF7FFF7FFF003E003C007800F800F001E003E007C007800F001F00
1E003C007C00FFFFFFFFFFFF10147F9314>I E /Fn 29 122 df<0018007000E001C003
80038007000E000E001E001C003C003C007800780078007800F800F000F000F000F000F0
00F000F000F000F000F80078007800780078003C003C001C001E000E000E000700038003
8001C000E0007000180D2D7DA114>40 D<C000700038001C000E000E0007000380038003
C001C001E001E000F000F000F000F000F800780078007800780078007800780078007800
F800F000F000F000F001E001E001C003C00380038007000E000E001C0038007000C0000D
2D7DA114>I<387CFEFFFF7F3B030306060E0C18702008107C860F>44
D<387CFEFEFE7C38000000000000387CFEFEFE7C3807147C930F>58
D<07F8001FFE00381F80780F80FC0FC0FC0FC0FC0FC0780FC0301F80001F00003E00007C
0000700000E00000E00000C00000C00000C00000C00000C00000C0000000000000000000
0000000001C00003E00007F00007F00007F00003E00001C00012207D9F19>63
D<0000E000000000E000000001F000000001F000000001F000000003F800000003F80000
0006FC00000006FC0000000EFE0000000C7E0000000C7E000000183F000000183F000000
303F800000301F800000701FC00000600FC00000600FC00000C007E00000FFFFE00001FF
FFF000018003F000018003F000030001F800030001F800060001FC00060000FC000E0000
FE00FFE00FFFE0FFE00FFFE0231F7E9E28>65 D<FFFFFFE0FFFFFFE007E007E007E001E0
07E000E007E0006007E0007007E0003007E0003007E0603007E0603007E0600007E0E000
07E1E00007FFE00007FFE00007E1E00007E0E00007E0600007E0600C07E0600C07E0000C
07E0001807E0001807E0001807E0003807E0007807E000F807E003F0FFFFFFF0FFFFFFF0
1E1F7E9E22>69 D<FFE000003FF8FFF000007FF807F000007F0006F80000DF0006F80000
DF0006F80000DF00067C00019F00067C00019F00063E00031F00063E00031F00061F0006
1F00061F00061F00060F800C1F00060F800C1F000607C0181F000607C0181F000607C018
1F000603E0301F000603E0301F000601F0601F000601F0601F000600F8C01F000600F8C0
1F0006007D801F0006007D801F0006003F001F0006003F001F0006003F001F0006001E00
1F00FFF01E03FFF8FFF00C03FFF82D1F7E9E32>77 D<03FC080FFF381E03F83800F87000
78700038F00038F00018F00018F80000FC00007FC0007FFE003FFF801FFFE00FFFF007FF
F000FFF80007F80000FC00007C00003CC0003CC0003CC0003CE00038E00078F80070FE01
E0E7FFC081FF00161F7D9E1D>83 D<FFFFFFE0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0FFFFFF082D7BA10F>91
D<FFFFFF0707070707070707070707070707070707070707070707070707070707070707
07070707070707FFFFFF082D7FA10F>93 D<07FC001FFF003F0F803F07C03F03E03F03E0
0C03E00003E0007FE007FBE01F03E03C03E07C03E0F803E0F803E0F803E0FC05E07E0DE0
3FF8FE0FE07E17147F9319>97 D<FF0000FF00001F00001F00001F00001F00001F00001F
00001F00001F00001F00001F00001F1FC01F7FF01FE0F81F807C1F007E1F003E1F003E1F
003F1F003F1F003F1F003F1F003F1F003F1F003E1F003E1F007C1F807C1EC1F81C7FE018
1F8018207E9F1D>I<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC0000
FC0000FC0000FC0000FC00007C00007E00003E00603F00C01F81C007FF0001FC0013147E
9317>I<0007F80007F80000F80000F80000F80000F80000F80000F80000F80000F80000
F80000F801F8F80FFEF81F83F83E01F87E00F87C00F87C00F8FC00F8FC00F8FC00F8FC00
F8FC00F8FC00F87C00F87C00F87E00F83E01F81F07F80FFEFF03F8FF18207E9F1D>I<01
FE0007FF800F83C01E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC
00007C00007C00003E00181E00180F807007FFE000FF8015147F9318>I<001F8000FFC0
01F3E003E7E003C7E007C7E007C3C007C00007C00007C00007C00007C000FFFC00FFFC00
07C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C000
07C00007C00007C00007C0003FFC003FFC0013207F9F10>I<01FC3C07FFFE0F079E1E03
DE3E03E03E03E03E03E03E03E03E03E01E03C00F07800FFF0009FC001800001800001C00
001FFF800FFFF007FFF81FFFFC3C007C70003EF0001EF0001EF0001E78003C78003C3F01
F80FFFE001FF00171E7F931A>I<FF0000FF00001F00001F00001F00001F00001F00001F
00001F00001F00001F00001F00001F0FC01F3FE01F61F01FC0F81F80F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE3FFFF
E3FF18207D9F1D>I<1C003E007F007F007F003E001C00000000000000000000000000FF
00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FF
E0FFE00B217EA00E>I<FF00FF001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0
FFE00B207E9F0E>108 D<FE0FE03F80FE1FF07FC01E70F9C3E01E407D01F01E807E01F0
1F807E01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F
007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F0FFE3FF8FFEFFE3
FF8FFE27147D932C>I<FE0FC0FE3FE01E61F01EC0F81E80F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3FF1814
7D931D>I<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC
007EFC007EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>I<
FF1FC0FF7FF01FE1F81F80FC1F007E1F007E1F003E1F003F1F003F1F003F1F003F1F003F
1F003F1F003E1F007E1F007C1F80FC1FC1F81F7FE01F1F801F00001F00001F00001F0000
1F00001F00001F0000FFE000FFE000181D7E931D>I<FE3E00FE7F801ECFC01E8FC01E8F
C01F8FC01F03001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00
001F0000FFF000FFF00012147E9316>114 D<0FE63FFE701E600EE006E006F800FFC07F
F83FFC1FFE03FE001FC007C007E007F006F81EFFFCC7F010147E9315>I<018001800180
03800380038007800F803F80FFFCFFFC0F800F800F800F800F800F800F800F800F800F80
0F860F860F860F860F8607CC03F801F00F1D7F9C14>I<FFE07F80FFE07F801F001C000F
8018000F80180007C0300007C0300003E0600003E0600001F0C00001F0C00001F9C00000
F9800000FF8000007F0000007F0000003E0000003E0000001C0000001C00000018000000
18000078300000FC300000FC600000C0E00000E1C000007F8000001E000000191D7F931C
>121 D E /Fo 15 117 df<020408103020604040C0C0C0C0C0C0C0C040406020301008
0402071A7F920C>40 D<8040201018080C0404060606060606060604040C081810204080
071A7E920C>I<1F00318060C04040C060C060C060C060C060C060C060C060404060C031
801F000B107F8F0F>48 D<0C003C00CC000C000C000C000C000C000C000C000C000C000C
000C000C00FF8009107E8F0F>I<1F00618040C08060C0600060006000C0018003000600
0C00102020207FC0FFC00B107F8F0F>I<1F00218060C060C000C0008001800F00008000
400060C060C060804060801F000B107F8F0F>I<0300030007000F000B00130033002300
4300C300FFE003000300030003001FE00B107F8F0F>I<20803F002C002000200020002F
0030802040006000600060C06080C061801F000B107F8F0F>I<0780184030C060C06000
C000CF00F080E040C060C060C060406060C030801F000B107F8F0F>I<40007FE07FC080
80808001000200040004000C0008000800180018001800180018000B117E900F>I<1F00
318060C060C060C071803F000F00338061C0C060C060C060404060801F000B107F8F0F>
I<1F00318060C0C040C060C060C06040E021E01E600060004060C0608043003E000B107F
8F0F>I<03E0000C1800100400200200600300400100C00180C00180C00180C00180C001
806003006003003006003006000C180003E00011117E9017>79 D<1F8030C06000C000C0
00C000C000C000604030801F000A0B7F8A0E>99 D<10103030FE3030303030323232321C
070F7F8E0C>116 D E /Fp 4 64 df<400004C0000C6000183000301800600C00C00601
8003030001860000CC0000780000300000300000780000CC000186000303000601800C00
C0180060300030600018C0000C40000416187A9623>2 D<03C00FF01FF83FFC7FFE7FFE
FFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C010127D9317>15
D<FFFFFFE0FFFFFFE0000C0000000C0000000C0000000C0000000C0000000C0000000C00
00000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C00
00000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C00
00000400001B1C7C9B23>62 D<00040000000C0000000C0000000C0000000C0000000C00
00000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C00
00000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C0000000C00
00000C0000000C0000FFFFFFE0FFFFFFE01B1C7C9B23>I E /Fq
41 122 df<001FE03FC0007FE0FFC001FFE1FFC003FFE3FFC003E007E00007C007C00007
800F80000F800F80000F800F80000F800F80000F800F80000F800F80000F800F80000F80
0F80000F800F8000FFFE0FFE00FFFE0FFE00FFFE0FFE000F800F80000F800F80000F800F
80000F800F80000F800F80000F800F80000F800F80000F800F80000F800F80000F800F80
000F800F80000F800F80000F800F80000F800F80000F800F80000F800F80000F800F8000
0F800F80000F800F80000F800F80000F800F80000F800F80000F800F80000F800F800022
2A7FA922>11 D<F8F8F8F8F805057B8410>46 D<00000C00001C00001C00003800003800
00380000700000700000700000E00000E00000E00001C00001C00001C000038000038000
0380000700000700000700000E00000E00000E00001C00001C00001C0000380000380000
380000700000700000700000E00000E00000E00001C00001C00001C00003800003800003
80000700000700000700000E00000E00000E00001C00001C00001C000038000038000038
0000700000700000700000E00000E00000C00000163C7DAC1D>I<00300000700001F000
0FF000FFF000FFF000F1F00001F00001F00001F00001F00001F00001F00001F00001F000
01F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F000
01F00001F00001F00001F00001F00001F00001F00001F00001F00001F000FFFFE0FFFFE0
FFFFE013287BA71D>49 D<00FE0003FF800FFFC01FFFE01F07F03C01F87800FC78007C70
007CF0003EF0003E60003E20003E00003E00003E00003E00007C00007C0000780000F800
01F00001E00003E00007C0000F80001F00003E00007C0000F80001F00003E00003C00007
80000F00001E00003C00007FFFFE7FFFFE7FFFFE7FFFFE17287EA71D>I<007E0003FF80
07FFE01FFFF03F83F83E00F87C007C38007C30007C10007C00007C00007C0000F80000F8
0001F80003F0000FE001FFC001FF8001FFC001FFE00001F80000FC00007C00003E00003E
00001F00001F00001F00001F00001F80001FC0003EE0003EF0007E7C00FC3F01F81FFFF0
0FFFE003FFC000FE0018297EA71D>I<0007E0000FE0000BE0001BE0001BE0003BE0003B
E00073E00073E000F3E000F3E001E3E001E3E003E3E003C3E007C3E00F83E00F83E01F03
E01F03E03E03E03E03E07C03E07C03E0F803E0FFFFFFFFFFFFFFFFFFFFFFFF0003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E018277EA61D>I<3FFFF83F
FFF83FFFF83FFFF83E00003E00003E00003E00003E00003E00003E00003E00003E00003E
00003E3E003EFF803FFFE03FFFF03FC1F03F00F83F007C3E007C00007C00003E00003E00
003E00003E00003E00003E00003E40003E60007CE0007CF000F87801F87F07F03FFFE00F
FFC007FF0001FC0017287EA61D>I<000FE0003FF800FFF801FFF803F01807E0000F8000
0F00001F00003E00003E00003C00007C00007C02007C3FC0F8FFE0F9FFF0FBFFF8FF80FC
FE007CFE003EFC003EFC003FFC001FF8001FF8001FF8001FF8001F78001F7C001F7C001F
7C001E3C003E3E003E1E007C1F00FC0FC1F807FFF003FFE001FF80007E0018297EA71D>
I<FFFFFFFFFFFFFFFFFFFFFFFF00000F00001E00003C0000780000F80000F00001E00003
E00003C0000780000F80000F00001F00001E00003E00003E00003C00007C00007C0000F8
0000F80000F80000F00001F00001F00001F00001F00001F00003E00003E00003E00003E0
0003E00003E00003E00018277EA61D>I<007E0003FFC007FFE00FFFF01F81F83F00FC3E
007C7E007E7C003E7C003E7C003E7C003E7C003E3E007C3E007C1F00F80FC3F007FFE003
FFC003FFC00FFFF01F81F83F00FC3E007C7C003E7C003EF8001FF8001FF8001FF8001FF8
001FF8001F7C003E7C003E7E007E3F00FC1F81F80FFFF007FFE003FFC0007E0018297EA7
1D>I<F8F8F8F8F80000000000000000000000000000000000F8F8F8F8F8051B7B9A10>
58 D<0003F000000003F000000007F800000007F800000007780000000F3C0000000F3C
0000000F3C0000001E3E0000001E1E0000001E1E0000003E1F0000003C1F0000007C0F80
00007C0F800000780F800000F807C00000F807C00000F007C00001F003E00001F003E000
01E003E00003E001F00003E001F00003C001F00007C000F80007FFFFF80007FFFFF8000F
FFFFFC000F80007C000F00007C001F00003E001F00003E001E00003E003E00001F003E00
001F003C00001F007C00000F807C00000F80F800000FC0F8000007C0F8000007C0222A7E
A927>65 D<0003FF00000FFFE0003FFFF800FFFFF801FE01F803F8007007E0001007C000
000F8000001F8000001F0000003E0000003E0000007C0000007C0000007C0000007C0000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F80000007C0000007C0000007C0000007C0000003E0000003E0000001F0000001F8000
000F80000007C0000007E0000803F8003801FE01F800FFFFF8003FFFF0000FFFC00003FE
001D2C7CAA25>67 D<FFFFE00000FFFFFC0000FFFFFF0000F8007F8000F8000FC000F800
07E000F80001F000F80000F800F80000F800F800007C00F800003E00F800003E00F80000
1E00F800001F00F800001F00F800000F00F800000F80F800000F80F800000F80F800000F
80F800000F80F800000F80F800000F80F800000F80F800000F80F800000F80F800000F00
F800001F00F800001F00F800001F00F800003E00F800003E00F800007C00F800007C00F8
0000F800F80001F000F80003E000F8000FC000F8003F8000FFFFFF0000FFFFFC0000FFFF
E00000212A7BA92A>I<FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000FFFFFFE0FFFFFFE0FFFFFFE0FFFFFFE01B2A
7BA923>I<FFFFFF80FFFFFF80FFFFFF80FFFFFF80F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000FFFFFC00FFFFFC00FFFFFC00FFFFFC00F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000192A7BA921>I<
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8052A7BA910>73 D<FE000000FFFE000000FFFE000000FFFF000001FFFB00
0001DFFB800003DFFB800003DFFB800003DFF9C000079FF9C000079FF9C000079FF9E000
0F9FF8E0000F1FF8E0000F1FF8F0001F1FF870001E1FF870001E1FF878003E1FF838003C
1FF83C007C1FF83C007C1FF81C00781FF81E00F81FF81E00F81FF80E00F01FF80F01F01F
F80F01F01FF80701E01FF80783E01FF80783E01FF80383C01FF803C7C01FF803C7C01FF8
01C7801FF801EF801FF801EF801FF800EF001FF800FF001FF8007E001FF8007E001FF800
7E001FF80000001F282A7BA933>77 D<0003FC0000000FFF0000003FFFC00000FFFFF000
01FE07F80003F801FC0007E0007E000FC0003F000F80001F001F00000F801F00000F803E
000007C03E000007C07C000003E07C000003E07C000003E078000001E0F8000001F0F800
0001F0F8000001F0F8000001F0F8000001F0F8000001F0F8000001F0F8000001F0F80000
01F0F8000001F07C000003E07C000003E07C000003E07E000007E03E000007C03E000007
C01F00000F801F80001F800F80001F000FC0003F0007E0007E0003F801FC0001FE07F800
00FFFFF000003FFFC000001FFF80000003FC0000242C7DAA2B>79
D<FFFFC000FFFFF800FFFFFE00F8007F00F8001F80F80007C0F80003C0F80003E0F80001
E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001E0F80003E0F80003
E0F80007C0F8001F80F8007F00FFFFFE00FFFFFC00FFFFF000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F80000001C2A7BA925>I<007FC000
01FFF80007FFFE000FFFFF001FC07F003F000F007E0006007C0000007C000000F8000000
F8000000F8000000F8000000F8000000FC0000007E0000007F0000003F8000001FF80000
0FFF000007FFE00003FFF80000FFFC00000FFE000000FF0000003F0000001F8000000F80
00000FC0000007C0000007C0000007C0000007C0000007C0000007C000000F8060000F80
F0001F00FC003F00FF80FE007FFFFC001FFFF80007FFE00000FF80001A2C7DAA21>83
D<F80001F80001F0F80003F80001F0F80003FC0001F07C0003FC0003E07C0003BC0003E0
7C0007BE0003E03E00079E0003C03E00079E0007C03E00079E0007C03E000F1F0007C01F
000F1F0007801F000F0F000F801F000F0F000F801F001F0F800F800F801E0F800F000F80
1E07801F000F801E07801F000F803E07C01F0007C03C07C01E0007C03C03C03E0007C03C
03C03E0007C07C03E03E0003E07803E03C0003E07801E07C0003E07801E07C0001E0F801
F0780001E0F001F0780001F0F000F0F80001F0F000F0F80000F0F000F0F00000F1E000F8
F00000F9E00078F00000F9E00079F0000079E00079E0000079C00079E000007BC00039E0
00007BC0003DE000003BC0003DC000003F80003FC000003F80001FC000003F80001FC000
001F00001F8000342A7FA937>87 D<01FC000FFF803FFFC03FFFE03C03F03001F00001F8
0000F80000F80000F80000F80001F800FFF807FFF81FFFF83FC0F87E00F8FC00F8F800F8
F800F8F800F8FC01F87E07F87FFFF83FFFF81FFCF80FE0F8151B7E9A1C>97
D<007F8001FFE007FFF80FFFF81FC0783F00103E00007C00007C00007C0000F80000F800
00F80000F80000F80000F80000F800007C00007C00007C00003E00003F00181FC0780FFF
F807FFF801FFE0007F80151B7E9A1A>99 D<00003E00003E00003E00003E00003E00003E
00003E00003E00003E00003E00003E00003E00003E00003E00003E01FC3E03FF3E0FFFBE
1FFFFE1FC1FE3F007E3E003E7C003E7C003EFC003EF8003EF8003EF8003EF8003EF8003E
F8003EF8003EFC003E7C003E7C003E7E007E3F00FE1FC1FE1FFFFE0FFFBE03FE3E01F83E
172A7EA91E>I<00FC0003FF0007FF800FFFC01F87E03F01E03E00F07C00F07C0070F800
78FFFFF8FFFFF8FFFFF8FFFFF8F80000F80000F800007800007C00007C00003E00003F00
181FC0F80FFFF807FFF801FFE0007F00151B7E9A1A>I<F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F83F00F8
FFC0FBFFE0FFFFF0FF83F0FE01F8FC00F8FC00F8FC00F8F800F8F800F8F800F8F800F8F8
00F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F8
00F8F800F8152A7CA91E>104 D<F8F8F8F8F800000000000000000000F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>I<F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7C
A90E>108 D<F83F00F8FFC0FBFFE0FFFFF0FF83F0FE01F8FC00F8FC00F8FC00F8F800F8
F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8
F800F8F800F8F800F8F800F8F800F8151B7C9A1E>110 D<007E0001FF8007FFE00FFFF0
1F81F83F00FC3E007C7C003E7C003E78001EF8001FF8001FF8001FF8001FF8001FF8001F
F8001F7C003E7C003E7C003E3E007C3F00FC1FC3F80FFFF007FFE003FFC0007E00181B7E
9A1D>I<F83F00F9FFC0FBFFE0FFFFF0FF07F8FC01F8F800FCF800FCF8007CF8007EF800
3EF8003EF8003EF8003EF8003EF8003EF8003EF8007EF8007CF800FCFC00F8FC01F8FF07
F0FFFFE0FBFFC0F9FF80F87E00F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F8000017277C9A1E>I<F83CF8FCF9FCFBFCFFE0FF80FF00FE00
FC00FC00FC00F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800
F8000E1B7C9A14>114 D<07F8001FFF003FFF807FFF807C0780F80100F80000F80000F8
0000FC00007F00007FF0003FFC001FFE0007FF0000FF80001FC0000FC00007C00007C040
07C0E007C0FC1F80FFFF807FFF001FFE0007F800121B7E9A16>I<0F80000F80000F8000
0F80000F80000F80000F8000FFFF80FFFF80FFFF800F80000F80000F80000F80000F8000
0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000
0F80000F80800FC38007FFC007FFC003FF0001F80012227FA115>I<F800F8F800F8F800
F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800
F8F800F8F800F8F800F8F800F8F800F8F801F8F803F8FC07F8FFFFF87FFEF83FF8F81FC0
F8151B7C9A1E>I<F8001FF8001F7C003E7C003E7C003E3E007C3E007C3E007C1F00F81F
00F81F00F80F81F00F81F00F81F007C3E007C3E007C3E003C3C003E7C001E78001E78001
E78000E70000F70000FF00007E00007E00181B7F9A1B>I<F800F800F8F801F800F8FC01
FC00F87C01DC01F07C01DC01F07C03DC01F03E039E03E03E039E03E03E079E03E03E079F
03E01F078F07C01F070F07C01F0F0F07C00F0F0F07800F8F078F800F8F078F800F8E078F
80079E078F00079E03CF00079E03CF0003DC03DE0003DC03DE0003DC01DE0003D801DE00
01F801FC0001F801FC0001F800FC00251B7F9A28>I<7C001F807E003F003F003E001F00
7C000F80FC0007C0F80007E1F00003E3E00001F7E00000FFC000007F8000007F0000003E
0000003E0000003F0000007F800000FFC00001F3E00003E1E00003E1F00007C0F8000F80
7C001F807C001F003E003E001F007E001F80FC000FC01A1B809A1B>I<F8001FFC001F7C
003E7C003E3E003E3E007C3E007C1F007C1F00F81F80F80F80F00F81F007C1F007C1E007
C3E003C3E003E3C001E3C001E7C001E78000F78000F700007700007700007E00003E0000
3E00003C00003C00007C0000780000780000F00000F00001F0007FE0007FC0007F80007F
000018277F9A1B>I E /Fr 3 80 df<0000000000700000000000F80000000001F80000
000001F80000000003F80000000003F00000000007F00000000007E00000000007E00000
00000FE0000000000FC0000000001FC0000000001F80000000001F80000000003F800000
00003F00000000007F00000000007E00000000007E0000000000FE0000000000FC000000
0001FC0000000001F80000000001F80000000003F80000000003F00000000007F0000000
0007E00000000007E0000000000FE0000000000FC0000000001FC0000000001F80000000
001F80000000003F80000000003F00000000007F00000000007E00000000007E00000000
00FE0000000000FC0000000001FC0000000001F80000000001F80000000003F800000000
03F00000000007F00000000007E00000000007E0000000000FE0000000000FC000000000
1FC0000000001F80000000003F80000000003F00000000003F00000000007F0000000000
7E0000000000FE0000000000FC0000000000FC0000000001FC0000000001F80000000003
F80000000003F00000000003F00000000007F00000000007E0000000000FE0000000000F
C0000000000FC0000000001FC0000000001F80000000003F80000000003F00000000003F
00000000007F00000000007E0000000000FE0000000000FC0000000000FC0000000001FC
0000000001F80000000003F80000000003F00000000003F00000000007F00000000007E0
000000000FE0000000000FC0000000000FC0000000001FC0000000001F80000000003F80
000000003F00000000003F00000000007F00000000007E0000000000FE0000000000FC00
00000000FC0000000000F800000000007800000000002D677ACC3A>47
D<FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0001FFF8000001FFF8000001FFF8000
001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF800000
1FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001F
FF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF
8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF80
00001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000
001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF800000
1FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001F
FF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF
8000001FFF8000001FFF8000FFFFFFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF024477DC6
2B>73 D<00000003FFF0000000000000007FFFFF80000000000003FFFFFFF00000000000
0FFF003FFC00000000003FF80007FF0000000000FFE00001FFC000000003FF8000007FF0
00000007FF0000003FF80000000FFE0000001FFC0000001FFC0000000FFE0000003FF800
000007FF0000007FF000000003FF800000FFF000000003FFC00001FFE000000001FFE000
03FFE000000001FFF00003FFC000000000FFF00007FFC000000000FFF80007FF80000000
007FF8000FFF80000000007FFC000FFF80000000007FFC001FFF00000000003FFE001FFF
00000000003FFE003FFF00000000003FFF003FFF00000000003FFF003FFF00000000003F
FF007FFF00000000003FFF807FFE00000000001FFF807FFE00000000001FFF807FFE0000
0000001FFF807FFE00000000001FFF80FFFE00000000001FFFC0FFFE00000000001FFFC0
FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000
001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE
00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001F
FFC0FFFE00000000001FFFC07FFE00000000001FFF807FFF00000000003FFF807FFF0000
0000003FFF807FFF00000000003FFF803FFF00000000003FFF003FFF00000000003FFF00
3FFF00000000003FFF001FFF80000000007FFE001FFF80000000007FFE001FFF80000000
007FFE000FFFC000000000FFFC000FFFC000000000FFFC0007FFC000000000FFF80003FF
E000000001FFF00003FFE000000001FFF00001FFF000000003FFE00000FFF800000007FF
C000007FF800000007FF8000007FFC0000000FFF8000003FFE0000001FFF0000000FFF00
00003FFC00000007FFC00000FFF800000003FFE00001FFF000000000FFF80007FFC00000
00007FFF807FFF80000000000FFFFFFFFC000000000003FFFFFFF00000000000007FFFFF
8000000000000003FFF0000000004A497AC757>79 D E /Fs 8 117
df<00003C000000007C00000001FC00000007FC0000003FFC0000FFFFFC0000FFFFFC00
00FFFFFC0000FFCFFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000
000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC000000
0FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000F
FC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC
0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC00
00000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000
000FFC0000000FFC00007FFFFFFF807FFFFFFF807FFFFFFF807FFFFFFF80213879B730>
49 D<0000001FFE000060000003FFFFE000E000001FFFFFF801E000007FFFFFFE03E000
01FFFC00FF07E00007FFC0001FCFE0000FFF000007FFE0001FFC000001FFE0003FF00000
00FFE0007FE00000007FE000FFC00000003FE001FF800000001FE003FF000000000FE007
FF000000000FE00FFE0000000007E00FFE0000000007E01FFC0000000003E01FFC000000
0003E03FF80000000003E03FF80000000001E03FF80000000001E07FF80000000001E07F
F80000000001E07FF00000000000007FF0000000000000FFF0000000000000FFF0000000
000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FF
F0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000
0000007FF00000000000007FF00000000000007FF80000000000007FF80000000001E03F
F80000000001E03FF80000000001E03FF80000000001E01FFC0000000001E01FFC000000
0003C00FFE0000000003C00FFE0000000003C007FF00000000078003FF00000000078001
FF800000000F0000FFC00000001F00007FE00000003E00003FF00000007C00001FFC0000
00F800000FFF000003F0000007FFC0000FE0000001FFFC007F800000007FFFFFFF000000
001FFFFFFC0000000003FFFFE000000000001FFE0000003B3D7BBB46>67
D<003FFE00000001FFFFE0000007FFFFF800000FE007FC00000FF001FE00001FF800FF00
001FF8007F80001FF8007FC0001FF8003FC0000FF0003FE00007E0003FE00003C0003FE0
000000003FE0000000003FE0000000003FE0000000003FE0000000FFFFE000001FFFFFE0
00007FF83FE00003FF803FE00007FC003FE0000FF0003FE0001FE0003FE0003FE0003FE0
007FC0003FE0007FC0003FE000FF80003FE000FF80003FE000FF80003FE000FF80003FE0
00FF80007FE0007FC0007FE0007FC000DFE0003FE0039FF0001FF80F0FFFE007FFFE0FFF
E001FFFC07FFE0003FE000FFE02B267DA52F>97 D<0001FF8000000FFFF000007FFFFC00
00FF81FE0003FE007F8007F8003F800FF0001FC00FF0000FE01FE0000FE03FE0000FF03F
E00007F07FC00007F07FC00007F87FC00007F8FFC00007F8FFC00007F8FFFFFFFFF8FFFF
FFFFF8FFFFFFFFF8FFC0000000FFC0000000FFC0000000FFC00000007FC00000007FC000
00007FC00000003FE00000003FE00000781FE00000781FF00000780FF00000F007F80001
F003FC0003E001FE000FC000FFC07F80003FFFFE00000FFFF8000000FFC00025267DA52C
>101 D<00FE00000000FFFE00000000FFFE00000000FFFE00000000FFFE0000000007FE
0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE
0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE
0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE00FF800003FE
03FFF00003FE0FFFF80003FE1E03FC0003FE3801FE0003FE6001FF0003FEC000FF0003FF
C000FF8003FF8000FF8003FF0000FF8003FF0000FF8003FF0000FF8003FE0000FF8003FE
0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE
0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE
0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE
0000FF8003FE0000FF8003FE0000FF80FFFFF83FFFFEFFFFF83FFFFEFFFFF83FFFFEFFFF
F83FFFFE2F3C7CBB36>104 D<00FE01FF0000FFFE1FFFF000FFFE7FFFFC00FFFEFC07FE
00FFFFF001FF0007FFC0007F8003FF00003FC003FE00003FE003FE00001FF003FE00001F
F803FE00000FF803FE00000FFC03FE00000FFC03FE000007FC03FE000007FE03FE000007
FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007
FE03FE000007FE03FE000007FC03FE00000FFC03FE00000FFC03FE00000FFC03FE00000F
F803FE00001FF003FE00001FF003FF00003FE003FF80007FC003FFC000FF8003FFE001FF
0003FEFC07FE0003FE7FFFF80003FE1FFFE00003FE03FE000003FE0000000003FE000000
0003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE000000
0003FE0000000003FE0000000003FE0000000003FE0000000003FE00000000FFFFF80000
00FFFFF8000000FFFFF8000000FFFFF80000002F377DA536>112
D<01FC03F000FFFC0FFC00FFFC1FFF00FFFC3C3F80FFFC707F8007FCE0FFC003FCC0FFC0
03FD80FFC003FD80FFC003FF807F8003FF003F0003FF001E0003FF00000003FE00000003
FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE
00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00
000003FE00000003FE00000003FE00000003FE00000003FE000000FFFFFC0000FFFFFC00
00FFFFFC0000FFFFFC000022267DA528>114 D<000F0000000F0000000F0000000F0000
000F0000001F0000001F0000001F0000001F0000003F0000003F0000007F0000007F0000
00FF000001FF000003FF000007FF00001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF0000
01FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF0000
01FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF0000
01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C00FF0078
00FF8078007F80F0003FC1E0001FFFC0000FFF800001FE001E377EB626>116
D E /Ft 79 125 df<001F83E000F06E3001C078780380F8780300F03007007000070070
000700700007007000070070000700700007007000FFFFFF800700700007007000070070
000700700007007000070070000700700007007000070070000700700007007000070070
000700700007007000070070000700700007007000070070007FE3FF001D20809F1B>11
D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700000700
00FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000
E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE007
00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E07FE7FE1720809F19>I<001F81F80000F04F04
0001C07C06000380F80F000300F00F000700F00F00070070000007007000000700700000
070070000007007000000700700000FFFFFFFF0007007007000700700700070070070007
007007000700700700070070070007007007000700700700070070070007007007000700
700700070070070007007007000700700700070070070007007007000700700700070070
07007FE3FE3FF02420809F26>I<7038F87CFC7EFC7E743A040204020402080408041008
1008201040200F0E7E9F17>34 D<70F8FCFC74040404080810102040060E7C9F0D>39
D<0020004000800100020006000C000C00180018003000300030007000600060006000E0
00E000E000E000E000E000E000E000E000E000E000E00060006000600070003000300030
00180018000C000C000600020001000080004000200B2E7DA112>I<8000400020001000
08000C00060006000300030001800180018001C000C000C000C000E000E000E000E000E0
00E000E000E000E000E000E000E000C000C000C001C00180018001800300030006000600
0C00080010002000400080000B2E7DA112>I<0006000000060000000600000006000000
060000000600000006000000060000000600000006000000060000000600000006000000
06000000060000FFFFFFF0FFFFFFF0000600000006000000060000000600000006000000
060000000600000006000000060000000600000006000000060000000600000006000000
0600001C207D9A23>43 D<70F8FCFC74040404080810102040060E7C840D>I<FFC0FFC0
0A027F8A0F>I<70F8F8F87005057C840D>I<000100030003000600060006000C000C000C
00180018001800300030003000600060006000C000C000C0018001800180030003000300
0600060006000C000C000C00180018001800300030003000600060006000C000C000C000
102D7DA117>I<03F0000E1C001C0E00180600380700700380700380700380700380F003
C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003
C07003807003807003807807803807001806001C0E000E1C0003F000121F7E9D17>I<01
8003800F80F3800380038003800380038003800380038003800380038003800380038003
8003800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C00
100E00200700400780800780F007C0F803C0F803C0F803C02007C00007C0000780000780
000F00000E00001C0000380000700000600000C0000180000300000600400C0040180040
1000803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F807807
80780780380F80000F80000F00000F00000E00001C0000380003F000003C00000E00000F
000007800007800007C02007C0F807C0F807C0F807C0F00780400780400F00200E001C3C
0003F000121F7E9D17>I<000600000600000E00000E00001E00002E00002E00004E0000
8E00008E00010E00020E00020E00040E00080E00080E00100E00200E00200E00400E00C0
0E00FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE0141E7F9D17>I<
1803001FFE001FFC001FF8001FE00010000010000010000010000010000010000011F000
161C00180E001007001007800003800003800003C00003C00003C07003C0F003C0F003C0
E00380400380400700200600100E000C380003E000121F7E9D17>I<007C000182000701
000E03800C07801C0780380300380000780000700000700000F1F000F21C00F40600F807
00F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C07003803803803807
001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF8040010080
020080020080040000080000080000100000200000200000400000400000C00000C00001
C00001800003800003800003800003800007800007800007800007800007800007800007
8000030000121F7D9D17>I<03F0000C0C00100600300300200180600180600180600180
7001807803003E03003F06001FC8000FF00003F80007FC000C7E00103F00300F80600380
4001C0C001C0C000C0C000C0C000C0C000806001802001001002000C0C0003F000121F7E
9D17>I<03F0000E18001C0C00380600380700700700700380F00380F00380F003C0F003
C0F003C0F003C0F003C07007C07007C03807C0180BC00E13C003E3C00003800003800003
80000700300700780600780E00700C002018001070000FC000121F7E9D17>I<70F8F8F8
700000000000000000000070F8F8F87005147C930D>I<70F8F8F8700000000000000000
000070F0F8F878080808101010202040051D7C930D>I<7FFFFFE0FFFFFFF00000000000
000000000000000000000000000000000000000000000000000000FFFFFFF07FFFFFE01C
0C7D9023>61 D<000100000003800000038000000380000007C0000007C0000007C00000
09E0000009E0000009E0000010F0000010F0000010F00000207800002078000020780000
403C0000403C0000403C0000801E0000801E0000FFFE0001000F0001000F0001000F0002
0007800200078002000780040003C00E0003C01F0007E0FFC03FFE1F207F9F22>65
D<FFFFE0000F80380007801E0007801F0007800F0007800F8007800F8007800F8007800F
8007800F8007800F0007801F0007801E0007803C0007FFF00007803C0007801E0007800F
0007800F8007800780078007C0078007C0078007C0078007C0078007C00780078007800F
8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC040007030C001C009C0
038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C00004078000040
F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
780000007C0000407C0000403C0000401C0000401E0000800E0000800700010003800200
01C0040000703800000FC0001A217D9F21>I<FFFFE0000F803C0007801E000780070007
800380078003C0078001E0078001E0078001F0078000F0078000F0078000F8078000F807
8000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F0078000F007
8000F0078001E0078001E0078003C0078003800780070007800E000F803C00FFFFE0001D
1F7E9E23>I<FFFFFF000F800F0007800300078003000780010007800180078000800780
008007800080078080800780800007808000078080000781800007FF8000078180000780
800007808000078080000780800007800020078000200780002007800040078000400780
0040078000C0078000C0078001800F800F80FFFFFF801B1F7E9E1F>I<FFFFFF000F800F
000780030007800300078001000780018007800080078000800780008007800080078080
000780800007808000078080000781800007FF8000078180000780800007808000078080
000780800007800000078000000780000007800000078000000780000007800000078000
000FC00000FFFE0000191F7E9E1E>I<000FE0200078186000E004E0038002E0070001E0
0F0000E01E0000601E0000603C0000603C0000207C00002078000020F8000000F8000000
F8000000F8000000F8000000F8000000F8000000F8007FFCF80003E0780001E07C0001E0
3C0001E03C0001E01E0001E01E0001E00F0001E0070001E0038002E000E0046000781820
000FE0001E217D9F24>I<FFF8FFF80F800F8007800F0007800F0007800F0007800F0007
800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007FFFF0007
800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007
800F0007800F0007800F0007800F0007800F000F800F80FFF8FFF81D1F7E9E22>I<FFFC
0FC007800780078007800780078007800780078007800780078007800780078007800780
07800780078007800780078007800780078007800FC0FFFC0E1F7F9E10>I<FFFC0FFC0F
C003E0078001800780010007800200078004000780080007801000078020000780400007
808000078100000783000007878000078F80000793C0000791E00007A1E00007C0F00007
80F0000780780007803C0007803C0007801E0007801E0007800F00078007800780078007
8007C00FC007E0FFFC3FFC1E1F7E9E23>75 D<FFFE000FC0000780000780000780000780
000780000780000780000780000780000780000780000780000780000780000780000780
0007800007800007800207800207800207800207800607800407800407800C07801C0F80
7CFFFFFC171F7E9E1C>I<FF80001FF80F80001F800780001F0005C0002F0005C0002F00
05C0002F0004E0004F0004E0004F000470008F000470008F000470008F000438010F0004
38010F000438010F00041C020F00041C020F00041C020F00040E040F00040E040F00040E
040F000407080F000407080F000407080F000403900F000403900F000401E00F000401E0
0F000401E00F000E00C00F001F00C01F80FFE0C1FFF8251F7E9E2A>I<FF803FF807C007
C007C0038005E0010005E0010004F001000478010004780100043C0100043C0100041E01
00040F0100040F010004078100040781000403C1000401E1000401E1000400F1000400F1
000400790004003D0004003D0004001F0004001F0004000F0004000700040007000E0003
001F000300FFE001001D1F7E9E22>I<001F800000F0F00001C0380007801E000F000F00
0E0007001E0007803C0003C03C0003C07C0003E0780001E0780001E0F80001F0F80001F0
F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E0
7C0003E03C0003C03C0003C01E0007800E0007000F000F0007801E0001C0380000F0F000
001F80001C217D9F23>I<FFFFE0000F80780007801C0007801E0007800F0007800F8007
800F8007800F8007800F8007800F8007800F8007800F0007801E0007801C000780780007
FFE000078000000780000007800000078000000780000007800000078000000780000007
800000078000000780000007800000078000000FC00000FFFC0000191F7E9E1F>I<FFFF
80000F80F0000780780007803C0007801E0007801E0007801F0007801F0007801F000780
1F0007801E0007801E0007803C00078078000780F00007FF80000781C0000780E0000780
F0000780700007807800078078000780780007807C0007807C0007807C0007807C040780
7E0407803E040FC01E08FFFC0F10000003E01E207E9E21>82 D<07E0800C198010078030
0380600180600180E00180E00080E00080E00080F00000F000007800007F00003FF0001F
FC000FFE0003FF00001F800007800003C00003C00001C08001C08001C08001C08001C0C0
0180C00380E00300F00600CE0C0081F80012217D9F19>I<7FFFFFE0780F01E0600F0060
400F0020400F0020C00F0030800F0010800F0010800F0010800F0010000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F8000
07FFFE001C1F7E9E21>I<FFFC3FF80FC007C00780038007800100078001000780010007
800100078001000780010007800100078001000780010007800100078001000780010007
800100078001000780010007800100078001000780010007800100078001000780010003
8002000380020001C0020001C0040000E008000070180000382000000FC0001D207E9E22
>I<FFF003FE1F8000F80F0000600F800060078000400780004003C0008003C0008003C0
008001E0010001E0010001F0010000F0020000F0020000F806000078040000780400003C
0800003C0800003C0800001E1000001E1000001F3000000F2000000F20000007C0000007
C0000007C000000380000003800000038000000100001F207F9E22>I<FFF07FF81FF01F
800FC007C00F00078003800F00078001000F0007C00100078007C00200078007C0020007
8007C0020003C009E0040003C009E0040003C009E0040003E010F00C0001E010F0080001
E010F0080001F02078080000F02078100000F02078100000F0403C10000078403C200000
78403C20000078C03E2000003C801E4000003C801E4000003C801E4000001F000F800000
1F000F8000001F000F8000001E00078000000E00070000000E00070000000C0003000000
04000200002C207F9E2F>I<7FF83FF80FE00FC007C0070003C0020001E0040001F00C00
00F0080000781000007C1000003C2000003E4000001E4000000F8000000F800000078000
0003C0000007E0000005E0000009F0000018F8000010780000207C0000603C0000401E00
00801F0001800F0001000780020007C0070003C01F8007E0FFE01FFE1F1F7F9E22>I<FF
F003FF1F8000F80F8000600780004007C0004003E0008001E0008001F0010000F0030000
F80200007C0400003C0400003E0800001E0800001F1000000FB0000007A0000007C00000
03C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C00000
03C0000003C0000007C000007FFE00201F7F9E22>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D
>91 D<080410082010201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17
>I<FEFE0606060606060606060606060606060606060606060606060606060606060606
060606060606060606FEFE072D7FA10D>I<1FE000303000781800781C00300E00000E00
000E00000E0000FE00078E001E0E00380E00780E00F00E10F00E10F00E10F01E10781E10
3867200F83C014147E9317>97 D<0E0000FE00000E00000E00000E00000E00000E00000E
00000E00000E00000E00000E00000E3E000EC3800F01C00F00E00E00E00E00700E00700E
00780E00780E00780E00780E00780E00780E00700E00700E00E00F00E00D01C00CC30008
3E0015207F9F19>I<03F80E0C1C1E381E380C70007000F000F000F000F000F000F00070
007000380138011C020E0C03F010147E9314>I<000380003F8000038000038000038000
038000038000038000038000038000038000038003E380061B801C078038038038038070
0380700380F00380F00380F00380F00380F00380F003807003807003803803803807801C
07800E1B8003E3F815207E9F19>I<03F0000E1C001C0E00380700380700700700700380
F00380F00380FFFF80F00000F00000F000007000007000003800801800800C0100070600
01F80011147F9314>I<007C00C6018F038F07060700070007000700070007000700FFF0
070007000700070007000700070007000700070007000700070007000700070007000700
7FF01020809F0E>I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F00
780F00380E001C1C001E380033E0002000002000003000003000003FFE001FFF800FFFC0
3001E0600070C00030C00030C00030C000306000603000C01C038003FC00141F7F9417>
I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
000E3E000E43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E00
3E001E001C000000000000000000000000000E007E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>I<00E001F001F001
F000E0000000000000000000000000007007F000F0007000700070007000700070007000
7000700070007000700070007000700070007000700070007000706070F060F0C061803F
000C28829E0E>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E
00000E00000E00000E0FF00E03C00E03000E02000E04000E08000E10000E30000E70000E
F8000F38000E1C000E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF815207F9F
18>I<0E00FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B20809F0C
>I<0E1F01F000FE618618000E81C81C000F00F00E000F00F00E000E00E00E000E00E00E
000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00
0E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00FFE7FE7FE023147F9326>
I<0E3E00FE43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16147F9319>I<01F80007
0E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F070
00E07000E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C0
0F00E00E00E00E00F00E00700E00780E00780E00780E00780E00780E00780E00700E00F0
0E00E00F01E00F01C00EC3000E3E000E00000E00000E00000E00000E00000E00000E0000
0E0000FFE000151D7F9319>I<03E0800619801C05803C0780380380780380700380F003
80F00380F00380F00380F00380F003807003807803803803803807801C0B800E138003E3
80000380000380000380000380000380000380000380000380003FF8151D7E9318>I<0E
78FE8C0F1E0F1E0F0C0E000E000E000E000E000E000E000E000E000E000E000E000E000E
00FFE00F147F9312>I<1F9030704030C010C010C010E00078007F803FE00FF000708038
80188018C018C018E030D0608F800D147E9312>I<020002000200060006000E000E003E
00FFF80E000E000E000E000E000E000E000E000E000E000E000E080E080E080E080E0806
10031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC
16147F9319>I<FF83F81E01E01C00C00E00800E00800E00800701000701000382000382
0003820001C40001C40001EC0000E80000E80000700000700000700000200015147F9318
>I<FF9FE1FC3C0780701C0300601C0380200E0380400E0380400E03C0400707C0800704
C0800704E080038861000388710003C8730001D0320001D03A0000F03C0000E01C0000E0
1C0000601800004008001E147F9321>I<7FC3FC0F01E00701C007018003810001C20000
E40000EC00007800003800003C00007C00004E000087000107000303800201C00601E01E
01E0FF07FE1714809318>I<FF83F81E01E01C00C00E00800E00800E0080070100070100
03820003820003820001C40001C40001EC0000E80000E800007000007000007000002000
002000004000004000004000F08000F08000F100006200003C0000151D7F9318>I<3FFF
380E200E201C40384078407000E001E001C00380078007010E011E011C0338027006700E
FFFE10147F9314>I<FFFFFFFFFFF02C01808C2D>124 D E /Fu 46
122 df<00200040008001000300060004000C000C001800180030003000300070006000
60006000E000E000E000E000E000E000E000E000E000E000E000E000E000E00060006000
60007000300030003000180018000C000C0004000600030001000080004000200B327CA4
13>40 D<800040002000100018000C000400060006000300030001800180018001C000C0
00C000C000E000E000E000E000E000E000E000E000E000E000E000E000E000E000C000C0
00C001C0018001800180030003000600060004000C00180010002000400080000B327DA4
13>I<70F8FCFC7404040404080810102040060F7C840E>44 D<FFE0FFE00B027F8B10>I<
70F8F8F87005057C840E>I<008003800F80F38003800380038003800380038003800380
038003800380038003800380038003800380038003800380038003800380038003800380
038007C0FFFE0F217CA018>49 D<03F0000C1C001007002007804003C04003C08003E0F0
03E0F801E0F801E0F801E02003E00003E00003C00003C0000780000700000E00001C0000
180000300000600000C0000180000100000200200400200800201800603000403FFFC07F
FFC0FFFFC013217EA018>I<000200000600000E00000E00001E00001E00002E00004E00
004E00008E00008E00010E00020E00020E00040E00040E00080E00100E00100E00200E00
200E00400E00800E00FFFFF8000E00000E00000E00000E00000E00000E00000E00001F00
01FFF015217FA018>52 D<1000801E07001FFF001FFE001FF80013E00010000010000010
000010000010000010000010F800130E001407001803801003800001C00001C00001E000
01E00001E00001E07001E0F001E0F001E0E001C08001C04003C04003802007001006000C
1C0003F00013227EA018>I<007E0001C1000300800601C00E03C01C03C0180180380000
380000780000700000700000F0F800F30C00F40600F40300F80380F801C0F001C0F001E0
F001E0F001E0F001E0F001E07001E07001E07001E03801C03801C01803801C03000C0600
070C0001F00013227EA018>I<01F800060E000803001001802001802000C06000C06000
C06000C07000C07801803E01003F02001FC4000FF80003F80003FC00067F00083F80100F
803007C06001C06000E0C000E0C00060C00060C00060C000606000406000C03000801803
000E0E0003F00013227EA018>56 D<01F000060C000C0600180700380380700380700380
F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E0
0C05E00619E003E1E00001C00001C00001C0000380000380300300780700780600700C00
2018001030000FC00013227EA018>I<0001800000018000000180000003C0000003C000
0003C0000005E0000005E000000DF0000008F0000008F0000010F8000010780000107800
00203C0000203C0000203C0000401E0000401E0000401E0000800F0000800F0000FFFF00
0100078001000780030007C0020003C0020003C0040003E0040001E0040001E00C0000F0
0C0000F03E0001F8FF800FFF20237EA225>65 D<0007E0100038183000E0063001C00170
038000F0070000F00E0000701E0000701C0000303C0000303C0000307C00001078000010
78000010F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000
78000000780000107C0000103C0000103C0000101C0000201E0000200E00004007000040
0380008001C0010000E0020000381C000007E0001C247DA223>67
D<FFFFF0000F801E0007800700078003C0078001C0078000E0078000F007800078078000
780780007C0780003C0780003C0780003C0780003E0780003E0780003E0780003E078000
3E0780003E0780003E0780003E0780003E0780003C0780003C0780007C07800078078000
78078000F0078000E0078001E0078003C0078007000F801E00FFFFF8001F227EA125>I<
FFFFFFC00F8007C0078001C0078000C00780004007800040078000600780002007800020
0780002007802020078020000780200007802000078060000780E00007FFE0000780E000
078060000780200007802000078020000780200807800008078000080780001007800010
07800010078000300780003007800070078000E00F8003E0FFFFFFE01D227EA121>I<FF
FFFFC00F8007C0078001C0078000C0078000400780004007800060078000200780002007
80002007802020078020000780200007802000078060000780E00007FFE0000780E00007
806000078020000780200007802000078020000780000007800000078000000780000007
800000078000000780000007800000078000000FC00000FFFE00001B227EA120>I<FFFC
3FFF0FC003F0078001E0078001E0078001E0078001E0078001E0078001E0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E007FFFFE0078001E00780
01E0078001E0078001E0078001E0078001E0078001E0078001E0078001E0078001E00780
01E0078001E0078001E0078001E0078001E00FC003F0FFFC3FFF20227EA125>72
D<FFFC0FC007800780078007800780078007800780078007800780078007800780078007
80078007800780078007800780078007800780078007800780078007800FC0FFFC0E227E
A112>I<FFC00003FF0FC00003F007C00003E005E00005E005E00005E004F00009E004F0
0009E004F00009E004780011E004780011E004780011E0043C0021E0043C0021E0043C00
21E0041E0041E0041E0041E0040F0081E0040F0081E0040F0081E004078101E004078101
E004078101E00403C201E00403C201E00401E401E00401E401E00401E401E00400F801E0
0400F801E00400F801E004007001E00E007001E01F007003F0FFE0203FFF28227EA12D>
77 D<FF8007FF07C000F807C0007005E0002004F0002004F0002004780020047C002004
3C0020041E0020041F0020040F002004078020040780200403C0200401E0200401E02004
00F0200400F8200400782004003C2004003E2004001E2004000F2004000F20040007A004
0003E0040003E0040001E0040001E0040000E00E0000601F000060FFE0002020227EA125
>I<FFFFF0000F803C0007800F0007800780078007C0078003C0078003E0078003E00780
03E0078003E0078003E0078003E0078003C0078007C00780078007800F0007803C0007FF
F00007800000078000000780000007800000078000000780000007800000078000000780
000007800000078000000780000007800000078000000FC00000FFFC00001B227EA121>
80 D<FFFFE000000F803C000007800E00000780078000078007C000078003C000078003
E000078003E000078003E000078003E000078003E000078003C000078007C00007800780
0007800E000007803C000007FFE000000780700000078038000007801C000007801E0000
07800E000007800F000007800F000007800F000007800F000007800F800007800F800007
800F800007800F808007800FC080078007C0800FC003C100FFFC01E2000000007C002123
7EA124>82 D<03F0200C0C601802603001E07000E0600060E00060E00060E00020E00020
E00020F00000F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E0
0000F00000F0000070800070800070800070800070C00060C00060E000C0F000C0C80180
C6070081FC0014247DA21B>I<7FFFFFF878078078600780184007800840078008400780
08C007800C80078004800780048007800480078004000780000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780
000007800000078000000780000007800000078000000780000007800000078000000FC0
0003FFFF001E227EA123>I<0FE0001838003C0C003C0E00180700000700000700000700
00FF0007C7001E07003C0700780700700700F00708F00708F00708F00F087817083C2390
0FC1E015157E9418>97 D<0E0000FE00001E00000E00000E00000E00000E00000E00000E
00000E00000E00000E00000E00000E00000E1F000E61C00E80600F00300E00380E003C0E
001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0E00380F00700C
80600C41C0083F0017237FA21B>I<01FE000703000C07801C0780380300780000700000
F00000F00000F00000F00000F00000F00000F000007000007800403800401C00800C0100
07060001F80012157E9416>I<0000E0000FE00001E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E001F8E00704E00C02E01C01E03800E07800
E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E07000E07800E03800E01801
E00C02E0070CF001F0FE17237EA21B>I<01FC000707000C03801C01C03801C07801E070
00E0F000E0FFFFE0F00000F00000F00000F00000F000007000007800203800201C00400E
008007030000FC0013157F9416>I<003C00C6018F038F030F0700070007000700070007
00070007000700FFF8070007000700070007000700070007000700070007000700070007
00070007000700070007807FF8102380A20F>I<00007001F198071E180E0E181C07001C
07003C07803C07803C07803C07801C07001C07000E0E000F1C0019F00010000010000018
00001800001FFE000FFFC00FFFE03800F0600030400018C00018C00018C0001860003060
00303800E00E038003FE0015217F9518>I<0E0000FE00001E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E1F800E60C00E80E00F0070
0F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
0E00700E00700E00700E0070FFE7FF18237FA21B>I<1C001E003E001E001C0000000000
0000000000000000000000000E00FE001E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E00FFC00A227FA10E>I<01C003E003E003E001C000
00000000000000000000000000000001E00FE001E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0F1
8061803E000B2C82A10F>I<0E0000FE00001E00000E00000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E03FC0E01F00E01C00E01800E02000E0400
0E08000E10000E38000EF8000F1C000E1E000E0E000E07000E07800E03C00E01C00E01E0
0E00F00E00F8FFE3FE17237FA21A>I<0E1FC07F00FE60E183801E807201C00F003C00E0
0F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E
003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E00
3800E00E003800E0FFE3FF8FFE27157F942A>109 D<0E1F80FE60C01E80E00F00700F00
700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C01801800C03800E070
0070700070F00078F00078F00078F00078F00078F00078F000787000707800F03800E01C
01C00E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00700E00380E003C
0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E00380F0070
0E80E00E41C00E3F000E00000E00000E00000E00000E00000E00000E00000E00000E0000
FFE000171F7F941B>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E00
0E000E000E000E000E000E000F00FFF010157F9413>114 D<0F8830786018C018C008C0
08E008F0007F803FE00FF001F8003C801C800C800CC00CC008E018D0308FC00E157E9413
>I<02000200020002000600060006000E001E003E00FFF80E000E000E000E000E000E00
0E000E000E000E000E000E040E040E040E040E040E040708030801F00E1F7F9E13>I<0E
0070FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00F00E00F006017003827800FC7F18157F941B>I<FF8FF8
FF1E01E03C1C01C0180E01C0180E01E0100E01E010070260200702702007027020038430
40038438400384384001C8188001C81C8001C81C8000F00D0000F00F0000F00F00006006
00006006000060060020157F9423>119 D<FFC1FE1E00780E00300E00200E0020070040
07004003808003808003808001C10001C10000E20000E20000E200007400007400003800
003800003800001000001000002000002000002000004000F04000F08000F18000430000
3C0000171F7F941A>121 D E /Fv 20 118 df<FFFF80FFFF80FFFF8011037F9016>45
D<FFFFFFE00000FFFFFFFC000007E0007F000003E0000F800003E00003C00003E00001E0
0003E00000F00003E00000780003E000003C0003E000001E0003E000001E0003E000000F
0003E000000F0003E000000F8003E00000078003E0000007C003E0000007C003E0000003
C003E0000003C003E0000003E003E0000003E003E0000003E003E0000003E003E0000003
E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003
E003E0000003C003E0000003C003E0000007C003E0000007C003E00000078003E0000007
8003E000000F8003E000000F0003E000001F0003E000001E0003E000003C0003E0000078
0003E00000F80003E00001F00003E00003E00003E0000F800007E0003F0000FFFFFFFC00
00FFFFFFE000002B317CB033>68 D<FFFF80FFFF8007F00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00007F000FFFF80FFFF8011317DB017>73 D<FFF00000007FF8FFF000
00007FF807F00000007F0002F8000000BE0002F8000000BE0002F8000000BE00027C0000
013E00027C0000013E00023E0000023E00023E0000023E00023E0000023E00021F000004
3E00021F0000043E00021F0000043E00020F8000083E00020F8000083E00020F8000083E
000207C000103E000207C000103E000207C000103E000203E000203E000203E000203E00
0201F000403E000201F000403E000201F000403E000200F800803E000200F800803E0002
00F800803E0002007C01003E0002007C01003E0002007C01003E0002003E02003E000200
3E02003E0002003E02003E0002001F04003E0002001F04003E0002000F88003E0002000F
88003E0002000F88003E00020007D0003E00020007D0003E00020007D0003E00020003E0
003E00020003E0003E00020003E0003E00070001C0003E000F8001C0007F00FFF801C00F
FFF8FFF800800FFFF835317CB03D>77 D<FFFFFFC000FFFFFFF80007E0007E0003E0001F
0003E000078003E00003C003E00001E003E00001F003E00001F003E00000F003E00000F8
03E00000F803E00000F803E00000F803E00000F803E00000F803E00000F003E00001F003
E00001E003E00003E003E00003C003E000078003E0001F0003E0007C0003FFFFF00003E0
00000003E000000003E000000003E000000003E000000003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000003E000000003E000000003E000000003E000000003E000000007F0000000
FFFF800000FFFF80000025317CB02D>80 D<007F802001FFE02007C078600F001C601E00
06E03C0003E0380001E0780000E0700000E070000060F0000060F0000060F0000020F000
0020F0000020F8000020F80000007C0000007E0000003F0000003FC000001FF800000FFF
800007FFF80003FFFC0000FFFF00000FFF800000FFC000001FE0000007E0000003F00000
01F0000000F0000000F8000000F88000007880000078800000788000007880000078C000
0078C0000070E00000F0E00000E0F00000E0F80001C0EC000380C7000700C1F01E00807F
FC00800FF0001D337CB125>83 D<00FE00000303C0000C00E00010007000100038003C00
3C003E001C003E001E003E001E0008001E0000001E0000001E0000001E00000FFE0000FC
1E0003E01E000F801E001F001E003E001E003C001E007C001E00F8001E04F8001E04F800
1E04F8003E04F8003E0478003E047C005E043E008F080F0307F003FC03E01E1F7D9E21>
97 D<003F8000E0600380180700040F00041E001E1C003E3C003E7C003E7C0008780000
F80000F80000F80000F80000F80000F80000F80000F80000F800007800007C00007C0000
3C00011E00011E00020F000207000403801800E060003F80181F7D9E1D>99
D<000001E000003FE000003FE0000003E0000001E0000001E0000001E0000001E0000001
E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001
E0000001E0001F81E000F061E001C019E0078005E00F0003E00E0003E01E0001E03C0001
E03C0001E07C0001E0780001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001
E0F80001E0F80001E0F80001E0780001E0780001E03C0001E03C0001E01C0001E01E0003
E00E0005E0070009E0038011F000E061FF003F81FF20327DB125>I<003F800000E0E000
0380380007003C000E001E001E001E001C000F003C000F007C000F0078000F8078000780
F8000780F8000780FFFFFF80F8000000F8000000F8000000F8000000F8000000F8000000
780000007C0000003C0000003C0000801E0000800E0001000F0002000780020001C00C00
00F03000001FC000191F7E9E1D>I<0007E0001C1000383800707C00E07C01E07C01C038
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
FFFFC0FFFFC003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00007E0007FFF007FFF0016327FB114>I<000000F0007F0308
01C1C41C0380E81C070070080F0078001E003C001E003C003E003E003E003E003E003E00
3E003E003E003E003E003E001E003C001E003C000F007800070070000780E00009C1C000
087F000018000000180000001800000018000000180000001C0000000E0000000FFFF800
07FFFF0003FFFF800E000FC0180001E0300000F070000070E0000038E0000038E0000038
E0000038E00000387000007070000070380000E01C0001C00700070001C01C00003FE000
1E2F7E9F21>I<07000F801F801F800F8007000000000000000000000000000000000000
00000000000780FF80FF800F800780078007800780078007800780078007800780078007
800780078007800780078007800780078007800780078007800FC0FFF8FFF80D307EAF12
>105 D<0780FE001FC000FF83078060F000FF8C03C18078000F9001E2003C0007A001E4
003C0007A000F4001E0007C000F8001E0007C000F8001E00078000F0001E00078000F000
1E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E
00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00
078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007
8000F0001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC
1FFF83FFF0341F7E9E38>109 D<0780FE0000FF83078000FF8C03C0000F9001E00007A0
01E00007A000F00007C000F00007C000F000078000F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F0000FC001F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC000
00F0780001C01C00070007000F0007801E0003C01C0001C03C0001E03C0001E0780000F0
780000F0780000F0F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8
F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003C00F00078007800F00
01C01C0000F07800001FC0001D1F7E9E21>I<0783E0FF8C18FF907C0F907C07A07C07C0
3807C00007C00007C0000780000780000780000780000780000780000780000780000780
000780000780000780000780000780000780000780000780000780000780000FC000FFFE
00FFFE00161F7E9E19>114 D<01FC100E03301800F0300070600030E00030E00010E000
10E00010F00010F800007E00003FF0001FFF000FFFC003FFE0003FF00001F80000F88000
3C80003C80001CC0001CC0001CE0001CE00018F00038F00030CC0060C301C080FE00161F
7E9E1A>I<00400000400000400000400000400000C00000C00000C00001C00001C00003
C00007C0000FC0001FFFE0FFFFE003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C01003C01003C01003
C01003C01003C01003C01003C01001C02001E02000E0400078C0001F00142C7FAB19>I<
078000F000FF801FF000FF801FF0000F8001F000078000F000078000F000078000F00007
8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F000078000
F000078000F000078001F000078001F000078001F000038002F00003C004F00001C008F8
00007030FF80001FC0FF80211F7E9E25>I E /Fw 5 85 df<00000000600000000000E0
0000000000E00000000001E00000000003E00000000003E00000000007E00000000007F0
000000000DF0000000000DF00000000019F00000000039F00000000031F00000000061F0
0000000061F000000000C1F000000000C1F00000000181F00000000381F00000000301F0
0000000601F00000000601F00000000C01F80000000C00F80000001800F80000003800F8
0000003000F80000006000F80000006000F8000000C000F8000000C000F8000001FFFFF8
000001FFFFF80000030000F80000060000F80000060000F800000C0000F800000C0000FC
00001800007C00001800007C00003000007C00007000007C00006000007C0000C000007C
0000C000007C0001C000007C0003C000007C000FE00000FE00FFF8001FFFE0FFF8001FFF
E02B327CB134>65 D<000FFFFFFC0000000FFFFFFF800000007E000FE00000007C0003F0
0000007C0000F80000007C00007C0000007C00007C000000F800003E000000F800001E00
0000F800001F000000F800001F000001F000001F000001F000000F800001F000000F8000
01F000000F800003E000000F800003E000000F800003E000000F800003E000001F800007
C000001F800007C000001F800007C000001F800007C000001F80000F8000001F00000F80
00003F00000F8000003F00000F8000003F00001F0000007E00001F0000007E00001F0000
007E00001F0000007C00003E000000FC00003E000000F800003E000001F800003E000001
F000007C000003E000007C000003E000007C000007C000007C00000F800000F800000F00
0000F800001E000000F800003C000000F8000078000001F00001F0000001F00003E00000
01F0000F80000003F0007F000000FFFFFFFC000000FFFFFFC000000031317BB035>68
D<000FFFFFFFF8000FFFFFFFF800007E0003F800007C0000F800007C00007800007C0000
7800007C0000300000F80000300000F80000300000F80000300000F80000300001F00000
300001F00000300001F00000300001F00000600003E00180600003E00180000003E00180
000003E00180000007C00300000007C00300000007C00700000007C01F0000000FFFFE00
00000FFFFE0000000F801E0000000F800E0000001F000C0000001F000C0000001F000C00
00001F000C0000003E00180000003E00180000003E00000000003E00000000007C000000
00007C00000000007C00000000007C0000000000F80000000000F80000000000F8000000
0000F80000000001F00000000001F00000000001F00000000003F000000000FFFFE00000
00FFFFE00000002D317BB02E>70 D<000FFFFFE000000FFFFFFC0000007E003F0000007C
000F8000007C0007C000007C0003E000007C0003E00000F80001F00000F80001F00000F8
0001F00000F80003F00001F00003F00001F00003F00001F00003F00001F00003E00003E0
0007E00003E00007C00003E0000FC00003E0000F800007C0001F000007C0003E000007C0
0078000007C001E000000F800F8000000FFFFC0000000F800E0000000F80070000001F00
038000001F0003C000001F0001E000001F0001E000003E0001F000003E0001F000003E00
01F000003E0001F000007C0003F000007C0003F000007C0003E000007C0003E00000F800
07E00000F80007E00000F80007E00000F80007E01801F00007E03001F00007E03001F000
07E02003F00003E060FFFF8001E0C0FFFF8000F180000000003E002D327BB033>82
D<07FFFFFFFFF007FFFFFFFFF00FE007E007F00F8007C001F00E0007C000E00C0007C000
E01C0007C000E018000F8000E018000F8000E030000F8000C030000F8000C030001F0000
C060001F0000C060001F0000C060001F0000C0C0003E00018000003E00000000003E0000
0000003E00000000007C00000000007C00000000007C00000000007C0000000000F80000
000000F80000000000F80000000000F80000000001F00000000001F00000000001F00000
000001F00000000003E00000000003E00000000003E00000000003E00000000007C00000
000007C00000000007C00000000007C0000000000F80000000000F80000000000F800000
00000F80000000001F00000000001F00000000001F00000000003F000000003FFFFF0000
003FFFFF0000002C3174B032>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300dpi
TeXDict begin
%%EndSetup
%%Page: 0 1
0 0 bop 799 949 a Fw(D)25 b(R)g(A)g(F)g(T)225 1041 y
Fv(Do)r(cumen)n(t)20 b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n
(terface)621 1235 y Fu(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)
766 1362 y(Septem)o(b)q(er)g(19,)h(1996)190 1420 y(This)h(w)o(ork)f(w)o
(as)h(supp)q(orted)g(in)f(part)g(b)o(y)g(NSF)g(and)h(ARP)l(A)e(under)h
(NSF)g(con)o(tract)283 1478 y(CD)o(A-9115428)j(and)e(Esprit)f(under)h
(pro)s(ject)e(HPC)i(Standards)g(\(21111\).)p eop
%%Page: 1 2
1 1 bop 166 49 a Ft(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 Fs(Chapter)31 b(11)75 568 y Fr(I/O)75
809 y Fq(11.1)60 b(Intro)r(duction)75 910 y Ft(Di\013eren)o(t)11
b(parallel)i(\014le)g(systems)e(supp)q(ort)h(di\013eren)o(t)f(in)o
(terfaces)h(and)g(the)f(lac)o(k)h(of)f(a)g(standard)g(p)q(ortable)75
967 y(in)o(terface)j(mak)o(es)f(it)h(imp)q(ossible)i(to)d(dev)o(elop)h
(a)f(truly)h(p)q(ortable)g(parallel)h(program.)k(It)13
b(is)h(not)g(feasible)75 1023 y(to)f(dev)o(elop)i(large)f(scien)o
(ti\014c)h(applications)h(from)d(scratc)o(h)g(for)h(eac)o(h)g
(generation)g(of)f(parallel)i(mac)o(hine,)75 1080 y(and,)23
b(in)g(the)e(scien)o(ti\014c)j(w)o(orld,)f(p)q(ortabilit)o(y)f(and)g(p)
q(erformance)g(are)f(inseparable|a)j(program)c(is)75
1136 y(not)d(considered)i(truly)e(p)q(ortable)h(unless)h(it)e(not)g
(only)h(compiles,)h(but)f(also)f(runs)g(e\016cien)o(tly)l(.)28
b(UNIX)q Fp(>)16 b Fo(\(Oct\))75 1193 y Ft(pro)o(vides)21
b(a)f(mo)q(del)i(of)e(a)g(widely)i(p)q(ortable)f(\014le)h(system,)f
(but)g(the)g(p)q(ortabilit)o(y)g(and)g(optimization)75
1249 y(needed)c(for)d(parallel)j(I/O)e(cannot)g(b)q(e)h(ac)o(hiev)o(ed)
g(with)g(traditional)g(UNIX.)474 b Fp(?)16 b Fo(\(Oct\))166
1306 y Ft(The)c(signi\014can)o(t)h(optimizations)h(required)f(for)e
(e\016ciency)j(\(e.g.)k(grouping)13 b([)p Fn(?)o Ft(],)f(collectiv)o(e)
i(bu\013er-)1875 1308 y Fp(>)i Fo(\(Oct\))75 1362 y Ft(ing)j([)p
Fn(?)p Ft(,)f Fn(?)p Ft(,)g Fn(?)p Ft(,)h Fn(?)o Ft(,)g
Fn(?)o Ft(],)g(and)h(disk-directed)h(I/O)e([)p Fn(?)o
Ft(]\))f(can)h(only)h(b)q(e)g(implemen)o(ted)g(as)f(part)f(of)g(a)h
(par-)1875 1366 y Fp(?)d Fo(\(Oct\))75 1418 y Ft(allel)21
b(I/O)f(en)o(vironmen)o(t)g(if)g(it)g(supp)q(orts)f(a)h(high-lev)o(el)h
(in)o(terface)f(to)f(describ)q(e)i(the)f(partitioning)g(of)75
1475 y(\014le)d(data)e(among)g(pro)q(cesses)i(and)f(a)f(collectiv)o(e)j
(in)o(terface)e(describing)i(complete)f(transfers)e(of)g(global)75
1531 y(data)f(structures)h(b)q(et)o(w)o(een)g(pro)q(cess)g(memories)g
(and)g(\014les.)21 b(In)15 b(addition,)h(further)e(e\016ciencies)j(can)
e(b)q(e)75 1588 y(gained)20 b(via)f(supp)q(ort)h(for)e(async)o(hronous)
h(I/O,)g(strided)h(requests,)g(and)f(con)o(trol)g(o)o(v)o(er)f(ph)o
(ysical)j(\014le)75 1644 y(la)o(y)o(out)16 b(on)g(storage)f(devices)j
(\(disks\).)24 b(The)16 b(I/O)h(en)o(vironmen)o(t)g(describ)q(ed)h(in)g
(this)e(section)h(pro)o(vides)75 1701 y(these)e(facilities.)166
1757 y(Emphasis)g(has)f(b)q(een)i(put)e(in)i(remaining)f(as)f
Fm(MPI)p Ft(-friendly)i(as)e(p)q(ossible.)22 b(When)14
b(op)q(ening)i(a)e(\014le,)75 1814 y(a)k(comm)o(unicator)h(is)g(sp)q
(eci\014ed)i(to)d(determine)i(whic)o(h)f(group)g(of)f(pro)q(cesses)h
(can)g(get)f(access)h(to)f(the)75 1870 y(\014le)g(in)g(subsequen)o(t)g
(I/O)g(op)q(erations.)25 b(Accesses)18 b(to)f(a)g(\014le)h(can)f(b)q(e)
h(indep)q(enden)o(t)h(\(no)e(co)q(ordination)75 1927
y(b)q(et)o(w)o(een)f(pro)q(cesses)g(tak)o(es)f(place\))h(or)f
(collectiv)o(e)i(\(eac)o(h)e(pro)q(cess)h(of)f(the)h(group)f(asso)q
(ciated)h(with)g(the)75 1983 y(comm)o(unicator)h(m)o(ust)h(participate)
g(in)h(the)f(collectiv)o(e)h(access\).)28 b Fm(MPI)17
b Ft(deriv)o(ed)i(datat)o(yp)q(es)e(are)g(used)75 2039
y(for)f(expressing)h(the)f(data)g(la)o(y)o(out)g(in)h(the)f(\014le)i
(as)e(w)o(ell)h(as)f(the)g(distribution)i(of)e(the)h(\014le)g(data)f
(among)75 2096 y(pro)q(cesses.)31 b(In)19 b(addition,)h(eac)o(h)f
(access)f(\(read)h(or)f(write\))g(op)q(erates)h(on)f(a)g(n)o(um)o(b)q
(er)h(of)g Fm(MPI)f Ft(ob)s(jects)75 2152 y(whic)o(h)e(can)f(b)q(e)h
(of)f(an)o(y)g Fm(MPI)f Ft(basic)i(or)f(deriv)o(ed)h(datat)o(yp)q(es.)
75 2274 y Fl(11.1.1)49 b(Data)17 b(P)o(a)o(rtitioning)75
2360 y Ft(Instead)d(of)g(de\014ning)h(\014le)g(access)f(mo)q(des)h(to)e
(express)h(the)g(common)g(patterns)f(for)g(accessing)i(a)f(shared)75
2416 y(\014le)21 b(\(broadcast,)f(reduction,)h(scatter,)f(gather\),)g
(w)o(e)g(c)o(hose)f(another)h(approac)o(h)f(whic)o(h)i(consists)f(of)75
2473 y(expressing)d(the)g(data)f(partitioning)h(via)g(deriv)o(ed)h
(datat)o(yp)q(es.)23 b(Compared)17 b(to)e(a)i(limited)h(set)e(of)h
(pre-)75 2529 y(de\014ned)j(access)f(patterns,)g(this)g(approac)o(h)f
(has)h(the)g(adv)m(an)o(tage)f(of)g(added)h(\015exibili)q(t)o(y)i(and)d
(expres-)75 2586 y(siv)o(eness.)166 2642 y Fm(MPI)11
b Ft(deriv)o(ed)i(datat)o(yp)q(es)f(are)f(used)i(to)e(describ)q(e)j(ho)
o(w)e(data)f(is)i(laid)g(out)e(in)i(the)f(user's)g(bu\013er.)19
b(W)l(e)75 2699 y(extend)c(this)h(use)f(to)f(describ)q(e)j(ho)o(w)d
(the)h(data)f(is)i(laid)g(out)e(in)i(the)f(\014le)h(as)f(w)o(ell.)20
b(Th)o(us)15 b(w)o(e)g(distinguish)964 2828 y(1)p eop
%%Page: 2 4
2 3 bop 75 -100 a Ft(2)1365 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Ft(b)q(et)o(w)o(een)22 b(t)o(w)o(o)d(\(p)q(oten)o(tially)
k(di\013eren)o(t\))e(deriv)o(ed)h(datat)o(yp)q(es)f(that)f(are)h(used:)
33 b(the)21 b Fm(\014let)o(yp)q(e)p Ft(,)j(whic)o(h)75
106 y(describ)q(es)c(the)f(la)o(y)o(out)f(in)i(the)e(\014le,)j(and)d
(the)h Fm(buft)o(yp)q(e)p Ft(,)i(whic)o(h)f(describ)q(es)g(the)f(la)o
(y)o(out)f(in)h(the)g(user's)75 162 y(bu\013er.)g(In)12
b(addition,)h(b)q(oth)e Fm(\014let)o(yp)q(e)i Ft(and)f
Fm(buft)o(yp)q(e)h Ft(are)e(deriv)o(ed)i(from)e(a)g(third)h
Fm(MPI)f Ft(datat)o(yp)q(e,)g(referred)75 219 y(to)k(as)g(the)h
Fj(elementary)g Ft(datat)o(yp)q(e)f Fm(et)o(yp)q(e)p
Ft(.)22 b(The)16 b(purp)q(ose)h(of)e(the)h(elemen)o(tary)g(datat)o(yp)q
(e)f(is)h(to)f(ensure)75 275 y(consistency)j(b)q(et)o(w)o(een)e(the)h
(t)o(yp)q(e)g(signatures)f(of)h Fm(\014let)o(yp)q(e)h
Ft(and)e Fm(buft)o(yp)q(e)p Ft(.)26 b(O\013sets)16 b(for)g(accessing)i
(data)75 332 y(within)e(the)g(\014le)g(are)f(expressed)h(as)f(an)g(in)o
(tegral)g(n)o(um)o(b)q(er)h(of)e Fm(et)o(yp)q(e)j Ft(items.)166
388 y(The)d(\014let)o(yp)q(e)g(de\014nes)h(a)e(data)f(pattern)h(that)g
(is)h(replicated)h(throughout)e(the)g(\014le)i(\(or)d(part)h(of)g(the)
75 444 y(\014le|see)19 b(the)f(concept)f(of)g(displacemen)o(t)i(b)q
(elo)o(w\))f(to)f(tile)h(the)f(\014le)i(data.)25 b(It)18
b(should)g(b)q(e)g(noted)g(that)75 501 y Fm(MPI)g Ft(deriv)o(ed)h
(datat)o(yp)q(es)e(consist)i(of)e(\014elds)j(of)d(data)h(that)f(are)h
(lo)q(cated)h(at)e(sp)q(eci\014ed)k(o\013sets.)27 b(This)75
557 y(can)15 b(lea)o(v)o(e)h(\\holes")f(b)q(et)o(w)o(een)h(the)f
(\014elds,)h(that)e(do)i(not)e(con)o(tain)i(an)o(y)f(data.)k(In)d(the)f
(con)o(text)g(of)f(tiling)75 614 y(the)g(\014le)g(with)g(the)g(\014let)
o(yp)q(e,)g(the)g(pro)q(cess)g(can)g(only)g(access)f(the)h(\014le)h
(data)e(that)g(matc)o(hes)g(items)g(in)i(the)75 670 y(\014let)o(yp)q
(e.)21 b(It)15 b(cannot)g(access)h(\014le)g(data)e(that)h(falls)h
(under)g(holes)g(\(see)f(Figure)g(11.1\).)375 1014 y
@beginspecial 0 @llx 0 @lly 592 @urx 141 @ury 2880 @rwi
@setspecial
%%BeginDocument: figures/io-filetype.eps
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/l {lineto} bind def
/m {moveto} bind def
/s {stroke} bind def
/n {newpath} bind def
/gs {gsave} bind def
/gr {grestore} bind def
/clp {closepath} bind def
/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul setrgbcolor} bind def
/col-1 {} def
/col0 {0 0 0 setrgbcolor} bind def
/col1 {0 0 1 setrgbcolor} bind def
/col2 {0 1 0 setrgbcolor} bind def
/col3 {0 1 1 setrgbcolor} bind def
/col4 {1 0 0 setrgbcolor} bind def
/col5 {1 0 1 setrgbcolor} bind def
/col6 {1 1 0 setrgbcolor} bind def
/col7 {1 1 1 setrgbcolor} bind def
/col8 {.68 .85 .9 setrgbcolor} bind def
/col9 {0 .39 0 setrgbcolor} bind def
/col10 {.65 .17 .17 setrgbcolor} bind def
/col11 {1 .51 0 setrgbcolor} bind def
/col12 {.63 .13 .94 setrgbcolor} bind def
/col13 {1 .75 .8 setrgbcolor} bind def
/col14 {.7 .13 .13 setrgbcolor} bind def
/col15 {1 .84 0 setrgbcolor} bind def
/DrawEllipse {
/endangle exch def
/startangle exch def
/yrad exch def
/xrad exch def
/y exch def
/x exch def
/savematrix mtrx currentmatrix def
x y translate xrad yrad scale 0 0 1 startangle endangle arc
savematrix setmatrix
} def
end
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def
$F2psBegin
0 setlinecap 0 setlinejoin
-54.0 181.0 translate 0.900 -0.900 scale
0.500 setlinewidth
% Polyline
n 179 84 m 179 69 l 159 69 l 159 84 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 199 84 m 199 69 l 179 69 l 179 84 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 179 164 m 179 149 l 59 149 l 59 164 l clp gs col-1 s gr
% Polyline
n 99 164 m 99 149 l 79 149 l 79 164 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 119 164 m 119 149 l 99 149 l 99 164 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 299 164 m 299 149 l 179 149 l 179 164 l clp gs col-1 s gr
% Polyline
n 219 164 m 219 149 l 199 149 l 199 164 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 239 164 m 239 149 l 219 149 l 219 164 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 419 164 m 419 149 l 299 149 l 299 164 l clp gs col-1 s gr
% Polyline
n 339 164 m 339 149 l 319 149 l 319 164 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 359 164 m 359 149 l 339 149 l 339 164 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 539 164 m 539 149 l 419 149 l 419 164 l clp gs col-1 s gr
% Polyline
n 459 164 m 459 149 l 439 149 l 439 164 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 479 164 m 479 149 l 459 149 l 459 164 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 659 164 m 659 149 l 539 149 l 539 164 l clp gs col-1 s gr
% Polyline
n 579 164 m 579 149 l 559 149 l 559 164 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 259 84 m 259 69 l 139 69 l 139 84 l clp gs col-1 s gr
% Polyline
n 599 164 m 599 149 l 579 149 l 579 164 l clp gs 0.85 setgray fill gr
gs col-1 s gr
/Helvetica findfont 11.00 scalefont setfont
179 104 m
gs 1 -1 scale (holes) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
0.000 setlinewidth
% Ellipse
n 694 156 3 3 0 360 DrawEllipse gs 0.00 setgray fill gr
% Ellipse
n 704 156 3 3 0 360 DrawEllipse gs 0.00 setgray fill gr
% Ellipse
n 714 156 3 3 0 360 DrawEllipse gs 0.00 setgray fill gr
1.000 setlinewidth
% Polyline
n 699 149 m 59 149 l 59 164 l 699 164 l gs col-1 s gr
0.500 setlinewidth
% Interpolated spline
n 244 189 m
232.036 184.536 227.036 182.036 224 179 curveto
222.482 177.482 221.232 174.982 219 169 curveto
gs col-1 s gr
n 219.923 177.194 m 219.000 169.000 l 223.670 175.796 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 244 194 m
180.787 195.844 153.287 194.594 134 189 curveto
126.939 186.952 118.189 181.952 99 169 curveto
gs col-1 s gr
n 104.512 175.133 m 99.000 169.000 l 106.750 171.818 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 319 189 m
327.853 187.647 331.603 186.397 334 184 curveto
336.397 181.603 337.647 177.853 339 169 curveto
gs col-1 s gr
n 335.814 176.606 m 339.000 169.000 l 339.768 177.210 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 319 194 m
382.589 191.880 410.089 189.380 429 184 curveto
434.743 182.366 442.243 178.616 459 169 curveto
gs col-1 s gr
n 451.066 171.247 m 459.000 169.000 l 453.057 174.716 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 319 199 m
448.285 202.925 504.535 200.425 544 189 curveto
551.064 186.955 559.814 181.955 579 169 curveto
gs col-1 s gr
n 571.251 171.819 m 579.000 169.000 l 573.489 175.134 l gs 2 setlinejoin col-1 s gr
/Helvetica findfont 11.00 scalefont setfont
59 139 m
gs 1 -1 scale (tiling a file with the filetype:) col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
249 199 m
gs 1 -1 scale (accesible data) col-1 show gr
% Polyline
n 159 59 m 159 44 l 139 44 l 139 59 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Interpolated spline
n 159 99 m
155.926 96.344 154.676 95.094 154 94 curveto
152.488 91.554 151.238 87.804 149 79 curveto
gs col-1 s gr
n 149.033 87.246 m 149.000 79.000 l 152.909 86.261 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 194 99 m
208.466 98.119 214.716 96.869 219 94 curveto
222.030 91.971 224.530 88.221 229 79 curveto
gs col-1 s gr
n 223.711 85.326 m 229.000 79.000 l 227.310 87.071 l gs 2 setlinejoin col-1 s gr
/Helvetica findfont 11.00 scalefont setfont
119 59 m
gs 1 -1 scale (etype) dup stringwidth pop neg 0 rmoveto col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
119 84 m
gs 1 -1 scale (filetype) dup stringwidth pop neg 0 rmoveto col-1 show gr
$F2psEnd
%%EndDocument
@endspecial 573 1112 a(Figure)g(11.1:)k(Tiling)e(a)e(\014le)h(using)g
(a)f(\014let)o(yp)q(e)166 1213 y(Data)9 b(whic)o(h)i(resides)g(in)h
(holes)f(can)f(b)q(e)h(accessed)g(b)o(y)f(other)g(pro)q(cesses)h(whic)o
(h)g(use)g(complemen)o(tary)75 1270 y(\014let)o(yp)q(es)18
b(\(see)f(Figure)h(11.2\).)24 b(Th)o(us,)18 b(\014le)g(data)e(can)i(b)q
(e)g(distributed)g(among)f(parallel)i(pro)q(cesses)e(in)75
1326 y(disjoin)o(t)22 b(c)o(h)o(unks.)39 b(Filet)o(yp)q(e)23
b(constructors)e(help)i(the)e(user)h(create)f(complemen)o(tary)h
(\014let)o(yp)q(es)h(for)75 1383 y(common)17 b(distribution)i
(patterns,)e(suc)o(h)h(as)f(scatter/gather)e(and)j(HPF)f(distributions)
i(\(see)e(Section)75 1439 y(11.6\).)375 1771 y @beginspecial
0 @llx 0 @lly 593 @urx 135 @ury 2880 @rwi @setspecial
%%BeginDocument: figures/io-comp-filetypes.eps
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/l {lineto} bind def
/m {moveto} bind def
/s {stroke} bind def
/n {newpath} bind def
/gs {gsave} bind def
/gr {grestore} bind def
/clp {closepath} bind def
/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul setrgbcolor} bind def
/col-1 {} def
/col0 {0 0 0 setrgbcolor} bind def
/col1 {0 0 1 setrgbcolor} bind def
/col2 {0 1 0 setrgbcolor} bind def
/col3 {0 1 1 setrgbcolor} bind def
/col4 {1 0 0 setrgbcolor} bind def
/col5 {1 0 1 setrgbcolor} bind def
/col6 {1 1 0 setrgbcolor} bind def
/col7 {1 1 1 setrgbcolor} bind def
/col8 {.68 .85 .9 setrgbcolor} bind def
/col9 {0 .39 0 setrgbcolor} bind def
/col10 {.65 .17 .17 setrgbcolor} bind def
/col11 {1 .51 0 setrgbcolor} bind def
/col12 {.63 .13 .94 setrgbcolor} bind def
/col13 {1 .75 .8 setrgbcolor} bind def
/col14 {.7 .13 .13 setrgbcolor} bind def
/col15 {1 .84 0 setrgbcolor} bind def
/DrawEllipse {
/endangle exch def
/startangle exch def
/yrad exch def
/xrad exch def
/y exch def
/x exch def
/savematrix mtrx currentmatrix def
x y translate xrad yrad scale 0 0 1 startangle endangle arc
savematrix setmatrix
} def
end
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def
$F2psBegin
0 setlinecap 0 setlinejoin
-35.0 175.0 translate 0.900 -0.900 scale
% Ellipse
n 684 186 3 3 0 360 DrawEllipse gs 0.00 setgray fill gr
% Ellipse
n 694 186 3 3 0 360 DrawEllipse gs 0.00 setgray fill gr
0.500 setlinewidth
% Polyline
n 159 59 m 139 59 l 139 44 l 159 44 l clp gs col-1 s gr
% Polyline
n 259 134 m 259 119 l 139 119 l 139 134 l clp gs col-1 s gr
% Polyline
n 259 109 m 259 94 l 139 94 l 139 109 l clp gs col-1 s gr
% Polyline
n 259 84 m 259 69 l 139 69 l 139 84 l clp gs col-1 s gr
% Polyline
n 179 84 m 159 84 l 159 69 l 179 69 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 159 84 m 139 84 l 139 69 l 159 69 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 659 194 m 639 194 l 639 179 l 659 179 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 59 194 m 39 194 l 39 179 l 59 179 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 79 194 m 59 194 l 59 179 l 79 179 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 179 194 m 159 194 l 159 179 l 179 179 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 199 194 m 179 194 l 179 179 l 199 179 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 299 194 m 279 194 l 279 179 l 299 179 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 319 194 m 299 194 l 299 179 l 319 179 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 419 194 m 399 194 l 399 179 l 419 179 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 439 194 m 419 194 l 419 179 l 439 179 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 539 194 m 519 194 l 519 179 l 539 179 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 559 194 m 539 194 l 539 179 l 559 179 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 99 194 m 79 194 l 79 179 l 99 179 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 119 194 m 99 194 l 99 179 l 119 179 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 139 194 m 119 194 l 119 179 l 139 179 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 159 194 m 139 194 l 139 179 l 159 179 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 219 194 m 199 194 l 199 179 l 219 179 l clp gs 0.65 setgray fill gr
gs col-1 s gr
0.000 setlinewidth
% Ellipse
n 674 186 3 3 0 360 DrawEllipse gs 0.00 setgray fill gr
0.500 setlinewidth
% Polyline
n 239 194 m 219 194 l 219 179 l 239 179 l clp gs 0.65 setgray fill gr
gs col-1 s gr
/Helvetica findfont 11.00 scalefont setfont
39 169 m
gs 1 -1 scale (tiling a file with the filetypes:) col-1 show gr
% Polyline
n 259 194 m 239 194 l 239 179 l 259 179 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 279 194 m 259 194 l 259 179 l 279 179 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 339 194 m 319 194 l 319 179 l 339 179 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 359 194 m 339 194 l 339 179 l 359 179 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 379 194 m 359 194 l 359 179 l 379 179 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 399 194 m 379 194 l 379 179 l 399 179 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 479 194 m 459 194 l 459 179 l 479 179 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 459 194 m 439 194 l 439 179 l 459 179 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 499 194 m 479 194 l 479 179 l 499 179 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 519 194 m 499 194 l 499 179 l 519 179 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 579 194 m 559 194 l 559 179 l 579 179 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 599 194 m 579 194 l 579 179 l 599 179 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 619 194 m 599 194 l 599 179 l 619 179 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 639 194 m 619 194 l 619 179 l 639 179 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 199 109 m 179 109 l 179 94 l 199 94 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 219 109 m 199 109 l 199 94 l 219 94 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 239 134 m 219 134 l 219 119 l 239 119 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 259 134 m 239 134 l 239 119 l 259 119 l clp gs 0.40 setgray fill gr
gs col-1 s gr
1.000 setlinewidth
% Polyline
n 679 179 m 39 179 l 39 194 l 679 194 l gs col-1 s gr
/Helvetica findfont 11.00 scalefont setfont
119 59 m
gs 1 -1 scale (etype) dup stringwidth pop neg 0 rmoveto col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
119 84 m
gs 1 -1 scale (process 1 filetype) dup stringwidth pop neg 0 rmoveto col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
119 109 m
gs 1 -1 scale (process 2 filetype) dup stringwidth pop neg 0 rmoveto col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
119 134 m
gs 1 -1 scale (process 3 filetype) dup stringwidth pop neg 0 rmoveto col-1 show gr
$F2psEnd
%%EndDocument
@endspecial 419 1869 a(Figure)e(11.2:)k(P)o(artitioning)c(a)g(\014le)i
(among)d(parallel)j(pro)q(cesses)166 1970 y(In)k(order)f(to)g(b)q
(etter)g(illustrate)i(these)e(concepts,)i(let)f(us)f(consider)h(a)f
(2-D)g(matrix,)h(stored)f(in)75 2026 y(ro)o(w)14 b(ma)s(jor)g(order)i
(in)g(a)f(\014le,)h(that)f(is)h(to)f(b)q(e)h(transp)q(osed)f(and)h
(partitioned)g(among)f(a)g(group)g(of)g(three)75 2083
y(pro)q(cesses)f(\(see)g(Figure)g(11.3\).)j(The)d(matrix)g(is)g(to)f(b)
q(e)h(distributed)h(among)e(the)h(parallel)h(pro)q(cesses)f(in)75
2139 y(a)e(ro)o(w)g(cyclic)i(manner.)19 b(Eac)o(h)12
b(pro)q(cess)h(w)o(an)o(ts)e(to)h(store)g(in)h(its)g(o)o(wn)f(memory)g
(the)g(transp)q(osed)h(p)q(ortion)75 2195 y(of)k(the)h(matrix)g(whic)o
(h)h(is)f(assigned)h(to)e(it.)28 b(Using)19 b(appropriate)f
Fm(\014let)o(yp)q(e)p Ft(s)h(and)f Fm(buft)o(yp)q(e)p
Ft(s)i(allo)o(ws)e(the)75 2252 y(user)f(to)g(p)q(erform)g(that)f(task)h
(v)o(ery)f(easily)l(.)28 b(In)17 b(addition,)i(the)e(elemen)o(tary)g
(datat)o(yp)q(e)g(allo)o(ws)g(one)h(to)75 2308 y(ha)o(v)o(e)d(a)g(v)o
(ery)g(generic)h(co)q(de)g(that)e(applies)j(to)d(an)o(y)h(t)o(yp)q(e)g
(of)g(2-D)g(matrix.)166 2365 y(Note)d(that)h(using)g
Fm(MPI)f Ft(deriv)o(ed)i(datat)o(yp)q(es)e(leads)i(to)e(the)h(p)q
(ossibilit)o(y)i(of)d(v)o(ery)h(\015exible)i(patterns.)75
2421 y(F)l(or)d(example,)i(the)f(\014let)o(yp)q(es)h(need)g(not)e
(distribute)i(the)f(data)f(in)i(rank)f(order.)18 b(In)c(addition,)g
(there)f(can)75 2478 y(b)q(e)k(o)o(v)o(erlaps)g(b)q(et)o(w)o(een)f(the)
h(data)f(items)h(that)f(are)g(accessed)h(b)o(y)g(di\013eren)o(t)g(pro)q
(cesses.)24 b(The)17 b(extreme)75 2534 y(case)e(of)g(full)i(o)o(v)o
(erlap)d(is)i(the)f(broadcast/reduce)h(pattern.)166 2591
y(Using)c(the)f(\014let)o(yp)q(e)i(allo)o(ws)e(a)g(certain)h(access)g
(pattern)f(to)f(b)q(e)i(established.)21 b(But)11 b(it)h(is)g(conceiv)m
(able)75 2647 y(that)j(a)h(single)i(pattern)d(w)o(ould)i(not)e(b)q(e)i
(suitable)h(for)d(the)h(whole)h(\014le.)24 b(The)16 b(solution)h(is)f
(to)g(de\014ne)h(an)75 2704 y(absolute)d(b)o(yte)f(displacemen)o(t)i
(from)e(the)g(b)q(eginning)j(of)d(the)h(\014le,)g(and)g(ha)o(v)o(e)f
(the)h(access)f(pattern)g(start)1967 46 y Fo(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(11.1.)34 b(INTR)o(ODUCTION)1278
b Ft(3)375 982 y @beginspecial 0 @llx 0 @lly 673 @urx
549 @ury 2880 @rwi @setspecial
%%BeginDocument: figures/io-cyclic-trans.eps
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/l {lineto} bind def
/m {moveto} bind def
/s {stroke} bind def
/n {newpath} bind def
/gs {gsave} bind def
/gr {grestore} bind def
/clp {closepath} bind def
/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul setrgbcolor} bind def
/col-1 {} def
/col0 {0 0 0 setrgbcolor} bind def
/col1 {0 0 1 setrgbcolor} bind def
/col2 {0 1 0 setrgbcolor} bind def
/col3 {0 1 1 setrgbcolor} bind def
/col4 {1 0 0 setrgbcolor} bind def
/col5 {1 0 1 setrgbcolor} bind def
/col6 {1 1 0 setrgbcolor} bind def
/col7 {1 1 1 setrgbcolor} bind def
/col8 {.68 .85 .9 setrgbcolor} bind def
/col9 {0 .39 0 setrgbcolor} bind def
/col10 {.65 .17 .17 setrgbcolor} bind def
/col11 {1 .51 0 setrgbcolor} bind def
/col12 {.63 .13 .94 setrgbcolor} bind def
/col13 {1 .75 .8 setrgbcolor} bind def
/col14 {.7 .13 .13 setrgbcolor} bind def
/col15 {1 .84 0 setrgbcolor} bind def
/DrawEllipse {
/endangle exch def
/startangle exch def
/yrad exch def
/xrad exch def
/y exch def
/x exch def
/savematrix mtrx currentmatrix def
x y translate xrad yrad scale 0 0 1 startangle endangle arc
savematrix setmatrix
} def
end
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def
$F2psBegin
0 setlinecap 0 setlinejoin
-36.0 562.0 translate 0.900 -0.900 scale
0.500 setlinewidth
% Polyline
n 399 344 m 319 344 l 319 269 l 399 269 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 239 279 m 139 279 l 139 264 l 239 264 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 239 234 m 139 234 l 139 219 l 239 219 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 239 189 m 139 189 l 139 174 l 239 174 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 239 144 m 139 144 l 139 129 l 239 129 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 239 264 m 139 264 l 139 249 l 239 249 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 399 244 m 319 244 l 319 169 l 399 169 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 239 219 m 139 219 l 139 204 l 239 204 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 239 249 m 139 249 l 139 234 l 239 234 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 239 174 m 139 174 l 139 159 l 239 159 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 239 129 m 139 129 l 139 114 l 239 114 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 399 144 m 319 144 l 319 69 l 399 69 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 239 114 m 139 114 l 139 99 l 239 99 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 239 159 m 139 159 l 139 144 l 239 144 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 239 204 m 139 204 l 139 189 l 239 189 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Ellipse
n 754 571 3 3 0 360 DrawEllipse gs 0.00 setgray fill gr
gs col-1 s gr
% Ellipse
n 769 571 3 3 0 360 DrawEllipse gs 0.00 setgray fill gr
gs col-1 s gr
% Ellipse
n 784 571 3 3 0 360 DrawEllipse gs 0.00 setgray fill gr
gs col-1 s gr
% Polyline
n 159 99 m 159 279 l gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 179 99 m 179 279 l 179 274 l gs col-1 s gr
% Polyline
n 199 99 m 199 279 l gs col-1 s gr
% Polyline
n 219 99 m 219 279 l gs col-1 s gr
/Helvetica findfont 11.00 scalefont setfont
164 619 m
gs 1 -1 scale (buftype \(all processes\)) dup stringwidth pop neg 0 rmoveto col-1 show gr
% Polyline
n 579 624 m 579 609 l 519 609 l 519 624 l clp gs col-1 s gr
% Polyline
n 519 624 m 519 609 l 499 609 l 499 624 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 499 624 m 499 609 l 439 609 l 439 624 l clp gs col-1 s gr
% Polyline
n 439 624 m 439 609 l 419 609 l 419 624 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 339 69 m 339 144 l gs col-1 s gr
% Polyline
n 359 69 m 359 144 l gs col-1 s gr
% Polyline
n 379 69 m 379 144 l gs col-1 s gr
% Polyline
n 319 84 m 399 84 l gs col-1 s gr
% Polyline
n 319 99 m 399 99 l gs col-1 s gr
% Polyline
n 319 114 m 399 114 l gs col-1 s gr
% Polyline
n 319 129 m 399 129 l gs col-1 s gr
% Polyline
n 319 184 m 399 184 l gs col-1 s gr
% Polyline
n 319 199 m 399 199 l gs col-1 s gr
% Polyline
n 319 214 m 399 214 l gs col-1 s gr
% Polyline
n 319 229 m 399 229 l gs col-1 s gr
% Polyline
n 319 284 m 399 284 l gs col-1 s gr
% Polyline
n 319 299 m 399 299 l gs col-1 s gr
% Polyline
n 319 329 m 399 329 l gs col-1 s gr
% Polyline
n 339 169 m 339 244 l gs col-1 s gr
% Polyline
n 359 169 m 359 244 l gs col-1 s gr
% Polyline
n 379 169 m 379 244 l gs col-1 s gr
% Polyline
n 379 269 m 379 344 l gs col-1 s gr
% Polyline
n 359 269 m 359 344 l gs col-1 s gr
% Polyline
n 339 269 m 339 344 l gs col-1 s gr
% Polyline
n 319 314 m 399 314 l gs col-1 s gr
% Polyline
n 179 434 m 179 419 l 159 419 l 159 434 l clp gs col-1 s gr
% Polyline
n 359 464 m 359 449 l 259 449 l 259 464 l clp gs col-1 s gr
% Polyline
n 459 449 m 459 464 l 359 464 l 359 449 l clp gs col-1 s gr
% Polyline
n 259 479 m 259 494 l 159 494 l 159 479 l clp gs col-1 s gr
% Polyline
n 459 479 m 459 494 l 359 494 l 359 479 l clp gs col-1 s gr
% Polyline
n 259 509 m 259 524 l 159 524 l 159 509 l clp gs col-1 s gr
% Polyline
n 359 509 m 359 524 l 259 524 l 259 509 l clp gs col-1 s gr
% Polyline
n 739 564 m 759 564 l gs col-1 s gr
% Polyline
n 739 579 m 759 579 l gs col-1 s gr
% Polyline
n 419 624 m 419 609 l 359 609 l 359 624 l clp gs col-1 s gr
% Polyline
n 359 624 m 359 609 l 339 609 l 339 624 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 339 624 m 339 609 l 279 609 l 279 624 l clp gs col-1 s gr
% Polyline
n 279 624 m 279 609 l 259 609 l 259 624 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 259 624 m 259 609 l 199 609 l 199 624 l clp gs col-1 s gr
% Polyline
n 199 624 m 199 609 l 179 609 l 179 624 l clp gs 0.85 setgray fill gr
gs col-1 s gr
% Polyline
n 259 464 m 239 464 l 239 449 l 259 449 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 239 464 m 219 464 l 219 449 l 239 449 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 219 464 m 199 464 l 199 449 l 219 449 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 199 464 m 179 464 l 179 449 l 199 449 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 179 464 m 159 464 l 159 449 l 179 449 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 59 579 m 39 579 l 39 564 l 59 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
/Helvetica findfont 11.00 scalefont setfont
139 524 m
gs 1 -1 scale (process 3 filetype) dup stringwidth pop neg 0 rmoveto col-1 show gr
% Polyline
n 79 579 m 59 579 l 59 564 l 79 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 99 579 m 79 579 l 79 564 l 99 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 119 579 m 99 579 l 99 564 l 119 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 139 579 m 119 579 l 119 564 l 139 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 359 579 m 339 579 l 339 564 l 359 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 379 579 m 359 579 l 359 564 l 379 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 399 579 m 379 579 l 379 564 l 399 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 419 579 m 399 579 l 399 564 l 419 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 439 579 m 419 579 l 419 564 l 439 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 659 579 m 639 579 l 639 564 l 659 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 679 579 m 659 579 l 659 564 l 679 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 699 579 m 679 579 l 679 564 l 699 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 719 579 m 699 579 l 699 564 l 719 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 739 579 m 719 579 l 719 564 l 739 564 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 299 494 m 279 494 l 279 479 l 299 479 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 279 494 m 259 494 l 259 479 l 279 479 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 319 494 m 299 494 l 299 479 l 319 479 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 339 494 m 319 494 l 319 479 l 339 479 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 359 494 m 339 494 l 339 479 l 359 479 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 379 524 m 359 524 l 359 509 l 379 509 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 399 524 m 379 524 l 379 509 l 399 509 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 419 524 m 399 524 l 399 509 l 419 509 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 439 524 m 419 524 l 419 509 l 439 509 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 459 524 m 439 524 l 439 509 l 459 509 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 159 579 m 139 579 l 139 564 l 159 564 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 179 579 m 159 579 l 159 564 l 179 564 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 199 579 m 179 579 l 179 564 l 199 564 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 219 579 m 199 579 l 199 564 l 219 564 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 239 579 m 219 579 l 219 564 l 239 564 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 259 579 m 239 579 l 239 564 l 259 564 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 279 579 m 259 579 l 259 564 l 279 564 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 299 579 m 279 579 l 279 564 l 299 564 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 319 579 m 299 579 l 299 564 l 319 564 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 339 579 m 319 579 l 319 564 l 339 564 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 459 579 m 439 579 l 439 564 l 459 564 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 479 579 m 459 579 l 459 564 l 479 564 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 499 579 m 479 579 l 479 564 l 499 564 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 519 579 m 499 579 l 499 564 l 519 564 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 539 579 m 519 579 l 519 564 l 539 564 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 559 579 m 539 579 l 539 564 l 559 564 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 599 579 m 579 579 l 579 564 l 599 564 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 579 579 m 559 579 l 559 564 l 579 564 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 619 579 m 599 579 l 599 564 l 619 564 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Polyline
n 639 579 m 619 579 l 619 564 l 639 564 l clp gs 0.40 setgray fill gr
gs col-1 s gr
% Interpolated spline
n 239 104 m
250.668 101.971 255.668 100.721 259 99 curveto
268.933 93.869 284.450 74.407 294 69 curveto
300.551 65.291 313.415 54.616 324 59 curveto
326.807 60.163 328.057 62.663 329 69 curveto
gs col-1 s gr
n 329.801 60.793 m 329.000 69.000 l 325.844 61.382 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 239 149 m
250.644 148.244 255.644 146.994 259 144 curveto
277.543 127.455 267.799 80.162 289 64 curveto
302.704 53.553 328.391 50.305 344 59 curveto
346.370 60.320 347.620 62.820 349 69 curveto
gs col-1 s gr
n 349.208 60.756 m 349.000 69.000 l 345.305 61.628 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 239 194 m
250.648 192.789 255.648 191.539 259 189 curveto
267.738 182.380 275.372 162.611 279 154 curveto
288.827 130.673 274.667 70.350 309 49 curveto
326.576 38.071 351.215 49.412 364 59 curveto
365.918 60.438 367.168 62.938 369 69 curveto
gs col-1 s gr
n 368.600 60.763 m 369.000 69.000 l 364.771 61.921 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 239 239 m
250.644 238.228 255.644 236.978 259 234 curveto
283.386 212.355 290.390 153.120 299 129 curveto
306.270 108.635 296.232 54.835 329 39 curveto
349.214 29.232 372.340 48.608 384 59 curveto
385.671 60.489 386.921 62.989 389 69 curveto
gs col-1 s gr
n 388.275 60.786 m 389.000 69.000 l 384.495 62.093 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 239 119 m
250.654 121.454 255.654 122.704 259 124 curveto
274.976 130.186 310.971 145.570 324 159 curveto
325.480 160.525 326.730 163.025 329 169 curveto
gs col-1 s gr
n 328.028 160.811 m 329.000 169.000 l 324.289 162.232 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 239 164 m
250.581 164.100 255.581 164.100 259 164 curveto
278.409 163.430 320.511 145.420 344 159 curveto
346.313 160.337 347.563 162.837 349 169 curveto
gs col-1 s gr
n 349.131 160.755 m 349.000 169.000 l 345.236 161.663 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 239 209 m
250.636 206.383 255.636 205.133 259 204 curveto
283.853 195.628 323.491 144.162 364 159 curveto
366.973 160.089 368.223 162.589 369 169 curveto
gs col-1 s gr
n 370.023 160.817 m 369.000 169.000 l 366.052 161.299 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 239 254 m
250.666 252.137 255.666 250.887 259 249 curveto
268.147 243.821 283.511 227.619 289 219 curveto
296.572 207.110 294.164 175.146 309 164 curveto
328.055 149.685 363.140 147.049 384 159 curveto
386.327 160.333 387.577 162.833 389 169 curveto
gs col-1 s gr
n 389.150 160.755 m 389.000 169.000 l 385.253 161.655 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 239 134 m
250.647 135.150 255.647 136.400 259 139 curveto
288.594 161.953 309.637 231.415 324 259 curveto
324.882 260.695 326.132 263.195 329 269 curveto
gs col-1 s gr
n 327.250 260.942 m 329.000 269.000 l 323.663 262.714 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 239 179 m
250.656 180.494 255.656 181.744 259 184 curveto
273.708 193.922 285.963 228.455 299 239 curveto
308.440 246.636 334.739 250.151 344 259 curveto
345.577 260.507 346.827 263.007 349 269 curveto
gs col-1 s gr
n 348.153 260.797 m 349.000 269.000 l 344.393 262.161 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 239 224 m
250.662 226.332 255.662 227.582 259 229 curveto
269.183 233.327 288.080 250.409 299 254 curveto
314.092 258.962 348.484 251.864 364 259 curveto
366.524 260.161 369.024 262.661 374 269 curveto
gs col-1 s gr
n 370.633 261.472 m 374.000 269.000 l 367.487 263.942 l gs 2 setlinejoin col-1 s gr
% Interpolated spline
n 239 269 m
250.469 265.757 255.469 264.507 259 264 curveto
287.568 259.902 349.983 238.905 384 259 curveto
386.280 260.347 387.530 262.847 389 269 curveto
gs col-1 s gr
n 389.086 260.754 m 389.000 269.000 l 385.196 261.684 l gs 2 setlinejoin col-1 s gr
/Helvetica findfont 12.00 scalefont setfont
39 29 m
gs 1 -1 scale (logical view: partition file in row cyclic pattern and transpose) col-1 show gr
/Helvetica findfont 12.00 scalefont setfont
39 399 m
gs 1 -1 scale (implementation using etype, filetypes, and buftypes) col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
119 119 m
gs 1 -1 scale (file structure) dup stringwidth pop neg 0 rmoveto col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
419 84 m
gs 1 -1 scale (process 1 buffer) col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
419 184 m
gs 1 -1 scale (process 2 buffer) col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
419 284 m
gs 1 -1 scale (process 3 buffer) col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
39 554 m
gs 1 -1 scale (actual layout in the file:) col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
139 434 m
gs 1 -1 scale (etype) dup stringwidth pop neg 0 rmoveto col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
139 464 m
gs 1 -1 scale (process 1 filetype) dup stringwidth pop neg 0 rmoveto col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
139 494 m
gs 1 -1 scale (process 2 filetype) dup stringwidth pop neg 0 rmoveto col-1 show gr
$F2psEnd
%%EndDocument
@endspecial 420 1080 a(Figure)16 b(11.3:)i(T)l(ransp)q(osing)e(and)f
(partitioning)h(a)f(2-D)g(matrix)75 1218 y(from)d(that)f(displacemen)o
(t.)21 b(Th)o(us)12 b(if)h(a)f(\014le)i(has)e(t)o(w)o(o)f(segmen)o(ts)h
(that)f(need)j(to)d(b)q(e)j(accessed)f(in)g(di\013eren)o(t)75
1274 y(patterns,)e(the)f(displacemen)o(t)j(for)d(the)g(second)h
(pattern)g(will)h(skip)f(o)o(v)o(er)f(the)h(whole)g(\014rst)f(segmen)o
(t.)18 b(This)75 1331 y(mec)o(hanism)c(is)g(also)f(particularly)i
(useful)f(for)f(handling)i(\014les)f(with)g(some)f(header)h
(information)f(at)g(the)75 1387 y(b)q(eginning)20 b(\(see)d(Figure)h
(11.4\).)25 b(Use)17 b(of)g(\014le)i(headers)f(could)g(allo)o(w)g(the)f
(supp)q(ort)h(of)f(heterogeneous)75 1444 y(en)o(vironmen)o(ts)k(b)o(y)g
(storing)g(a)f(\\standard")g(co)q(di\014cation)j(of)d(the)h(data)g
(represen)o(tations)f(and)i(data)75 1500 y(t)o(yp)q(es)15
b(of)g(the)g(\014le)h(data.)375 1860 y @beginspecial
0 @llx 0 @lly 502 @urx 126 @ury 2880 @rwi @setspecial
%%BeginDocument: figures/io-disp.eps
/$F2psDict 200 dict def
$F2psDict begin
$F2psDict /mtrx matrix put
/l {lineto} bind def
/m {moveto} bind def
/s {stroke} bind def
/n {newpath} bind def
/gs {gsave} bind def
/gr {grestore} bind def
/clp {closepath} bind def
/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
4 -2 roll mul setrgbcolor} bind def
/col-1 {} def
/col0 {0 0 0 setrgbcolor} bind def
/col1 {0 0 1 setrgbcolor} bind def
/col2 {0 1 0 setrgbcolor} bind def
/col3 {0 1 1 setrgbcolor} bind def
/col4 {1 0 0 setrgbcolor} bind def
/col5 {1 0 1 setrgbcolor} bind def
/col6 {1 1 0 setrgbcolor} bind def
/col7 {1 1 1 setrgbcolor} bind def
/col8 {.68 .85 .9 setrgbcolor} bind def
/col9 {0 .39 0 setrgbcolor} bind def
/col10 {.65 .17 .17 setrgbcolor} bind def
/col11 {1 .51 0 setrgbcolor} bind def
/col12 {.63 .13 .94 setrgbcolor} bind def
/col13 {1 .75 .8 setrgbcolor} bind def
/col14 {.7 .13 .13 setrgbcolor} bind def
/col15 {1 .84 0 setrgbcolor} bind def
/DrawEllipse {
/endangle exch def
/startangle exch def
/yrad exch def
/xrad exch def
/y exch def
/x exch def
/savematrix mtrx currentmatrix def
x y translate xrad yrad scale 0 0 1 startangle endangle arc
savematrix setmatrix
} def
end
/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
/$F2psEnd {$F2psEnteredState restore end} def
$F2psBegin
0 setlinecap 0 setlinejoin
-36.0 189.0 translate 0.900 -0.900 scale
% Ellipse
n 574 166 3 3 0 360 DrawEllipse gs 0.00 setgray fill gr
% Ellipse
n 594 166 3 3 0 360 DrawEllipse gs 0.00 setgray fill gr
1.000 setlinewidth
% Polyline
n 579 159 m 39 159 l 39 174 l 579 174 l gs col-1 s gr
0.500 setlinewidth
% Polyline
n 119 209 m 119 179 l gs col-1 s gr
n 117.000 187.000 m 119.000 179.000 l 121.000 187.000 l gs 2 setlinejoin col-1 s gr
% Polyline
n 319 209 m 319 179 l gs col-1 s gr
n 317.000 187.000 m 319.000 179.000 l 321.000 187.000 l gs 2 setlinejoin col-1 s gr
% Polyline
n 159 84 m 139 84 l 139 69 l 159 69 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 199 84 m 179 84 l 179 69 l 199 69 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 239 84 m 219 84 l 219 69 l 239 69 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 279 84 m 259 84 l 259 69 l 279 69 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 319 84 m 299 84 l 299 69 l 319 69 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 199 114 m 139 114 l 139 99 l 199 99 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 319 114 m 259 114 l 259 99 l 319 99 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 139 174 m 119 174 l 119 159 l 139 159 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 179 174 m 159 174 l 159 159 l 179 159 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 219 174 m 199 174 l 199 159 l 219 159 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 259 174 m 239 174 l 239 159 l 259 159 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 299 174 m 279 174 l 279 159 l 299 159 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 379 174 m 319 174 l 319 159 l 379 159 l clp gs 0.90 setgray fill gr
gs col-1 s gr
% Polyline
n 499 174 m 439 174 l 439 159 l 499 159 l clp gs 0.90 setgray fill gr
gs col-1 s gr
0.000 setlinewidth
% Ellipse
n 584 166 3 3 0 360 DrawEllipse gs 0.00 setgray fill gr
0.500 setlinewidth
% Polyline
n 179 84 m 159 84 l 159 69 l 179 69 l clp gs 0.65 setgray fill gr
gs col-1 s gr
/Helvetica findfont 11.00 scalefont setfont
324 204 m
gs 1 -1 scale (second displacement) col-1 show gr
% Polyline
n 219 84 m 199 84 l 199 69 l 219 69 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 259 84 m 239 84 l 239 69 l 259 69 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 299 84 m 279 84 l 279 69 l 299 69 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 339 84 m 319 84 l 319 69 l 339 69 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 259 114 m 199 114 l 199 99 l 259 99 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 379 114 m 319 114 l 319 99 l 379 99 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 159 174 m 139 174 l 139 159 l 159 159 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 199 174 m 179 174 l 179 159 l 199 159 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 239 174 m 219 174 l 219 159 l 239 159 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 279 174 m 259 174 l 259 159 l 279 159 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 319 174 m 299 174 l 299 159 l 319 159 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 439 174 m 379 174 l 379 159 l 439 159 l clp gs 0.65 setgray fill gr
gs col-1 s gr
% Polyline
n 559 174 m 499 174 l 499 159 l 559 159 l clp gs 0.65 setgray fill gr
gs col-1 s gr
/Helvetica findfont 11.00 scalefont setfont
119 84 m
gs 1 -1 scale (first tiling) dup stringwidth pop neg 0 rmoveto col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
119 109 m
gs 1 -1 scale (second tiling) dup stringwidth pop neg 0 rmoveto col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
39 149 m
gs 1 -1 scale (file structure:) col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
79 169 m
gs 1 -1 scale (header) dup stringwidth pop 2 div neg 0 rmoveto col-1 show gr
/Helvetica findfont 11.00 scalefont setfont
124 204 m
gs 1 -1 scale (first displacement) col-1 show gr
$F2psEnd
%%EndDocument
@endspecial 704 1958 a(Figure)g(11.4:)j(Displacemen)o(ts)75
2130 y Fl(11.1.2)49 b(Data)17 b(Access)e(F)o(unctions)75
2215 y Ft(Data)f(is)i(mo)o(v)o(ed)f(b)q(et)o(w)o(een)g(\014les)h(and)g
(pro)q(cesses)f(b)o(y)h(issuing)g(read)f(and)h(write)f(calls.)21
b(There)16 b(are)f(three)75 2272 y(orthogonal)20 b(asp)q(ects)i(to)e
(data)h(access:)32 b(p)q(ositioning)23 b(\(explicit)g(o\013set)d(vs.)38
b(implicit)24 b(\014le)e(p)q(oin)o(ter\),)75 2328 y(sync)o(hronism)14
b(\(blo)q(c)o(king)h(vs.)k(non)o(blo)q(c)o(king\),)c(and)e(co)q
(ordination)i(\(indep)q(enden)o(t)h(vs.)j(collectiv)o(e\).)i(All)75
2385 y(com)o(binations)c(of)f(these)h(data)f(access)g(routines,)h
(including)j(t)o(w)o(o)15 b(t)o(yp)q(es)h(of)g(\014le)i(p)q(oin)o
(ters,)f(individual)75 2441 y(and)e(shared,)g(are)g(pro)o(vided.)-32
46 y Fo(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 Ft(4)1365 b Fk(CHAPTER)15 b(11.)35
b(I/O)p 131 5 1688 2 v 130 62 2 57 v 156 45 a Fn(p)q(ositioning)p
432 62 V 441 62 V 61 w(sync)o(hronism)p 791 62 V 800
62 V 415 w(co)q(ordination)p 1818 62 V 800 63 1019 2
v 130 118 2 57 v 432 118 V 441 118 V 791 118 V 800 118
V 825 101 a Fj(indep)n(endent)p 1234 118 V 198 w(c)n(ol)r(le)n(ctive)p
1818 118 V 131 120 1688 2 v 131 128 V 130 185 2 57 v
156 168 a(explicit)p 432 185 V 441 185 V 169 w(blo)n(cking)p
791 185 V 800 185 V 202 w Ft(MPI)p 917 168 14 2 v 17
w(Read)p 1035 168 V 17 w(explicit)p 1234 185 2 57 v 68
w(MPI)p 1352 168 14 2 v 16 w(Read)p 1469 168 V 17 w(explicit)p
1629 168 V 18 w(all)p 1818 185 2 57 v 130 241 V 156 224
a Fj(o\013sets)p 432 241 V 441 241 V 185 w Ft(\(sync)o(hronous\))p
791 241 V 800 241 V 80 w(MPI)p 917 224 14 2 v 17 w(W)l(rite)p
1045 224 V 16 w(explicit)p 1234 241 2 57 v 59 w(MPI)p
1352 224 14 2 v 16 w(W)l(rite)p 1479 224 V 17 w(explicit)p
1639 224 V 18 w(all)p 1818 241 2 57 v 441 243 1378 2
v 130 297 2 57 v 432 297 V 441 297 V 466 281 a Fj(nonblo)n(cking)p
791 297 V 800 297 V 127 w Ft(MPI)p 917 281 14 2 v 17
w(Iread)p 1036 281 V 16 w(explicit)p 1234 297 2 57 v
68 w(MPI)p 1352 281 14 2 v 16 w(Iread)p 1470 281 V 17
w(explicit)p 1630 281 V 18 w(all)p 1818 297 2 57 v 130
354 V 432 354 V 441 354 V 466 337 a(\(async)o(hronous\))p
791 354 V 800 354 V 57 w(MPI)p 917 337 14 2 v 17 w(Iwrite)p
1051 337 V 17 w(explicit)p 1234 354 2 57 v 52 w(MPI)p
1352 337 14 2 v 16 w(Iwrite)p 1485 337 V 17 w(explicit)p
1645 337 V 18 w(all)p 1818 354 2 57 v 131 356 1688 2
v 130 412 2 57 v 156 395 a Fj(individual)p 432 412 V
441 412 V 116 w(blo)n(cking)p 791 412 V 800 412 V 202
w Ft(MPI)p 917 395 14 2 v 17 w(Read)p 1234 412 2 57 v
228 w(MPI)p 1352 395 14 2 v 16 w(Read)p 1469 395 V 17
w(all)p 1818 412 2 57 v 130 469 V 156 452 a Fj(\014le)16
b(p)n(ointers)p 432 469 V 441 469 V 77 w Ft(\(sync)o(hronous\))p
791 469 V 800 469 V 80 w(MPI)p 917 452 14 2 v 17 w(W)l(rite)p
1234 469 2 57 v 218 w(MPI)p 1352 452 14 2 v 16 w(W)l(rite)p
1479 452 V 17 w(all)p 1818 469 2 57 v 441 470 1378 2
v 130 525 2 57 v 432 525 V 441 525 V 466 508 a Fj(nonblo)n(cking)p
791 525 V 800 525 V 127 w Ft(MPI)p 917 508 14 2 v 17
w(Iread)p 1234 525 2 57 v 227 w(MPI)p 1352 508 14 2 v
16 w(Iread)p 1470 508 V 17 w(all)p 1818 525 2 57 v 130
581 V 432 581 V 441 581 V 466 564 a(\(async)o(hronous\))p
791 581 V 800 581 V 57 w(MPI)p 917 564 14 2 v 17 w(Iwrite)p
1234 581 2 57 v 212 w(MPI)p 1352 564 14 2 v 16 w(Iwrite)p
1485 564 V 17 w(all)p 1818 581 2 57 v 131 583 1688 2
v 130 640 2 57 v 156 623 a Fj(shar)n(e)n(d)p 432 640
V 441 640 V 186 w(blo)n(cking)p 791 640 V 800 640 V 202
w Ft(MPI)p 917 623 14 2 v 17 w(Read)p 1035 623 V 17 w(shared)p
1234 640 2 57 v 82 w(MPI)p 1352 623 14 2 v 16 w(Read)p
1469 623 V 17 w(shared)p 1615 623 V 16 w(ordered)p 1818
640 2 57 v 130 696 V 156 679 a Fj(\014le)g(p)n(ointer)p
432 696 V 441 696 V 96 w Ft(\(sync)o(hronous\))p 791
696 V 800 696 V 80 w(MPI)p 917 679 14 2 v 17 w(W)l(rite)p
1045 679 V 16 w(shared)p 1234 696 2 57 v 73 w(MPI)p 1352
679 14 2 v 16 w(W)l(rite)p 1479 679 V 17 w(shared)p 1625
679 V 16 w(ordered)p 1818 696 2 57 v 441 698 1378 2 v
130 752 2 57 v 432 752 V 441 752 V 466 736 a Fj(nonblo)n(cking)p
791 752 V 800 752 V 127 w Ft(MPI)p 917 736 14 2 v 17
w(Iread)p 1036 736 V 16 w(shared)p 1234 752 2 57 v 82
w(MPI)p 1352 736 14 2 v 16 w(Iread)p 1470 736 V 17 w(shared)p
1616 736 V 16 w(ordered)p 1818 752 2 57 v 130 809 V 432
809 V 441 809 V 466 792 a(\(async)o(hronous\))p 791 809
V 800 809 V 57 w(MPI)p 917 792 14 2 v 17 w(Iwrite)p 1051
792 V 17 w(shared)p 1234 809 2 57 v 66 w(MPI)p 1352 792
14 2 v 16 w(Iwrite)p 1485 792 V 17 w(shared)p 1631 792
V 16 w(ordered)p 1818 809 2 57 v 131 811 1688 2 v 166
899 a(UNIX)g(read\(\))e(and)i(write\(\))e(are)h(blo)q(c)o(king,)h
(indep)q(enden)o(t)i(op)q(erations,)d(and)g(use)h(individual)i(\014le)
75 955 y(p)q(oin)o(ters.)i(The)c Fm(MPI)e Ft(equiv)m(alen)o(ts)j(are)e
Fm(MPI)p 852 955 14 2 v 16 w(READ)h Ft(and)f Fm(MPI)p
1173 955 V 16 w(WRITE)p Ft(.)166 1012 y(Op)q(erations)f(with)g
(explicit)h(o\013sets)d(are)h(describ)q(ed)i(in)f(Section)h(11.3.)j(Op)
q(erations)c(with)f(individ-)75 1068 y(ual)i(\014le)h(p)q(oin)o(ters)g
(are)e(describ)q(ed)j(in)f(Section)g(11.4.)i(And)e(op)q(erations)f
(with)g(shared)g(\014le)h(p)q(oin)o(ters)f(are)75 1124
y(describ)q(ed)i(in)f(Section)g(11.5.)75 1246 y Fl(11.1.3)49
b(P)o(ositioning)75 1332 y Ft(UNIX)19 b(\014le)g(systems)f
(traditionally)i(main)o(tain)f(a)f(system)g(\014le)h(p)q(oin)o(ter)g
(sp)q(ecifying)h(what)e(o\013set)f(will)75 1388 y(b)q(e)k(used)f(for)f
(the)h(read)g(or)f(write)h(op)q(eration.)34 b(The)20
b(problem)h(with)f(this)g(in)o(terface)g(is)h(that)e(it)h(w)o(as)75
1445 y(primarily)f(designed)g(for)e(\014les)h(b)q(eing)h(accessed)f(b)o
(y)f(a)h(single)h(pro)q(cess.)27 b(In)18 b(a)f(parallel)i(en)o
(vironmen)o(t,)75 1501 y(w)o(e)14 b(m)o(ust)f(decide)j(whether)e(a)f
(\014le)i(p)q(oin)o(ter)g(is)f(shared)g(b)o(y)g(m)o(ultiple)i(pro)q
(cesses)e(or)g(if)g(an)g(individual)j(\014le)75 1558
y(p)q(oin)o(ter)d(will)i(b)q(e)f(main)o(tained)g(b)o(y)f(eac)o(h)g(pro)
q(cess.)19 b(In)c(addition,)g(parallel)h(programs)c(do)i(not)g
(generally)75 1614 y(exhibit)19 b(lo)q(calit)o(y)f(of)f(reference)h
(within)g(a)f(\014le)h([)p Fn(?)o Ft(].)26 b(Instead,)18
b(they)f(tend)g(to)g(mo)o(v)o(e)f(b)q(et)o(w)o(een)i(distinct)75
1671 y(non-con)o(tiguous)h(regions)f(of)g(a)g(\014le.)29
b(This)19 b(means)f(that)g(the)g(pro)q(cess)g(m)o(ust)g(seek)g(on)g
(almost)g(ev)o(ery)75 1727 y(read)12 b(or)g(write)g(op)q(eration.)19
b(Moreo)o(v)o(er,)11 b(in)i(m)o(ulti-threaded)h(en)o(vironmen)o(ts)e
(or)g(when)h(p)q(erforming)g(I/O)75 1784 y(async)o(hronously)l(,)k(it)g
(is)g(di\016cult)i(to)d(ensure)h(that)f(the)h(\014le)g(p)q(oin)o(ter)h
(will)g(b)q(e)f(in)h(the)f(correct)f(p)q(osition)75 1840
y(when)g(the)f(read)g(or)g(write)g(o)q(ccurs.)166 1897
y Fm(MPI)23 b Ft(pro)o(vides)i(separate)e(routines)h(for)f(p)q
(ositioning)j(with)e(explicit)i(o\013sets,)f(individual)i(\014le)75
1953 y(p)q(oin)o(ters,)18 b(and)g(shared)g(\014le)g(p)q(oin)o(ters.)28
b(The)17 b(explicit)j(o\013set)d(op)q(erations)g(require)i(the)e(user)h
(to)f(sp)q(ec-)75 2009 y(ify)23 b(an)f(o\013set,)h(and)f(act)g(as)g
(atomic)g(seek-and-read)h(or)f(seek-and-write)h(op)q(erations.)42
b(The)22 b(indi-)75 2066 y(vidual)h(and)f(shared)f(\014le)i(p)q(oin)o
(ter)f(op)q(erations)g(use)g(distinct)h(system)e(main)o(tained)h
(o\013sets)f(for)g(p)q(o-)75 2122 y(sitioning.)36 b(The)21
b(di\013eren)o(t)f(p)q(ositioning)i(metho)q(ds)e(are)g(orthogonal;)i
(they)e(ma)o(y)g(b)q(e)h(mixed)g(within)75 2179 y(the)e(same)f
(program,)h(and)g(they)g(do)g(not)f(a\013ect)g(eac)o(h)h(other.)31
b(In)19 b(other)f(w)o(ords,)h(an)g(individual)j(\014le)75
2235 y(p)q(oin)o(ter's)11 b(v)m(alue)g(will)h(b)q(e)f(unc)o(hanged)h(b)
o(y)e(executing)i(explicit)g(o\013set)e(op)q(erations)g(or)g(shared)h
(\014le)g(p)q(oin)o(ter)75 2292 y(op)q(erations.)41 b(The)22
b(data)f(access)i(routines)f(whic)o(h)h(accept)f(explicit)i(o\013sets)d
(ha)o(v)o(e)p 1580 2292 V 39 w Fm(EXPLICIT)g Ft(ap-)75
2348 y(p)q(ended)f(\(e.g.)29 b Fm(MPI)p 437 2348 V 16
w(XXX)p 543 2348 V 17 w(EXPLICIT)p Ft(\),)17 b(the)i(individual)i
(\014le)f(p)q(oin)o(ter)f(routines)g(ha)o(v)o(e)f(no)g(extension)75
2405 y(app)q(ended)h(\(e.g.)27 b Fm(MPI)p 482 2405 V
16 w(XXX)p Ft(\),)18 b(and)g(the)g(shared)g(\014le)h(p)q(oin)o(ter)f
(routines)h(ha)o(v)o(e)p 1476 2405 V 33 w Fm(SHARED)g
Ft(app)q(ended)75 2461 y(\(e.g.)g Fm(MPI)p 266 2461 V
16 w(XXX)p 372 2461 V 17 w(SHARED)p Ft(\).)c(In)g(order)f(to)g(allo)o
(w)h(the)f(implicit)j(o\013sets)d(to)f(b)q(e)j(set,)e(t)o(w)o(o)f(seek)
i(routines)75 2518 y(are)g(also)g(pro)o(vided)h(\()p
Fm(MPI)p 532 2518 V 16 w(SEEK)f Ft(and)g Fm(MPI)p 844
2518 V 16 w(SEEK)p 971 2518 V 16 w(SHARED)p Ft(\).)166
2574 y(In)e(general,)h(\014le)g(p)q(oin)o(ter)f(op)q(erations)g(ha)o(v)
o(e)g(the)g(same)g(seman)o(tics)g(as)f(explicit)j(o\013set)d(op)q
(erations,)75 2630 y(with)k(the)f Fm(o\013set)g Ft(argumen)o(t)g(set)g
(to)f(the)h(curren)o(t)h(v)m(alue)g(of)f(the)g(system-main)o(tained)h
(\014le)g(p)q(oin)o(ter.)1967 46 y Fo(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(11.1.)34 b(INTR)o(ODUCTION)1278
b Ft(5)75 49 y Fm(Explicit)16 b(O\013sets)75 135 y Ft(There)h(are)g(t)o
(w)o(o)f(\\k)o(eys")g(to)h(describ)q(e)h(lo)q(cations)g(in)g(a)f
(\014le:)25 b(an)17 b Fm(MPI)f Ft(datat)o(yp)q(e)h(and)g(an)g
(o\013set.)25 b Fm(MPI)75 192 y Ft(datat)o(yp)q(es)14
b(are)h(used)h(as)f(templates,)g(tiling)h(the)f(\014le,)h(and)f(an)g
(o\013set)g(determines)h(an)f(initial)i(p)q(osition)75
248 y(for)g(transfers.)26 b(O\013sets)18 b(are)f(expressed)h(as)g(an)f
(in)o(tegral)h(n)o(um)o(b)q(er)g(of)f(elemen)o(tary)h(datat)o(yp)q(e)f
(\()p Fm(et)o(yp)q(e)p Ft(\))75 304 y(items)d(relativ)o(e)h(to)e(the)i
Fm(\014let)o(yp)q(e)p Ft(.)21 b(Holes)14 b(in)h(the)f
Fm(\014let)o(yp)q(e)i Ft(are)e(ignored)g(when)h(calculating)h(the)e(p)q
(osition)75 361 y(of)f(an)h(o\013set)e(\(e.g.)19 b(an)13
b(o\013set)g(of)g(2)g(for)g(pro)q(cess)h(1)f(in)h(Figure)g(11.2)e
(denotes)i(the)g(7th)f Fm(et)o(yp)q(e)i Ft(in)f(the)g(\014le\).)75
417 y(The)j Fm(et)o(yp)q(e)i Ft(argumen)o(t)d(is)i(asso)q(ciated)g
(with)f(a)g(\014le)h(and)g(used)f(to)g(express)h(the)f
Fm(\014let)o(yp)q(e)p Ft(,)i Fm(buft)o(yp)q(e)g Ft(and)75
474 y Fm(o\013set)h Ft(argumen)o(ts.)31 b(Therefore,)20
b(the)g Fm(\014let)o(yp)q(e)h Ft(and)e Fm(buft)o(yp)q(e)i
Ft(datat)o(yp)q(es)e(m)o(ust)g(b)q(e)h(directly)h(deriv)o(ed)75
530 y(from)14 b Fm(et)o(yp)q(e)p Ft(,)i(or)f(their)h(t)o(yp)q(e)f
(signatures)g(m)o(ust)g(b)q(e)h(a)f(m)o(ultiple)i(of)e(the)g
Fm(et)o(yp)q(e)h Ft(signature.)75 650 y Fm(File)f(P)o(ointers)1875
680 y Fp(>)h Fo(\(Oct\))75 736 y Ft(When)j(a)f(\014le)i(is)f(op)q
(ened,)i Fm(MPI)d Ft(creates)g(a)h(set)f(of)g(\014le)i(p)q(oin)o(ters)f
(to)f(k)o(eep)h(trac)o(k)f(of)h(the)f(curren)o(t)h(\014le)75
793 y(p)q(osition.)h(One)13 b(is)g(a)f(global)h(\014le)g(p)q(oin)o
(ter,)g Fj(shar)n(e)n(d)f Ft(b)o(y)g(all)h(the)g(pro)q(cesses)f(in)h
(the)g(comm)o(unicator)f(group.)75 849 y(The)h(others)f(are)h
(individual)j(\014le)d(p)q(oin)o(ters)h(lo)q(cal)f(to)g(eac)o(h)f(pro)q
(cess)h(in)h(the)f(comm)o(unicator)f(group,)h(and)75
905 y(can)k(b)q(e)h(up)q(dated)g Fj(indep)n(endently.)25
b Ft(A)17 b(shared)g(\014le)i(p)q(oin)o(ter)e(only)h(mak)o(es)f(sense)g
(if)h(all)g(the)g(pro)q(cesses)75 962 y(can)h(access)h(the)f(same)g
(data)f(items.)33 b(This)19 b(means)h(that)e(all)i(the)g(pro)q(cesses)f
(should)h(use)g(the)f(same)75 1018 y Fm(\014let)o(yp)q(e)e
Ft(when)e(op)q(ening)i(the)e(\014le.)1211 b Fp(?)16 b
Fo(\(Oct\))166 1075 y Ft(The)e(main)g(seman)o(tic)h(issue)f(with)h
(system-main)o(tained)f(\014le)h(p)q(oin)o(ters)g(is)f(ho)o(w)f(they)i
(are)e(up)q(dated)75 1131 y(b)o(y)18 b(I/O)h(op)q(erations.)29
b(In)19 b(general,)g(eac)o(h)g(I/O)f(op)q(eration)h(lea)o(v)o(es)f(the)
h(\014le)g(p)q(oin)o(ter)g(p)q(oin)o(ting)g(to)f(the)75
1188 y(next)d(data)g(item)g(after)g(the)g(last)g(one)h(that)e(w)o(as)g
(accessed.)166 1244 y(It)h(is)h(p)q(ossible)h(to)d(formalize)i(the)f
(up)q(date)h(pro)q(cedure)g(as)f(follo)o(ws:)189 1359
y Fi(new)p 274 1359 14 2 v 17 w(f)5 b(il)q(e)p 369 1359
V 16 w(position)13 b Ft(=)g Fi(ol)q(d)p 670 1359 V 15
w(position)e Ft(+)906 1329 y Fi(siz)r(e)p Ft(\()p Fi(buf)5
b(ty)r(pe)p Ft(\))10 b Fp(\002)g Fi(buf)5 b(count)p 906
1349 514 2 v 1052 1391 a(siz)r(e)p Ft(\()p Fi(ety)r(pe)p
Ft(\))75 1475 y(where)24 b Fi(buf)5 b(count)23 b Ft(is)h(the)f(n)o(um)o
(b)q(er)h(of)f(elemen)o(ts)h(of)f(t)o(yp)q(e)g Fi(buf)5
b(ty)r(pe)24 b Ft(to)e(b)q(e)i(accessed)g(and)g(where)75
1531 y Fi(siz)r(e)p Ft(\()p Fi(dataty)r(pe)p Ft(\))19
b(giv)o(es)f(the)h(n)o(um)o(b)q(er)g(of)f(b)o(ytes)h(of)f(actual)h
(data)f(\(excluding)i(holes\))f(that)f(comp)q(oses)75
1588 y(the)d Fm(MPI)g Ft(datat)o(yp)q(e)g Fi(dataty)r(pe)p
Ft(.)166 1644 y(Another)j(complication)j(with)d(UNIX)i(I/O)f(op)q
(erations,)g(is)g(that)f(the)h(system-main)o(tained)g(\014le)75
1701 y(p)q(oin)o(ter)c(is)g(normally)f(only)h(up)q(dated)g(when)g(the)g
(op)q(eration)f(completes.)20 b(A)o(t)14 b(that)g(stage,)f(it)h(is)h
(kno)o(wn)75 1757 y(exactly)21 b(ho)o(w)g(m)o(uc)o(h)g(data)f(w)o(as)g
(actually)i(accessed)g(\(whic)o(h)f(can)g(b)q(e)h(di\013eren)o(t)f
(from)g(the)g(amoun)o(t)75 1814 y(requested\),)15 b(and)g(the)h(\014le)
g(p)q(oin)o(ter)g(is)f(up)q(dated)h(b)o(y)f(that)g(amoun)o(t.)620
b Fp(>)16 b Fo(\(Oct\))166 1870 y Ft(F)l(or)g(b)q(oth)h(p)q(erformance)
g(and)g(thread)f(safet)o(y)g(reasons,)g Fm(MPI)h Ft(alw)o(a)o(ys)f(up)q
(dates)h(the)g(\014le)g(p)q(oin)o(ter)75 1927 y(at)g(the)h(outset)g(of)
f(an)h(op)q(eration)g(b)o(y)g(the)g(amoun)o(t)f(of)g(data)h(requested.)
28 b(W)l(aiting)18 b(for)g(an)g(access)g(to)75 1983 y(complete)i(b)q
(efore)g(up)q(dating)g(the)f(\014le)i(p)q(oin)o(ter)e(w)o(ould)h
(restrict)f(the)h(abilit)o(y)g(to)f(initiate)i(additional)75
2039 y(accesses)13 b(b)o(y)g(the)g(same)g(pro)q(cess)g(\(for)f(b)q(oth)
h(t)o(yp)q(es)g(of)g(\014le)h(p)q(oin)o(ters\))f(and)g(b)o(y)g(other)f
(pro)q(cesses)i(\(for)e(the)75 2096 y(shared)j(\014le)h(p)q(oin)o
(ter\).)k(Up)q(dating)c(the)f(\014le)g(p)q(oin)o(ter)h(at)e(the)h
(outset)f(of)h(an)g(op)q(eration)g(yields)h(iden)o(tical)75
2152 y(seman)o(tics)d(to)f(UNIX)i(except)f(in)h(one)f(case:)19
b(reading)13 b(b)q(ey)o(ond)h(the)f(end)g(of)g(\014le.)20
b(In)13 b(all)h(cases,)f(ho)o(w)o(ev)o(er,)75 2209 y(it)i(is)h(more)f
(e\016cien)o(t)h(and)f(pro)o(vides)h(b)q(etter)f(supp)q(ort)g(for)g
(threads.)626 b Fp(?)16 b Fo(\(Oct\))166 2265 y Ft(Although)c
(consisten)o(t,)h(and)f(p)q(oten)o(tially)h(faster,)e(up)q(dating)i
(the)f(\014le)g(p)q(oin)o(ter)h(at)e(the)h(initiation)h(of)75
2322 y(an)g(I/O)h(op)q(eration)f(di\013ers)h(from)e(accepted)i(UNIX)g
(practice,)g(and)g(ma)o(y)e(lead)i(to)f(unexp)q(ected)i(results.)75
2378 y(Consider)h(the)f(follo)o(wing)h(scenario:)266
2484 y Fh(MPI_Iread\(fh,)22 b(buff,)h(buftype,)g(bufcount,)g
(&status\);)266 2541 y(MPI_Iwrite\(fh,)f(buff,)h(buftype,)g(bufcount,)f
(&status\);)166 2647 y Ft(If)g(the)g(\014rst)g(read)g(reac)o(hes)g(the)
g(end)h(of)e(the)i(\014le)g(b)q(efore)f(completing,)j(the)d(\014le)h(p)
q(oin)o(ter)f(will)75 2704 y(b)q(e)g(incremen)o(ted)h(b)o(y)e(the)h
(amoun)o(t)e(of)h(data)g Fj(r)n(e)n(queste)n(d)f Ft(rather)h(than)h
(the)f(amoun)o(t)g(of)g(data)f(read.)-32 46 y Fo(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 Ft(6)1365 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Ft(Therefore,)16 b(the)h(\014le)g(p)q(oin)o(ter)g(will)h
(p)q(oin)o(t)f(b)q(ey)o(ond)g(the)f(curren)o(t)g(end)h(of)f(the)h
(\014le,)g(and)f(the)h(write)f(will)75 106 y(lea)o(v)o(e)f(a)g(hole)h
(in)g(the)f(\014le.)21 b(Ho)o(w)o(ev)o(er,)14 b(suc)o(h)h(a)g(problem)h
(only)g(o)q(ccurs)f(if)h(reads)f(and)g(writes)g(are)g(mixed)75
162 y(without)g(c)o(hec)o(king)h(for)f(the)g(end)h(of)f(the)g(\014le.)
75 284 y Fl(11.1.4)49 b(Synchronism)75 370 y Ft(The)20
b(explicit)i(o)o(v)o(erlap)d(of)g(computation)h(with)g(I/O,)g(hop)q
(efully)h(impro)o(ving)g(p)q(erformance,)f(is)g(sup-)75
426 y(p)q(orted)13 b(through)f(the)h(use)g(of)g(non)o(blo)q(c)o(king)h
(data)e(access)h(routines.)19 b(Both)13 b(blo)q(c)o(king)h(and)f(non)o
(blo)q(c)o(king)75 483 y(v)o(ersions)h(of)g(all)h(data)e(access)h
(routines)g(are)g(supp)q(orted.)20 b(The)14 b(non)o(blo)q(c)o(king)i(v)
o(ersions)e(of)f(the)i(routines)75 539 y(are)g(named)g
Fm(MPI)p 382 539 14 2 v 16 w(IXXX)p Ft(,)g(where)h(the)f
Fm(I)g Ft(stands)g(for)f(immediate.)166 596 y(A)j Fj(blo)n(cking)e
Ft(I/O)j(call)g(will)g(blo)q(c)o(k)g(un)o(til)g(the)f(I/O)g(request)g
(is)h(completed.)26 b(A)17 b Fj(nonblo)n(cking)e Ft(I/O)75
652 y(call)f(only)f(initiates)h(an)f(I/O)g(op)q(eration,)g(but)g(do)q
(es)g(not)f(w)o(ait)h(for)f(it)h(to)f(complete.)20 b(A)12
b(separate)h Fj(r)n(e)n(quest)75 708 y(c)n(omplete)18
b Ft(call)h(\()p Fm(MPI)p 453 708 V 15 w(W)l(AIT)p Ft(,)f
Fm(MPI)p 694 708 V 15 w(TEST)p Ft(,)g(or)g(an)o(y)f(of)h(their)g(v)m
(arian)o(ts\))f(is)i(needed)g(to)e(complete)i(the)75
765 y(I/O)e(request,)g(i.e.,)h(to)e(certify)h(that)f(data)h(has)g(b)q
(een)h(read/written,)f(and)g(it)g(is)g(safe)g(for)f(the)h(user)h(to)75
821 y(reuse)d(the)g(bu\013er.)20 b(With)15 b(suitable)i(hardw)o(are,)d
(the)h(transfer)f(of)g(data)h(out/in)g(the)g(user's)g(bu\013er)g(ma)o
(y)75 878 y(pro)q(ceed)h(concurren)o(tly)g(with)f(computation.)166
934 y(Note)f(that)f(just)h(b)q(ecause)i(a)e(non)o(blo)q(c)o(king)h
(\(or)f(blo)q(c)o(king\))h(data)f(access)g(routine)h(completes)g(do)q
(es)75 991 y(not)g(mean)h(that)f(the)h(data)f(is)h(actually)h(written)f
(to)f(\\p)q(ermanen)o(t")g(storage.)20 b(All)e(of)d(the)h(data)f
(access)75 1047 y(routines)22 b(ma)o(y)g(bu\013er)g(data)f(to)h(impro)o
(v)o(e)g(p)q(erformance.)40 b(The)23 b(only)f(w)o(a)o(y)f(to)h(guaran)o
(tee)f(data)g(is)75 1104 y(actually)16 b(written)f(to)g(storage)e(is)j
(b)o(y)f(using)h(the)f Fm(MPI)p 1010 1104 V 16 w(FILE)p
1117 1104 V 16 w(SYNC)h Ft(call.)21 b(Ho)o(w)o(ev)o(er,)13
b(one)j(need)g(not)e(b)q(e)75 1160 y(concerned)i(with)e(the)h(con)o(v)o
(erse)f(problem|once)i(a)e(read)h(op)q(eration)f(completes,)h(the)g
(data)f(is)h(alw)o(a)o(ys)75 1217 y(a)o(v)m(ailable)i(in)f(the)f
(user's)g(bu\013er.)75 1338 y Fl(11.1.5)49 b(Co)q(o)o(rdination)75
1424 y Ft(Global)21 b(data)f(accesses)g(ha)o(v)o(e)g(signi\014can)o(t)h
(p)q(oten)o(tial)g(for)f(automatic)g(optimization,)i(pro)o(vided)f(the)
75 1481 y(I/O)d(system)f(can)h(recognize)h(an)f(op)q(eration)f(as)h(a)f
(global)h(access.)28 b(Collectiv)o(e)19 b(op)q(erations)f(are)f(used)75
1537 y(for)e(this)i(purp)q(ose.)22 b Fm(MPI)15 b Ft(supp)q(orts)h(b)q
(oth)g(indep)q(enden)o(t)j(and)d(collectiv)o(e)h(v)o(ersions)f(of)g
(all)h(data)e(access)75 1593 y(routines.)39 b(Ev)o(ery)21
b(indep)q(enden)o(t)i(data)e(access)h(routine)f Fm(MPI)p
1184 1593 V 16 w(XXX)h Ft(has)g(a)f(collectiv)o(e)i(coun)o(terpart)75
1650 y Fm(MPI)p 160 1650 V 16 w(XXX)p 266 1650 V 17 w(ALL)p
Ft(,)17 b(where)p 527 1650 V 35 w Fm(ALL)g Ft(means)h(that)f(\\all")i
(pro)q(cesses)f(in)h(the)f(comm)o(unicator)f(group)h(whic)o(h)75
1706 y(op)q(ened)e(the)g(\014le)g(m)o(ust)e(participate.)166
1763 y(Indep)q(enden)o(t)23 b(calls)f(do)f(not)f(imply)j(an)o(y)d(co)q
(ordination)i(among)e(pro)q(cesses.)38 b(Collectiv)o(e)22
b(calls)75 1819 y(imply)g(that)e(all)i(pro)q(cesses)f(b)q(elonging)h
(to)e(the)h(comm)o(unicator)f(asso)q(ciated)h(with)g(the)g(op)q(ened)h
(\014le)75 1876 y(m)o(ust)12 b(participate.)20 b(Ho)o(w)o(ev)o(er,)12
b(no)h(sync)o(hronization)g(pattern)g(b)q(et)o(w)o(een)g(those)f(pro)q
(cesses)i(is)f(enforced.)-117 1932 y Fp(>)i Fo(\(Oct\))-117
1991 y Fp(?)g Fo(\(Oct\))166 1989 y Ft(An)i Fj(indep)n(endent)e
Ft(I/O)h(request)h(is)g(a)f(request)g(whic)o(h)h(is)g(executed)g
(individual)q(ly)j(b)o(y)c(an)o(y)g(of)g(the)75 2045
y(pro)q(cesses)21 b(within)i(a)e(comm)o(unicator)f(group.)38
b(A)21 b Fj(c)n(ol)r(le)n(ctive)e Ft(I/O)j(request)f(is)h(a)e(request)i
(whic)o(h)f(is)75 2102 y(executed)15 b(b)o(y)e Fj(al)r(l)h
Ft(pro)q(cesses)g(within)g(a)g(comm)o(unicator)f(group.)19
b(The)14 b(completion)h(of)e(an)h(indep)q(enden)o(t)75
2158 y(call)j(only)g(dep)q(ends)h(on)e(the)h(activit)o(y)f(of)g(the)h
(calling)h(pro)q(cess.)23 b(On)17 b(the)g(other)f(hand,)g(a)g(pro)q
(cess)h(can)75 2214 y(\(but)k(is)g(not)f(required)i(to\))e(return)h
(from)f(a)g(collectiv)o(e)j(call)f(as)e(so)q(on)h(as)f(its)h
(participation)h(in)g(the)75 2271 y(collectiv)o(e)e(op)q(eration)e(is)g
(completed.)30 b(The)18 b(completion)h(of)f(the)g(call,)h(ho)o(w)o(ev)o
(er,)f(do)q(es)g(not)f(indicate)75 2327 y(that)e(other)h(pro)q(cesses)h
(ha)o(v)o(e)e(completed)i(or)f(ev)o(en)h(started)e(the)h(I/O)h(op)q
(eration.)22 b(Th)o(us,)16 b(a)g(collectiv)o(e)75 2384
y(call)g(ma)o(y)l(,)f(or)f(ma)o(y)h(not,)f(ha)o(v)o(e)h(the)g(e\013ect)
g(of)g(sync)o(hronizing)i(all)f(calling)h(pro)q(cesses.)166
2440 y(F)l(rom)c(a)g(seman)o(tic)i(viewp)q(oin)o(t,)f(the)g(only)h
(di\013erence)g(b)q(et)o(w)o(een)f(collectiv)o(e)h(op)q(erations)f(and)
g(their)75 2497 y(indep)q(enden)o(t)25 b(coun)o(terparts)d(is)h(p)q
(oten)o(tial)g(sync)o(hronization.)43 b(F)l(rom)21 b(a)i(p)q
(erformance)f(viewp)q(oin)o(t,)75 2553 y(ho)o(w)o(ev)o(er,)14
b(collectiv)o(e)j(op)q(erations)e(ha)o(v)o(e)g(the)g(p)q(oten)o(tial)h
(to)e(b)q(e)i(m)o(uc)o(h)f(faster)f(than)h(their)h(indep)q(enden)o(t)75
2610 y(coun)o(terparts.)-455 b Fp(>)15 b Fo(\(Oct\))-117
2668 y Fp(?)g Fo(\(Oct\))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
%%Page: 7 9
7 8 bop 75 -100 a Fk(11.1.)34 b(INTR)o(ODUCTION)1278
b Ft(7)75 49 y Fl(11.1.6)49 b(End)17 b(of)f(File)75 182
y Fg(Discussion:)f Ff(A)f(re\014ned)i(de\014nition)d(of)g(EOF)i(has)f
(y)o(et)g(to)g(b)q(e)g(added...an)o(y)f(v)o(olun)o(teers?)166
286 y Ft(Unlik)o(e)g(UNIX)g(\014les,)g(the)f(end)h(of)f(\014le)h(is)f
(not)g(absolute)g(and)h(iden)o(tical)g(for)f(all)h(pro)q(cesses)f
(accessing)75 342 y(the)j(\014le.)21 b(It)15 b(dep)q(ends)i(on)e(the)g
(\014let)o(yp)q(e)h(used)g(to)f(access)g(the)g(\014le)h(and)g(is)f
(de\014ned)i(for)d(a)h(giv)o(en)h(pro)q(cess)75 399 y(as)h(the)g(lo)q
(cation)h(of)f(the)g(b)o(yte)g(follo)o(wing)h(the)f(last)g(elemen)o
(tary)g(datat)o(yp)q(e)g(item)h(accessible)h(b)o(y)e(that)75
455 y(pro)q(cess)d(\(excluding)i(the)d(holes\).)20 b(It)14
b(ma)o(y)f(happ)q(en)i(that)e(data)g(is)h(lo)q(cated)h(b)q(ey)o(ond)f
(the)g(end)g(of)g(\014le)h(for)75 512 y(a)g(giv)o(en)h(pro)q(cess.)k
(This)15 b(data)g(is)h(accessible)h(only)f(b)o(y)f(other)f(pro)q
(cesses.)166 568 y(When)d(a)f(\014le)i(gro)o(ws,)e(b)q(ecause)h(of)f
(more)g(data)g(b)q(eing)i(written)f(to)f(the)g(\014le)i(or)e(the)h
(\014le)g(b)q(eing)h(resized,)75 625 y(the)k(end)h(of)f(\014le)i(of)e
(all)h(pro)q(cesses)g(accessing)g(the)f(\014le)i(ma)o(y)d(c)o(hange,)i
(and)f(data)g(no)o(w)g(accessible,)i(but)75 681 y(not)d(y)o(et)g
(written)g(b)o(y)g(an)o(y)g(of)g(these)g(pro)q(cesses,)g(will)i(b)q(e)f
(read)f(as)g(zero)q(es.)520 b Fp(>)16 b Fo(\(Oct\))75
803 y Fl(11.1.7)49 b(Progress)16 b(Rules)75 889 y Ft(The)h(progress)g
(rules)g(of)g Fm(MPI)f Ft(are)h(b)q(oth)g(a)g(promise)g(to)g(users,)g
(and)g(a)g(set)f(of)h(constrain)o(ts)f(on)h(imple-)75
945 y(men)o(tors.)28 b(In)18 b(cases)g(where)h(the)f(progress)f(rules)i
(restrict)f(p)q(ossible)i(implemen)o(tation)f(c)o(hoices)g(more)75
1002 y(than)c(the)g(in)o(terface)h(sp)q(eci\014cation)h(alone,)e(the)h
(progress)e(rules)i(tak)o(e)e(precedence.)166 1058 y(All)f(blo)q(c)o
(king)h(routines)e(m)o(ust)f(complete)i(in)g(\014nite)g(time)f(unless)h
(an)f(exceptional)i(condition)f(\(suc)o(h)75 1115 y(as)i(resource)g
(exhaustion\))h(causes)f(an)g(error.)166 1171 y(Non)o(blo)q(c)o(king)g
(data)e(access)g(functions)i(inherit)g(the)e(follo)o(wing)i(progress)d
(rule)j(from)e(non)o(blo)q(c)o(king)75 1227 y(p)q(oin)o(t)j(to)e(p)q
(oin)o(t)i(comm)o(unication:)21 b(a)14 b(non)o(blo)q(c)o(king)j(write)e
(is)h(equiv)m(alen)o(t)h(to)d(a)h(non)o(blo)q(c)o(king)i(send)f(for)75
1284 y(whic)o(h)f(a)f(receiv)o(e)i(is)f(ev)o(en)o(tually)g(p)q(osted,)g
(and)f(a)g(non)o(blo)q(c)o(king)i(read)f(is)g(equiv)m(alen)o(t)h(to)d
(a)i(non)o(blo)q(c)o(king)75 1340 y(receiv)o(e)22 b(for)f(whic)o(h)i(a)
e(send)h(is)g(ev)o(en)o(tually)h(p)q(osted.)39 b(Simply)23
b(put,)g(all)f(non)o(blo)q(c)o(king)h(data)e(access)75
1397 y(routines)16 b(m)o(ust)e(complete)i(in)h(\014nite)f(time)g(with)f
(no)g(further)h(user)f(action)g(\(mo)q(dulo)h(error)f(conditions)75
1453 y(suc)o(h)23 b(as)f(resource)h(exhaustion\).)43
b(In)24 b(particular,)g(an)f(implemen)o(tation)h(cannot)f(dep)q(end)h
(on)f(the)75 1510 y(calling)h(of)e(an)o(y)g Fm(MPI)g
Ft(routines)h(\(including)i Fm(MPI)p 971 1510 14 2 v
15 w(W)l(AIT)p Ft(,)d Fm(MPI)p 1216 1510 V 16 w(TEST)p
Ft(,)g Fm(MPI)p 1463 1510 V 16 w(FINALIZE)p Ft(,)f(etc.\))42
b(to)75 1566 y(mak)o(e)17 b(progress.)26 b(F)l(or)17
b(example,)i(data)d(m)o(ust)h(ev)o(en)o(tually)i(b)q(e)f(written)g(to)e
(disk)j(giv)o(en)f(the)f(follo)o(wing)75 1623 y(co)q(de)f(fragmen)o(t:)
266 1716 y Fh(MPI_Iwrite\(fh,)22 b(&buf[0],)h(MPI_CHAR,)f
(sizeof\(buf\),)g(&req\))266 1773 y(for)h(\(;;\))457
1829 y(continue;)166 1923 y Ft(F)l(or)14 b(the)g(non)o(blo)q(c)o(king)i
(\014le)g(manipulation)g(routines)f(\()p Fm(MPI)p 1203
1923 V 15 w(IOPEN)g Ft(and)g Fm(MPI)p 1537 1923 V 16
w(ICLOSE)p Ft(\),)f(an)g(im-)75 1980 y(plemen)o(tation)h(is)g(free)f
(to)g(dela)o(y)h(progress)e(un)o(til)j(the)e(request)h(asso)q(ciated)f
(with)h(the)f(non)o(blo)q(c)o(king)i(\014le)75 2036 y(manipulation)h
(routine)e(is)h(tested)f(or)g(w)o(aited)g(up)q(on)h(\(e.g.)j(b)o(y)c(a)
g(call)h(to)f Fm(MPI)p 1436 2036 V 16 w(TEST)p Ft(\).)189
2142 y Fj(R)n(ationale.)39 b Ft(The)14 b(less)g(stringen)o(t)g
(progress)f(rule)i(for)e Fm(MPI)p 1213 2142 V 15 w(IOPEN)i
Ft(and)f Fm(MPI)p 1546 2142 V 15 w(ICLOSE)g Ft(p)q(ermits)189
2199 y(the)d(optimization)h(of)f(\014le)h(staging.)19
b(F)l(or)10 b(example,)j(an)e(implemen)o(tation)h(can)g(bundle)h(n)o
(umerous)189 2255 y(op)q(en)k(op)q(erations)g(in)o(to)g(a)g(single)h
(request,)f(allo)o(wing)g(the)g(mass)g(storage)e(system)i(to)f(stage)g
(\014le)189 2312 y(in)g(from)e(tap)q(e)h(sim)o(ultaneously)l(.)22
b(\()p Fj(End)15 b(of)i(r)n(ationale.)p Ft(\))1875 2373
y Fp(?)f Fo(\(Oct\))75 2483 y Fl(11.1.8)49 b(Logical)19
b(vs.)i(Physical)c(File)g(La)o(y)o(out)1875 2522 y Fp(>)f
Fo(\(Oct\))75 2569 y Ft(The)21 b(basic)g(access)g(routines)g(only)g(sp)
q(ecify)g(ho)o(w)f(the)h(data)f(should)h(b)q(e)g(laid)h(out)e(in)i(a)e
(virtual)h(\014le)75 2626 y(structure)d(\(the)g(\014let)o(yp)q(e\),)i
(not)d(ho)o(w)h(that)g(\014le)h(structure)f(is)h(to)f(b)q(e)h(stored)e
(on)i(one)f(or)g(more)g(disks.)75 2682 y(Sp)q(eci\014cation)25
b(of)d(the)h(ph)o(ysical)h(\014le)g(structure)e(w)o(as)g(a)o(v)o(oided)
h(b)q(ecause)h(it)f(is)g(exp)q(ected)h(that)e(the)-32
46 y Fo(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 Ft(8)1365 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Ft(mapping)19 b(of)g(\014les)g(to)g(disks)g(will)h(b)q(e)
g(system)e(sp)q(eci\014c,)j(and)e(an)o(y)g(sp)q(eci\014c)h(con)o(trol)f
(o)o(v)o(er)f(\014le)i(la)o(y)o(out)75 106 y(w)o(ould)h(therefore)g
(restrict)g(program)f(p)q(ortabilit)o(y)l(.)38 b(Ho)o(w)o(ev)o(er,)21
b(there)g(are)g(still)h(cases)f(where)g(some)75 162 y(information)13
b(will)i(b)q(e)f(necessary)f(in)h(order)f(to)g(optimize)h(disk)g(la)o
(y)o(out.)k(This)c(information)f(is)h(pro)o(vided)75
219 y(as)d Fj(hints)h Ft(\(sp)q(eci\014ed)h(via)f Fm(info)g
Ft(when)g(a)g(\014le)h(is)f(created\).)18 b(Hin)o(ts)13
b(are)e(advisory)h(only)l(,)h(and)f(do)f(not)h(c)o(hange)75
275 y(the)i(seman)o(tics)h(of)f(an)o(y)g(routines.)20
b(Instead,)14 b(they)g(allo)o(w)h(sp)q(eci\014c)h(implemen)o(tations)g
(to)d(increase)j(I/O)75 332 y(p)q(erformance.)166 388
y(The)d(structure)g(of)f(a)h(\014le)h(created)f(using)g
Fm(MPI)g Ft(is)g(implemen)o(tation)h(dep)q(enden)o(t.)21
b(In)14 b(other)e(w)o(ords,)75 444 y(an)k Fm(MPI)g Ft(\014le)h(need)g
(not)f(b)q(e)h(iden)o(tical)h(to)e(a)g(UNIX)h(\014le;)g(an)f(implemen)o
(tation)i(ma)o(y)d(c)o(ho)q(ose)i(to)e(create)75 501
y(\014les)20 b(in)g(an)o(y)e(w)o(a)o(y)g(for)h(b)q(etter)g(p)q
(erformance.)31 b(Ho)o(w)o(ev)o(er,)18 b(the)i(implemen)o(tation)g(m)o
(ust)e(sp)q(ecify)i(ho)o(w)75 557 y(familiar)f(op)q(erations)f(equiv)m
(alen)o(t)h(to)f(UNIX)g Fh(ls)p Ft(,)g Fh(cp)p Ft(,)g
Fh(rm)p Ft(,)g Fh(mv)p Ft(,)f(etc.)h(can)g(b)q(e)g(p)q(erformed)h(on)e
(the)h(\014le,)75 614 y(and)d(ho)o(w)g(the)g(\014le)i(can)e(b)q(e)h
(con)o(v)o(erted)f(in)o(to)g(a)g(linear)h(sequence)h(of)d(b)o(ytes)h
(and)h(vice-v)o(ersa.)-1788 b Fp(?)15 b Fo(\(Oct\))75
734 y Fl(11.1.9)49 b(File)17 b(Interop)q(erabilit)o(y)75
820 y Ft(A)o(t)c(the)g(most)f(basic)i(lev)o(el,)g(\014le)h(in)o(terop)q
(erabilit)o(y)f(is)g(the)f(abilit)o(y)i(to)d(read)h(the)g(information)h
(previously)75 877 y(written)d(to)f(a)g(\014le|not)i(just)e(the)h(bits)
g(of)f(data,)h(but)g(the)g(actual)f(information)h(the)g(bits)g
(represen)o(t.)19 b Fm(MPI)75 933 y Ft(guaran)o(tees)f(full)j(in)o
(terop)q(erabilit)o(y)g(within)f(a)f(single)h Fm(MPI)e
Ft(en)o(vironmen)o(t,)i(and)g(supp)q(orts)f(increased)75
990 y(in)o(terop)q(erabilit)o(y)e(outside)f(that)e(en)o(vironmen)o(t)i
(via)f(\015ags)g(to)g Fm(MPI)p 1232 990 14 2 v 15 w(OPEN)p
Ft(.)166 1046 y(In)o(terop)q(erabilit)o(y)21 b(within)f(a)g(single)g
Fm(MPI)f Ft(en)o(vironmen)o(t)h(\(whic)o(h)g(could)g(b)q(e)g
(considered)h(\\op)q(er-)75 1103 y(abilit)o(y"\))c(ensures)h(that)e
(\014le)i(data)e(written)h(b)o(y)g(one)g Fm(MPI)f Ft(pro)q(cess)h(can)g
(b)q(e)h(read)f(b)o(y)g(an)o(y)f(other)h Fm(MPI)75 1159
y Ft(pro)q(cess)i(sub)s(ject)f(to)g(the)g(consistency)i(constrain)o(ts)
d(\(see)i(section)g(11.2.8\))d(pro)o(vided)j(that)f(it)h(w)o(ould)75
1215 y(ha)o(v)o(e)h(b)q(een)h(p)q(ossible)h(to)d(start)g(the)h(t)o(w)o
(o)f(pro)q(cesses)i(sim)o(ultaneously)g(and)f(ha)o(v)o(e)g(them)g
(reside)h(in)g(a)75 1272 y(single)c Fe(MPI)p 279 1272
13 2 v 14 w(COMM)p 423 1272 V 15 w(W)o(ORLD)p Ft(.)e(F)l(urther,)g(b)q
(oth)h(pro)q(cesses)g(m)o(ust)f(see)h(the)f(same)g(data)g(v)m(alues)i
(at)e(ev)o(ery)75 1328 y(absolute)h(b)o(yte)f(o\013set)f(in)i(the)f
(\014le)h(for)f(whic)o(h)h(data)e(w)o(as)h(written.)166
1385 y(This)f(single)h(en)o(vironmen)o(t)f(\014le)h(in)o(terop)q
(erabilit)o(y)g(implies)h(that)d(\014le)h(data)f(is)h(accessible:)21
b(regard-)75 1441 y(less)e(of)g(the)f(n)o(um)o(b)q(er)h(of)g(pro)q
(cesses,)g(the)g(\014le)h(view,)g(and)e(in)i(cases)f(where)g
(heterogeneous)f(message)75 1498 y(passing)k(is)h(supp)q(orted,)g
(regardless)f(of)g(the)g(hardw)o(are)f(arc)o(hitecture.)40
b(It)22 b(should)h(b)q(e)g(noted)f(that)75 1554 y(without)16
b(single)h(en)o(vironmen)o(t)f(\014le)g(in)o(terop)q(erabilit)o(y)l(,)i
(the)e(I/O)g(facilities)i(in)e Fm(MPI)f Ft(w)o(ould)h(b)q(e)h(next)f
(to)75 1611 y(useless.)166 1667 y(There)f(are)g(three)h(asp)q(ects)f
(to)f(\014le)j(in)o(terop)q(erabilit)o(y)g(outside)e(of)g(a)g(single)i
(en)o(vironmen)o(t:)143 1755 y Fp(\017)23 b Ft(transferring)14
b(the)i(bits,)143 1847 y Fp(\017)23 b Ft(con)o(v)o(erting)15
b(b)q(et)o(w)o(een)g(di\013eren)o(t)h(\014le)g(structures,)e(and)143
1938 y Fp(\017)23 b Ft(con)o(v)o(erting)15 b(b)q(et)o(w)o(een)g
(di\013eren)o(t)h(mac)o(hine)g(represen)o(tations.)166
2026 y(The)g(\014rst)g(t)o(w)o(o)f(asp)q(ects)h(of)g(\014le)h(in)o
(terop)q(erabilit)o(y)h(are)e(b)q(ey)o(ond)h(the)f(scop)q(e)g(of)g
(this)h(standard,)e(as)75 2083 y(b)q(oth)j(are)g(highly)h(mac)o(hine)g
(dep)q(enden)o(t.)30 b(Ho)o(w)o(ev)o(er,)17 b(transferring)h(the)g
(bits)g(of)g(a)f(\014le)i(in)o(to)f(and)g(out)75 2139
y(of)i(the)h Fm(MPI)f Ft(en)o(vironmen)o(t)h(\(e.g.)35
b(b)o(y)20 b(writing)h(a)f(\014le)i(to)e(tap)q(e\))g(is)h(required)h
(to)e(b)q(e)h(supp)q(orted)g(b)o(y)75 2195 y(all)e Fm(MPI)e
Ft(implemen)o(tations.)29 b(F)l(urther,)17 b(it)h(is)h(exp)q(ected)g
(that)e(the)g(facilit)o(y)i(pro)o(vided)g(main)o(tains)f(the)75
2252 y(corresp)q(ondence)g(b)q(et)o(w)o(een)f(absolute)g(b)o(yte)f
(o\013sets)g(\(e.g.)23 b(after)16 b(p)q(ossible)i(\014le)g(structure)e
(con)o(v)o(ersion,)75 2308 y(the)h(data)f(bits)h(at)f(b)o(yte)g
(o\013set)g(102)f(in)j(the)f Fm(MPI)f Ft(en)o(vironmen)o(t)h(are)f(at)g
(b)o(yte)g(o\013set)g(102)g(outside)h(the)75 2365 y Fm(MPI)e
Ft(en)o(vironmen)o(t\).)22 b(As)16 b(an)f(example,)i(a)e(simple)i
(o\013-line)g(con)o(v)o(ersion)f(utilit)o(y)h(whic)o(h)g(transfers)e
(and)75 2421 y(con)o(v)o(erts)10 b(\014les)h(b)q(et)o(w)o(een)g(the)f
(nativ)o(e)g(\014le)i(system)e(and)g(the)h Fm(MPI)e Ft(en)o(vironmen)o
(t)i(w)o(ould)g(su\016ce,)g(pro)o(vided)75 2478 y(it)22
b(main)o(tained)g(the)g(o\013set)e(coherence)i(men)o(tioned)h(ab)q(o)o
(v)o(e.)38 b(A)21 b(high)i(qualit)o(y)f(implemen)o(tation)g(of)75
2534 y Fm(MPI)17 b Ft(will)j(pro)o(vide)e(an)g(o\013set-coheren)o(t,)g
(nativ)o(e)g(\014le)h(in)o(terface)f(to)f(the)h(\014les)h(con)o(tained)
g(in)g(the)f Fm(MPI)75 2591 y Ft(en)o(vironmen)o(t.)166
2647 y(The)23 b(remaining)h(asp)q(ect)e(of)h(\014le)g(in)o(terop)q
(erabilit)o(y)l(,)k(con)o(v)o(erting)22 b(b)q(et)o(w)o(een)h
(di\013eren)o(t)g(mac)o(hine)75 2704 y(represen)o(tations,)h(is)f(not)f
(only)h(desired,)i(but)e(also)g(w)o(ell-supp)q(orted)h(b)o(y)e(the)h(t)
o(yping)g(information)1967 46 y Fo(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(11.1.)34 b(INTR)o(ODUCTION)1278
b Ft(9)75 49 y(sp)q(eci\014ed)17 b(in)e(the)f Fm(et)o(yp)q(e)i
Ft(and)e Fm(\014let)o(yp)q(e)p Ft(s.)21 b(This)15 b(facilit)o(y)h(allo)
o(ws)e(the)h(information)f(in)i(\014les)f(to)f(b)q(e)h(shared)75
106 y(b)q(et)o(w)o(een)k(an)o(y)f(t)o(w)o(o)g(applications,)j
(regardless)e(of)f(whether)h(they)g(use)g Fm(MPI)p Ft(,)f(and)h
(regardless)g(of)f(the)75 162 y(mac)o(hine)e(arc)o(hitectures)f(on)h
(whic)o(h)g(they)f(run.)976 b Fp(>)16 b Fo(\(Oct\))166
219 y Fm(MPI)f Ft(supp)q(orts)g(three)h(data)f(formats:)k(nativ)o(e,)c
(in)o(ternal,)h(and)g(XDR.)f(The)h(nativ)o(e)f(and)h(in)o(ternal)75
275 y(data)j(formats)g(are)h(implemen)o(tation)h(dep)q(enden)o(t,)h
(while)g(the)e(XDR)g(format)f(is)i(\\common")e(to)g(all)75
332 y Fm(MPI)14 b Ft(implemen)o(tations)i(and)f(facilitates)g(\014le)h
(in)o(terop)q(erabilit)o(y)l(.)22 b(The)15 b(data)f(mo)q(de)g(is)i(sp)q
(eci\014ed)g(in)g(the)75 388 y Fm(amo)q(de)f Ft(argumen)o(t)f(when)i(a)
f(\014le)h(is)g(op)q(ened.)189 494 y Fj(A)n(dvic)n(e)c(to)h(users.)38
b Fm(MPI)11 b Ft(do)q(es)i(not)e(supp)q(ort)h(self-describing)j
(\014les)d(\(e.g.)18 b(HDF\),)11 b(and)h(retains)g(no)189
551 y(kno)o(wledge)j(of)g(the)g(data)g(mo)q(de)g(used)h(during)g
(\014le)g(creation.)k(Therefore,)15 b(an)g Fm(MPI)f Ft(application)189
607 y(is)f(resp)q(onsible)h(for)e(sp)q(ecifying)i(the)f(same)f(data)g
(mo)q(de)g(on)h(eac)o(h)f(\014le)i(op)q(en)f(in)g(order)f(to)g
(correctly)189 664 y(retriev)o(e)j(the)g(\014le)i(data.)i(\()p
Fj(End)c(of)i(advic)n(e)f(to)g(users.)p Ft(\))75 770
y Fe(MPI)p 152 770 13 2 v 14 w(D)o(A)m(T)m(A)p 273 770
V 14 w(NA)m(TIVE)21 b Ft(This)f(mo)q(de)f(states)f(that)g(no)h(data)f
(t)o(yp)q(e)h(con)o(v)o(ersions)g(are)g(p)q(erformed)g(during)189
826 y(read)14 b(and)g(write)g(op)q(erations.)20 b(The)14
b(data)g(is)h(represen)o(ted)f(on)g(the)h(storage)e(medium)i(exactly)f
(as)189 883 y(it)g(is)g(in)h(memory)l(.)k(The)14 b(adv)m(an)o(tages)f
(to)g(this)h(mo)q(de)h(are)e(that)g(data)g(precision)j(and)e(I/O)g(p)q
(erfor-)189 939 y(mance)j(are)h(not)f(lost)g(in)i(t)o(yp)q(e)e(con)o(v)
o(ersions.)27 b(The)18 b(disadv)m(an)o(tage)g(is)g(the)f(loss)h(of)f
(transparen)o(t)189 996 y(in)o(terop)q(erabilit)o(y)g(within)f(a)f
(heterogeneous)g(MPI)g(en)o(vironmen)o(t.)289 1102 y
Fj(A)n(dvic)n(e)j(to)i(users.)60 b Ft(This)19 b(mo)q(de)g(should)h
(only)f(b)q(e)g(used)h(in)f(a)f(homogeneous)h(MPI)f(en-)289
1158 y(vironmen)o(t,)e(or)f(when)h(the)g Fm(MPI)g Ft(application)h(is)g
(capable)g(of)e(p)q(erforming)i(the)f(data)f(t)o(yp)q(e)289
1215 y(con)o(v)o(ersions)g(itself.)21 b(\()p Fj(End)15
b(of)i(advic)n(e)f(to)g(users.)p Ft(\))289 1321 y Fj(A)n(dvic)n(e)k(to)
h(implementors.)72 b Ft(When)21 b(implemen)o(ting)i(read)d(and)h(write)
f(op)q(erations)h(on)289 1378 y(top)d(of)h Fm(MPI)g Ft(message)f
(passing,)i(the)f(message)g(data)g(should)h(b)q(e)f(t)o(yp)q(ed)h(as)f
Fm(MPI)p 1744 1378 14 2 v 15 w(BYTE)289 1434 y Ft(to)14
b(insure)j(that)d(the)h(message)g(routines)h(do)f(not)g(p)q(erform)g
(an)o(y)g(t)o(yp)q(e)g(con)o(v)o(ersions)h(on)f(the)289
1491 y(data.)k(\()p Fj(End)c(of)i(advic)n(e)f(to)h(implementors.)p
Ft(\))75 1597 y Fe(MPI)p 152 1597 13 2 v 14 w(D)o(A)m(T)m(A)p
273 1597 V 14 w(INTERNAL)23 b Ft(In)15 b(sp)q(ecifying)h(this)e(mo)q
(de,)g(the)h(application)g(is)g(stating)f(that)f(it)i(w)o(an)o(ts)d
(auto-)189 1653 y(matic)k(data)f(t)o(yp)q(e)h(con)o(v)o(ersions)h(on)f
(I/O)g(op)q(erations)g(within)i(a)e(heterogeneous)g Fm(MPI)f
Ft(en)o(viron-)189 1710 y(men)o(t,)f(but)h(it)h(do)q(es)f(not)g(care)g
(in)h(whic)o(h)g(represen)o(tation)g(the)f(data)f(is)i(actually)g
(stored.)189 1785 y(This)c(mo)q(de)g(has)g(the)g(adv)m(an)o(tage)g
(that)f(data)g(t)o(yp)q(e)h(con)o(v)o(ersion)g(is)h(not)e(necessary)h
(if)h(the)f(\014le)h(data)189 1841 y(is)k(stored)g(in)h(the)g(same)f
(represen)o(tation)g(as)g(the)g(I/O)h(requester.)26 b(The)17
b(disadv)m(an)o(tage)h(is)g(that)189 1898 y(\014les)c(written)f(in)h
(this)g(mo)q(de)g(ma)o(y)e(not)h(b)q(e)h(usefully)h(exp)q(orted)f(from)
e(the)h(MPI)h(implemen)o(tation)189 1954 y(without)h(kno)o(wledge)h(of)
e(the)i(data)e(t)o(yp)q(es)h(used)h(in)g(writing)g(the)f(\014le.)189
2029 y(An)f(example)h(implemen)o(tation)h(of)d Fe(MPI)p
890 2029 V 15 w(D)o(A)m(T)m(A)p 1012 2029 V 13 w(INTERNAL)h
Ft(is)h(one)f(that)g(alw)o(a)o(ys)f(stores)h(data)f(in)189
2086 y(the)i(represen)o(tation)g(of)g(the)g(mac)o(hine)h(that)f
(requires)h(the)f(b)q(est)g(I/O)h(p)q(erformance.)289
2192 y Fj(A)n(dvic)n(e)i(to)h(implementors.)58 b Fe(MPI)p
910 2192 V 14 w(D)o(A)m(T)m(A)p 1031 2192 V 14 w(XDR)17
b Ft(is)i(a)f(sup)q(erset)g(of)g(the)g(functionalit)o(y)i(re-)289
2249 y(quired)15 b(b)o(y)f Fe(MPI)p 567 2249 V 14 w(D)o(A)m(T)m(A)p
688 2249 V 14 w(INTERNAL)p Ft(.)g(An)h(implemen)o(tation)g(ma)o(y)f
(therefore)g(c)o(ho)q(ose)g(to)f(im-)289 2305 y(plemen)o(t)21
b Fe(MPI)p 544 2305 V 15 w(D)o(A)m(T)m(A)p 666 2305 V
13 w(INTERNAL)h Ft(as)e Fe(MPI)p 1037 2305 V 15 w(D)o(A)m(T)m(A)p
1159 2305 V 13 w(XDR)p Ft(.)g(\()p Fj(End)h(of)h(advic)n(e)f(to)h
(implemen-)289 2361 y(tors.)p Ft(\))75 2468 y Fe(MPI)p
152 2468 V 14 w(D)o(A)m(T)m(A)p 273 2468 V 14 w(XDR)g
Ft(This)15 b(mo)q(de)g(states)f(that)g(read)h(and)g(write)f(op)q
(erations)h(con)o(v)o(ert)f(all)i(data)e(from)g(and)189
2524 y(to)g(its)g(XDR)h(represen)o(tation)g(resp)q(ectiv)o(ely)l(.)21
b(The)15 b(data)f(on)h(the)f(storage)g(medium)h(is)g(alw)o(a)o(ys)f(in)
189 2581 y(its)k(XDR)h(represen)o(tation,)f(and)h(the)f(data)g(in)h
(memory)e(is)i(alw)o(a)o(ys)f(in)h(the)f(represen)o(tation)g(of)189
2637 y(the)d(pro)q(cess)g(that)g(placed)h(it)g(there.)-32
46 y Fo(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 Ft(10)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)189 49 y Ft(This)15 b(mo)q(de)h(has)e(a)h(couple)h(of)f(adv)m(an)
o(tages.)k(First,)14 b(all)i(no)q(des)g(reading)f(the)h(\014le)g(in)f
(a)g(heteroge-)189 106 y(neous)e Fm(MPI)f Ft(en)o(vironmen)o(t)i(will)h
(automatically)e(ha)o(v)o(e)g(the)g(data)f(con)o(v)o(erted)h(to)f
(their)i(resp)q(ectiv)o(e)189 162 y(nativ)o(e)j(represen)o(tations.)25
b(Second,)18 b(the)f(\014le)h(can)f(b)q(e)h(exp)q(orted)f(out)f(of)h
(the)g(original)h Fm(MPI)e Ft(im-)189 219 y(plemen)o(tation)d(and)g
(imp)q(orted)g(in)o(to)g(another)f Fm(MPI)g Ft(implemen)o(tation)i
(with)f(the)g(guaran)o(tee)f(that)189 275 y(all)k(automatic)e(data)h(t)
o(yp)q(e)g(con)o(v)o(ersions)g(will)i(con)o(tin)o(ue)f(to)f(function.)
189 350 y(The)f(disadv)m(an)o(tages)h(of)f(this)h(mo)q(de)g(are)f(that)
g(data)f(precision)j(and)f(I/O)g(p)q(erformance)g(ma)o(y)e(b)q(e)189
407 y(lost)i(in)h(the)f(data)g(t)o(yp)q(e)g(con)o(v)o(ersions.)289
513 y Fj(A)n(dvic)n(e)20 b(to)h(users.)70 b Ft(Data)19
b(represen)o(tations)h(in)h Fe(MPI)p 1257 513 13 2 v
15 w(XDR)e Ft(mo)q(de)i(ma)o(y)f(b)q(e)g(smaller)h(or)289
569 y(larger)d(than)g(the)g(equiv)m(alen)o(t)i(nativ)o(e)e(represen)o
(tations.)29 b(F)l(or)17 b(this)i(reason,)f(it)h(is)f(imp)q(or-)289
626 y(tan)o(t)c(to)h(a)o(v)o(oid)h(absolute)g(\014le)h(addressing.)22
b(Displacemen)o(ts)16 b(and)g(seek)g(o\013sets)f(should)h(b)q(e)289
682 y(calculated)f(via)f Fm(MPI)p 660 682 14 2 v 16 w(XDR)p
768 682 V 17 w(SIZE)g Ft(and)g Fm(MPI)p 1061 682 V 16
w(XDR)p 1169 682 V 16 w(EXTENT)p Ft(.)h(\()p Fj(End)f(of)h(advic)n(e)g
(to)h(users.)p Ft(\))289 789 y Fj(A)n(dvic)n(e)i(to)j(implementors.)62
b Ft(Advice)20 b(to)f(implemen)o(tors.)32 b(When)19 b(implemen)o(ting)i
(read)289 845 y(and)d(write)g(op)q(erations)g(on)g(top)g(of)g
Fm(MPI)f Ft(message)h(passing,)h(the)f(message)g(data)f(should)289
901 y(b)q(e)f(con)o(v)o(erted)g(to)f(and)h(from)f(XDR)h(in)h(the)f
(clien)o(t,)h(and)f(sen)o(t)f(as)h(t)o(yp)q(e)f Fm(MPI)p
1626 901 V 16 w(BYTE)p Ft(.)h(This)289 958 y(will)h(a)o(v)o(oid)f(p)q
(ossible)i(double)g(data)d(t)o(yp)q(e)i(con)o(v)o(ersions)f(and)g(the)g
(asso)q(ciated)h(further)f(loss)289 1014 y(of)e(precision)j(and)f(p)q
(erformance.)k(\()p Fj(End)15 b(of)i(advic)n(e)f(to)g(implementors.)p
Ft(\))75 1134 y Fm(Data)f(Rep)o(resentation)j(fo)o(r)c
Fe(MPI)p 622 1134 13 2 v 14 w(D)o(A)m(T)m(A)p 743 1134
V 13 w(XDR)75 1220 y Ft(TBD.)-305 b Fp(?)15 b Fo(\(Oct\))75
1363 y Fq(11.2)60 b(File)19 b(Manipulation)75 1467 y
Fl(11.2.1)49 b(Op)q(ening)18 b(a)e(File)h(\(collective\))75
1647 y Fm(MPI)p 160 1647 14 2 v 16 w(OPEN\(comm,)c(\014lename,)i(amo)q
(de,)g(info,)f(fh\))117 1724 y Ff(IN)155 b Fm(comm)470
b Ff([SAME])14 b(Comm)n(unicator)d(that)j(op)q(ens)h(the)f(\014le)g
(\(handle\))117 1799 y(IN)155 b Fm(\014lename)430 b Ff([SAME])14
b(Name)e(of)i(\014le)g(to)f(b)q(e)i(op)q(ened)g(\(string\))117
1874 y(IN)155 b Fm(amo)q(de)461 b Ff([SAME])14 b(File)f(access)j(mo)q
(de)d(\(in)o(teger\))117 1950 y(IN)155 b Fm(info)516
b Ff(Info)14 b(to)f(the)i(\014le)f(system)f(\(handle\))117
2025 y(OUT)108 b Fm(fh)550 b Ff(Returned)15 b(\014le)f(handle)g
(\(handle\))75 2149 y Fh(int)23 b(MPI)p 245 2149 15 2
v 17 w(Open\(MPI)p 454 2149 V 16 w(Comm)h(comm,)f(char)g(*filename,)g
(int)g(amode,)g(MPI)p 1449 2149 V 17 w(Info)g(info,)393
2206 y(MPI)p 468 2206 V 17 w(File)g(*fh\))75 2292 y(int)g
(MPI::File::Open\(const)e(MPI::Comm&)i(comm,)g(const)g(char)h
(filename[],)393 2348 y(const)f(int)h(amode,)f(const)g(MPI::Info&)g
(info\))75 2435 y(MPI)p 150 2435 V 17 w(OPEN\(COMM,)f(FILENAME,)h
(AMODE,)g(INFO,)g(FH,)h(IERROR\))170 2491 y(CHARACTER)f(FILENAME\(*\))
170 2548 y(INTEGER)g(COMM,)h(AMODE)170 2604 y(INTEGER)f(INFO,)h(FH,)f
(IERROR)1967 46 y Fo(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(11.2.)34 b(FILE)15 b(MANIPULA)l(TION)1139
b Ft(11)166 49 y Fm(MPI)p 251 49 14 2 v 16 w(OPEN)19
b Ft(op)q(ens)h(the)e(\014le)i(iden)o(ti\014ed)h(b)o(y)e(the)f(\014le)i
(name)f Fm(\014lename)g Ft(on)f(all)i(pro)q(cesses)f(in)h(the)75
106 y Fm(comm)13 b Ft(comm)o(unicator)h(group.)19 b Fm(MPI)p
732 106 V 16 w(OPEN)c Ft(is)g(a)g(collectiv)o(e)h(routine;)f(all)g(pro)
q(cesses)g(in)h(the)e(comm)o(u-)75 162 y(nicator)j(group)g(m)o(ust)g
(call)i Fm(MPI)p 648 162 V 16 w(OPEN)p Ft(,)e(with)h(iden)o(tical)i(v)m
(alues)e(for)f Fm(comm)p Ft(,)f Fm(\014lename)p Ft(,)h(and)h
Fm(amo)q(de)p Ft(.)75 219 y(\(V)l(alues)g(for)e Fm(info)h
Ft(ma)o(y)f(v)m(ary)l(.\))25 b(A)17 b(pro)q(cess)g(can)g(op)q(en)h(a)f
(\014le)h(indep)q(enden)o(tly)i(of)c(other)h(pro)q(cesses)g(b)o(y)75
275 y(using)c(the)f Fe(MPI)p 343 275 13 2 v 15 w(COMM)p
488 275 V 14 w(SELF)g Ft(comm)o(unicator.)19 b(The)12
b(\014le)h(handle)h(returned,)f Fm(fh)p Ft(,)g(can)f(b)q(e)h(subsequen)
o(tly)75 332 y(used)k(to)f(access)g(the)h(\014le)g(un)o(til)h(the)e
(\014le)i(is)f(closed)g(using)g Fm(MPI)p 1176 332 14
2 v 16 w(CLOSE)g Ft(or)f Fm(MPI)p 1487 332 V 15 w(ICLOSE)p
Ft(.)h(Note)f(that)o Fp(>)g Fo(\(Oct\))75 388 y Ft(the)e(comm)o
(unicator)f Fm(comm)f Ft(is)i(una\013ected)g(b)o(y)f
Fm(MPI)p 983 388 V 16 w(OPEN)p Ft(,)h(and)g(con)o(tin)o(ues)g(to)f(b)q
(e)h(usable)h(in)f(all)h Fm(MPI)75 444 y Ft(routines)h(\(e.g.)j
Fm(MPI)p 441 444 V 15 w(SEND)p Ft(\).)c(F)l(urther,)g(use)h(of)e
Fm(comm)g Ft(will)i(not)f(in)o(terfere)h(with)f(I/O)h(b)q(eha)o(vior.)
98 b Fp(?)16 b Fo(\(Oct\))166 501 y Ft(Initially)l(,)g(all)e(pro)q
(cesses)f(view)h(the)f(\014le)h(as)f(a)g(linear)h(b)o(yte)f(stream.)18
b(\(POSIX)c(\014les)g(are)f(linear)h(b)o(yte)75 557 y(streams.\))19
b(The)c(\014le)h(view)g(can)f(b)q(e)h(c)o(hanged)g(via)f(the)h
Fm(MPI)p 1108 557 V 15 w(VIEW)g Ft(routine.)166 614 y(The)f(follo)o
(wing)h(access)g(mo)q(des,)f(sp)q(eci\014ed)i(via)e Fm(amo)q(de)p
Ft(,)g(are)g(supp)q(orted:)438 b Fp(>)16 b Fo(\(Oct\))143
696 y Fp(\017)23 b Fe(MPI)p 266 696 13 2 v 14 w(RDONL)m(Y)15
b Ft(-)g(read)g(only)l(,)143 785 y Fp(\017)23 b Fe(MPI)p
266 785 V 14 w(RD)o(WR)15 b Ft(-)g(reading)h(and)f(writing,)143
874 y Fp(\017)23 b Fe(MPI)p 266 874 V 14 w(WRONL)m(Y)15
b Ft(-)g(write)g(only)l(,)143 963 y Fp(\017)23 b Fe(MPI)p
266 963 V 14 w(CREA)m(TE)13 b Ft(-)j(create)f(the)g(\014le)h(if)g(it)f
(do)q(es)h(not)f(exist,)143 1052 y Fp(\017)23 b Fe(MPI)p
266 1052 V 14 w(EX)o(CL)14 b Ft(-)i(error)e(if)i(creating)f(\014le)h
(that)f(already)g(exists,)143 1141 y Fp(\017)23 b Fe(MPI)p
266 1141 V 14 w(DELETE)p 435 1141 V 15 w(ON)p 510 1141
V 15 w(CLOSE)14 b Ft(-)i(delete)g(\014le)g(on)f(close,)143
1230 y Fp(\017)23 b Fe(MPI)p 266 1230 V 14 w(D)o(A)m(T)m(A)p
387 1230 V 13 w(NA)m(TIVE)14 b Ft(-)i(\014le)g(data)e(is)i(in)g(nativ)o
(e)g(format,)143 1319 y Fp(\017)23 b Fe(MPI)p 266 1319
V 14 w(D)o(A)m(T)m(A)p 387 1319 V 13 w(INTERNAL)17 b
Ft(-)f(\014le)h(data)e(is)i(in)g(an)f(implemen)o(tation)h(dep)q(enden)o
(t)h(format)c(whic)o(h)j(en-)189 1375 y(sures)e(in)o(terop)q(erabilit)o
(y)i(within)f(this)g Fm(MPI)f Ft(en)o(vironmen)o(t,)143
1464 y Fp(\017)23 b Fe(MPI)p 266 1464 V 14 w(D)o(A)m(T)m(A)p
387 1464 V 13 w(XDR)15 b Ft(-)g(\014le)i(data)d(is)i(in)g(XDR)f
(format.)75 1546 y(The)f(mo)q(des)g Fe(MPI)p 383 1546
V 15 w(RDONL)m(Y)p Ft(,)e Fe(MPI)p 662 1546 V 15 w(RD)o(WR)p
Ft(,)h Fe(MPI)p 900 1546 V 14 w(WRONL)m(Y)p Ft(,)g Fe(MPI)p
1188 1546 V 15 w(CREA)m(TE)p Ft(,)e(and)k Fe(MPI)p 1547
1546 V 14 w(EX)o(CL)e Ft(ha)o(v)o(e)h(iden-)75 1602 y(tical)20
b(seman)o(tics)f(to)g(their)g(POSIX)h(coun)o(terparts.)31
b(These)20 b(can)f(b)q(e)h(com)o(bined)g(in)g(C)f(b)o(y)g(using)h(the)p
Fp(?)c Fo(\(Oct\))75 1659 y Ft(bit)o(wise)g(OR)g(op)q(erator,)e(and)h
(in)h(F)o(OR)l(TRAN)g(b)o(y)g(adding)g(them.)189 1751
y Fj(A)n(dvic)n(e)i(to)h(implementors.)58 b Ft(The)18
b(v)m(alues)i(of)d(these)i(constan)o(ts)e(m)o(ust)h(b)q(e)h(de\014ned)g
(suc)o(h)g(that)189 1807 y(the)14 b(bit)o(wise)h(OR)h(and)e(the)h(sum)f
(of)g(an)o(y)g(distinct)i(set)e(of)g(these)h(constan)o(ts)e(is)i(equiv)
m(alen)o(t.)22 b(\()p Fj(End)189 1864 y(of)16 b(advic)n(e)g(to)h
(implementors.)p Ft(\))189 1955 y Fj(A)n(dvic)n(e)k(to)i(users.)81
b Ft(Some)22 b(\014le)h(attributes)e(are)h(inheren)o(tly)i(implemen)o
(tation)f(dep)q(enden)o(t.)189 2012 y(These)17 b(attributes)g(m)o(ust)g
(b)q(e)h(set)f(using)h(facilities)h(outside)f(the)f(scop)q(e)h(of)f
Fm(MPI)p Ft(.)f(F)l(or)g(example,)189 2068 y(UNIX)e(\014le)h(access)f
(p)q(ermissions)h(can)f(b)q(e)h(sp)q(eci\014ed)h(via)e(the)g(UNIX)g
(umask.)19 b(\()p Fj(End)c(of)g(advic)n(e)g(to)189 2125
y(users.)p Ft(\))1875 2171 y Fp(>)h Fo(\(Oct\))1875 2230
y Fp(?)g Fo(\(Oct\))166 2217 y Ft(The)e Fm(info)f Ft(argumen)o(t)g(is)g
(used)i(to)d(pro)o(vide)i(information)g(regarding)f(\014le)i(access)e
(patterns)g(and)h(\014le)75 2273 y(system)k(sp)q(eci\014cs)i(to)d
(direct)i(optimization)g(\(see)g(section)f(11.2.9\).)27
b(The)19 b(constan)o(t)e Fe(MPI)p 1651 2273 V 14 w(INF)o(O)p
1760 2273 V 14 w(NULL)75 2329 y Ft(refers)e(to)g(the)g(n)o(ull)h(info,)
g(and)f(can)g(b)q(e)h(used)g(when)g(no)f(info)h(need)g(to)e(b)q(e)i(sp)
q(eci\014ed.)340 b Fp(>)16 b Fo(\(Oct\))166 2386 y Ft(The)j(format)e
(for)g(sp)q(ecifying)k(the)d(\014le)i(name)e(in)h(the)g
Fm(\014lename)f Ft(parameter)g(is)h(implemen)o(tation)75
2442 y(dep)q(enden)o(t.)189 2534 y Fj(A)n(dvic)n(e)12
b(to)h(implementors.)37 b Ft(An)12 b(implemen)o(tation)h(ma)o(y)e
(require)h(the)g(user)f(to)g(pre\014x)h(the)g(actual)189
2591 y(\014lename)f(with)g(a)g(string)f(that)g(indicates)j(the)d(t)o
(yp)q(e)h(of)f(\014le)i(system)e(\(e.g.,)g(ufs:\),)h(or)f(ev)o(en)h(a)g
(remote)189 2647 y(hostname)19 b(if)h(the)f(implemen)o(tation)i(supp)q
(orts)f(remote)f(\014les)h(\(e.g.,)f(mac)o(hine.univ.edu:ufs:\).)189
2704 y(\()p Fj(End)c(of)i(advic)n(e)f(to)g(implementors.)p
Ft(\))-32 46 y Fo(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 Ft(12)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)1875 49 y Fp(?)16 b Fo(\(Oct\))166 94 y Ft(Files)d(are)f(op)q
(ened)i(b)o(y)e(default)h(using)g Fm(MPI)p 908 94 14
2 v 16 w(NONA)l(TOMIC)g Ft(\014le)h(consistency)f(seman)o(tics)f(\(see)
h(sec-)75 151 y(tion)h(11.2.8\).)j(The)d(more)g(stringen)o(t)f
Fe(MPI)p 804 151 13 2 v 14 w(A)m(TOMIC)g Ft(consistency)h(seman)o
(tics,)g(required)h(for)e(atomicit)o(y)75 207 y(of)i(o)o(v)o(erlapping)
h(accesses,)f(can)g(b)q(e)h(set)f(using)h Fm(MPI)p 976
207 14 2 v 16 w(SET)p 1075 207 V 16 w(A)l(TOMICITY)p
Ft(.)-1464 b Fp(>)15 b Fo(\(Oct\))-117 266 y Fp(?)g Fo(\(Oct\))75
329 y Fl(11.2.2)49 b(Nonblo)q(cking)19 b(Op)q(en)d(\(collective\))75
509 y Fm(MPI)p 160 509 V 16 w(IOPEN\(comm,)d(\014lename,)i(amo)q(de,)f
(info,)h(fh,)g(request\))117 586 y Ff(IN)155 b Fm(comm)470
b Ff([SAME])14 b(Comm)n(unicator)d(that)j(op)q(ens)h(the)f(\014le)g
(\(handle\))117 662 y(IN)155 b Fm(\014lename)430 b Ff([SAME])14
b(Name)e(of)i(\014le)g(to)f(b)q(e)i(op)q(ened)g(\(string\))117
737 y(IN)155 b Fm(amo)q(de)461 b Ff([SAME])14 b(File)f(access)j(mo)q
(de)d(\(in)o(teger\))117 812 y(IN)155 b Fm(info)516 b
Ff(Info)14 b(to)f(the)i(\014le)f(system)f(\(handle\))117
887 y(OUT)108 b Fm(fh)550 b Ff(Returned)15 b(\014le)f(handle)g
(\(handle\))117 962 y(OUT)108 b Fm(request)452 b Ff(Op)q(en)15
b(request)h(handle)d(\(handle\))75 1087 y Fh(int)23 b(MPI)p
245 1087 15 2 v 17 w(Iopen\(MPI)p 478 1087 V 16 w(Comm)g(comm,)h(char)f
(*filename,)f(int)i(amode,)f(MPI)p 1473 1087 V 17 w(Info)g(info,)393
1143 y(MPI)p 468 1143 V 17 w(File)g(*fh,)h(MPI)p 796
1143 V 16 w(Request)f(*request\))75 1230 y(int)g
(MPI::File::Iopen\(const)e(MPI::Comm&)i(comm,)g(const)g(char)g
(filename[],)393 1286 y(const)g(int)h(amode,)f(const)g(MPI::Info&)g
(info,)g(MPI::Request&)f(request\))75 1372 y(MPI)p 150
1372 V 17 w(IOPEN\(COMM,)g(FILENAME,)h(AMODE,)g(INFO,)g(FH,)g(REQUEST,)
g(IERROR\))170 1429 y(CHARACTER)g(FILENAME\(*\))170 1485
y(INTEGER)g(COMM,)h(AMODE,)f(INFO,)g(FH,)g(REQUEST,)g(IERROR)166
1572 y Fm(MPI)p 251 1572 14 2 v 16 w(IOPEN)11 b Ft(is)h(a)f(non)o(blo)q
(c)o(king)h(v)o(ersion)g(of)f(the)g Fm(MPI)p 1091 1572
V 16 w(OPEN)h Ft(in)o(terface.)19 b Fm(MPI)p 1523 1572
V 15 w(IOPEN)12 b Ft(asso)q(ciates)75 1628 y(a)17 b(request)h(handle)h
Fm(request)h Ft(with)e(the)g(op)q(en)g(request.)28 b(The)18
b(request)g(handle)h(can)f(b)q(e)g(used)h(later)f(to)75
1685 y(query)f(the)f(status)g(of)g(the)h(op)q(en)g(\(via)g(the)f
Fm(MPI)p 920 1685 V 16 w(TEST)h Ft(routines\),)f(or)h(w)o(ait)f(for)g
(its)g(completion)i(\(via)75 1741 y(the)d Fm(MPI)p 238
1741 V 16 w(W)l(AIT)g Ft(routines\).)166 1798 y(Once)g(the)e(op)q(en)i
(completes,)f(the)g(returned)g(\014le)h(handle)g Fm(fh)f
Ft(can)g(b)q(e)g(used)h(as)e(in)i(all)f(I/O)h(routines)75
1854 y(\(as)f(in)j Fm(MPI)p 287 1854 V 15 w(OPEN)p Ft(\).)f(It)f(is)h
(erroneous)f(to)f(use)i Fm(fh)f Ft(b)q(efore)h(the)f(op)q(en)h
(completes.)-1602 b Fp(>)15 b Fo(\(Oct\))166 1911 y Ft(As)g(with)g
Fm(MPI)p 421 1911 V 16 w(OPEN)p Ft(,)g(the)g(comm)o(unicator)f
Fm(comm)f Ft(can)i(b)q(e)h(used)f(in)h(all)f Fm(MPI)g
Ft(routines)g(without)75 1967 y(a\013ecting)21 b(I/O)h(b)q(eha)o(vior.)
38 b(In)22 b(particular,)h Fm(comm)c Ft(can)i(b)q(e)h(used)g(to)e(send)
i(and)f(receiv)o(e)h(messages)75 2023 y(without)15 b(w)o(aiting)h(for)e
(the)h(op)q(en)h(to)f(complete.)-1024 b Fp(?)15 b Fo(\(Oct\))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
%%Page: 13 15
13 14 bop 75 -100 a Fk(11.2.)34 b(FILE)15 b(MANIPULA)l(TION)1139
b Ft(13)75 49 y Fl(11.2.3)49 b(Querying)17 b(File)g(P)o(a)o(rameters)75
230 y Fm(MPI)p 160 230 14 2 v 16 w(GET)p 264 230 V 17
w(FILE)p 372 230 V 15 w(P)l(ARAMS\(fh,)f(comm,)d(amo)q(de,)i(info)p
1018 230 V 16 w(tak)o(en\))117 307 y Ff(IN)155 b Fm(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 382
y(IN)155 b Fm(comm)470 b Ff(Comm)o(unicator)11 b(used)k(to)e(op)q(en)i
(the)f(\014le)g(\(handle\))117 457 y(IN)155 b Fm(amo)q(de)461
b Ff(Curren)o(t)15 b(\014le)f(access)i(mo)q(de)d(\(in)o(teger\))117
532 y(OUT)108 b Fm(info)p 392 532 V 17 w(tak)o(en)397
b Ff(Info)14 b(actually)f(used)h(b)o(y)g(the)g(\014le)g(system)g
(\(handle\))75 657 y Fh(int)23 b(MPI)p 245 657 15 2 v
17 w(Get)p 334 657 V 17 w(file)p 447 657 V 17 w(params\(MPI)p
704 657 V 15 w(File)h(fh,)f(MPI)p 1006 657 V 17 w(Comm)g(*comm,)g(int)h
(*amode,)393 713 y(MPI)p 468 713 V 17 w(Info)f(*info)p
724 713 V 17 w(taken\))75 800 y(int)g(MPI::File::Get)p
509 800 V 16 w(params\(const)f(MPI::File&)g(fh,)i(MPI::Comm&)e(comm,)i
(int&)f(amode,)393 856 y(MPI::Info&)g(info)p 755 856
V 16 w(taken\))75 942 y(MPI)p 150 942 V 17 w(GET)p 239
942 V 17 w(FILE)p 352 942 V 16 w(PARAMS\(FH,)g(COMM,)g(AMODE,)g(INFO)p
1037 942 V 17 w(TAKEN,)g(IERROR\))170 999 y(INTEGER)g(FH,)h(COMM,)f
(AMODE,)g(INFO)p 866 999 V 17 w(TAKEN,)g(IERROR)166 1085
y Fm(MPI)p 251 1085 14 2 v 16 w(GET)p 355 1085 V 16 w(FILE)p
462 1085 V 16 w(P)l(ARAMS)c Ft(returns)e(the)g(comm)o(unicator,)h(mo)q
(de,)g(and)f(hin)o(ts)h(asso)q(ciated)g(with)75 1142
y(the)13 b(op)q(en)h(\014le)g Fm(fh)p Ft(.)19 b(A)13
b(duplicate)i(of)d(the)h(comm)o(unicator)g(used)h(to)e(op)q(en)i(the)f
(\014le)h(is)f(returned)g(in)h Fm(comm)p Ft(,)75 1198
y(the)k(mo)q(de)h(used)g(to)f(op)q(en)h(the)g(\014le)g(is)g(returned)g
(in)g Fm(amo)q(de)p Ft(,)f(and)h(the)f(curren)o(t)h(setting)f(of)g(all)
i(hin)o(ts)75 1255 y(actually)c(used)g(b)o(y)f(the)g(system)g(related)h
(to)e(this)i(op)q(en)g(\014le)g(is)g(returned)f(in)h
Fm(info)p 1480 1255 V 17 w(tak)o(en)p Ft(.)166 1311 y(If)11
b(the)g(implemen)o(tation)i(is)e(capable)h(of)f(returning)h(the)f
(\014le)h(name,)g(the)f(reserv)o(ed)g(info)h(k)o(ey)f
Fe(\014lename)75 1368 y Ft(will)17 b(b)q(e)f(returned)f(in)h
Fm(info)p 534 1368 V 17 w(tak)o(en)p Ft(,)f(and)h(the)f(asso)q(ciated)g
(v)m(alue)i(will)g(b)q(e)f(the)f(\014le)h(name.)189 1474
y Fj(A)n(dvic)n(e)c(to)i(users.)39 b Ft(The)12 b(info)h(ob)s(ject)f
(returned)h(in)g Fm(info)p 1156 1474 V 16 w(tak)o(en)h
Ft(will)g(con)o(tain)e(all)i(hin)o(ts)e(curren)o(tly)189
1530 y(activ)o(e)17 b(for)f(this)i(\014le.)26 b(This)18
b(set)f(of)f(hin)o(ts)i(ma)o(y)e(b)q(e)i(greater)e(or)g(smaller)i(than)
f(the)g(set)g(of)g(hin)o(ts)189 1587 y(passed)e(in)h(to)e
Fm(MPI)p 526 1587 V 16 w(OPEN)i Ft(and)f Fm(MPI)p 849
1587 V 16 w(VIEW)p Ft(,)g(as)g(the)g(system)g(ma)o(y)f(not)h(recognize)
h(some)f(hin)o(ts)189 1643 y(set)k(b)o(y)g(the)g(user,)i(and)e(ma)o(y)g
(recognize)h(other)f(hin)o(ts)h(that)e(the)i(user)f(has)g(not)g(set.)32
b(\()p Fj(End)20 b(of)189 1700 y(advic)n(e)c(to)g(users.)p
Ft(\))166 1806 y(The)f(user)h(is)f(resp)q(onsible)j(for)c(freeing)i
Fm(comm)d Ft(and)j Fm(info)p 1146 1806 V 16 w(tak)o(en)p
Ft(.)75 1928 y Fl(11.2.4)49 b(Closing)18 b(a)f(\014le)f(\(collective\))
75 2108 y Fm(MPI)p 160 2108 V 16 w(CLOSE\(fh\))117 2185
y Ff(INOUT)62 b Fm(fh)550 b Ff([SAME])14 b(V)m(alid)e(\014le)i(handle)g
(\(handle\))75 2310 y Fh(int)23 b(MPI)p 245 2310 15 2
v 17 w(Close\(MPI)p 478 2310 V 16 w(File)g(fh\))75 2396
y(int)g(MPI::File::Close\(void\))75 2483 y(MPI)p 150
2483 V 17 w(CLOSE\(FH,)f(IERROR\))170 2539 y(INTEGER)h(FH,)h(IERROR)166
2625 y Fm(MPI)p 251 2625 14 2 v 16 w(CLOSE)d Ft(closes)g(the)f(\014le)i
(asso)q(ciated)e(with)h Fm(fh)p Ft(.)36 b(After)20 b(closing,)i(the)f
(con)o(ten)o(t)e(of)h(the)h(\014le)75 2682 y(handle)16
b Fm(fh)f Ft(is)h(destro)o(y)o(ed.)j(F)l(uture)c(use)g(of)f
Fm(fh)i Ft(is)f(erroneous.)20 b(If)15 b(the)g(\014le)h(w)o(as)e(op)q
(ened)i(with)f(the)g(access)-32 46 y Fo(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 Ft(14)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Ft(mo)q(de)22 b Fe(MPI)p 281 49 13 2 v
14 w(DELETE)p 450 49 V 15 w(ON)p 525 49 V 15 w(CLOSE)p
Ft(,)f(the)h(\014le)h(is)f(deleted.)41 b(Ho)o(w)o(ev)o(er,)22
b(if)g(there)g(are)f(other)h(pro)q(cesses)75 106 y(curren)o(tly)e
(accessing)h(the)f(\014le,)h(the)f(status)f(of)h(the)g(\014le)g(and)g
(the)g(b)q(eha)o(vior)h(of)e(future)h(accesses)g(b)o(y)75
162 y(these)15 b(pro)q(cesses)h(are)f(implemen)o(tation)h(dep)q(enden)o
(t.)-1121 b Fp(>)15 b Fo(\(Oct\))-117 221 y Fp(?)g Fo(\(Oct\))-117
279 y Fp(>)g Fo(\(Oct\))166 219 y Fm(MPI)g Ft(guaran)o(tees)f(\014le)i
(consistency)g(at)f(the)g(successful)i(completion)f(of)f(the)g
Fm(MPI)p 1589 219 14 2 v 16 w(CLOSE)p Ft(.)-117 338 y
Fp(?)g Fo(\(Oct\))75 340 y Fl(11.2.5)49 b(Nonblo)q(cking)19
b(Close)d(\(collective\))75 521 y Fm(MPI)p 160 521 V
16 w(ICLOSE\(fh,)f(request\))117 598 y Ff(INOUT)62 b
Fm(fh)550 b Ff([SAME])14 b(V)m(alid)e(\014le)i(handle)g(\(handle\))117
673 y(OUT)108 b Fm(request)452 b Ff(Close)14 b(request)i(handle)d
(\(handle\))75 797 y Fh(int)23 b(MPI)p 245 797 15 2 v
17 w(Iclose\(MPI)p 502 797 V 16 w(File)g(fh,)h(MPI)p
805 797 V 17 w(Request)e(*request\))75 884 y(int)h
(MPI::File::Iclose\(MPI::Reques)o(t&)e(request\))75 970
y(MPI)p 150 970 V 17 w(ICLOSE\(FH,)h(REQUEST,)h(IERROR\))170
1027 y(INTEGER)g(FH,)h(REQUEST,)f(IERROR)166 1113 y Fm(MPI)p
251 1113 14 2 v 16 w(ICLOSE)16 b Ft(is)g(a)f(non)o(blo)q(c)o(king)j(v)o
(ersion)e(of)f(the)h Fm(MPI)p 1141 1113 V 16 w(CLOSE)g
Ft(in)o(terface.)22 b Fm(MPI)p 1598 1113 V 16 w(ICLOSE)16
b Ft(asso-)75 1170 y(ciates)e(a)f(request)g(handle)i
Fm(request)g Ft(with)f(the)f(close)h(request.)20 b(The)13
b(request)h(handle)g(can)g(b)q(e)g(used)g(later)75 1226
y(to)e(query)i(the)f(status)f(of)h(the)g(close)g(\(via)h(the)f
Fm(MPI)p 945 1226 V 15 w(TEST)h Ft(routines\),)f(or)g(w)o(ait)f(for)h
(its)g(completion)h(\(via)75 1283 y(the)i Fm(MPI)p 239
1283 V 16 w(W)l(AIT)f Ft(routines\).)22 b(It)16 b(is)g(erroneous)g(to)f
(p)q(erform)g(an)o(y)h(op)q(eration)g(using)g(a)g(\014le)h(handle)g
(that)-1993 b Fp(>)15 b Fo(\(Oct\))75 1339 y Ft(has)g(b)q(een)h(passed)
g(to)e Fm(MPI)p 548 1339 V 16 w(ICLOSE)p Ft(.)-117 1341
y Fp(?)h Fo(\(Oct\))75 1461 y Fl(11.2.6)49 b(Changing)19
b(the)c(View)i(of)f(a)h(File)g(\(collective\))75 1641
y Fm(MPI)p 160 1641 V 16 w(VIEW\(fh,)e(disp,)h(et)o(yp)q(e,)g(\014let)o
(yp)q(e,)g(info\))117 1718 y Ff(INOUT)62 b Fm(fh)550
b Ff([SAME])14 b(V)m(alid)e(\014le)i(handle)g(\(handle\))117
1793 y(IN)155 b Fm(disp)513 b Ff(Absolute)15 b(displacemen)o(t)e
(\(nonnegativ)o(e)g(o\013set\))117 1869 y(IN)155 b Fm(et)o(yp)q(e)487
b Ff([SAME])14 b(Elemen)o(tary)f(datat)o(yp)q(e)h(\(handle\))117
1944 y(IN)155 b Fm(\014let)o(yp)q(e)452 b Ff(Filet)o(yp)q(e)14
b(\(handle\))117 2019 y(IN)155 b Fm(info)516 b Ff(Info)14
b(to)f(the)i(\014le)f(system)f(\(handle\))75 2143 y Fh(int)23
b(MPI)p 245 2143 15 2 v 17 w(View\(MPI)p 454 2143 V 16
w(File)h(fh,)f(MPI)p 757 2143 V 17 w(Offset)g(disp,)g(MPI)p
1156 2143 V 17 w(Datatype)g(etype,)393 2200 y(MPI)p 468
2200 V 17 w(Datatype)g(filetype,)f(MPI)p 1010 2200 V
17 w(Info)h(info\))75 2286 y(int)g(MPI::File::View\(const)e
(MPI::Offset)i(disp,)g(const)g(MPI::Datatype&)f(etype,)393
2343 y(const)h(MPI::Datatype&)f(filetype,)h(const)g(MPI::Info&)g
(info\))75 2429 y(MPI)p 150 2429 V 17 w(VIEW\(FH,)g(DISP,)g(ETYPE,)g
(FILETYPE,)f(INFO,)i(IERROR\))170 2486 y(INTEGER)f(FH,)h(ETYPE,)f
(FILETYPE,)f(INFO,)i(IERROR)170 2542 y(INTEGER*8)f(DISP)166
2628 y Ft(The)12 b Fm(MPI)p 341 2628 14 2 v 16 w(VIEW)f
Ft(routine)h(c)o(hanges)g(the)f(pro)q(cess's)h(view)g(of)f(the)h(data)f
(in)h(the)g(\014le|the)h(b)q(eginning)75 2685 y(of)18
b(the)h(data)f(accessible)j(in)e(the)g(\014le)h(through)e(that)g(view)i
(is)f(set)f(to)h Fm(disp)p Ft(;)i(the)e(t)o(yp)q(e)g(of)f(data)g(is)h
(set)1967 46 y Fo(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(11.2.)34 b(FILE)15 b(MANIPULA)l(TION)1139
b Ft(15)75 49 y(to)18 b Fm(et)o(yp)q(e)p Ft(;)j(and)d(the)h
(distribution)h(pattern)e(of)g(data)g(to)f(pro)q(cesses)i(is)g(set)f
(to)g Fm(\014let)o(yp)q(e)p Ft(.)31 b(In)19 b(addition,)75
106 y Fm(MPI)p 160 106 14 2 v 16 w(VIEW)10 b Ft(resets)h(the)f(indep)q
(enden)o(t)j(\014le)f(p)q(oin)o(ters)f(and)f(the)h(shared)g(\014le)g(p)
q(oin)o(ter)g(to)f(zero.)18 b Fm(MPI)p 1749 106 V 16
w(VIEW)75 162 y Ft(is)c(a)g(collectiv)o(e)h(routine;)g(all)f(pro)q
(cesses)g(in)h(the)f(comm)o(unicator)f(group)h(asso)q(ciated)g(with)g
Fm(fh)g Ft(m)o(ust)f(call)75 219 y Fm(MPI)p 160 219 V
16 w(VIEW)p Ft(,)f(with)h(iden)o(tical)h(v)m(alues)f(for)f
Fm(fh)h Ft(and)f Fm(et)o(yp)q(e)p Ft(;)j(v)m(alues)e(for)f
Fm(disp)p Ft(,)i Fm(\014let)o(yp)q(e)p Ft(,)g(and)e Fm(info)h
Ft(ma)o(y)e(v)m(ary)l(.)75 275 y(It)k(is)g(erroneous)g(to)f(use)h(the)g
(shared)g(\014le)h(p)q(oin)o(ter)f(data)f(access)h(routines)g(unless)h
(iden)o(tical)h(v)m(alues)f(for)75 332 y Fm(disp)e Ft(and)f
Fm(\014let)o(yp)q(e)i Ft(are)e(also)g(giv)o(en)g(\(see)g(section)h
(11.5\).)j(The)d(datat)o(yp)q(es)e(passed)h(in)h Fm(et)o(yp)q(e)g
Ft(and)g Fm(\014let)o(yp)q(e)q Fp(>)i Fo(\(Oct\))75 388
y Ft(need)g(not)f(b)q(e)h(committed.)1875 390 y Fp(?)g
Fo(\(Oct\))189 490 y Fj(A)n(dvic)n(e)g(to)h(users.)45
b Ft(On)17 b(some)f(systems,)f(c)o(hanging)h(the)h(view)f(of)g(a)g
(\014le)h(ma)o(y)e(b)q(e)i(as)e(exp)q(ensiv)o(e)189 546
y(as)f(closing)j(and)e(re-op)q(ening)i(the)e(\014le.)21
b(\()p Fj(End)15 b(of)i(advic)n(e)f(to)h(users.)p Ft(\))189
648 y Fj(A)n(dvic)n(e)h(to)h(implementors.)58 b Ft(It)18
b(is)h(exp)q(ected)g(that)f(a)g(call)h(to)f Fm(MPI)p
1399 648 V 15 w(VIEW)g Ft(will)i(immediately)189 705
y(follo)o(w)h(the)g Fm(MPI)p 495 705 V 16 w(OPEN)h Ft(in)g(n)o(umerous)
f(instances.)39 b(A)21 b(high)h(qualit)o(y)g(implemen)o(tation)g(will)
189 761 y(ensure)15 b(that)g(this)h(b)q(eha)o(vior)f(is)h(e\016cien)o
(t.)21 b(\()p Fj(End)15 b(of)i(advic)n(e)f(to)g(implementors.)p
Ft(\))166 863 y(The)c Fm(disp)i Ft(displacemen)o(t)f(argumen)o(t)e(sp)q
(eci\014es)j(the)e(p)q(osition)i(\(absolute)e(o\013set)f(in)i(b)o(ytes)
f(from)f(the)75 920 y(b)q(eginning)17 b(of)e(the)g(\014le\),)g(where)h
(the)f(\014le)h(is)f(to)g(b)q(e)g(\\re-op)q(ened".)21
b(The)15 b(constan)o(t)f Fe(MPI)p 1586 920 13 2 v 15
w(OFFSET)p 1756 920 V 13 w(ZERO)75 976 y Ft(is)i(de\014ned)g(to)f(b)q
(e)h(o\013set)e(zero.)189 1067 y Fj(A)n(dvic)n(e)d(to)j(users.)37
b Fm(Disp)12 b Ft(can)g(b)q(e)g(used)g(to)f(skip)h(headers,)g(or)f
(when)h(the)f(\014le)i(includes)h(a)d(sequence)189 1123
y(of)f(data)h(segmen)o(ts)g(that)f(are)h(to)g(b)q(e)g(accessed)h(in)g
(di\013eren)o(t)g(patterns.)18 b(\()p Fj(End)12 b(of)g(advic)n(e)h(to)g
(users.)p Ft(\))166 1213 y(The)18 b Fm(et)o(yp)q(e)i
Ft(argumen)o(t)d(sp)q(eci\014es)j(the)e(elemen)o(tary)g(datat)o(yp)q(e)
g(used)g(to)g(construct)g(the)g Fm(\014let)o(yp)q(e)p
Ft(,)75 1270 y(and)f(also)f(the)h Fm(buft)o(yp)q(e)h
Ft(used)g(in)f(read/write)f(op)q(erations.)25 b(O\013sets)16
b(in)o(to)g(the)h(view)g(are)f(measured)h(in)75 1326
y(units)f(of)f Fm(et)o(yp)q(e)p Ft(.)166 1383 y(The)20
b Fm(\014let)o(yp)q(e)i Ft(argumen)o(t)e(describ)q(es)h(what)f(part)g
(of)g(the)g(data)g(in)h(the)f(\014le)h(is)g(b)q(eing)h(accessed.)75
1439 y(Conceptually)l(,)15 b(the)f(\014le)h(starting)e(from)g
Fm(disp)i Ft(is)f(tiled)h(b)o(y)f(rep)q(eated)g(copies)h(of)e
Fm(\014let)o(yp)q(e)p Ft(,)i(un)o(til)g(the)f(end.)75
1496 y(If)k Fm(\014let)o(yp)q(e)g Ft(has)f(holes)h(in)h(it,)e(then)h
(the)f(data)g(in)h(the)g(holes)g(is)f(inaccessible)j(b)o(y)e(the)f
(calling)i(pro)q(cess.)75 1552 y(Ho)o(w)o(ev)o(er,)11
b(the)g Fm(disp)p Ft(,)i Fm(et)o(yp)q(e)g Ft(and)e Fm(\014let)o(yp)q(e)
i Ft(argumen)o(ts)d(can)i(b)q(e)g(c)o(hanged)f(via)h(future)f(calls)i
(to)d Fm(MPI)p 1749 1552 14 2 v 16 w(VIEW)75 1609 y Ft(to)15
b(access)g(a)g(di\013eren)o(t)g(part)g(of)g(the)g(\014le.)166
1665 y(The)f Fm(info)f Ft(argumen)o(t)g(is)g(used)i(to)d(pro)o(vide)i
(information)g(regarding)f(\014le)i(access)e(patterns)g(and)h(\014le)75
1721 y(system)k(sp)q(eci\014cs)i(to)d(direct)i(optimization)g(\(see)g
(section)f(11.2.9\).)27 b(The)19 b(constan)o(t)e Fe(MPI)p
1651 1721 13 2 v 14 w(INF)o(O)p 1760 1721 V 14 w(NULL)75
1778 y Ft(refers)e(to)g(the)g(n)o(ull)h(info,)g(and)f(can)g(b)q(e)h
(used)g(when)g(no)f(info)h(need)g(to)e(b)q(e)i(sp)q(eci\014ed.)75
1899 y Fl(11.2.7)49 b(Querying)17 b(the)f(View)g(of)h(a)g(File)1875
1938 y Fp(>)f Fo(\(Oct\))75 2079 y Fm(MPI)p 160 2079
14 2 v 16 w(GET)p 264 2079 V 17 w(VIEW\(fh,)e(disp,)i(et)o(yp)q(e,)g
(\014let)o(yp)q(e\))117 2156 y Ff(INOUT)62 b Fm(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 2231
y(OUT)108 b Fm(disp)513 b Ff(Absolute)15 b(displacemen)o(t)e
(\(nonnegativ)o(e)g(o\013set\))117 2305 y(OUT)108 b Fm(et)o(yp)q(e)487
b Ff(Elemen)o(tary)13 b(datat)o(yp)q(e)h(\(handle\))117
2380 y(OUT)108 b Fm(\014let)o(yp)q(e)452 b Ff(Filet)o(yp)q(e)14
b(\(handle\))75 2504 y Fh(int)23 b(MPI)p 245 2504 15
2 v 17 w(Get)p 334 2504 V 17 w(view\(MPI)p 543 2504 V
16 w(File)g(fh,)h(MPI)p 846 2504 V 17 w(Offset)f(*disp,)g(MPI)p
1269 2504 V 16 w(Datatype)g(*etype,)393 2561 y(MPI)p
468 2561 V 17 w(Datatype)g(*filetype\))75 2647 y(int)g(MPI::File::Get)p
509 2647 V 16 w(view\(MPI::Offset&)e(disp,)i(MPI::Datatype&)f(etype,)
393 2704 y(MPI::Datatype&)g(filetype\))-32 46 y Fo(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 Ft(16)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Fh(MPI)p 150 49 15 2 v 17 w(GET)p 239 49
V 17 w(VIEW\(FH,)22 b(DISP,)h(ETYPE,)h(FILETYPE,)e(IERROR\))170
106 y(INTEGER)h(FH,)h(ETYPE,)f(FILETYPE,)f(IERROR)170
162 y(INTEGER*8)h(DISP)166 249 y Ft(The)d Fm(MPI)p 349
249 14 2 v 15 w(GET)p 452 249 V 17 w(VIEW)g Ft(returns)f(the)g(pro)q
(cess's)h(view)g(of)f(the)g(data)g(in)h(the)g(\014le.)33
b(The)20 b(curren)o(t)75 305 y(v)m(alues)j(of)f(the)g(displacemen)o(t,)
j(et)o(yp)q(e,)f(and)e(\014let)o(yp)q(e)h(are)f(returned)g(in)h
Fm(disp)p Ft(,)i Fm(et)o(yp)q(e)p Ft(,)f(and)f Fm(\014let)o(yp)q(e)75
362 y Ft(resp)q(ectiv)o(ely)l(.)166 418 y(The)15 b(user)h(is)g(resp)q
(onsible)h(for)d(freeing)i(deriv)o(ed)h(datat)o(yp)q(es)d(returned)i
(in)g Fm(et)o(yp)q(e)h Ft(and)e Fm(\014let)o(yp)q(e)i
Ft(via)75 474 y Fm(MPI)p 160 474 V 16 w(TYPE)p 293 474
V 17 w(FREE)p Ft(.)189 576 y Fj(A)n(dvic)n(e)11 b(to)i(users.)37
b Ft(The)12 b(datat)o(yp)q(es)e(returned)i(b)o(y)f Fm(MPI)p
1153 576 V 16 w(GET)p 1257 576 V 17 w(VIEW)g Ft(are)g(plain)h
Fm(MPI)f Ft(datat)o(yp)q(es,)189 632 y(and)g(can)g(b)q(e)g(used)g(for)f
(I/O)i(and)f(comm)o(unication.)19 b(Ho)o(w)o(ev)o(er,)10
b(it)h(is)g(implemen)o(tation)h(dep)q(enden)o(t)189 689
y(whether)j(the)h(returned)g(t)o(yp)q(es)f(are)g(committed.)21
b(F)l(or)15 b(this)h(reason,)f(if)h(either)g Fm(et)o(yp)q(e)h
Ft(or)e Fm(\014let)o(yp)q(e)189 745 y Ft(are)g(to)g(b)q(e)i(used)f(in)h
(comm)o(unication,)f(the)g(user)g(is)g(resp)q(onsible)i(for)d
(committing)h(them.)22 b(\()p Fj(End)189 802 y(of)16
b(advic)n(e)g(to)h(users.)p Ft(\))-117 858 y Fp(?)e Fo(\(Oct\))166
903 y Ft(Unlik)o(e)i Fm(MPI)p 394 903 V 15 w(VIEW)p Ft(,)e(this)h
(routine)g(is)f(not)g(collectiv)o(e.)75 1024 y Fl(11.2.8)49
b(File)17 b(Consistency)f(\(collective\))-117 1066 y
Fp(>)f Fo(\(Oct\))75 1110 y Ft(Consistency)21 b(seman)o(tics)f
(de\014ne)h(the)f(outcome)g(of)g(m)o(ultiple)i(accesses)e(to)g(a)g
(single)h(\014le,)h(either)f(b)o(y)75 1167 y(man)o(y)15
b(pro)q(cesses)g(or)g(b)o(y)g(a)g(single)i(pro)q(cess)e(whic)o(h)h(has)
f(op)q(ened)h(the)g(\014le)g(more)f(than)g(once.)166
1223 y Fm(MPI)j Ft(guaran)o(tees)g(that)g(non-o)o(v)o(erlapping)i
(\014le)g(accesses)f(within)h(a)f(single)h(application)g(are)f(se-)75
1280 y(quen)o(tially)k(consisten)o(t,)f(and)g(hence,)h(app)q(ear)e(to)g
(the)g(application)i(as)e(atomic.)37 b(Ho)o(w)o(ev)o(er,)21
b(unlik)o(e)75 1336 y(UNIX,)e(the)h(default)f(seman)o(tics)g(for)g(o)o
(v)o(erlapping)h(accesses)f(do)q(es)g(not)g(guaran)o(tee)f(sequen)o
(tial)j(con-)75 1392 y(sistency)l(.)28 b(This)18 b(default)g(mo)q(de)g
(\(set)f(when)h(a)f(\014le)i(is)f(op)q(ened\))g(is)g(referred)g(to)f
(as)g Fe(MPI)p 1616 1392 13 2 v 14 w(NONA)m(TOMIC)75
1449 y Ft(mo)q(de.)24 b(In)17 b Fe(MPI)p 354 1449 V 14
w(NONA)m(TOMIC)e Ft(mo)q(de,)i(all)g(data)f(in)h(regions)f(of)g(the)h
(\014le)g(whic)o(h)g(had)g(o)o(v)o(erlapping)g(ac-)75
1505 y(cesses)f(is)h(unde\014ned.)24 b(A)o(tomic)16 b(access)g(can)h(b)
q(e)f(guaran)o(teed)g(for)f(o)o(v)o(erlapping)i(accesses)f(b)o(y)g
(enabling)75 1562 y Fe(MPI)p 152 1562 V 14 w(A)m(TOMIC)e
Ft(mo)q(de)h(for)g(the)g(\014le)h(via)g(the)f Fm(MPI)p
918 1562 14 2 v 16 w(SET)p 1017 1562 V 17 w(A)l(TOMICITY)g
Ft(routine.)166 1618 y(Changing)h(the)f(consistency)h(seman)o(tics)g
(for)f(a)g(\014le)h(only)g(a\013ects)e(new)i(data)f(accesses.)20
b(All)d(com-)75 1675 y(pleted)g(data)f(accesses)g(are)g(guaran)o(teed)g
(to)f(abide)i(b)o(y)g(the)f(consistency)h(seman)o(tics)f(in)h(e\013ect)
f(during)75 1731 y(their)f(execution.)20 b(Non)o(blo)q(c)o(king)c(data)
d(accesses)i(whic)o(h)g(ha)o(v)o(e)f(not)g(completed)h(\(e.g.)k(via)c
Fm(MPI)p 1732 1731 V 15 w(W)l(AIT)p Ft(\))75 1788 y(are)g(only)h
(guaran)o(teed)e(to)h(abide)h(b)o(y)f Fe(MPI)p 801 1788
13 2 v 15 w(NONA)m(TOMIC)e Ft(consistency)k(seman)o(tics.)189
1889 y Fj(A)n(dvic)n(e)11 b(to)i(implementors.)37 b Ft(Since)13
b(the)e(seman)o(tics)g(guaran)o(teed)f(b)o(y)h Fe(MPI)p
1455 1889 V 15 w(A)m(TOMIC)e Ft(is)j(a)e(sup)q(erset)189
1946 y(of)16 b(those)g(guaran)o(teed)f(b)o(y)i Fe(MPI)p
738 1946 V 14 w(NONA)m(TOMIC)p Ft(,)e(an)h(implemen)o(tation)i(is)e
(free)h(to)e(adhere)i(to)f(the)189 2002 y(more)j(stringen)o(t)h
Fe(MPI)p 580 2002 V 15 w(A)m(TOMIC)e Ft(seman)o(tics)i(for)g
(outstanding)g(requests.)34 b(\()p Fj(End)20 b(of)h(advic)n(e)g(to)189
2059 y(implementors.)p Ft(\))75 2255 y Fm(MPI)p 160 2255
14 2 v 16 w(SET)p 259 2255 V 17 w(A)l(TOMICITY\(fh,)15
b(atomicit)o(y\))117 2332 y Ff(INOUT)62 b Fm(fh)550 b
Ff([SAME])14 b(V)m(alid)e(\014le)i(handle)g(\(handle\))117
2406 y(IN)155 b Fm(atomicit)o(y)411 b Ff([SAME])14 b(Seman)o(tics)f(of)
g(o)o(v)o(erlapp)q(ed)h(access)i(\(in)o(teger\))75 2531
y Fh(int)23 b(MPI)p 245 2531 15 2 v 17 w(Set)p 334 2531
V 17 w(atomicity\(MPI)p 663 2531 V 15 w(File)h(fh,)f(int)h(atomicity\))
75 2617 y(int)f(MPI::File::Set)p 509 2617 V 16 w(atomicity\(cont)f(int)
h(atomicity\))75 2704 y(MPI)p 150 2704 V 17 w(SET)p 239
2704 V 17 w(ATOMICITY\(FH,)f(ATOMICITY,)g(IERROR\))1967
46 y Fo(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(11.2.)34 b(FILE)15 b(MANIPULA)l(TION)1139
b Ft(17)170 49 y Fh(INTEGER)23 b(FH,)h(ATOMICITY,)e(IERROR)166
136 y Fm(MPI)p 251 136 14 2 v 16 w(SET)p 350 136 V 16
w(A)l(TOMICITY)14 b Ft(sets)g(the)g(consistency)h(seman)o(tics)f(for)f
(o)o(v)o(erlapping)h(accesses)g(within)h(a)75 192 y(single)i
Fm(MPI)d Ft(application.)22 b Fm(A)o(tomicit)o(y)14 b
Ft(m)o(ust)h(b)q(e)h(either)g Fe(MPI)p 1129 192 13 2
v 14 w(NONA)m(TOMIC)e Ft(or)g Fe(MPI)p 1535 192 V 15
w(A)m(TOMIC)p Ft(.)75 343 y Fm(MPI)p 160 343 14 2 v 16
w(GET)p 264 343 V 17 w(A)l(TOMICITY\(fh,)h(atomicit)o(y\))117
420 y Ff(IN)155 b Fm(fh)550 b Ff(V)m(alid)13 b(\014le)g(handle)h
(\(handle\))117 492 y(IN)155 b Fm(atomicit)o(y)411 b
Ff(Seman)o(tics)13 b(of)h(o)o(v)o(erlapp)q(ed)g(access)h(\(in)o
(teger\))75 616 y Fh(int)23 b(MPI)p 245 616 15 2 v 17
w(Get)p 334 616 V 17 w(atomicity\(MPI)p 663 616 V 15
w(File)h(fh,)f(int)h(*atomicity\))75 702 y(int)f(MPI::File::Get)p
509 702 V 16 w(atomicity\(int&)f(atomicity\))75 789 y(MPI)p
150 789 V 17 w(GET)p 239 789 V 17 w(ATOMICITY\(FH,)g(ATOMICITY,)g
(IERROR\))170 845 y(INTEGER)h(FH,)h(ATOMICITY,)e(IERROR)166
932 y Fm(MPI)p 251 932 14 2 v 16 w(GET)p 355 932 V 16
w(A)l(TOMICITY)e Ft(returns)g(the)f(curren)o(t)h(consistency)g(seman)o
(tics)g(for)f(o)o(v)o(erlapping)h(ac-)75 988 y(cesses.)189
1071 y Fj(A)n(dvic)n(e)h(to)i(users.)80 b Ft(File)23
b(consistency)f(seman)o(tics)g(outside)h(of)e(a)h(single)h
Fm(MPI)e Ft(application)189 1128 y(are)d(implemen)o(tation)i(dep)q
(enden)o(t.)33 b(No)18 b(\014le)i(consistency)g(seman)o(tics)f(are)f
(implied)j(b)o(y)e(either)189 1184 y Fe(MPI)p 266 1184
13 2 v 14 w(NONA)m(TOMIC)11 b Ft(or)h Fe(MPI)p 667 1184
V 15 w(A)m(TOMIC)f Ft(b)q(et)o(w)o(een)i(m)o(ultiple)h
Fm(MPI)e Ft(applications,)i(or)e(outside)i(of)e(the)189
1240 y Fm(MPI)18 b Ft(en)o(vironmen)o(t.)30 b(In)19 b(other)g(w)o
(ords,)f(if)h(t)o(w)o(o)e(di\013eren)o(t)i Fm(MPI)f Ft(applications)i
(op)q(en)g(the)e(same)189 1297 y(\014le,)g(the)f(b)q(eha)o(vior)h(and)g
(atomicit)o(y)f(of)g(the)g(\014le)h(accesses)g(are)f(unde\014ned.)28
b(The)17 b Fe(MPI)p 1705 1297 V 15 w(A)m(TOMIC)189 1353
y Ft(mo)q(de)e(enforces)h(read/write)f(atomicit)o(y)g(only)h(in)g(the)g
(comm)o(unicator)f(group)g(asso)q(ciated)h(with)189 1410
y(the)f(op)q(en)h(\014le.)21 b(\()p Fj(End)15 b(of)i(advic)n(e)f(to)g
(users.)p Ft(\))75 1587 y Fm(MPI)p 160 1587 14 2 v 16
w(FILE)p 267 1587 V 15 w(SYNC\(fh\))117 1664 y Ff(INOUT)62
b Fm(fh)550 b Ff([SAME])14 b(V)m(alid)e(\014le)i(handle)g(\(handle\))75
1789 y Fh(int)23 b(MPI)p 245 1789 15 2 v 17 w(File)p
358 1789 V 17 w(sync\(MPI)p 567 1789 V 16 w(File)g(fh\))75
1875 y(int)g(MPI::File::Sync\(\))75 1962 y(MPI)p 150
1962 V 17 w(FILE)p 263 1962 V 16 w(SYNC\(FH,)g(IERROR\))170
2018 y(INTEGER)g(FH,)h(IERROR)166 2105 y Fm(MPI)p 251
2105 14 2 v 16 w(FILE)p 358 2105 V 15 w(SYNC)19 b Ft(causes)e(the)h
(con)o(ten)o(ts)f(of)g(the)h(\014le)h(referenced)f(b)o(y)g
Fm(fh)g Ft(to)e(b)q(e)j(\015ushed)f(to)f(p)q(er-)75 2161
y(manen)o(t)g(storage.)26 b(All)18 b(pro)q(cesses)g(in)g(the)g(comm)o
(unicator)f(group)g(asso)q(ciated)h(with)g(the)f(\014le)i(handle)75
2217 y Fm(fh)c Ft(m)o(ust)e(call)j Fm(MPI)p 406 2217
V 16 w(FILE)p 513 2217 V 15 w(SYNC)p Ft(.)f(The)g Fm(MPI)p
847 2217 V 16 w(FILE)p 954 2217 V 15 w(SYNC)g Ft(call)h(returns)e
Fj(after)h Ft(all)g(data)f(written,)g(since)75 2274 y(the)h(\014le)i(w)
o(as)d(op)q(ened,)i(has)f(b)q(een)h(\015ushed)g(to)f(p)q(ermanen)o(t)g
(storage.)166 2330 y Fm(MPI)p 251 2330 V 16 w(FILE)p
358 2330 V 15 w(SYNC)d Ft(guaran)o(tees)e(that)f(all)j
Fj(c)n(omplete)n(d)e Ft(I/O)h(requests)g(ha)o(v)o(e)f(b)q(een)i
(\015ushed)g(to)e(p)q(erma-)75 2387 y(nen)o(t)h(storage.)17
b(P)o(ending)12 b(non)o(blo)q(c)o(king)g(I/O)g(requests)f(that)f(ha)o
(v)o(e)h(not)f(completed)i(are)f(not)f(guaran)o(teed)75
2443 y(to)15 b(b)q(e)g(\015ushed.)1532 b Fp(?)16 b Fo(\(Oct\))1875
2502 y Fp(>)g Fo(\(Oct\))1875 2560 y Fp(?)g Fo(\(Oct\))75
2561 y Fl(11.2.9)49 b(File)17 b(Info)75 2647 y Ft(Hin)o(ts)k(sp)q
(eci\014ed)i(via)e(info)h(\(see)f(section)g(\))g(allo)o(w)g(a)f(user)h
(to)f(pro)o(vide)i(information)f(regarding)g(\014le)75
2704 y(access)14 b(patterns)f(and)h(\014le)h(system)f(sp)q(eci\014cs)i
(to)d(direct)h(optimization.)21 b(Pro)o(viding)14 b(hin)o(ts)h(ma)o(y)e
(enable)-32 46 y Fo(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 Ft(18)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Ft(an)21 b(implemen)o(tation)h(to)e(deliv)o(er)j
(increased)f(I/O)f(p)q(erformance)g(or)g(minimize)i(the)e(use)g(of)f
(system)75 106 y(resources.)i(Ho)o(w)o(ev)o(er,)15 b(hin)o(ts)h(do)q
(es)g(not)g(c)o(hange)f(the)h(seman)o(tics)g(of)g(an)o(y)f(of)h(the)g
(in)o(terfaces.)22 b(In)16 b(other)75 162 y(w)o(ords,)f(an)i(implemen)o
(tation)g(is)g(free)f(to)g(ignore)h(all)g(hin)o(ts.)23
b(Hin)o(ts)17 b(are)f(sp)q(eci\014ed)i(on)e(a)g(p)q(er)h(\014le)h
(basis)75 219 y(at)d Fm(MPI)p 216 219 14 2 v 15 w(OPEN)p
Ft(,)h Fm(MPI)p 463 219 V 16 w(IOPEN)p Ft(,)f(or)g Fm(MPI)p
779 219 V 16 w(VIEW)g Ft(time)g(via)h(the)f(opaque)g
Fm(info)g Ft(ob)s(ject.)189 310 y Fj(A)n(dvic)n(e)20
b(to)h(implementors.)71 b Ft(It)21 b(ma)o(y)e(happ)q(en)j(that)e(a)g
(program)f(is)i(co)q(ded)g(with)g(hin)o(ts)g(for)189
367 y(one)15 b(system,)h(and)f(later)h(executes)g(on)g(another)f
(system)h(that)f(do)q(es)h(not)f(supp)q(ort)h(these)g(hin)o(ts.)189
423 y(In)k(general,)h(unsupp)q(orted)g(hin)o(ts)f(should)h(simply)g(b)q
(e)g(ignored.)34 b(In)20 b(particular,)h(\014le)g(con)o(trol)189
479 y(op)q(erations,)16 b(setting)g(or)g(inquiring)i(v)m(alues)g(to)e
(unsupp)q(orted)h(hin)o(ts,)g(should)g(b)q(e)g(handled)h(as)d(if)189
536 y(these)h(hin)o(ts)g(w)o(ere)g(not)g(sp)q(eci\014ed.)25
b(Needless)17 b(to)f(sa)o(y)l(,)f(no)h(hin)o(t)h(can)f(b)q(e)h
(mandatory)l(.)k(Ho)o(w)o(ev)o(er,)189 592 y(for)15 b(eac)o(h)h(hin)o
(t)h(used)f(b)o(y)g(a)g(sp)q(eci\014c)i(implemen)o(tation,)f(a)f
(default)h(v)m(alue)g(m)o(ust)f(b)q(e)g(pro)o(vided)h(in)189
649 y(order)e(to)g(b)q(e)h(used)g(when)g(the)f(user)h(do)q(es)g(not)f
(sp)q(ecify)i(a)e(v)m(alue)i(for)e(this)g(hin)o(t.)22
b(\()p Fj(End)15 b(of)i(advic)n(e)189 705 y(to)f(implementors.)p
Ft(\))166 797 y(Some)g(p)q(oten)o(tially)h(useful)f(hin)o(ts)g(are)g
(outlined)h(b)q(elo)o(w.)22 b(Sp)q(eci\014c)c(implemen)o(tations)f(are)
e(free)h(to)75 853 y(de\014ne)h(these)g(hin)o(ts)f(as)g(w)o(ell)h(as)f
(additional)h(hin)o(ts.)23 b(Ho)o(w)o(ev)o(er,)15 b(in)i(order)f(to)g
(main)o(tain)g(compatibilit)o(y)75 910 y(b)q(et)o(w)o(een)g(implemen)o
(tations,)g(additional)h(hin)o(ts)e(should)i(not)e(reuse)g(the)h(same)f
(hin)o(t)g(names)h(for)e(other)75 966 y(purp)q(oses)i(than)f(these)g
(listed)i(here.)166 1022 y(These)c(hin)o(ts)h(are)f(mainly)h(concerned)
g(with)f(la)o(y)o(out)g(of)f(data)h(on)g(parallel)h(I/O)g(devices,)g
(and)g(with)75 1079 y(access)j(patterns.)24 b(F)l(or)16
b(eac)o(h)h(hin)o(t)g(name)g(in)o(tro)q(duced,)h(w)o(e)f(describ)q(e)h
(the)f(purp)q(ose)g(of)g(the)f(hin)o(t,)i(and)75 1135
y(the)e(t)o(yp)q(e)f(of)h(the)f(hin)o(t)h(v)m(alue.)23
b(If)15 b(sp)q(eci\014ed,)j(the)e(\\)p Fn([SAME])p Ft(")d(annotation)i
(stipulates)i(that)e(the)g(hin)o(t)75 1192 y(v)m(alues)j(pro)o(vided)g
(b)o(y)f(all)g(participating)h(pro)q(cesses)g(m)o(ust)e(b)q(e)i(iden)o
(tical,)h(otherwise)e(the)g(program)e(is)75 1248 y(erroneous.)-395
b Fp(>)15 b Fo(\(Oct\))75 1340 y Fe(striping)p 205 1340
13 2 v 16 w(unit)j Fn(\(in)o(teger\))g([SAME]:)j Ft(This)16
b(hin)o(t)h(sp)q(eci\014es)h(the)f(suggested)f(striping)h(unit)g(to)e
(b)q(e)i(used)189 1396 y(for)e(this)h(\014le.)22 b(The)16
b(striping)g(unit)g(is)h(the)e(amoun)o(t)g(of)g(consecutiv)o(e)i(data)e
(tak)o(en)g(from)g(one)h(I/O)189 1453 y(no)q(de)d(\(resp.)18
b(storage)12 b(device\))h(b)q(efore)g(progressing)f(to)g(the)h(next)f
(no)q(de)h(\(resp.)19 b(storage)11 b(device\),)189 1509
y(when)g(striping)h(across)e(a)h(n)o(um)o(b)q(er)g(of)f(no)q(des)i
(\(resp.)18 b(storage)10 b(devices\);)j(it)e(is)g(expressed)h(in)g(b)o
(ytes.)189 1566 y(This)19 b(hin)o(t)g(is)g(relev)m(an)o(t)g(only)g
(when)f(the)h(\014le)g(is)g(created,)g(and)g(if)g(used,)g(this)g(data)f
(should)h(b)q(e)189 1622 y(main)o(tained)f(b)o(y)g(the)g(\014le)h(serv)
o(er\(s\))d(as)i(part)f(of)g(the)h(metadata)e(asso)q(ciated)i(with)h
(the)e(\014le.)29 b(A)189 1678 y(go)q(o)q(d)13 b(size)h(for)f(a)g
(striping)h(unit)g(is)g(the)f(amoun)o(t)f(of)h(consecutiv)o(e)h(data)f
(accessed)h(indep)q(enden)o(tly)189 1735 y(b)o(y)h(a)g(pro)q(cess,)g
(or)f(if)i(this)g(is)f(to)q(o)g(small,)h(a)e(m)o(ultiple)j(of)e(that)g
(size.)75 1824 y Fe(striping)p 205 1824 V 16 w(facto)o(r)i
Fn(\(in)o(teger\))h([SAME]:)j Ft(This)15 b(hin)o(t)g(sp)q(eci\014es)h
(the)f(n)o(um)o(b)q(er)f(of)g(I/O)h(no)q(des)g(\(resp.)20
b(stor-)189 1880 y(age)15 b(devices\))j(that)d(the)h(\014le)i(should)f
(b)q(e)g(strip)q(ed)g(across,)e(and)i(is)f(relev)m(an)o(t)h(only)g
(when)g(the)f(\014le)189 1937 y(is)f(created.)75 2026
y Fe(num)p 153 2026 V 15 w(io)p 199 2026 V 14 w(no)q(des)k
Fn(\(in)o(teger\))f([SAME]:)j Ft(The)13 b(n)o(um)o(b)q(er)h(of)e(I/O)i
(no)q(des)g(in)g(the)f(system.)19 b(Used)13 b(to)g(sp)q(ecify)189
2082 y(the)g(ideal)i(n)o(um)o(b)q(er)f(of)f(I/O)h(no)q(des)g(for)e
(this)i(application)h(as)e(w)o(ell)i(as)e(query)g(the)h(n)o(um)o(b)q
(er)g(of)f(I/O)189 2138 y(no)q(des)i(actually)h(in)g(use.)75
2227 y Fe(io)p 108 2227 V 15 w(no)q(de)p 205 2227 V 16
w(list)h Fn(\(list)i(of)e(in)o(teger,)g(comma)h(separated\))g([SAME]:)i
Ft(In)11 b(addition)g(to)f(de\014ning)i(the)e(strip-)189
2284 y(ing)15 b(factor,)f(one)h(ma)o(y)f(w)o(an)o(t)g(to)g(giv)o(e)h
(the)g(explicit)i(list)f(of)e(I/O)h(no)q(des)h(\(resp.)j(storage)14
b(devices\))189 2340 y(that)g(should)i(b)q(e)g(used.)21
b(This)15 b(hin)o(t)h(is)g(relev)m(an)o(t)g(only)f(when)h(the)f(\014le)
i(is)e(created.)75 2429 y Fe(nb)p 119 2429 V 16 w(p)o(ro)q(c)j
Fn(\(in)o(teger\))g([SAME]:)j Ft(This)16 b(sp)q(eci\014es)i(the)d(n)o
(um)o(b)q(er)h(of)f(parallel)i(pro)q(cesses)f(that)f(will)j(t)o(ypi-)
189 2486 y(cally)13 b(b)q(e)g(assigned)g(to)e(run)i(programs)e(that)g
(access)i(this)f(\014le,)i(and)e(can)h(b)q(e)f(used)h(at)f(\014le)h
(creation.)75 2574 y Fe(access)p 183 2574 V 16 w(st)o(yle)18
b Fn(\(list)g(of)g(comma)f(separated)h(strings\):)k Ft(This)17
b(hin)o(t)f(sp)q(eci\014es)i(the)e(manner)g(in)h(whic)o(h)189
2631 y(the)e(\014le)h(will)h(b)q(e)f(accessed)g(un)o(til)g(the)f
(\014le)i(is)e(closed.)189 2704 y(The)g(hin)o(t)h(v)m(alue)g(is)g(a)f
(comma)f(separated)h(list)h(of)f(the)g(follo)o(wing)h(strings:)1967
46 y Fo(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(11.2.)34 b(FILE)15 b(MANIPULA)l(TION)1139
b Ft(19)98 49 y Fe(read)p 173 49 13 2 v 16 w(once)86
122 y(write)p 173 122 V 16 w(once)63 195 y(read)p 138
195 V 16 w(mostly)51 268 y(write)p 138 268 V 16 w(mostly)94
341 y(sequential)-40 415 y(reverse)p 79 415 V 17 w(sequential)135
488 y(random)75 581 y(collective)p 234 581 V 16 w(bu\013ering)20
b Fn(\(b)q(o)q(olean\))g([SAME]:)h Ft(This)11 b(hin)o(t)g(sp)q
(eci\014es)i(whether)d(the)h(application)i(will)f(b)q(en-)189
638 y(e\014t)j(from)g(collectiv)o(e)i(bu\013ering)f(\(an)f
(optimization)h(p)q(erformed)g(on)f(collectiv)o(e)i(accesses)f(whic)o
(h)189 694 y(coalesces)j(small)h(requests)e(in)o(to)h(large)g(disk)g
(accesses\).)30 b(Legal)20 b(v)m(alues)g(for)e(this)h(k)o(ey)g(are)f
Fe(true)189 751 y Ft(and)d Fe(false)p Ft(.)20 b(Collectiv)o(e)c
(bu\013ering)g(parameters)e(are)h(further)g(directed)i(via)e
(additional)i(hin)o(ts.)75 845 y Fe(cb)p 116 845 V 16
w(no)q(des)h Fn(\(in)o(teger\))h([SAME]:)h Ft(The)14
b(n)o(um)o(b)q(er)f(of)g(target)f(no)q(des)i(used)f(for)g(collectiv)o
(e)i(bu\013ering.)20 b(All)189 901 y(\014le)c(accesses)f(are)g(p)q
(erformed)h(b)o(y)f(the)g(target)f(no)q(des.)75 995 y
Fe(cb)p 116 995 V 16 w(blo)q(ck)p 223 995 V 16 w(size)k
Fn(\(in)o(teger\))g([SAME]:)i Ft(The)f(blo)q(c)o(k)g(size)g(used)g(for)
e(\014le)j(access.)29 b(T)l(arget)17 b(no)q(des)i(access)189
1051 y(data)10 b(in)i(c)o(h)o(unks)f(of)g(this)g(size.)19
b(The)11 b(c)o(h)o(unks)h(are)e(distributed)j(to)d(target)g(no)q(des)h
(in)h(a)f(round-robin)189 1108 y(\(CYCLIC\))k(pattern.)75
1202 y Fe(cb)p 116 1202 V 16 w(bu\013er)p 230 1202 V
17 w(size)i Fn(\(in)o(teger\))h([SAME]:)j Ft(The)h(total)f(bu\013er)h
(space)g(used)h(for)e(collectiv)o(e)j(bu\013ering)e(on)189
1258 y(eac)o(h)15 b(target)f(no)q(de;)h(usually)i(a)e(m)o(ultiple)i(of)
e Fe(cb)p 1012 1258 V 15 w(blo)q(ck)p 1118 1258 V 16
w(size)p Ft(.)75 1352 y Fe(chunk)o(ed)20 b Fn(\(list)f(of)f(comma)f
(separated)h(in)o(tegers\):)k Ft(This)h(hin)o(t)g(sp)q(eci\014es)i
(whether)e(the)f(applica-)189 1408 y(tion)e(will)i(b)q(ene\014t)f(from)
f(a)g(c)o(h)o(unk)o(ed)g(arra)o(y)f(la)o(y)o(out)h(on)g(disk)h(\(an)f
(optimization)h(supp)q(orting)189 1465 y(large,)14 b(m)o
(ultidimensional,)i(out-of-core)e(applications\).)21
b(The)14 b(v)m(alue)h(for)f(this)h(hin)o(t)f(is)h(a)f(comma)189
1521 y(separated)i(list)h(of)f(arra)o(y)f(dimensions)i(denoting)g(the)g
(size)g(of)f(the)g(global)h(arra)o(y)e(stored)h(in)h(the)189
1578 y(\014le.)75 1672 y Fe(chunk)o(ed)p 216 1672 V 18
w(size)h Fn(\(list)g(of)g(comma)f(separated)h(in)o(tegers\):)k
Ft(Size)11 b(of)f(the)g(a)o(v)o(erage)f(c)o(h)o(unk)i(accessed)g(\(ex-)
189 1728 y(ten)o(t)j(in)i(eac)o(h)g(dimension\).)75 1822
y Fe(chunk)o(ed)p 216 1822 V 18 w(p)o(rima)o(ry)h Fn(\(list)h(of)g
(strings\):)k Ft(Primary)10 b(Storage)f(order,)i(i.e.,)g(ho)o(w)e(the)i
(data)e(should)i(b)q(e)g(stored)189 1878 y(within)20
b(a)g(c)o(h)o(unk.)33 b(Eac)o(h)20 b(string)f(is)h(one)g(of)f
Fe(ro)o(w)p 1049 1878 V 15 w(majo)o(r)f Ft(\(i.e.)34
b(C)19 b(order\))g(or)g Fe(column)p 1669 1878 V 15 w(majo)o(r)f
Ft(\(i.e.)189 1935 y(F)o(OR)l(TRAN)e(order\).)75 2028
y Fe(chunk)o(ed)p 216 2028 V 18 w(seconda)o(ry)j Fn(\(list)g(of)e
(strings\):)22 b Ft(Secondary)f(storage)d(order,)i(i.e.,)h(ho)o(w)e
(the)h(c)o(h)o(unks)g(should)189 2085 y(b)q(e)c(ordered)g(on)f(disk.)22
b(Eac)o(h)15 b(string)h(is)g(one)f(of)g Fe(ro)o(w)p 1081
2085 V 15 w(majo)o(r)g Ft(\(i.e.)21 b(C)15 b(order\))g(or)g
Fe(column)p 1673 2085 V 15 w(majo)o(r)f Ft(\(i.e.)189
2141 y(F)o(OR)l(TRAN)i(order\).)166 2248 y(Sp)q(eci\014c)j(implemen)o
(tations)e(are)f(free)h(to)f(in)o(terpret)g(the)h(hin)o(ts)g(in)g
(sligh)o(tly)g(di\013eren)o(t)g(w)o(a)o(ys.)23 b(F)l(or)75
2304 y(example,)17 b(the)f(follo)o(wing)h(table)f(outlines)i(p)q
(ossible)g(in)o(terpretations)e(for)f(an)h(implemen)o(tation)i(based)75
2361 y(on)d(the)g(IBM)h(AIX)g(P)o(arallel)g(I/O)f(File)i(System)e([)p
Fn(?)o Ft(,)g Fn(?)p Ft(]:)p 653 2415 644 2 v 652 2472
2 57 v 678 2455 a Fj(hint)h(name)p 945 2472 V 92 w(interpr)n(etation)p
1296 2472 V 653 2473 644 2 v 652 2530 2 57 v 678 2513
a Fe(striping)p 808 2513 13 2 v 15 w(unit)p 945 2530
2 57 v 83 w Ft(BSU)g(size)p 1296 2530 V 652 2586 V 678
2569 a Fe(striping)p 808 2569 13 2 v 15 w(facto)o(r)p
945 2586 2 57 v 50 w Ft(n)o(um)o(b)q(er)g(of)e(cells)p
1296 2586 V 652 2643 V 678 2626 a Fe(io)p 711 2626 13
2 v 15 w(no)q(de)p 808 2626 V 16 w(list)p 945 2643 2
57 v 98 w Ft(base)h(no)q(de)p 1296 2643 V 653 2644 644
2 v 1875 2682 a Fp(?)h Fo(\(Oct\))-32 46 y(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 Ft(20)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Fl(11.2.10)50 b(Deleting)16 b(a)h(\014le)g(\(indep)q
(endent\))75 230 y Fm(MPI)p 160 230 14 2 v 16 w(DELETE\(\014lename\))
117 307 y Ff(IN)155 b Fm(\014lename)430 b Ff(Name)13
b(of)g(the)i(\014le)f(to)f(b)q(e)i(deleted)g(\(string\))75
431 y Fh(int)23 b(MPI)p 245 431 15 2 v 17 w(Delete\(char)g(*filename\))
75 518 y(int)g(static)g(MPI::Delete\(const)f(char)h(filename[]\))75
604 y(MPI)p 150 604 V 17 w(DELETE\(FILENAME,)e(IERROR\))170
661 y(CHARACTER)i(FILENAME\(*\))170 717 y(INTEGER)g(IERROR)166
803 y Fm(MPI)p 251 803 14 2 v 16 w(DELETE)15 b Ft(deletes)h(a)e
(\014le.)21 b(If)16 b(the)f(\014le)h(exists)f(it)h(is)f(remo)o(v)o(ed.)
20 b(If)15 b(there)g(are)g(other)g(pro)q(cesses)75 860
y(curren)o(tly)k(accessing)h(the)f(\014le,)i(the)e(status)f(of)h(the)g
(\014le)h(and)f(the)g(b)q(eha)o(vior)g(of)g(future)g(accesses)g(are)75
916 y(implemen)o(tation)d(dep)q(enden)o(t.)21 b(If)14
b(the)h(\014le)g(do)q(es)g(not)f(exist,)g Fm(MPI)p 1216
916 V 16 w(DELETE)g Ft(returns)g(a)g(w)o(arning)h(error)75
973 y(co)q(de.)189 1079 y Fj(A)n(dvic)n(e)i(to)i(implementors.)54
b Ft(If)17 b(the)h(\014le)h(to)d(b)q(e)j(deleted)g(is)f(op)q(ened)g(b)o
(y)g(other)f(pro)q(cesses,)h(\014le)189 1136 y(data)e(ma)o(y)h(still)i
(b)q(e)f(accessible)h(b)o(y)e(these)h(pro)q(cesses)g(un)o(til)g(they)g
(close)g(the)f(\014le)i(or)d(un)o(til)j(they)189 1192
y(exit.)h(\()p Fj(End)c(of)g(advic)n(e)g(to)h(implementors.)p
Ft(\))75 1314 y Fl(11.2.11)50 b(Resizing)17 b(a)g(\014le)f
(\(collective\))75 1494 y Fm(MPI)p 160 1494 V 16 w(RESIZE\(MPI)p
425 1494 V 16 w(File)f(fh,)g(MPI)p 671 1494 V 15 w(O\013set)i(size\))
117 1571 y Ff(INOUT)62 b Fm(fh)550 b Ff([SAME])14 b(V)m(alid)e(\014le)i
(handle)g(\(handle\))117 1646 y(IN)155 b Fm(size)519
b Ff([SAME])18 b(Size)h(whic)o(h)f(the)h(\014le)f(is)g(to)g(b)q(e)h
(truncated)h(at)e(or)905 1703 y(expanded)d(to)f(\(nonnegativ)o(e)f
(o\013set\))75 1827 y Fh(int)23 b(MPI)p 245 1827 15 2
v 17 w(Resize\(MPI)p 502 1827 V 16 w(File)g(fh,)h(MPI)p
805 1827 V 17 w(Offset)f(size\))75 1914 y(int)g
(MPI::File::Resize\(const)e(MPI::Offset)i(size\))75 2000
y(MPI)p 150 2000 V 17 w(RESIZE\(FH,)f(SIZE,)h(IERROR\))170
2057 y(INTEGER)g(FH,)h(IERROR)170 2113 y(INTEGER*8)f(SIZE)-117
2143 y Fp(>)15 b Fo(\(Oct\))166 2200 y Fm(MPI)p 251 2200
14 2 v 16 w(RESIZE)c Ft(resizes)h(the)f(\014le)h(asso)q(ciated)f(with)g
(the)g(\014le)h(handle)g Fm(fh)f Ft(truncating)g(or)g(preallo)q(cating)
75 2256 y(as)h(necessary)l(.)19 b(All)13 b(pro)q(cesses)g(in)g(the)f
(comm)o(unicator)g(group)g(m)o(ust)f(call)i Fm(MPI)p
1426 2256 V 16 w(RESIZE)g Ft(with)f(the)g(same)75 2313
y Fm(size)p Ft(.)166 2369 y(If)k Fm(size)g Ft(is)g(smaller)h(than)f
(the)g(curren)o(t)f(\014le)i(size,)g(the)f(\014le)g(is)h(truncated)f
(at)f(the)h(p)q(osition)h(de\014ned)75 2425 y(b)o(y)f
Fm(size)g Ft(\(from)f(the)h(b)q(eginning)i(of)d(the)h(\014le)h(and)f
(measured)g(in)h(b)o(ytes\).)k(File)c(blo)q(c)o(ks)g(lo)q(cated)f(b)q
(ey)o(ond)75 2482 y(that)c(p)q(osition)i(are)f(deallo)q(cated.)20
b(If)13 b Fm(size)g Ft(is)h(larger)f(than)f(the)h(curren)o(t)g(\014le)h
(size,)g(additional)g(\014le)g(blo)q(c)o(ks)75 2538 y(are)21
b(allo)q(cated)i(and)e(the)h(\014le)h(size)f(b)q(ecomes)g
Fm(size)p Ft(.)39 b(File)23 b(preallo)q(cation)g(b)q(eha)o(v)o(es)e(as)
h(if)g(the)f(newly)75 2595 y(allo)q(cated)e(region)g(in)g(the)g(\014le)
g(has)f(b)q(een)i(written)e(using)i Fm(MPI)p 1190 2595
V 15 w(WRITE)p 1348 2595 V 17 w(EXPLICIT)d Ft(with)i(unde\014ned)75
2651 y(data.)g Fm(MPI)p 281 2651 V 16 w(RESIZE)c Ft(do)q(es)h(not)f
(a\013ect)f(the)i(individual)i(\014le)e(p)q(oin)o(ters)g(or)e(the)i
(shared)f(\014le)h(p)q(oin)o(ter.)1967 46 y Fo(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(11.2.)34 b(FILE)15 b(MANIPULA)l(TION)1139
b Ft(21)189 49 y Fj(A)n(dvic)n(e)18 b(to)h(users.)58
b Ft(It)18 b(is)h(p)q(ossible)h(for)e(the)g(\014le)h(p)q(oin)o(ters)g
(to)e(p)q(oin)o(t)i(b)q(ey)o(ond)g(the)f(end)h(of)f(\014le)189
106 y(after)12 b(a)h Fm(MPI)p 415 106 14 2 v 16 w(RESIZE)g
Ft(op)q(eration)h(truncates)f(a)f(\014le.)21 b(This)13
b(is)h(legal,)g(and)g(equiv)m(alen)o(t)h(to)d(seeking)189
162 y(b)q(ey)o(ond)j(the)h(curren)o(t)f(end)h(of)e(\014le.)21
b(\()p Fj(End)16 b(of)g(advic)n(e)g(to)h(users.)p Ft(\))166
268 y(Outstanding)c(data)f(access)g(op)q(erations)h(b)q(eha)o(v)o(e)g
(in)g(one)f(of)g(t)o(w)o(o)f(w)o(a)o(ys:)18 b(as)12 b(if)h(it)f(w)o(as)
g(en)o(tirely)h(p)q(er-)75 325 y(formed)i(b)q(efore)g
Fm(MPI)p 449 325 V 16 w(RESIZE)g Ft(w)o(as)f(called,)i(or)f(as)g(if)g
(it)g(w)o(as)f(en)o(tirely)i(p)q(erformed)g(after)e Fm(MPI)p
1713 325 V 16 w(RESIZE)75 381 y Ft(w)o(as)h(called.)21
b(The)16 b(exact)f(b)q(eha)o(vior)h(\(whic)o(h)g(of)f(these)g(t)o(w)o
(o)f(c)o(hoices\))i(of)f(eac)o(h)g(outstanding)h(op)q(eration)75
438 y(is)k(implemen)o(tation)i(dep)q(enden)o(t.)35 b(F)l(or)19
b(example,)j(an)e(outstanding)g(non)o(blo)q(c)o(king)h(read)f(of)f(a)h
(trun-)75 494 y(cated)h(region)f(in)i(a)e(\014le)i(ma)o(y)d(either)j
(return)e(the)h(data)f(\(that)f(existed)j(b)q(efore)f(truncation\))f
(or)g(an)75 551 y Fe(MPI)p 152 551 13 2 v 14 w(ERR)p
245 551 V 15 w(EOF)14 b Ft(error.)1413 b Fp(?)16 b Fo(\(Oct\))75
672 y Fl(11.2.12)50 b(Querying)17 b(the)e(size)h(of)h(a)g(\014le)75
853 y Fm(MPI)p 160 853 14 2 v 16 w(GET)p 264 853 V 17
w(SIZE\(MPI)p 474 853 V 15 w(File)e(fh,)g(MPI)p 719 853
V 16 w(O\013set)h(size\))117 930 y Ff(IN)155 b Fm(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 1005
y(OUT)108 b Fm(size)519 b Ff(Curren)o(t)15 b(size)g(of)e(the)i(\014le)e
(in)h(b)o(ytes)g(\(nonnegativ)o(e)g(o\013set\))75 1130
y Fh(int)23 b(MPI)p 245 1130 15 2 v 17 w(Get)p 334 1130
V 17 w(size\(MPI)p 543 1130 V 16 w(File)g(fh,)h(MPI)p
846 1130 V 17 w(Offset)f(*size\))1875 1166 y Fp(>)16
b Fo(\(Oct\))75 1216 y Fh(int)23 b(MPI::File::Get)p 509
1216 V 16 w(size\(MPI::Offset&)e(size\))75 1302 y(MPI)p
150 1302 V 17 w(GET)p 239 1302 V 17 w(SIZE\(FH,)h(SIZE,)h(IERROR\))170
1359 y(INTEGER)g(FH,)h(IERROR)170 1415 y(INTEGER*8)f(SIZE)1875
1445 y Fp(?)16 b Fo(\(Oct\))166 1502 y Fm(MPI)p 251 1502
14 2 v 16 w(GET)p 355 1502 V 16 w(SIZE)11 b Ft(returns)g(the)g(curren)o
(t)g(size)h(in)g(b)o(ytes)e(of)h(the)g(\014le)h(asso)q(ciated)f(with)h
(the)f(\014le)h(handle)75 1558 y Fm(fh)p Ft(,)j(in)h
Fm(size)p Ft(.)1601 b Fp(>)16 b Fo(\(Oct\))189 1665 y
Fj(A)n(dvic)n(e)e(to)h(users.)39 b Ft(Note)14 b(that)f(a)g
Fm(MPI)p 868 1665 V 16 w(GET)p 972 1665 V 17 w(SIZE)g
Ft(whic)o(h)i(follo)o(ws)f(a)g Fm(MPI)p 1491 1665 V 15
w(RESIZE)g Ft(will)i(return)189 1721 y(the)f(newly)h(truncated)f(or)g
(preallo)q(cated)h(size.)21 b(\()p Fj(End)16 b(of)g(advic)n(e)g(to)h
(users.)p Ft(\))1875 1782 y Fp(?)f Fo(\(Oct\))-32 46
y(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 Ft(22)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Fq(11.3)60 b(Data)19 b(Access)h(With)g(Explicit)e
(O\013sets)75 152 y Fl(11.3.1)49 b(Blo)q(cking)18 b(Read)75
333 y Fm(MPI)p 160 333 14 2 v 16 w(READ)p 295 333 V 17
w(EXPLICIT\(fh,)c(o\013set,)h(bu\013,)g(buft)o(yp)q(e,)i(bufcount,)g
(status\))117 410 y Ff(INOUT)62 b Fm(fh)550 b Ff(V)m(alid)13
b(\014le)g(handle)h(\(handle\))117 485 y(IN)155 b Fm(o\013set)484
b Ff(File)14 b(o\013set)g(\(nonnegativ)o(e)g(o\013set\))117
560 y(OUT)108 b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i
(user's)f(bu\013er)h(\(in)o(teger\))117 635 y(IN)155
b Fm(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f
(\(handle\))117 710 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14
b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(in)o(teger\))117
786 y(OUT)108 b Fm(status)476 b Ff(Status)15 b(information)c
(\(Status\))75 910 y Fh(int)23 b(MPI)p 245 910 15 2 v
17 w(Read)p 358 910 V 17 w(explicit\(MPI)p 663 910 V
15 w(File)h(fh,)f(MPI)p 965 910 V 17 w(Offset)g(offset,)g(void)g
(*buff,)393 966 y(MPI)p 468 966 V 17 w(Datatype)g(buftype,)f(int)i
(bufcount,)f(MPI)p 1321 966 V 16 w(Status)g(*status\))75
1053 y(int)g(MPI::File::Read)p 533 1053 V 16 w(explicit\(const)f
(MPI::Offset)g(offset,)h(void*)g(buff,)393 1109 y(const)g
(MPI::Datatype&)f(buftype,)h(const)g(int)h(bufcount,)393
1166 y(MPI::Status&)e(status\))75 1252 y(MPI)p 150 1252
V 17 w(READ)p 263 1252 V 16 w(EXPLICIT\(FH,)h(OFFSET,)g(BUFF,)g
(BUFTYPE,)f(BUFCOUNT,)h(STATUS,)g(IERROR\))170 1309 y(<type>)g
(BUFF\(*\))170 1365 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f
(STATUS\(MPI)p 1153 1365 V 16 w(STATUS)p 1313 1365 V
16 w(SIZE\),)h(IERROR)170 1422 y(INTEGER*8)g(OFFSET)166
1508 y Fm(MPI)p 251 1508 14 2 v 16 w(READ)p 386 1508
V 17 w(EXPLICIT)17 b Ft(attempts)f(to)h(read)h(from)e(the)i(\014le)h
(asso)q(ciated)f(with)g Fm(fh)f Ft(\(at)g(the)h Fm(o\013set)75
1565 y Ft(p)q(osition\))j(a)e(total)h(n)o(um)o(b)q(er)g(of)f
Fm(bufcount)j Ft(data)e(items)g(ha)o(ving)g Fm(buft)o(yp)q(e)i
Ft(datat)o(yp)q(e)d(in)o(to)h(the)g(user's)75 1621 y(bu\013er)c
Fm(bu\013)p Ft(.)22 b(The)16 b Fm(o\013set)g Ft(is)h(in)g
Fm(et)o(yp)q(e)g Ft(units)f(relativ)o(e)h(to)e(the)h(curren)o(t)g
(view.)22 b(The)16 b(data)g(is)g(tak)o(en)f(out)75 1677
y(of)i(those)g(parts)f(of)h(the)g(\014le)h(sp)q(eci\014ed)i(b)o(y)d
(\014let)o(yp)q(e.)27 b Fm(MPI)p 1097 1677 V 16 w(READ)p
1232 1677 V 17 w(EXPLICIT)16 b Ft(stores)h(the)g(n)o(um)o(b)q(er)g(of)
75 1734 y Fm(buft)o(yp)q(e)g Ft(elemen)o(ts)f(actually)g(read)f(in)h
Fm(status)p Ft(.)75 1885 y Fm(MPI)p 160 1885 V 16 w(READ)p
295 1885 V 17 w(EXPLICIT)p 509 1885 V 16 w(ALL\(fh,)e(o\013set,)h
(bu\013,)g(buft)o(yp)q(e,)i(bufcount,)g(status\))75 1989
y Fh(int)23 b(MPI)p 245 1989 15 2 v 17 w(Read)p 358 1989
V 17 w(explicit)p 567 1989 V 16 w(all\(MPI)p 751 1989
V 16 w(File)g(fh,)h(MPI)p 1054 1989 V 17 w(Offset)f(offset,)g(void)g
(*buff,)393 2045 y(MPI)p 468 2045 V 17 w(Datatype)g(buftype,)f(int)i
(bufcount,)f(MPI)p 1321 2045 V 16 w(Status)g(*status\))75
2131 y(int)g(MPI::File::Read)p 533 2131 V 16 w(explicit)p
741 2131 V 16 w(all\(const)f(MPI::Offset)h(offset,)g(void*)g(buff,)393
2188 y(const)g(MPI::Datatype&)f(buftype,)h(const)g(int)h(bufcount,)393
2244 y(MPI::Status&)e(status\))75 2331 y(MPI)p 150 2331
V 17 w(READ)p 263 2331 V 16 w(EXPLICIT)p 471 2331 V 16
w(ALL\(FH,)h(OFFSET,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)g(STATUS,)g
(IERROR\))170 2387 y(<type>)g(BUFF\(*\))170 2444 y(INTEGER)g(FH,)h
(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p 1153 2444 V 16
w(STATUS)p 1313 2444 V 16 w(SIZE\),)h(IERROR)170 2500
y(INTEGER*8)g(OFFSET)166 2587 y Fm(MPI)p 251 2587 14
2 v 16 w(READ)p 386 2587 V 17 w(EXPLICIT)p 600 2587 V
15 w(ALL)14 b Ft(is)h(a)f(collectiv)o(e)i(v)o(ersion)e(of)g(the)g(blo)q
(c)o(king)i Fm(MPI)p 1530 2587 V 16 w(READ)p 1665 2587
V 17 w(EXPLICIT)75 2643 y Ft(in)o(terface.)j(This)10
b(routine)h(is)g(seman)o(tically)h(iden)o(tical)g(to)d
Fm(MPI)p 1136 2643 V 16 w(READ)p 1271 2643 V 17 w(EXPLICIT)p
Ft(,)g(except)i(that)f(all)h(pro-)75 2700 y(cesses)f(in)h(the)g(comm)o
(unicator)f(group)f(asso)q(ciated)i(with)f(the)g(\014le)i(handle)f
Fm(fh)g Ft(m)o(ust)e(call)i Fm(MPI)p 1647 2700 V 16 w(READ)p
1782 2700 V 17 w(EXPLICIT)p 1996 2700 V 16 w(ALL)p Ft(.)1967
46 y Fo(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(11.3.)34 b(D)o(A)l(T)l(A)15 b(A)o(CCESS)g(WITH)g
(EXPLICIT)h(OFFSETS)697 b Ft(23)75 49 y Fl(11.3.2)49
b(Blo)q(cking)18 b(W)o(rite)75 230 y Fm(MPI)p 160 230
14 2 v 16 w(WRITE)p 319 230 V 16 w(EXPLICIT\(fh,)c(o\013set,)h(bu\013,)
h(buft)o(yp)q(e,)g(bufcount,)h(status\))117 307 y Ff(INOUT)62
b Fm(fh)550 b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117
382 y(IN)155 b Fm(o\013set)484 b Ff(File)14 b(o\013set)g(\(nonnegativ)o
(e)g(o\013set\))117 457 y(IN)155 b Fm(bu\013)514 b Ff(Initial)13
b(address)i(of)e(the)i(user's)f(bu\013er)h(\(in)o(teger\))117
532 y(IN)155 b Fm(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o
(yp)q(e)f(\(handle\))117 607 y(IN)155 b Fm(bufcount)422
b Ff(Num)o(b)q(er)14 b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(in)o
(teger\))117 682 y(OUT)108 b Fm(status)476 b Ff(Status)15
b(information)c(\(Status\))75 807 y Fh(int)47 b(MPI)p
269 807 15 2 v 17 w(Write)p 406 807 V 17 w(explicit\(MPI)p
711 807 V 15 w(File)23 b(fh,)h(MPI)p 1013 807 V 17 w(Offset)f(offset,)g
(void)g(*buff,)393 863 y(MPI)p 468 863 V 17 w(Datatype)g(buftype,)f
(int)i(bufcount,)f(MPI)p 1321 863 V 16 w(Status)g(*status\))75
950 y(int)g(MPI::File::Write)p 557 950 V 15 w(explicit\(const)f
(MPI::Offset)h(offset,)g(const)g(void*)g(buff,)393 1006
y(const)g(MPI::Datatype&)f(buftype,)h(const)g(int)h(bufcount,)393
1063 y(MPI::Status&)e(status\))75 1149 y(MPI)p 150 1149
V 17 w(WRITE)p 287 1149 V 16 w(EXPLICIT\(FH,)g(OFFSET,)h(BUFF,)h
(BUFTYPE,)e(BUFCOUNT,)h(STATUS,)g(IERROR\))170 1206 y(<type>)g
(BUFF\(*\))170 1262 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f
(STATUS\(MPI)p 1153 1262 V 16 w(STATUS)p 1313 1262 V
16 w(SIZE\),)h(IERROR)170 1319 y(INTEGER*8)g(OFFSET)166
1405 y Fm(MPI)p 251 1405 14 2 v 16 w(WRITE)p 410 1405
V 16 w(EXPLICIT)15 b Ft(attempts)g(to)g(write)g(in)o(to)h(the)g(\014le)
g(asso)q(ciated)g(with)g Fm(fh)g Ft(\(at)f(the)h Fm(o\013set)75
1461 y Ft(p)q(osition\))j(a)g(total)f(n)o(um)o(b)q(er)h(of)f
Fm(bufcount)j Ft(data)d(items)i(ha)o(ving)f Fm(buft)o(yp)q(e)h
Ft(datat)o(yp)q(e)e(from)g(the)h(user's)75 1518 y(bu\013er)f
Fm(bu\013)p Ft(.)29 b(The)19 b Fm(o\013set)f Ft(is)h(in)g
Fm(et)o(yp)q(e)g Ft(units)g(relativ)o(e)g(to)f(the)g(curren)o(t)g
(view.)29 b(The)19 b(data)e(is)i(written)75 1574 y(in)o(to)d(those)h
(parts)e(of)i(the)f(\014le)i(sp)q(eci\014ed)g(b)o(y)f(\014let)o(yp)q
(e.)24 b Fm(MPI)p 1129 1574 V 16 w(WRITE)p 1288 1574
V 17 w(EXPLICIT)15 b Ft(stores)h(the)h(n)o(um)o(b)q(er)75
1631 y(of)e Fm(buft)o(yp)q(e)i Ft(elemen)o(ts)f(actually)g(written)f
(in)h Fm(status)p Ft(.)75 1782 y Fm(MPI)p 160 1782 V
16 w(WRITE)p 319 1782 V 16 w(EXPLICIT)p 532 1782 V 16
w(ALL\(fh,)e(o\013set,)h(bu\013,)h(buft)o(yp)q(e,)g(bufcount,)h
(status\))75 1885 y Fh(int)23 b(MPI)p 245 1885 15 2 v
17 w(Write)p 382 1885 V 17 w(explicit)p 591 1885 V 16
w(all\(MPI)p 775 1885 V 16 w(File)g(fh,)h(MPI)p 1078
1885 V 17 w(Offset)f(offset,)g(void)g(*buff,)393 1942
y(MPI)p 468 1942 V 17 w(Datatype)g(buftype,)f(int)i(bufcount,)f(MPI)p
1321 1942 V 16 w(Status)g(*status\))75 2028 y(int)g(MPI::File::Write)p
557 2028 V 15 w(explicit)p 764 2028 V 17 w(all\(const)f(MPI::Offset)h
(offset,)393 2085 y(const)g(void*)h(buff,)f(const)g(MPI::Datatype&)f
(buftype,)393 2141 y(const)h(int)h(bufcount,)e(MPI::Status&)h(status\))
75 2228 y(MPI)p 150 2228 V 17 w(WRITE)p 287 2228 V 16
w(EXPLICIT)p 495 2228 V 16 w(ALL\(FH,)g(OFFSET,)g(BUFF,)g(BUFTYPE,)g
(BUFCOUNT,)g(STATUS,)g(IERROR\))170 2284 y(<type>)g(BUFF\(*\))170
2341 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p
1153 2341 V 16 w(STATUS)p 1313 2341 V 16 w(SIZE\),)h(IERROR)170
2397 y(INTEGER*8)g(OFFSET)166 2484 y Fm(MPI)p 251 2484
14 2 v 16 w(WRITE)p 410 2484 V 16 w(EXPLICIT)p 623 2484
V 16 w(ALL)9 b Ft(is)i(a)f(collectiv)o(e)i(v)o(ersion)e(of)g(the)g(blo)
q(c)o(king)i Fm(MPI)p 1521 2484 V 15 w(WRITE)p 1679 2484
V 17 w(EXPLICIT)75 2540 y Ft(in)o(terface.)26 b(This)17
b(routine)h(is)f(seman)o(tically)i(iden)o(tical)g(to)d
Fm(MPI)p 1184 2540 V 16 w(WRITE)p 1343 2540 V 16 w(EXPLICIT)p
Ft(,)g(except)i(that)e(all)75 2596 y(pro)q(cesses)11
b(in)g(the)f(comm)o(unicator)g(group)f(asso)q(ciated)i(with)f(the)g
(\014le)i(handle)f Fm(fh)g Ft(m)o(ust)e(call)i Fm(MPI)p
1714 2596 V 16 w(WRITE)p 1873 2596 V 17 w(EXPLICIT)p
2087 2596 V 15 w(ALL)p Ft(.)-32 46 y Fo(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 Ft(24)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Fl(11.3.3)49 b(Nonblo)q(cking)19 b(Read)75
230 y Fm(MPI)p 160 230 14 2 v 16 w(IREAD)p 308 230 V
16 w(EXPLICIT\(fh,)c(o\013set,)g(bu\013,)g(buft)o(yp)q(e,)i(bufcount,)g
(request\))117 307 y Ff(INOUT)62 b Fm(fh)550 b Ff(V)m(alid)13
b(\014le)g(handle)h(\(handle\))117 382 y(IN)155 b Fm(o\013set)484
b Ff(File)14 b(O\013set)h(\(nonnegativ)o(e)f(o\013set\))117
457 y(OUT)108 b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i
(user's)f(bu\013er)h(\(in)o(teger\))117 532 y(IN)155
b Fm(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f
(\(handle\))117 607 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14
b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)o(e)g(in)o(teger\))
117 682 y(OUT)108 b Fm(request)452 b Ff(Read)14 b(request)h(handle)f
(\(handle\))75 807 y Fh(int)23 b(MPI)p 245 807 15 2 v
17 w(Iread)p 382 807 V 17 w(explicit\(MPI)p 687 807 V
15 w(File)h(fh,)f(MPI)p 989 807 V 17 w(Offset)g(offset,)g(void)g
(*buff,)393 863 y(MPI)p 468 863 V 17 w(Datatype)g(buftype,)f(int)i
(bufcount,)f(MPI)p 1321 863 V 16 w(Request)g(*request\))75
950 y(int)g(MPI::File::Iread)p 557 950 V 15 w(explicit\(const)f
(MPI::Offset)h(offset,)g(void*)g(buff,)393 1006 y(const)g
(MPI::Datatype&)f(buftype,)h(const)g(int)h(bufcount,)393
1063 y(MPI::Request&)e(request\))75 1149 y(MPI)p 150
1149 V 17 w(IREAD)p 287 1149 V 16 w(EXPLICIT\(FH,)g(OFFSET,)h(BUFF,)h
(BUFTYPE,)e(BUFCOUNT,)h(REQUEST,)g(IERROR\))170 1206
y(<type>)g(BUFF\(*\))170 1262 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f
(REQUEST,)h(IERROR)170 1319 y(INTEGER*8)g(OFFSET)166
1405 y Fm(MPI)p 251 1405 14 2 v 16 w(IREAD)p 399 1405
V 16 w(EXPLICIT)15 b Ft(is)h(a)g(non)o(blo)q(c)o(king)h(v)o(ersion)e
(of)h(the)f Fm(MPI)p 1332 1405 V 16 w(READ)p 1467 1405
V 17 w(EXPLICIT)g Ft(in)o(terface.)75 1461 y Fm(MPI)p
160 1461 V 16 w(IREAD)p 308 1461 V 16 w(EXPLICIT)c Ft(asso)q(ciates)f
(a)h(request)g(handle)h Fm(request)g Ft(with)f(the)g(I/O)g(request.)19
b(The)11 b(request)75 1518 y(handle)18 b(can)f(b)q(e)g(used)h(later)e
(to)g(query)h(the)g(status)f(of)g(the)h(read)g(request)f(\(via)h
Fm(MPI)p 1559 1518 V 16 w(TEST)p Ft(\),)f(or)g(w)o(ait)75
1574 y(for)f(its)g(completion)h(\(via)f Fm(MPI)p 617
1574 V 16 w(W)l(AIT)p Ft(\).)166 1631 y(The)k(non)o(blo)q(c)o(king)i
(read)e(call)h(indicates)g(that)e(the)i(system)e(can)h(start)f(to)h
(read)f(data)h(in)o(to)g(the)75 1687 y(supplied)26 b(bu\013er.)47
b(The)24 b(user)g(should)h(not)f(access)g(an)o(y)g(part)f(of)h(the)g
(bu\013er)g(after)f(a)h(non)o(blo)q(c)o(k-)75 1744 y(ing)e(read)f(is)h
(called,)i(un)o(til)f(the)e(read)h(completes)g(\(as)e(indicated)j(b)o
(y)f Fm(MPI)p 1424 1744 V 15 w(TEST)g Ft(or)f Fm(MPI)p
1719 1744 V 16 w(W)l(AIT)p Ft(\).)75 1800 y Fm(MPI)p
160 1800 V 16 w(IREAD)p 308 1800 V 16 w(EXPLICIT)15 b
Ft(attempts)f(to)g(read)h(from)f(the)h(\014le)h(asso)q(ciated)f(with)h
Fm(fh)f Ft(\(at)f(the)h Fm(o\013set)g Ft(p)q(osi-)75
1857 y(tion\),)f(a)g(total)g(n)o(um)o(b)q(er)g(of)g Fm(bufcount)i
Ft(data)e(items)g(ha)o(ving)h Fm(buft)o(yp)q(e)h Ft(t)o(yp)q(e)e(in)o
(to)g(the)h(user's)f(bu\013er)g Fm(bu\013)p Ft(.)75 1913
y(The)k Fm(o\013set)g Ft(is)g(in)h Fm(et)o(yp)q(e)g Ft(units)g(relativ)
o(e)f(to)f(the)h(curren)o(t)g(view.)28 b(The)18 b(n)o(um)o(b)q(er)g(of)
g Fm(buft)o(yp)q(e)h Ft(elemen)o(ts)75 1970 y(actually)e(read)g(can)f
(b)q(e)h(extracted)g(from)e(the)i Fm(MPI)p 975 1970 V
16 w(TEST)f Ft(or)g Fm(MPI)p 1260 1970 V 16 w(W)l(AIT)h
Ft(return)f(status,)g(using)h(the)75 2026 y(routines)f
Fm(MPI)p 335 2026 V 15 w(GET)p 438 2026 V 17 w(COUNT)g
Ft(or)f Fm(MPI)p 765 2026 V 16 w(GET)p 869 2026 V 16
w(ELEMENTS)p Ft(.)75 2177 y Fm(MPI)p 160 2177 V 16 w(IREAD)p
308 2177 V 16 w(EXPLICIT)p 521 2177 V 16 w(ALL\(fh,)g(o\013set,)g
(bu\013,)g(buft)o(yp)q(e,)i(bufcount,)f(request\))75
2281 y Fh(int)23 b(MPI)p 245 2281 15 2 v 17 w(Iread)p
382 2281 V 17 w(explicit)p 591 2281 V 16 w(all\(MPI)p
775 2281 V 16 w(File)g(fh,)h(MPI)p 1078 2281 V 17 w(Offset)f(offset,)g
(void)g(*buff,)393 2337 y(MPI)p 468 2337 V 17 w(Datatype)g(buftype,)f
(int)i(bufcount,)f(MPI)p 1321 2337 V 16 w(Request)g(*request\))75
2424 y(int)g(MPI::File::Iread)p 557 2424 V 15 w(explicit)p
764 2424 V 17 w(all\(const)f(MPI::Offset)h(offset,)f(void*)i(buff,)393
2480 y(const)f(MPI::Datatype&)f(buftype,)h(const)g(int)h(bufcount,)393
2536 y(MPI::Request&)e(request\))75 2623 y(MPI)p 150
2623 V 17 w(IREAD)p 287 2623 V 16 w(EXPLICIT)p 495 2623
V 16 w(ALL\(FH,)h(OFFSET,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)g(REQUEST,)g
(IERROR\))170 2679 y(<type>)g(BUFF\(*\))1967 46 y Fo(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(11.3.)34 b(D)o(A)l(T)l(A)15 b(A)o(CCESS)g(WITH)g
(EXPLICIT)h(OFFSETS)697 b Ft(25)170 49 y Fh(INTEGER)23
b(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)170
106 y(INTEGER*8)g(OFFSET)166 192 y Fm(MPI)p 251 192 14
2 v 16 w(IREAD)p 399 192 V 16 w(EXPLICIT)p 612 192 V
16 w(ALL)10 b Ft(is)g(a)g(collectiv)o(e)i(v)o(ersion)e(of)g(the)g(non)o
(blo)q(c)o(king)i Fm(MPI)p 1582 192 V 16 w(IREAD)p 1730
192 V 16 w(EXPLICIT)75 249 y Ft(in)o(terface.)28 b(This)19
b(routine)f(is)h(seman)o(tically)g(iden)o(tical)h(to)d
Fm(MPI)p 1192 249 V 16 w(IREAD)p 1340 249 V 16 w(EXPLICIT)p
Ft(,)g(except)i(that)e(all)75 305 y(pro)q(cesses)11 b(in)g(the)f(comm)o
(unicator)g(group)f(asso)q(ciated)i(with)f(the)g(\014le)i(handle)f
Fm(fh)g Ft(m)o(ust)e(call)i Fm(MPI)p 1714 305 V 16 w(IREAD)p
1862 305 V 17 w(EXPLICIT)p 2076 305 V 16 w(ALL)p Ft(.)75
424 y Fl(11.3.4)49 b(Nonblo)q(cking)19 b(W)o(rite)75
604 y Fm(MPI)p 160 604 V 16 w(IWRITE)p 332 604 V 16 w(EXPLICIT\(fh,)14
b(o\013set,)h(bu\013,)g(buft)o(yp)q(e,)i(bufcount,)g(request\))117
681 y Ff(INOUT)62 b Fm(fh)550 b Ff(V)m(alid)13 b(\014le)g(handle)h
(\(handle\))117 753 y(IN)155 b Fm(o\013set)484 b Ff(File)14
b(O\013set)h(\(nonnegativ)o(e)f(o\013set\))117 825 y(IN)155
b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i(user's)f
(bu\013er)h(\(in)o(teger\))117 896 y(IN)155 b Fm(buft)o(yp)q(e)447
b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117
968 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14 b(of)f(buft)o(yp)q
(e)h(elemen)o(ts)g(\(nonnegativ)o(e)g(in)o(teger\))117
1040 y(OUT)108 b Fm(request)452 b Ff(W)m(rite)14 b(request)h(handle)f
(\(handle\))75 1164 y Fh(int)47 b(MPI)p 269 1164 15 2
v 17 w(Iwrite)p 430 1164 V 16 w(explicit\(MPI)p 734 1164
V 16 w(File)23 b(fh,)h(MPI)p 1037 1164 V 17 w(Offset)f(offset,)f(void)i
(*buff,)393 1221 y(MPI)p 468 1221 V 17 w(Datatype)f(buftype,)f(int)i
(bufcount,)f(MPI)p 1321 1221 V 16 w(Request)g(*request\))75
1307 y(int)g(MPI::File::Iwrite)p 581 1307 V 15 w(explicit\(const)f
(MPI::Offset)h(offset,)g(const)g(void*)g(buff,)393 1364
y(const)g(MPI::Datatype&)f(buftype,)h(const)g(int)h(bufcount,)393
1420 y(MPI::Request&)e(request\))75 1506 y(MPI)p 150
1506 V 17 w(IWRITE)p 311 1506 V 16 w(EXPLICIT\(FH,)g(OFFSET,)h(BUFF,)g
(BUFTYPE,)g(BUFCOUNT,)g(REQUEST,)g(IERROR\))170 1563
y(<type>)g(BUFF\(*\))170 1619 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f
(REQUEST,)h(IERROR)170 1676 y(INTEGER*8)g(OFFSET)166
1762 y Fm(MPI)p 251 1762 14 2 v 16 w(IWRITE)p 423 1762
V 16 w(EXPLICIT)18 b Ft(is)i(a)e(non)o(blo)q(c)o(king)j(v)o(ersion)e
(of)g(the)g Fm(MPI)p 1380 1762 V 16 w(WRITE)p 1539 1762
V 16 w(EXPLICIT)g Ft(in)o(ter-)75 1819 y(face.)g Fm(MPI)p
269 1819 V 16 w(IWRITE)p 441 1819 V 16 w(EXPLICIT)12
b Ft(asso)q(ciates)h(a)g(request)g(handle)i Fm(request)f
Ft(with)g(the)f(I/O)h(request.)19 b(The)75 1875 y(request)d(handle)h
(can)e(b)q(e)i(used)f(later)f(to)g(query)h(the)g(status)f(of)g(the)h
(write)f(request)h(\(via)g Fm(MPI)p 1718 1875 V 15 w(TEST)p
Ft(\),)75 1932 y(or)f(w)o(ait)f(for)h(its)g(completion)i(\(via)e
Fm(MPI)p 773 1932 V 16 w(W)l(AIT)p Ft(\).)166 1988 y(The)h(non)o(blo)q
(c)o(king)h(write)f(call)h(indicates)g(that)e(the)h(system)f(can)h
(start)f(to)g(write)h(data)f(from)g(the)75 2045 y(supplied)21
b(bu\013er.)30 b(The)19 b(user)g(should)h(not)e(access)h(an)o(y)f(part)
g(of)h(the)f(bu\013er)h(after)f(the)h(non)o(blo)q(c)o(king)75
2101 y(write)c(is)h(called,)g(un)o(til)h(the)e(write)g(completes)h
(\(as)f(indicated)i(b)o(y)e Fm(MPI)p 1309 2101 V 16 w(TEST)g
Ft(or)g Fm(MPI)p 1592 2101 V 15 w(W)l(AIT)p Ft(\).)127
b Fp(>)16 b Fo(\(Oct\))166 2205 y Fg(Discussion:)j Ff(This)c
(restriction,)i(that)f(the)g(user)h(shouldn't)e(access)i(the)g
(bu\013er)f(un)o(til)f(the)h(non)o(blo)q(c)o(king)75
2261 y(op)q(eration)g(completes,)h(has)g(iden)o(tical)e(seman)o(tics)h
(to)h(non)o(blo)q(c)o(king)e(comm)o(unication.)23 b(Ho)o(w)o(ev)o(er,)
17 b(this)f(limits)75 2318 y(the)f(abilit)o(y)d(for)i(a)f(user)i(to)f
(o)o(v)o(erlap)g(computation)e(and)i(I/O|do)f(w)o(e)h(need)h(this)f
(restriction)h(for)f(I/O,)f(what)h(is)75 2374 y(the)g(p)q(enalt)o(y)g
(for)g(relaxing)f(it)g(for)h(I/O?)1875 2432 y Fp(?)i
Fo(\(Oct\))166 2478 y Fm(MPI)p 251 2478 V 16 w(IWRITE)p
423 2478 V 16 w(EXPLICIT)e Ft(attempts)f(to)h(write)h(in)o(to)f(the)h
(\014le)h(asso)q(ciated)f(with)f Fm(fh)h Ft(\(at)f(the)h
Fm(o\013set)75 2534 y Ft(p)q(osition\),)g(a)f(total)g(n)o(um)o(b)q(er)h
(of)f Fm(bufcount)j Ft(data)d(items)h(ha)o(ving)g Fm(buft)o(yp)q(e)h
Ft(t)o(yp)q(e)f(from)f(the)h(user's)f(bu\013er)75 2591
y Fm(bu\013)p Ft(.)19 b(The)11 b Fm(o\013set)g Ft(is)h(in)g
Fm(et)o(yp)q(e)g Ft(units)g(relativ)o(e)f(to)f(the)h(curren)o(t)g
(view.)19 b(The)12 b(n)o(um)o(b)q(er)f(of)f Fm(buft)o(yp)q(e)j
Ft(elemen)o(ts)75 2647 y(actually)19 b(written)f(can)h(b)q(e)g
(extracted)e(from)h(the)g Fm(MPI)p 1045 2647 V 16 w(TEST)h
Ft(or)e Fm(MPI)p 1334 2647 V 16 w(W)l(AIT)h Ft(return)g(status,)g
(using)75 2704 y(the)d(routines)h Fm(MPI)p 413 2704 V
16 w(GET)p 517 2704 V 16 w(COUNT)g Ft(or)f Fm(MPI)p 843
2704 V 16 w(GET)p 947 2704 V 17 w(ELEMENTS)p Ft(.)-32
46 y Fo(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 Ft(26)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(IWRITE)p 332
49 V 16 w(EXPLICIT)p 545 49 V 15 w(ALL\(fh,)15 b(o\013set,)g(bu\013,)g
(buft)o(yp)q(e,)i(bufcount,)g(request\))75 153 y Fh(int)23
b(MPI)p 245 153 15 2 v 17 w(Iwrite)p 406 153 V 17 w(explicit)p
615 153 V 16 w(all\(MPI)p 799 153 V 16 w(File)g(fh,)h(MPI)p
1102 153 V 16 w(Offset)f(offset,)g(void)h(*buff,)393
209 y(MPI)p 468 209 V 17 w(Datatype)f(buftype,)f(int)i(bufcount,)f(MPI)
p 1321 209 V 16 w(Request)g(*request\))75 296 y(int)g
(MPI::File::Iwrite)p 581 296 V 15 w(explicit)p 788 296
V 16 w(all\(const)g(MPI::Offset)f(offset,)393 352 y(const)h(void*)h
(buff,)f(const)g(MPI::Datatype&)f(buftype,)393 409 y(const)h(int)h
(bufcount,)e(MPI::Request&)h(request\))75 495 y(MPI)p
150 495 V 17 w(IWRITE)p 311 495 V 16 w(EXPLICIT)p 519
495 V 16 w(ALL\(FH,)g(OFFSET,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)g
(REQUEST,)393 552 y(IERROR\))170 608 y(<type>)g(BUFF\(*\))170
665 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)170
721 y(INTEGER*8)g(OFFSET)166 808 y Fm(MPI)p 251 808 14
2 v 16 w(IWRITE)p 423 808 V 16 w(EXPLICIT)p 636 808 V
15 w(ALL)10 b Ft(is)h(a)f(collectiv)o(e)h(v)o(ersion)g(of)f(the)g(non)o
(blo)q(c)o(king)h Fm(MPI)p 1605 808 V 16 w(IWRITE)p 1777
808 V 16 w(EXPLICIT)75 864 y Ft(in)o(terface.)23 b(This)16
b(routine)h(is)f(seman)o(tically)h(iden)o(tical)h(to)e
Fm(MPI)p 1175 864 V 15 w(IWRITE)p 1346 864 V 16 w(EXPLICIT)p
Ft(,)f(except)i(that)e(all)75 920 y(pro)q(cesses)c(in)g(the)f(comm)o
(unicator)g(group)f(asso)q(ciated)i(with)f(the)g(\014le)i(handle)f
Fm(fh)g Ft(m)o(ust)e(call)i Fm(MPI)p 1714 920 V 16 w(IWRITE)p
1886 920 V 16 w(EXPLICIT)p 2099 920 V 16 w(ALL)p Ft(.)75
1063 y Fq(11.4)60 b(Data)19 b(Access)h(With)g(Individual)e(File)i(P)n
(ointers)75 1164 y Ft(The)14 b(system)f(main)o(tains)h(one)f
(individual)k(\014le)e(p)q(oin)o(ter)f(p)q(er)g(pro)q(cess)g(p)q(er)g
(collectiv)o(e)h Fm(MPI)p 1636 1164 V 16 w(OPEN)p Ft(.)f(The)75
1220 y(curren)o(t)k(v)m(alue)i(of)d(this)i(p)q(oin)o(ter)g(can)f(b)q(e)
h(used)g(to)e(implicitly)22 b(sp)q(ecify)d(the)f(o\013set)g(of)f(data)h
(accesses,)75 1277 y(b)o(y)h(using)h(the)f(routines)h(describ)q(ed)h
(in)f(this)g(section.)32 b(These)20 b(routines)f(only)h(use)g(and)f(up)
q(date)h(the)75 1333 y(individual)g(\014le)e(p)q(oin)o(ters)g(main)o
(tained)g(b)o(y)f(the)g(system.)25 b(The)17 b(shared)g(\014le)h(p)q
(oin)o(ter)f(is)h(not)f(used)g(nor)75 1390 y(up)q(dated.)166
1446 y(The)h(individual)j(\014le)e(p)q(oin)o(ter)f(routines)g(ha)o(v)o
(e)g(the)g(same)f(seman)o(tics)h(as)g(the)f(data)h(access)g(with)75
1503 y(explicit)f(o\013set)e(routines)g(describ)q(ed)i(in)f(Section)g
(11.3)e(with)i(the)f(follo)o(wing)h(mo)q(di\014cation:)143
1591 y Fp(\017)23 b Ft(the)17 b Fm(o\013set)h Ft(is)f(de\014ned)i(to)e
(b)q(e)h(the)f(curren)o(t)h(v)m(alue)g(of)f(the)g(system-main)o(tained)
h(individual)j(\014le)189 1647 y(p)q(oin)o(ter.)75 1736
y(After)15 b(an)g(individual)k(\014le)d(p)q(oin)o(ter)g(op)q(eration)f
(is)h(initiated,)g(the)g(individual)i(\014le)f(p)q(oin)o(ter)e(is)h(up)
q(dated)75 1792 y(to)d(p)q(oin)o(t)h(to)g(the)f(next)h(data)f(item)h
(after)f(the)h(last)g(one)g(that)f(will)i(b)q(e)g(actually)f(accessed)h
(\(for)e(blo)q(c)o(king)75 1848 y(op)q(erations\),)i(and)g(after)f(the)
i(last)f(one)g(requested)h(\(for)e(non-blo)q(c)o(king)j(op)q
(erations\).)75 1969 y Fl(11.4.1)49 b(Blo)q(cking)18
b(Read)75 2149 y Fm(MPI)p 160 2149 V 16 w(READ\(fh,)d(bu\013,)h(buft)o
(yp)q(e,)g(bufcount,)h(status\))117 2227 y Ff(INOUT)62
b Fm(fh)550 b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117
2301 y(OUT)108 b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i
(user's)f(bu\013er)h(\(in)o(teger\))117 2375 y(IN)155
b Fm(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f
(\(handle\))117 2449 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14
b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)o(e)g(in)o(teger\))
117 2523 y(OUT)108 b Fm(status)476 b Ff(Status)15 b(information)c
(\(Status\))75 2647 y Fh(int)23 b(MPI)p 245 2647 15 2
v 17 w(Read\(MPI)p 454 2647 V 16 w(File)h(fh,)f(void)g(*buff,)g(MPI)p
1043 2647 V 17 w(Datatype)g(buftype,)g(int)g(bufcount,)393
2704 y(MPI)p 468 2704 V 17 w(Status)g(*status\))1967
46 y Fo(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(11.4.)34 b(D)o(A)l(T)l(A)15 b(A)o(CCESS)g(WITH)g
(INDIVIDUAL)i(FILE)e(POINTERS)487 b Ft(27)75 49 y Fh(int)23
b(MPI::File::Read\(void*)e(buff,)j(const)f(MPI::Datatype&)f(buftype,)
393 106 y(const)h(int)h(bufcount,)e(MPI::Status&)h(status\))75
192 y(MPI)p 150 192 15 2 v 17 w(READ\(FH,)g(BUFF,)g(BUFTYPE,)f
(BUFCOUNT,)h(STATUS,)g(IERROR\))170 249 y(<type>)g(BUFF\(*\))170
305 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p
1153 305 V 16 w(STATUS)p 1313 305 V 16 w(SIZE\),)h(IERROR)166
392 y Fm(MPI)p 251 392 14 2 v 16 w(READ)f Ft(is)g(seman)o(tically)g
(iden)o(tical)i(to)c Fm(MPI)p 1059 392 V 16 w(READ)p
1194 392 V 17 w(EXPLICIT)p Ft(,)g(with)i Fm(o\013set)g
Ft(set)f(to)g(the)75 448 y(curren)o(t)11 b(individual)j(\014le)e(p)q
(oin)o(ter)f(p)q(osition)h(main)o(tained)g(b)o(y)f(the)g(system.)18
b(The)11 b(\014le)h(p)q(oin)o(ter)g(is)f(up)q(dated)75
504 y(b)o(y)k(the)g(amoun)o(t)g(of)g(data)f(requested.)75
655 y Fm(MPI)p 160 655 V 16 w(READ)p 295 655 V 17 w(ALL\(fh,)g(bu\013,)
h(buft)o(yp)q(e,)i(bufcount,)g(status\))75 759 y Fh(int)23
b(MPI)p 245 759 15 2 v 17 w(Read)p 358 759 V 17 w(all\(MPI)p
543 759 V 16 w(File)g(fh,)h(void)f(*buff,)g(MPI)p 1132
759 V 17 w(Datatype)g(buftype,)393 816 y(int)h(bufcount,)e(MPI)p
802 816 V 17 w(Status)h(*status\))75 902 y(int)g(MPI::File::Read)p
533 902 V 16 w(all\(void*)f(buff,)h(const)h(MPI::Datatype&)e(buftype,)
393 958 y(const)h(int)h(bufcount,)e(MPI::Status&)h(status\))75
1045 y(MPI)p 150 1045 V 17 w(READ)p 263 1045 V 16 w(ALL\(FH,)g(BUFF,)g
(BUFTYPE,)g(BUFCOUNT,)g(STATUS,)g(IERROR\))170 1101 y(<type>)g
(BUFF\(*\))170 1158 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f
(STATUS\(MPI)p 1153 1158 V 16 w(STATUS)p 1313 1158 V
16 w(SIZE\),)h(IERROR)166 1244 y Fm(MPI)p 251 1244 14
2 v 16 w(READ)p 386 1244 V 17 w(ALL)10 b Ft(is)h(a)g(collectiv)o(e)i(v)
o(ersion)e(of)f(the)h(blo)q(c)o(king)h Fm(MPI)p 1290
1244 V 16 w(READ)f Ft(in)o(terface.)19 b(This)11 b(routine)75
1301 y(is)i(seman)o(tically)h(iden)o(tical)g(to)e Fm(MPI)p
694 1301 V 16 w(READ)p Ft(,)g(except)h(that)f(all)h(pro)q(cesses)g(in)h
(the)e(comm)o(unicator)g(group)75 1357 y(asso)q(ciated)j(with)h(the)f
(\014le)h(handle)h Fm(fh)e Ft(m)o(ust)g(call)h Fm(MPI)p
1026 1357 V 16 w(READ)p 1161 1357 V 17 w(ALL)p Ft(.)75
1479 y Fl(11.4.2)49 b(Blo)q(cking)18 b(W)o(rite)75 1659
y Fm(MPI)p 160 1659 V 16 w(WRITE\(fh,)d(bu\013,)g(buft)o(yp)q(e,)i
(bufcount,)g(status\))117 1736 y Ff(INOUT)62 b Fm(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 1812
y(IN)155 b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i(user's)
f(bu\013er)h(\(in)o(teger\))117 1887 y(IN)155 b Fm(buft)o(yp)q(e)447
b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117
1962 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14
b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)o(e)g(in)o(teger\))
117 2037 y(OUT)108 b Fm(status)476 b Ff(Status)15 b(information)c
(\(Status\))75 2161 y Fh(int)23 b(MPI)p 245 2161 15 2
v 17 w(Write\(MPI)p 478 2161 V 16 w(File)g(fh,)h(void)f(*buff,)g(MPI)p
1067 2161 V 17 w(Datatype)g(buftype,)g(int)g(bufcount,)393
2218 y(MPI)p 468 2218 V 17 w(Status)g(*status\))75 2304
y(int)g(MPI::File::Write\(const)e(void*)i(buff,)h(const)f
(MPI::Datatype&)f(buftype,)393 2361 y(const)h(int)h(bufcount,)e
(MPI::Status&)h(status\))75 2447 y(MPI)p 150 2447 V 17
w(WRITE\(FH,)f(BUFF,)i(BUFTYPE,)e(BUFCOUNT,)h(STATUS,)g(IERROR\))170
2504 y(<type>)g(BUFF\(*\))170 2560 y(INTEGER)g(FH,)h(BUFTYPE,)f
(BUFCOUNT,)f(STATUS\(MPI)p 1153 2560 V 16 w(STATUS)p
1313 2560 V 16 w(SIZE\),)h(IERROR)166 2647 y Fm(MPI)p
251 2647 14 2 v 16 w(WRITE)16 b Ft(is)i(seman)o(tically)g(iden)o(tical)
g(to)e Fm(MPI)p 1059 2647 V 16 w(WRITE)p 1218 2647 V
16 w(EXPLICIT)p Ft(,)g(with)h Fm(o\013set)g Ft(set)g(to)f(the)75
2703 y(curren)o(t)11 b(individual)j(\014le)e(p)q(oin)o(ter)f(p)q
(osition)h(main)o(tained)g(b)o(y)f(the)g(system.)18 b(The)11
b(\014le)h(p)q(oin)o(ter)g(is)f(up)q(dated)-32 46 y Fo(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 Ft(28)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Ft(b)o(y)15 b(the)g(amoun)o(t)g(of)g(data)f(requested.)75
200 y Fm(MPI)p 160 200 14 2 v 16 w(WRITE)p 319 200 V
16 w(ALL\(fh,)h(bu\013,)g(buft)o(yp)q(e,)h(bufcount,)h(status\))75
304 y Fh(int)47 b(MPI)p 269 304 15 2 v 17 w(Write)p 406
304 V 17 w(all\(MPI)p 591 304 V 16 w(File)23 b(fh,)h(void)f(*buff,)g
(MPI)p 1180 304 V 17 w(Datatype)f(buftype,)393 360 y(int)i(bufcount,)e
(MPI)p 802 360 V 17 w(Status)h(*status\))75 447 y(int)g
(MPI::File::Write)p 557 447 V 15 w(all\(const)g(void*)g(buff,)g(const)h
(MPI::Datatype&)e(buftype,)393 503 y(const)h(int)h(bufcount,)e
(MPI::Status&)h(status\))75 590 y(MPI)p 150 590 V 17
w(WRITE)p 287 590 V 16 w(ALL\(FH,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)g
(STATUS,)g(IERROR\))170 646 y(<type>)g(BUFF\(*\))170
703 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p
1153 703 V 16 w(STATUS)p 1313 703 V 16 w(SIZE\),)h(IERROR)166
789 y Fm(MPI)p 251 789 14 2 v 16 w(WRITE)p 410 789 V
16 w(ALL)12 b Ft(is)g(a)g(collectiv)o(e)i(v)o(ersion)f(of)e(the)i(blo)q
(c)o(king)g Fm(MPI)p 1324 789 V 16 w(WRITE)f Ft(in)o(terface.)19
b(This)13 b(rou-)75 846 y(tine)h(is)h(seman)o(tically)f(iden)o(tical)i
(to)d Fm(MPI)p 788 846 V 16 w(WRITE)p Ft(,)g(except)h(that)f(all)i(pro)
q(cesses)f(in)h(the)e(comm)o(unicator)75 902 y(group)i(asso)q(ciated)g
(with)h(the)f(\014le)h(handle)h Fm(fh)e Ft(m)o(ust)g(call)h
Fm(MPI)p 1155 902 V 16 w(WRITE)p 1314 902 V 16 w(ALL)p
Ft(.)75 1024 y Fl(11.4.3)49 b(Nonblo)q(cking)19 b(Read)75
1204 y Fm(MPI)p 160 1204 V 16 w(IREAD\(fh,)c(bu\013,)g(buft)o(yp)q(e,)i
(bufcount,)g(request\))117 1281 y Ff(INOUT)62 b Fm(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 1356
y(OUT)108 b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i
(user's)f(bu\013er)h(\(in)o(teger\))117 1431 y(IN)155
b Fm(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f
(\(handle\))117 1507 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14
b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)o(e)g(in)o(teger\))
117 1582 y(OUT)108 b Fm(request)452 b Ff(Read)14 b(request)h(handle)f
(\(handle\))75 1706 y Fh(int)23 b(MPI)p 245 1706 15 2
v 17 w(Iread\(MPI)p 478 1706 V 16 w(File)g(fh,)h(void)f(*buff,)g(MPI)p
1067 1706 V 17 w(Datatype)g(buftype,)g(int)g(bufcount,)393
1763 y(MPI)p 468 1763 V 17 w(Request)g(*request\))75
1849 y(int)g(MPI::File::Iread\(void*)e(buff,)i(const)h(MPI::Datatype&)e
(buftype,)393 1906 y(const)h(int)h(bufcount,)e(MPI::Request&)h
(request\))75 1992 y(MPI)p 150 1992 V 17 w(IREAD\(FH,)f(BUFF,)i
(BUFTYPE,)e(BUFCOUNT,)h(REQUEST,)g(IERROR\))170 2048
y(<type>)g(BUFF\(*\))170 2105 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f
(REQUEST,)h(IERROR)166 2191 y Fm(MPI)p 251 2191 14 2
v 16 w(IREAD)c Ft(is)g(seman)o(tically)h(iden)o(tical)h(to)d
Fm(MPI)p 1059 2191 V 16 w(IREAD)p 1207 2191 V 17 w(EXPLICIT)p
Ft(,)g(with)h Fm(o\013set)g Ft(set)g(to)f(the)75 2248
y(curren)o(t)11 b(individual)j(\014le)e(p)q(oin)o(ter)f(p)q(osition)h
(main)o(tained)g(b)o(y)f(the)g(system.)18 b(The)11 b(\014le)h(p)q(oin)o
(ter)g(is)f(up)q(dated)75 2304 y(b)o(y)k(the)g(amoun)o(t)g(of)g(data)f
(requested.)75 2455 y Fm(MPI)p 160 2455 V 16 w(IREAD)p
308 2455 V 16 w(ALL\(fh,)h(bu\013,)g(buft)o(yp)q(e,)i(bufcount,)g
(request\))75 2559 y Fh(int)23 b(MPI::File::Iread)p 557
2559 15 2 v 15 w(all\(void*)g(buff,)g(const)g(MPI::Datatype&)f
(buftype,)393 2615 y(const)h(int)h(bufcount,)e(MPI::Request&)h
(request\))1967 46 y Fo(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(11.4.)34 b(D)o(A)l(T)l(A)15 b(A)o(CCESS)g(WITH)g
(INDIVIDUAL)i(FILE)e(POINTERS)487 b Ft(29)75 49 y Fh(int)23
b(MPI)p 245 49 15 2 v 17 w(Iread)p 382 49 V 17 w(all\(MPI)p
567 49 V 16 w(File)g(fh,)h(void)f(*buff,)g(MPI)p 1156
49 V 17 w(Datatype)g(buftype,)393 106 y(int)h(bufcount,)e(MPI)p
802 106 V 17 w(Request)h(*request\))75 192 y(MPI)p 150
192 V 17 w(IREAD)p 287 192 V 16 w(ALL\(FH,)g(BUFF,)g(BUFTYPE,)g
(BUFCOUNT,)g(REQUEST,)g(IERROR\))170 249 y(<type>)g(BUFF\(*\))170
305 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)166
392 y Fm(MPI)p 251 392 14 2 v 16 w(IREAD)p 399 392 V
16 w(ALL)14 b Ft(is)h(a)f(collectiv)o(e)i(v)o(ersion)e(of)g(the)g(blo)q
(c)o(king)i Fm(MPI)p 1330 392 V 16 w(IREAD)e Ft(in)o(terface.)20
b(This)15 b(rou-)75 448 y(tine)g(is)g(seman)o(tically)h(iden)o(tical)h
(to)d Fm(MPI)p 793 448 V 15 w(IREAD)p Ft(,)h(except)g(that)f(all)h(pro)
q(cesses)g(in)h(the)e(comm)o(unicator)75 504 y(group)h(asso)q(ciated)g
(with)h(the)f(\014le)h(handle)h Fm(fh)e Ft(m)o(ust)g(call)h
Fm(MPI)p 1155 504 V 16 w(IREAD)p 1303 504 V 17 w(ALL)p
Ft(.)75 626 y Fl(11.4.4)49 b(Nonblo)q(cking)19 b(W)o(rite)75
806 y Fm(MPI)p 160 806 V 16 w(IWRITE\(fh,)14 b(bu\013,)i(buft)o(yp)q
(e,)g(bufcount,)h(request\))117 884 y Ff(INOUT)62 b Fm(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 959
y(IN)155 b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i(user's)
f(bu\013er)h(\(in)o(teger\))117 1034 y(IN)155 b Fm(buft)o(yp)q(e)447
b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117
1109 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14
b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)o(e)g(in)o(teger\))
117 1184 y(OUT)108 b Fm(request)452 b Ff(W)m(rite)14
b(request)h(handle)f(\(handle\))75 1309 y Fh(int)23 b(MPI)p
245 1309 15 2 v 17 w(Iwrite\(MPI)p 502 1309 V 16 w(File)g(fh,)h(void)f
(*buff,)g(MPI)p 1091 1309 V 17 w(Datatype)g(buftype,)f(int)i(bufcount,)
393 1365 y(MPI)p 468 1365 V 17 w(Request)f(*request\))75
1452 y(int)g(MPI::File::Iwrite\(const)e(void*)i(buff,)h(const)f
(MPI::Datatype&)f(buftype,)393 1508 y(const)h(int)h(bufcount,)e
(MPI::Request&)h(request\))75 1594 y(MPI)p 150 1594 V
17 w(IWRITE\(FH,)f(BUFF,)h(BUFTYPE,)g(BUFCOUNT,)g(REQUEST,)g(IERROR\))
170 1651 y(<type>)g(BUFF\(*\))170 1707 y(INTEGER)g(FH,)h(BUFTYPE,)f
(BUFCOUNT,)f(REQUEST,)h(IERROR)166 1794 y Fm(MPI)p 251
1794 14 2 v 16 w(IWRITE)14 b Ft(is)g(seman)o(tically)i(iden)o(tical)g
(to)d Fm(MPI)p 1059 1794 V 16 w(IWRITE)p 1231 1794 V
16 w(EXPLICIT)p Ft(,)g(with)i Fm(o\013set)f Ft(set)g(to)g(the)75
1850 y(curren)o(t)d(individual)j(\014le)e(p)q(oin)o(ter)f(p)q(osition)h
(main)o(tained)g(b)o(y)f(the)g(system.)18 b(The)11 b(\014le)h(p)q(oin)o
(ter)g(is)f(up)q(dated)75 1907 y(b)o(y)k(the)g(amoun)o(t)g(of)g(data)f
(requested.)75 2058 y Fm(MPI)p 160 2058 V 16 w(IWRITE)p
332 2058 V 16 w(ALL\(fh,)g(bu\013,)h(buft)o(yp)q(e,)i(bufcount,)g
(request\))75 2161 y Fh(int)23 b(MPI)p 245 2161 15 2
v 17 w(Iwrite)p 406 2161 V 17 w(all\(MPI)p 591 2161 V
16 w(File)g(fh,)h(void)f(*buff,)g(MPI)p 1180 2161 V 17
w(Datatype)f(buftype,)393 2218 y(int)i(bufcount,)e(MPI)p
802 2218 V 17 w(Request)h(*request\))75 2304 y(int)g(MPI::File::Iwrite)
p 581 2304 V 15 w(all\(const)g(void*)g(buff,)g(const)g(MPI::Datatype&)f
(buftype,)393 2361 y(const)h(int)h(bufcount,)e(MPI::Request&)h
(request\))75 2447 y(MPI)p 150 2447 V 17 w(IWRITE)p 311
2447 V 16 w(ALL\(FH,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)g(REQUEST,)f
(IERROR\))170 2504 y(<type>)h(BUFF\(*\))170 2560 y(INTEGER)g(FH,)h
(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)166 2647 y
Fm(MPI)p 251 2647 14 2 v 16 w(IWRITE)p 423 2647 V 16
w(ALL)18 b Ft(is)h(a)f(collectiv)o(e)i(v)o(ersion)f(of)f(the)h(blo)q(c)
o(king)g Fm(MPI)p 1387 2647 V 16 w(IWRITE)f Ft(in)o(terface.)30
b(This)-32 46 y Fo(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 Ft(30)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Ft(routine)15 b(is)g(seman)o(tically)g(iden)o(tical)h(to)
e Fm(MPI)p 857 49 14 2 v 16 w(IWRITE)p Ft(,)f(except)i(that)f(all)h
(pro)q(cesses)g(in)g(the)f(comm)o(uni-)75 106 y(cator)g(group)h(asso)q
(ciated)h(with)f(the)g(\014le)i(handle)f Fm(fh)g Ft(m)o(ust)e(call)j
Fm(MPI)p 1272 106 V 15 w(IWRITE)p 1443 106 V 16 w(ALL)p
Ft(.)75 227 y Fl(11.4.5)49 b(Seek)16 b(\(indep)q(endent\))75
407 y Fm(MPI)p 160 407 V 16 w(SEEK\(fh,)f(o\013set,)g(whence\))117
485 y Ff(INOUT)62 b Fm(fh)550 b Ff(V)m(alid)13 b(\014le)g(handle)h
(\(handle\))117 559 y(IN)155 b Fm(o\013set)484 b Ff(File)14
b(o\013set)g(\(o\013set\))117 634 y(IN)155 b Fm(whence)450
b Ff(Up)q(date)15 b(mo)q(de)e(\(in)o(teger\))75 759 y
Fh(int)23 b(MPI)p 245 759 15 2 v 17 w(Seek\(MPI)p 454
759 V 16 w(File)h(fh,)f(MPI)p 757 759 V 17 w(Offset)g(offset,)g(MPI)p
1204 759 V 17 w(Whence)g(whence\))75 845 y(int)g
(MPI::File::Seek\(const)e(MPI::Offset)i(offset,)g(const)g(MPI::Whence)f
(whence\))75 932 y(MPI)p 150 932 V 17 w(SEEK\(FH,)h(OFFSET,)f(WHENCE\))
170 988 y(INTEGER)h(FH,)h(WHENCE)170 1044 y(INTEGER*8)f(OFFSET)166
1131 y Fm(MPI)p 251 1131 14 2 v 16 w(SEEK)17 b Ft(up)q(dates)h(the)g
(individual)i(\014le)f(p)q(oin)o(ter)f(according)g(to)e
Fm(whence)p Ft(,)k(whic)o(h)e(could)g(ha)o(v)o(e)75 1187
y(the)d(follo)o(wing)h(p)q(ossible)h(v)m(alues:)143 1279
y Fp(\017)23 b Fe(MPI)p 266 1279 13 2 v 14 w(SEEK)p 382
1279 V 14 w(SET)p Ft(:)15 b(the)h(p)q(oin)o(ter)f(is)h(set)f(to)f
Fm(o\013set)143 1372 y Fp(\017)23 b Fe(MPI)p 266 1372
V 14 w(SEEK)p 382 1372 V 14 w(CUR)p Ft(:)14 b(the)h(p)q(oin)o(ter)h(is)
g(set)f(to)f(the)h(curren)o(t)h(p)q(oin)o(ter)f(p)q(osition)i(plus)f
Fm(o\013set)-1794 b Fp(>)15 b Fo(\(Oct\))143 1465 y Fp(\017)23
b Fe(MPI)p 266 1465 V 14 w(SEEK)p 382 1465 V 14 w(END)p
Ft(:)15 b(the)h(p)q(oin)o(ter)f(is)h(set)f(to)g(the)g(end)h(of)e(the)i
(view)g(plus)g Fm(o\013set)-1629 b Fp(?)15 b Fo(\(Oct\))166
1557 y Ft(The)d Fm(o\013set)g Ft(is)g(relativ)o(e)h(to)e(the)h(\014let)
o(yp)q(e)h(\(not)e(coun)o(ting)i(holes\),)f(in)h(units)f(of)g
Fm(et)o(yp)q(e)p Ft(.)20 b(The)12 b(constan)o(t)75 1614
y Fe(MPI)p 152 1614 V 14 w(OFFSET)p 321 1614 V 14 w(ZERO)j
Ft(is)h(de\014ned)g(to)f(b)q(e)h(o\013set)e(zero.)-1107
b Fp(>)15 b Fo(\(Oct\))166 1718 y Fg(Discussion:)g Ff(Is)g
Fe(o\013set)f Ff(signed?)k(If)c(not,)f(ho)o(w)g(do)h(y)o(ou)f(seek)i
(bac)o(kw)o(ards)g(from)d(the)i(end)h(of)e(\014le?)-117
1773 y Fp(?)i Fo(\(Oct\))75 1886 y Fl(11.4.6)49 b(Query)16
b(Individual)j(File)e(P)o(ointer)e(P)o(osition)75 2067
y Fm(MPI)p 160 2067 14 2 v 16 w(GET)p 264 2067 V 17 w(POSITION\(fh,)g
(o\013set,)g(b)o(yte)p 783 2067 V 17 w(o\013set\))117
2144 y Ff(IN)155 b Fm(fh)550 b Ff(V)m(alid)13 b(\014le)g(handle)h
(\(handle\))117 2219 y(OUT)108 b Fm(o\013set)484 b Ff(Curren)o(t)15
b(\014le)f(o\013set)h(in)e(et)o(yp)q(e)i(units)f(\(o\013set\))117
2293 y(OUT)108 b Fm(b)o(yte)p 400 2293 V 18 w(o\013set)387
b Ff(Curren)o(t)15 b(\014le)f(o\013set)h(in)e(b)o(ytes)i(\(o\013set\))
75 2418 y Fh(int)23 b(MPI)p 245 2418 15 2 v 17 w(Get)p
334 2418 V 17 w(position\(MPI)p 639 2418 V 16 w(File)g(fh,)g(MPI)p
941 2418 V 17 w(Offset)g(*offset,)393 2474 y(MPI)p 468
2474 V 17 w(Offset)g(*byte)p 772 2474 V 16 w(offset\))75
2561 y(int)g(MPI::File::Get)p 509 2561 V 16 w(position\(MPI::Offset&)e
(offset,)i(MPI::Offset&)f(byte)p 1647 2561 V 16 w(offset\))75
2647 y(MPI)p 150 2647 V 17 w(GET)p 239 2647 V 17 w(POSITION\(FH,)g
(OFFSET,)h(BYTE)p 853 2647 V 16 w(OFFSET\))170 2704 y(INTEGER)g(FH)1967
46 y Fo(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(11.5.)34 b(D)o(A)l(T)l(A)15 b(A)o(CCESS)g(WITH)g
(SHARED)h(FILE)f(POINTERS)578 b Ft(31)170 49 y Fh(INTEGER*8)23
b(OFFSET,)g(BYTE)p 699 49 15 2 v 17 w(OFFSET)166 136
y Fm(MPI)p 251 136 14 2 v 16 w(GET)p 355 136 V 16 w(POSITION)15
b Ft(returns)f(the)g(curren)o(t)g(p)q(osition)h(of)f(the)g(individual)j
(\014le)e(p)q(oin)o(ter)g(in)g Fm(et)o(yp)q(e)75 192
y Ft(units)j(relativ)o(e)f(to)g(the)g(curren)o(t)f(displacemen)o(t)j
(and)e(\014let)o(yp)q(e)h(in)g Fm(o\013set)p Ft(,)f(and)h(the)f
(absolute)g(p)q(osition)75 249 y(in)f(b)o(ytes)f(ignoring)h(the)f
(displacemen)o(t)i(and)e(\014let)o(yp)q(e)i(in)f Fm(b)o(yte)p
1158 249 V 17 w(o\013set)p Ft(.)587 b Fp(>)16 b Fo(\(Oct\))189
355 y Fj(A)n(dvic)n(e)24 b(to)h(users.)96 b Ft(The)25
b Fm(o\013set)g Ft(can)f(b)q(e)i(used)f(in)g(a)g(future)f(call)i(to)e
Fm(MPI)p 1623 355 V 16 w(SEEK)g Ft(using)189 411 y Fe(MPI)p
266 411 13 2 v 14 w(SEEK)p 382 411 V 14 w(SET)17 b Ft(to)g(return)f(to)
h(the)g(curren)o(t)g(p)q(osition.)26 b(The)17 b Fm(b)o(yte)p
1356 411 14 2 v 17 w(o\013set)g Ft(is)h(useful)g(for)e(setting)189
468 y(the)f(displacemen)o(t)i(to)d(the)h(curren)o(t)h(p)q(osition)g
(via)f Fm(MPI)p 1163 468 V 16 w(VIEW)p Ft(.)g(\()p Fj(End)g(of)i(advic)
n(e)f(to)h(users.)p Ft(\))1875 529 y Fp(?)f Fo(\(Oct\))75
661 y Fq(11.5)60 b(Data)19 b(Access)h(with)g(Sha)n(red)f(File)g(P)n
(ointers)75 762 y Ft(The)j(system)g(main)o(tains)g(exactly)h(one)f
(shared)g(\014le)h(p)q(oin)o(ter)f(p)q(er)h(collectiv)o(e)h
Fm(MPI)p 1572 762 V 15 w(OPEN)f Ft(\(shared)75 819 y(among)c(pro)q
(cesses)h(in)h(the)f(comm)o(unicator)f(group\).)33 b(The)20
b(curren)o(t)g(v)m(alue)h(of)e(this)h(p)q(oin)o(ter)g(can)g(b)q(e)75
875 y(used)h(to)f(implicitly)j(sp)q(ecify)f(the)e(o\013set)g(of)g(data)
f(accesses,)j(b)o(y)e(using)i(the)e(routines)h(describ)q(ed)h(in)75
932 y(this)16 b(section.)k(These)c(routines)g(only)g(use)f(and)h(up)q
(date)g(the)f(shared)g(\014le)i(p)q(oin)o(ter)e(main)o(tained)i(b)o(y)e
(the)75 988 y(system.)k(The)d(individual)i(\014le)e(p)q(oin)o(ters)g
(are)f(not)g(used)h(nor)f(up)q(dated.)166 1045 y(The)c(shared)g(\014le)
i(p)q(oin)o(ter)e(routines)h(ha)o(v)o(e)e(the)i(same)e(seman)o(tics)i
(as)e(the)i(data)e(access)h(with)h(explicit)75 1101 y(o\013set)i
(routines)i(describ)q(ed)h(in)f(Section)g(11.3)e(with)i(the)f(follo)o
(wing)h(mo)q(di\014cations:)143 1195 y Fp(\017)23 b Ft(the)f
Fm(o\013set)h Ft(is)g(de\014ned)h(to)e(b)q(e)i(the)e(curren)o(t)h(v)m
(alue)h(of)e(the)h(system-main)o(tained)g(shared)g(\014le)189
1251 y(p)q(oin)o(ter,)143 1345 y Fp(\017)g Ft(the)14
b(e\013ect)g(of)f(m)o(ultiple)j(calls)g(to)d(shared)h(\014le)h(p)q(oin)
o(ter)g(routines)g(is)f(de\014ned)i(to)d(b)q(eha)o(v)o(e)i(as)e(if)i
(the)189 1402 y(calls)h(w)o(ere)f(serialized,)i(and)143
1495 y Fp(\017)23 b Ft(the)17 b(use)h(of)e(shared)i(\014le)g(p)q(oin)o
(ter)g(routines)f(is)h(erroneous)f(unless)i(all)f(pro)q(cesses)f(use)h
(the)f(same)189 1552 y Fm(disp)f Ft(and)f(the)h(same)f
Fm(\014let)o(yp)q(e)h Ft(when)g(setting)f(the)g(view)h(of)f(the)g
(\014le)i(\(via)e Fm(MPI)p 1543 1552 V 16 w(VIEW)p Ft(\).)75
1646 y(The)f(serialization)h(ordering)e(is)h(not)f(deterministic.)21
b(The)14 b(user)f(needs)i(to)d(use)i(other)f(sync)o(hronization)75
1702 y(means)i(to)g(enforce)g(a)g(sp)q(eci\014c)i(order.)166
1759 y(After)f(a)g(shared)h(\014le)g(p)q(oin)o(ter)g(op)q(eration)g(is)
g(initiated,)h(the)e(shared)h(\014le)g(p)q(oin)o(ter)g(is)g(up)q(dated)
h(to)75 1815 y(p)q(oin)o(t)g(to)e(the)h(next)h(data)e(item)i(after)e
(the)h(last)g(one)h(that)e(will)j(b)q(e)f(actually)g(accessed)f(\(for)g
(blo)q(c)o(king)75 1871 y(op)q(erations\),)e(and)g(after)f(the)i(last)f
(one)g(requested)h(\(for)e(non-blo)q(c)o(king)j(op)q(erations\).)189
1978 y Fj(A)n(dvic)n(e)f(to)h(users.)46 b Ft(In)17 b(order)f(to)f
(ensure)i(that)e(data)h(access)g(using)h(the)f(shared)h(\014le)g(p)q
(oin)o(ter)f(is)189 2034 y(w)o(ell)g(de\014ned,)h(all)g(pro)q(cesses)f
(m)o(ust)f(use)h(the)g(same)f Fm(disp)i Ft(and)f(the)f(same)h
Fm(\014let)o(yp)q(e)h Ft(when)f(setting)189 2091 y(the)k(view)g(of)g
(the)g(\014le.)35 b(F)l(or)20 b(example,)h(consider)g(a)f(single)h
Fm(MPI)p 1350 2091 V 16 w(VIEW)f Ft(in)h(whic)o(h)g(pro)q(cess)f(1)189
2147 y(uses)15 b(\014let)o(yp)q(e)i Fm(MPI)p 531 2147
V 16 w(CHAR)f Ft(and)g(pro)q(cess)g(2)f(uses)g(\014let)o(yp)q(e)i
Fm(MPI)p 1308 2147 V 16 w(DOUBLE)p Ft(.)e(If)h(pro)q(cess)g(1)f(reads)
189 2204 y(a)f(single)j(c)o(haracter)d(from)h(the)g(\014le,)h(the)f
(shared)g(\014le)h(p)q(oin)o(ter)g(p)q(oin)o(ts)f(to)g(the)g(second)h
(c)o(haracter)189 2260 y(relativ)o(e)c(to)e(pro)q(cess)i(1,)f(but)h(p)q
(oin)o(ts)g(in)o(to)f(the)g(middle)i(of)e(the)h(\014rst)f(double)h
(relativ)o(e)g(to)f(pro)q(cess)h(2.)189 2316 y(A)o(t)f(this)h(p)q(oin)o
(t,)g(the)g(e\013ect)f(of)h(a)f(shared)h(p)q(oin)o(ter)g(op)q(eration)g
(on)f(pro)q(cess)h(2)g(w)o(ould)g(b)q(e)g(ill-de\014ned.)189
2373 y(\()p Fj(End)j(of)i(advic)n(e)f(to)g(users.)p Ft(\))-32
46 y Fo(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 Ft(32)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Fl(11.5.1)49 b(Indep)q(endent)16 b(Op)q(erations)75
135 y Fm(Blo)q(cking)g(Read)g(\(indep)q(endent)q(\))75
315 y(MPI)p 160 315 14 2 v 16 w(READ)p 295 315 V 17 w(SHARED\(fh,)g
(bu\013,)f(buft)o(yp)q(e,)i(bufcount,)g(status\))117
393 y Ff(INOUT)62 b Fm(fh)550 b Ff(V)m(alid)13 b(\014le)g(handle)h
(\(handle\))117 468 y(OUT)108 b Fm(bu\013)514 b Ff(Initial)13
b(address)i(of)e(the)i(user's)f(bu\013er)h(\(in)o(teger\))117
543 y(IN)155 b Fm(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o
(yp)q(e)f(\(handle\))117 618 y(IN)155 b Fm(bufcount)422
b Ff(Num)o(b)q(er)14 b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)
o(e)g(in)o(teger\))117 693 y(OUT)108 b Fm(status)476
b Ff(Status)15 b(information)c(\(Status\))75 818 y Fh(int)23
b(MPI)p 245 818 15 2 v 17 w(Read)p 358 818 V 17 w(shared\(MPI)p
615 818 V 16 w(File)g(fh,)g(void)h(*buff,)f(MPI)p 1204
818 V 17 w(Datatype)f(buftype,)393 874 y(int)i(bufcount,)e(MPI)p
802 874 V 17 w(Status)h(*status\))75 960 y(int)g(MPI::File::Read)p
533 960 V 16 w(shared\(void*)f(buff,)h(const)g(MPI::Datatype&)f
(buftype,)393 1017 y(const)h(int)h(bufcount,)e(MPI::Status&)h(status\))
75 1103 y(MPI)p 150 1103 V 17 w(READ)p 263 1103 V 16
w(SHARED\(FH,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)f(STATUS,)h(IERROR\))170
1160 y(<type>)g(BUFF\(*\))170 1216 y(INTEGER)g(FH,)h(BUFTYPE,)f
(BUFCOUNT,)f(STATUS\(MPI)p 1153 1216 V 16 w(STATUS)p
1313 1216 V 16 w(SIZE\),)h(IERROR)166 1303 y Fm(MPI)p
251 1303 14 2 v 16 w(READ)p 386 1303 V 17 w(SHARED)16
b Ft(is)g(seman)o(tically)h(iden)o(tical)g(to)e Fm(MPI)p
1223 1303 V 16 w(READ)p 1358 1303 V 17 w(EXPLICIT)p Ft(,)g(with)g
Fm(o\013set)h Ft(set)75 1359 y(to)11 b(the)g(curren)o(t)g(shared)g
(\014le)i(p)q(oin)o(ter)e(p)q(osition)i(main)o(tained)f(b)o(y)f(the)g
(system.)18 b(Shared)12 b(\014le)g(p)q(oin)o(ter)g(calls)75
1416 y(within)h(a)f(single)i(\014le)f(handle)g(comm)o(unicator)f(group)
g(are)g(guaran)o(teed)g(to)f(b)q(e)i(sequen)o(tially)h(consisten)o(t.)
75 1472 y(The)h(\014le)i(p)q(oin)o(ter)e(is)h(up)q(dated)g(b)o(y)f(the)
h(amoun)o(t)e(of)h(data)f(requested.)75 1592 y Fm(Blo)q(cking)i(W)o
(rite)f(\(indep)q(endent\))75 1772 y(MPI)p 160 1772 V
16 w(WRITE)p 319 1772 V 16 w(SHARED\(fh,)h(bu\013,)f(buft)o(yp)q(e,)i
(bufcount,)g(status\))117 1850 y Ff(INOUT)62 b Fm(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 1925
y(IN)155 b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i(user's)
f(bu\013er)h(\(in)o(teger\))117 2000 y(IN)155 b Fm(buft)o(yp)q(e)447
b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117
2075 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14
b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)o(e)g(in)o(teger\))
117 2150 y(OUT)108 b Fm(status)476 b Ff(Status)15 b(information)c
(\(Status\))75 2275 y Fh(int)23 b(MPI)p 245 2275 15 2
v 17 w(Write)p 382 2275 V 17 w(shared\(MPI)p 639 2275
V 16 w(File)g(fh,)g(void)h(*buff,)f(MPI)p 1228 2275 V
16 w(Datatype)g(buftype,)393 2331 y(int)h(bufcount,)e(MPI)p
802 2331 V 17 w(Status)h(*status\))75 2418 y(int)g(MPI::File::Write)p
557 2418 V 15 w(shared\(const)g(void*)g(buff,)g(const)g(MPI::Datatype&)
f(buftype,)393 2474 y(const)h(int)h(bufcount,)e(MPI::Status&)h
(status\))75 2561 y(MPI)p 150 2561 V 17 w(WRITE)p 287
2561 V 16 w(SHARED\(FH,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)f(STATUS,)h
(IERROR\))170 2617 y(<type>)g(BUFF\(*\))170 2673 y(INTEGER)g(FH,)h
(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p 1153 2673 V 16
w(STATUS)p 1313 2673 V 16 w(SIZE\),)h(IERROR)1967 46
y Fo(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(11.5.)34 b(D)o(A)l(T)l(A)15 b(A)o(CCESS)g(WITH)g
(SHARED)h(FILE)f(POINTERS)578 b Ft(33)166 49 y Fm(MPI)p
251 49 14 2 v 16 w(WRITE)p 410 49 V 16 w(SHARED)20 b
Ft(is)g(seman)o(tically)g(iden)o(tical)h(to)d Fm(MPI)p
1264 49 V 16 w(WRITE)p 1423 49 V 16 w(EXPLICIT)p Ft(,)g(with)i
Fm(o\013set)75 106 y Ft(set)13 b(to)g(the)h(curren)o(t)f(shared)h
(\014le)g(p)q(oin)o(ter)g(p)q(osition)h(main)o(tained)f(b)o(y)g(the)f
(system.)19 b(Shared)14 b(\014le)g(p)q(oin)o(ter)75 162
y(calls)23 b(within)h(a)e(single)i(\014le)f(handle)h(comm)o(unicator)e
(group)g(are)g(guaran)o(teed)g(to)g(b)q(e)h(sequen)o(tially)75
219 y(consisten)o(t.)d(The)15 b(\014le)i(p)q(oin)o(ter)e(is)h(up)q
(dated)g(b)o(y)f(the)h(amoun)o(t)e(of)h(data)f(requested.)75
336 y Fm(Nonblo)q(cking)i(Read)g(\(indep)q(enden)q(t\))75
516 y(MPI)p 160 516 V 16 w(IREAD)p 308 516 V 16 w(SHARED\(fh,)g
(bu\013,)g(buft)o(yp)q(e,)g(bufcount,)h(request\))117
593 y Ff(INOUT)62 b Fm(fh)550 b Ff(V)m(alid)13 b(\014le)g(handle)h
(\(handle\))117 665 y(OUT)108 b Fm(bu\013)514 b Ff(Initial)13
b(address)i(of)e(the)i(user's)f(bu\013er)h(\(in)o(teger\))117
737 y(IN)155 b Fm(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o
(yp)q(e)f(\(handle\))117 809 y(IN)155 b Fm(bufcount)422
b Ff(Num)o(b)q(er)14 b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)
o(e)g(in)o(teger\))117 881 y(OUT)108 b Fm(request)452
b Ff(Read)14 b(request)h(handle)f(\(handle\))75 1006
y Fh(int)23 b(MPI)p 245 1006 15 2 v 17 w(Iread)p 382
1006 V 17 w(shared\(MPI)p 639 1006 V 16 w(File)g(fh,)g(void)h(*buff,)f
(MPI)p 1228 1006 V 16 w(Datatype)g(buftype,)393 1062
y(int)h(bufcount,)e(MPI)p 802 1062 V 17 w(Request)h(*request\))75
1149 y(int)g(MPI::File::Iread)p 557 1149 V 15 w(shared\(void*)g(buff,)g
(const)g(MPI::Datatype&)f(buftype,)393 1205 y(const)h(int)h(bufcount,)e
(MPI::Request&)h(request\))75 1292 y(MPI)p 150 1292 V
17 w(IREAD)p 287 1292 V 16 w(SHARED\(FH,)g(BUFF,)g(BUFTYPE,)g
(BUFCOUNT,)f(REQUEST,)h(IERROR\))170 1348 y(<type>)g(BUFF\(*\))170
1405 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)166
1491 y Fm(MPI)p 251 1491 14 2 v 16 w(IREAD)p 399 1491
V 16 w(SHARED)14 b Ft(is)f(seman)o(tically)g(iden)o(tical)h(to)e
Fm(MPI)p 1220 1491 V 16 w(IREAD)p 1368 1491 V 17 w(EXPLICIT)p
Ft(,)f(with)i Fm(o\013set)f Ft(set)75 1548 y(to)f(the)g(curren)o(t)g
(shared)g(\014le)i(p)q(oin)o(ter)e(p)q(osition)i(main)o(tained)f(b)o(y)
f(the)g(system.)18 b(Shared)12 b(\014le)g(p)q(oin)o(ter)g(calls)75
1604 y(within)h(a)f(single)i(\014le)f(handle)g(comm)o(unicator)f(group)
g(are)g(guaran)o(teed)g(to)f(b)q(e)i(sequen)o(tially)h(consisten)o(t.)
75 1660 y(The)h(\014le)i(p)q(oin)o(ter)e(is)h(up)q(dated)g(b)o(y)f(the)
h(amoun)o(t)e(of)h(data)f(requested.)75 1778 y Fm(Nonblo)q(cking)i(W)o
(rite)f(\(indep)q(enden)q(t\))75 1958 y(MPI)p 160 1958
V 16 w(IWRITE)p 332 1958 V 16 w(SHARED\(fh,)h(bu\013,)f(buft)o(yp)q(e,)
i(bufcount,)g(request\))117 2035 y Ff(INOUT)62 b Fm(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 2107
y(IN)155 b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i(user's)
f(bu\013er)h(\(in)o(teger\))117 2179 y(IN)155 b Fm(buft)o(yp)q(e)447
b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117
2251 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14
b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)o(e)g(in)o(teger\))
117 2323 y(OUT)108 b Fm(request)452 b Ff(W)m(rite)14
b(request)h(handle)f(\(handle\))75 2448 y Fh(int)23 b(MPI)p
245 2448 15 2 v 17 w(Iwrite)p 406 2448 V 17 w(shared\(MPI)p
663 2448 V 15 w(File)h(fh,)f(void)g(*buff,)h(MPI)p 1252
2448 V 16 w(Datatype)f(buftype,)393 2504 y(int)h(bufcount,)e(MPI)p
802 2504 V 17 w(Request)h(*request\))75 2591 y(int)g(MPI::File::Iwrite)
p 581 2591 V 15 w(shared\(const)g(void*)g(buff,)393 2647
y(const)g(MPI::Datatype&)f(buftype,)h(const)g(int)h(bufcount,)393
2704 y(MPI::Request&)e(request\))-32 46 y Fo(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 Ft(34)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Fh(MPI)p 150 49 15 2 v 17 w(IWRITE)p 311
49 V 16 w(SHARED\(FH,)23 b(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)f(REQUEST,)h
(IERROR\))170 106 y(<type>)g(BUFF\(*\))170 162 y(INTEGER)g(FH,)h
(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)166 249 y Fm(MPI)p
251 249 14 2 v 16 w(IWRITE)p 423 249 V 16 w(SHARED)16
b Ft(is)g(seman)o(tically)h(iden)o(tical)g(to)e Fm(MPI)p
1259 249 V 16 w(IWRITE)p 1431 249 V 16 w(EXPLICIT)p Ft(,)f(with)i
Fm(o\013set)75 305 y Ft(set)d(to)g(the)h(curren)o(t)f(shared)h(\014le)g
(p)q(oin)o(ter)g(p)q(osition)h(main)o(tained)f(b)o(y)g(the)f(system.)19
b(Shared)14 b(\014le)g(p)q(oin)o(ter)75 362 y(calls)23
b(within)h(a)e(single)i(\014le)f(handle)h(comm)o(unicator)e(group)g
(are)g(guaran)o(teed)g(to)g(b)q(e)h(sequen)o(tially)75
418 y(consisten)o(t.)d(The)15 b(\014le)i(p)q(oin)o(ter)e(is)h(up)q
(dated)g(b)o(y)f(the)h(amoun)o(t)e(of)h(data)f(requested.)75
539 y Fl(11.5.2)49 b(Collective)18 b(Op)q(erations)-117
578 y Fp(>)d Fo(\(Oct\))75 625 y Ft(The)e(seman)o(tics)g(of)g(a)f
(collectiv)o(e)j(access)e(using)h(a)e(shared)h(\014le)h(p)q(oin)o(ter)g
(is)f(that)f(the)h(accesses)h(to)e(the)h(\014le)75 682
y(will)18 b(b)q(e)g(in)g(the)e(order)h(determined)h(b)o(y)f(the)g
(ranks)f(of)g(the)h(pro)q(cesses)g(within)h(the)f(group)g(asso)q
(ciated)75 738 y(with)f(the)g(comm)o(unicator.)22 b(In)16
b(addition,)h(in)g(order)e(to)h(prev)o(en)o(t)f(subsequen)o(t)i(shared)
f(o\013set)f(accesses)75 795 y(b)o(y)g(the)h(same)e(pro)q(cesses)i(to)f
(in)o(terfere)g(with)h(this)g(collectiv)o(e)h(access,)e(the)g(call)h
(can)g(only)g(return)f(after)75 851 y(all)h(the)g(pro)q(cesses)f
(within)i(the)e(group)g(ha)o(v)o(e)g(initiated)i(their)e(accesses.)21
b(When)15 b(the)h(call)g(returns,)f(the)75 908 y(shared)i(\014le)g(p)q
(oin)o(ter)g(p)q(oin)o(ts)g(to)f(the)h(next)f(b)o(yte)h(accessible,)h
(according)f(to)f(the)h(\014let)o(yp)q(e)g(used)h(b)o(y)e(all)75
964 y(pro)q(cesses,)f(after)g(the)g(last)g(b)o(yte)g(requested.)-975
b Fp(?)15 b Fo(\(Oct\))-117 1023 y Fp(>)g Fo(\(Oct\))189
1069 y Fj(R)n(ationale.)39 b Ft(Need)14 b(text)g(with)g(p)q(ossible)i
(uses)e(for)f Fm(MPI)p 1157 1069 V 16 w(SHARED)p 1349
1069 V 17 w(ORDERED)p Ft(.)i(\()p Fj(End)f(of)h(r)n(atio-)189
1125 y(nale.)p Ft(\))189 1230 y Fj(A)n(dvic)n(e)f(to)j(users.)39
b Ft(There)15 b(ma)o(y)f(b)q(e)h(some)g(programs)e(in)j(whic)o(h)f(all)
h(pro)q(cesses)f(in)g(the)g(comm)o(u-)189 1286 y(nicator)e(group)g
(asso)q(ciated)h(with)g(the)g(op)q(en)g(\014le)g(need)h(to)e(access)g
(the)h(\014le)g(using)h(the)e(shared)h(\014le)189 1343
y(p)q(oin)o(ter,)k(but)g(the)g(program)e(ma)o(y)h(not)h
Fj(r)n(e)n(quir)n(e)f Ft(that)g(data)g(b)q(e)h(accessed)g(in)h(order)e
(of)h(pro)q(cess)189 1399 y(rank.)g(In)10 b(suc)o(h)h(programs,)e
(using)i(the)g(shared)f(ordered)g(routines)h(\(e.g.)17
b Fm(MPI)p 1512 1399 V 16 w(WRITE)p 1671 1399 V 16 w(SHARED)p
1863 1399 V 18 w(ORDERED)189 1455 y Ft(rather)12 b(than)g
Fm(MPI)p 511 1455 V 16 w(WRITE)p 670 1455 V 16 w(SHARED)p
Ft(\))i(ma)o(y)e(enable)i(an)e(implemen)o(tation)i(to)e(optimize)i
(access,)189 1512 y(impro)o(ving)h(p)q(erformance.)20
b(\()p Fj(End)c(of)g(advic)n(e)h(to)f(users.)p Ft(\))-117
1571 y Fp(?)f Fo(\(Oct\))75 1680 y Fm(Blo)q(cking)h(Read)g
(\(collective\))75 1860 y(MPI)p 160 1860 V 16 w(READ)p
295 1860 V 17 w(SHARED)p 488 1860 V 17 w(ORDERED\(fh,)g(bu\013,)f(buft)
o(yp)q(e,)i(bufcount,)g(status\))117 1937 y Ff(INOUT)62
b Fm(fh)550 b Ff([SAME])14 b(V)m(alid)e(\014le)i(handle)g(\(handle\))
117 2012 y(OUT)108 b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e
(the)i(user's)f(bu\013er)h(\(in)o(teger\))117 2087 y(IN)155
b Fm(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f
(\(handle\))117 2162 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14
b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)o(e)g(in)o(teger\))
117 2237 y(OUT)108 b Fm(status)476 b Ff(Status)15 b(information)c
(\(Status\))75 2361 y Fh(int)47 b(MPI)p 269 2361 15 2
v 17 w(Read)p 382 2361 V 17 w(shared)p 543 2361 V 16
w(ordered\(MPI)p 823 2361 V 16 w(File)23 b(fh,)h(void)f(*buff,)g(MPI)p
1412 2361 V 17 w(Datatype)f(buftype,)393 2418 y(int)i(bufcount,)e(MPI)p
802 2418 V 17 w(Status)h(*status\))75 2504 y(int)g(MPI::File::Read)p
533 2504 V 16 w(shared)p 693 2504 V 16 w(ordered\(void*)f(buff,)393
2561 y(const)h(MPI::Datatype&)f(buftype,)h(const)g(int)h(bufcount,)393
2617 y(MPI::Status&)e(status\))75 2704 y(MPI)p 150 2704
V 17 w(READ)p 263 2704 V 16 w(SHARED)p 423 2704 V 17
w(ORDERED\(FH,)g(BUFF,)h(BUFTYPE,)g(BUFCOUNT,)g(STATUS,)g(IERROR\))1967
46 y Fo(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: 35 37
35 36 bop 75 -100 a Fk(11.5.)34 b(D)o(A)l(T)l(A)15 b(A)o(CCESS)g(WITH)g
(SHARED)h(FILE)f(POINTERS)578 b Ft(35)170 49 y Fh(<type>)23
b(BUFF\(*\))170 106 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f
(STATUS\(MPI)p 1153 106 15 2 v 16 w(STATUS)p 1313 106
V 16 w(SIZE\),)h(IERROR)166 192 y Fm(MPI)p 251 192 14
2 v 16 w(READ)p 386 192 V 17 w(SHARED)p 579 192 V 17
w(ORDERED)18 b Ft(is)f(a)f(collectiv)o(e)i(v)o(ersion)f(of)f(the)h
Fm(MPI)p 1480 192 V 15 w(READ)p 1614 192 V 17 w(SHARED)h
Ft(in-)75 249 y(terface.)h(This)c(routine)g(m)o(ust)f(b)q(e)h(called)h
(b)o(y)e(all)h(pro)q(cesses)g(in)g(the)g(comm)o(unicator)f(group)g
(asso)q(ciated)75 305 y(with)k(the)g(\014le)g(handle)h
Fm(fh)p Ft(.)28 b(Eac)o(h)17 b(pro)q(cess)h(ma)o(y)f(pass)g(di\013eren)
o(t)h(argumen)o(t)f(v)m(alues)i(for)e(the)g Fm(buft)o(yp)q(e)p
Ft(,)75 362 y(and)e Fm(bufcount)i Ft(argumen)o(ts.)i(After)14
b(all)i(pro)q(cesses)f(of)f(the)h(group)g(ha)o(v)o(e)f(issued)i(their)f
(resp)q(ectiv)o(e)h(calls,)75 418 y(eac)o(h)f(pro)q(cess)h(attempts)e
(to)h(read,)g(from)g(the)g(\014le)i(asso)q(ciated)e(with)h
Fm(fh)p Ft(,)f(a)g(total)g(n)o(um)o(b)q(er)h(of)f Fm(bufcount)75
474 y Ft(data)i(items)h(ha)o(ving)h Fm(buft)o(yp)q(e)g
Ft(t)o(yp)q(e)f(in)o(to)g(the)g(user's)g(bu\013er)g Fm(bu\013)p
Ft(.)28 b(F)l(or)18 b(eac)o(h)g(pro)q(cess,)g(the)g(lo)q(cation)75
531 y(in)h(the)e(\014le)i(at)e(whic)o(h)i(data)e(is)h(read)f(is)i(the)e
(p)q(osition)i(at)e(whic)o(h)i(the)f(shared)f(\014le)i(p)q(oin)o(ter)f
(w)o(ould)g(b)q(e)75 587 y(after)c(all)h(pro)q(cesses)g(whose)g(ranks)f
(within)i(the)e(group)h(are)f(less)h(than)f(that)g(of)g(this)h(pro)q
(cess)g(had)g(read)75 644 y(their)f(data.)k Fm(MPI)p
387 644 V 16 w(READ)p 522 644 V 17 w(SHARED)p 715 644
V 17 w(ORDERED)d Ft(returns)e(the)g(n)o(um)o(b)q(er)g(of)g
Fm(buft)o(yp)q(e)i Ft(elemen)o(ts)f(read)f(in)75 700
y Fm(status)p Ft(.)21 b(The)14 b(shared)f(\014le)h(p)q(oin)o(ter)g(is)g
(up)q(dated)g(b)o(y)f(the)g(amoun)o(ts)f(of)h(data)g(requested)g(b)o(y)
g(all)i(pro)q(cesses)75 757 y(of)g(the)g(group.)189 857
y Fj(A)n(dvic)n(e)f(to)h(implementors.)39 b Ft(Accesses)15
b(to)e(the)h(data)f(requested)i(b)o(y)f(all)h(pro)q(cesses)f(do)g(not)f
(ha)o(v)o(e)189 913 y(to)f(b)q(e)i(serialized.)21 b(Once)14
b(all)g(pro)q(cesses)f(ha)o(v)o(e)g(issued)h(their)f(requests,)g(lo)q
(cations)h(within)g(the)f(\014le)189 969 y(for)i(all)i(accesses)g(can)f
(b)q(e)h(computed,)g(and)f(accesses)h(can)f(pro)q(ceed)h(indep)q(enden)
o(tly)i(from)d(eac)o(h)189 1026 y(other,)e(p)q(ossibly)j(in)f
(parallel.)21 b(\()p Fj(End)16 b(of)g(advic)n(e)g(to)h(implementors.)p
Ft(\))75 1145 y Fm(Blo)q(cking)f(W)o(rite)f(\(collective\))75
1325 y(MPI)p 160 1325 V 16 w(WRITE)p 319 1325 V 16 w(SHARED)p
511 1325 V 18 w(ORDERED\(fh,)h(bu\013,)f(buft)o(yp)q(e,)i(bufcount,)f
(status\))117 1402 y Ff(INOUT)62 b Fm(fh)550 b Ff([SAME])14
b(V)m(alid)e(\014le)i(handle)g(\(handle\))117 1477 y(IN)155
b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i(user's)f
(bu\013er)h(\(in)o(teger\))117 1551 y(IN)155 b Fm(buft)o(yp)q(e)447
b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117
1625 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14
b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)o(e)g(in)o(teger\))
117 1699 y(OUT)108 b Fm(status)476 b Ff(Status)15 b(information)c
(\(Status\))75 1823 y Fh(int)47 b(MPI)p 269 1823 15 2
v 17 w(Write)p 406 1823 V 17 w(shared)p 567 1823 V 16
w(ordered\(MPI)p 847 1823 V 16 w(File)23 b(fh,)g(void)h(*buff,)f(MPI)p
1436 1823 V 17 w(Datatype)f(buftype,)393 1880 y(int)i(bufcount,)e(MPI)p
802 1880 V 17 w(Status)h(*status\))75 1966 y(int)g(MPI::File::Write)p
557 1966 V 15 w(shared)p 716 1966 V 17 w(ordered\(const)f(void*)h
(buff,)393 2023 y(const)g(MPI::Datatype&)f(buftype,)h(const)g(int)h
(bufcount,)393 2079 y(MPI::Status&)e(status\))75 2165
y(MPI)p 150 2165 V 17 w(WRITE)p 287 2165 V 16 w(SHARED)p
447 2165 V 17 w(ORDERED\(FH,)g(BUFF,)h(BUFTYPE,)g(BUFCOUNT,)g(STATUS,)f
(IERROR\))170 2222 y(<type>)h(BUFF\(*\))170 2278 y(INTEGER)g(FH,)h
(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p 1153 2278 V 16
w(STATUS)p 1313 2278 V 16 w(SIZE\),)h(IERROR)166 2365
y Fm(MPI)p 251 2365 14 2 v 16 w(WRITE)p 410 2365 V 16
w(SHARED)p 602 2365 V 18 w(ORDERED)11 b Ft(is)f(a)g(collectiv)o(e)i(v)o
(ersion)f(of)e(the)h(blo)q(c)o(king)i Fm(MPI)p 1634 2365
V 16 w(WRITE)p 1793 2365 V 16 w(SHARED)75 2421 y Ft(in)o(terface.)20
b(All)d(pro)q(cesses)f(in)g(the)f(comm)o(unicator)g(group)g(asso)q
(ciated)h(with)g(the)f(\014le)h(handle)h Fm(fh)f Ft(m)o(ust)75
2478 y(call)f Fm(MPI)p 242 2478 V 15 w(WRITE)p 400 2478
V 17 w(SHARED)p 593 2478 V 17 w(ORDERED)p Ft(.)f(Eac)o(h)g(pro)q(cess)f
(ma)o(y)g(pass)h(di\013eren)o(t)f(argumen)o(t)g(v)m(alues)i(for)75
2534 y(the)21 b Fm(buft)o(yp)q(e)i Ft(and)e Fm(bufcount)i
Ft(argumen)o(ts.)36 b(After)20 b(all)i(pro)q(cesses)f(of)g(the)f(group)
h(ha)o(v)o(e)f(issued)i(their)75 2591 y(resp)q(ectiv)o(e)f(calls,)i
(eac)o(h)d(pro)q(cess)h(attempts)f(to)f(write,)j(in)o(to)e(the)h
(\014le)g(asso)q(ciated)g(with)g Fm(fh)p Ft(,)g(a)g(total)75
2647 y(n)o(um)o(b)q(er)16 b(of)f Fm(bufcount)i Ft(data)e(items)g(ha)o
(ving)h Fm(buft)o(yp)q(e)h Ft(t)o(yp)q(e)f(con)o(tained)g(in)g(the)f
(user's)g(bu\013er)h Fm(bu\013)p Ft(.)21 b(F)l(or)75
2704 y(eac)o(h)c(pro)q(cess,)g(the)g(lo)q(cation)h(in)g(the)f(\014le)h
(at)e(whic)o(h)i(data)f(is)g(written)g(is)h(the)f(p)q(osition)h(at)e
(whic)o(h)i(the)-32 46 y Fo(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: 36 38
36 37 bop 75 -100 a Ft(36)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Ft(shared)16 b(\014le)h(p)q(oin)o(ter)f(w)o(ould)g(b)q(e)
g(after)f(all)i(pro)q(cesses)f(whose)g(ranks)f(within)i(the)f(group)f
(are)h(less)g(than)75 106 y(that)h(of)g(this)h(pro)q(cess)f(had)h
(written)f(their)h(data.)26 b Fm(MPI)p 1057 106 14 2
v 16 w(WRITE)p 1216 106 V 17 w(SHARED)p 1409 106 V 17
w(ORDERED)19 b Ft(returns)e(the)75 162 y(n)o(um)o(b)q(er)j(of)e
Fm(buft)o(yp)q(e)j Ft(elemen)o(ts)f(written)f(in)h Fm(status)p
Ft(.)34 b(The)20 b(shared)f(\014le)h(p)q(oin)o(ter)g(is)g(up)q(dated)g
(b)o(y)f(the)75 219 y(amoun)o(ts)14 b(of)h(data)g(requested)g(b)o(y)g
(all)i(pro)q(cesses)e(of)g(the)g(group.)189 325 y Fj(A)n(dvic)n(e)f(to)
h(implementors.)39 b Ft(Accesses)15 b(to)e(the)h(data)f(requested)i(b)o
(y)f(all)h(pro)q(cesses)f(do)g(not)f(ha)o(v)o(e)189 381
y(to)f(b)q(e)i(serialized.)21 b(Once)14 b(all)g(pro)q(cesses)f(ha)o(v)o
(e)g(issued)h(their)f(requests,)g(lo)q(cations)h(within)g(the)f(\014le)
189 438 y(for)i(all)i(accesses)g(can)f(b)q(e)h(computed,)g(and)f
(accesses)h(can)f(pro)q(ceed)h(indep)q(enden)o(tly)i(from)d(eac)o(h)189
494 y(other,)e(p)q(ossibly)j(in)f(parallel.)21 b(\()p
Fj(End)16 b(of)g(advic)n(e)g(to)h(implementors.)p Ft(\))75
614 y Fm(Nonblo)q(cking)f(Read)g(\(collective\))75 795
y(MPI)p 160 795 V 16 w(IREAD)p 308 795 V 16 w(SHARED)p
500 795 V 18 w(ORDERED\(fh,)g(bu\013,)f(buft)o(yp)q(e,)i(bufcount,)g
(request\))117 872 y Ff(INOUT)62 b Fm(fh)550 b Ff([SAME])14
b(V)m(alid)e(\014le)i(handle)g(\(handle\))117 947 y(OUT)108
b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i(user's)f
(bu\013er)h(\(in)o(teger\))117 1022 y(IN)155 b Fm(buft)o(yp)q(e)447
b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117
1097 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14
b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)o(e)g(in)o(teger\))
117 1172 y(OUT)108 b Fm(request)452 b Ff(Read)14 b(request)h(handle)f
(\(handle\))75 1297 y Fh(int)23 b(MPI)p 245 1297 15 2
v 17 w(Iread)p 382 1297 V 17 w(shared)p 543 1297 V 16
w(ordered\(MPI)p 823 1297 V 16 w(File)g(fh,)h(void)f(*buff,)g(MPI)p
1412 1297 V 17 w(Datatype)f(buftype,)393 1353 y(int)i(bufcount,)e(MPI)p
802 1353 V 17 w(Request)h(*request\))75 1440 y(int)g(MPI::File::Iread)p
557 1440 V 15 w(shared)p 716 1440 V 17 w(ordered\(void*)f(buff,)393
1496 y(const)h(MPI::Datatype&)f(buftype,)h(const)g(int)h(bufcount,)393
1553 y(MPI::Request&)e(request\))75 1639 y(MPI)p 150
1639 V 17 w(IREAD)p 287 1639 V 16 w(SHARED)p 447 1639
V 17 w(ORDERED\(FH,)g(BUFF,)h(BUFTYPE,)g(BUFCOUNT,)g(REQUEST,)f
(IERROR\))170 1696 y(<type>)h(BUFF\(*\))170 1752 y(INTEGER)g(FH,)h
(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)166 1838 y
Fm(MPI)p 251 1838 14 2 v 16 w(IREAD)p 399 1838 V 16 w(SHARED)p
591 1838 V 18 w(ORDERED)11 b Ft(is)g(a)e(collectiv)o(e)j(v)o(ersion)f
(of)e(the)i(non)o(blo)q(c)o(king)g Fm(MPI)p 1695 1838
V 16 w(IREAD)p 1843 1838 V 17 w(SHARED)75 1895 y Ft(in)o(terface.)20
b(All)d(pro)q(cesses)f(in)g(the)f(comm)o(unicator)g(group)g(asso)q
(ciated)h(with)g(the)f(\014le)h(handle)h Fm(fh)f Ft(m)o(ust)75
1951 y(call)g Fm(MPI)p 243 1951 V 16 w(IREAD)p 391 1951
V 16 w(SHARED)p 583 1951 V 18 w(ORDERED)p Ft(.)f(Eac)o(h)g(pro)q(cess)g
(ma)o(y)e(pass)i(di\013eren)o(t)g(argumen)o(t)f(v)m(alues)i(for)75
2008 y(the)g Fm(buft)o(yp)q(e)i Ft(and)f Fm(bufcount)h
Ft(argumen)o(ts.)k(After)16 b(all)h(pro)q(cesses)g(of)f(the)g(group)g
(ha)o(v)o(e)g(issued)h(their)g(re-)75 2064 y(sp)q(ectiv)o(e)c(calls,)g
(eac)o(h)f(pro)q(cess)g(attempts)e(to)h(read,)h(from)f(the)h(\014le)h
(asso)q(ciated)f(with)g Fm(fh)p Ft(,)g(a)g(total)f(n)o(um)o(b)q(er)75
2121 y(of)j Fm(bufcount)i Ft(data)d(items)h(ha)o(ving)h
Fm(buft)o(yp)q(e)g Ft(t)o(yp)q(e)g(in)o(to)f(the)g(user's)f(bu\013er)h
Fm(bu\013)p Ft(.)20 b(F)l(or)14 b(eac)o(h)g(pro)q(cess,)g(the)75
2177 y(lo)q(cation)g(in)g(the)f(\014le)i(at)d(whic)o(h)i(data)f(will)i
(b)q(e)f(read)f(is)g(the)h(p)q(osition)g(at)f(whic)o(h)h(the)f(shared)g
(\014le)h(p)q(oin)o(ter)75 2234 y(w)o(ould)h(b)q(e)g(after)e(all)i(pro)
q(cesses)g(whose)f(ranks)g(within)h(the)g(group)f(are)g(less)h(than)f
(that)f(of)h(this)h(pro)q(cess)75 2290 y(had)k(read)g(their)g(data.)31
b Fm(MPI)p 602 2290 V 16 w(IREAD)p 750 2290 V 16 w(SHARED)p
942 2290 V 18 w(ORDERED)20 b Ft(returns)e(immediately)j(and)e(do)q(es)g
(not)75 2347 y(w)o(ait)c(for)g(the)g(data)g(to)g(b)q(e)h(presen)o(t)g
(in)g(the)f(user's)h(bu\013er.)k Fm(MPI)p 1196 2347 V
16 w(IREAD)p 1344 2347 V 17 w(SHARED)p 1537 2347 V 17
w(ORDERED)d Ft(asso-)75 2403 y(ciates)d(an)f(individual)j(request)e
(handle)g Fm(request)h Ft(to)e(the)g(I/O)h(request)f(for)g(eac)o(h)g
(pro)q(cess.)19 b(The)14 b(request)75 2459 y(handle)j(can)g(b)q(e)f
(used)h(later)f(b)o(y)g(a)g(pro)q(cess)h(to)e(query)h(the)h(status)e
(of)h(its)g(individual)j(read)d(request)g(or)75 2516
y(w)o(ait)d(for)g(its)h(completion.)21 b(On)14 b(eac)o(h)g(pro)q(cess,)
g Fm(MPI)p 983 2516 V 15 w(IREAD)p 1130 2516 V 17 w(SHARED)p
1323 2516 V 17 w(ORDERED)h Ft(completes)f(when)75 2572
y(the)20 b(individual)j(request)d(has)g(completed)h(\(i.e.)34
b(a)19 b(pro)q(cess)h(do)q(es)h(not)e(ha)o(v)o(e)h(to)f(w)o(ait)g(for)h
(all)g(other)75 2629 y(requests)d(to)f(complete\).)25
b(The)17 b(user)g(should)g(not)g(access)g(an)o(y)f(part)g(of)g(the)h
(receiving)i(bu\013er)d(after)g(a)75 2685 y(non)o(blo)q(c)o(king)h
(read)e(is)h(called,)h(un)o(til)g(the)f(read)f(completes.)22
b(The)15 b(shared)h(\014le)h(p)q(oin)o(ter)f(is)g(up)q(dated)g(b)o(y)
1967 46 y Fo(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: 37 39
37 38 bop 75 -100 a Fk(11.5.)34 b(D)o(A)l(T)l(A)15 b(A)o(CCESS)g(WITH)g
(SHARED)h(FILE)f(POINTERS)578 b Ft(37)75 49 y(the)15
b(amoun)o(ts)f(of)h(data)f(requested)h(b)o(y)g(all)h(pro)q(cesses)f(of)
g(the)g(group.)k(F)l(or)c(eac)o(h)g(pro)q(cess,)g(the)g(n)o(um)o(b)q
(er)75 106 y(of)h Fm(buft)o(yp)q(e)h Ft(elemen)o(ts)g(actually)g(read)f
(b)o(y)g(that)f(pro)q(cess)h(can)h(b)q(e)f(extracted)g(from)f(the)h
Fm(MPI)p 1691 106 14 2 v 16 w(TEST)g Ft(or)75 162 y Fm(MPI)p
160 162 V 16 w(W)l(AIT)f Ft(return)g(status,)f(using)i(the)f(routines)h
Fm(MPI)p 1044 162 V 16 w(GET)p 1148 162 V 16 w(COUNT)g
Ft(or)f Fm(MPI)p 1474 162 V 16 w(GET)p 1578 162 V 17
w(ELEMENTS)p Ft(.)75 282 y Fm(Nonblo)q(cking)h(W)o(rite)f
(\(collective\))75 463 y(MPI)p 160 463 V 16 w(IWRITE)p
332 463 V 16 w(SHARED)p 524 463 V 17 w(ORDERED\(fh,)h(bu\013,)f(buft)o
(yp)q(e,)i(bufcount,)g(request\))117 540 y Ff(INOUT)62
b Fm(fh)550 b Ff([SAME])14 b(V)m(alid)e(\014le)i(handle)g(\(handle\))
117 615 y(IN)155 b Fm(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i
(user's)f(bu\013er)h(\(in)o(teger\))117 690 y(IN)155
b Fm(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f
(\(handle\))117 765 y(IN)155 b Fm(bufcount)422 b Ff(Num)o(b)q(er)14
b(of)f(buft)o(yp)q(e)h(elemen)o(ts)g(\(nonnegativ)o(e)g(in)o(teger\))
117 840 y(OUT)108 b Fm(request)452 b Ff(W)m(rite)14 b(request)h(handle)
f(\(handle\))75 965 y Fh(int)47 b(MPI)p 269 965 15 2
v 17 w(Iwrite)p 430 965 V 16 w(shared)p 590 965 V 17
w(ordered\(MPI)p 871 965 V 15 w(File)24 b(fh,)f(void)h(*buff,)393
1021 y(MPI)p 468 1021 V 17 w(Datatype)f(buftype,)f(int)i(bufcount,)f
(MPI)p 1321 1021 V 16 w(Request)g(*request\))75 1108
y(int)g(MPI::File::Iwrite)p 581 1108 V 15 w(shared)p
740 1108 V 17 w(ordered\(const)f(void*)h(buff,)393 1164
y(const)g(MPI::Datatype&)f(buftype,)h(const)g(int)h(bufcount,)393
1221 y(MPI::Request&)e(request\))75 1307 y(MPI)p 150
1307 V 17 w(IWRITE)p 311 1307 V 16 w(SHARED)p 471 1307
V 16 w(ORDERED\(FH,)h(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)f(REQUEST,)h
(IERROR\))170 1363 y(<type>)g(BUFF\(*\))170 1420 y(INTEGER)g(FH,)h
(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)166 1506 y
Fm(MPI)p 251 1506 14 2 v 16 w(IWRITE)p 423 1506 V 16
w(SHARED)p 615 1506 V 17 w(ORDERED)11 b Ft(is)g(a)f(collectiv)o(e)i(v)o
(ersion)e(of)g(the)g(non)o(blo)q(c)o(king)i Fm(MPI)p
1719 1506 V 15 w(IWRITE)p 1890 1506 V 16 w(SHARED)75
1563 y Ft(in)o(terface.)20 b(All)d(pro)q(cesses)f(in)g(the)f(comm)o
(unicator)g(group)g(asso)q(ciated)h(with)g(the)f(\014le)h(handle)h
Fm(fh)f Ft(m)o(ust)75 1619 y(call)22 b Fm(MPI)p 249 1619
V 15 w(IWRITE)p 420 1619 V 16 w(SHARED)p 612 1619 V 18
w(ORDERED)p Ft(.)f(Eac)o(h)f(pro)q(cess)h(ma)o(y)e(pass)i(di\013eren)o
(t)f(argumen)o(t)g(v)m(alues)75 1676 y(for)c(the)g Fm(buft)o(yp)q(e)i
Ft(and)e Fm(bufcount)i Ft(argumen)o(ts.)k(After)16 b(all)h(pro)q
(cesses)g(of)e(the)i(group)e(ha)o(v)o(e)h(issued)h(their)75
1732 y(resp)q(ectiv)o(e)k(calls,)i(eac)o(h)d(pro)q(cess)h(attempts)f
(to)f(write,)j(in)o(to)e(the)h(\014le)g(asso)q(ciated)g(with)g
Fm(fh)p Ft(,)g(a)g(total)75 1789 y(n)o(um)o(b)q(er)h(of)g
Fm(bufcount)i Ft(data)e(items)g(ha)o(ving)g Fm(buft)o(yp)q(e)i
Ft(t)o(yp)q(e)e(con)o(tained)h(in)g(the)f(user's)g(bu\013er)g
Fm(bu\013)p Ft(.)75 1845 y(F)l(or)c(eac)o(h)g(pro)q(cess,)h(the)g(lo)q
(cation)g(in)g(the)g(\014le)g(at)f(whic)o(h)h(data)f(will)i(b)q(e)f
(written)g(is)g(the)f(p)q(osition)i(at)75 1902 y(whic)o(h)h(the)f
(shared)g(\014le)h(p)q(oin)o(ter)f(w)o(ould)g(b)q(e)h(after)e(all)i
(pro)q(cesses)f(whose)g(ranks)f(within)i(the)f(group)75
1958 y(are)13 b(less)i(than)e(that)g(of)g(this)h(pro)q(cess)g(had)g
(written)g(their)g(data.)19 b Fm(MPI)p 1285 1958 V 15
w(IWRITE)p 1456 1958 V 16 w(SHARED)p 1648 1958 V 18 w(ORDERED)75
2014 y Ft(returns)j(immediately)h(and)f(do)q(es)g(not)g(w)o(ait)f(for)g
(the)h(data)g(to)f(b)q(e)h(presen)o(t)g(in)h(the)f(user's)f(bu\013er.)
75 2071 y Fm(MPI)p 160 2071 V 16 w(IWRITE)p 332 2071
V 16 w(SHARED)p 524 2071 V 17 w(ORDERED)i Ft(asso)q(ciates)e(an)g
(individual)j(request)e(handle)g Fm(request)h Ft(to)e(the)75
2127 y(I/O)c(request)g(for)f(eac)o(h)g(pro)q(cess.)24
b(The)17 b(request)g(handle)h(can)e(b)q(e)i(used)f(later)f(b)o(y)h(a)f
(pro)q(cess)h(to)f(query)75 2184 y(the)22 b(status)g(of)f(its)i
(individual)i(write)d(request)h(or)e(w)o(ait)h(for)g(its)g(completion.)
42 b(On)23 b(eac)o(h)f(pro)q(cess,)75 2240 y Fm(MPI)p
160 2240 V 16 w(IWRITE)p 332 2240 V 16 w(SHARED)p 524
2240 V 17 w(ORDERED)f Ft(completes)g(when)f(the)g(individual)j(write)d
(request)g(has)g(com-)75 2297 y(pleted)f(\(i.e.)26 b(a)17
b(pro)q(cess)h(do)q(es)f(not)g(ha)o(v)o(e)g(to)g(w)o(ait)g(for)f(all)j
(other)e(requests)g(to)g(complete\).)26 b(The)18 b(user)75
2353 y(should)g(not)e(access)h(an)o(y)f(part)g(of)h(the)f(supplied)j
(bu\013er)e(after)f(a)g(non)o(blo)q(c)o(king)j(write)d(is)i(called,)g
(un)o(til)75 2410 y(the)13 b(write)g(is)g(completed.)20
b(The)13 b(shared)g(\014le)h(p)q(oin)o(ter)f(is)g(up)q(dated)h(b)o(y)e
(the)h(amoun)o(ts)f(of)g(data)g(requested)75 2466 y(b)o(y)18
b(all)h(pro)q(cesses)g(of)f(the)g(group.)29 b(F)l(or)17
b(eac)o(h)i(pro)q(cess,)g(the)f(n)o(um)o(b)q(er)g(of)g
Fm(buft)o(yp)q(e)i Ft(elemen)o(ts)f(actually)75 2523
y(written)d(b)o(y)g(that)f(pro)q(cess)h(can)g(b)q(e)h(extracted)e(from)
g(the)h Fm(MPI)p 1177 2523 V 16 w(TEST)g Ft(or)g Fm(MPI)p
1462 2523 V 15 w(W)l(AIT)g Ft(return)g(status,)75 2579
y(using)g(the)f(routines)h Fm(MPI)p 532 2579 V 16 w(GET)p
636 2579 V 16 w(COUNT)g Ft(or)f Fm(MPI)p 962 2579 V 16
w(GET)p 1066 2579 V 17 w(ELEMENTS)p Ft(.)-32 46 y Fo(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: 38 40
38 39 bop 75 -100 a Ft(38)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Fl(11.5.3)49 b(Seek)16 b(\(collective\))75
230 y Fm(MPI)p 160 230 14 2 v 16 w(SEEK)p 287 230 V 16
w(SHARED\(fh,)g(o\013set,)f(whence\))117 307 y Ff(INOUT)62
b Fm(fh)550 b Ff([SAME])14 b(V)m(alid)e(\014le)i(handle)g(\(handle\))
117 381 y(IN)155 b Fm(o\013set)484 b Ff([SAME])14 b(File)f(o\013set)i
(\(o\013set\))117 455 y(IN)155 b Fm(whence)450 b Ff([SAME])14
b(Up)q(date)g(mo)q(de)f(\(in)o(teger\))75 580 y Fh(int)23
b(MPI)p 245 580 15 2 v 17 w(Seek)p 358 580 V 17 w(shared\(MPI)p
615 580 V 16 w(File)g(fh,)g(MPI)p 917 580 V 17 w(Offset)g(offset,)g
(MPI)p 1364 580 V 17 w(Whence)g(whence\))75 666 y(int)g
(MPI::File::Seek)p 533 666 V 16 w(shared\(const)f(MPI::Offset)g
(offset,)393 723 y(const)h(MPI::Whence)g(whence\))75
809 y(MPI)p 150 809 V 17 w(SEEK)p 263 809 V 16 w(SHARED\(FH,)g(OFFSET,)
g(WHENCE\))170 866 y(INTEGER)g(FH,)h(WHENCE)170 922 y(INTEGER*8)f
(OFFSET)166 1008 y Fm(MPI)p 251 1008 14 2 v 16 w(SEEK)p
378 1008 V 16 w(SHARED)17 b Ft(up)q(dates)f(the)g(shared)g(\014le)h(p)q
(oin)o(ter)f(according)g(to)f Fm(whence)p Ft(,)i(whic)o(h)g(could)75
1065 y(ha)o(v)o(e)e(the)g(follo)o(wing)h(p)q(ossible)h(v)m(alues:)143
1154 y Fp(\017)23 b Fe(MPI)p 266 1154 13 2 v 14 w(SEEK)p
382 1154 V 14 w(SET)p Ft(:)15 b(the)h(p)q(oin)o(ter)f(is)h(set)f(to)f
Fm(o\013set)143 1246 y Fp(\017)23 b Fe(MPI)p 266 1246
V 14 w(SEEK)p 382 1246 V 14 w(CUR)p Ft(:)14 b(the)h(p)q(oin)o(ter)h(is)
g(set)f(to)f(the)h(curren)o(t)h(p)q(oin)o(ter)f(p)q(osition)i(plus)f
Fm(o\013set)143 1338 y Fp(\017)23 b Fe(MPI)p 266 1338
V 14 w(SEEK)p 382 1338 V 14 w(END)p Ft(:)15 b(the)h(p)q(oin)o(ter)f(is)
h(set)f(to)g(the)g(end)h(of)e(the)i(\014le)g(plus)g Fm(o\013set)166
1428 y Ft(All)d(the)f(pro)q(cesses)g(in)g(the)g(comm)o(unicator)g
(group)f(asso)q(ciated)h(with)g(the)g(\014le)h(handle)g
Fm(fh)f Ft(m)o(ust)f(call)75 1484 y Fm(MPI)p 160 1484
14 2 v 16 w(SEEK)p 287 1484 V 16 w(SHARED)18 b Ft(with)g(the)f(same)g
Fm(o\013set)g Ft(and)g Fm(whence)p Ft(.)27 b(All)19 b(pro)q(cesses)e
(in)h(the)f(comm)o(unicator)75 1541 y(group)e(are)g(sync)o(hronized)h
(with)g(a)f(barrier)g(b)q(efore)h(the)f(shared)g(\014le)h(p)q(oin)o
(ter)g(is)g(up)q(dated.)166 1597 y(The)c Fm(o\013set)g
Ft(is)g(relativ)o(e)h(to)e(the)h(\014let)o(yp)q(e)h(\(not)e(coun)o
(ting)i(holes\),)f(in)h(units)f(of)g Fm(et)o(yp)q(e)p
Ft(.)20 b(The)12 b(constan)o(t)75 1654 y Fe(MPI)p 152
1654 13 2 v 14 w(OFFSET)p 321 1654 V 14 w(ZERO)j Ft(is)h(de\014ned)g
(to)f(b)q(e)h(o\013set)e(zero.)75 1774 y Fl(11.5.4)49
b(Query)16 b(Sha)o(red)g(File)g(P)o(ointer)g(P)o(osition)75
1955 y Fm(MPI)p 160 1955 14 2 v 16 w(GET)p 264 1955 V
17 w(POSITION)p 490 1955 V 17 w(SHARED\(fh,)f(o\013set,)g(b)o(yte)p
976 1955 V 18 w(o\013set\))117 2032 y Ff(IN)155 b Fm(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 2106
y(OUT)108 b Fm(o\013set)484 b Ff(Curren)o(t)15 b(\014le)f(o\013set)h
(in)e(et)o(yp)q(e)i(units)f(\(o\013set\))117 2180 y(OUT)108
b Fm(b)o(yte)p 400 2180 V 18 w(o\013set)387 b Ff(Curren)o(t)15
b(\014le)f(o\013set)h(in)e(b)o(ytes)i(\(o\013set\))75
2305 y Fh(int)23 b(MPI)p 245 2305 15 2 v 17 w(Get)p 334
2305 V 17 w(position)p 543 2305 V 16 w(shared\(MPI)p
799 2305 V 16 w(File)g(fh,)h(MPI)p 1102 2305 V 16 w(Offset)f(*offset,)
393 2361 y(MPI)p 468 2361 V 17 w(Offset)g(*byte)p 772
2361 V 16 w(offset\))75 2448 y(int)g(MPI::File::Get)p
509 2448 V 16 w(position)p 717 2448 V 16 w(shared\(MPI::Offset&)e
(offset,)393 2504 y(MPI::Offset&)h(byte)p 802 2504 V
17 w(offset\))75 2591 y(MPI)p 150 2591 V 17 w(GET)p 239
2591 V 17 w(POSITION)p 448 2591 V 16 w(SHARED\(FH,)g(OFFSET,)h(BYTE)p
1013 2591 V 17 w(OFFSET\))170 2647 y(INTEGER)g(FH)170
2704 y(INTEGER*8)g(OFFSET,)g(BYTE)p 699 2704 V 17 w(OFFSET)1967
46 y Fo(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: 39 41
39 40 bop 75 -100 a Fk(11.6.)34 b(FILETYPE)15 b(CONSTR)o(UCTORS)992
b Ft(39)166 49 y Fm(MPI)p 251 49 14 2 v 16 w(GET)p 355
49 V 16 w(POSITION)p 580 49 V 17 w(SHARED)20 b Ft(returns)f(the)g
(curren)o(t)g(p)q(osition)g(of)g(the)g(shared)g(\014le)g(p)q(oin)o(ter)
75 106 y(in)f Fm(et)o(yp)q(e)g Ft(units)g(relativ)o(e)g(to)e(the)h
(curren)o(t)g(displacemen)o(t)i(and)e(\014let)o(yp)q(e)i(in)f
Fm(o\013set)p Ft(,)f(and)g(the)h(absolute)75 162 y(p)q(osition)e(in)g
(b)o(ytes)f(ignoring)h(the)f(displacemen)o(t)i(and)e(\014let)o(yp)q(e)i
(in)f Fm(b)o(yte)p 1331 162 V 17 w(o\013set)p Ft(.)414
b Fp(>)16 b Fo(\(Oct\))75 305 y Fq(11.6)60 b(Filet)n(yp)r(e)19
b(Constructo)n(rs)75 409 y Fl(11.6.1)49 b(Intro)q(duction)75
494 y Ft(Common)20 b(I/O)h(op)q(erations)f(\(e.g.,)h(rank-ordered)f
(blo)q(c)o(ks,)i(structured)f(arra)o(y)e(accesses,)j(etc.\))35
b(are)75 551 y(easily)20 b(expressed)g(using)g(the)f(previously)h
(de\014ned)h(read/write)e(op)q(erations)g(and)g(carefully)i(de\014ned)
75 607 y(\014let)o(yp)q(es.)i(In)17 b(order)f(to)f(simplify)j
(generation)e(of)g(common)f(\014let)o(yp)q(es,)i(the)f(follo)o(wing)h
Fm(MPI)e Ft(datat)o(yp)q(e)75 664 y(constructors)f(are)h(pro)o(vided.)
166 720 y(The)j(set)g(of)f(\014let)o(yp)q(es)i(created)f(b)o(y)g(a)g
(single)h(collectiv)o(e)h(\014let)o(yp)q(e)f(constructor)e(should)i(b)q
(e)f(used)75 777 y(together)c(when)i(op)q(ening)h(a)d(\014le.)166
833 y(Eac)o(h)20 b(new)h(\014let)o(yp)q(e)h(created)e
Fm(newt)o(yp)q(e)j Ft(consists)d(of)h(zero)f(or)g(more)g(copies)i(of)e
(the)g(base)h(t)o(yp)q(e)75 890 y Fm(oldt)o(yp)q(e)p
Ft(,)14 b(p)q(ossibly)h(separated)e(b)o(y)g(holes.)20
b(The)13 b(exten)o(t)g(of)f(the)h(new)h(\014let)o(yp)q(e)g(is)g(a)e
(nonnegativ)o(e)i(in)o(teger)75 946 y(m)o(ultiple)j(of)d(the)h(exten)o
(t)g(of)f(the)h(base)g(t)o(yp)q(e.)20 b(All)c(\014let)o(yp)q(e)g
(constructors)f(return)f(a)h(success)g(or)g(failure)75
1002 y(co)q(de.)75 1124 y Fl(11.6.2)49 b(Scatter)15 b(/)i(Gather)e(T)l
(yp)q(e)i(Constructo)o(rs)75 1210 y Fm(MPI)p 160 1210
V 16 w(T)l(yp)q(e)p 268 1210 V 17 w(scatter)p 412 1210
V 18 w(gather)75 1390 y(MPI)p 160 1390 V 16 w(TYPE)p
293 1390 V 17 w(SCA)l(TTER)p 508 1390 V 17 w(GA)l(THER\(size,)f(rank,)f
(oldt)o(yp)q(e,)h(newt)o(yp)q(e\))117 1467 y Ff(IN)155
b Fm(size)519 b Ff([SAME])9 b(size)h(of)f(comm)o(unicator)d(used)k(in)f
(MPI)p 1658 1467 13 2 v 15 w(Op)q(en)i(\(non-)905 1524
y(negativ)o(e)j(in)o(teger\))117 1599 y(IN)155 b Fm(rank)504
b Ff(rank)18 b(in)f(comm)o(unicator)e(used)k(in)e(MPI)p
1566 1599 V 15 w(Op)q(en)i(\(nonnega-)905 1655 y(tiv)o(e)14
b(in)o(teger\))117 1731 y(IN)155 b Fm(oldt)o(yp)q(e)450
b Ff([SAME])14 b(old)f(datat)o(yp)q(e)h(\(handle\))117
1806 y(OUT)108 b Fm(newt)o(yp)q(e)433 b Ff(new)15 b(datat)o(yp)q(e)f
(\(handle\))75 1930 y Fh(int)23 b(MPI)p 245 1930 15 2
v 17 w(Type)p 358 1930 V 17 w(scatter)p 543 1930 V 16
w(gather\(int)g(size,)g(int)g(rank,)g(MPI)p 1275 1930
V 17 w(Datatype)g(oldtype,)393 1987 y(MPI)p 468 1987
V 17 w(Datatype)g(*newtype\))75 2073 y(int)g(MPI::Datatype::Scatter)p
701 2073 V 15 w(gather\(const)f(int)h(size,)g(const)h(int)f(rank,)393
2130 y(const)g(MPI::Datatype&)f(oldtype\))75 2216 y(MPI)p
150 2216 V 17 w(TYPE)p 263 2216 V 16 w(SCATTER)p 447
2216 V 17 w(GATHER\(SIZE,)g(RANK,)h(OLDTYPE,)g(NEWTYPE,)g(IERROR\))170
2272 y(INTEGER)g(SIZE,)h(RANK,)f(OLDTYPE,)f(NEWTYPE,)h(IERROR)166
2359 y Ft(This)c(\014let)o(yp)q(e)g(allo)o(ws)f(eac)o(h)g(pro)q(cess)g
(of)g(a)f(comm)o(unicator)h(to)g(access)g(a)f(distinct)j
Fm(blo)q(ck)e Ft(of)g(the)75 2415 y(\014le)g(in)g(rank)e(order.)25
b(The)17 b(blo)q(c)o(ks)h(are)f(iden)o(tical)i(in)e(size)h(and)f(datat)
o(yp)q(e;)g(eac)o(h)g(item)h(is)f(of)f(datat)o(yp)q(e)75
2472 y Fm(oldt)o(yp)q(e)p Ft(.)166 2528 y(T)l(o)e(ac)o(hiev)o(e)h(the)f
(scatter)g(or)g(gather)f(op)q(eration,)i(the)f(\014les)i(op)q(ened)f
(with)g(the)f(returned)h(\014let)o(yp)q(es)75 2585 y(should)f(b)q(e)f
(accessed)g(with)g(collectiv)o(e)i(read)e(or)f(write)h(op)q(erations)f
(with)h(iden)o(tical)i(o\013sets.)j(Generated)75 2641
y(\014let)o(yp)q(es)e(ma)o(y)f(not)g(b)q(e)g(iden)o(tical,)i(but)e
(will)i(ha)o(v)o(e)e(the)g(same)g(exten)o(t.)-32 46 y
Fo(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: 40 42
40 41 bop 75 -100 a Ft(40)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(T)l(yp)q(e)p
268 49 V 17 w(scatterv)p 433 49 V 18 w(gatherv)75 230
y(MPI)p 160 230 V 16 w(TYPE)p 293 230 V 17 w(SCA)l(TTERV)p
538 230 V 17 w(GA)l(THERV\(size,)17 b(rank,)e(count,)h(oldt)o(yp)q(e,)g
(newt)o(yp)q(e\))117 307 y Ff(IN)155 b Fm(size)519 b
Ff([SAME])9 b(size)h(of)f(comm)o(unicator)d(used)k(in)f(MPI)p
1658 307 13 2 v 15 w(Op)q(en)i(\(non-)905 363 y(negativ)o(e)j(in)o
(teger\))117 438 y(IN)155 b Fm(rank)504 b Ff(rank)18
b(in)f(comm)o(unicator)e(used)k(in)e(MPI)p 1566 438 V
15 w(Op)q(en)i(\(nonnega-)905 495 y(tiv)o(e)14 b(in)o(teger\))117
570 y(IN)155 b Fm(count)482 b Ff(n)o(um)o(b)q(er)14 b(of)h(elemen)o(ts)
f(of)g(oldt)o(yp)q(e)h(in)g(this)f(blo)q(c)o(k)h(\(nonneg-)905
626 y(ativ)o(e)f(in)o(teger\))117 702 y(IN)155 b Fm(oldt)o(yp)q(e)450
b Ff(old)13 b(datat)o(yp)q(e)i(\(handle\))117 777 y(OUT)108
b Fm(newt)o(yp)q(e)433 b Ff(new)15 b(datat)o(yp)q(e)f(\(handle\))75
901 y Fh(int)23 b(MPI)p 245 901 15 2 v 17 w(Type)p 358
901 V 17 w(scatterv)p 567 901 V 16 w(gatherv\(int)f(size,)h(int)h
(rank,)f(int)h(count,)393 958 y(MPI)p 468 958 V 17 w(Datatype)f
(oldtype,)f(MPI)p 986 958 V 17 w(Datatype)h(*newtype\))75
1044 y(int)g(MPI::Datatype::Scatterv)p 725 1044 V 14
w(gatherv\(const)g(int)g(size,)g(const)g(int)h(rank,)393
1100 y(const)f(int)h(count,)f(MPI::Datatype&)f(oldtype\))75
1187 y(MPI)p 150 1187 V 17 w(TYPE)p 263 1187 V 16 w(SCATTERV)p
471 1187 V 16 w(GATHERV\(SIZE,)h(RANK,)g(COUNT,)g(OLDTYPE,)g(NEWTYPE,)f
(IERROR\))170 1243 y(INTEGER)h(SIZE,)h(RANK,)f(COUNT,)g(OLDTYPE,)g
(NEWTYPE,)f(IERROR)166 1330 y Ft(This)c(t)o(yp)q(e)f(allo)o(ws)g(eac)o
(h)h(pro)q(cess)f(of)g(a)g(comm)o(unicator)f(to)h(access)g(a)g
(distinct)i Fj(blo)n(ck)d Ft(of)h(the)g(\014le)75 1386
y(in)e(rank)f(order)g(as)g(in)h(MPI)p 548 1386 14 2 v
17 w(T)o(yp)q(e)p 667 1386 V 17 w(scatter)p 819 1386
V 15 w(gather,)f(except)g(that)g(the)g(blo)q(c)o(k)i(sizes)f(and)f(t)o
(yp)q(es)h(ma)o(y)e(b)q(e)75 1443 y(di\013eren)o(t.)20
b(Eac)o(h)15 b(blo)q(c)o(k)h(is)g(de\014ned)g(as)f Fm(count)i
Ft(con)o(tiguous)e(copies)h(of)f(the)g(passed)g(datat)o(yp)q(e)g
Fm(oldt)o(yp)q(e)p Ft(.)75 1564 y Fl(11.6.3)49 b(Lo)q(cal)18
b(Arra)o(y)e(Filet)o(yp)q(e)g(Constructo)o(r)f(\(indep)q(endent\))75
1745 y Fm(MPI)p 160 1745 V 16 w(TYPE)p 293 1745 V 17
w(SUBARRA)l(Y\(ndims,)i(sizes,)e(subsizes,)i(sta)o(rts,)f(o)o(rder,)e
(oldt)o(yp)q(e,)i(newt)o(yp)q(e\))117 1822 y Ff(IN)155
b Fm(ndims)476 b Ff(n)o(um)o(b)q(er)13 b(of)h(arra)o(y)f(dimensions)g
(\(nonnegativ)o(e)h(in)o(teger\))117 1897 y(IN)155 b
Fm(sizes)502 b Ff(size)15 b(of)e(the)i(full)d(arra)o(y)i(in)f(eac)o(h)i
(dimension)d(\(arra)o(y)i(of)f(non-)905 1954 y(negativ)o(e)h(in)o
(tegers\))117 2029 y(IN)155 b Fm(subsizes)439 b Ff(size)14
b(of)f(the)h(sub-arra)o(y)g(in)f(eac)o(h)h(dimension)e(\(arra)o(y)h(of)
g(non-)905 2085 y(negativ)o(e)h(in)o(tegers\))117 2160
y(IN)155 b Fm(sta)o(rts)484 b Ff(starting)18 b(co)q(ordinates)g(of)e
(the)i(sub-arra)o(y)g(in)f(eac)o(h)g(dimen-)905 2217
y(sion)d(\(arra)o(y)g(of)f(nonnegativ)o(e)g(in)o(tegers\))117
2292 y(IN)155 b Fm(o)o(rder)490 b Ff(arra)o(y)14 b(storage)g(order)h
(\015ag)e(\(in)o(teger\))117 2367 y(IN)155 b Fm(oldt)o(yp)q(e)450
b Ff(arra)o(y)14 b(elemen)o(t)f(datat)o(yp)q(e)h(\(handle\))117
2442 y(OUT)108 b Fm(newt)o(yp)q(e)433 b Ff(new)15 b(datat)o(yp)q(e)f
(\(handle\))75 2567 y Fh(int)23 b(MPI)p 245 2567 15 2
v 17 w(Type)p 358 2567 V 17 w(subarray\(int)f(ndims,)h(int)h(*sizes,)e
(int)i(*subsizes,)e(int)i(*starts,)393 2623 y(int)g(order,)f(MPI)p
731 2623 V 16 w(Datatype)g(oldtype,)g(MPI)p 1249 2623
V 17 w(Datatype)g(*newtype\))1967 46 y Fo(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: 41 43
41 42 bop 75 -100 a Fk(11.6.)29 b(FILETYPE)15 b(CONSTR)o(UCTORS)997
b Ft(41)75 49 y Fh(int)23 b(MPI::Datatype::Subarray\(int)e(ndims,)i
(const)g(int)g(sizes[],)393 106 y(const)g(int)h(subsizes[],)e(const)h
(int)h(starts[],)e(int)i(order,)393 162 y(const)f(MPI::Datatype&)f
(oldtype\))75 249 y(MPI)p 150 249 15 2 v 17 w(TYPE)p
263 249 V 16 w(SUBARRAY\(NDIMS,)g(SIZES,)h(SUBSIZES,)g(STARTS,)g
(ORDER,)g(OLDTYPE,)g(NEWTYPE,)393 305 y(IERROR\))170
362 y(INTEGER)g(NDIMS,)g(SIZES\(*\),)g(SUBSIZES\(*\),)f(STARTS\(*\),)h
(ORDER,)g(OLDTYPE,)170 418 y(NEWTYPE,)g(IERROR)166 504
y Ft(The)g(lo)q(cal)h(sub-arra)o(y)e(\014let)o(yp)q(e)i(constructor)e
(creates)h(an)g Fm(MPI)f Ft(datat)o(yp)q(e)g(describing)j(an)e(n-)75
561 y(dimensional)c(sub-arra)o(y)c(of)h(a)g(n-dimensional)j(arra)o(y)l
(.)k(The)17 b(sub-arra)o(y)e(ma)o(y)h(b)q(e)h(situated)g(an)o(ywhere)75
617 y(within)f(the)f(full)i(arra)o(y)l(,)c(and)j(ma)o(y)e(b)q(e)i(of)e
(an)o(y)h(size)h(up)f(to)g(the)g(size)h(of)e(the)h(larger)g(arra)o(y)f
(as)h(long)g(as)g(it)75 674 y(is)h(con\014ned)i(within)f(this)f(arra)o
(y)l(.)21 b(This)c(t)o(yp)q(e)f(constructor)f(facilitates)i(accessing)g
(arra)o(ys)d(distributed)75 730 y(in)i(blo)q(c)o(ks)g(among)e(pro)q
(cesses)i(to)f(a)f(single)j(\014le)f(that)f(con)o(tains)g(the)g(global)
h(arra)o(y)l(.)166 787 y(This)h(t)o(yp)q(e)f(constructor)f(can)i
(handle)g(arra)o(ys)e(with)i(an)f(arbitrary)g(n)o(um)o(b)q(er)g(of)g
(dimensions)i(and)75 843 y(w)o(orks)11 b(for)h(b)q(oth)g(C)g(and)h(F)o
(OR)l(TRAN)g(ordered)f(matrices)g(\(i.e.,)g(ro)o(w-ma)s(jor)e(or)i
(column-ma)s(jor\).)18 b(Note)75 900 y(that)d(a)g(C)g(program)f(ma)o(y)
g(use)i(F)o(OR)l(TRAN)g(order)f(and)h(a)f(F)o(OR)l(TRAN)h(program)e(ma)
o(y)h(use)g(C)h(order,)75 956 y(the)e(names)h(are)f(only)g(mean)o(t)g
(to)g(sp)q(ecify)i(the)e(default)h(language)f(b)q(eha)o(vior.)20
b(T)l(o)14 b(sp)q(ecify)i(whic)o(h)f(order)75 1013 y(the)g(arra)o(y)f
(is)i(stored,)e(the)i Fm(o)o(rder)e Ft(argumen)o(t)g(is)i(set)f(to)g
(one)g(of)g(the)g(follo)o(wing:)143 1106 y Fp(\017)23
b Fe(MPI)p 266 1106 13 2 v 14 w(C)p 307 1106 V 14 w(ORDER)15
b Ft(-)g(The)g(ordering)h(used)g(b)o(y)f(C)g(arra)o(ys,)e(\(i.e.,)i(ro)
o(w-ma)s(jor)e(order\))143 1200 y Fp(\017)23 b Fe(MPI)p
266 1200 V 14 w(F)o(ORTRAN)p 473 1200 V 14 w(ORDER)13
b Ft(-)i(The)f(ordering)h(used)g(b)o(y)f(F)o(OR)l(TRAN)i(arra)o(ys,)c
(\(i.e.,)i(column-ma)s(jor)189 1257 y(order\))166 1350
y(Although)k(arra)o(ys)f(in)i(C)e(and)h(C++)h(are)e(indexed)j(starting)
d(at)g(0,)h(and)g(arra)o(ys)e(in)j(F)o(OR)l(TRAN)75 1407
y(are)c(indexed)i(starting)d(at)h(1,)f(the)i Fm(sta)o(rts)g
Ft(argumen)o(t)e(is)i(alw)o(a)o(ys)e(indexed)j(starting)e(at)f(0.)675
2155 y @beginspecial 195 @llx 269 @lly 416 @urx 523 @ury
1440 @rwi @setspecial
%%BeginDocument: figures/io-array-file.eps
/$F2psDict 32 dict def $F2psDict begin $F2psDict /mtrx matrix put
end /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def
$F2psBegin
57.000000 681.000000 translate
0.900000 -0.900000 scale
% Polyline
newpath 163 177 moveto 215 177 lineto 215 380 lineto 163 380 lineto closepath 0.95 setgray
gsave fill grestore 0.00 setgray
% Polyline
newpath 217 177 moveto 268 177 lineto 268 379 lineto 217 379 lineto closepath gsave fill grestore % Polyline
newpath 270 177 moveto 321 177 lineto 321 379 lineto 270 379 lineto closepath 0.60 setgray
gsave fill grestore 0.00 setgray
1.000 setlinewidth
% Polyline
newpath 323 178 moveto 374 178 lineto 374 377 lineto 323 377 lineto closepath 0.35 setgray
gsave fill grestore 0.00 setgray
stroke
% Polyline
newpath 294 439 moveto 334 439 lineto 334 458 lineto 294 458 lineto closepath 0.35 setgray
gsave fill grestore 0.00 setgray
stroke
% Polyline
newpath 294 400 moveto 335 400 lineto 335 418 lineto 294 418 lineto closepath 0.60 setgray
gsave fill grestore 0.00 setgray
stroke
% Polyline
newpath 153 438 moveto 195 438 lineto 195 456 lineto 153 456 lineto closepath gsave fill grestore stroke
% Polyline
newpath 154 400 moveto 194 400 lineto 194 420 lineto 154 420 lineto closepath 0.95 setgray
gsave fill grestore 0.00 setgray
stroke
% Polyline
newpath 216 176 moveto 216 380 lineto stroke
% Polyline
newpath 268 176 moveto 268 380 lineto stroke
% Polyline
newpath 322 176 moveto 322 380 lineto stroke
4.000 setlinewidth
% Polyline
newpath 163 176 moveto 163 379 lineto 375 379 lineto 375 176 lineto closepath stroke
/fn0.12 /Times-Roman findfont 13.333334 scalefont def
fn0.12 setfont
(Process 0) 202 414 moveto 1 -1 scale show 1 -1 scale
(Process 2) 348 414 moveto 1 -1 scale show 1 -1 scale
(Process 1) 204 452 moveto 1 -1 scale show 1 -1 scale
(Process 3) 349 452 moveto 1 -1 scale show 1 -1 scale
$F2psEnd
%%EndDocument
@endspecial 595 2253 a(Figure)h(11.5:)k(Example)d(arra)o(y)e(\014le)i
(la)o(y)o(out)166 2359 y(F)l(or)11 b(example,)j(assume)e(w)o(e)f(are)h
(writing)h(out)f(a)f(100x100)g(2D)g(arra)o(y)g(of)h(double)h(precision)
h(\015oating)75 2416 y(p)q(oin)o(t)i(n)o(um)o(b)q(ers)g(that)e(is)i
(distributed)h(among)e(4)g(pro)q(cesses)g(suc)o(h)h(that)f(eac)o(h)g
(pro)q(cess)h(has)f(a)g(blo)q(c)o(k)h(of)75 2472 y(25)e(columns)i
(\(e.g.,)d(pro)q(cess)i(0)g(has)f(columns)i(0-24,)e(pro)q(cess)h(1)g
(has)f(columns)i(25-49,)d(etc.;)i(see)g(Figure)75 2529
y(11.5)f(\).)19 b(T)l(o)c(create)g(the)h(\014let)o(yp)q(es)g(for)e(eac)
o(h)i(pro)q(cess)f(one)h(could)g(use)f(the)h(follo)o(wing)g(C)e
(program:)147 2635 y Fh(double)23 b(subarray[100][25];)147
2691 y(MPI_Datatype)f(filetype;)-32 46 y Fo(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: 42 44
42 43 bop 75 -100 a Ft(42)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)147 49 y Fh(int)23 b(sizes[2],)g(subsizes[2],)f(starts[2];)147
106 y(int)h(rank;)147 219 y(MPI_Comm_rank\(MPI_COMM_)o(WORLD,)d
(&rank\);)147 275 y(sizes[0]=100;)i(sizes[1]=100;)g(subsizes[0]=100;)
147 332 y(subsizes[1]=25;)f(starts[0]=0;)i(starts[1]=rank*25;)147
444 y(MPI_Type_subarray\(2,)e(sizes,)i(subsizes,)f(starts,)h
(MPI_C_ORDER,)600 501 y(MPI_DOUBLE,)f(&filetype\);)166
607 y Ft(Or,)15 b(equiv)m(alen)o(tly)i(in)f(F)o(OR)l(TRAN:)242
713 y Fh(double)23 b(precision)g(subarray\(100,25\))242
770 y(integer)g(filetype,)g(rank,)g(ierror)242 826 y(integer)g
(sizes\(2\),)g(subsizes\(2\),)f(starts\(2\))242 939 y(call)h
(MPI_COMM_RANK\(MPI_COMM_WORLD,)d(rank,)j(ierror\))242
996 y(sizes\(1\)=100)242 1052 y(sizes\(2\)=100)242 1109
y(subsizes\(1\)=100)242 1165 y(subsizes\(2\)=25)242 1222
y(starts\(1\)=1)242 1278 y(starts\(2\)=rank*25)f(+)h(1)242
1391 y(call)g(MPI_TYPE_SUBARRAY\(2,)e(sizes,)j(subsizes,)e(starts,)194
1447 y($)287 b(MPI_FORTRAN_ORDER,)21 b(MPI_DOUBLE_PRECISION,)194
1504 y($)287 b(filetype,)22 b(ierror\))166 1610 y Ft(The)c(generated)f
(\014let)o(yp)q(e)i(will)g(then)f(describ)q(e)h(the)f(p)q(ortion)g(of)f
(the)g(\014le)i(con)o(tained)f(within)h(the)75 1667 y(pro)q(cess')c
(subarra)o(y)g(with)g(holes)h(for)f(the)g(space)h(tak)o(en)f(b)o(y)g
(the)g(other)g(pro)q(cesses.)21 b(Figure)16 b(11.6)e(sho)o(ws)75
1723 y(the)h(\014let)o(yp)q(e)i(created)e(for)f(pro)q(cess)i(1.)675
2290 y @beginspecial 198 @llx 304 @lly 414 @urx 487 @ury
1440 @rwi @setspecial
%%BeginDocument: figures/io-array-p1.eps
/$F2psDict 32 dict def $F2psDict begin $F2psDict /mtrx matrix put
end /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def /$F2psEnd {$F2psEnteredState restore end} def
$F2psBegin
54.000000 681.000000 translate
0.900000 -0.900000 scale
% Polyline
newpath 230 217 moveto 269 217 lineto 269 380 lineto 230 380 lineto closepath 0.00 setgray
gsave fill grestore 1.000 setlinewidth
% Polyline
newpath 160 400 moveto 199 400 lineto 199 420 lineto 160 420 lineto closepath gsave fill grestore stroke
% Polyline
newpath 229 216 moveto 229 381 lineto stroke
% Polyline
newpath 270 216 moveto 270 381 lineto stroke
4.000 setlinewidth
% Polyline
newpath 188 216 moveto 188 380 lineto 353 380 lineto 353 216 lineto closepath stroke
5.000 setlinewidth
% Polyline
newpath 319 398 moveto 358 398 lineto 358 418 lineto 319 418 lineto closepath stroke
/fn0.12 /Times-Roman findfont 13.333334 scalefont def
fn0.12 setfont
(Holes) 370 413 moveto 1 -1 scale show 1 -1 scale
(MPI_DOUBLE) 215 415 moveto 1 -1 scale show 1 -1 scale
$F2psEnd
%%EndDocument
@endspecial 453 2388 a(Figure)f(11.6:)k(Example)d(subarra)o(y)e
(\014let)o(yp)q(e)i(for)f(pro)q(cess)g(1)75 2559 y Fl(11.6.4)49
b(Distributed)16 b(Arra)o(y)g(Filet)o(yp)q(e)g(Constructo)o(rs)75
2645 y Ft(The)g(distributed)i(arra)o(y)d(\014let)o(yp)q(e)i
(constructors)e(create,)h(for)f(eac)o(h)h(pro)q(cess)h(in)g(a)e(group,)
h(a)g(\(p)q(ossibly)75 2702 y(di\013eren)o(t\))j(\014let)o(yp)q(e.)34
b(When)20 b(a)g(collectiv)o(e)h(I/O)f(op)q(eration)g(\(with)f(iden)o
(tical)j(o\013sets\))c(is)i(p)q(erformed)1967 46 y Fo(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: 43 45
43 44 bop 75 -100 a Fk(11.6.)34 b(FILETYPE)15 b(CONSTR)o(UCTORS)992
b Ft(43)75 49 y(on)17 b(a)f(\014le)i(op)q(ened)g(with)f(the)f(returned)
h(\014let)o(yp)q(e,)h(an)f(HPF-lik)o(e)h([)p Fn(?)o Ft(])e
(distribution)j(of)d(the)h(\014le)g(data)f(is)75 106
y(realized.)26 b(Ho)o(w)o(ev)o(er,)16 b(unlik)o(e)i(in)f(HPF,)f(the)h
(storage)e(order)i(ma)o(y)f(b)q(e)h(sp)q(eci\014ed)i(for)d(C)g(arra)o
(ys)g(as)g(w)o(ell)75 162 y(as)f(for)f(F)o(OR)l(TRAN)i(arra)o(ys.)75
281 y Fm(MPI)p 160 281 14 2 v 16 w(T)l(yp)q(e)p 268 281
V 17 w(da)o(rra)o(y)75 367 y Ft(Distribution)g(of)f(an)g(N-dimensional)
j(arra)o(y)c(on)o(to)g(a)h(P-dimensional)i(grid)f(of)e(logical)j(pro)q
(cessors:)75 518 y Fm(MPI)p 160 518 V 16 w(TYPE)p 293
518 V 17 w(D)o(ARRA)l(Y\(size,)k(rank,)f(ndims,)h(dsizes,)g(distribs,)g
(da)o(rgs,)f(p)q(dims,)h(psizes,)g(o)o(rder,)e(oldt)o(yp)q(e,)75
574 y(newt)o(yp)q(e\))117 651 y Ff(IN)155 b Fm(size)519
b Ff([SAME])9 b(size)h(of)f(comm)o(unicator)d(used)k(in)f(MPI)p
1658 651 13 2 v 15 w(Op)q(en)i(\(non-)905 708 y(negativ)o(e)j(in)o
(teger\))117 782 y(IN)155 b Fm(rank)504 b Ff(rank)18
b(in)f(comm)o(unicator)e(used)k(in)e(MPI)p 1566 782 V
15 w(Op)q(en)i(\(nonnega-)905 838 y(tiv)o(e)14 b(in)o(teger\))117
912 y(IN)155 b Fm(ndims)476 b Ff([SAME])13 b(n)o(um)o(b)q(er)g(of)g
(arra)o(y)g(dimensions)f(\(nonnegativ)o(e)i(in-)905 969
y(teger\))117 1042 y(IN)155 b Fm(dsizes)479 b Ff([SAME])19
b(size)i(of)e(distributed)i(arra)o(y)e(in)g(eac)o(h)i(dimension)905
1099 y(\(arra)o(y)14 b(of)f(nonnegativ)o(e)h(in)o(teger\))117
1173 y(IN)155 b Fm(distribs)453 b Ff([SAME])16 b(distribution)g(of)g
(arra)o(y)g(in)g(eac)o(h)h(dimension,)e(e.g.)905 1229
y(BLOCK)g(or)f(CYCLIC)g(\(arra)o(y)f(of)h(in)o(teger\))117
1303 y(IN)155 b Fm(da)o(rgs)487 b Ff([SAME])14 b(distribution)f
(argumen)o(t)g(of)g(dimension,)905 1359 y(e.g.)25 b(BLOCK\(dargs\))18
b(or)e(CYCLIC\(dargs\))h(\(arra)o(y)f(of)g(in-)905 1416
y(teger\))117 1490 y(IN)155 b Fm(p)q(dims)475 b Ff([SAME])20
b(n)o(um)o(b)q(er)f(of)h(pro)q(cessor)i(grid)d(dimensions)g(\(non-)905
1546 y(negativ)o(e)14 b(in)o(teger\))117 1620 y(IN)155
b Fm(psizes)479 b Ff([SAME])10 b(size)h(of)e(pro)q(cessor)j(grid)e(in)g
(eac)o(h)h(dimension)d(\(arra)o(y)905 1677 y(of)13 b(nonnegativ)o(e)h
(in)o(teger\))117 1750 y(IN)155 b Fm(o)o(rder)490 b Ff([SAME])14
b(arra)o(y)f(storage)i(order)f(\015ag)g(\(in)o(teger\))117
1824 y(IN)155 b Fm(oldt)o(yp)q(e)450 b Ff([SAME])14 b(old)f(datat)o(yp)
q(e)h(\(handle\))117 1898 y(OUT)108 b Fm(newt)o(yp)q(e)433
b Ff(new)15 b(datat)o(yp)q(e)f(\(handle\))75 2023 y Fh(int)23
b(MPI)p 245 2023 15 2 v 17 w(Type)p 358 2023 V 17 w(darray\(int)f
(size,)i(int)f(rank,)g(int)h(ndims,)f(int)g(*dsizes,)g(int)393
2079 y(*distribs,)g(int)g(*dargs,)g(int)g(pdims,)h(int)f(*psizes,)g
(int)g(order,)393 2135 y(MPI)p 468 2135 V 17 w(Datatype)g(oldtype,)f
(MPI)p 986 2135 V 17 w(Datatype)h(*newtype\))75 2222
y(int)g(MPI::Datatype::Darray\(const)e(int)i(size,)g(const)g(int)h
(rank,)f(int)h(ndims,)393 2278 y(const)f(int)h(dsizes[],)e(const)i(int)
f(distribs[],)f(const)i(int)f(dargs[],)393 2335 y(int)h(pdims,)f(const)
g(int)g(psizes[],)g(int)g(order,)393 2391 y(const)g(MPI::Datatype&)f
(oldtype\))75 2478 y(MPI)p 150 2478 V 17 w(TYPE)p 263
2478 V 16 w(DARRAY\(SIZE,)h(RANK,)g(NDIMS,)g(DSIZES,)g(DISTRIBS,)f
(DARGS,)h(PDIMS,)g(PSIZES,)393 2534 y(ORDER,)g(OLDTYPE,)g(NEWTYPE,)g
(IERROR\))170 2591 y(INTEGER)g(SIZE,)h(RANK,)f(NDIMS,)g(DSIZES\(*\),)f
(DISTRIBS\(*\),)g(DARGS\(*\),)h(PDIMS,)170 2647 y(PSIZES\(*\))170
2704 y(INTEGER)g(ORDER,)g(OLDTYPE,)g(NEWTYPE,)g(IERROR)-32
46 y Fo(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: 44 46
44 45 bop 75 -100 a Ft(44)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)166 49 y Fm(MPI)p 251 49 14 2 v 16 w(TYPE)p 384
49 V 17 w(D)o(ARRA)l(Y)22 b Ft(generates)f(the)h(\014let)o(yp)q(es)g
(corresp)q(onding)g(to)f(the)g(distribution)i(of)e(an)75
106 y Fm(ndims)p Ft(-dimensional)15 b(arra)o(y)c(of)h
Fm(oldt)o(yp)q(e)h Ft(elemen)o(ts)g(on)o(to)e(a)h Fm(p)q(dims)p
Ft(-dimensional)j(grid)e(of)f(logical)h(pro)q(ces-)75
162 y(sors.)18 b(F)l(or)10 b(a)g(call)h(to)f Fm(MPI)p
507 162 V 16 w(TYPE)p 640 162 V 17 w(D)o(ARRA)l(Y)i Ft(to)d(b)q(e)j
(correct,)e(the)h(equation)1365 130 y Fd(Q)1404 140 y
Fc(pdims)p Fb(\000)p Fa(1)1404 175 y Fc(i)p Fa(=0)1554
162 y Fi(psiz)r(es)p Ft([)p Fi(i)p Ft(])h(=)h Fi(siz)r(e)p
Ft(.)166 219 y(Eac)o(h)i(dimension)i(of)e(the)g(arra)o(y)f(is)i
(distributed)g(in)g(one)g(of)e(three)i(w)o(a)o(ys:)143
312 y Fp(\017)23 b Fe(MPI)p 266 312 13 2 v 14 w(DISTRIBUTE)p
522 312 V 13 w(BLOCK)15 b Ft(-)g(Blo)q(c)o(k)h(distribution)143
406 y Fp(\017)23 b Fe(MPI)p 266 406 V 14 w(DISTRIBUTE)p
522 406 V 13 w(CYCLIC)14 b Ft(-)h(Cyclic)i(distribution)143
500 y Fp(\017)23 b Fe(MPI)p 266 500 V 14 w(DISTRIBUTE)p
522 500 V 13 w(NONE)16 b Ft(-)f(Dimension)h(not)f(distributed.)166
594 y(T)l(o)e(sp)q(ecify)i(a)f(default)g(distribution)i(argumen)o(t,)c
(the)i(constan)o(t)f Fe(MPI)p 1365 594 V 14 w(DISTRIBUTE)p
1621 594 V 14 w(DFL)m(T)p 1736 594 V 15 w(ARG)f Ft(is)75
650 y(used.)20 b(The)c(distribution)h(argumen)o(t)d(for)h(a)g
(dimension)i(that)d(is)i(not)f(distributed)h(is)g(ignored.)166
707 y(F)l(or)j(example,)i(ARRA)l(Y\(CYCLIC\(15\)\))e(corresp)q(onds)h
(to)e Fe(MPI)p 1316 707 V 15 w(DISTRIBUTE)p 1573 707
V 13 w(CYCLIC)g Ft(with)h(a)75 763 y(distribution)13
b(argumen)o(t)d(of)h(15,)g(and)h(ARRA)l(Y\(BLOCK\))h(corresp)q(onds)f
(to)e Fe(MPI)p 1471 763 V 15 w(DISTRIBUTE)p 1728 763
V 13 w(BLOCK)75 820 y Ft(with)16 b(a)e(distribution)j(argumen)o(t)e(of)
f Fe(MPI)p 796 820 V 15 w(DISTRIBUTE)p 1053 820 V 13
w(DFL)m(T)p 1167 820 V 15 w(ARG)p Ft(.)166 876 y(The)j
Fm(o)o(rder)f Ft(argumen)o(t)g(is)h(used)g(as)f(in)i
Fm(MPI)p 928 876 14 2 v 16 w(TYPE)p 1061 876 V 17 w(SUBARRA)l(Y)h
Ft(to)d(sp)q(ecify)i(the)f(storage)e(order)75 933 y(for)h(m)o
(ultidimensional)k(arra)o(ys.)k(Therefore,)17 b(arra)o(ys)f(describ)q
(ed)j(b)o(y)e(this)h(t)o(yp)q(e)f(constructor)f(ma)o(y)g(b)q(e)75
989 y(stored)11 b(in)h(ro)o(w-ma)s(jor)d(or)i(column-ma)s(jor)g(order.)
18 b(V)l(alid)13 b(v)m(alues)g(for)d Fm(o)o(rder)h Ft(are)g
Fe(MPI)p 1517 989 13 2 v 14 w(F)o(ORTRAN)p 1724 989 V
14 w(ORDER)75 1046 y Ft(or)k Fe(MPI)p 208 1046 V 14 w(C)p
249 1046 V 14 w(ORDER)p Ft(.)166 1102 y(F)l(or)f(example,)i(let)g(us)f
(generate)g(the)g(\014let)o(yp)q(es)i(corresp)q(onding)f(to)e(the)i
(HPF)e(distribution:)218 1196 y Fh(<oldtype>)23 b(FILEARRAY\(100,)f
(200,)h(300\))75 1252 y(!HPF$)g(PROCESSORS)g(PROCESSES\(2,)f(3\))75
1309 y(!HPF$)h(DISTRIBUTE)g(FILEARRAY\(CYCLIC\(10\),)e(*,)i(BLOCK\))g
(ONTO)h(PROCESSES)75 1403 y Ft(This)13 b(can)g(b)q(e)g(ac)o(hiev)o(ed)g
(b)o(y)f(the)h(follo)o(wing)g(F)o(OR)l(TRAN)g(co)q(de,)g(assuming)g
(there)g(will)h(b)q(e)f(six)g(pro)q(cesses)75 1459 y(attac)o(hed)i(to)f
(the)h(run:)170 1553 y Fh(ndims)24 b(=)f(3)170 1609 y(dsizes\(1\))g(=)h
(100)170 1666 y(distribs\(1\))f(=)h(MPI_DISTRIBUTE_CYCLIC)170
1722 y(dargs\(1\))f(=)h(10)170 1779 y(dsizes\(2\))f(=)h(200)170
1835 y(distribs\(2\))f(=)h(MPI_DISTRIBUTE_NONE)170 1892
y(dargs\(2\))f(=)h(0)170 1948 y(dsizes\(3\))f(=)h(300)170
2004 y(distribs\(3\))f(=)h(MPI_DISTRIBUTE_BLOCK)170 2061
y(dargs\(3\))f(=)h(MPI_DISTRIBUTE_DFLT_ARG)170 2117 y(pdims)g(=)f(2)170
2174 y(psizes\(1\))g(=)h(2)170 2230 y(psizes\(2\))f(=)h(3)170
2287 y(call)g(MPI_COMM_SIZE\(MPI_COMM_W)o(ORLD,)d(size,)i(ierr\))170
2343 y(call)h(MPI_COMM_RANK\(MPI_COMM_W)o(ORLD,)d(rank,)i(ierr\))170
2400 y(call)h(MPI_TYPE_DARRAY\(size,)d(rank,)i(ndims,)g(dsizes,)g
(distribs,)g(dargs,)147 2456 y($)119 b(pdims,)23 b(psizes,)g
(MPI_FORTRAN_ORDER,)e(oldtype,)i(newtype,)g(ierr\))75
2576 y Fm(MPI)p 160 2576 14 2 v 16 w(T)l(yp)q(e)p 268
2576 V 17 w(da)o(rra)o(y)p 403 2576 V 15 w(2d)75 2662
y Ft(Distribution)16 b(of)f(a)g Fj(two)p Ft(-dimensional)j(arra)o(y:)
1967 46 y Fo(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: 45 47
45 46 bop 75 -100 a Fk(11.6.)29 b(FILETYPE)15 b(CONSTR)o(UCTORS)997
b Ft(45)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(TYPE)p 293
49 V 17 w(D)o(ARRA)l(Y)p 486 49 V 17 w(2D\(size,)25 b(rank,)g(dsize1,)g
(distrib1,)g(da)o(rg1,)f(psize1,)h(dsize2,)h(distrib2,)f(da)o(rg2,)75
106 y(psize2,)15 b(o)o(rder,)f(oldt)o(yp)q(e,)i(newt)o(yp)q(e\))117
183 y Ff(IN)155 b Fm(size)519 b Ff([SAME])9 b(size)h(of)f(comm)o
(unicator)d(used)k(in)f(MPI)p 1658 183 13 2 v 15 w(Op)q(en)i(\(non-)905
239 y(negativ)o(e)j(in)o(teger\))117 315 y(IN)155 b Fm(rank)504
b Ff(rank)18 b(in)f(comm)o(unicator)e(used)k(in)e(MPI)p
1566 315 V 15 w(Op)q(en)i(\(nonnega-)905 371 y(tiv)o(e)14
b(in)o(teger\))117 446 y(IN)155 b Fm(dsize1)473 b Ff([SAME])21
b(size)g(of)f(distributed)i(arra)o(y)f(in)f(\014rst)i(dimension)905
503 y(\(nonnegativ)o(e)14 b(in)o(teger\))117 578 y(IN)155
b Fm(distrib1)447 b Ff([SAME])14 b(distribution)f(for)h(\014rst)g
(dimension)e(\(in)o(teger\))117 653 y(IN)155 b Fm(da)o(rg1)481
b Ff([SAME])12 b(distribution)g(argumen)o(t)f(for)h(\014rst)h
(dimension)d(\(in-)905 709 y(teger\))117 784 y(IN)155
b Fm(psize1)473 b Ff([SAME])12 b(size)i(of)e(pro)q(cessor)j(grid)d(in)g
(\014rst)i(dimension)d(\(in)o(te-)905 841 y(ger\))117
916 y(IN)155 b Fm(dsize2)473 b Ff([SAME])14 b(size)g(of)g(distributed)g
(arra)o(y)g(in)g(second)h(dimension)905 972 y(\(nonnegativ)o(e)f(in)o
(teger\))117 1048 y(IN)155 b Fm(distrib2)447 b Ff([SAME])14
b(distribution)f(for)h(second)g(dimension)f(\(in)o(teger\))117
1123 y(IN)155 b Fm(da)o(rg2)481 b Ff([SAME])18 b(distribution)f
(argumen)o(t)g(for)h(second)h(dimension)905 1179 y(\(in)o(teger\))117
1254 y(IN)155 b Fm(psize2)473 b Ff([SAME])11 b(size)g(of)g(pro)q
(cessor)h(grid)f(in)f(second)i(dimension)d(\(in-)905
1311 y(teger\))117 1386 y(IN)155 b Fm(o)o(rder)490 b
Ff([SAME])14 b(arra)o(y)f(storage)i(order)f(\015ag)g(\(in)o(teger\))117
1461 y(IN)155 b Fm(oldt)o(yp)q(e)450 b Ff([SAME])14 b(old)f(datat)o(yp)
q(e)h(\(handle\))117 1536 y(OUT)108 b Fm(newt)o(yp)q(e)433
b Ff(new)15 b(datat)o(yp)q(e)f(\(handle\))75 1661 y Fh(int)23
b(MPI)p 245 1661 15 2 v 17 w(Type)p 358 1661 V 17 w(darray)p
519 1661 V 16 w(2d\(int)g(size,)g(int)h(rank,)f(int)h(dsize1,)e(int)i
(distrib1,)393 1717 y(int)g(darg1,)f(int)g(psize1,)g(int)g(dsize2,)g
(int)h(distrib2,)e(int)i(darg2,)393 1774 y(int)g(psize2,)f(int)g
(order,)g(MPI)p 1017 1774 V 17 w(Datatype)g(oldtype,)393
1830 y(MPI)p 468 1830 V 17 w(Datatype)g(*newtype\))75
1916 y(int)g(MPI::Datatype::Darray)p 677 1916 V 15 w(2d\(const)g(int)g
(size,)g(const)g(int)h(rank,)f(int)g(dsize1,)393 1973
y(int)h(distrib1,)e(int)i(darg1,)f(int)g(psize1,)g(int)h(dsize2,)e(int)
i(distrib2,)393 2029 y(int)g(darg2,)f(int)g(psize2,)g(int)g(order,)393
2086 y(const)g(MPI::Datatype&)f(oldtype\))75 2172 y(MPI)p
150 2172 V 17 w(TYPE)p 263 2172 V 16 w(DARRAY)p 423 2172
V 17 w(2D\(SIZE,)h(RANK,)g(DSIZE1,)g(DISTRIB1,)f(DARG1,)h(PSIZE1,)g
(DSIZE2,)393 2229 y(DISTRIB2,)g(DARG2,)g(PSIZE2,)g(ORDER,)g(OLDTYPE,)g
(NEWTYPE,)f(IERROR\))170 2285 y(INTEGER)h(SIZE,)h(RANK,)f(DSIZE1,)g
(DISTRIB1,)f(DARG1,)h(PSIZE1,)g(DSIZE2,)g(DISTRIB2,)170
2342 y(DARG2)170 2398 y(INTEGER)g(PSIZE2,)g(ORDER,)g(OLDTYPE,)g
(NEWTYPE,)g(IERROR)166 2485 y Ft(This)12 b(call)h(is)g(a)e(shorthand)h
(for)f(the)h(t)o(w)o(o-dimensional)h(distributed)g(arra)o(y)e(case)h
(and)g(is)g(equiv)m(alen)o(t)75 2541 y(to:)170 2635 y
Fh(dsize[0]=dsize1;)22 b(distrib[0]=distrib1;)f(dargs[0]=darg1;)h
(psize[0])h(=)h(psize1;)170 2691 y(dsize[1]=dsize2;)e
(distrib[1]=distrib2;)f(dargs[1]=darg2;)h(psize[1])h(=)h(psize2;)-32
46 y Fo(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: 46 48
46 47 bop 75 -100 a Ft(46)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)170 49 y Fh(MPI_Type_darray\(size,)21 b(rank,)j(2,)f(dsize,)g
(distrib,)g(dargs,)g(2,)h(psize,)576 106 y(order,)f(oldtype,)g
(&newtype\);)75 226 y Fm(MPI)p 160 226 14 2 v 16 w(T)l(yp)q(e)p
268 226 V 17 w(da)o(rra)o(y)p 403 226 V 15 w(blo)q(ck)75
312 y Ft(BLOCK)16 b(distribution)h(of)e(a)g(one-dimensional)i(arra)o
(y:)75 463 y Fm(MPI)p 160 463 V 16 w(TYPE)p 293 463 V
17 w(D)o(ARRA)l(Y)p 486 463 V 17 w(BLOCK\(size,)e(rank,)g(dsize,)g(da)o
(rg,)g(oldt)o(yp)q(e,)g(newt)o(yp)q(e\))117 540 y Ff(IN)155
b Fm(size)519 b Ff([SAME])9 b(size)h(of)f(comm)o(unicator)d(used)k(in)f
(MPI)p 1658 540 13 2 v 15 w(Op)q(en)i(\(non-)905 596
y(negativ)o(e)j(in)o(teger\))117 671 y(IN)155 b Fm(rank)504
b Ff(rank)18 b(in)f(comm)o(unicator)e(used)k(in)e(MPI)p
1566 671 V 15 w(Op)q(en)i(\(nonnega-)905 728 y(tiv)o(e)14
b(in)o(teger\))117 803 y(IN)155 b Fm(dsize)496 b Ff([SAME])10
b(size)h(of)f(distributed)h(arra)o(y)f(\(nonnegativ)o(e)g(in)o(teger\))
117 878 y(IN)155 b Fm(da)o(rg)504 b Ff([SAME])21 b(distribution)f
(argumen)o(t,)i(e.g.)39 b(BLOCK\(darg\))905 935 y(\(in)o(teger\))117
1010 y(IN)155 b Fm(oldt)o(yp)q(e)450 b Ff([SAME])14 b(old)f(datat)o(yp)
q(e)h(\(handle\))117 1085 y(OUT)108 b Fm(newt)o(yp)q(e)433
b Ff(new)15 b(datat)o(yp)q(e)f(\(handle\))75 1209 y Fh(int)23
b(MPI)p 245 1209 15 2 v 17 w(Type)p 358 1209 V 17 w(darray)p
519 1209 V 16 w(block\(int)g(size,)g(int)g(rank,)h(int)f(dsize,)g(int)h
(darg,)393 1266 y(MPI)p 468 1266 V 17 w(Datatype)f(oldtype,)f(MPI)p
986 1266 V 17 w(Datatype)h(*newtype\))75 1352 y(int)g
(MPI::Datatype::Darray)p 677 1352 V 15 w(block\(const)f(int)i(size,)f
(const)g(int)g(rank,)h(int)f(dsize,)393 1409 y(int)h(darg,)f(const)g
(MPI::Datatype&)f(oldtype\))75 1495 y(MPI)p 150 1495
V 17 w(TYPE)p 263 1495 V 16 w(DARRAY)p 423 1495 V 17
w(BLOCK\(SIZE,)g(RANK,)h(DSIZE,)g(DARG,)h(OLDTYPE,)e(NEWTYPE,)h
(IERROR\))170 1552 y(INTEGER)g(SIZE,)h(RANK,)f(DSIZE,)g(DARG,)g
(OLDTYPE,)g(NEWTYPE,)f(IERROR)166 1638 y Fm(MPI)p 251
1638 14 2 v 16 w(TYPE)p 384 1638 V 17 w(D)o(ARRA)l(Y)p
577 1638 V 17 w(BLOCK)14 b Ft(generates)f(the)h(\014let)o(yp)q(es)g
(corresp)q(onding)h(to)e(the)g(BLOCK)i(dis-)75 1694 y(tribution)h(of)f
(a)g(one-dimensional)i Fm(dsize)f Ft(elemen)o(t)g(arra)o(y)e(of)h
Fm(oldt)o(yp)q(e)p Ft(.)166 1751 y(This)h(call)g(is)g(a)f(shorthand)g
(for:)170 1845 y Fh(MPI_Comm_size\(comm,)22 b(&size\);)170
1901 y(MPI_Comm_rank\(comm,)g(&rank\);)170 1958 y(distrib)h(=)h
(MPI_DISTRIBUTE_BLOCK;)170 2014 y(MPI_Type_darray\(size,)d(rank,)j(1,)f
(dsize,)g(distrib,)g(darg,)g(1,)h(size,)576 2071 y(order,)f(oldtype,)g
(&newtype\);)166 2164 y Ft(Note)10 b(that)f(order)h(is)h(not)e(sp)q
(eci\014ed)k(for)c(this)i(constructor,)f(nor)g(for)f
Fm(MPI)p 1395 2164 V 16 w(TYPE)p 1528 2164 V 17 w(D)o(ARRA)l(Y)p
1721 2164 V 18 w(CYCLIC)p Ft(,)75 2221 y(b)q(ecause)16
b(it)g(is)f(not)g(meaningful)i(for)d(1D)h(arra)o(ys.)75
2341 y Fm(MPI)p 160 2341 V 16 w(T)l(yp)q(e)p 268 2341
V 17 w(da)o(rra)o(y)p 403 2341 V 15 w(cyclic)75 2427
y Ft(CYCLIC)h(distribution)g(of)f(a)g(one-dimensional)j(arra)o(y:)1967
46 y Fo(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: 47 49
47 48 bop 75 -100 a Fk(11.7.)34 b(I/O)15 b(ERR)o(OR)i(CLASSES)1155
b Ft(47)75 49 y Fm(MPI)p 160 49 14 2 v 16 w(TYPE)p 293
49 V 17 w(D)o(ARRA)l(Y)p 486 49 V 17 w(CYCLIC\(size,)15
b(rank,)g(dsize,)g(da)o(rg,)f(oldt)o(yp)q(e,)i(newt)o(yp)q(e\))117
126 y Ff(IN)155 b Fm(size)519 b Ff([SAME])9 b(size)h(of)f(comm)o
(unicator)d(used)k(in)f(MPI)p 1658 126 13 2 v 15 w(Op)q(en)i(\(non-)905
183 y(negativ)o(e)j(in)o(teger\))117 258 y(IN)155 b Fm(rank)504
b Ff(rank)18 b(in)f(comm)o(unicator)e(used)k(in)e(MPI)p
1566 258 V 15 w(Op)q(en)i(\(nonnega-)905 315 y(tiv)o(e)14
b(in)o(teger\))117 390 y(IN)155 b Fm(dsize)496 b Ff([SAME])10
b(size)h(of)f(distributed)h(arra)o(y)f(\(nonnegativ)o(e)g(in)o(teger\))
117 465 y(IN)155 b Fm(da)o(rg)504 b Ff([SAME])19 b(distribution)f
(argumen)o(t,)h(e.g.)34 b(CYCLIC\(darg\))905 521 y(\(in)o(teger\))117
596 y(IN)155 b Fm(oldt)o(yp)q(e)450 b Ff([SAME])14 b(old)f(datat)o(yp)q
(e)h(\(handle\))117 672 y(OUT)108 b Fm(newt)o(yp)q(e)433
b Ff(new)15 b(datat)o(yp)q(e)f(\(handle\))75 796 y Fh(int)23
b(MPI)p 245 796 15 2 v 17 w(Type)p 358 796 V 17 w(darray)p
519 796 V 16 w(cyclic\(int)g(size,)g(int)g(rank,)h(int)f(dsize,)g(int)g
(darg,)393 852 y(MPI)p 468 852 V 17 w(Datatype)g(oldtype,)f(MPI)p
986 852 V 17 w(Datatype)h(*newtype\))75 939 y(int)g
(MPI::Datatype::Darray)p 677 939 V 15 w(cyclic\(const)f(int)h(size,)h
(const)f(int)g(rank,)g(int)h(dsize,)393 995 y(int)g(darg,)f(const)g
(MPI::Datatype&)f(oldtype\))75 1082 y(MPI)p 150 1082
V 17 w(TYPE)p 263 1082 V 16 w(DARRAY)p 423 1082 V 17
w(CYCLIC\(SIZE,)g(RANK,)h(DSIZE,)g(DARG,)g(OLDTYPE,)g(NEWTYPE,)g
(IERROR\))170 1138 y(INTEGER)g(SIZE,)h(RANK,)f(DSIZE,)g(DARG,)g
(OLDTYPE,)g(NEWTYPE,)f(IERROR\))166 1225 y Fm(MPI)p 251
1225 14 2 v 16 w(TYPE)p 384 1225 V 17 w(D)o(ARRA)l(Y)p
577 1225 V 17 w(CYCLIC)11 b Ft(generates)g(the)g(\014let)o(yp)q(es)i
(corresp)q(onding)f(to)e(the)h(CYCLIC)h(dis-)75 1281
y(tribution)k(of)f(a)g(one-dimensional)i Fm(dsize)f Ft(elemen)o(t)g
(arra)o(y)e(of)h Fm(oldt)o(yp)q(e)p Ft(.)166 1338 y(This)h(call)g(is)g
(a)f(shorthand)g(for:)170 1431 y Fh(MPI_Comm_size\(comm,)22
b(&size\);)170 1488 y(MPI_Comm_rank\(comm,)g(&rank\);)170
1544 y(distrib)h(=)h(MPI_DISTRIBUTE_CYCLIC;)170 1601
y(MPI_Type_darray\(size,)d(rank,)j(1,)f(dsize,)g(distrib,)g(darg,)g(1,)
h(size,)576 1657 y(order,)f(oldtype,)g(&newtype\);)1875
1705 y Fp(?)16 b Fo(\(Oct\))1875 1763 y Fp(>)g Fo(\(Oct\))75
1838 y Fq(11.7)60 b(I/O)19 b(Erro)n(r)h(Classes)75 1939
y Ft(The)15 b(follo)o(wing)h(error)f(classes)h(are)e(returned)i(b)o(y)f
(I/O)h(routines:)640 2099 y Fe(MPI)p 717 2099 13 2 v
14 w(ERR)p 810 2099 V 15 w(FILE)614 b Ft(In)o(v)m(alid)17
b(\014le)g(handle)508 2154 y Fe(MPI)p 585 2154 V 14 w(ERR)p
678 2154 V 14 w(NOT)p 780 2154 V 15 w(SAME)162 b Ft(Collectiv)o(e)17
b(routine)f(argumen)o(t)e(not)h([SAME])443 2208 y Fe(MPI)p
520 2208 V 14 w(ERR)p 613 2208 V 14 w(NO)p 687 2208 V
15 w(SUCH)p 810 2208 V 15 w(FILE)603 b Ft(File)16 b(do)q(es)g(not)f
(exist)487 2263 y Fe(MPI)p 564 2263 V 14 w(ERR)p 657
2263 V 14 w(FILE)p 754 2263 V 15 w(EXISTS)768 b Ft(File)17
b(exists)572 2317 y Fe(MPI)p 649 2317 V 14 w(ERR)p 742
2317 V 15 w(A)o(CCESS)609 b Ft(P)o(ermission)16 b(denied)524
2371 y Fe(MPI)p 601 2371 V 14 w(ERR)p 694 2371 V 14 w(NO)p
768 2371 V 15 w(SP)m(A)o(CE)615 b Ft(Not)15 b(enough)h(space)644
2426 y Fe(MPI)p 721 2426 V 14 w(ERR)p 814 2426 V 14 w(EOF)763
b Ft(End)15 b(of)g(\014le)680 2480 y Fe(MPI)p 757 2480
V 15 w(ERR)p 851 2480 V 14 w(IO)652 b Ft(Other)15 b(I/O)h(error)1875
2518 y Fp(?)g Fo(\(Oct\))1875 2576 y Fp(>)g Fo(\(Oct\))-32
46 y(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: 48 50
48 49 bop 75 -100 a Ft(48)1342 b Fk(CHAPTER)15 b(11.)35
b(I/O)75 49 y Fq(11.8)60 b(Prop)r(osal:)26 b(I/O)20 b(Service)f
(Interception)75 151 y Ft(In)g(order)e(to)h(b)q(e)h(able)f(to)g(write)g
(extensions)h(to)e Fm(MPI)h Ft(it)g(w)o(ould)h(b)q(e)f(useful)h(to)f
(ha)o(v)o(e)g(an)g(I/O)g(service)75 207 y(in)o(terception)c(feature.)k
(It)12 b(w)o(ould)h(allo)o(w)g(the)f(user)h(to)e(add)i(alternate)f
(service)h(routines)g(for)f(eac)o(h)g(of)g(the)75 264
y(I/O)18 b(functions)g(within)h Fm(MPI)e Ft(I/O.)g(T)l(o)h(address)f
(these)h(alternate)f(functions)h(either)h(a)e(mo)q(di\014cation)75
320 y(of)g(the)h(\014le)g(name)g(could)g(b)q(e)g(used)g
(\(service:\014lename\))h(or)e(a)g(hin)o(t)h(could)g(b)q(e)g(used)g
(\(and)g(p)q(oten)o(tially)75 377 y(ignored)c(if)g(that)e(service)j
(did)f(not)f(exist\).)19 b(The)14 b(prop)q(osal)g(suggests)e(the)i
(\014lename)g(mo)q(di\014cation.)21 b(The)75 433 y(p)q(erformance)14
b(should)i(not)e(b)q(e)h(seriously)g(impacted)g(if)g(the)f(calls)h(to)f
(lo)o(w)o(er)g(lev)o(el)h(service)h(routines)e(are)75
489 y(handled)j(b)o(y)e(calls)h(to)f(p)q(oin)o(ters)g(to)g(functions.)
189 596 y Fj(R)n(ationale.)38 b Ft(Users)14 b(of)e(MPI)i(ma)o(y)e(wish)
i(to)f(b)q(e)h(able)g(to)f(use)g(the)h(MPI)f(I/O)h(syn)o(tax)e(and)i
(seman-)189 652 y(tics)g(with)g(sp)q(ecial)h(purp)q(ose)g(I/O)f
(services.)20 b(These)14 b(ma)o(y)f(include)k(remote)c(I/O)h(serv)o
(ers,)f(sp)q(ecial)189 709 y(data)h(compression)i(services,)g(and)g
(real-time)g(data)f(distribution)i(services.)k(The)15
b(applications)189 765 y(dev)o(elop)q(ers)i(ma)o(y)e(wish)i(to)f(dev)o
(elop)h(with)g(lo)q(cal)g(I/O)g(and)f(then)g(later)h(transparen)o(tly)e
(connect)189 822 y(to)f(sp)q(ecial)j(I/O)e(services.)21
b(This)15 b(is)h(common,)e(for)g(instance,)i(in)g(the)f(meteorology)f
(comm)o(unit)o(y)189 878 y(where)g(\014nal)h(results)g(are)f(often)g
(distributed)i(using)f(a)f(lossy)g(compression)h(tec)o(hnique.)21
b(\()p Fj(End)15 b(of)189 934 y(r)n(ationale.)p Ft(\))166
1041 y(Creation)f(of)g(a)g(sp)q(ecial)i(I/O)e(service:)20
b(the)15 b(\014rst)f(step)g(is)g(to)g(create)g(a)g(sp)q(ecial)i(I/O)e
(serv)o(ce)h(handle)75 1097 y(whic)o(h)j(will)h(subsequen)o(tly)f(ha)o
(v)o(e)f(services)h(attac)o(hed)e(to)h(it.)26 b(This)17
b(service)h(is)g(later)f(addressed)h(via)f(a)75 1154
y(\014lename)h(mo)q(di\014cation)g(service:\014lename.)27
b(If)18 b(the)f(service)h(do)q(es)f(not)g(exist,)g(the)g(con)o(tin)o
(uable)i(error)75 1210 y Fe(MPI)p 152 1210 13 2 v 14
w(ERR)p 245 1210 V 15 w(IO)p 303 1210 V 14 w(SV)o(C)p
394 1210 V 14 w(NOTF)o(OUND)14 b Ft(will)j(b)q(e)f(returned)f(at)g(op)q
(en)h(time.)166 1314 y Fg(Discussion:)35 b Ff(W)m(e)13
b(could)h(use)h(info/hin)o(ts)e(to)h(\014nd)g(services.)21
b(It)14 b(ma)o(y)e(mak)o(e)h(it)g(easier)i(on)f(the)h(user.)20
b(On)75 1370 y(the)14 b(other)h(hand,)e(it)h(could)g(result)g(in)g
(unexp)q(ected)i(b)q(eha)o(vior.)75 1568 y Fm(MPI)p 160
1568 14 2 v 16 w(IO)p 222 1568 V 16 w(CREA)l(TE)p 407
1568 V 18 w(SERVICE\(ServiceName,)f(ServiceV)o(ecto)o(r,)f
(InitialState\))117 1646 y Ff(IN)155 b Fm(ServiceName)343
b Ff(Name)13 b(service)i(will)e(b)q(e)h(kno)o(wn)g(b)o(y)m(.)117
1721 y(OUT)108 b Fm(ServiceV)o(ecto)o(r)331 b Ff(Handle)14
b(that)g(will)e(b)q(e)j(used)g(to)e(attac)o(h)h(sp)q(eci\014c)i
(services)117 1796 y(IN)155 b Fm(InitialState)381 b Ff(In)o(tial)12
b(state)j(of)e(service)h(v)o(ector.)19 b(Can)13 b(b)q(e)h(either)h
(unde\014ned)905 1852 y(\()p Fe(MPI)p 998 1852 13 2 v
15 w(IO)p 1056 1852 V 14 w(SV)o(C)p 1147 1852 V 14 w(UNDEF)p
Ff(\))8 b(or)i(default)f(handlers)g(\()p Fe(MPI)p 1756
1852 V 15 w(IO)p 1814 1852 V 14 w(SV)o(C)p 1905 1852
V 14 w(DFL)m(T)p Ff(\))75 1977 y Fh(int)23 b(MPI)p 245
1977 15 2 v 17 w(Io)p 310 1977 V 17 w(create)p 471 1977
V 16 w(service\(char)g(*ServiceName,)f(MPI)p 1204 1977
V 17 w(Io)p 1269 1977 V 16 w(service)h(*ServiceVector\))75
2063 y(int)g(static)g(MPI::Io)p 508 2063 V 17 w(create)p
669 2063 V 16 w(service\(const)f(char)h(ServiceName[],)393
2120 y(MPI::Io)p 564 2120 V 16 w(service&)g(ServiceVector\))75
2206 y(MPI)p 150 2206 V 17 w(IO)p 215 2206 V 17 w(CREATE)p
376 2206 V 16 w(SERVICE\(SERVICENAME,)e(SERVICEVECTOR,)h(IERROR\))170
2263 y(CHARACTER*\(*\))h(SERVICENAME)170 2319 y(INTEGER)g
(SERVICEVECTOR,)f(IERROR)166 2406 y Ft(If)14 b Fe(MPI)p
287 2406 13 2 v 15 w(IO)p 345 2406 V 14 w(SV)o(C)p 436
2406 V 14 w(DFL)m(T)g Ft(is)g(used)h(as)f(the)g(initial)i(state)d(and)i
(no)f(services)h(are)e(ev)o(er)h(added)h(then)g(this)75
2462 y(service)c(is)g(equiv)m(alen)o(t)h(to)d(op)q(ening)i(without)g
(an)o(y)e(request)i(for)e(sp)q(ecial)j(services.)19 b(If)10
b Fe(MPI)p 1590 2462 V 15 w(IO)p 1648 2462 V 14 w(SV)o(C)p
1739 2462 V 14 w(UNDEF)75 2518 y Ft(is)17 b(used)f(as)g(the)g(initial)j
(state)c(and)h(no)g(services)h(are)f(added)h(for)e(a)h(particular)h
(service)g(then)f(the)h(con-)75 2575 y(tin)o(uable)f(error)f(returned)g
(when)h(requesting)g(an)f(unde\014ned)i(service)f(is)g
Fe(MPI)p 1425 2575 V 14 w(IO)p 1482 2575 V 14 w(SV)o(C)p
1573 2575 V 14 w(NOT)p 1675 2575 V 15 w(DEFINED)p Ft(.)166
2631 y(Services)22 b(need)f(to)g(b)q(e)g(added)h(to)e(the)h(service)g
(v)o(ector.)36 b(The)21 b(default)h(is)f(that)f(the)h(service)g(is)75
2688 y(unde\014ned)e(or)e(standard)g(services)h(\(see)f(ab)q(o)o(v)o
(e\).)26 b(The)17 b(actual)h(standard)f(service)h(handlers)g(need)h(to)
1967 46 y Fo(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: 49 51
49 50 bop 75 -100 a Fk(11.8.)34 b(PR)o(OPOSAL:)16 b(I/O)g(SER)-5
b(VICE)16 b(INTER)o(CEPTION)683 b Ft(49)75 49 y(b)q(e)19
b(a)o(v)m(ailable)g(to)f(the)g(library)h(dev)o(elop)q(er)g(in)g(some)f
(form,)f(it)i(is)f(suggested)g(here)h(tha)e(a)h(su\016x)p
1779 49 14 2 v 34 w(s)g(b)q(e)75 106 y(used)h(to)e(address)h(the)g
(standard)g(service)h(\(e.g.)28 b Fm(MPI)p 1030 106 V
16 w(Op)q(en)20 b Ft(w)o(ould)e(b)q(e)h(a)o(v)m(ailable)h(as)d
Fm(MPI)p 1696 106 V 16 w(Op)q(en)p 1812 106 V 18 w(s)p
Ft(\).)75 162 y(The)i(follo)o(wing)h(function)f(allo)o(ws)g(the)g
(addition)h(of)f(services)g(to)g(a)f(service)i(v)o(ector.)30
b(Note)19 b(that)f(the)75 219 y(service)e(handler)g(m)o(ust)f(ha)o(v)o
(e)g(the)g(same)g(calling)i(pro\014le)f(as)f(the)g(service)h(it)g(in)o
(tercepts.)166 275 y(Service)21 b(names)f(are)f(the)h(same)g(as)f(the)h
(I/O)h(calls)f(except)h(that)e(an)h(S)p 1442 275 V 36
w(follo)o(ws)g(the)g(MPI)p 1804 275 V 36 w(in)75 332
y(the)h(name.)36 b(The)21 b(service)g(t)o(yp)q(e)g(for)f
Fm(MPI)p 834 332 V 16 w(Op)q(en)i Ft(w)o(ould)f(b)q(e)h
Fm(MPI)p 1260 332 V 15 w(S)p 1300 332 V 17 w(Op)q(en)h
Ft(in)e(the)g(C)f(binding)j(and)75 388 y Fm(MPI)p 160
388 V 16 w(S)p 201 388 V 16 w(OPEN)16 b Ft(in)g(the)g(F)l(ortran)e(77)g
(binding.)75 539 y Fm(MPI)p 160 539 V 16 w(IO)p 222 539
V 16 w(ADD)p 334 539 V 17 w(SERVICE\(ServiceV)o(ecto)o(r,)h(ServiceT)l
(yp)q(e,)h(ServiceHandler\))117 616 y Ff(INOUT)62 b Fm(ServiceV)o(ecto)
o(r)331 b Ff(Service)15 b(handle)f(from)e(create)j(service)117
691 y(IN)155 b Fm(ServiceT)l(yp)q(e)362 b Ff(Name)13
b(of)g(service)j(to)d(add)117 766 y(IN)155 b Fm(ServiceHandler)307
b Ff(F)m(unction)14 b(to)f(handle)h(service)75 891 y
Fh(int)23 b(MPI)p 245 891 15 2 v 17 w(Io)p 310 891 V
17 w(add)p 399 891 V 17 w(service\(MPI)p 680 891 V 16
w(Io)p 744 891 V 16 w(service)g(*ServiceVector,)f(int)i(ServiceType,)
393 947 y(int)g(\(*ServiceHandler\)\(\)\))75 1034 y(int)f(static)g
(MPI::Io)p 508 1034 V 17 w(add)p 597 1034 V 16 w(service\(MPI::Io)p
973 1034 V 16 w(service&)f(ServiceVector,)393 1090 y(int)i
(ServiceType,)e(int)h(\(*ServiceHandler\)\(\)\))75 1177
y(EXTERNAL)g(SERVICEHANDLER)75 1233 y(MPI)p 150 1233
V 17 w(IO)p 215 1233 V 17 w(ADD)p 304 1233 V 16 w
(SERVICE\(SERVICEVECTOR,)e(SERVICETYPE,)i(SERVICEHANDLER,)e(IERROR\))
170 1290 y(INTEGER)i(SERVICEVECTOR,)f(SERVICETYPE,)h(IERROR)166
1376 y Ft(When)13 b(in)o(tercepting)g(an)f(op)q(en)h(call)g(it)g(is)g
(necessary)f(to)f(create)h(an)h(MPI)f(\014le)h(handle.)20
b(The)13 b(handle)75 1433 y(needs)18 b(to)f(b)q(e)i(created)e(with)h
(the)g(in)o(terception)h(v)o(ector)e(in)h(place.)28 b(It)18
b(will)h(also)f(b)q(e)g(created)g(with)g(an)75 1489 y(attribute)d
Fe(MPI)p 344 1489 13 2 v 14 w(IO)p 401 1489 V 14 w(COPIOUS)p
595 1489 V 13 w(D)o(A)m(T)m(A)e Ft(for)i(the)g(in)o(tercepting)i
(routines)e(to)g(cash)g(information.)189 1595 y Fj(A)n(dvic)n(e)i(to)i
(implementors.)55 b Ft(It)18 b(is)g(a)g(reasonable)g(implemen)o(tation)
h(to)e(ha)o(v)o(e)g(the)h(\014le)h(handle)189 1652 y(ha)o(v)o(e)11
b(a)h(reference)g(to)g(the)g(service)g(handle)i(since)f(it)f(is)g
(erroneous)g(to)f(mo)q(dify)i(the)f(service)h(handle)189
1708 y(once)i(a)g(\014le)h(has)f(b)q(een)i(op)q(ened.)k(\()p
Fj(End)15 b(of)i(advic)n(e)f(to)g(implementors.)p Ft(\))75
1909 y Fm(MPI)p 160 1909 14 2 v 16 w(IO)p 222 1909 V
16 w(MAKE)p 367 1909 V 16 w(FILE)p 474 1909 V 16 w
(HANDLE\(ServiceName,)e(FileHandle\))117 1986 y Ff(IN)155
b Fm(ServiceName)343 b Ff(Name)13 b(service)i(is)f(kno)o(wn)f(b)o(y)m
(.)117 2061 y(OUT)108 b Fm(FileHandle)388 b Ff(Handle)14
b(created)h(for)f(use)h(in)e(this)h(op)q(en)g(pro)q(cedure.)75
2186 y Fh(int)23 b(MPI)p 245 2186 15 2 v 17 w(Io)p 310
2186 V 17 w(make)p 423 2186 V 17 w(file)p 536 2186 V
16 w(handle\(char)g(*ServiceName,)f(MPI)p 1245 2186 V
17 w(File)h(FileHandle\))75 2272 y(int)g(MPI::File::Io)p
485 2272 V 16 w(make)p 597 2272 V 16 w(file)p 709 2272
V 17 w(handle\(const)f(char)i(ServiceName[]\))75 2359
y(MPI)p 150 2359 V 17 w(IO)p 215 2359 V 17 w(MAKE)p 328
2359 V 16 w(FILE)p 440 2359 V 17 w(HANDLE\(SERVICENAME,)d(FILEHANDLE,)i
(IERROR\))170 2415 y(CHARACTER*\(*\))g(SERVICENAME)170
2472 y(INTEGER)g(FILEHANDLE,)g(IERROR)1875 2508 y Fp(?)16
b Fo(\(Oct\))-32 46 y(1)-32 103 y(2)-32 159 y(3)-32 215
y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32
498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724
y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40
1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40
1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40
1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40
1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40
2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40
2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF