All interested parties are encouraged to participate in this design
process via the MPI mailing lists, news group, and forum meetings.
See the MPI-2 Web pages for details at:
http://www.mcs.anl.gov/Projects/mpi/mpi2/mpi2.html
This proposal is essentially a reformatting of the MPI-IO Version
0.5 draft (available via http://parallel.nas.nasa.gov/MPI-IO/) with
the following changes:
1. Retained only sections 5 through 9, and a modified section 3.
2. Renamed functions, types, etc., from "MPIO_xxx" to "MPI_xxx".
3. Edited (minor changes) to conform to MPI-2 chapter style.
4. Added clarification regarding:
file consistency semantics,
the use of MPI_Comm in MPI_Open,
----- 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: 46
%%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.05.16:2306
%%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
8 118 df<78FCFCFCFC7800000000000078FCFCFCFC7806127D910D>58
D<FFFFF800FFFFFF000FC01FC00FC007E00FC001F00FC001F80FC000F80FC000FC0FC000
7C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC000
7E0FC0007C0FC0007C0FC0007C0FC000F80FC000F80FC001F00FC007E00FC01FC0FFFFFF
00FFFFF8001F1C7E9B25>68 D<03FC000E0E001C1F003C1F00781F00780E00F80000F800
00F80000F80000F80000F800007800007801803C01801C03000E0E0003F80011127E9115
>99 D<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F
001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>105
D<FF0FC0FF31E01F40F01F80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF18127F911B>110
D<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F800F8F800
F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<1FD830786018E018E018
F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>115
D<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>117
D E /Ff 68 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0
000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0
000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0
000E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703
C00E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<6060F0
F0F8F86868080808080808101010102020404080800D0C7F9C15>34
D<60F0F8680808081010204080050C7C9C0C>39 D<004000800100020006000C000C0018
001800300030007000600060006000E000E000E000E000E000E000E000E000E000E000E0
00E000600060006000700030003000180018000C000C00060002000100008000400A2A7D
9E10>I<800040002000100018000C000C000600060003000300038001800180018001C0
01C001C001C001C001C001C001C001C001C001C001C00180018001800380030003000600
06000C000C00180010002000400080000A2A7E9E10>I<60F0F070101010102020408004
0C7C830C>44 D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<030007003F00C700
070007000700070007000700070007000700070007000700070007000700070007000700
07000700070007000F80FFF80D1C7C9B15>49 D<07C01830201C400C400EF00FF80FF807
F8077007000F000E000E001C001C00380070006000C00180030006010C01180110023FFE
7FFEFFFE101C7E9B15>I<07E01830201C201C781E780E781E381E001C001C0018003000
6007E00030001C001C000E000F000F700FF80FF80FF80FF00E401C201C183007E0101D7E
9B15>I<000C00000C00001C00003C00003C00005C0000DC00009C00011C00031C00021C
00041C000C1C00081C00101C00301C00201C00401C00C01C00FFFFC0001C00001C00001C
00001C00001C00001C00001C0001FFC0121C7F9B15>I<60F0F060000000000000000000
0060F0F06004127C910C>58 D<0FE03038401CE00EF00EF00EF00E000C001C0030006000
C0008001800100010001000100010001000000000000000000000003000780078003000F
1D7E9C14>63 D<000600000006000000060000000F0000000F0000000F00000017800000
178000001780000023C0000023C0000023C0000041E0000041E0000041E0000080F00000
80F0000180F8000100780001FFF80003007C0002003C0002003C0006003E0004001E0004
001E000C001F001E001F00FF80FFF01C1D7F9C1F>65 D<FFFFC00F00F00F00380F003C0F
001C0F001E0F001E0F001E0F001E0F001C0F003C0F00780F01F00FFFE00F00780F003C0F
001E0F000E0F000F0F000F0F000F0F000F0F000F0F001E0F001E0F003C0F0078FFFFE018
1C7E9B1D>I<001F808000E0618001801980070007800E0003801C0003801C0001803800
0180780000807800008070000080F0000000F0000000F0000000F0000000F0000000F000
0000F0000000F0000000700000807800008078000080380000801C0001001C0001000E00
0200070004000180080000E03000001FC000191E7E9C1E>I<FFFFC0000F00F0000F003C
000F000E000F0007000F0007000F0003800F0003C00F0001C00F0001C00F0001E00F0001
E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F0001C00F0003
C00F0003800F0007800F0007000F000E000F001C000F007000FFFFC0001B1C7E9B20>I<
FFFFFC0F003C0F000C0F00040F00040F00060F00020F00020F02020F02000F02000F0200
0F06000FFE000F06000F02000F02000F02000F02010F00010F00020F00020F00020F0006
0F00060F000C0F003CFFFFFC181C7E9B1C>I<FFFFF80F00780F00180F00080F00080F00
0C0F00040F00040F02040F02000F02000F02000F06000FFE000F06000F02000F02000F02
000F02000F00000F00000F00000F00000F00000F00000F00000F8000FFF800161C7E9B1B
>I<001F808000E0618001801980070007800E0003801C0003801C000180380001807800
00807800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F000
FFF0F0000F80700007807800078078000780380007801C0007801C0007800E0007800700
0B800180118000E06080001F80001C1E7E9C21>I<FFF3FFC00F003C000F003C000F003C
000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
000FFFFC000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
000F003C000F003C000F003C000F003C000F003C00FFF3FFC01A1C7E9B1F>I<FFF00F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F00FFF00C1C7F9B0F>I<FFF03FE00F000F000F000C000F
0008000F0010000F0020000F0040000F0080000F0100000F0200000F0400000F0E00000F
1F00000F2F00000F2780000F4780000F83C0000F01E0000F01E0000F00F0000F00F8000F
0078000F003C000F003C000F001E000F001F000F001F80FFF07FF01C1C7E9B20>75
D<FFF8000F80000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F00000F00000F00080F00080F00080F00180F00180F00
100F00300F00700F01F0FFFFF0151C7E9B1A>I<FF8000FF800F8000F8000F8000F8000B
C00178000BC00178000BC001780009E002780009E002780008F004780008F004780008F0
047800087808780008780878000878087800083C107800083C107800083C107800081E20
7800081E207800081E207800080F407800080F4078000807807800080780780008078078
0008030078001C03007800FF8307FF80211C7E9B26>I<FF007FC00F800E000F8004000B
C0040009E0040009E0040008F0040008F8040008780400083C0400083C0400081E040008
0F0400080F0400080784000807C4000803C4000801E4000801E4000800F40008007C0008
007C0008003C0008003C0008001C0008000C001C000C00FF8004001A1C7E9B1F>I<003F
800000E0E0000380380007001C000E000E001C0007003C00078038000380780003C07800
03C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F000
01E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C000380
380000E0E000003F80001B1E7E9C20>I<FFFF800F00E00F00780F003C0F001C0F001E0F
001E0F001E0F001E0F001E0F001C0F003C0F00780F00E00FFF800F00000F00000F00000F
00000F00000F00000F00000F00000F00000F00000F00000F0000FFF000171C7E9B1C>I<
FFFF00000F01E0000F0078000F003C000F001C000F001E000F001E000F001E000F001E00
0F001C000F003C000F0078000F01E0000FFF00000F03C0000F00E0000F00F0000F007800
0F0078000F0078000F0078000F0078000F0078000F0078100F0078100F0038100F003C20
FFF01C20000007C01C1D7E9B1F>82 D<07E0801C1980300580700380600180E00180E000
80E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007
C00003C00001C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E
7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F00
20800F0020000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
00001F800003FFFC001B1C7F9B1E>I<FFF07FC00F000E000F0004000F0004000F000400
0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F000400
0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F00040007000800
07800800038010000180100000C020000070C000001F00001A1D7E9B1F>I<FFE00FF01F
0003C00F0001800F0001000F800300078002000780020003C0040003C0040003C0040001
E0080001E0080001F0080000F0100000F0100000F830000078200000782000003C400000
3C4000003C4000001E8000001E8000001F8000000F0000000F0000000600000006000000
0600001C1D7F9B1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00100F
001F001007801F00200780278020078027802003C027804003C043C04003C043C04003E0
43C04001E081E08001E081E08001E081E08000F100F10000F100F10000F100F100007900
FA00007A007A00007A007A00003E007C00003C003C00003C003C00003C003C0000180018
0000180018000018001800281D7F9B2B>I<7FF0FFC00FC03E000780180003C0180003E0
100001E0200001F0600000F0400000788000007D8000003D0000001E0000001F0000000F
0000000F8000000F80000013C0000023E0000021E0000041F00000C0F800008078000100
7C0003003C0002001E0006001F001F003F80FFC0FFF01C1C7F9B1F>I<FFF007FC0F8001
E00780008007C0018003C0010003E0020001F0020000F0040000F8040000780800007C18
00003C1000001E2000001F2000000F4000000FC000000780000007800000078000000780
0000078000000780000007800000078000000780000007800000078000007FF8001E1C80
9B1F>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0FEFE07297C9E0C>91 D<08081010202040404040808080808080B0B0F8
F8787830300D0C7A9C15>I<FEFE06060606060606060606060606060606060606060606
060606060606060606060606060606FEFE0729809E0C>I<1FC000307000783800781C00
301C00001C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40
304E801F870012127E9115>97 D<FC00001C00001C00001C00001C00001C00001C00001C
00001C00001C00001C00001C7C001D86001E03001C01801C01C01C00C01C00E01C00E01C
00E01C00E01C00E01C00E01C00C01C01C01C01801E030019060010F800131D7F9C17>I<
07E00C301878307870306000E000E000E000E000E000E00060007004300418080C3007C0
0E127E9112>I<003F000007000007000007000007000007000007000007000007000007
0000070003E7000C1700180F00300700700700600700E00700E00700E00700E00700E007
00E00700600700700700300700180F000C370007C7E0131D7E9C17>I<03E00C30181830
0C700E6006E006FFFEE000E000E000E00060007002300218040C1803E00F127F9112>I<
00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C
38C01C3880181800381C00381C00381C00381C001818001C38000C300013C00010000030
00001800001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C
0E0007F800121C7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C0000
1C00001C00001C00001C7C001C87001D03001E03801C03801C03801C03801C03801C0380
1C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0141D7F9C17>I<1800
3C003C0018000000000000000000000000000000FC001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001E000C000
000000000000000000000000000FE000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>I<
FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C3FC0
1C0F001C0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C00
1C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>I<FC001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C
01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01
C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F
9124>I<FC7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03
801C03801C03801C03801C03801C03801C0380FF9FF014127F9117>I<03F0000E1C0018
0600300300700380600180E001C0E001C0E001C0E001C0E001C0E001C060018070038030
03001806000E1C0003F00012127F9115>I<FC7C001D86001E03001C01801C01C01C00C0
1C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C01801E03001D06001CF800
1C00001C00001C00001C00001C00001C00001C0000FF8000131A7F9117>I<03C1000C33
00180B00300F00700700700700E00700E00700E00700E00700E00700E007006007007007
00300F00180F000C370007C700000700000700000700000700000700000700000700003F
E0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C001C001C00
1C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00FF000
F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C00
3C00FFE01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E20
03C00C1A7F9910>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C03801C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07
E03C03801C01001C01000E02000E020007040007040007040003880003880003D80001D0
0001D00000E00000E00000E00000400013127F9116>I<FF3FCFE03C0F03801C0701801C
0701001C0B01000E0B82000E0B82000E1182000711C4000711C4000720C40003A0E80003
A0E80003C0680001C0700001C0700001803000008020001B127F911E>I<7F8FF00F0380
0F030007020003840001C80001D80000F00000700000780000F800009C00010E00020E00
0607000403801E07C0FF0FF81512809116>I<FF07E03C03801C01001C01000E02000E02
0007040007040007040003880003880003D80001D00001D00000E00000E00000E0000040
00004000008000008000F08000F10000F300006600003C0000131A7F9116>I<7FFC7038
6038407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F91
12>I E /Fg 29 117 df<001C0000003E0000003E0000002E0000006700000067000000
E7800000C7800000C3800001C3C0000183C0000181C0000381E0000381E0000700F00007
00F0000600F0000E0078000FFFF8000FFFF8001C003C001C003C0018003C0038001E0038
001E0070001F0070000F0070000F00E0000780191D7F9C1C>65 D<FFF800FFFF00F00F80
F003C0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F007C0FFFF80FFFE00FFFF80
F03FC0F003E0F001F0F000F0F00078F00078F00078F00078F00078F000F0F001E0F007C0
FFFF80FFFC00151D7C9C1C>I<003FC000FFF003C0F00780300F00001E00003C00003C00
00780000780000780000F00000F00000F00000F00000F00000F00000F00000F00000F000
007800007800007800003C00003C00001E00000F000807801803C07800FFF0003F80151F
7D9D1B>I<FFFC00FFFF00F00F80F003E0F001F0F000F0F00078F00038F0003CF0003CF0
001CF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0003CF0003CF0003CF0
0078F000F0F000F0F003E0F00FC0FFFF00FFFC00171D7C9C1E>I<FFFFC0FFFFC0F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
FFFFC0FFFFC0121D7C9C19>I<FFFF80FFFF80F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000FFFF00FFFF00F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000111D7C9C18>I<00
3F8001FFF003C0F80780380F00181E00003C00003C0000780000780000780000F00000F0
0000F00000F00000F00000F00000F007F8F007F8F000387800387800387800383C00383C
00381E00380F003807803803C0F801FFF0003F80151F7D9D1C>I<F000F0F000F0F000F0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0FFFFF0FFFFF0
F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0
F000F0F000F0141D7C9C1D>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0041D7C9C0C>I<F0003CF00078F000F0F001E0F003C0F00780F00F00F01E
00F03C00F07800F0F000F0E000F1F000F3F000F77800FE7C00FC3C00FC1E00F81F00F00F
00F00F80F00780F003C0F003E0F001E0F000F0F000F0F00078F0007C161D7C9C1D>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<003F000001FFE00003FFF00007C0F8000F807C001F003E003E001F003C000F00
780007807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0
F00003C0F00003C0F00003C07800078078000780780E07803C0F0F003E079F001E03DE00
0F83FC0007C1F80003FFF00001FFF800003F780000003C0000003E0000001F0000000F80
1A237E9D1F>I<FFF800FFFF00F00F80F003C0F001E0F000F0F000F0F000F0F000F0F000
F0F001E0F003E0F00FC0FFFF80FFFF00FFF800F03C00F01C00F01E00F00F00F00F00F007
80F00780F003C0F003C0F001E0F000F0F000F0F00078151D7C9C1B>I<03F8000FFE001C
0F00380700700300600000E00000E00000E00000E00000F000007800007F00003FE0001F
FC0007FE0001FF00001F800007800003C00003C00001C00001C00001C00001C0C00180E0
0380F007007C0E001FFC0007F000121F7E9D17>I<FFFFFF80FFFFFF80001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000191D7F9C1C>I<
F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070
F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F000707800E0
7800E03C01C01E03800F078007FE0001F800141E7C9C1D>I<F0000380F0000380780007
0078000700780007003C000E003C000E003E000E001E001C001E001C000F0038000F0038
000F003800078070000780700003C0600003C0E00003C0E00001E0C00001E1C00001E1C0
0000F1800000F380000073000000730000007B0000003E0000003E0000001C0000191D7F
9C1C>I<F000F00070F000F80070F000F800707800B8006078019C00E078019C00E07801
9C00E03C039C01C03C031E01C03C030E01C01E030E01801E070F03801E070F03801E0607
03800F060703000F0E0787000F0C078700070C038600070C038600078C038E00079803CE
00039801CC00039801CC00039801CC0001D001C80001D000D80001F000F80001E000F800
00E0007000241D7F9C27>I<78000E007C001E003C003C001E0038000F0070000F00F000
0781E00003C1C00001C3C00001E7800000F70000007E0000003E0000003C0000003C0000
007E00000077000000E7800001E3800003C1C0000381E0000700F0000F00F8000E007800
1C003C003C003E0078001F0070000F00F0000F80191D7F9C1C>I<F80001E07C0001C03E
0003801E0007801F0007000F800E0007801E0007C01C0003E03C0001E0380001F0700000
F0F0000078E000007DC000003FC000001F8000001F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00001B
1D809C1C>I<7FFFF07FFFF00001E00003E00003C00007C0000780000F00001F00001E00
003E00003C0000780000F80000F00001F00001E00003C00007C0000780000F80000F0000
1E00003E00003C00007C0000780000FFFFF0FFFFF0141D7E9C19>I<07E00FF81FFC3C1C
70047000E000E000E000E000E000E000700070043C1C1FFC0FF807E00E127E9112>99
D<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0031D7D9C0A>
108 D<E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE0
1CE01C0E127D9115>110 D<1C001C001C001C001C001C00FFE0FFE01C001C001C001C00
1C001C001C001C001C001C001C001C001C201FF00FF007C00C187F970F>116
D E /Fh 2 16 df<400004C0000C6000183000301800600C00C006018003030001860000
CC0000780000300000300000780000CC000186000303000601800C00C018006030003060
0018C0000C40000416187A9623>2 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF
FFFFFFFF7FFE7FFE3FFC1FF80FF003C010127D9317>15 D E /Fi
17 123 df<00F1800389C00707800E03801C03803C0380380700780700780700780700F0
0E00F00E00F00E00F00E10F01C20F01C20703C20705C40308C400F078014147E9318>97
D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E380F38
0F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207E9F14>I<
007C01C207010E0F1E0F1C0E3C04780078007800F000F000F000F000F000700170023004
18380FC010147E9314>I<0000780003F80000700000700000700000700000E00000E000
00E00000E00001C00001C000F1C00389C00707800E03801C03803C038038070078070078
0700780700F00E00F00E00F00E00F00E10F01C20F01C20703C20705C40308C400F078015
207E9F18>I<007C01C207010E011C013C013802780C7BF07C00F000F000F000F0007000
700170023004183807C010147E9315>I<00007C0000CE00019E00039E00030C00070000
0700000700000700000E00000E00000E0000FFF0000E00000E00001C00001C00001C0000
1C00001C0000380000380000380000380000380000700000700000700000700000700000
E00000E00000E00000E00000C00001C000318000798000F300006200003C000017297E9F
16>I<00E001E001E000C000000000000000000000000000000E00130023804380438043
808700070007000E000E001C001C001C20384038403840388019000E000B1F7E9E10>
105 D<03C01FC0038003800380038007000700070007000E000E000E000E001C001C001C
001C0038003800380038007000700070007100E200E200E200E200640038000A207E9F0E
>108 D<1E07802318C023A06043C0704380704380708700E00700E00700E00700E00E01
C00E01C00E01C00E03821C03841C07041C07081C03083803101801E017147E931B>110
D<007C0001C3000301800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003
C0F003C0F00780F00700700F00700E0030180018700007C00013147E9316>I<03C1E004
621804741C08781C08701E08701E10E01E00E01E00E01E00E01E01C03C01C03C01C03C01
C0380380780380700380E003C1C0072380071E000700000700000E00000E00000E00000E
00001C00001C0000FFC000171D819317>I<007C018203010603060706060E00078007F8
03FC01FE001F00077007F006F006E004400820301FC010147E9315>115
D<00C000E001C001C001C001C003800380FFF8038007000700070007000E000E000E000E
001C001C001C001C10382038203820384018800F000D1C7F9B10>I<0F00601180702180
E021C0E041C0E04380E08381C00701C00701C00701C00E03800E03800E03800E03840E07
080C07080C07080E0F1006131003E1E016147E931A>I<0F006060118070F02180E0F821
C0E07841C0E0384380E0188381C0100701C0100701C0100701C0100E0380200E0380200E
0380200E0380400E0380400E0380800E078080060781000709860001F078001D147E9321
>119 D<0F00601180702180E021C0E041C0E04380E08381C00701C00701C00701C00E03
800E03800E03800E03800E07000C07000C07000E0F00061E0003EE00000E00000E00001C
0078180078380070700060600021C0001F0000141D7E9316>121
D<01E02003F04007F8C00C1F8008010000020000040000080000100000600000C0000100
000200000400800801001003003F060061FC0040F80080700013147E9315>I
E /Fj 10 58 df<1F00318060C04040C060C060C060C060C060C060C060C060404060C0
31801F000B107F8F0F>48 D<0C003C00CC000C000C000C000C000C000C000C000C000C00
0C000C000C00FF8009107E8F0F>I<1F00618040C08060C0600060006000C00180030006
000C00102020207FC0FFC00B107F8F0F>I<1F00218060C060C000C0008001800F000080
00400060C060C060804060801F000B107F8F0F>I<0300030007000F000B001300330023
004300C300FFE003000300030003001FE00B107F8F0F>I<20803F002C00200020002000
2F0030802040006000600060C06080C061801F000B107F8F0F>I<0780184030C060C060
00C000CF00F080E040C060C060C060406060C030801F000B107F8F0F>I<40007FE07FC0
8080808001000200040004000C0008000800180018001800180018000B117E900F>I<1F
00318060C060C060C071803F000F00338061C0C060C060C060404060801F000B107F8F0F
>I<1F00318060C0C040C060C060C06040E021E01E600060004060C0608043003E000B10
7F8F0F>I E /Fk 49 122 df<00003F03E00000C386700001878CF00003879CF0000303
1860000700380000070038000007003800000E003800000E007000000E007000000E0070
0000FFFFFF80001C007000001C00E000001C00E000001C00E000001C00E000003800E000
003801C000003801C000003801C000003801C000007001C0000070038000007003800000
700380000070038000006003800000E007000000E007000000E007000000E007000000C0
06000001C00E000001C00E000031860C0000798F180000F31E100000620C6000003C07C0
00002429829F1C>11 D<00003FE00000E010000180380003807800030078000700300007
00000007000000070000000E0000000E0000000E000000FFFFE0000E00E0001C01C0001C
01C0001C01C0001C01C0001C038000380380003803800038038000380700003807000070
07000070071000700E2000700E2000700E2000E00E2000E0064000E0038000E0000000C0
000001C0000001C000003180000079800000F3000000620000003C0000001D29829F1A>
I<0E1F3F3F1D0102020404081020C0080E779F0E>39 D<70F8F8F0E005057B840E>46
D<00000040000000C000000180000001800000030000000300000006000000060000000C
0000001800000018000000300000003000000060000000C0000000C00000018000000180
00000300000003000000060000000C0000000C0000001800000018000000300000003000
000060000000C0000000C0000001800000018000000300000003000000060000000C0000
000C0000001800000018000000300000003000000060000000C0000000C0000000800000
001A2D7FA117>I<000200020006000E003C00DC031C001C003800380038003800700070
0070007000E000E000E000E001C001C001C001C003800380038003800780FFF80F1E7B9D
17>49 D<001F800060E00080700100300200380420380420380410380420700460700380
600000E00001C000030000FE00001C000006000007000007800007800007803007807807
80780780F00F00800F00401E00401C0040380020E0001F8000151F7C9D17>51
D<0000600000E00000E00000E00001C00001C00001C00003800003800003000007000007
00000600000E00000C0000180000180000300000300000630000C7000087000107000307
00060E00040E00080E003F8E00607C00801FC0001C00001C000038000038000038000038
0000700000700000600013277E9D17>I<00C06000FFC001FF8001FE0001000001000002
0000020000020000020000040000047800058C000606000C070008070000078000078000
0780000780000F00700F00F00F00F00E00E01E00801C0080380080300040600061C0001F
0000131F7B9D17>I<001F0000718000C0C00180C00380E00700E00F00E00F01E01E01E0
1E01E01E01E01E01C01C03C01C03C01C03C01C07C01C0F800C0F8006378003C700000F00
000E00000E00001C00601C00F03800F07000E0600080C0004380003E0000131F7B9D17>
57 D<00000200000006000000060000000E0000001E0000001E0000003F0000002F0000
004F0000004F0000008F0000010F0000010F0000020F0000020F0000040F00000C0F0000
080F0000100F0000100F0000200F80003FFF800040078000C00780008007800100078001
0007800200078002000780060007801E000F80FF807FF81D207E9F22>65
D<01FFFFC0001E00F0001E0078001E0038001E003C003C003C003C003C003C003C003C00
3C0078007800780078007800F0007801E000F0078000FFFE0000F00F8000F003C001E001
C001E001E001E001E001E001E003C001E003C001E003C001E003C001C0078003C0078007
8007800F0007801E000F007800FFFFE0001E1F7D9E20>I<0000FE0200078186001C004C
0038003C0060003C00C0001C01C0001803800018070000180F0000181E0000101E000010
3C0000003C00000078000000780000007800000078000000F0000000F0000000F0000000
F0000000F00000807000008070000080700001003800010038000200180004000C001800
060020000381C00000FE00001F217A9F21>I<01FFFF80001E00E0001E0070001E003800
1E001C003C001C003C000E003C000E003C000E0078000E0078000E0078000E0078000E00
F0001E00F0001E00F0001E00F0001E01E0003C01E0003C01E0003C01E0007803C0007003
C0007003C000E003C001C0078001C00780038007800E0007801C000F007000FFFFC0001F
1F7D9E22>I<01FFFFFE001E001C001E000C001E0004001E0004003C0004003C0004003C
0004003C00040078080800780800007808000078180000F0300000FFF00000F0300000F0
300001E0200001E0200001E0200001E0001003C0002003C0002003C0004003C000400780
00800780018007800100078007000F001F00FFFFFE001F1F7D9E1F>I<01FFFFFC001E00
38001E0018001E0008001E0008003C0008003C0008003C0008003C000800780010007808
00007808000078080000F0100000F0300000FFF00000F0300001E0200001E0200001E020
0001E0200003C0000003C0000003C0000003C00000078000000780000007800000078000
000F800000FFF800001E1F7D9E1E>I<01FFF3FFE0001F003E00001E003C00001E003C00
001E003C00003C007800003C007800003C007800003C007800007800F000007800F00000
7800F000007800F00000F001E00000FFFFE00000F001E00000F001E00001E003C00001E0
03C00001E003C00001E003C00003C007800003C007800003C007800003C007800007800F
000007800F000007800F000007800F00000F801F0000FFF1FFE000231F7D9E22>72
D<01FFF0001F00001E00001E00001E00003C00003C00003C00003C000078000078000078
0000780000F00000F00000F00000F00001E00001E00001E00001E00003C00003C00003C0
0003C0000780000780000780000780000F8000FFF800141F7D9E12>I<001FFF0000F800
00F00000F00000F00001E00001E00001E00001E00003C00003C00003C00003C000078000
0780000780000780000F00000F00000F00000F00001E00001E00301E00781E00F83C00F8
3C00F0780080700040E00021C0001F000018207D9E18>I<01FE00007FC0001E0000FC00
001E0000F80000170001780000170001780000270002F00000270004F00000270004F000
00270008F00000470009E00000470011E00000470021E00000470021E00000870043C000
00838043C00000838083C00000838083C000010381078000010382078000010382078000
0103840780000203840F00000203880F00000203900F00000203900F00000401E01E0000
0401E01E00000401C01E00000C01801E00001C01803E0000FF8103FFC0002A1F7D9E29>
77 D<0001FC0000070700001C01C0003000E000E0006001C00070038000700780003807
0000380E0000381E0000381C0000383C0000383C00003878000078780000787800007878
000078F00000F0F00000F0F00000E0F00001E0F00001C0F00003C0700003807000070078
000F0038001E0038003C001C0070000E00E0000783800001FC00001D217A9F23>79
D<01FFFF80001E00E0001E0070001E0038001E003C003C003C003C003C003C003C003C00
3C0078007800780078007800F0007800E000F003C000F00F0000FFFC0000F0000001E000
0001E0000001E0000001E0000003C0000003C0000003C0000003C0000007800000078000
0007800000078000000F800000FFF000001E1F7D9E1F>I<0007E040001C18C000300580
0060038000C0038001C00180018001000380010003800100038001000380000003C00000
03C0000003F8000001FF800001FFE000007FF000001FF0000001F8000000780000007800
000038000000380020003800200038002000300060007000600060006000E0007000C000
E8038000C606000081F800001A217D9F1A>83 D<0FFFFFF01E0780E01807802010078020
20078020200F0020600F0020400F0020400F0020801E0040001E0000001E0000001E0000
003C0000003C0000003C0000003C00000078000000780000007800000078000000F00000
00F0000000F0000000F0000001E0000001E0000001E0000001E0000003E00000FFFF0000
1C1F789E21>I<FFF1FFC0FF801F003E001C001F003C0018000F003C0010000F003C0010
000F003C0020000F003C0020000F003E0040000F003E00C0000F005E0080000F005E0100
000F009E0100000F009E0200000F011E0200000F021E0400000F021E0400000F041E0800
000F041E0800000F081E1000000F081E2000000F101E2000000F101E4000000F201E4000
000F601E8000000FC01E80000007801F00000007801F00000007001E00000007001E0000
0006000C0000000600080000000400080000002920779E2D>87 D<00F1800389C0070780
0E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E20F01C40
F01C40703C40705C40308C800F070013147C9317>97 D<07803F8007000700070007000E
000E000E000E001C001C001CF01D0C3A0E3C0E380F380F700F700F700F700FE01EE01EE0
1EE01CE03CE038607060E031C01F0010207B9F15>I<007E0001C1000300800E07801E07
801C07003C0200780000780000780000F00000F00000F00000F00000F000007001007002
0030040018380007C00011147C9315>I<0000780003F800007000007000007000007000
00E00000E00000E00000E00001C00001C000F1C00389C00707800E03801C03803C038038
0700780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C4030
8C800F070015207C9F17>I<007C01C207010E011C013C013802780C7BF07C00F000F000
F000F0007000700170023804183807C010147C9315>I<00007800019C00033C00033C00
0718000700000700000E00000E00000E00000E00000E0001FFE0001C00001C00001C0000
1C0000380000380000380000380000380000700000700000700000700000700000700000
E00000E00000E00000E00000C00001C00001C0000180003180007B0000F300006600003C
00001629829F0E>I<003C6000E27001C1E00380E00700E00F00E00E01C01E01C01E01C0
1E01C03C03803C03803C03803C03803C07003C07001C0F001C17000C2E0003CE00000E00
000E00001C00001C00301C00783800F0700060E0003F8000141D7E9315>I<01E0000FE0
0001C00001C00001C00001C000038000038000038000038000070000070000071E000763
000E81800F01C00E01C00E01C01C03801C03801C03801C0380380700380700380700380E
10700E20700C20701C20700C40E00CC060070014207D9F17>I<00C001E001E001C00000
0000000000000000000000000E003300230043804300470087000E000E000E001C001C00
1C003840388030807080310033001C000B1F7C9E0E>I<01E0000FE00001C00001C00001
C00001C0000380000380000380000380000700000700000703C00704200E08E00E11E00E
21E00E40C01C80001D00001E00001FC00038E00038700038700038384070708070708070
7080703100E03100601E0013207D9F15>107 D<03C01FC0038003800380038007000700
070007000E000E000E000E001C001C001C001C0038003800380038007000700070007100
E200E200E200E200640038000A207C9F0C>I<1C0F80F0002630C318004740640C004780
680E004700700E004700700E008E00E01C000E00E01C000E00E01C000E00E01C001C01C0
38001C01C038001C01C038001C01C0708038038071003803806100380380E10038038062
007007006600300300380021147C9325>I<1C0F802630C0474060478060470070470070
8E00E00E00E00E00E00E00E01C01C01C01C01C01C01C0384380388380308380708380310
7003303001C016147C931A>I<007C0001C3000301800E01C01E01C01C01E03C01E07801
E07801E07801E0F003C0F003C0F003C0F00780F00700700F00700E0030180018700007C0
0013147C9317>I<01C1E002621804741C04781C04701E04701E08E01E00E01E00E01E00
E01E01C03C01C03C01C03C01C0380380780380700380E003C1C0072380071E0007000007
00000E00000E00000E00000E00001C00001C0000FFC000171D809317>I<00F0400388C0
0705800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E00
F01C00F01C00703C00705C0030B8000F3800003800003800007000007000007000007000
00E00000E0000FFE00121D7C9315>I<1C1E002661004783804787804707804703008E00
000E00000E00000E00001C00001C00001C00001C00003800003800003800003800007000
0030000011147C9313>I<00FC030206010C030C070C060C000F800FF007F803FC003E00
0E700EF00CF00CE008401020601F8010147D9313>I<018001C003800380038003800700
0700FFF007000E000E000E000E001C001C001C001C003800380038003820704070407080
708031001E000C1C7C9B0F>I<0E00C03300E02301C04381C04301C04701C08703800E03
800E03800E03801C07001C07001C07001C07101C0E20180E20180E201C1E200C264007C3
8014147C9318>I<0E03803307802307C04383C04301C04700C08700800E00800E00800E
00801C01001C01001C01001C02001C02001C04001C04001C08000E300003C00012147C93
15>I<0E00C1C03300E3C02301C3E04381C1E04301C0E04701C060870380400E0380400E
0380400E0380401C0700801C0700801C0700801C0701001C0701001C0602001C0F02000C
0F04000E13080003E1F0001B147C931E>I<0383800CC4401068E01071E02071E02070C0
40E00000E00000E00000E00001C00001C00001C00001C040638080F38080F38100E58100
84C60078780013147D9315>I<0E00C03300E02301C04381C04301C04701C08703800E03
800E03800E03801C07001C07001C07001C07001C0E00180E00180E001C1E000C3C0007DC
00001C00001C00003800F03800F07000E06000C0C0004380003E0000131D7C9316>I
E /Fl 54 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<F0001EF0001EF0001E
F0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001E
FFFFFEFFFFFEFFFFFEF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001E
F0001EF0001EF0001EF0001EF0001EF0001EF0001EF0001E17237BA222>I<F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237CA20D>
I<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0FFFFC01223
7BA21A>76 D<FC001EFE001EFE001EFE001EF7001EF7001EF3801EF3801EF3C01EF1C01E
F1C01EF1E01EF0E01EF0F01EF0F01EF0781EF0781EF0381EF03C1EF03C1EF01E1EF01E1E
F00E1EF00F1EF0071EF0071EF0079EF0039EF0039EF001DEF001DEF000FEF000FEF000FE
F0007E17237BA222>78 D<001FC000007FF00001FFFC0003F07E0007C01F000F800F801F
0007C01E0003C03C0001E03C0001E0780000F0780000F0780000F070000070F0000078F0
000078F0000078F0000078F0000078F0000078F0000078F0000078F0000078780000F078
0000F0780000F07C0001F03C0001E03E0003E01E0003C01F0007C00F800F8007C01F0003
F07E0001FFFC00007FF000001FC0001D257DA324>I<FFFE00FFFF80FFFFC0F003E0F000
F0F00078F00078F0003CF0003CF0003CF0003CF0003CF0003CF00078F00078F000F0F003
E0FFFFC0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F0000016237BA21F>I<FFFC00FFFF80FFFFC0F0
03E0F000F0F00078F00038F0003CF0003CF0003CF0003CF0003CF00038F00078F000F0F0
03E0FFFFC0FFFF80FFFE00F01E00F00F00F00700F00780F00380F003C0F001E0F001E0F0
00F0F000F0F00078F00038F0003CF0001EF0001EF0000F18237BA21F>82
D<00FE0003FFC007FFE00F81E01E00603C00003C00007800007800007800007800007800
007C00003C00003F00001FC0000FFC0007FF0001FF80003FC00007E00001F00000F00000
F8000078000078000078000078000078000078C000F0E000F0F801E07E07C03FFF800FFF
0001FC0015257EA31B>I<FFFFFFF0FFFFFFF0FFFFFFF0000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F00001C237EA221>I<F0001F0001E0F0003F8001E0F0003F8001E078003F80
01C078003B8003C078007BC003C0780073C003C03C0071C007803C00F1C007803C00F1E0
07803C00E1E007801E00E0E00F001E01E0E00F001E01E0F00F001E01C0F00F000F01C070
1E000F03C0701E000F03C0781E00070380781C00078380383C00078380383C000787803C
3C000387003C38000387001C380003C7001C780003CF001C780001CE001E700001CE000E
700001CE000E700001EE000EF00000EC000EE00000FC0007E00000FC0007E00000FC0007
E00000780007C0002B237FA22E>87 D<07E01FF83FFC381E201E000F000F000F000F00FF
07FF1FFF3E0F780FF00FF00FF00FF00FF83F7FFF3FEF1F8F10167E9517>97
D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F1F000F7FC00FFFE00FC1F00F80F00F00780F00780F003C0F003C0F003C0F003
C0F003C0F003C0F003C0F003C0F00780F00780F80F00FC3E00FFFE00F7F800F1F0001223
7CA219>I<01FC0007FF000FFF801F03803C0180780000780000700000F00000F00000F0
0000F00000F00000F000007800007800007800003C00401F03C00FFFC007FF8001FC0012
167E9516>I<0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0
0003C00003C00003C003E3C00FFBC01FFFC03F0FC03C07C07803C07803C0F003C0F003C0
F003C0F003C0F003C0F003C0F003C0F003C07803C07803C03C07C03E0FC01FFFC00FFBC0
03E3C012237EA219>I<03F00007FC001FFE003E0F003C0780780380780380F001C0FFFF
C0FFFFC0FFFFC0F00000F00000F000007000007800007800003C00801F07800FFF8007FF
0001F80012167E9516>I<003F00FF01FF03C00380078007800780078007800780078007
80FFF8FFF8FFF80780078007800780078007800780078007800780078007800780078007
800780078007800780102380A20F>I<01F07807FFF80FFFF81F1F001E0F003C07803C07
803C07803C07803C07801E0F001F1F000FFE001FFC0019F0003800003800003C00001FFE
001FFFC01FFFE03FFFF07801F07800F8F00078F00078F00078F000787800F03E03E01FFF
C00FFF8001FC0015217F9518>I<F000F000F000F000F000F000F000F000F000F000F000
F000F000F1F8F3FCF7FEFE1EF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF00F10237CA219>I<F0F0F0F0000000000000000000F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>I<F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F01F80F03F00F03E
00F07C00F0F800F1F000F3E000F7C000FFC000FFC000FFE000FFE000FDF000F8F800F078
00F07C00F03E00F01E00F01F00F00F00F00F80F007C012237CA218>107
D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
04237DA20B>I<F0F807C0F3FE1FF0F7FF3FF8FE0F7078FC0FE07CF807C03CF807C03CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803C1E167C9527>I<F1F8F3FCF7FE
FE1EF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00F10167C9519>I<01FC0007FF000FFF801F07C03C01E07800F07800F0700070F00078
F00078F00078F00078F00078F000787800F07800F07C01F03E03E01F07C00FFF8007FF00
01FC0015167F9518>I<F1F000F7FC00FFFE00FC3F00F80F00F00780F00780F007C0F003
C0F003C0F003C0F003C0F003C0F003C0F007C0F00780F00F80F80F00FC3E00FFFE00F7F8
00F1F000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000001220
7C9519>I<F0E0F3E0F7E0FF00FE00FC00F800F800F000F000F000F000F000F000F000F0
00F000F000F000F000F000F0000B167C9511>114 D<07F01FFC3FFE3C0E780678007800
7C003F003FF01FF80FFC01FE001F000F000F000FC00FF81EFFFE3FFC0FF010167F9513>
I<0F000F000F000F000F000F00FFF8FFF8FFF80F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F080F1C07FC07F803E00E1C7F9B12>I<F00FF00FF00FF00F
F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01FF83F7FFF7FCF1F0F
10167C9519>I<F001E0F001E07803C07803C07803C03C07803C07803C07801E07001E0F
001E0F000F0E000F1E000F1E00071C00079C0007BC0003B80003B80003F80001F00001F0
0013167F9516>I<F001E0F001E07803C07803C07C03C03C07803C07801E07801E07001E
0F000F0F000F0E00071E00079E00039C00039C00039C0001980001D80000F80000F00000
F00000F00000E00000E00001E00001C00001C0000380007F80007F00007E000013207F95
16>121 D<7FFFC07FFFC07FFFC0000F80000F00001E00003E00007C0000780000F00001
F00003E00003C0000780000F80001F00001E00003C00007C0000FFFFC0FFFFC0FFFFC012
167F9515>I E /Fm 42 122 df<001FE03FC0007FE0FFC001FFE1FFC003FFE3FFC003E0
07E00007C007C00007800F80000F800F80000F800F80000F800F80000F800F80000F800F
80000F800F80000F800F80000F800F8000FFFE0FFE00FFFE0FFE00FFFE0FFE000F800F80
000F800F80000F800F80000F800F80000F800F80000F800F80000F800F80000F800F8000
0F800F80000F800F80000F800F80000F800F80000F800F80000F800F80000F800F80000F
800F80000F800F80000F800F80000F800F80000F800F80000F800F80000F800F80000F80
0F80000F800F8000222A7FA922>11 D<00000F80007E0F8000FE0F8001FE0F8003FE0F80
07C00000078000000F8000000F8000000F8000000F8000000F8000000F8000000F800000
0F8000000F800000FFFE0F80FFFE0F80FFFE0F800F800F800F800F800F800F800F800F80
0F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F80
0F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F80
0F800F800F800F80192B7FAA1F>I<F8F8F8F8F805057B8410>46
D<007E0001FF8007FFE00FFFF01FC3F81F00F83E007C3E007C3C003C7C003E7C003E7800
1E78001EF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8001FF800
1FF8001FF8001FF8001FF8001F78001E7C003E7C003E7C003E7C003E3E007C3F00FC1F00
F81FC3F80FFFF007FFE001FF80007E0018297EA71D>48 D<00300000700001F0000FF000
FFF000FFF000F1F00001F00001F00001F00001F00001F00001F00001F00001F00001F000
01F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F000
01F00001F00001F00001F00001F00001F00001F00001F00001F000FFFFE0FFFFE0FFFFE0
13287BA71D>I<00FE0003FF800FFFC01FFFE01F07F03C01F87800FC78007C70007CF000
3EF0003E60003E20003E00003E00003E00003E00007C00007C0000780000F80001F00001
E00003E00007C0000F80001F00003E00007C0000F80001F00003E00003C0000780000F00
001E00003C00007FFFFE7FFFFE7FFFFE7FFFFE17287EA71D>I<007E0003FF8007FFE01F
FFF03F83F83E00F87C007C38007C30007C10007C00007C00007C0000F80000F80001F800
03F0000FE001FFC001FF8001FFC001FFE00001F80000FC00007C00003E00003E00001F00
001F00001F00001F00001F80001FC0003EE0003EF0007E7C00FC3F01F81FFFF00FFFE003
FFC000FE0018297EA71D>I<0007E0000FE0000BE0001BE0001BE0003BE0003BE00073E0
0073E000F3E000F3E001E3E001E3E003E3E003C3E007C3E00F83E00F83E01F03E01F03E0
3E03E03E03E07C03E07C03E0F803E0FFFFFFFFFFFFFFFFFFFFFFFF0003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E018277EA61D>I<3FFFF83FFFF83FFF
F83FFFF83E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E3E
003EFF803FFFE03FFFF03FC1F03F00F83F007C3E007C00007C00003E00003E00003E0000
3E00003E00003E00003E40003E60007CE0007CF000F87801F87F07F03FFFE00FFFC007FF
0001FC0017287EA61D>I<000FE0003FF800FFF801FFF803F01807E0000F80000F00001F
00003E00003E00003C00007C00007C02007C3FC0F8FFE0F9FFF0FBFFF8FF80FCFE007CFE
003EFC003EFC003FFC001FF8001FF8001FF8001FF8001F78001F7C001F7C001F7C001E3C
003E3E003E1E007C1F00FC0FC1F807FFF003FFE001FF80007E0018297EA71D>I<FFFFFF
FFFFFFFFFFFFFFFFFF00000F00001E00003C0000780000F80000F00001E00003E00003C0
000780000F80000F00001F00001E00003E00003E00003C00007C00007C0000F80000F800
00F80000F00001F00001F00001F00001F00001F00003E00003E00003E00003E00003E000
03E00003E00018277EA61D>I<F8F8F8F8F80000000000000000000000000000000000F8
F8F8F8F8051B7B9A10>58 D<0003F000000003F000000007F800000007F8000000077800
00000F3C0000000F3C0000000F3C0000001E3E0000001E1E0000001E1E0000003E1F0000
003C1F0000007C0F8000007C0F800000780F800000F807C00000F807C00000F007C00001
F003E00001F003E00001E003E00003E001F00003E001F00003C001F00007C000F80007FF
FFF80007FFFFF8000FFFFFFC000F80007C000F00007C001F00003E001F00003E001E0000
3E003E00001F003E00001F003C00001F007C00000F807C00000F80F800000FC0F8000007
C0F8000007C0222A7EA927>65 D<0003FF00000FFFE0003FFFF800FFFFF801FE01F803F8
007007E0001007C000000F8000001F8000001F0000003E0000003E0000007C0000007C00
00007C0000007C000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F80000007C0000007C0000007C0000007C0000003E0000003E00
00001F0000001F8000000F80000007C0000007E0000803F8003801FE01F800FFFFF8003F
FFF0000FFFC00003FE001D2C7CAA25>67 D<FFFFE00000FFFFFC0000FFFFFF0000F8007F
8000F8000FC000F80007E000F80001F000F80000F800F80000F800F800007C00F800003E
00F800003E00F800001E00F800001F00F800001F00F800000F00F800000F80F800000F80
F800000F80F800000F80F800000F80F800000F80F800000F80F800000F80F800000F80F8
00000F80F800000F00F800001F00F800001F00F800001F00F800003E00F800003E00F800
007C00F800007C00F80000F800F80001F000F80003E000F8000FC000F8003F8000FFFFFF
0000FFFFFC0000FFFFE00000212A7BA92A>I<FFFFFFC0FFFFFFC0FFFFFFC0FFFFFFC0F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8000000F8000000FFFFFFE0FFFFFFE0FF
FFFFE0FFFFFFE01B2A7BA923>I<FFFFFF80FFFFFF80FFFFFF80FFFFFF80F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000FFFFFC00FFFFFC00FFFFFC00FFFFFC00F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F800
0000192A7BA921>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7BA910>73 D<FE000000FFFE000000FFFE0000
00FFFF000001FFFB000001DFFB800003DFFB800003DFFB800003DFF9C000079FF9C00007
9FF9C000079FF9E0000F9FF8E0000F1FF8E0000F1FF8F0001F1FF870001E1FF870001E1F
F878003E1FF838003C1FF83C007C1FF83C007C1FF81C00781FF81E00F81FF81E00F81FF8
0E00F01FF80F01F01FF80F01F01FF80701E01FF80783E01FF80783E01FF80383C01FF803
C7C01FF803C7C01FF801C7801FF801EF801FF801EF801FF800EF001FF800FF001FF8007E
001FF8007E001FF8007E001FF80000001F282A7BA933>77 D<0003FC0000000FFF000000
3FFFC00000FFFFF00001FE07F80003F801FC0007E0007E000FC0003F000F80001F001F00
000F801F00000F803E000007C03E000007C07C000003E07C000003E07C000003E0780000
01E0F8000001F0F8000001F0F8000001F0F8000001F0F8000001F0F8000001F0F8000001
F0F8000001F0F8000001F0F8000001F07C000003E07C000003E07C000003E07E000007E0
3E000007C03E000007C01F00000F801F80001F800F80001F000FC0003F0007E0007E0003
F801FC0001FE07F80000FFFFF000003FFFC000001FFF80000003FC0000242C7DAA2B>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<F83F003F00F8FFC0FFC0FBFFE3FFE0FFFFF7FFF0FF83F783F0FE01FE01F8
FC00FC00F8FC00FC00F8FC00FC00F8F800F800F8F800F800F8F800F800F8F800F800F8F8
00F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800
F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8F800F800F8251B7C
9A2E>I<F83F00F8FFC0FBFFE0FFFFF0FF83F0FE01F8FC00F8FC00F8FC00F8F800F8F800
F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800
F8F800F8F800F8F800F8F800F8151B7C9A1E>I<007E0001FF8007FFE00FFFF01F81F83F
00FC3E007C7C003E7C003E78001EF8001FF8001FF8001FF8001FF8001FF8001FF8001F7C
003E7C003E7C003E3E007C3F00FC1FC3F80FFFF007FFE003FFC0007E00181B7E9A1D>I<
F83F00F9FFC0FBFFE0FFFFF0FF07F8FC01F8F800FCF800FCF8007CF8007EF8003EF8003E
F8003EF8003EF8003EF8003EF8003EF8007EF8007CF800FCFC00F8FC01F8FF07F0FFFFE0
FBFFC0F9FF80F87E00F80000F80000F80000F80000F80000F80000F80000F80000F80000
F80000F80000F8000017277C9A1E>I<F83CF8FCF9FCFBFCFFE0FF80FF00FE00FC00FC00
FC00F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F8000E1B
7C9A14>114 D<07F8001FFF003FFF807FFF807C0780F80100F80000F80000F80000FC00
007F00007FF0003FFC001FFE0007FF0000FF80001FC0000FC00007C00007C04007C0E007
C0FC1F80FFFF807FFF001FFE0007F800121B7E9A16>I<0F80000F80000F80000F80000F
80000F80000F8000FFFF80FFFF80FFFF800F80000F80000F80000F80000F80000F80000F
80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F
80800FC38007FFC007FFC003FF0001F80012227FA115>I<F800F8F800F8F800F8F800F8
F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8F800F8
F800F8F800F8F800F8F800F8F801F8F803F8FC07F8FFFFF87FFEF83FF8F81FC0F8151B7C
9A1E>I<F8001FF8001F7C003E7C003E7C003E3E007C3E007C3E007C1F00F81F00F81F00
F80F81F00F81F00F81F007C3E007C3E007C3E003C3C003E7C001E78001E78001E78000E7
0000F70000FF00007E00007E00181B7F9A1B>I<F800F800F8F801F800F8FC01FC00F87C
01DC01F07C01DC01F07C03DC01F03E039E03E03E039E03E03E079E03E03E079F03E01F07
8F07C01F070F07C01F0F0F07C00F0F0F07800F8F078F800F8F078F800F8E078F80079E07
8F00079E03CF00079E03CF0003DC03DE0003DC03DE0003DC01DE0003D801DE0001F801FC
0001F801FC0001F800FC00251B7F9A28>I<7C001F807E003F003F003E001F007C000F80
FC0007C0F80007E1F00003E3E00001F7E00000FFC000007F8000007F0000003E0000003E
0000003F0000007F800000FFC00001F3E00003E1E00003E1F00007C0F8000F807C001F80
7C001F003E003E001F007E001F80FC000FC01A1B809A1B>I<F8001FFC001F7C003E7C00
3E3E003E3E007C3E007C1F007C1F00F81F80F80F80F00F81F007C1F007C1E007C3E003C3
E003E3C001E3C001E7C001E78000F78000F700007700007700007E00003E00003E00003C
00003C00007C0000780000780000F00000F00001F0007FE0007FC0007F80007F00001827
7F9A1B>I E /Fn 31 90 df<3078F8787005057C840D>46 D<00000400000C00000C0000
180000180000300000300000600000600000C00000C00001800001800003000003000006
00000600000C00000C0000180000180000300000300000600000600000C00000C0000180
000180000300000300000600000600000600000C00000C00001800001800003000003000
00600000600000C00000C00000800000162D7EA117>I<007E0001C3000301800701C00E
00C00E00E01C00E01C00E03C01E03801E07801E07801E07801E07801E07801E0F003C0F0
03C0F003C0F003C0F003C0F00380F00780E00780E00700E00700E00E00600E00701C0030
38003870000FC000131F7C9D17>I<000C001C00FC0F3800380038003800380038007000
70007000700070007000E000E000E000E000E000E001C001C001C001C001C001C0038003
C0FFFE0F1E7C9D17>I<003F8000C1E00100F00200780400780400780F007C0F807C0F80
7C0F00780600780000F80000F00001E00001C0000380000700000E00001C000038000060
0000C0000180000300200600200800401000403FFFC07FFF80FFFF80161E7E9D17>I<00
7F000183C00201E00400F00700F00F00F00F01F00F01F00001E00001E00003C000038000
0700000E0000F800000E000007000007800007C00003C00007C03007C07807C0F807C0F8
07C0F00780800F00400E00201C0018780007E000141F7D9D17>I<0000600000600000E0
0001C00003C00005C0000DC00009C00011C000238000438000C380008380010380020380
040700080700180700100700200700400700FFFFF0000E00000E00000E00000E00000E00
001C00001E0001FFE0141E7E9D17>I<01803001FFE003FFC003FF0003FC000200000200
00020000040000040000040000047C000587000603800C01800801C00001C00001E00001
E00001E00001E07003C0F803C0F003C0E00380800780400700400E00201C0018700007C0
00141F7D9D17>I<000F8000704000C0200180E00301E00701E00E00C01E00001C00003C
000038000078F800790E007A07007C0300F80380F80380F003C0F003C0F003C0F003C0F0
0780E00780E00780E00700E00F00600E00701C0030180018700007C000131F7C9D17>I<
2000003FFFE07FFFC07FFF80400100C00200800200800400000800001000002000004000
0040000080000180000300000300000700000600000E00000E00001E00001C00001C0000
3C00003C00003C0000780000780000780000300000131F799D17>I<0E1F1F1E0C000000
000000000000003078F8787008147C930D>58 D<00001000000018000000380000003800
00007800000078000000FC000001BC0000013C0000033C0000023C0000063C0000043E00
00081E0000081E0000101E0000101E0000201E0000200F0000400F0000400F0000FFFF00
00800F0001000F8001000780020007800200078004000780040007800C0007C03E0007C0
FF807FFC1E207E9F22>65 D<0001F808000E061800380138007000F801E0007803C00070
07800030078000300F0000301F0000301E0000303E0000203C0000007C0000007C000000
7C0000007C000000F8000000F8000000F8000000F8000000F80000007800004078000080
780000803C0000803C0001001C0002000E00020006000C000300100001C0E000003F0000
1D217B9F21>67 D<07FFFF00007C01E0003C00F0003C00780078003C0078003C0078001E
0078001E0078001E0078001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F
01E0001E01E0003E01E0003E01E0003E01E0003C01E0007C03C0007803C000F003C000F0
03C001E003C003C003C0078007800F0007803C00FFFFE000201F7E9E23>I<07FFFFF800
7C0078003C0038003C001800780018007800080078000800780008007800080078080800
F0100000F0100000F0100000F0300000FFF00000F0700001E0200001E0200001E0200001
E0200001E0000801E0001003C0001003C0001003C0002003C0002003C0006003C000C007
8001C0078007C0FFFFFF801D1F7E9E1F>I<07FFFFF8007C0078003C0038003C00180078
0018007800080078000800780008007800080078000800F0100000F0100000F0100000F0
300000F0700000FFF00001E0600001E0200001E0200001E0200001E0200001E0000003C0
000003C0000003C0000003C0000003C0000003C000000780000007C00000FFFE00001D1F
7E9E1E>I<07FFC7FFC0007C00F800003C007800003C007800007800F000007800F00000
7800F000007800F000007800F000007800F00000F001E00000F001E00000F001E00000F0
01E00000FFFFE00000F001E00001E003C00001E003C00001E003C00001E003C00001E003
C00001E003C00003C007800003C007800003C007800003C007800003C007800003C00780
0007800F000007C00F8000FFF8FFF800221F7E9E22>72 D<07FFE0007C00003C00003C00
00780000780000780000780000780000780000F00000F00000F00000F00000F00000F000
01E00001E00001E00001E00001E00001E00003C00003C00003C00003C00003C00003C000
07800007C000FFFC00131F7F9E10>I<07FFF000007E0000003C0000003C000000780000
007800000078000000780000007800000078000000F0000000F0000000F0000000F00000
00F0000000F0000001E0000001E0000001E0000001E0000001E0008001E0010003C00100
03C0010003C0030003C0020003C0060003C0060007801E0007807C00FFFFFC00191F7E9E
1C>76 D<07FC0000FFC0007C0000F800003C00017800003C00017800004E0002F000004E
0002F000004E0004F000004E0004F000004E0008F000004E0008F00000870011E0000087
0011E00000870021E00000870021E00000870041E00000838041E00001038083C0000103
8083C00001038103C00001038203C0000101C203C0000101C403C0000201C40780000201
C80780000201C80780000201D00780000200F00780000600E00780000600E00F00000F00
C00F8000FFE0C1FFF8002A1F7E9E2A>I<07FC01FFC0003E003E00003E001800003E0018
00004F001000004F001000004780100000478010000043C010000043C010000083C02000
0081E020000081E020000080F020000080F020000080782000010078400001007C400001
003C400001003C400001001E400001001E400002000F800002000F800002000F80000200
0780000200078000060003800006000300000F00010000FFE0010000221F7E9E22>I<00
03F800001E0E000038070000E0038001C001C003C001E0078000E00F0000F00F0000F01E
0000F01E0000F83E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8F80001F0F8
0001F0F80001F0F80001F0F80003E0780003E0780003C0780007C07C0007803C000F003C
001E001E001C000E0038000700F00003C3C00000FE00001D217B9F23>I<07FFFF00007C
03C0003C01E0003C00F0007800F0007800F8007800F8007800F8007800F8007800F000F0
01F000F001E000F003C000F0078000F00F0000FFF80001E0000001E0000001E0000001E0
000001E0000001E0000003C0000003C0000003C0000003C0000003C0000003C000000780
000007C00000FFFC00001D1F7E9E1F>I<07FFFC00007C0700003C03C0003C01E0007801
E0007801F0007801F0007801F0007801F0007801E000F003E000F003C000F0078000F00F
0000F03C0000FFF00001E0300001E0380001E01C0001E01C0001E01C0001E01E0003C03E
0003C03E0003C03E0003C03E0003C03E0003C03E0207803E0407C01F04FFFC0F18000003
E01F207E9E21>82 D<003F040060CC01803C03801C03001C0700180600080E00080E0008
0E00080E00000F00000F80000FE00007FE0003FF8001FFC0007FE00007E00001E00000E0
0000F00000F04000E04000E04000E04000E06000C0600180E00380F80300C60C0081F800
16217D9F19>I<3FFFFFF03C0780F03007803060078030400F0010400F0010C00F001080
0F0010800F0010800F0010001E0000001E0000001E0000001E0000001E0000001E000000
3C0000003C0000003C0000003C0000003C0000003C000000780000007800000078000000
780000007800000078000000F0000001F800007FFFE0001C1F7A9E21>I<FFFC3FF80F80
07C007800300078003000F0002000F0002000F0002000F0002000F0002000F0002001E00
04001E0004001E0004001E0004001E0004001E0004003C0008003C0008003C0008003C00
08003C0008003C000800380010003800100038001000380020003C0040001C0040001C00
80000E0100000706000001F800001D20799E22>I<FFF003FE1F8000F80F0000600F0000
400F0000400F8000800780018007800100078002000780020007C0040003C0040003C008
0003C0080003C0100003E0100001E0200001E0200001E0400001E0400001F0800000F100
0000F1000000F2000000F2000000FC0000007C0000007800000078000000700000007000
00002000001F207A9E22>I<FFF07FF81FF01F000FC007C01F00078003000F0007800300
0F00078002000F000F8002000F000F8004000F001F8004000F0017C008000F8013C00800
078023C01000078023C01000078043C02000078043C02000078083C04000078083E04000
07C101E0800003C101E0800003C201E1000003C201E1000003C401E2000003C401E20000
03C801F4000003E800F4000001F000FC000001F000F8000001E000F8000001E000F00000
01C000F0000001C00060000000C0006000000080004000002C207A9E2F>I<03FFC0FFC0
007F007E00003E003800001E003000001E002000000F004000000F008000000F81000000
078200000007C600000003C400000003E800000001F000000001F000000000F000000000
F800000000F8000000017C000000023C000000043C0000000C1E000000081E000000101F
000000200F000000400F800000C0078000008007C000010003C000070003E0001F8007E0
00FFE01FFE00221F7F9E22>I<FFF003FF1F8000F80F0000600F8000400780008007C001
8003C0010003E0020001E0040001F00C0001F0080000F0100000F8200000786000007C40
00003C8000003F0000001F0000001E0000001E0000001E0000001C0000003C0000003C00
00003C0000003C0000003C00000038000000780000007C00000FFFC000201F7A9E22>I
E /Fo 39 122 df<000FF07F00007FF9FF8000F83FC7C001E07F8FC003E07F0FC007C07F
0FC007C03F078007C01F000007C01F000007C01F000007C01F000007C01F0000FFFFFFF8
00FFFFFFF80007C01F000007C01F000007C01F000007C01F000007C01F000007C01F0000
07C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007
C01F000007C01F000007C01F00003FF8FFF0003FF8FFF0002220809F1F>11
D<000FE000007FF80000F81C0001E07C0003E07C0007C07C0007C07C0007C0380007C000
0007C0000007C0000007C1FE00FFFFFE00FFFFFE0007C03E0007C03E0007C03E0007C03E
0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E
0007C03E0007C03E0007C03E003FF9FFC03FF9FFC01A20809F1D>I<0018007000E001C0
0380038007000E000E001E001C003C003C007800780078007800F800F000F000F000F000
F000F000F000F000F000F80078007800780078003C003C001C001E000E000E0007000380
038001C000E0007000180D2D7DA114>40 D<C000700038001C000E000E00070003800380
03C001C001E001E000F000F000F000F000F8007800780078007800780078007800780078
00F800F000F000F000F001E001E001C003C00380038007000E000E001C0038007000C000
0D2D7DA114>I<FFF0FFF0FFF0FFF00C047F8B11>45 D<387CFEFEFE7C3807077C860F>I<
387CFEFEFE7C38000000000000387CFEFEFE7C3807147C930F>58
D<0000E000000000E000000001F000000001F000000001F000000003F800000003F80000
0006FC00000006FC0000000EFE0000000C7E0000000C7E000000183F000000183F000000
303F800000301F800000701FC00000600FC00000600FC00000C007E00000FFFFE00001FF
FFF000018003F000018003F000030001F800030001F800060001FC00060000FC000E0000
FE00FFE00FFFE0FFE00FFFE0231F7E9E28>65 D<0007FC02003FFF0E00FE03DE03F000FE
07E0003E0FC0001E1F80001E3F00000E3F00000E7F0000067E0000067E000006FE000000
FE000000FE000000FE000000FE000000FE000000FE0000007E0000007E0000067F000006
3F0000063F00000C1F80000C0FC0001807E0003803F0007000FE01C0003FFF800007FC00
1F1F7D9E26>67 D<FFFFFFE0FFFFFFE007E007E007E001E007E000E007E0006007E00070
07E0003007E0003007E0603007E0603007E0600007E0E00007E1E00007FFE00007FFE000
07E1E00007E0E00007E0600007E0600C07E0600C07E0000C07E0001807E0001807E00018
07E0003807E0007807E000F807E003F0FFFFFFF0FFFFFFF01E1F7E9E22>69
D<FFFFFFE0FFFFFFE007E007E007E001E007E000E007E0006007E0007007E0003007E000
3007E0603007E0603007E0600007E0E00007E1E00007FFE00007FFE00007E1E00007E0E0
0007E0600007E0600007E0600007E0000007E0000007E0000007E0000007E0000007E000
0007E0000007E00000FFFF8000FFFF80001C1F7E9E21>I<FFFFFFFF07E007E007E007E0
07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007E0
07E007E007E007E007E0FFFFFFFF101F7E9E14>73 D<FFFF8000FFFF800007E0000007E0
000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0
000007E0000007E0000007E0000007E0000007E0000007E0000007E000C007E000C007E0
00C007E001C007E001C007E001C007E0038007E0038007E00F8007E01F80FFFFFF80FFFF
FF801A1F7E9E1F>76 D<FFE000003FF8FFF000007FF807F000007F0006F80000DF0006F8
0000DF0006F80000DF00067C00019F00067C00019F00063E00031F00063E00031F00061F
00061F00061F00061F00060F800C1F00060F800C1F000607C0181F000607C0181F000607
C0181F000603E0301F000603E0301F000601F0601F000601F0601F000600F8C01F000600
F8C01F0006007D801F0006007D801F0006003F001F0006003F001F0006003F001F000600
1E001F00FFF01E03FFF8FFF00C03FFF82D1F7E9E32>I<001FF80000FFFF0001F81F8007
E007E00FC003F01F8001F81F0000F83F0000FC7F0000FE7E00007E7E00007EFE00007FFE
00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F7E00007E7F
0000FE7F0000FE3F0000FC3F8001FC1F8001F80FC003F007E007E001F81F8000FFFF0000
1FF800201F7D9E27>79 D<FFFFFE00FFFFFF8007E00FE007E003F007E001F807E001F807
E001FC07E001FC07E001FC07E001FC07E001FC07E001F807E001F807E003F007E00FE007
FFFF8007FFFE0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007
E0000007E0000007E0000007E0000007E00000FFFF0000FFFF00001E1F7E9E24>I<03FC
080FFF381E03F83800F8700078700038F00038F00018F00018F80000FC00007FC0007FFE
003FFF801FFFE00FFFF007FFF000FFF80007F80000FC00007C00003CC0003CC0003CC000
3CE00038E00078F80070FE01E0E7FFC081FF00161F7D9E1D>83 D<FFFFFFE0E0E0E0E0E0
E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0FFFFFF
082D7BA10F>91 D<FFFFFF07070707070707070707070707070707070707070707070707
0707070707070707070707070707FFFFFF082D7FA10F>93 D<07FC001FFF003F0F803F07
C03F03E03F03E00C03E00003E0007FE007FBE01F03E03C03E07C03E0F803E0F803E0F803
E0FC05E07E0DE03FF8FE0FE07E17147F9319>97 D<FF0000FF00001F00001F00001F0000
1F00001F00001F00001F00001F00001F00001F00001F1FC01F7FF01FE0F81F807C1F007E
1F003E1F003E1F003F1F003F1F003F1F003F1F003F1F003F1F003E1F003E1F007C1F807C
1EC1F81C7FE0181F8018207E9F1D>I<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C03
00FC0000FC0000FC0000FC0000FC0000FC00007C00007E00003E00603F00C01F81C007FF
0001FC0013147E9317>I<0007F80007F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F801F8F80FFEF81F83F83E01F87E00F87C00F87C00F8FC00F8FC
00F8FC00F8FC00F8FC00F8FC00F87C00F87C00F87E00F83E01F81F07F80FFEFF03F8FF18
207E9F1D>I<01FE0007FF800F83C01E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8
FC0000FC0000FC00007C00007C00003E00181E00180F807007FFE000FF8015147F9318>
I<001F8000FFC001F3E003E7E003C7E007C7E007C3C007C00007C00007C00007C00007C0
00FFFC00FFFC0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0
0007C00007C00007C00007C00007C00007C0003FFC003FFC0013207F9F10>I<01FC3C07
FFFE0F079E1E03DE3E03E03E03E03E03E03E03E03E03E01E03C00F07800FFF0009FC0018
00001800001C00001FFF800FFFF007FFF81FFFFC3C007C70003EF0001EF0001EF0001E78
003C78003C3F01F80FFFE001FF00171E7F931A>I<FF0000FF00001F00001F00001F0000
1F00001F00001F00001F00001F00001F00001F00001F0FC01F3FE01F61F01FC0F81F80F8
1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8
1F00F8FFE3FFFFE3FF18207D9F1D>I<1C003E007F007F007F003E001C00000000000000
000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F00FFE0FFE00B217EA00E>I<FF00FF001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F00FFE0FFE00B207E9F0E>108 D<FE0FE03F80FE1FF07FC01E70F9C3E01E407D
01F01E807E01F01F807E01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01
F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F0
FFE3FF8FFEFFE3FF8FFE27147D932C>I<FE0FC0FE3FE01E61F01EC0F81E80F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FF
E3FFFFE3FF18147D931D>I<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007E
FC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF00
17147F931A>I<FF1FC0FF7FF01FE1F81F80FC1F007E1F007E1F003E1F003F1F003F1F00
3F1F003F1F003F1F003F1F003E1F007E1F007C1F80FC1FC1F81F7FE01F1F801F00001F00
001F00001F00001F00001F00001F0000FFE000FFE000181D7E931D>I<FE3E00FE7F801E
CFC01E8FC01E8FC01F8FC01F03001F00001F00001F00001F00001F00001F00001F00001F
00001F00001F00001F0000FFF000FFF00012147E9316>114 D<0FE63FFE701E600EE006
E006F800FFC07FF83FFC1FFE03FE001FC007C007E007F006F81EFFFCC7F010147E9315>
I<01800180018003800380038007800F803F80FFFCFFFC0F800F800F800F800F800F800F
800F800F800F800F860F860F860F860F8607CC03F801F00F1D7F9C14>I<FF07F8FF07F8
1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8
1F00F81F01F81F01F80F06F807FCFF03F8FF18147D931D>I<FFE07F80FFE07F801F001C
000F8018000F80180007C0300007C0300003E0600003E0600001F0C00001F0C00001F9C0
0000F9800000FF8000007F0000007F0000003E0000003E0000001C0000001C000019147F
931C>I<FFE07F80FFE07F801F001C000F8018000F80180007C0300007C0300003E06000
03E0600001F0C00001F0C00001F9C00000F9800000FF8000007F0000007F0000003E0000
003E0000001C0000001C0000001800000018000078300000FC300000FC600000C0E00000
E1C000007F8000001E000000191D7F931C>121 D E /Fp 82 126
df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8F870051C779B18>
33 D<4010E038F078E038E038E038E038E038E038E038E038E038E03860300D0E7B9C18>
I<00C00001C00001C00001C00003F0000FFC003FFE007DCF0071C700E1C380E1C780E1C7
80E1C780F1C00079C0003DC0001FE0000FF80003FC0001DE0001CF0001C70061C380F1C3
80F1C380E1C380E1C70071C70079DE003FFE001FF80007E00001C00001C00001C00000C0
0011247D9F18>36 D<01C00007E0000FF0000E70001C38001C38001C38001C38001C73F0
1C73F01CE3F00FE3800FC7000F87000F07001F0E003F0E007B8E0073DC00E1DC00E0F800
E0F800E07070E0787070FC707FFFE03FCFE00F03C0141C7F9B18>38
D<387C7C7E3E0E0E0E1C1C38F8F0C0070E789B18>I<007000F001E003C007800F001E00
1C00380038007000700070007000E000E000E000E000E000E000E000E000700070007000
7000380038001C001E000F00078003C001F000F000700C24799F18>I<6000F00078003C
001E000F000780038001C001C000E000E000E000E0007000700070007000700070007000
7000E000E000E000E001C001C0038007800F001E003C007800F00060000C247C9F18>I<
01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007F00007F0001FFC00
7FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D9718>I<00600000F0
0000F00000F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F0
0000F00000F00000F00000F00000F00000600013147E9718>I<1C3E7E7F3F1F070E1E7C
F860080C788518>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<3078FCFC7830060677
8518>I<000300000780000780000F80000F00001F00001E00001E00003E00003C00007C
0000780000780000F80000F00001F00001E00003E00003C00003C00007C0000780000F80
000F00000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000F000
0060000011247D9F18>I<01F00007FC000FFE001F1F001C07003803807803C07001C070
01C0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C070
01C07803C03803801C07001F1F000FFE0007FC0001F000131C7E9B18>I<018003800380
07800F803F80FF80FB804380038003800380038003800380038003800380038003800380
03800380038003807FFCFFFE7FFC0F1C7B9B18>I<03F0000FFE003FFF007C0F807003C0
E001C0F000E0F000E06000E00000E00000E00001C00001C00003C0000780000F00001E00
003C0000780000F00001E00007C0000F80001E00E03C00E07FFFE0FFFFE07FFFE0131C7E
9B18>I<07F8001FFE003FFF007807807803C07801C03001C00001C00003C0000380000F
0003FF0003FE0003FF000007800003C00001C00000E00000E00000E0F000E0F000E0F001
C0F003C07C07803FFF001FFE0003F800131C7E9B18>I<1FFF803FFF803FFF8038000038
00003800003800003800003800003800003800003BF8003FFE003FFF003C07801803C000
01C00000E00000E06000E0F000E0F000E0E001C07003C07C0F803FFF001FFC0003F00013
1C7E9B18>53 D<007E0001FF0007FF800F83C01E03C01C03C03801803800007000007000
00E1F800E7FE00FFFF00FE0780F803C0F001C0F000E0E000E0F000E07000E07000E07000
E03801C03C03C01E07800FFF0007FE0001F800131C7E9B18>I<03F8000FFE001FFF003E
0F803803807001C07001C07001C07001C03803803C07801FFF0007FC000FFE001F1F003C
07807001C0F001E0E000E0E000E0E000E0E000E07001C07803C03E0F801FFF000FFE0003
F800131C7E9B18>56 D<3078FCFC783000000000000000003078FCFC78300614779318>
58 D<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318>I<00
0300000780001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000FC0000FC
00007E00003F00001FC00007E00003F00001FC00007E00003F00001F8000078000030011
187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFFE0FFFFE0
FFFFE07FFFC0130C7E9318>I<600000F00000FC00007E00003F00001FC00007E00003F0
0001FC00007E00003F00001F80001F80003F00007E0001FC0003F00007E0001FC0003F00
007E0000FC0000F0000060000011187D9918>I<007C0001FE0007FF000F87801E03C03C
1DC0387FC070FFE071E3E071C1E0E1C1E0E380E0E380E0E380E0E380E0E380E0E380E0E1
C1C071C1C071E3C070FF80387F003C1C001E00E00F83E007FFC001FF80007E00131C7E9B
18>64 D<00700000F80000F80000D80000D80001DC0001DC0001DC00018C00038E00038E
00038E00038E000306000707000707000707000707000FFF800FFF800FFF800E03800E03
801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<FFFC00FFFF00FFFF801C03C01C
01C01C00E01C00E01C00E01C00E01C01E01C01C01C07C01FFF801FFF001FFFC01C03C01C
00E01C00F01C00701C00701C00701C00701C00F01C00E01C03E0FFFFC0FFFF80FFFE0014
1C7F9B18>I<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E07000E0700000
E00000E00000E00000E00000E00000E00000E00000E000007000007000E07000E03800E0
3C00E01E01C00F07C007FF8003FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F
801C03C01C03C01C01E01C00E01C00E01C00F01C00701C00701C00701C00701C00701C00
701C00701C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF8
00141C7F9B18>I<FFFFF0FFFFF0FFFFF01C00701C00701C00701C00701C00001C00001C
0E001C0E001C0E001FFE001FFE001FFE001C0E001C0E001C0E001C00001C00001C00381C
00381C00381C00381C0038FFFFF8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFFE0FFFFE0
1C00E01C00E01C00E01C00E01C00001C00001C1C001C1C001C1C001FFC001FFC001FFC00
1C1C001C1C001C1C001C00001C00001C00001C00001C00001C00001C0000FFC000FFC000
FFC000131C7E9B18>I<01F1C003FDC00FFFC01F0FC01C03C03803C03801C07001C07001
C0700000E00000E00000E00000E00000E00000E00FF0E01FF0E00FF07001C07001C07003
C03803C03803C01C07C01F0FC00FFFC003FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F
07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01F
FFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF
8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001C00001C00001C00001C00001C000
01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B18>I<7F07F0FF87
F87F07F01C03C01C07801C07001C0E001C1E001C3C001C38001C70001CF0001DF0001DF0
001FB8001FB8001F1C001E1C001C0E001C0E001C07001C07001C03801C03801C01C07F03
F0FF87F87F03F0151C7F9B18>75 D<7FE000FFE0007FE0000E00000E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00700E00700E00700E00700E00707FFFF0FFFFF07FFFF0141C7F9B18>I<FC01
F8FE03F8FE03F83B06E03B06E03B06E03B06E03B8EE03B8EE0398CE0398CE039DCE039DC
E039DCE038D8E038D8E038F8E03870E03870E03800E03800E03800E03800E03800E03800
E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F01D81C01D81C01D81C01D
C1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C
39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<
0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E00380
E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780700700
780F007FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00
E01C00701C00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00
001C00001C00001C00001C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B18
>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E0
0380E00380E00380E00380E00380E00380E00380E00380E00380E1E380E1E380F0E78070
F700787F007FFF003FFE000FFC00001C00001E00000E00000F0000070000070011227D9B
18>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03C01C0380
1C0F801FFF001FFE001FFE001C0F001C07001C03801C03801C03801C03801C03801C039C
1C039C1C039C7F01F8FF81F87F00F0161C7F9B18>I<03F3801FFF803FFF807C0F807007
80E00380E00380E00380E000007000007800003F00001FF00007FE0000FF00000F800003
C00001C00000E00000E06000E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F800131C
7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E0703800700000700000700000
700000700000700000700000700000700000700000700000700000700000700000700000
700000700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C0070
1C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C0070
1C00701C00701C00701C00701C00701C00700E00E00F01E00783C003FF8001FF00007C00
171C809B18>I<FF07F8FF07F8FF07F81C01C01C01C01C01C01C01C00E03800E03800E03
800E03800F0780070700070700070700070700038E00038E00038E00038E00018C0001DC
0001DC0001DC0000D80000F80000F800007000151C7F9B18>I<FE03F8FE03F8FE03F870
00707000707000703800E03800E03800E03800E03800E038F8E038F8E039DCE039DCE019
DCC019DCC019DCC0198CC01D8DC01D8DC01D8DC01D8DC00D8D800D05800F07800F07800E
0380151C7F9B18>I<7F8FE07F9FE07F8FE00E07000F0700070E00078E00039C0003DC00
01F80001F80000F00000F00000700000F00000F80001F80001DC00039E00038E00070F00
0707000E07800E03801E03C07F07F0FF8FF87F07F0151C7F9B18>I<FF07F8FF07F8FF07
F81C01C01E03C00E03800F0780070700070700038E00038E0001DC0001DC0001DC0000F8
0000F80000700000700000700000700000700000700000700000700000700001FC0003FE
0001FC00151C7F9B18>I<3FFFE07FFFE07FFFE07001C07003C0700780700700000F0000
1E00001C00003C0000780000700000F00001E00001C00003C0000780000700000F00001E
00E01C00E03C00E07800E07000E0FFFFE0FFFFE0FFFFE0131C7E9B18>I<FFF8FFF8FFF8
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000FFF8FFF8FFF80D24779F18>
I<FFF8FFF8FFF80038003800380038003800380038003800380038003800380038003800
38003800380038003800380038003800380038003800380038003800380038FFF8FFF8FF
F80D247F9F18>93 D<7FFF00FFFF80FFFF807FFF0011047D7F18>95
D<1FE0003FF8007FFC00781E00300E0000070000070000FF0007FF001FFF007F07007807
00E00700E00700E00700F00F00781F003FFFF01FFBF007E1F014147D9318>97
D<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF800FFFC00FC1
E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F00700F00700F80
E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E078038030070
0000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03C01F
FF8007FF0001FC0012147D9318>I<001F80003F80001F80000380000380000380000380
00038003E3800FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380
E00380E00380700780700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F0
0007FC001FFE003E0F00380780700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000
007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80007FC000
FFE000E1E001C0C001C00001C00001C0007FFFC0FFFFC0FFFFC001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0007FFF007F
FF007FFF00131C7F9B18>I<01E1F007FFF80FFFF81E1E301C0E00380700380700380700
3807003807001C0E001E1E001FFC001FF80039E0003800001C00001FFE001FFFC03FFFE0
7801F0700070E00038E00038E00038E000387800F07E03F01FFFC00FFF8001FC00151F7F
9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF800FFF
C00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C00003
80000000000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FF
FF00111D7C9C18>I<0038007C007C007C003800000000000000000FFC1FFC0FFC001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C6038F078FFF07FE03F800E277E9C18>I<FE0000FE0000FE00000E00000E00
000E00000E00000E00000E3FF00E7FF00E3FF00E07800E0F000E1E000E3C000E78000EF0
000FF8000FFC000F9C000F0E000E0F000E07000E03800E03C0FFC7F8FFC7F8FFC7F8151C
7F9B18>I<7FE000FFE0007FE00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000FFFBF8007FFFF800
1F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C00
1C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F0019148193
18>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0
000FFE001FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001
E07001C07803C03C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807F
FFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F00700F
00700F80E00FC1E00FFFC00EFF800E3E000E00000E00000E00000E00000E00000E00000E
00007FC000FFE0007FC000151E809318>I<01E38007FB801FFF803E1F80380F80700780
700780E00380E00380E00380E00380E00380E00380700780700780380F803C1F801FFF80
0FFB8003E380000380000380000380000380000380000380000380003FF8003FF8003FF8
151E7E9318>I<7F87E0FF9FF07FBFF803F87803F03003E00003C00003C0000380000380
000380000380000380000380000380000380000380007FFE00FFFF007FFE0015147F9318
>I<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC0003FE0000
1F00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<018000
0380000380000380000380007FFFC0FFFFC0FFFFC0038000038000038000038000038000
0380000380000380000380000380400380E00380E00380E001C1C001FFC000FF80003E00
13197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00
E00E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318
>I<7F8FF0FF8FF87F8FF01E03C00E03800E03800E0380070700070700070700038E0003
8E00038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318>I<FF8FF8
FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C0
0DDD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>I<7F8FF07F9FF07F8F
F0070700078E00039E0001DC0001F80000F80000700000F00000F80001DC00039E00038E
000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8FF00E01C00E
03800E0380070380070700070700038700038600038E0001CE0001CE0000CC0000CC0000
DC0000780000780000780000700000700000700000F00000E00079E0007BC0007F80003F
00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C0700780000F00001E00
003C0000F80001F00003C0000780000F00701E00703C0070780070FFFFF0FFFFF0FFFFF0
14147F9318>I<0007E0001FE0007FE000780000E00000E00000E00000E00000E00000E0
0000E00000E00000E00000E00000E00001E0007FC000FF8000FF80007FC00001E00000E0
0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000007800007F
E0001FE00007E013247E9F18>I<7C0000FF0000FFC00003C00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000F000007FC0003FE0003FE000
7FC000F00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00003C000FFC000FF00007C000013247E9F18>125 D E /Fq 59
123 df<007F07F001FF1FF003FF3FF007807800070070000F00F0000F00F0000F00F000
0F00F0000F00F0000F00F0000F00F000FFF8FF80FFF8FF80FFF8FF800F00F0000F00F000
0F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F0000F00F000
0F00F0000F00F0000F00F0000F00F0000F00F0000F00F0001C20809F1B>11
D<0000F000F8F001F8F003F8F00780000700000F00000F00000F00000F00000F00000F00
000F0000FFF8F0FFF8F0FFF8F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00
F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F0142180A018>I<00
7000E001C00380078007000E001E001E003C003C003C0078007800780078007000F000F0
00F000F000F000F000F000F000F000F000F000F000700078007800780078003C003C003C
001E001E000E0007000780038001C000E000700C2E7EA112>40 D<E000700038001C001E
000E0007000780078003C003C003C001E001E001E001E000E000F000F000F000F000F000
F000F000F000F000F000F000F000E001E001E001E001E003C003C003C00780078007000E
001E001C0038007000E0000C2E7DA112>I<787878781830306060E0050A7D830D>44
D<FFC0FFC0FFC00A037F8B0F>I<000100030003000600060006000C000C000C00180018
001800300030003000600060006000C000C000C001800180018003000300030006000600
06000C000C000C00180018001800300030003000600060006000C000C000C000102D7DA1
17>47 D<00C001C00FC0FFC0FFC0F3C003C003C003C003C003C003C003C003C003C003C0
03C003C003C003C003C003C003C003C003C003C003C003C0FFFEFFFEFFFE0F1F7C9E17>
49 D<07F0000FFC001FFE00383F00700F00600780E00780E003C04003C04003C00003C0
0003C00003C0000780000780000F00000E00001C00003C0000780000E00001C000038000
0700000E00001C0000380000700000FFFFC0FFFFC0FFFFC0121F7E9E17>I<F0F0F0F000
0000000000000000000000F0F0F0F004147C930D>58 D<001F0000001F0000003F800000
3B8000003B8000007BC0000073C0000071C00000F1E00000E1E00000E0E00001E0F00001
E0F00001C0F00003C0780003C078000380780007803C0007803C0007003C000FFFFE000F
FFFE000FFFFE001E000F001E000F003C000F803C0007803C000780780007C0780003C078
0003C0F00003E01B207F9F1E>65 D<FFF800FFFF00FFFF80F00FC0F003E0F001E0F000F0
F000F0F000F0F000F0F000F0F001E0F003C0F01F80FFFF00FFFF00FFFF80F007E0F001E0
F000F0F00078F00078F00078F00078F00078F00078F000F0F001F0F007E0FFFFC0FFFF80
FFFC0015207B9F1E>I<001FC000FFF801FFFC03E03C07800C0F00001E00003E00003C00
007C0000780000780000780000F00000F00000F00000F00000F00000F00000F00000F000
007800007800007800007C00003C00003E00001E00000F000207800E03E03E01FFFC00FF
F0001FC017227DA01D>I<FFFC00FFFF80FFFFC0F007E0F001F0F000F8F00078F0003CF0
003CF0001EF0001EF0000EF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0
000FF0001EF0001EF0001EF0003CF0007CF000F8F001F0F007E0FFFFC0FFFF80FFFC0018
207B9F21>I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000FFFF80FFFF80FFFF80F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000FFFFE0FFFFE0FFFFE013207B9F1B>
I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000FFFF00FFFF00FFFF00F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F0000012207B9F1A>I<001FE000
FFF801FFFE03E03E07800E0F00001E00003E00003C00007C0000780000780000780000F0
0000F00000F00000F00000F00000F00000F003FEF003FE7803FE78001E78001E7C001E3C
001E3E001E1E001E0F001E07801E03E03E01FFFE00FFF8001FC017227DA01E>I<F00078
F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078
F00078FFFFF8FFFFF8FFFFF8F00078F00078F00078F00078F00078F00078F00078F00078
F00078F00078F00078F00078F00078F00078F0007815207B9F20>I<F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207C9F0D>I<F0003EF000
7CF000F8F001F0F003E0F007C0F00780F00F00F01F00F03E00F07C00F0F800F1F000F3F8
00F3F800F7FC00FFBC00FF1E00FE1F00FC0F00F80780F00780F003C0F003E0F001E0F000
F0F000F8F00078F0003CF0003CF0001EF0001F18207B9F20>75 D<F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000FFFF80FFFF80FFFF8011207B9F19>I<F80001F8FC0003F8FC0003F8F400
0378F6000778F6000778F6000778F3000E78F3000E78F3000E78F3801E78F3801E78F180
1C78F1C03C78F1C03C78F0C03878F0C03878F0E07878F0E07878F0607078F070F078F070
F078F030E078F039E078F039E078F019C078F019C078F019C078F00F8078F00F8078F00F
8078F00000781D207B9F28>I<FC0078FE0078FE0078F60078F70078F70078F38078F380
78F38078F3C078F1C078F1E078F1E078F0E078F0F078F07078F07078F07878F03878F03C
78F03C78F01C78F01E78F00E78F00E78F00E78F00778F00778F00378F003F8F003F8F001
F815207B9F20>I<003F000000FFC00003FFF00007E1F8000F807C001F003E001E001E00
3C000F003C000F00780007807800078078000780F00003C0F00003C0F00003C0F00003C0
F00003C0F00003C0F00003C0F00003C0F00003C0F80007C0780007807800078078000780
3C000F003C000F001E001E001F003E000F807C0007E1F80003FFF00000FFC000003F0000
1A227DA021>I<FFF800FFFF00FFFF80F00FC0F003E0F001E0F000F0F000F0F000F0F000
F0F000F0F000F0F000F0F001E0F003E0F00FC0FFFF80FFFF00FFF800F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000014207B9F1D
>I<FFF800FFFF00FFFF80F007C0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F0
01E0F003E0F007C0FFFF80FFFF00FFF800F03C00F01E00F01E00F00F00F00F00F00780F0
0780F003C0F001C0F001E0F000F0F000F0F00078F00078F0003C16207B9F1D>82
D<01FC0007FF800FFFC01F03C03C00C03C00007800007800007800007800007800007C00
003C00003F00001FE0000FFC0007FE0001FF00003F800007C00003C00003E00001E00001
E00001E00001E00001E00001C0C003C0F007C0FC0F807FFF001FFE0003F80013227EA019
>I<FFFFFFC0FFFFFFC0FFFFFFC0001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E00001A207E9F1F>I<F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F07801E078
01E03C03C03C03C01F0F800FFF0007FE0001F80014217B9F1F>I<F00001E0F00001E078
0003C0780003C0780003C03C0007803C0007803C0007801E000F001E000F001F000F000F
001E000F001E0007801C0007803C0007803C0003C0380003C0780003C0780001E0700001
E0F00001E0F00000F0E00000F1E00000F1E0000071C000007BC000003B8000003B800000
3F8000001F0000001F00001B207F9F1E>I<F0007C000FF0007E000FF0007E000F78006E
000E7800EE001E7800E7001E7800E7001E3C00E7003C3C01E7803C3C01C7803C3C01C380
3C1E01C380781E03C3C0781E0383C0780E0381C0700F0381C0F00F0781E0F00F0701E0F0
070700E0E0078700E1E0078F00E1E0078E00F1E0038E0071C0038E0071C003CE0073C001
DC00738001DC003B8001DC003B8001DC003B8000F8003F0000F8001F0000F8001F002820
7F9F2B>I<780007807C000F003E001F001E001E000F003C000F807C000780780003C0F0
0003E1F00001F1E00000F3C000007FC000007F8000003F0000001F0000001E0000003F00
00007F8000007FC00000F3C00001F1E00001E0F00003C0F80007C0780007803C000F003E
001F001E001E000F003C000F807C0007C0780003C0F00003E01B207F9F1E>I<F80000F8
7C0001F03C0001E03E0003E01F0003C00F0007800F800F8007C00F0003C01F0003E01E00
01F03C0000F07C00007878000078F000003CF000001CE000001FE000000FC00000078000
000780000007800000078000000780000007800000078000000780000007800000078000
000780000007800000078000000780001D20809F1E>I<FFFFF8FFFFF8FFFFF80000F000
01F00001E00003C00007C0000780000F80000F00001E00003E00003C00007C0000780000
F00001F00001E00003E00003C0000780000F80000F00001F00001E00003C00007C000078
0000FFFFFCFFFFFCFFFFFC16207D9F1C>I<07E03FF87FFC701E401F000F000F000F003F
07FF1FFF7E0FF80FF00FF00FF00FF83F7FFF3FEF1F8F10147E9316>97
D<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F1F000F7FC00FFFE00FC3E00F80F00F00F00F00780F00780F00780F00780F00780F007
80F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E00011207D9F17>I<03F00FFC
1FFE3E0E3C0278007800F000F000F000F000F000F000780078003C013E0F1FFF0FFE03F0
10147E9314>I<0007800007800007800007800007800007800007800007800007800007
8000078000078007C7800FF7801FFF803E1F807C0780780780F80780F00780F00780F007
80F00780F00780F00780F00780780780780F803E1F801FFF800FF78007C78011207E9F17
>I<03F0000FFC001FFE003E1F003C0700780700700380FFFF80FFFF80FFFF80F00000F0
0000F000007000007800003C01003E07001FFF0007FE0001F80011147F9314>I<007E01
FE03FE078007000F000F000F000F000F000F000F00FFF0FFF0FFF00F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F20809F0E>I<03E0F00F
FFF01FFFF03E3E003C1E00780F00780F00780F00780F00780F003C1E003E3E001FFC003F
F80033E0003000003800003FFE003FFF801FFFC03FFFE07803F0F000F0F000F0F000F0F8
01F07E07E03FFFC00FFF0003FC00141E7F9317>I<F000F000F000F000F000F000F000F0
00F000F000F000F000F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00FF00F10207D9F17>I<F0F0F0F00000000000000000F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F01F00F01E00F03C00F07800F0
F000F1E000F3C000F78000FFC000FFC000FFE000F9F000F8F000F0F800F07C00F07C00F0
3E00F01E00F01F00F00F8011207D9F16>107 D<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F0FC07E0F3FE1FF0F7FF3FF8FE
0FF07CF807C03CF807C03CF007803CF007803CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C1E147D9325
>I<F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00F10147D9317>I<01F80007FE001FFF803F0FC03C03C07801E07801E0F000
F0F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03F0FC01FFF8007FE0001F8
0014147F9317>I<F1F000F7FC00FFFE00FC3E00F81F00F00F00F00F80F00780F00780F0
0780F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000111D7D9317>I<03C7800FF780
1FFF803E1F807C0F80780780780780F00780F00780F00780F00780F00780F00780F80780
7807807C0F803E1F801FFF800FF78007C780000780000780000780000780000780000780
000780000780000780111D7E9317>I<F0E0F3E0F7E0FF00FC00FC00F800F800F000F000
F000F000F000F000F000F000F000F000F000F0000B147D9310>I<07F01FFC3FFC780C78
00780078007C003FC01FF00FF803F8007C003C003CC03CF07CFFF87FF00FC00E147F9311
>I<1E001E001E001E001E001E00FFF0FFF0FFF01E001E001E001E001E001E001E001E00
1E001E001E001E001E001E201FF00FF007C00C1A7F9910>I<F00FF00FF00FF00FF00FF0
0FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01FF03FFFFF7FEF3F0F10147D9317>I<
F003C0F003C07803807807807807803C0F003C0F003C0F001E0E001E1E001E1E000F1C00
0F3C000F3C0007380007380007B80003F00003F00001E00012147F9315>I<F01F00F0F0
1F80F0F01F80F0781B81E0783B81E0783BC1E07839C1E03C31C3C03C71C3C03C71E3C01C
70E3801E60E7801E60E7801EE0E7800EE077000EC077000EC0770007C07E0007C03E0007
803E001C147F931F>I<7801E07C03C03E07801E0F000F0F00079E0003FC0003F80001F8
0000F00001F00001F80003FC00079E000F0F000E0F001E07803C03C07801E0F801F01414
809315>I<F003C0F003C07807807807807C07803C0F003C0F001E0F001E1E000E1E000F
1C000F1C00073C0007380003B80003B80003B00001F00001F00000E00000E00001C00001
C00001C0000380000780007F00007E00007C0000121D7F9315>I<7FFF7FFF7FFF003E00
3C007800F800F001E003E007C007800F001F001E003C007C00FFFFFFFFFFFF10147F9314
>I E /Fr 14 122 df<0000000000700000000000F80000000001F80000000001F80000
000003F80000000003F00000000007F00000000007E00000000007E0000000000FE00000
00000FC0000000001FC0000000001F80000000001F80000000003F80000000003F000000
00007F00000000007E00000000007E0000000000FE0000000000FC0000000001FC000000
0001F80000000001F80000000003F80000000003F00000000007F00000000007E0000000
0007E0000000000FE0000000000FC0000000001FC0000000001F80000000001F80000000
003F80000000003F00000000007F00000000007E00000000007E0000000000FE00000000
00FC0000000001FC0000000001F80000000001F80000000003F80000000003F000000000
07F00000000007E00000000007E0000000000FE0000000000FC0000000001FC000000000
1F80000000003F80000000003F00000000003F00000000007F00000000007E0000000000
FE0000000000FC0000000000FC0000000001FC0000000001F80000000003F80000000003
F00000000003F00000000007F00000000007E0000000000FE0000000000FC0000000000F
C0000000001FC0000000001F80000000003F80000000003F00000000003F00000000007F
00000000007E0000000000FE0000000000FC0000000000FC0000000001FC0000000001F8
0000000003F80000000003F00000000003F00000000007F00000000007E0000000000FE0
000000000FC0000000000FC0000000001FC0000000001F80000000003F80000000003F00
000000003F00000000007F00000000007E0000000000FE0000000000FC0000000000FC00
00000000F800000000007800000000002D677ACC3A>47 D<FFFFFFFFFFFFC00000FFFFFF
FFFFFFFC0000FFFFFFFFFFFFFF8000FFFFFFFFFFFFFFE000001FFF000003FFF800001FFF
000000FFFC00001FFF0000003FFE00001FFF0000001FFF00001FFF0000001FFF80001FFF
0000000FFFC0001FFF00000007FFC0001FFF00000007FFE0001FFF00000007FFE0001FFF
00000003FFE0001FFF00000003FFF0001FFF00000003FFF0001FFF00000003FFF0001FFF
00000003FFF0001FFF00000003FFF0001FFF00000003FFF0001FFF00000003FFF0001FFF
00000003FFF0001FFF00000007FFE0001FFF00000007FFE0001FFF00000007FFC0001FFF
0000000FFFC0001FFF0000000FFF80001FFF0000001FFF00001FFF0000003FFE00001FFF
0000007FFC00001FFF000000FFF800001FFF000003FFE000001FFF00007FFF8000001FFF
FFFFFFFC0000001FFFFFFFFFFF8000001FFFFFFFFFFFF000001FFF0000007FFC00001FFF
0000001FFF00001FFF00000007FF80001FFF00000003FFC0001FFF00000003FFE0001FFF
00000001FFF0001FFF00000000FFF8001FFF00000000FFFC001FFF00000000FFFC001FFF
000000007FFE001FFF000000007FFE001FFF000000007FFE001FFF000000007FFF001FFF
000000007FFF001FFF000000007FFF001FFF000000007FFF001FFF000000007FFF001FFF
000000007FFF001FFF000000007FFF001FFF000000007FFF001FFF000000007FFE001FFF
000000007FFE001FFF00000000FFFE001FFF00000000FFFC001FFF00000001FFFC001FFF
00000001FFF8001FFF00000003FFF0001FFF00000007FFE0001FFF0000000FFFC0001FFF
0000003FFF80001FFF000001FFFF00FFFFFFFFFFFFFFFC00FFFFFFFFFFFFFFF000FFFFFF
FFFFFFFF8000FFFFFFFFFFFFF8000048477CC653>66 D<FFFFFFFFF0FFFFFFFFF0FFFFFF
FFF0FFFFFFFFF0001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF80
00001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000
001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF800000
1FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001F
FF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF
8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF80
00001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000
001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF800000
1FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000001FFF8000FFFF
FFFFF0FFFFFFFFF0FFFFFFFFF0FFFFFFFFF024477DC62B>73 D<00000003FFF000000000
0000007FFFFF80000000000003FFFFFFF000000000000FFF003FFC00000000003FF80007
FF0000000000FFE00001FFC000000003FF8000007FF000000007FF0000003FF80000000F
FE0000001FFC0000001FFC0000000FFE0000003FF800000007FF0000007FF000000003FF
800000FFF000000003FFC00001FFE000000001FFE00003FFE000000001FFF00003FFC000
000000FFF00007FFC000000000FFF80007FF80000000007FF8000FFF80000000007FFC00
0FFF80000000007FFC001FFF00000000003FFE001FFF00000000003FFE003FFF00000000
003FFF003FFF00000000003FFF003FFF00000000003FFF007FFF00000000003FFF807FFE
00000000001FFF807FFE00000000001FFF807FFE00000000001FFF807FFE00000000001F
FF80FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE0000
0000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0
FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000
001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC0FFFE00000000001FFFC07FFE
00000000001FFF807FFF00000000003FFF807FFF00000000003FFF807FFF00000000003F
FF803FFF00000000003FFF003FFF00000000003FFF003FFF00000000003FFF001FFF8000
0000007FFE001FFF80000000007FFE001FFF80000000007FFE000FFFC000000000FFFC00
0FFFC000000000FFFC0007FFC000000000FFF80003FFE000000001FFF00003FFE0000000
01FFF00001FFF000000003FFE00000FFF800000007FFC000007FF800000007FF8000007F
FC0000000FFF8000003FFE0000001FFF0000000FFF0000003FFC00000007FFC00000FFF8
00000003FFE00001FFF000000000FFF80007FFC0000000007FFF807FFF80000000000FFF
FFFFFC000000000003FFFFFFF00000000000007FFFFF8000000000000003FFF000000000
4A497AC757>79 D<000FFFF000000000FFFFFF00000003FFFFFFC0000007F8007FF00000
0FFC001FFC00000FFC0007FE00001FFE0003FF00001FFE0003FF80001FFE0001FF80001F
FE0001FFC0001FFE0000FFC0000FFC0000FFE00007F80000FFE00003F00000FFE0000000
0000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000000
7FFFE00000003FFFFFE0000003FFFFFFE000001FFFF0FFE000007FFE00FFE00001FFE000
FFE00003FF8000FFE0000FFE0000FFE0001FFC0000FFE0001FF80000FFE0003FF80000FF
E0007FF00000FFE0007FF00000FFE000FFE00000FFE000FFE00000FFE000FFE00000FFE0
00FFE00000FFE000FFE00001FFE000FFE00001FFE0007FF00003FFE0007FF000077FE000
3FF8000F7FE0001FFC003E7FF8000FFF80F83FFFE003FFFFF01FFFE000FFFFC00FFFE000
0FFE0003FFE0332E7CAD38>97 D<007FC000000000FFFFC000000000FFFFC000000000FF
FFC000000000FFFFC00000000003FFC00000000001FFC00000000001FFC00000000001FF
C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0
0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000
00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000
000001FFC00000000001FFC00000000001FFC01FFC000001FFC0FFFF800001FFC3FFFFF0
0001FFCFE01FFC0001FFDF0003FE0001FFFC0001FF0001FFF80000FF8001FFF000007FC0
01FFE000003FE001FFC000003FF001FFC000001FF801FFC000001FF801FFC000001FFC01
FFC000001FFC01FFC000000FFE01FFC000000FFE01FFC000000FFE01FFC000000FFE01FF
C000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC0
00000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000
000FFE01FFC000000FFE01FFC000000FFE01FFC000000FFC01FFC000001FFC01FFC00000
1FFC01FFC000001FF801FFC000003FF001FFC000003FF001FFE000007FE001FFF000007F
C001FFF80000FF8001FF3C0001FF0001FE1F0007FE0001FC0FC03FF80001F803FFFFE000
01F000FFFF800001E0001FF8000038487CC741>I<00000000001F0000007FF000FFC000
07FFFF03FFE0001FFFFFC7E7E0007FE03FFF0FF000FF800FFC0FF001FF0007FC0FF003FE
0003FE0FF007FE0003FF07E007FC0001FF03C00FFC0001FF80000FFC0001FF80001FFC00
01FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001
FFC0001FFC0001FFC0001FFC0001FFC0000FFC0001FF80000FFC0001FF800007FC0001FF
000007FE0003FF000003FE0003FE000001FF0007FC000000FF800FF8000000FFE03FF000
0001DFFFFFC0000003C7FFFF00000003C07FF00000000780000000000007800000000000
0780000000000007C0000000000007C0000000000007E0000000000007E0000000000007
F8000000000007FFFFFFF0000003FFFFFFFF000003FFFFFFFFE00001FFFFFFFFF00001FF
FFFFFFFC0000FFFFFFFFFE00007FFFFFFFFF0001FFFFFFFFFF8007FFFFFFFFFF800FF000
001FFFC01FC0000001FFC03F800000007FC07F800000003FE0FF000000003FE0FF000000
001FE0FF000000001FE0FF000000001FE0FF000000001FE0FF000000001FE07F80000000
3FC07F800000003FC03FC00000007F801FE0000000FF000FF8000003FE0003FE00000FF8
0001FFE000FFF000007FFFFFFFC000000FFFFFFE000000007FFFC0000034447DAE3A>
103 D<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC00000
000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000
0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000
01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001
FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
C00000000001FFC007FE000001FFC03FFFC00001FFC07FFFF00001FFC1F81FF80001FFC3
C00FFC0001FFC70007FE0001FFCE0007FE0001FFDC0007FF0001FFF80003FF0001FFF800
03FF8001FFF00003FF8001FFF00003FF8001FFE00003FF8001FFE00003FF8001FFE00003
FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF
8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF80
01FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001
FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF
C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC0
0003FF8001FFC00003FF80FFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81
FFFFFF38487BC741>I<007C0001FF0003FF8007FFC007FFC00FFFE00FFFE00FFFE00FFF
E00FFFE007FFC007FFC003FF8001FF00007C000000000000000000000000000000000000
00000000000000000000000000000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC003FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF
C0FFFFFFFFFFFFFFFFFFFFFFFF18497CC820>I<007FC000FFFFC000FFFFC000FFFFC000
FFFFC00003FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
01FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF8019487CC720>108
D<00000FFE0000000001FFFFF000000007FFFFFC0000001FF803FF0000007FE000FFC000
00FF80003FE00001FF00001FF00003FE00000FF80007FC000007FC000FFC000007FE000F
F8000003FE001FF8000003FF003FF8000003FF803FF0000001FF803FF0000001FF807FF0
000001FFC07FF0000001FFC07FF0000001FFC0FFF0000001FFE0FFF0000001FFE0FFF000
0001FFE0FFF0000001FFE0FFF0000001FFE0FFF0000001FFE0FFF0000001FFE0FFF00000
01FFE0FFF0000001FFE0FFF0000001FFE07FF0000001FFC07FF0000001FFC07FF0000001
FFC07FF0000001FFC03FF8000003FF803FF8000003FF801FF8000003FF001FFC000007FF
000FFC000007FE0007FE00000FFC0003FE00000FF80001FF00001FF00000FF80003FE000
007FE000FFC000001FFC07FF00000007FFFFFC00000001FFFFF0000000001FFF00000033
2E7DAD3A>111 D<007FC01FFC0000FFFFC0FFFF8000FFFFC3FFFFF000FFFFCFE03FFC00
FFFFDF0007FE0003FFFC0003FF0001FFF80001FF8001FFF00000FFC001FFE000007FE001
FFC000007FF001FFC000003FF801FFC000003FF801FFC000001FFC01FFC000001FFC01FF
C000001FFE01FFC000001FFE01FFC000000FFE01FFC000000FFE01FFC000000FFF01FFC0
00000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000
000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFF01FFC000000FFE01FFC00000
1FFE01FFC000001FFE01FFC000001FFC01FFC000001FFC01FFC000003FFC01FFC000003F
F801FFC000003FF001FFC000007FF001FFE00000FFE001FFF00000FFC001FFF80001FF80
01FFFC0003FF0001FFDF000FFE0001FFCFC03FF80001FFC3FFFFE00001FFC0FFFF800001
FFC01FF8000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF
C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0
0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000
00000001FFC000000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF8000
000038427CAD41>I<007F803F80FFFF80FFE0FFFF81FFF8FFFF83C3FCFFFF8707FE03FF
8E07FE01FF9C0FFF01FFB80FFF01FFB80FFF01FFF00FFF01FFF00FFF01FFF007FE01FFE0
03FC01FFE001F801FFE0000001FFE0000001FFC0000001FFC0000001FFC0000001FFC000
0001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC00000
01FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001
FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FF
C00000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFFE000282E7DAD2F>114
D<FFFFFF0001FFFFFFFFFF0001FFFFFFFFFF0001FFFFFFFFFF0001FFFF01FFC000001FC0
01FFE000000F8000FFE000000F0000FFF000001F00007FF000001E00007FF800003E0000
3FF800003C00003FFC00003C00001FFC00007800001FFE00007800001FFE0000F800000F
FE0000F000000FFF0001F0000007FF0001E0000007FF8003E0000003FF8003C0000003FF
C007C0000001FFC00780000001FFE00780000000FFE00F00000000FFF00F00000000FFF0
1F000000007FF01E000000007FF83E000000003FF83C000000003FFC7C000000001FFC78
000000001FFEF8000000000FFEF0000000000FFFF00000000007FFE00000000007FFE000
00000007FFE00000000003FFC00000000003FFC00000000001FF800000000001FF800000
000000FF000000000000FF0000000000007E0000000000007E0000000000003C00000000
00003C0000000000007C00000000000078000000000000F8000000000000F00000000000
01F00000001F0001E00000003F8003E00000007FC003C0000000FFE007C0000000FFE007
80000000FFE00F80000000FFE01F00000000FFE01E000000007FC07C000000007F80F800
0000003F03F0000000001FFFE00000000007FF800000000001FC000000000038427EAD3D
>121 D E /Fs 9 117 df<0001FF0000000FFFE000003FFFF80000FF83FE0001FE00FF00
03F8003F8007F8003FC00FF0001FE00FE0000FE01FE0000FF01FE0000FF03FE0000FF83F
E0000FF83FC00007F87FC00007FC7FC00007FC7FC00007FC7FC00007FC7FC00007FCFFC0
0007FEFFC00007FEFFC00007FEFFC00007FEFFC00007FEFFC00007FEFFC00007FEFFC000
07FEFFC00007FEFFC00007FEFFC00007FEFFC00007FEFFC00007FEFFC00007FEFFC00007
FEFFC00007FEFFC00007FEFFC00007FEFFC00007FE7FC00007FC7FC00007FC7FC00007FC
7FC00007FC7FC00007FC3FE0000FF83FE0000FF83FE0000FF81FE0000FF01FE0000FF00F
F0001FE00FF0001FE007F8003FC003FC007F8001FE00FF0000FF83FE00007FFFFC00001F
FFF0000001FF000027397CB730>48 D<00003C000000007C00000001FC00000007FC0000
003FFC0000FFFFFC0000FFFFFC0000FFFFFC0000FFCFFC0000000FFC0000000FFC000000
0FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000F
FC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC
0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC00
00000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000
000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC0000000FFC000000
0FFC0000000FFC0000000FFC0000000FFC0000000FFC00007FFFFFFF807FFFFFFF807FFF
FFFF807FFFFFFF80213879B730>I<0000001FFE000060000003FFFFE000E000001FFFFF
F801E000007FFFFFFE03E00001FFFC00FF07E00007FFC0001FCFE0000FFF000007FFE000
1FFC000001FFE0003FF0000000FFE0007FE00000007FE000FFC00000003FE001FF800000
001FE003FF000000000FE007FF000000000FE00FFE0000000007E00FFE0000000007E01F
FC0000000003E01FFC0000000003E03FF80000000003E03FF80000000001E03FF8000000
0001E07FF80000000001E07FF80000000001E07FF00000000000007FF0000000000000FF
F0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000
000000FFF0000000000000FFF0000000000000FFF0000000000000FFF0000000000000FF
F0000000000000FFF00000000000007FF00000000000007FF00000000000007FF8000000
0000007FF80000000001E03FF80000000001E03FF80000000001E03FF80000000001E01F
FC0000000001E01FFC0000000003C00FFE0000000003C00FFE0000000003C007FF000000
00078003FF00000000078001FF800000000F0000FFC00000001F00007FE00000003E0000
3FF00000007C00001FFC000000F800000FFF000003F0000007FFC0000FE0000001FFFC00
7F800000007FFFFFFF000000001FFFFFFC0000000003FFFFE000000000001FFE0000003B
3D7BBB46>67 D<003FFE00000001FFFFE0000007FFFFF800000FE007FC00000FF001FE00
001FF800FF00001FF8007F80001FF8007FC0001FF8003FC0000FF0003FE00007E0003FE0
0003C0003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000FFFFE0
00001FFFFFE000007FF83FE00003FF803FE00007FC003FE0000FF0003FE0001FE0003FE0
003FE0003FE0007FC0003FE0007FC0003FE000FF80003FE000FF80003FE000FF80003FE0
00FF80003FE000FF80007FE0007FC0007FE0007FC000DFE0003FE0039FF0001FF80F0FFF
E007FFFE0FFFE001FFFC07FFE0003FE000FFE02B267DA52F>97 D<0001FF8000000FFFF0
00007FFFFC0000FF81FE0003FE007F8007F8003F800FF0001FC00FF0000FE01FE0000FE0
3FE0000FF03FE00007F07FC00007F07FC00007F87FC00007F8FFC00007F8FFC00007F8FF
FFFFFFF8FFFFFFFFF8FFFFFFFFF8FFC0000000FFC0000000FFC0000000FFC00000007FC0
0000007FC00000007FC00000003FE00000003FE00000781FE00000781FF00000780FF000
00F007F80001F003FC0003E001FE000FC000FFC07F80003FFFFE00000FFFF8000000FFC0
0025267DA52C>101 D<00FE00000000FFFE00000000FFFE00000000FFFE00000000FFFE
0000000007FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE
0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE
0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE
00FF800003FE03FFF00003FE0FFFF80003FE1E03FC0003FE3801FE0003FE6001FF0003FE
C000FF0003FFC000FF8003FF8000FF8003FF0000FF8003FF0000FF8003FF0000FF8003FE
0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE
0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE
0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE0000FF8003FE
0000FF8003FE0000FF8003FE0000FF8003FE0000FF80FFFFF83FFFFEFFFFF83FFFFEFFFF
F83FFFFEFFFFF83FFFFE2F3C7CBB36>104 D<00FE01FF0000FFFE1FFFF000FFFE7FFFFC
00FFFEFC07FE00FFFFF001FF0007FFC0007F8003FF00003FC003FE00003FE003FE00001F
F003FE00001FF803FE00000FF803FE00000FFC03FE00000FFC03FE000007FC03FE000007
FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007FE03FE000007
FE03FE000007FE03FE000007FE03FE000007FC03FE00000FFC03FE00000FFC03FE00000F
FC03FE00000FF803FE00001FF003FE00001FF003FF00003FE003FF80007FC003FFC000FF
8003FFE001FF0003FEFC07FE0003FE7FFFF80003FE1FFFE00003FE03FE000003FE000000
0003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE000000
0003FE0000000003FE0000000003FE0000000003FE0000000003FE0000000003FE000000
00FFFFF8000000FFFFF8000000FFFFF8000000FFFFF80000002F377DA536>112
D<01FC03F000FFFC0FFC00FFFC1FFF00FFFC3C3F80FFFC707F8007FCE0FFC003FCC0FFC0
03FD80FFC003FD80FFC003FF807F8003FF003F0003FF001E0003FF00000003FE00000003
FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE
00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00000003FE00
000003FE00000003FE00000003FE00000003FE00000003FE000000FFFFFC0000FFFFFC00
00FFFFFC0000FFFFFC000022267DA528>114 D<000F0000000F0000000F0000000F0000
000F0000001F0000001F0000001F0000001F0000003F0000003F0000007F0000007F0000
00FF000001FF000003FF000007FF00001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF0000
01FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF0000
01FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF000001FF0000
01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C01FF003C00FF0078
00FF8078007F80F0003FC1E0001FFFC0000FFF800001FE001E377EB626>116
D E /Ft 84 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<01800180018001800180C183F18F399C0F
F003C003C00FF0399CF18FC1830180018001800180018010147DA117>I<000600000006
000000060000000600000006000000060000000600000006000000060000000600000006
000000060000000600000006000000060000FFFFFFF0FFFFFFF000060000000600000006
000000060000000600000006000000060000000600000006000000060000000600000006
00000006000000060000000600001C207D9A23>I<70F8FCFC7404040408081010204006
0E7C840D>I<FFC0FFC00A027F8A0F>I<70F8F8F87005057C840D>I<0001000300030006
00060006000C000C000C00180018001800300030003000600060006000C000C000C00180
018001800300030003000600060006000C000C000C001800180018003000300030006000
60006000C000C000C000102D7DA117>I<03F0000E1C001C0E0018060038070070038070
0380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F0
03C0F003C0F003C0F003C07003807003807003807807803807001806001C0E000E1C0003
F000121F7E9D17>I<018003800F80F38003800380038003800380038003800380038003
800380038003800380038003800380038003800380038003800380038007C0FFFE0F1E7C
9D17>I<03F0000C1C00100E00200700400780800780F007C0F803C0F803C0F803C02007
C00007C0000780000780000F00000E00001C0000380000700000600000C0000180000300
000600400C00401800401000803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C0010
0E00200F00780F80780780780780380F80000F80000F00000F00000E00001C0000380003
F000003C00000E00000F000007800007800007C02007C0F807C0F807C0F807C0F0078040
0780400F00200E001C3C0003F000121F7E9D17>I<000600000600000E00000E00001E00
002E00002E00004E00008E00008E00010E00020E00020E00040E00080E00080E00100E00
200E00200E00400E00C00E00FFFFF0000E00000E00000E00000E00000E00000E00000E00
00FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE0001000001000001000001000
0010000010000011F000161C00180E001007001007800003800003800003C00003C00003
C07003C0F003C0F003C0E00380400380400700200600100E000C380003E000121F7E9D17
>I<007C000182000701000E03800C07801C0780380300380000780000700000700000F1
F000F21C00F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C070
03C07003803803803807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC0
7FFF807FFF80400100800200800200800400000800000800001000002000002000004000
00400000C00000C00001C000018000038000038000038000038000078000078000078000
078000078000078000078000030000121F7D9D17>I<03F0000C0C001006003003002001
806001806001806001807001807803003E03003F06001FC8000FF00003F80007FC000C7E
00103F00300F806003804001C0C001C0C000C0C000C0C000C0C000806001802001001002
000C0C0003F000121F7E9D17>I<03F0000E18001C0C00380600380700700700700380F0
0380F00380F003C0F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E13C003
E3C0000380000380000380000700300700780600780E00700C002018001070000FC00012
1F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F8
700000000000000000000070F0F8F878080808101010202040051D7C930D>I<7FFFFFE0
FFFFFFF00000000000000000000000000000000000000000000000000000000000000000
FFFFFFF07FFFFFE01C0C7D9023>61 D<0FC0307040384038E03CF03CF03C603C00380070
00E000C00180018001000300020002000200020002000200000000000000000000000700
0F800F800F8007000E207D9F15>63 D<000100000003800000038000000380000007C000
0007C0000007C0000009E0000009E0000009E0000010F0000010F0000010F00000207800
002078000020780000403C0000403C0000403C0000801E0000801E0000FFFE0001000F00
01000F0001000F00020007800200078002000780040003C00E0003C01F0007E0FFC03FFE
1F207F9F22>65 D<FFFFE0000F80380007801E0007801F0007800F0007800F8007800F80
07800F8007800F8007800F8007800F0007801F0007801E0007803C0007FFF00007803C00
07801E0007800F0007800F8007800780078007C0078007C0078007C0078007C0078007C0
0780078007800F8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC04000
7030C001C009C0038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C
00004078000040F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8
000000F8000000780000007C0000407C0000403C0000401C0000401E0000800E00008007
0001000380020001C0040000703800000FC0001A217D9F21>I<FFFFE0000F803C000780
1E000780070007800380078003C0078001E0078001E0078001F0078000F0078000F00780
00F8078000F8078000F8078000F8078000F8078000F8078000F8078000F8078000F80780
00F0078000F0078000F0078001E0078001E0078003C0078003800780070007800E000F80
3C00FFFFE0001D1F7E9E23>I<FFFFFF000F800F00078003000780030007800100078001
80078000800780008007800080078080800780800007808000078080000781800007FF80
000781800007808000078080000780800007808000078000200780002007800020078000
400780004007800040078000C0078000C0078001800F800F80FFFFFF801B1F7E9E1F>I<
FFFFFF000F800F0007800300078003000780010007800180078000800780008007800080
07800080078080000780800007808000078080000781800007FF80000781800007808000
078080000780800007808000078000000780000007800000078000000780000007800000
07800000078000000FC00000FFFE0000191F7E9E1E>I<000FE0200078186000E004E003
8002E0070001E00F0000E01E0000601E0000603C0000603C0000207C00002078000020F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F8007FFCF80003E078
0001E07C0001E03C0001E03C0001E01E0001E01E0001E00F0001E0070001E0038002E000
E0046000781820000FE0001E217D9F24>I<FFF8FFF80F800F8007800F0007800F000780
0F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000780
0F0007FFFF0007800F0007800F0007800F0007800F0007800F0007800F0007800F000780
0F0007800F0007800F0007800F0007800F0007800F0007800F000F800F80FFF8FFF81D1F
7E9E22>I<FFFC0FC0078007800780078007800780078007800780078007800780078007
8007800780078007800780078007800780078007800780078007800FC0FFFC0E1F7F9E10
>I<0FFFC0007C00003C00003C00003C00003C00003C00003C00003C00003C00003C0000
3C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0020
3C00F83C00F83C00F83C00F0380040780040700030E0000F800012207E9E17>I<FFFC0F
FC0FC003E007800180078001000780020007800400078008000780100007802000078040
0007808000078100000783000007878000078F80000793C0000791E00007A1E00007C0F0
000780F0000780780007803C0007803C0007801E0007801E0007800F0007800780078007
80078007C00FC007E0FFFC3FFC1E1F7E9E23>I<FFFE000FC00007800007800007800007
800007800007800007800007800007800007800007800007800007800007800007800007
800007800007800007800207800207800207800207800607800407800407800C07801C0F
807CFFFFFC171F7E9E1C>I<FF80001FF80F80001F800780001F0005C0002F0005C0002F
0005C0002F0004E0004F0004E0004F000470008F000470008F000470008F000438010F00
0438010F000438010F00041C020F00041C020F00041C020F00040E040F00040E040F0004
0E040F000407080F000407080F000407080F000403900F000403900F000401E00F000401
E00F000401E00F000E00C00F001F00C01F80FFE0C1FFF8251F7E9E2A>I<FF803FF807C0
07C007C0038005E0010005E0010004F001000478010004780100043C0100043C0100041E
0100040F0100040F010004078100040781000403C1000401E1000401E1000400F1000400
F1000400790004003D0004003D0004001F0004001F0004000F0004000700040007000E00
03001F000300FFE001001D1F7E9E22>I<001F800000F0F00001C0380007801E000F000F
000E0007001E0007803C0003C03C0003C07C0003E0780001E0780001E0F80001F0F80001
F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003
E07C0003E03C0003C03C0003C01E0007800E0007000F000F0007801E0001C0380000F0F0
00001F80001C217D9F23>I<FFFFE0000F80780007801C0007801E0007800F0007800F80
07800F8007800F8007800F8007800F8007800F8007800F0007801E0007801C0007807800
07FFE0000780000007800000078000000780000007800000078000000780000007800000
07800000078000000780000007800000078000000FC00000FFFC0000191F7E9E1F>I<FF
FF80000F80F0000780780007803C0007801E0007801E0007801F0007801F0007801F0007
801F0007801E0007801E0007803C00078078000780F00007FF80000781C0000780E00007
80F0000780700007807800078078000780780007807C0007807C0007807C0007807C0407
807E0407803E040FC01E08FFFC0F10000003E01E207E9E21>82 D<07E0800C1980100780
300380600180600180E00180E00080E00080E00080F00000F000007800007F00003FF000
1FFC000FFE0003FF00001F800007800003C00003C00001C08001C08001C08001C08001C0
C00180C00380E00300F00600CE0C0081F80012217D9F19>I<7FFFFFE0780F01E0600F00
60400F0020400F0020C00F0030800F0010800F0010800F0010800F0010000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F80
0007FFFE001C1F7E9E21>I<FFFC3FF80FC007C007800380078001000780010007800100
078001000780010007800100078001000780010007800100078001000780010007800100
078001000780010007800100078001000780010007800100078001000780010007800100
038002000380020001C0020001C0040000E008000070180000382000000FC0001D207E9E
22>I<FFF003FE1F8000F80F0000600F800060078000400780004003C0008003C0008003
C0008001E0010001E0010001F0010000F0020000F0020000F80600007804000078040000
3C0800003C0800003C0800001E1000001E1000001F3000000F2000000F20000007C00000
07C0000007C000000380000003800000038000000100001F207F9E22>I<FFF07FF81FF0
1F800FC007C00F00078003800F00078001000F0007C00100078007C00200078007C00200
078007C0020003C009E0040003C009E0040003C009E0040003E010F00C0001E010F00800
01E010F0080001F02078080000F02078100000F02078100000F0403C10000078403C2000
0078403C20000078C03E2000003C801E4000003C801E4000003C801E4000001F000F8000
001F000F8000001F000F8000001E00078000000E00070000000E00070000000C00030000
0004000200002C207F9E2F>I<7FF83FF80FE00FC007C0070003C0020001E0040001F00C
0000F0080000781000007C1000003C2000003E4000001E4000000F8000000F8000000780
000003C0000007E0000005E0000009F0000018F8000010780000207C0000603C0000401E
0000801F0001800F0001000780020007C0070003C01F8007E0FFE01FFE1F1F7F9E22>I<
FFF003FF1F8000F80F8000600780004007C0004003E0008001E0008001F0010000F00300
00F80200007C0400003C0400003E0800001E0800001F1000000FB0000007A0000007C000
0003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C0000003C000
0003C0000003C0000007C000007FFE00201F7F9E22>I<7FFFF87C00F87000F06001E040
01E0C003C0C003C0800780800F80800F00001E00001E00003C00003C0000780000F80000
F00001E00001E00003C00403C0040780040F80040F000C1E000C1E00083C00183C001878
0038F801F8FFFFF8161F7D9E1C>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>I<0804100820
10201040204020804080408040B85CFC7EFC7E7C3E381C0F0E7B9F17>I<FEFE06060606
060606060606060606060606060606060606060606060606060606060606060606060606
06FEFE072D7FA10D>I<1FE000303000781800781C00300E00000E00000E00000E0000FE
00078E001E0E00380E00780E00F00E10F00E10F00E10F01E10781E103867200F83C01414
7E9317>97 D<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E0000
0E00000E00000E3E000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E0078
0E00780E00780E00780E00700E00700E00E00F00E00D01C00CC300083E0015207F9F19>
I<03F80E0C1C1E381E380C70007000F000F000F000F000F000F00070007000380138011C
020E0C03F010147E9314>I<000380003F80000380000380000380000380000380000380
00038000038000038000038003E380061B801C0780380380380380700380700380F00380
F00380F00380F00380F00380F003807003807003803803803807801C07800E1B8003E3F8
15207E9F19>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF
80F00000F00000F000007000007000003800801800800C010007060001F80011147F9314
>I<007C00C6018F038F07060700070007000700070007000700FFF00700070007000700
070007000700070007000700070007000700070007000700070007007FF01020809F0E>
I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C
001E380033E0002000002000003000003000003FFE001FFF800FFFC03001E0600070C000
30C00030C00030C000306000603000C01C038003FC00141F7F9417>I<0E0000FE00000E
00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E000E43000E
81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E003E001E001C000000
000000000000000000000E007E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E00000000000
00000000000000007007F000F00070007000700070007000700070007000700070007000
700070007000700070007000700070007000706070F060F0C061803F000C28829E0E>I<
0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0000
0E0FF00E03C00E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C00
0E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE
618618000E81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00
E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E0
0E000E00E00E000E00E00E000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E
81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E
01C00E01C00E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E001C03803801C0
3801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C0
3801C01C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E00E00
F00E00700E00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01
C00EC3000E3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D
7F9319>I<03E0800619801C05803C0780380380780380700380F00380F00380F00380F0
0380F00380F003807003807803803803803807801C0B800E138003E38000038000038000
0380000380000380000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F
0C0E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00F147F9312
>I<1F9030704030C010C010C010E00078007F803FE00FF00070803880188018C018C018
E030D0608F800D147E9312>I<020002000200060006000E000E003E00FFF80E000E000E
000E000E000E000E000E000E000E000E000E080E080E080E080E080610031001E00D1C7F
9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC16147F9319>I<FF
83F81E01E01C00C00E00800E00800E008007010007010003820003820003820001C40001
C40001EC0000E80000E80000700000700000700000200015147F9318>I<FF9FE1FC3C07
80701C0300601C0380200E0380400E0380400E03C0400707C0800704C0800704E0800388
61000388710003C8730001D0320001D03A0000F03C0000E01C0000E01C00006018000040
08001E147F9321>I<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800
003800003C00007C00004E000087000107000303800201C00601E01E01E0FF07FE171480
9318>I<FF83F81E01E01C00C00E00800E00800E00800701000701000382000382000382
0001C40001C40001EC0000E80000E8000070000070000070000020000020000040000040
00004000F08000F08000F100006200003C0000151D7F9318>I<3FFF380E200E201C4038
4078407000E001E001C00380078007010E011E011C0338027006700EFFFE10147F9314>
I<FFFFFC1601808C17>I<FFFFFFFFFFF02C01808C2D>I E /Fu 45
122 df<70F8FCFC7404040404080810102040060F7C840E>44 D<FFE0FFE00B027F8B10>
I<70F8F8F87005057C840E>I<01F000071C000C06001803003803803803807001C07001
C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001
E0F001E0F001E0F001E0F001E07001C07001C07001C07803C03803803803801C07000C06
00071C0001F00013227EA018>48 D<008003800F80F38003800380038003800380038003
800380038003800380038003800380038003800380038003800380038003800380038003
800380038007C0FFFE0F217CA018>I<03F8000C1E001007002007804007C07807C07803
C07807C03807C0000780000780000700000F00000E0000380003F000001C00000F000007
800007800003C00003C00003E02003E07003E0F803E0F803E0F003C04003C04007802007
80100F000C1C0003F00013227EA018>51 D<000200000600000E00000E00001E00001E00
002E00004E00004E00008E00008E00010E00020E00020E00040E00040E00080E00100E00
100E00200E00200E00400E00800E00FFFFF8000E00000E00000E00000E00000E00000E00
000E00001F0001FFF015217FA018>I<1000801E07001FFF001FFE001FF80013E0001000
0010000010000010000010000010000010F800130E001407001803801003800001C00001
C00001E00001E00001E00001E07001E0F001E0F001E0E001C08001C04003C04003802007
001006000C1C0003F00013227EA018>I<007E0001C1000300800601C00E03C01C03C018
0180380000380000780000700000700000F0F800F30C00F40600F40300F80380F801C0F0
01C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801C03801C01803801C
03000C0600070C0001F00013227EA018>I<01F800060E000803001001802001802000C0
6000C06000C06000C07000C07801803E01003F02001FC4000FF80003F80003FC00067F00
083F80100F803007C06001C06000E0C000E0C00060C00060C00060C000606000406000C0
3000801803000E0E0003F00013227EA018>56 D<01F000060C000C060018070038038070
0380700380F001C0F001C0F001C0F001E0F001E0F001E0F001E0F001E07001E07003E038
03E01805E00C05E00619E003E1E00001C00001C00001C000038000038030030078070078
0600700C002018001030000FC00013227EA018>I<0001800000018000000180000003C0
000003C0000003C0000005E0000005E000000DF0000008F0000008F0000010F800001078
000010780000203C0000203C0000203C0000401E0000401E0000401E0000800F0000800F
0000FFFF000100078001000780030007C0020003C0020003C0040003E0040001E0040001
E00C0000F00C0000F03E0001F8FF800FFF20237EA225>65 D<0007E0100038183000E006
3001C00170038000F0070000F00E0000701E0000701C0000303C0000303C0000307C0000
107800001078000010F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F800000078000000780000107C0000103C0000103C0000101C0000201E0000200E0000
40070000400380008001C0010000E0020000381C000007E0001C247DA223>67
D<FFFFFFC00F8007C0078001C0078000C007800040078000400780006007800020078000
200780002007802020078020000780200007802000078060000780E00007FFE0000780E0
000780600007802000078020000780200007802008078000080780000807800010078000
1007800010078000300780003007800070078000E00F8003E0FFFFFFE01D227EA121>69
D<FFFFFFC00F8007C0078001C0078000C007800040078000400780006007800020078000
200780002007802020078020000780200007802000078060000780E00007FFE0000780E0
000780600007802000078020000780200007802000078000000780000007800000078000
0007800000078000000780000007800000078000000FC00000FFFE00001B227EA120>I<
FFFC0FC00780078007800780078007800780078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800FC0FFFC0E227EA1
12>73 D<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<0E00FE001E000E000E000E000E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E000E000E000E000E000E00FFE00B237FA20E>I<0E1FC07F00FE60E183801E807201C0
0F003C00E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E
003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E00
3800E00E003800E00E003800E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00
700F00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00
700E00700E00700E00700E0070FFE7FF18157F941B>I<01FC000707000C01801800C038
00E0700070700070F00078F00078F00078F00078F00078F00078F000787000707800F038
00E01C01C00E038007070001FC0015157F9418>I<0E1F00FE61C00E80600F00700E0038
0E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E0038
0F00700E80E00E41C00E3F000E00000E00000E00000E00000E00000E00000E00000E0000
0E0000FFE000171F7F941B>I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E
000E000E000E000E000E000E000E000F00FFF010157F9413>114
D<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C800C800CC00CC0
08E018D0308FC00E157E9413>I<02000200020002000600060006000E001E003E00FFF8
0E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E040E040708
030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F006017003827800
FC7F18157F941B>I<FFC1FE1E00780E00300E00200E0020070040070040038080038080
03808001C10001C10000E20000E20000E200007400007400003800003800003800001000
17157F941A>I<FF8FF8FF1E01E03C1C01C0180E01C0180E01E0100E01E0100702602007
0270200702702003843040038438400384384001C8188001C81C8001C81C8000F00D0000
F00F0000F00F0000600600006006000060060020157F9423>I<FFC1FE1E00780E00300E
00200E002007004007004003808003808003808001C10001C10000E20000E20000E20000
7400007400003800003800003800001000001000002000002000002000004000F04000F0
8000F180004300003C0000171F7F941A>121 D E /Fv 20 118 df<FFFF80FFFF80FFFF
8011037F9016>45 D<FFFFFFE00000FFFFFFFC000007E0007F000003E0000F800003E000
03C00003E00001E00003E00000F00003E00000780003E000003C0003E000001E0003E000
001E0003E000000F0003E000000F0003E000000F8003E00000078003E0000007C003E000
0007C003E0000003C003E0000003C003E0000003E003E0000003E003E0000003E003E000
0003E003E0000003E003E0000003E003E0000003E003E0000003E003E0000003E003E000
0003E003E0000003E003E0000003C003E0000003C003E0000007C003E0000007C003E000
00078003E00000078003E000000F8003E000000F0003E000001F0003E000001E0003E000
003C0003E00000780003E00000F80003E00001F00003E00003E00003E0000F800007E000
3F0000FFFFFFFC0000FFFFFFE000002B317CB033>68 D<FFFF80FFFF8007F00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003
E00003E00003E00003E00003E00003E00007F000FFFF80FFFF8011317DB017>73
D<FFF00000007FF8FFF00000007FF807F00000007F0002F8000000BE0002F8000000BE00
02F8000000BE00027C0000013E00027C0000013E00023E0000023E00023E0000023E0002
3E0000023E00021F0000043E00021F0000043E00021F0000043E00020F8000083E00020F
8000083E00020F8000083E000207C000103E000207C000103E000207C000103E000203E0
00203E000203E000203E000201F000403E000201F000403E000201F000403E000200F800
803E000200F800803E000200F800803E0002007C01003E0002007C01003E0002007C0100
3E0002003E02003E0002003E02003E0002003E02003E0002001F04003E0002001F04003E
0002000F88003E0002000F88003E0002000F88003E00020007D0003E00020007D0003E00
020007D0003E00020003E0003E00020003E0003E00020003E0003E00070001C0003E000F
8001C0007F00FFF801C00FFFF8FFF800800FFFF835317CB03D>77
D<FFFFFFC000FFFFFFF80007E0007E0003E0001F0003E000078003E00003C003E00001E0
03E00001F003E00001F003E00000F003E00000F803E00000F803E00000F803E00000F803
E00000F803E00000F803E00000F003E00001F003E00001E003E00003E003E00003C003E0
00078003E0001F0003E0007C0003FFFFF00003E000000003E000000003E000000003E000
000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000007F0000000FFFF800000FFFF80000025317CB02D>
80 D<007F802001FFE02007C078600F001C601E0006E03C0003E0380001E0780000E070
0000E070000060F0000060F0000060F0000020F0000020F0000020F8000020F80000007C
0000007E0000003F0000003FC000001FF800000FFF800007FFF80003FFFC0000FFFF0000
0FFF800000FFC000001FE0000007E0000003F0000001F0000000F0000000F8000000F880
00007880000078800000788000007880000078C0000078C0000070E00000F0E00000E0F0
0000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D337CB125>83
D<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E001E
0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E
003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E
047C005E043E008F080F0307F003FC03E01E1F7D9E21>97 D<003F8000E0600380180700
040F00041E001E1C003E3C003E7C003E7C0008780000F80000F80000F80000F80000F800
00F80000F80000F80000F800007800007C00007C00003C00011E00011E00020F00020700
0403801800E060003F80181F7D9E1D>99 D<000001E000003FE000003FE0000003E00000
01E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00000
01E0000001E0000001E0000001E0000001E0000001E0001F81E000F061E001C019E00780
05E00F0003E00E0003E01E0001E03C0001E03C0001E07C0001E0780001E0F80001E0F800
01E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0780001E07800
01E03C0001E03C0001E01C0001E01E0003E00E0005E0070009E0038011F000E061FF003F
81FF20327DB125>I<003F800000E0E0000380380007003C000E001E001E001E001C000F
003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F8000000F80000
00F8000000F8000000F8000000F8000000780000007C0000003C0000003C0000801E0000
800E0001000F0002000780020001C00C0000F03000001FC000191F7E9E1D>I<0007E000
1C1000383800707C00E07C01E07C01C03803C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007E0007FFF007F
FF0016327FB114>I<000000F0007F030801C1C41C0380E81C070070080F0078001E003C
001E003C003E003E003E003E003E003E003E003E003E003E003E003E001E003C001E003C
000F007800070070000780E00009C1C000087F0000180000001800000018000000180000
00180000001C0000000E0000000FFFF80007FFFF0003FFFF800E000FC0180001E0300000
F070000070E0000038E0000038E0000038E0000038E00000387000007070000070380000
E01C0001C00700070001C01C00003FE0001E2F7E9F21>I<07000F801F801F800F800700
000000000000000000000000000000000000000000000780FF80FF800F80078007800780
078007800780078007800780078007800780078007800780078007800780078007800780
0780078007800FC0FFF8FFF80D307EAF12>105 D<0780FE001FC000FF83078060F000FF
8C03C18078000F9001E2003C0007A001E4003C0007A000F4001E0007C000F8001E0007C0
00F8001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F000
1E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E
000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>109
D<0780FE0000FF83078000FF8C03C0000F9001E00007A001E00007A000F00007C000F000
07C000F000078000F000078000F000078000F000078000F000078000F000078000F00007
8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780
00F000078000F000078000F000078000F000078000F000078000F000078000F0000FC001
F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC00000F0780001C01C00070007000F
0007801E0003C01C0001C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F8
0000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C
0001E03C0001E01E0003C01E0003C00F00078007800F0001C01C0000F07800001FC0001D
1F7E9E21>I<0783E0FF8C18FF907C0F907C07A07C07C03807C00007C00007C000078000
078000078000078000078000078000078000078000078000078000078000078000078000
0780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114
D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00
003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000
1CE0001CE00018F00038F00030CC0060C301C080FE00161F7E9E1A>I<00400000400000
400000400000400000C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FF
FFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C01003C01003C01003C01003C01003C01003C01003
C01001C02001E02000E0400078C0001F00142C7FAB19>I<078000F000FF801FF000FF80
1FF0000F8001F000078000F000078000F000078000F000078000F000078000F000078000
F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F000078001F000
078001F000078001F000038002F00003C004F00001C008F800007030FF80001FC0FF8021
1F7E9E25>I E /Fw 5 85 df<00000000600000000000E00000000000E00000000001E0
0000000003E00000000003E00000000007E00000000007F0000000000DF0000000000DF0
0000000019F00000000039F00000000031F00000000061F00000000061F000000000C1F0
00000000C1F00000000181F00000000381F00000000301F00000000601F00000000601F0
0000000C01F80000000C00F80000001800F80000003800F80000003000F80000006000F8
0000006000F8000000C000F8000000C000F8000001FFFFF8000001FFFFF80000030000F8
0000060000F80000060000F800000C0000F800000C0000FC00001800007C00001800007C
00003000007C00007000007C00006000007C0000C000007C0000C000007C0001C000007C
0003C000007C000FE00000FE00FFF8001FFFE0FFF8001FFFE02B327CB134>65
D<000FFFFFFC0000000FFFFFFF800000007E000FE00000007C0003F00000007C0000F800
00007C00007C0000007C00007C000000F800003E000000F800001E000000F800001F0000
00F800001F000001F000001F000001F000000F800001F000000F800001F000000F800003
E000000F800003E000000F800003E000000F800003E000001F800007C000001F800007C0
00001F800007C000001F800007C000001F80000F8000001F00000F8000003F00000F8000
003F00000F8000003F00001F0000007E00001F0000007E00001F0000007E00001F000000
7C00003E000000FC00003E000000F800003E000001F800003E000001F000007C000003E0
00007C000003E000007C000007C000007C00000F800000F800000F000000F800001E0000
00F800003C000000F8000078000001F00001F0000001F00003E0000001F0000F80000003
F0007F000000FFFFFFFC000000FFFFFFC000000031317BB035>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 911 a Fw(D)25 b(R)g(A)g(F)g(T)225 1002 y
Fv(Do)r(cumen)n(t)20 b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n
(terface)621 1196 y Fu(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)
832 1323 y(Ma)o(y)h(16,)g(1996)77 1381 y(This)h(w)o(ork)f(w)o(as)h
(supp)q(orted)g(in)f(part)h(b)o(y)e(ARP)l(A)h(and)h(NSF)e(under)h(gran)
o(t)h(ASC-9310330,)i(the)192 1439 y(National)d(Science)f(F)l(oundation)
i(Science)e(and)i(T)l(ec)o(hnology)f(Cen)o(ter)f(Co)q(op)q(erativ)o(e)
76 1497 y(Agreemen)o(t)e(No.)22 b(CCR-8809615,)d(and)e(b)o(y)e(the)h
(Commission)e(of)j(the)f(Europ)q(ean)i(Comm)o(unit)n(y)654
1555 y(through)f(Esprit)f(pro)s(ject)g(P6643.)p eop
%%Page: 1 2
1 1 bop 166 49 a 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(10)75 568 y Fr(I/O)75
798 y Ft(This)20 b(is)f(a)g(prop)q(osed)h(starting)e(p)q(oin)o(t)i(for)
e(the)h Fq(MPI-2)g Ft(I/O)g(c)o(hapter.)31 b(It)20 b(is)f(directly)i
(deriv)o(ed)f(from)75 855 y(MPI-IO)f(V)l(ersion)h(0.5)d([11])h(with)h
(minor)f(editorial)i(c)o(hanges.)30 b(A)19 b(historical)h(p)q(ersp)q
(ectiv)o(e)g(\(e.g.)29 b(the)75 911 y(argumen)o(ts)20
b(that)g(led)i(to)e(v)m(arious)h(design)g(decisions\))h(can)f(b)q(e)h
(found)f(at)f(the)g(MPI-IO)i(W)l(eb)f(page)75 968 y Fp
(http://parallel.nas.nasa.g)o(ov/MPI-)o(IO/)p Ft(.)166
1024 y(Direct)f(all)h(commen)o(ts)f(regarding)g(the)g
Fq(MPI-2)f Ft(I/O)i(Chapter)f(to)f(the)h Fp(mpi-io@mcs.anl.gov)75
1081 y Ft(mailing)d(list.)j(See)c Fp(http://www.mcs.anl.gov/Proj)o
(ects/mp)o(i/mpi2/m)o(pi2.htm)o(l)c Ft(for)j(details.)166
1137 y(Ma)s(jor)e(issues)j(to)f(b)q(e)h(discussed)h(regarding)e(this)g
(prop)q(osal:)75 1212 y Fo(La)o(y)o(erabilit)o(y)23 b
Ft(Can/should)14 b(w)o(e)f(pro)o(vide)h(enough)f Fq(MPI-2)g
Ft(facilities)i(to)e(allo)o(w)g(I/O)h(to)f(b)q(e)h(la)o(y)o(ered)f(on)
189 1268 y(top)h(of)h Fq(MPI-2)p Ft(?)75 1355 y Fo(P)o(ortable)j
(O\013sets)k Ft(Ho)o(w)9 b(do)i(w)o(e)f(pro)o(vide)h(p)q(ortable)g
(o\013sets)e(with)i(more)f(than)g(32)g(bits?)20 b(P)o(ossibilities:)189
1411 y(long)15 b(long/in)o(teger*8,)g(opaque)g(o\013sets,)f(in)o(t)h
([2]/in)o(teger)f(\(2\),)g(double/double)k(precision.)75
1497 y Fo(MPI)p 184 1497 16 2 v 18 w(File)g(vs.)k(MPI)p
497 1497 V 18 w(Comm)g Ft(Should)16 b(w)o(e)e(scrap)h(the)g(MPI-IO)g(v)
o(er)g(0.5)e(idea)j(of)e(\014le)i(handles)g(and)189 1554
y(simply)g(use)g Fq(MPI)e Ft(comm)o(unicators?)75 1640
y Fo(MPI)p 184 1640 V 18 w(File)p 287 1640 V 20 w(Con)o(trol)22
b Ft(The)h(\014le)g(con)o(trol)f(in)o(terface)g(cannot)g(supp)q(ort)g
(F)o(OR)l(TRAN)h(and)g(m)o(ust)e(b)q(e)189 1696 y(revised.)75
1783 y Fo(End-of-File)k Ft(The)14 b(curren)o(t)g(de\014nition)i(for)d
(up)q(dating)i(\014le)g(p)q(oin)o(ters)g(when)f(end-of-\014le)i(is)e
(reac)o(hed)g(is)189 1839 y(con)o(tradictory)l(.)k(The)12
b(seman)o(tics)g(de\014ned)h(in)g(the)f(last)f(paragraph)g(of)h
(section)g(10.1.3)e(con)o(tradict)189 1896 y(the)15 b(language)g(in)h
(the)g(in)o(tro)q(ductions)g(of)f(sections)g(10.4)f(and)i(10.5.)75
1982 y Fo(Shared)h(\014le)h(p)q(oin)o(ters)23 b Ft(There)15
b(is)h(some)e(con)o(tro)o(v)o(ersy)g(as)g(to)g(whether)h(w)o(e)g
(should)h(k)o(eep)f(shared)g(\014le)189 2038 y(p)q(oin)o(ters,)g(and)g
(if)h(w)o(e)f(do,)g(the)g(exact)g(seman)o(tics)g(of)g(shared)g(\014le)h
(p)q(oin)o(ter)g(op)q(erations.)75 2125 y Fo(Filet)o(yp)q(e)i
(constructors)23 b Ft(Since)15 b(\014let)o(yp)q(e)h(constructors)d(are)
h(simply)h(new)g(datat)o(yp)q(e)e(constructors,)189 2181
y(should)19 b(w)o(e)e(mo)o(v)o(e)g(this)i(section)f(to)f(the)h(\\Datat)
o(yp)q(e)f(Impro)o(v)o(emen)o(ts")g(subsection)i(in)g(Miscel-)189
2237 y(lan)o(y?)75 2324 y Fo(File)f(In)o(terop)q(erabilit)o(y)24
b Ft(Ho)o(w)16 b(m)o(uc)o(h)g(\014le)i(in)o(terop)q(erabilit)o(y)g
(should)g(b)q(e)f(sp)q(eci\014ed.)26 b(Minimally)l(,)19
b(all)189 2380 y(applications)d(on)f(a)g(single)i(mac)o(hine,)e(using)h
(a)f(single)h Fq(MPI)f Ft(implemen)o(tation)h(should)g(ha)o(v)o(e)f
(the)189 2437 y(same)h(canonical)i(view)f(of)g(\014les.)25
b(What)16 b(ab)q(out)g(b)q(et)o(w)o(een)h Fq(MPI)g Ft(implemen)o
(tations)g(or)g(b)q(et)o(w)o(een)189 2493 y(mac)o(hines)f(\(e.g.)j
(heterogeneous)c(t)o(yp)q(es,)g(v)m(arying)h(ph)o(ysical)g(\014le)g
(structures\).)75 2579 y Fo(Simpler)i(In)o(terface)k
Ft(Sev)o(eral)15 b(users)f(ha)o(v)o(e)g(complained)i(of)e(the)h(steep)f
(learning)i(curv)o(e)e(required)i(for)189 2636 y(this)g(in)o(terface.)
24 b(A)17 b(prop)q(osed)f(simpli\014cation)j(of)d Fq(MPI)p
1149 2636 14 2 v 16 w(OPEN)h Ft(\(see)f(section)h(10.7\))e(w)o(ould)i
(ease)189 2692 y(migration)e(from)f(the)i(standard)e(UNIX)i(in)o
(terface)g(to)e(the)h Fq(MPI)g Ft(I/O)h(in)o(terface.)964
2828 y(1)p eop
%%Page: 2 4
2 3 bop 75 -100 a Ft(2)1365 b Fn(CHAPTER)15 b(10.)35
b(I/O)75 49 y Fm(10.1)60 b(Intro)r(duction)75 151 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
207 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 264 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 320 y(and,)g(in)g(the)g
(scien)o(ti\014c)h(w)o(orld,)f(p)q(ortabilit)o(y)g(and)g(p)q
(erformance)g(are)f(inseparable|a)j(program)c(is)i(not)75
377 y(considered)i(truly)e(p)q(ortable)h(unless)g(it)g(not)e(only)i
(compiles,)g(but)g(also)f(runs)g(e\016cien)o(tly)l(.)166
433 y(The)e(signi\014can)o(t)g(optimizations)g(required)h(for)d
(e\016ciency)j(\(e.g.)k(grouping)13 b([7],)f(collectiv)o(e)i(bu\013er-)
75 489 y(ing)k([3,)f(8)o(,)h(9)o(,)g(10)o(],)f(and)h(disk-directed)i
(I/O)e([5)o(]\))f(can)h(only)g(b)q(e)g(implemen)o(ted)i(as)d(part)g(of)
g(a)g(parallel)75 546 y(I/O)d(en)o(vironmen)o(t)g(if)g(it)f(supp)q
(orts)h(a)f(high-lev)o(el)j(in)o(terface)d(to)g(describ)q(e)i(the)f
(partitioning)g(of)f(\014le)i(data)75 602 y(among)c(pro)q(cesses)g(and)
h(a)f(collectiv)o(e)i(in)o(terface)e(describing)i(complete)f(transfers)
f(of)f(global)i(data)f(struc-)75 659 y(tures)i(b)q(et)o(w)o(een)h(pro)q
(cess)g(memories)g(and)f(\014les.)21 b(In)14 b(addition,)g(further)g
(e\016ciencies)i(can)d(b)q(e)h(gained)h(via)75 715 y(supp)q(ort)d(for)g
(async)o(hronous)f(I/O,)i(strided)f(requests,)h(and)f(con)o(trol)g(o)o
(v)o(er)f(ph)o(ysical)i(\014le)g(la)o(y)o(out)f(on)g(stor-)75
772 y(age)i(devices)h(\(disks\).)20 b(The)14 b(I/O)g(en)o(vironmen)o(t)
h(describ)q(ed)h(in)e(this)h(section)f(pro)o(vides)h(these)f
(facilities.)166 828 y(Emphasis)h(has)f(b)q(een)i(put)e(in)i(remaining)
f(as)f Fq(MPI)p Ft(-friendly)i(as)e(p)q(ossible.)22 b(When)14
b(op)q(ening)i(a)e(\014le,)75 885 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 941 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 998 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
1054 y(comm)o(unicator)h(m)o(ust)h(participate)g(in)h(the)f(collectiv)o
(e)h(access\).)28 b Fq(MPI)17 b Ft(deriv)o(ed)i(datat)o(yp)q(es)e(are)g
(used)75 1110 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 1167 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 Fq(MPI)f Ft(ob)s(jects)75
1223 y(whic)o(h)e(can)f(b)q(e)h(of)f(an)o(y)g Fq(MPI)f
Ft(basic)i(or)f(deriv)o(ed)h(datat)o(yp)q(es.)75 1345
y Fl(10.1.1)49 b(Data)17 b(P)o(a)o(rtitioning)75 1431
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
1487 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
1544 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 1600 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 1657 y(siv)o(eness.)166 1713 y Fq(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 1770 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)75 1826 y(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 Fq(\014let)o(yp)q
(e)p Ft(,)j(whic)o(h)75 1883 y(describ)q(es)c(the)f(la)o(y)o(out)f(in)i
(the)e(\014le,)j(and)d(the)h Fq(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
1939 y(bu\013er.)g(In)12 b(addition,)h(b)q(oth)e Fq(\014let)o(yp)q(e)i
Ft(and)f Fq(buft)o(yp)q(e)h Ft(are)e(deriv)o(ed)i(from)e(a)g(third)h
Fq(MPI)f Ft(datat)o(yp)q(e,)g(referred)75 1995 y(to)k(as)g(the)h
Fk(elementary)g Ft(datat)o(yp)q(e)f Fq(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 2052 y(consistency)j(b)q(et)o(w)o(een)e(the)h
(t)o(yp)q(e)g(signatures)f(of)h Fq(\014let)o(yp)q(e)h
Ft(and)e Fq(buft)o(yp)q(e)p Ft(.)26 b(O\013sets)16 b(for)g(accessing)i
(data)75 2108 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 Fq(et)o(yp)q(e)j Ft(items.)166
2165 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 2221 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 2278 y Fq(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
2334 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 2391 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
2447 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(10.1\).)166
2504 y(Data)f(whic)o(h)i(resides)h(in)f(holes)g(can)f(b)q(e)i(accessed)
f(b)o(y)f(other)g(pro)q(cesses)h(whic)o(h)g(use)g(complemen-)75
2560 y(tary)d(\014let)o(yp)q(es)i(\(see)f(Figure)h(10.2\).)j(Th)o(us,)c
(\014le)h(data)e(can)h(b)q(e)h(distributed)h(among)d(parallel)j(pro)q
(cesses)75 2616 y(in)i(disjoin)o(t)f(c)o(h)o(unks.)26
b(Filet)o(yp)q(e)18 b(constructors)e(help)j(the)e(user)g(create)f
(complemen)o(tary)i(\014let)o(yp)q(es)g(for)75 2673 y(common)f
(distribution)i(patterns,)d(suc)o(h)i(as)f(broadcast/reduce,)g
(scatter/gather,)f(and)h(HPF)g(distri-)1967 46 y Fj(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 Fn(10.1.)34 b(INTR)o(ODUCTION)1278
b Ft(3)375 289 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 387 a(Figure)15 b(10.1:)k(Tiling)e(a)e(\014le)h(using)
g(a)f(\014let)o(yp)q(e)75 525 y(butions)h(\(see)f(Section)h(10.6\).)375
859 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 957 a(Figure)f(10.2:)k(P)o(artitioning)c(a)g(\014le)i
(among)d(parallel)j(pro)q(cesses)166 1061 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 1117 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 1174
y(pro)q(cesses)f(\(see)g(Figure)g(10.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
1230 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 1287 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
Fq(\014let)o(yp)q(e)p Ft(s)h(and)f Fq(buft)o(yp)q(e)p
Ft(s)i(allo)o(ws)e(the)75 1343 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 1400 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.)375 2437 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 2535 a(Figure)h(10.3:)i(T)l(ransp)q(osing)e(and)f
(partitioning)h(a)f(2-D)g(matrix)166 2641 y(Note)d(that)h(using)g
Fq(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
2698 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)-32 46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)75 49 y Ft(b)q(e)17 b(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 106 y(case)e(of)g(full)i(o)o(v)o
(erlap)d(is)i(the)f(broadcast/reduce)h(pattern.)166 162
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 219 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 275 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)75 332 y(from)f(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
388 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 444 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
501 y(b)q(eginning)20 b(\(see)d(Figure)h(10.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 557 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 614 y(t)o(yp)q(es)15 b(of)g(the)g(\014le)h
(data.)375 970 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 1068 a(Figure)g(10.4:)j(Displacemen)o(ts)75
1233 y Fl(10.1.2)49 b(Data)17 b(Access)e(F)o(unctions)75
1319 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 1375 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 1432 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
1488 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 1545 y(and)e(shared,)g(are)g(pro)o(vided.)p
190 1597 1570 2 v 189 1653 2 57 v 215 1636 a Fo(p)q(ositioning)p
491 1653 V 500 1653 V 61 w(sync)o(hronism)p 850 1653
V 859 1653 V 356 w(co)q(ordination)p 1759 1653 V 859
1655 901 2 v 189 1710 2 57 v 491 1710 V 500 1710 V 850
1710 V 859 1710 V 884 1693 a Fk(indep)n(endent)p 1276
1710 V 181 w(c)n(ol)r(le)n(ctive)p 1759 1710 V 190 1711
1570 2 v 190 1720 V 189 1776 2 57 v 215 1759 a(explicit)p
491 1776 V 500 1776 V 169 w(blo)n(cking)p 850 1776 V
859 1776 V 202 w Ft(MPI)p 976 1759 14 2 v 16 w(Read)p
1276 1776 2 57 v 212 w(MPI)p 1394 1759 14 2 v 17 w(Read)p
1512 1759 V 17 w(all)p 1759 1776 2 57 v 189 1833 V 215
1816 a Fk(o\013sets)p 491 1833 V 500 1833 V 185 w Ft(\(sync)o
(hronous\))p 850 1833 V 859 1833 V 80 w(MPI)p 976 1816
14 2 v 16 w(W)l(rite)p 1276 1833 2 57 v 202 w(MPI)p 1394
1816 14 2 v 17 w(W)l(rite)p 1522 1816 V 16 w(all)p 1759
1833 2 57 v 500 1834 1261 2 v 189 1889 2 57 v 491 1889
V 500 1889 V 525 1872 a Fk(nonblo)n(cking)p 850 1889
V 859 1889 V 127 w Ft(MPI)p 976 1872 14 2 v 16 w(Iread)p
1276 1889 2 57 v 211 w(MPI)p 1394 1872 14 2 v 17 w(Iread)p
1513 1872 V 16 w(all)p 1759 1889 2 57 v 189 1945 V 491
1945 V 500 1945 V 525 1928 a(\(async)o(hronous\))p 850
1945 V 859 1945 V 57 w(MPI)p 976 1928 14 2 v 16 w(Iwrite)p
1276 1945 2 57 v 196 w(MPI)p 1394 1928 14 2 v 17 w(Iwrite)p
1528 1928 V 16 w(all)p 1759 1945 2 57 v 190 1947 1570
2 v 189 2004 2 57 v 215 1987 a Fk(individual)p 491 2004
V 500 2004 V 116 w(blo)n(cking)p 850 2004 V 859 2004
V 202 w Ft(MPI)p 976 1987 14 2 v 16 w(Read)p 1093 1987
V 17 w(next)p 1276 2004 2 57 v 108 w(MPI)p 1394 1987
14 2 v 17 w(Read)p 1512 1987 V 17 w(next)p 1616 1987
V 16 w(all)p 1759 2004 2 57 v 189 2060 V 215 2043 a Fk(\014le)g(p)n
(ointers)p 491 2060 V 500 2060 V 78 w Ft(\(sync)o(hronous\))p
850 2060 V 859 2060 V 80 w(MPI)p 976 2043 14 2 v 16 w(W)l(rite)p
1103 2043 V 17 w(next)p 1276 2060 2 57 v 98 w(MPI)p 1394
2043 14 2 v 17 w(W)l(rite)p 1522 2043 V 16 w(next)p 1625
2043 V 17 w(all)p 1759 2060 2 57 v 500 2062 1261 2 v
189 2116 2 57 v 491 2116 V 500 2116 V 525 2100 a Fk(nonblo)n(cking)p
850 2116 V 859 2116 V 127 w Ft(MPI)p 976 2100 14 2 v
16 w(Iread)p 1094 2100 V 17 w(next)p 1276 2116 2 57 v
107 w(MPI)p 1394 2100 14 2 v 17 w(Iread)p 1513 2100 V
16 w(next)p 1616 2100 V 17 w(all)p 1759 2116 2 57 v 189
2173 V 491 2173 V 500 2173 V 525 2156 a(\(async)o(hronous\))p
850 2173 V 859 2173 V 57 w(MPI)p 976 2156 14 2 v 16 w(Iwrite)p
1109 2156 V 17 w(next)p 1276 2173 2 57 v 92 w(MPI)p 1394
2156 14 2 v 17 w(Iwrite)p 1528 2156 V 16 w(next)p 1631
2156 V 17 w(all)p 1759 2173 2 57 v 190 2175 1570 2 v
189 2231 2 57 v 215 2214 a Fk(shar)n(e)n(d)p 491 2231
V 500 2231 V 186 w(blo)n(cking)p 850 2231 V 859 2231
V 202 w Ft(MPI)p 976 2214 14 2 v 16 w(Read)p 1093 2214
V 17 w(shared)p 1276 2231 2 57 v 66 w(MPI)p 1394 2214
14 2 v 17 w(Read)p 1512 2214 V 17 w(shared)p 1658 2214
V 16 w(all)p 1759 2231 2 57 v 189 2287 V 215 2271 a Fk(\014le)g(p)n
(ointer)p 491 2287 V 500 2287 V 97 w Ft(\(sync)o(hronous\))p
850 2287 V 859 2287 V 80 w(MPI)p 976 2271 14 2 v 16 w(W)l(rite)p
1103 2271 V 17 w(shared)p 1276 2287 2 57 v 56 w(MPI)p
1394 2271 14 2 v 17 w(W)l(rite)p 1522 2271 V 16 w(shared)p
1667 2271 V 17 w(all)p 1759 2287 2 57 v 500 2289 1261
2 v 189 2344 2 57 v 491 2344 V 500 2344 V 525 2327 a
Fk(nonblo)n(cking)p 850 2344 V 859 2344 V 127 w Ft(MPI)p
976 2327 14 2 v 16 w(Iread)p 1094 2327 V 17 w(shared)p
1276 2344 2 57 v 65 w(MPI)p 1394 2327 14 2 v 17 w(Iread)p
1513 2327 V 16 w(shared)p 1658 2327 V 17 w(all)p 1759
2344 2 57 v 189 2400 V 491 2400 V 500 2400 V 525 2383
a(\(async)o(hronous\))p 850 2400 V 859 2400 V 57 w(MPI)p
976 2383 14 2 v 16 w(Iwrite)p 1109 2383 V 17 w(shared)p
1276 2400 2 57 v 50 w(MPI)p 1394 2383 14 2 v 17 w(Iwrite)p
1528 2383 V 16 w(shared)p 1673 2383 V 17 w(all)p 1759
2400 2 57 v 190 2402 1570 2 v 166 2478 a(UNIX)h(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 2534
y(p)q(oin)o(ters.)i(The)c Fq(MPI)e Ft(equiv)m(alen)o(ts)j(are)e
Fq(MPI)p 852 2534 14 2 v 16 w(READ)p 987 2534 V 17 w(NEXT)h
Ft(and)f Fq(MPI)p 1310 2534 V 16 w(WRITE)p 1469 2534
V 16 w(NEXT)p Ft(.)166 2591 y(Op)q(erations)f(with)g(explicit)h
(o\013sets)d(are)h(describ)q(ed)i(in)f(Section)h(10.3.)j(Op)q(erations)
c(with)f(individ-)75 2647 y(ual)i(\014le)h(p)q(oin)o(ters)g(are)e
(describ)q(ed)j(in)f(Section)g(10.4.)i(And)e(op)q(erations)f(with)g
(shared)g(\014le)h(p)q(oin)o(ters)f(are)75 2704 y(describ)q(ed)i(in)f
(Section)g(10.5.)1967 46 y Fj(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 Fn(10.1.)34 b(INTR)o(ODUCTION)1278
b Ft(5)75 49 y Fl(10.1.3)49 b(P)o(ositioning)75 135 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 192 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 248 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 304 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 361 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 417 y(exhibit)19
b(lo)q(calit)o(y)f(of)f(reference)h(within)h(a)e(\014le)h([6)o(].)26
b(Instead,)18 b(they)f(tend)h(to)f(mo)o(v)o(e)f(b)q(et)o(w)o(een)i
(distinct)75 474 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 530 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 587 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 643
y(when)g(the)f(read)g(or)g(write)g(o)q(ccurs.)166 700
y Fq(MPI)10 b Ft(pro)o(vides)i(separate)e(routines)i(for)e(p)q
(ositioning)j(with)e(explicit)j(o\013sets,)c(individual)k(\014le)e(p)q
(oin)o(t-)75 756 y(ers,)18 b(and)g(shared)g(\014le)g(p)q(oin)o(ters.)28
b(The)18 b(explicit)i(o\013set)d(op)q(erations)h(require)g(the)g(user)g
(to)f(sp)q(ecify)i(an)75 813 y(o\013set,)e(and)h(act)f(as)h(atomic)f
(seek-and-read)i(or)e(seek-and-write)i(op)q(erations.)28
b(The)18 b(individual)j(and)75 869 y(shared)d(\014le)h(p)q(oin)o(ter)g
(op)q(erations)f(use)g(distinct)i(system)d(main)o(tained)i(o\013sets)e
(for)h(p)q(ositioning.)30 b(The)75 925 y(di\013eren)o(t)21
b(p)q(ositioning)i(metho)q(ds)f(are)f(orthogonal;)i(they)e(ma)o(y)f(b)q
(e)i(mixed)g(within)h(the)e(same)g(pro-)75 982 y(gram,)15
b(and)i(they)f(do)g(not)g(a\013ect)f(eac)o(h)h(other.)23
b(In)17 b(other)e(w)o(ords,)h(an)g(individual)j(\014le)e(p)q(oin)o
(ter's)g(v)m(alue)75 1038 y(will)h(b)q(e)e(unc)o(hanged)h(b)o(y)f
(executing)h(explicit)h(o\013set)d(op)q(erations)h(or)g(shared)g
(\014le)h(p)q(oin)o(ter)f(op)q(erations.)75 1095 y(The)g(data)g(access)
g(routines)g(whic)o(h)h(accept)g(explicit)h(o\013sets)d(ha)o(v)o(e)h
(no)g(extensions)g(\(e.g.)22 b Fq(MPI)p 1741 1095 14
2 v 16 w(XXX)p Ft(\),)75 1151 y(the)16 b(individual)k(\014le)d(p)q(oin)
o(ter)f(routines)h(ha)o(v)o(e)p 884 1151 V 32 w Fq(NEXT)g
Ft(app)q(ended)h(\(e.g.)j Fq(MPI)p 1435 1151 V 16 w(XXX)p
1541 1151 V 18 w(NEXT)p Ft(\),)16 b(and)g(the)75 1208
y(shared)i(\014le)i(p)q(oin)o(ter)f(routines)f(ha)o(v)o(e)p
747 1208 V 35 w Fq(SHARED)h Ft(app)q(ended)h(\(e.g.)29
b Fq(MPI)p 1366 1208 V 15 w(XXX)p 1471 1208 V 18 w(SHARED)p
Ft(\).)18 b(In)h(order)75 1264 y(to)d(allo)o(w)g(the)g(implicit)j
(o\013sets)c(to)h(b)q(e)h(set,)f(t)o(w)o(o)f(seek)h(routines)h(are)f
(also)g(pro)o(vided)h(\()p Fq(MPI)p 1662 1264 V 15 w(SEEK)g
Ft(and)75 1321 y Fq(MPI)p 160 1321 V 16 w(SEEK)p 287
1321 V 16 w(SHARED)p Ft(\).)166 1377 y(In)c(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 1434 y(with)k(the)f
Fq(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.)75
1554 y Fq(Explicit)g(O\013sets)75 1639 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 Fq(MPI)f Ft(datat)o(yp)q(e)h(and)g(an)g(o\013set.)25
b Fq(MPI)75 1696 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 1752 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 Fq(et)o(yp)q(e)p
Ft(\))75 1809 y(items)d(relativ)o(e)h(to)e(the)i Fq(\014let)o(yp)q(e)p
Ft(.)21 b(Holes)14 b(in)h(the)f Fq(\014let)o(yp)q(e)i
Ft(are)e(ignored)g(when)h(calculating)h(the)e(p)q(osition)75
1865 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(10.2)e(denotes)i(the)g(7th)f
Fq(et)o(yp)q(e)i Ft(in)f(the)g(\014le\).)75 1922 y(The)j
Fq(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 Fq(\014let)o(yp)q(e)p
Ft(,)i Fq(buft)o(yp)q(e)g Ft(and)75 1978 y Fq(o\013set)h
Ft(argumen)o(ts.)31 b(Therefore,)20 b(the)g Fq(\014let)o(yp)q(e)h
Ft(and)e Fq(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 2035 y(from)14 b Fq(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 Fq(et)o(yp)q(e)h Ft(signature.)75
2155 y Fq(File)f(P)o(ointers)75 2240 y Ft(When)h(a)f(\014le)h(is)g(op)q
(ened,)h(the)e(system)g(creates)g(a)h(set)f(of)g(\014le)h(p)q(oin)o
(ters)g(to)f(k)o(eep)h(trac)o(k)e(of)i(the)f(curren)o(t)75
2297 y(\014le)j(p)q(osition.)25 b(One)18 b(is)f(a)g(global)g(\014le)h
(p)q(oin)o(ter,)f Fk(shar)n(e)n(d)f Ft(b)o(y)h(all)h(the)f(pro)q
(cesses)g(in)g(the)g(comm)o(unicator)75 2353 y(group.)29
b(The)19 b(others)f(are)g(individual)k(\014le)e(p)q(oin)o(ters)f(lo)q
(cal)g(to)f(eac)o(h)h(pro)q(cess)f(in)i(the)e(comm)o(unicator)75
2410 y(group,)c(and)i(can)f(b)q(e)h(up)q(dated)g Fk(indep)n(endently.)i
Ft(A)d(shared)h(\014le)g(p)q(oin)o(ter)f(only)h(mak)o(es)f(sense)g(if)h
(all)g(the)75 2466 y(pro)q(cesses)j(can)f(access)h(the)f(same)g
(dataset.)29 b(This)19 b(means)f(that)g(all)h(the)g(pro)q(cesses)g
(should)g(use)g(the)75 2523 y(same)c Fq(\014let)o(yp)q(e)i
Ft(when)e(op)q(ening)i(the)e(\014le.)166 2579 y(The)f(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 2636 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)-32 46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)75 49 y Ft(next)15 b(data)e(item)i(after)f(the)h(last)f(one)h
(that)f(w)o(as)f(accessed.)21 b(This)15 b(principle)i(applies)f(to)e(b)
q(oth)h(t)o(yp)q(es)f(of)75 106 y(\014le)i(p)q(oin)o(ters)g
(\(individual)i(and)d(shared\),)g(and)g(to)g(all)h(t)o(yp)q(es)f(of)g
(I/O)h(op)q(erations.)166 162 y(It)f(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
277 y Fi(new)p 274 277 14 2 v 17 w(f)5 b(il)q(e)p 369
277 V 16 w(position)13 b Ft(=)g Fi(ol)q(d)p 670 277 V
15 w(position)e Ft(+)906 247 y Fi(siz)r(e)p Ft(\()p Fi(buf)5
b(ty)r(pe)p Ft(\))10 b Fh(\002)g Fi(buf)5 b(count)p 906
267 514 2 v 1052 309 a(siz)r(e)p Ft(\()p Fi(ety)r(pe)p
Ft(\))75 393 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
449 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
506 y(the)d Fq(MPI)g Ft(datat)o(yp)q(e)g Fi(dataty)r(pe)p
Ft(.)166 562 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
619 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 675 y(exactly)h(ho)o(w)f(m)o(uc)o(h)h(data)f(w)o(as)g
(actually)h(accessed)h(\(whic)o(h)f(can)g(b)q(e)g(di\013eren)o(t)g
(from)f(the)h(amoun)o(t)f(re-)75 732 y(quested\),)i(and)g(the)g(\014le)
h(p)q(oin)o(ter)g(is)f(up)q(dated)h(b)o(y)f(that)f(amoun)o(t.)24
b(F)l(or)16 b(non)o(blo)q(c)o(king)j(accesses)e(made)75
788 y(using)e(an)g(individual)j(or)c(the)g(shared)h(\014le)h(p)q(oin)o
(ter,)e(the)h(up)q(date)g(cannot)g(b)q(e)g(dela)o(y)o(ed)g(un)o(til)h
(the)f(op)q(er-)75 845 y(ation)g(completes,)h(b)q(ecause)g(additional)h
(accesses)e(can)g(b)q(e)h(initiated)h(b)q(efore)f(that)e(time)i(b)o(y)f
(the)g(same)75 901 y(pro)q(cess)i(\(for)e(b)q(oth)i(t)o(yp)q(es)g(of)f
(\014le)h(p)q(oin)o(ters\))g(or)f(b)o(y)h(other)f(pro)q(cesses)h(\(for)
e(the)i(shared)g(\014le)g(p)q(oin)o(ter\).)75 958 y(Therefore,)c(the)h
(\014le)g(p)q(oin)o(ter)g(m)o(ust)f(b)q(e)h(up)q(dated)g(at)f(the)h
(outset,)f(b)o(y)g(the)g(amoun)o(t)g(of)g(data)g(requested.)166
1014 y(Similarly)l(,)k(when)e(blo)q(c)o(king)i(accesses)e(are)g(made)g
(using)g(the)h(shared)f(\014le)h(p)q(oin)o(ter,)f(up)q(dating)h(the)75
1070 y(\014le)k(p)q(oin)o(ter)f(at)e(the)i(completion)h(of)e(eac)o(h)g
(access)h(w)o(ould)g(ha)o(v)o(e)f(the)h(same)f(e\013ect)g(as)g
(serializing)j(all)75 1127 y(blo)q(c)o(king)e(accesses)f(to)e(the)i
(\014le.)28 b(In)18 b(order)f(to)g(prev)o(en)o(t)g(this,)h(the)g
(shared)f(\014le)i(p)q(oin)o(ter)f(for)f(blo)q(c)o(king)75
1183 y(accesses)g(is)g(up)q(dated)g(at)f(the)h(b)q(eginning)i(of)d(eac)
o(h)g(access)h(b)o(y)g(the)f(amoun)o(t)g(of)g(data)g(requested.)25
b(F)l(or)75 1240 y(blo)q(c)o(king)13 b(accesses)f(using)h(an)f
(individual)j(\014le)d(p)q(oin)o(ter,)h(up)q(dating)g(the)f(\014le)g(p)
q(oin)o(ter)h(at)e(the)h(completion)75 1296 y(of)j(eac)o(h)h(access)f
(w)o(ould)h(b)q(e)g(p)q(erfectly)h(v)m(alid.)22 b(Ho)o(w)o(ev)o(er,)14
b(in)i(order)f(to)g(main)o(tain)h(the)g(same)f(seman)o(tics)75
1353 y(for)f(all)i(t)o(yp)q(es)f(of)f(accesses)h(using)h(\014le)f(p)q
(oin)o(ters,)g(the)g(up)q(date)h(of)e(the)h(\014le)h(p)q(oin)o(ter)f
(in)h(this)f(case)g(is)g(also)75 1409 y(made)g(at)g(the)g(b)q(eginning)
i(of)e(the)g(access)h(b)o(y)f(the)g(amoun)o(t)g(of)f(data)h(requested.)
166 1466 y(Although)c(consisten)o(t,)g(and)g(seman)o(tically)h
(cleaner,)g(up)q(dating)g(the)f(\014le)g(p)q(oin)o(ter)g(at)f(the)h
(initiation)75 1522 y(of)20 b(all)g(I/O)h(op)q(erations)f(di\013ers)g
(from)f(accepted)i(UNIX)f(practice,)i(and)e(ma)o(y)f(lead)i(to)e(unexp)
q(ected)75 1579 y(results.)h(Consider)c(the)f(follo)o(wing)h(scenario:)
266 1685 y Fp(MPI_Read_Next\(fh,)21 b(buff,)j(buftype,)e(bufcount,)h
(&status\);)266 1741 y(MPI_Write_Next\(fh,)e(buff,)i(buftype,)g
(bufcount,)g(&status\);)166 1848 y Ft(If)f(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 1904 y(b)q(e)g(incremen)o(ted)h(b)o
(y)e(the)h(amoun)o(t)e(of)h(data)g Fk(r)n(e)n(queste)n(d)f
Ft(rather)h(than)h(the)f(amoun)o(t)g(of)g(data)f(read.)75
1960 y(Therefore,)c(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 2017 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 2073
y(without)g(c)o(hec)o(king)i(for)d(the)i(end)g(of)e(the)i(\014le.)21
b(Although)16 b(common)f(in)h(a)f(single)i(pro)q(cess)e(w)o(orkstation)
75 2130 y(en)o(vironmen)o(t,)g(w)o(e)g(b)q(eliev)o(e)i(this)f(is)g
(uncommon)f(in)h(a)f(parallel)i(en)o(vironmen)o(t.)75
2252 y Fl(10.1.4)49 b(Synchronism)75 2337 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
2394 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 2450 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 2507 y(are)g(named)g
Fq(MPI)p 382 2507 14 2 v 16 w(IXXX)p Ft(,)g(where)h(the)f
Fq(I)g Ft(stands)g(for)f(immediate.)166 2563 y(A)j Fk(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 Fk(nonblo)n(cking)e Ft(I/O)75
2620 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 Fk(r)n(e)n(quest)75 2676 y(c)n(omplete)18
b Ft(call)h(\()p Fq(MPI)p 453 2676 V 15 w(W)l(AIT)p Ft(,)f
Fq(MPI)p 694 2676 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)1967
46 y Fj(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 Fn(10.1.)34 b(INTR)o(ODUCTION)1278
b Ft(7)75 49 y(I/O)17 b(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 106 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 162 y(pro)q(ceed)h(concurren)o(tly)g
(with)f(computation.)166 219 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 275 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 332 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
388 y(actually)16 b(written)f(to)g(storage)e(is)j(b)o(y)f(using)h(the)f
Fq(MPI)p 1010 388 14 2 v 16 w(FILE)p 1117 388 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
444 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
501 y(a)o(v)m(ailable)i(in)f(the)f(user's)g(bu\013er.)75
623 y Fl(10.1.5)49 b(Co)q(o)o(rdination)75 708 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
765 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
821 y(for)e(this)i(purp)q(ose.)22 b Fq(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 878 y(routines.)39 b(Ev)o(ery)21
b(indep)q(enden)o(t)i(data)e(access)h(routine)f Fq(MPI)p
1184 878 V 16 w(XXX)h Ft(has)g(a)f(collectiv)o(e)i(coun)o(terpart)75
934 y Fq(MPI)p 160 934 V 16 w(XXX)p 266 934 V 17 w(ALL)p
Ft(,)17 b(where)p 527 934 V 35 w Fq(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
991 y(op)q(ened)e(the)g(\014le)g(m)o(ust)e(participate.)166
1047 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 1104 y(imply)13 b(that)e(all)h(pro)q(cesses)g(b)q(elonging)i
(to)d(the)g(comm)o(unicator)h(asso)q(ciated)f(with)h(the)g(op)q(ened)h
(\014le)g(m)o(ust)75 1160 y(participate.)20 b(Ho)o(w)o(ev)o(er,)12
b(no)h(sync)o(hronization)i(pattern)d(b)q(et)o(w)o(een)i(those)f(pro)q
(cesses)g(is)h(enforced)g(\(with)75 1217 y(the)h(exception)i(of)d
(collectiv)o(e)j(data)e(accesses)g(using)h(a)f(shared)g(\014le)i(p)q
(oin)o(ter|see)f(Section)g(10.5.2\).)166 1273 y(An)h
Fk(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
1329 y(pro)q(cesses)21 b(within)i(a)e(comm)o(unicator)f(group.)38
b(A)21 b Fk(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 1386 y(executed)15 b(b)o(y)e Fk(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
1442 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 1499 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 1555 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 1612 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 1668
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
1725 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 1781 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 1838 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
1894 y(coun)o(terparts.)75 2016 y Fl(10.1.6)49 b(Consistency)16
b(Semantics)75 2102 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 2158 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 2214 y Fq(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 2271 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 2327 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 2384 y(sistency)l(.)28
b(This)19 b(default)f(mo)q(de)g(is)g(referred)g(to)f(as)g
Fg(MPI)p 1066 2384 13 2 v 14 w(RECKLESS)g Ft(mo)q(de.)28
b(A)o(tomic)18 b(access)f(can)h(b)q(e)75 2440 y(guaran)o(teed)h(for)f
(o)o(v)o(erlapping)i(accesses)f(b)o(y)g(enabling)i Fg(MPI)p
1140 2440 V 14 w(CA)o(UTIOUS)c Ft(mo)q(de)i(for)f(the)h(\014le)i(via)e
(the)75 2497 y Fq(MPI)p 160 2497 14 2 v 16 w(FILE)p 267
2497 V 15 w(CONTROL)e Ft(routine.)166 2553 y(File)g(consistency)g
(seman)o(tics)f(outside)g(of)g(a)f(single)j Fq(MPI)d
Ft(application)j(are)d(implemen)o(tation)i(de-)75 2610
y(p)q(enden)o(t.)i(No)10 b(\014le)h(consistency)g(seman)o(tics)g(are)f
(implied)i(b)o(y)e(either)h Fg(MPI)p 1322 2610 13 2 v
14 w(RECKLESS)f Ft(or)f Fg(MPI)p 1672 2610 V 15 w(CA)o(UTIOUS)75
2666 y Ft(b)q(et)o(w)o(een)17 b(m)o(ultiple)h Fq(MPI)e
Ft(applications,)i(or)e(outside)h(of)g(the)f Fq(MPI)g
Ft(en)o(vironmen)o(t.)24 b(In)18 b(other)e(w)o(ords,)f(if)-32
46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)75 49 y Ft(t)o(w)o(o)18 b(di\013eren)o(t)h Fq(MPI)f
Ft(applications)j(op)q(en)f(the)f(same)g(\014le,)h(the)f(b)q(eha)o
(vior)h(and)f(atomicit)o(y)g(of)g(the)g(\014le)75 106
y(accesses)k(are)f(unde\014ned.)43 b(The)23 b Fg(MPI)p
762 106 13 2 v 14 w(CA)o(UTIOUS)d Ft(mo)q(de)j(enforces)f(read/write)g
(atomicit)o(y)h(in)g(the)75 162 y Fg(MPI)p 152 162 V
14 w(COMM)p 296 162 V 15 w(W)o(ORLD)15 b Ft(comm)o(unicator)g(group)g
(only)l(.)75 284 y Fl(10.1.7)49 b(End)17 b(of)f(File)75
370 y Ft(Unlik)o(e)k(UNIX)e(\014les,)i(the)e(end)h(of)e(\014le)i(is)g
(not)f(absolute)g(and)g(iden)o(tical)i(for)e(all)h(pro)q(cesses)f
(accessing)75 426 y(the)d(\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 483 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
539 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 596 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 652 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 708 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 765 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.)75 887 y Fl(10.1.8)49 b(File)17
b(La)o(y)o(out)75 972 y Ft(The)k(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 1029 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 1085 y(This)g(w)o(as)f(a)o(v)o(oided)
g(b)q(ecause)i(it)f(is)g(exp)q(ected)g(that)f(the)h(mapping)g(of)f
(\014les)h(to)f(disks)h(will)h(b)q(e)f(system)75 1142
y(sp)q(eci\014c,)c(and)d(an)o(y)g(sp)q(eci\014c)i(con)o(trol)e(o)o(v)o
(er)f(\014le)j(la)o(y)o(out)d(w)o(ould)i(therefore)f(restrict)g
(program)f(p)q(ortabilit)o(y)l(.)75 1198 y(Ho)o(w)o(ev)o(er,)i(there)h
(are)g(still)i(cases)e(where)g(some)g(information)g(will)i(b)q(e)f
(necessary)f(in)h(order)f(to)g(optimize)75 1255 y(disk)i(la)o(y)o(out.)
j(This)d(information)f(is)g(pro)o(vided)h(as)e Fk(hints)h
Ft(sp)q(eci\014ed)i(when)e(a)f(\014le)i(is)g(created.)k(Hin)o(ts)14
b(are)75 1311 y(advisory)f(only)l(,)h(and)g(do)f(not)g(c)o(hange)h(the)
f(seman)o(tics)h(of)f(an)o(y)g(routines.)19 b(Instead,)14
b(they)f(allo)o(w)h(sp)q(eci\014c)75 1368 y(implemen)o(tations)i(to)f
(increase)h(I/O)g(p)q(erformance.)75 1511 y Fm(10.2)60
b(File)19 b(Manipulation)75 1614 y Fl(10.2.1)49 b(Op)q(ening)18
b(a)e(File)h(\(Collective\))75 1794 y Fq(MPI)p 160 1794
14 2 v 16 w(OPEN\(comm,)c(\014lename,)i(amo)q(de,)g(disp,)h(et)o(yp)q
(e,)g(\014let)o(yp)q(e,)g(hints,)g(fh\))117 1871 y Ff(IN)155
b Fq(comm)470 b Ff([SAME])14 b(Comm)n(unicator)d(that)j(op)q(ens)h(the)
f(\014le)g(\(handle\))117 1947 y(IN)155 b Fq(\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 2022 y(IN)155 b Fq(amo)q(de)461 b Ff([SAME])14
b(File)f(access)j(mo)q(de)d(\(in)o(teger\))117 2097 y(IN)155
b Fq(disp)513 b Ff(Absolute)15 b(displacemen)o(t)e(\(nonnegativ)o(e)g
(o\013set\))117 2172 y(IN)155 b Fq(et)o(yp)q(e)487 b
Ff([SAME])14 b(Elemen)o(tary)f(datat)o(yp)q(e)h(\(handle\))117
2247 y(IN)155 b Fq(\014let)o(yp)q(e)452 b Ff(Filet)o(yp)q(e)14
b(\(handle\))117 2322 y(IN)155 b Fq(hints)497 b Ff(Hin)o(ts)14
b(to)g(the)g(\014le)g(system)g(\(handle\))117 2397 y(OUT)108
b Fq(fh)550 b Ff(Returned)15 b(\014le)f(handle)g(\(handle\))75
2522 y Fp(int)23 b(MPI)p 245 2522 15 2 v 17 w(Open\(MPI)p
454 2522 V 16 w(Comm)h(comm,)f(char)g(*filename,)g(MPI)p
1187 2522 V 16 w(Mode)h(amode,)f(MPI)p 1562 2522 V 17
w(Offset)g(disp,)393 2578 y(MPI)p 468 2578 V 17 w(Datatype)g(etype,)g
(MPI)p 939 2578 V 17 w(Datatype)f(filetype,)h(MPI)p 1481
2578 V 17 w(Hints)g(hints,)393 2635 y(MPI)p 468 2635
V 17 w(File)g(*fh\))1967 46 y Fj(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 Fn(10.2.)34 b(FILE)15 b(MANIPULA)l(TION)1161
b Ft(9)75 49 y Fp(MPI)p 150 49 15 2 v 17 w(OPEN\(COMM,)22
b(FILENAME,)h(AMODE,)g(DISP,)g(ETYPE,)g(FILETYPE,)g(HINTS,)g(FH,)g
(IERROR\))170 106 y(CHARACTER)g(FILENAME\(*\))170 162
y(INTEGER)g(COMM,)h(AMODE,)f(ETYPE,)g(FILETYPE)170 219
y(INTEGER)g(HINTS,)g(FH,)h(IERROR)170 275 y(INTEGER*8)f(DISP)166
362 y Fq(MPI)p 251 362 14 2 v 16 w(OPEN)c Ft(op)q(ens)h(the)e(\014le)i
(iden)o(ti\014ed)h(b)o(y)e(the)f(\014le)i(name)f Fq(\014lename)g
Ft(on)f(all)i(pro)q(cesses)f(in)h(the)75 418 y Fq(comm)13
b Ft(comm)o(unicator)h(group.)19 b Fq(MPI)p 732 418 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 474 y(nicator)j(group)g(m)o(ust)g(call)i
Fq(MPI)p 648 474 V 15 w(OPEN)p Ft(,)f(with)g(iden)o(tical)h(v)m(alues)g
(for)d Fq(comm)p Ft(,)g Fq(\014lename)p Ft(,)i Fq(amo)q(de)p
Ft(,)f(and)75 531 y Fq(et)o(yp)q(e)p Ft(.)j(\(V)l(alues)12
b(for)f Fq(disp)p Ft(,)i Fq(\014let)o(yp)q(e)p Ft(,)g(and)f
Fq(hints)h Ft(ma)o(y)d(v)m(ary)l(.\))19 b(A)11 b(pro)q(cess)h(can)f(op)
q(en)h(a)g(\014le)g(indep)q(enden)o(tly)75 587 y(of)k(other)h(pro)q
(cesses)g(b)o(y)f(using)i(the)f Fg(MPI)p 789 587 13 2
v 14 w(COMM)p 933 587 V 15 w(SELF)f Ft(comm)o(unicator.)24
b(The)17 b(\014le)h(handle)g(returned,)75 644 y Fq(fh)p
Ft(,)d(can)g(b)q(e)h(subsequen)o(tly)h(used)f(to)e(access)h(the)h
(\014le)g(un)o(til)g(the)g(\014le)g(is)g(closed)g(using)g
Fq(MPI)p 1643 644 14 2 v 15 w(CLOSE)p Ft(.)166 700 y(The)f(follo)o
(wing)h(access)g(mo)q(des,)f(sp)q(eci\014ed)i(via)e Fq(amo)q(de)p
Ft(,)g(are)g(supp)q(orted:)143 790 y Fh(\017)23 b Fg(MPI)p
266 790 13 2 v 14 w(RDONL)m(Y)15 b Ft(-)g(reading)h(only)l(,)143
883 y Fh(\017)23 b Fg(MPI)p 266 883 V 14 w(RD)o(WR)15
b Ft(-)g(reading)h(and)f(writing,)143 975 y Fh(\017)23
b Fg(MPI)p 266 975 V 14 w(WRONL)m(Y)15 b Ft(-)g(writing)h(only)l(,)143
1068 y Fh(\017)23 b Fg(MPI)p 266 1068 V 14 w(CREA)m(TE)13
b Ft(-)j(creating)f(\014le,)143 1160 y Fh(\017)23 b Fg(MPI)p
266 1160 V 14 w(DELETE)p 435 1160 V 15 w(ON)p 510 1160
V 15 w(CLOSE)14 b Ft(-)i(deleting)g(on)g(close.)75 1250
y(These)c(can)g(b)q(e)g(com)o(bined)h(in)f(C)g(b)o(y)f(using)i(the)f
(bit)o(wise)g(OR)h(op)q(erator,)e(and)h(in)g(F)o(OR)l(TRAN)h(b)o(y)e
(adding)75 1307 y(them.)189 1408 y Fk(A)n(dvic)n(e)18
b(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
1465 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 Fk(End)189 1521 y(of)16 b(advic)n(e)g(to)h(implementors.)p
Ft(\))189 1623 y Fk(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 1680 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
Fq(MPI)p Ft(.)f(F)l(or)g(example,)189 1736 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 Fk(End)c(of)g(advic)n(e)g(to)189 1793
y(users.)p Ft(\))189 1895 y Fk(A)n(dvic)n(e)j(to)h(users.)57
b Ft(Note)18 b(that)g(the)g(UNIX)h(app)q(end)g(mo)q(de)f(is)h(not)f
(supp)q(orted.)29 b(This)19 b(mo)q(de)189 1951 y(can)f(b)q(e)h(em)o
(ulated)f(b)o(y)g(requesting)h(the)f(curren)o(t)g(\014le)h(size)g
(\(see)f(Section)h(10.2.3\))d(and)i(seeking)189 2007
y(to)f(the)h(end)h(of)f(\014le)h(b)q(efore)f(eac)o(h)h(write)f(op)q
(eration.)29 b Fe(Discussion)o(:)22 b Ff(Actually)m(,)15
b(the)i(seman)o(tics)g(of)189 2147 y(UNIX)f(app)q(end)h(mo)q(de)e(are)i
(at)f(the)h(\014lesystem)f(lev)o(el,)g(and)g(accoun)o(t)g(for)g(all)f
(applications)g(running)h(on)189 2203 y(the)c(system)f(\(not)g(just)h
(a)f(single)g(application\).)16 b(UNIX)c(app)q(end)g(mo)q(de)e(cannot)i
(b)q(e)g(fully)e(em)o(ulated)g(using)189 2259 y(the)k(ab)q(o)o(v)o(e.)k
(Ho)o(w)13 b(imp)q(ortan)o(t)g(is)g(a)h(true)h(UNIX)f(app)q(end)g(mo)q
(de?)19 b Ft(\()p Fk(End)d(of)g(advic)n(e)g(to)h(users.)p
Ft(\))166 2444 y(The)i Fq(disp)h Ft(displacemen)o(t)h(argumen)o(t)d(sp)
q(eci\014es)i(the)f(p)q(osition)h(\(absolute)f(o\013set)f(in)i(b)o
(ytes)f(from)75 2501 y(the)d(b)q(eginning)j(of)d(the)g(\014le\),)h
(where)g(the)f(\014le)h(is)g(to)f(b)q(e)h(op)q(ened.)24
b(The)17 b(constan)o(t)e Fg(MPI)p 1586 2501 V 15 w(OFFSET)p
1756 2501 V 13 w(ZERO)75 2557 y Ft(is)h(de\014ned)g(to)f(b)q(e)h
(o\013set)e(zero.)189 2647 y Fk(A)n(dvic)n(e)d(to)j(users.)37
b Fq(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 2704
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 Fk(End)12 b(of)g(advic)n(e)h(to)g
(users.)p Ft(\))-32 46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)166 49 y Ft(The)18 b Fq(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 Fq(\014let)o(yp)q(e)p Ft(,)75 106
y(and)h(also)f(the)h Fq(buft)o(yp)q(e)h Ft(used)f(in)h(read/write)e(op)
q(erations.)30 b(O\013sets)18 b(in)o(to)h(the)g(\014le)g(are)f
(measured)h(in)75 162 y(units)d(of)f Fq(et)o(yp)q(e)p
Ft(.)166 219 y(The)20 b Fq(\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 275 y(Conceptually)l(,)15 b(the)f(\014le)h
(starting)e(from)g Fq(disp)i Ft(is)f(tiled)h(b)o(y)f(rep)q(eated)g
(copies)h(of)e Fq(\014let)o(yp)q(e)p Ft(,)i(un)o(til)g(the)f(end.)75
332 y(If)k Fq(\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 388 y(Ho)o(w)o(ev)o(er,)d(the)h
Fq(disp)p Ft(,)h Fq(et)o(yp)q(e)h Ft(and)e Fq(\014let)o(yp)q(e)h
Ft(argumen)o(ts)e(can)i(b)q(e)f(c)o(hanged)h(later)f(to)f(access)h(a)g
(di\013eren)o(t)75 444 y(part)e(of)f(the)i(\014le.)166
501 y(The)c Fq(hints)h Ft(argumen)o(t)e(is)i(used)f(to)f(pro)o(vide)i
(information)f(regarding)g(\014le)h(access)f(patterns)f(and)h(\014le)75
557 y(system)j(sp)q(eci\014cs)j(to)d(direct)i(optimization)g(\(see)f
(section)g(10.2.4\).)k(The)c(constan)o(t)f Fg(MPI)p 1623
557 13 2 v 14 w(HINTS)p 1758 557 V 16 w(NULL)75 614 y
Ft(refers)g(to)g(the)g(n)o(ull)h(hin)o(t,)g(and)f(can)h(b)q(e)f(used)h
(when)g(no)f(hin)o(ts)h(need)g(to)e(b)q(e)i(sp)q(eci\014ed.)166
670 y Fq(Filename)i Ft(can)h(b)q(e)h(pre\014xed)g(with)f("mpi-impl:/")i
(to)d(iden)o(tify)i(the)f(implemen)o(tation)i(that)d(the)75
727 y(op)q(en)e(call)h(w)o(ould)f(lik)o(e)h(to)e(use)h(if)g(m)o
(ultiple)i(implemen)o(tations)f(co-exist.)k(Examples)c(of)e(implemen)o
(ta-)75 783 y(tions)g(are:)143 869 y Fh(\017)23 b Fq(ufs:/)15
b Ft(-)g(UNIX)h(\014le)g(system,)143 960 y Fh(\017)23
b Fq(mpirun:/)14 b Ft(-)h(serv)o(er)g(comm)o(unicating)h(to)f(clien)o
(t)h(using)g(mpi,)143 1051 y Fh(\017)23 b Fq(so)q(ck)o(et:/)15
b Ft(-)h(serv)o(er)e(comm)o(unicating)i(to)f(clien)o(t)h(using)g(so)q
(c)o(k)o(et,)143 1142 y Fh(\017)23 b Fq(piofs:/)15 b
Ft(-)g(IBM)g(AIX)h(P)o(arallel)g(I/O)g(File)g(System)f([1,)f(2].)166
1228 y(Files)e(are)f(op)q(ened)h(b)o(y)f(default)h(using)g
Fq(MPI)p 901 1228 14 2 v 16 w(RECKLESS)g Ft(\014le)g(consistency)g
(seman)o(tics)f(\(see)g(section)75 1284 y(10.1.6\).)17
b(The)d(more)e(stringen)o(t)i Fg(MPI)p 711 1284 13 2
v 14 w(CA)o(UTIOUS)d Ft(consistency)j(seman)o(tics,)f(required)i(for)d
(atomicit)o(y)h(of)75 1341 y(o)o(v)o(erlapping)j(accesses,)f(can)g(b)q
(e)h(set)f(using)h Fq(MPI)p 924 1341 14 2 v 16 w(FILE)p
1031 1341 V 15 w(CONTROL)p Ft(.)75 1461 y Fl(10.2.2)49
b(Closing)18 b(a)f(\014le)f(\(Collective\))75 1641 y
Fq(MPI)p 160 1641 V 16 w(CLOSE\(fh\))117 1718 y Ff(IN)155
b Fq(fh)550 b Ff([SAME])14 b(V)m(alid)e(\014le)i(handle)g(\(handle\))75
1843 y Fp(int)23 b(MPI)p 245 1843 15 2 v 17 w(Close\(MPI)p
478 1843 V 16 w(File)g(fh\))75 1929 y(MPI)p 150 1929
V 17 w(CLOSE\(FH,)f(IERROR\))170 1986 y(INTEGER)h(FH,)h(IERROR)166
2072 y Fq(MPI)p 251 2072 14 2 v 16 w(CLOSE)d Ft(closes)g(the)f(\014le)i
(asso)q(ciated)e(with)h Fq(fh)p Ft(.)36 b(After)20 b(closing,)i(the)f
(con)o(ten)o(t)e(of)h(the)h(\014le)75 2129 y(handle)16
b Fq(fh)f Ft(is)h(destro)o(y)o(ed.)j(F)l(uture)c(use)g(of)f
Fq(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)75 2185 y(mo)q(de)22 b Fg(MPI)p
281 2185 13 2 v 14 w(DELETE)p 450 2185 V 15 w(ON)p 525
2185 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
2242 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 2298 y(these)15 b(pro)q(cesses)h(are)f(implemen)o(tation)h
(dep)q(enden)o(t.)189 2395 y Fk(A)n(dvic)n(e)e(to)h(implementors.)40
b Ft(If)14 b(the)g(\014le)h(is)g(to)e(b)q(e)i(deleted)g(and)g(is)f(op)q
(ened)h(b)o(y)f(other)g(pro)q(cesses,)189 2452 y(\014le)f(data)f(ma)o
(y)g(still)i(b)q(e)g(accessible)g(b)o(y)f(these)g(pro)q(cesses)g(un)o
(til)g(they)g(close)h(the)e(\014le)i(or)e(un)o(til)i(they)189
2508 y(exit.)20 b(The)14 b(delete)h(op)q(eration)f(should)h(b)q(e)g
(e\013ectiv)o(e)f(only)h(on)f(the)g(last)g(close)h(of)e(that)h(\014le)h
(within)189 2564 y(this)e(application.)21 b Fe(Discussion:)15
b Ff(This)d(implemen)o(tors)e(note)j(seems)f(to)g(con)o(tradict)h(the)g
(last)f(sen)o(tence)189 2704 y(of)h(the)h(paragraph)g(ab)q(o)o(v)o(e.)
19 b Ft(\()p Fk(End)d(of)g(advic)n(e)h(to)f(implementors.)p
Ft(\))1967 46 y Fj(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 Fn(10.2.)29 b(FILE)15 b(MANIPULA)l(TION)1144
b Ft(11)75 49 y Fl(10.2.3)49 b(File)17 b(Control)g(\(Indep)q
(endent/Collective\))75 211 y Fe(Discussion:)166 261
y Ff(It)e(is)g(not)g(p)q(ossible)g(to)g(supp)q(ort)h(F)o(OR)m(TRAN)e
(with)g(the)i(curren)o(t)g(\014le)f(con)o(trol)g(in)o(terface.)22
b(The)16 b(follo)o(wing)75 311 y(alternativ)o(es)e(ha)o(v)o(e)g(b)q
(een)h(suggested:)134 398 y(1.)22 b(Mak)o(e)13 b(MPI)p
383 398 13 2 v 16 w(Fcn)o(tl)h(w)o(ork)f(with)h(an)g(opaque)f(ob)r
(ject)i(\(a)f(la)f(MPI)p 1207 398 V 15 w(Hin)o(ts\),)h(and)f(pro)o
(vide)h(access)i(functions)189 448 y(for)d(eac)o(h)i(elemen)o(t.)134
522 y(2.)22 b(P)o(ass)14 b(all)f(thirteen)i(items)e(as)h(parameters,)f
(no)h(structure.)134 597 y(3.)22 b(Pro)o(vide)13 b(MPI)p
424 597 V 15 w(Fcn)o(tl,)g(MPI)p 640 597 V 15 w(Fcn)o(tl)p
750 597 V 15 w(2,)g(MPI)p 892 597 V 15 w(Fcn)o(tl)p 1002
597 V 15 w(3,)g(etc.,)g(where)i(MPI)p 1353 597 V 15 w(Fcn)o(tl)e(tak)o
(es)h(only)e(one)i(param-)189 647 y(eter,)g(MPI)p 366
647 V 16 w(Fcn)o(tl)p 477 647 V 15 w(2)f(tak)o(es)i(2)e(parameters,)h
(etc.)134 722 y(4.)22 b(Group)13 b(the)i(items)e(in)g(some)g
(meaningful)e(w)o(a)o(y)m(,)i(and)g(pro)o(vide)h(a)g(routine)g(for)f
(eac)o(h)i(group)e(of)h(items.)75 948 y Fp(The)23 b(last)h(alternative)
e(has)i(further)e(been)i(expanded)f(on:)75 1061 y(Grouping)g(the)g
(items)g(and)h(providing)e(meaningful)h(routines)g(has)g(two)h
(advantages:)75 1117 y(individual)e(pieces)i(of)f(this)g(standard)g
(are)h(more)f(modular)75 1174 y(\(e.g.)g(file)g(pointer)g(manipulation)
g(is)g(all)h(contained)e(in)i(the)f(file)h(pointer)f(section\),)75
1230 y(and)g(I/O)h(code)f(will)h(be)f(more)g(self-documenting)75
1287 y(\(e.g.)g(a)h(re-open)f(is)g(expressed)g(as)h(MPI_Reopen\).)75
1400 y(As)g(a)f(first)g(cut,)h(I)g(propose)e(we)i(group)f(the)h
(MPI_Fcntl)e(options)h(into)h(the)75 1456 y(following)f(procedures:)75
1569 y(MPI_FCNTL_COMM)75 1625 y(MPI_FCNTL_FILENAME)75
1682 y(MPI_FCNTL_AMODE)75 1738 y(MPI_FCNTL_MOFFSET)75
1795 y(MPI_FCNTL_DISP)75 1851 y(MPI_FCNTL_ETYPE)75 1908
y(MPI_FCNTL_FILETYPE)75 1964 y(MPI_FCNTL_HINTS)75 2021
y(MPI_FCNTL_HINTS_TAKEN)75 2134 y(MPI_Open\(comm,)f(filename,)h(amode,)
g(disp,)g(etype,)123 2190 y(filetype,)f(moffset,)h(hints,)g(*fh\);)75
2246 y(MPI_File_info\(*comm,)e(*filename,)i(*amode,)g(*disp,)g(*etype,)
242 2303 y(*filetype,)g(*moffset,)f(*hints_taken\);)75
2359 y(MPI_Reopen\(fh,)g(disp,)h(etype,)g(filetype,)g(hints,)g
(*new_fh\);)75 2472 y(MPI_FCNTL_ATOMICITY)75 2585 y(MPI_Atomicity\(fh,)
f(atomicity,)g(*old_atomicity\);)75 2698 y(MPI_FCNTL_FILE_SIZE)-32
46 y Fj(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)1347 b Fn(CHAPTER)15 b(10.)30
b(I/O)75 106 y Fp(MPI_Resize\(fh,)22 b(MPI_Offset)g(disp\);)75
162 y(MPI_File_size\(fh,)g(MPI_Offset)g(*size_in_bytes\);)75
275 y(MPI_FCNTL_IND_FP)75 332 y(MPI_FCNTL_ABS_OFFSET)75
444 y(MPI_Seek\(fh,)g(offset,)h(whence\);)75 501 y
(MPI_Next_position\(fh,)e(*offset,)i(*byte_offset\);)75
614 y(MPI_FCNTL_SHARED_FP)75 727 y(MPI_Seek_shared\(fh,)e(offset,)i
(whence\);)75 783 y(MPI_Shared_position\(fh,)e(*offset,)h
(*byte_offset\);)75 896 y(Note)h(that)h(we)f(only)h(need)f(to)g(add)h
(6)g(routines)e(as)i(we)g(already)75 953 y(have)f(MPI_Open,)g
(MPI_Resize,)f(MPI_Seek,)h(and)g(MPI_Seek_shared.)75
1153 y Fq(MPI)p 160 1153 14 2 v 16 w(FILE)p 267 1153
V 15 w(CONTROL\(fh,)16 b(cmd,)f(fcntl\))117 1230 y Ff(IN)155
b Fq(fh)550 b Ff([SAME])14 b(V)m(alid)e(\014le)i(handle)g(\(handle\))
117 1306 y(IN)155 b Fq(cmd)507 b Ff([SAME])14 b(Comma)o(nd)117
1381 y(INOUT)62 b Fq(fcntl)503 b Ff(Argumen)o(ts)14 b(or)g(return)h(v)n
(alues)e(to)h(the)g(command)75 1505 y Fp(int)23 b(MPI)p
245 1505 15 2 v 17 w(File)p 358 1505 V 17 w(control\(MPI)p
639 1505 V 16 w(File)g(fh,)g(unsigned)g(cmd,)g(MPI)p
1275 1505 V 17 w(Fcntl)g(*fcntl\))166 1592 y Ft(\(F)o(OR)l(TRAN)16
b(binding)h(to)d(b)q(e)i(pro)o(vided)g(in)g(v)o(ersion)g(0.6)e(of)h
(the)g(draft.\))166 1648 y Fq(MPI)p 251 1648 14 2 v 16
w(FILE)p 358 1648 V 15 w(CONTROL)g Ft(gets)e(or)g(sets)g(\014le)i
(information)f(ab)q(out)f(the)h(\014le)h(asso)q(ciated)e(with)h(the)g
(\014le)75 1705 y(handle)j Fq(fh)p Ft(.)22 b(Multiple)c(commands)d(can)
h(b)q(e)g(issued)h(in)g(one)f(call)h(using)f(the)g(bit)o(wise)h(OR)f
(op)q(erator.)21 b(If)75 1761 y Fg(MPI)p 152 1761 13
2 v 14 w(F)o(CNTL)p 295 1761 V 15 w(SET)e Ft(is)h(set,)f(the)g
(\014elds)h(indicated)h(b)o(y)e(the)g(bits)g(set)g(in)h
Fq(cmd)e Ft(will)j(b)q(e)f(used)f(to)f(up)q(date)75 1817
y(the)i(\014le)h(information.)34 b(If)20 b Fg(MPI)p 641
1817 V 14 w(F)o(CNTL)p 784 1817 V 15 w(SET)g Ft(is)g(not)g(set,)g(the)g
(\014le)h(information)f(requested)g(will)h(b)q(e)75 1874
y(returned.)f Fg(MPI)p 354 1874 V 15 w(Fcntl)15 b Ft(is)h(de\014ned)g
(as)f(follo)o(ws:)170 1968 y Fp(typedef)23 b(struct)g(MPI_Fcntl)g({)266
2024 y(MPI_Comm)261 b(comm;)266 2081 y(char)333 b(*filename;)266
2137 y(MPI_Mode)237 b(amode;)266 2194 y(MPI_Offset)189
b(disp;)266 2250 y(MPI_Datatype)165 b(etype;)266 2306
y(MPI_Datatype)g(filetype;)266 2363 y(MPI_Hints)190 b(*hints;)266
2419 y(MPI_Hints)g(*hints_taken;)266 2476 y(MPI_Atomicity)117
b(atomicity;)266 2532 y(MPI_Offset)189 b(ind_fp;)266
2589 y(MPI_Offset)g(shared_fp;)266 2645 y(MPI_Offset)g(file_size;)266
2702 y(MPI_Offset)g(abs_offset;)1967 46 y Fj(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 Fn(10.2.)34 b(FILE)15 b(MANIPULA)l(TION)1139
b Ft(13)170 49 y Fp(})24 b(MPI_Fcntl;)166 143 y Ft(The)15
b(commands)g(a)o(v)m(ailable)i(are:)143 237 y Fh(\017)23
b Fg(MPI)p 266 237 13 2 v 14 w(F)o(CNTL)p 409 237 V 15
w(SET)p Ft(:)15 b(Set)g(\014le)h(information.)143 331
y Fh(\017)23 b Fg(MPI)p 266 331 V 14 w(F)o(CNTL)p 409
331 V 15 w(COMM)p Ft(:)15 b(Get)f(the)i(comm)o(unicator)e(asso)q
(ciated)i(with)f(the)h(\014le.)143 425 y Fh(\017)23 b
Fg(MPI)p 266 425 V 14 w(F)o(CNTL)p 409 425 V 15 w(FILENAME)p
Ft(:)14 b(Get)h(the)g(\014lename.)143 518 y Fh(\017)23
b Fg(MPI)p 266 518 V 14 w(F)o(CNTL)p 409 518 V 15 w(AMODE)p
Ft(:)14 b(Get)h(or)g(set)f(the)i(\014le)g(access)f(mo)q(de)h(asso)q
(ciated)f(with)h(the)f(\014le.)143 612 y Fh(\017)23 b
Fg(MPI)p 266 612 V 14 w(F)o(CNTL)p 409 612 V 15 w(DISP)p
Ft(:)14 b(Get)h(or)f(set)h(the)h(displacemen)o(t.)143
706 y Fh(\017)23 b Fg(MPI)p 266 706 V 14 w(F)o(CNTL)p
409 706 V 15 w(ETYPE)p Ft(:)14 b(Get)h(or)f(set)h(the)g(elemen)o(tary)h
(datat)o(yp)q(e.)143 800 y Fh(\017)23 b Fg(MPI)p 266
800 V 14 w(F)o(CNTL)p 409 800 V 15 w(FILETYPE)p Ft(:)14
b(Get)g(or)h(set)g(the)g(\014let)o(yp)q(e.)143 894 y
Fh(\017)23 b Fg(MPI)p 266 894 V 14 w(F)o(CNTL)p 409 894
V 15 w(HINTS)p Ft(:)15 b(Get)f(or)g(set)g(the)h(desired)g(v)m(alues)h
(for)e(the)g(hin)o(ts)h(asso)q(ciated)g(with)g(the)f(\014le.)143
987 y Fh(\017)23 b Fg(MPI)p 266 987 V 14 w(F)o(CNTL)p
409 987 V 15 w(HINTS)p 545 987 V 16 w(T)m(AKEN)p Ft(:)14
b(Get)h(the)g(v)m(alues)h(for)f(the)g(hin)o(ts)h(actually)g(used.)143
1081 y Fh(\017)23 b Fg(MPI)p 266 1081 V 14 w(F)o(CNTL)p
409 1081 V 15 w(A)m(TOMICITY)p Ft(:)13 b(Get)i(or)g(set)g(the)h(curren)
o(t)f(read/write)h(atomic)f(seman)o(tics)g(enforced)189
1138 y(mo)q(de.)143 1231 y Fh(\017)23 b Fg(MPI)p 266
1231 V 14 w(F)o(CNTL)p 409 1231 V 15 w(IND)p 495 1231
V 15 w(FP)p Ft(:)11 b(Get)g(the)h(curren)o(t)g(o\013set)g(of)f(the)h
(individual)k(\014le)d(p)q(oin)o(ter)f(asso)q(ciated)h(with)189
1288 y(the)k(\014le)g(\(n)o(um)o(b)q(er)g(of)g(elemen)o(tary)g(datat)o
(yp)q(e)f(items)h(within)h(the)f(\014le)h(after)e(the)h(displacemen)o
(t)189 1344 y(p)q(osition\).)143 1438 y Fh(\017)23 b
Fg(MPI)p 266 1438 V 14 w(F)o(CNTL)p 409 1438 V 15 w(SHARED)p
586 1438 V 15 w(FP)p Ft(:)18 b(Get)i(the)g(curren)o(t)g(o\013set)f(of)g
(the)h(shared)g(\014le)h(p)q(oin)o(ter)g(asso)q(ciated)189
1495 y(with)15 b(the)h(\014le)g(\(n)o(um)o(b)q(er)f(of)g(elemen)o(tary)
h(datat)o(yp)q(e)e(items)i(within)g(the)g(\014le)g(after)f(the)g
(displace-)189 1551 y(men)o(t)g(p)q(osition\).)143 1645
y Fh(\017)23 b Fg(MPI)p 266 1645 V 14 w(F)o(CNTL)p 409
1645 V 15 w(FILE)p 507 1645 V 14 w(SIZE)p Ft(:)15 b(Get)g(the)g(size)h
(of)f(the)g(\014le)h(asso)q(ciated)g(with)f(fh.)143 1739
y Fh(\017)23 b Fg(MPI)p 266 1739 V 14 w(F)o(CNTL)p 409
1739 V 15 w(ABS)p 503 1739 V 14 w(OFFSET)p Ft(:)14 b(Get)h(the)g
(absolute)h(b)o(yte)f(o\013set)f(of)h(the)g(individual)j(\014le)f(p)q
(oin)o(ter.)75 1833 y(Not)11 b(all)i(\014elds)g(in)g
Fq(fcntl)g Ft(are)e(c)o(hangeable.)20 b(When)12 b Fq(et)o(yp)q(e)p
Ft(,)i Fq(\014let)o(yp)q(e)p Ft(,)f(or)f Fq(disp)h Ft(is)f(c)o(hanged,)
h(all)g(\014le)g(p)q(oin)o(ters)75 1889 y(asso)q(ciated)i(with)h
Fq(fh)f Ft(are)g(reset)g(to)g Fg(MPI)p 765 1889 V 14
w(OFFSET)p 934 1889 V 14 w(ZERO)p Ft(.)166 1945 y(All)d(calls)f(that)f
(get)g(\014le)i(information)e(are)h(indep)q(enden)o(t)h(calls.)20
b(All)12 b(calls)f(that)f(set)g(\014le)i(information)75
2002 y(are)j(collectiv)o(e)j(calls.)k(When)15 b(setting)h
Fq(et)o(yp)q(e)p Ft(,)g Fq(amo)q(de)p Ft(,)f(and)h Fq(atomicit)o(y)p
Ft(,)e(it)i(is)g(erroneous)g(for)f(pro)q(cesses)75 2058
y(to)g(pass)g(in)h(di\013eren)o(t)f(v)m(alues.)75 2180
y Fl(10.2.4)49 b(File)17 b(Hints)75 2266 y Ft(Hin)o(ts)k(allo)o(w)h(a)e
(user)i(to)e(pro)o(vide)i(information)f(regarding)g(\014le)h(access)f
(patterns)g(and)g(\014le)h(system)75 2322 y(sp)q(eci\014cs)i(to)e
(direct)h(optimization.)42 b(Pro)o(viding)23 b(hin)o(ts)g(ma)o(y)e
(enable)j(an)e(implemen)o(tation)i(to)d(de-)75 2379 y(liv)o(er)e
(increased)g(I/O)f(p)q(erformance)g(or)f(minimize)j(the)e(use)g(of)f
(system)g(resources.)28 b(Ho)o(w)o(ev)o(er,)17 b(hin)o(ts)75
2435 y(do)22 b(not)f(c)o(hange)h(the)f(seman)o(tics)h(of)f(an)o(y)h(of)
f(the)h(in)o(terfaces.)39 b(In)23 b(other)e(w)o(ords,)h(an)g(implemen)o
(ta-)75 2492 y(tion)d(is)g(free)f(to)g(ignore)g(all)i(hin)o(ts.)30
b(Hin)o(ts)18 b(are)g(sp)q(eci\014ed)j(on)d(a)g(p)q(er)h(\014le)h
(basis)e(at)g Fq(MPI)p 1631 2492 14 2 v 16 w(OPEN)h Ft(\(and)75
2548 y Fq(MPI)p 160 2548 V 16 w(FILE)p 267 2548 V 15
w(CONTROL)p Ft(\))d(time.)-32 46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)189 49 y Fk(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 106 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 162 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 219 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 275 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 332 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 388 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 Fk(End)15 b(of)i(advic)n(e)189 444 y(to)f(implementors.)p
Ft(\))166 551 y(In)g(C,)e(hin)o(t)i(v)m(alues)g(are)f(de\014ned)i(as:)
170 657 y Fp(typedef)23 b(union)h(MPI_Hint_value)d({)266
713 y(MPI_Offset)h(hint_value;)266 770 y(void)h(*hint_ptr;)170
826 y(})h(MPI_Hint_value;)75 948 y Fl(10.2.5)49 b(Hints)17
b(Creation)f(and)h(Deallo)q(cation)75 1128 y Fq(MPI)p
160 1128 14 2 v 16 w(HINTS)p 309 1128 V 16 w(CREA)l(TE\(count,)g(hint)p
720 1128 V 18 w(names,)e(hint)p 958 1128 V 17 w(values,)h(hints\))117
1206 y Ff(IN)155 b Fq(count)482 b Ff(Num)o(b)q(er)14
b(of)f(hin)o(ts)h(supplied)g(\(in)o(teger\))117 1281
y(IN)155 b Fq(hint)p 394 1281 V 18 w(names)377 b Ff(Names)13
b(of)h(hin)o(ts)f(\(arra)o(y)h(of)g(in)o(teger\))117
1356 y(IN)155 b Fq(hint)p 394 1356 V 18 w(values)382
b Ff(V)m(alues)14 b(of)f(hin)o(ts)h(\(arra)o(y)g(of)f(in)o(teger\))117
1431 y(OUT)108 b Fq(hints)497 b Ff(Hin)o(ts)14 b(\(handle\))75
1555 y Fp(int)23 b(MPI)p 245 1555 15 2 v 17 w(Hints)p
382 1555 V 17 w(create\(int)f(count,)h(int)h(*hint)p
1044 1555 V 16 w(names,)f(MPI)p 1299 1555 V 17 w(Hint)p
1412 1555 V 17 w(value)g(*hint)p 1692 1555 V 16 w(values,)393
1612 y(MPI)p 468 1612 V 17 w(Hints)g(*hints\))75 1698
y(MPI)p 150 1698 V 17 w(HINTS)p 287 1698 V 16 w(CREATE\(COUNT,)f(HINT)p
733 1698 V 17 w(NAMES,)h(HINT)p 1013 1698 V 17 w(VALUES,)g(HINTS,)g
(IERROR\))170 1755 y(INTEGER)g(COUNT,)g(HINT)p 627 1755
V 17 w(NAMES\(*\))170 1811 y(INTEGER*8)g(HINT)p 508 1811
V 17 w(VALUES\(*\))170 1868 y(INTEGER)g(HINTS,)g(IERROR)166
1954 y Fq(MPI)p 251 1954 14 2 v 16 w(HINTS)p 400 1954
V 16 w(CREA)l(TE)c Ft(returns)f(an)g(opaque)g(ob)s(ject,)g(it)h(is)f
(the)g(resp)q(onsibilit)o(y)j(of)c(the)h(user)h(to)75
2011 y(delete)d(the)g(ob)s(ject)e(b)o(y)h(calling)i Fq(MPI)p
714 2011 V 16 w(HINTS)p 863 2011 V 17 w(FREE)e Ft(when)h(done.)75
2162 y Fq(MPI)p 160 2162 V 16 w(HINTS)p 309 2162 V 16
w(FREE\(hints\))117 2239 y Ff(IN)155 b Fq(hints)497 b
Ff(Hin)o(ts)14 b(\(handle\))75 2363 y Fp(int)23 b(MPI)p
245 2363 15 2 v 17 w(Hints)p 382 2363 V 17 w(free\(MPI)p
591 2363 V 16 w(Hints)g(*hints\))75 2450 y(MPI)p 150
2450 V 17 w(HINTS)p 287 2450 V 16 w(FREE\(HINTS,)g(IERROR\))170
2506 y(INTEGER)g(HINTS,)g(IERROR)166 2593 y Fq(MPI)p
251 2593 14 2 v 16 w(HINTS)p 400 2593 V 16 w(FREE)11
b Ft(marks)e(the)i(hin)o(ts)f(ob)s(ject)g(for)f(deallo)q(cation)j(and)e
(sets)g Fq(hints)i Ft(to)d Fg(MPI)p 1686 2593 13 2 v
15 w(HINTS)p 1822 2593 V 15 w(NULL)p Ft(.)1967 46 y Fj(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 Fn(10.2.)34 b(FILE)15 b(MANIPULA)l(TION)1139
b Ft(15)166 49 y(Hin)o(t)11 b(names)f(smaller)h(or)f(equal)h(to)e
Fg(MPI)p 844 49 13 2 v 15 w(HINTS)p 980 49 V 15 w(RESERVED)g
Ft(when)i(implemen)o(ted)h(carry)e(the)g(same)75 106
y(meaning)h(across)e(all)i(implemen)o(tations)h(and)e(will)i(b)q(e)f
(de\014ned)g(in)g(future)f(sp)q(eci\014cations.)20 b
Fg(MPI)p 1697 106 V 15 w(HINTS)p 1833 106 V 15 w(RESERVED)75
162 y Ft(is)c(de\014ned)g(to)f(b)q(e)h(65535.)166 219
y(Hin)o(t)f(names)h(larger)f(than)g Fg(MPI)p 721 219
V 14 w(HINTS)p 856 219 V 16 w(RESERVED)e Ft(are)i(implemen)o(tation)i
(sp)q(eci\014c)g(names.)166 275 y(The)g(constan)o(t)f
Fg(MPI)p 523 275 V 15 w(HINTS)p 659 275 V 15 w(NULL)i
Ft(refers)f(to)f(the)i(n)o(ull)g(hin)o(t,)g(and)f(can)g(b)q(e)h(used)f
(in)h Fq(MPI)p 1740 275 14 2 v 16 w(OPEN)75 332 y Ft(when)e(no)f(hin)o
(ts)g(need)i(to)d(b)q(e)i(sp)q(eci\014ed.)75 453 y Fl(10.2.6)49
b(Hints)17 b(Accesso)o(r)d(F)o(unctions)75 539 y Fq(MPI)p
160 539 V 16 w(HINTS)p 309 539 V 16 w(COUNT)i Ft(returns)f(the)h(n)o
(um)o(b)q(er)f(of)g(hin)o(ts)h(in)g(the)f(opaque)g(ob)s(ject)g(hin)o
(ts.)75 690 y Fq(MPI)p 160 690 V 16 w(HINTS)p 309 690
V 16 w(COUNT\(hints,)i(count\))117 767 y Ff(IN)155 b
Fq(hints)497 b Ff(Hin)o(ts)14 b(\(handle\))117 842 y(OUT)108
b Fq(count)482 b Ff(Num)o(b)q(er)14 b(of)f(hin)o(ts)h(\(in)o(teger\))75
967 y Fp(int)23 b(MPI)p 245 967 15 2 v 17 w(Hints)p 382
967 V 17 w(count\(MPI)p 615 967 V 16 w(Hints)g(hints,)g(int)g(*count\))
75 1053 y(MPI)p 150 1053 V 17 w(HINTS)p 287 1053 V 16
w(COUNT\(HINTS,)f(COUNT,)i(IERROR\))170 1110 y(INTEGER)f(HINTS,)g
(COUNT,)g(IERROR)166 1196 y Fq(MPI)p 251 1196 14 2 v
16 w(HINTS)p 400 1196 V 16 w(GET)p 504 1196 V 17 w(ELEMENT)15
b Ft(returns)g(the)h(n-th)f(elemen)o(t)h(in)g(the)f(opaque)h(ob)s(ject)
e(hin)o(ts.)189 1302 y Fk(A)n(dvic)n(e)h(to)i(users.)43
b Ft(The)15 b(order)h(of)f(the)g(elemen)o(ts)i(in)f(hin)o(ts)g(ma)o(y)f
(or)g(ma)o(y)g(not)g(b)q(e)h(the)g(same)f(as)189 1359
y(the)g(order)g(passed)g(in)h Fq(MPI)p 668 1359 V 16
w(HINTS)p 817 1359 V 17 w(CREA)l(TE)p Ft(.)g(\()p Fk(End)f(of)i(advic)n
(e)f(to)g(users.)p Ft(\))75 1560 y Fq(MPI)p 160 1560
V 16 w(HINTS)p 309 1560 V 16 w(GET)p 413 1560 V 17 w(ELEMENT\(hints,)g
(n,)f(hint)p 900 1560 V 18 w(name,)f(hint)p 1120 1560
V 18 w(value\))117 1637 y Ff(IN)155 b Fq(hints)497 b
Ff(Hin)o(ts)14 b(\(handle\))117 1712 y(IN)155 b Fq(n)564
b Ff(Numeric)14 b(selector)h(sp)q(ecifying)f(whic)o(h)f(hin)o(t)h(\(in)
o(teger\))117 1787 y(OUT)108 b Fq(hint)p 394 1787 V 18
w(name)394 b Ff(Name)13 b(of)g(hin)o(t)h(\(in)o(teger\))117
1862 y(OUT)108 b Fq(hint)p 394 1862 V 18 w(value)399
b Ff(V)m(alue)14 b(of)f(hin)o(t)g(\(in)o(teger\))75 1987
y Fp(int)23 b(MPI)p 245 1987 15 2 v 17 w(Hints)p 382
1987 V 17 w(get)p 471 1987 V 16 w(element\(MPI)p 751
1987 V 16 w(Hints)g(hints,)g(int)h(n,)f(int)h(*hint)p
1460 1987 V 16 w(name,)393 2043 y(MPI)p 468 2043 V 17
w(Hint)p 581 2043 V 17 w(value)f(*hint)p 861 2043 V 16
w(value\))75 2130 y(MPI)p 150 2130 V 17 w(HINTS)p 287
2130 V 16 w(GET)p 375 2130 V 17 w(ELEMENT\(HINTS,)f(N,)i(HINT)p
918 2130 V 16 w(NAME,)f(HINT)p 1173 2130 V 17 w(VALUE,)g(IERROR\))170
2186 y(INTEGER)g(HINTS,)g(N,)h(HINT)p 699 2186 V 17 w(NAME)170
2243 y(INTEGER*8)f(HINT)p 508 2243 V 17 w(VALUE)170 2299
y(INTEGER)g(IERROR)166 2385 y Fq(MPI)p 251 2385 14 2
v 16 w(HINTS)p 400 2385 V 16 w(GET)p 504 2385 V 17 w(V)l(ALUE)13
b Ft(returns)f(the)g Fq(hint)p 975 2385 V 18 w(value)g
Ft(of)g Fq(hint)p 1224 2385 V 18 w(name)g Ft(in)h(the)f(opaque)g(ob)s
(ject)g(hin)o(ts.)75 2442 y(If)j Fq(hint)p 196 2442 V
18 w(name)g Ft(is)h(not)e(de\014ned)j(in)f Fq(hints)p
Ft(,)g(an)g(error)e(will)j(b)q(e)f(returned,)f(and)g
Fq(hint)p 1467 2442 V 18 w(value)g Ft(is)h(unde\014ned.)-32
46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)75 49 y Fq(MPI)p 160 49 14 2 v 16 w(HINTS)p 309
49 V 16 w(GET)p 413 49 V 17 w(V)l(ALUE\(hints,)17 b(hint)p
780 49 V 18 w(name,)d(hint)p 1000 49 V 18 w(value\))117
126 y Ff(IN)155 b Fq(hints)497 b Ff(Hin)o(ts)14 b(\(handle\))117
200 y(IN)155 b Fq(hint)p 394 200 V 18 w(name)394 b Ff(Name)13
b(of)g(hin)o(t)h(\(in)o(teger\))117 274 y(OUT)108 b Fq(hint)p
394 274 V 18 w(value)399 b Ff(V)m(alue)14 b(of)f(hin)o(t)g(\(in)o
(teger\))75 398 y Fp(int)23 b(MPI)p 245 398 15 2 v 17
w(Hints)p 382 398 V 17 w(get)p 471 398 V 16 w(value\(MPI)p
703 398 V 16 w(Hints)h(hints,)f(int)g(hint)p 1221 398
V 17 w(name,)393 455 y(MPI)p 468 455 V 17 w(Hint)p 581
455 V 17 w(value)g(*hint)p 861 455 V 16 w(value\))75
541 y(MPI)p 150 541 V 17 w(HINTS)p 287 541 V 16 w(GET)p
375 541 V 17 w(VALUE\(HINTS,)f(HINT)p 798 541 V 17 w(NAME,)h(HINT)p
1054 541 V 17 w(VALUE,)g(IERROR\))170 598 y(INTEGER)g(HINTS,)g(HINT)p
627 598 V 17 w(NAME)170 654 y(INTEGER*8)g(HINT)p 508
654 V 17 w(VALUE)170 711 y(INTEGER)g(IERROR)166 797 y
Ft(Some)16 b(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 1023 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 1136
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 Fo([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 1249 y(erroneous.)75
1346 y Fg(MPI)p 152 1346 13 2 v 14 w(HINTS)p 287 1346
V 16 w(STRIPING)p 489 1346 V 14 w(UNIT)i Fo(\(in)o(teger\))h([SAME]:)j
Ft(This)d(hin)o(t)h(sp)q(eci\014es)h(the)e(suggested)g(striping)189
1402 y(unit)c(to)e(b)q(e)i(used)g(for)f(this)g(\014le.)21
b(The)13 b(striping)h(unit)g(is)g(the)f(amoun)o(t)g(of)g(consecutiv)o
(e)h(data)e(tak)o(en)189 1459 y(from)j(one)i(I/O)g(no)q(de)g(\(resp.)24
b(storage)15 b(device\))j(b)q(efore)f(progressing)f(to)g(the)h(next)f
(no)q(de)i(\(resp.)189 1515 y(storage)c(device\),)j(when)f(striping)g
(across)f(a)h(n)o(um)o(b)q(er)g(of)f(no)q(des)h(\(resp.)21
b(storage)15 b(devices\);)h(it)g(is)189 1572 y(expressed)j(in)g(b)o
(ytes.)30 b(This)19 b(hin)o(t)g(is)g(relev)m(an)o(t)g(only)h(when)f
(the)f(\014le)i(is)f(created,)g(and)g(if)g(used,)189
1628 y(this)13 b(data)f(should)h(b)q(e)h(main)o(tained)f(b)o(y)g(the)g
(\014le)g(serv)o(er\(s\))f(as)g(part)g(of)h(the)f(metadata)g(asso)q
(ciated)189 1685 y(with)g(the)g(\014le.)19 b(A)12 b(go)q(o)q(d)g(size)g
(for)g(a)f(striping)i(unit)f(is)g(the)g(amoun)o(t)f(of)h(consecutiv)o
(e)g(data)f(accessed)189 1741 y(indep)q(enden)o(tly)18
b(b)o(y)d(a)g(pro)q(cess,)g(or)g(if)g(this)h(is)g(to)q(o)e(small,)i(a)f
(m)o(ultiple)i(of)d(that)h(size.)75 1832 y Fg(MPI)p 152
1832 V 14 w(HINTS)p 287 1832 V 16 w(STRIPING)p 489 1832
V 14 w(F)m(A)o(CTOR)g Fo(\(in)o(teger\))j([SAME]:)j Ft(This)e(hin)o(t)g
(sp)q(eci\014es)h(the)e(n)o(um)o(b)q(er)h(of)f(I/O)189
1889 y(no)q(des)h(\(resp.)29 b(storage)17 b(devices\))j(that)e(the)g
(\014le)i(should)f(b)q(e)g(strip)q(ed)h(across,)e(and)g(is)h(relev)m
(an)o(t)189 1945 y(only)c(when)h(the)f(\014le)i(is)e(created.)75
2036 y Fg(MPI)p 152 2036 V 14 w(HINTS)p 287 2036 V 16
w(NUM)p 397 2036 V 15 w(IO)p 455 2036 V 14 w(NODES)i
Fo(\(in)o(teger\))h([SAME]:)j Ft(The)c(n)o(um)o(b)q(er)g(of)f(I/O)h(no)
q(des)h(in)f(the)g(system.)189 2092 y(Used)h(to)f(sp)q(ecify)i(the)f
(ideal)h(n)o(um)o(b)q(er)f(of)f(I/O)h(no)q(des)h(for)e(this)h
(application)h(as)f(w)o(ell)g(as)g(query)189 2149 y(the)d(n)o(um)o(b)q
(er)g(of)g(I/O)h(no)q(des)g(actually)g(in)g(use.)75 2240
y Fg(MPI)p 152 2240 V 14 w(HINTS)p 287 2240 V 16 w(IO)p
346 2240 V 14 w(NODE)p 475 2240 V 15 w(LIST)h Fo(\(arra)o(y)g(of)h(in)o
(teger\))f([SAME]:)k Ft(In)c(addition)g(to)f(de\014ning)h(the)g(strip-)
189 2296 y(ing)e(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 2353 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 2443 y Fg(MPI)p 152 2443 V 14 w(HINTS)p
287 2443 V 16 w(NB)p 360 2443 V 15 w(PROC)h Fo(\(in)o(teger\))i
([SAME]:)j Ft(This)e(sp)q(eci\014es)h(the)f(n)o(um)o(b)q(er)g(of)f
(parallel)j(pro)q(cesses)189 2500 y(that)15 b(will)i(t)o(ypically)g(b)q
(e)f(assigned)g(to)f(run)h(programs)f(that)f(access)i(this)g(\014le,)h
(and)e(can)h(b)q(e)g(used)189 2556 y(at)e(\014le)i(creation.)75
2647 y Fg(MPI)p 152 2647 V 14 w(HINTS)p 287 2647 V 16
w(A)o(CCESS)p 455 2647 V 13 w(STYLE)i Fo(\(in)o(teger\):)23
b Ft(This)16 b(hin)o(t)h(sp)q(eci\014es)h(the)e(manner)g(in)g(whic)o(h)
h(the)f(\014le)h(will)189 2704 y(b)q(e)f(accessed)f(un)o(til)i(the)e
(\014le)h(is)g(closed)g(or)f(un)o(til)h(the)f(program)f(terminates.)
1967 46 y Fj(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 Fn(10.2.)34 b(FILE)15 b(MANIPULA)l(TION)1139
b Ft(17)189 49 y(The)15 b(hin)o(t)h(v)m(alue)g(is)g(an)f(in)o(teger)g
(equal)h(to)f(one)g(of)g(the)g(constan)o(ts:)230 159
y Fg(MPI)p 307 159 13 2 v 14 w(HINTS)p 442 159 V 16 w(READ)p
568 159 V 14 w(ONCE)230 203 y(MPI)p 307 203 V 14 w(HINTS)p
442 203 V 16 w(WRITE)p 589 203 V 15 w(ONCE)230 247 y(MPI)p
307 247 V 14 w(HINTS)p 442 247 V 16 w(READ)p 568 247
V 14 w(MOSTL)m(Y)230 291 y(MPI)p 307 291 V 14 w(HINTS)p
442 291 V 16 w(WRITE)p 589 291 V 15 w(MOSTL)m(Y)189 393
y Ft(P)o(ossibly)i(mo)q(di\014ed)i(b)o(y)e(one)g(of)g(the)g(follo)o
(wing)h(constan)o(ts)e(\(via)h(the)g(bit)o(wise)h(OR)g(op)q(erator)e
(in)189 449 y(C)f(or)f(simple)j(addition)f(in)g(F)o(OR)l(TRAN\):)230
559 y Fg(MPI)p 307 559 V 14 w(HINTS)p 442 559 V 16 w(SEQUENTIAL)230
603 y(MPI)p 307 603 V 14 w(HINTS)p 442 603 V 16 w(REVERSE)p
638 603 V 14 w(SEQUENTIAL)230 647 y(MPI)p 307 647 V 14
w(HINTS)p 442 647 V 16 w(RANDOM)75 767 y(MPI)p 152 767
V 14 w(HINTS)p 287 767 V 16 w(COLLECTIVE)p 550 767 V
13 w(BUFFERING)g Fo(\(logical\))k([SAME]:)h Ft(This)11
b(hin)o(t)f(sp)q(eci\014es)i(whether)f(the)f(ap-)189
824 y(plication)i(will)h(b)q(ene\014t)g(from)d(collectiv)o(e)j
(bu\013ering)f(\(an)f(optimization)h(p)q(erformed)f(on)g(collectiv)o(e)
189 880 y(accesses)16 b(whic)o(h)g(coalesces)h(small)f(requests)g(in)o
(to)g(large)g(disk)g(accesses\).)22 b(Collectiv)o(e)17
b(bu\013ering)189 937 y(parameters)d(are)h(further)g(directed)h(via)g
Fg(MPI)p 979 937 V 14 w(HINTS)p 1114 937 V 16 w(CB)p
1185 937 V 14 w(XXX)e Ft(hin)o(ts.)75 1031 y Fg(MPI)p
152 1031 V 14 w(HINTS)p 287 1031 V 16 w(CB)p 358 1031
V 14 w(NODES)j Fo(\(in)o(teger\))h([SAME]:)j Ft(The)14
b(n)o(um)o(b)q(er)f(of)g(target)g(no)q(des)g(used)h(for)f(collectiv)o
(e)189 1087 y(bu\013ering.)20 b(All)d(\014le)f(accesses)f(are)g(p)q
(erformed)h(b)o(y)f(the)g(target)f(no)q(des.)75 1181
y Fg(MPI)p 152 1181 V 14 w(HINTS)p 287 1181 V 16 w(CB)p
358 1181 V 14 w(BLOCK)p 509 1181 V 14 w(SIZE)j Fo(\(o\013set\))h
([SAME]:)j Ft(The)d(blo)q(c)o(k)h(size)g(used)f(for)f(\014le)i(access.)
29 b(T)l(arget)189 1237 y(no)q(des)17 b(access)f(data)g(in)h(c)o(h)o
(unks)g(of)e(this)i(size.)24 b(The)17 b(c)o(h)o(unks)g(are)f
(distributed)i(to)d(target)g(no)q(des)189 1294 y(in)h(a)f(round-robin)h
(\(CYCLIC\))f(pattern.)75 1388 y Fg(MPI)p 152 1388 V
14 w(HINTS)p 287 1388 V 16 w(CB)p 358 1388 V 14 w(BUF)p
453 1388 V 14 w(SIZE)i Fo(\(o\013set\))h([SAME]:)i Ft(The)11
b(total)e(bu\013er)h(space)h(used)g(for)e(collectiv)o(e)j(bu\013er-)189
1444 y(ing)j(on)h(eac)o(h)f(target)f(no)q(de;)h(usually)i(a)e(m)o
(ultiple)i(of)d Fg(MPI)p 1186 1444 V 15 w(HINTS)p 1322
1444 V 15 w(CB)p 1392 1444 V 15 w(BLOCK)p 1544 1444 V
14 w(SIZE)p Ft(.)166 1550 y(Sp)q(eci\014c)19 b(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 1607 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
1663 y(on)d(the)g(IBM)h(AIX)g(P)o(arallel)g(I/O)f(File)i(System)e([1)o
(,)g(2]:)p 483 1718 985 2 v 482 1774 2 57 v 507 1757
a Fk(hint)i(name)p 1116 1774 V 433 w(interpr)n(etation)p
1467 1774 V 483 1776 985 2 v 482 1832 2 57 v 507 1815
a Fg(MPI)p 584 1815 13 2 v 15 w(HINTS)p 720 1815 V 15
w(STRIPING)p 921 1815 V 14 w(UNIT)p 1116 1832 2 57 v
111 w Ft(BSU)e(size)p 1467 1832 V 482 1889 V 507 1872
a Fg(MPI)p 584 1872 13 2 v 15 w(HINTS)p 720 1872 V 15
w(STRIPING)p 921 1872 V 14 w(F)m(A)o(CTOR)p 1116 1889
2 57 v 48 w Ft(n)o(um)o(b)q(er)g(of)g(cells)p 1467 1889
V 482 1945 V 507 1928 a Fg(MPI)p 584 1928 13 2 v 15 w(HINTS)p
720 1928 V 15 w(IO)p 778 1928 V 14 w(NODE)p 907 1928
V 15 w(LIST)p 1116 1945 2 57 v 137 w Ft(base)g(no)q(de)p
1467 1945 V 483 1947 985 2 v 75 2052 a Fl(10.2.7)49 b(Deleting)17
b(a)g(\014le)f(\(Indep)q(endent\))75 2232 y Fq(MPI)p
160 2232 14 2 v 16 w(DELETE\(\014lename\))117 2310 y
Ff(IN)155 b Fq(\014lename)430 b Ff(Name)13 b(of)g(the)i(\014le)f(to)f
(b)q(e)i(deleted)g(\(string\))75 2434 y Fp(int)47 b(MPI)p
269 2434 15 2 v 17 w(Delete\(char)22 b(*filename\))75
2521 y(MPI)p 150 2521 V 17 w(DELETE\(FILENAME,)f(IERROR\))170
2577 y(CHARACTER)i(FILENAME\(*\))170 2633 y(INTEGER)g(IERROR)-32
46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)166 49 y Fq(MPI)p 251 49 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
106 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 162 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 Fq(MPI)p
1216 162 V 16 w(DELETE)g Ft(returns)g(a)g(w)o(arning)h(error)75
219 y(co)q(de.)189 325 y Fk(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 381 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 438
y(exit.)h(\()p Fk(End)c(of)g(advic)n(e)g(to)h(implementors.)p
Ft(\))75 560 y Fl(10.2.8)49 b(Resizing)18 b(a)f(\014le)f
(\(Collective\))75 740 y Fq(MPI)p 160 740 V 16 w(RESIZE\(MPI)p
425 740 V 16 w(File)f(fh,)g(MPI)p 671 740 V 15 w(O\013set)i(size\))117
817 y Ff(IN)155 b Fq(fh)550 b Ff([SAME])14 b(V)m(alid)e(\014le)i
(handle)g(\(handle\))117 892 y(IN)155 b Fq(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 949 y(expanded)d(to)f(\(nonnegativ)o(e)f
(o\013set\))75 1073 y Fp(int)23 b(MPI)p 245 1073 15 2
v 17 w(Resize\(MPI)p 502 1073 V 16 w(File)g(fh,)h(MPI)p
805 1073 V 17 w(Offset)f(size\))75 1160 y(MPI)p 150 1160
V 17 w(RESIZE\(FH,)f(SIZE,)h(IERROR\))170 1216 y(INTEGER)g(FH,)h
(IERROR)170 1272 y(INTEGER*8)f(SIZE)166 1359 y Fq(MPI)p
251 1359 14 2 v 16 w(RESIZE)18 b Ft(resizes)h(the)f(\014le)g(asso)q
(ciated)g(with)h(the)f(\014le)h(handle)g Fq(fh)p Ft(.)28
b(If)18 b Fq(size)g Ft(is)g(smaller)h(than)75 1415 y(the)14
b(curren)o(t)g(\014le)h(size,)g(the)f(\014le)h(is)f(truncated)g(at)f
(the)h(p)q(osition)h(de\014ned)h(b)o(y)e Fq(size)g Ft(\(from)f(the)h(b)
q(eginning)75 1472 y(of)f(the)g(\014le)h(and)f(measured)g(in)h(b)o
(ytes\).)19 b(File)14 b(blo)q(c)o(ks)f(lo)q(cated)h(b)q(ey)o(ond)g
(that)e(p)q(osition)i(are)f(deallo)q(cated.)75 1528 y(If)19
b Fq(size)h Ft(is)f(larger)g(than)g(the)g(curren)o(t)g(\014le)h(size,)h
(additional)f(\014le)g(blo)q(c)o(ks)g(are)f(allo)q(cated)h(and)f(the)g
(\014le)75 1585 y(size)14 b(b)q(ecomes)h Fq(size)p Ft(.)k(All)c(pro)q
(cesses)f(in)g(the)g(comm)o(unicator)f(group)g(m)o(ust)g(call)h
Fq(MPI)p 1534 1585 V 16 w(RESIZE)g Ft(with)g(the)75 1641
y(same)h Fq(size)p Ft(.)166 1780 y Fe(Discussion:)j Ff(There)e(are)g(t)
o(w)o(o)e(issues)j(asso)q(ciated)f(with)e(\014le)h(blo)q(c)o(k)g
(preallo)q(cation:)20 b(it)15 b(ma)o(y)e(b)q(e)j(slo)o(w)e(on)75
1837 y(systems)j(without)g(direct)g(\014lesystem)g(supp)q(ort,)h(and)f
(w)o(e)g(m)o(ust)f(b)q(e)i(careful)f(to)f(de\014ne)i(what)f(happ)q(ens)
h(if)e(not)75 1893 y(enough)e(space)h(is)f(a)o(v)n(ailable.)75
2098 y Fl(10.2.9)49 b(File)17 b(Sync)f(\(Collective\))75
2278 y Fq(MPI)p 160 2278 V 16 w(FILE)p 267 2278 V 15
w(SYNC\(fh\))117 2355 y Ff(IN)155 b Fq(fh)550 b Ff([SAME]V)m(alid)12
b(\014le)i(handle)g(\(handle\))75 2480 y Fp(int)23 b(MPI)p
245 2480 15 2 v 17 w(File)p 358 2480 V 17 w(sync\(MPI)p
567 2480 V 16 w(File)g(fh\))75 2566 y(MPI)p 150 2566
V 17 w(FILE)p 263 2566 V 16 w(SYNC\(FH,)g(IERROR\))170
2622 y(INTEGER)g(FH,)h(IERROR)1967 46 y Fj(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 Fn(10.3.)34 b(D)o(A)l(T)l(A)15 b(A)o(CCESS)g(WITH)g
(EXPLICIT)h(OFFSETS)697 b Ft(19)166 49 y Fq(MPI)p 251
49 14 2 v 16 w(FILE)p 358 49 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
Fq(fh)g Ft(to)e(b)q(e)j(\015ushed)f(to)f(p)q(er-)75 106
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
162 y Fq(fh)c Ft(m)o(ust)e(call)j Fq(MPI)p 406 162 V
16 w(FILE)p 513 162 V 15 w(SYNC)p Ft(.)f(The)g Fq(MPI)p
847 162 V 16 w(FILE)p 954 162 V 15 w(SYNC)g Ft(call)h(returns)e
Fk(after)h Ft(all)g(data)f(written,)g(since)75 219 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.)189 325 y Fk(A)n(dvic)n(e)j(to)h(users.)58
b Fq(MPI)p 653 325 V 15 w(FILE)p 759 325 V 16 w(SYNC)19
b Ft(guaran)o(tees)e(that)h(all)h Fk(c)n(omplete)n(d)f
Ft(I/O)g(requests)g(ha)o(v)o(e)189 381 y(b)q(een)e(\015ushed)h(to)e(p)q
(ermanen)o(t)g(storage.)20 b(P)o(ending)c(non)o(blo)q(c)o(king)h(I/O)f
(requests)f(that)g(ha)o(v)o(e)g(not)189 438 y(completed)h(are)f(not)g
(guaran)o(teed)f(to)h(b)q(e)h(\015ushed.)21 b(\()p Fk(End)15
b(of)i(advic)n(e)f(to)g(users.)p Ft(\))166 627 y Fe(Discussion:)d
Ff(Do)q(es)d(this)g(imply)e(w)o(eak)h(consistency)i(b)q(et)o(w)o(een)h
(applications)c(at)i Fg(MPI)p 1521 627 13 2 v 14 w(FILE)p
1618 627 V 15 w(SYNC)f Ff(b)q(ound-)75 683 y(aries?)18
b(Should)c(it)f(b)q(e)i(required?)75 909 y Fm(10.3)60
b(Data)19 b(Access)h(With)g(Explicit)e(O\013sets)75 1012
y Fl(10.3.1)49 b(Blo)q(cking)18 b(Read)75 1193 y Fq(MPI)p
160 1193 14 2 v 16 w(READ\(fh,)d(o\013set,)g(bu\013,)h(buft)o(yp)q(e,)g
(bufcount,)h(status\))117 1270 y Ff(IN)155 b Fq(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 1345
y(IN)155 b Fq(o\013set)484 b Ff(File)14 b(o\013set)g(\(nonnegativ)o(e)g
(o\013set\))117 1420 y(OUT)108 b Fq(bu\013)514 b Ff(Initial)13
b(address)i(of)e(the)i(user's)f(bu\013er)h(\(in)o(teger\))117
1495 y(IN)155 b Fq(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)
o(yp)q(e)f(\(handle\))117 1570 y(IN)155 b Fq(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 1645 y(OUT)108 b Fq(status)476 b Ff(Status)15
b(information)c(\(Status\))75 1770 y Fp(int)23 b(MPI)p
245 1770 15 2 v 17 w(Read\(MPI)p 454 1770 V 16 w(File)h(fh,)f(MPI)p
757 1770 V 17 w(Offset)g(offset,)g(void)g(*buff,)393
1826 y(MPI)p 468 1826 V 17 w(Datatype)g(buftype,)f(int)i(bufcount,)f
(MPI)p 1321 1826 V 16 w(Status)g(*status\))75 1913 y(MPI)p
150 1913 V 17 w(READ\(FH,)g(OFFSET,)f(BUFF,)i(BUFTYPE,)e(BUFCOUNT,)h
(STATUS,)g(IERROR\))170 1969 y(<type>)g(BUFF\(*\))170
2026 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p
1153 2026 V 16 w(STATUS)p 1313 2026 V 16 w(SIZE\),)h(IERROR)170
2082 y(INTEGER*8)g(OFFSET)166 2169 y Fq(MPI)p 251 2169
14 2 v 16 w(READ)c Ft(attempts)f(to)h(read)g(from)f(the)h(\014le)i
(asso)q(ciated)e(with)g Fq(fh)h Ft(\(at)e(the)h Fq(o\013set)g
Ft(p)q(osition\))75 2225 y(a)d(total)g(n)o(um)o(b)q(er)i(of)e
Fq(bufcount)j Ft(data)d(items)h(ha)o(ving)g Fq(buft)o(yp)q(e)h
Ft(datat)o(yp)q(e)e(in)o(to)h(the)g(user's)f(bu\013er)h
Fq(bu\013)p Ft(.)75 2281 y(The)f(data)f(is)i(tak)o(en)e(out)h(of)f
(those)h(parts)f(of)h(the)g(\014le)g(sp)q(eci\014ed)i(b)o(y)e(\014let)o
(yp)q(e.)23 b Fq(MPI)p 1533 2281 V 16 w(READ)17 b Ft(stores)e(the)75
2338 y(n)o(um)o(b)q(er)h(of)e Fq(buft)o(yp)q(e)j Ft(elemen)o(ts)f
(actually)g(read)f(in)h Fq(status)p Ft(.)75 2489 y Fq(MPI)p
160 2489 V 16 w(READ)p 295 2489 V 17 w(ALL\(fh,)e(o\013set,)h(bu\013,)g
(buft)o(yp)q(e,)i(bufcount,)g(status\))75 2593 y Fp(int)23
b(MPI)p 245 2593 15 2 v 17 w(Read)p 358 2593 V 17 w(all\(MPI)p
543 2593 V 16 w(File)g(fh,)h(MPI)p 846 2593 V 17 w(Offset)f(offset,)g
(void)g(*buff,)393 2649 y(MPI)p 468 2649 V 17 w(Datatype)g(buftype,)f
(int)i(bufcount,)f(MPI)p 1321 2649 V 16 w(Status)g(*status\))-32
46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)75 49 y Fp(MPI)p 150 49 15 2 v 17 w(READ)p 263
49 V 16 w(ALL\(FH,)23 b(OFFSET,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)g
(STATUS,)g(IERROR\))170 106 y(<type>)g(BUFF\(*\))170
162 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p
1153 162 V 16 w(STATUS)p 1313 162 V 16 w(SIZE\),)h(IERROR)170
219 y(INTEGER*8)g(OFFSET)166 305 y Fq(MPI)p 251 305 14
2 v 16 w(READ)p 386 305 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 Fq(MPI)p 1290 305
V 16 w(READ)f Ft(in)o(terface.)19 b(This)11 b(routine)75
362 y(is)i(seman)o(tically)h(iden)o(tical)g(to)e Fq(MPI)p
694 362 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 418 y(asso)q(ciated)j(with)h(the)f
(\014le)h(handle)h Fq(fh)e Ft(m)o(ust)g(call)h Fq(MPI)p
1026 418 V 16 w(READ)p 1161 418 V 17 w(ALL)p Ft(.)75
540 y Fl(10.3.2)49 b(Blo)q(cking)18 b(W)o(rite)75 720
y Fq(MPI)p 160 720 V 16 w(WRITE\(fh,)d(o\013set,)g(bu\013,)g(buft)o(yp)
q(e,)i(bufcount,)g(status\))117 797 y Ff(IN)155 b Fq(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 872
y(IN)155 b Fq(o\013set)484 b Ff(File)14 b(o\013set)g(\(nonnegativ)o(e)g
(o\013set\))117 947 y(IN)155 b Fq(bu\013)514 b Ff(Initial)13
b(address)i(of)e(the)i(user's)f(bu\013er)h(\(in)o(teger\))117
1023 y(IN)155 b Fq(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)
o(yp)q(e)f(\(handle\))117 1098 y(IN)155 b Fq(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 1173 y(OUT)108 b Fq(status)476 b Ff(Status)15
b(information)c(\(Status\))75 1297 y Fp(int)47 b(MPI)p
269 1297 15 2 v 17 w(Write\(MPI)p 502 1297 V 16 w(File)23
b(fh,)h(MPI)p 805 1297 V 17 w(Offset)f(offset,)g(void)g(*buff,)393
1354 y(MPI)p 468 1354 V 17 w(Datatype)g(buftype,)f(int)i(bufcount,)f
(MPI)p 1321 1354 V 16 w(Status)g(*status\))75 1440 y(MPI)p
150 1440 V 17 w(WRITE\(FH,)f(OFFSET,)h(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)g
(STATUS,)g(IERROR\))170 1497 y(<type>)g(BUFF\(*\))170
1553 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p
1153 1553 V 16 w(STATUS)p 1313 1553 V 16 w(SIZE\),)h(IERROR)170
1610 y(INTEGER*8)g(OFFSET)166 1696 y Fq(MPI)p 251 1696
14 2 v 16 w(WRITE)17 b Ft(attempts)f(to)h(write)g(in)o(to)h(the)f
(\014le)h(asso)q(ciated)g(with)f Fq(fh)h Ft(\(at)e(the)i
Fq(o\013set)f Ft(p)q(osition\))75 1753 y(a)e(total)g(n)o(um)o(b)q(er)h
(of)f Fq(bufcount)j Ft(data)d(items)h(ha)o(ving)g Fq(buft)o(yp)q(e)h
Ft(datat)o(yp)q(e)e(from)g(the)h(user's)f(bu\013er)h
Fq(bu\013)p Ft(.)75 1809 y(The)f(data)f(is)h(written)g(in)o(to)g(those)
g(parts)f(of)g(the)h(\014le)h(sp)q(eci\014ed)h(b)o(y)d(\014let)o(yp)q
(e.)21 b Fq(MPI)p 1512 1809 V 16 w(WRITE)15 b Ft(stores)f(the)75
1865 y(n)o(um)o(b)q(er)i(of)e Fq(buft)o(yp)q(e)j Ft(elemen)o(ts)f
(actually)g(written)f(in)h Fq(status)p Ft(.)75 2016 y
Fq(MPI)p 160 2016 V 16 w(WRITE)p 319 2016 V 16 w(ALL\(fh,)f(o\013set,)g
(bu\013,)g(buft)o(yp)q(e,)i(bufcount,)g(status\))75 2120
y Fp(int)47 b(MPI)p 269 2120 15 2 v 17 w(Write)p 406
2120 V 17 w(all\(MPI)p 591 2120 V 16 w(File)23 b(fh,)h(MPI)p
894 2120 V 16 w(Offset)f(offset,)g(void)h(*buff,)393
2177 y(MPI)p 468 2177 V 17 w(Datatype)f(buftype,)f(int)i(bufcount,)f
(MPI)p 1321 2177 V 16 w(Status)g(*status\))75 2263 y(MPI)p
150 2263 V 17 w(WRITE)p 287 2263 V 16 w(ALL\(FH,)g(OFFSET,)g(BUFF,)g
(BUFTYPE,)g(BUFCOUNT,)g(STATUS,)g(IERROR\))170 2319 y(<type>)g
(BUFF\(*\))170 2376 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f
(STATUS\(MPI)p 1153 2376 V 16 w(STATUS)p 1313 2376 V
16 w(SIZE\),)h(IERROR)170 2432 y(INTEGER*8)g(OFFSET)166
2519 y Fq(MPI)p 251 2519 14 2 v 16 w(WRITE)p 410 2519
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 Fq(MPI)p 1324 2519 V 16 w(WRITE)f Ft(in)o(terface.)19
b(This)13 b(rou-)75 2575 y(tine)h(is)h(seman)o(tically)f(iden)o(tical)i
(to)d Fq(MPI)p 788 2575 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 2632 y(group)i(asso)q
(ciated)g(with)h(the)f(\014le)h(handle)h Fq(fh)e Ft(m)o(ust)g(call)h
Fq(MPI)p 1155 2632 V 16 w(WRITE)p 1314 2632 V 16 w(ALL)p
Ft(.)1967 46 y Fj(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 Fn(10.3.)34 b(D)o(A)l(T)l(A)15 b(A)o(CCESS)g(WITH)g
(EXPLICIT)h(OFFSETS)697 b Ft(21)75 49 y Fl(10.3.3)49
b(Nonblo)q(cking)19 b(Read)75 230 y Fq(MPI)p 160 230
14 2 v 16 w(IREAD\(fh,)c(o\013set,)g(bu\013,)g(buft)o(yp)q(e,)i
(bufcount,)g(request\))117 307 y Ff(IN)155 b Fq(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 382
y(IN)155 b Fq(o\013set)484 b Ff(File)14 b(O\013set)h(\(nonnegativ)o(e)f
(o\013set\))117 457 y(OUT)108 b Fq(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 Fq(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 Fq(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 Fq(request)452
b Ff(Read)14 b(request)h(handle)f(\(handle\))75 807 y
Fp(int)23 b(MPI)p 245 807 15 2 v 17 w(Iread\(MPI)p 478
807 V 16 w(File)g(fh,)h(MPI)p 781 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(Request)g(*request\))75
950 y(MPI)p 150 950 V 17 w(IREAD\(FH,)f(OFFSET,)h(BUFF,)g(BUFTYPE,)g
(BUFCOUNT,)g(REQUEST,)g(IERROR\))170 1006 y(<type>)g(BUFF\(*\))170
1063 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)170
1119 y(INTEGER*8)g(OFFSET)166 1206 y Fq(MPI)p 251 1206
14 2 v 16 w(IREAD)12 b Ft(is)g(a)g(non)o(blo)q(c)o(king)h(v)o(ersion)f
(of)g(the)g Fq(MPI)p 1094 1206 V 16 w(READ)g Ft(in)o(terface.)19
b Fq(MPI)p 1524 1206 V 16 w(IREAD)12 b Ft(asso)q(ciates)75
1262 y(a)f(request)g(handle)h Fq(request)h Ft(with)f(the)f(I/O)h
(request.)18 b(The)12 b(request)f(handle)h(can)g(b)q(e)f(used)h(later)f
(to)g(query)75 1319 y(the)k(status)f(of)g(the)h(read)g(request)g(\(via)
f Fq(MPI)p 851 1319 V 16 w(TEST)p Ft(\),)g(or)h(w)o(ait)f(for)g(its)h
(completion)h(\(via)f Fq(MPI)p 1719 1319 V 16 w(W)l(AIT)p
Ft(\).)166 1375 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 1431 y(supplied)e(bu\013er.)j(The)15 b(user)g(should)h(not)e(access)
h(an)o(y)g(part)f(of)g(the)h(bu\013er)g(after)f(a)h(non)o(blo)q(c)o
(king)h(read)75 1488 y(is)h(called,)h(un)o(til)f(the)f(read)h
(completes)g(\(as)e(indicated)j(b)o(y)e Fq(MPI)p 1187
1488 V 16 w(TEST)h Ft(or)f Fq(MPI)p 1473 1488 V 15 w(W)l(AIT)p
Ft(\).)g Fq(MPI)p 1730 1488 V 16 w(IREAD)75 1544 y Ft(attempts)e(to)g
(read)h(from)g(the)g(\014le)h(asso)q(ciated)f(with)h
Fq(fh)f Ft(\(at)f(the)h Fq(o\013set)g Ft(p)q(osition\),)h(a)f(total)f
(n)o(um)o(b)q(er)h(of)75 1601 y Fq(bufcount)i Ft(data)e(items)g(ha)o
(ving)h Fq(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 Fq(bu\013)p Ft(.)20 b(The)c(n)o(um)o(b)q(er)f(of)g
Fq(buft)o(yp)q(e)75 1657 y Ft(elemen)o(ts)j(actually)h(read)e(can)h(b)q
(e)g(extracted)f(from)g(the)h Fq(MPI)p 1171 1657 V 16
w(TEST)f Ft(or)g Fq(MPI)p 1458 1657 V 16 w(W)l(AIT)h
Ft(return)f(status,)75 1714 y(using)f(the)f(routines)h
Fq(MPI)p 532 1714 V 16 w(GET)p 636 1714 V 16 w(COUNT)g
Ft(or)f Fq(MPI)p 962 1714 V 16 w(GET)p 1066 1714 V 17
w(ELEMENTS)p Ft(.)75 1865 y Fq(MPI)p 160 1865 V 16 w(IREAD)p
308 1865 V 16 w(ALL\(fh,)g(o\013set,)g(bu\013,)g(buft)o(yp)q(e,)i
(bufcount,)g(request\))75 1968 y Fp(int)23 b(MPI)p 245
1968 15 2 v 17 w(Iread)p 382 1968 V 17 w(all\(MPI)p 567
1968 V 16 w(File)g(fh,)h(MPI)p 870 1968 V 16 w(Offset)g(offset,)e(void)
i(*buff,)393 2025 y(MPI)p 468 2025 V 17 w(Datatype)f(buftype,)f(int)i
(bufcount,)f(MPI)p 1321 2025 V 16 w(Request)g(*request\))75
2111 y(MPI)p 150 2111 V 17 w(IREAD)p 287 2111 V 16 w(ALL\(FH,)g
(OFFSET,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)g(REQUEST,)f(IERROR\))170
2168 y(<type>)h(BUFF\(*\))170 2224 y(INTEGER)g(FH,)h(BUFTYPE,)f
(BUFCOUNT,)f(REQUEST,)h(IERROR)170 2281 y(INTEGER*8)g(OFFSET)166
2367 y Fq(MPI)p 251 2367 14 2 v 16 w(IREAD)p 399 2367
V 16 w(ALL)16 b Ft(is)h(a)f(collectiv)o(e)i(v)o(ersion)f(of)f(the)g
(non)o(blo)q(c)o(king)i Fq(MPI)p 1419 2367 V 16 w(IREAD)f
Ft(in)o(terface.)23 b(This)75 2424 y(routine)17 b(is)g(seman)o(tically)
g(iden)o(tical)h(to)e Fq(MPI)p 867 2424 V 16 w(IREAD)p
Ft(,)g(except)g(that)g(all)h(pro)q(cesses)g(in)g(the)f(comm)o(uni-)75
2480 y(cator)e(group)h(asso)q(ciated)h(with)f(the)g(\014le)i(handle)f
Fq(fh)g Ft(m)o(ust)e(call)j Fq(MPI)p 1272 2480 V 15 w(IREAD)p
1419 2480 V 17 w(ALL)p Ft(.)-32 46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)75 49 y Fl(10.3.4)49 b(Nonblo)q(cking)19 b(W)o(rite)75
230 y Fq(MPI)p 160 230 14 2 v 16 w(IWRITE\(fh,)14 b(o\013set,)h
(bu\013,)h(buft)o(yp)q(e,)g(bufcount,)h(request\))117
307 y Ff(IN)155 b Fq(fh)550 b Ff(V)m(alid)13 b(\014le)g(handle)h
(\(handle\))117 382 y(IN)155 b Fq(o\013set)484 b Ff(File)14
b(O\013set)h(\(nonnegativ)o(e)f(o\013set\))117 457 y(IN)155
b Fq(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 Fq(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 Fq(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 Fq(request)452 b Ff(W)m(rite)14 b(request)h(handle)f
(\(handle\))75 807 y Fp(int)47 b(MPI)p 269 807 15 2 v
17 w(Iwrite\(MPI)p 526 807 V 16 w(File)23 b(fh,)h(MPI)p
829 807 V 16 w(Offset)f(offset,)g(void)h(*buff,)393 863
y(MPI)p 468 863 V 17 w(Datatype)f(buftype,)f(int)i(bufcount,)f(MPI)p
1321 863 V 16 w(Request)g(*request\))75 950 y(MPI)p 150
950 V 17 w(IWRITE\(FH,)f(OFFSET,)h(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)g
(REQUEST,)g(IERROR\))170 1006 y(<type>)g(BUFF\(*\))170
1063 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)170
1119 y(INTEGER*8)g(OFFSET)166 1206 y Fq(MPI)p 251 1206
14 2 v 16 w(IWRITE)14 b Ft(is)i(a)e(non)o(blo)q(c)o(king)i(v)o(ersion)f
(of)g(the)g Fq(MPI)p 1138 1206 V 15 w(WRITE)g Ft(in)o(terface.)20
b Fq(MPI)p 1595 1206 V 16 w(IWRITE)15 b Ft(asso-)75 1262
y(ciates)g(a)f(request)h(handle)h Fq(request)h Ft(with)e(the)g(I/O)g
(request.)20 b(The)15 b(request)f(handle)i(can)f(b)q(e)h(used)f(later)
75 1319 y(to)j(query)h(the)g(status)f(of)g(the)h(write)g(request)g
(\(via)f Fq(MPI)p 1083 1319 V 16 w(TEST)p Ft(\),)g(or)h(w)o(ait)f(for)g
(its)h(completion)h(\(via)75 1375 y Fq(MPI)p 160 1375
V 16 w(W)l(AIT)p Ft(\).)166 1431 y(The)c(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 1488 y(supplied)e(bu\013er.)19
b(The)11 b(user)g(should)h(not)f(access)g(an)o(y)f(part)h(of)f(the)h
(bu\013er)g(after)g(the)g(non)o(blo)q(c)o(king)h(write)75
1544 y(is)i(called,)g(un)o(til)h(the)e(write)g(completes)h(\(as)e
(indicated)j(b)o(y)e Fq(MPI)p 1174 1544 V 16 w(TEST)g
Ft(or)f Fq(MPI)p 1452 1544 V 16 w(W)l(AIT)p Ft(\).)h
Fq(MPI)p 1707 1544 V 15 w(IWRITE)75 1601 y Ft(attempts)h(to)g(write)i
(in)o(to)f(the)g(\014le)h(asso)q(ciated)f(with)h Fq(fh)f
Ft(\(at)f(the)h Fq(o\013set)g Ft(p)q(osition\),)h(a)f(total)f(n)o(um)o
(b)q(er)h(of)75 1657 y Fq(bufcount)h Ft(data)e(items)g(ha)o(ving)g
Fq(buft)o(yp)q(e)i Ft(t)o(yp)q(e)e(from)g(the)g(user's)g(bu\013er)g
Fq(bu\013)p Ft(.)20 b(The)14 b(n)o(um)o(b)q(er)g(of)g
Fq(buft)o(yp)q(e)75 1714 y Ft(elemen)o(ts)f(actually)h(written)f(can)f
(b)q(e)i(extracted)e(from)g(the)h Fq(MPI)p 1190 1714
V 16 w(TEST)g Ft(or)f Fq(MPI)p 1468 1714 V 16 w(W)l(AIT)h
Ft(return)f(status,)75 1770 y(using)k(the)f(routines)h
Fq(MPI)p 532 1770 V 16 w(GET)p 636 1770 V 16 w(COUNT)g
Ft(or)f Fq(MPI)p 962 1770 V 16 w(GET)p 1066 1770 V 17
w(ELEMENTS)p Ft(.)75 1921 y Fq(MPI)p 160 1921 V 16 w(IWRITE)p
332 1921 V 16 w(ALL\(fh,)f(o\013set,)h(bu\013,)g(buft)o(yp)q(e,)i
(bufcount,)g(request\))75 2025 y Fp(int)23 b(MPI)p 245
2025 15 2 v 17 w(Iwrite)p 406 2025 V 17 w(all\(MPI)p
591 2025 V 16 w(File)g(fh,)h(MPI)p 894 2025 V 16 w(Offset)f(offset,)g
(void)h(*buff,)393 2081 y(MPI)p 468 2081 V 17 w(Datatype)f(buftype,)f
(int)i(bufcount,)f(MPI)p 1321 2081 V 16 w(Request)g(*request\))75
2168 y(MPI)p 150 2168 V 17 w(IWRITE)p 311 2168 V 16 w(ALL\(FH,)g
(OFFSET,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)g(REQUEST,)f(IERROR\))170
2224 y(<type>)h(BUFF\(*\))170 2281 y(INTEGER)g(FH,)h(BUFTYPE,)f
(BUFCOUNT,)f(REQUEST,)h(IERROR)170 2337 y(INTEGER*8)g(OFFSET)166
2424 y Fq(MPI)p 251 2424 14 2 v 16 w(IWRITE)p 423 2424
V 16 w(ALL)11 b Ft(is)h(a)g(collectiv)o(e)h(v)o(ersion)f(of)f(the)h
(non)o(blo)q(c)o(king)h Fq(MPI)p 1405 2424 V 16 w(IWRITE)e
Ft(in)o(terface.)19 b(This)75 2480 y(routine)c(is)g(seman)o(tically)g
(iden)o(tical)h(to)e Fq(MPI)p 857 2480 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
2536 y(cator)g(group)h(asso)q(ciated)h(with)f(the)g(\014le)i(handle)f
Fq(fh)g Ft(m)o(ust)e(call)j Fq(MPI)p 1272 2536 V 15 w(IWRITE)p
1443 2536 V 16 w(ALL)p Ft(.)1967 46 y Fj(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 Fn(10.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(23)75 49 y Fm(10.4)60
b(Data)19 b(Access)h(With)g(Individual)e(File)i(P)n(ointers)75
151 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
Fq(MPI)p 1636 151 14 2 v 16 w(OPEN)p Ft(.)f(The)75 207
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 264 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 320 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 377 y(up)q(dated.)166
433 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
489 y(explicit)f(o\013set)e(routines)g(describ)q(ed)i(in)f(Section)g
(10.3)e(with)i(the)f(follo)o(wing)h(mo)q(di\014cation:)143
583 y Fh(\017)23 b Ft(the)17 b Fq(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 640 y(p)q(oin)o(ter.)75 734
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 790 y(to)i(p)q(oin)o(t)h(to)f(the)h(next)g(data)f(item)h
(after)f(the)g(last)h(one)g(that)f(will)i(b)q(e)f(actually)h(accessed,)
f(p)q(ossibly)75 846 y(accoun)o(ting)d(for)e(an)h(end)h(of)f(\014le)h
(o)q(ccurrence.)75 968 y Fl(10.4.1)49 b(Blo)q(cking)18
b(Read)75 1148 y Fq(MPI)p 160 1148 V 16 w(READ)p 295
1148 V 17 w(NEXT\(fh,)d(bu\013,)g(buft)o(yp)q(e,)i(bufcount,)g
(status\))117 1226 y Ff(IN)155 b Fq(fh)550 b Ff(V)m(alid)13
b(\014le)g(handle)h(\(handle\))117 1301 y(OUT)108 b Fq(bu\013)514
b Ff(Initial)13 b(address)i(of)e(the)i(user's)f(bu\013er)h(\(in)o
(teger\))117 1376 y(IN)155 b Fq(buft)o(yp)q(e)447 b Ff(User's)15
b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117 1451 y(IN)155
b Fq(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 1526 y(OUT)108
b Fq(status)476 b Ff(Status)15 b(information)c(\(Status\))75
1651 y Fp(int)23 b(MPI)p 245 1651 15 2 v 17 w(Read)p
358 1651 V 17 w(next\(MPI)p 567 1651 V 16 w(File)g(fh,)h(void)f(*buff,)
g(MPI)p 1156 1651 V 17 w(Datatype)g(buftype,)393 1707
y(int)h(bufcount,)e(MPI)p 802 1707 V 17 w(Status)h(*status\))75
1794 y(MPI)p 150 1794 V 17 w(READ)p 263 1794 V 16 w(NEXT\(FH,)g(BUFF,)g
(BUFTYPE,)g(BUFCOUNT,)g(STATUS,)g(IERROR\))170 1850 y(<type>)g
(BUFF\(*\))170 1906 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f
(STATUS\(MPI)p 1153 1906 V 16 w(STATUS)p 1313 1906 V
16 w(SIZE\),)h(IERROR)166 1993 y Fq(MPI)p 251 1993 14
2 v 16 w(READ)p 386 1993 V 17 w(NEXT)14 b Ft(is)g(seman)o(tically)g
(iden)o(tical)h(to)e Fq(MPI)p 1156 1993 V 16 w(READ)p
Ft(,)g(with)h Fq(o\013set)g Ft(set)f(to)g(the)g(curren)o(t)75
2049 y(individual)21 b(\014le)e(p)q(oin)o(ter)g(p)q(osition)g(main)o
(tained)g(b)o(y)f(the)g(system.)28 b(The)18 b(\014le)h(p)q(oin)o(ter)g
(is)f(up)q(dated)h(b)o(y)75 2106 y(the)c(amoun)o(t)g(of)f(data)h
(requested.)75 2257 y Fq(MPI)p 160 2257 V 16 w(READ)p
295 2257 V 17 w(NEXT)p 432 2257 V 17 w(ALL\(fh,)f(bu\013,)h(buft)o(yp)q
(e,)i(bufcount,)g(status\))75 2360 y Fp(int)23 b(MPI)p
245 2360 15 2 v 17 w(Read)p 358 2360 V 17 w(next)p 471
2360 V 16 w(all\(MPI)p 655 2360 V 17 w(File)g(fh,)g(void)h(*buff,)f
(MPI)p 1245 2360 V 17 w(Datatype)f(buftype,)393 2417
y(int)i(bufcount,)e(MPI)p 802 2417 V 17 w(Status)h(*status\))75
2503 y(MPI)p 150 2503 V 17 w(READ)p 263 2503 V 16 w(NEXT)p
375 2503 V 17 w(ALL\(FH,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)g(STATUS,)f
(IERROR\))170 2560 y(<type>)h(BUFF\(*\))170 2616 y(INTEGER)g(FH,)h
(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p 1153 2616 V 16
w(STATUS)p 1313 2616 V 16 w(SIZE\),)h(IERROR)-32 46 y
Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)166 49 y Fq(MPI)p 251 49 14 2 v 16 w(READ)p 386
49 V 17 w(NEXT)p 523 49 V 17 w(ALL)17 b Ft(is)h(a)f(collectiv)o(e)i(v)o
(ersion)f(of)f(the)h(blo)q(c)o(king)h Fq(MPI)p 1481 49
V 15 w(READ)p 1615 49 V 17 w(NEXT)g Ft(in)o(ter-)75 106
y(face.)g(This)12 b(routine)h(is)f(seman)o(tically)i(iden)o(tical)g(to)
d Fq(MPI)p 1055 106 V 16 w(READ)p 1190 106 V 17 w(NEXT)p
Ft(,)h(except)g(that)g(all)h(pro)q(cesses)f(in)75 162
y(the)g(comm)o(unicator)g(group)g(asso)q(ciated)g(with)h(the)f(\014le)h
(handle)h Fq(fh)e Ft(m)o(ust)g(call)h Fq(MPI)p 1497 162
V 16 w(READ)p 1632 162 V 17 w(NEXT)p 1769 162 V 17 w(ALL)p
Ft(.)75 284 y Fl(10.4.2)49 b(Blo)q(cking)18 b(W)o(rite)75
464 y Fq(MPI)p 160 464 V 16 w(WRITE)p 319 464 V 16 w(NEXT\(fh,)e
(bu\013,)f(buft)o(yp)q(e,)i(bufcount,)f(status\))117
541 y Ff(IN)155 b Fq(fh)550 b Ff(V)m(alid)13 b(\014le)g(handle)h
(\(handle\))117 617 y(IN)155 b Fq(bu\013)514 b Ff(Initial)13
b(address)i(of)e(the)i(user's)f(bu\013er)h(\(in)o(teger\))117
692 y(IN)155 b Fq(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o
(yp)q(e)f(\(handle\))117 767 y(IN)155 b Fq(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 842 y(OUT)108 b Fq(status)476
b Ff(Status)15 b(information)c(\(Status\))75 966 y Fp(int)23
b(MPI)p 245 966 15 2 v 17 w(Write)p 382 966 V 17 w(next\(MPI)p
591 966 V 16 w(File)g(fh,)h(void)f(*buff,)g(MPI)p 1180
966 V 17 w(Datatype)f(buftype,)393 1023 y(int)i(bufcount,)e(MPI)p
802 1023 V 17 w(Status)h(*status\))75 1109 y(MPI)p 150
1109 V 17 w(WRITE)p 287 1109 V 16 w(NEXT\(FH,)g(BUFF,)g(BUFTYPE,)g
(BUFCOUNT,)g(STATUS,)g(IERROR\))170 1166 y(<type>)g(BUFF\(*\))170
1222 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p
1153 1222 V 16 w(STATUS)p 1313 1222 V 16 w(SIZE\),)h(IERROR)166
1309 y Fq(MPI)p 251 1309 14 2 v 16 w(WRITE)p 410 1309
V 16 w(NEXT)16 b Ft(is)f(seman)o(tically)h(iden)o(tical)h(to)d
Fq(MPI)p 1187 1309 V 16 w(WRITE)p Ft(,)h(with)g Fq(o\013set)g
Ft(set)g(to)g(the)g(cur-)75 1365 y(ren)o(t)h(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.)21
b(The)16 b(\014le)h(p)q(oin)o(ter)g(is)f(up)q(dated)75
1422 y(b)o(y)f(the)g(amoun)o(t)g(of)g(data)f(requested.)75
1573 y Fq(MPI)p 160 1573 V 16 w(WRITE)p 319 1573 V 16
w(NEXT)p 455 1573 V 17 w(ALL\(fh,)g(bu\013,)i(buft)o(yp)q(e,)g
(bufcount,)h(status\))75 1676 y Fp(int)47 b(MPI)p 269
1676 15 2 v 17 w(Write)p 406 1676 V 17 w(next)p 519 1676
V 16 w(all\(MPI)p 703 1676 V 16 w(File)24 b(fh,)f(void)h(*buff,)f(MPI)p
1293 1676 V 16 w(Datatype)g(buftype,)393 1733 y(int)h(bufcount,)e(MPI)p
802 1733 V 17 w(Status)h(*status\))75 1819 y(MPI)p 150
1819 V 17 w(WRITE)p 287 1819 V 16 w(NEXT)p 399 1819 V
17 w(ALL\(FH,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)f(STATUS,)h(IERROR\))170
1876 y(<type>)g(BUFF\(*\))170 1932 y(INTEGER)g(FH,)h(BUFTYPE,)f
(BUFCOUNT,)f(STATUS\(MPI)p 1153 1932 V 16 w(STATUS)p
1313 1932 V 16 w(SIZE\),)h(IERROR)166 2018 y Fq(MPI)p
251 2018 14 2 v 16 w(WRITE)p 410 2018 V 16 w(NEXT)p 546
2018 V 17 w(ALL)12 b Ft(is)h(a)f(collectiv)o(e)i(v)o(ersion)e(of)g(the)
h(blo)q(c)o(king)h Fq(MPI)p 1463 2018 V 15 w(WRITE)p
1621 2018 V 17 w(NEXT)f Ft(in)o(ter-)75 2075 y(face.)20
b(This)15 b(routine)g(is)g(seman)o(tically)h(iden)o(tical)g(to)e
Fq(MPI)p 1071 2075 V 16 w(WRITE)p 1230 2075 V 16 w(NEXT)p
Ft(,)h(except)g(that)f(all)i(pro)q(cesses)75 2131 y(in)11
b(the)f(comm)o(unicator)g(group)g(asso)q(ciated)g(with)h(the)f(\014le)h
(handle)h Fq(fh)e Ft(m)o(ust)g(call)h Fq(MPI)p 1523 2131
V 16 w(WRITE)p 1682 2131 V 16 w(NEXT)p 1818 2131 V 17
w(ALL)p Ft(.)1967 46 y Fj(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 Fn(10.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(25)75 49 y Fl(10.4.3)49
b(Nonblo)q(cking)19 b(Read)75 230 y Fq(MPI)p 160 230
14 2 v 16 w(IREAD)p 308 230 V 16 w(NEXT\(fh,)d(bu\013,)f(buft)o(yp)q
(e,)i(bufcount,)g(request\))117 307 y Ff(IN)155 b Fq(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 382
y(OUT)108 b Fq(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i
(user's)f(bu\013er)h(\(in)o(teger\))117 457 y(IN)155
b Fq(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f
(\(handle\))117 532 y(IN)155 b Fq(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 607 y(OUT)108 b Fq(request)452 b Ff(Read)14 b(request)h(handle)f
(\(handle\))75 732 y Fp(int)23 b(MPI)p 245 732 15 2 v
17 w(Iread)p 382 732 V 17 w(next\(MPI)p 591 732 V 16
w(File)g(fh,)h(void)f(*buff,)g(MPI)p 1180 732 V 17 w(Datatype)f
(buftype,)393 788 y(int)i(bufcount,)e(MPI)p 802 788 V
17 w(Request)h(*request\))75 875 y(MPI)p 150 875 V 17
w(IREAD)p 287 875 V 16 w(NEXT\(FH,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)g
(REQUEST,)f(IERROR\))170 931 y(<type>)h(BUFF\(*\))170
988 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)166
1074 y Fq(MPI)p 251 1074 14 2 v 16 w(IREAD)p 399 1074
V 16 w(NEXT)12 b Ft(is)g(seman)o(tically)g(iden)o(tical)h(to)d
Fq(MPI)p 1157 1074 V 16 w(IREAD)p Ft(,)h(with)g Fq(o\013set)h
Ft(set)e(to)h(the)g(curren)o(t)75 1130 y(individual)21
b(\014le)e(p)q(oin)o(ter)g(p)q(osition)g(main)o(tained)g(b)o(y)f(the)g
(system.)28 b(The)18 b(\014le)h(p)q(oin)o(ter)g(is)f(up)q(dated)h(b)o
(y)75 1187 y(the)c(amoun)o(t)g(of)f(data)h(requested.)75
1338 y Fq(MPI)p 160 1338 V 16 w(IREAD)p 308 1338 V 16
w(NEXT)p 444 1338 V 17 w(ALL\(fh,)g(bu\013,)g(buft)o(yp)q(e,)i
(bufcount,)g(request\))75 1442 y Fp(int)23 b(MPI)p 245
1442 15 2 v 17 w(Iread)p 382 1442 V 17 w(next)p 495 1442
V 16 w(all\(MPI)p 679 1442 V 17 w(File)g(fh,)g(void)h(*buff,)f(MPI)p
1269 1442 V 16 w(Datatype)g(buftype,)393 1498 y(int)h(bufcount,)e(MPI)p
802 1498 V 17 w(Request)h(*request\))75 1584 y(MPI)p
150 1584 V 17 w(IREAD)p 287 1584 V 16 w(NEXT)p 399 1584
V 17 w(ALL\(FH,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)f(REQUEST,)h(IERROR\))
170 1641 y(<type>)g(BUFF\(*\))170 1697 y(INTEGER)g(FH,)h(BUFTYPE,)f
(BUFCOUNT,)f(REQUEST,)h(IERROR)166 1784 y Fq(MPI)p 251
1784 14 2 v 16 w(IREAD)p 399 1784 V 16 w(NEXT)p 535 1784
V 17 w(ALL)15 b Ft(is)g(a)f(collectiv)o(e)j(v)o(ersion)e(of)f(the)h
(blo)q(c)o(king)h Fq(MPI)p 1471 1784 V 16 w(IREAD)p 1619
1784 V 16 w(NEXT)g Ft(in)o(ter-)75 1840 y(face.)i(This)12
b(routine)f(is)h(seman)o(tically)g(iden)o(tical)h(to)d
Fq(MPI)p 1048 1840 V 16 w(IREAD)p 1196 1840 V 16 w(NEXT)p
Ft(,)h(except)h(that)e(all)i(pro)q(cesses)f(in)75 1897
y(the)g(comm)o(unicator)g(group)f(asso)q(ciated)i(with)f(the)g(\014le)h
(handle)h Fq(fh)e Ft(m)o(ust)f(call)i Fq(MPI)p 1484 1897
V 16 w(IREAD)p 1632 1897 V 17 w(NEXT)p 1769 1897 V 17
w(ALL)p Ft(.)75 2018 y Fl(10.4.4)49 b(Nonblo)q(cking)19
b(W)o(rite)75 2199 y Fq(MPI)p 160 2199 V 16 w(IWRITE)p
332 2199 V 16 w(NEXT\(fh,)c(bu\013,)g(buft)o(yp)q(e,)i(bufcount,)g
(request\))117 2276 y Ff(IN)155 b Fq(fh)550 b Ff(V)m(alid)13
b(\014le)g(handle)h(\(handle\))117 2351 y(IN)155 b Fq(bu\013)514
b Ff(Initial)13 b(address)i(of)e(the)i(user's)f(bu\013er)h(\(in)o
(teger\))117 2426 y(IN)155 b Fq(buft)o(yp)q(e)447 b Ff(User's)15
b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117 2501 y(IN)155
b Fq(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 2577 y(OUT)108
b Fq(request)452 b Ff(W)m(rite)14 b(request)h(handle)f(\(handle\))75
2701 y Fp(int)23 b(MPI)p 245 2701 15 2 v 17 w(Iwrite)p
406 2701 V 17 w(next\(MPI)p 615 2701 V 16 w(File)g(fh,)g(void)h(*buff,)
f(MPI)p 1204 2701 V 17 w(Datatype)f(buftype,)-32 46 y
Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)393 49 y Fp(int)24 b(bufcount,)e(MPI)p 802 49 15
2 v 17 w(Request)h(*request\))75 136 y(MPI)p 150 136
V 17 w(IWRITE)p 311 136 V 16 w(NEXT\(FH,)g(BUFF,)g(BUFTYPE,)g
(BUFCOUNT,)f(REQUEST,)h(IERROR\))170 192 y(<type>)g(BUFF\(*\))170
249 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)166
335 y Fq(MPI)p 251 335 14 2 v 16 w(IWRITE)p 423 335 V
16 w(NEXT)f Ft(is)g(seman)o(tically)h(iden)o(tical)h(to)d
Fq(MPI)p 1234 335 V 16 w(IWRITE)p Ft(,)g(with)h Fq(o\013set)g
Ft(set)g(to)f(the)75 392 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
448 y(b)o(y)k(the)g(amoun)o(t)g(of)g(data)f(requested.)75
599 y Fq(MPI)p 160 599 V 16 w(IWRITE)p 332 599 V 16 w(NEXT)p
468 599 V 17 w(ALL\(fh,)g(bu\013,)h(buft)o(yp)q(e,)i(bufcount,)g
(request\))75 703 y Fp(int)23 b(MPI)p 245 703 15 2 v
17 w(Iwrite)p 406 703 V 17 w(next)p 519 703 V 16 w(all\(MPI)p
703 703 V 16 w(File)h(fh,)f(void)h(*buff,)f(MPI)p 1293
703 V 16 w(Datatype)g(buftype,)393 759 y(int)h(bufcount,)e(MPI)p
802 759 V 17 w(Request)h(*request\))75 846 y(MPI)p 150
846 V 17 w(IWRITE)p 311 846 V 16 w(NEXT)p 423 846 V 17
w(ALL\(FH,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)f(REQUEST,)h(IERROR\))170
902 y(<type>)g(BUFF\(*\))170 958 y(INTEGER)g(FH,)h(BUFTYPE,)f
(BUFCOUNT,)f(REQUEST,)h(IERROR)166 1045 y Fq(MPI)p 251
1045 14 2 v 16 w(IWRITE)p 423 1045 V 16 w(NEXT)p 559
1045 V 17 w(ALL)15 b Ft(is)h(a)f(collectiv)o(e)i(v)o(ersion)f(of)f(the)
h(blo)q(c)o(king)h Fq(MPI)p 1501 1045 V 16 w(IWRITE)p
1673 1045 V 16 w(NEXT)f Ft(in-)75 1101 y(terface.)26
b(This)17 b(routine)h(is)g(seman)o(tically)g(iden)o(tical)h(to)e
Fq(MPI)p 1149 1101 V 15 w(IWRITE)p 1320 1101 V 16 w(NEXT)p
Ft(,)h(except)f(that)g(all)h(pro-)75 1158 y(cesses)10
b(in)h(the)g(comm)o(unicator)f(group)f(asso)q(ciated)i(with)f(the)g
(\014le)i(handle)f Fq(fh)g Ft(m)o(ust)e(call)i Fq(MPI)p
1647 1158 V 16 w(IWRITE)p 1819 1158 V 16 w(NEXT)p 1955
1158 V 17 w(ALL)p Ft(.)75 1280 y Fl(10.4.5)49 b(Seek)16
b(\(indep)q(endent\))75 1460 y Fq(MPI)p 160 1460 V 16
w(SEEK\(fh,)f(o\013set,)g(whence\))117 1537 y Ff(IN)155
b Fq(fh)550 b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117
1612 y(IN)155 b Fq(o\013set)484 b Ff(File)14 b(o\013set)g(\(o\013set\))
117 1687 y(IN)155 b Fq(whence)450 b Ff(Up)q(date)15 b(mo)q(de)e(\(in)o
(teger\))75 1812 y Fp(int)23 b(MPI)p 245 1812 15 2 v
17 w(Seek\(MPI)p 454 1812 V 16 w(File)h(fh,)f(MPI)p 757
1812 V 17 w(Offset)g(offset,)g(MPI)p 1204 1812 V 17 w(Whence)g
(whence\))75 1898 y(MPI)p 150 1898 V 17 w(SEEK\(FH,)g(OFFSET,)f
(WHENCE\))170 1955 y(INTEGER)h(FH,)h(WHENCE)170 2011
y(INTEGER*8)f(OFFSET)166 2098 y Fq(MPI)p 251 2098 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 Fq(whence)p Ft(,)k(whic)o(h)e(could)g(ha)o(v)o
(e)75 2154 y(the)d(follo)o(wing)h(p)q(ossible)h(v)m(alues:)143
2248 y Fh(\017)23 b Fg(MPI)p 266 2248 13 2 v 14 w(SEEK)p
382 2248 V 14 w(SET)p Ft(:)15 b(the)h(p)q(oin)o(ter)f(is)h(set)f(to)f
Fq(o\013set)143 2342 y Fh(\017)23 b Fg(MPI)p 266 2342
V 14 w(SEEK)p 382 2342 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
Fq(o\013set)143 2435 y Fh(\017)23 b Fg(MPI)p 266 2435
V 14 w(SEEK)p 382 2435 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 Fq(o\013set)166
2529 y Ft(The)c Fq(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
Fq(et)o(yp)q(e)p Ft(.)20 b(The)12 b(constan)o(t)75 2586
y Fg(MPI)p 152 2586 V 14 w(OFFSET)p 321 2586 V 14 w(ZERO)j
Ft(is)h(de\014ned)g(to)f(b)q(e)h(o\013set)e(zero.)1967
46 y Fj(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 Fn(10.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(27)75 49 y Fm(10.5)60
b(Data)19 b(Access)h(with)g(Sha)n(red)f(File)g(P)n(ointers)75
233 y Fe(Discussion:)c Ff(There)f(is)e(some)g(con)o(tro)o(v)o(ersy)h
(as)g(to)f(whether)i(w)o(e)f(should)f(k)o(eep)i(shared)f(\014le)g(p)q
(oin)o(ters,)g(and)f(if)g(w)o(e)75 290 y(do,)h(the)i(exact)f(seman)o
(tics)g(of)f(shared)i(\014le)f(p)q(oin)o(ter)g(op)q(erations.)166
429 y Ft(The)g(system)f(main)o(tains)h(exactly)g(one)g(shared)g(\014le)
h(p)q(oin)o(ter)f(p)q(er)g(collectiv)o(e)i Fq(MPI)p 1580
429 14 2 v 16 w(OPEN)e Ft(\(shared)75 485 y(among)19
b(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 542 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 598 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 655 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 711
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
768 y(o\013set)i(routines)i(describ)q(ed)h(in)f(Section)g(10.3)e(with)i
(the)f(follo)o(wing)h(mo)q(di\014cations:)143 862 y Fh(\017)23
b Ft(the)f Fq(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
918 y(p)q(oin)o(ter,)143 1012 y Fh(\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
1068 y(calls)h(w)o(ere)f(serialized,)i(and)143 1162 y
Fh(\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 1219 y Fq(\014let)o(yp)q(e)f Ft(when)g(op)q(ening)g(the)g
(\014le.)75 1312 y(The)e(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 1369 y(means)i(to)g(enforce)g(a)g(sp)q(eci\014c)i
(order.)166 1425 y(After)j(a)h(shared)g(\014le)g(p)q(oin)o(ter)h(op)q
(eration)f(is)g(initiated,)i(the)e(shared)g(\014le)h(p)q(oin)o(ter)f
(is)g(up)q(dated)75 1482 y(to)d(p)q(oin)o(t)h(to)f(the)h(next)g(data)f
(item)h(after)f(the)g(last)h(one)g(that)f(will)i(b)q(e)f(actually)h
(accessed,)f(p)q(ossibly)75 1538 y(accoun)o(ting)d(for)e(an)h(end)h(of)
f(\014le)h(o)q(ccurrence.)189 1644 y Fk(A)n(dvic)n(e)i(to)i(users.)60
b Ft(In)20 b(order)e(to)g(ensure)h(that)f(data)g(access)h(using)g(the)g
(shared)g(\014le)g(p)q(oin)o(ter)189 1701 y(is)g(w)o(ell)h(de\014ned,)h
(all)e(pro)q(cesses)h(m)o(ust)e(use)h(the)g(same)g Fq(\014let)o(yp)q(e)
h Ft(when)g(op)q(ening)g(the)f(\014le.)32 b(F)l(or)189
1757 y(example,)14 b(consider)g(a)f(single)h Fq(MPI)p
798 1757 V 16 w(OPEN)g Ft(in)g(whic)o(h)g(pro)q(cess)f(1)g(uses)h
(\014let)o(yp)q(e)g Fq(MPI)p 1655 1757 V 16 w(CHAR)g
Ft(and)189 1814 y(pro)q(cess)k(2)f(uses)h(\014let)o(yp)q(e)h
Fq(MPI)p 737 1814 V 16 w(DOUBLE)p Ft(.)f(If)g(pro)q(cess)g(1)g(reads)f
(a)h(single)h(c)o(haracter)e(from)g(the)189 1870 y(\014le,)i(the)f
(shared)g(\014le)g(p)q(oin)o(ter)h(p)q(oin)o(ts)f(to)f(the)h(second)g
(c)o(haracter)f(relativ)o(e)i(to)e(pro)q(cess)h(1,)g(but)189
1927 y(p)q(oin)o(ts)13 b(in)o(to)f(the)h(middle)h(of)e(the)h(\014rst)f
(double)i(relativ)o(e)f(to)f(pro)q(cess)h(2.)18 b(A)o(t)12
b(this)h(p)q(oin)o(t,)h(the)e(e\013ect)189 1983 y(of)i(a)h(shared)h(p)q
(oin)o(ter)f(op)q(eration)h(on)f(pro)q(cess)g(2)g(is)h(ill-de\014ned.)
23 b(\()p Fk(End)16 b(of)g(advic)n(e)g(to)h(users.)p
Ft(\))-32 46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)75 49 y Fl(10.5.1)49 b(Indep)q(endent)16 b(Op)q(erations)75
135 y Fq(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(IN)155 b Fq(fh)550 b Ff(V)m(alid)13 b(\014le)g(handle)h
(\(handle\))117 468 y(OUT)108 b Fq(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 Fq(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 Fq(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 Fq(status)476
b Ff(Status)15 b(information)c(\(Status\))75 818 y Fp(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(MPI)p 150
960 V 17 w(READ)p 263 960 V 16 w(SHARED\(FH,)g(BUFF,)g(BUFTYPE,)g
(BUFCOUNT,)f(STATUS,)h(IERROR\))170 1017 y(<type>)g(BUFF\(*\))170
1073 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p
1153 1073 V 16 w(STATUS)p 1313 1073 V 16 w(SIZE\),)h(IERROR)166
1160 y Fq(MPI)p 251 1160 14 2 v 16 w(READ)p 386 1160
V 17 w(SHARED)15 b Ft(is)f(seman)o(tically)i(iden)o(tical)g(to)d
Fq(MPI)p 1216 1160 V 16 w(READ)p Ft(,)h(with)h Fq(o\013set)f
Ft(set)g(to)f(the)i(cur-)75 1216 y(ren)o(t)g(shared)g(\014le)i(p)q(oin)
o(ter)f(p)q(osition)g(main)o(tained)g(b)o(y)g(the)f(system.)20
b(Shared)c(\014le)g(p)q(oin)o(ter)g(calls)h(within)75
1273 y(a)e(single)i(\014le)g(handle)g(comm)o(unicator)e(group)h(are)f
(guaran)o(teed)g(to)g(b)q(e)i(sequen)o(tially)g(consisten)o(t.)22
b(The)75 1329 y(\014le)16 b(p)q(oin)o(ter)g(is)g(up)q(dated)g(b)o(y)f
(the)g(amoun)o(t)f(of)h(data)g(requested.)75 1449 y Fq(Blo)q(cking)h(W)
o(rite)f(\(indep)q(endent\))75 1630 y(MPI)p 160 1630
V 16 w(WRITE)p 319 1630 V 16 w(SHARED\(fh,)h(bu\013,)f(buft)o(yp)q(e,)i
(bufcount,)g(status\))117 1707 y Ff(IN)155 b Fq(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 1782
y(IN)155 b Fq(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i(user's)
f(bu\013er)h(\(in)o(teger\))117 1857 y(IN)155 b Fq(buft)o(yp)q(e)447
b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117
1932 y(IN)155 b Fq(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 2007 y(OUT)108 b Fq(status)476 b Ff(Status)15 b(information)c
(\(Status\))75 2132 y Fp(int)23 b(MPI)p 245 2132 15 2
v 17 w(Write)p 382 2132 V 17 w(shared\(MPI)p 639 2132
V 16 w(File)g(fh,)g(void)h(*buff,)f(MPI)p 1228 2132 V
16 w(Datatype)g(buftype,)393 2188 y(int)h(bufcount,)e(MPI)p
802 2188 V 17 w(Status)h(*status\))75 2275 y(MPI)p 150
2275 V 17 w(WRITE)p 287 2275 V 16 w(SHARED\(FH,)g(BUFF,)g(BUFTYPE,)g
(BUFCOUNT,)f(STATUS,)h(IERROR\))170 2331 y(<type>)g(BUFF\(*\))170
2388 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(STATUS\(MPI)p
1153 2388 V 16 w(STATUS)p 1313 2388 V 16 w(SIZE\),)h(IERROR)166
2474 y Fq(MPI)p 251 2474 14 2 v 16 w(WRITE)p 410 2474
V 16 w(SHARED)d Ft(is)f(seman)o(tically)h(iden)o(tical)g(to)e
Fq(MPI)p 1262 2474 V 16 w(WRITE)p Ft(,)g(with)h Fq(o\013set)g
Ft(set)g(to)f(the)75 2531 y(curren)o(t)10 b(shared)h(\014le)g(p)q(oin)o
(ter)g(p)q(osition)g(main)o(tained)g(b)o(y)f(the)h(system.)18
b(Shared)10 b(\014le)i(p)q(oin)o(ter)e(calls)i(within)75
2587 y(a)j(single)i(\014le)g(handle)g(comm)o(unicator)e(group)h(are)f
(guaran)o(teed)g(to)g(b)q(e)i(sequen)o(tially)g(consisten)o(t.)22
b(The)75 2643 y(\014le)16 b(p)q(oin)o(ter)g(is)g(up)q(dated)g(b)o(y)f
(the)g(amoun)o(t)f(of)h(data)g(requested.)1967 46 y Fj(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 Fn(10.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(29)75 49 y Fq(Nonblo)q(cking)16
b(Read)g(\(indep)q(enden)q(t\))75 230 y(MPI)p 160 230
14 2 v 16 w(IREAD)p 308 230 V 16 w(SHARED\(fh,)g(bu\013,)g(buft)o(yp)q
(e,)g(bufcount,)h(request\))117 307 y Ff(IN)155 b Fq(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 382
y(OUT)108 b Fq(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i
(user's)f(bu\013er)h(\(in)o(teger\))117 457 y(IN)155
b Fq(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f
(\(handle\))117 532 y(IN)155 b Fq(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 607 y(OUT)108 b Fq(request)452 b Ff(Read)14 b(request)h(handle)f
(\(handle\))75 732 y Fp(int)23 b(MPI)p 245 732 15 2 v
17 w(Iread)p 382 732 V 17 w(shared\(MPI)p 639 732 V 16
w(File)g(fh,)g(void)h(*buff,)f(MPI)p 1228 732 V 16 w(Datatype)g
(buftype,)393 788 y(int)h(bufcount,)e(MPI)p 802 788 V
17 w(Request)h(*request\))75 875 y(MPI)p 150 875 V 17
w(IREAD)p 287 875 V 16 w(SHARED\(FH,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)f
(REQUEST,)h(IERROR\))170 931 y(<type>)g(BUFF\(*\))170
988 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)166
1074 y Fq(MPI)p 251 1074 14 2 v 16 w(IREAD)p 399 1074
V 16 w(SHARED)f Ft(is)g(seman)o(tically)g(iden)o(tical)g(to)e
Fq(MPI)p 1262 1074 V 16 w(IREAD)p Ft(,)h(with)g Fq(o\013set)g
Ft(set)g(to)f(the)75 1130 y(curren)o(t)h(shared)g(\014le)h(p)q(oin)o
(ter)f(p)q(osition)h(main)o(tained)g(b)o(y)f(the)g(system.)37
b(Shared)21 b(\014le)h(p)q(oin)o(ter)g(calls)75 1187
y(within)13 b(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
1243 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 1363 y Fq(Nonblo)q(cking)i(W)o
(rite)f(\(indep)q(enden)q(t\))75 1544 y(MPI)p 160 1544
V 16 w(IWRITE)p 332 1544 V 16 w(SHARED\(fh,)h(bu\013,)f(buft)o(yp)q(e,)
i(bufcount,)g(request\))117 1621 y Ff(IN)155 b Fq(fh)550
b Ff(V)m(alid)13 b(\014le)g(handle)h(\(handle\))117 1696
y(IN)155 b Fq(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i(user's)
f(bu\013er)h(\(in)o(teger\))117 1771 y(IN)155 b Fq(buft)o(yp)q(e)447
b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117
1846 y(IN)155 b Fq(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 1922 y(OUT)108 b Fq(request)452 b Ff(W)m(rite)14
b(request)h(handle)f(\(handle\))75 2046 y Fp(int)23 b(MPI)p
245 2046 15 2 v 17 w(Iwrite)p 406 2046 V 17 w(shared\(MPI)p
663 2046 V 15 w(File)h(fh,)f(void)g(*buff,)h(MPI)p 1252
2046 V 16 w(Datatype)f(buftype,)393 2102 y(int)h(bufcount,)e(MPI)p
802 2102 V 17 w(Request)h(*request\))75 2189 y(MPI)p
150 2189 V 17 w(IWRITE)p 311 2189 V 16 w(SHARED\(FH,)g(BUFF,)g
(BUFTYPE,)g(BUFCOUNT,)f(REQUEST,)h(IERROR\))170 2245
y(<type>)g(BUFF\(*\))170 2302 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f
(REQUEST,)h(IERROR)166 2388 y Fq(MPI)p 251 2388 14 2
v 16 w(IWRITE)p 423 2388 V 16 w(SHARED)17 b Ft(is)g(seman)o(tically)g
(iden)o(tical)h(to)d Fq(MPI)p 1262 2388 V 16 w(IWRITE)p
Ft(,)h(with)g Fq(o\013set)g Ft(set)g(to)g(the)75 2445
y(curren)o(t)10 b(shared)h(\014le)g(p)q(oin)o(ter)g(p)q(osition)g(main)
o(tained)g(b)o(y)f(the)h(system.)18 b(Shared)10 b(\014le)i(p)q(oin)o
(ter)e(calls)i(within)75 2501 y(a)j(single)i(\014le)g(handle)g(comm)o
(unicator)e(group)h(are)f(guaran)o(teed)g(to)g(b)q(e)i(sequen)o(tially)
g(consisten)o(t.)22 b(The)75 2558 y(\014le)16 b(p)q(oin)o(ter)g(is)g
(up)q(dated)g(b)o(y)f(the)g(amoun)o(t)f(of)h(data)g(requested.)-32
46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)75 49 y Fl(10.5.2)49 b(Collective)18 b(Op)q(erations)75
135 y Ft(Unlik)o(e)h(other)e(collectiv)o(e)j(op)q(erations,)e(a)f
(barrier)h(sync)o(hronization)g(\(among)f(the)g(pro)q(cesses)h(asso)q
(ci-)75 192 y(ated)g(with)g(the)g(comm)o(unicator)f(in)o(v)o(olv)o(ed)i
(in)g(the)f(op)q(eration\))g(is)g(enforced)g(for)g(shared)g(\014le)g(p)
q(oin)o(ter)75 248 y(op)q(erations.)166 304 y(The)12
b(seman)o(tics)g(of)f(a)g(collectiv)o(e)j(access)d(using)i(a)e(shared)h
(\014le)h(p)q(oin)o(ter)f(is)g(that)f(the)h(accesses)g(to)f(the)75
361 y(\014le)i(will)h(b)q(e)f(in)g(the)f(order)g(determined)h(b)o(y)f
(the)g(ranks)g(of)g(the)g(pro)q(cesses)g(within)i(the)e(group)g(asso)q
(ciated)75 417 y(with)k(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 474 y(b)o(y)c(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)h(call)g
(can)g(only)f(return)h(after)e(all)75 530 y(the)15 b(pro)q(cesses)g
(within)h(the)f(group)g(ha)o(v)o(e)f(initiated)j(their)e(accesses.)20
b(In)c(other)e(terms,)h(this)g(seman)o(tics)75 587 y(implies)j(a)d
(barrier)h(sync)o(hronization)g(among)f(all)h(the)g(pro)q(cesses)g(of)f
(the)h(group,)f(that)f(tak)o(es)h(place)i(at)75 643 y(the)h(outset)f
(of)h(a)g(blo)q(c)o(king)h(op)q(eration)f(or)g(at)f(the)h(initiation)i
(of)d(a)h(non)o(blo)q(c)o(king)h(op)q(eration.)29 b(When)75
700 y(the)15 b(call)i(returns,)e(the)g(shared)g(\014le)i(p)q(oin)o(ter)
e(p)q(oin)o(ts)h(to)f(the)g(next)h(b)o(yte)f(accessible,)h(according)g
(to)f(the)75 756 y(\014let)o(yp)q(e)h(used)g(b)o(y)f(all)h(pro)q
(cesses,)g(after)e(the)h(last)g(b)o(yte)g(requested.)75
873 y Fq(Blo)q(cking)h(Read)g(\(collective\))75 1053
y(MPI)p 160 1053 14 2 v 16 w(READ)p 295 1053 V 17 w(SHARED)p
488 1053 V 17 w(ALL\(fh,)f(bu\013,)g(buft)o(yp)q(e,)i(bufcount,)g
(status\))117 1130 y Ff(IN)155 b Fq(fh)550 b Ff([SAME])14
b(V)m(alid)e(\014le)i(handle)g(\(handle\))117 1202 y(OUT)108
b Fq(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i(user's)f
(bu\013er)h(\(in)o(teger\))117 1274 y(IN)155 b Fq(buft)o(yp)q(e)447
b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117
1346 y(IN)155 b Fq(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 1417 y(OUT)108 b Fq(status)476 b Ff(Status)15 b(information)c
(\(Status\))75 1542 y Fp(int)47 b(MPI)p 269 1542 15 2
v 17 w(Read)p 382 1542 V 17 w(shared)p 543 1542 V 16
w(all\(MPI)p 727 1542 V 16 w(File)24 b(fh,)f(void)g(*buff,)g(MPI)p
1316 1542 V 17 w(Datatype)g(buftype,)393 1598 y(int)h(bufcount,)e(MPI)p
802 1598 V 17 w(Status)h(*status\))75 1685 y(MPI)p 150
1685 V 17 w(READ)p 263 1685 V 16 w(SHARED)p 423 1685
V 17 w(ALL\(FH,)g(BUFF,)g(BUFTYPE,)g(BUFCOUNT,)f(STATUS,)h(IERROR\))170
1741 y(<type>)g(BUFF\(*\))170 1798 y(INTEGER)g(FH,)h(BUFTYPE,)f
(BUFCOUNT,)f(STATUS\(MPI)p 1153 1798 V 16 w(STATUS)p
1313 1798 V 16 w(SIZE\),)h(IERROR)166 1884 y Fq(MPI)p
251 1884 14 2 v 16 w(READ)p 386 1884 V 17 w(SHARED)p
579 1884 V 17 w(ALL)17 b Ft(is)g(a)g(collectiv)o(e)h(v)o(ersion)g(of)e
(the)h Fq(MPI)p 1350 1884 V 16 w(READ)p 1485 1884 V 17
w(SHARED)h Ft(in)o(terface.)75 1940 y(This)i(routine)f(m)o(ust)g(b)q(e)
h(called)h(b)o(y)e(all)h(pro)q(cesses)f(in)h(the)g(comm)o(unicator)e
(group)h(asso)q(ciated)h(with)75 1997 y(the)f(\014le)g(handle)h
Fq(fh)p Ft(.)30 b(Eac)o(h)18 b(pro)q(cess)h(ma)o(y)f(pass)g(di\013eren)
o(t)h(argumen)o(t)f(v)m(alues)h(for)f(the)h Fq(buft)o(yp)q(e)p
Ft(,)i(and)75 2053 y Fq(bufcount)16 b Ft(argumen)o(ts.)i(After)c(all)g
(pro)q(cesses)g(of)f(the)h(group)f(ha)o(v)o(e)h(issued)g(their)h(resp)q
(ectiv)o(e)f(calls,)h(eac)o(h)75 2110 y(pro)q(cess)h(attempts)e(to)g
(read,)h(from)g(the)g(\014le)i(asso)q(ciated)e(with)h
Fq(fh)p Ft(,)f(a)g(total)g(n)o(um)o(b)q(er)g(of)g Fq(bufcount)j
Ft(data)75 2166 y(items)e(ha)o(ving)h Fq(buft)o(yp)q(e)h
Ft(t)o(yp)q(e)e(in)o(to)g(the)g(user's)g(bu\013er)g Fq(bu\013)p
Ft(.)24 b(F)l(or)15 b(eac)o(h)h(pro)q(cess,)h(the)f(lo)q(cation)h(in)g
(the)75 2223 y(\014le)g(at)d(whic)o(h)j(data)e(is)h(read)f(is)h(the)g
(p)q(osition)g(at)f(whic)o(h)h(the)g(shared)g(\014le)g(p)q(oin)o(ter)g
(w)o(ould)g(b)q(e)g(after)f(all)75 2279 y(pro)q(cesses)k(whose)g(ranks)
f(within)i(the)e(group)h(are)f(less)h(than)g(that)f(of)g(this)h(pro)q
(cess)g(had)g(read)f(their)75 2336 y(data.)h Fq(MPI)p
281 2336 V 15 w(READ)p 415 2336 V 17 w(SHARED)p 608 2336
V 18 w(ALL)13 b Ft(returns)g(the)h(n)o(um)o(b)q(er)f(of)g
Fq(buft)o(yp)q(e)j Ft(elemen)o(ts)e(read)f(in)h Fq(status)p
Ft(.)22 b(The)75 2392 y(shared)f(\014le)g(p)q(oin)o(ter)g(is)g(up)q
(dated)h(b)o(y)e(the)h(amoun)o(ts)f(of)g(data)g(requested)h(b)o(y)f
(all)i(pro)q(cesses)f(of)f(the)75 2449 y(group.)189 2534
y Fk(A)n(dvic)n(e)14 b(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 2591 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 2647 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 2704 y(other,)e(p)q(ossibly)j(in)f
(parallel.)21 b(\()p Fk(End)16 b(of)g(advic)n(e)g(to)h(implementors.)p
Ft(\))1967 46 y Fj(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 Fn(10.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)75 49 y Fq(Blo)q(cking)16
b(W)o(rite)f(\(collective\))75 230 y(MPI)p 160 230 14
2 v 16 w(WRITE)p 319 230 V 16 w(SHARED)p 511 230 V 18
w(ALL\(fh,)f(bu\013,)h(buft)o(yp)q(e,)i(bufcount,)g(status\))117
307 y Ff(IN)155 b Fq(fh)550 b Ff([SAME])14 b(V)m(alid)e(\014le)i
(handle)g(\(handle\))117 381 y(IN)155 b Fq(bu\013)514
b Ff(Initial)13 b(address)i(of)e(the)i(user's)f(bu\013er)h(\(in)o
(teger\))117 455 y(IN)155 b Fq(buft)o(yp)q(e)447 b Ff(User's)15
b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117 530 y(IN)155
b Fq(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 604 y(OUT)108
b Fq(status)476 b Ff(Status)15 b(information)c(\(Status\))75
728 y Fp(int)47 b(MPI)p 269 728 15 2 v 17 w(Write)p 406
728 V 17 w(shared)p 567 728 V 16 w(all\(MPI)p 751 728
V 16 w(File)23 b(fh,)h(void)f(*buff,)g(MPI)p 1340 728
V 17 w(Datatype)g(buftype,)393 785 y(int)h(bufcount,)e(MPI)p
802 785 V 17 w(Status)h(*status\))75 871 y(MPI)p 150
871 V 17 w(WRITE)p 287 871 V 16 w(SHARED)p 447 871 V
17 w(ALL\(FH,)g(BUFF,)g(BUFTYPE,)f(BUFCOUNT,)h(STATUS,)g(IERROR\))170
928 y(<type>)g(BUFF\(*\))170 984 y(INTEGER)g(FH,)h(BUFTYPE,)f
(BUFCOUNT,)f(STATUS\(MPI)p 1153 984 V 16 w(STATUS)p 1313
984 V 16 w(SIZE\),)h(IERROR)166 1071 y Fq(MPI)p 251 1071
14 2 v 16 w(WRITE)p 410 1071 V 16 w(SHARED)p 602 1071
V 18 w(ALL)12 b Ft(is)i(a)f(collectiv)o(e)i(v)o(ersion)e(of)g(the)g
(blo)q(c)o(king)i Fq(MPI)p 1526 1071 V 16 w(WRITE)p 1685
1071 V 16 w(SHARED)75 1127 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 Fq(fh)f Ft(m)o(ust)75 1183 y(call)k
Fq(MPI)p 247 1183 V 16 w(WRITE)p 406 1183 V 16 w(SHARED)p
598 1183 V 18 w(ALL)p Ft(.)e(Eac)o(h)h(pro)q(cess)g(ma)o(y)g(pass)g
(di\013eren)o(t)g(argumen)o(t)f(v)m(alues)i(for)f(the)75
1240 y Fq(buft)o(yp)q(e)13 b Ft(and)f Fq(bufcount)h Ft(argumen)o(ts.)18
b(After)11 b(all)h(pro)q(cesses)g(of)e(the)i(group)f(ha)o(v)o(e)g
(issued)h(their)g(resp)q(ectiv)o(e)75 1296 y(calls,)22
b(eac)o(h)d(pro)q(cess)h(attempts)f(to)g(write,)i(in)o(to)e(the)h
(\014le)h(asso)q(ciated)f(with)g Fq(fh)p Ft(,)h(a)e(total)g(n)o(um)o(b)
q(er)h(of)75 1353 y Fq(bufcount)13 b Ft(data)e(items)g(ha)o(ving)h
Fq(buft)o(yp)q(e)h Ft(t)o(yp)q(e)e(con)o(tained)h(in)g(the)f(user's)g
(bu\013er)g Fq(bu\013)p Ft(.)19 b(F)l(or)11 b(eac)o(h)g(pro)q(cess,)75
1409 y(the)g(lo)q(cation)h(in)h(the)e(\014le)h(at)f(whic)o(h)h(data)f
(is)h(written)f(is)h(the)f(p)q(osition)h(at)f(whic)o(h)h(the)g(shared)f
(\014le)h(p)q(oin)o(ter)75 1466 y(w)o(ould)j(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 1522 y(had)g(written)g(their)g(data.)
k Fq(MPI)p 636 1522 V 16 w(WRITE)p 795 1522 V 17 w(SHARED)p
988 1522 V 17 w(ALL)14 b Ft(returns)h(the)g(n)o(um)o(b)q(er)g(of)g
Fq(buft)o(yp)q(e)h Ft(elemen)o(ts)75 1579 y(written)g(in)h
Fq(status)p Ft(.)26 b(The)16 b(shared)h(\014le)g(p)q(oin)o(ter)g(is)g
(up)q(dated)g(b)o(y)f(the)g(amoun)o(ts)g(of)g(data)f(requested)i(b)o(y)
75 1635 y(all)f(pro)q(cesses)g(of)e(the)i(group.)189
1736 y Fk(A)n(dvic)n(e)e(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 1792 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 1849 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 1905 y(other,)e(p)q(ossibly)j(in)f
(parallel.)21 b(\()p Fk(End)16 b(of)g(advic)n(e)g(to)h(implementors.)p
Ft(\))75 2025 y Fq(Nonblo)q(cking)f(Read)g(\(collective\))75
2205 y(MPI)p 160 2205 V 16 w(IREAD)p 308 2205 V 16 w(SHARED)p
500 2205 V 18 w(ALL\(fh,)e(bu\013,)i(buft)o(yp)q(e,)g(bufcount,)h
(request\))117 2282 y Ff(IN)155 b Fq(fh)550 b Ff([SAME])14
b(V)m(alid)e(\014le)i(handle)g(\(handle\))117 2356 y(OUT)108
b Fq(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)i(user's)f
(bu\013er)h(\(in)o(teger\))117 2431 y(IN)155 b Fq(buft)o(yp)q(e)447
b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f(\(handle\))117
2505 y(IN)155 b Fq(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 2579 y(OUT)108 b Fq(request)452 b Ff(Read)14 b(request)h(handle)f
(\(handle\))75 2704 y Fp(int)23 b(MPI)p 245 2704 15 2
v 17 w(Iread)p 382 2704 V 17 w(shared)p 543 2704 V 16
w(all\(MPI)p 727 2704 V 16 w(File)h(fh,)f(void)g(*buff,)g(MPI)p
1316 2704 V 17 w(Datatype)g(buftype,)-32 46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)393 49 y Fp(int)24 b(bufcount,)e(MPI)p 802 49 15
2 v 17 w(Request)h(*request\))75 136 y(MPI)p 150 136
V 17 w(IREAD)p 287 136 V 16 w(SHARED)p 447 136 V 17 w(ALL\(FH,)g(BUFF,)
g(BUFTYPE,)f(BUFCOUNT,)h(REQUEST,)g(IERROR\))170 192
y(<type>)g(BUFF\(*\))170 249 y(INTEGER)g(FH,)h(BUFTYPE,)f(BUFCOUNT,)f
(REQUEST,)h(IERROR)166 335 y Fq(MPI)p 251 335 14 2 v
16 w(IREAD)p 399 335 V 16 w(SHARED)p 591 335 V 18 w(ALL)9
b Ft(is)i(a)f(collectiv)o(e)i(v)o(ersion)e(of)g(the)g(non)o(blo)q(c)o
(king)i Fq(MPI)p 1563 335 V 15 w(IREAD)p 1710 335 V 17
w(SHARED)75 392 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 Fq(fh)f Ft(m)o(ust)75 448 y(call)21 b Fq(MPI)p
248 448 V 16 w(IREAD)p 396 448 V 17 w(SHARED)p 589 448
V 17 w(ALL)p Ft(.)e(Eac)o(h)h(pro)q(cess)h(ma)o(y)e(pass)h(di\013eren)o
(t)h(argumen)o(t)e(v)m(alues)i(for)f(the)75 504 y Fq(buft)o(yp)q(e)e
Ft(and)e Fq(bufcount)i Ft(argumen)o(ts.)j(After)15 b(all)i(pro)q
(cesses)f(of)g(the)g(group)f(ha)o(v)o(e)h(issued)h(their)f(resp)q(ec-)
75 561 y(tiv)o(e)i(calls,)g(eac)o(h)g(pro)q(cess)f(attempts)g(to)f
(read,)i(from)f(the)g(\014le)i(asso)q(ciated)e(with)h
Fq(fh)p Ft(,)g(a)f(total)g(n)o(um)o(b)q(er)75 617 y(of)i
Fq(bufcount)i Ft(data)d(items)h(ha)o(ving)h Fq(buft)o(yp)q(e)h
Ft(t)o(yp)q(e)e(in)o(to)g(the)g(user's)g(bu\013er)g Fq(bu\013)p
Ft(.)32 b(F)l(or)18 b(eac)o(h)h(pro)q(cess,)75 674 y(the)f(lo)q(cation)
g(in)g(the)g(\014le)h(at)e(whic)o(h)h(data)f(will)i(b)q(e)f(read)g(is)g
(the)g(p)q(osition)g(at)f(whic)o(h)i(the)e(shared)h(\014le)75
730 y(p)q(oin)o(ter)d(w)o(ould)g(b)q(e)g(after)e(all)j(pro)q(cesses)e
(whose)h(ranks)f(within)h(the)g(group)f(are)g(less)h(than)f(that)g(of)g
(this)75 787 y(pro)q(cess)j(had)f(read)h(their)g(data.)23
b Fq(MPI)p 747 787 V 15 w(IREAD)p 894 787 V 17 w(SHARED)p
1087 787 V 18 w(ALL)16 b Ft(returns)g(immediately)i(and)f(do)q(es)f
(not)75 843 y(w)o(ait)d(for)f(the)i(data)e(to)h(b)q(e)h(presen)o(t)f
(in)h(the)f(user's)g(bu\013er.)19 b Fq(MPI)p 1172 843
V 16 w(IREAD)p 1320 843 V 17 w(SHARED)p 1513 843 V 17
w(ALL)13 b Ft(asso)q(ciates)g(an)75 900 y(individual)20
b(request)c(handle)i Fq(request)g Ft(to)d(the)i(I/O)g(request)f(for)g
(eac)o(h)g(pro)q(cess.)24 b(The)16 b(request)h(handle)75
956 y(can)i(b)q(e)h(used)f(later)g(b)o(y)g(a)f(pro)q(cess)h(to)g(query)
g(the)g(status)f(of)g(its)h(individual)j(read)d(request)g(or)f(w)o(ait)
75 1013 y(for)f(its)i(completion.)29 b(On)19 b(eac)o(h)f(pro)q(cess,)h
Fq(MPI)p 916 1013 V 16 w(IREAD)p 1064 1013 V 16 w(SHARED)p
1256 1013 V 18 w(ALL)f Ft(completes)g(when)h(the)f(indi-)75
1069 y(vidual)f(request)e(has)g(completed)i(\(i.e.)j(a)15
b(pro)q(cess)g(do)q(es)h(not)f(ha)o(v)o(e)g(to)g(w)o(ait)f(for)h(all)h
(other)f(requests)h(to)75 1125 y(complete\).)21 b(The)16
b(user)g(should)g(not)f(access)h(an)o(y)f(part)g(of)g(the)h(receiving)h
(bu\013er)f(after)e(a)i(non)o(blo)q(c)o(king)75 1182
y(read)f(is)g(called,)i(un)o(til)f(the)f(read)g(completes.)20
b(The)15 b(shared)g(\014le)h(p)q(oin)o(ter)g(is)f(up)q(dated)h(b)o(y)f
(the)g(amoun)o(ts)75 1238 y(of)j(data)f(requested)i(b)o(y)e(all)i(pro)q
(cesses)g(of)f(the)g(group.)28 b(F)l(or)17 b(eac)o(h)h(pro)q(cess,)h
(the)f(n)o(um)o(b)q(er)g(of)g Fq(buft)o(yp)q(e)75 1295
y Ft(elemen)o(ts)d(actually)h(read)f(b)o(y)f(that)g(pro)q(cess)h(can)g
(b)q(e)h(extracted)e(from)g(the)h Fq(MPI)p 1467 1295
V 16 w(TEST)g Ft(or)f Fq(MPI)p 1749 1295 V 16 w(W)l(AIT)75
1351 y Ft(return)h(status,)f(using)i(the)f(routines)h
Fq(MPI)p 818 1351 V 16 w(GET)p 922 1351 V 17 w(COUNT)g
Ft(or)e Fq(MPI)p 1248 1351 V 16 w(GET)p 1352 1351 V 17
w(ELEMENTS)p Ft(.)75 1468 y Fq(Nonblo)q(cking)i(W)o(rite)f
(\(collective\))75 1648 y(MPI)p 160 1648 V 16 w(IWRITE)p
332 1648 V 16 w(SHARED)p 524 1648 V 17 w(ALL\(fh,)g(bu\013,)g(buft)o
(yp)q(e,)i(bufcount,)g(request\))117 1725 y Ff(IN)155
b Fq(fh)550 b Ff([SAME])14 b(V)m(alid)e(\014le)i(handle)g(\(handle\))
117 1797 y(IN)155 b Fq(bu\013)514 b Ff(Initial)13 b(address)i(of)e(the)
i(user's)f(bu\013er)h(\(in)o(teger\))117 1868 y(IN)155
b Fq(buft)o(yp)q(e)447 b Ff(User's)15 b(bu\013er)g(datat)o(yp)q(e)f
(\(handle\))117 1940 y(IN)155 b Fq(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 2011 y(OUT)108 b Fq(request)452 b Ff(W)m(rite)14
b(request)h(handle)f(\(handle\))75 2135 y Fp(int)47 b(MPI)p
269 2135 15 2 v 17 w(Iwrite)p 430 2135 V 16 w(shared)p
590 2135 V 17 w(all\(MPI)p 775 2135 V 16 w(File)23 b(fh,)h(void)f
(*buff,)g(MPI)p 1364 2135 V 17 w(Datatype)g(buftype,)393
2192 y(int)h(bufcount,)e(MPI)p 802 2192 V 17 w(Request)h(*request\))75
2278 y(MPI)p 150 2278 V 17 w(IWRITE)p 311 2278 V 16 w(SHARED)p
471 2278 V 16 w(ALL\(FH,)g(BUFF,)h(BUFTYPE,)e(BUFCOUNT,)h(REQUEST,)g
(IERROR\))170 2335 y(<type>)g(BUFF\(*\))170 2391 y(INTEGER)g(FH,)h
(BUFTYPE,)f(BUFCOUNT,)f(REQUEST,)h(IERROR)166 2478 y
Fq(MPI)p 251 2478 14 2 v 16 w(IWRITE)p 423 2478 V 16
w(SHARED)p 615 2478 V 17 w(ALL)10 b Ft(is)g(a)g(collectiv)o(e)i(v)o
(ersion)f(of)e(the)i(non)o(blo)q(c)o(king)g Fq(MPI)p
1586 2478 V 16 w(IWRITE)p 1758 2478 V 16 w(SHARED)75
2534 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
Fq(fh)f Ft(m)o(ust)75 2591 y(call)j Fq(MPI)p 246 2591
V 16 w(IWRITE)p 418 2591 V 16 w(SHARED)p 610 2591 V 17
w(ALL)p Ft(.)e(Eac)o(h)h(pro)q(cess)g(ma)o(y)f(pass)h(di\013eren)o(t)g
(argumen)o(t)f(v)m(alues)i(for)e(the)75 2647 y Fq(buft)o(yp)q(e)h
Ft(and)e Fq(bufcount)i Ft(argumen)o(ts.)j(After)15 b(all)i(pro)q
(cesses)f(of)g(the)g(group)f(ha)o(v)o(e)h(issued)h(their)f(resp)q(ec-)
75 2704 y(tiv)o(e)e(calls,)h(eac)o(h)f(pro)q(cess)h(attempts)e(to)g
(write,)h(in)o(to)g(the)h(\014le)g(asso)q(ciated)f(with)g
Fq(fh)p Ft(,)h(a)e(total)h(n)o(um)o(b)q(er)g(of)1967
46 y Fj(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 Fn(10.6.)34 b(FILETYPE)15 b(CONSTR)o(UCTORS)992
b Ft(33)75 49 y Fq(bufcount)19 b Ft(data)d(items)g(ha)o(ving)h
Fq(buft)o(yp)q(e)i Ft(t)o(yp)q(e)d(con)o(tained)h(in)h(the)e(user's)h
(bu\013er)f Fq(bu\013)p Ft(.)25 b(F)l(or)15 b(eac)o(h)i(pro-)75
106 y(cess,)c(the)g(lo)q(cation)g(in)g(the)g(\014le)h(at)e(whic)o(h)h
(data)f(will)i(b)q(e)g(written)e(is)h(the)g(p)q(osition)h(at)e(whic)o
(h)h(the)g(shared)75 162 y(\014le)j(p)q(oin)o(ter)g(w)o(ould)g(b)q(e)g
(after)e(all)j(pro)q(cesses)e(whose)h(ranks)f(within)h(the)g(group)f
(are)g(less)h(than)f(that)f(of)75 219 y(this)k(pro)q(cess)g(had)g
(written)g(their)g(data.)27 b Fq(MPI)p 905 219 14 2 v
16 w(IWRITE)p 1077 219 V 16 w(SHARED)p 1269 219 V 17
w(ALL)18 b Ft(returns)f(immediately)j(and)75 275 y(do)q(es)e(not)g(w)o
(ait)f(for)h(the)g(data)f(to)g(b)q(e)i(presen)o(t)f(in)h(the)f(user's)f
(bu\013er.)28 b Fq(MPI)p 1417 275 V 16 w(IWRITE)p 1589
275 V 16 w(SHARED)p 1781 275 V 17 w(ALL)75 332 y Ft(asso)q(ciates)18
b(an)h(individual)j(request)c(handle)i Fq(request)g Ft(to)e(the)h(I/O)g
(request)f(for)g(eac)o(h)h(pro)q(cess.)30 b(The)75 388
y(request)19 b(handle)h(can)f(b)q(e)g(used)g(later)g(b)o(y)g(a)f(pro)q
(cess)h(to)f(query)h(the)g(status)f(of)g(its)h(individual)j(write)75
444 y(request)15 b(or)g(w)o(ait)g(for)g(its)g(completion.)22
b(On)16 b(eac)o(h)f(pro)q(cess,)g Fq(MPI)p 1207 444 V
16 w(IWRITE)p 1379 444 V 16 w(SHARED)p 1571 444 V 17
w(ALL)g Ft(completes)75 501 y(when)i(the)g(individual)j(write)d
(request)g(has)f(completed)i(\(i.e.)25 b(a)16 b(pro)q(cess)h(do)q(es)g
(not)g(ha)o(v)o(e)f(to)g(w)o(ait)h(for)75 557 y(all)f(other)f(requests)
g(to)g(complete\).)20 b(The)c(user)f(should)h(not)f(access)h(an)o(y)f
(part)f(of)h(the)g(supplied)j(bu\013er)75 614 y(after)g(a)h(non)o(blo)q
(c)o(king)i(write)e(is)g(called,)j(un)o(til)e(the)f(write)g(is)h
(completed.)33 b(The)19 b(shared)g(\014le)h(p)q(oin)o(ter)75
670 y(is)d(up)q(dated)h(b)o(y)f(the)f(amoun)o(ts)g(of)h(data)f
(requested)h(b)o(y)g(all)g(pro)q(cesses)h(of)e(the)h(group.)24
b(F)l(or)16 b(eac)o(h)h(pro-)75 727 y(cess,)22 b(the)f(n)o(um)o(b)q(er)
g(of)f Fq(buft)o(yp)q(e)j Ft(elemen)o(ts)f(actually)f(written)g(b)o(y)g
(that)f(pro)q(cess)h(can)g(b)q(e)g(extracted)75 783 y(from)c(the)h
Fq(MPI)p 351 783 V 16 w(TEST)h Ft(or)e Fq(MPI)p 640 783
V 16 w(W)l(AIT)h Ft(return)g(status,)g(using)g(the)h(routines)f
Fq(MPI)p 1542 783 V 16 w(GET)p 1646 783 V 17 w(COUNT)g
Ft(or)75 840 y Fq(MPI)p 160 840 V 16 w(GET)p 264 840
V 17 w(ELEMENTS)p Ft(.)75 957 y Fq(Seek)e(\(collective\))75
1137 y(MPI)p 160 1137 V 16 w(SEEK)p 287 1137 V 16 w(SHARED\(fh,)g
(o\013set,)f(whence\))117 1214 y Ff(IN)155 b Fq(fh)550
b Ff([SAME])14 b(V)m(alid)e(\014le)i(handle)g(\(handle\))117
1286 y(IN)155 b Fq(o\013set)484 b Ff([SAME])14 b(File)f(o\013set)i
(\(o\013set\))117 1358 y(IN)155 b Fq(whence)450 b Ff([SAME])14
b(Up)q(date)g(mo)q(de)f(\(in)o(teger\))75 1482 y Fp(int)23
b(MPI)p 245 1482 15 2 v 17 w(Seek)p 358 1482 V 17 w(shared\(MPI)p
615 1482 V 16 w(File)g(fh,)g(MPI)p 917 1482 V 17 w(Offset)g(offset,)g
(MPI)p 1364 1482 V 17 w(Whence)g(whence\))75 1569 y(MPI)p
150 1569 V 17 w(SEEK)p 263 1569 V 16 w(SHARED\(FH,)g(OFFSET,)g
(WHENCE\))170 1625 y(INTEGER)g(FH,)h(WHENCE)170 1682
y(INTEGER*8)f(OFFSET)166 1768 y Fq(MPI)p 251 1768 14
2 v 16 w(SEEK)p 378 1768 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 Fq(whence)p
Ft(,)i(whic)o(h)g(could)75 1824 y(ha)o(v)o(e)e(the)g(follo)o(wing)h(p)q
(ossible)h(v)m(alues:)143 1902 y Fh(\017)23 b Fg(MPI)p
266 1902 13 2 v 14 w(SEEK)p 382 1902 V 14 w(SET)p Ft(:)15
b(the)h(p)q(oin)o(ter)f(is)h(set)f(to)f Fq(o\013set)143
1989 y Fh(\017)23 b Fg(MPI)p 266 1989 V 14 w(SEEK)p 382
1989 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 Fq(o\013set)143
2076 y Fh(\017)23 b Fg(MPI)p 266 2076 V 14 w(SEEK)p 382
2076 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 Fq(o\013set)166 2154
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 Fq(fh)f
Ft(m)o(ust)f(call)75 2210 y Fq(MPI)p 160 2210 14 2 v
16 w(SEEK)p 287 2210 V 16 w(SHARED)18 b Ft(with)g(the)f(same)g
Fq(o\013set)g Ft(and)g Fq(whence)p Ft(.)27 b(All)19 b(pro)q(cesses)e
(in)h(the)f(comm)o(unicator)75 2266 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 2323 y(The)c Fq(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 Fq(et)o(yp)q(e)p
Ft(.)20 b(The)12 b(constan)o(t)75 2379 y Fg(MPI)p 152
2379 13 2 v 14 w(OFFSET)p 321 2379 V 14 w(ZERO)j Ft(is)h(de\014ned)g
(to)f(b)q(e)h(o\013set)e(zero.)75 2519 y Fm(10.6)60 b(Filet)n(yp)r(e)19
b(Constructo)n(rs)75 2704 y Fe(Discussion:)14 b Ff(Should)c(w)o(e)h(mo)
o(v)o(e)e(these)k(datat)o(yp)q(e)e(constructors)h(to)f(the)h(\\Datat)o
(yp)q(e)e(Impro)o(v)o(emen)o(ts")f(section?)-32 46 y
Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)75 254 y Fl(10.6.1)49 b(Intro)q(duction)75 339
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 396 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 452 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
Fq(MPI)e Ft(datat)o(yp)q(e)75 509 y(constructors)f(are)h(pro)o(vided.)
166 565 y(Although)c(it)f(is)h(p)q(ossible)h(to)d(implemen)o(t)j(these)
e(t)o(yp)q(e)h(constructors)e(as)h(lo)q(cal)h(op)q(erations,)g(in)g
(order)75 622 y(to)g(facilitate)h(e\016cien)o(t)g(implemen)o(tations)g
(of)f(\014le)h(I/O)f(op)q(erations,)h(most)f(of)f(the)h(\014let)o(yp)q
(e)i(constructors)75 678 y(ha)o(v)o(e)j(b)q(een)i(de\014ned)g(to)e(b)q
(e)i Fk(c)n(ol)r(le)n(ctive)d Ft(op)q(erations.)24 b(\(Recall)19
b(that)d(a)g(collectiv)o(e)i(op)q(eration)f(do)q(es)g(not)75
735 y(imply)k(a)e(barrier)g(sync)o(hronization.\))33
b(The)20 b(only)g(exception)g(to)f(this)g(is)h(the)g(lo)q(cal)g
(sub-arra)o(y)f(t)o(yp)q(e)75 791 y(constructor)c(whic)o(h)i(is)f(lo)q
(cal)i(and)e(uses)g(no)g(pro)q(cess)g(rank)g(information.)22
b(Because)17 b(of)e(this,)h(the)g(sub-)75 848 y(arra)o(y)e(constructor)
g(can)i(b)q(e)g(used)f(for)g(b)q(oth)g(buft)o(yp)q(es)h(and)f(\014let)o
(yp)q(es.)166 904 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 960 y(together)c(when)i(op)q(ening)h(a)d
(\014le.)166 1017 y(Eac)o(h)20 b(new)h(\014let)o(yp)q(e)h(created)e
Fq(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 1073 y Fq(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 1130 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
1186 y(co)q(de.)75 1308 y Fl(10.6.2)49 b(Scatter)15 b(/)i(Gather)e(T)l
(yp)q(e)i(Constructo)o(rs)75 1394 y Fq(MPI)p 160 1394
14 2 v 16 w(T)l(yp)q(e)p 268 1394 V 17 w(scatter)p 412
1394 V 18 w(gather)e(\(collective\))75 1574 y(MPI)p 160
1574 V 16 w(TYPE)p 293 1574 V 17 w(SCA)l(TTER)p 508 1574
V 17 w(GA)l(THER\(comm,)f(oldt)o(yp)q(e,)i(newt)o(yp)q(e\))117
1651 y Ff(IN)155 b Fq(comm)470 b Ff([SAME])12 b(comm)o(uni)o(cator)e
(to)h(b)q(e)i(used)g(in)e(MPI)p 1655 1651 13 2 v 15 w(Op)q(en)i(\(han-)
905 1708 y(dle\))117 1783 y(IN)155 b Fq(oldt)o(yp)q(e)450
b Ff([SAME])14 b(old)f(datat)o(yp)q(e)h(\(handle\))117
1858 y(OUT)108 b Fq(newt)o(yp)q(e)433 b Ff(new)15 b(datat)o(yp)q(e)f
(\(handle\))75 1983 y Fp(int)23 b(MPI)p 245 1983 15 2
v 17 w(Type)p 358 1983 V 17 w(scatter)p 543 1983 V 16
w(gather\(MPI)p 799 1983 V 16 w(Comm)g(comm,)g(MPI)p
1149 1983 V 17 w(Datatype)g(oldtype,)393 2039 y(MPI)p
468 2039 V 17 w(Datatype)g(*newtype\))75 2125 y(MPI)p
150 2125 V 17 w(TYPE)p 263 2125 V 16 w(SCATTER)p 447
2125 V 17 w(GATHER\(COMM,)f(OLDTYPE,)h(NEWTYPE,)f(IERROR\))170
2182 y(INTEGER)h(COMM,)h(OLDTYPE,)e(NEWTYPE,)h(IERROR)166
2268 y Ft(This)18 b(\014let)o(yp)q(e)h(allo)o(ws)f(eac)o(h)g(pro)q
(cess)f(in)i(the)f(group)f(to)g(access)h(a)f(distinct)i
Fq(blo)q(ck)f Ft(of)g(the)f(\014le)i(in)75 2325 y(rank)14
b(order.)20 b(The)15 b(blo)q(c)o(ks)g(are)f(iden)o(tical)j(in)f(size)f
(and)g(datat)o(yp)q(e;)f(eac)o(h)h(item)g(is)g(of)f(datat)o(yp)q(e)g
Fq(oldt)o(yp)q(e)p Ft(.)166 2381 y(T)l(o)g(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 2438 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 2494
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.)1967 46
y Fj(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 Fn(10.6.)34 b(FILETYPE)15 b(CONSTR)o(UCTORS)992
b Ft(35)75 49 y Fq(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)15 b(\(collective\))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\(comm,)g(count,)h(oldt)o(yp)q(e,)g(newt)o(yp)
q(e\))117 307 y Ff(IN)155 b Fq(comm)470 b Ff([SAME])12
b(comm)o(uni)o(cator)e(to)h(b)q(e)i(used)g(in)e(MPI)p
1655 307 13 2 v 15 w(Op)q(en)i(\(han-)905 363 y(dle\))117
438 y(IN)155 b Fq(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
495 y(ativ)o(e)f(in)o(teger\))117 570 y(IN)155 b Fq(oldt)o(yp)q(e)450
b Ff(old)13 b(datat)o(yp)q(e)i(\(handle\))117 645 y(OUT)108
b Fq(newt)o(yp)q(e)433 b Ff(new)15 b(datat)o(yp)q(e)f(\(handle\))75
770 y Fp(int)23 b(MPI)p 245 770 15 2 v 17 w(Type)p 358
770 V 17 w(scatterv)p 567 770 V 16 w(gatherv\(MPI)p 847
770 V 16 w(Comm)g(comm,)g(int)h(count,)393 826 y(MPI)p
468 826 V 17 w(Datatype)f(oldtype,)f(MPI)p 986 826 V
17 w(Datatype)h(*newtype\))75 912 y(MPI)p 150 912 V 17
w(TYPE)p 263 912 V 16 w(SCATTERV)p 471 912 V 16 w(GATHERV\(COMM,)g
(COUNT,)g(OLDTYPE,)f(NEWTYPE,)h(IERROR\))170 969 y(INTEGER)g(COMM,)h
(COUNT,)f(OLDTYPE,)f(NEWTYPE,)h(IERROR)166 1055 y Ft(This)16
b(t)o(yp)q(e)f(allo)o(ws)g(eac)o(h)g(pro)q(cess)g(in)h(the)g(group)e
(to)h(access)g(a)g(distinct)h Fk(blo)n(ck)e Ft(of)h(the)g(\014le)h(in)g
(rank)75 1112 y(order)11 b(as)h(in)g(MPI)p 384 1112 14
2 v 16 w(T)o(yp)q(e)p 502 1112 V 17 w(scatter)p 654 1112
V 16 w(gather,)f(except)h(that)f(the)h(blo)q(c)o(k)g(sizes)g(and)g(t)o
(yp)q(es)g(ma)o(y)f(b)q(e)h(di\013eren)o(t.)75 1168 y(Eac)o(h)j(blo)q
(c)o(k)h(is)g(de\014ned)g(as)f Fq(count)i Ft(con)o(tiguous)e(copies)h
(of)f(the)g(passed)g(datat)o(yp)q(e)g Fq(oldt)o(yp)q(e)p
Ft(.)75 1290 y Fl(10.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 1470 y Fq(MPI)p
160 1470 V 16 w(TYPE)p 293 1470 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 1547 y Ff(IN)155 b Fq(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
1623 y(IN)155 b Fq(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
1679 y(negativ)o(e)h(in)o(tegers\))117 1754 y(IN)155
b Fq(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 1811 y(negativ)o(e)h(in)o
(tegers\))117 1886 y(IN)155 b Fq(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
1942 y(sion)d(\(arra)o(y)g(of)f(nonnegativ)o(e)g(in)o(tegers\))117
2017 y(IN)155 b Fq(o)o(rder)490 b Ff(arra)o(y)14 b(storage)g(order)h
(\015ag)e(\(in)o(teger\))117 2093 y(IN)155 b Fq(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
2168 y(OUT)108 b Fq(newt)o(yp)q(e)433 b Ff(new)15 b(datat)o(yp)q(e)f
(\(handle\))75 2292 y Fp(int)23 b(MPI)p 245 2292 15 2
v 17 w(Type)p 358 2292 V 17 w(subarray\(int)f(ndims,)h(int)h(*sizes,)e
(int)i(*subsizes,)e(int)i(*starts,)393 2349 y(int)g(order,)f(MPI)p
731 2349 V 16 w(Datatype)g(oldtype,)g(MPI)p 1249 2349
V 17 w(Datatype)g(*newtype\))75 2435 y(MPI)p 150 2435
V 17 w(TYPE)p 263 2435 V 16 w(SUBARRAY\(NDIMS,)f(SIZES,)h(SUBSIZES,)g
(STARTS,)g(ORDER,)g(OLDTYPE,)g(NEWTYPE,)393 2491 y(IERROR\))170
2548 y(INTEGER)g(NDIMS,)g(SIZES\(*\),)g(SUBSIZES\(*\),)f(STARTS\(*\),)h
(ORDER,)g(OLDTYPE,)170 2604 y(NEWTYPE,)g(IERROR)-32 46
y Fj(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)1347 b Fn(CHAPTER)15 b(10.)30
b(I/O)166 49 y Ft(The)23 b(lo)q(cal)h(sub-arra)o(y)e(\014let)o(yp)q(e)i
(constructor)e(creates)h(an)g Fq(MPI)f Ft(datat)o(yp)q(e)g(describing)j
(an)e(n-)75 106 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 162 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 219 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
275 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
332 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
388 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 444 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 501 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 557 y(the)g(arra)o(y)f(is)i(stored,)e(the)i
Fq(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 645 y Fh(\017)23 b Fg(MPI)p 266 645 13 2 v
14 w(C)p 307 645 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
736 y Fh(\017)23 b Fg(MPI)p 266 736 V 14 w(F)o(ORTRAN)p
473 736 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
793 y(order\))675 1572 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 1670 a(Figure)h(10.5:)k(Example)d(arra)o(y)e(\014le)i
(la)o(y)o(out)166 1772 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 1828 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 1885 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 1941
y(10.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 2040 y Fp(double)23 b(subarray[100][25];)147
2097 y(MPI_Datatype)f(filetype;)147 2153 y(int)h(sizes[2],)g
(subsizes[2],)f(starts[2];)147 2209 y(int)h(rank;)147
2322 y(MPI_Comm_rank\(MPI_COMM_)o(WORLD,)d(&rank\);)147
2379 y(sizes[0]=100;)i(sizes[1]=100;)g(subsizes[0]=100;)147
2435 y(subsizes[1]=25;)f(starts[0]=0;)i(starts[1]=rank*25;)147
2548 y(MPI_Type_subarray\(2,)e(sizes,)i(subsizes,)f(starts,)h
(MPI_C_ORDER,)600 2605 y(MPI_DOUBLE,)f(&filetype\);)166
2704 y Ft(Or,)15 b(equiv)m(alen)o(tly)i(in)f(F)o(OR)l(TRAN:)1967
46 y Fj(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 Fn(10.6.)34 b(FILETYPE)15 b(CONSTR)o(UCTORS)992
b Ft(37)242 49 y Fp(double)23 b(precision)g(subarray\(100,25\))242
106 y(integer)g(filetype,)g(rank,)g(ierror)242 162 y(integer)g
(sizes\(2\),)g(subsizes\(2\),)f(starts\(2\))242 275 y(call)h
(MPI_COMM_RANK\(MPI_COMM_WORLD,)d(rank,)j(ierror\))242
332 y(sizes\(1\)=100)242 388 y(sizes\(2\)=100)242 444
y(subsizes\(1\)=100)242 501 y(subsizes\(2\)=25)242 557
y(starts\(1\)=1)242 614 y(starts\(2\)=rank*25)f(+)h(1)242
727 y(call)g(MPI_TYPE_SUBARRAY\(2,)e(sizes,)j(subsizes,)e(starts,)194
783 y($)287 b(MPI_FORTRAN_ORDER,)21 b(MPI_DOUBLE_PRECISION,)194
840 y($)287 b(filetype,)22 b(ierror\))166 946 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 1002 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(10.6)e(sho)o(ws)75
1059 y(the)h(\014let)o(yp)q(e)i(created)e(for)f(pro)q(cess)i(1.)675
1626 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 1724 a(Figure)f(10.6:)k(Example)d(subarra)o(y)e
(\014let)o(yp)q(e)i(for)f(pro)q(cess)g(1)75 1895 y Fl(10.6.4)49
b(Distributed)16 b(Arra)o(y)g(Filet)o(yp)q(e)g(Constructo)o(rs)75
1981 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 2038 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)75 2094 y(on)d(a)f(\014le)i
(op)q(ened)g(with)f(the)g(returned)g(\014let)o(yp)q(e,)h(an)f(HPF-lik)o
(e)h([4)o(])f(distribution)h(of)f(the)f(\014le)i(data)e(is)75
2150 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 2207 y(as)f(for)f(F)o(OR)l(TRAN)i(arra)o
(ys.)75 2327 y Fq(MPI)p 160 2327 14 2 v 16 w(T)l(yp)q(e)p
268 2327 V 17 w(da)o(rra)o(y)e(\(collective\))75 2413
y Ft(Distribution)i(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:)-32
46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)75 49 y Fq(MPI)p 160 49 14 2 v 16 w(TYPE)p 293
49 V 17 w(D)o(ARRA)l(Y\(comm,)14 b(ndims,)i(dsizes,)h(distribs,)g(da)o
(rgs,)e(p)q(dims,)h(psizes,)h(o)o(rder,)d(oldt)o(yp)q(e,)j(new-)75
106 y(t)o(yp)q(e\))117 183 y Ff(IN)155 b Fq(comm)470
b Ff([SAME])12 b(comm)o(uni)o(cator)e(to)h(b)q(e)i(used)g(in)e(MPI)p
1655 183 13 2 v 15 w(Op)q(en)i(\(han-)905 239 y(dle\))117
314 y(IN)155 b Fq(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 370
y(teger\))117 445 y(IN)155 b Fq(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
501 y(\(arra)o(y)14 b(of)f(nonnegativ)o(e)h(in)o(teger\))117
576 y(IN)155 b Fq(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 632
y(BLOCK)g(or)f(CYCLIC)g(\(arra)o(y)f(of)h(in)o(teger\))117
707 y(IN)155 b Fq(da)o(rgs)487 b Ff([SAME])14 b(distribution)f(argumen)
o(t)g(of)g(dimension,)905 763 y(e.g.)25 b(BLOCK\(dargs\))18
b(or)e(CYCLIC\(dargs\))h(\(arra)o(y)f(of)g(in-)905 820
y(teger\))117 894 y(IN)155 b Fq(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
951 y(negativ)o(e)14 b(in)o(teger\))117 1025 y(IN)155
b Fq(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 1082 y(of)13 b(nonnegativ)o(e)h
(in)o(teger\))117 1156 y(IN)155 b Fq(o)o(rder)490 b Ff([SAME])14
b(arra)o(y)f(storage)i(order)f(\015ag)g(\(in)o(teger\))117
1231 y(IN)155 b Fq(oldt)o(yp)q(e)450 b Ff([SAME])14 b(old)f(datat)o(yp)
q(e)h(\(handle\))117 1305 y(OUT)108 b Fq(newt)o(yp)q(e)433
b Ff(new)15 b(datat)o(yp)q(e)f(\(handle\))75 1430 y Fp(int)23
b(MPI)p 245 1430 15 2 v 17 w(Type)p 358 1430 V 17 w(darray\(MPI)p
615 1430 V 16 w(Comm)g(comm,)g(int)h(ndims,)f(int)g(*dsizes,)g(int)g
(*distribs,)393 1486 y(int)h(*dargs,)f(int)g(pdims,)g(int)g(*psizes,)g
(int)h(order,)393 1543 y(MPI)p 468 1543 V 17 w(Datatype)f(oldtype,)f
(MPI)p 986 1543 V 17 w(Datatype)h(*newtype\))75 1629
y(MPI)p 150 1629 V 17 w(TYPE)p 263 1629 V 16 w(DARRAY\(COMM,)g(NDIMS,)g
(DSIZES,)g(DISTRIBS,)f(DARGS,)h(PDIMS,)g(PSIZES,)g(ORDER,)393
1686 y(OLDTYPE,)g(NEWTYPE,)g(IERROR\))170 1742 y(INTEGER)g(COMM,)h
(NDIMS,)f(DSIZES\(*\),)f(DISTRIBS\(*\),)g(DARGS\(*\),)h(PDIMS,)g
(PSIZES\(*\))170 1799 y(INTEGER)g(ORDER,)g(OLDTYPE,)g(NEWTYPE,)g
(IERROR)166 1885 y Fq(MPI)p 251 1885 14 2 v 16 w(TYPE)p
384 1885 V 17 w(D)o(ARRA)l(Y)f 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
1941 y Fq(ndims)p Ft(-dimensional)15 b(arra)o(y)c(of)h
Fq(oldt)o(yp)q(e)h Ft(elemen)o(ts)g(on)o(to)e(a)h Fq(p)q(dims)p
Ft(-dimensional)j(grid)e(of)f(logical)h(pro)q(ces-)75
1998 y(sors.)18 b(F)l(or)10 b(a)g(call)h(to)f Fq(MPI)p
507 1998 V 16 w(TYPE)p 640 1998 V 17 w(D)o(ARRA)l(Y)i
Ft(to)d(b)q(e)j(correct,)e(the)h(equation)1365 1966 y
Fd(Q)1404 1976 y Fc(pdims)p Fb(\000)p Fa(1)1404 2011
y Fc(i)p Fa(=0)1554 1998 y Fi(psiz)r(es)p Ft([)p Fi(i)p
Ft(])h(=)h Fi(siz)r(e)p Ft(,)75 2054 y(where)i Fi(siz)r(e)h
Ft(denotes)f(the)h(size)g(of)e(comm)o(unicator)h Fq(comm)p
Ft(,)e(m)o(ust)i(b)q(e)h(satis\014ed.)166 2111 y(Eac)o(h)f(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 2202 y Fh(\017)23 b Fg(MPI)p 266 2202 13
2 v 14 w(DISTRIBUTE)p 522 2202 V 13 w(BLOCK)15 b Ft(-)g(Blo)q(c)o(k)h
(distribution)143 2294 y Fh(\017)23 b Fg(MPI)p 266 2294
V 14 w(DISTRIBUTE)p 522 2294 V 13 w(CYCLIC)14 b Ft(-)h(Cyclic)i
(distribution)143 2387 y Fh(\017)23 b Fg(MPI)p 266 2387
V 14 w(DISTRIBUTE)p 522 2387 V 13 w(NONE)16 b Ft(-)f(Dimension)h(not)f
(distributed.)166 2478 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 Fg(MPI)p
1365 2478 V 14 w(DISTRIBUTE)p 1621 2478 V 14 w(DFL)m(T)p
1736 2478 V 15 w(ARG)f Ft(is)75 2534 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 2591 y(F)l(or)j(example,)i(ARRA)l(Y\(CYCLIC\(15\)\))
e(corresp)q(onds)h(to)e Fg(MPI)p 1316 2591 V 15 w(DISTRIBUTE)p
1573 2591 V 13 w(CYCLIC)g Ft(with)h(a)75 2647 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 Fg(MPI)p 1471 2647 V 15 w(DISTRIBUTE)p 1728 2647
V 13 w(BLOCK)75 2704 y Ft(with)16 b(a)e(distribution)j(argumen)o(t)e
(of)f Fg(MPI)p 796 2704 V 15 w(DISTRIBUTE)p 1053 2704
V 13 w(DFL)m(T)p 1167 2704 V 15 w(ARG)p Ft(.)1967 46
y Fj(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 Fn(10.6.)34 b(FILETYPE)15 b(CONSTR)o(UCTORS)992
b Ft(39)166 49 y(The)17 b Fq(o)o(rder)f Ft(argumen)o(t)g(is)h(used)g
(as)f(in)i Fq(MPI)p 928 49 14 2 v 16 w(TYPE)p 1061 49
V 17 w(SUBARRA)l(Y)h Ft(to)d(sp)q(ecify)i(the)f(storage)e(order)75
106 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 162 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
Fq(o)o(rder)h Ft(are)g Fg(MPI)p 1517 162 13 2 v 14 w(F)o(ORTRAN)p
1724 162 V 14 w(ORDER)75 219 y Ft(or)k Fg(MPI)p 208 219
V 14 w(C)p 249 219 V 14 w(ORDER)p Ft(.)166 275 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 369 y Fp(<oldtype>)23
b(FILEARRAY\(100,)f(200,)h(300\))75 425 y(!HPF$)g(PROCESSORS)g
(PROCESSES\(2,)f(3\))75 482 y(!HPF$)h(DISTRIBUTE)g
(FILEARRAY\(CYCLIC\(10\),)e(*,)i(BLOCK\))g(ONTO)h(PROCESSES)75
576 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 632 y(attac)o(hed)i(to)f(the)h(run:)170
726 y Fp(ndims)24 b(=)f(3)170 782 y(dsizes\(1\))g(=)h(100)170
839 y(distribs\(1\))f(=)h(MPI_DISTRIBUTE_CYCLIC)170 895
y(dargs\(1\))f(=)h(10)170 952 y(dsizes\(2\))f(=)h(200)170
1008 y(distribs\(2\))f(=)h(MPI_DISTRIBUTE_NONE)170 1065
y(dargs\(2\))f(=)h(0)170 1121 y(dsizes\(3\))f(=)h(300)170
1178 y(distribs\(3\))f(=)h(MPI_DISTRIBUTE_BLOCK)170 1234
y(dargs\(3\))f(=)h(MPI_DISTRIBUTE_DFLT_ARG)170 1290 y(pdims)g(=)f(2)170
1347 y(psizes\(1\))g(=)h(2)170 1403 y(psizes\(2\))f(=)h(3)170
1460 y(call)g(MPI_TYPE_DARRAY\(MPI_COMM)o(_WORLD,)c(ndims,)j(dsizes,)g
(distribs,)g(dargs,)147 1516 y($)119 b(pdims,)23 b(psizes,)g
(MPI_FORTRAN_ORDER,)e(oldtype,)i(newtype,)g(ierr\))75
1636 y Fq(MPI)p 160 1636 14 2 v 16 w(T)l(yp)q(e)p 268
1636 V 17 w(da)o(rra)o(y)p 403 1636 V 15 w(2d)16 b(\(collective\))75
1722 y Ft(Distribution)g(of)f(a)g Fk(two)p Ft(-dimensional)j(arra)o(y:)
-32 46 y Fj(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 Fn(CHAPTER)15 b(10.)35
b(I/O)75 49 y Fq(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\(comm,)13 b(dsize1,)i
(distrib1,)h(da)o(rg1,)e(psize1,)i(dsize2,)f(distrib2,)h(da)o(rg2,)e
(psize2,)75 106 y(o)o(rder,)g(oldt)o(yp)q(e,)i(newt)o(yp)q(e\))117
183 y Ff(IN)155 b Fq(comm)470 b Ff([SAME])12 b(comm)o(uni)o(cator)e(to)
h(b)q(e)i(used)g(in)e(MPI)p 1655 183 13 2 v 15 w(Op)q(en)i(\(han-)905
239 y(dle\))117 315 y(IN)155 b Fq(dsize1)473 b Ff([SAME])21
b(size)g(of)f(distributed)i(arra)o(y)f(in)f(\014rst)i(dimension)905
371 y(\(nonnegativ)o(e)14 b(in)o(teger\))117 446 y(IN)155
b Fq(distrib1)447 b Ff([SAME])14 b(distribution)f(for)h(\014rst)g
(dimension)e(\(in)o(teger\))117 521 y(IN)155 b Fq(da)o(rg1)481
b Ff([SAME])12 b(distribution)g(argumen)o(t)f(for)h(\014rst)h
(dimension)d(\(in-)905 578 y(teger\))117 653 y(IN)155
b Fq(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 709 y(ger\))117
784 y(IN)155 b Fq(dsize2)473 b Ff([SAME])14 b(size)g(of)g(distributed)g
(arra)o(y)g(in)g(second)h(dimension)905 841 y(\(nonnegativ)o(e)f(in)o
(teger\))117 916 y(IN)155 b Fq(distrib2)447 b Ff([SAME])14
b(distribution)f(for)h(second)g(dimension)f(\(in)o(teger\))117
991 y(IN)155 b Fq(da)o(rg2)481 b Ff([SAME])18 b(distribution)f(argumen)
o(t)g(for)h(second)h(dimension)905 1048 y(\(in)o(teger\))117
1123 y(IN)155 b Fq(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
1179 y(teger\))117 1254 y(IN)155 b Fq(o)o(rder)490 b
Ff([SAME])14 b(arra)o(y)f(storage)i(order)f(\015ag)g(\(in)o(teger\))117
1329 y(IN)155 b Fq(oldt)o(yp)q(e)450 b Ff([SAME])14 b(old)f(datat)o(yp)
q(e)h(\(handle\))117 1405 y(OUT)108 b Fq(newt)o(yp)q(e)433
b Ff(new)15 b(datat)o(yp)q(e)f(\(handle\))75 1529 y Fp(int)23
b(MPI)p 245 1529 15 2 v 17 w(Type)p 358 1529 V 17 w(darray)p
519 1529 V 16 w(2d\(MPI)p 679 1529 V 17 w(Comm)g(comm,)g(int)h(dsize1,)
e(int)i(distrib1,)f(int)g(darg1,)393 1585 y(int)h(psize1,)f(int)g
(dsize2,)g(int)g(distrib2,)g(int)g(darg2,)g(int)h(psize2,)393
1642 y(int)g(order,)f(MPI)p 731 1642 V 16 w(Datatype)g(oldtype,)g(MPI)p
1249 1642 V 17 w(Datatype)g(*newtype\))75 1728 y(MPI)p
150 1728 V 17 w(TYPE)p 263 1728 V 16 w(DARRAY)p 423 1728
V 17 w(2D\(COMM,)g(DSIZE1,)f(DISTRIB1,)h(DARG1,)g(PSIZE1,)g(DSIZE2,)g
(DISTRIB2,)393 1785 y(DARG2,)g(PSIZE2,)g(ORDER,)g(OLDTYPE,)g(NEWTYPE,)g
(IERROR\))170 1841 y(INTEGER)g(COMM,)h(DSIZE1,)e(DISTRIB1,)h(DARG1,)g
(PSIZE1,)g(DSIZE2,)g(DISTRIB2,)g(DARG2)170 1898 y(INTEGER)g(PSIZE2,)g
(ORDER,)g(OLDTYPE,)g(NEWTYPE,)g(IERROR)166 1984 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
2041 y(to:)170 2134 y Fp(dsize[0]=dsize1;)22 b(distrib[0]=distrib1;)f
(dargs[0]=darg1;)h(psize[0])h(=)h(psize1;)170 2191 y(dsize[1]=dsize2;)e
(distrib[1]=distrib2;)f(dargs[1]=darg2;)h(psize[1])h(=)h(psize2;)170
2247 y(MPI_Type_darray\(comm,)d(2,)j(dsize,)f(distrib,)g(dargs,)g(2,)g
(psize,)576 2304 y(order,)g(oldtype,)g(&newtype\);)75
2424 y Fq(MPI)p 160 2424 14 2 v 16 w(T)l(yp)q(e)p 268
2424 V 17 w(da)o(rra)o(y)p 403 2424 V 15 w(blo)q(ck)16
b(\(collective\))75 2510 y Ft(BLOCK)g(distribution)h(of)e(a)g
(one-dimensional)i(arra)o(y:)1967 46 y Fj(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 Fn(10.6.)34 b(FILETYPE)15 b(CONSTR)o(UCTORS)992
b Ft(41)75 49 y Fq(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(BLOCK\(comm,)13
b(dsize,)i(da)o(rg,)g(oldt)o(yp)q(e,)g(newt)o(yp)q(e\))117
126 y Ff(IN)155 b Fq(comm)470 b Ff([SAME])12 b(comm)o(uni)o(cator)e(to)
h(b)q(e)i(used)g(in)e(MPI)p 1655 126 13 2 v 15 w(Op)q(en)i(\(han-)905
183 y(dle\))117 258 y(IN)155 b Fq(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 333 y(IN)155 b Fq(da)o(rg)504 b Ff([SAME])21 b(distribution)f
(argumen)o(t,)i(e.g.)39 b(BLOCK\(darg\))905 390 y(\(in)o(teger\))117
465 y(IN)155 b Fq(oldt)o(yp)q(e)450 b Ff([SAME])14 b(old)f(datat)o(yp)q
(e)h(\(handle\))117 540 y(OUT)108 b Fq(newt)o(yp)q(e)433
b Ff(new)15 b(datat)o(yp)q(e)f(\(handle\))75 664 y Fp(int)23
b(MPI)p 245 664 15 2 v 17 w(Type)p 358 664 V 17 w(darray)p
519 664 V 16 w(block\(MPI)p 751 664 V 16 w(Comm)g(comm,)h(int)f(dsize,)
g(int)h(darg,)393 721 y(MPI)p 468 721 V 17 w(Datatype)f(oldtype,)f(MPI)
p 986 721 V 17 w(Datatype)h(*newtype\))75 807 y(MPI)p
150 807 V 17 w(TYPE)p 263 807 V 16 w(DARRAY)p 423 807
V 17 w(BLOCK\(COMM,)f(DSIZE,)h(DARG,)g(OLDTYPE,)g(NEWTYPE,)g(IERROR\))
170 864 y(INTEGER)g(COMM,)h(DSIZE,)f(DARG,)g(OLDTYPE,)g(NEWTYPE,)f
(IERROR)166 950 y Fq(MPI)p 251 950 14 2 v 16 w(TYPE)p
384 950 V 17 w(D)o(ARRA)l(Y)p 577 950 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 1007 y(tribution)h(of)f(a)g(one-dimensional)i
Fq(dsize)f Ft(elemen)o(t)g(arra)o(y)e(of)h Fq(oldt)o(yp)q(e)p
Ft(.)166 1063 y(This)h(call)g(is)g(a)f(shorthand)g(for:)170
1157 y Fp(MPI_Comm_size\(comm,)22 b(&size\);)170 1213
y(distrib)h(=)h(MPI_DISTRIBUTE_BLOCK;)170 1270 y
(MPI_Type_darray\(comm,)d(1,)j(dsize,)f(distrib,)g(darg,)g(1,)h(size,)
576 1326 y(order,)f(oldtype,)g(&newtype\);)166 1420 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 Fq(MPI)p 1395 1420 V 16 w(TYPE)p
1528 1420 V 17 w(D)o(ARRA)l(Y)p 1721 1420 V 18 w(CYCLIC)p
Ft(,)75 1477 y(b)q(ecause)16 b(it)g(is)f(not)g(meaningful)i(for)d(1D)h
(arra)o(ys.)75 1597 y Fq(MPI)p 160 1597 V 16 w(T)l(yp)q(e)p
268 1597 V 17 w(da)o(rra)o(y)p 403 1597 V 15 w(cyclic)h(\(collective\))
75 1682 y Ft(CYCLIC)g(distribution)g(of)f(a)g(one-dimensional)j(arra)o
(y:)75 1833 y Fq(MPI)p 160 1833 V 16 w(TYPE)p 293 1833
V 17 w(D)o(ARRA)l(Y)p 486 1833 V 17 w(CYCLIC\(comm,)13
b(dsize,)i(da)o(rg,)f(oldt)o(yp)q(e,)i(newt)o(yp)q(e\))117
1911 y Ff(IN)155 b Fq(comm)470 b Ff([SAME])12 b(comm)o(uni)o(cator)e
(to)h(b)q(e)i(used)g(in)e(MPI)p 1655 1911 13 2 v 15 w(Op)q(en)i(\(han-)
905 1967 y(dle\))117 2042 y(IN)155 b Fq(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 2117 y(IN)155 b Fq(da)o(rg)504 b Ff([SAME])19 b(distribution)f
(argumen)o(t,)h(e.g.)34 b(CYCLIC\(darg\))905 2174 y(\(in)o(teger\))117
2249 y(IN)155 b Fq(oldt)o(yp)q(e)450 b Ff([SAME])14 b(old)f(datat)o(yp)
q(e)h(\(handle\))117 2324 y(OUT)108 b Fq(newt)o(yp)q(e)433
b Ff(new)15 b(datat)o(yp)q(e)f(\(handle\))75 2448 y Fp(int)23
b(MPI)p 245 2448 15 2 v 17 w(Type)p 358 2448 V 17 w(darray)p
519 2448 V 16 w(cyclic\(MPI)p 775 2448 V 16 w(Comm)g(comm,)h(int)f
(dsize,)g(int)g(darg,)393 2505 y(MPI)p 468 2505 V 17
w(Datatype)g(oldtype,)f(MPI)p 986 2505 V 17 w(Datatype)h(*newtype\))75
2591 y(MPI)p 150 2591 V 17 w(TYPE)p 263 2591 V 16 w(DARRAY)p
423 2591 V 17 w(CYCLIC\(COMM,)f(DSIZE,)h(DARG,)g(OLDTYPE,)g(NEWTYPE,)g
(IERROR\))170 2648 y(INTEGER)g(COMM,)h(DSIZE,)f(DARG,)g(OLDTYPE,)g
(NEWTYPE,)f(IERROR\))-32 46 y Fj(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)1347 b Fn(CHAPTER)15 b(10.)30
b(I/O)166 49 y Fq(MPI)p 251 49 14 2 v 16 w(TYPE)p 384
49 V 17 w(D)o(ARRA)l(Y)p 577 49 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
106 y(tribution)k(of)f(a)g(one-dimensional)i Fq(dsize)f
Ft(elemen)o(t)g(arra)o(y)e(of)h Fq(oldt)o(yp)q(e)p Ft(.)166
162 y(This)h(call)g(is)g(a)f(shorthand)g(for:)170 256
y Fp(MPI_Comm_size\(comm,)22 b(&size\);)170 312 y(distrib)h(=)h
(MPI_DISTRIBUTE_CYCLIC;)170 369 y(MPI_Type_darray\(comm,)d(1,)j(dsize,)
f(distrib,)g(darg,)g(1,)h(size,)576 425 y(order,)f(oldtype,)g
(&newtype\);)75 569 y Fm(10.7)60 b(Prop)r(osal:)26 b(Simpli\014ed)19
b(Op)r(en)75 726 y Fp(Several)k(scientific)f(users)i(have)f(complained)
f(of)i(the)f(steep)h(learning)75 783 y(curve)f(of)h(this)f(interface)g
(and)g(have)g(suggested)g(we)h(provide)f(simplified)75
839 y("wrapper")g(functions.)46 b(Rather)23 b(than)g(adding)g(extra)h
(functions)e(to)i(the)75 896 y(specification,)e(the)h(following)g
(proposal)g(was)g(made)h(which)f(simplifies)75 952 y(I/O)g(for)h(the)f
(user)h(that)f(does)g(not)h(need)f(to)h(use)f(the)h(more)f
(sophisticated)75 1009 y(features,)g(and)g(also)g(allows)g(the)h
(filetype)f(to)g(be)h(changed)f(without)75 1065 y(re-opening)f(the)i
(file)f(or)h(using)f(file)g(control.)75 1178 y(Break)g(MPI_OPEN)g(in)h
(to)f(two)h(calls:)46 b(MPI_OPEN)23 b(and)h(MPI_LAYOUT.)75
1291 y(MPI_OPEN\(comm,)e(filename,)h(amode,)g(hints,)g(fh\))75
1404 y(Opens)g("filename")g(with:)75 1517 y(disp)g(=)h(0)75
1573 y(etype)f(=)h(MPI_BYTE)75 1630 y(filetype)f(=)g(MPI_BYTE)75
1743 y(This)g(essentially)g(mimic's)g(a)g(UNIX)h(open)f(call.)75
1856 y(MPI_LAYOUT\(fh,)f(disp,)h(etype,)g(filetype,)g(hints\))75
1968 y(Changes)g(the)g(process's)g(view)g(of)h(the)f(file.)47
b(It)24 b(is)g(assumed)e(to)75 2025 y(be)i(an)f(expensive)g(operation,)
f(and)i(is)f(collective.)47 b(It)23 b(would)75 2081 y(be)h(allowed)e
(to)i(be)g(done)f(at)h(any)f(time)g(on)h(an)g(open)f(file)g(handle.)75
2194 y(An)h(MPI_GET_LAYOUT)e(routine)g(could)i(also)f(be)h(provided)e
(\(see)i(the)f(proposed)75 2251 y(replacemenet)f(for)i
(MPI_FILE_CONTROL)d(above\).)75 2364 y(By)j(adding)f(this)g(change,)g
(a)h(user)f(can)g(open,)h(read,)f(and)g(write)g(a)h(file)75
2420 y(without)f(having)g(to)h(know)f(anything)g(about)g(etypes,)g
(filetypes,)f(displacement,)75 2477 y(etc.)47 b(It)24
b(also)f(means)g(that)h(you)f(can)g(open)h(a)g(file,)f(write)g(the)g
(header)g(using)75 2533 y(etype=filetype=MPI_BYTE,)e(and)i(then,)g
(after)g(the)h(header)f(has)g(been)h(written,)75 2589
y(set)f(the)h(layout)f(to)h(a)f(more)h(complicated)e(filetype)h(with)g
(a)h(displacement.)75 2646 y(You)f(need)h(not)f(close)g(and)h(re-open)f
(the)g(file)h(or)f(use)h(a)f(file)h(control)f(command.)75
2702 y(This)g(makes)g(it)h(easier)f(for)h(people)f(that)g(plan)g(to)h
(write)f(simple)g(headers)1967 46 y Fj(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 Fn(10.7.)34 b(PR)o(OPOSAL:)16 b(SIMPLIFIED)g(OPEN)
929 b Ft(43)75 49 y Fp(on)24 b(to)f(the)h(start)f(of)g(their)h(files.)
-32 46 y Fj(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 381 a Fr(Bibliograph)m(y)98 604 y Ft([1])21
b(F)l(ern)11 b(E.)f(Basso)o(w.)i(Installing,)h(managing,)e(and)g(using)
g(the)g(IBM)g(AIX)g(P)o(arallel)h(I/O)f(File)g(System.)168
660 y(IBM)16 b(Do)q(cumen)o(t)f(Num)o(b)q(er)h(SH34-6065-00,)d(F)l
(ebruary)i(1995.)k(IBM)c(Kingston,)g(NY.)98 754 y([2])21
b(P)o(eter)11 b(F.)g(Corb)q(ett,)g(Dror)f(G.)g(F)l(eitelson,)j
(Jean-Pierre)f(Prost,)f(George)g(S.)g(Almasi,)h(Sandra)f(John-)168
811 y(son)20 b(Ba)o(ylor,)g(An)o(thon)o(y)g(S.)f(Bolmarcic)o(h,)j(Y)l
(arsun)e(Hsu,)h(Julian)g(Satran,)f(Marc)f(Snir,)j(Rob)q(ert)168
867 y(Colao,)15 b(Brian)g(Herr,)g(Joseph)h(Ka)o(v)m(aky)l(,)e(Thomas)h
(R.)g(Morgan,)e(and)j(An)o(thon)o(y)e(Zlotek.)20 b(P)o(arallel)168
923 y(\014le)15 b(systems)e(for)f(the)i(IBM)g(SP)f(computers.)k
Fk(IBM)d(Systems)f(Journal)p Ft(,)h(34\(2\):222{2)o(48,)c(Jan)o(uary)
168 980 y(1995.)98 1074 y([3])21 b(Juan)15 b(Miguel)g(del)f(Rosario,)g
(Ra)s(jesh)g(Borda)o(w)o(ek)m(ar,)f(and)h(Alok)g(Choudhary)l(.)k(Impro)
o(v)o(ed)13 b(parallel)168 1130 y(I/O)i(via)f(a)f(t)o(w)o(o-phase)g
(run-time)i(access)e(strategy)l(.)k(In)d Fk(IPPS)g('93)h(Workshop)h(on)
f(Input/Output)168 1187 y(in)h(Par)n(al)r(lel)f(Computer)i(Systems)p
Ft(,)c(pages)i(56{70,)e(1993.)18 b(Also)d(published)j(in)e(Computer)e
(Arc)o(hi-)168 1243 y(tecture)i(News)f(21\(5\),)e(Decem)o(b)q(er)j
(1993,)d(pages)i(31{38.)98 1337 y([4])21 b(Charles)e(H.)f(Ko)q(elb)q
(el,)i(Da)o(vid)e(B.)g(Lo)o(v)o(eman,)g(Rob)q(ert)h(S.)f(Sc)o(hreib)q
(er,)i(Guy)d(L.)h(Steele)i(Jr.,)e(and)168 1393 y(Mary)d(E.)f(Zosel.)21
b Fk(The)15 b(High)i(Performanc)n(e)f(F)m(ortr)n(an)f(Handb)n(o)n(ok)p
Ft(.)k(MIT)c(Press,)g(1993.)98 1487 y([5])21 b(Da)o(vid)15
b(Kotz.)20 b(Disk-directed)c(I/O)f(for)g(MIMD)f(m)o(ultipro)q(cessors.)
20 b(In)15 b Fk(Pr)n(o)n(c)n(e)n(e)n(dings)f(of)i(the)g(1994)168
1544 y(Symp)n(osium)e(on)g(Op)n(er)n(ating)f(Systems)f(Design)h(and)h
(Implementation)p Ft(,)e(pages)g(61{74,)f(No)o(v)o(em)o(b)q(er)168
1600 y(1994.)19 b(Up)q(dated)d(as)f(Dartmouth)f(TR)h(PCS-TR94-226)g(on)
g(No)o(v)o(em)o(b)q(er)f(8,)h(1994.)98 1694 y([6])21
b(Da)o(vid)16 b(Kotz)g(and)f(Nils)i(Nieu)o(w)o(ejaar.)k(File-system)c
(w)o(orkload)e(on)g(a)g(scien)o(ti\014c)j(m)o(ultipro)q(cessor.)168
1750 y Fk(IEEE)e(Par)n(al)r(lel)f(and)h(Distribute)n(d)h(T)m(e)n
(chnolo)n(gy)p Ft(,)c(pages)i(51{60,)e(Spring)j(1995.)98
1844 y([7])21 b(Bill)15 b(Nitzb)q(erg.)h(P)o(erformance)c(of)g(the)h
(iPSC/860)f(Concurren)o(t)g(File)i(System.)h(T)l(ec)o(hnical)g(Rep)q
(ort)168 1901 y(RND-92-020,)f(NAS)i(Systems)f(Division,)h(NASA)g(Ames,)
f(Decem)o(b)q(er)g(1992.)98 1994 y([8])21 b(William)f(J.)f(Nitzb)q
(erg.)29 b Fk(Col)r(le)n(ctive)18 b(Par)n(al)r(lel)g(I/O)p
Ft(.)29 b(PhD)18 b(thesis,)h(Departmen)o(t)f(of)f(Computer)168
2051 y(and)f(Information)f(Science,)i(Univ)o(ersit)o(y)e(of)g(Oregon,)g
(Decem)o(b)q(er)h(1995.)98 2145 y([9])21 b(K.)h(E.)g(Seamons,)h(Y.)f
(Chen,)i(P)l(.)e(Jones,)h(J.)f(Jozwiak,)i(and)e(M.)g(Winslett.)41
b(Serv)o(er-directed)168 2201 y(collectiv)o(e)17 b(I/O)f(in)g(P)o
(anda.)j(In)d Fk(Pr)n(o)n(c)n(e)n(e)n(dings)e(of)j(Sup)n(er)n(c)n
(omputing)f('95)p Ft(,)f(Decem)o(b)q(er)g(1995.)75 2295
y([10])21 b(Ra)s(jeev)f(Thakur)f(and)g(Alok)h(Choudhary)l(.)32
b(An)20 b(extended)g(t)o(w)o(o-phase)f(metho)q(d)g(for)g(accessing)168
2351 y(sections)h(of)f(out-of-core)f(arra)o(ys.)30 b(T)l(ec)o(hnical)21
b(Rep)q(ort)f(CA)o(CR-103,)f(Scalable)h(I/O)g(Initiativ)o(e,)168
2408 y(Cen)o(ter)g(for)g(Adv)m(anced)i(Computing)e(Researc)o(h,)i
(Caltec)o(h,)f(June)h(1995.)33 b(Revised)22 b(No)o(v)o(em)o(b)q(er)168
2464 y(1995.)75 2558 y([11])f(The)f(MPI-IO)f(Committee.)31
b(MPI-IO:)19 b(a)g(parallel)h(\014le)g(I/O)f(in)o(terface)h(for)e(MPI,)
g(April)i(1996.)168 2615 y(V)l(ersion)c(0.5.)952 2828
y(44)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF