From: [email-masked] (Marc Snir)
Date: Tue, 14 Sep 1993 22:03:18 -0400

This is the current draft of the point to point section.  The nontrivial changes
are marked with margin marks, and should be discussed at coming meeting.  Also
need final approval of the derived datatypes.

**************** delete above line ************
%!PS-Adobe-2.0
%%Creator: dvips 5.47 (RS/6000 1.0) Copyright 1986-91 Radical Eye Software
%%Title: pt2pt-v8.dvi
%%Pages: 51 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 250 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
/BitMaps X /BuildChar{CharBuilder} N /Encoding IE N end dup{/foo setfont}2
array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
setfont}B /ch-width{ch-data dup length 5 sub get} B /ch-height{ch-data dup
length 4 sub get} B /ch-xoff{128 ch-data dup length 3 sub get sub} B /ch-yoff{
ch-data dup length 2 sub get 127 sub} B /ch-dx{ch-data dup length 1 sub get} B
/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{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}N /eop{clear SI restore
showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
array N 0 1 255{IE S 1 string dup 0 3 index put cvn put} for}N /p /show load N
/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
/rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0
7 getinterval(Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1
TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1
-.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{
moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{
S p tail}B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B
/j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w
}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p
a}B /bos{/SS save N}B /eos{clear SS restore}B end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 1 1 df<FFFEFFFE0F027D8516>0
D E /Fb 5 118 df<387CE0C0C0CCEC7C3806097E880B>99 D<FE00FF00330033003300330033
00FFC0FFC00A0980880B>110 D<3078CCCCCCCCCC783006097E880B>I<303030FEFE3030363636
3C18070C7F8B0B>116 D<FF00FF00330033003300330033003FC01FC00A0980880B>I
E /Fc 2 50 df<1E007F806180C0C0C0C0C0C0C0C0C0C0C0C0C0C061807F801E000A0D7E8C0E>
48 D<18F8F81818181818181818FFFF080D7D8C0E>I E /Fd 1 106 df<04040000000038FCD8
181832333E3C080F7E8E0B>105 D E /Fe 5 118 df<0F803FC071C06080E000C000C000C000E0
0060C071C03F800F000A0D7E8C0F>99 D<F700FFC03CC038C030C030C030C030C030C030C030C0
FCF0FCF00C0D7F8C0F>110 D<1E003F0073806180C0C0C0C0C0C0C0C0C0C0618073803F001E00
0A0D7E8C0F>I<0C000C000C00FFC0FFC00C000C000C000C000C000C000C600C600CE00FC00380
0B107F8F0F>116 D<F3C0F3C030C030C030C030C030C030C030C030C031C03FF00EF00C0D7F8C
0F>I E /Ff 2 81 df<00001C00003C0000F80001E00003C0000780000F00000E00001E00003C
00003C00001E00000E00000F000007800003C00001E00000F800003C00001C167C7B8121>40
D<FFFFFFFFE0FFFFFFFFF07800001FF07C000003F03E000000F81F000000380F0000001C0F8000
000C07C000000C03C000000603E000000001F000000000F80000000078000000007C000000003E
000000001E000000001F000000000F8000000007C000000003C000000003C00000000180000000
0380000000030000000006000000000C0000000018000000003800000000300000000060000000
00C0000006018000000C038000000C030000001C06000000380C000000F818000001F83800001F
F03FFFFFFFF07FFFFFFFF0FFFFFFFFE0272A7E7F2C>80 D E /Fg 3 111
df<03000380030000000000000000001C003E006600C600CC000C000C0018001980318033003F
001C00091480930C>105 D<0060007000600000000000000000038007C00CE018C018C000C000
C0018001800180018003000300030003006600EE00FC0078000C1A81930E>I<387C007CFE006F
8600CF0600CE06000E06000C06001C0C00180CC01818C0181980301F80300E00120D808C15>
110 D E /Fh 3 62 df<0FC01FE0387070386018E01CE01CE01CE01CE01CE01CE01CE01CE01C60
18703838701FE00FC00E137F9211>48 D<06001E00FE00EE000E000E000E000E000E000E000E00
0E000E000E000E000E000E00FFE0FFE00B137D9211>I<7FFFE0FFFFF000000000000000000000
0000000000000000FFFFF07FFFE0140A7E8B19>61 D E /Fi 25 123 df<007E01FE07800E001E
003C003C0078007FF87FF8F000F000F00070007000700038001C180FF807E00F147E9312>15
D<70F8F8F87005057C840D>58 D<70F8FCFC7C0C0C0C181838306040060E7C840D>I<E0000000
780000001E0000000780000001E0000000780000001C0000000F00000003C0000000F00000003C
0000000F00000003C0000003C000000F0000003C000000F0000003C000000F0000001C00000078
000001E00000078000001E00000078000000E00000001A1A7C9723>62 D<0FFFFFFC1FFFFFF81E
03C0781803C0383803C01830078018300780186007801860078030C00F0030C00F0030000F0000
000F0000001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000007800
0000780000007800000078000000F0000000F0000000F0000001F000007FFFC0007FFFC0001E1F
7F9E1B>84 D<00F18003FDC0078F800E07801C07803C07803C0700780700780700780700F00E00
F00E00F00E00F00E18F01C30F03C30707C3078FC603FCFC00F078015147E9318>97
D<07803F803F000700070007000E000E000E000E001C001C001CF01FFC3F1E3E0E3C0F380F700F
700F700F700FE01EE01EE01EE03CE03CE038607071E03FC01F0010207E9F14>I<0000780003F8
0003F00000700000700000700000E00000E00000E00000E00001C00001C000F1C003FDC0078F80
0E07801C07803C07803C0700780700780700780700F00E00F00E00F00E00F00E18F01C30F03C30
707C3078FC603FCFC00F078015207E9F18>100 D<007C01FE07870E031E033C033C06781C7FF8
7FC0F000F000F000F000700070027007381E1FF807E010147E9315>I<00007C0000FE00019E00
039E00030C000700000700000700000700000E00000E00000E0000FFF001FFF0000E00001C0000
1C00001C00001C00001C0000380000380000380000380000380000700000700000700000700000
700000E00000E00000E00000E00000C00001C00031C000798000F300007E00003C000017297E9F
16>I<007000F000F00060000000000000000000000000000007001F8039C031C061C061C0C380
03800380070007000E000E000E181C301C301C601CE00FC007000D1F7F9E10>105
D<0000C00001E00001E00001C0000000000000000000000000000000000000000000003E00007F
0000C380018380030380030380060700000700000700000700000E00000E00000E00000E00001C
00001C00001C00001C0000380000380000380000380000700000700030700078E000F3C0007F80
003E00001328819E13>I<01E0000FE0000FC00001C00001C00001C00003800003800003800003
80000700000700000701C00707E00E0C300E18700E30F00E60F01CC0E01F80001F80001FE00038
F000383800383800381C307038607038607038407018C0E01F80600F0014207E9F18>I<03C01F
C01F8003800380038007000700070007000E000E000E000E001C001C001C001C00380038003800
38007000700070007180E300E300E300E6007E003C000A207E9F0E>I<0F03E03E001F8FF0FF00
31DC39C38061F03B038061E01E01C061C01C01C0C3C03C03800380380380038038038003803803
800700700700070070070007007007000700700E0C0E00E00E180E00E01C180E00E01C300E00E0
0C701C01C00FE00C00C0078026147F9328>I<0F07C0001F8FE00031D8700061F0380061E03800
61C03800C3C070000380700003807000038070000700E0000700E0000700E0000701C1800E01C3
000E0383000E0386000E018E001C01FC000C00F00019147F931B>I<007C0001FF000383800F01
C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0F00780F00700700F00701E
003838001FF00007C00013147E9316>I<03C1E007E7F80C7E3C187C1C18781E18701E30E01E00
E01E00E01E00E01E01C03C01C03C01C03C01C07803C07803C07003C0E003E3C0077F80071E0007
00000700000E00000E00000E00000E00001C0000FFC000FFC000171D819317>I<0F0F001F9F80
31F1C061E1C061E3C061C3C0C3C3800380000380000380000700000700000700000700000E0000
0E00000E00000E00001C00000C000012147F9315>114 D<007C01FE0387070F070F070E0F0007
8007F803FC01FE001E000F700FF00EF00EE01C70383FF01FC010147E9315>I<00C000E001C001
C001C001C003800380FFF8FFF807000700070007000E000E000E000E001C001C001C001C183830
3830386038E01FC00F000D1C7F9B10>I<0780301FC03838C07030E07060E07061C070C1C0E003
80E00380E00380E00701C00701C00701C00701C3070386070386070786070F8C03F9F801F0F018
147F931A>I<07C3C00FE7E0187C703038706038F06038F0C070E000700000700000700000E000
00E00000E00070E030F1C060F1C060E1C0C0E3E1807E7F003C3E0014147E931A>120
D<0780301FC03838C07030E07060E07061C070C1C0E00380E00380E00380E00701C00701C00701
C00701C0070380070380070780070F8003FF0001F700000700000700000E003C0C003C1C003838
0030F0001FE0000F8000151D7F9316>I<01E06003F0C007FFC00E1F800C0300000600000C0000
180000300000600000C0000180000300000600C00C01801803803F87007FFE0061FC00C0700013
147E9315>I E /Fj 2 4 df<FFFFC0FFFFC012027D871A>0 D<040006000600C660F7E03F801F
003F80F7E0C6600600060004000B0D7E8D11>3 D E /Fk 13 122 df<70F8F8F8700000000000
00000070F8F8F8700512789116>58 D<1FE0007FF8007FFC00783C00301E00000E00003E0007FE
003FFE007FCE00F80E00E00E00E00E00F01E00F83E007FFFE03FF7E00FC3E013127E9116>97
D<03F80FFE1FFE3C1E780C7000F000E000E000E000E000F000700778073E0F1FFE0FFC03F01012
7D9116>99 D<003F00007F00003F0000070000070000070000070003E7000FFF003FFF003C1F00
780F00700F00F00700E00700E00700E00700E00700F00F00F00F00781F007C3F003FFFE01FF7F0
07C7E014197F9816>I<07E00FF81FFC3C3E780E700FF007FFFFFFFFFFFFE000F000700778073E
1F1FFE0FFC03F010127D9116>I<7E0000FE00007E00000E00000E00000E00000E00000E7C000F
FF000FFF800F87800F03800F03800E03800E03800E03800E03800E03800E03800E03800E03800E
03807FC7F0FFE7F87FC7F01519809816>104 D<7E7C00FFFF007FFF800F87800F03800F03800E
03800E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F015128091
16>110 D<03E0000FF8001FFC003C1E00780F00700700E00380E00380E00380E00380E00380F0
0780700700780F003C1E001FFC000FF80003E00011127E9116>I<FF0F80FF3FE0FFFFE007F1E0
07E0C007C000078000078000070000070000070000070000070000070000070000FFFC00FFFC00
FFFC0013127F9116>114 D<0FEC3FFC7FFCF03CE01CE01CF0007F801FF007FC003EE00EE00EF0
0EF81EFFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FFFF00FFFF
0007000007000007000007000007000007000007000007010007038007038007078007878003FF
0003FE0000F80011177F9616>I<7E1F80FE3F807E1F800E03800E03800E03800E03800E03800E
03800E03800E03800E03800E03800E07800F0F800FFFF007FFF803F3F01512809116>I<7F1FC0
FF9FE07F1FC01C07000E07000E0E000E0E00070E00071C00071C00039C00039C0003980001B800
01B80000F00000F00000F00000E00000E00000E00001C00079C0007BC0007F80003F00003C0000
131B7F9116>121 D E /Fl 7 104 df<FFFFFFC0FFFFFFC01A027C8B23>0
D<70F8F8F87005057C8D0D>I<018001C001800180C183E187F99F7DBE1FF807E007E01FF87DBE
F99FE187C1830180018001C0018010147D9417>3 D<07E01FF83FFC7FFE7FFEFFFFFFFFFFFFFF
FFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF807E010127D9317>15 D<C00006C00006C00006C00006
C00006C00006C00006C00006C00006C00006C00006C00006C00006C00006C00006C00006C00006
C00006C00006C00006C00006E0000E60000C70001C3800381F01F007FFC000FE00171C7D9A1E>
91 D<001F003F00F800E001C001C001C001C001C001C001C001C001C001C001C001C001C001C0
01C003800700FE00F800FE000700038001C001C001C001C001C001C001C001C001C001C001C001
C001C001C001C000E000F8003F001F102D7DA117>102 D<F800FE000F00038001C001C001C001
C001C001C001C001C001C001C001C001C001C001C001C000E00070003F000F003F007000E001C0
01C001C001C001C001C001C001C001C001C001C001C001C001C001C003800F00FE00F800102D7D
A117>I E /Fm 42 122 df<000600000006000000060000000600000006000000060000000600
00000600000006000000060000000600000006000000060000FFFFFFE0FFFFFFE0000600000006
000000060000000600000006000000060000000600000006000000060000000600000006000000
060000000600001B1C7E9720>43 D<FFE0FFE0FFE00B03808A0E>45 D<001C0000003E0000003E
0000002E0000006700000067000000E7800000C7800000C3800001C3C0000183C0000181C00003
81E0000381E0000700F0000700F0000600F0000E0078000FFFF8000FFFF8001FFFFC001C003C00
18003C0038001E0038001E0070001F0070000F0070000F00E0000780191D7F9C1C>65
D<FFF800FFFF00FFFF80F00FC0F003E0F000F0F000F0F000F0F000F0F000F0F001E0F007C0FFFF
80FFFE00FFFF80F01FC0F003E0F000F0F00078F00078F00078F00078F00078F000F0F001F0F007
E0FFFFC0FFFF80FFFC00151D7C9C1C>I<003FC000FFF003FFF007C0700F80001E00003E00003C
0000780000780000780000F00000F00000F00000F00000F00000F00000F00000F00000F0000078
00007800007800003C00003E00001E00000F800807C07803FFF800FFF0003F80151F7D9D1B>I<
FFFC00FFFF00FFFF80F00FE0F003F0F000F0F00078F00078F0003CF0003CF0001CF0001EF0001E
F0001EF0001EF0001EF0001EF0001EF0001EF0003CF0003CF0007CF00078F000F0F001F0F007E0
FFFFC0FFFF00FFFC00171D7C9C1E>I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F000
00F00000F00000F00000F00000FFFF80FFFF80FFFF80F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000FFFFC0FFFFC0FFFFC0121D7C9C19>I<FFFF80FFFF80FF
FF80F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFF00FFFF00FF
FF00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000111D7C9C18>I<003F8001FFF003FFF807C0F80F00181E00003E00003C0000780000780000
780000F00000F00000F00000F00000F00000F00000F007F8F007F8F007F8780038780038780038
3C00383E00381E00380F003807C07803FFF801FFF0003F80151F7D9D1C>I<F000F0F000F0F000
F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0FFFFF0FFFFF0FFFFF0F000
F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000
F0141D7C9C1D>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0041D
7C9C0C>I<F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
F000F000F000F000F000F000F000F000F000FFFEFFFEFFFE0F1D7C9C16>76
D<FC0007E0FC0007E0FC0007E0EE000DE0EE000DE0EE000DE0E70019E0E70019E0E70019E0E780
39E0E38031E0E3C071E0E3C071E0E1C061E0E1C061E0E1E0E1E0E1E0E1E0E0E0C1E0E0F1C1E0E0
7181E0E07181E0E07181E0E03B01E0E03B01E0E03B01E0E01E01E0E01E01E0E01E01E0E00001E0
1B1D7C9C24>I<FC0070FC0070FE0070EE0070EF0070E70070E70070E78070E38070E3C070E3C0
70E1E070E1E070E0E070E0F070E07070E07870E07870E03C70E03C70E01C70E01E70E00E70E00E
70E00F70E00770E007F0E003F0E003F0141D7C9C1D>I<003F000001FFE00003FFF00007C0F800
0F807C001E001E003E001F003C000F00780007807800078078000780F00003C0F00003C0F00003
C0F00003C0F00003C0F00003C0F00003C0F00003C0F80007C078000780780007807C000F803C00
0F003E001F001F003E000F807C0007C0F80003FFF00001FFE000003F00001A1F7E9D1F>I<FFFC
00FFFF00FFFF80F007C0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F007
C0FFFF80FFFF00FFFC00F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000141D7C9C1B>I<FFF800FFFF00FFFF80F007C0F001E0F000E0F000F0F000F0F0
00F0F000F0F000E0F001E0F007C0FFFF80FFFF00FFF800F03C00F01C00F01E00F00F00F00F00F0
0780F00780F003C0F003C0F001E0F000F0F000F0F00078151D7C9C1B>82
D<03F8000FFE001FFF003E0F00780300780000F00000F00000F00000F00000F800007C00007F00
003FE0001FFC0007FE0001FF00001F800007800007C00003C00003C00003C00003C00003C0C007
80E00780FC1F007FFE001FFC0007F000121F7E9D17>I<FFFFFF80FFFFFF80FFFFFF80001E0000
001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000191D7F9C1C>I<F00070F00070F00070F0
0070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F00070F0
0070F00070F00070F00070F00070F00070F000F07800E07801E03C03C01F07800FFF8007FE0001
F800141E7C9C1D>I<F0000380F00003807800070078000700780007003C000E003C000E003E00
0E001E001C001E001C000F0038000F0038000F003800078070000780700003C0600003C0E00003
C0E00001E0C00001E1C00001E1C00000F1800000F380000073000000730000007B0000003E0000
003E0000001C0000191D7F9C1C>I<F80001E07C0001C03E0003801E0007801F0007000F800E00
07801E0007C01C0003E03C0001E0380001F0700000F0F0000078E000007DC000003FC000001F80
00001F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F00001B1D809C1C>89 D<0FC03FF07FF87038401C001C001C00FC0F
FC3FFC781CE01CE01CE01CF07C7FFC7FDC3F1C0E127E9114>97 D<E000E000E000E000E000E000
E000E000E000E000E000E3E0EFF0FFF8F87CF01CE01EE00EE00EE00EE00EE00EE00EE01CF01CF8
7CFFF8EFF0E3C00F1D7D9C15>I<07E00FF81FFC3C1C70047000E000E000E000E000E000E00070
0070043C1C1FFC0FF807E00E127E9112>I<000E000E000E000E000E000E000E000E000E000E00
0E0F8E1FEE3FFE7C3E700E700EE00EE00EE00EE00EE00EE00EF00E701E7C3E3FFE1FEE0F8E0F1D
7E9C15>I<07C01FE03FF078787018601CFFFCFFFCFFFCE000E000E000700070043C1C3FFC1FF8
07E00E127E9112>I<00FC01FC03FC07000E000E000E000E000E000E000E00FFE0FFE0FFE00E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E1D809C0D>I<03C3C00F
FFC01FFFC01C3800381C00381C00381C00381C00381C001C38001FF8001FF0003BC00038000038
00001FFC001FFF003FFF80700780E001C0E001C0E001C0F003C07C0F803FFF001FFE0007F80012
1B7F9115>I<E000E000E000E000E000E000E000E000E000E000E000E3E0EFF0FFF8F83CF01CE0
1CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01CE01C0E1D7D9C15>I<F0F0F0F0000000
00000000707070707070707070707070707070707070041D7E9C0A>I<E000E000E000E000E000
E000E000E000E000E000E000E03CE078E0F0E1E0E3C0E780EF00FF00FF80FB80F9C0F1E0E0E0E0
F0E078E038E03CE01E0F1D7D9C14>107 D<E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0E0
E0E0E0E0E0E0E0E0031D7D9C0A>I<E3F03F00EFF8FF80FFFDFFC0F81F81E0F00F00E0E00E00E0
E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00E0E00E00
E0E00E00E0E00E00E01B127D9124>I<E3E0EFF0FFF8F83CF01CE01CE01CE01CE01CE01CE01CE0
1CE01CE01CE01CE01CE01CE01C0E127D9115>I<03F0000FFC001FFE003C0F00780780700380E0
01C0E001C0E001C0E001C0E001C0F003C07003807807803C0F001FFE000FFC0003F00012127F91
15>I<E3E0EFF0FFF8F87CF01CE01EE00EE00EE00EE00EE00EE00EE01CF03CF87CFFF8EFF0E3C0
E000E000E000E000E000E000E000E0000F1A7D9115>I<E380E780EF80FC00F800F000F000E000
E000E000E000E000E000E000E000E000E000E00009127D910E>114 D<1FC03FF07FF0F030E000
E000F0007F003FC01FE000F0003800388038F078FFF07FE01FC00D127F9110>I<1C001C001C00
1C001C001C00FFE0FFE0FFE01C001C001C001C001C001C001C001C001C001C001C001C201FF00F
F007C00C187F970F>I<E007E0077006700E700E381C381C381C1C381C381C380E700E70066007
6007E003C003C010127F9113>118 D<E007E007700E700E780E381C381C1C181C380C380E300E
7006700760036003C001C001C001800180030003000700FE00FC00F800101A7F9113>121
D E /Fn 15 118 df<387CFEFEFE7C3800000000387CFEFEFE7C3807127D910D>58
D<FFFFF800FFFFFF000FC01FC00FC007E00FC003F00FC001F80FC001F80FC000FC0FC000FC0FC0
00FC0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FE0FC000FC0F
C000FC0FC000FC0FC001F80FC001F80FC003F00FC007E00FC01FC0FFFFFF00FFFFF8001F1C7E9B
25>68 D<FFFFFFFF07E007E007E007E007E007E007E007E007E007E007E007E007E007E007E007
E007E007E007E007E007E007E007E007E0FFFFFFFF101C7F9B12>73 D<0FF8001FFE003E1F803E
07803E07C01C07C00007C003FFC01FFFC03F87C07E07C0FC07C0FC07C0FC07C0FC0FC07E1FC03F
FBF80FE1F815127F9117>97 D<03FC000FFE001F1F003E1F007C1F007C0E00FC0000FC0000FC00
00FC0000FC0000FC00007C00007E01803E03801F07000FFE0003F80011127E9115>99
D<01FC000FFF001F0F803E07C07C03C07C03E0FC03E0FFFFE0FFFFE0FC0000FC0000FC00007C00
007E00603E00C01F81C00FFF0001FC0013127F9116>101 D<1E003F003F007F003F003F001E00
00000000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F
001F00FFE0FFE00B1E7F9D0E>105 D<FF00FF001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1D7F9C
0E>108 D<FF1FC0FE00FF7FE3FF001FE1F70F801F80FC07C01F80FC07C01F00F807C01F00F807
C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F8
07C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF1FC0FF7FE01FE1F01F80F81F80F8
1F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF
18127F911B>I<01FC000FFF801F07C03E03E07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC01
F8FC01F87C01F07C01F03E03E01F07C00FFF8001FC0015127F9118>I<FF1FC0FFFFE01FC1F81F
00F81F00FC1F007C1F007E1F007E1F007E1F007E1F007E1F007E1F007C1F00FC1F80F81FC1F01F
7FE01F1F801F00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>I<1FD83F
F87038E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CF038FFF0CFC00E127E9113>
115 D<030003000300070007000F000F003F00FFFCFFFC1F001F001F001F001F001F001F001F00
1F001F0C1F0C1F0C1F0C0F9807F003E00E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F01F80F03F80FFEFF03F8FF18
127F911B>I E /Fo 6 79 df<000E0000001F0000001F0000003F8000003F8000003F80000067
C0000067C00000C3E00000C3E00001C3F0000181F0000381F80003FFF80003FFF80006007C0006
007C000C003E000C003E00FF00FFE0FF00FFE01B157F941F>65 D<007F8103FFF70FE03F1F000F
3E00077C00077C0003780003F80000F80000F80000F80000F800007800037C00037C00033E0006
1F000C0FE03803FFF0007FC018157E941E>67 D<FFFFF0FFFFF01F00F01F00301F00381F00181F
0C181F0C001F1C001FFC001FFC001F1C001F0C001F0C0C1F000C1F00181F00181F00381F00F8FF
FFF0FFFFF016157E941B>69 D<007F810003FFF7000FE03F001F000F003E0007007C0007007C00
030078000300F8000000F8000000F8000000F8000000F803FFE07803FFE07C001F007C001F003E
001F001F001F000FE01F0003FFFF00007FE3001B157E9420>71 D<FFE1FFC0FFE1FFC01F003E00
1F003E001F003E001F003E001F003E001F003E001F003E001FFFFE001FFFFE001F003E001F003E
001F003E001F003E001F003E001F003E001F003E001F003E00FFE1FFC0FFE1FFC01A157E9420>
I<FF003FC0FF803FC01FC006001BE0060019F0060019F8060018FC0600187E0600183F0600181F
8600180F86001807C6001803E6001801F6001800FE001800FE0018007E0018003E0018001E00FF
000E00FF0006001A157E9420>78 D E /Fp 78 126 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F870000000000070F8F8F870051C779B18>33 D<03C00007E0000FF0001E78001C38001C38001C
38001C38001C7BF01CF3F01EE3F00FE7800FC7000F87000F0F001F0E003F8E007B9E0073DC00F1
DC00E1FC00E0F800E07870F0F87071FE707FFFF03FCFE01F03C0141C7F9B18>38
D<007000F001F003C007800F001E001C003C003800780070007000F000E000E000E000E000E000
E000E000E000F00070007000780038003C001C001E000F00078003C001F000F000700C24799F18
>40 D<6000F00078003C001E000F000780038003C001C001E000E000E000F00070007000700070
007000700070007000F000E000E001E001C003C0038007800F001E003C007800F00060000C247C
9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007F00007F0001FFC
007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D9718>I<00600000F00000
F00000F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE07FFFC000F00000F00000F00000
F00000F00000F00000F00000600013147E9718>I<3C7E7F7F7F3F0F0E1E7CF870080C788518>I<
7FFF00FFFF80FFFF807FFF0011047D8F18>I<78FCFCFCFC780606778518>I<000300000780000F
80000F80000F00001F00001F00003E00003E00003C00007C00007C0000F80000F80000F00001F0
0001F00003E00003E00007C00007C0000780000F80000F80001F00001F00001E00003E00003E00
007C00007C0000780000F80000F80000F0000060000011247D9F18>I<01F00007FC000FFE001F
1F001C07003803807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E0
00E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE0007FC0001F000131C7E9B
18>I<01800380078007800F803F80FF80FB806380038003800380038003800380038003800380
03800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>I<07F8001FFE003FFF007C0F80
7003C0F001E0F000E0F000E0F000E00000E00000E00001E00001C00003C0000780000F00001E00
003C0000780000F00003E00007C0000F80001E00E03C00E07FFFE0FFFFE07FFFE0131C7E9B18>
I<07F8001FFE003FFF007C0F807803C07801C03001C00001C00003C0000780000F8003FF0003FE
0003FF00000F800003C00001C00001E00000E00000E0F000E0F001E0F001C0F003C07C0F803FFF
001FFE0007F800131C7E9B18>I<001F00003F00007F0000770000F70001E70001C70003C70007
87000707000E07001E07003C0700380700780700F00700FFFFF8FFFFF8FFFFF800070000070000
0700000700000700000700007FF000FFF8007FF0151C7F9B18>I<1FFF803FFF803FFF80380000
3800003800003800003800003800003800003800003BFC003FFE003FFF003E07801803C00001E0
0000E00000E06000E0F000E0F001E0E001C0F003C07C0F803FFF001FFE0007F800131C7E9B18>
I<007E0001FF0007FF800FC3C01F03C03C03C0380180780000700000700000F3F800EFFE00FFFF
00FE0F80F803C0F001C0F001E0F000E0F000E0F000E07000E07001E07801C03C03C01E0F800FFF
0007FE0003F800131C7E9B18>I<E00000FFFFE0FFFFE0FFFFE0E003C0E00780000F00000E0000
1E00001C00003C0000780000700000700000F00000E00000E00001E00001C00001C00001C00003
C000038000038000038000038000038000038000038000131D7E9C18>I<03F8000FFC001FFE00
3E0F00780780F003C0E001C0E001C0E001E0E001E0E001E0F001E07803E03E0FE01FFFE00FFEE0
03F8E00001E00001C00001C00003C0300380780780780F00783E003FFC001FF8000FE000131C7E
9B18>57 D<78FCFCFCFC78000000000000000078FCFCFCFC780614779318>I<3C7E7E7E7E3C00
00000000000000387C7E7E7E3E0E1E3C78F060071A789318>I<000300000F80001F80003F0000
FE0001FC0003F00007E0001FC0003F80007E0000FC0000FC00007E00003F80001FC00007E00003
F00001FC0000FE00003F00001F80000F8000030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0
000000000000000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<00700000F80000F8
0000D80000D80001DC0001DC0001DC00018C00038E00038E00038E00038E000306000707000707
000707000707000FFF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C
7F9B18>65 D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C0
1C07C01FFF801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C00701C00F01C00E0
1C03E0FFFFC0FFFF80FFFE00141C7F9B18>I<01FCE003FEE007FFE00F07E01E03E03C01E07800
E07000E07000E0F00000E00000E00000E00000E00000E00000E00000E00000E00000F000007000
E07000E07800E03C01E01E01C00F07C007FF8003FF0001FC00131C7E9B18>I<7FF800FFFE007F
FF001C0F801C03C01C03C01C01E01C00E01C00E01C00F01C00701C00701C00701C00701C00701C
00701C00701C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF80014
1C7F9B18>I<FFFFF0FFFFF0FFFFF01C00701C00701C00701C00701C00001C00001C0E001C0E00
1C0E001FFE001FFE001FFE001C0E001C0E001C0E001C00001C00001C00381C00381C00381C0038
1C0038FFFFF8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00
E01C00001C00001C1C001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C1C001C00001C00
001C00001C00001C00001C00001C0000FFC000FFC000FFC000131C7E9B18>I<01F9C007FFC00F
FFC01F0FC01C03C03C03C07801C07001C07001C0F00000E00000E00000E00000E00000E00000E0
0FF0E01FF0E00FF0F001C07001C07003C07803C03C03C01C07C01F0FC00FFFC007FDC001F9C014
1C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0
1C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0
1C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001C00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B18>I<7F07F0FF87F87F
07F01C03C01C07801C07001C0F001C1E001C3C001C38001C78001CF0001DF0001DF8001FF8001F
BC001F1C001E1E001E0E001C0F001C07001C07801C03801C03C01C01C07F03F0FF87F87F03F015
1C7F9B18>75 D<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00
700E00707FFFF0FFFFF07FFFF0141C7F9B18>I<FC01F8FE03F8FE03F83B06E03B06E03B06E03B
06E03B8EE03B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E03870E03870E038
00E03800E03800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF8
7F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C0
1C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0
151C7F9B18>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E003
80E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380F007807007
00780F007FFF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C
00701C00701C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C
00001C00001C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<0FF8003FFE00
7FFF00780F00700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380
E00380E00380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000FFC00
001C00001E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF001C0F801C03
801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F001C07801C03
801C03801C03801C03801C03801C039C1C039C1C039C7F03FCFF81F87F00F0161C7F9B18>I<07
F3801FFF803FFF807C1F80700780F00380E00380E00380E00000F000007800003F00001FF0000F
FE0001FF00001F800003C00001E00000E00000E06000E0E000E0E001E0F001C0FC07C0FFFF80FF
FF00E7FC00131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E07038007000007000
007000007000007000007000007000007000007000007000007000007000007000007000007000
00700000700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C00701C00
701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00
701C00701C00701C00701E00F00E00E00F01E007C7C003FF8001FF00007C00171C809B18>I<FF
07F8FF07F8FF07F81C01C01C01C01C01C01C01C00E03800E03800E03800E03800F078007070007
0700070700070700038E00038E00038E00038E00018C0001DC0001DC0001DC0000D80000F80000
F800007000151C7F9B18>I<FE03F8FE03F8FE03F87000707000707000703800E03800E03800E0
3800E03800E038F8E038F8E039DCE039DCE019DCC019DCC019DCC0198CC01D8DC01D8DC01D8DC0
1D8DC00D8D800D05800F07800F07800E0380151C7F9B18>I<7F8FE07F9FE07F8FE00E07000F07
00070E00078E00039C0003DC0001F80001F80000F00000F00000700000F00000F80001F80001DC
00039E00038E00070F000707000E07800E03801E03C07F07F0FF8FF87F07F0151C7F9B18>I<FF
07F8FF07F8FF07F81C01C01E03C00E03800F0780070700070700038E00038E0001DC0001DC0001
FC0000F80000F80000700000700000700000700000700000700000700000700000700001FC0003
FE0001FC00151C7F9B18>I<3FFFE07FFFE07FFFE07001C07003C0700780700700000F00001E00
001C00003C0000780000700000F00001E00001C00003C0000780000700000F00001E00E01C00E0
3C00E07800E07000E0FFFFE0FFFFE0FFFFE0131C7E9B18>I<FFF8FFF8FFF8E000E000E000E000
E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0
00E000E000E000E000E000E000FFF8FFF8FFF80D24779F18>I<FFF8FFF8FFF800380038003800
380038003800380038003800380038003800380038003800380038003800380038003800380038
0038003800380038003800380038FFF8FFF8FFF80D247F9F18>93 D<7FFF00FFFF80FFFF807FFF
0011047D7F18>95 D<1FE0003FF8007FFC00783E00300F0000070000070001FF000FFF003FFF00
7F0700780700F00700E00700E00700F00F00783F007FFFF03FFBF00FE1F014147D9318>97
D<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E000EFF800FFFC00FE3E00F80
F00F00700F00780E00380E00380E00380E00380E00380F00380F00780F00700F80F00FC3E00FFF
C00EFF80067E00151C809B18>I<01FE0007FF001FFF803F07803C0300780000700000F00000E0
0000E00000E00000E00000F000007000007801C03C01C03F07C01FFF8007FF0001FC0012147D93
18>I<001F80003F80001F8000038000038000038000038000038003F3800FFB801FFF803E1F80
780F80700780F00780E00380E00380E00380E00380E00380E00780F00780700780780F803E3F80
1FFFF00FFBF803E3F0151C7E9B18>I<03F0000FFC001FFE003E1F00780780700380F003C0E001
C0E001C0FFFFC0FFFFC0FFFFC0F000007000007801C03C01C03F07C01FFF8007FF0001FC001214
7D9318>I<001FC0007FE000FFE001F1E001C0C001C00001C00001C0007FFFC0FFFFC0FFFFC001
C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C0007FFF007FFF007FFF00131C7F9B18>I<03F1F007FFF80FFFF81E1F303C0F00380700380700
3807003807003807003C0F001E1E001FFC003FF8003BF0003800003C00001FFF001FFFC03FFFE0
7801F0F00078E00038E00038E00038F000787800F07E03F03FFFE00FFF8003FE00151F7F9318>
I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3F000EFF800FFFC00FE1E00F80
E00F00E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3
FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C00003800000000000000000000000
00007FC000FFC0007FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<0038007C007C007C00
3800000000000000000FFC1FFC0FFC001C001C001C001C001C001C001C001C001C001C001C001C
001C001C001C001C001C001C001C001C001C003C6038F078FFF07FE03FC00E277E9C18>I<FE00
00FE0000FE00000E00000E00000E00000E00000E00000E3FF00E7FF00E3FF00E07800E0F000E1E
000E3C000E78000EF0000FF8000FFC000F9C000F1E000E0F000E07800E03800E03C0FFC7F8FFC7
F8FFC7F8151C7F9B18>I<7FE000FFE0007FE00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7DF1F000FFFBF8007FFFFC001F1F1C
001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C
1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F001914819318>I<7E3F00FEFF80
7FFFC00FE1E00F80E00F00E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
0E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF003E0F803803807001
C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF000FFE
0001F00013147E9318>I<7E3E00FEFF807FFFC00FE3E00F80F00F00700F00780E00380E00380E
00380E00380E00380F00380F00780F00700F80F00FC3E00FFFC00EFF800E7E000E00000E00000E
00000E00000E00000E00000E00007FC000FFE0007FC000151E809318>I<7F87E0FF9FF87FBFF8
03FC7803F03003E00003C00003C00003C000038000038000038000038000038000038000038000
0380007FFE00FFFF007FFE0015147F9318>114 D<0FF7003FFF007FFF00F81F00E00700E00700
F007007C00007FF0001FFC0007FE00001F00600780E00380F00380F00780FC0F00FFFF00FFFE00
E7F80011147D9318>I<0180000380000380000380000380007FFFC0FFFFC0FFFFC00380000380
000380000380000380000380000380000380000380000380400380E00380E00381E003C3C001FF
C000FF80007E0013197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E
00E00E00E00E00E00E00E00E00E00E00E00E00E00E01E00F07E007FFFC03FFFE01FCFC17148093
18>I<7F8FF0FF8FF87F8FF01E03C00E03800E03800E0380070700070700070700038E00038E00
038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318>I<FF8FF8FF8FF8FF8F
F83800E03800E03800E01C01C01C01C01C71C01CF9C01CF9C01CD9C01CD9C00DDD800DDD800DDD
800D8D800F8F800F8F8007070015147F9318>I<7F8FF07F9FF07F8FF0070700078E00039E0001
DC0001F80000F80000700000F00000F80001DC00039E00038E000707000F07807F8FF0FF8FF87F
8FF015147F9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E0380070380070700070700038700
038600038E0001CE0001CE0000CC0000CC0000DC00007800007800007800007000007000007000
00F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001
E07003C0700780000F00001E00007C0000F80001F00003E0000780000F00701E00703C00707800
70FFFFF0FFFFF0FFFFF014147F9318>I<0007E0003FE0007FE000FC0000E00000E00000E00000
E00000E00000E00000E00000E00000E00000E00000E00001E0007FC000FF8000FF80007FC00001
E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000FC0000
7FE0003FE00007E013247E9F18>I<7C0000FF8000FFC00007E00000E00000E00000E00000E000
00E00000E00000E00000E00000E00000E00000E00000F000007FC0003FE0003FE0007FC000F000
00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00007E000FFC000
FF80007C000013247E9F18>125 D E /Fq 18 122 df<7FF0FFE0FFE00C037D8A10>45
D<00F18003FDC0078F800E07801C07803C07803C0700780700780700780700F00E00F00E00F00E
00F00E30F01C60F03C60707C6078FCC03FCFC00F078014147C9317>97 D<07803F803F00070007
0007000E000E000E000E001C001C001CF01FFC3F1E3E0E3C0F380F700F700F700F700FE01EE01E
E01EE03CE03CE038607071E03FC01F0010207B9F15>I<007C0001FF000783000F01801E01803C
01803C0300780E007FFC007FE000F00000F00000F00000F000007000007002007807003C1E001F
F80007E00011147C9315>101 D<0000F80001FC0003BC00033C000718000700000700000E0000
0E00000E00000E00000E0001FFE001FFE0001C00001C00001C0000380000380000380000380000
380000700000700000700000700000700000700000E00000E00000E00000E00001C00001C00001
C0000180003380007B8000F300007E00003C00001629829F0E>I<003C6000FF7001E3E00381E0
0701E00F01E00F01C01E01C01E01C01E01C03C03803C03803C03803C03803C07003C0F001C1F00
1E3F000FFE0003CE00000E00000E00001C00001C00301C00783800F0F0007FE0003F8000141D7E
9315>I<006000F000F000E000000000000000000000000000000F001F80318031C063806380C3
800700070007000E000E000E001C301C601C6038C018C01F800F000C1F7D9E0E>105
D<01E0000FE0000FC00001C00001C00001C0000380000380000380000380000700000700000703
C00707E00E0C600E10E00E21E00E61E01CC1C01F80001F00001FC00039E0003870003870003838
607070C07070C07070C0703180E03F00601E0013207D9F15>107 D<03C01FC01F800380038003
8007000700070007000E000E000E000E001C001C001C001C003800380038003800700070007000
7180E300E300E300E6007E003C000A207C9F0C>I<1E07C0F8003F1FE1FC0033B8730E0063E076
070063C03C07006380380700C780780E000700700E000700700E000700700E000E00E01C000E00
E01C000E00E01C000E00E038601C01C038C01C01C038C01C01C071801C01C031803803803F0018
01801E0023147D9325>I<1E07C03F1FE033B87063E07063C038638038C7807007007007007007
00700E00E00E00E00E00E00E01C31C01C61C01C61C038C1C018C3801F81800F018147D931A>I<
007C0001FF000383800F01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0
F00780F00700700F00701E003838001FF00007C00013147C9317>I<1E0F003F3F8033F1C063C1
C063C3C06383C0C783800700000700000700000E00000E00000E00000E00001C00001C00001C00
001C000038000018000012147D9313>114 D<00FC03FE07070E0F0E0F0E0E1E000F800FF007F8
03FC003E001E701EF01CF01CE03860703FE01F8010147D9313>I<018001C00380038003800380
07000700FFF0FFF00E000E000E000E001C001C001C001C0038003800380038307060706070C071
803F001E000C1C7C9B0F>I<0F01C01F83C03183E031C1E06380E06380E0C380C00700C00700C0
0700C00E01800E01800E01800E03000E03000E06000E06000F0C0007F80001E00013147D9315>
118 D<0787800FCFC018F8E03070E06071E06071E0C0E1C000E00000E00000E00001C00001C000
01C00071C060F380C0F380C0E38180C7C3007CFE00387C0013147D9315>120
D<0F00601F80703180E031C0E06380E06380E0C381C00701C00701C00701C00E03800E03800E03
800E03800E07000E07000E0F000E1F0007FE0003EE00000E00000E00001C00781C007838007070
0060E0003FC0001F0000141D7D9316>I E /Fr 48 122 df<FFE0FFE0FFE00B037F8C10>45
D<F0F0F0F004047B830E>I<00C001C007C0FFC0FFC0FBC003C003C003C003C003C003C003C003
C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0FFFFFFFF
FFFF10227CA118>49 D<03F0000FFC001FFE003C1F003807807007C07003C0F003E0E001E06001
E02001E00001E00001E00001E00003C00003C0000780000780000F00001E00003C0000780000F0
0001E00001C0000380000700000E00001C0000380000700000FFFFE0FFFFE0FFFFE013227EA118
>I<01F00007FC001FFF003E0F003807807003C02003C02003C00003C00003C00003C000078000
0780000F00001E0003FC0003F80003FE00000F000007800003C00003C00001E00001E00001E000
01E00001E08001E0C003C0E003C07007803C0F801FFF000FFC0003F00013237EA118>I<001F00
001F00002F00002F00006F0000EF0000CF0001CF0001CF00038F00038F00078F00070F000F0F00
0E0F001E0F003C0F003C0F00780F00780F00F00F00FFFFF8FFFFF8FFFFF8000F00000F00000F00
000F00000F00000F00000F00000F00000F0015217FA018>I<3FFF803FFF803FFF803C00003C00
003C00003C00003C00003C00003C00003C00003C00003CF8003FFE003FFF003F0F803E07803C03
C03803C00001E00001E00001E00001E00001E00001E00001E04003C04003C0E003C07007807C1F
003FFE000FFC0003F00013227EA018>I<007E0001FF0003FF0007C1000F00001E00001E00003C
00003C000078000078000078F800F3FE00F7FF00FF0F80FC0780F803C0F803C0F801C0F001E0F0
01E0F001E0F001E0F001E07001E07001E07801E07803C03803C03C03801C07801F0F000FFE0007
FC0001F00013237EA118>I<FFFFE0FFFFE0FFFFE00001E00003C0000380000780000F00000E00
001E00001C00003C0000380000780000780000F00000F00000E00001E00001E00001E00003C000
03C00003C00003C00003C00007800007800007800007800007800007800007800013217EA018>
I<01F00007FC000FFE001E0F003C07803C07807803C07803C07803C07803C07803C03803803C07
801E0F000F1E0007FC0003F8000FFE001E0F003C07807803C07803C0F001E0F001E0F001E0F001
E0F001E0F001E07803C07803C03C07803E0F801FFF0007FC0001F00013237EA118>I<01F00007
FC000FFE001E0F003C07003807807803807803C0F003C0F001C0F001E0F001E0F001E0F001E0F0
01E0F001E07003E07803E07803E03C07E03E1FE01FFDE00FF9E003E3C00003C00003C000038000
0780000700000F00101E00183C003FF8001FF00007C00013237EA118>I<001F0000001F000000
3F8000003F8000003B8000007BC0000073C0000071C00000F1E00000F1E00000E0E00001E0F000
01E0F00001C0F00003C0780003C078000380780007803C0007803C0007003C000F001E000F001E
000FFFFE001FFFFF001FFFFF001C000F003C0007803C00078038000780780003C0780003C07000
03C0F00001E0F00001E0E00001E01B237EA220>65 D<FFFC00FFFF80FFFFC0F007F0F001F0F000
78F0003CF0003CF0003CF0003CF0003CF00038F00078F000F0F003E0FFFFC0FFFF00FFFFC0F00F
E0F001F8F00078F0003CF0001CF0001EF0001EF0001EF0001EF0001EF0003CF0007CF000F8F003
F0FFFFE0FFFFC0FFFE0017237BA220>I<000FF000007FFC0000FFFF0001F01F0003C007000780
02000F0000001E0000003E0000003C0000003C000000780000007800000078000000F0000000F0
000000F0000000F0000000F0000000F0000000F0000000F0000000F00000007800000078000000
780000003C0000003C0000003E0000001E0000000F0000800780018003C0038001F00F8000FFFF
00007FFC00000FF00019257DA31F>I<FFFE0000FFFFC000FFFFE000F003F000F000F800F0007C
00F0003E00F0001E00F0000F00F0000F00F0000780F0000780F0000780F00003C0F00003C0F000
03C0F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F0000380F0000780F0000780F0
000780F0000F00F0001F00F0001E00F0003C00F000FC00F003F800FFFFE000FFFFC000FFFE0000
1A237BA223>I<FFFFF0FFFFF0FFFFF0F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000FFFFE0FFFFE0FFFFE0F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000FFFFF8FFFFF8FFFFF815237BA21D
>I<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000FFFFC0FFFFC0FFFFC012237BA21A>76
D<FC00007EFE0000FEFE0000FEFE0000FEF70001DEF70001DEF70001DEF78003DEF380039EF380
039EF3C0079EF3C0079EF1C0071EF1C0071EF1E00F1EF0E00E1EF0E00E1EF0F01E1EF0F01E1EF0
701C1EF0783C1EF0783C1EF038381EF03C781EF03C781EF01C701EF01C701EF01EF01EF00EE01E
F00EE01EF00FE01EF007C01EF007C01EF007C01EF000001E1F237BA22A>I<FC001EFE001EFE00
1EFE001EF7001EF7001EF3801EF3801EF3C01EF1C01EF1C01EF1E01EF0E01EF0F01EF0F01EF078
1EF0781EF0381EF03C1EF03C1EF01E1EF01E1EF00E1EF00F1EF0071EF0071EF0079EF0039EF003
9EF001DEF001DEF000FEF000FEF000FEF0007E17237BA222>I<001FC000007FF00001FFFC0003
F07E0007C01F000F800F801F0007C01E0003C03C0001E03C0001E0780000F0780000F0780000F0
70000070F0000078F0000078F0000078F0000078F0000078F0000078F0000078F0000078F00000
78780000F0780000F0780000F07C0001F03C0001E03E0003E01E0003C01F0007C00F800F8007C0
1F0003F07E0001FFFC00007FF000001FC0001D257DA324>I<FFFE00FFFF80FFFFC0F003E0F000
F0F00078F00078F0003CF0003CF0003CF0003CF0003CF0003CF00078F00078F000F0F003E0FFFF
C0FFFF80FFFE00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F0000016237BA21F>I<FFFC00FFFF80FFFFC0F003E0F000F0F00078F0
0038F0003CF0003CF0003CF0003CF0003CF00038F00078F000F0F003E0FFFFC0FFFF80FFFE00F0
1E00F00F00F00700F00780F00380F003C0F001E0F001E0F000F0F000F0F00078F00038F0003CF0
001EF0001EF0000F18237BA21F>82 D<00FF0003FFC007FFF00F83F01E00F03C00203C00007800
007800007800007800007800007C00003C00003F00001FC0000FFC0007FF0001FF80003FC00007
E00001F00000F00000F8000078000078000078000078000078400078E000F0F000F0F801E07F07
C03FFF800FFF0001FC0015257EA31B>I<F0003CF0003CF0003CF0003CF0003CF0003CF0003CF0
003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0003CF0
003CF0003CF0003CF0003CF0003CF0003CF0003C7800787800787800783C00F01E01E01F87E00F
FFC003FF0000FC0016247BA221>85 D<07E01FF83FFC3C1E301E200F000F000F000F01FF0FFF3F
FF7F0F780FF00FF00FF00FF80F7C3F7FFF3FFF1F8F10167E9517>97 D<F00000F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F1F000F7FC00FFFE00FC
1F00F80F00F00780F00780F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F00780F0
0780F80F00FC3E00FFFE00F7F800F3F00012237CA219>I<01FC0007FF000FFF801F07803C0180
780000780000700000F00000F00000F00000F00000F00000F000007800007800007800403C00C0
1F07C00FFFC007FF8001FC0012167E9516>I<0003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C00003C00003C003F3C00FFFC01FFFC03F0FC03C07C07803C07803
C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C07803C07803C03C07C03E0FC01FFF
C00FFBC003E3C012237EA219>I<03F00007FC001FFE003E0F003C0780780380780380F001C0FF
FFC0FFFFC0FFFFC0F00000F00000F000007000007800007800003C00801F07800FFF8007FF0001
F80012167E9516>I<003F00FF01FF03C1038007800780078007800780078007800780FFF8FFF8
FFF807800780078007800780078007800780078007800780078007800780078007800780078007
80102380A20F>I<01F0F807FFF80FFFF81F1F801E0F003C07803C07803C07803C07803C07801E
0F001F1F001FFE001FFC0039F0003800003800003C00003FFE001FFFC01FFFE03FFFF07801F0F8
00F8F00078F00078F00078F000787800F03E03E01FFFC00FFF8001FC0015217F9518>I<F000F0
00F000F000F000F000F000F000F000F000F000F000F000F1F8F7FCFFFEFE1EF80FF80FF00FF00F
F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10237CA219>I<F0F0F0F0
000000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004237DA20B>I<00
F000F000F000F000000000000000000000000000000000000000F000F000F000F000F000F000F0
00F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000
F080F0E3E0FFE07FC01F000C2D83A20D>I<F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F01F80F03F00F03E00F07C00F0F800F1F000F3E000
F7C000FFC000FFC000FFE000FFE000FDF000F8F800F07800F07C00F03E00F01E00F01F00F00F00
F00F80F007C012237CA218>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F004237DA20B>I<F0F807C0F3FE1FF0FFFF7FF8FE0FF078FC0FE07CF807C0
3CF807C03CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007
803CF007803CF007803CF007803CF007803CF007803CF007803C1E167C9529>I<F1F8F7FCFFFE
FE1EF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10
167C9519>I<01FC0007FF000FFF801F07C03C01E07800F07800F0700070F00078F00078F00078
F00078F00078F000787800F07800F07C01F03E03E01F07C00FFF8007FF0001FC0015167F9518>
I<F1F000F7FC00FFFE00FC3F00F80F00F00780F00780F007C0F003C0F003C0F003C0F003C0F003
C0F003C0F007C0F00780F00F80F80F00FC3E00FFFE00F7F800F3F000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F0000012207C9519>I<F0E0F3E0F7E0FFE0FF00FC00F8
00F800F000F000F000F000F000F000F000F000F000F000F000F000F000F0000B167C9511>114
D<07F01FFE3FFF3C0F7803780078007C003F003FF01FF80FFC01FE001F000F000F400FE00FF81E
FFFE3FFC0FF010167F9513>I<0F000F000F000F000F000F00FFF8FFF8FFF80F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F080F1C07FC07F803E00E1C7F9B12>I<F00F
F00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF01FF83F7FFF7F
EF1F8F10167C9519>I<F001E0F001E07803C07803C07803C03C07803C07803C07801E07001E0F
001E0F000F0E000F1E000F1E00071C00079C0007BC0003B80003B80003F80001F00001F0001316
7F9516>I<F007803CF00FC03CF00FC03C780DC078781DC078781DE078781CE0783C18E0F03C38
E0F03C38F0F01C38F0E01E3871E01E3071E01E7079E00E7079C00E7039C00F603BC007603B8007
601B8007C01F8007C01F8003C01F001E167F9521>I<7801F07C01E03E03C01E07C00F0780078F
0007DE0003FC0001FC0000F80000700000F80001FC0003DC00039E00078F000F07801E07801E03
C03C01E07800F0F800F81516809516>I<F001E0F001E07803C07803C07C03C03C07803C07801E
07801E07001E0F000F0F000F0E00071E00079E00039C00039C00039C0001980001D80000F80000
F00000F00000F00000E00000E00001E00001C00001C0004380007F80007F00007E000013207F95
16>I E /Fs 61 124 df<003F0F0000FFBF8003C3F3C00703E3C00703C1800E01C0000E01C000
0E01C0000E01C0000E01C0000E01C000FFFFFC00FFFFFC000E01C0000E01C0000E01C0000E01C0
000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01
C0007F87FC007F87FC001A1D809C18>11 D<003F0000FF8003C1C00703C00703C00E01800E0000
0E00000E00000E00000E0000FFFFC0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F87F87F8151D809C17>I<003FC000FF
C003C3C00703C00701C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC0FFFFC00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCF
F87FCFF8151D809C17>I<003F03F00000FFCFF80003C0FC1C000701F03C000701F03C000E00E0
18000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC00FFFFFFFC000E00
E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E
00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF807FC7FCFF80
211D809C23>I<7070F8F8FCFCFCFC7C7C0C0C0C0C0C0C181818183030606040400E0D7F9C15>
34 D<00C00180030006000E000C001C0018003800300030007000700060006000E000E000E000
E000E000E000E000E000E000E000E000E000600060007000700030003000380018001C000C000E
0006000300018000C00A2A7D9E10>40 D<C0006000300018001C000C000E000600070003000300
038003800180018001C001C001C001C001C001C001C001C001C001C001C001C001800180038003
8003000300070006000E000C001C00180030006000C0000A2A7E9E10>I<70F0F8F87818181830
30706040050D7D840C>44 D<FFE0FFE0FFE00B0380890E>I<70F8F8F87005057D840C>I<030007
003F00FF00C7000700070007000700070007000700070007000700070007000700070007000700
07000700070007000700FFF8FFF80D1C7C9B15>49 D<07E01FF03838301C781E781E781E381E00
1E003C0038007007E007E00038001C001E000E000F000F700FF80FF80FF80EF01E601C38381FF0
07C0101D7E9B15>51 D<001C00001C00003C00007C00007C0000DC0001DC00019C00039C00071C
00061C000E1C000C1C00181C00381C00301C00601C00E01C00FFFFC0FFFFC0001C00001C00001C
00001C00001C00001C0001FFC001FFC0121C7F9B15>I<00F003FC070C0E0E1C1E381E380C7800
70007000F3F0F7F8FC1CF81EF80EF00EF00FF00FF00FF00FF00F700F700F700E380E381C1C380F
F003E0101D7E9B15>54 D<70F8F8F870000000000000000070F8F8F87005127D910C>58
D<70F8F8F870000000000000000070F0F8F8781818183030706040051A7D910C>I<0006000000
0F0000000F0000000F0000001F8000001F8000001F8000001F80000033C0000033C0000033C000
0061E0000061E0000061E00000C0F00000C0F00000C0F000018078000180780001FFF80003FFFC
0003003C0003003C0006001E0006001E0006001E001F001F00FFC0FFF0FFC0FFF01C1D7F9C1F>
65 D<001F808000FFE18003F0338007801B800F000F801E0007801C0003803C00038078000380
7800018070000180F0000180F0000000F0000000F0000000F0000000F0000000F0000000F00000
007000018078000180780001803C0001801C0003001E0003000F00060007800C0003F0380000FF
F000001F8000191E7E9C1E>67 D<FFFFFCFFFFFC0F007C0F001C0F000C0F000E0F00060F03060F
03060F03060F03000F07000FFF000FFF000F07000F03000F03000F03030F03030F00030F00060F
00060F00060F000E0F001E0F007CFFFFFCFFFFFC181C7E9B1C>69 D<FFFFF8FFFFF80F00780F00
380F00180F001C0F000C0F000C0F030C0F030C0F03000F03000F07000FFF000FFF000F07000F03
000F03000F03000F03000F00000F00000F00000F00000F00000F0000FFF800FFF800161C7E9B1B
>I<001F808000FFE18003F0338007801B800F000F801E0007801C0003803C0003807800038078
00018070000180F0000180F0000000F0000000F0000000F0000000F0000000F000FFF0F000FFF0
7000078078000780780007803C0007801C0007801E0007800F00078007800F8003F0398000FFF0
80001FC0001C1E7E9C21>I<FFF3FFC0FFF3FFC00F003C000F003C000F003C000F003C000F003C
000F003C000F003C000F003C000F003C000F003C000FFFFC000FFFFC000F003C000F003C000F00
3C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00FF
F3FFC0FFF3FFC01A1C7E9B1F>I<FFF0FFF00F000F000F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF0FFF00C1C7F9B0F>I<FF
8000FF80FFC001FF800FC001F8000FC001F8000DE00378000DE00378000DE00378000CF0067800
0CF00678000CF00678000C780C78000C780C78000C780C78000C3C1878000C3C1878000C3C1878
000C1E3078000C1E3078000C1E3078000C0F6078000C0F6078000C0F6078000C07C078000C07C0
78000C07C078001E03807800FFC387FF80FFC387FF80211C7E9B26>77 D<FF00FFC0FF80FFC00F
801E000FC00C000FC00C000DE00C000CF00C000CF00C000C780C000C780C000C3C0C000C1E0C00
0C1E0C000C0F0C000C0F0C000C078C000C07CC000C03CC000C01EC000C01EC000C00FC000C00FC
000C007C000C003C000C003C001E001C00FFC01C00FFC00C001A1C7E9B1F>I<003F800000FFE0
0003E0F80007803C000E000E001E000F003C00078038000380780003C0780003C0700001C0F000
01E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0780003C0780003C078
0003C03C0007803C0007801E000F000F001E0007803C0003E0F80000FFE000003F80001B1E7E9C
20>I<FFFF80FFFFE00F00F00F00380F003C0F001E0F001E0F001E0F001E0F001E0F001E0F003C
0F00380F00F00FFFE00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F0000FFF000FFF000171C7E9B1C>I<FFFF0000FFFFE0000F00F0000F0038000F003C000F001E
000F001E000F001E000F001E000F001E000F003C000F0038000F00F0000FFFE0000FFFC0000F01
E0000F00F0000F0078000F0078000F0078000F0078000F0078000F0078000F0078000F0078300F
003830FFF03C60FFF01FE0000007C01C1D7E9B1F>82 D<07E0801FF9803C1F80700780700380E0
0380E00180E00180E00180F00000F000007C00007FC0003FF8001FFE0007FF0000FF80000F8000
03C00003C00001C0C001C0C001C0C001C0E00180E00380F00300FC0E00CFFC0083F800121E7E9C
17>I<7FFFFFC07FFFFFC0780F03C0700F01C0600F00C0E00F00E0C00F0060C00F0060C00F0060
C00F0060000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00
00000F0000000F0000000F0000000F0000000F0000000F0000000F000003FFFC0003FFFC001B1C
7F9B1E>I<FFF0FFC0FFF0FFC00F001E000F000C000F000C000F000C000F000C000F000C000F00
0C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F000C000F
000C000F000C000F000C000F000C0007001800078018000380300001C0300000E0E000007FC000
001F00001A1D7E9B1F>I<FFE0FFE1FFFFE0FFE1FF1F001E007C0F001E00300F003F00300F003F
00300F803F007007806780600780678060078067806003C0E780C003C0C3C0C003C0C3C0C001E0
C3C18001E181E18001E181E18001E181E18000F381F30000F300F30000F300F300007B00F60000
7E007E00007E007E00007E007E00003C003C00003C003C00003C003C00001C0038000018001800
281D7F9B2B>87 D<FFF00FFCFFF00FFC078003C007C0038003C0030003E0060001F0060000F00C
0000F81C0000781800007C3800003C3000001E6000001F6000000FC000000FC000000780000007
80000007800000078000000780000007800000078000000780000007800000078000007FF80000
7FF8001E1C809B1F>89 D<08081818303060606060C0C0C0C0C0C0F8F8FCFCFCFC7C7C38380E0D
7B9C15>92 D<0FE0001FF8003C3C003C1E00180E00000E00001E0007FE001FFE003E0E00780E00
F00E00F00E60F00E60F01E60783E603FFFC01F878013127F9115>97 D<FC0000FC00001C00001C
00001C00001C00001C00001C00001C00001C00001C00001C7E001DFF001F87801E01C01C01E01C
00E01C00F01C00F01C00F01C00F01C00F01C00F01C00E01C01E01E01C01F078019FF00187C0014
1D7F9C17>I<03F00FF81E3C383C78187000F000F000F000F000F000F000780078063C061E0C0F
F803E00F127F9112>I<001F80001F800003800003800003800003800003800003800003800003
8000038003E3800FFB801E0F80380780780380700380F00380F00380F00380F00380F00380F003
807003807803803807801E1F800FFBF007E3F0141D7F9C17>I<03E00FF01C38381C781E700EFF
FEFFFEF000F000F000F000700078063C061E0C0FF803E00F127F9112>I<007801FC039E071E0E
0C0E000E000E000E000E000E00FFE0FFE00E000E000E000E000E000E000E000E000E000E000E00
0E000E000E007FE07FE00F1D809C0D>I<00038007E7C00FFDC03C3DC0381C00781E00781E0078
1E00781E00381C003C3C003FF00037E0007000007000003000003FFC001FFF003FFF80700780E0
01C0E001C0E001C0E001C07003803C0F001FFE0007F800121C7F9215>I<FC0000FC00001C0000
1C00001C00001C00001C00001C00001C00001C00001C00001C7C001DFF001F07001E03801E0380
1C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0FF9FF0
141D7F9C17>I<18003C007C003C001800000000000000000000000000FC00FC001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C00FF80FF80091D7F9C0C>I<01C003E003E0
03E001C00000000000000000000000000FE00FE000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E060E0F1C0F1C07F803E000B25839C0D>I<FC0000
FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7FC01C7FC01C3E00
1C18001C30001C60001CC0001DE0001FE0001E70001C78001C38001C3C001C1C001C0E001C0F00
FF9FE0FF9FE0131D7F9C16>I<FC00FC001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80FF80091D7F9C0C>I<
FC7E07E000FDFF9FF8001F83B838001E01E01C001E01E01C001C01C01C001C01C01C001C01C01C
001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0
1C00FF8FF8FF80FF8FF8FF8021127F9124>I<FC7C00FDFF001F07001E03801E03801C03801C03
801C03801C03801C03801C03801C03801C03801C03801C03801C0380FF9FF0FF9FF014127F9117
>I<03F0000FFC001E1E00380700780780700380F003C0F003C0F003C0F003C0F003C0F003C070
03807807803807001E1E000FFC0003F00012127F9115>I<FC7E00FDFF001F87801E03C01C01E0
1C01E01C00F01C00F01C00F01C00F01C00F01C00F01C01E01C01E01E03C01F07801DFF001C7C00
1C00001C00001C00001C00001C00001C0000FF8000FF8000141A7F9117>I<03E1800FF9801E1F
803C0780780780780380F00380F00380F00380F00380F00380F003807803807807803C07801E1F
800FFB8007E380000380000380000380000380000380000380001FF0001FF0141A7F9116>I<FD
E0FFF01F781E781E301C001C001C001C001C001C001C001C001C001C001C00FFC0FFC00D127F91
10>I<1F903FF07070E030E030E030F8007F803FE00FF000F8C038C038E038E038F070DFE08FC0
0D127F9110>I<0C000C000C000C000C001C001C003C00FFE0FFE01C001C001C001C001C001C00
1C001C001C301C301C301C301C301E600FC007800C1A7F9910>I<FC1F80FC1F801C03801C0380
1C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C07800C0F800FFBF0
03E3F014127F9117>I<FF0FE0FF0FE01C07801C03000E06000E06000E0600070C00070C00071C
0003980003980003F80001F00001F00000E00000E00000E00013127F9116>I<FF3FCFE0FF3FCF
E01C0F07801C0F03001C1F03000E1B06000E1B86000E1B86000E318E000731CC000731CC000760
CC0003E0F80003E0F80003E0F80001C0700001C0700001C070001B127F911E>I<7F8FF07F8FF0
0F0780070600038E0001DC0001D80000F00000700000780000F80001DC00038E00030E00060700
0F0380FF8FF8FF8FF81512809116>I<FF0FE0FF0FE01C07801C03000E06000E06000E0600070C
00070C00071C0003980003980003F80001F00001F00000E00000E00000E00000C00000C00000C0
00F18000F18000C700007E00003C0000131A7F9116>I<7FFC7FFC7838707060F060E061C063C0
0380070C0F0C0E0C1C1C3C1838187078FFF8FFF80E127F9112>I<FFFFF0FFFFF01402808B15>I
E /Ft 63 122 df<00F8F001F8F003F8F00780F00700F00F00F00F00F00F00F00F00F00F00F00F
00F00F00F0FFF8F0FFF8F0FFF8F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F
00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F00F01420809F18>13
D<007000E001C00380078007000E001E001E003C003C003C0078007800780078007000F000F000
F000F000F000F000F000F000F000F000F000F000700078007800780078003C003C003C001E001E
000E0007000780038001C000E000700C2E7EA112>40 D<E000700038001C001E000E0007000780
078003C003C003C001E001E001E001E000E000F000F000F000F000F000F000F000F000F000F000
F000F000E001E001E001E001E003C003C003C00780078007000E001E001C0038007000E0000C2E
7DA112>I<00060000000600000006000000060000000600000006000000060000000600000006
0000000600000006000000060000000600000006000000060000FFFFFFF0FFFFFFF00006000000
060000000600000006000000060000000600000006000000060000000600000006000000060000
000600000006000000060000000600001C207D9A23>43 D<787878781830306060E0050A7D830D
>I<FFC0FFC0FFC00A037F8B0F>I<F0F0F0F004047C830D>I<03F00007F8001FFE001E1E003C0F
00380700780780780780700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003
C0F003C0F003C0F003C0F003C0F003C07807807807807807803807003C0F001E1E001FFE000FFC
0003F00012207E9E17>48 D<00C001C00FC0FFC0FFC0F3C003C003C003C003C003C003C003C003
C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0FFFEFFFEFFFE0F1F7C9E
17>I<07F0000FFC001FFE00383F00700F00600780E00780E003C04003C04003C00003C00003C0
0003C0000780000780000F00000E00001C00003C0000780000E00001C0000380000700000E0000
1C0000380000700000FFFFC0FFFFC0FFFFC0121F7E9E17>I<03F0000FFC001FFE003C1F00780F
00300780200780000780000780000780000F00000F00003E0003FC0003F80003FC00001E00000F
000007800003800003C00003C00003C00003C08003C0C003C0C00780700F807C1F003FFE000FFC
0003F00012207E9E17>I<003E00003E00005E00005E0000DE0001DE00019E00039E00039E0007
9E00071E000F1E000E1E001E1E003C1E003C1E00781E00781E00F01E00FFFFF0FFFFF0FFFFF000
1E00001E00001E00001E00001E00001E00001E00001E00141E7F9D17>I<F0F0F0F00000000000
00000000000000F0F0F0F004147C930D>58 D<FFFFFFF0FFFFFFF0000000000000000000000000
0000000000000000000000000000000000000000FFFFFFF0FFFFFFF01C0C7D9023>61
D<001F0000001F0000003F8000003B8000003B8000007BC0000073C0000071C00000F1E00000E1
E00000E0E00001E0F00001E0F00001C0F00003C0780003C078000380780007803C0007803C0007
003C000FFFFE000FFFFE000FFFFE001E000F001E000F003C000F803C0007803C000780780007C0
780003C0780003C0F00003E01B207F9F1E>65 D<FFF800FFFF00FFFF80F00FC0F003E0F001E0F0
00F0F000F0F000F0F000F0F000F0F001E0F003C0F01F80FFFF00FFFF00FFFF80F007E0F001E0F0
00F0F00078F00078F00078F00078F00078F00078F000F0F001F0F007E0FFFFC0FFFF80FFFC0015
207B9F1E>I<001FC000FFF801FFFC03E03C07800C0F00001E00003E00003C00007C0000780000
780000780000F00000F00000F00000F00000F00000F00000F00000F00000780000780000780000
7C00003C00003E00001E00000F000207800E03E03E01FFFC00FFF0001FC017227DA01D>I<FFFC
00FFFF80FFFFC0F007E0F001F0F000F8F00078F0003CF0003CF0001EF0001EF0000EF0000FF000
0FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0001EF0001EF0001EF0003CF0007CF000
F8F001F0F007E0FFFFC0FFFF80FFFC0018207B9F21>I<FFFFC0FFFFC0FFFFC0F00000F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000FFFF80FFFF80FFFF80F00000F0
0000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000FFFFE0FFFFE0FF
FFE013207B9F1B>I<FFFFC0FFFFC0FFFFC0F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000FFFF00FFFF00FFFF00F00000F00000F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F0000012207B9F1A>I<001FE000FF
F801FFFE03E03E07800E0F00001E00003E00003C00007C0000780000780000780000F00000F000
00F00000F00000F00000F00000F003FEF003FE7803FE78001E78001E7C001E3C001E3E001E1E00
1E0F001E07801E03E03E01FFFE00FFF8001FC017227DA01E>I<F00078F00078F00078F00078F0
0078F00078F00078F00078F00078F00078F00078F00078F00078F00078FFFFF8FFFFF8FFFFF8F0
0078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F00078F0
0078F0007815207B9F20>I<F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0
F0F0F0F0F004207C9F0D>I<003C003C003C003C003C003C003C003C003C003C003C003C003C00
3C003C003C003C003C003C003C003C003C003C003C003C003C003C003CC078E078FFF07FE00FC0
0E217E9F15>I<F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F00000F00000F00000FFFF80FFFF80FFFF8011207B9F19>76
D<F80001F8FC0003F8FC0003F8F4000378F6000778F6000778F6000778F7000F78F3000E78F300
0E78F3801E78F3801E78F1801C78F1C03C78F1C03C78F1C03C78F0C03878F0E07878F0E07878F0
607078F070F078F070F078F030E078F039E078F039E078F019C078F019C078F019C078F00F8078
F00F8078F00F8078F00000781D207B9F28>I<FC0078FE0078FE0078F60078F70078F70078F380
78F38078F38078F3C078F1C078F1E078F1E078F0E078F0F078F07078F07078F07878F03878F03C
78F03C78F01C78F01E78F00E78F00E78F00E78F00778F00778F00378F003F8F003F8F001F81520
7B9F20>I<003F000000FFC00003FFF00007E1F8000F807C001F003E001E001E003C000F003C00
0F00780007807800078078000780F00003C0F00003C0F00003C0F00003C0F00003C0F00003C0F0
0003C0F00003C0F00003C0F80007C07800078078000780780007803C000F003C000F001E001E00
1F003E000F807C0007E1F80003FFF00000FFC000003F00001A227DA021>I<FFF800FFFF00FFFF
80F00FC0F003E0F001E0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F001E0F003E0F00F
C0FFFF80FFFF00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F000
00F00000F00000F0000014207B9F1D>I<FFF800FFFF00FFFF80F007C0F003E0F001E0F000F0F0
00F0F000F0F000F0F000F0F001E0F003E0F007C0FFFF80FFFF00FFF800F03C00F01E00F01E00F0
0F00F00F00F00780F00780F003C0F001C0F001E0F000F0F000F0F00078F00078F0003C16207B9F
1D>82 D<01FC0007FF800FFFC01F03C03C00C03C00007800007800007800007800007800007C00
003C00003F00001FE0000FFC0007FE0001FF00003F800007C00003C00003E00001E00001E00001
E00001E00001E00001C0C003C0F007C0FC0F807FFF001FFE0003F80013227EA019>I<FFFFFFC0
FFFFFFC0FFFFFFC0001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00
00001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E
0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000000
1E0000001E00001A207E9F1F>I<F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F000F0F0
00F0F000F0F000F0F000F07801E07801E03C03C03C03C01F0F800FFF0007FE0001F80014217B9F
1F>I<F00001E0F00001E0780003C0780003C0780003C03C0007803C0007803C0007801E000F00
1E000F001F000F000F001E000F001E0007801C0007803C0007803C0003C0380003C0780003C078
0001E0700001E0F00001E0F00000F0E00000F1E00000F1E0000071C000007BC000003B8000003B
8000003F8000001F0000001F00001B207F9F1E>I<F0007C000FF0007E000FF0007E000F78006E
000E7800EE001E7800E7001E7800E7001E3C00E7003C3C01E7803C3C01C7803C3C01C3803C1E01
C380781E03C3C0781E0383C0780E0381C0700F0381C0F00F0781E0F00F0701E0F0070700E0E007
8700E1E0078F00F1E0078E00F1E0038E0071C0038E0071C003CE0073C001DC007B8001DC003B80
01DC003B8001DC003B8000F8003F0000F8001F0000F8001F0028207F9F2B>I<780007807C000F
003E001F001E001E000F003C000F807C000780780003C0F00003E1F00001F1E00000F3C000007F
C000007F8000003F0000001F0000001E0000003F0000007F8000007FC00000F3C00001F1E00001
E0F00003C0F80007C0780007803C000F003E001F001E001E000F003C000F807C0007C0780003C0
F00003E01B207F9F1E>I<F80000F87C0001F03C0001E03E0003E01F0003C00F0007800F800F80
07C00F0003C01F0003E01E0001F03C0000F07C00007878000078F000003CF000001DE000001FE0
00000FC00000078000000780000007800000078000000780000007800000078000000780000007
800000078000000780000007800000078000000780001D20809F1E>I<FFFFFFF0F0F0F0F0F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0FFFFFF082D7DA1
0D>91 D<FFFFFF0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F
0F0F0F0F0F0F0FFFFFFF082D7FA10D>93 D<07E03FF87FFC701E401F000F000F000F003F07FF1F
FF7E0FF80FF00FF00FF00FF83F7FFF3FEF1F8F10147E9316>97 D<F00000F00000F00000F00000
F00000F00000F00000F00000F00000F00000F00000F00000F1F000F7FC00FFFE00FC3E00F80F00
F00F00F00780F00780F00780F00780F00780F00780F00780F00F00F00F00F81F00FC3E00FFFC00
F7F800F1E00011207D9F17>I<03F00FFC1FFE3E0E3C0278007800F000F000F000F000F000F000
780078003C013E0F1FFF0FFE03F010147E9314>I<000780000780000780000780000780000780
00078000078000078000078000078000078007C7800FF7801FFF803E1F807C0780780780F80780
F00780F00780F00780F00780F00780F00780F00780780780780F803E1F801FFF800FF78007C780
11207E9F17>I<03F0000FFC001FFE003E1F003C0700780700700380FFFF80FFFF80FFFF80F000
00F00000F000007000007800003C01003E07001FFF0007FE0001F80011147F9314>I<007E01FE
03FE078007000F000F000F000F000F000F000F00FFF0FFF0FFF00F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F20809F0E>I<03E0F00FFFF01FFFF03E3E
003C1E00780F00780F00780F00780F00780F003C1E003E3E001FFC003FF80033E0003000003800
003FFE003FFF801FFFC03FFFE07803F0F000F0F000F0F000F0F801F07E07E03FFFC00FFF0003FC
00141E7F9317>I<F000F000F000F000F000F000F000F000F000F000F000F000F1F8F3FCF7FEFC
1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F10207D9F17>
I<F0F0F0F00000000000000000F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>
I<01E001E001E001E00000000000000000000000000000000001E001E001E001E001E001E001E0
01E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E001E0C3C0FF
C0FF803F000B29839F0C>I<F00000F00000F00000F00000F00000F00000F00000F00000F00000
F00000F00000F00000F01F00F01E00F03C00F07800F0F000F1E000F3C000F78000FFC000FFC000
FFE000F9F000F8F000F0F800F07C00F07C00F03E00F01E00F01F00F00F8011207D9F16>I<F0F0
F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F004207D9F0B>I<F0FC
07E0F3FE1FF0F7FF3FF8FE0FF07CF807C03CF807C03CF007803CF007803CF007803CF007803CF0
07803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803CF007803C
1E147D9327>I<F1F8F3FCF7FEFC1FF80FF80FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00F10147D9317>I<01F80007FE001FFF803F0FC03C03C07801E07801E0F000F0
F000F0F000F0F000F0F000F0F000F07801E07801E03C03C03F0FC01FFF8007FE0001F80014147F
9317>I<F1F000F7FC00FFFE00FC3E00F81F00F00F00F00F80F00780F00780F00780F00780F007
80F00780F00F00F00F00F81F00FC3E00FFFC00F7F800F1E000F00000F00000F00000F00000F000
00F00000F00000F00000F00000111D7D9317>I<F0E0F3E0F7E0FF00FC00FC00F800F800F000F0
00F000F000F000F000F000F000F000F000F000F0000B147D9310>114 D<07F01FFC3FFC780C78
00780078007C003FC01FF00FF803F8007C003C003CC03CF07CFFF87FF00FC00E147F9311>I<1E
001E001E001E001E001E00FFF0FFF0FFF01E001E001E001E001E001E001E001E001E001E001E00
1E001E001E201FF00FF007C00C1A7F9910>I<F00FF00FF00FF00FF00FF00FF00FF00FF00FF00F
F00FF00FF00FF00FF00FF01FF03FFFFF7FEF3F0F10147D9317>I<F003C0F003C0780380780780
7807803C0F003C0F003C0F001E0E001E1E001E1E000F1C000F3C000F3C0007380007380007B800
03F00003F00001E00012147F9315>I<F01F00F0F01F80F0F01F80F0781B81E0783B81E0783BC1
E07839C1E03C31C3C03C71C3C03C71E3C01C70E3801E60E7801E60E7801EE0E7800EE077000EC0
77000EC0770007C07E0007C03E0007803E001C147F931F>I<7801E07C03C03E07801E0F000F0F
00079E0003FC0003F80001F80000F00001F00001F80003FC00079E000F0F000E0F001E07803C03
C07801E0F801F01414809315>I<F003C0F003C07807807807807C07803C0F003C0F001E0F001E
1E000E1E000F1C000F1C00073C0007380003B80003B80003B00001F00001F00000E00000E00001
C00001C00003C0000380000780007F00007E00007C0000121D7F9315>I
E /Fu 13 86 df<3078F8787005057C840D>46 D<000C001C00FC0FF80F380038003800380038
00700070007000700070007000E000E000E000E000E000E001C001C001C001C001C001C003C07F
FEFFFE0F1E7C9D17>49 D<0000180000003800000038000000780000007C000000FC000000FC00
0001BC000001BC0000033C0000033E0000061E0000061E00000C1E00000C1E0000181E0000181F
0000300F0000300F0000600F00007FFF0000FFFF0000C00F000180078001800780030007800300
078006000780060007801F0007C0FFC07FFCFFC07FFC1E207E9F22>65 D<0003F808000FFE1800
3F0738007801F801F000F803C000F007C00070078000700F0000701F0000701E0000703E000060
3C0000607C0000007C0000007C0000007C000000F8000000F8000000F8000000F8000000F80000
C0780000C0780001807C0001803C0003003C0003001E0006001E000C000F80180007E0700001FF
C000007F00001D217B9F21>67 D<07FFFFF807FFFFF8003C00F8003C0078007800380078003800
780038007800380078003800780C3000F0183000F0180000F0180000F0380000FFF80000FFF800
01E0700001E0300001E0300001E0301801E0303001E0003003C0003003C0006003C0006003C000
E003C001C003C003C007C00FC07FFFFF80FFFFFF801D1F7E9E1F>69 D<07FFE007FFE0003C0000
3C0000780000780000780000780000780000780000F00000F00000F00000F00000F00000F00001
E00001E00001E00001E00001E00001E00003C00003C00003C00003C00003C00003C00007C000FF
FC00FFFC00131F7F9E10>73 D<07FC0000FFC007FC0001FFC0003E0001F800003E00037800006E
0003F000006E0006F000006E0006F000006E000CF0000067000CF00000670018F00000C70019E0
0000C70031E00000C70031E00000C70061E00000C38061E00000C380C1E000018380C3C0000183
8183C00001838183C0000181C303C0000181C303C0000181C603C0000301C60780000301CC0780
000301CC0780000300F80780000300F80780000700F00780000F80F00F80007FF0E0FFF800FFF0
E1FFF8002A1F7E9E2A>77 D<07FC03FFC007FC03FFC0003E007C00003E003800006F003000006F
003000006F003000006780300000678030000063C0300000C3C0600000C3C0600000C1E0600000
C1E0600000C0F0600000C0F060000180F0C000018078C000018078C00001803CC00001803CC000
01803CC00003001F800003001F800003000F800003000F800003000F800007000780000F800700
007FF0030000FFF0030000221F7E9E22>I<0003F800001FFE00003C1F0000F0078001E003C003
C001E0078001E00F8000F00F0000F01F0000F01E0000F83E0000F83C0000F87C0000F87C0000F8
7C0000F87C0000F8F80001F0F80001F0F80001F0F80001F0F80003E0780003E0780007C07C0007
C07C000F803C000F003E001E001E003C000F00780007C1F00003FFC00000FE00001D217B9F23>
I<07FFFF0007FFFFC0003C03E0003C01F0007800F0007800F8007800F8007800F8007800F80078
00F800F001F000F001F000F001E000F003C000F00F8000FFFE0001FFF80001E0000001E0000001
E0000001E0000001E0000003C0000003C0000003C0000003C0000003C0000003C0000007C00000
7FFC0000FFFC00001D1F7E9E1F>I<003F04007FCC01E0FC03807C03003C0700380600180E0018
0E00180E00180E00000F00000F00000FE00007FE0003FF8001FFC0007FE00007E00001E00000E0
0000F00000F06000E06000E06000E06000E07001C0700180F80380FE0F00C7FC0081F80016217D
9F19>83 D<1FFFFFF81FFFFFF81E03C0F83803C038380780383007803870078018600780186007
803860078030C00F0030000F0000000F0000000F0000000F0000000F0000001E0000001E000000
1E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C0000003C0000
007C00001FFFF0003FFFF0001D1F7B9E21>I<FFFC7FF8FFFC7FF807800F80078007000F000600
0F0006000F0006000F0006000F0006000F0006001E000C001E000C001E000C001E000C001E000C
001E000C003C0018003C0018003C0018003C0018003C0018003C00180038003000380030003800
3000380060003C00C0001C00C0001E0180000F07000007FC000001F800001D20799E22>I
E /Fv 10 58 df<1F003F8060C04040C060C060C060C060C060C060C060C06060C060C03F801F
000B107F8F0F>48 D<18007800F80098001800180018001800180018001800180018001800FF80
FF8009107E8F0F>I<3F007F80F1C0F0E06060006000E000C00180030006001C0038606060FFC0
FFC00B107F8F0F>I<1F003F8071C071C031C001800F800F0001C000E060E0F0E0F0E0F1C07F80
1F000B107F8F0F>I<070007000F001F001B003B0033006300E300FFE0FFE00300030003001FE0
1FE00B107F8F0F>I<60807F807F007C00600060006F007F8070C060E000E060E0E0E0E1C07F80
3F000B107F8F0F>I<07801FC039C061C06000C000DF80FFC0E060C060C060C060606060C03F80
1F000B107F8F0F>I<60007FE07FE0C0C0C1800180030006000E000C000C001C001C001C001C00
1C0008000B117E900F>I<1F003F8061C060C060C079C03F801F803FC063E0C0E0C060C06060C0
3F801F000B107F8F0F>I<1F003F8060C0C0C0C060C060C060C0E07FE03F60006000C070C07180
7F003E000B107F8F0F>I E /Fw 30 122 df<000FE0FE00007FF3FF0000F87F8F8001E0FF1F80
03E0FE1F8007C0FE1F8007C07E0F0007C03E000007C03E000007C03E000007C03E000007C03E00
00FFFFFFF000FFFFFFF00007C03E000007C03E000007C03E000007C03E000007C03E000007C03E
000007C03E000007C03E000007C03E000007C03E000007C03E000007C03E000007C03E000007C0
3E000007C03E000007C03E00003FF9FFE0003FF9FFE0002120809F1E>11
D<FFF0FFF0FFF0FFF00C047F8B11>45 D<07F8001FFE00381F80780F80FC0FC0FC0FC0FC0FC078
0FC0301F80001F00003E00007C0000700000E00000E00000C00000C00000C00000C00000C00000
C00000000000000000000000000001C00007F00007F00007F00007F00007F00001C00012207D9F
19>63 D<0000E000000000E000000001F000000001F000000001F000000003F800000003F80000
0007FC00000007FC0000000FFE0000000CFE0000000CFE000000187F000000187F000000307F80
0000303F800000703FC00000601FC00000601FC00000C01FE00000C00FE00001FFFFF00001FFFF
F000018007F000030003F800030003F800060003FC00060001FC000E0001FE00FFE01FFFE0FFE0
1FFFE0231F7E9E28>65 D<0007FC02003FFF0E00FE03DE03F000FE07E0003E0FC0001E1F80001E
3F00000E3F00000E7F0000067E0000067E000006FE000000FE000000FE000000FE000000FE0000
00FE000000FE0000007E0000007E0000067F0000063F0000063F00000C1F80000C0FC0001807E0
003803F0007000FE01C0003FFF800007FC001F1F7D9E26>67 D<FFFFFFE0FFFFFFE007F007E007
F001E007F000E007F0006007F0007007F0003007F0003007F0603007F0603007F0600007F06000
07F1E00007FFE00007FFE00007F1E00007F0600007F0600007F0600007F0600007F0000007F000
0007F0000007F0000007F0000007F0000007F0000007F00000FFFFC000FFFFC0001C1F7E9E21>
70 D<03FC080FFF381E03F83C00F8780078780038F80038F80018FC0018FC0000FF0000FFF800
7FFF007FFFC03FFFE01FFFF00FFFF803FFF8001FFC0001FC0000FC0000FCC0007CC0007CC0007C
E00078E00078F800F0FE01E0E7FFC081FF00161F7D9E1D>83 D<07FC001FFF003F0F803F07C03F
03E03F03E00C03E00003E001FFE00FFFE03F83E07E03E07C03E0F803E0F803E0F803E0FC07E07E
0DE03FF9FE07E07E17147F9319>97 D<FF0000FF00001F00001F00001F00001F00001F00001F00
001F00001F00001F00001F00001F1FC01F7FF01FE0F81F807C1F007E1F003E1F003E1F003F1F00
3F1F003F1F003F1F003F1F003F1F003E1F003E1F007C1F807C1EC1F81C7FE0181F8018207E9F1D
>I<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC0000FC0000FC0000FC0000FC
00007C00007E00003E00603F00C01F81C007FF0001FC0013147E9317>I<0007F80007F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F801F8F80FFEF81F83F83E01F8
7E00F87C00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87C00F87E00F83E01F8
1F07F80FFEFF03F8FF18207E9F1D>I<01FE0007FF801F83E03F01F07E00F07E00F8FC00F8FC00
F8FFFFF8FFFFF8FC0000FC0000FC00007C00007E00003E00183F00380F807007FFE000FF801514
7F9318>I<01FC3C07FFFE0F07DE1E03DE3E03E03E03E03E03E03E03E03E03E01E03C00F07800F
FF0019FC001800001800001C00001FFF801FFFF00FFFF83FFFFC7C007C70003EF0001EF0001EF0
001E78003C78003C3F01F80FFFE001FF00171E7F931A>103 D<FF0000FF00001F00001F00001F
00001F00001F00001F00001F00001F00001F00001F00001F0FC01F3FE01F61F01FC0F81F80F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FF
E3FFFFE3FF18207D9F1D>I<1C003F007F007F007F003F001C00000000000000000000000000FF
00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE0
0B217EA00E>I<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00
001F00001F01FE1F01FE1F00F01F01C01F03801F07001F1E001F38001F7C001FFE001FFF001F1F
001E0F801E07C01E07E01E03F01E01F01E00F8FFC3FFFFC3FF18207E9F1C>107
D<FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B207E9F0E>I<FE0FE03F80FE
3FF0FFC01E70F9C3E01EC07F01F01F807E01F01F807E01F01F007C01F01F007C01F01F007C01F0
1F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01
F01F007C01F0FFE3FF8FFEFFE3FF8FFE27147D932C>I<FE0FC0FE3FE01E61F01EC0F81F80F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FF
E3FFFFE3FF18147D931D>I<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007E
FC007EFC007EFC007EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>
I<FF1FC0FF7FF01FE1F81F80FC1F007E1F007E1F003E1F003F1F003F1F003F1F003F1F003F1F00
3F1F003E1F007E1F007C1F80FC1FC1F81F7FE01F1F801F00001F00001F00001F00001F00001F00
001F0000FFE000FFE000181D7E931D>I<01F81807FE381F87783F01F83E01F87E00F87C00F8FC
00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87E00F87E00F83F01F81F87F80FFEF803F8F800
00F80000F80000F80000F80000F80000F80000F80007FF0007FF181D7E931C>I<FE3E00FE7F80
1ECFC01F8FC01F8FC01F8FC01F03001F00001F00001F00001F00001F00001F00001F00001F0000
1F00001F00001F0000FFF000FFF00012147E9316>I<0FE63FFE701E600EE006E006F800FFC07F
F83FFC1FFE03FE001FC007C007E007F006F81EFFFCC7F010147E9315>I<018001800180038003
80038007800F803F80FFFCFFFC0F800F800F800F800F800F800F800F800F800F800F860F860F86
0F860F8607CC03F801F00F1D7F9C14>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F01F81F01F80F07F807FEFF03F8FF18
147D931D>I<FFE07F80FFE07F801F001C000F8018000F80180007C0300007C0300003E0600003
E0600001F0C00001F0C00001F9C00000F9800000FF8000007F0000007F0000003E0000003E0000
001C0000001C000019147F931C>I<FFE7FE1FE0FFE7FE1FE01F00F007001F00F803000F80F806
000F80F8060007C1BC0C0007C1BC0C0007C1BE0C0003E31E180003E31E180001F60F300001F60F
300001F60FB00000FC07E00000FC07E000007803C000007803C000007803C00000300180002314
7F9326>I<FFE1FF00FFE1FF000F80700007C0E00007E0C00003E1800001F3800000FF0000007E
0000003E0000003F0000007F8000006F800000C7C0000183E0000381F0000701F8000E00FC00FF
81FF80FF81FF8019147F931C>I<FFE07F80FFE07F801F001C000F8018000F80180007C0300007
C0300003E0600003E0600001F0C00001F0C00001F9C00000F9800000FF8000007F0000007F0000
003E0000003E0000001C0000001C0000001800000018000078300000FC300000FC600000C0E000
00E1C000007F8000001E000000191D7F931C>I E /Fx 44 122 df<FFFEFFFEFFFEFFFE0F047F
8F14>45 D<F8F8F8F8F805057B8410>I<007E0001FF8007FFE00FFFF01FC3F81F00F83E007C3E
007C3C003C7C003E7C003E78001E78001EF8001FF8001FF8001FF8001FF8001FF8001FF8001FF8
001FF8001FF8001FF8001FF8001FF8001FF8001FF8001F78001E7C003E7C003E7C003E7C003E3E
007C3F00FC1F00F81FC3F80FFFF007FFE001FF80007E0018297EA71D>48
D<00180000380000F80007F800FFF800FFF800FFF800F8F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8
0000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8007FFFF07FFFF07FFF
F07FFFF014287CA71D>I<00FE0003FF800FFFC01FFFE01F07F03C01F87800FC78007C70007CF0
003EF0003E60003E20003E00003E00003E00003E00007C00007C0000780000F80001F00001E000
03E00007C0000F80001F00003E00007C0000F80001F00003E00003C0000780000F00001E00003C
00007FFFFE7FFFFE7FFFFE7FFFFE17287EA71D>I<007E0003FF8007FFE00FFFF01F81F83E00F8
7C007C78007C30007C10007C00007C00007C0000780000F80000F80001F00007E000FFC000FF80
00FFC000FFF00001F80000FC00007C00003E00003E00001F00001F00001F00001F00001F80001F
C0003EE0003EF0007E7C00FC3F01F81FFFF00FFFE003FFC000FE0018297EA71D>I<0007E0000F
E0000BE0001BE0001BE0003BE0003BE00073E00073E000F3E000F3E001E3E001E3E003E3E003C3
E007C3E00F83E00F83E01F03E01F03E03E03E03E03E07C03E07C03E0F803E0FFFFFFFFFFFFFFFF
FFFFFFFF0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E018277EA61D
>I<3FFFF83FFFF83FFFF83FFFF83E00003E00003E00003E00003E00003E00003E00003E00003E
00003E00003E3E003EFF803FFFE03FFFF03FC1F03F80F83F007C3E007C00007C00003E00003E00
003E00003E00003E00003E00003E20003E60007C70007CF800F87C01F87F07F03FFFE00FFFC007
FF0001FC0017287EA61D>I<000FE0003FF800FFF801FFF803F81807E0000F80000F80001F0000
3E00003E00003C00007C00007C02007C3FC0F8FFE0F9FFF0FBFFF8FF80FCFE007CFE003EFC003E
FC003FFC001FF8001FF8001FF8001FF8001F78001F7C001F7C001F7C001E3C003E3E003E1E007C
1F00FC0FC1F807FFF003FFE001FF80007E0018297EA71D>I<FFFFFFFFFFFFFFFFFFFFFFFF0000
0F00001E00003C0000780000780000F00001F00001E00003E00003C00007C0000F80000F80000F
00001F00001E00003E00003E00003C00007C00007C00007C0000F80000F80000F80000F80000F8
0000F00001F00001F00001F00001F00001F00001F00001F00018277EA61D>I<007E0003FFC007
FFE00FFFF01F81F83F00FC3E007C7E007E7C003E7C003E7C003E7C003E7C003E3E007C3E007C1F
00F80FC3F007FFE003FFC003FFC00FFFF01F81F83F00FC3E007C7C003E7C003EF8001FF8001FF8
001FF8001FF8001FF8001F7C003E7C003E7E007E3F00FC1F81F80FFFF007FFE003FFC0007E0018
297EA71D>I<007E0001FF8007FFC00FFFE01F83F01F00F83E00787C007C7C003C78003EF8003E
F8003EF8001EF8001FF8001FF8001FF8001FF8003FFC003F7C003F7C007F3E007F3F01FF1FFFDF
0FFF9F07FF1F03FC1E00403E00003E00003E00007C00007C0000F80000F80001F01803E01E0FC0
3FFF801FFF000FFE0003F80018297EA71D>I<FFFFC000FFFFF800FFFFFE00FFFFFF00F800FF80
F8001FC0F80007E0F80003E0F80001F0F80001F0F80000F0F80000F0F80001F0F80001E0F80003
E0F80007C0F8001FC0F8007F80FFFFFE00FFFFF800FFFFFC00FFFFFF00F8007FC0F8000FE0F800
03F0F80001F8F80000F8F800007CF800007CF800007CF800007CF800007CF800007CF80000F8F8
0000F8F80003F0F80007F0F8003FE0FFFFFFC0FFFFFF00FFFFFE00FFFFF0001E2A7BA927>66
D<0003FE00000FFFC0003FFFF000FFFFF001FE03F003F8006007E0002007C000000F8000001F80
00001F0000003E0000003E0000007C0000007C0000007C0000007C000000F8000000F8000000F8
000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007C0000007C000000
7C0000007C0000003E0000003E0000001F0000001F8000000F80000007C0000007E0000803F800
3801FE01F800FFFFF8003FFFF0000FFFC00003FE001D2C7CAA25>I<FFFFE00000FFFFFC0000FF
FFFF0000FFFFFF8000F8003FC000F8000FE000F80003F000F80001F800F80000F800F800007C00
F800007E00F800003E00F800003E00F800001F00F800001F00F800001F00F800000F80F800000F
80F800000F80F800000F80F800000F80F800000F80F800000F80F800000F80F800000F80F80000
0F80F800000F00F800001F00F800001F00F800001F00F800003E00F800007E00F800007C00F800
00FC00F80001F800F80003F000F8000FE000F8003FC000FFFFFF8000FFFFFF0000FFFFFC0000FF
FFE00000212A7BA92A>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7BA910>73 D<FE000000FFFE000000FFFE000000FFFF00
0001FFFB000001DFFB800003DFFB800003DFFB800003DFF9C000079FF9C000079FF9C000079FF9
E0000F9FF8E0000F1FF8E0000F1FF8F0001F1FF870001E1FF870001E1FF878003E1FF838003C1F
F83C007C1FF83C007C1FF81C00781FF81E00F81FF81E00F81FF80E00F01FF80F01F01FF80F01F0
1FF80701E01FF80783E01FF80783E01FF80383C01FF803C7C01FF803C7C01FF801C7801FF801EF
801FF801EF801FF800EF001FF800FF001FF8007E001FF8007E001FF8007E001FF80000001F282A
7BA933>77 D<FF00007CFF00007CFF80007CFF80007CFBC0007CFBC0007CFBE0007CF9E0007CF9
F0007CF8F0007CF8F0007CF8F8007CF878007CF87C007CF83C007CF83E007CF81E007CF81F007C
F80F007CF80F807CF80F807CF807C07CF807C07CF803C07CF803E07CF801E07CF801F07CF800F0
7CF800F87CF800787CF8007C7CF8003C7CF8003C7CF8003E7CF8001E7CF8001F7CF8000F7CF800
0F7CF80007FCF80007FCF80003FCF80003FC1E2A7BA929>I<FFFFC000FFFFF800FFFFFE00FFFF
FF00F8007F80F8001FC0F80007C0F80003E0F80003E0F80001F0F80001F0F80001F0F80001F0F8
0001F0F80001F0F80001F0F80003E0F80003E0F80007C0F8001FC0F8007F80FFFFFF00FFFFFE00
FFFFF800FFFFC000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000001C2A
7BA925>80 D<007FC00001FFF80007FFFE000FFFFF001FC07F003F000F007E0006007C0000007C
000000F8000000F8000000F8000000F8000000F8000000FC0000007E0000007F0000003F800000
1FF800000FFF000007FFE00003FFF80000FFFC00000FFE000000FF0000003F0000001F8000000F
8000000FC0000007C0000007C0000007C0000007C0000007C0000007C000000F8060000F80F000
1F00FC003F00FF80FE007FFFFC001FFFF80007FFE00000FF80001A2C7DAA21>83
D<FFFFFFFFE0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE00001F000000001F000000001F000000001F0
00000001F000000001F000000001F000000001F000000001F000000001F000000001F000000001
F000000001F000000001F000000001F000000001F000000001F000000001F000000001F0000000
01F000000001F000000001F000000001F000000001F000000001F000000001F000000001F00000
0001F000000001F000000001F000000001F000000001F000000001F000000001F000000001F000
000001F000000001F000000001F00000232A7EA928>I<F80000F8F80000F8F80000F8F80000F8
F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000
F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F800
00F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F87C0001F07C
0001F07E0003F03E0003E01F0007C01F800FC00FE03F8007FFFF0003FFFE0000FFF800001FC000
1D2B7BA928>I<01FC000FFF003FFF803FFFC03C07E03003E00001F00001F00001F00001F00001
F00003F001FFF007FFF01FFFF03FC1F07E01F0FC01F0F801F0F801F0F801F0FC03F07E0FF07FFF
F03FFFF01FF9F00FE1F0141B7E9A1C>97 D<F80000F80000F80000F80000F80000F80000F80000
F80000F80000F80000F80000F80000F80000F80000F80000F87E00F9FF80FFFFC0FFFFE0FF07E0
FC03F0F801F8F800F8F800F8F8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF800FC
F800F8F800F8F801F0FC03F0FE0FE0FFFFC0FFFF80FBFF00F8FC00162A7BA91E>I<007F8001FF
E007FFF80FFFF81FC0783F00103E00007C00007C00007C0000F80000F80000F80000F80000F800
00F80000F800007C00007C00007C00003E00003F00181FC0780FFFF807FFF801FFE0007F80151B
7E9A1A>I<00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00
007C00007C00007C00007C00FC7C03FF7C07FFFC0FFFFC1FC1FC3F00FC3E007C7C007C7C007CFC
007CF8007CF8007CF8007CF8007CF8007CF8007CF8007CF8007C7C007C7C007C7E00FC3F00FC1F
83FC1FFFFC0FFF7C03FE7C01F87C162A7EA91E>I<00FC0003FF0007FF800FFFC01F87E03F01E0
3E00F07C00F07C0070F80078FFFFF8FFFFF8FFFFF8FFFFF8F80000F80000F800007800007C0000
7C00003E00003F00181FC0F80FFFF807FFF801FFE0007F00151B7E9A1A>I<001FC0007FC000FF
C001FFC003F00003E00007C00007C00007C00007C00007C00007C00007C00007C00007C000FFFE
00FFFE00FFFE00FFFE0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0
0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0
00122A7FA912>I<00F80F0003FE7F800FFFFF801FFFFF801F07C0003E03E0003E03E0007C01F0
007C01F0007C01F0007C01F0007C01F0003E03E0003E03E0001F07C0001FFFC0003FFF80003BFE
000038F8000078000000780000007C0000003FFF80003FFFF0001FFFF8001FFFFC003FFFFE007C
00FE007C003F00F8001F00F8001F00F8001F00F8001F00FC003F007E007E003F81FC001FFFF800
0FFFF00007FFE00000FF000019287E9A1D>I<F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F80000F80000F80000F80000F80000F87E00F9FF00FBFF80FFFFC0FF0F
C0FE07E0FC03E0FC03E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803
E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0132A7BA91E>I<F8F8F8F8
F800000000000000000000F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F805
2A7CA90E>I<00F800F800F800F800F8000000000000000000000000000000000000000000F800
F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F800F8
00F800F800F800F800F800F800F800F800F800F800F800F840F8E3F0FFF0FFE07FC01F800D3683
A90F>I<F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F800
00F80000F80000F80000F803F0F807E0F807C0F80F80F81F00F83E00F87E00F8FC00F8F800F9F0
00FBE000FFF000FFF800FFF800FFFC00FE7C00FC7E00F83F00F83F00F81F80F81F80F80FC0F807
C0F807E0F803F0F803F0F801F8152A7BA91C>I<F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8
F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8052A7CA90E>I<F83F007E00F9FF83FF
00FBFFC7FF80FFFFEFFFC0FF07FE0FC0FE03FC07E0FC01F803E0FC01F803E0F801F003E0F801F0
03E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801
F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F801F003E0F8
01F003E0F801F003E0231B7B9A30>I<F87E00F9FF00FBFF80FFFFC0FF0FC0FE07E0FC03E0FC03
E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803
E0F803E0F803E0F803E0F803E0F803E0F803E0131B7B9A1E>I<007E0001FF8007FFE00FFFF01F
81F83F00FC3E007C7C003E7C003E78001EF8001FF8001FF8001FF8001FF8001FF8001FF8001F7C
003E7C003E7C003E3E007C3F00FC1FC3F80FFFF007FFE003FFC0007E00181B7E9A1D>I<F87E00
F9FF80FFFFC0FFFFE0FF0FE0FC03F0F801F8F800F8F800F8F800FCF8007CF8007CF8007CF8007C
F8007CF8007CF8007CF800FCF800F8F801F8F801F0FC03F0FE0FE0FFFFC0FFFF80FBFF00F8FC00
F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000016277B
9A1E>I<F838F8F8F9F8FBF8FFC0FF00FE00FE00FC00FC00F800F800F800F800F800F800F800F8
00F800F800F800F800F800F800F800F800F8000D1B7B9A14>114 D<07F8001FFF003FFF807FFF
807C0780F80100F80000F80000F80000FC00007F00007FF0003FFC001FFE0007FF0000FF80001F
C0000FC00007C00007C04007C0E007C0FC1F80FFFF807FFF001FFE0007F800121B7E9A16>I<07
C00007C00007C00007C00007C00007C00007C000FFFF80FFFF80FFFF80FFFF8007C00007C00007
C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007
C00007C00007C08007E38003FFC003FFC001FF0000FC0012227FA115>I<F803E0F803E0F803E0
F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0F803E0
F803E0F803E0F803E0F803E0F807E0F807E0FC1FE0FFFFE07FFBE03FF3E01F83E0131B7B9A1E>
I<F8001FF8001F7C003E7C003E7C003E3E007C3E007C3E007C1F00F81F00F81F00F80F81F00F81
F00F81F007C3E007C3E007C3E003C3C003E7C001E78001E78001E78000E70000F70000FF00007E
00007E00181B7F9A1B>I<F8001FFC001F7C003E7C003E3E003E3E007C3F007C1F007C1F00F80F
80F80F80F00F81F007C1F007C1E003C1E003E3E003E3C001E3C001E3C000F78000F78000F78000
7700007700003F00003E00003E00003E00003C00003C0000780000780000780000F00001F0007F
E0007FE0007FC0007F000018277F9A1B>121 D E /Fy 10 118 df<000000007FFC00000E0000
FFFC00000000000FFFFFE00000000000007FFE00000047497AC754>67 D<FFFFFFFFFFFF000000
FFF00000000044477CC64F>80 D<0003FFF0000000003FFFFF00000000FFFFFFE0000001FFFFFF
F8000003FF003FFC000007FF800FFE000007FF8007FF000007FF8003FF800007FF8003FFC00007
FF8001FFC00007FF8001FFC00003FF0000FFE00001FE0000FFE00000FC0000FFE00000000000FF
E00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000000FFFFE0000000
7FFFFFE0000007FFFFFFE000003FFFFCFFE00000FFFE00FFE00003FFF000FFE00007FFC000FFE0
000FFF0000FFE0001FFE0000FFE0003FFC0000FFE0007FFC0000FFE0007FF80000FFE000FFF800
00FFE000FFF00000FFE000FFF00000FFE000FFF00000FFE000FFF00001FFE000FFF00001FFE000
FFF80003FFE0007FFC0007FFE0007FFC000FFFE0003FFE001F7FF8001FFF80FE7FFFF007FFFFFC
3FFFF003FFFFF01FFFF0007FFFC00FFFF00007FE0003FFF0342E7DAD38>97
D<00001FFF80000001FFFFF8000007FFFFFE00001FFFFFFF00007FF801FF8000FFE003FFC003FF
C003FFC007FF8003FFC007FF0003FFC00FFE0003FFC01FFE0003FFC01FFC0001FF803FFC0000FF
003FFC00007E007FFC000000007FF8000000007FF800000000FFF800000000FFF800000000FFF8
00000000FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000
00FFF800000000FFF800000000FFF8000000007FFC000000007FFC000000007FFC000000003FFC
000000003FFE000000001FFE000001F01FFF000001F00FFF000003F007FF800007E007FFC00007
C003FFE0000FC000FFF8003F80007FFF00FF00001FFFFFFC000007FFFFF0000001FFFFC0000000
1FFC00002C2E7CAD34>99 D<00FC0001FF0003FF8007FF800FFFC00FFFC00FFFE00FFFE00FFFE0
0FFFC00FFFC007FF8003FF8001FF0000FC00000000000000000000000000000000000000000000
000000000000000000000000000000007FC0FFFFC0FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC0
01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0
01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0
01FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18497C
C820>105 D<00FF8003FF000003FF000000FFFF801FFFE0001FFFE00000FFFF807FFFF8007FFF
FFFFFF80FFFFFF80FFFFFF80592E7BAD62>109 D<00FF8007FE0000FFFF803FFFC000FFFF80FF
FFF000FFFF81FFFFFC00FFFF87F01FFC00FFFF8FC00FFE0003FF9F0007FF0001FF9E0007FF0001
FFBC0007FF0001FFF80003FF8001FFF80003FF8001FFF00003FF8001FFE00003FF8001FFE00003
FF8001FFE00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF
C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF
8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC0
0003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF80
01FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF80FFFFFF81
FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFFFFFFFF81FFFFFF382E7BAD41>I<00
000000001FFF000000332E7DAD3A>I<0001F000000001F000000001F000000001F000000001F0
>116 D<007FC00000FF80FFFFC001FFFF80FFFFC001FFFF80FFFFC001FFFF80FFFFC001FFFF80
FFFFC001FFFF8003FFC00007FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC000
03FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001
FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003
FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FF
C00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF8001FFC00003FF
8001FFC00007FF8001FFC00007FF8001FFC00007FF8001FFC0000FFF8001FFC0001FFF8000FFC0
003FFF8000FFE0007FFF80007FE000FBFFC0007FF803F3FFFF003FFFFFE3FFFF000FFFFF83FFFF
0003FFFE03FFFF00007FF003FFFF382E7BAD41>I E /Fz 8 117 df<00001E000000003E000000
00FE00000003FE0000003FFE0000FFFFFE0000FFFFFE0000FFFFFE0000FFCFFE0000000FFE0000
000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00
00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE
0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F
FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000
0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000
000FFE0000000FFE0000000FFE00007FFFFFFF807FFFFFFF807FFFFFFF807FFFFFFF80213879B7
30>49 D<0003FF000700001FFFE00F0000FFFFFC0F0001FFFFFE1F0007FE00FFBF000FF0001FFF
00F01FFFFFC000F003FFFF0000E0003FF800002B3D7BBB36>83 D<0001FFF000000FFFFE00003F
FFFF8000FFC03FC003FF007FE007FE007FE00FFC007FE01FF8007FE01FF8007FE03FF0003FC03F
F0001F807FF0000F007FE00000007FE0000000FFE0000000FFE0000000FFE0000000FFE0000000
FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00000007FE00000007FF00000
007FF00000003FF00000003FF80000F01FF80000F01FFC0001F00FFC0003E007FE0007C003FF80
0FC000FFE03F00003FFFFE00000FFFF8000001FFC00024267DA52B>99 D<0003FF8000001FFFF0
00007FFFFC0000FF83FF0003FE00FF8007FC003F800FF8003FC01FF8001FE01FF0001FE03FF000
1FF03FF0000FF07FE0000FF07FE0000FF87FE0000FF8FFE0000FF8FFE0000FF8FFFFFFFFF8FFFF
FFFFF8FFFFFFFFF8FFE0000000FFE0000000FFE0000000FFE0000000FFE00000007FE00000007F
E00000007FF00000003FF00000783FF00000781FF80000F80FF80000F007FC0001F003FE0003E0
01FF000FC000FFC07F80003FFFFE00000FFFFC000001FFC00025267DA52C>101
D<01F00003FC0007FE000FFF000FFF001FFF001FFF001FFF000FFF000FFF0007FE0003FC0001F0
0000000000000000000000000000000000000000000000000000000000000000FF00FFFF00FFFF
00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF
0003FF0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153D7DBC1B>105
D<00FE003FE00000FFFE01FFFC0000FFFE07FFFE0000FFFE0F81FF8000FFFE3C00FF800007FE38
00FFC00003FE7000FFC00003FEE0007FE00003FEC0007FE00003FFC0007FE00003FF80007FE000
03FF80007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF0000
7FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003
FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007F
E00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF00007FE00003FF
00007FE000FFFFFC1FFFFF80FFFFFC1FFFFF80FFFFFC1FFFFF80FFFFFC1FFFFF8031267DA536>
110 D<0001FFC00000000FFFF80000007FFFFF000000FF80FF800003FE003FE00007FC001FF000
0FF8000FF8000FF00007F8001FF00007FC003FF00007FE003FE00003FE007FE00003FF007FE000
03FF007FE00003FF007FE00003FF00FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80
FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF807FE00003FF007FE000
03FF007FE00003FF003FF00007FE003FF00007FE001FF00007FC001FF00007FC000FF8000FF800
07FC001FF00003FE003FE00000FF80FF8000007FFFFF0000000FFFF800000001FFC0000029267D
A530>I<000F0000000F0000000F0000000F0000000F0000001F0000001F0000001F0000001F00
00003F0000003F0000007F0000007F000000FF000001FF000003FF000007FF00001FFFFFF0FFFF
FFF0FFFFFFF0FFFFFFF003FF000003FF000003FF000003FF000003FF000003FF000003FF000003
FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF0000
03FF000003FF000003FF003C03FF003C03FF003C03FF003C03FF003C03FF003C03FF003C03FF00
3C01FF807801FF807800FFC0F000FFE1F0003FFFE0000FFF800001FE001E377EB626>116
D E /FA 78 124 df<000FC3E0007FEFF000E07C7801C0F8780380F83007007000070070000700
700007007000070070000700700007007000FFFFFF80FFFFFF8007007000070070000700700007
007000070070000700700007007000070070000700700007007000070070000700700007007000
0700700007007000070070007FE3FF007FE3FF001D20809F1B>11 D<001F80007FC001E0E00381
E00381E00701E0070000070000070000070000070000070000FFFFE0FFFFE00700E00700E00700
E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
E07FC3FE7FC3FE1720809F19>I<001FE0007FE001E1E00381E00380E00700E00700E00700E007
00E00700E00700E00700E0FFFFE0FFFFE00700E00700E00700E00700E00700E00700E00700E007
00E00700E00700E00700E00700E00700E00700E00700E00700E07FE7FE7FE7FE1720809F19>I<
000F80F800007FE7FE0000E06E060001C0FC0F000380F80F000700F00F00070070000007007000
000700700000070070000007007000000700700000FFFFFFFF00FFFFFFFF000700700700070070
070007007007000700700700070070070007007007000700700700070070070007007007000700
7007000700700700070070070007007007000700700700070070070007007007007FE3FE3FF07F
E3FE3FF02420809F26>I<7038F87CFC7EFC7E7C3E0C060C060C06180C180C381C301860304020
0F0E7E9F17>34 D<70F8FCFC7C0C0C0C181838306040060E7C9F0D>39 D<006000C00180030007
0006000C001C00180038003800300070007000700060006000E000E000E000E000E000E000E000
E000E000E000E000E0006000600070007000700030003800380018001C000C0006000700030001
8000C000600B2E7DA112>I<C0006000300018001C000C0006000700030003800380018001C001
C001C000C000C000E000E000E000E000E000E000E000E000E000E000E000E000C000C001C001C0
01C00180038003800300070006000C001C00180030006000C0000B2E7DA112>I<018001C00180
0180C183E187F99F7DBE1FF807E007E01FF87DBEF99FE187C1830180018001C0018010147DA117
>I<00060000000600000006000000060000000600000006000000060000000600000006000000
0600000006000000060000000600000006000000060000FFFFFFF0FFFFFFF00006000000060000
000600000006000000060000000600000006000000060000000600000006000000060000000600
000006000000060000000600001C207D9A23>I<70F8FCFC7C0C0C0C181838306040060E7C840D>
I<FFC0FFC0FFC00A037F8A0F>I<70F8F8F87005057C840D>I<00030003000700060006000E000C
000C001C0018001800380030003000700060006000E000C000C001C00180018001800380030003
000700060006000E000C000C001C0018001800380030003000700060006000E000C000C000102D
7DA117>I<03F0000FFC001E1E001C0E00380700780780700380700380700380F003C0F003C0F0
03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C070038070038070
03807807803807001C0E001E1E000FFC0003F000121F7E9D17>I<018003801F80FF80E3800380
038003800380038003800380038003800380038003800380038003800380038003800380038003
8003800380FFFEFFFE0F1E7C9D17>I<03F0000FFC00183E00300F00600F80C00780F007C0F807
C0F803C0F803C02003C00007C0000780000780000F00000E00001C0000380000700000E00001C0
000380000300000600C00C00C01800C03001807FFF80FFFF80FFFF80121E7E9D17>I<03F0000F
FC001C1E00300F00780F80780F80780780380F80000F80000F00000F00001E00003C0003F80003
F000001C00000E00000F000007800007800007C02007C0F807C0F807C0F807C0F00780600F8070
0F003C1E001FFC0003F000121F7E9D17>I<000E00000E00001E00003E00003E00006E0000EE00
00CE00018E00038E00030E00060E000E0E000C0E00180E00380E00300E00600E00E00E00FFFFF0
FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE000FFE0141E7F9D17>I<3803
003FFF003FFE003FF8003FE00030000030000030000030000030000030000031F00037FC003E0E
003C07003807803003800003800003C00003C00003C06003C0F003C0F003C0F00380C007806007
00700E003C1E000FF80007E000121F7E9D17>I<007C0001FE000783000E03800C07801C078038
0300380000780000700000700000F3F800F7FE00FC0E00F80700F80380F80380F003C0F003C0F0
03C0F003C0F003C07003C07003C07003803803803807001C07000E1E0007FC0001F000121F7E9D
17>I<6000007FFFC07FFFC07FFF80600180C00300C00600C00600000C00001800001800003000
00600000600000E00000C00001C00001C00001C000038000038000038000038000078000078000
078000078000078000078000078000030000121F7D9D17>I<03F0000FFC001E1E003807003007
007003807003807003807003807807003E07003F0E001FDC000FF80003F80007FC001E7E00383F
00700F80700780E003C0E001C0E001C0E001C0E001C0F001807003803807001E0E000FFC0003F0
00121F7E9D17>I<03F00007F8001E1C00380E00380700700700700380F00380F00380F003C0F0
03C0F003C0F003C0F003C07007C07007C0380FC01C0FC01FFBC007F3C000038000038000078000
0700300700780E00780E00701C003078001FF0000FC000121F7E9D17>I<70F8F8F87000000000
00000000000070F8F8F87005147C930D>I<70F8F8F8700000000000000000000070F8F8F87818
1818183030606040051D7C930D>I<7FFFFFE0FFFFFFF000000000000000000000000000000000
00000000000000000000000000000000FFFFFFF07FFFFFE01C0C7D9023>61
D<0003800000038000000380000007C0000007C0000007C000000DE000000DE000000DE0000018
F0000018F0000018F00000307800003078000030780000603C0000603C0000603C0000E01E0000
C01E0000FFFE0001FFFF0001800F0001800F0003800F800300078003000780070007C0070003C0
0F8003C0FFE03FFEFFE03FFE1F207F9F22>65 D<FFFFE000FFFFF80007803E0007801F0007800F
0007800F8007800F8007800F8007800F8007800F8007800F0007801F0007803E0007807C0007FF
F80007FFFC0007801E0007800F0007800F8007800780078007C0078007C0078007C0078007C007
8007C00780078007800F8007801F0007803E00FFFFFC00FFFFF0001A1F7E9E20>I<001FC04000
7FF0C001F839C003C00DC0078007C00F0003C01E0003C03E0001C03C0001C07C0001C07C0000C0
780000C0F80000C0F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000
00780000C07C0000C07C0000C03C0000C03E0001801E0001800F0003000780030003C00E0001F8
1C00007FF000001FC0001A217D9F21>I<FFFFE000FFFFFC0007803E0007800F00078007800780
03C0078003E0078001E0078001F0078000F0078000F0078000F8078000F8078000F8078000F807
8000F8078000F8078000F8078000F8078000F8078000F0078000F0078001F0078001E0078001E0
078003C00780078007800F0007803E00FFFFFC00FFFFE0001D1F7E9E23>I<FFFFFF00FFFFFF00
07801F000780070007800300078003000780038007800180078001800780C1800780C1800780C0
000780C0000781C00007FFC00007FFC0000781C0000780C0000780C0000780C0600780C0600780
0060078000C0078000C0078000C0078001C0078001C0078003C007800F80FFFFFF80FFFFFF801B
1F7E9E1F>I<FFFFFF00FFFFFF0007801F00078007000780030007800300078003800780018007
8001800780C1800780C1800780C0000780C0000781C00007FFC00007FFC0000781C0000780C000
0780C0000780C0000780C000078000000780000007800000078000000780000007800000078000
0007800000FFFE0000FFFE0000191F7E9E1E>I<000FC020007FF86001F81CE003E006E0078003
E00F0001E01E0001E01E0000E03C0000E07C0000E07C00006078000060F8000060F8000000F800
0000F8000000F8000000F8000000F8000000F8007FFCF8007FFC780001E07C0001E07C0001E03C
0001E01E0001E01E0001E00F0001E0078003E003E003E001F80E60007FFC20000FE0001E217D9F
24>I<FFF8FFF8FFF8FFF807800F0007800F0007800F0007800F0007800F0007800F0007800F00
07800F0007800F0007800F0007800F0007800F0007FFFF0007FFFF0007800F0007800F0007800F
0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F000780
0F00FFF8FFF8FFF8FFF81D1F7E9E22>I<FFFCFFFC078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780FFFCFF
FC0E1F7F9E10>I<FFFE00FFFE0007800007800007800007800007800007800007800007800007
800007800007800007800007800007800007800007800007800007800607800607800607800607
800E07800E07800C07801C07803C0780FCFFFFFCFFFFFC171F7E9E1C>76
D<FF80001FF8FFC0003FF807C0003F0007C0003F0006E0006F0006E0006F0006E0006F00067000
CF00067000CF00067000CF000638018F000638018F000638018F00061C030F00061C030F00061C
030F00060E060F00060E060F00060E060F0006070C0F0006070C0F0006070C0F000603980F0006
03980F000603980F000601F00F000601F00F000601F00F000F00E00F00FFF0E1FFF8FFF0E1FFF8
251F7E9E2A>I<FF807FF8FFC07FF807C0078007E0030007E0030006F0030006F0030006780300
063C0300063C0300061E0300061E0300060F0300060F0300060783000607C3000603C3000601E3
000601E3000600F3000600F30006007B0006007B0006003F0006001F0006001F0006000F000600
0F000F000700FFF00700FFF003001D1F7E9E22>I<001F800000FFF00001E0780007C03E000F80
1F000F000F001E0007803C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F8
0001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E0
3C0003C03E0007C01E0007800F000F000F801F0007C03E0001F0F80000FFF000001F80001C217D
9F23>I<FFFFE000FFFFF80007807C0007801E0007801F0007800F0007800F8007800F8007800F
8007800F8007800F8007800F0007801F0007801E0007807C0007FFF80007FFE000078000000780
000007800000078000000780000007800000078000000780000007800000078000000780000007
800000FFFC0000FFFC0000191F7E9E1F>I<FFFF8000FFFFF0000780F80007803C0007803E0007
801E0007801F0007801F0007801F0007801F0007801E0007803E0007803C000780F80007FFF000
07FF80000781C0000780E000078070000780700007807800078078000780780007807C0007807C
0007807C0007807C0C07807E0C07803E0CFFFC1F18FFFC0FF0000003E01E207E9E21>82
D<07E0800FF9801C1F80300F80700780600380E00380E00180E00180E00180F00000F000007800
007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C00001C0C001C0C001C0C001
C0C001C0E00180F00380F80700FE0E00CFFC0081F80012217D9F19>I<7FFFFFE07FFFFFE0780F
01E0700F00E0600F0060600F0060E00F0070C00F0030C00F0030C00F0030C00F0030000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000
000F0000000F0000000F0000000F0000000F0000000F0000000F000007FFFE0007FFFE001C1F7E
9E21>I<FFFC7FF8FFFC7FF8078007800780030007800300078003000780030007800300078003
000780030007800300078003000780030007800300078003000780030007800300078003000780
030007800300078003000780030007800300078003000380020003C0060003C0060001C00C0000
E0180000783000003FE000000FC0001D207E9E22>I<FFF007FEFFF007FE0F8001F00F0000E007
8000C0078000C007C001C003C0018003C0018003E0038001E0030001E0030000F0060000F00600
00F0060000780C0000780C0000780C00003C1800003C1800003C1800001E3000001E3000001F70
00000F6000000F6000000FE0000007C0000007C0000003800000038000000380001F207F9E22>
I<FFF07FF83FF0FFF07FF83FF00F0007800F800F00078003000F000780030007800FC006000780
0FC0060007800FC00600078019E00E0003C019E00C0003C019E00C0003C039E00C0001E030F018
0001E030F0180001E030F0180000F06078300000F06078300000F06078300000F0E07C30000078
C03C60000078C03C60000078C03C6000003D801EC000003D801EC000003D801EC000003F000FC0
00001F000F8000001F000F8000001F000F8000000E00070000000E00070000000E000700002C20
7F9E2F>I<7FF83FF87FF83FF807C00F8003C0060001E00E0001F00C0000F0180000783800007C
3000003C7000003E6000001EC000000FC000000F8000000780000007C0000007E000000DE00000
1DF0000018F8000038780000307C0000603C0000E01E0000C01F0001800F0003800780030007C0
0F8007C0FFE01FFEFFE01FFE1F1F7F9E22>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>91
D<0804180C3018703860306030C060C060C060F87CFC7EFC7E7C3E381C0F0E7B9F17>I<FEFE06
060606060606060606060606060606060606060606060606060606060606060606060606060606
06FEFE072D7FA10D>I<1FE0003FF000783800781C00300E00000E00000E00000E0003FE001FFE
003E0E00780E00F80E00F00E30F00E30F00E30F01E30783F703FEFE00F878014147E9317>97
D<0E0000FE0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3F
000EFF800FC3C00F00E00E00F00E00700E00780E00780E00780E00780E00780E00780E00780E00
700E00F00F00F00F01E00FC3C00CFF800C3E0015207F9F19>I<03F80FFC1E1E3C1E380C780070
00F000F000F000F000F000F0007000780038033C031F0E0FFC03F010147E9314>I<000380003F
80003F8000038000038000038000038000038000038000038000038000038003E3800FFB801E0F
803C0780780380780380700380F00380F00380F00380F00380F00380F003807003807003807807
803807801E1F800FFBF803E3F815207E9F19>I<03F0000FFC001E1E003C0F0038070078070070
0380F00380FFFF80FFFF80F00000F00000F000007000007800003801801C03800F070007FE0001
F80011147F9314>I<003C00FE01CF038F03060700070007000700070007000700FFF0FFF00700
0700070007000700070007000700070007000700070007000700070007007FF07FF01020809F0E
>I<0001E003E3F00FFF701C1C703C1E00380E00780F00780F00780F00780F00380E003C1E001C
1C003FF80033E0003000003000003800003FFE001FFF803FFFC07003E07000F0E00070E00070E0
0070F000F07801E03E07C00FFF0003FC00141F7F9417>I<0E0000FE0000FE00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E3E000EFF000FC3800F01C00F01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC
FFE7FC16207F9F19>I<1C001E003E001E001C000000000000000000000000000E007E007E000E
000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC0FFC00A1F809E0C>
I<00E001F001F001F000E0000000000000000000000000007007F007F000F00070007000700070
00700070007000700070007000700070007000700070007000700070007000706070F0E0F1C07F
803E000C28829E0E>I<0E0000FE0000FE00000E00000E00000E00000E00000E00000E00000E00
000E00000E00000E1FF00E1FF00E0F800E0E000E0C000E18000E30000E70000EF0000FF8000F38
000E1C000E1E000E0E000E07000E07800E03800E03C0FFCFF8FFCFF815207F9F18>I<0E00FE00
FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E00FFE0FFE00B20809F0C>I<0E3F03F000FEFF8FF800FF
C1DC1C000F80F80E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00
0E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E
00FFE7FE7FE0FFE7FE7FE023147F9326>I<0E3E00FEFF00FFC3800F01C00F01C00E01C00E01C0
0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FCFFE7FC
16147F9319>I<01F80007FE001E07803C03C03801C07000E07000E0F000F0F000F0F000F0F000
F0F000F0F000F07000E07801E03801C03C03C01E078007FE0001F80014147F9317>I<0E3F00FE
FF80FFC3C00F01E00E00F00E00F00E00780E00780E00780E00780E00780E00780E00780E00700E
00F00F00F00F01E00FC3C00EFF800E3E000E00000E00000E00000E00000E00000E00000E0000FF
E000FFE000151D7F9319>I<03E1800FF9801E1F803C0780780780780380700380F00380F00380
F00380F00380F00380F003807003807803807807803C0F801E1F800FF38003E380000380000380
000380000380000380000380000380003FF8003FF8151D7E9318>I<0E78FEFCFF9E0F1E0F0C0F
000E000E000E000E000E000E000E000E000E000E000E000E00FFE0FFE00F147F9312>I<1F903F
F07070E030E030E030F00078007F803FE00FF000F0C078C038C038E038E038F070DFE08F800D14
7E9312>I<06000600060006000E000E001E003E00FFF8FFF80E000E000E000E000E000E000E00
0E000E000E000E180E180E180E180E18073007E003C00D1C7F9B12>I<0E01C0FE1FC0FE1FC00E
01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00E
03C0070FC007FDFC01F1FC16147F9319>I<FF87F8FF87F81E01E00E01C00E01800E0180070300
070300070300038600038600038E0001CC0001CC0001FC0000F80000F800007000007000007000
15147F9318>I<FF9FF3FCFF9FF3FC1C0780F01C0780601C07C0E00E0FC0C00E0CC0C00E0CE0C0
070CE18007186180071871800398730003B0330003B0330003B03F0001F03E0001E01E0001E01E
0000E01C0000C00C001E147F9321>I<7FC7FC7FC7FC0703E007038003830001C70000EE0000EC
00007800003800003C00007C0000EE0001C7000187000303800701C00F01E0FF87FEFF87FE1714
809318>I<FF87F8FF87F81E01E00E01C00E01800E018007030007030007030003860003860003
8E0001CC0001CC0001FC0000F80000F80000700000700000700000600000600000600000C000F0
C000F18000F380007F00003C0000151D7F9318>I<3FFF3FFF380E301C703C6038607060F001E0
01C0038007830F030E031C073C063806701EFFFEFFFE10147F9314>I<FFFFFCFFFFFC1602808C
17>I E /FB 45 122 df<70F8FCFC7C0C0C0C0C181830306040060F7C840E>44
D<FFE0FFE0FFE00B037F8B10>I<70F8F8F87005057C840E>I<01F00007FC000E0E001C07003803
803803807803C07001C07001C07001C0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001
E0F001E0F001E0F001E0F001E0F001E0F001E07001C07001C07001C07803C03803803803801C07
000E0E0007FC0001F00013227EA018>48 D<018003800F80FF80F3800380038003800380038003
800380038003800380038003800380038003800380038003800380038003800380038003800380
0380FFFEFFFE0F217CA018>I<03F0000FFC001C1F003007807007807807C07807C07803C03807
C00007C0000780000780000F00000E00003C0003F80003F800001E00000F000007800007C00003
C00003E02003E07003E0F803E0F803E0F003C06003C06007803007801C1F000FFC0003F0001322
7EA018>51 D<000E00000E00001E00001E00003E00003E00006E0000EE0000CE0001CE00018E00
030E00070E00060E000E0E000C0E00180E00180E00300E00700E00600E00E00E00FFFFF8FFFFF8
000E00000E00000E00000E00000E00000E00000E0001FFF001FFF015217FA018>I<1000801C07
801FFF001FFE001FFC001FF00018000018000018000018000018000018000018F8001BFE001F0F
001C07801803801803C00001C00001E00001E00001E00001E06001E0F001E0F001E0F001C0C003
C06003C06003803007001C1E000FFC0003F00013227EA018>I<007E0001FF0003C1800701C00E
03C01C03C01C0180380000380000780000700000702000F1FC00F3FE00F60700FC0380F803C0F8
01C0F001C0F001E0F001E0F001E0F001E0F001E07001E07001E07001E03801C03803C01803801C
07000E0E0007FC0001F00013227EA018>I<01F00007FC000E0F001807803803803001C07001C0
7001C07001C07801C07803803E03803F07001FCE000FFC0003F80003FC000F7F001C3F80380F80
7007C07003C0E001E0E000E0E000E0E000E0E000E0E000E07001C07001C03803801E0F000FFE00
03F00013227EA018>56 D<01F00007FC000E0E001C0700380380780380700380F001C0F001C0F0
01C0F001E0F001E0F001E0F001E0F001E07001E07003E07803E03807E01C0DE00FF9E007F1E000
81C00001C00003C0000380000380300700780700780E00701C003838001FF0000FC00013227EA0
18>I<000180000003C0000003C0000003C0000007E0000007E0000007E000000FF000000CF000
000CF000001CF800001878000018780000383C0000303C0000303C0000601E0000601E0000601E
0000C00F0000C00F0000C00F0001FFFF8001FFFF8001800780030003C0030003C0030003C00600
01E0060001E0060001E00E0000F01F0001F0FFC00FFFFFC00FFF20237EA225>65
D<000FE010003FF83000F81C7001E0067003C003F0078001F00F0000F01E0000F03E0000703C00
00707C0000707C0000307800003078000030F8000030F8000000F8000000F8000000F8000000F8
000000F8000000F800000078000030780000307C0000307C0000303C0000603E0000601E000060
0F0000C0078000C003C0018001E0030000F80E00003FF800000FE0001C247DA223>67
D<FFFFFFC0FFFFFFC007800FC0078003C0078001C0078000C0078000E0078000E0078000600780
60600780606007806060078060000780E0000781E00007FFE00007FFE0000781E0000780E00007
806000078060000780601807806018078000180780003007800030078000300780003007800070
078000F0078001F0078007E0FFFFFFE0FFFFFFE01D227EA121>69 D<FFFFFFC0FFFFFFC007800F
C0078003C0078001C0078000C0078000E0078000E0078000600780006007806060078060600780
6000078060000780E0000781E00007FFE00007FFE0000781E0000780E000078060000780600007
806000078060000780000007800000078000000780000007800000078000000780000007800000
FFFE0000FFFE00001B227EA120>I<FFFCFFFC0780078007800780078007800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
80FFFCFFFC0E227EA112>73 D<FFC00003FFFFE00007FF07E00007E007E00007E006F0000DE006
F0000DE006F0000DE006780019E006780019E006780019E0063C0031E0063C0031E0063C0031E0
061E0061E0061E0061E0061E0061E0060F00C1E0060F00C1E006078181E006078181E006078181
E00603C301E00603C301E00603C301E00601E601E00601E601E00601E601E00600FC01E00600FC
01E00600FC01E006007801E01F807801E0FFF0783FFFFFF0303FFF28227EA12D>77
D<FF800FFFFFC00FFF07C001F807E0006007F0006006F000600678006006780060063C0060063E
0060061E0060060F0060060F0060060780600607C0600603C0600601E0600601E0600600F06006
0078600600786006003C6006003C6006001E6006000F6006000F60060007E0060007E0060003E0
060001E0060001E01F8000E0FFF000E0FFF0006020227EA125>I<FFFFF000FFFFFC0007803F00
07800F8007800780078003C0078003C0078003E0078003E0078003E0078003E0078003E0078003
C0078003C00780078007800F8007803F0007FFFC0007FFF0000780000007800000078000000780
0000078000000780000007800000078000000780000007800000078000000780000007800000FF
FC0000FFFC00001B227EA121>80 D<FFFFE00000FFFFF8000007803E000007800F000007800780
00078007C000078003E000078003E000078003E000078003E000078003E000078003E000078007
C000078007800007800F000007803E000007FFF8000007FFF00000078078000007803C00000780
1E000007800E000007800F000007800F000007800F000007800F000007800F800007800F800007
800F800007800F818007800FC180078007C180FFFC03E300FFFC01FE000000007C0021237EA124
>82 D<03F0200FFC601C0EE03803E07001E07001E0E000E0E000E0E00060E00060E00060F00000
F000007800007F00003FF0001FFE000FFF0003FF80003FC00007E00001E00000F00000F0000070
C00070C00070C00070C00070E00060E000E0F000C0F801C0EF0380C7FF0081FC0014247DA21B>
I<7FFFFFF87FFFFFF87C0780F8700780386007801860078018E007801CC007800CC007800CC007
800CC007800CC007800C0007800000078000000780000007800000078000000780000007800000
078000000780000007800000078000000780000007800000078000000780000007800000078000
00078000000780000007800003FFFF0003FFFF001E227EA123>I<0FE0001FF8003C1C003C0E00
180700000700000700000F0003FF000FFF003F07007C0700780700F00700F00718F00718F00F18
780F187C3FB83FF3F00FC3C015157E9418>97 D<0E0000FE0000FE00001E00000E00000E00000E
00000E00000E00000E00000E00000E00000E00000E00000E1F800E7FE00FC0F00F00780E00380E
003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C0E003C0F00380F80700F
C1F00C7FC00C1F0017237FA21B>I<01FE0007FF000F07801C0780380300780000700000F00000
F00000F00000F00000F00000F00000F000007800007800C03C00C01E01800F030007FE0001F800
12157E9416>I<0000E0000FE0000FE00001E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E003F0E007FEE01F07E03C01E03800E07800E07000E0F000E0F000E0F000
E0F000E0F000E0F000E0F000E07000E07800E03801E03C03E01E0EF00FFCFE03F0FE17237EA21B
>I<01FC0007FF000F07801C03C03801C07801E07000E0FFFFE0FFFFE0F00000F00000F00000F0
0000F000007800007800603C00601E00C00F838007FF0000FC0013157F9416>I<003C00FE01CF
038F038F070007000700070007000700070007000700FFF8FFF807000700070007000700070007
0007000700070007000700070007000700070007007FF87FF8102380A20F>I<0000F001F1F807
FFB80F1F381E0F001C07003C07803C07803C07803C07803C07801C07001E0F000F1E001FFC0019
F0001800001800001C00001FFF000FFFC01FFFE03801F0700070E00038E00038E00038E0003870
00707800F01E03C00FFF8001FC0015217F9518>I<0E0000FE0000FE00001E00000E00000E0000
0E00000E00000E00000E00000E00000E00000E00000E00000E1F800E7FC00FC1E00F80F00F0070
0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070
0E0070FFE7FFFFE7FF18237FA21B>I<1C001E003E001E001C0000000000000000000000000000
0000000E00FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
0E00FFC0FFC00A227FA10E>I<01C003E003E003E001C000000000000000000000000000000000
01E00FE00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E060C0F1C0F1807F003E000B2C82A10F>I<0E0000FE0000FE0000
1E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FFC0E0FFC
0E07E00E03800E07000E0E000E18000E30000E78000EF8000F9C000F1E000E0E000E07000E0780
0E03C00E01C00E01E00E01F0FFE3FEFFE3FE17237FA21A>I<0E00FE00FE001E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E
000E000E000E000E000E000E00FFE0FFE00B237FA20E>I<0E1FC07F00FE7FE1FF80FEC0F303C0
1F807E01E00F003C00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800
E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038
00E0FFE3FF8FFEFFE3FF8FFE27157F942A>I<0E1F80FE7FC0FFC1E01F80F00F00700E00700E00
700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7
FFFFE7FF18157F941B>I<01FC0007FF000F07801C01C03800E07800F0700070F00078F00078F0
0078F00078F00078F00078F000787000707800F03800E01C01C00F078007FF0001FC0015157F94
18>I<0E1F80FE7FE0FFC1F00F00780E00780E003C0E003C0E001E0E001E0E001E0E001E0E001E
0E001E0E001E0E003C0E003C0F00780F80700FC1F00E7FC00E1F000E00000E00000E00000E0000
0E00000E00000E00000E0000FFE000FFE000171F7F941B>I<0E3CFEFEFFCF1F8F0F060F000E00
0E000E000E000E000E000E000E000E000E000E000E000E00FFF0FFF010157F9413>114
D<0F883FF87078E038E018E018E018F0007F003FE01FF001F8003CC01CC01CE01CE01CF018F878
DFF08FC00E157E9413>I<060006000600060006000E000E000E001E003E00FFF8FFF80E000E00
0E000E000E000E000E000E000E000E000E0C0E0C0E0C0E0C0E0C0E08071803F001E00E1F7F9E13
>I<0E0070FE07F0FE07F01E00F00E00700E00700E00700E00700E00700E00700E00700E00700E
00700E00700E00700E00700E00F00E01F007037803FE7F01F87F18157F941B>I<FFC3FEFFC3FE
1E00F80E00600E00600700C00700C00700C003818003818003C38001C30001C30000E60000E600
00E600007C00007C00007C0000380000380017157F941A>I<FF8FF9FFFF8FF9FF1E01C07C1C03
C0380E03E0300E03E0300E0660300706706007067060070E7060038C30C0038C38C0039C38C001
D8198001D81D8001D81D8001F00F8000F00F0000F00F0000E007000060060020157F9423>I<FF
C3FEFFC3FE1E00F80E00600E00600700C00700C00700C003818003818003C38001C30001C30000
E60000E60000E600007C00007C00007C00003800003800003000003000007000006000006000F0
C000F1C000F380007F00003E0000171F7F941A>121 D E /FC 20 118 df<FFFF80FFFF80FFFF
8011037F9016>45 D<FFFFFFE00000FFFFFFFC000007E0007F000003E0000F800003E00007C000
03E00001E00003E00000F00003E00000780003E000007C0003E000003E0003E000003E0003E000
001F0003E000001F0003E000000F8003E000000F8003E000000FC003E000000FC003E0000007C0
03E0000007C003E0000007E003E0000007E003E0000007E003E0000007E003E0000007E003E000
0007E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007E003E0000007C0
03E0000007C003E0000007C003E000000FC003E000000F8003E000000F8003E000000F8003E000
001F0003E000001F0003E000003E0003E000007C0003E00000780003E00000F80003E00001F000
03E00007E00003E0000F800007E0007F0000FFFFFFFC0000FFFFFFE000002B317CB033>68
D<FFFF80FFFF8007F00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E0
0003E00003E00003E00003E00003E00003E00003E00007F000FFFF80FFFF8011317DB017>73
D<FFF00000007FF8FFF8000000FFF807F8000000FF0003F8000000FE00037C000001BE00037C00
0001BE00037C000001BE00033E0000033E00033E0000033E00033E0000033E00031F0000063E00
031F0000063E00031F0000063E00030F80000C3E00030F80000C3E00030F80000C3E000307C000
183E000307C000183E000307C000183E000303E000303E000303E000303E000303E000303E0003
01F000603E000301F000603E000301F000C03E000300F800C03E000300F800C03E0003007C0180
3E0003007C01803E0003007C01803E0003003E03003E0003003E03003E0003003E03003E000300
1F06003E0003001F06003E0003001F06003E0003000F8C003E0003000F8C003E0003000F8C003E
00030007D8003E00030007D8003E00030007D8003E00030003F0003E00030003F0003E00030003
F0003E00078001E0003E000FC001E0007F00FFFC01E00FFFF8FFFC00C00FFFF835317CB03D>77
D<FFFFFFC000FFFFFFF80007E000FE0003E0001F0003E0000F8003E00007C003E00003E003E000
03F003E00001F003E00001F003E00001F803E00001F803E00001F803E00001F803E00001F803E0
0001F803E00001F003E00001F003E00003F003E00003E003E00007C003E0000F8003E0001F0003
E000FE0003FFFFF80003FFFFC00003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000003E000000003E000000003E000000003E000000003E00000
0003E000000003E000000003E000000003E000000003E000000003E000000003E000000007F000
0000FFFF800000FFFF80000025317CB02D>80 D<007F802001FFE06007C0F8600F001CE01E000F
E03C0007E0380003E0780001E0700001E0700000E0F00000E0F00000E0F0000060F0000060F000
0060F8000060F80000007C0000007E0000003F0000003FC000001FF800000FFF800007FFF80003
FFFC0000FFFF00000FFF800000FFC000001FE0000007E0000003F0000001F0000000F0000000F8
000000F8C0000078C0000078C0000078C0000078C0000078E0000078E0000070F00000F0F00000
E0F80000E0FC0001C0FE000380E7800700C1F01E00C07FFC00800FF0001D337CB125>83
D<01FE00000FFFC0001C03E0003C00F0003E0078003E003C003E001C0008001E0000001E000000
1E0000001E0000001E000001FE00003FFE0001FF1E0007F01E000F801E001F001E003E001E007C
001E007C001E00F8001E0CF8001E0CF8001E0CF8003E0CF8003E0C7C007E0C3E00DF1C1F038FB8
0FFF07F003F803C01E1F7D9E21>97 D<003FC000FFF803E01C07801E0F003E1E003E1E003E3C00
087C00007C0000780000F80000F80000F80000F80000F80000F80000F80000F80000F800007C00
007C00007C00003E00031E00031F00060F800E07C01C03F03800FFE0003F80181F7D9E1D>99
D<000001E000003FE000003FE0000003E0000001E0000001E0000001E0000001E0000001E00000
01E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E000
3F81E000FFE1E003E079E007800DE00F0007E01E0003E01E0001E03C0001E07C0001E07C0001E0
780001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001
E0780001E07C0001E07C0001E03C0001E03E0003E01E0007E00F000FE007801DE003E071F001FF
E1FF003F01FF20327DB125>I<003F800000FFE00003E0F80007803C000F001E001E001E001E00
0F003C000F007C000F007C000F8078000780F8000780FFFFFF80FFFFFF80F8000000F8000000F8
000000F8000000F8000000F8000000780000007C0000003C0000003C0001801E0001800F000300
0F80060007C00E0001F03C0000FFF000001FC000191F7E9E1D>I<0003E0001FF8003C3800707C
00F07C01E07C01E03803C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C000FFFFC0FFFFC003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C000
03C00003C00003C00003C00007E0007FFF007FFF0016327FB114>I<000000F0007F03F801FFCF
1C03C1FC1C0780F8180F0078001F007C001E003C003E003E003E003E003E003E003E003E003E00
3E003E003E003E003E001E003C001F007C000F0078000780F0000FC1E0000DFFC0001C7F000018
000000180000001C0000001C0000001E0000000FFFF8000FFFFF0007FFFF800FFFFFC01E0007E0
380001F07000007070000078E0000038E0000038E0000038E0000038E000003870000070780000
F03C0001E01E0003C007C01F0001FFFC00003FE0001E2F7E9F21>I<07000F801F801F800F8007
00000000000000000000000000000000000000000000000780FF80FF800F800780078007800780
078007800780078007800780078007800780078007800780078007800780078007800780078007
800FC0FFF8FFF80D307EAF12>105 D<0781FE003FC000FF87FF80FFF000FF8E07C1C0F8000F98
03E3007C0007B001E6003C0007E000FC001E0007C000F8001E0007C000F8001E0007C000F8001E
00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000
F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00
078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0
001E00078000F0001E00078000F0001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF034
1F7E9E38>109 D<0781FE0000FF87FF8000FF8E07C0000F9803E00007B001E00007E000F00007
C000F00007C000F00007C000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078000F000078000F000078000F0000FC001F800FFFC1F
FF80FFFC1FFF80211F7E9E25>I<001FC00000FFF80001E03C0007800F000F0007801E0003C01E
0003C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F80000F8F80000F8F80000F8
F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C0001E03C0001E01E0003C01E0003
C00F00078007C01F0001F07C0000FFF800001FC0001D1F7E9E21>I<0783E0FF8FF8FF9C7C0FB0
7C07F07C07E03807C00007C00007C0000780000780000780000780000780000780000780000780
000780000780000780000780000780000780000780000780000780000780000780000FC000FFFE
00FFFE00161F7E9E19>114 D<01FC100FFF301E03F03800F0700070E00070E00030E00030E000
30F00030F800007E00003FF0001FFF000FFF8003FFE0003FF00003F8000078C0003CC0003CC000
1CE0001CE0001CF0001CF00018F80038FC0070EF01E0C3FFC080FE00161F7E9E1A>I<00C00000
C00000C00000C00000C00001C00001C00001C00003C00003C00007C0000FC0001FC000FFFFE0FF
FFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003
C00003C00003C00003C00003C03003C03003C03003C03003C03003C03003C03003C03001E06001
E06000F0C0007F80001F00142C7FAB19>I<078000F000FF801FF000FF801FF0000F8001F00007
8000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F000
078000F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0
00078000F000078000F000078000F000078001F000078001F000078003F000038007F00003C00E
F00001F03CF80000FFF0FF80003FC0FF80211F7E9E25>I E /FD 5 85 df<0000000060000000
0000E00000000000E00000000001E00000000001F00000000003F00000000003F00000000007F0
000000000FF0000000000FF0000000001BF0000000001BF00000000033F00000000033F0000000
0063F00000000063F000000000C3F000000001C3F00000000183F00000000303F00000000303F0
0000000603F80000000603F80000000C01F80000000C01F80000001801F80000003801F8000000
3001F80000006001F80000006001F8000000C001F8000000C001F80000018001F8000001FFFFF8
000003FFFFF80000070001F80000060001F800000C0001F800000C0001F80000180001FC000018
0001FC0000300000FC0000300000FC0000600000FC0000E00000FC0000C00000FC0001C00000FC
0003C00000FC000FE00003FC00FFFC003FFFE0FFF8003FFFE02B337CB234>65
D<000FFFFFFC00000FFFFFFF8000007F000FC000007E0003E000007E0001F000007E0000F80000
7E00007C0000FC00007C0000FC00003E0000FC00003E0000FC00003E0001F800001E0001F80000
1F0001F800001F0001F800001F0003F000001F0003F000001F0003F000001F0003F000001F0007
E000003F0007E000003F0007E000003F0007E000003F000FC000003E000FC000007E000FC00000
7E000FC000007E001F8000007C001F800000FC001F800000FC001F800000F8003F000001F8003F
000001F0003F000003F0003F000003E0007E000007E0007E000007C0007E00000F80007E00000F
0000FC00001F0000FC00003E0000FC00007C0000FC0000F80001F80001F00001F80007C00001F8
000F800003F8007E0000FFFFFFF80000FFFFFFC0000030317BB035>68 D<000FFFFFFFF8000FFF
FFFFF800007F0003F800007E0000F800007E00007800007E00007800007E0000300000FC000030
0000FC0000300000FC0000300000FC0000300001F80000300001F80000300001F80000300001F8
0000600003F00180600003F00180000003F00180000003F00180000007E00300000007E0030000
0007E00700000007E01F0000000FFFFE0000000FFFFE0000000FC01E0000000FC00E0000001F80
0C0000001F800C0000001F800C0000001F800C0000003F00180000003F00180000003F00000000
003F00000000007E00000000007E00000000007E00000000007E0000000000FC0000000000FC00
00000000FC0000000000FC0000000001F80000000001F80000000001F80000000003F800000000
FFFFF0000000FFFFF00000002D317BB02E>70 D<000FFFFFE000000FFFFFFC0000007F003F0000
007E000F8000007E0007C000007E0003E000007E0003F00000FC0001F00000FC0001F00000FC00
01F00000FC0001F00001F80003F00001F80003F00001F80003F00001F80003E00003F00007E000
03F00007C00003F0000FC00003F0001F800007E0003F000007E0007C000007E000F8000007E007
E000000FFFFF8000000FFFFF0000000FC00FC000000FC007E000001F8003F000001F8001F00000
1F8001F800001F8001F800003F0001F800003F0001F800003F0001F800003F0001F800007E0003
F000007E0003F000007E0003F000007E0003F00000FC0007E00000FC0007E00000FC0007E00000
FC0007E01801F80007E03001F80007E03001F80007E06003F80003E060FFFFE001F1C0FFFFC000
FF80000000003E002D327BB033>82 D<07FFFFFFFFF007FFFFFFFFF00FE007F007F00F8007E001
F00E0007E000E00C0007E000E01C0007E000E018000FC000E018000FC000E030000FC000C03000
0FC000C030001F8000C060001F8000C060001F8000C060001F8000C0C0003F00018000003F0000
0000003F00000000003F00000000007E00000000007E00000000007E00000000007E0000000000
FC0000000000FC0000000000FC0000000000FC0000000001F80000000001F80000000001F80000
000001F80000000003F00000000003F00000000003F00000000003F00000000007E00000000007
E00000000007E00000000007E0000000000FC0000000000FC0000000000FC0000000000FC00000
00001F80000000001F80000000001F80000000003F800000007FFFFF8000007FFFFF8000002C31
74B032>84 D E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin
%%EndSetup
%%Page: 0 1
bop 799 911 a FD(D)25 b(R)g(A)g(F)g(T)225 1002 y FC(Do)r(cumen)n(t)20
b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n(terface)621
1196 y FB(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)766
1323 y(Septem)o(b)q(er)g(14,)h(1993)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
bop 166 49 a FA(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
bop 75 361 a Fz(Section)32 b(1)75 568 y Fy(P)m(oin)m(t)39 b(to)g(P)m(oin)m(t)
g(Comm)m(u)o(nication)75 809 y Fx(1.1)59 b(Intro)r(duction)75
910 y FA(This)17 b(c)o(hapter)e(is)i(a)f(draft)f(of)h(the)g(curren)o(t)g
(prop)q(osal)g(for)g(p)q(oin)o(t-to-p)q(oin)o(t)g(comm)o(unication.)23
b(Sending)75 967 y(and)c(receiving)h(of)e(messages)g(b)o(y)g(pro)q(cesses)h
(is)g(the)g(basic)g(MPI)g(comm)o(unication)g(mec)o(hanism.)31
b(All)75 1023 y(other)20 b(comm)o(unication)h(functions)f(can)h(b)q(e)g
(implemen)o(ted)g(on)f(top)g(of)g(this)g(basic)h(comm)o(unication)75
1080 y(la)o(y)o(er)15 b(\(although)g(a)g(more)g(direct)h(implemen)o(tation)g
(ma)o(y)f(lead)h(to)e(greater)g(e\016ciency\).)166 1136 y(The)19
b(basic)g(p)q(oin)o(t)g(to)f(p)q(oin)o(t)h(comm)o(unication)g(op)q(erations)g
(are)f Fw(send)g FA(and)h Fw(receiv)o(e)p FA(.)29 b(A)18 b
Fw(send)75 1193 y FA(op)q(eration)13 b(creates)f(and)h(sends)g(a)g(message.)
18 b(The)13 b(op)q(eration)g(sp)q(eci\014es)i(a)d Fw(send)i(bu\013er)f
FA(in)h(the)e(sender)75 1249 y(memory)f(from)g(whic)o(h)h(the)g(message)f
(data)g(is)h(tak)o(en.)18 b(In)12 b(addition,)h(the)f(send)g(op)q(eration)g
(asso)q(ciates)f(an)75 1306 y Fw(en)o(v)o(elop)q(e)16 b FA(with)g(the)g
(message.)22 b(This)16 b(en)o(v)o(elop)q(e)h(sp)q(eci\014es)h(the)e(message)g
(destination)h(and)f(con)o(tains)75 1362 y(distinguishing)h(information)d
(that)f(can)i(b)q(e)g(used)f(b)o(y)g(the)g Fw(receiv)o(e)g
FA(op)q(eration)g(to)g(select)h(a)e(particular)75 1418 y(message.)166
1475 y(A)22 b Fw(receiv)o(e)f FA(op)q(eration)h(consumes)g(a)f(message.)39
b(The)22 b(message)f(to)g(b)q(e)i(receiv)o(ed)f(is)h(selected)75
1531 y(according)13 b(to)f(the)g(v)m(alue)i(on)e(its)g(en)o(v)o(elop)q(e,)i
(and)f(the)f(message)g(data)g(is)h(put)f(in)o(to)g(the)h Fw(receiv)o(e)g
(bu\013er)p FA(.)166 1588 y(The)f(next)g(sections)h(describ)q(e)g(the)g
(basic)f(\(blo)q(c)o(king\))h(send)g(and)f(receiv)o(e)h(op)q(erations.)19
b(W)l(e)12 b(discuss)75 1644 y(send,)21 b(receiv)o(e,)g(basic)f(comm)o
(unication)g(seman)o(tics,)h(t)o(yp)q(e)e(matc)o(hing)h(requiremen)o(ts,)h(t)
o(yp)q(e)e(con)o(v)o(er-)75 1701 y(sion)14 b(in)h(heterogeneous)f(en)o
(vironmen)o(ts,)f(and)h(more)g(general)g(comm)o(unication)g(mo)q(des.)20
b(Non)o(blo)q(c)o(king)75 1757 y(comm)o(unication)c(is)h(addressed)f(next,)f
(follo)o(w)o(ed)h(b)o(y)g(c)o(hannel-lik)o(e)i(constructs)e(and)f
(send-receiv)o(e)j(op-)75 1814 y(erations.)i(W)l(e)15 b(then)g(consider)h
(general)f(datat)o(yp)q(es)f(that)g(allo)o(w)h(one)g(to)g(transfer)f
(heterogeneous)h(and)75 1870 y(noncon)o(tiguous)f(data,)f(and)h(conclude)h
(with)f(a)g(description)h(of)e(an)h(implemen)o(tation)h(of)e(MPI)g(p)q(oin)o
(t)i(to)75 1927 y(p)q(oin)o(t)h(comm)o(unication)g(using)g(a)e(small)i(n)o
(um)o(b)q(er)g(of)f(primitiv)o(es.)75 2070 y Fx(1.2)59 b(Basic)20
b(send)g(op)r(eration)75 2171 y FA(The)15 b(syn)o(tax)g(of)g(the)g(simplest)h
(send)g(op)q(eration)f(is)h(giv)o(en)g(b)q(elo)o(w.)-32 46
y Fv(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: 2 4
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)654 b FA(2)75 49 y Ft(MPI)p 160 49 14 2 v 16 w(SEND)15
b(\(sta)o(rt,)g(count,)h(datat)o(yp)q(e,)h(dest,)f(tag,)f(comm)m(\))117
126 y Fs(IN)155 b Ft(sta)o(rt)501 b Fs(initial)12 b(address)j(of)f(send)g
(bu\013er)h(\(c)o(hoice\))117 202 y(IN)155 b Ft(count)482 b
Fs(n)o(um)o(b)q(er)15 b(of)g(elemen)o(ts)g(in)g(send)h(bu\013er)h
(\(nonnegativ)o(e)e(in)o(te-)905 258 y(ger\))117 333 y(IN)155
b Ft(datat)o(yp)q(e)424 b Fs(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(send)h
(bu\013er)g(elemen)o(t)117 408 y(IN)155 b Ft(dest)511 b Fs(rank)14
b(of)f(destination)h(\(in)o(teger\))117 483 y(IN)155 b Ft(tag)526
b Fs(message)14 b(tag)f(\(in)o(teger\))117 559 y(IN)155 b Ft(comm)466
b Fs(comm)o(unicator)11 b(\(handle\))75 748 y Fr(1.2.1)49 b(Message)16
b(data)75 834 y FA(The)i(send)h(bu\013er)f(sp)q(eci\014ed)i(b)o(y)d(the)h
Ft(MPI)p 828 834 V 16 w(SEND)h FA(op)q(eration)f(consists)g(of)f
Ft(count)i FA(successiv)o(e)h(en)o(tries)75 891 y(of)e(the)g(t)o(yp)q(e)g
(indicated)h(b)o(y)f Ft(datat)o(yp)q(e)p FA(,)i(starting)e(with)g(the)g(en)o
(try)f(at)h(address)g Ft(sta)o(rt)p FA(.)28 b(Note)18 b(that)f(w)o(e)75
947 y(sp)q(ecify)d(the)e(message)g(length)h(in)g(terms)e(of)h(n)o(um)o(b)q
(er)h(of)e Fq(elements)p FA(,)h(not)f(n)o(um)o(b)q(er)i(of)f
Fq(bytes)p FA(.)18 b(The)13 b(former)75 1003 y(is)j(mac)o(hine)g(indep)q
(enden)o(t)h(and)f(closer)f(to)g(the)g(application)i(lev)o(el.)166
1060 y(The)g(data)f(part)g(of)g(the)g(message)h(consists)f(of)h(a)f(sequence)
i(of)e Ft(count)i FA(v)m(alues,)f(eac)o(h)g(of)f(the)h(t)o(yp)q(e)75
1116 y(indicated)j(b)o(y)e Ft(datat)o(yp)q(e)p FA(.)31 b Ft(count)20
b FA(ma)o(y)d(b)q(e)i(zero,)g(in)g(whic)o(h)g(case)g(the)f(data)g(part)f(of)h
(the)h(message)e(is)75 1173 y(empt)o(y)l(.)30 b(The)18 b(basic)h(datat)o(yp)q
(es)f(that)g(can)h(b)q(e)g(sp)q(eci\014ed)h(for)e(message)g(data)g(v)m(alues)
i(corresp)q(ond)f(to)75 1229 y(the)14 b(basic)h(datat)o(yp)q(es)f(of)f(the)i
(host)e(language.)20 b(The)15 b(p)q(ossible)g(v)m(alues)h(of)e(this)g
(parameter)g(for)f(F)l(ortran)75 1286 y(and)i(the)h(corresp)q(onding)g(F)l
(ortran)e(t)o(yp)q(es)h(are)g(listed)h(b)q(elo)o(w)p 481 1448
989 2 v 480 1505 2 57 v 506 1488 a(MPI)f(datat)o(yp)q(e)p 1037
1505 V 277 w(F)l(ortran)f(datat)o(yp)q(e)p 1468 1505 V 481
1506 989 2 v 480 1563 2 57 v 506 1546 a Ft(MPI)p 591 1546 14
2 v 15 w(INTEGER)p 1037 1563 2 57 v 271 w Fp(INTEGER)p 1468
1563 V 480 1619 V 506 1602 a Ft(MPI)p 591 1602 14 2 v 15 w(REAL)p
1037 1619 2 57 v 349 w Fp(REAL)p 1468 1619 V 480 1676 V 506
1659 a Ft(MPI)p 591 1659 14 2 v 15 w(DOUBLE)p 1037 1676 2 57
v 281 w Fp(DOUBLE)23 b(PRECISION)p 1468 1676 V 480 1732 V 506
1715 a Ft(MPI)p 591 1715 14 2 v 15 w(COMPLEX)p 1037 1732 2
57 v 247 w Fp(COMPLEX)p 1468 1732 V 480 1788 V 506 1772 a Ft(MPI)p
591 1772 14 2 v 15 w(DOUBLE)p 785 1772 V 17 w(COMPLEX)p 1037
1788 2 57 v 51 w Fp(DOUBLE)g(COMPLEX)p 1468 1788 V 480 1845
V 506 1828 a Ft(MPI)p 591 1828 14 2 v 15 w(LOGICAL)p 1037 1845
2 57 v 275 w Fp(LOGICAL)p 1468 1845 V 480 1901 V 506 1884 a
Ft(MPI)p 591 1884 14 2 v 15 w(CHARA)o(CTER)p 1037 1901 2 57
v 195 w Fp(CHARACTER)p 1468 1901 V 480 1958 V 506 1941 a Ft(MPI)p
591 1941 14 2 v 15 w(BYTE)p 1037 1958 2 57 v 1468 1958 V 481
1959 989 2 v 1875 2136 a Fo(C)n(H)-6 b(A)h(N)f(G)h(E)75 2143
y FA(The)13 b(p)q(ossible)h(v)m(alues)f(for)f(this)g(parameter)g(for)g(C)g
(and)g(the)h(corresp)q(onding)g(C)f(t)o(yp)q(es)g(are)g(listed)i(b)q(elo)o
(w.)-32 46 y Fv(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: 3 5
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)654 b FA(3)p 466 5 1019 2 v 465 62 2 57 v 491 45 a(MPI)15
b(datat)o(yp)q(e)p 1004 62 V 259 w(C)g(datat)o(yp)q(e)p 1483
62 V 466 63 1019 2 v 465 120 2 57 v 491 103 a Ft(MPI)p 576
103 14 2 v 16 w(CHAR)p 1004 120 2 57 v 321 w Fp(signed)23 b(char)p
1483 120 V 465 176 V 491 159 a Ft(MPI)p 576 159 14 2 v 16 w(SHORT)p
1004 176 2 57 v 291 w Fp(signed)g(short)p 1483 176 V 465 233
V 491 216 a Ft(MPI)p 576 216 14 2 v 16 w(INT)p 1004 233 2 57
v 365 w Fp(signed)g(int)p 1483 233 V 465 289 V 491 272 a Ft(MPI)p
576 272 14 2 v 16 w(LONG)p 1004 289 2 57 v 321 w Fp(signed)g(long)g(int)p
1483 289 V 465 346 V 491 329 a Ft(MPI)p 576 329 14 2 v 16 w(UNSIGNED)p
815 329 V 17 w(CHAR)p 1004 346 2 57 v 81 w Fp(unsigned)f(char)p
1483 346 V 465 402 V 491 385 a Ft(MPI)p 576 385 14 2 v 16 w(UNSIGNED)p
815 385 V 17 w(SHORT)p 1004 402 2 57 v 51 w Fp(unsigned)g(short)i(int)p
1483 402 V 465 459 V 491 442 a Ft(MPI)p 576 442 14 2 v 16 w(UNSIGNED)p
1004 459 2 57 v 218 w Fp(unsigned)e(int)p 1483 459 V 465 515
V 491 498 a Ft(MPI)p 576 498 14 2 v 16 w(UNSIGNED)p 815 498
V 17 w(LONG)p 1004 515 2 57 v 81 w Fp(unsigned)g(long)i(int)p
1483 515 V 465 571 V 491 555 a Ft(MPI)p 576 555 14 2 v 16 w(FLO)o(A)l(T)p
1004 571 2 57 v 301 w Fp(float)p 1483 571 V 465 628 V 491 611
a Ft(MPI)p 576 611 14 2 v 16 w(DOUBLE)p 1004 628 2 57 v 262
w Fp(double)p 1483 628 V 465 684 V 491 667 a Ft(MPI)p 576 667
14 2 v 16 w(LONG)p 712 667 V 16 w(DOUBLE)p 1004 684 2 57 v
126 w Fp(long)f(double)p 1483 684 V 465 741 V 491 724 a Ft(MPI)p
576 724 14 2 v 16 w(BYTE)p 1004 741 2 57 v 1483 741 V 466 742
1019 2 v 166 913 a FA(The)16 b(datat)o(yp)q(e)f Ft(MPI)p 536
913 14 2 v 15 w(BYTE)i FA(do)q(es)e(not)g(corresp)q(ond)h(to)f(a)g(F)l
(ortran)g(or)g(C)g(datat)o(yp)q(e.)20 b(A)c(v)m(alue)g(of)75
970 y(t)o(yp)q(e)i Ft(MPI)p 265 970 V 15 w(BYTE)h FA(consists)f(of)f(8)g
(binary)h(digits.)28 b(A)18 b(b)o(yte)f(is)h(unin)o(terpreted)h(and)f(is)g
(di\013eren)o(t)g(from)75 1026 y(a)f(c)o(haracter.)25 b(Di\013eren)o(t)17
b(mac)o(hines)g(ma)o(y)g(ha)o(v)o(e)g(di\013eren)o(t)g(represen)o(tations)g
(for)g(c)o(haracters,)f(or)h(ma)o(y)75 1083 y(use)g(more)g(than)g(one)g(b)o
(yte)g(to)g(represen)o(t)g(c)o(haracters.)25 b(On)18 b(the)f(other)g(hand,)g
(a)g(b)o(yte)g(has)g(the)g(same)75 1139 y(binary)f(v)m(alue)g(on)f(all)h(mac)
o(hines.)166 1272 y Fn(Discussion:)166 1322 y Fs(One)h(goal)e(of)h(the)h
(design)g(is)f(to)g(allo)o(w)f(for)h(MPI)h(to)f(b)q(e)h(implemen)o(ted)d(as)j
(a)f(library)m(,)g(with)g(no)g(need)h(for)75 1371 y(additional)d(prepro)q
(cessing)k(or)e(compilation.)22 b(Th)o(us,)16 b(one)g(cannot)h(assume)e(that)
h(a)g(comm)o(unication)d(call)i(has)75 1421 y(information)g(on)k(the)g(datat)
o(yp)q(e)f(of)g(v)n(ariables)g(in)g(the)h(comm)o(unicatio)o(n)d(bu\013er;)21
b(this)d(information)e(m)o(ust)h(b)q(e)75 1471 y(supplied)h(b)o(y)f(an)h
(explicit)f(parameter.)29 b(The)18 b(need)g(for)g(suc)o(h)g(datat)o(yp)q(e)g
(information)d(will)h(b)q(ecome)h(clear)h(in)75 1521 y(Section)c(1.6.)75
1725 y Fr(1.2.2)49 b(Message)16 b(envelop)q(e)75 1811 y FA(In)g(addition)g
(to)e(the)h(data)g(part,)f(messages)g(con)o(tain)h(information)h(that)e(can)h
(b)q(e)h(used)f(to)g(distinguish)75 1867 y(messages)h(and)g(selectiv)o(ely)i
(receiv)o(e)f(them.)23 b(This)17 b(information)f(is)h(con)o(tained)g(in)g(a)f
(\014xed)h(n)o(um)o(b)q(er)f(of)75 1924 y(\014xed-format)f(\014elds,)h(whic)o
(h)g(w)o(e)f(collectiv)o(ely)i(call)g(the)e Fw(message)i(en)o(v)o(elop)q(e)p
FA(.)i(These)d(\014elds)g(are)75 2018 y Fw(source)75 2112 y(destination)75
2205 y(tag)75 2299 y(con)o(text)166 2393 y FA(The)c(message)g(source)g(is)h
(implicitly)i(determined)f(b)o(y)e(the)g(iden)o(tit)o(y)h(of)f(the)g(message)
g(sender.)20 b(The)75 2449 y(other)15 b(\014elds)h(are)f(sp)q(eci\014ed)i(b)o
(y)f(parameters)e(in)i(the)f(send)h(op)q(eration.)166 2506
y(The)k(in)o(teger-v)m(alued)i(message)d(tag)g(is)i(sp)q(eci\014ed)h(b)o(y)d
(the)h Ft(tag)g FA(parameter.)33 b(This)21 b(in)o(teger)f(can)75
2562 y(b)q(e)d(used)g(b)o(y)g(the)f(program)f(to)h(distinguish)j(di\013eren)o
(t)d(t)o(yp)q(es)h(of)f(messages.)23 b(The)17 b(range)f(of)g(v)m(alid)i(tag)
75 2619 y(v)m(alues)e(is)g(implemen)o(tation)g(dep)q(enden)o(t)g(and)f(can)g
(b)q(e)h(queried)g(using)g(the)f Ft(T)l(agRange)g FA(en)o(vironmen)o(tal)75
2675 y(inquiry)i(function,)e(as)g(describ)q(ed)i(in)f(Chapter)f
Fw(??)p FA(.)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)654 b FA(4)166 49 y(The)20 b(con)o(text)f(of)g(the)g(message)h(sen)o(t)
f(is)h(sp)q(eci\014ed)i(b)o(y)d(the)h Ft(comm)13 b FA(parameter.)33
b(The)19 b(message)75 106 y(carries)c(the)h(con)o(text)e(asso)q(ciated)i
(with)f(this)h(comm)o(unicator)f(\(see)g(Chapter)g Fw(??)p
FA(\).)166 162 y(The)e(message)f(destination)h(is)h(sp)q(eci\014ed)g(b)o(y)f
(the)f Ft(dest)j FA(parameter)c(as)i(a)f(rank)g(within)i(the)f(pro)q(cess)75
219 y(group)j(asso)q(ciated)h(with)g(that)f(same)h(comm)o(unicator)f
(\(remote)g(pro)q(cess)h(group,)f(for)g(in)o(tercomm)o(uni-)75
275 y(cators\).)i(The)d(range)f(of)f(v)m(alid)j(v)m(alues)g(is)e
Fp(0,)24 b(...)47 b(,)24 b(n-1)p FA(,)14 b(where)g Fp(n)g FA(is)h(the)f(n)o
(um)o(b)q(er)h(of)f(pro)q(cesses)g(in)75 332 y(this)k(group.)25
b(Th)o(us,)17 b(p)q(oin)o(t-to-p)q(oin)o(t)h(comm)o(unications)g(do)f(not)g
(use)g(absolute)h(addresses,)f(but)g(only)75 388 y(relativ)o(e)f(ranks)f
(within)h(a)f(group.)k(This)d(pro)o(vides)g(imp)q(ortan)o(t)f(mo)q(dularit)o
(y)l(.)166 444 y(The)j(message)f(en)o(v)o(elop)q(e)i(w)o(ould)f(normally)g(b)
q(e)h(enco)q(ded)g(b)o(y)e(a)g(\014xed-length)j(message)d(header.)75
501 y(Ho)o(w)o(ev)o(er,)c(the)i(actual)f(mec)o(hanism)h(used)g(to)f(asso)q
(ciate)g(an)g(en)o(v)o(elop)q(e)i(with)e(a)g(message)g(is)h(implemen-)75
557 y(tation)d(dep)q(enden)o(t:)20 b(some)12 b(of)g(the)g(information)g
(\(e.g.,)g(source)g(or)g(destination\))g(ma)o(y)g(b)q(e)h(implicit,)i(and)75
614 y(need)f(not)g(b)q(e)g(explicitly)i(carried)e(b)o(y)g(messages;)f(pro)q
(cesses)h(ma)o(y)f(b)q(e)h(iden)o(ti\014ed)i(b)o(y)d(relativ)o(e)h(ranks,)f
(or)75 670 y(absolute)j(ids;)f(etc.)75 813 y Fx(1.3)59 b(Basic)20
b(receive)f(op)r(eration)75 915 y FA(The)c(syn)o(tax)g(of)g(the)g(simplest)h
(receiv)o(e)g(op)q(eration)g(is)f(giv)o(en)h(b)q(elo)o(w.)75
1019 y Ft(MPI)p 160 1019 14 2 v 16 w(RECV)g(\(sta)o(rt,)f(count,)h(datat)o
(yp)q(e,)g(source,)f(tag,)g(comm)m(,)d(status\))117 1096 y
Fs(OUT)108 b Ft(sta)o(rt)501 b Fs(initial)12 b(address)j(of)f(receiv)o(e)h
(bu\013er)g(\(c)o(hoice\))117 1171 y(IN)155 b Ft(count)482
b Fs(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(receiv)o(e)h(bu\013er)g
(\(in)o(teger\))117 1246 y(IN)155 b Ft(datat)o(yp)q(e)424 b
Fs(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(receiv)o(e)h(bu\013er)g(elemen)o(t)e
(\(state\))117 1321 y(IN)155 b Ft(source)468 b Fs(rank)14 b(of)f(source)j
(\(in)o(teger\))117 1396 y(IN)155 b Ft(tag)526 b Fs(message)14
b(tag)f(\(in)o(teger\))117 1472 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)
11 b(\(handle\))117 1547 y(OUT)108 b Ft(status)476 b Fs(status)15
b(ob)r(ject)166 1671 y FA(The)g(receiv)o(e)h(bu\013er)f(consists)h(of)e(the)h
(storage)f(con)o(taining)i Ft(count)g FA(consecutiv)o(e)g(elemen)o(ts)g(of)f
(the)75 1728 y(t)o(yp)q(e)k(sp)q(eci\014ed)i(b)o(y)e Ft(datat)o(yp)q(e)p
FA(,)i(starting)d(at)g(address)h Ft(sta)o(rt)p FA(.)31 b(The)19
b(length)h(of)e(the)h(receiv)o(ed)h(message)75 1784 y(m)o(ust)15
b(b)q(e)i(less)g(then)f(or)f(equal)i(to)e(the)h(length)h(of)f(the)g(receiv)o
(e)g(bu\013er.)23 b(I.e.,)15 b(all)i(incoming)g(data)f(m)o(ust)75
1840 y(\014t,)23 b(without)e(truncation,)i(in)o(to)e(the)h(receiv)o(e)g
(bu\013er.)39 b(The)22 b Ft(MPI)p 1262 1840 V 16 w(PROBE)g
FA(function)h(describ)q(ed)g(in)75 1897 y(Section)16 b(1.9)e(can)i(b)q(e)g
(used)f(to)g(receiv)o(e)h(messages)f(of)f(unkno)o(wn)i(length.)166
1953 y(The)j(selection)h(of)f(a)f(message)h(b)o(y)f(a)h(receiv)o(e)h(op)q
(eration)f(is)g(done)g(uniquely)i(according)f(to)e(the)75 2010
y(v)m(alue)i(of)f(the)g(message)g(en)o(v)o(elop)q(e.)32 b(The)19
b(receiv)o(e)h(op)q(eration)g(sp)q(eci\014es)h(an)d Fw(en)o(v)o(elop)q(e)k
(pattern)p FA(;)f(a)75 2066 y(message)13 b(can)g(b)q(e)g(receiv)o(ed)h(b)o(y)
f(that)g(receiv)o(e)h(op)q(eration)f(only)g(if)h(its)f(en)o(v)o(elop)q(e)h
(matc)o(hes)f(that)f(pattern.)75 2123 y(A)19 b(pattern)g(sp)q(eci\014es)i(v)m
(alues)g(for)e(the)g Ft(source)p FA(,)i Ft(tag)e FA(and)h Ft(context)g
FA(\014elds)h(of)e(the)g(message)g(en)o(v)o(elop)q(e.)75 2179
y(The)d(receiv)o(er)h(ma)o(y)e(sp)q(ecify)j(a)e(wildcard)h
Fm(MPI)p 889 2179 13 2 v 14 w(ANY)p 988 2179 V 15 w(SOURCE)d
FA(v)m(alue)k(for)d Ft(source)p FA(,)h(and/or)g(a)g(wildcard)75
2236 y Fm(MPI)p 152 2236 V 14 w(ANY)p 251 2236 V 15 w(T)m(A)o(G)c
FA(v)m(alue)j(for)d Ft(tag)p FA(,)i(indicating)h(that)d(an)o(y)h(source)h
(and/or)e(tag)h(are)g(acceptable.)20 b(It)13 b(cannot)75 2292
y(sp)q(ecify)h(a)f(wildcard)h(v)m(alue)g(for)f Ft(context)p
FA(.)20 b(Th)o(us,)13 b(a)g(message)f(can)i(b)q(e)f(receiv)o(ed)h(b)o(y)f(a)g
(receiv)o(e)h(op)q(eration)75 2349 y(only)23 b(if)g(it)g(is)g(addressed)h(to)
e(the)g(receiving)j(pro)q(cess,)f(has)f(a)f(matc)o(hing)h(con)o(text,)g(has)g
(matc)o(hing)75 2405 y(source)14 b(unless)g(source=)p Fm(MPI)p
581 2405 V 15 w(ANY)p 681 2405 V 15 w(SOURCE)d FA(in)k(the)e(pattern,)g(and)h
(has)g(a)f(matc)o(hing)g(tag)g(unless)i(tag=)75 2461 y Fm(MPI)p
152 2461 V 14 w(ANY)p 251 2461 V 15 w(T)m(A)o(G)f FA(in)i(the)f(pattern.)166
2518 y(The)c(message)g(tag)f(is)i(sp)q(eci\014ed)h(b)o(y)e(the)g
Ft(tag)g FA(parameter)f(of)h(the)g(receiv)o(e)h(op)q(eration.)19
b(The)11 b(message)75 2574 y Ft(context)19 b FA(is)e(the)h(con)o(text)e
(attac)o(hed)h(with)h(the)f(comm)o(unicator)g(sp)q(eci\014ed)i(b)o(y)e(the)h
(parameter)e Ft(comm)m FA(.)75 2631 y(The)h(message)g(source,)h(if)f
(di\013eren)o(t)h(from)32 b Fm(MPI)p 929 2631 V 14 w(ANY)p
1028 2631 V 15 w(SOURCE)p FA(,)15 b(is)j(sp)q(eci\014ed)h(as)e(a)g(rank)f
(within)j(the)-32 46 y Fv(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: 5 7
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)654 b FA(5)75 49 y(pro)q(cess)19 b(group)f(asso)q(ciated)h(with)g(that)
e(same)h(comm)o(unicator)h(\(remote)e(pro)q(cess)i(group,)g(for)f(in)o(ter-)
75 106 y(comm)o(unicators\).)k(Th)o(us,)17 b(the)f(range)g(of)g(v)m(alid)i(v)
m(alues)f(for)f(the)g Ft(source)h FA(parameter)f(is)h Fl(f)23
b Fp(0,)h(...)47 b(,)75 162 y(n-1)23 b Fl(g[f)h Fp(MPI)p 345
162 15 2 v 17 w(ANY)p 434 162 V 17 w(SOURCE)f Fl(g)p FA(,)14
b(where)i Fp(n)f FA(is)g(the)h(n)o(um)o(b)q(er)f(of)g(pro)q(cesses)h(in)g
(this)f(group.)166 219 y(Note)j(the)i(asymmetry)d(b)q(et)o(w)o(een)j(send)f
(and)g(receiv)o(e)h(op)q(erations:)28 b(A)19 b(receiv)o(e)h(op)q(eration)f
(ma)o(y)75 275 y(accept)13 b(messages)f(from)g(an)h(arbitrary)f(sender;)i(on)
f(the)g(other)f(hand,)i(a)e(send)h(op)q(eration)g(m)o(ust)g(sp)q(ecify)75
332 y(a)i(unique)j(receiv)o(er.)k(This)16 b(matc)o(hes)f(a)h(\\push")f(comm)o
(unication)i(mec)o(hanism,)f(where)g(data)f(transfer)75 388
y(is)i(e\013ected)h(b)o(y)f(the)g(sender)g(\(rather)f(than)h(a)g(\\pull")h
(mec)o(hanism,)g(where)f(data)f(transfer)g(is)i(e\013ected)75
444 y(b)o(y)d(the)g(receiv)o(er\).)166 501 y(Source)h(=)f(destination)h(is)g
(allo)o(w)o(ed:)k(a)15 b(pro)q(cess)g(can)h(send)g(a)e(message)h(to)g
(itself.)75 620 y Fr(1.3.1)49 b(Return)16 b(status)75 705 y
FA(The)j(source)f(or)g(the)h(tag)f(of)g(a)g(receiv)o(ed)i(message)e(ma)o(y)g
(not)g(b)q(e)h(kno)o(wn)f(if)h(wildcard)h(v)m(alues)g(where)75
762 y(used)d(in)g(the)g(receiv)o(e)g(op)q(eration.)24 b(Also,)16
b(the)h(actual)f(length)i(of)e(the)g(message)g(receiv)o(ed)i(ma)o(y)d(not)h
(b)q(e)75 818 y(kno)o(wn.)22 b(Th)o(us,)15 b(this)i(information)f(needs)g(to)
g(b)q(e)g(returned)g(b)o(y)g(the)g(receiv)o(e)h(op)q(eration.)22
b(F)l(or)15 b(reasons)75 875 y(that)j(will)j(b)q(ecome)f(clear)g(later,)f(it)
h(is)f(preferable)i(to)d(return)h(this)h(information)f(in)h(a)f(separate)f
Ft(out)75 931 y FA(v)m(ariable,)d(rather)e(then)h(using)g(the)g
Ft(count)p FA(,)h Ft(source)f FA(and)f Ft(tag)h FA(parameters)f(b)q(oth)g
(for)g(input)i(and)f(output.)75 988 y(The)i(information)h(is)g(returned)f(b)o
(y)g(the)h Ft(status)h FA(parameter)d(of)h(the)g Ft(MPI)p 1357
988 14 2 v 16 w(RECV)h FA(function.)24 b(This)17 b(is)f(a)75
1044 y(parameter)e(of)g(a)h(sp)q(ecial)h(MPI-de\014ned)h(t)o(yp)q(e.)j(The)15
b(status)f(v)m(ariable)i(can)f(b)q(e)g(\\deco)q(ded")h(to)e(retriev)o(e)75
1101 y(the)h Ft(count)p FA(,)h Ft(source)g FA(and)f Ft(tag)h
FA(\014elds,)g(using)g(the)f(query)g(functions)h(listed)h(b)q(elo)o(w.)75
1204 y Ft(MPI)p 160 1204 V 16 w(GET)p 264 1204 V 17 w(SOURCE\(status,)h
(source\))117 1281 y Fs(IN)155 b Ft(status)476 b Fs(return)15
b(status)g(of)e(receiv)o(e)i(op)q(eration)f(\(Status\))117
1353 y(OUT)108 b Ft(source)468 b Fs(source)15 b(rank)f(\(in)o(teger\))166
1478 y FA(Returns)f(the)g(rank)g(of)f(the)h(message)f(source)h(in)h(the)f
(group)f(asso)q(ciated)h(with)g(the)g(comm)o(unicator)75 1534
y(that)h(w)o(as)h(used)h(to)e(receiv)o(e)i(\(remote)f(group,)f(for)h(in)o
(tercomm)o(unicators\).)75 1638 y Ft(MPI)p 160 1638 V 16 w(GET)p
264 1638 V 17 w(T)l(A)o(G\(status,)i(tag\))117 1715 y Fs(IN)155
b Ft(status)476 b Fs(return)15 b(status)g(of)e(receiv)o(e)i(op)q(eration)f
(\(Status\))117 1787 y(OUT)108 b Ft(tag)526 b Fs(message)14
b(tag)f(\(in)o(teger\))166 1912 y FA(Returns)j(the)f(tag)f(of)h(receiv)o(ed)h
(message.)75 2015 y Ft(MPI)p 160 2015 V 16 w(GET)p 264 2015
V 17 w(COUNT\(status,)h(count\))117 2092 y Fs(IN)155 b Ft(status)476
b Fs(return)15 b(status)g(of)e(receiv)o(e)i(op)q(eration)f(\(Status\))117
2164 y(OUT)108 b Ft(count)482 b Fs(n)o(um)o(b)q(er)13 b(of)h(receiv)o(ed)h
(elemen)o(ts)f(\(in)o(teger\))166 2289 y FA(Returns)h(the)f(n)o(um)o(b)q(er)h
(of)f(elemen)o(ts)h(receiv)o(ed.)21 b(\(Here,)14 b(again,)h(w)o(e)f(coun)o(t)
g Fq(elements)p FA(,)f(not)h Fq(bytes)p FA(.\))166 2345 y(The)20
b(information)f(returned)h(b)o(y)g(these)f(query)h(functions)g(is)g(the)g
(information)g(last)f(stored)g(in)75 2402 y(the)c Ft(status)i
FA(v)m(ariable)f(b)o(y)f(a)f(receiv)o(e)i(function.)21 b(It)15
b(is)g(erroneous)g(to)f(call)i(these)f(query)g(functions)h(if)f(the)75
2458 y Ft(status)i FA(v)m(ariable)g(w)o(as)d(nev)o(er)h(set)g(b)o(y)h(a)e
(receiv)o(e.)166 2515 y(Note)h(that)g(it)h(is)g(not)f(mandatory)g(to)g(query)
g(the)h(return)g(status)e(after)h(a)g(receiv)o(e.)22 b(The)16
b(receiv)o(er)75 2571 y(will)h(use)e(these)h(calls,)g(or)e(some)h(of)g(them,)
g(only)h(when)f(the)h(information)f(they)g(return)g(is)h(needed.)166
2704 y Fn(Discussion:)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)654 b FA(6)166 49 y Fs(The)17 b(use)g(of)e(a)h(separate)i(status)f
(parameter)f(prev)o(en)o(ts)i(errors)f(that)g(are)f(often)h(attac)o(hed)g
(with)e(INOUT)75 99 y(parameters)g(\(e.g.,)e(passing)i(the)30
b Fm(MPI)p 706 99 13 2 v 14 w(ANY)p 805 99 V 15 w(T)m(A)o(G)13
b Fs(constan)o(t)i(as)g(the)g(actual)f(argumen)o(t)g(for)g
Fm(tag)p Fs(\).)20 b(The)15 b(use)h(of)75 149 y(an)g(explicit)f(user)i(ob)r
(ject)g(b)q(ecomes)f(imp)q(ortan)o(t)f(for)g(non)o(blo)q(c)o(king)g(comm)o
(unication)e(as)j(it)f(allo)o(ws)g(the)i(receiv)o(e)75 199
y(op)q(eration)c(to)g(b)q(e)h(stateless)h(and,)d(hence,)i(reen)o(tran)o(t.)20
b(This)13 b(prev)o(en)o(ts)h(confusions)f(in)g(the)h(case)g(where)g(m)o
(ultiple)75 249 y(receiv)o(es)i(can)e(b)q(e)g(p)q(osted)h(b)o(y)f(a)f(pro)q
(cess.)166 464 y Fn(Implemen)o(tati)o(on)f(note:)166 520 y
Fs(One)j(exp)q(ects)g(deco)q(de)h(functions)e(to)f(b)q(e)i(in-lined)e(in)g
(man)o(y)f(implemen)o(tations.)166 659 y FA(All)18 b(send)f(and)f(receiv)o(e)
i(op)q(erations)e(use)h(the)g Ft(sta)o(rt)p FA(,)f Ft(count)p
FA(,)i Ft(datat)o(yp)q(e)p FA(,)g Ft(source)p FA(,)f Ft(dest)p
FA(,)h Ft(tag)p FA(,)e Ft(comm)75 716 y FA(and)g Ft(status)i
FA(parameters)d(in)i(the)f(same)f(w)o(a)o(y)g(as)h(the)g(basic)g
Ft(MPI)p 1204 716 14 2 v 16 w(SEND)g FA(and)g Ft(MPI)p 1524
716 V 16 w(RECV)h FA(op)q(erations)75 772 y(describ)q(ed)g(in)f(this)g
(section.)75 915 y Fx(1.4)59 b(Semantics)18 b(of)i(p)r(oint-to-p)r(oint)e
(communication)75 1017 y FA(A)g(v)m(alid)h(MPI)e(implemen)o(tation)i(guaran)o
(tees)e(certain)h(general)g(prop)q(erties)g(of)f(p)q(oin)o(t-to-p)q(oin)o(t)h
(com-)75 1073 y(m)o(unication,)e(whic)o(h)g(are)f(describ)q(ed)i(in)f(this)f
(section.)75 1193 y Ft(Order)46 b FA(Messages)14 b(are)h Fq(non-overtaking)p
FA(,)g(within)h(eac)o(h)f(con)o(text:)20 b(if)c(t)o(w)o(o)d(messages)i(are)g
(successiv)o(ely)75 1250 y(sen)o(t)10 b(from)g(the)g(same)g(source,)h(to)e
(the)i(same)f(destination,)h(with)g(the)f(same)g(con)o(text,)h(then)f(the)g
(messages)75 1306 y(are)17 b(receiv)o(ed)i(in)f(the)f(order)g(they)h(w)o(ere)
f(sen)o(t.)26 b(I.e.,)17 b(if)h(the)f(receiv)o(er)i(p)q(osts)e(t)o(w)o(o)f
(successiv)o(e)i(receiv)o(es)75 1363 y(that)g(b)q(oth)g(matc)o(h)g(either)i
(message,)e(then)h(the)f(\014rst)h(receiv)o(e)g(will)h(receiv)o(e)g(the)e
(\014rst)g(message,)h(and)75 1419 y(the)e(second)h(receiv)o(e)h(will)g
(receiv)o(e)f(the)f(second)h(message.)26 b(This)18 b(requiremen)o(t)g
(facilitates)g(matc)o(hing)75 1476 y(of)e(sends)h(to)f(receiv)o(es.)25
b(It)16 b(guaran)o(tees)g(that)g(message-passing)g(co)q(de)h(is)g
(deterministic,)i(if)e(pro)q(cesses)75 1532 y(are)e(single-threaded)i(and)e
(wildcard)31 b Fm(MPI)p 831 1532 13 2 v 14 w(ANY)p 930 1532
V 15 w(SOURCE)13 b FA(is)j(not)f(used)g(in)h(receiv)o(es.)166
1589 y(If)h(a)g(pro)q(cess)h(has)f(a)g(single)h(thread)f(of)g(execution,)i
(then)e(an)o(y)g(t)o(w)o(o)f(comm)o(unications)i(executed)75
1645 y(b)o(y)e(this)h(pro)q(cess)g(are)f(ordered.)23 b(On)17
b(the)f(other)g(hand,)h(if)g(the)f(pro)q(cess)h(is)g(m)o(ulti-threaded,)g
(then)g(the)75 1701 y(seman)o(tics)e(of)f(thread)h(execution)h(ma)o(y)e(not)g
(de\014ne)i(a)e(relativ)o(e)i(order)e(b)q(et)o(w)o(een)h(t)o(w)o(o)e(send)j
(op)q(erations)75 1758 y(executed)g(b)o(y)f(t)o(w)o(o)f(distinct)j(threads:)i
(the)d(op)q(erations)f(are)g(logically)i(concurren)o(t,)e(ev)o(en)h(though)f
(one)75 1814 y(ph)o(ysically)22 b(precedes)e(the)g(other.)33
b(In)20 b(suc)o(h)g(a)f(case,)i(the)e(t)o(w)o(o)g(messages)g(sen)o(t)g(can)h
(b)q(e)g(receiv)o(ed)h(in)75 1871 y(an)o(y)f(order.)37 b(Similarly)l(,)24
b(if)d(t)o(w)o(o)e(receiv)o(e)j(op)q(erations)f(that)f(are)g(logically)j
(concurren)o(t)e(receiv)o(e)g(t)o(w)o(o)75 1927 y(successiv)o(ely)i(sen)o(t)d
(messages,)h(then)g(the)g(t)o(w)o(o)f(messages)g(can)h(matc)o(h)f(the)h(t)o
(w)o(o)e(receiv)o(es)j(in)f(either)75 1984 y(order.)75 2104
y Ft(Progress)45 b FA(If)13 b(a)g(pair)g(of)f(matc)o(hing)h(send)h(and)f
(receiv)o(es)g(ha)o(v)o(e)g(b)q(een)h(initiated)g(on)f(t)o(w)o(o)e(pro)q
(cesses,)j(then)75 2160 y(at)k(least)h(one)h(of)e(these)h(t)o(w)o(o)f(op)q
(erations)h(will)i(complete,)f(indep)q(enden)o(tly)i(of)c(other)h(actions)g
(in)h(the)75 2217 y(system:)e(the)13 b(send)h(op)q(eration)f(will)h
(complete,)g(unless)g(the)f(receiv)o(e)h(is)f(satis\014ed)h(b)o(y)e(another)h
(message,)75 2273 y(and)h(completes;)g(the)g(receiv)o(e)h(op)q(eration)f
(will)h(complete,)g(unless)g(the)f(message)f(sen)o(t)g(is)i(consumed)f(b)o(y)
75 2330 y(another)h(matc)o(hing)g(receiv)o(e)h(that)f(w)o(as)f(p)q(osted)h
(at)g(the)g(same)g(destination)h(pro)q(cess.)75 2450 y Ft(F)o(airness)46
b FA(MPI)15 b(mak)o(es)g(no)g(guaran)o(tee)g(of)g Fq(fairness)f
FA(in)i(the)g(handling)h(of)e(comm)o(unication.)21 b(Supp)q(ose)75
2506 y(that)c(a)f(send)i(w)o(as)f(p)q(osted.)26 b(Then)18 b(it)f(is)h(p)q
(ossible)h(that)e(the)g(destination)h(pro)q(cess)g(rep)q(eatedly)g(p)q(osts)
75 2563 y(a)d(receiv)o(e)h(that)f(matc)o(hes)f(this)i(send,)g(y)o(et)e(the)i
(message)f(is)g(nev)o(er)h(receiv)o(ed,)g(b)q(ecause)g(it)g(is)f(eac)o(h)h
(time)75 2619 y(o)o(v)o(ertak)o(en)e(b)o(y)i(another)f(message,)g(sen)o(t)h
(from)f(another)g(source.)21 b(Similarly)l(,)d(supp)q(ose)f(that)e(a)g
(receiv)o(e)75 2675 y(w)o(as)f(p)q(osted)i(b)o(y)f(a)g(m)o(ulti-threaded)h
(pro)q(cess.)k(Then)c(it)f(is)h(p)q(ossible)h(that)d(messages)h(that)f(matc)o
(h)h(this)-32 46 y Fv(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: 7 9
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)654 b FA(7)75 49 y(receiv)o(e)20 b(are)g(rep)q(eatedly)g(receiv)o(ed,)i
(y)o(et)d(the)g(receiv)o(e)i(is)f(nev)o(er)f(satis\014ed,)i(b)q(ecause)f(it)g
(is)g(o)o(v)o(ertak)o(en)75 106 y(b)o(y)15 b(other)h(receiv)o(es)g(p)q(osted)
g(at)e(this)i(no)q(de)h(\(b)o(y)e(other)g(executing)h(threads\).)21
b(It)15 b(is)h(the)g(programmer's)75 162 y(resp)q(onsibilit)o(y)i(to)c(prev)o
(en)o(t)h(starv)m(ation)g(in)h(suc)o(h)g(situations.)75 282
y Ft(Resource)e(lim)o(itations)44 b FA(The)13 b(curren)o(t)f(practice)h(for)f
(man)o(y)g(commercial)i(message-passing)e(libraries)i(is)75
339 y(that)f(\(short\))f(messages)h(are)g(bu\013ered)g(b)o(y)h(the)f(system,)
g(th)o(us)g(allo)o(wing)h(blo)q(c)o(king)h(send)f(op)q(erations)g(to)75
395 y(complete)d(ahead)f(of)g(the)h(matc)o(hing)f(receiv)o(es.)19
b(It)11 b(is)f(exp)q(ected)i(that)e(man)o(y)f(MPI)i(implemen)o(tations)g
(will)75 452 y(follo)o(w)j(this)g(practice,)g(and)f(pro)o(vide)h(the)g(same)f
(lev)o(el)i(of)e(bu\013ering)h(that)f(is)h(a)o(v)m(ailable)h(on)f(the)f
(libraries)75 508 y(they)21 b(replace.)37 b(Ho)o(w)o(ev)o(er,)20
b(message)g(bu\013ering)h(is)h(not)e(a)g(univ)o(ersal)i(practice.)36
b(Ev)o(en)21 b(on)f(systems)75 564 y(where)e(bu\013ering)g(o)q(ccur,)g(the)f
(amoun)o(t)g(of)g(bu\013er)h(space)f(a)o(v)m(ailable)j(and)d(the)h(w)o(a)o(y)
e(it)i(is)g(allo)q(cated)g(is)75 621 y(b)q(ound)e(to)f(b)q(e)h(implemen)o
(tation)g(dep)q(enden)o(t.)166 677 y(Therefore,)24 b(message)e(bu\013ering)h
(is)g(not)f(mandated)g(b)o(y)g(MPI)h(and)f(is)h(seen)g(as)f(a)g(qualit)o(y)h
(of)75 734 y(implemen)o(tation)d(issue.)32 b(A)19 b(v)m(alid)i(MPI)e
(implemen)o(tation)h(of)f Ft(MPI)p 1285 734 14 2 v 15 w(SEND)h
FA(is)f(to)g(blo)q(c)o(k)g(the)g(sender)75 790 y(un)o(til)k(a)f(matc)o(hing)h
(receiv)o(e)g(has)f(b)q(een)h(initiated.)43 b(In)23 b(general,)h(the)e
(programmer)f(can)h(mak)o(e)g(no)75 847 y(assumptions)f(on)g(the)g(a)o(v)m
(ailabilit)o(y)j(of)c(bu\013er)h(space,)i(and)e(ho)o(w)f(this)i(space)f(is)h
(allo)q(cated.)38 b(Th)o(us,)75 903 y(p)q(ortable)14 b(\(safe\))e(MPI)h(co)q
(de)h(should)g(w)o(ork)f(under)h(the)f(assumption)g(that)g(an)g(arbitrary)g
(subset)g(of)g(the)75 960 y(send)18 b(op)q(erations)f(are)g(going)g(to)g
(return)g(b)q(efore)h(a)f(matc)o(hing)g(receiv)o(e)h(is)g(p)q(osted,)g(and)f
(the)g(rest)g(will)75 1016 y(blo)q(c)o(k)f(un)o(til)g(a)f(matc)o(hing)g
(receiv)o(e)i(is)e(p)q(osted.)166 1073 y(MPI)g(implemen)o(tation)i(will)h
(pro)o(vide)e(information)g(on)f(the)h(amoun)o(t)f(of)g(a)o(v)m(ailable)i
(bu\013er)f(space)75 1129 y(and)f(on)h(the)f(bu\013ering)h(p)q(olicy)g(via)g
(the)f(en)o(vironmen)o(tal)h(enquiries)h(describ)q(ed)g(in)f(Chapter)f
Fw(??)p FA(.)166 1186 y(Examples)h(\(in)o(v)o(olving)g(t)o(w)o(o)e(pro)q
(cesses)h(with)h(ranks)f(0)f(and)i(1\))166 1242 y(The)f(follo)o(wing)h
(program)e(is)i(safe,)f(and)g(should)h(alw)o(a)o(ys)f(succeed.)75
1392 y Fp(CALL)23 b(MPI_COMM_RANK\(comm,)f(rank,)h(ierr\))75
1449 y(IF)h(\(rank.EQ.0\))123 1505 y(THEN)170 1562 y(CALL)g
(MPI_SEND\(sendbuf,)d(count,)i(MPI_REAL,)g(1,)h(tag,)f(comm,)g(ierr\))170
1618 y(CALL)h(MPI_RECV\(recvbuf,)d(count,)i(MPI_REAL,)g(1,)h(tag,)f(comm,)g
(status,)g(ierr\))123 1675 y(ELSE)95 b(!)23 b(rank.EQ.1)170
1731 y(CALL)h(MPI_RECV\(recvbuf,)d(count,)i(MPI_REAL,)g(0,)h(tag,)f(comm,)g
(status,)g(ierr\))170 1787 y(CALL)h(MPI_SEND\(sendbuf,)d(count,)i(MPI_REAL,)g
(0,)h(tag,)f(comm,)g(ierr\))75 1844 y(END)g(IF)166 1938 y FA(The)15
b(follo)o(wing)h(program)e(is)i(erroneous,)f(and)g(should)h(alw)o(a)o(ys)f
(fail.)75 2088 y Fp(CALL)23 b(MPI_COMM_RANK\(comm,)f(rank,)h(ierr\))75
2144 y(IF)h(\(rank.EQ.0\))123 2201 y(THEN)170 2257 y(CALL)g
(MPI_RECV\(recvbuf,)d(count,)i(MPI_REAL,)g(1,)h(tag,)f(comm,)g(status,)g
(ierr\))170 2314 y(CALL)h(MPI_SEND\(sendbuf,)d(count,)i(MPI_REAL,)g(1,)h
(tag,)f(comm,)g(ierr\))123 2370 y(ELSE)95 b(!)23 b(rank.EQ.1)170
2427 y(CALL)h(MPI_RECV\(recvbuf,)d(count,)i(MPI_REAL,)g(0,)h(tag,)f(comm,)g
(status,)g(ierr\))170 2483 y(CALL)h(MPI_SEND\(sendbuf,)d(count,)i(MPI_REAL,)g
(0,)h(tag,)f(comm,)g(ierr\))75 2540 y(END)g(IF)166 2633 y FA(The)15
b(receiv)o(e)g(op)q(eration)g(of)f(the)h(\014rst)f(pro)q(cess)h(m)o(ust)f
(complete)i(b)q(efore)f(its)f(send,)h(and)g(can)g(com-)75 2690
y(plete)j(only)g(if)g(the)f(matc)o(hing)g(send)h(of)f(the)g(second)h(pro)q
(cessor)f(is)h(executed;)g(the)g(receiv)o(e)g(op)q(eration)-32
46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)654 b FA(8)75 49 y(of)14 b(the)h(second)g(pro)q(cess)g(m)o(ust)f
(complete)h(b)q(efore)g(its)f(send)i(and)e(can)h(complete)g(only)g(if)g(the)g
(matc)o(hing)75 106 y(send)h(of)f(the)g(\014rst)g(pro)q(cess)g(is)h
(executed.)21 b(This)15 b(program)f(will)j(deadlo)q(c)o(k.)166
162 y(The)10 b(follo)o(wing)h(program)f(is)g(unsafe,)h(and)g(ma)o(y)e
(succeed)j(or)e(fail,)h(dep)q(ending)i(on)d(implemen)o(tation.)75
325 y Fp(CALL)23 b(MPI_COMM_RANK\(comm,)f(rank,)h(ierr\))75
381 y(IF)h(\(rank.EQ.0\))123 438 y(THEN)170 494 y(CALL)g(MPI_SEND\(sendbuf,)d
(count,)i(MPI_REAL,)g(1,)h(tag,)f(comm,)g(ierr\))170 551 y(CALL)h
(MPI_RECV\(recvbuf,)d(count,)i(MPI_REAL,)g(1,)h(tag,)f(comm,)g(status,)g
(ierr\))123 607 y(ELSE)95 b(!)23 b(rank.EQ.1)170 664 y(CALL)h
(MPI_SEND\(sendbuf,)d(count,)i(MPI_REAL,)g(0,)h(tag,)f(comm,)g(ierr\))170
720 y(CALL)h(MPI_RECV\(recvbuf,)d(count,)i(MPI_REAL,)g(0,)h(tag,)f(comm,)g
(status,)g(ierr\))75 777 y(END)g(IF)166 939 y FA(The)11 b(message)g(sen)o(t)g
(b)o(y)g(eac)o(h)g(pro)q(cess)g(has)g(to)f(b)q(e)i(copied)g(out)f(b)q(efore)g
(the)g(send)h(op)q(eration)f(returns)75 996 y(and)k(the)g(receiv)o(e)h(op)q
(eration)f(starts.)k(F)l(or)14 b(the)h(program)f(to)g(complete,)h(it)h(is)f
(necessary)g(that)g(at)f(least)75 1052 y(one)i(of)g(the)h(t)o(w)o(o)d
(messages)i(sen)o(t)g(is)h(bu\013ered.)23 b(Th)o(us,)16 b(this)h(program)e
(can)i(succeed)g(only)g(if)g(the)f(MPI)75 1109 y(implemen)o(tation)e
(bu\013ers)f(messages,)g(and)g(the)g(comm)o(unication)h(system)f(has)g
(su\016cien)o(t)h(bu\013er)f(space)75 1165 y(to)i(bu\013er)g
Ft(count)h FA(w)o(ords)f(of)f(data.)75 1308 y Fx(1.5)59 b(Data)20
b(T)-5 b(yp)r(e)19 b(Matching)75 1410 y FA(One)d(can)f(think)h(of)f(message)g
(transmission)g(as)g(consisting)h(of)f(three)g(phases:)131
1504 y(1.)22 b(Data)14 b(is)h(pulled)j(out)d(of)f(the)i(send)f(bu\013er)h
(and)f(a)g(message)g(is)g(assem)o(bled)131 1597 y(2.)22 b(A)15
b(message)g(is)g(transferred)g(from)f(sender)i(to)f(receiv)o(er)131
1691 y(3.)22 b(Data)14 b(is)h(pulled)j(from)c(the)h(incoming)i(message)e(and)
g(disassem)o(bled)i(in)o(to)e(the)g(receiv)o(e)h(bu\013er)166
1785 y(T)o(yp)q(e)k(matc)o(hing)f(has)h(to)e(b)q(e)j(observ)o(ed)e(at)g(eac)o
(h)g(of)h(these)f(three)h(phases:)29 b(The)19 b(t)o(yp)q(e)h(of)f(eac)o(h)75
1841 y(v)m(ariable)i(in)f(the)g(sender)g(bu\013er)g(has)g(to)f(matc)o(h)g
(the)g(t)o(yp)q(e)h(sp)q(eci\014ed)i(for)d(that)g(en)o(try)g(b)o(y)h(the)f
(send)75 1898 y(op)q(eration;)d(the)f(t)o(yp)q(e)h(sp)q(eci\014ed)i(b)o(y)e
(the)f(send)i(op)q(eration)e(has)h(to)f(matc)o(h)g(the)h(t)o(yp)q(e)f(sp)q
(eci\014ed)j(b)o(y)e(the)75 1954 y(receiv)o(e)g(op)q(eration;)e(and)h(the)g
(t)o(yp)q(e)f(of)h(eac)o(h)f(v)m(ariable)i(in)g(the)e(receiv)o(e)i(bu\013er)f
(has)f(to)g(matc)o(h)g(the)h(t)o(yp)q(e)75 2011 y(sp)q(eci\014ed)f(for)e
(that)g(en)o(try)g(b)o(y)g(the)g(receiv)o(e)h(op)q(eration.)20
b(A)12 b(program)f(that)h(fails)h(to)e(observ)o(e)h(these)h(three)75
2067 y(rules)j(is)g(erroneous.)166 2124 y(T)l(o)f(de\014ne)i(t)o(yp)q(e)f
(matc)o(hing)g(more)f(precisely)l(,)j(w)o(e)d(need)i(to)e(deal)h(with)g(t)o
(w)o(o)f(issues:)22 b(matc)o(hing)15 b(of)75 2180 y(t)o(yp)q(es)e(of)g(the)h
(host)f(language)g(with)h(t)o(yp)q(es)g(sp)q(eci\014ed)h(in)f(comm)o
(unication)h(op)q(erations;)e(and)h(matc)o(hing)75 2237 y(of)h(t)o(yp)q(es)g
(at)g(sender)g(and)h(receiv)o(er.)166 2293 y(A)h(t)o(yp)q(e)f(sp)q(eci\014ed)
j(for)d(an)h(en)o(try)f(b)o(y)h(a)f(send)h(op)q(eration)g(matc)o(hes)f(the)h
(t)o(yp)q(e)g(sp)q(eci\014ed)i(for)d(that)75 2350 y(en)o(try)11
b(b)o(y)h(a)f(receiv)o(e)h(op)q(eration)g(if)g(b)q(oth)f(op)q(erations)h(use)
g(iden)o(tical)h(names:)36 b Ft(MPI)p 1500 2350 14 2 v 16 w(INTEGER)12
b FA(matc)o(hes)75 2406 y Ft(MPI)p 160 2406 V 16 w(INTEGER)p
FA(,)j Ft(MPI)p 475 2406 V 16 w(REAL)h FA(matc)o(hes)30 b Ft(MPI)p
891 2406 V 15 w(REAL)p FA(,)16 b(and)f(so)g(on.)166 2462 y(The)k(t)o(yp)q(e)g
(of)f(a)g(v)m(ariable)i(in)g(a)e(host)h(program)e(matc)o(hes)h(the)h(t)o(yp)q
(e)g(sp)q(eci\014ed)i(in)e(the)g(comm)o(u-)75 2519 y(nication)g(op)q(eration)
g(if)f(the)h(datat)o(yp)q(e)f(name)g(used)h(b)o(y)f(that)f(op)q(eration)i
(corresp)q(onds)f(to)g(the)g(basic)75 2575 y(t)o(yp)q(e)i(of)g(the)g(host)g
(program)f(v)m(ariable:)31 b(an)20 b(en)o(try)f(with)i(t)o(yp)q(e)f(name)40
b Ft(MPI)p 1449 2575 V 16 w(INTEGER)21 b FA(matc)o(hes)e(a)75
2632 y(F)l(ortran)c(v)m(ariable)j(of)f(t)o(yp)q(e)f Fp(INTEGER)p
FA(,)g(an)g(en)o(try)g(with)h(t)o(yp)q(e)g(name)g Ft(MPI)p
1368 2632 V 16 w(REAL)g FA(matc)o(hes)f(a)g(F)l(ortran)75 2688
y(v)m(ariable)j(of)e(t)o(yp)q(e)g Fp(REAL)p FA(,)f(and)i(so)f(on.)26
b(There)18 b(is)f(one)h(exception)g(to)f(this)h(last)f(rule:)25
b(An)18 b(en)o(try)f(with)-32 46 y Fv(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: 9 11
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)654 b FA(9)75 49 y(t)o(yp)q(e)18 b(name)37 b Ft(MPI)p
408 49 14 2 v 15 w(BYTE)19 b FA(can)f(b)q(e)h(used)g(to)e(matc)o(h)h(an)o(y)g
(b)o(yte)g(of)g(storage)e(\(on)i(a)g(b)o(yte-addressable)75
106 y(mac)o(hine\),)d(irresp)q(ectiv)o(e)i(of)d(the)h(datat)o(yp)q(e)g(of)f
(the)h(v)m(ariable)i(that)d(con)o(tains)h(this)g(b)o(yte.)20
b(The)15 b(v)m(alue)h(of)75 162 y(the)f(message)g(en)o(try)g(will)i(b)q(e)f
(the)f(binary)h(v)m(alue)g(of)f(the)g(corresp)q(onding)h(b)o(yte)f(in)h
(memory)l(.)166 219 y(W)l(e)f(th)o(us)g(ha)o(v)o(e)g(t)o(w)o(o)f(cases:)143
312 y Fl(\017)23 b FA(Comm)o(unication)11 b(of)f(t)o(yp)q(ed)i(v)m(alues)g
(\(e.g.,)e(with)h(datat)o(yp)q(e)g(di\013eren)o(t)g(from)21
b Ft(MPI)p 1586 312 V 16 w(BYTE)p FA(\),)11 b(where)189 369
y(the)k(datat)o(yp)q(es)f(of)g(the)h(corresp)q(onding)h(en)o(tries)f(in)h
(the)f(sender)g(program,)e(in)j(the)f(send)g(call,)h(in)189
425 y(the)f(receiv)o(e)h(call)g(and)g(in)g(the)f(receiv)o(er)h(program)e
(should)i(all)g(matc)o(h.)143 519 y Fl(\017)23 b FA(Comm)o(unication)16
b(of)g(un)o(t)o(yp)q(ed)h(v)m(alues)g(\(e.g.,)e(of)g(datat)o(yp)q(e)h
Ft(MPI)p 1330 519 V 16 w(BYTE)p FA(\),)g(where)g(b)q(oth)g(sender)189
576 y(and)g(receiv)o(er)h(use)f(the)g(datat)o(yp)q(e)g Ft(MPI)p
881 576 V 15 w(BYTE)p FA(.)h(In)f(this)h(case,)f(there)g(are)g(no)f
(requiremen)o(ts)i(on)189 632 y(the)d(t)o(yp)q(es)h(of)f(the)g(corresp)q
(onding)h(en)o(tries)g(in)h(the)e(sender)h(and)g(the)f(receiv)o(er)h
(programs,)e(nor)h(is)189 689 y(it)h(required)h(that)f(they)g(b)q(e)h(the)f
(same.)166 782 y(The)g(follo)o(wing)h(examples)g(illustrate)h(these)e(t)o(w)o
(o)f(cases.)166 839 y(First)h(program:)75 933 y Fp(CALL)23
b(MPI_COMM_RANK\(comm,)f(rank,)h(ierr\))75 989 y(IF\(rank.EQ.0\))123
1046 y(THEN)170 1102 y(CALL)h(MPI_SEND\(a\(1\),)e(10,)h(MPI_REAL,)g(1,)g
(tag,)h(comm,)f(ierr\))123 1158 y(ELSE)170 1215 y(CALL)h(MPI_RECV\(a\(1\),)e
(15,)h(MPI_REAL,)g(0,)g(tag,)h(comm,)f(status,)g(ierr\))75
1271 y(END)g(IF)166 1365 y FA(This)c(co)q(de)f(is)h(correct)e(if)i(b)q(oth)f
(sender)h(and)f(receiv)o(er)h(programs)d(ha)o(v)o(e)i(allo)q(cated)h
(consecutiv)o(e)75 1422 y(storage)14 b(for)h(ten)g(real)g(n)o(um)o(b)q(ers,)g
(starting)g(from)f Fp(a\(1\))p FA(.)166 1478 y(Second)i(program:)75
1572 y Fp(CALL)23 b(MPI_COMM_RANK\(comm,)f(rank,)h(ierr\))75
1628 y(IF\(rank.EQ.0\))123 1685 y(THEN)170 1741 y(CALL)h(MPI_SEND\(a\(1\),)e
(10,)h(MPI_REAL,)g(1,)g(tag,)h(comm,)f(ierr\))123 1798 y(ELSE)170
1854 y(CALL)h(MPI_RECV\(a\(1\),)e(40,)h(MPI_BYTE,)g(0,)g(tag,)h(comm,)f
(status,)g(ierr\))75 1911 y(END)g(IF)166 2004 y FA(This)d(co)q(de)g(is)f
(erroneous,)h(since)g(sender)g(and)g(receiv)o(er)g(do)f(not)f(pro)o(vide)i
(matc)o(hing)f(datat)o(yp)q(e)75 2061 y(parameters.)166 2117
y(Third)d(program:)75 2211 y Fp(CALL)23 b(MPI_COMM_RANK\(comm,)f(rank,)h
(ierr\))75 2268 y(IF\(rank.EQ.0\))123 2324 y(THEN)170 2381
y(CALL)h(MPI_SEND\(a\(1\),)e(40,)h(MPI_BYTE,)g(1,)g(tag,)h(comm,)f(ierr\))123
2437 y(ELSE)170 2493 y(CALL)h(MPI_RECV\(a\(1\),)e(60,)h(MPI_BYTE,)g(0,)g
(tag,)h(comm,)f(status,)g(ierr\))75 2550 y(END)g(IF)166 2644
y FA(This)16 b(co)q(de)f(is)h(correct,)f(irresp)q(ectiv)o(e)h(of)f(the)g(t)o
(yp)q(e)h(of)e Fp(a\(1\))h FA(and)g(follo)o(wing)h(v)m(ariables)h(in)f
(store.)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(10)166 49 y Fn(Discussion:)166 99 y Fs(The)15
b(b)q(eha)o(vior)f(of)g(erroneous)i(co)q(de)g(is)e(implemen)o(tation-dep)q
(enden)o(t.)k(It)d(is)g(desirable)g(but)g(not)f(required)75
149 y(that)i(errors)i(are)e(rep)q(orted)i(at)e(run-time.)24
b(An)16 b(MPI)g(implemen)o(tation)d(ma)o(y)h(decide)j(to)f(a)o(v)o(oid)f(t)o
(yp)q(e-c)o(hec)o(king)75 199 y(for)d(the)h(sak)o(e)f(of)g(e\016ciency)m(,)h
(in)f(whic)o(h)g(case)h(none)g(of)e(the)i(three)h(programs)d(will)g(rep)q
(ort)i(an)f(error.)19 b(On)12 b(a)g(system)75 249 y(where)f(real)g(n)o(um)o
(b)q(ers)f(o)q(ccup)o(y)h(four)f(b)o(ytes)h(and)f(b)q(oth)g(sender)i(and)e
(receiv)o(er)i(execute)g(in)e(the)h(same)f(en)o(vironmen)o(t,)75
298 y(it)k(is)f(lik)o(ely)g(that)h(all)e(three)k(co)q(des)f(will)d(ha)o(v)o
(e)i(the)g(same)f(b)q(eha)o(vior.)75 523 y Fx(1.6)59 b(Data)20
b(conversion)75 625 y FA(One)c(of)f(the)g(goals)g(of)g(MPI)g(is)h(to)e(supp)q
(ort)i(parallel)g(computations)f(across)g(heterogeneous)g(en)o(viron-)75
681 y(men)o(ts.)20 b(Comm)o(unication)15 b(in)h(a)f(heterogeneous)g(en)o
(vironmen)o(t)h(ma)o(y)e(require)i(data)f(con)o(v)o(ersions.)166
738 y(W)l(e)g(use)h(the)f(follo)o(wing)h(terminology:)75 828
y Fw(t)o(yp)q(e)h(con)o(v)o(ersion)22 b FA(c)o(hanges)16 b(the)h(datat)o(yp)q
(e)f(of)g(a)g(v)m(alue,)h(e.g.)23 b(b)o(y)17 b(rounding)g(a)f
Ft(REAL)h FA(to)f(an)g Ft(INTE-)189 884 y(GER)p FA(.)75 976
y Fw(represen)o(tation)h(con)o(v)o(ersion)22 b FA(c)o(hanges)16
b(the)h(binary)g(represen)o(tation)f(of)g(a)g(v)m(alue,)h(e.g.)23
b(from)16 b(Hex)189 1033 y(\015oating)f(p)q(oin)o(t)g(to)g(IEEE)g(\015oating)
h(p)q(oin)o(t.)166 1123 y(Represen)o(tation)d(con)o(v)o(ersion)g(is)h(needed)
g(when)f(data)f(is)i(mo)o(v)o(ed)e(across)g(di\013eren)o(t)h(en)o(vironmen)o
(ts,)75 1179 y(e.g.)19 b(di\013eren)o(t)d(mac)o(hines)g(that)e(use)i
(di\013eren)o(t)f(binary)h(enco)q(dings)h(for)d(the)i(same)e(datat)o(yp)q(e,)
h(or)f(co)q(des)75 1236 y(compiled)k(with)e(di\013eren)o(t)h(compiler)g
(options)f(for)g(datat)o(yp)q(e)f(represen)o(tation.)23 b(Represen)o(tation)
17 b(con-)75 1292 y(v)o(ersion)12 b(preserv)o(es,)g(to)f(the)h(greatest)f(p)q
(ossible)i(exten)o(t,)f(the)g Fw(v)m(alue)g FA(represen)o(ted.)19
b(Ho)o(w)o(ev)o(er,)11 b(rounding)75 1349 y(errors)k(and)g(o)o(v)o(er\015o)o
(w)f(and)i(under\015o)o(w)g(exceptions)g(ma)o(y)f(o)q(ccur)h(during)g
(\015oating)f(p)q(oin)o(t)h(con)o(v)o(ersions;)75 1405 y(con)o(v)o(ersion)k
(of)f(in)o(tegers)g(ma)o(y)g(also)h(lead)g(to)f(exceptions)i(when)f(a)f(v)m
(alue)i(that)d(can)i(represen)o(ted)g(in)75 1462 y(one)h(system)g(cannot)g(b)
q(e)g(represen)o(ted)h(in)g(the)f(other)f(system.)37 b(MPI)21
b(do)q(es)h(not)e(sp)q(ecify)j(rules)f(for)75 1518 y(represen)o(tation)15
b(con)o(v)o(ersion.)166 1574 y(The)e(t)o(yp)q(e)g(matc)o(hing)g(rules)g
(imply)h(that)e(MPI)h(comm)o(unication)h(nev)o(er)f(en)o(tails)g(t)o(yp)q(e)g
(con)o(v)o(ersion.)75 1631 y(On)20 b(the)f(other)f(hand,)i(MPI)f(requires)h
(that)e(a)h(represen)o(tation)g(con)o(v)o(ersion)g(b)q(e)h(p)q(erformed)f
(when)g(a)75 1687 y(t)o(yp)q(ed)i(v)m(alue)h(is)f(transferred)f(across)g(en)o
(vironmen)o(ts)h(that)f(use)h(di\013eren)o(t)f(represen)o(tations)h(for)f
(the)75 1744 y(datat)o(yp)q(e)15 b(of)h(this)g(v)m(alue.)24
b(An)16 b(exception)h(o)q(ccurring)g(during)g(represen)o(tation)f(con)o(v)o
(ersion)g(results)g(in)75 1800 y(a)f(failure)h(of)f(the)g(comm)o(unication;)g
(an)h(error)e(o)q(ccurs)h(either)h(in)g(the)f(send)h(op)q(eration,)f(or)g
(the)g(receiv)o(e)75 1857 y(op)q(eration,)g(or)g(b)q(oth.)166
1913 y(If)22 b(a)f(v)m(alue)i(sen)o(t)e(in)h(a)f(message)g(is)h(un)o(t)o(yp)q
(ed)h(\(i.e.,)f(of)f(t)o(yp)q(e)h Ft(MPI)p 1370 1913 14 2 v
15 w(BYTE)p FA(\),)g(then)g(the)f(binary)75 1970 y(represen)o(tation)15
b(of)f(the)h(b)o(yte)g(stored)f(at)g(the)h(receiv)o(er)h(is)f(iden)o(tical)i
(to)d(the)h(binary)h(represen)o(tation)e(of)75 2026 y(the)f(b)o(yte)g(loaded)
h(at)e(the)h(sender.)20 b(This)14 b(holds)f(true,)g(whether)g(sender)h(and)f
(receiv)o(er)h(run)f(in)h(the)f(same)75 2083 y(or)i(in)h(distinct)g(en)o
(vironmen)o(ts;)f(no)g(represen)o(tation)h(con)o(v)o(ersion)f(is)h(required.)
166 2139 y(Note)d(that)g(no)g(con)o(v)o(ersion)h(ev)o(er)f(o)q(ccurs)h(when)g
(an)f(MPI)g(program)g(executes)h(in)g(a)f(homogeneous)75 2195
y(system,)i(where)h(all)g(pro)q(cesses)g(run)g(in)g(the)g(same)f(en)o
(vironmen)o(t.)22 b(Also)16 b(note)f(the)h(di\013eren)o(t)f(b)q(eha)o(vior)75
2252 y(of)e Ft(MPI)p 210 2252 V 15 w(BYTE)h FA(and)f(of)g Ft(MPI)p
575 2252 V 15 w(CHAR)p FA(.)h(A)f(bu\013er)g(descriptor)g(en)o(try)g(with)g
(datat)o(yp)q(e)g(of)f Ft(MPI)p 1660 2252 V 16 w(CHAR)i FA(can)75
2308 y(only)f(matc)o(h)f(a)g(C)g(v)m(ariable)i(of)e(t)o(yp)q(e)h
Fp(CHAR)p FA(;)e(and)i(represen)o(tation)g(con)o(v)o(ersion)f(ma)o(y)g(o)q
(ccur)h(when)g(v)m(alues)75 2365 y(of)g(t)o(yp)q(e)h Ft(MPI)p
311 2365 V 15 w(CHAR)h FA(are)e(transferred.,)g(e.g.,)f(from)h(an)g(EBCDIC)h
(enco)q(ding)h(to)e(an)g(ASCI)q(I)i(enco)q(ding.)166 2421 y(Consider)h(the)f
(previous)h(three)f(examples.)166 2478 y(The)c(\014rst)f(program)f(is)i
(correct,)g(assuming)g(b)q(oth)f(sender)i(and)e(receiv)o(er)i(declared)f(ten)
g(consecutiv)o(e)75 2534 y(real)19 b(v)m(ariables)h(in)g(storage)e(starting)g
(at)g Fp(a\(1\))p FA(.)30 b(If)19 b(the)g(sender)h(and)f(receiv)o(er)g
(execute)h(in)g(di\013eren)o(t)75 2591 y(en)o(vironmen)o(ts,)12
b(then)f(the)g(ten)f(real)i(v)m(alues)f(that)g(are)f(fetc)o(hed)h(from)f(the)
h(send)h(bu\013er)e(will)j(b)q(e)e(con)o(v)o(erted)75 2647
y(to)g(the)h(represen)o(tation)f(for)g(reals)h(on)f(the)h(receiv)o(er)g(site)
g(b)q(efore)g(they)g(are)f(stored)g(in)h(the)g(receiv)o(e)g(bu\013er.)75
2704 y(While)19 b(the)e(n)o(um)o(b)q(er)h(of)f(real)g(elemen)o(ts)h(fetc)o
(hed)g(from)f(the)g(send)h(bu\013er)f(equal)i(the)e(n)o(um)o(b)q(er)h(of)f
(real)-32 46 y Fv(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: 11 13
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(11)75 49 y(elemen)o(ts)14 b(stored)e(in)i(the)f(receiv)o(e)h
(bu\013er,)f(the)g(n)o(um)o(b)q(er)g(of)g(b)o(ytes)g(stored)f(need)i(not)f
(equal)h(the)f(n)o(um)o(b)q(er)75 106 y(of)f(b)o(ytes)g(loaded:)19
b(e.g.)g(the)12 b(sender)h(ma)o(y)e(use)i(a)f(four)g(b)o(yte)g(represen)o
(tation)h(and)f(the)g(receiv)o(er)i(an)e(eigh)o(t)75 162 y(b)o(yte)17
b(represen)o(tation)h(for)f(reals.)27 b(If)18 b(the)g(send)g(or)f(receiv)o(e)
h(bu\013er)g(do)f(not)h(con)o(tain)f(ten)h(consecutiv)o(e)75
219 y(real)e(v)m(ariables,)g(then)f(the)g(program)g(is)g(erroneous,)g(and)g
(its)h(b)q(eha)o(vior)f(is)h(unde\014ned.)166 275 y(The)f(second)h(program)e
(is)i(erroneous,)f(and)g(its)g(b)q(eha)o(vior)h(is)g(unde\014ned.)166
332 y(The)e(third)g(program)e(is)i(correct.)19 b(The)13 b(exact)g(same)g
(sequence)i(of)e(fort)o(y)f(b)o(ytes)h(that)g(w)o(ere)g(loaded)75
388 y(from)18 b(the)h(send)h(bu\013er)f(will)i(b)q(e)e(stored)g(in)h(the)f
(receiv)o(e)h(bu\013er,)f(ev)o(en)h(if)f(sender)h(and)f(receiv)o(er)h(run)75
444 y(in)e(a)g(di\013eren)o(t)f(en)o(vironmen)o(t.)28 b(The)18
b(message)f(sen)o(t)g(has)h(exactly)f(the)h(same)f(length)i(\(in)f(b)o
(ytes\))f(and)75 501 y(the)f(same)f(binary)h(represen)o(tation)f(as)g(the)h
(message)f(receiv)o(ed.)22 b(If)16 b(the)f(v)m(ariables)i(in)f(the)g(send)g
(bu\013er)75 557 y(are)i(of)h(di\013eren)o(t)g(t)o(yp)q(es)g(as)f(the)h(v)m
(ariables)h(in)g(the)f(receiv)o(e)g(bu\013er,)h(or)e(they)h(are)f(of)h(the)f
(same)h(t)o(yp)q(e)75 614 y(but)e(di\013eren)o(t)g(data)g(represen)o(tations)
f(are)h(used,)h(then)f(the)g(bits)h(stored)e(in)i(the)f(receiv)o(e)h
(bu\013er)f(ma)o(y)75 670 y(enco)q(de)f(v)m(alues)h(that)d(are)h(di\013eren)o
(t)g(from)g(the)g(v)m(alues)h(they)g(enco)q(ded)g(in)g(the)g(send)f
(bu\013er.)166 727 y(Data)f(represen)o(tation)i(con)o(v)o(ersion)f(also)h
(applies)h(to)e(the)g(en)o(v)o(elop)q(e)i(of)e(a)g(message:)20
b(source,)15 b(des-)75 783 y(tination)h(and)f(tag)f(are)h(all)h(in)o(tegers)g
(that)e(ma)o(y)h(need)h(to)e(b)q(e)i(con)o(v)o(erted.)166 840
y(The)k(curren)o(t)g(draft)f(do)q(es)h(not)g(pro)o(vide)g(a)g(mec)o(hanism)h
(for)e(in)o(ter-language)i(comm)o(unication:)75 896 y(messages)d(sen)o(t)h(b)
o(y)f(F)l(ortran)g(calls)i(should)f(b)q(e)h(receiv)o(ed)g(b)o(y)e(F)l(ortran)
g(calls)h(and)g(messages)g(sen)o(t)f(b)o(y)75 953 y(C)e(calls)g(should)h(b)q
(e)g(receiv)o(ed)g(b)o(y)e(C)h(calls)h(\(this)f(follo)o(ws)f(from)h(the)f
(requiremen)o(ts)i(of)e(t)o(yp)q(e)h(matc)o(hing)75 1009 y(and)g(the)h(fact)f
(that)f(F)l(ortran)g(and)i(C)f(datat)o(yp)q(es)g(are)g(distinct\).)24
b(If)16 b(in)o(ter-language)h(comm)o(unication)75 1065 y(is)g(needed)i(then)e
(one)g(needs)h(to)e(in)o(v)o(ok)o(e)h(C)f(comm)o(unication)i(routines)f(from)
f(a)h(F)l(ortran)f(program)f(or)75 1122 y(F)l(ortran)f(comm)o(unication)i
(routines)g(from)e(a)h(C)g(program.)166 1254 y Fn(Implemen)o(tati)o(on)d
(note:)166 1304 y Fs(The)k(curren)o(t)i(de\014nition)e(do)q(es)h(not)f
(require)h(messages)f(to)g(carry)h(data)f(t)o(yp)q(e)g(information.)22
b(A)16 b(message)75 1354 y(can)c(b)q(e)h(comp)q(osed)f(and)g(sen)o(t)h(using)
f(only)g(the)h(information)c(pro)o(vided)j(b)o(y)g(the)h(send)g(call,)e(and)h
(can)h(b)q(e)g(receiv)o(ed)75 1404 y(and)k(stored)g(using)g(only)f(the)h
(information)d(pro)o(vided)j(b)o(y)g(the)g(receiv)o(e)h(call.)26
b(If)17 b(messages)g(are)g(sen)o(t)h(b)q(et)o(w)o(een)75 1454
y(di\013eren)o(t)c(mac)o(hines)f(then)g(one)h(can)f(either)h(use)g(a)f
(\\univ)o(ersal")g(data)g(enco)q(ding)g(for)g(messages,)g(use)h(kno)o(wledge)
75 1503 y(of)g(the)i(receiv)o(er)h(en)o(vironmen)o(t)d(in)g(order)i(to)f(con)
o(v)o(ert)h(data)e(at)h(the)h(sender,)h(or)e(use)g(kno)o(wledge)g(of)g(the)g
(sender)75 1553 y(en)o(vironmen)o(t)j(in)g(order)i(to)f(con)o(v)o(ert)g(data)
g(at)g(the)g(receiv)o(er.)35 b(In)19 b(either)g(case)h(the)g(datat)o(yp)q(e)f
(parameter)f(in)75 1603 y(the)f(lo)q(cal)f(call)g(can)g(b)q(e)h(used)h(to)e
(deriv)o(e)h(the)g(t)o(yp)q(es)h(of)e(the)h(v)n(alues)f(transferred.)28
b(Ho)o(w)o(ev)o(er,)17 b(additional)d(t)o(yp)q(e)75 1653 y(information)d
(carried)k(b)o(y)e(messages)h(can)g(pro)o(vide)g(b)q(etter)h(error)g
(detection.)166 1868 y Fn(Discussion:)166 1918 y Fs(MPI)f(do)q(es)h(not)f
(handle)g(in)o(ter-language)g(comm)o(unicatio)o(n)e(b)q(ecause)k(there)f
(seem)f(to)g(b)q(e)h(no)f(agreed)h(stan-)75 1968 y(dards)f(for)g(in)o
(ter-language)f(t)o(yp)q(e)h(con)o(v)o(ersions.)19 b(The)c(curren)o(t)g
(design)f(means)f(that)h(in)o(ter-language)f(comm)o(uni-)75
2017 y(cation)h(relies)g(on)g(the)g(v)o(endor)g(sp)q(eci\014c)i(rules)e(for)g
(in)o(ter-language)f(calls)g(at)h(eac)o(h)g(site.)75 2243 y
Fx(1.7)59 b(Communication)17 b(Mo)r(des)75 2345 y FA(The)12
b(basic)h(send)g(op)q(eration)g(describ)q(ed)h(in)f(Section)g(1.2)e(used)i
(the)f Fw(standard)h FA(comm)o(unication)g(mo)q(de.)75 2401
y(In)h(suc)o(h)g(a)f(comm)o(unication)h(mo)q(de,)g(a)f(send)h(op)q(eration)g
(can)f(b)q(e)h(started)f(whether)h(or)f(not)g(a)g(matc)o(hing)75
2458 y(receiv)o(e)g(w)o(as)e(p)q(osted.)20 b(The)12 b(completion)h(of)f(the)g
(send)h(op)q(eration)f(indicates)i(that)d(the)i(message)e(and)i(its)75
2514 y(en)o(v)o(elop)q(e)j(ha)o(v)o(e)e(b)q(een)i(safely)f(stored)f(a)o(w)o
(a)o(y)g(and)g(that)h(the)f(sender)i(is)f(free)g(to)f(access)h(and)g(mo)q
(dify)g(the)75 2571 y(sender)g(bu\013er.)k(Th)o(us,)14 b(the)g(op)q(eration)h
(is)f Fw(blo)q(c)o(king)p FA(:)21 b(it)14 b(do)q(es)h(not)e(return)i(un)o
(til)g(the)f(send)h(op)q(eration)75 2627 y(has)g(completed)h
Fw(lo)q(cally)p FA(,)h(on)f(the)f(sender)h(side.)166 2684 y(The)f(completion)
i(of)e(a)g(send)h(op)q(eration)f(giv)o(es)h(no)f(indication)i(that)e(the)g
(message)g(w)o(as)g(receiv)o(ed)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(12)75 49 y(on)15 b(the)h(receiv)o(er)g(side.)21
b(A)15 b(blo)q(c)o(king)i(send)f(ma)o(y)e(b)q(e)i(implemen)o(ted)h(so)e(that)
g(a)g(blo)q(c)o(king)h(send)g(returns)75 106 y(only)g(after)f(a)g(matc)o
(hing)g(receiv)o(e)h(has)g(b)q(een)g(executed)g(on)g(the)f(receiv)o(er)h
(side.)22 b(This)16 b(a)o(v)o(oids)f(the)g(need)75 162 y(to)i(bu\013er)g
(message)g(data)g(out)g(of)g(sender)h(or)f(receiv)o(er)h(memory)l(.)26
b(In)18 b(this)g(case)f(the)h(send)g(op)q(eration)75 219 y(completes)j(only)f
(after)f(the)h(matc)o(hing)g(receiv)o(e)h(has)f(started)f(executing.)35
b(On)20 b(the)g(other)g(hand,)h(it)75 275 y(is)g(also)f(p)q(ossible)i(for)e
(MPI)g(to)g(bu\013er)g(messages,)h(so)f(as)g(to)f(allo)o(w)i(the)f(sender)h
(to)f(pro)q(ceed)h(ahead)75 332 y(of)e(the)h(receiv)o(er.)35
b(In)20 b(suc)o(h)g(a)f(case)h(the)g(send)g(op)q(eration)g(ma)o(y)g(complete)
g(successfully)i(b)q(efore)e(the)75 388 y(message)c(w)o(as)g(receiv)o(ed.)26
b(Th)o(us,)16 b(the)h(basic)h(send)f(op)q(eration)g(describ)q(ed)h(in)g(the)f
(previous)g(section)g(is)75 444 y Fw(async)o(hronous)p FA(,)12
b(since)i(its)f(return)g(do)q(es)h(not)f(imply)h(a)f(sync)o(hronization)h
(with)f(the)g(\(remote\))f(receiv)o(e)75 501 y(op)q(eration,)j(and)g(do)q(es)
h(not)f(imply)h Fw(global)h FA(termination)f(of)f(the)g(comm)o(unication.)166
557 y(There)g(are)g(t)o(w)o(o)f(additional)j(comm)o(unication)f(mo)q(des:)166
614 y(A)h(send)g(that)f(uses)i(the)f Fw(ready)f FA(comm)o(unication)i(mo)q
(de)f(ma)o(y)f(b)q(e)h(started)g(only)g(if)g(a)g(matc)o(hing)75
670 y(receiv)o(e)d(is)f(already)g(p)q(osted;)g(otherwise)g(the)g(op)q
(eration)g(is)g(erroneous)f(and)h(its)g(outcome)f(is)h(unde\014ned.)75
727 y(In)19 b(some)f(systems,)h(this)f(allo)o(ws)h(the)f(remo)o(v)m(al)h(of)f
(a)g(hand-shak)o(e)h(op)q(eration)g(that)e(is)i(otherwise)g(re-)75
783 y(quired,)g(and)f(results)g(in)g(impro)o(v)o(ed)g(p)q(erformance.)27
b(The)18 b(completion)h(of)e(the)h(send)g(op)q(eration)g(do)q(es)75
840 y(not)e(dep)q(end)i(on)e(the)g(status)f(of)h(a)g(matc)o(hing)g(receiv)o
(e,)h(and)f(merely)h(indicates)h(that)d(the)h(send)h(bu\013er)75
896 y(can)i(b)q(e)g(reused.)30 b(A)19 b(send)g(op)q(eration)g(that)f(uses)g
(the)h(ready)f(mo)q(de)h(has)g(the)f(same)g(seman)o(tics)h(as)f(a)75
953 y(standard)g(send)h(op)q(eration.)29 b(It)18 b(is)h(merely)g(that)f(the)g
(sender)h(pro)o(vides)f(additional)i(information)f(to)75 1009
y(the)c(comm)o(unication)h(subsystem,)f(when)h(using)g(the)f(ready)g(mo)q
(de.)166 1065 y(A)j(send)g(that)f(uses)g(the)h Fw(sync)o(hronous)e
FA(mo)q(de)i(can)g(b)q(e)g(started)f(whether)g(or)g(not)h(a)f(matc)o(hing)75
1122 y(receiv)o(e)12 b(w)o(as)e(p)q(osted.)19 b(Ho)o(w)o(ev)o(er,)10
b(the)h(send)h(will)g(complete)g(successfully)h(only)f(if)f(a)g(matc)o(hing)g
(receiv)o(e)g(is)75 1178 y(p)q(osted,)h(and)g(the)g(receiv)o(e)g(op)q
(eration)g(has)f(started)g(to)g(receiv)o(e)i(the)e(message)g(sen)o(t)h(b)o(y)
f(the)h(sync)o(hronous)75 1235 y(send.)29 b(\(I.e.,)19 b(the)f(receiv)o(e)h
(has)f(b)q(een)h(p)q(osted,)g(and)g(the)f(incoming)h(message)f(has)g(b)q(een)
i(matc)o(hed)e(to)75 1291 y(this)g(p)q(osted)g(receiv)o(e.\))28
b(Th)o(us,)18 b(the)g(completion)g(of)g(a)f(sync)o(hronous)h(send)g(not)f
(only)i(indicates)g(that)75 1348 y(the)g(send)h(bu\013er)f(can)g(b)q(e)h
(reused,)g(but)f(also)g(indicates)i(that)d(the)i(receiv)o(er)f(has)g(reac)o
(hed)h(a)f(certain)75 1404 y(p)q(oin)o(t)e(in)h(its)f(execution,)h(namely)g
(that)e(it)h(has)g(started)f(executing)i(the)f(matc)o(hing)g(receiv)o(e.)26
b(If)17 b(b)q(oth)75 1461 y(sends)f(and)h(receiv)o(es)f(are)g(blo)q(c)o(king)
h(op)q(erations)f(then)h(the)f(use)g(of)f(the)h(sync)o(hronous)g(mo)q(de)g
(pro)o(vides)75 1517 y(sync)o(hronous)f(comm)o(unication)h(seman)o(tics:)k(a)
14 b(comm)o(unication)i(do)q(es)f(not)g(complete)g(at)g(either)g(ends)75
1574 y(b)q(efore)d(b)q(oth)g(pro)q(cesses)g(\\attend")f(to)g(the)h(comm)o
(unication;)h(the)f(completion)h(of)e(a)h(sync)o(hronous)f(send)75
1630 y(is)16 b(a)f Fw(global)i FA(ev)o(en)o(t.)166 1686 y(Tw)o(o)22
b(additional)j(send)e(functions)h(are)f(pro)o(vided)h(for)f(the)g(t)o(w)o(o)f
(additional)i(comm)o(unication)75 1743 y(mo)q(des.)32 b(The)19
b(comm)o(unication)h(mo)q(de)f(is)h(indicated)g(b)o(y)f(a)g(one)g(letter)h
(pre\014x:)28 b Fp(R)18 b FA(for)h(ready)g(and)g Fp(S)75 1799
y FA(for)c(sync)o(hronous.)166 1856 y(Send)h(in)g(ready)f(mo)q(de)75
1960 y Ft(MPI)p 160 1960 14 2 v 16 w(RSEND)h(\(sta)o(rt,)f(count,)h(datat)o
(yp)q(e,)g(dest,)g(tag,)f(comm)m(\))117 2037 y Fs(IN)155 b
Ft(sta)o(rt)501 b Fs(initial)12 b(address)j(of)f(send)g(bu\013er)h(\(c)o
(hoice\))117 2112 y(IN)155 b Ft(count)482 b Fs(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(in)h(send)h(bu\013er)f(\(in)o(teger\))117
2187 y(IN)155 b Ft(datat)o(yp)q(e)424 b Fs(datat)o(yp)q(e)14
b(of)g(eac)o(h)g(send)h(bu\013er)g(elemen)o(t)117 2262 y(IN)155
b Ft(dest)511 b Fs(rank)14 b(of)f(destination)h(\(in)o(teger\))117
2337 y(IN)155 b Ft(tag)526 b Fs(message)14 b(tag)f(\(in)o(teger\))117
2412 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)11 b(\(handle\))166
2537 y FA(Send)16 b(in)g(sync)o(hronous)f(mo)q(de)-32 46 y
Fv(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: 13 15
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(13)75 49 y Ft(MPI)p 160 49 14 2 v 16 w(SSEND)16
b(\(sta)o(rt,)e(count,)j(datat)o(yp)q(e,)f(dest,)g(tag,)f(comm)m(\))117
126 y Fs(IN)155 b Ft(sta)o(rt)501 b Fs(initial)12 b(address)j(of)f(send)g
(bu\013er)h(\(c)o(hoice\))117 202 y(IN)155 b Ft(count)482 b
Fs(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(send)h(bu\013er)f(\(in)o
(teger\))117 277 y(IN)155 b Ft(datat)o(yp)q(e)424 b Fs(datat)o(yp)q(e)14
b(of)g(eac)o(h)g(send)h(bu\013er)g(elemen)o(t)117 352 y(IN)155
b Ft(dest)511 b Fs(rank)14 b(of)f(destination)h(\(in)o(teger\))117
427 y(IN)155 b Ft(tag)526 b Fs(message)14 b(tag)f(\(in)o(teger\))117
502 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)11 b(\(handle\))166
627 y FA(There)16 b(is)g(only)g(one)g(receiv)o(e)h(mo)q(de,)e(whic)o(h)i(can)
f(matc)o(h)f(an)o(y)g(of)h(the)f(send)i(mo)q(des.)k(The)16
b(receiv)o(e)75 683 y(op)q(eration)g(describ)q(ed)h(in)g(the)e(last)h
(section)g(is)g Fw(blo)q(c)o(king)p FA(:)22 b(it)16 b(returns)f(only)h(after)
f(the)h(receiv)o(e)g(bu\013er)75 740 y(con)o(tains)h(the)h(newly)g(receiv)o
(ed)g(message.)26 b(It)17 b(is)h Fw(async)o(hronous)p FA(:)23
b(the)17 b(completion)i(of)d(a)h(receiv)o(e)h(is)75 796 y(a)e(lo)q(cal)i(op)q
(eration,)f(and)f(a)g(receiv)o(e)i(can)f(complete)g(b)q(efore)g(the)f(matc)o
(hing)h(send)g(has)f(completed)i(\(of)75 852 y(course,)d(it)g(can)h(complete)
g(only)f(after)g(the)g(matc)o(hing)g(send)h(has)f(started\).)166
909 y(Comm)o(unication)e(imp)q(oses)g(an)f(order)h(on)f(the)h(ev)o(en)o(ts)f
(o)q(ccurring)h(at)f(the)h(comm)o(unicating)g(no)q(des.)75
965 y(It)i(is)g(alw)o(a)o(ys)e(the)i(case)g(that)e(the)i(completion)h(of)e(a)
g(receiv)o(e)i(o)q(ccurs)e(after)g(the)h(start)e(of)h(the)h(matc)o(hing)75
1022 y(send.)29 b(If)19 b(the)f(sync)o(hronous)g(send)h(mo)q(de)f(is)h(used,)
g(then)g(it)f(is)h(also)f(the)g(case)g(that)g(the)g(completion)75
1078 y(of)i(a)h(send)g(o)q(ccurs)g(after)f(the)g(start)g(of)g(the)h(matc)o
(hing)f(receiv)o(e.)38 b(Of)20 b(course,)i(on)f(eac)o(h)f(pro)q(cess,)i(a)75
1135 y(comm)o(unication)14 b(completes)h(after)d(it)i(is)g(started.)19
b(No)13 b(other)h(order)f(is)h(imp)q(osed)h(b)o(y)e(MPI.)g(E.g.,)g(if)h(the)
75 1191 y(standard)h(send)g(mo)q(de)h(is)f(used,)h(the)f(send)h(op)q(eration)
f(ma)o(y)f(complete)i(b)q(efore)g(the)f(matc)o(hing)g(receiv)o(e)75
1248 y(w)o(as)f(started.)166 1304 y(In)h(a)f(m)o(ulti-threaded)i(implemen)o
(tation)g(of)e(MPI,)h(the)f(system)g(ma)o(y)g(desc)o(hedule)j(a)d(thread)h
(that)75 1361 y(is)g(blo)q(c)o(k)o(ed)h(on)f(a)g(send)g(or)f(receiv)o(e)i(op)
q(eration,)f(and)g(sc)o(hedule)i(another)d(thread)h(for)f(execution)i(in)g
(the)75 1417 y(same)f(address)h(space.)21 b(In)16 b(suc)o(h)g(a)f(case)g(it)h
(the)g(user)f(resp)q(onsibilit)o(y)j(not)d(to)g(mo)q(dify)h(the)g(send)g
(bu\013er)75 1473 y(un)o(til)k(the)f(send)h(completes)f(and)g(not)g(to)f
(access)h(or)g(mo)q(dify)g(the)g(receiv)o(e)h(bu\013er)f(un)o(til)h(the)f
(receiv)o(e)75 1530 y(completes;)c(otherwise)h(the)f(outcome)g(of)g(the)g
(computation)g(is)h(unde\014ned.)166 1662 y Fn(Implemen)o(tati)o(on)10
b(note:)34 b Fs(A)13 b(ready)f(send)h(can)f(b)q(e)h(implemen)o(ted)d(as)i(a)g
(standard)h(send;)g(in)e(suc)o(h)i(a)f(case)75 1712 y(there)j(will)e(b)q(e)h
(no)g(p)q(erformance)g(adv)n(an)o(tage)f(\(or)h(disadv)n(an)o(tage\))f(for)g
(the)i(use)f(of)g(ready)g(send.)166 1762 y(A)f(standard)h(send)h(can)e(b)q(e)
h(implemen)o(ted)e(as)h(a)g(sync)o(hronous)i(send.)j(In)c(suc)o(h)g(a)f
(case,)h(no)f(data)h(bu\013ering)75 1812 y(is)g(needed.)166
1862 y(A)g(p)q(ossible)g(comm)o(unication)c(proto)q(col)k(for)g(the)g(v)n
(arious)f(comm)o(unication)e(mo)q(des)i(is)h(outlined)f(b)q(elo)o(w:)166
1911 y Fk(ready)21 b(send)p Fs(:)c(The)d(message)g(is)f(sen)o(t)i(as)f(so)q
(on)g(as)g(p)q(ossible.)166 1961 y Fk(synchronous)19 b(send:)29
b Fs(The)20 b(sender)g(sends)h(a)e(request-to-send)j(message.)34
b(The)19 b(receiv)o(er)i(stores)g(this)75 2011 y(request.)f(When)15
b(a)f(matc)o(hing)e(receiv)o(e)j(is)f(p)q(osted,)h(the)g(receiv)o(er)h(sends)
f(bac)o(k)f(a)g(p)q(ermission-to-send)g(message,)75 2061 y(and)g(the)g
(sender)i(no)o(w)d(sends)i(the)g(message.)166 2111 y Fk(standard)20
b(send:)e Fs(First)d(proto)q(col)f(ma)o(y)e(b)q(e)j(used)h(for)d(short)i
(messages,)f(and)g(second)i(proto)q(col)e(for)g(long)75 2160
y(messages.)166 2210 y(Additional)h(con)o(trol)h(messages)h(migh)o(t)e(b)q(e)
i(needed)h(for)e(\015o)o(w)g(con)o(trol)h(and)f(error)i(reco)o(v)o(ery)m(.)27
b(Of)16 b(course,)75 2260 y(there)f(are)f(man)o(y)f(other)h(p)q(ossible)g(c)o
(hoices.)75 2486 y Fx(1.8)59 b(Nonblo)r(cking)20 b(communication)75
2587 y FA(One)e(can)g(impro)o(v)o(e)f(p)q(erformance)g(on)h(man)o(y)e
(systems)h(b)o(y)h(o)o(v)o(erlapping)f(comm)o(unication)i(and)e(com-)75
2644 y(putation.)35 b(This)21 b(is)g(esp)q(ecially)i(true)d(on)g(systems)g
(where)g(comm)o(unication)h(can)g(b)q(e)g(executed)g(au-)75
2700 y(tonomously)12 b(b)o(y)h(an)g(in)o(telligen)o(t)h(comm)o(unication)g
(con)o(troller.)19 b(Ligh)o(t-w)o(eigh)o(t)13 b(threads)f(are)h(one)g(mec)o
(h-)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(14)75 49 y(anism)21 b(for)g(ac)o(hieving)h(suc)o(h)g(o)o(v)o
(erlap.)37 b(An)21 b(alternativ)o(e)h(mec)o(hanism)g(that)e(often)h(leads)g
(to)g(b)q(etter)75 106 y(p)q(erformance)e(is)g(to)f(use)h Fw(non)o(blo)q(c)o
(king)j(comm)o(unication)p FA(.)32 b(A)19 b(non)o(blo)q(c)o(king)h(send)f
(call)h(initiates)75 162 y(the)15 b(send)h(op)q(eration,)f(but)h(do)q(es)f
(not)g(complete)h(it.)k(The)15 b(send)h(call)h(will)f(return)g(b)q(efore)f
(the)g(message)75 219 y(w)o(as)d(copied)h(out)f(of)g(the)g(send)h(bu\013er.)
19 b(A)13 b(separate)e(call)j(is)f(needed)g(to)f(complete)h(the)g(comm)o
(unication,)75 275 y(i.e.)20 b(to)13 b(v)o(erify)i(that)e(the)h(data)g(has)g
(b)q(een)h(copied)g(out)f(of)g(the)g(send)h(bu\013er.)k(With)c(suitable)g
(hardw)o(are,)75 332 y(the)k(transfer)f(of)h(data)f(out)h(of)g(the)g(sender)g
(memory)g(ma)o(y)f(pro)q(ceed)i(concurren)o(tly)g(with)f(computa-)75
388 y(tions)g(done)g(at)f(the)g(sender)h(after)f(the)h(send)g(w)o(as)f
(initiated)i(and)e(b)q(efore)h(it)g(completed.)31 b(Similarly)l(,)75
444 y(a)19 b(non)o(blo)q(c)o(king)h(receiv)o(e)g(initiates)h(the)e(receiv)o
(e)h(op)q(eration,)g(but)f(do)q(es)g(not)g(complete)h(it.)32
b(The)19 b(call)75 501 y(will)f(return)f(b)q(efore)g(a)f(message)g(is)i
(stored)e(in)o(to)g(the)h(receiv)o(e)h(bu\013er.)24 b(A)17
b(separate)f(call)h(is)h(needed)g(to)75 557 y(complete)f(the)f(receiv)o(e)i
(op)q(eration)e(and)g(v)o(erify)h(that)e(the)i(data)e(has)i(b)q(een)g(receiv)
o(ed)g(in)o(to)g(the)f(receiv)o(e)75 614 y(bu\013er.)k(With)14
b(suitable)h(hardw)o(are,)f(the)g(transfer)f(of)h(data)g(in)o(to)g(the)g
(receiv)o(er)h(memory)f(ma)o(y)f(pro)q(ceed)75 670 y(concurren)o(tly)f(with)g
(computations)f(done)g(after)g(the)g(receiv)o(e)h(w)o(as)f(initiated)i(and)e
(b)q(efore)h(it)f(completed.)75 727 y(The)17 b(use)h(of)f(non)o(blo)q(c)o
(king)h(receiv)o(es)g(ma)o(y)f(also)g(a)o(v)o(oid)g(system)f(bu\013ering)i
(and)f(memory)g(to)g(memory)75 783 y(cop)o(ying,)e(as)g(information)g(is)h
(pro)o(vided)g(early)g(on)f(the)g(lo)q(cation)h(of)f(the)g(receiv)o(e)h
(bu\013er.)166 840 y(Non)o(blo)q(c)o(king)g(sends)g(can)g(use)f(the)h(same)f
(three)g(mo)q(des)h(as)f(blo)q(c)o(king)h(sends:)21 b Fp(standard)p
FA(,)14 b Fp(ready)75 896 y FA(and)21 b Fp(synchronous)p FA(.)35
b(These)21 b(carry)g(the)g(same)f(meaning.)37 b(The)21 b(initiation)i(and)e
(completion)h(of)e(a)75 953 y(standard)e(send)i(do)f(not)f(dep)q(end)j(on)d
(the)h(status)f(of)h(a)f(matc)o(hing)h(receiv)o(e.)32 b(A)19
b(ready)g(send)g(can)g(b)q(e)75 1009 y(initiated)12 b(only)f(if)g(a)g(matc)o
(hing)f(receiv)o(e)i(has)e(already)h(b)q(een)h(initiated,)g(otherwise)f(the)g
(call)g(is)g(erroneous;)75 1065 y(its)18 b(completion)g(do)q(es)g(not)f(dep)q
(end)i(on)f(the)f(status)g(of)g(a)g(matc)o(hing)h(receiv)o(e.)27
b(A)18 b(sync)o(hronous)f(send)75 1122 y(can)f(b)q(e)h(initiated)h(b)q(efore)
f(a)f(matc)o(hing)g(receiv)o(e)h(has)f(b)q(een)i(initiated,)g(but)e(will)i
(complete)f(only)g(after)75 1178 y(a)f(matc)o(hing)f(receiv)o(e)i(has)f(b)q
(een)h(initiated,)g(and)f(has)g(started)f(receiving)j(the)e(message)f
(generated)h(b)o(y)75 1235 y(the)f(send)h(op)q(eration.)166
1291 y(In)f(all)h(cases)e(the)h(op)q(eration)g(that)f(initiates)i(the)f(comm)
o(unication)g(\(send)g(or)f(receiv)o(e\))i(is)f(a)f(lo)q(cal,)75
1348 y(non)o(blo)q(c)o(king)19 b(call)f(that)f(returns)g(as)g(so)q(on)g(as)g
(p)q(ossible.)29 b(Suc)o(h)18 b(call)g(ma)o(y)f(fail)h(b)q(ecause)g(b)q
(ecause)h(the)75 1404 y(system)f(has)h(exhausted)g(a)o(v)m(ailable)h
(resources)f(\(e.g.,)f(exceeded)i(the)f(limit)h(on)f(n)o(um)o(b)q(er)g(of)f
(p)q(ending)75 1461 y(comm)o(unications)c(p)q(er)g(no)q(de\).)19
b(Go)q(o)q(d)14 b(qualit)o(y)g(implemen)o(tations)g(of)f(MPI)h(will)h(set)e
(these)g(limits)i(high)75 1517 y(enough)h(so)e(that)h(a)g(non)o(blo)q(c)o
(king)h(comm)o(unication)g(initiation)h(call)g(will)g(fail)f(only)g(in)g
(\\pathological")75 1574 y(cases.)166 1630 y(Non)o(blo)q(c)o(king)g(sends)g
(can)f(b)q(e)h(matc)o(hed)f(with)h(blo)q(c)o(king)g(receiv)o(es,)g(and)f
(vice-v)o(ersa.)75 1752 y Fr(1.8.1)49 b(Comm)o(unication)14
b(Objects)75 1838 y FA(Non)o(blo)q(c)o(king)f(comm)o(unications)g(use)f
(opaque)g(comm)o(unication)h(ob)s(jects)f(to)f(iden)o(tify)i(comm)o
(unication)75 1894 y(op)q(erations)18 b(and)h(matc)o(h)e(the)i(op)q(eration)f
(that)f(initiates)j(the)e(comm)o(unication)h(with)f(the)h(op)q(eration)75
1950 y(that)e(terminates)i(it.)29 b(These)18 b(are)g(system)g(ob)s(jects)g
(that)f(are)h(accessed)h(via)f(a)g(handle.)30 b(An)19 b(opaque)75
2007 y(comm)o(unication)f(ob)s(ject)e(iden)o(ti\014es)j(v)m(arious)f(prop)q
(erties)f(of)g(a)g(comm)o(unication)h(op)q(eration,)f(suc)o(h)g(as)75
2063 y(the)g(\(send)g(or)f(receiv)o(e\))h(bu\013er)g(that)f(is)h(asso)q
(ciated)g(with)g(it,)g(its)g(con)o(text,)f(the)g(tag)g(and)h(destination)75
2120 y(parameters)c(to)f(b)q(e)j(used)f(for)e(a)i(send,)g(or)f(the)g(tag)g
(and)g(source)h(parameters)e(to)h(b)q(e)h(used)g(for)f(a)g(receiv)o(e.)75
2176 y(In)j(addition,)g(this)g(ob)s(ject)f(stores)f(information)i(ab)q(out)f
(the)g(status)g(of)g(the)g(p)q(ending)i(comm)o(unication)75
2233 y(op)q(eration)e(that)g(is)h(p)q(erformed)f(with)h(this)f(ob)s(ject.)75
2354 y Fr(1.8.2)49 b(Comm)o(unication)14 b(initiation)75 2440
y FA(W)l(e)k(use)g(the)g(same)g(naming)g(con)o(v)o(en)o(tions)g(as)f(for)g
(blo)q(c)o(king)j(comm)o(unication:)26 b(a)17 b(pre\014x)h(of)g
Fp(R)f FA(\()p Fp(S)p FA(\))g(is)75 2497 y(used)h(for)f Fp(READY)g
FA(\()p Fp(SYNCHRONOUS)p FA(\))f(mo)q(de.)27 b(In)19 b(addition)f(a)g
(pre\014x)g(of)f Fp(I)h FA(\(for)e Fp(IMMEDIATE)p FA(\))h(indicates)75
2553 y(that)d(the)i(call)g(is)g(non)o(blo)q(c)o(king.)166 2610
y(Initiate)g(a)f(standard)g(mo)q(de)g(non)o(blo)q(c)o(king)i(comm)o
(unication.)-32 46 y Fv(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: 15 17
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(15)75 49 y Ft(MPI)p 160 49 14 2 v 16 w(ISEND\(handle,)16
b(sta)o(rt,)f(count,)h(datat)o(yp)q(e,)g(dest,)h(tag,)d(comm)n(\))117
126 y Fs(OUT)108 b Ft(handle)465 b Fs(comm)o(unication)11 b(ob)r(ject)j
(\(handle\))117 202 y(IN)155 b Ft(sta)o(rt)501 b Fs(initial)12
b(address)j(of)f(send)g(bu\013er)h(\(c)o(hoice\))117 277 y(IN)155
b Ft(count)482 b Fs(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(send)h
(bu\013er)f(\(in)o(teger\))117 352 y(IN)155 b Ft(datat)o(yp)q(e)424
b Fs(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(send)h(bu\013er)g(elemen)o(t)117
427 y(IN)155 b Ft(dest)511 b Fs(rank)14 b(of)f(destination)h(\(in)o(teger\))
117 502 y(IN)155 b Ft(tag)526 b Fs(message)14 b(tag)f(\(in)o(teger\))117
577 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)11 b(\(handle\))166
702 y FA(Initiate)16 b(a)f(ready)g(mo)q(de)h(non)o(blo)q(c)o(king)g(comm)o
(unication.)75 805 y Ft(MPI)p 160 805 V 16 w(IRSEND\(handle,)g(sta)o(rt,)f
(count,)h(datat)o(yp)q(e,)h(dest,)f(tag,)f(comm)m(\))117 883
y Fs(OUT)108 b Ft(handle)465 b Fs(comm)o(unication)11 b(ob)r(ject)j
(\(handle\))117 958 y(IN)155 b Ft(sta)o(rt)501 b Fs(initial)12
b(address)j(of)f(send)g(bu\013er)h(\(c)o(hoice\))117 1033 y(IN)155
b Ft(count)482 b Fs(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(send)h
(bu\013er)f(\(in)o(teger\))117 1108 y(IN)155 b Ft(datat)o(yp)q(e)424
b Fs(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(send)h(bu\013er)g(elemen)o(t)117
1183 y(IN)155 b Ft(dest)511 b Fs(rank)14 b(of)f(destination)h(\(in)o(teger\))
117 1258 y(IN)155 b Ft(tag)526 b Fs(message)14 b(tag)f(\(in)o(teger\))117
1333 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)11 b(\(handle\))166
1458 y FA(Initiate)16 b(a)f(sync)o(hronous)g(mo)q(de)h(non)o(blo)q(c)o(king)g
(comm)o(unication.)75 1562 y Ft(MPI)p 160 1562 V 16 w(ISSEND\(handle,)g(sta)o
(rt,)f(count,)h(datat)o(yp)q(e,)h(dest,)f(tag,)f(comm)m(\))117
1639 y Fs(OUT)108 b Ft(handle)465 b Fs(comm)o(unication)11
b(ob)r(ject)j(\(handle\))117 1714 y(IN)155 b Ft(sta)o(rt)501
b Fs(initial)12 b(address)j(of)f(send)g(bu\013er)h(\(c)o(hoice\))117
1789 y(IN)155 b Ft(count)482 b Fs(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)
h(send)h(bu\013er)f(\(in)o(teger\))117 1864 y(IN)155 b Ft(datat)o(yp)q(e)424
b Fs(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(send)h(bu\013er)g(elemen)o(t)117
1939 y(IN)155 b Ft(dest)511 b Fs(rank)14 b(of)f(destination)h(\(in)o(teger\))
117 2014 y(IN)155 b Ft(tag)526 b Fs(message)14 b(tag)f(\(in)o(teger\))117
2090 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)11 b(\(handle\))166
2214 y FA(Initiate)16 b(a)f(non)o(blo)q(c)o(king)i(receiv)o(e.)-32
46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(16)75 49 y Ft(MPI)p 160 49 14 2 v 16 w(IRECV)15
b(\(handle,)h(sta)o(rt,)f(count,)h(datat)o(yp)q(e,)h(source,)e(tag,)g(comm)m
(\))117 126 y Fs(OUT)108 b Ft(handle)465 b Fs(comm)o(unication)11
b(ob)r(ject)j(\(handle\))117 202 y(OUT)108 b Ft(sta)o(rt)501
b Fs(initial)12 b(address)j(of)f(receiv)o(e)h(bu\013er)g(\(c)o(hoice\))117
277 y(IN)155 b Ft(count)482 b Fs(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h
(receiv)o(e)h(bu\013er)g(\(in)o(teger\))117 352 y(IN)155 b
Ft(datat)o(yp)q(e)424 b Fs(datat)o(yp)q(e)14 b(of)g(eac)o(h)g(receiv)o(e)h
(bu\013er)g(elemen)o(t)117 427 y(IN)155 b Ft(source)468 b Fs(rank)14
b(of)f(source)j(\(in)o(teger\))117 502 y(IN)155 b Ft(tag)526
b Fs(message)14 b(tag)f(\(in)o(teger\))117 577 y(IN)155 b Ft(comm)466
b Fs(comm)o(unicator)11 b(\(handle\))166 702 y FA(These)19
b(calls)h(allo)q(cate)f(a)f(comm)o(unication)i(ob)s(ject)e(and)h(asso)q
(ciates)f(it)h(with)g(the)g(handle.)32 b(The)75 758 y(handle)20
b(can)e(b)q(e)i(used)f(later)f(to)g(query)h(ab)q(out)f(the)h(status)f(of)g
(the)g(comm)o(unication)i(or)e(w)o(ait)g(for)g(its)75 815 y(completion.)166
871 y(A)f(non)o(blo)q(c)o(king)i(send)f(call)g(indicates)h(that)e(the)g
(system)g(ma)o(y)g(start)f(cop)o(ying)h(data)g(out)g(of)g(the)75
928 y(send)f(bu\013er.)21 b(The)15 b(sender)h(should)h(not)e(up)q(date)h(an)o
(y)f(part)g(of)g(the)g(send)h(bu\013er)g(after)f(a)g(non)o(blo)q(c)o(king)75
984 y(send)h(op)q(eration)f(returns,)g(un)o(til)h(the)g(send)f(completes.)166
1040 y(A)k(non)o(blo)q(c)o(king)i(receiv)o(e)f(call)g(indicates)h(that)e(the)
g(sytem)g(ma)o(y)f(start)g(writing)i(data)f(in)o(to)g(the)75
1097 y(receiv)o(e)c(bu\013er.)20 b(The)15 b(receiv)o(er)g(should)g(not)f
(access)h(or)f(up)q(date)h(an)o(y)f(part)f(of)h(the)h(receiv)o(e)g(bu\013er)g
(after)75 1153 y(a)g(non)o(blo)q(c)o(king)h(receiv)o(e)h(op)q(eration)e
(returns,)g(un)o(til)h(the)f(receiv)o(e)h(completes.)75 1275
y Fr(1.8.3)49 b(Comm)o(unication)14 b(Completion)75 1361 y
FA(The)j(functions)g Ft(MPI)p 452 1361 V 16 w(W)l(AIT)f FA(and)g
Ft(MPI)p 768 1361 V 16 w(TEST)h FA(are)f(used)h(to)f(complete)h(a)f(non)o
(blo)q(c)o(king)h(comm)o(unica-)75 1417 y(tion.)27 b(The)17
b(completion)i(of)e(a)g(send)h(op)q(eration)f(indicates)i(that)e(the)g
(sender)h(is)g(no)o(w)f(free)h(to)e(up)q(date)75 1474 y(the)h(lo)q(cations)h
(in)g(the)f(send)g(bu\013er,)h(or)e(an)o(y)h(other)f(lo)q(cation)i(that)e
(can)i(b)q(e)f(referenced)h(b)o(y)f(the)g(send)75 1530 y(op)q(eration)i
(\(the)g(send)g(op)q(eration)g(itself)h(lea)o(v)o(es)e(the)h(con)o(ten)o(t)f
(of)h(the)g(send)g(bu\013er)g(unc)o(hanged\).)31 b(It)75 1587
y(do)q(es)19 b(not)f(indicate)j(that)d(the)h(message)f(has)g(b)q(een)i
(receiv)o(ed;)i(rather,)c(it)h(ma)o(y)f(ha)o(v)o(e)h(b)q(een)h(bu\013ered)75
1643 y(b)o(y)f(the)g(comm)o(unication)h(subsystem.)32 b(Ho)o(w)o(ev)o(er,)19
b(if)h(a)f Fp(synchronous)f FA(mo)q(de)h(send)h(w)o(as)e(used,)j(the)75
1700 y(completion)c(of)e(the)g(send)h(op)q(eration)g(indicates)h(that)e(a)g
(matc)o(hing)g(receiv)o(e)i(w)o(as)d(initiated,)j(and)f(that)75
1756 y(the)f(message)g(will)i(ev)o(en)o(tually)f(b)q(e)g(receiv)o(ed)g(b)o(y)
f(this)h(matc)o(hing)f(receiv)o(e.)166 1813 y(The)20 b(completion)h(of)e(a)g
(receiv)o(e)i(op)q(eration)f(indicates)h(that)e(the)h(receiv)o(e)g(bu\013er)g
(con)o(tains)g(the)75 1869 y(receiv)o(ed)f(message,)f(and)g(that)f(the)h
(status)f(ob)s(ject)h(is)g(set;)h(the)f(receiv)o(er)h(is)f(no)o(w)f(free)h
(to)g(access)g(the)75 1925 y(receiv)o(e)c(bu\013er,)f(or)f(an)o(y)g(other)h
(lo)q(cation)h(that)e(can)h(b)q(e)g(referenced)h(b)o(y)f(the)g(receiv)o(e)g
(op)q(eration.)20 b(It)13 b(do)q(es)75 1982 y(not)g(indicate)i(that)d(the)i
(matc)o(hing)f(send)h(op)q(eration)g(has)f(completed)h(\(but)g(indicates,)g
(of)f(course,)h(that)75 2038 y(the)h(send)h(w)o(as)e(initiated\).)75
2142 y Ft(MPI)p 160 2142 V 16 w(W)l(AIT)h(\(handle,)h(status\))117
2219 y Fs(IN)155 b Ft(handle)465 b Fs(handle)14 b(to)g(comm)o(unicati)o(on)d
(ob)r(ject)117 2294 y(OUT)108 b Ft(status)476 b Fs(status)15
b(ob)r(ject)166 2419 y FA(A)g(call)h(to)f Ft(MPI)p 439 2419
V 16 w(W)l(AIT)g FA(returns)g(when)g(the)g(send)h(op)q(eration)f(iden)o
(ti\014ed)j(b)o(y)d Ft(handle)h FA(is)g(complete.)75 2475 y(If)e(the)f(comm)o
(unication)i(ob)s(ject)d(asso)q(ciated)i(with)g(this)g(handle)h(w)o(as)d
(created)i(b)o(y)f(a)h(non)o(blo)q(c)o(king)g(send)75 2532
y(or)19 b(receiv)o(e)i(call,)h(then)e(the)g(ob)s(ject)f(is)i(deallo)q(cated)g
(b)o(y)f(the)g(call)h(to)39 b Ft(MPI)p 1422 2532 V 16 w(W)l(AIT)20
b FA(and)g(the)g(handle)75 2588 y(b)q(ecomes)c(n)o(ull.)166
2645 y(The)h(call)g(returns)g(in)g Ft(status)h FA(information)f(on)f(the)h
(completed)g(op)q(eration.)24 b(The)17 b(status)f(ob)s(ject)75
2701 y(for)g(a)g(receiv)o(e)i(op)q(eration)f(can)g(b)q(e)g(queried)h(using)f
(the)g(functions)g(describ)q(ed)i(in)f(Section)f(1.3.1.)23
b(The)-32 46 y Fv(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: 17 19
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(17)75 49 y(status)15 b(parameter)g(is)i(not)e(used)i(or)e(up)q
(dated)i(for)e(a)h(send)g(op)q(eration,)g(and)g(an)g(arbitrary)g(v)m(alue)h
(ma)o(y)75 106 y(b)q(e)f(passed)f(for)g(this)h(parameter)e(in)i(the)f(call.)
75 209 y Ft(MPI)p 160 209 14 2 v 16 w(TEST)g(\(handle,)h(\015ag,)f(status\))
117 287 y Fs(IN)155 b Ft(handle)465 b Fs(handle)14 b(to)g(comm)o(unicati)o
(on)d(ob)r(ject)117 362 y(OUT)124 b Ft(\015ag)502 b Fs(logical)117
437 y(OUT)108 b Ft(status)476 b Fs(status)15 b(ob)r(ject)166
561 y FA(A)d(call)h(to)f Ft(MPI)p 430 561 V 15 w(TEST)h FA(returns)f
Ft(\015ag)g(=)g(true)h FA(if)f(the)g(op)q(eration)h(iden)o(ti\014ed)h(b)o(y)e
Ft(handle)h FA(is)g(complete.)75 618 y(In)j(suc)o(h)g(a)f(case,)h(the)f
(status)g(ob)s(ject)g(is)h(set)f(to)g(con)o(tain)h(information)f(on)h(the)g
(completed)g(op)q(eration;)75 674 y(if)e(the)g(comm)o(unication)g(ob)s(ject)g
(w)o(as)e(created)i(b)o(y)g(a)f(non)o(blo)q(c)o(king)i(send)g(or)e(receiv)o
(e,)h(then)g(it)g(is)h(deallo-)75 731 y(cated)h(and)g(the)h(handle)g(b)q
(ecomes)g(n)o(ull.)24 b(The)16 b(call)h(returns)f Ft(\015ag=false)p
FA(,)h(otherwise.)22 b(In)17 b(suc)o(h)g(a)e(case,)75 787 y(the)g(v)m(alue)i
(of)d(the)i(status)e(ob)s(ject)h(is)g(unde\014ned.)166 844
y Ft(MPI)p 251 844 V 16 w(TEST)g FA(is)h(a)f(lo)q(cal,)h(non)o(blo)q(c)o
(king)g(op)q(eration.)166 900 y(The)11 b(return)g(status)f(ob)s(ject)h(for)f
(a)h(receiv)o(e)h(op)q(eration)f(carries)g(information)g(that)g(can)g(b)q(e)g
(accessed)75 957 y(using)k(the)f(functions)h(describ)q(ed)h(in)g(Section)f
(1.3.1.)j(The)c(status)g(argumen)o(t)f(is)i(not)f(used)g(or)g(up)q(dated)75
1013 y(for)h(a)f(send)i(op)q(eration)g(and)f(an)g(arbitrary)g(v)m(alue)h(can)
f(b)q(e)h(passed)g(for)e(this)i(parameter)e(in)i(the)g(call.)166
1069 y(In)i(m)o(ulti-threaded)h(en)o(vironmen)o(t,)f(the)g(use)g(of)f(a)h
(blo)q(c)o(king)h(receiv)o(e)f(op)q(eration)g(\()g Ft(MPI)p
1732 1069 V 15 w(W)l(AIT)p FA(\))75 1126 y(ma)o(y)g(allo)o(w)i(the)f(op)q
(erating)g(system)g(to)g(de-sc)o(hedule)i(the)e(blo)q(c)o(k)o(ed)h(thread)f
(and)h(sc)o(hedule)g(another)75 1182 y(thread)j(for)g(execution,)j(if)e(suc)o
(h)g(is)f(a)o(v)m(ailable.)47 b(The)23 b(use)h(of)f(a)g(non)o(blo)q(c)o(king)
h(receiv)o(e)h(op)q(eration)75 1239 y(\()p Ft(MPI)p 178 1239
V 15 w(TEST)p FA(\))e(allo)o(ws)f(the)g(user)g(to)g(sc)o(hedule)i(alternativ)
o(e)e(activities)i(within)f(a)f(single)h(thread)f(of)75 1295
y(execution.)166 1352 y(Example:)75 1446 y Fp(CALL)h(MPI_COMM_RANK\(comm,)f
(rank,)h(ierr\))75 1502 y(IF\(rank.EQ.0\))123 1558 y(THEN)170
1615 y(CALL)h(MPI_ISEND\(handle,)d(a\(1\),)i(10,)h(MPI_REAL,)f(1,)g(tag,)g
(comm,)h(ierr\))170 1671 y(****)g(do)f(some)h(computation)e(to)i(mask)f
(latency)g(****)170 1728 y(CALL)h(MPI_WAIT\(handle,)d(status,)i(ierr\))123
1784 y(ELSE)170 1841 y(CALL)h(MPI_IRECV\(handle,)d(a\(1\),)i(15,)h(MPI_REAL,)
f(0,)g(tag,)g(comm,)h(ierr\))170 1897 y(****)g(do)f(some)h(computation)e(to)i
(mask)f(latency)g(****)170 1954 y(CALL)h(MPI_WAIT\(handle,)d(status,)i
(ierr\))75 2010 y(END)g(IF)166 2104 y FA(The)f(functions)h
Ft(MPI)p 554 2104 V 15 w(W)l(AIT)f FA(and)g Ft(MPI)p 881 2104
V 16 w(TEST)g FA(can)g(b)q(e)g(used)h(to)e(complete)h(b)q(oth)g(sends)h(and)
75 2160 y(receiv)o(es;)j(they)c(will)i(b)q(e)e(also)g(used)h(to)f(complete)g
(an)o(y)g(other)g(non)o(blo)q(c)o(king)h(comm)o(unication)g(call)75
2217 y(pro)o(vided)16 b(b)o(y)f(MPI.)75 2339 y Fr(1.8.4)49
b(Semantics)13 b(of)k(Nonblo)q(cking)h(Comm)o(unications)1875
2407 y Fo(C)n(H)-6 b(A)h(N)f(G)h(E)75 2424 y FA(The)11 b(seman)o(tics)f(of)h
(non)o(blo)q(c)o(king)g(comm)o(unication)h(is)f(de\014ned)h(b)o(y)e(suitably)
i(extending)g(the)e(de\014nitions)75 2481 y(in)16 b(Section)g(1.4)e(for)h
(order)g(and)g(progress.)166 2537 y(Non)o(blo)q(c)o(king)k(comm)o(unication)f
(op)q(erations)g(are)g(ordered)g(according)g(to)f(the)h(execution)h(order)75
2594 y(of)h(the)g(calls)h(that)e(initiate)j(the)e(comm)o(unication;)i(this)f
(de\014nes)g(the)f(meaning)h(of)e(non-o)o(v)o(ertaking)75 2650
y(comm)o(unication.)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(18)166 49 y(A)22 b(call)g(to)f Ft(MPI)p 458
49 14 2 v 16 w(W)l(AIT)h FA(that)f(completes)h(a)f(receiv)o(e)i(will)g(ev)o
(en)o(tually)g(terminate)e(and)h(return)75 106 y(if)f(a)f(matc)o(hing)g(send)
h(has)f(b)q(een)h(started,)g(unless)g(the)g(send)g(is)f(satis\014ed)h(b)o(y)f
(another)g(receiv)o(e.)36 b(In)75 162 y(particular,)20 b(if)f(the)g(matc)o
(hing)g(send)g(is)g(non)o(blo)q(c)o(king,)i(then)e(the)g(receiv)o(e)g(should)
h(complete)f(ev)o(en)g(if)75 219 y(no)c(call)i(is)e(executed)i(b)o(y)e(the)g
(sender)h(to)f(complete)h(the)f(send.)20 b(Similarly)l(,)e(a)d(call)h(to)f
Ft(MPI)p 1651 219 V 15 w(W)l(AIT)h FA(that)75 275 y(completes)i(a)e(send)i
(will)h(ev)o(en)o(tually)f(return)f(if)g(a)g(matc)o(hing)g(receiv)o(e)h(has)f
(b)q(een)h(started,)f(unless)h(the)75 332 y(receiv)o(e)e(is)g(satis\014ed)f
(b)o(y)g(another)g(send,)g(and)g(ev)o(en)h(if)f(no)g(call)h(is)g(executed)g
(to)e(complete)i(the)f(receiv)o(e.)166 388 y(If)i Ft(MPI)p
298 388 V 15 w(TEST)g FA(that)f(completes)h(a)f(receiv)o(e)i(is)f(rep)q
(eatedly)g(called)i(with)d(the)h(same)f(parameters,)75 444
y(and)e(a)g(matc)o(hing)g(send)g(has)g(b)q(een)h(started,)e(then)h(the)g
(call)h(will)g(ev)o(en)o(tually)g(return)f Ft(\015ag=true)p
FA(,)h(unless)75 501 y(the)i(send)g(is)g(satis\014ed)h(b)o(y)f(another)f
(receiv)o(e.)25 b(If)17 b Ft(MPI)p 1020 501 V 16 w(TEST)g FA(that)f
(completes)i(a)e(send)i(is)f(rep)q(eatedly)75 557 y(called)j(with)f(the)g
(same)f(parameters,)g(and)h(a)f(matc)o(hing)h(receiv)o(e)g(has)f(b)q(een)i
(started,)e(then)h(the)g(call)75 614 y(will)e(ev)o(en)o(tually)f(return)f
Ft(\015ag=true)p FA(,)h(unless)g(the)g(receiv)o(e)g(is)f(satis\014ed)h(b)o(y)
f(another)g(send.)166 670 y(Non)o(blo)q(c)o(king)g(comm)o(unications)g
(cannot)f(b)q(e)g(replaced)i(b)o(y)e(blo)q(c)o(king)h(comm)o(unications,)g
(ev)o(en)f(in)75 727 y(the)h Fp(synchronous)f FA(comm)o(unication)i(mo)q(de.)
k(Consider)c(the)f(follo)o(wing)h(example:)75 821 y Fp(CALL)23
b(MPI_COMM_RANK\(comm,)f(rank,)h(ierr\))75 877 y(IF\(rank.EQ.0\))123
933 y(THEN)170 990 y(CALL)h(MPI_ISEND\(handle1,)d(a\(1\),)i(count,)g
(MPI_REAL,)g(1,)h(tag1,)f(comm,)g(ierr\))170 1046 y(CALL)h
(MPI_ISEND\(handle2,)d(a\(2\),)i(count,)g(MPI_REAL,)g(1,)h(tag2,)f(comm,)g
(ierr\))170 1103 y(CALL)h(MPI_WAIT\(handle1,)d(status,)i(ierr\))170
1159 y(CALL)h(MPI_WAIT\(handle2,)d(status,)i(ierr\))123 1216
y(ELSE)170 1272 y(CALL)h(MPI_IRECV\(handle2,)d(a\(2\),)i(count,)g(MPI_REAL,)g
(0,)h(tag2,)f(comm,)g(ierr\))170 1329 y(CALL)h(MPI_IRECV\(handle1,)d(a\(1\),)
i(count,)g(MPI_REAL,)g(0,)h(tag1,)f(comm,)g(ierr\))170 1385
y(CALL)h(MPI_WAIT\(handle2,)d(status,)i(ierr\))170 1442 y(CALL)h
(MPI_WAIT\(handle1,)d(status,)i(ierr\))75 1498 y(END)g(IF)166
1592 y FA(The)16 b(co)q(de)g(is)g(guaran)o(teed)f(to)g(execute)h(correctly)l
(,)g(ev)o(en)g(in)g(an)g(implemen)o(tation)h(that)d(do)q(es)i(not)75
1648 y(bu\013er)d(messages)f(\(the)h(only)h(resource)f(requiremen)o(t)g(is)h
(the)f(abilit)o(y)h(to)e(ha)o(v)o(e)h(t)o(w)o(o)f(p)q(ending)i(comm)o(uni-)75
1705 y(cations\).)20 b(If)15 b(one)h(replaces)g(the)f(non)o(blo)q(c)o(king)i
(sends)f(\(receiv)o(es\))f(b)o(y)g(blo)q(c)o(king)i(sends)f(\(receiv)o(es\),)
f(and)75 1761 y(deletes)i(the)f(calls)g(to)f Ft(MPI)p 546 1761
V 16 w(W)l(AIT)p FA(,)h(then)g(the)f(co)q(de)i(will)g(deadlo)q(c)o(k.)22
b(The)16 b(co)q(de)h(will)g(also)f(deadlo)q(c)o(k)g(if)75 1818
y(one)i(deletes)i(the)e(calls)i(that)d(initiate)j(comm)o(unication)f(and)f
(replaces)h(eac)o(h)g(call)g(to)f Ft(MPI)p 1683 1818 V 16 w(W)l(AIT)g
FA(b)o(y)75 1874 y(the)d(appropriate)g(blo)q(c)o(king)i(send)f(or)f(receiv)o
(e.)75 1996 y Fr(1.8.5)49 b(Multiple)17 b(Completions)75 2082
y FA(It)23 b(is)h(con)o(v)o(enien)o(t)g(to)f(b)q(e)h(able)g(to)e(w)o(ait)h
(for)g(the)g(completion)i(of)d(an)o(y)h(or)g(all)h(the)g(op)q(erations)f(in)
75 2138 y(a)g(set,)h(rather)e(than)h(ha)o(ving)g(to)f(w)o(ait)h(for)f(a)g(sp)
q(eci\014c)j(message.)43 b(A)23 b(call)h(to)e Ft(MPI)p 1597
2138 V 16 w(W)l(AIT)l(ANY)h FA(or)75 2195 y Ft(MPI)p 160 2195
V 16 w(TEST)l(ANY)e FA(can)f(b)q(e)g(used)g(to)f(w)o(ait)h(for)f(the)h
(completion)g(of)g(one)g(out)f(of)g(sev)o(eral)h(op)q(erations;)75
2251 y(a)14 b(call)h(to)27 b Ft(MPI)p 347 2251 V 15 w(W)l(AIT)l(ALL)14
b FA(or)f Ft(MPI)p 701 2251 V 16 w(TEST)l(ALL)h FA(can)g(b)q(e)g(used)h(to)e
(w)o(ait)g(for)h(all)g(p)q(ending)i(op)q(erations)e(in)75 2307
y(a)h(list.)-32 46 y Fv(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: 19 21
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(19)75 49 y Ft(MPI)p 160 49 14 2 v 16 w(W)l(AIT)l(ANY)16
b(\(count,)g(a)o(rra)o(y)p 640 49 V 14 w(of)p 691 49 V 16 w(handles,)h
(index,)f(status\))117 126 y Fs(IN)155 b Ft(count)482 b Fs(list)14
b(length)f(\(in)o(teger\))117 202 y(IN)155 b Ft(a)o(rra)o(y)p
416 202 V 15 w(of)p 468 202 V 16 w(handles)285 b Fs(arra)o(y)14
b(of)f(handles)h(to)g(comm)o(unication)c(ob)r(jects)117 277
y(OUT)108 b Ft(index)489 b Fs(index)12 b(of)f(handle)g(for)g(op)q(eration)h
(that)f(completed)g(\(in)o(teger\))117 352 y(OUT)108 b Ft(status)476
b Fs(return)15 b(status)g(ob)r(ject)166 476 y FA(Blo)q(c)o(ks)j(un)o(til)g
(one)g(of)f(the)g(op)q(erations)h(asso)q(ciated)g(with)f(the)h(comm)o
(unication)g(handles)h(in)f(the)75 533 y(arra)o(y)13 b(has)i(completed.)21
b(Returns)15 b(the)g(index)h(of)e(that)g(handle)i(in)f(the)g(arra)o(y)l(,)f
(and)g(returns)h(the)g(status)75 589 y(of)g(that)f(op)q(eration)i(in)g(the)f
(ob)s(ject)g(asso)q(ciated)g(with)h(the)f(status.)166 646 y(The)20
b(execution)h(of)f Ft(MPI)p 614 646 V 16 w(W)l(AIT)l(ANY\(count,)j(a)o(rra)o
(y)p 1085 646 V 14 w(of)p 1136 646 V 16 w(handles,)g(index,)f(status\))f
FA(has)f(the)g(same)75 702 y(e\013ect)11 b(as)g(the)h(execution)g(of)23
b Ft(MPI)p 662 702 V 15 w(W)l(AIT\(a)o(rra)o(y)p 903 702 V
15 w(of)p 955 702 V 16 w(handles[i],)13 b(status\))p FA(,)h(where)d
Ft(i)g FA(is)h(the)g(v)m(alue)h(returned)75 759 y(b)o(y)21
b Ft(index)p FA(.)38 b(In)21 b(particular,)i(the)e(asso)q(ciated)g(comm)o
(unication)g(ob)s(ject)g(is)g(is)g(deallo)q(cated,)j(and)d(the)75
815 y(handle)15 b(to)f(it)g(in)h Ft(a)o(rra)o(y)p 469 815 V
15 w(of)p 521 815 V 16 w(handles)h FA(is)e(set)g(to)g(n)o(ull.)21
b(If)14 b(more)g(then)h(one)f(op)q(eration)g(is)h(enabled)g(and)g(can)75
872 y(terminate,)k(one)g(is)g(arbitrarily)g(c)o(hosen.)30 b(There)19
b(is)g(no)g(requiremen)o(t)g(that)f(the)g(c)o(hoice)i(satisfy)e(an)o(y)75
928 y(fairness)e(criterion.)75 1032 y Ft(MPI)p 160 1032 V 16
w(TEST)l(ANY\()g(count,)g(a)o(rra)o(y)p 641 1032 V 15 w(of)p
693 1032 V 16 w(handles,)g(index,)g(status\))117 1109 y Fs(IN)155
b Ft(count)482 b Fs(list)14 b(length)f(\(in)o(teger\))117 1184
y(IN)155 b Ft(a)o(rra)o(y)p 416 1184 V 15 w(of)p 468 1184 V
16 w(handles)285 b Fs(arra)o(y)14 b(of)f(handles)h(to)g(comm)o(unication)c
(ob)r(jects)117 1259 y(OUT)108 b Ft(index)489 b Fs(index)9
b(of)g(handle)g(for)g(op)q(eration)g(that)h(completed,)f(or)g
Fm(MPI)p 1839 1259 13 2 v 14 w(UNDEFINED)905 1316 y Fs(if)k(none)h(completed)
g(\(in)o(teger\))117 1391 y(OUT)108 b Ft(status)476 b Fs(return)15
b(status)g(ob)r(ject)166 1515 y FA(Causes)d(either)h(one)f(or)g(none)h(of)f
(the)g(op)q(erations)g(asso)q(ciated)h(with)f(the)h(comm)o(unication)g
(handles)75 1572 y(to)e(return.)19 b(In)13 b(the)f(former)f(case,)h(it)g
(returns)g(in)h Fp(index)e FA(the)h(index)h(of)f(its)g(handle)h(in)g(the)f
(arra)o(y)l(,)f(returns)75 1628 y(in)19 b Fp(status)e FA(the)h(status)f(of)h
(that)f(op)q(eration,)i(deallo)q(cates)g(the)f(asso)q(ciated)g(comm)o
(unication)h(ob)s(ject,)75 1685 y(and)13 b(sets)g(the)h(handle)g(to)f(n)o
(ull.)21 b(In)14 b(the)f(latter)g(case,)g(it)h(returns)f(a)g(v)m(alue)h(of)f
Fm(MPI)p 1467 1685 V 15 w(UNDEFINED)f FA(in)i Ft(index)75 1741
y FA(and)h Ft(status)j FA(is)d(unde\014ned.)1875 1770 y Fo(C)n(H)-6
b(A)h(N)f(G)h(E)166 1797 y FA(The)20 b(execution)h(of)f Ft(MPI)p
614 1797 14 2 v 15 w(TEST)l(ANY\(count,)j(a)o(rra)o(y)p 1085
1797 V 15 w(of)p 1137 1797 V 16 w(handles,)f(index,)g(status\))f
FA(has)f(the)g(same)75 1854 y(e\013ect)d(as)f(the)h(execution)h(of)f
Ft(MPI)p 678 1854 V 16 w(TEST\(a)o(rra)o(y)p 921 1854 V 14
w(of)p 972 1854 V 16 w(handles[i],)i(\015ag,)e(status\))p FA(,)h(for)f(all)h
Fp(i=0,)23 b(1)h(,)f(...)75 1910 y(,)h(count-1)p FA(,)18 b(in)h(some)g
(arbitrary)f(order,)h(un)o(til)h(one)e(call)i(returns)f Fp(flag=true)p
FA(,)f(or)g(all)h(fail.)32 b(In)19 b(the)75 1967 y(former)12
b(case,)h Fp(index)f FA(is)h(set)g(to)f(the)h(last)f(v)m(alue)i(of)f
Fp(i)p FA(;)g(in)g(the)g(later)g(case,)g(it)g(is)g(set)g(to)f
Fm(MPI)p 1618 1967 13 2 v 14 w(UNDEFINED)p FA(.)75 2071 y Ft(MPI)p
160 2071 14 2 v 16 w(W)l(AIT)l(ALL\()i(count,)i(a)o(rra)o(y)p
626 2071 V 15 w(of)p 678 2071 V 16 w(handles,)h(a)o(rra)o(y)p
958 2071 V 14 w(of)p 1009 2071 V 16 w(status\))117 2148 y Fs(IN)155
b Ft(count)482 b Fs(lists)14 b(length)g(\(in)o(teger\))117
2223 y(IN)155 b Ft(a)o(rra)o(y)p 416 2223 V 15 w(of)p 468 2223
V 16 w(handles)285 b Fs(arra)o(y)14 b(of)f(handles)h(to)g(comm)o(unication)c
(ob)r(jects)117 2298 y(OUT)108 b Ft(a)o(rra)o(y)p 416 2298
V 15 w(of)p 468 2298 V 16 w(status)313 b Fs(arra)o(y)14 b(of)f(status)i(ob)r
(jects)166 2422 y FA(Blo)q(c)o(ks)e(un)o(til)h(all)g(comm)o(unication)g(op)q
(erations)f(asso)q(ciated)g(with)g(handles)h(in)g(the)f(list)h(complete,)75
2479 y(and)j(return)g(the)g(status)f(of)h(all)h(these)f(op)q(erations.)26
b(Both)16 b(arra)o(ys)g(ha)o(v)o(e)h(the)g(same)f(n)o(um)o(b)q(er)i(of)e(v)m
(alid)75 2535 y(en)o(tries.)k(The)14 b Ft(i)p FA(-th)f(en)o(try)h(in)g
Ft(a)o(rra)o(y)p 679 2535 V 15 w(of)p 731 2535 V 16 w(status)h
FA(is)g(set)e(to)g(the)h(return)g(status)e(of)i(the)f Ft(i)p
FA(-th)h(op)q(eration.)20 b(All)75 2592 y(comm)o(unication)c(ob)s(jects)e
(are)h(deallo)q(cated)i(and)e(all)i(handles)f(are)f(set)g(to)f(n)o(ull.)1875
2621 y Fo(C)n(H)-6 b(A)h(N)f(G)h(E)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(20)166 49 y(The)20 b(execution)i(of)d Ft(MPI)p
614 49 14 2 v 16 w(W)l(AIT)l(ALL\(count,)j(a)o(rra)o(y)p 1072
49 V 14 w(of)p 1123 49 V 16 w(handles,)h(a)o(rra)o(y)p 1409
49 V 15 w(of)p 1461 49 V 16 w(status)f FA(has)e(the)g(same)75
106 y(e\013ect)d(as)h(the)g(execution)g(of)g Ft(MPI)p 682 106
V 16 w(W)l(AIT\(a)o(rra)o(y)p 924 106 V 14 w(of)p 975 106 V
16 w(handle[i],)h(a)o(rra)o(y)p 1277 106 V 15 w(of)p 1329 106
V 16 w(status[i]\))p FA(,)g(for)f Fp(i=0,)23 b(...)47 b(,)75
162 y(count-1)p FA(,)14 b(in)i(some)f(arbitrary)f(order.)75
266 y Ft(MPI)p 160 266 V 16 w(TEST)l(ALL\(count,)i(a)o(rra)o(y)p
613 266 V 14 w(of)p 664 266 V 16 w(handles,)h(\015ag,)d(a)o(rra)o(y)p
1040 266 V 15 w(of)p 1092 266 V 16 w(status\))117 343 y Fs(IN)155
b Ft(count)482 b Fs(lists)14 b(length)g(\(in)o(teger\))117
415 y(IN)155 b Ft(a)o(rra)o(y)p 416 415 V 15 w(of)p 468 415
V 16 w(handles)285 b Fs(arra)o(y)14 b(of)f(handles)h(to)g(comm)o(unication)c
(ob)r(jects)117 487 y(OUT)108 b Ft(\015ag)518 b Fs(\(logical\))117
559 y(OUT)108 b Ft(a)o(rra)o(y)p 416 559 V 15 w(of)p 468 559
V 16 w(status)313 b Fs(arra)o(y)14 b(of)f(status)i(ob)r(jects)166
684 y FA(Causes)f(either)g(all)h(or)f(none)g(of)f(the)i(op)q(erations)f(asso)
q(ciated)g(with)g(the)g(comm)o(unication)h(handles)75 740 y(to)c(complete.)19
b(It)11 b(returns)g Ft(\015ag)h(=)f(true)h FA(if)g(all)g(comm)o(unications)g
(asso)q(ciated)g(with)f(handles)i(in)f(the)f(arra)o(y)75 797
y(ha)o(v)o(e)18 b(completed.)31 b(In)19 b(this)h(case,)f(eac)o(h)f(status)g
(en)o(try)g(is)h(set)g(to)f(the)g(status)g(of)g(the)h(corresp)q(onding)75
853 y(comm)o(unication.)h(All)15 b(comm)o(unication)g(ob)s(jects)e(are)h
(deallo)q(cated,)h(and)f(all)h(handles)g(are)f(set)g(to)f(n)o(ull.)75
910 y(Otherwise,)g Ft(\015ag)g(=)g(false)f FA(is)h(returned,)g(no)g(handle)h
(is)f(mo)q(di\014ed)g(and)g(the)g(v)m(alues)g(of)f(the)h(status)f(en)o(tries)
75 966 y(are)j(unde\014ned.)22 b(This)15 b(is)h(a)f(non)o(blo)q(c)o(king)i
(op)q(eration)e(that)f(returns)h(immediately)l(.)166 1022 y(Example:)75
1157 y Fp(CALL)23 b(MPI_COMM_RANK\(comm,)f(rank,)h(ierr\))75
1214 y(IF\(rank)g(<)h(2\))123 1270 y(THEN)214 b(!)24 b(rank=0)f(or)g(rank=1)
170 1327 y(CALL)h(MPI_ISEND\(handle,)d(a,)j(n,)f(MPI_REAL,)g(2,)h(tag,)f
(comm,)g(ierr\))170 1383 y(****)h(do)f(some)h(computation)e(to)i(mask)f
(latency)g(****)170 1440 y(CALL)h(MPI_WAIT\(handle,)d(status,)i(ierr\))123
1496 y(ELSE)214 b(!)24 b(rank=2)170 1553 y(CALL)g
(MPI_IRECV\(handle_list\(0\))o(,)d(a,)j(n,)f(MPI_REAL,)g(0,)h(tag,)f(comm,)g
(ierr\))170 1609 y(CALL)h(MPI_IRECV\(handle_list\(1\))o(,)d(b,)j(n,)f
(MPI_REAL,)g(1,)h(tag,)f(comm,)g(ierr\))170 1665 y(****)h(do)f(some)h
(computation)e(to)i(mask)f(latency)g(****)170 1722 y(CALL)h(MPI_WAITANY\(2,)e
(handle_list,)g(index,)h(status,)g(ierr\))170 1778 y(IF\(index.EQ.0\))218
1835 y(THEN)266 1891 y(****)g(handle)g(message)g(from)g(process)g(0)h(****)
266 1948 y(CALL)f(MPI_WAIT\(handle_list\(1\),)e(status,)i(ierr\))266
2004 y(****)g(handle)g(message)g(from)g(process)g(1)h(****)218
2061 y(ELSE)266 2117 y(****)f(handle)g(message)g(from)g(process)g(1)h(****)
266 2174 y(CALL)f(MPI_WAIT\(handle_list\(0\),)e(status,)i(ierr\))266
2230 y(****)g(handle)g(message)g(from)g(process)g(0)h(****)170
2286 y(END)g(IF)75 2343 y(END)f(IF)166 2421 y FA(The)16 b(calls)h(in)o(tro)q
(duced)g(in)g(this)g(subsection)f(can)h(b)q(e)f(used)h(to)e(w)o(ait)h(or)f
(test)g(for)h(the)g(completion)75 2478 y(of)d(an)h(arbitrary)f(mix)h(of)f
(non)o(blo)q(c)o(king)i(comm)o(unication)g(calls,)f(including)j(a)c(mix)h
(sends)g(and)g(receiv)o(es)75 2534 y(and)h(of)g(an)o(y)g(additional)i(non)o
(blo)q(c)o(king)f(comm)o(unication)g(calls)g(pro)o(vided)g(b)o(y)f(MPI.)166
2591 y(The)d Ft(status)h FA(argumen)o(t)e(in)i Ft(MPI)p 715
2591 V 16 w(W)l(AIT)l(ANY)f FA(and)g Ft(MPI)p 1111 2591 V 16
w(W)l(AIT)l(ALL)f FA(and)h(the)g Ft(a)o(rra)o(y)p 1582 2591
V 15 w(of)p 1634 2591 V 16 w(status)h FA(argu-)75 2647 y(men)o(t)d(in)h
Ft(MPI)p 318 2647 V 16 w(W)l(AIT)l(ALL)f FA(and)g Ft(MPI)p
698 2647 V 16 w(TEST)l(ALL)g FA(are)g(not)g(used)g(or)g(up)q(dated)h(if)g
(the)f(completing)h(comm)o(u-)75 2704 y(nication)j(is)g(a)f(send.)20
b(If)13 b(all)i(op)q(erations)e(in)h(the)g(list)g(pro)o(vided)g(b)o(y)f(the)g
(argumen)o(t)g Ft(a)o(rra)o(y)p 1596 2704 V 14 w(of)p 1647
2704 V 16 w(handles)i FA(are)-32 46 y Fv(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: 21 23
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(21)75 49 y(send)15 b(op)q(erations,)g(then)g(an)f(arbitrary)g
(v)m(alue)i(can)f(b)q(e)g(passed)g(to)f(the)h Ft(status)i FA(\(resp.)34
b Ft(a)o(rra)o(y)p 1680 49 14 2 v 14 w(of)p 1731 49 V 16 w(status)p
FA(\))75 106 y(argumen)o(t.)1875 135 y Fo(C)n(H)-6 b(A)h(N)f(G)h(E)166
162 y FA(An)23 b Ft(a)o(rra)o(y)p 346 162 V 14 w(of)p 397 162
V 16 w(handles)h FA(argumen)o(t)e(that)f(is)i(passed)g(to)e(an)o(y)h(of)g
(the)g(last)h(four)f(functions)h(ma)o(y)75 219 y(con)o(tain)18
b(n)o(ull)h(en)o(tries.)29 b(These)18 b(en)o(tries)h(are)e(ignored)i(and)f
(the)g(call)h(executes)f(as)g(if)g(it)g(w)o(as)g(supplied)75
275 y(an)e(arra)o(y)e(of)h(handles)i(con)o(taining)g(only)f(the)g(non-n)o
(ull)h(en)o(tries.)22 b(As)16 b(a)f(handle)i(in)f Ft(a)o(rra)o(y)p
1623 275 V 15 w(of)p 1675 275 V 16 w(handles)h FA(is)75 332
y(set)c(to)g(n)o(ull)i(when)f(the)g(corresp)q(onding)g(op)q(eration)g
(completes,)g(this)g(allo)o(ws)g(to)f(reuse)g(the)h(same)f(arra)o(y)75
388 y(for)j(completing)h(in)g(successiv)o(e)g(calls)h(the)e(op)q(erations)g
(asso)q(ciated)h(with)f(this)h(arra)o(y)l(.)22 b(Th)o(us,)16
b(the)g(last)75 444 y(example)g(can)f(b)q(e)h(rewritten)f(as)g(follo)o(ws:)75
590 y Fp(CALL)23 b(MPI_COMM_RANK\(comm,)f(rank,)h(ierr\))75
647 y(IF\(rank)g(<)h(2\))123 703 y(THEN)214 b(!)24 b(rank=0)f(or)g(rank=1)170
760 y(CALL)h(MPI_ISEND\(handle,)d(a,)j(n,)f(MPI_REAL,)g(2,)h(tag,)f(comm,)g
(ierr\))170 816 y(CALL)h(MPI_WAIT\(handle,)d(status,)i(ierr\))123
872 y(ELSE)214 b(!)24 b(rank=2)170 929 y(CALL)g(MPI_IRECV\(handle_list\(0\))o
(,)d(a,)j(n,)f(MPI_REAL,)g(0,)h(tag,)f(comm,)g(ierr\))170 985
y(CALL)h(MPI_IRECV\(handle_list\(1\))o(,)d(b,)j(n,)f(MPI_REAL,)g(1,)h(tag,)f
(comm,)g(ierr\))170 1042 y(CALL)h(MPI_WAITANY\(2,)e(handle_list,)g(index,)h
(status,)g(ierr\))266 1098 y(****)g(handle)g(first)g(message)47
b(****)170 1155 y(CALL)24 b(MPI_WAITANY\(2,)e(handle_list,)g(index,)h
(status,)g(ierr\))266 1211 y(****)g(handle)g(second)g(message)47
b(****)166 1300 y FA(If)11 b Ft(MPI)p 292 1300 V 16 w(W)l(AIT)l(ANY)h
FA(or)f Ft(MPI)p 655 1300 V 16 w(TEST)l(ANY)h FA(are)f(called)i(with)e(an)g
(empt)o(y)g Ft(a)o(rra)o(y)p 1470 1300 V 15 w(of)p 1522 1300
V 16 w(handles)i FA(argumen)o(t)75 1357 y(\(i.e.,)k(an)g(arra)o(y)f(of)g
(length)i(zero,)f(or)f(an)h(arra)o(y)f(with)i(all)g(en)o(tries)f(n)o(ull\))h
(then)g(they)f(return)g(the)g(v)m(alue)75 1413 y Fm(MPI)p 152
1413 13 2 v 14 w(UNDEFINED)g FA(in)h Ft(index)p FA(;)i Ft(MPI)p
685 1413 14 2 v 16 w(W)l(AIT)l(ALL)d FA(with)h(an)f(empt)o(y)h
Ft(a)o(rra)o(y)p 1315 1413 V 14 w(of)p 1366 1413 V 16 w(handles)i
FA(argumen)o(t)d(has)g(no)75 1470 y(e\013ect;)e Ft(MPI)p 293
1470 V 15 w(TEST)l(ALL)h FA(with)f(an)g(empt)o(y)g Ft(a)o(rra)o(y)p
914 1470 V 15 w(of)p 966 1470 V 16 w(handles)i FA(argumen)o(t)d(returns)h
Ft(\015ag=true)p FA(.)75 1611 y Fx(1.9)59 b(Prob)r(e)20 b(and)f(Cancel)75
1712 y FA(The)d Ft(MPI)p 254 1712 V 16 w(PROBE)g FA(and)g Ft(MPI)p
605 1712 V 16 w(IPROBE)g FA(op)q(erations)g(allo)o(w)g(incoming)h(messages)e
(to)g(b)q(e)h(c)o(hec)o(k)o(ed)g(for,)75 1769 y(without)g(actually)h
(receiving)h(them.)k(The)17 b(user)f(can)g(then)h(decide)g(ho)o(w)f(to)g
(receiv)o(e)h(them,)f(based)g(on)75 1825 y(the)i(information)f(returned)h(b)o
(y)f(the)h(prob)q(e)g(\(basically)l(,)h(the)e(information)h(returned)g(b)o(y)
f Ft(status)p FA(\).)28 b(In)75 1882 y(particular,)16 b(the)g(user)g(ma)o(y)f
(allo)q(cate)h(memory)f(for)g(the)h(receiv)o(e)h(bu\013er,)e(according)h(to)f
(the)h(length)g(of)75 1938 y(the)f(prob)q(ed)h(message.)166
1994 y(The)h Ft(MPI)p 346 1994 V 16 w(CANCEL)g FA(op)q(eration)g(allo)o(ws)g
(p)q(ending)i(comm)o(unications)e(to)f(b)q(e)i(cancelled.)27
b(This)17 b(is)75 2051 y(required)j(for)f(clean)o(up.)33 b(P)o(osting)19
b(a)g(send)h(or)f(a)g(receiv)o(e)h(ties)f(up)h(user)f(resources)h(\(send)f
(or)g(receiv)o(e)75 2107 y(bu\013ers\),)14 b(and)i(a)f(cancel)h(ma)o(y)f(b)q
(e)g(needed)i(to)d(free)i(these)f(resources)g(gracefully)l(.)75
2211 y Ft(MPI)p 160 2211 V 16 w(IPROBE\(source,)h(tag,)f(comm)m(,)c(\015ag,)k
(status\))117 2288 y Fs(IN)155 b Ft(source)468 b Fs(source)15
b(rank,)f(or)27 b Fm(MPI)p 1281 2288 13 2 v 15 w(ANY)p 1381
2288 V 14 w(SOURCE)13 b Fs(\(in)o(teger\))117 2361 y(IN)155
b Ft(tag)526 b Fs(tag)14 b(v)n(alue)f(or)28 b Fm(MPI)p 1226
2361 V 14 w(ANY)p 1325 2361 V 15 w(T)m(A)o(G)12 b Fs(\(in)o(teger\))117
2434 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)11 b(\(handle\))117
2506 y(OUT)108 b Ft(\015ag)518 b Fs(\(logical\))117 2579 y(OUT)108
b Ft(status)476 b Fs(status)15 b(ob)r(ject)166 2704 y Ft(MPI)p
251 2704 14 2 v 16 w(IPROBE)k FA(returns)f Ft(\015ag)g(=)h(true)f
FA(if)h(there)g(is)f(a)g(message)g(that)g(can)g(b)q(e)h(receiv)o(ed)g(and)g
(that)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(22)75 49 y(matc)o(hes)16 b(the)h(pattern)f(sp)q(eci\014ed)j(b)
o(y)e(the)g(parameters)f Ft(source)p FA(,)h Ft(tag)p FA(,)g(and)g
Ft(comm)m FA(.)22 b(It)16 b(returns)h Ft(\015ag)g(=)75 106
y(false)p FA(,)d(otherwise.)19 b(If)14 b Ft(MPI)p 534 106 14
2 v 16 w(IPROBE)g FA(returns)f Ft(\015ag)g(=)h(true)p FA(,)g(then)g(the)f
(source)h(and)f(tag)g(of)g(the)g(message)75 162 y(matc)o(hed)g(are)g
(returned)h(in)g(the)f(status)g(ob)s(ject.)18 b(These)c(are)f(the)g(same)g(v)
m(alues)i(that)d(w)o(ould)i(ha)o(v)o(e)f(b)q(een)75 219 y(returned)j(b)o(y)f
(a)g(call)h(to)e Ft(MPI)p 584 219 V 16 w(RECV)i FA(executed)g(at)f(the)g
(same)g(p)q(oin)o(t)h(in)g(the)f(program.)166 275 y(These)22
b(v)m(alues)g(can)g(b)q(e)g(deco)q(ded)h(from)e(the)g(return)h(status)e(ob)s
(ject)h(using)i(the)e(status)g(query)75 332 y(functions)16
b(describ)q(ed)h(in)f(Section)g(1.3.1.)i(The)e(return)f(status)f(ob)s(ject)h
(is)h(unde\014ned)h(if)e Ft(\015ag)h(=)f(false)p FA(.)166 388
y Ft(MPI)p 251 388 V 16 w(GET)p 355 388 V 16 w(COUNT)f FA(cannot)e(b)q(e)h
(used)g(after)f(a)g(call)i(to)e Ft(MPI)p 1203 388 V 15 w(IPROBE)i
FA(to)e(query)g(on)h(the)f(length)h(of)75 444 y(the)g(prob)q(ed)h(message.)19
b(\(The)13 b(reason)f(is)i(that)e Ft(MPI)p 967 444 V 16 w(IPROBE)i
FA(do)q(es)g(not)e(carry)h(a)g(datat)o(yp)q(e)f(argumen)o(t,)75
501 y(and)f(the)g(message)g(t)o(yp)q(e)g(ma)o(y)f(not)h(b)q(e)h(kno)o(wn)e
(when)i(the)f(prob)q(e)h(is)f(executed.)20 b(On)11 b(the)g(other)g(hand,)h
(the)75 557 y(datat)o(yp)q(e)h(information)i(is)f(needed)h(to)f(compute)g
(the)g(n)o(um)o(b)q(er)g(of)g(elemen)o(ts)h(in)g(a)e(message.\))19
b(Instead,)75 614 y(a)14 b(di\013eren)o(t)g(status)g(deco)q(ding)h(function)h
(that)d(pro)o(vides)i(the)f(datat)o(yp)q(e)g(as)g(argumen)o(t)f(can)h(b)q(e)h
(used)g(in)75 670 y(this)h(case.)75 774 y Ft(MPI)p 160 774
V 16 w(PROBE)p 324 774 V 17 w(COUNT\(status,)i(datat)o(yp)q(e,)e(count\))117
851 y Fs(IN)155 b Ft(status)476 b Fs(status)15 b(ob)r(ject)117
926 y(IN)155 b Ft(datat)o(yp)q(e)424 b Fs(message)14 b(datat)o(yp)q(e)117
1001 y(OUT)108 b Ft(count)482 b Fs(n)o(um)o(b)q(er)13 b(of)h(en)o(tries)h(in)
e(message)h(\(in)o(teger\))166 1126 y FA(Returns)h(the)f(n)o(um)o(b)q(er)h
(of)f(elemen)o(ts)h(in)h(the)e(message)g(that)g(w)o(as)f(last)i(prob)q(ed)g
(with)g Ft(status)h FA(as)e(an)75 1182 y(argumen)o(t.)23 b(The)17
b(call)g(is)g(erroneous)g(if)g Ft(datat)o(yp)q(e)h FA(do)q(es)f(not)f(matc)o
(h)g(the)g(t)o(yp)q(e)h(of)f(the)h(message.)23 b(It)16 b(is)75
1239 y(erroneous)f(to)f(in)o(v)o(ok)o(e)g Ft(MPI)p 559 1239
V 16 w(PROBE)p 723 1239 V 18 w(COUNT)h FA(with)g(a)g Ft(status)h
FA(argumen)o(t)e(that)g(w)o(as)g(set)h(b)o(y)f(a)h(regular)75
1295 y(receiv)o(e)h(op)q(eration.)166 1352 y(A)d(subsequen)o(t)i(receiv)o(e)f
(executed)g(with)g(the)g(same)f(con)o(text,)g(and)g(the)h(source)f(and)h(tag)
f(returned)75 1408 y(b)o(y)j(the)g(call)i(to)d Ft(MPI)p 444
1408 V 16 w(IPROBE)i FA(will)h(receiv)o(e)f(the)g(message)e(that)h(w)o(as)f
(matc)o(hed)h(b)o(y)g(the)h(prob)q(e,)f(if)h(no)75 1465 y(other)11
b(in)o(terv)o(ening)h(receiv)o(e)g(o)q(ccurred)g(after)e(the)h(prob)q(e.)19
b(If)11 b(the)g(receiving)i(pro)q(cess)e(is)h(m)o(ulti-threaded,)75
1521 y(it)j(is)h(the)f(user)h(resp)q(onsibilit)o(y)h(to)e(ensure)h(that)e
(the)i(last)f(condition)h(holds.)166 1654 y Fn(Discussion:)166
1703 y Fs(MPI)f(guaran)o(tees)g(that)g(successiv)o(e)i(messages)e(sen)o(t)h
(from)d(a)h(source)i(to)f(a)f(destination)h(within)e(the)j(same)75
1753 y(con)o(text)21 b(are)g(receiv)o(ed)h(in)e(the)h(order)g(they)g(are)g
(sen)o(t.)39 b(Th)o(us,)22 b(MPI)e(m)o(ust)g(supp)q(ort,)i(either)g
(explicitly)d(or)75 1803 y(implicitly)l(,)13 b(a)i(FIF)o(O)g(structure)j(to)d
(manage)e(messages)j(b)q(et)o(w)o(een)h(eac)o(h)e(pair)g(of)g(pro)q(cesses,)j
(for)d(eac)o(h)h(con)o(text.)75 1853 y Fm(MPI)p 152 1853 13
2 v 14 w(PROBE)e Fs(returns)j(information)c(on)i(the)h(\014rst)h(matc)o(hing)
c(message)j(in)f(this)g(FIF)o(O;)h(this)f(will)f(also)h(b)q(e)h(the)75
1903 y(message)10 b(receiv)o(ed)h(b)o(y)f(the)h(\014rst)g(subsequen)o(t)h
(receiv)o(e)f(with)f(the)h(same)e(source,)j(tag)d(and)h(con)o(text)h(as)g
(the)f(message)75 1952 y(matc)o(hed)j(b)o(y)h Fm(MPI)p 377
1952 V 14 w(PROBE)p Fs(.)75 2139 y Ft(MPI)p 160 2139 14 2 v
16 w(PROBE\()i(source,)f(tag,)g(comm)m(,)d(status\))117 2216
y Fs(IN)155 b Ft(source)468 b Fs(source)15 b(rank,)f(or)27
b Fm(MPI)p 1281 2216 13 2 v 15 w(ANY)p 1381 2216 V 14 w(SOURCE)13
b Fs(\(in)o(teger\))117 2291 y(IN)155 b Ft(tag)526 b Fs(tag)14
b(v)n(alue,)e(or)28 b Fm(MPI)p 1237 2291 V 14 w(ANY)p 1336
2291 V 15 w(T)m(A)o(G)13 b Fs(\(in)o(teger\))117 2366 y(IN)155
b Ft(comm)466 b Fs(comm)o(unicator)11 b(\(handle\))117 2441
y(OUT)108 b Ft(status)476 b Fs(status)15 b(ob)r(ject)166 2566
y Ft(MPI)p 251 2566 14 2 v 16 w(PROBE)i FA(b)q(eha)o(v)o(es)g(lik)o(e)g
Ft(MPI)p 769 2566 V 16 w(IPROBE)g FA(except)g(that)f(it)g(is)h(a)f(blo)q(c)o
(king)i(call)f(whic)o(h)g(returns)75 2622 y(only)f(after)e(a)h(matc)o(hing)g
(message)g(has)g(b)q(een)h(found.)-32 46 y Fv(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: 23 25
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(23)75 49 y Ft(MPI)p 160 49 14 2 v 16 w(CANCEL\(handle\))117
126 y Fs(IN)155 b Ft(handle)465 b Fs(comm)o(unication)11 b(ob)r(ject)j
(\(handle\))166 251 y FA(A)j(call)h(to)e Ft(MPI)p 444 251 V
15 w(CANCEL)i FA(marks)e(for)g(cancellation)i(a)f(p)q(ending)h(non)o(blo)q(c)
o(king)g(comm)o(unication)75 307 y(op)q(eration)e(\(send)g(or)g(receiv)o
(e\).)23 b(The)16 b(cancel)h(call)g(is)g(non-blo)q(c)o(king,)g(and)f(lo)q
(cal.)24 b(It)16 b(returns)f(immedi-)75 364 y(ately)l(,)g(p)q(ossibly)i(b)q
(efore)e(the)h(comm)o(unication)g(is)f(actually)h(cancelled.)166
420 y(It)c(is)g(still)h(necessary)f(to)g(complete)g(a)g(comm)o(unication)g
(that)f(has)h(b)q(een)h(mark)o(ed)e(for)h(cancellation,)75
477 y(using)i(a)g(call)h(to)e Ft(MPI)p 450 477 V 15 w(W)l(AIT)h
FA(or)f Ft(MPI)p 728 477 V 16 w(TEST)h FA(\(or)f(an)o(y)g(of)g(the)h(deriv)o
(ed)h(op)q(erations\).)k(If)14 b(the)g(op)q(eration)75 533
y(has)20 b(b)q(een)h(cancelled,)i(then)d(information)g(ab)q(out)g(to)f(that)h
(e\013ect)f(will)j(b)q(e)f(returned)f(in)h(the)f(status)75
590 y(argumen)o(t)10 b(of)g(the)h(op)q(eration)g(that)f(completes)h(the)g
(comm)o(unication.)19 b(If)11 b(a)g(comm)o(unication)g(is)g(mark)o(ed)75
646 y(for)20 b(cancellation,)i(then)f(a)f Ft(MPI)p 655 646
V 15 w(W)l(AIT)h FA(call)g(for)e(that)h(comm)o(unication)h(is)f(guaran)o
(teed)g(to)f(return,)75 703 y(irresp)q(ectiv)o(e)f(of)e(the)h(activities)h
(of)e(other)h(pro)q(cesses;)g(similarly)i(if)e Ft(MPI)p 1347
703 V 15 w(TEST)g FA(is)h(rep)q(eatedly)f(called)75 759 y(in)23
b(a)f(busy)g(w)o(ait)f(lo)q(op)i(for)e(a)h(cancelled)i(comm)o(unication,)g
(then)f Ft(MPI)p 1363 759 V 15 w(TEST)g FA(will)g(ev)o(en)o(tually)g(b)q(e)75
815 y(successful.)166 872 y(Either)c(the)f(cancellation)i(succeeds,)f(or)f
(the)g(comm)o(unication)h(succeeds,)h(but)e(not)g(b)q(oth.)29
b(If)18 b(a)75 928 y(send)h(is)h(mark)o(ed)e(for)g(cancellation,)j(then)e(it)
g(m)o(ust)f(b)q(e)i(the)f(case)g(that)f(either)h(the)g(send)g(completes)75
985 y(normally)l(,)f(in)h(whic)o(h)f(case)f(the)h(message)f(sen)o(t)g(w)o(as)
g(receiv)o(ed)h(at)f(the)h(destination)g(pro)q(cess,)g(or)f(that)75
1041 y(the)e(send)h(is)f(successfully)i(cancelled,)g(in)e(whic)o(h)h(case)f
(no)g(part)f(of)h(the)g(message)f(w)o(as)g(receiv)o(ed)j(at)d(the)75
1098 y(destination.)21 b(Then,)15 b(an)o(y)f(matc)o(hing)h(receiv)o(e)h(has)e
(to)h(b)q(e)g(satis\014ed)h(b)o(y)e(another)h(send.)20 b(If)15
b(a)g(receiv)o(e)g(is)75 1154 y(mark)o(ed)d(for)f(cancellation,)k(then)d(it)h
(m)o(ust)e(b)q(e)i(the)g(case)f(that)f(either)i(the)g(receiv)o(e)g(completes)
g(normally)l(,)75 1211 y(or)k(that)g(the)h(receiv)o(e)h(is)f(successfully)i
(cancelled,)g(in)f(whic)o(h)f(case)g(no)g(part)f(of)g(the)h(receiv)o(e)h
(bu\013er)e(is)75 1267 y(altered.)j(Then,)c(an)o(y)e(matc)o(hing)i(send)g
(has)f(to)f(b)q(e)i(satis\014ed)g(b)o(y)f(another)g(receiv)o(e.)75
1371 y Ft(MPI)p 160 1371 V 16 w(TEST)p 290 1371 V 16 w(CANCELLED\(status,)i
(\015ag\))117 1448 y Fs(IN)155 b Ft(status)476 b Fs(status)15
b(ob)r(ject)117 1523 y(IN)155 b Ft(\015ag)518 b Fs(\(logical\))166
1648 y FA(Returns)11 b Ft(\015ag)f(=)h(true)g FA(if)g(the)f(comm)o(unication)
h(asso)q(ciated)g(with)f(the)h(status)e(ob)s(ject)h(w)o(as)g(cancelled)75
1704 y(successfully)l(.)27 b(In)18 b(suc)o(h)f(a)g(case,)g(all)g(other)g
(\014elds)h(of)e Ft(status)j FA(\(suc)o(h)e(as)g Ft(count)h
FA(or)e Ft(tag)p FA(\))h(are)f(unde\014ned.)75 1761 y(Returns)h
Ft(\015ag)g(=)f(false)p FA(,)h(otherwise.)24 b(If)17 b(a)g(receiv)o(e)g(op)q
(eration)g(migh)o(t)f(b)q(e)h(cancelled)i(then)e(one)g(should)75
1817 y(call)39 b Ft(MPI)p 266 1817 V 16 w(TEST)p 396 1817 V
17 w(CANCELLED)19 b FA(\014rst,)g(to)f(c)o(hec)o(k)i(whether)f(the)g(op)q
(eration)g(w)o(as)g(cancelled,)j(b)q(efore)75 1873 y(c)o(hec)o(king)16
b(on)f(the)g(other)g(\014elds)i(of)d(the)i(return)f(status.)75
2017 y Fx(1.10)60 b(P)n(ersistent)21 b(comm)o(unication)c(objects)75
2118 y FA(Often)k(a)g(comm)o(unication)g(with)g(the)g(same)g(parameter)f
(list)i(is)f(rep)q(eatedly)h(executed)g(within)g(the)75 2175
y(inner)d(lo)q(op)g(of)e(a)h(parallel)i(computation.)28 b(In)18
b(suc)o(h)h(a)f(situation,)g(it)h(ma)o(y)e(b)q(e)i(p)q(ossible)g(to)f
(optimize)75 2231 y(the)c(comm)o(unication)g(b)o(y)g(binding)i(the)d(list)i
(of)e(comm)o(unication)i(parameters)d(to)h(the)h(comm)o(unication)75
2287 y(ob)s(ject)g(once)g(and,)h(then,)f(rep)q(eatedly)i(using)f(the)f(comm)o
(unication)h(ob)s(ject)f(to)g(initiate)i(and)e(complete)75
2344 y(messages.)24 b(The)16 b(comm)o(unication)i(ob)s(ject)e(th)o(us)g
(created)h(can)f(b)q(e)i(though)o(t)e(of)g(as)g(a)g(comm)o(unication)75
2400 y(p)q(ort)11 b(or)f(a)h(\\half-c)o(hannel")h(.)18 b(It)12
b(do)q(es)f(not)f(pro)o(vide)i(the)f(full)h(functionalit)o(y)h(of)d(a)h(con)o
(v)o(en)o(tional)g(c)o(hannel,)75 2457 y(since)i(there)g(is)g(no)f(binding)i
(of)e(the)g(send)h(p)q(ort)f(to)f(the)i(receiv)o(e)g(p)q(ort:)18
b(this)13 b(construct)f(allo)o(ws)g(reduction)75 2513 y(of)18
b(the)g(o)o(v)o(erhead)f(for)h(comm)o(unication)g(b)q(et)o(w)o(een)h(pro)q
(cessor)e(and)h(comm)o(unication)h(con)o(troller,)g(but)75
2570 y(not)c(the)g(o)o(v)o(erhead)g(for)f(comm)o(unication)i(b)q(et)o(w)o
(een)g(one)f(comm)o(unication)h(con)o(troller)g(and)f(another.)166
2626 y(A)j(comm)o(unication)h(ob)s(ject)f(is)g(created)h(using)f(one)h(of)e
(the)i(four)f(follo)o(wing)g(calls.)30 b(These)19 b(calls)75
2683 y(in)o(v)o(olv)o(e)d(no)f(comm)o(unication.)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(24)166 49 y(The)13 b(function)g Ft(MPI)p 517
49 14 2 v 16 w(CREA)l(TE)p 702 49 V 17 w(SEND)g FA(creates)f(a)g(comm)o
(unication)h(ob)s(ject)f(for)g(a)g(standard)g(mo)q(de)75 106
y(send)k(op)q(eration,)f(and)g(binds)i(to)d(it)i(all)g(the)f(parameters)f(of)
h(a)g(send)h(op)q(eration.)75 209 y Ft(MPI)p 160 209 V 16 w(CREA)l(TE)p
345 209 V 17 w(SEND\(handle,)h(sta)o(rt,)e(count,)h(datat)o(yp)q(e,)g(dest,)h
(tag,)d(comm)m(\))117 287 y Fs(OUT)108 b Ft(handle)465 b Fs(comm)o(unication)
11 b(ob)r(ject)j(\(handle\))117 362 y(IN)155 b Ft(sta)o(rt)501
b Fs(initial)12 b(address)j(of)f(send)g(bu\013er)h(\(c)o(hoice\))117
437 y(IN)155 b Ft(count)482 b Fs(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(sen)
o(t)i(\(in)o(teger\))117 512 y(IN)155 b Ft(datat)o(yp)q(e)424
b Fs(t)o(yp)q(e)15 b(of)e(eac)o(h)h(elemen)o(t)117 587 y(IN)155
b Ft(dest)511 b Fs(rank)14 b(of)f(destination)h(\(in)o(teger\))117
662 y(IN)155 b Ft(tag)526 b Fs(message)14 b(tag)f(\(in)o(teger\))117
737 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)11 b(\(handle\))166
862 y FA(The)i(call)i(allo)q(cates)f(a)f(new)h(comm)o(unication)g(ob)s(ject)e
(and)i(asso)q(ciates)f(the)h(comm)o(unication)g(han-)75 918
y(dle)i(with)g(it.)166 975 y(The)g(function)h Ft(MPI)p 524
975 V 16 w(CREA)l(TE)p 709 975 V 17 w(RSEND)g FA(creates)e(a)h(comm)o
(unication)h(ob)s(ject)e(for)g(a)h(ready)g(mo)q(de)75 1031
y(send)g(op)q(eration.)75 1135 y Ft(MPI)p 160 1135 V 16 w(CREA)l(TE)p
345 1135 V 17 w(RSEND\(handle,)h(sta)o(rt,)e(count,)h(datat)o(yp)q(e,)h
(dest,)f(tag,)f(comm)m(\))117 1212 y Fs(OUT)108 b Ft(handle)465
b Fs(comm)o(unication)11 b(ob)r(ject)j(\(handle\))117 1287
y(IN)155 b Ft(sta)o(rt)501 b Fs(initial)12 b(address)j(of)f(send)g(bu\013er)h
(\(c)o(hoice\))117 1362 y(IN)155 b Ft(count)482 b Fs(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(sen)o(t)i(\(in)o(teger\))117 1438 y(IN)155
b Ft(datat)o(yp)q(e)424 b Fs(t)o(yp)q(e)15 b(of)e(eac)o(h)h(elemen)o(t)117
1513 y(IN)155 b Ft(dest)511 b Fs(rank)14 b(of)f(destination)h(\(in)o(teger\))
117 1588 y(IN)155 b Ft(tag)526 b Fs(message)14 b(tag)f(\(in)o(teger\))117
1663 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)11 b(\(handle\))166
1787 y FA(The)k(function)i Ft(MPI)p 523 1787 V 15 w(CREA)l(TE)p
707 1787 V 18 w(SSEND)f FA(creates)f(a)g(comm)o(unication)h(ob)s(ject)e(for)h
(a)g(sync)o(hronous)75 1844 y(mo)q(de)g(send)h(op)q(eration.)75
1948 y Ft(MPI)p 160 1948 V 16 w(CREA)l(TE)p 345 1948 V 17 w(SSEND\(handle,)h
(sta)o(rt,)e(count,)h(datat)o(yp)q(e,)g(dest,)h(tag,)e(comm)m(\))117
2025 y Fs(OUT)108 b Ft(handle)465 b Fs(comm)o(unication)11
b(ob)r(ject)j(\(handle\))117 2100 y(IN)155 b Ft(sta)o(rt)501
b Fs(initial)12 b(address)j(of)f(send)g(bu\013er)h(\(c)o(hoice\))117
2175 y(IN)155 b Ft(count)482 b Fs(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f
(sen)o(t)i(\(in)o(teger\))117 2250 y(IN)155 b Ft(datat)o(yp)q(e)424
b Fs(t)o(yp)q(e)15 b(of)e(eac)o(h)h(elemen)o(t)117 2325 y(IN)155
b Ft(dest)511 b Fs(rank)14 b(of)f(destination)h(\(in)o(teger\))117
2400 y(IN)155 b Ft(tag)526 b Fs(message)14 b(tag)f(\(in)o(teger\))117
2476 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)11 b(\(handle\))166
2600 y FA(The)k(function)h Ft(MPI)p 522 2600 V 15 w(CREA)l(TE)p
706 2600 V 18 w(RECV)g FA(creates)e(a)h(comm)o(unication)g(ob)s(ject)f(for)h
(a)f(receiv)o(e)i(op)q(era-)75 2656 y(tion.)-32 46 y Fv(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: 25 27
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(25)75 49 y Ft(MPI)p 160 49 14 2 v 16 w(CREA)l(TE)p
345 49 V 17 w(RECV\(handle,)17 b(sta)o(rt,)e(count,)h(datat)o(yp)q(e,)h
(source,)e(tag,)g(comm)m(\))117 126 y Fs(OUT)108 b Ft(handle)465
b Fs(comm)o(unication)11 b(ob)r(ject)j(\(handle\))117 202 y(OUT)108
b Ft(sta)o(rt)501 b Fs(initial)12 b(address)j(of)f(receiv)o(e)h(bu\013er)g
(\(c)o(hoice\))117 277 y(IN)155 b Ft(count)482 b Fs(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(receiv)o(ed)j(\(in)o(teger\))117 352 y(IN)155
b Ft(datat)o(yp)q(e)424 b Fs(t)o(yp)q(e)15 b(of)e(eac)o(h)h(elemen)o(t)117
427 y(IN)155 b Ft(dest)511 b Fs(rank)14 b(of)f(source)j(or)d(MPI)p
1309 427 13 2 v 16 w(ANY)p 1418 427 V 15 w(SOUR)o(CE)h(\(in)o(teger\))117
502 y(IN)155 b Ft(tag)526 b Fs(message)14 b(tag)f(or)h(MPI)p
1270 502 V 15 w(ANY)p 1378 502 V 16 w(T)m(A)o(G)f(\(in)o(teger\))117
577 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)11 b(\(handle\))166
702 y FA(A)21 b(comm)o(unication)g(\(send)g(or)f(receiv)o(e\))i(that)e(uses)h
(a)f(prede\014ned)j(comm)o(unication)e(ob)s(ject)f(is)75 758
y(initiated)d(b)o(y)e(the)g(function)h Ft(MPI)p 661 758 14
2 v 16 w(ST)l(ART)p FA(.)75 862 y Ft(MPI)p 160 862 V 16 w(ST)l(ART\(handle\))
117 939 y Fs(INOUT)62 b Ft(handle)465 b Fs(comm)o(unication)11
b(ob)r(ject)j(\(handle\))166 1064 y FA(The)k(comm)o(unication)h(ob)s(ject)f
(asso)q(ciated)h(with)f Ft(handle)i FA(should)f(b)q(e)g(an)f(ob)s(ject)g
(that)f(w)o(as)h(cre-)75 1120 y(ated)f(b)o(y)g(one)h(of)f(the)g(previous)h
(four)f(functions,)h(so)f(that)f(all)j(the)e(comm)o(unication)h(parameters)e
(are)75 1176 y(already)k(de\014ned.)34 b(A)19 b(send)h(can)g(b)q(e)g(started)
f(pro)o(vided)h(that)f(the)g(previous)h(send)h(using)f(the)f(same)75
1233 y(ob)s(ject)d(has)h(completed,)h(or)f(as)f(so)q(on)h(as)g(the)g(ob)s
(ject)f(is)h(created,)g(if)h(it)f(has)g(not)f(y)o(et)h(b)q(een)h(used)f(in)h
(a)75 1289 y(comm)o(unication.)j(In)16 b(addition,)h(if)f(the)f(comm)o
(unication)h(mo)q(de)g(is)g Fp(ready)f FA(then)g(a)h(matc)o(hing)f(receiv)o
(e)75 1346 y(should)k(b)q(e)f(p)q(osted.)28 b(The)18 b(send)g(bu\013er)g
(should)h(not)e(b)q(e)i(up)q(dated)f(after)f(the)h(send)g(is)h(started,)e(un)
o(til)75 1402 y(the)e(op)q(eration)h(completes.)166 1459 y(A)e(receiv)o(e)g
(can)g(b)q(e)g(started)f(pro)o(vided)i(that)e(the)h(preceding)h(receiv)o(e)f
(using)h(the)f(same)f(ob)s(ject)g(has)75 1515 y(completed,)f(or)f(as)f(so)q
(on)h(as)f(the)h(ob)s(ject)f(is)i(created,)f(if)g(it)g(has)g(not)g(y)o(et)f
(b)q(een)i(used)f(in)h(a)f(comm)o(unication.)75 1572 y(The)18
b(receiv)o(e)h(bu\013er)f(should)h(not)e(b)q(e)i(accessed)g(after)e(the)h
(receiv)o(e)h(is)f(started,)g(un)o(til)h(the)f(op)q(eration)75
1628 y(completes.)166 1685 y(The)23 b(call)g(is)g(non)o(blo)q(c)o(king,)i
(with)e(similar)g(seman)o(tics)g(as)f(the)h(non)o(blo)q(c)o(king)g(comm)o
(unication)75 1741 y(op)q(erations)15 b(describ)q(ed)i(in)g(Section)f(1.8.)
166 1797 y(A)10 b(comm)o(unication)h(started)e(with)i(a)f(call)h(to)e
Ft(MPI)p 1016 1797 V 16 w(ST)l(ART)i FA(is)g(completed)g(b)o(y)f(a)g(call)h
(to)f Ft(MPI)p 1740 1797 V 16 w(W)l(AIT)p FA(,)75 1854 y Ft(MPI)p
160 1854 V 16 w(TEST)p FA(,)i(or)f(one)h(of)g(the)g(deriv)o(ed)h(functions)f
(describ)q(ed)i(in)f(Section)g(1.8.5.)k(These)12 b(comm)o(unication)75
1910 y(completion)18 b(functions)g(do)e(not)h(deallo)q(cate)h(the)f(comm)o
(unication)g(ob)s(ject,)g(and)g(this)g(can)g(b)q(e)g(reused)75
1967 y(anew)f(b)o(y)g(a)g Ft(MPI)p 380 1967 V 15 w(ST)l(ART)h
FA(call.)24 b(The)16 b(ob)s(ject)g(needs)g(to)g(b)q(e)g(explicitly)j(deallo)q
(cated)f(b)o(y)e(a)f(call)i(to)f(the)75 2023 y(function)f Ft(MPI)p
337 2023 V 15 w(COMMOBJ)p 578 2023 V 18 w(FREE)p FA(,)f(b)q(elo)o(w.)20
b(W)l(e)13 b(th)o(us)h(ha)o(v)o(e)f(t)o(w)o(o)g(t)o(yp)q(es)g(of)h(comm)o
(unication)g(ob)s(jects:)75 2080 y Fw(p)q(ersisten)o(t)k FA(ob)s(jects,)f
(whic)o(h)i(are)e(allo)q(cated)i(b)o(y)f(a)f(call)i(to)e Ft(MPI)p
1230 2080 V 16 w(CREA)l(TE)p 1415 2080 V 18 w(xxx)p FA(,)h(and)g(are)f
(explicitly)75 2136 y(deallo)q(cated)j(b)o(y)e Ft(MPI)p 468
2136 V 16 w(COMMOBJ)p 710 2136 V 18 w(FREE)p FA(,)g(and)h Fw(ephemeral)f
FA(ob)s(jects)g(that)g(p)q(ersist)h(for)e(one)i(com-)75 2193
y(m)o(unication)14 b(only:)19 b(they)13 b(are)g(created)g(b)o(y)g(a)g(non)o
(blo)q(c)o(king)h(comm)o(unication)g(initiation)h(function,)f(and)75
2249 y(are)h(freed)g(b)o(y)h(the)f(comm)o(unication)h(completion)g(call.)75
2353 y Ft(MPI)p 160 2353 V 16 w(COMMOBJ)p 402 2353 V 17 w(FREE\(handle\))117
2430 y Fs(INOUT)62 b Ft(handle)465 b Fs(comm)o(unication)11
b(ob)r(ject)j(\(handle\))166 2554 y FA(Marks)e(the)h(comm)o(unication)g(ob)s
(ject)f(for)g(deallo)q(cation.)21 b(The)13 b(ob)s(ject)f(will)j(b)q(e)e
(deallo)q(cated)h(when)75 2611 y(there)23 b(are)f(no)g(p)q(ending)j(comm)o
(unications)e(in)o(v)o(olving)g(this)g(ob)s(ject,)h(at)e(whic)o(h)h(p)q(oin)o
(t)g(the)g(handle)75 2667 y(b)q(ecomes)16 b(n)o(ull.)-32 46
y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(26)166 49 y(The)18 b(call)g(is)h(non)o(blo)q(c)o(king.)28
b(It)18 b(is)g(p)q(ermissible)i(to)d(call)h Ft(MPI)p 1240 49
14 2 v 16 w(COMMOBJ)p 1482 49 V 18 w(FREE\(handle\))h FA(after)75
106 y(a)f(comm)o(unication)h(that)f(uses)38 b Ft(handle)19
b FA(has)g(b)q(een)h(initiated,)g(but)f(b)q(efore)g(it)f(has)h(completed.)31
b(The)75 162 y(ob)s(ject)15 b(will)j(b)q(e)f(deallo)q(cated)g(after)e(the)h
(comm)o(unication)h(completes.)22 b(It)16 b(is)h(erroneous)f(to)f(initiate)i
(a)75 219 y(comm)o(unication)f(with)f(a)g(handle)i(that)d(has)h(b)q(een)i
(freed.)166 275 y(A)e(correct)f(in)o(v)o(o)q(cation)i(of)e(the)h(functions)h
(describ)q(ed)g(in)g(this)f(section)h(will)g(o)q(ccur)g(in)f(a)g(sequence)75
332 y(of)g(the)g(form)613 388 y Fw(Create)j FA(\()p Fw(Start)f(Complete)p
FA(\))1172 369 y Fj(\003)1209 388 y Fw(F)l(ree)f Fi(;)75 471
y FA(where)j Fl(\003)f FA(indicates)i(zero)e(or)g(more)g(rep)q(etitions.)31
b(If)18 b(the)h(same)f(comm)o(unication)h(ob)s(ject)f(is)h(used)g(in)75
528 y(sev)o(eral)12 b(concurren)o(t)g(threads,)g(it)g(is)h(the)f(user)g(resp)
q(onsibilit)o(y)i(to)d(co)q(ordinate)i(calls)g(so)e(that)g(the)h(correct)75
584 y(sequence)k(is)g(ob)q(ey)o(ed.)166 641 y(A)c(send)g(op)q(eration)f
(initiated)j(with)d Ft(MPI)p 874 641 V 16 w(ST)l(ART)i FA(can)e(b)q(e)i(matc)
o(hed)e(with)h(an)o(y)f(receiv)o(e)i(op)q(eration)75 697 y(and,)g(lik)o
(ewise,)h(a)e(receiv)o(e)i(op)q(eration)e(initiated)i(with)f
Ft(MPI)p 1098 697 V 16 w(ST)l(ART)g FA(can)g(receiv)o(e)g(messages)f
(generated)75 754 y(b)o(y)j(an)o(y)g(send)h(op)q(eration.)75
897 y Fx(1.11)60 b(Send-receive)75 998 y FA(The)17 b Fw(send-receiv)o(e)f
FA(op)q(erations)h(com)o(bines)h(in)f(one)g(call)h(the)f(sending)h(of)e(a)h
(message)f(to)g(one)h(desti-)75 1055 y(nation)f(and)g(the)g(receiving)i(of)d
(another)h(message,)f(from)g(another)h(destination,)g(p)q(ossibly)i(the)e
(same.)75 1111 y(The)j Fw(exc)o(hange)g FA(op)q(erations)g(are)f(the)h(same)f
(as)h(send-receiv)o(e,)i(except)e(that)f(the)h(send)g(bu\013er)g(and)75
1168 y(the)14 b(receiv)o(e)h(bu\013er)f(are)g(iden)o(tical.)22
b(A)14 b(send-receiv)o(e)i(op)q(eration)e(is)h(v)o(ery)f(useful)h(for)f
(executing)h(a)f(shift)75 1224 y(op)q(eration)g(across)g(a)f(c)o(hain)i(of)f
(pro)q(cesses.)20 b(If)14 b(blo)q(c)o(king)h(sends)g(and)f(receiv)o(es)h(are)
f(used)g(for)g(suc)o(h)g(shift,)75 1281 y(then)19 b(one)g(needs)h(to)e(order)
h(correctly)g(the)g(sends)g(and)g(receiv)o(es)h(\(e.g.,)e(ev)o(en)i(pro)q
(cesses)f(send,)h(next)75 1337 y(receiv)o(e,)14 b(o)q(dd)f(pro)q(cesses)g
(receiv)o(e)g(\014rst,)f(next)h(send\))g(so)f(as)g(to)g(prev)o(en)o(t)g
(cyclic)j(dep)q(endencies)g(that)d(lead)75 1394 y(to)k(deadlo)q(c)o(k.)25
b(When)17 b(a)g(send-receiv)o(e)h(or)e(exc)o(hange)h(op)q(eration)g(is)g
(used,)g(the)g(comm)o(unication)g(sub-)75 1450 y(system)e(tak)o(es)f(care)h
(of)g(these)g(issues.)21 b(Also,)15 b(a)g(send-receiv)o(e)i(op)q(eration)e
(is)h(useful)g(for)f(implemen)o(ting)75 1506 y(remote)g(pro)q(cedure)h
(calls.)166 1563 y(A)h(message)f(sen)o(t)h(b)o(y)g(a)f(send-receiv)o(e)j(or)d
(exc)o(hange)h(op)q(eration)g(can)g(b)q(e)h(receiv)o(ed)g(b)o(y)e(a)h
(regular)75 1619 y(receiv)o(e)f(op)q(eration,)f(and)h(vice)g(v)o(ersa.)-32
46 y Fv(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: 27 29
bop 75 -100 a Fu(SECTION)16 b(1.)30 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)637 b FA(27)75 49 y Ft(MPI)p 160 49 14 2 v 16 w(SENDRECV\(send)p
509 49 V 19 w(sta)o(rt,)11 b(send)p 721 49 V 18 w(count,)h(send)p
952 49 V 18 w(t)o(yp)q(e,)g(dest,)g(send)p 1259 49 V 18 w(tag,)f(recv)p
1439 49 V 16 w(sta)o(rt,)g(recv)p 1642 49 V 16 w(count,)h(recv)p
1865 49 V 16 w(t)o(yp)q(e,)75 106 y(source,)j(recv)p 302 106
V 17 w(tag,)f(comm)n(,)d(status\))117 183 y Fs(IN)155 b Ft(send)p
404 183 V 18 w(sta)o(rt)400 b Fs(initial)12 b(address)j(of)f(send)g(bu\013er)
h(\(c)o(hoice\))117 258 y(IN)155 b Ft(send)p 404 258 V 18 w(count)381
b Fs(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(send)h(bu\013er)f(\(in)o
(teger\))117 333 y(IN)155 b Ft(send)p 404 333 V 18 w(t)o(yp)q(e)406
b Fs(t)o(yp)q(e)15 b(of)e(elemen)o(ts)h(in)f(send)i(bu\013er)117
407 y(IN)155 b Ft(dest)511 b Fs(rank)14 b(of)f(destination)h(\(in)o(teger\))
117 482 y(IN)155 b Ft(send)p 404 482 V 18 w(tag)425 b Fs(send)15
b(tag)e(\(in)o(teger\))117 557 y(OUT)108 b Ft(recv)p 398 557
V 17 w(sta)o(rt)407 b Fs(initial)12 b(address)j(of)f(receiv)o(e)h(bu\013er)g
(\(c)o(hoice\))117 632 y(IN)155 b Ft(recv)p 398 632 V 17 w(count)388
b Fs(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)f(in)h(receiv)o(e)h(bu\013er)g
(\(in)o(teger\))117 707 y(IN)155 b Ft(recv)p 398 707 V 17 w(t)o(yp)q(e)413
b Fs(t)o(yp)q(e)15 b(of)e(elemen)o(ts)h(in)f(receiv)o(e)i(bu\013er)117
782 y(IN)155 b Ft(source)468 b Fs(rank)14 b(of)f(source)j(\(in)o(teger\))117
857 y(IN)155 b Ft(recv)p 398 857 V 17 w(tag)432 b Fs(receiv)o(e)15
b(tag)f(\(in)o(teger\))117 931 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)11
b(\(handle\))117 1006 y(OUT)108 b Ft(status)476 b Fs(status)15
b(ob)r(ject)166 1131 y FA(Execute)e(a)f(blo)q(c)o(king)i(send)g(and)f(receiv)
o(e)g(op)q(eration.)19 b(Both)13 b(send)g(and)g(receiv)o(e)h(use)f(the)f
(same)h(tag)75 1187 y(v)m(alue)h(and)g(the)f(same)g(comm)o(unicator.)19
b(Ho)o(w)o(ev)o(er,)12 b(the)i(send)g(bu\013er)f(and)g(receiv)o(e)h(bu\013er)
g(are)f(disjoin)o(t,)75 1244 y(and)i(ma)o(y)g(ha)o(v)o(e)g(di\013eren)o(t)g
(length)h(and)f(di\013eren)o(t)h(datat)o(yp)q(es.)75 1347 y
Ft(MPI)p 160 1347 V 16 w(EX)o(CHANGE\(sta)o(rt,)g(count,)g(datat)o(yp)q(e,)h
(dest,)f(send)p 1060 1347 V 18 w(tag)f(source,)g(recv)p 1378
1347 V 17 w(tag,)f(comm)m(,)e(status\))117 1424 y Fs(IN)155
b Ft(sta)o(rt)501 b Fs(initial)12 b(address)j(of)f(send)g(and)g(receiv)o(e)h
(bu\013er)g(\(c)o(hoice\))117 1499 y(IN)155 b Ft(count)482
b Fs(n)o(um)o(b)q(er)9 b(of)g(elemen)o(ts)h(in)f(send)i(and)e(receiv)o(e)i
(bu\013er)g(\(in)o(teger\))117 1574 y(IN)155 b Ft(datat)o(yp)q(e)424
b Fs(t)o(yp)q(e)15 b(of)e(elemen)o(ts)h(in)f(send)i(and)f(receiv)o(e)h
(bu\013er)117 1649 y(IN)155 b Ft(dest)511 b Fs(rank)14 b(of)f(destination)h
(\(in)o(teger\))117 1724 y(IN)155 b Ft(send)p 404 1724 V 18
w(tag)425 b Fs(send)15 b(message)f(tag)f(\(in)o(teger\))117
1799 y(IN)155 b Ft(source)468 b Fs(rank)14 b(of)f(source)j(\(in)o(teger\))117
1874 y(IN)155 b Ft(recv)p 398 1874 V 17 w(tag)432 b Fs(receiv)o(e)15
b(message)f(tag)f(\(in)o(teger\))117 1948 y(IN)155 b Ft(comm)466
b Fs(comm)o(unicator)11 b(\(handle\))117 2023 y(OUT)108 b Ft(status)476
b Fs(status)15 b(ob)r(ject)166 2148 y FA(Execute)g(a)f(blo)q(c)o(king)i(send)
f(and)g(receiv)o(e;)g(the)g(same)f(bu\013er)g(is)h(used)h(b)q(oth)e(for)g
(the)h(send)g(and)g(for)75 2204 y(the)g(receiv)o(e.)166 2261
y(The)20 b(seman)o(tics)h(of)f(a)g(send-receiv)o(e)i(op)q(eration)e(is)h
(what)f(w)o(ould)g(obtain)h(if)g(the)f(caller)h(fork)o(ed)75
2317 y(t)o(w)o(o)16 b(concurren)o(t)h(threads,)g(one)g(to)f(execute)i(the)f
(send,)g(and)h(one)f(to)f(execute)i(the)f(receiv)o(e,)h(follo)o(w)o(ed)75
2374 y(b)o(y)f(a)f(join)h(of)f(these)h(t)o(w)o(o)e(threads.)24
b(A)16 b(send-receiv)o(e)j(cannot)d(b)q(e)h(implemen)o(ted)i(b)o(y)d(a)g(blo)
q(c)o(king)i(send)75 2430 y(follo)o(w)o(ed)e(b)o(y)f(a)g(blo)q(c)o(king)i
(receiv)o(e)g(or)e(a)g(blo)q(c)o(king)i(receiv)o(e,)f(follo)o(w)o(ed)g(b)o(y)
f(a)g(blo)q(c)o(king)i(send.)k(Consider)75 2486 y(the)15 b(follo)o(wing)h(co)
q(de,)g(where)f(t)o(w)o(o)f(pro)q(cesses)i(exc)o(hange)f(messages:)75
2591 y Fp(CALL)23 b(MPI_COMM_RANK\(comm,)f(rank,)h(ierr\))75
2647 y(IF)h(\(rank.EQ.0\))123 2704 y(THEN)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(28)170 49 y Fp(CALL)24 b(MPI_SENDRECV\(send_buff,)c
(send_count,)j(MPI_REAL,)f(0,)i(send_tag,)242 106 y(recv_buff,)f(recv_count,)
f(MPI_REAL,)h(1,)g(recv_tag,)g(comm,)g(status,)g(ierr\))123
162 y(ELSE)170 219 y(CALL)h(MPI_SENDRECV\(send_buff,)c(send_count,)j
(MPI_REAL,)f(1,)i(send_tag,)242 275 y(recv_buff,)f(recv_count,)f(MPI_REAL,)h
(0,)g(tag,)g(comm,)h(status,)f(ierr\))75 332 y(END)g(IF)166
438 y FA(If)12 b(the)f(send)h(receiv)o(es)g(are)g(replaced)g(either)g(b)o(y)g
(blo)q(c)o(king)g(send,)h(follo)o(w)o(ed)f(b)o(y)f(blo)q(c)o(king)i(receiv)o
(e,)f(or)75 494 y(blo)q(c)o(king)g(receiv)o(e,)h(follo)o(w)o(ed)e(b)o(y)g
(blo)q(c)o(king)i(send,)f(then)g(the)f(co)q(de)g(ma)o(y)g(deadlo)q(c)o(k.)19
b(On)12 b(the)f(other)g(hand,)75 551 y(send-receiv)o(e)21 b(can)f(b)q(e)h
(implemen)o(ted)g(using)g(non)o(blo)q(c)o(king)g(sends)f(and)g(receiv)o(es.)
35 b(Note)19 b(that)g(some)75 607 y(system)g(bu\013ering)h(is)g(required)h
(for)e(a)g(correct)g(implemen)o(tation)i(of)e Ft(MPI)p 1400
607 14 2 v 16 w(EX)o(CHANGE)p FA(.)i(\(Consider)75 664 y(the)15
b(last)g(example,)h(with)g(send-receiv)o(e)g(replaced)h(b)o(y)e(exc)o
(hange.\))75 807 y Fx(1.12)60 b(Null)19 b(p)n(ro)r(cesses)75
908 y FA(In)c(man)o(y)e(instances,)i(it)f(is)h(con)o(v)o(enien)o(t)g(to)e(sp)
q(ecify)j(a)d(\\dumm)o(y")h(source)g(or)g(destination)h(for)e(comm)o(u-)75
965 y(nication.)29 b(This)18 b(simpli\014es)i(the)e(co)q(de)g(that)f(is)h
(needed)i(for)d(dealing)i(with)f(b)q(oundaries,)h(e.g.,)e(in)i(the)75
1021 y(case)c(of)g(a)g(non-circular)i(shift)e(done)h(with)f(calls)i(to)d
(send-receiv)o(e.)166 1078 y(The)f(sp)q(ecial)j(v)m(alue)26
b Fm(MPI)p 608 1078 13 2 v 15 w(PROCNULL)12 b FA(can)i(b)q(e)g(used)g
(instead)g(of)f(a)g(rank)g(wherev)o(er)g(a)g(source)g(or)g(a)75
1134 y(destination)i(parameter)e(is)i(required)g(in)g(a)e(call.)21
b(A)14 b(comm)o(unication)h(with)f(pro)q(cess)27 b Fm(MPI)p
1649 1134 V 15 w(PROCNULL)75 1191 y FA(has)13 b(no)h(e\013ect:)k(a)13
b(send)h(to)25 b Fm(MPI)p 633 1191 V 14 w(PROCNULL)13 b FA(succeeds)i(and)e
(returns)g(as)g(so)q(on)h(as)f(p)q(ossible.)21 b(A)13 b(receiv)o(e)75
1247 y(from)26 b Fm(MPI)p 271 1247 V 14 w(PROCNULL)13 b FA(succeeds)i(and)f
(returns)g(as)f(so)q(on)h(as)f(p)q(ossible)j(with)e(no)g(mo)q(di\014cations)h
(to)e(the)75 1303 y(receiv)o(e)18 b(bu\013er.)25 b(When)17
b(a)g(receiv)o(e)h(with)f Ft(source)h FA(=)32 b Fm(MPI)p 1090
1303 V 15 w(PROCNULL)16 b FA(is)i(executed)f(then)h(the)f(status)75
1360 y(ob)s(ject)e(returns)30 b Ft(source)16 b FA(=)29 b Fm(MPI)p
661 1360 V 14 w(PROCNULL)p FA(,)14 b Ft(tag)h FA(=)30 b Fm(MPI)p
1132 1360 V 14 w(ANY)p 1231 1360 V 15 w(T)m(A)o(G)14 b FA(and)h
Ft(count=0)p FA(.)75 1503 y Fx(1.13)60 b(Derived)19 b(datat)n(yp)r(es)75
1605 y FA(Up)c(to)f(no)o(w,)g(all)i(p)q(oin)o(t)f(to)f(p)q(oin)o(t)h(comm)o
(unication)h(in)o(v)o(olv)o(ed)f(only)g(con)o(tiguous)g(bu\013ers)g(con)o
(taining)g(a)75 1661 y(sequence)g(of)e(elemen)o(ts)h(of)f(the)g(same)g(t)o
(yp)q(e.)19 b(This)14 b(is)g(to)q(o)f(constraining)h(on)f(t)o(w)o(o)f(accoun)
o(ts:)19 b(One)14 b(often)75 1718 y(w)o(an)o(ts)f(to)h(pass)g(messages)g
(that)f(con)o(tain)i(v)m(alues)g(with)g(di\013eren)o(t)f(datat)o(yp)q(es)g
(\(e.g.,)f(an)h(in)o(teger)h(coun)o(t,)75 1774 y(follo)o(w)o(ed)i(b)o(y)f(a)g
(sequence)i(of)e(real)h(n)o(um)o(b)q(ers\);)f(and)h(one)g(often)f(w)o(an)o
(ts)f(to)h(send)h(noncon)o(tiguous)g(data)75 1830 y(\(e.g.)h(a)12
b(sub-blo)q(c)o(k)i(of)e(a)g(matrix\).)18 b(One)13 b(solution)g(is)g(to)f
(pro)o(vide)h(functions)g(that)e(pac)o(k)i(noncon)o(tiguous)75
1887 y(data)f(in)o(to)h(a)g(con)o(tiguous)g(bu\013er)g(at)f(the)h(sender)h
(site)f(and)g(unpac)o(k)h(it)f(bac)o(k)g(at)f(the)h(receiv)o(er)h(site.)19
b(This)75 1943 y(has)f(the)g(disadv)m(an)o(tage)g(of)g(requiring)h
(additional)h(memory-to-memory)c(cop)o(y)i(op)q(erations)g(at)g(b)q(oth)75
2000 y(sites,)12 b(ev)o(en)f(when)g(the)g(comm)o(unication)g(subsystem)g(has)
f(scatter-gather)g(capabilities.)20 b(Instead,)12 b(MPI)75
2056 y(pro)o(vides)22 b(mec)o(hanisms)f(to)g(sp)q(ecify)h(more)f(general,)i
(mixed)f(and)f(noncon)o(tiguous)g(comm)o(unication)75 2113
y(bu\013ers.)i(It)16 b(is)g(up)h(to)f(the)g(implemen)o(tation)h(to)f(decide)i
(whether)e(data)f(should)j(b)q(e)e(\014rst)g(pac)o(k)o(ed)g(in)h(a)75
2169 y(con)o(tiguous)h(bu\013er)h(b)q(efore)f(b)q(eeing)i(transmitted,)f(or)e
(whether)i(it)g(can)f(b)q(e)h(collected)h(directly)g(from)75
2226 y(where)15 b(it)h(resides.)166 2282 y(The)d(general)g(mec)o(hanisms)g
(pro)o(vided)g(here)g(allo)o(ws)g(one)f(to)g(transfer)g(directly)l(,)i
(without)f(cop)o(ying,)75 2339 y(ob)s(jects)k(of)g(v)m(arious)h(shap)q(e)h
(and)f(size.)28 b(It)17 b(is)i(not)e(assumed)h(that)f(the)g(MPI)h(library)g
(is)h(cognizan)o(t)e(of)75 2395 y(the)f(ob)s(jects)g(declared)h(in)g(the)f
(host)g(language;)g(th)o(us,)g(if)g(one)g(w)o(an)o(ts)f(to)h(transfer)f(a)h
(structure,)f(or)h(an)75 2451 y(arra)o(y)d(section,)i(it)f(will)i(b)q(e)f
(necessary)f(to)g(pro)o(vide)h(in)g(MPI)f(a)g(de\014nition)i(of)e(a)g(comm)o
(unication)h(bu\013er)75 2508 y(that)e(mimics)j(the)e(de\014nition)i(of)e
(the)g(structure)g(or)f(arra)o(y)g(section)i(in)g(question.)20
b(These)15 b(facilities)h(can)75 2564 y(b)q(e)j(used)g(b)o(y)f(library)h
(designers)h(to)d(de\014ne)j(comm)o(unication)f(functions)g(that)f(can)g
(transfer)g(ob)s(jects)75 2621 y(de\014ned)g(in)f(the)f(host)g(language)g({)g
(b)o(y)h(deco)q(ding)g(their)g(de\014nitions)h(as)e(a)o(v)m(ailable)i(in)f(a)
f(sym)o(b)q(ol)h(table)75 2677 y(or)e(a)g(dop)q(e)g(v)o(ector.)20
b(Suc)o(h)15 b(higher-lev)o(el)j(comm)o(unication)e(functions)g(are)f(not)g
(part)f(of)h(MPI.)-32 46 y Fv(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: 29 31
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(29)166 49 y(More)12 b(general)g(comm)o(unication)i(bu\013ers)e
(are)g(sp)q(eci\014ed)i(b)o(y)f(replacing)g(the)g(basic)g(datat)o(yp)q(es)f
(that)75 106 y(ha)o(v)o(e)18 b(used)h(so)f(far)g(with)g(deriv)o(ed)i(datat)o
(yp)q(es)e(that)f(are)h(constructed)h(from)e(basic)i(datat)o(yp)q(es)f(using)
75 162 y(the)13 b(constructors)e(describ)q(ed)j(in)g(this)f(section.)19
b(These)13 b(metho)q(ds)f(of)g(constructing)h(deriv)o(ed)h(datat)o(yp)q(es)75
219 y(can)h(b)q(e)h(applied)h(recursiv)o(ely)l(.)166 275 y(A)e
Fw(general)j(datat)o(yp)q(e)e FA(is)g(an)f(opaque)h(ob)s(ject)e(that)h(sp)q
(eci\014es)i(t)o(w)o(o)d(things:)143 369 y Fl(\017)23 b FA(A)15
b(sequence)h(of)f(basic)h(datat)o(yp)q(es)143 463 y Fl(\017)23
b FA(A)15 b(sequence)h(of)f(in)o(teger)g(\(b)o(yte\))g(displacemen)o(ts)166
557 y(The)22 b(displacemen)o(ts)g(are)g(not)f(required)h(to)f(b)q(e)h(p)q
(ositiv)o(e,)i(distinct,)g(or)d(in)h(increasing)h(order;)75
613 y(therefore)17 b(the)g(order)g(of)f(items)i(need)g(not)f(coincide)i(with)
e(their)h(order)f(in)g(store,)g(and)g(an)g(item)h(ma)o(y)75
669 y(app)q(ear)c(more)g(than)g(once.)20 b(W)l(e)14 b(call)h(suc)o(h)g(pair)f
(of)g(sequences)h(\(or)e(sequence)j(of)d(pairs\))h(a)g Fw(t)o(yp)q(e)i(map)p
FA(.)75 726 y(Let)476 782 y Fi(T)6 b(y)r(pemap)12 b FA(=)h
Fl(f)p FA(\()p Fi(ty)r(pe)849 789 y Fh(0)867 782 y Fi(;)8 b(disp)972
789 y Fh(0)990 782 y FA(\))p Fi(;)g(:::;)f FA(\()p Fi(ty)r(pe)1190
789 y Fg(n)p Fj(\000)p Fh(1)1253 782 y Fi(;)h(disp)1358 789
y Fg(n)p Fj(\000)p Fh(1)1421 782 y FA(\))p Fl(g)p Fi(;)75 866
y FA(b)q(e)18 b(suc)o(h)g(a)f(t)o(yp)q(e)h(map,)f(where)h Fi(ty)r(pe)723
873 y Fg(i)754 866 y FA(are)f(basic)i(t)o(yp)q(es,)e(and)h
Fi(disp)1259 873 y Fg(i)1290 866 y FA(are)f(displacemen)o(ts.)28
b(This)18 b(t)o(yp)q(e)75 922 y(map,)j(together)e(with)i(a)f(base)g(address)h
Fq(start)p FA(,)g(sp)q(eci\014es)h(a)e(comm)o(unication)h(bu\013er:)30
b(the)20 b(comm)o(u-)75 979 y(nication)f(bu\013er)f(that)f(consists)i(of)e
Fi(n)h FA(en)o(tries,)h(where)f(the)g Fi(i)p FA(-th)g(en)o(try)g(is)g(at)f
(address)h Fi(star)q(t)13 b FA(+)g Fi(disp)1862 986 y Fg(i)75
1035 y FA(and)18 b(has)f(t)o(yp)q(e)g Fi(ty)r(pe)437 1042 y
Fg(i)452 1035 y FA(.)26 b(A)18 b(message)f(assem)o(bled)h(from)e(suc)o(h)i
(comm)o(unication)g(bu\013er)g(will)h(con)o(tain)e(a)75 1092
y(sequence)d(of)f Fi(n)h FA(v)m(alues,)g(where)g(v)m(alue)g
Fi(i)f FA(has)g(t)o(yp)q(e)h Fi(ty)r(pe)1036 1099 y Fg(i)1050
1092 y FA(.)19 b(The)14 b(message)e(will)j(carry)e Fi(n)h FA(v)m(alues)g(of)f
(t)o(yp)q(es)75 1148 y(\()p Fi(ty)r(pe)177 1155 y Fh(0)196
1148 y Fi(;)8 b(:::;)g(ty)r(pe)361 1155 y Fg(n)p Fj(\000)p
Fh(1)423 1148 y FA(\).)166 1205 y(W)l(e)j(can)f(use)h(a)f(handle)i(to)e(a)g
(general)h(datat)o(yp)q(e)f(as)h(an)f(argumen)o(t)g(in)h(a)f(send)i(or)e
(receiv)o(e)h(op)q(eration,)75 1261 y(in)g(replacemen)o(t)g(of)f(a)g(basic)h
(datat)o(yp)q(e)e(argumen)o(t.)18 b(The)10 b(op)q(eration)h
Ft(MPI)p 1338 1261 14 2 v 15 w(SEND\(sta)o(rt,)h(1,)e(datat)o(yp)q(e,...\))75
1317 y FA(will)j(use)f(the)g(send)g(bu\013er)f(de\014ned)i(b)o(y)f(the)f
(base)h(address)g Ft(sta)o(rt)f FA(and)h(the)g(general)g(datat)o(yp)q(e)f
(asso)q(ciated)75 1374 y(with)h Ft(datat)o(yp)q(e)p FA(;)i(it)e(will)i
(generate)d(a)h(message)f(with)h(the)g(t)o(yp)q(e)g(signature)g(determined)h
(b)o(y)e(the)h Ft(datat)o(yp)q(e)75 1430 y FA(argumen)o(t.)23
b Ft(MPI)p 385 1430 V 16 w(RECV\(sta)o(rt,)18 b(1,)e(datat)o(yp)q(e,...\))24
b FA(will)19 b(use)e(the)f(receiv)o(e)i(bu\013er)f(de\014ned)h(b)o(y)e(the)h
(base)75 1487 y(address)e Ft(sta)o(rt)h FA(and)f(the)g(general)h(datat)o(yp)q
(e)f(asso)q(ciated)g(with)h Ft(datat)o(yp)q(e)p FA(.)166 1543
y(General)g(datat)o(yp)q(es)e(can)i(b)q(e)g(used)f(in)h(all)h(send)e(and)h
(receiv)o(e)g(op)q(erations.)k(W)l(e)c(address)f(later)g(in)75
1600 y(Section)h(1.13.5)d(the)j(case)f(where)g(the)h(second)f(argumen)o(t)g
Ft(count)h FA(has)f(v)m(alue)i Fi(>)c FA(1.)166 1656 y(The)d(basic)h(datat)o
(yp)q(es)f(presen)o(ted)g(in)h(Section)g(1.2.1)e(are)h(particular)h(cases)f
(of)f(a)h(general)h(datat)o(yp)q(e,)75 1713 y(and)19 b(are)f(prede\014ned.)32
b(Th)o(us,)19 b Ft(MPI)p 711 1713 V 16 w(INT)f FA(is)h(a)g(prede\014ned)h
(handle)g(to)e(a)g(datat)o(yp)q(e)g(with)h(t)o(yp)q(e)g(map)75
1769 y Fl(f)p FA(\()p Fp(int)o Fi(;)8 b FA(0\))p Fl(g)p FA(,)16
b(with)h(one)h(en)o(try)f(of)g(t)o(yp)q(e)g Fp(int)g FA(and)g(displacemen)o
(t)i(zero.)26 b(And)18 b(similarly)h(for)e(all)h(other)75 1826
y(basic)e(datat)o(yp)q(es.)166 1882 y(The)f Fw(exten)o(t)f
FA(of)g(a)g(datat)o(yp)q(e)g(is)h(de\014ned)g(to)f(b)q(e)h(the)g(span)f(from)
g(the)g(\014rst)g(b)o(yte)h(to)e(the)i(last)f(b)o(yte)75 1938
y(o)q(ccupied)19 b(b)o(y)d(en)o(tries)h(in)h(this)f(datat)o(yp)q(e,)f
(rounded)h(up)g(to)f(satisfy)h(alignmen)o(t)g(requiremen)o(ts.)25
b(That)75 1995 y(is,)15 b(if)476 2051 y Fi(T)6 b(y)r(pemap)12
b FA(=)h Fl(f)p FA(\()p Fi(ty)r(pe)849 2058 y Fh(0)867 2051
y Fi(;)8 b(disp)972 2058 y Fh(0)990 2051 y FA(\))p Fi(;)g(:::;)f
FA(\()p Fi(ty)r(pe)1190 2058 y Fg(n)p Fj(\000)p Fh(1)1253 2051
y Fi(;)h(disp)1358 2058 y Fg(n)p Fj(\000)p Fh(1)1421 2051 y
FA(\))p Fl(g)p Fi(;)75 2135 y FA(then)501 2237 y Fi(l)q(b)p
FA(\()p Fi(T)e(y)r(pemap)p FA(\))39 b(=)j(min)906 2263 y Fg(j)959
2237 y Fi(disp)1043 2244 y Fg(j)1060 2237 y Fi(;)489 2324 y(ub)p
FA(\()p Fi(T)6 b(y)r(pemap)p FA(\))40 b(=)i(max)911 2350 y
Fg(j)968 2324 y Fi(disp)1052 2331 y Fg(j)1079 2324 y FA(+)11
b Fi(siz)r(eof)5 b FA(\()p Fi(ty)r(pe)1357 2331 y Fg(j)1375
2324 y FA(\))p Fi(;)22 b FA(and)406 2410 y Fi(extent)p FA(\()p
Fi(T)6 b(y)r(pemap)p FA(\))42 b(=)g Fi(ub)p FA(\()p Fi(T)6
b(y)r(pemap)p FA(\))j Fl(\000)h Fi(l)q(b)p FA(\()p Fi(T)c(y)r(pemap)p
FA(\))i(+)j Fi(\017:)238 b FA(\(1.1\))75 2512 y(If)17 b Fi(ty)r(pe)206
2519 y Fg(i)237 2512 y FA(requires)g(alignmen)o(t)g(to)f(a)h(b)o(yte)f
(address)h(that)f(is)h(is)g(a)f(m)o(ultiple)j(of)d Fi(k)1474
2519 y Fg(i)1487 2512 y FA(,)h(then)g Fi(\017)g FA(is)g(the)g(least)75
2569 y(nonnegativ)o(e)f(incremen)o(t)g(needed)g(to)f(round)g
Fi(extent)p FA(\()p Fi(T)6 b(y)r(pemap)p FA(\))16 b(to)e(the)h(next)h(m)o
(ultiple)h(of)d(max)1794 2576 y Fg(i)1815 2569 y Fi(k)1839
2576 y Fg(i)1853 2569 y FA(.)166 2625 y(Example:)k(Assume)10
b(that)g Fi(T)c(y)r(pe)13 b FA(=)g Fl(f)p FA(\()p Fp(double)n
Fi(;)8 b FA(0\))p Fi(;)g FA(\()p Fp(char)m Fi(;)g FA(8\))p
Fl(g)h FA(\(a)g Fp(double)h FA(at)g(displacemen)o(t)h(zero,)75
2682 y(follo)o(w)o(ed)17 b(b)o(y)g(a)f Fp(char)g FA(at)g(displacemen)o(t)i
(eigh)o(t\).)24 b(Assume,)17 b(furthermore,)f(that)g(doubles)i(ha)o(v)o(e)e
(to)g(b)q(e)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(30)75 49 y(strictly)15 b(aligned)g(at)f(addresses)h(that)e
(are)h(m)o(ultiple)i(of)e(eigh)o(t.)20 b(Then,)15 b(the)f(exten)o(t)g(of)g
(this)h(datat)o(yp)q(e)e(is)75 106 y(16)d(\(9)g(rounded)h(to)f(the)h(next)g
(m)o(ultiple)h(of)f(8\).)17 b(A)11 b(datat)o(yp)q(e)f(that)g(consists)h(of)f
(a)g(c)o(haracter)g(immediately)75 162 y(follo)o(w)o(ed)16
b(b)o(y)f(a)g(double)h(will)h(also)e(ha)o(v)o(e)g(an)g(exten)o(t)g(of)g(16.)
166 295 y Fn(Discussion:)166 344 y Fs(The)f(de\014nition)g(of)f(exten)o(t)i
(is)f(motiv)n(ated)e(b)o(y)i(the)h(assumption)d(that)i(the)h(amoun)o(t)d(of)i
(padding)f(added)h(at)75 394 y(the)f(end)g(of)f(eac)o(h)h(structure)i(in)d
(an)h(arra)o(y)f(of)g(structures)j(is)e(the)g(least)g(needed)h(to)e(ful\014l)
f(alignmen)o(t)g(constrain)o(ts.)75 444 y(This)k(condition)g(w)o(ould)f(b)q
(e)i(violated)f(b)o(y)g(a)g(compiler)f(that)h(alw)o(a)o(ys)f(align)g
(structures)k(in)d(an)g(arra)o(y)g(to)g(double)75 494 y(w)o(ord)i(b)q
(oundaries,)g(ev)o(en)g(if)f(they)h(do)g(not)g(con)o(tain)f(double)g(w)o(ord)
h(comp)q(onen)o(ts.)26 b(On)17 b(a)f(mac)o(hine)g(with)g(suc)o(h)75
544 y(h)o(yp)q(othetical)h(compiler)e(some)h(of)g(the)h(functions)g(in)o(tro)
q(duced)h(b)q(elo)o(w)e(b)q(ecome)h(less)g(useful.)27 b(This)16
b(is)h(further)75 594 y(discussed)f(in)d(Section)h(1.13.6.)75
798 y Fr(1.13.1)49 b(Datat)o(yp)q(e)17 b(constructo)o(rs)75
884 y Ft(Contiguous)47 b FA(The)16 b(simplest)i(datat)o(yp)q(e)e(constructor)
f(is)i Ft(MPI)p 1171 884 14 2 v 16 w(TYPE)p 1304 884 V 17 w(CONTIGUOUS)h
FA(whic)o(h)f(allo)o(ws)75 940 y(replication)g(of)e(a)g(datat)o(yp)q(e)f(in)o
(to)h(con)o(tiguous)h(lo)q(cations.)75 1044 y Ft(MPI)p 160
1044 V 16 w(TYPE)p 293 1044 V 17 w(CONTIGUOUS\(count,)h(oldt)o(yp)q(e,)f
(newt)o(yp)q(e\))117 1121 y Fs(IN)155 b Ft(count)482 b Fs(replication)14
b(coun)o(t)g(\(nonnegativ)o(e)g(in)o(teger\))117 1196 y(IN)155
b Ft(oldt)o(yp)q(e)450 b Fs(old)13 b(datat)o(yp)q(e)i(\(handle\))117
1271 y(OUT)108 b Ft(newt)o(yp)q(e)433 b Fs(new)15 b(datat)o(yp)q(e)f
(\(handle\))166 1396 y Ft(newt)o(yp)q(e)19 b FA(is)f(the)f(datat)o(yp)q(e)g
(obtained)h(b)o(y)f(concatenating)h Ft(count)h FA(copies)f(of)f
Ft(oldt)o(yp)q(e)p FA(.)27 b(Concate-)75 1452 y(nation)15 b(is)h(de\014ned)h
(using)f Fq(extent)e FA(as)h(the)h(size)g(of)e(the)i(concatenated)f(copies.)
166 1509 y(Example:)26 b(let)18 b Ft(oldt)o(yp)q(e)h FA(ha)o(v)o(e)e(t)o(yp)q
(e)h(map)g Fl(f)p FA(\()p Fp(double)n Fi(;)8 b FA(0\))p Fi(;)g
FA(\()p Fp(char)m Fi(;)g FA(8\))p Fl(g)p Fi(;)16 b FA(with)i(exten)o(t)g(16,)
f(and)h(let)75 1565 y Ft(count)c FA(=)f(3.)19 b(The)d(t)o(yp)q(e)f(map)g(of)g
(the)g(datat)o(yp)q(e)g(returned)g(b)o(y)h Ft(newt)o(yp)q(e)h
FA(is)75 1622 y Fl(f)p FA(\()p Fp(double)o Fi(;)8 b FA(0\))p
Fi(;)g FA(\()p Fp(char)m Fi(;)g FA(8\))p Fi(;)g FA(\()p Fp(doub)o(le)m
Fi(;)g FA(16\))p Fi(;)g FA(\()p Fp(char)m Fi(;)g FA(24\))p
Fi(;)g FA(\()p Fp(doubl)o(e)m Fi(;)g FA(32\))p Fi(;)g FA(\()p
Fp(char)m Fi(;)g FA(40\))p Fl(g)p FA(;)75 1678 y(i.e.,)15 b(alternating)g
Fp(double)g FA(and)g Fp(char)g FA(elemen)o(ts,)g(with)h(displacemen)o(ts)g(0)
p Fi(;)8 b FA(8)p Fi(;)g FA(16)p Fi(;)g FA(24)o Fi(;)f FA(32)p
Fi(;)g FA(40.)166 1735 y(In)16 b(general,)f(assume)g(that)g(the)g(t)o(yp)q(e)
g(map)g(of)g Ft(oldt)o(yp)q(e)h FA(is)75 1791 y Fl(f)p FA(\()p
Fi(ty)r(pe)200 1798 y Fh(0)218 1791 y Fi(;)8 b(disp)323 1798
y Fh(0)341 1791 y FA(\))p Fi(;)g(:::;)g FA(\()o Fi(ty)r(pe)541
1798 y Fg(n)p Fj(\000)p Fh(1)604 1791 y Fi(;)g(disp)709 1798
y Fg(n)p Fj(\000)p Fh(1)773 1791 y FA(\))p Fl(g)p Fi(;)75 1847
y FA(with)16 b(exten)o(t)e Fi(extent)p FA(.)22 b(Then)15 b
Ft(newt)o(yp)q(e)i FA(has)e(a)g(t)o(yp)q(e)h(map)f(with)g Fp(count)9
b Fl(\001)h Fp(n)15 b FA(en)o(tries)h(de\014ned)g(b)o(y:)75
1904 y Fl(f)p FA(\()p Fi(ty)r(pe)200 1911 y Fh(0)218 1904 y
Fi(;)8 b(disp)323 1911 y Fh(0)341 1904 y FA(\))p Fi(;)g(:::;)g
FA(\()o Fi(ty)r(pe)541 1911 y Fg(n)p Fj(\000)p Fh(1)604 1904
y Fi(;)g(disp)709 1911 y Fg(n)p Fj(\000)p Fh(1)773 1904 y FA(\))p
Fi(;)g FA(\()p Fi(ty)r(pe)914 1911 y Fh(0)931 1904 y Fi(;)g(disp)1036
1911 y Fh(0)1053 1904 y FA(+)p Fi(extent)p FA(\))p Fi(;)g(:::;)g
FA(\()p Fi(ty)r(pe)1416 1911 y Fg(n)p Fj(\000)p Fh(1)1480 1904
y Fi(;)g(disp)1585 1911 y Fg(n)p Fj(\000)p Fh(1)1649 1904 y
FA(+)p Fi(extent)p FA(\))p Fi(;)g(:::;)75 1960 y FA(\()p Fi(ty)r(pe)177
1967 y Fh(0)196 1960 y Fi(;)g(disp)301 1967 y Fh(0)328 1960
y FA(+)j Fi(extent)g Fl(\001)f FA(\()p Fp(count)f Fl(\000)h
FA(1\)\))p Fi(;)e(:::;)g FA(\()o Fi(ty)r(pe)968 1967 y Fg(n)p
Fj(\000)p Fh(1)1031 1960 y Fi(;)g(disp)1136 1967 y Fg(n)p Fj(\000)p
Fh(1)1210 1960 y FA(+)i Fi(extent)i Fl(\001)d FA(\()p Fp(count)h
Fl(\000)g FA(1\)\))p Fl(g)p Fi(:)75 2080 y Ft(V)o(ecto)o(r)45
b FA(The)16 b(function)g Ft(MPI)p 600 2080 V 16 w(TYPE)p 733
2080 V 17 w(VECTOR)g FA(is)g(a)f(more)g(general)h(constructor)e(that)h(allo)o
(ws)g(repli-)75 2137 y(cation)20 b(of)g(a)g(datat)o(yp)q(e)f(in)o(to)h(lo)q
(cations)h(that)e(consist)i(of)e(equally)j(spaced)f(blo)q(c)o(ks.)35
b(Eac)o(h)20 b(blo)q(c)o(k)g(is)75 2193 y(obtained)g(b)o(y)f(concatenating)h
(the)f(same)g(n)o(um)o(b)q(er)h(of)f(copies)h(of)f(the)g(old)h(datat)o(yp)q
(e.)32 b(The)19 b(spacing)75 2250 y(b)q(et)o(w)o(een)d(blo)q(c)o(ks)f(is)h(a)
f(m)o(ultiple)i(of)e(the)g(exten)o(t)g(of)g(the)g(old)h(datat)o(yp)q(e.)-32
46 y Fv(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: 31 33
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(31)75 49 y Ft(MPI)p 160 49 14 2 v 16 w(TYPE)p
293 49 V 17 w(VECTOR\()16 b(count,)g(oldt)o(yp)q(e,)g(stride,)f(blo)q
(cklength,)i(newt)o(yp)q(e\))117 126 y Fs(IN)155 b Ft(count)482
b Fs(n)o(um)o(b)q(er)13 b(of)h(blo)q(c)o(ks)g(\(nonnegativ)o(e)f(in)o
(teger\))117 202 y(IN)155 b Ft(oldt)o(yp)q(e)450 b Fs(old)13
b(datat)o(yp)q(e)i(\(handle\))117 277 y(IN)155 b Ft(stride)484
b Fs(n)o(um)o(b)q(er)13 b(of)f(elemen)o(ts)h(b)q(et)o(w)o(een)h(start)g(of)f
(eac)o(h)g(blo)q(c)o(k)g(\(in)o(te-)905 333 y(ger\))117 408
y(IN)155 b Ft(blo)q(cklength)371 b Fs(n)o(um)o(b)q(er)16 b(of)h(elemen)o(ts)g
(in)f(eac)o(h)i(blo)q(c)o(k)e(\(nonnegativ)o(e)h(in)o(te-)905
465 y(ger\))117 540 y(OUT)108 b Ft(newt)o(yp)q(e)433 b Fs(new)15
b(datat)o(yp)q(e)f(\(handle\))166 664 y FA(Example:)20 b(Assume,)15
b(again,)g(that)g Ft(oldt)o(yp)q(e)h FA(has)f(t)o(yp)q(e)g(map)g
Fl(f)p FA(\()p Fp(double)o Fi(;)8 b FA(0\))p Fi(;)g FA(\()p
Fp(char)m Fi(;)g FA(8\))p Fl(g)p Fi(;)13 b FA(with)j(ex-)75
721 y(ten)o(t)g(16.)21 b(A)c(call)g(to)e Ft(MPI)p 527 721 V
16 w(TYPE)p 660 721 V 17 w(VECTOR\()i(2,)e(oldt)o(yp)q(e,)i(4,)f(3,)f(newt)o
(yp)q(e\))j FA(will)g(create)d(the)h(datat)o(yp)q(e)75 777
y(with)g(t)o(yp)q(e)f(map)75 834 y Fl(f)p FA(\()p Fp(double)o
Fi(;)8 b FA(0\))p Fi(;)g FA(\()p Fp(char)m Fi(;)g FA(8\))p
Fi(;)g FA(\()p Fp(doub)o(le)m Fi(;)g FA(16\))p Fi(;)g FA(\()p
Fp(char)m Fi(;)g FA(24\))p Fi(;)g FA(\()p Fp(doubl)o(e)m Fi(;)g
FA(32\))p Fi(;)g FA(\()p Fp(char)m Fi(;)g FA(40\))p Fi(;)75
890 y FA(\()p Fp(double)o Fi(;)g FA(64\))p Fi(;)g FA(\()p Fp(char)m
Fi(;)g FA(72\))p Fi(;)g FA(\()p Fp(do)o(uble)m Fi(;)g FA(80\))p
Fi(;)g FA(\()p Fp(char)m Fi(;)g FA(88\))p Fi(;)g FA(\()p Fp(dou)o(ble)m
Fi(;)g FA(96\))p Fi(;)g FA(\()p Fp(char)m Fi(;)g FA(104\))p
Fl(g)i FA(:)g(t)o(w)o(o)f(blo)q(c)o(ks)h(with)75 947 y(three)15
b(copies)h(eac)o(h)g(of)e(the)i(old)f(t)o(yp)q(e,)g(starting)g(4*16)f(apart.)
166 1003 y(A)h(call)h(to)f Ft(MPI)p 439 1003 V 16 w(TYPE)p
572 1003 V 17 w(VECTOR\(3,)g(oldt)o(yp)q(e,)h(-2,)f(1,)f(newt)o(yp)q(e\))j
FA(will)g(create)e(the)g(datat)o(yp)q(e)75 1060 y Fl(f)p FA(\()p
Fp(double)o Fi(;)8 b FA(0\))p Fi(;)g FA(\()p Fp(char)m Fi(;)g
FA(8\))p Fi(;)g FA(\()p Fp(doub)o(le)m Fi(;)g Fl(\000)p FA(32\))p
Fi(;)g FA(\()p Fp(char)m Fi(;)g Fl(\000)p FA(24\))p Fi(;)g
FA(\()p Fp(double)m Fi(;)g Fl(\000)p FA(64\))p Fi(;)g FA(\()p
Fp(char)m Fi(;)g Fl(\000)p FA(56\))p Fl(g)p Fi(:)166 1116 y
FA(In)16 b(general,)f(assume)g(that)g Ft(oldt)o(yp)q(e)h FA(has)f(t)o(yp)q(e)
g(map)75 1172 y Fl(f)p FA(\()p Fi(ty)r(pe)200 1179 y Fh(0)218
1172 y Fi(;)8 b(disp)323 1179 y Fh(0)341 1172 y FA(\))p Fi(;)g(:::;)g
FA(\()o Fi(ty)r(pe)541 1179 y Fg(n)p Fj(\000)p Fh(1)604 1172
y Fi(;)g(disp)709 1179 y Fg(n)p Fj(\000)p Fh(1)773 1172 y FA(\))p
Fl(g)p Fi(;)75 1229 y FA(with)k(exten)o(t)e Fi(extent)p FA(.)20
b(The)12 b(newly)g(created)f(datat)o(yp)q(e)g(has)g(a)g(t)o(yp)q(e)g(map)g
(with)g Fp(count)r Fl(\001)r Fp(blocklength)p Fl(\001)r Fi(n)75
1285 y FA(en)o(tries:)75 1342 y Fl(f)p FA(\()p Fi(ty)r(pe)200
1349 y Fh(0)218 1342 y Fi(;)d(disp)323 1349 y Fh(0)341 1342
y FA(\))p Fi(;)g(:::;)g FA(\()o Fi(ty)r(pe)541 1349 y Fg(n)p
Fj(\000)p Fh(1)604 1342 y Fi(;)g(disp)709 1349 y Fg(n)p Fj(\000)p
Fh(1)773 1342 y FA(\))p Fi(;)75 1398 y FA(\()p Fi(ty)r(pe)177
1405 y Fh(0)196 1398 y Fi(;)g(disp)301 1405 y Fh(0)328 1398
y FA(+)j Fi(extent)p FA(\))p Fi(;)d(:::;)g FA(\()p Fi(ty)r(pe)702
1405 y Fg(n)p Fj(\000)p Fh(1)765 1398 y Fi(;)g(disp)870 1405
y Fg(n)p Fj(\000)p Fh(1)944 1398 y FA(+)i Fi(extent)p FA(\))p
Fi(;)e(:::;)75 1455 y FA(\()p Fi(ty)r(pe)177 1462 y Fh(0)196
1455 y Fi(;)g(disp)301 1462 y Fh(0)320 1455 y FA(+)s(\()p Fp(blocklength)q
Fl(\000)s FA(1\))s Fl(\001)s Fi(extent)p FA(\))p Fi(;)g(:::;)f
FA(\()p Fi(ty)r(pe)1066 1462 y Fg(n)p Fj(\000)p Fh(1)1128 1455
y Fi(;)h(disp)1233 1462 y Fg(n)p Fj(\000)p Fh(1)1300 1455 y
FA(+)s(\()p Fp(blocklength)p Fl(\000)s FA(1\))s Fl(\001)s Fi(extent)p
FA(\))p Fi(;)75 1511 y FA(\()p Fi(ty)r(pe)177 1518 y Fh(0)196
1511 y Fi(;)g(disp)301 1518 y Fh(0)328 1511 y FA(+)j Fp(stride)e
Fl(\001)h Fi(extent)p FA(\))p Fi(;)e(:::;)g FA(\()p Fi(ty)r(pe)878
1518 y Fg(n)p Fj(\000)p Fh(1)941 1511 y Fi(;)g(disp)1046 1518
y Fg(n)p Fj(\000)p Fh(1)1120 1511 y FA(+)i Fp(stride)g Fl(\001)f
Fi(extent)p FA(\))p Fi(;)f(:::;)75 1568 y FA(\()p Fi(ty)r(pe)177
1575 y Fh(0)196 1568 y Fi(;)g(disp)301 1575 y Fh(0)328 1568
y FA(+)j(\()p Fp(stride)d FA(+)j Fp(blocklength)e Fl(\000)h
FA(1\))g Fl(\001)f Fi(extent)p FA(\))p Fi(;)f(:::;)75 1624
y FA(\()p Fi(ty)r(pe)177 1631 y Fg(n)p Fj(\000)p Fh(1)242 1624
y Fi(;)g(disp)347 1631 y Fg(n)p Fj(\000)p Fh(1)421 1624 y FA(+)i(\()p
Fp(stride)f FA(+)i Fp(blocklength)d Fl(\000)j FA(1\))e Fl(\001)h
Fi(extent)p FA(\))p Fi(;)e(::::;)75 1681 y FA(\()p Fi(ty)r(pe)177
1688 y Fh(0)196 1681 y Fi(;)g(disp)301 1688 y Fh(0)328 1681
y FA(+)j Fp(stride)e Fl(\001)h FA(\()p Fp(count)f Fl(\000)h
FA(1\))g Fl(\001)f Fi(extent)p FA(\))p Fi(;)f(:::;)75 1737
y FA(\()p Fi(ty)r(pe)177 1744 y Fg(n)p Fj(\000)p Fh(1)242 1737
y Fi(;)g(disp)347 1744 y Fg(n)p Fj(\000)p Fh(1)421 1737 y FA(+)i
Fp(stride)g Fl(\001)f FA(\()p Fp(count)h Fl(\000)g FA(1\))g
Fl(\001)f Fi(extent)p FA(\))p Fi(;)f(:::;)75 1793 y FA(\()p
Fi(ty)r(pe)177 1800 y Fh(0)196 1793 y Fi(;)g(disp)301 1800
y Fh(0)328 1793 y FA(+)j(\()p Fp(stride)d Fl(\001)i FA(\()p
Fp(count)f Fl(\000)i FA(1\))e(+)i Fp(blocklength)d Fl(\000)j
FA(1\))e Fl(\001)h Fi(extent)p FA(\))p Fi(;)e(:::;)75 1850
y FA(\()p Fi(ty)r(pe)177 1857 y Fg(n)p Fj(\000)p Fh(1)242 1850
y Fi(;)g(disp)347 1857 y Fg(n)p Fj(\000)p Fh(1)421 1850 y FA(+)i(\()p
Fp(stride)f Fl(\001)h FA(\()p Fp(count)f Fl(\000)i FA(1\))e(+)i
Fp(blocklength)d Fl(\000)j FA(1\))e Fl(\001)h Fi(extent)p FA(\))p
Fl(g)166 1906 y FA(A)16 b(call)i(to)e Ft(MPI)p 443 1906 V 16
w(TYPE)p 576 1906 V 16 w(CONTIGUOUS\(count,)k(oldt)o(yp)q(e,)d(newt)o(yp)q
(e\))h FA(is)f(equiv)m(alen)o(t)h(to)e(a)g(call)i(to)75 1963
y Ft(MPI)p 160 1963 V 16 w(TYPE)p 293 1963 V 17 w(VECTOR\(count,)g(oldt)o(yp)
q(e,)g(1,)e(1,)g(newt)o(yp)q(e\))p FA(,)i(or)e(to)g(a)h(call)g(to)f
Ft(MPI)p 1495 1963 V 16 w(TYPE)p 1628 1963 V 17 w(VECTOR\(1,)75
2019 y(oldt)o(yp)q(e,)g(n,)f(count,)h(newt)o(yp)q(e\))p FA(,)h
Fp(n)e FA(arbitrary)l(.)75 2139 y Ft(Hvecto)o(r)45 b FA(The)19
b(function)h Ft(MPI)p 631 2139 V 16 w(TYPE)p 764 2139 V 17
w(HVECTOR)g FA(is)f(iden)o(tical)i(to)d Ft(MPI)p 1389 2139
V 16 w(TYPE)p 1522 2139 V 17 w(VECTOR)p FA(,)h(except)75 2196
y(that)h Ft(stride)h FA(is)g(giv)o(en)g(in)g(b)o(ytes,)g(rather)f(then)g(in)i
(elemen)o(ts.)36 b(The)20 b(use)h(for)f(b)q(oth)g(t)o(yp)q(es)h(of)f(v)o
(ector)75 2252 y(constructors)14 b(is)i(illustrated)h(in)f(Section)g(1.13.6.)
i(\()p Fp(H)c FA(is)i(used)g(for)e(\\heterogeneous"\).)-32
46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(32)75 49 y Ft(MPI)p 160 49 14 2 v 16 w(TYPE)p
293 49 V 17 w(HVECTOR\()16 b(count,)g(oldt)o(yp)q(e,)g(stride,)g(blo)q
(cklength,)g(newt)o(yp)q(e\))117 126 y Fs(IN)155 b Ft(count)482
b Fs(n)o(um)o(b)q(er)13 b(of)h(blo)q(c)o(ks)g(\(nonnegativ)o(e)f(in)o
(teger\))117 202 y(IN)155 b Ft(oldt)o(yp)q(e)450 b Fs(old)13
b(datat)o(yp)q(e)i(\(handle\))117 277 y(IN)155 b Ft(stride)484
b Fs(n)o(um)o(b)q(er)13 b(of)g(b)o(ytes)h(b)q(et)o(w)o(een)h(start)f(of)f
(eac)o(h)h(blo)q(c)o(k)f(\(in)o(teger\))117 352 y(IN)155 b
Ft(blo)q(cklength)371 b Fs(n)o(um)o(b)q(er)16 b(of)h(elemen)o(ts)g(in)f(eac)o
(h)i(blo)q(c)o(k)e(\(nonnegativ)o(e)h(in)o(te-)905 408 y(ger\))117
483 y(OUT)108 b Ft(newt)o(yp)q(e)433 b Fs(new)15 b(datat)o(yp)q(e)f
(\(handle\))166 608 y FA(Assume)h(that)g Ft(oldt)o(yp)q(e)h
FA(has)f(t)o(yp)q(e)g(map)75 664 y Fl(f)p FA(\()p Fi(ty)r(pe)200
671 y Fh(0)218 664 y Fi(;)8 b(disp)323 671 y Fh(0)341 664 y
FA(\))p Fi(;)g(:::;)g FA(\()o Fi(ty)r(pe)541 671 y Fg(n)p Fj(\000)p
Fh(1)604 664 y Fi(;)g(disp)709 671 y Fg(n)p Fj(\000)p Fh(1)773
664 y FA(\))p Fl(g)p Fi(;)75 721 y FA(with)k(exten)o(t)e Fi(extent)p
FA(.)20 b(The)12 b(newly)g(created)f(datat)o(yp)q(e)g(has)g(a)g(t)o(yp)q(e)g
(map)g(with)g Fp(count)r Fl(\001)r Fp(blocklength)p Fl(\001)r
Fi(n)75 777 y FA(en)o(tries:)75 834 y Fl(f)p FA(\()p Fi(ty)r(pe)200
841 y Fh(0)218 834 y Fi(;)d(disp)323 841 y Fh(0)341 834 y FA(\))p
Fi(;)g(:::;)g FA(\()o Fi(ty)r(pe)541 841 y Fg(n)p Fj(\000)p
Fh(1)604 834 y Fi(;)g(disp)709 841 y Fg(n)p Fj(\000)p Fh(1)773
834 y FA(\))p Fi(;)75 890 y FA(\()p Fi(ty)r(pe)177 897 y Fh(0)196
890 y Fi(;)g(disp)301 897 y Fh(0)328 890 y FA(+)j Fi(extent)p
FA(\))p Fi(;)d(:::;)g FA(\()p Fi(ty)r(pe)702 897 y Fg(n)p Fj(\000)p
Fh(1)765 890 y Fi(;)g(disp)870 897 y Fg(n)p Fj(\000)p Fh(1)944
890 y FA(+)i Fi(extent)p FA(\))p Fi(;)e(:::;)75 947 y FA(\()p
Fi(ty)r(pe)177 954 y Fh(0)196 947 y Fi(;)g(disp)301 954 y Fh(0)320
947 y FA(+)s(\()p Fp(blocklength)q Fl(\000)s FA(1\))s Fl(\001)s
Fi(extent)p FA(\))p Fi(;)g(:::;)f FA(\()p Fi(ty)r(pe)1066 954
y Fg(n)p Fj(\000)p Fh(1)1128 947 y Fi(;)h(disp)1233 954 y Fg(n)p
Fj(\000)p Fh(1)1300 947 y FA(+)s(\()p Fp(blocklength)p Fl(\000)s
FA(1\))s Fl(\001)s Fi(extent)p FA(\))p Fi(;)75 1003 y FA(\()p
Fi(ty)r(pe)177 1010 y Fh(0)196 1003 y Fi(;)g(disp)301 1010
y Fh(0)328 1003 y FA(+)j Fp(stride)o FA(\))p Fi(;)d(:::;)g
FA(\()o Fi(ty)r(pe)717 1010 y Fg(n)p Fj(\000)p Fh(1)780 1003
y Fi(;)g(disp)885 1010 y Fg(n)p Fj(\000)p Fh(1)959 1003 y FA(+)i
Fp(stride)o FA(\))p Fi(;)e(:::;)75 1060 y FA(\()p Fi(ty)r(pe)177
1067 y Fh(0)196 1060 y Fi(;)g(disp)301 1067 y Fh(0)328 1060
y FA(+)j Fp(stride)e FA(+)h(\()p Fp(blocklength)f Fl(\000)h
FA(1\))g Fl(\001)f Fi(extent)p FA(\))p Fi(;)f(:::;)75 1116
y FA(\()p Fi(ty)r(pe)177 1123 y Fg(n)p Fj(\000)p Fh(1)242 1116
y Fi(;)g(disp)347 1123 y Fg(n)p Fj(\000)p Fh(1)421 1116 y FA(+)i
Fp(stride)g FA(+)g(\()p Fp(blocklength)e Fl(\000)j FA(1\))e
Fl(\001)h Fi(extent)p FA(\))p Fi(;)e(::::;)75 1172 y FA(\()p
Fi(ty)r(pe)177 1179 y Fh(0)196 1172 y Fi(;)g(disp)301 1179
y Fh(0)328 1172 y FA(+)j Fp(stride)e Fl(\001)h FA(\()p Fp(count)f
Fl(\000)h FA(1\)\))p Fi(;)e(:::;)75 1229 y FA(\()p Fi(ty)r(pe)177
1236 y Fg(n)p Fj(\000)p Fh(1)242 1229 y Fi(;)g(disp)347 1236
y Fg(n)p Fj(\000)p Fh(1)421 1229 y FA(+)i Fp(stride)g Fl(\001)f
FA(\()p Fp(count)h Fl(\000)g FA(1\)\))p Fi(;)e(:::;)75 1285
y FA(\()p Fi(ty)r(pe)177 1292 y Fh(0)196 1285 y Fi(;)g(disp)301
1292 y Fh(0)328 1285 y FA(+)j Fp(stride)e Fl(\001)h FA(\()p
Fp(count)f Fl(\000)h FA(1\))g(+)g(\()p Fp(blocklength)e Fl(\000)j
FA(1\))e Fl(\001)h Fi(extent)p FA(\))p Fi(;)e(:::;)75 1342
y FA(\()p Fi(ty)r(pe)177 1349 y Fg(n)p Fj(\000)p Fh(1)242 1342
y Fi(;)g(disp)347 1349 y Fg(n)p Fj(\000)p Fh(1)421 1342 y FA(+)i
Fp(stride)g Fl(\001)f FA(\()p Fp(count)h Fl(\000)g FA(1\))g(+)g(\()p
Fp(blocklength)e Fl(\000)j FA(1\))e Fl(\001)h Fi(extent)p FA(\))p
Fl(g)75 1462 y Ft(Indexed)47 b FA(The)19 b(function)h Ft(MPI)p
629 1462 V 16 w(TYPE)p 762 1462 V 17 w(INDEXED)f FA(allo)o(ws)h(replication)h
(of)d(an)i(old)f(datat)o(yp)q(e)g(in)o(to)g(a)75 1518 y(sequence)c(of)e(con)o
(tiguous)h(blo)q(c)o(ks,)g(where)g(eac)o(h)g(blo)q(c)o(k)h(can)f(con)o(tain)g
(di\013eren)o(t)g(n)o(um)o(b)q(er)g(of)f(copies)i(and)75 1575
y(b)q(e)21 b(ha)o(v)o(e)f(a)g(di\013eren)o(t)h(displacemen)o(t.)37
b(All)21 b(blo)q(c)o(k)g(displacemen)o(ts)h(are)e(m)o(ultiples)j(of)c(the)i
(old)g(t)o(yp)q(e)75 1631 y(exten)o(t.)75 1735 y Ft(MPI)p 160
1735 V 16 w(TYPE)p 293 1735 V 17 w(INDEXED\()12 b(count,)i(oldt)o(yp)q(e,)g
(a)o(rra)o(y)p 926 1735 V 14 w(of)p 977 1735 V 16 w(displacements,)f(a)o(rra)
o(y)p 1376 1735 V 14 w(of)p 1427 1735 V 16 w(blo)q(cklengths,)j(newt)o(yp)q
(e\))117 1869 y Fs(IN)155 b Ft(count)482 b Fs(n)o(um)o(b)q(er)9
b(of)f(blo)q(c)o(ks)i({)f(also)f(n)o(um)o(b)q(er)h(of)g(en)o(tries)h(in)f
Fm(a)o(rra)o(y)p 1773 1869 13 2 v 15 w(of)p 1822 1869 V 14
w(displacements)905 1925 y Fs(and)14 b Fm(a)o(rra)o(y)p 1073
1925 V 15 w(of)p 1122 1925 V 14 w(blo)q(cklengths)i Fs(\(in)o(teger\))117
2000 y(IN)155 b Ft(oldt)o(yp)q(e)450 b Fs(old)13 b(datat)o(yp)q(e)i
(\(handle\))117 2075 y(IN)155 b Ft(a)o(rra)o(y)p 416 2075 14
2 v 15 w(of)p 468 2075 V 16 w(displacements)162 b Fs(displacemen)o(t)19
b(for)h(eac)o(h)g(blo)q(c)o(k,)g(in)g(m)o(ultiples)e(of)h Fm(oldt)o(yp)q(e)
905 2132 y Fs(exten)o(t)c(\(arra)o(y)f(of)f(in)o(teger\))117
2207 y(IN)155 b Ft(a)o(rra)o(y)p 416 2207 V 15 w(of)p 468 2207
V 16 w(blo)q(cklengths)191 b Fs(n)o(um)o(b)q(er)18 b(of)f(elemen)o(ts)h(p)q
(er)i(blo)q(c)o(k)d(\(arra)o(y)i(of)e(nonnegativ)o(e)905 2263
y(in)o(tegers\))117 2339 y(OUT)108 b Ft(newt)o(yp)q(e)433 b
Fs(new)15 b(datat)o(yp)q(e)f(\(handle\))166 2463 y FA(Example:)29
b(let)20 b Ft(oldt)o(yp)q(e)h FA(ha)o(v)o(e)e(t)o(yp)q(e)g(map)h
Fl(f)p FA(\()p Fp(double)n Fi(;)8 b FA(0\))p Fi(;)g FA(\()p
Fp(char)m Fi(;)g FA(8\))p Fl(g)p Fi(;)18 b FA(with)i(exten)o(t)f(16.)32
b(Let)20 b Fp(D)75 2519 y(=)k(\(4,)f(0\))17 b FA(and)g(let)h
Fp(B)24 b(=)g(\(3,)f(1\))p FA(.)j(A)17 b(call)h(to)f Ft(MPI)p
998 2519 V 16 w(TYPE)p 1131 2519 V 17 w(INDEXED\(2,)f(oldt)o(yp)q(e,)j(D,)d
(B,)i(newt)o(yp)q(e\))75 2576 y FA(returns)d(a)g(data)o(yp)q(e)g(with)g(t)o
(yp)q(e)h(map)75 2632 y Fl(f)p FA(\()p Fp(double)o Fi(;)8 b
FA(64\))p Fi(;)g FA(\()p Fp(cha)o(r)m Fi(;)g FA(72\))p Fi(;)g
FA(\()p Fp(double)m Fi(;)g FA(80\))p Fi(;)g FA(\()p Fp(cha)o(r)m
Fi(;)g FA(88\))p Fi(;)g FA(\()p Fp(double)m Fi(;)g FA(96\))p
Fi(;)g FA(\()p Fp(char)l Fi(;)g FA(104\))-32 46 y Fv(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: 33 35
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(33)75 49 y(\()p Fp(double)o Fi(;)8 b FA(0\))p
Fi(;)g FA(\()p Fp(char)m Fi(;)g FA(8\))p Fl(g)15 b FA(:)j(three)f(copies)i
(of)e(the)h(old)h(t)o(yp)q(e)f(starting)f(at)g(displacemen)o(t)i(64,)f(and)g
(one)75 106 y(cop)o(y)d(starting)g(at)f(displacemen)o(t)j(0.)166
162 y(In)f(general,)f(assume)g(that)g Ft(oldt)o(yp)q(e)h FA(has)f(t)o(yp)q(e)
g(map)75 219 y Fl(f)p FA(\()p Fi(ty)r(pe)200 226 y Fh(0)218
219 y Fi(;)8 b(disp)323 226 y Fh(0)341 219 y FA(\))p Fi(;)g(:::;)g
FA(\()o Fi(ty)r(pe)541 226 y Fg(n)p Fj(\000)p Fh(1)604 219
y Fi(;)g(disp)709 226 y Fg(n)p Fj(\000)p Fh(1)773 219 y FA(\))p
Fl(g)p Fi(;)75 275 y FA(with)i(exten)o(t)g Fq(extent)p FA(.)18
b(Let)11 b Ft(B)f FA(b)q(e)h(the)f Ft(a)o(rra)o(y)p 802 275
14 2 v 15 w(of)p 854 275 V 15 w(blo)q(cklength)j FA(parameter)c(and)h
Ft(D)g FA(b)q(e)h(the)f Ft(a)o(rra)o(y)p 1661 275 V 15 w(of)p
1713 275 V 16 w(displacements)75 332 y FA(parameter.)19 b(The)d(newly)g
(created)f(datat)o(yp)q(e)f(has)i Fi(n)10 b Fl(\001)1025 299
y Ff(P)1068 310 y Fe(count)s Fj(\000)p Fh(1)1068 343 y Fg(i)p
Fh(=0)1198 332 y Ft(B)p FA([)p Ft(i)p FA(])k(en)o(tries:)75
388 y Fl(f)p FA(\()p Fi(ty)r(pe)200 395 y Fh(0)218 388 y Fi(;)8
b(disp)323 395 y Fh(0)351 388 y FA(+)i Ft(D)p FA([)p Ft(0)p
FA(])f Fl(\001)h Fi(extent)p FA(\))p Fi(;)e(:::;)g FA(\()p
Fi(ty)r(pe)838 395 y Fg(n)p Fj(\000)p Fh(1)901 388 y Fi(;)g(disp)1006
395 y Fg(n)p Fj(\000)p Fh(1)1080 388 y FA(+)j Ft(D)p FA([)p
Ft(0)p FA(])e Fl(\001)g Fi(extent)p FA(\))p Fi(;)f(:::;)75
444 y FA(\()p Fi(ty)r(pe)177 451 y Fh(0)196 444 y Fi(;)g(disp)301
451 y Fh(0)325 444 y FA(+)f(\()p Ft(D)p FA([)p Ft(0)p FA(])e(+)i
Ft(B)p FA([)p Ft(0)p FA(])f Fl(\000)h FA(1\))g Fl(\001)g Fi(extent)p
FA(\))p Fi(;)h(:::;)g FA(\()p Fi(ty)r(pe)1037 451 y Fg(n)p
Fj(\000)p Fh(1)1099 444 y Fi(;)g(disp)1204 451 y Fg(n)p Fj(\000)p
Fh(1)1275 444 y FA(+)f(\()p Ft(D)p FA([)p Ft(0)p FA(])e(+)i
Ft(B)p FA([)p Ft(0)p FA(])g Fl(\000)g FA(1\))g Fl(\001)g Fi(extent)p
FA(\))p Fi(;)h(:::;)75 501 y FA(\()p Fi(ty)r(pe)177 508 y Fh(0)196
501 y Fi(;)g(disp)301 508 y Fh(0)328 501 y FA(+)j Ft(D)p FA([)p
Ft(count)f Fl(\000)h Ft(1)p FA(])e Fl(\001)h Fi(extent)p FA(\))p
Fi(;)e(:::;)g FA(\()p Fi(ty)r(pe)977 508 y Fg(n)p Fj(\000)p
Fh(1)1041 501 y Fi(;)g(disp)1146 508 y Fg(n)p Fj(\000)p Fh(1)1219
501 y FA(+)j Ft(D)p FA([)p Ft(count)g Fl(\000)f Ft(1)p FA(])g
Fl(\001)f Fi(extent)p FA(\))p Fi(;)f(:::;)75 557 y FA(\()p
Fi(ty)r(pe)177 564 y Fh(0)196 557 y Fi(;)g(disp)301 564 y Fh(0)328
557 y FA(+)j(\()p Ft(D)p FA([)p Ft(count)f Fl(\000)h Ft(1)p
FA(])e(+)h Ft(B)p FA([)p Ft(count)i Fl(\000)e Ft(1)p FA(])g
Fl(\000)g FA(1\))g Fl(\001)f Fi(extent)p FA(\))p Fi(;)f(:::;)75
614 y FA(\()p Fi(ty)r(pe)177 621 y Fg(n)p Fj(\000)p Fh(1)242
614 y Fi(;)g(disp)347 621 y Fg(n)p Fj(\000)p Fh(1)421 614 y
FA(+)i(\()p Ft(D)p FA([)p Ft(count)h Fl(\000)f Ft(1)p FA(])g(+)g
Ft(B)p FA([)p Ft(count)i Fl(\000)e Ft(1)p FA(])g Fl(\000)g
FA(1\))g Fl(\001)f Fi(extent)p FA(\))p Fl(g)p Fi(:)166 670
y FA(A)k(call)g(to)f Ft(MPI)p 431 670 V 16 w(TYPE)p 564 670
V 17 w(VECTOR\(count,)j(oldt)o(yp)q(e,)f(stride,)f(blo)q(cklength,)i(newt)o
(yp)q(e\))f FA(is)f(equiv)m(alen)o(t)75 727 y(to)i(a)f(call)j(to)d
Ft(MPI)p 392 727 V 16 w(TYPE)p 525 727 V 17 w(INDEX\(count,)i(oldt)o(yp)q(e,)
g(D,)e(B,)h(newt)o(yp)q(e\))i FA(where)616 829 y Ft(D)p FA([)p
Ft(j)p FA(])12 b(=)h Fi(j)g Fl(\001)c Ft(stride)16 b Fi(;)8
b(j)14 b FA(=)f(0)p Fi(;)8 b(:::;)g Fp(count)f Fl(\000)j FA(1)p
Fi(;)75 931 y FA(and)588 987 y Ft(B)p FA([)p Ft(j)p FA(])i(=)h
Ft(blo)q(cklength)k Fi(;)8 b(j)14 b FA(=)f(0)p Fi(;)8 b(:::;)g
Fp(count)f Fl(\000)j FA(1)p Fi(:)75 1107 y Ft(Hindexed)47 b
FA(The)11 b(function)h Ft(MPI)p 643 1107 V 15 w(TYPE)p 775
1107 V 17 w(HINDEXED)f FA(is)g(iden)o(tical)i(to)d Ft(MPI)p
1383 1107 V 15 w(TYPE)p 1515 1107 V 17 w(INDEXED)p FA(,)g(except)75
1164 y(that)19 b(blo)q(c)o(k)i(displacemen)o(ts)h(in)41 b Ft(a)o(rra)o(y)p
774 1164 V 14 w(of)p 825 1164 V 16 w(displacements)20 b FA(are)g(sp)q
(eci\014ed)i(in)f(b)o(ytes,)g(rather)e(than)h(in)75 1220 y(m)o(ultiples)d(of)
e(the)g Ft(oldt)o(yp)q(e)h FA(exten)o(t.)75 1324 y Ft(MPI)p
160 1324 V 16 w(TYPE)p 293 1324 V 17 w(HINDEXED\()10 b(count,)i(oldt)o(yp)q
(e,)g(a)o(rra)o(y)p 952 1324 V 14 w(of)p 1003 1324 V 16 w(displacements,)f(a)
o(rra)o(y)p 1400 1324 V 14 w(of)p 1451 1324 V 16 w(blo)q(cklength,)i(newt)o
(yp)q(e\))117 1458 y Fs(IN)155 b Ft(count)482 b Fs(n)o(um)o(b)q(er)9
b(of)f(blo)q(c)o(ks)i({)f(also)f(n)o(um)o(b)q(er)h(of)g(en)o(tries)h(in)f
Fm(a)o(rra)o(y)p 1773 1458 13 2 v 15 w(of)p 1822 1458 V 14
w(displacements)905 1514 y Fs(and)14 b Fm(a)o(rra)o(y)p 1073
1514 V 15 w(of)p 1122 1514 V 14 w(blo)q(cklengths)p Fs(\(in)o(teger\))117
1589 y(IN)155 b Ft(oldt)o(yp)q(e)450 b Fs(old)13 b(datat)o(yp)q(e)i
(\(handle\))117 1664 y(IN)155 b Ft(a)o(rra)o(y)p 416 1664 14
2 v 15 w(of)p 468 1664 V 16 w(displacements)162 b Fs(b)o(yte)14
b(displacemen)o(t)g(of)f(eac)o(h)h(blo)q(c)o(k)g(\(arra)o(y)g(of)f(in)o
(teger\))117 1740 y(IN)155 b Ft(a)o(rra)o(y)p 416 1740 V 15
w(of)p 468 1740 V 16 w(blo)q(cklength)208 b Fs(n)o(um)o(b)q(er)15
b(of)g(elemen)o(ts)h(in)f(eac)o(h)h(blo)q(c)o(k)g(\(arra)o(y)f(of)g(nonnega-)
905 1796 y(tiv)o(e)f(in)o(tegers\))117 1871 y(OUT)108 b Ft(newt)o(yp)q(e)433
b Fs(new)15 b(datat)o(yp)q(e)f(\(handle\))166 1996 y FA(Assume)h(that)g
Ft(oldt)o(yp)q(e)h FA(has)f(t)o(yp)q(e)g(map)75 2052 y Fl(f)p
FA(\()p Fi(ty)r(pe)200 2059 y Fh(0)218 2052 y Fi(;)8 b(disp)323
2059 y Fh(0)341 2052 y FA(\))p Fi(;)g(:::;)g FA(\()o Fi(ty)r(pe)541
2059 y Fg(n)p Fj(\000)p Fh(1)604 2052 y Fi(;)g(disp)709 2059
y Fg(n)p Fj(\000)p Fh(1)773 2052 y FA(\))p Fl(g)p Fi(;)75 2109
y FA(with)i(exten)o(t)g Fq(extent)p FA(.)18 b(Let)11 b Ft(B)f
FA(b)q(e)h(the)f Ft(a)o(rra)o(y)p 802 2109 V 15 w(of)p 854
2109 V 15 w(blo)q(cklength)j FA(parameter)c(and)h Ft(D)g FA(b)q(e)h(the)f
Ft(a)o(rra)o(y)p 1661 2109 V 15 w(of)p 1713 2109 V 16 w(displacements)75
2165 y FA(parameter.)42 b(The)23 b(newly)g(created)g(datat)o(yp)q(e)f(has)h
(a)f(t)o(yp)q(e)h(map)f(with)i Fi(n)15 b Fl(\001)1470 2133
y Ff(P)1514 2143 y Fe(count)r Fj(\000)p Fh(1)1514 2176 y Fg(i)p
Fh(=0)1643 2165 y Ft(B)p FA([)p Ft(i)p FA(])22 b(en)o(tries:)75
2221 y Fl(f)p FA(\()p Fi(ty)r(pe)200 2228 y Fh(0)218 2221 y
Fi(;)8 b(disp)323 2228 y Fh(0)351 2221 y FA(+)i Ft(D)p FA([)p
Ft(0)p FA(])o(\))p Fi(;)e(:::;)g FA(\()p Fi(ty)r(pe)678 2228
y Fg(n)p Fj(\000)p Fh(1)740 2221 y Fi(;)g(disp)845 2228 y Fg(n)p
Fj(\000)p Fh(1)919 2221 y FA(+)i Ft(D)p FA([)p Ft(0)p FA(])o(\))p
Fi(;)e(:::;)75 2278 y FA(\()p Fi(ty)r(pe)177 2285 y Fh(0)196
2278 y Fi(;)g(disp)301 2285 y Fh(0)325 2278 y FA(+)f Ft(D)p
FA([)p Ft(0)p FA(])e(+)i(\()p Ft(B)p FA([)p Ft(0)p FA(])f Fl(\000)h
FA(1\))g Fl(\001)g Fi(extent)p FA(\))p Fi(;)h(:::;)g FA(\()p
Fi(ty)r(pe)1037 2285 y Fg(n)p Fj(\000)p Fh(1)1099 2278 y Fi(;)g(disp)1204
2285 y Fg(n)p Fj(\000)p Fh(1)1275 2278 y FA(+)f Ft(D)p FA([)p
Ft(0)p FA(])f(+)h(\()p Ft(B)p FA([)p Ft(0)p FA(])f Fl(\000)h
FA(1\))g Fl(\001)g Fi(extent)p FA(\))p Fi(;)h(:::;)75 2334
y FA(\()p Fi(ty)r(pe)177 2341 y Fh(0)196 2334 y Fi(;)g(disp)301
2341 y Fh(0)328 2334 y FA(+)j Ft(D)p FA([)p Ft(count)f Fl(\000)h
Ft(1)p FA(])o(\))p Fi(;)d(:::;)g FA(\()p Fi(ty)r(pe)817 2341
y Fg(n)p Fj(\000)p Fh(1)879 2334 y Fi(;)g(disp)984 2341 y Fg(n)p
Fj(\000)p Fh(1)1058 2334 y FA(+)j Ft(D)p FA([)p Ft(count)g
Fl(\000)f Ft(1)p FA(])o(\))p Fi(;)e(:::;)75 2391 y FA(\()p
Fi(ty)r(pe)177 2398 y Fh(0)196 2391 y Fi(;)g(disp)301 2398
y Fh(0)328 2391 y FA(+)j Ft(D)p FA([)p Ft(count)f Fl(\000)h
Ft(1)p FA(])e(+)i(\()p Ft(B)p FA([)p Ft(count)g Fl(\000)f Ft(1)p
FA(])g Fl(\000)g FA(1\))g Fl(\001)f Fi(extent)p FA(\))p Fi(;)f(:::;)75
2447 y FA(\()p Fi(ty)r(pe)177 2454 y Fg(n)p Fj(\000)p Fh(1)242
2447 y Fi(;)g(disp)347 2454 y Fg(n)p Fj(\000)p Fh(1)421 2447
y FA(+)i Ft(D)p FA([)p Ft(count)h Fl(\000)g Ft(1)p FA(])e(+)i(\()p
Ft(B)p FA([)p Ft(count)g Fl(\000)f Ft(1)p FA(])g Fl(\000)g
FA(1\))g Fl(\001)f Fi(extent)p FA(\))p Fl(g)p Fi(:)75 2567
y Ft(Struct)49 b Fp(MPI)p 315 2567 15 2 v 17 w(TYPE)p 428 2567
V 16 w(STRUCT)15 b FA(is)h(the)f(most)g(general)h(constructor:)j(It)c
(further)h(generalizes)h(the)e(previ-)75 2624 y(ous)g(one)g(in)h(that)f(it)g
(allo)o(ws)h(eac)o(h)f(blo)q(c)o(k)h(to)e(consist)i(of)f(replications)i(of)d
(a)h(di\013eren)o(t)h(datat)o(yp)q(e.)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(34)75 49 y Ft(MPI)p 160 49 14 2 v 16 w(TYPE)p
293 49 V 17 w(STRUCT\(count,)12 b(a)o(rra)o(y)p 729 49 V 15
w(of)p 781 49 V 16 w(t)o(yp)q(es,)g(a)o(rra)o(y)p 1014 49 V
14 w(of)p 1065 49 V 16 w(displacements,)f(a)o(rra)o(y)p 1462
49 V 15 w(of)p 1514 49 V 16 w(blo)q(cklengths,)i(new-)75 106
y(t)o(yp)q(e\))117 183 y Fs(IN)155 b Ft(count)482 b Fs(n)o(um)o(b)q(er)18
b(of)h(blo)q(c)o(ks)g(\(in)o(teger\))g({)g(also)f(n)o(um)o(b)q(er)h(of)f(en)o
(tries)905 239 y(in)c(arra)o(ys)h Fm(a)o(rra)o(y)p 1167 239
13 2 v 15 w(of)p 1216 239 V 14 w(t)o(yp)q(es)p Fs(,)h Fm(a)o(rra)o(y)p
1432 239 V 15 w(of)p 1481 239 V 14 w(displacements)e Fs(and)g
Fm(a)o(r-)905 296 y(ra)o(y)p 959 296 V 15 w(of)p 1008 296 V
15 w(blo)q(cklengths)117 371 y Fs(IN)155 b Ft(a)o(rra)o(y)p
416 371 14 2 v 15 w(of)p 468 371 V 16 w(t)o(yp)q(es)327 b Fs(t)o(yp)q(e)20
b(of)f(elemen)o(ts)g(in)g(eac)o(h)h(blo)q(c)o(k)f(\(arra)o(y)g(of)g(handles)g
(to)905 427 y(datat)o(yp)q(e)14 b(ob)r(jects\))117 503 y(IN)155
b Ft(a)o(rra)o(y)p 416 503 V 15 w(of)p 468 503 V 16 w(displacements)162
b Fs(b)o(yte)14 b(displacemen)o(t)g(of)f(eac)o(h)h(blo)q(c)o(k)g(\(arra)o(y)g
(of)f(in)o(teger\))117 578 y(IN)155 b Ft(a)o(rra)o(y)p 416
578 V 15 w(of)p 468 578 V 16 w(blo)q(cklength)208 b Fs(n)o(um)o(b)q(er)13
b(of)h(elemen)o(ts)f(in)h(eac)o(h)g(blo)q(c)o(k)g(\(arra)o(y)g(of)f(in)o
(teger\))117 653 y(OUT)108 b Ft(newt)o(yp)q(e)433 b Fs(new)15
b(datat)o(yp)q(e)f(\(handle\))166 777 y FA(Example:)20 b(Let)c
Ft(t)o(yp)q(e)g FA(ha)o(v)o(e)f(t)o(yp)q(e)g(map)738 879 y
Fl(f)p FA(\()p Fp(double)o Fi(;)8 b FA(0\))p Fi(;)g FA(\()p
Fp(char)m Fi(;)g FA(8\))p Fl(g)p Fi(;)75 982 y FA(with)24 b(exten)o(t)g(16.)
45 b(Let)24 b Fp(D)g(=)g(\(0,)f(16,)g(26\))p FA(,)j Fp(B)d(=)h(\(2,)g(1,)f
(3\))h FA(and)g Fp(T)f(=)h(\(MPI)p 1551 982 15 2 v 17 w(FLOAT,)f(type1,)75
1038 y(MPI)p 150 1038 V 17 w(CHAR\))p FA(.)13 b(Then)i(a)f(call)h(to)f
Ft(MPI)p 687 1038 14 2 v 16 w(TYPE)p 820 1038 V 17 w(STRUCT\(3,)g(T,)g(D,)g
(B,)g(newt)o(yp)q(e\))i FA(returns)e(datat)o(yp)q(e)g(with)75
1094 y(t)o(yp)q(e)h(map.)75 1151 y Fl(f)p FA(\()p Fp(float)o
Fi(;)8 b FA(0\))p Fi(;)g FA(\()p Fp(float)m Fi(;)g FA(4\))p
Fi(;)g FA(\()p Fp(doub)o(le)m Fi(;)g FA(16\))p Fi(;)g FA(\()p
Fp(char)m Fi(;)g FA(24\))p Fi(;)g FA(\()p Fp(char)m Fi(;)g
FA(26\))p Fi(;)g FA(\()p Fp(ch)o(ar)m Fi(;)g FA(27\))p Fi(;)g
FA(\()p Fp(char)m Fi(;)g FA(28\))p Fl(g)j FA(:)75 1207 y(t)o(w)o(o)f(copies)j
(of)e Ft(MPI)p 421 1207 V 15 w(FLO)o(A)l(T)h FA(starting)f(at)g(0,)g(follo)o
(w)o(ed)h(b)o(y)f(one)h(cop)o(y)f(of)g Ft(t)o(yp)q(e1)i FA(starting)e(at)f
(16,)i(follo)o(w)o(ed)75 1264 y(b)o(y)i(three)g(copies)h(of)e
Ft(MPI)p 520 1264 V 16 w(CHAR)p FA(,)i(starting)e(at)g(26.)19
b(\(W)l(e)14 b(assume)g(that)f(a)g(\015oat)h(o)q(ccupies)h(four)f(b)o
(ytes.\))166 1320 y(In)i(general,)f(let)h Ft(T)f FA(b)q(e)h(the)f
Ft(a)o(rra)o(y)p 742 1320 V 14 w(of)p 793 1320 V 16 w(t)o(yp)q(es)i
FA(parameter,)d(where)31 b Ft(T[i])15 b FA(is)h(a)f(handle)h(to)75
1377 y Fi(ty)r(pe)159 1384 y Fg(i)186 1377 y FA(=)d Fl(f)p
FA(\()p Fi(ty)r(pe)359 1360 y Fg(i)359 1388 y Fh(0)377 1377
y Fi(;)8 b(disp)482 1360 y Fg(i)482 1388 y Fh(0)500 1377 y
FA(\))p Fi(;)g(:::;)f FA(\()p Fi(ty)r(pe)700 1360 y Fg(i)700
1388 y(n)721 1392 y Fd(i)733 1377 y Fi(;)h(disp)838 1360 y
Fg(i)838 1388 y(n)859 1392 y Fd(i)873 1377 y FA(\))p Fl(g)p
Fi(;)75 1433 y FA(with)i(exten)o(t)g Fi(extent)434 1440 y Fg(i)450
1433 y FA(.)18 b(Let)10 b Ft(B)g FA(b)q(e)h(the)g Ft(a)o(rra)o(y)p
826 1433 V 14 w(of)p 877 1433 V 16 w(blo)q(cklength)h FA(parameter)d(and)i
Ft(D)f FA(b)q(e)h(the)f Ft(a)o(rra)o(y)p 1685 1433 V 14 w(of)p
1736 1433 V 16 w(indices)75 1490 y FA(parameter.)19 b(Then)d(the)f(newly)h
(created)f(datat)o(yp)q(e)g(has)g(a)g(t)o(yp)q(e)g(map)g(with)1413
1457 y Ff(P)1457 1468 y Fe(count)r Fj(\000)p Fh(1)1457 1501
y Fg(i)p Fh(=0)1586 1490 y Ft(B)p FA([)p Ft(i)p FA(])9 b Fl(\001)h
Fi(n)1712 1497 y Fg(i)1741 1490 y FA(en)o(tries)75 1546 y Fl(f)p
FA(\()p Fi(ty)r(pe)200 1530 y Fh(0)200 1557 y(0)218 1546 y
Fi(;)e(disp)323 1530 y Fh(0)323 1557 y(0)351 1546 y FA(+)i
Ft(D)p FA([)p Ft(0)p FA(])o(\))p Fi(;)e(:::;)g FA(\()p Fi(ty)r(pe)678
1530 y Fh(0)678 1557 y Fg(n)699 1561 y Fc(0)714 1546 y Fi(;)g(disp)819
1530 y Fh(0)819 1557 y Fg(n)840 1561 y Fc(0)866 1546 y FA(+)j
Ft(D)p FA([)p Ft(0)p FA(])o(\))p Fi(;)d(:::;)75 1603 y FA(\()p
Fi(ty)r(pe)177 1586 y Fh(0)177 1614 y(0)196 1603 y Fi(;)g(disp)301
1586 y Fh(0)301 1614 y(0)325 1603 y FA(+)f Ft(D)p FA([)p Ft(0)p
FA(])g(+)g(\()p Ft(B)p FA([)p Ft(0)p FA(])g Fl(\000)g FA(1\))g
Fl(\001)g Fi(extent)839 1610 y Fh(0)860 1603 y FA(\))p Fi(;)h(:::;)g
FA(\()p Fi(ty)r(pe)1061 1586 y Fh(0)1061 1614 y Fg(n)1081 1618
y Fc(0)1097 1603 y Fi(;)g(disp)1202 1586 y Fh(0)1202 1614 y
Fg(n)1223 1618 y Fc(0)1247 1603 y FA(+)f Ft(D)p FA([)p Ft(0)p
FA(])g(+)g(\()p Ft(B)p FA([)p Ft(0)p FA(])i Fl(\000)i Ft(1)p
FA(\))c Fl(\001)g Fi(extent)1767 1610 y Fh(0)1787 1603 y FA(\))p
Fi(;)h(:::;)75 1659 y FA(\()p Fi(ty)r(pe)177 1640 y Fe(count)r
Fj(\000)p Fh(1)177 1669 y(0)299 1659 y Fi(;)g(disp)404 1640
y Fe(count)q Fj(\000)p Fh(1)404 1669 y(0)534 1659 y FA(+)j
Ft(D)p FA([)p Ft(count)g Fl(\000)f Ft(1)p FA(])o(\))p Fi(;)e(:::;)g
FA(\()p Fi(ty)r(pe)1023 1642 y Fe(count)p Fj(\000)p Fh(1)1023
1670 y Fg(n)1044 1674 y Fb(count)m Fa(\000)p Fc(1)1142 1659
y Fi(;)g(disp)1247 1642 y Fe(count)q Fj(\000)p Fh(1)1247 1670
y Fg(n)1268 1674 y Fb(count)o Fa(\000)p Fc(1)1378 1659 y FA(+)i
Ft(D)p FA([)p Ft(count)h Fl(\000)g Ft(1)p FA(])o(\))p Fi(;)d(:::;)75
1720 y FA(\()p Fi(ty)r(pe)177 1701 y Fe(count)r Fj(\000)p Fh(1)177
1730 y(0)299 1720 y Fi(;)g(disp)404 1701 y Fe(count)q Fj(\000)p
Fh(1)404 1730 y(0)534 1720 y FA(+)j Ft(D)p FA([)p Ft(count)g
Fl(\000)f Ft(1)p FA(])g(+)g(\()p Ft(B)p FA([)p Ft(count)h Fl(\000)g
Ft(1)p FA(])e Fl(\000)h FA(1\))g Fl(\001)g Fi(extent)1392 1727
y Fe(count)s Fj(\000)p Fh(1)1515 1720 y FA(\))p Fi(;)e(:::;)75
1776 y FA(\()p Fi(ty)r(pe)177 1760 y Fe(count)r Fj(\000)p Fh(1)177
1788 y Fg(n)198 1792 y Fb(count)p Fa(\000)p Fc(1)299 1776 y
Fi(;)g(disp)404 1760 y Fe(count)q Fj(\000)p Fh(1)404 1788 y
Fg(n)425 1792 y Fb(count)n Fa(\000)p Fc(1)534 1776 y FA(+)j
Ft(D)p FA([)p Ft(count)g Fl(\000)f Ft(1)p FA(])g(+)g(\()p Ft(B)p
FA([)p Ft(count)h Fl(\000)g Ft(1)p FA(])e Fl(\000)h Ft(1)p
FA(\))g Fl(\001)g Fi(extent)1392 1783 y Fe(count)s Fj(\000)p
Fh(1)1515 1776 y FA(\))p Fl(g)166 1833 y FA(A)15 b(call)h(to)f
Ft(MPI)p 439 1833 V 16 w(TYPE)p 572 1833 V 16 w(HINDEXED\()g(count,)h(oldt)o
(yp)q(e,)g(D,)f(B,)g(newt)o(yp)q(e\))h FA(is)g(equiv)m(alen)o(t)h(to)d(a)h
(call)75 1889 y(to)d Ft(MPI)p 213 1889 V 16 w(TYPE)p 346 1889
V 17 w(STRUCT\()h(count,)i(T,)d(D,)h(B,)g(newt)o(yp)q(e\))p
FA(,)h(where)f(eac)o(h)g(en)o(try)g(of)g Ft(T)g FA(is)g(equal)h(to)e
Ft(oldt)o(yp)q(e)p FA(.)75 2011 y Fr(1.13.2)49 b(Address)16
b(and)g(extent)f(functions)75 2097 y FA(The)21 b(displacemen)o(ts)h(in)g(a)f
(general)g(datat)o(yp)q(e)f(are)h(relativ)o(e)g(to)g(some)f(start)g(address.)
37 b Fw(Absolute)75 2153 y(addresses)13 b FA(can)h(b)q(e)h(substituted)g(for)
e(these)i(displacemen)o(ts:)21 b(w)o(e)13 b(treat)h(them)g(as)g(displacemen)o
(ts)h(rel-)75 2210 y(ativ)o(e)f(to)e(\\address)i(zero",)f(the)h(start)e(of)h
(the)h(address)f(space.)20 b(This)14 b(initial)i(address)e(zero)f(is)h
(indicated)75 2266 y(b)o(y)19 b(the)g(constan)o(t)f Fm(MPI)p
488 2266 13 2 v 15 w(BOTTOM)p FA(.)g(Th)o(us,)i(a)e(datat)o(yp)q(e)h(can)g
(sp)q(ecify)i(the)e(absolute)g(address)g(of)g(the)75 2323 y(en)o(tries)e(in)g
(the)f(comm)o(unication)h(bu\013er,)g(in)g(whic)o(h)g(case)f(the)h
Ft(sta)o(rt)f FA(parameter)g(is)h(passed)f(the)h(v)m(alue)75
2379 y Fm(MPI)p 152 2379 V 14 w(BOTTOM)p FA(.)166 2435 y(The)10
b(address)g(of)g(a)g(lo)q(cation)h(in)g(memory)f(can)g(b)q(e)h(found)f(b)o(y)
g(in)o(v)o(oking)h(the)f(function)h Ft(MPI)p 1701 2435 14 2
v 16 w(ADDRESS)p FA(.)-32 46 y Fv(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: 35 37
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(35)75 49 y Ft(MPI)p 160 49 14 2 v 16 w(ADDRESS\(lo)q(cation,)
16 b(address\))117 126 y Fs(IN)155 b Ft(lo)q(cation)437 b Fs(lo)q(cation)13
b(in)h(caller)f(memory)f(\(c)o(hoice\))117 202 y(OUT)108 b
Ft(address)449 b Fs(address)15 b(of)f(lo)q(cation)f(\(in)o(teger\))166
326 y FA(Returns)j(the)f(\(b)o(yte\))f(address)i(of)e Ft(lo)q(cation)p
FA(.)166 383 y(Example:)147 489 y Fp(REAL)23 b(A\(100,100\))147
545 y(INTEGER)f(I1,)i(I2,)f(DIFF)147 602 y(CALL)g(MPI_ADDRESS\(A\(1,1\),)e
(I1\))147 658 y(CALL)i(MPI_ADDRESS\(A\(10,10\),)e(I2\))147
715 y(DIFF)i(=)h(I2)f(-)h(I1)75 771 y(!)g(The)f(value)g(of)h(DIFF)f(is)h
(1009*sizeofreal;)e(the)h(values)g(of)h(I1)f(and)h(I2)f(are)75
828 y(!)h(implementation)e(dependent.)166 934 y FA(Another)15
b(useful)i(auxiliary)f(function)h(is)f Ft(MPI)p 974 934 V 15
w(TYPE)p 1106 934 V 17 w(EXTENT)p FA(,)g(that)e(returns)i(the)f(exten)o(t)g
(of)g(a)75 990 y(datat)o(yp)q(e)g({)g(where)g(exten)o(t)g(is)h(as)e
(de\014ned)j(in)f(Eq.)f(1.1.)75 1094 y Ft(MPI)p 160 1094 V
16 w(TYPE)p 293 1094 V 17 w(EXTENT\(datat)o(yp)q(e,)h(extent\))117
1171 y Fs(IN)155 b Ft(datat)o(yp)q(e)424 b Fs(datat)o(yp)q(e)14
b(\(handle\))117 1246 y(OUT)108 b Ft(extent)471 b Fs(datat)o(yp)q(e)14
b(exten)o(t)h(\(in)o(teger\))75 1436 y Fr(1.13.3)49 b(Lo)o(w)o(er-b)q(ound)17
b(and)g(upp)q(er-b)q(ound)g(ma)o(rk)n(ers)75 1522 y FA(It)e(is)g(often)g(con)
o(v)o(enien)o(t)g(to)g(de\014ne)h(explicitly)h(the)e(lo)o(w)o(er)g(b)q(ound)h
(and)f(upp)q(er)h(b)q(ound)f(of)g(a)g(t)o(yp)q(e)g(map,)75
1578 y(and)d(o)o(v)o(erwrite)e(the)i(de\014nition)h(giv)o(en)f(b)o(y)f
(Equation)g(1.1.)18 b(This)12 b(allo)o(ws)f(to)g(de\014ne)i(a)e(datat)o(yp)q
(e)f(that)h(has)75 1635 y(\\holes")k(at)f(its)h(b)q(eginning)i(or)d(its)h
(end;)h(or)e(a)h(datat)o(yp)q(e)f(with)h(en)o(tries)g(that)f(extend)i(ab)q(o)
o(v)o(e)e(the)h(upp)q(er)75 1691 y(b)q(ound)h(or)e(b)q(elo)o(w)h(the)g(lo)o
(w)o(er)g(b)q(ound.)20 b(Examples)c(of)e(suc)o(h)h(a)f(usage)h(are)f(pro)o
(vided)i(in)g(Section)f(1.13.6.)75 1748 y(T)l(o)g(ac)o(hiev)o(e)h(this,)g(w)o
(e)f(add)g(t)o(w)o(o)f(additional)j(\\pseudo-datat)o(yp)q(es")e
Ft(MPI)p 1349 1748 V 16 w(LB)p FA(,)g(and)g Ft(MPI)p 1618 1748
V 16 w(UB)h FA(that)f(can)75 1804 y(b)q(e)j(used,)g(resp)q(ectiv)o(ely)l(,)h
(to)e(mark)f(the)i(lo)o(w)o(er)f(b)q(ound)h(or)f(the)g(upp)q(er)h(b)q(ound)g
(of)f(a)g(datat)o(yp)q(e.)26 b(These)75 1861 y(pseudo-datat)o(yp)q(es)17
b(o)q(ccup)o(y)h(no)f(space)g(\()p Fi(extent)p FA(\()p Ft(MP)p
1015 1861 V 17 w(LB)p FA(\))f(=)g Fi(extent)p FA(\()p Ft(MP)p
1386 1861 V 17 w(UB)q FA(\))f(=)h(0\).)25 b(They)17 b(do)g(not)75
1917 y(a\013ect)i(the)g(con)o(ten)o(t)g(of)g(a)g(message)f(created)i(with)f
(this)h(datat)o(yp)q(e.)32 b(Ho)o(w)o(ev)o(er,)19 b(they)g(do)g(a\013ect)g
(the)75 1973 y(de\014nition)f(of)d(the)h(exten)o(t)g(of)f(a)h(datat)o(yp)q(e)
f(and,)h(therefore,)f(a\013ect)g(the)h(outcome)g(of)f(a)h(replication)h(of)75
2030 y(this)f(datat)o(yp)q(e)e(b)o(y)h(a)g(datat)o(yp)q(e)g(constructor.)166
2086 y(Example:)30 b(Let)21 b Fp(D)j(=)f(\(-3,)h(0,)f(6\))p
FA(;)f Fp(T)i(=)g(\(MPI)p 1033 2086 15 2 v 16 w(LB,)g(MPI)p
1217 2086 V 17 w(INT,)f(MPI)p 1425 2086 V 17 w(UB\))p FA(,)c(and)h
Fp(B)k(=)g(\(1,)f(1,)75 2143 y(1\))p FA(.)c(Then)13 b(a)f(call)i(to)e
Ft(MPI)p 525 2143 14 2 v 16 w(TYPE)p 658 2143 V 17 w(STRUC\(3,)h(T,)f(D,)g
(B,)h(t)o(yp)q(e1\))g FA(creates)g(a)f(new)h(datat)o(yp)q(e)f(that)g(has)h
(an)75 2199 y(exten)o(t)i(of)g(9)g(\(from)f(-3)i(to)e(5\),)h(and)g(con)o
(tains)h(an)f(in)o(teger)h(at)e(displacemen)o(t)j(0.)j(This)c(is)g(the)f
(datat)o(yp)q(e)75 2256 y(de\014ned)f(b)o(y)e(the)g(sequence)i
Fl(f)p Fp(\(lb,)23 b(-3\),)g(\(int,)g(0\),)h(\(ub,)f(6\))p
Fl(g)g FA(.)c(If)13 b(this)g(t)o(yp)q(e)f(is)h(replicated)h(t)o(wice)75
2312 y(b)o(y)h(a)g(call)h(to)f Ft(MPI)p 400 2312 V 15 w(TYPE)p
532 2312 V 17 w(CONTIGUOUS\(2,)h(t)o(yp)q(e1,)g(t)o(yp)q(e2\))f
FA(then)h(the)f(newly)h(created)f(t)o(yp)q(e)g(can)g(b)q(e)75
2369 y(describ)q(ed)e(b)o(y)d(the)h(sequence)h Fl(f)p Fp(\(lb,)23
b(-3\),)g(\(int,)g(0\),)h(\(int,9\),)e(\(ub,)i(15\))p Fl(g)f
FA(.)18 b(\(En)o(tries)11 b(of)f(t)o(yp)q(e)75 2425 y Fp(lb)15
b FA(or)g Fp(ub)f FA(can)i(b)q(e)g(deleted)g(if)g(they)f(are)g(not)g(at)f
(the)i(endp)q(oin)o(ts)g(of)f(the)g(datat)o(yp)q(e.\))166 2482
y(In)h(general,)f(if)476 2584 y Fi(T)6 b(y)r(pemap)12 b FA(=)h
Fl(f)p FA(\()p Fi(ty)r(pe)849 2591 y Fh(0)867 2584 y Fi(;)8
b(disp)972 2591 y Fh(0)990 2584 y FA(\))p Fi(;)g(:::;)f FA(\()p
Fi(ty)r(pe)1190 2591 y Fg(n)p Fj(\000)p Fh(1)1253 2584 y Fi(;)h(disp)1358
2591 y Fg(n)p Fj(\000)p Fh(1)1421 2584 y FA(\))p Fl(g)p Fi(;)-32
46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(36)75 49 y(then)16 b(the)f Fw(lo)o(w)o(er)h(b)q(ound)g
FA(of)f Fi(T)6 b(y)r(pemap)15 b FA(is)g(de\014ned)i(to)e(b)q(e)213
163 y Fi(l)q(b)p FA(\()p Fi(T)6 b(y)r(pemap)p FA(\))11 b(=)531
91 y Ff(\()585 134 y FA(min)661 141 y Fg(j)686 134 y Fi(disp)770
141 y Fg(j)1142 134 y FA(if)16 b(no)f(en)o(try)g(has)g(basic)h(t)o(yp)q(e)f
Fp(lb)585 191 y FA(min)q Fl(f)p Fi(disp)768 198 y Fg(j)812
191 y FA(:)28 b Fi(ty)r(pe)937 198 y Fg(j)967 191 y FA(=)13
b Fp(lb)p Fl(g)41 b FA(otherwise)166 276 y(Similarly)l(,)17
b(the)e Fw(upp)q(er)j(b)q(ound)e FA(of)e Fi(T)6 b(y)r(pemap)15
b FA(is)h(de\014ned)h(to)d(b)q(e)191 390 y Fi(ub)p FA(\()p
Fi(T)6 b(y)r(pemap)p FA(\))11 b(=)520 318 y Ff(\()574 361 y
FA(max)659 368 y Fg(j)684 361 y Fi(disp)768 368 y Fg(j)795
361 y FA(+)f Fi(siz)r(eof)5 b FA(\()p Fi(ty)r(pe)1072 368 y
Fg(j)1090 361 y FA(\))57 b(if)15 b(no)h(en)o(try)e(has)h(basic)h(t)o(yp)q(e)g
Fp(ub)574 418 y FA(max)p Fl(f)p Fi(disp)766 425 y Fg(j)810
418 y FA(:)28 b Fi(ty)r(pe)935 425 y Fg(j)965 418 y FA(=)13
b Fp(ub)p Fl(g)66 b FA(otherwise)166 503 y(Then)441 560 y Fi(extent)p
FA(\()p Fi(T)6 b(y)r(pemap)p FA(\))14 b(=)e Fi(ub)p FA(\()p
Fi(T)6 b(y)r(pemap)p FA(\))j Fl(\000)i Fi(l)q(b)p FA(\()p Fi(T)6
b(y)r(pemap)p FA(\))i(+)i Fi(\017)75 634 y FA(If)17 b Fi(ty)r(pe)206
641 y Fg(i)237 634 y FA(requires)g(alignmen)o(t)g(to)f(a)h(b)o(yte)f(address)
h(that)f(is)h(is)g(a)f(m)o(ultiple)j(of)d Fi(k)1474 641 y Fg(i)1487
634 y FA(,)h(then)g Fi(\017)g FA(is)g(the)g(least)75 690 y(nonnegativ)o(e)f
(incremen)o(t)g(needed)g(to)f(round)g Fi(extent)p FA(\()p Fi(T)6
b(y)r(pemap)p FA(\))16 b(to)e(the)h(next)h(m)o(ultiple)h(of)d(max)1794
697 y Fg(i)1815 690 y Fi(k)1839 697 y Fg(i)1853 690 y FA(.)166
747 y(The)g(formal)f(de\014nitions)j(giv)o(en)e(for)f(the)h(v)m(arious)g
(datat)o(yp)q(e)f(constructors)g(apply)i(no)o(w,)e(with)h(the)75
803 y(amended)i(de\014nition)h(of)e Fw(exten)o(t)p FA(.)75
922 y Fr(1.13.4)49 b(Comm)o(it)13 b(and)k(free)1875 980 y Fo(C)n(H)-6
b(A)h(N)f(G)h(E)75 1008 y FA(A)17 b(datat)o(yp)q(e)f(ob)s(ject)h(has)g(to)f
(b)q(e)h Fw(committed)h FA(b)q(efore)f(it)g(can)g(b)q(e)h(used)g(in)f(a)g
(comm)o(unication.)26 b(The)75 1064 y(system)20 b(ma)o(y)g(\\compile")i(at)e
(commit)g(time)h(an)g(in)o(ternal)g(represen)o(tation)g(for)f(the)h(datat)o
(yp)q(e)f(that)75 1121 y(facilitates)c(comm)o(unication,)g(e.g.)k(c)o(hange)
15 b(from)g(a)g(compacted)g(represen)o(tation)h(to)e(a)h(\015at)g(represen-)
75 1177 y(tation)j(of)g(the)g(datat)o(yp)q(e,)g(and)g(select)h(the)f(most)g
(con)o(v)o(enien)o(t)g(transfer)g(mec)o(hanism.)29 b(A)19 b(commited)75
1233 y(datat)o(yp)q(e)c(can)g(still)i(b)q(e)e(used)h(as)f(a)g(parameter)f(in)
i(datat)o(yp)q(e)f(constructors.)166 1290 y(Note:)28 b(the)20
b(commit)f(op)q(eration)h(commits)f(the)h(datat)o(yp)q(e,)f(i.e.,)i(the)e
(formal)g(description)i(of)e(a)75 1346 y(comm)o(unication)i(bu\013er,)h(not)e
(the)h(con)o(ten)o(t)f(of)g(that)g(bu\013er.)36 b(Th)o(us,)22
b(after)e(a)g(datat)o(yp)q(e)g(has)h(b)q(een)75 1403 y(committed,)d(it)h(can)
f(b)q(e)h(rep)q(eatedly)g(reused)g(to)e(comm)o(unicate)h(the)h(c)o(hanging)f
(con)o(ten)o(t)g(of)f(a)h(bu\013er)75 1459 y(or,)c(indeed,)j(the)e(con)o(ten)
o(t)g(of)g(di\013eren)o(t)g(bu\013ers,)g(with)g(di\013eren)o(t)h(starting)e
(addresses.)75 1563 y Ft(MPI)p 160 1563 14 2 v 16 w(TYPE)p
293 1563 V 17 w(COMMIT\(datat)o(yp)q(e\))117 1640 y Fs(INOUT)62
b Ft(datat)o(yp)q(e)424 b Fs(datat)o(yp)q(e)14 b(that)g(is)g(committed)e
(\(handle\))166 1765 y FA(There)j(is)h(no)f(need)h(to)f(commit)g(basic)h
(datat)o(yp)q(es;)e(they)h(are)g(\\pre-committed".)75 1868
y Ft(MPI)p 160 1868 V 16 w(TYPE)p 293 1868 V 17 w(FREE\(datat)o(yp)q(e\))117
1946 y Fs(INOUT)62 b Ft(datat)o(yp)q(e)424 b Fs(handle)14 b(to)g(datat)o(yp)q
(e)g(ob)r(ject)166 2070 y FA(Marks)i(the)h(datat)o(yp)q(e)f(ob)s(ject)g(asso)
q(ciated)h(with)g Ft(datat)o(yp)q(e)i FA(for)d(deallo)q(cation.)26
b(The)17 b(ob)s(ject)f(will)75 2126 y(b)q(e)g(deallo)q(cated)h(after)d(an)o
(y)i(p)q(ending)h(comm)o(unication)f(that)e(uses)i(this)g(ob)s(ject)f
(completes,)g(at)g(whic)o(h)75 2183 y(p)q(oin)o(t)21 b Ft(datat)o(yp)q(e)g
FA(b)q(ecomes)g(n)o(ull.)36 b(It)20 b(is)h(erroneous)f(to)f(use)i(a)f(datat)o
(yp)q(e)f(as)h(argumen)o(t)f(to)h(an)g(MPI)75 2239 y(function)c(after)e(it)i
(w)o(as)e(freed.)166 2372 y Fn(Implemen)o(tati)o(on)e(note:)166
2422 y Fs(The)e(implemen)o(tati)o(on)d(ma)o(y)g(k)o(eep)j(a)f(reference)j
(coun)o(t)e(of)f(activ)o(e)g(comm)o(unications)d(that)k(use)g(the)g(datat)o
(yp)q(e,)75 2471 y(in)15 b(order)i(to)f(decide)h(when)f(to)g(free)h(it.)24
b(Also,)15 b(one)h(ma)o(y)e(implemen)o(t)g(constructors)k(of)d(deriv)o(ed)h
(datat)o(yp)q(es)h(so)75 2521 y(that)e(they)h(k)o(eep)g(p)q(oin)o(ters)g(to)f
(their)h(datat)o(yp)q(e)f(argumen)o(ts,)f(rather)j(then)e(cop)o(ying)g(them.)
21 b(In)16 b(suc)o(h)g(case,)g(one)75 2571 y(needs)e(to)e(k)o(eep)h(trac)o(k)
f(of)g(activ)o(e)g(datat)o(yp)q(e)g(de\014nition)g(references)j(in)d(order)h
(to)f(kno)o(w)g(when)h(a)f(datat)o(yp)q(e)g(ob)r(ject)75 2621
y(can)i(b)q(e)h(freed.)-32 46 y Fv(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: 37 39
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(37)75 49 y Fr(1.13.5)49 b(Use)16 b(of)h(general)f(datat)o(yp)q
(es)g(in)h(comm)n(unication)75 135 y FA(Handles)g(to)f(deriv)o(ed)h(datat)o
(yp)q(es)f(can)h(b)q(e)f(passed)h(to)f(a)g(comm)o(unication)h(call)g(wherev)o
(er)f(a)g(datat)o(yp)q(e)75 192 y(argumen)o(t)22 b(is)h(required.)43
b(A)23 b(call)h(of)e(the)h(form)f Ft(MPI)p 1050 192 14 2 v
15 w(SEND\(sta)o(rt,)j(count,)g(datat)o(yp)q(e,)h(...\))p FA(,)d(where)75
248 y Fp(count)12 b FA(=)h Fp(1)h FA(uses)h(the)f(send)h(bu\013er)f
(de\014ned)i(b)o(y)e Ft(sta)o(rt)g FA(and)h Ft(datat)o(yp)q(e)p
FA(;)h(i.e.)k(if)29 b Ft(datat)o(yp)q(e)15 b FA(is)g(a)f(handle)i(to)75
304 y(the)i(datat)o(yp)q(e)f(with)h(t)o(yp)q(e)g(map)g Fl(f)p
FA(\()p Fi(ty)r(pe)789 311 y Fh(0)807 304 y Fi(;)8 b(disp)912
311 y Fh(0)930 304 y FA(\))p Fi(;)g(:::;)g FA(\()o Fi(ty)r(pe)1130
311 y Fg(n)p Fj(\000)p Fh(1)1193 304 y Fi(;)g(disp)1298 311
y Fg(n)p Fj(\000)p Fh(1)1362 304 y FA(\))p Fl(g)p FA(,)17 b(\(with)h(size)h
(zero)f(en)o(tries)75 361 y(deleted\))h(then)g(the)g(send)g(bu\013er)f
(consists)h(of)f(the)g(en)o(tries)h(of)f(t)o(yp)q(es)h Fi(ty)r(pe)1400
368 y Fg(i)1414 361 y FA(,)g(at)e(addresses)i Fp(start)12 b
FA(+)75 417 y Fi(disp)159 424 y Fg(i)172 417 y FA(,)17 b Fi(i)e
FA(=)g(0)p Fi(;)8 b(:::;)g(n)g Fl(\000)k FA(1.)24 b(The)17
b(message)f(generated)g(consists)h(of)f(a)h(sequence)h(of)e
Fi(n)h FA(en)o(tries,)g(of)f(t)o(yp)q(es)75 474 y Fi(ty)r(pe)159
481 y Fh(0)178 474 y Fi(;)8 b(:::;)g(ty)r(pe)343 481 y Fg(n)p
Fj(\000)p Fh(1)406 474 y FA(.)30 b(The)19 b(receiv)o(e)h(bu\013er)f(for)f(a)g
(call)i Ft(MPI)p 1119 474 V 16 w(RECV\()f(sta)o(rt,)h(count,)g(datat)o(yp)q
(e)g(,)g(...\))p FA(,)d(is)75 530 y(similarly)g(de\014ned,)g(for)e
Fp(count)24 b(=1)p FA(.)d(The)15 b(same)h(applies)h(to)e(all)i(other)e(send)h
(and)g(receiv)o(e)h(op)q(erations)75 587 y(that)d(ha)o(v)o(e)h(a)g
Ft(datat)o(yp)q(e)i FA(parameter.)166 643 y(A)10 b(call)h(of)f(the)g(form)g
Ft(MPI)p 596 643 V 16 w(SEND\(sta)o(rt,)h(count,)h(datat)o(yp)q(e)g(,)e
(...\))p FA(,)g(where)g Fp(count)i Fi(>)h Fp(1)p FA(,)e(is)f(in)o(terpreted)
75 700 y(as)21 b(if)h(the)f(call)i(w)o(as)d(passed)i(a)f(new)h(datat)o(yp)q
(e)e(whic)o(h)j(is)f(the)f(concatenation)h(of)e Ft(count)j
FA(copies)f(of)75 756 y Ft(datat)o(yp)q(e)p FA(.)f(The)14 b(same)g(holds)g
(true)g(for)f(the)h(other)g(comm)o(unication)h(functions)f(that)f(ha)o(v)o(e)
h(a)f(datat)o(yp)q(e)75 813 y(argumen)o(t.)19 b(Th)o(us,)166
869 y Ft(MPI)p 251 869 V 16 w(SEND\(sta)o(rt,)c(count,)h(datat)o(yp)q(e,)g
(dest,)h(tag,)e(comm)m(\))d FA(is)j(equiv)m(alen)o(t)i(to)75
975 y Fp(MPI_TYPE_CONTIGUOUS\(count,)j(datatype,)j(newtype\))75
1032 y(MPI_TYPE_COMMIT\(newtype\))75 1088 y(MPI_SEND\(start,)f(1,)h(newtype,)
g(dest,)g(tag,)h(comm\))166 1194 y FA(If)e(a)f(comm)o(unication)i(op)q
(eration)e(uses)h(as)g(argumen)o(t)f(a)g(general)h(datat)o(yp)q(e)f
Ft(t)o(yp)q(e)i FA(then)f(eac)o(h)75 1251 y(en)o(try)13 b(in)g(the)g(t)o(yp)q
(e)g(map)g(should)h(matc)o(h)e(the)h(datat)o(yp)q(e)f(of)h(the)g(corresp)q
(onding)h(v)m(ariable)g(in)g(the)f(caller)75 1307 y(memory)g(\(see)g(Section)
i(1.5\).)j(If)13 b(a)h(send)g(op)q(eration)f(using)h(a)g(general)g(datat)o
(yp)q(e)e Ft(t)o(yp)q(e1)j FA(is)f(matc)o(hed)f(b)o(y)75 1364
y(a)j(receiv)o(e)i(op)q(eration)f(using)g(a)f(general)h(datat)o(yp)q(e)f
Ft(t)o(yp)q(e2)i FA(then)f(the)f(sequence)i(of)e(\(nonempt)o(y\))g(basic)75
1420 y(t)o(yp)q(e)e(en)o(tries)g(in)g(eac)o(h)g(t)o(yp)q(e)f(map)h(should)g
(b)q(e)g(iden)o(tical.)22 b(Ho)o(w)o(ev)o(er,)12 b(the)i(sequences)g(of)g
(displacemen)o(ts)75 1477 y(ma)o(y)i(di\013er.)24 b(Th)o(us,)16
b(t)o(yp)q(e)g(matc)o(hing)h(is)g(de\014ned)h(b)o(y)e(the)g(t)o(yp)q(e)h
(map,)f(and)h(do)q(es)f(not)g(dep)q(end)j(on)d(the)75 1533
y(construction)f(of)g(the)h(datat)o(yp)q(e.)166 1590 y(Example:)75
1683 y Fp(...)75 1740 y(MPI_TYPE_CONTIGUOUS\()21 b(MPI_REAL,)i(2,)g(type2\))
75 1796 y(MPI_TYPE_CONTIGUOUS\()e(MPI_REAL,)i(4,)g(type4\))75
1853 y(MPI_TYPE_CONTIGUOUS\()e(type2,)i(2,)h(type22\))166 1947
y FA(A)15 b(message)g(sen)o(t)g(with)g(datat)o(yp)q(e)g Ft(t)o(yp)q(e4)h
FA(can)f(b)q(e)h(receiv)o(ed)h(with)e(datat)o(yp)q(e)30 b Ft(t)o(yp)q(e22)p
FA(.)166 2003 y(A)18 b(datat)o(yp)q(e)g(used)h(in)g(a)g(receiv)o(e)g(op)q
(eration)g(ma)o(y)e(not)h(ha)o(v)o(e)g(o)o(v)o(erlapping)h(en)o(tries)g(in)g
(its)g(t)o(yp)q(e)75 2060 y(map:)h(the)15 b(same)g(lo)q(cation)h(in)g(the)f
(receiv)o(e)h(bu\013er)f(cannot)g(b)q(e)h(written)g(t)o(wice)f(during)h(a)f
(receiv)o(e.)166 2116 y(T)o(yp)q(e)23 b(matc)o(hing)g(requiremen)o(ts)h
(imply)g(that)f(\(nonempt)o(y\))f(en)o(tries)i(in)f(the)h(t)o(yp)q(e)f(map)g
(of)f(a)75 2172 y(datat)o(yp)q(e)f(cannot)g(o)o(v)o(erlap,)h(unless)h(they)e
(coincide)j(and)d(ha)o(v)o(e)g(the)g(same)g(basic)h(t)o(yp)q(e,)h(or)e(one)g
(of)75 2229 y(them)d(ha)o(v)o(e)f(basic)h(t)o(yp)q(e)g Ft(b)o(yte)p
FA(:)25 b(otherwise,)18 b(when)g(the)g(datat)o(yp)q(e)f(is)h(used)g(in)h(a)e
(comm)o(unication,)i(at)75 2285 y(least)e(on)g(of)g(the)g(t)o(w)o(o)f(o)o(v)o
(erlaping)h(en)o(tries)h(will)h(not)d(b)q(e)i(t)o(yp)q(e-consisten)o(t)g
(with)f(the)g(comm)o(unication)75 2342 y(bu\013er.)166 2398
y(The)h(v)m(alue)h(returned)g(in)f Ft(count)h FA(b)o(y)f(a)g(call)h(to)e
Ft(MPI)p 1085 2398 V 16 w(GET)p 1189 2398 V 17 w(COUNT\(status,)k(count\))d
FA(is)h(equal)g(to)75 2455 y(the)13 b(n)o(um)o(b)q(er)g(of)f(basic)h(elemen)o
(ts)h(receiv)o(ed)g(b)o(y)e(the)h(op)q(eration)g(that)f(set)g
Ft(status)p FA(;)j(this)e(is)h(the)e(n)o(um)o(b)q(er)h(of)75
2511 y(nonempt)o(y)f(en)o(tries)h(in)g(the)f(t)o(yp)q(e)h(map)f(used)h(to)e
(create)h(the)h(message.)18 b(Consider)13 b(again)f(the)h(datat)o(yp)q(es)75
2568 y(de\014ned)k(in)f(the)f(last)h(example.)21 b(If)16 b(a)f(message)g(is)h
(sen)o(t)f(using)h(either)g(datat)o(yp)q(e)f Ft(t)o(yp)q(e22)h
FA(or)f Ft(t)o(yp)q(e4)h FA(and)75 2624 y(is)i(receiv)o(ed)g(using)g(either)f
(of)g(these)g(t)o(w)o(o)f(datat)o(yp)q(es,)h(then)g(the)g(n)o(um)o(b)q(er)h
(of)e(elemen)o(ts)i(receiv)o(ed)g(will)75 2681 y(b)q(e)e(four.)-32
46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)30 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)637 b FA(38)166 49 y Fn(Discussion:)166 99 y Fs(The)17
b(curren)o(t)g(de\014nition)f(implies)e(that)j(a)f(receiv)o(e)h(cannot)f(c)o
(hange)h(the)g(v)n(alue)e(of)h(storage)h(b)q(et)o(w)o(een)g(the)75
149 y(en)o(tries)k(de\014ned)f(to)g(comp)q(ose)f(the)h(comm)o(unication)c
(bu\013er.)37 b(In)19 b(particular,)i(the)f(de\014nition)f(implies)f(that)75
199 y(padding)12 b(space)i(in)e(a)g(structure)j(should)e(not)f(b)q(e)i(mo)q
(di\014ed)d(when)i(suc)o(h)h(structure)h(is)d(copied)h(from)e(one)i(pro)q
(cess)75 249 y(to)19 b(another.)34 b(This)19 b(prev)o(en)o(ts)i(the)f(ob)o
(vious)e(optimization)e(of)j(cop)o(ying)f(the)i(structure,)i(together)f(with)
d(the)75 298 y(padding,)12 b(as)g(one)h(con)o(tiguous)f(blo)q(c)o(k)g(\(the)i
(additional)c(comm)o(unication)g(o)o(v)o(erhead)i(of)g(sending)h(the)g
(padding)f(is)75 348 y(lik)o(ely)e(to)h(b)q(e)h(smaller)d(then)j(the)g
(computation)d(o)o(v)o(erhead)j(of)f(disassem)o(bling,)e(next)j(reassem)o
(bling)e(the)i(structure)75 398 y(comp)q(onen)o(ts\).)19 b(Ho)o(w)o(ev)o(er,)
14 b(this)g(optimization)e(is)i(not)g(p)q(ossible)h(in)f(general,)g(since)h
(it)f(is)g(not)g(kno)o(wn)g(when)g(the)75 448 y(send)h(is)g(executed)h(that)f
(the)g(receiv)o(e)g(is)g(going)e(to)h(store)i(the)f(incoming)d(message)i(in)g
(a)g(structure)j(of)d(the)h(same)75 498 y(t)o(yp)q(e;)e(also,)e(across)i
(heterogeneous)i(mac)o(hines,)c(similarly)e(de\014ned)k(structures)i(ma)o(y)
10 b(ha)o(v)o(e)i(a)g(di\013eren)o(t)h(memory)75 547 y(la)o(y)o(out.)23
b(In)16 b(a)g(homogeneous)f(en)o(vironmen)o(t,)g(when)i(comm)o(unicatio)o(n)d
(is)h(kno)o(wn)h(to)g(in)o(v)o(olv)o(e)f(structures)j(with)75
597 y(the)e(same)f(la)o(y)o(out,)g(one)h(can)g(a)o(v)o(oid)e(assem)o(bly)h
(and)g(disassem)o(bly)g(b)o(y)g(sending)h(the)h(data)e(using)g(the)i(datat)o
(yp)q(e)75 647 y Fm(MPI)p 152 647 13 2 v 14 w(BYTE)p Fs(.)c(This)h(problem)e
(ma)o(y)g(b)q(e)j(addressed)h(b)o(y)d(future)i(extensions)g(of)e(MPI.)75
851 y Fr(1.13.6)49 b(Examples)75 937 y FA(The)15 b(follo)o(wing)h(examples)g
(illustrate)h(the)e(use)g(of)g(deriv)o(ed)h(datat)o(yp)q(es.)75
1057 y Ft(First)f(example:)43 b FA(Send)16 b(and)g(receiv)o(e)g(a)e(section)i
(of)f(a)g(3D)g(arra)o(y)l(.)218 1164 y Fp(REAL)23 b(a\(100,100,100\),)f
(e\(9,9,9\))218 1220 y(INTEGER)h(oneslice,)g(twoslice,)f(threeslice,)h
(sizeofreal,)f(myrank,)h(ierr)218 1276 y(MPI_STATUS)g(status)75
1389 y(C)143 b(extract)23 b(the)g(section)g(a\(1:17:2,)g(3:11,)g(2:10\))75
1446 y(C)143 b(and)23 b(store)h(it)f(in)h(e\(*,*,*\).)218 1559
y(CALL)f(MPI_COMM_RANK\(MPI_ALL,)e(myrank\))218 1672 y(CALL)i
(MPI_TYPE_EXTENT\()f(MPI_REAL,)h(sizeofreal,)f(ierr\))75 1785
y(C)119 b(create)23 b(datatype)g(for)g(a)h(1D)g(section)218
1841 y(CALL)f(MPI_TYPE_VECTOR\()f(9,)i(MPI_REAL,)46 b(2,)24
b(1,)f(oneslice,)g(ierr\))75 1954 y(C)119 b(create)23 b(datatype)g(for)g(a)h
(2D)g(section)218 2010 y(CALL)f(MPI_TYPE_HVECTOR\()f(9,)i(oneslice,)46
b(100*sizeofreal,)22 b(1,)i(twoslice,)e(ierr\))75 2123 y(C)119
b(create)23 b(datatype)g(for)g(the)h(entire)f(section)218 2180
y(CALL)g(MPI_TYPE_HVECTOR\()f(9,)i(twoslice,)46 b(100*100*sizeofreal,)21
b(1,)767 2236 y(threeslice,)h(ierr\))218 2349 y(CALL)h(MPI_TYPE_COMMIT\()f
(threeslice,)h(ierr\))218 2406 y(CALL)g(MPI_SENDRECV\(a\(1,3,2\),)e(1,)j
(threeslice,)e(myrank,)h(0,)h(e,)f(9*9*9,)648 2462 y(MPI_REAL,)f(myrank,)h
(0,)h(MPI_ALL,)f(status,)g(ierr\))75 2582 y Ft(Second)17 b(example:)42
b FA(Cop)o(y)15 b(the)g(\(strictly\))g(lo)o(w)o(er)g(triangular)g(part)g(of)g
(a)g(matrix.)218 2688 y Fp(REAL)23 b(a\(100,100\),)g(b\(100,100\))-32
46 y Fv(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: 39 41
bop 75 -100 a Fu(SECTION)16 b(1.)30 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)637 b FA(39)218 49 y Fp(INTEGER)47 b(disp\(100\),)22
b(blocklen\(100\),)g(ltype,)h(myrank,)g(ierr)218 106 y(MPI_STATUS)g(status)75
219 y(C)119 b(copy)23 b(lower)h(triangular)e(part)h(of)h(array)f(a)75
275 y(C)119 b(onto)23 b(lower)h(triangular)e(part)h(of)h(array)f(b)218
388 y(CALL)g(MPI_COMM_RANK\(MPI_ALL,)e(myrank\))75 501 y(C)119
b(compute)23 b(start)g(and)h(size)f(of)h(each)f(column)218
557 y(DO)h(i=1,)f(100)266 614 y(disp\(i\))g(=)h(100*\(i-1\))e(+)i(i)266
670 y(block\(i\))f(=)g(100-i)218 727 y(END)h(DO)75 840 y(C)119
b(create)23 b(datatype)g(for)g(lower)h(triangular)e(part)218
896 y(CALL)h(MPI_TYPE_INDEX\()f(100,)i(MPI_REAL,)e(disp,)h(block,)g(ltype,)h
(ierr\))218 1009 y(CALL)f(MPI_TYPE_COMMIT\(ltype,)e(ierr\))218
1065 y(CALL)i(MPI_SENDRECV\()g(a,)g(1,)h(ltype,)f(myrank,)g(0,)g(b,)h(1,)552
1122 y(ltype,)f(myrank,)g(0,)h(MPI_ALL,)f(status,)f(ierr\))75
1242 y Ft(Third)15 b(example:)43 b FA(T)l(ransp)q(ose)15 b(a)g(matrix)218
1348 y Fp(REAL)23 b(a\(100,100\),)g(b\(100,100\))218 1405 y(INTEGER)g(row,)g
(xpose,)g(sizeofreal,)g(myrank,)g(ierr)218 1461 y(MPI_STATUS)g(status)75
1574 y(C)119 b(transpose)23 b(matrix)g(a)h(onto)f(b)218 1687
y(CALL)g(MPI_COMM_RANK\(MPI_ALL,)e(myrank\))218 1800 y(CALL)i
(MPI_TYPE_EXTENT\()f(MPI_REAL,)h(sizeofreal,)f(ierr\))75 1913
y(C)119 b(create)23 b(datatype)g(for)g(one)h(row)218 1969 y(CALL)f
(MPI_TYPE_VECTOR\()f(100,)h(MPI_REAL,)g(100,)g(1,)h(row,)f(ierr\))75
2082 y(C)119 b(create)23 b(datatype)g(for)g(matrix)g(in)h(row-major)f(order)
218 2139 y(CALL)g(MPI_TYPE_HVECTOR\()f(100,)h(row,)h(sizeofreal,)e(1,)i
(xpose,)f(ierr\))218 2252 y(CALL)g(MPI_TYPE_COMMIT\()f(xpose,)h(ierr\))75
2364 y(C)119 b(send)23 b(matrix)h(in)f(row-major)g(order)g(and)g(receive)g
(in)h(column)f(major)g(order)218 2421 y(CALL)g(MPI_SENDRECV\()g(a,)g(1,)h
(xpose,)f(myrank,)g(0,)g(b,)h(100*100,)457 2477 y(MPI_REAL,)e(myrank,)h(0,)h
(MPI_ALL,)f(status,)g(ierr\))166 2584 y FA(Another)15 b(approac)o(h)g(to)f
(the)i(transp)q(ose)f(problem:)218 2677 y Fp(REAL)23 b(a\(100,100\),)g
(b\(100,100\))-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)30 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)637 b FA(40)218 49 y Fp(INTEGER)47 b(disp\(2\),)23 b(blocklen\(2\),)f
(type\(2\),)h(row,)g(row1,)g(sizeofreal)218 106 y(INTEGER)47
b(myrank,)23 b(ierr)218 162 y(MPI_STATUS)g(status)218 275 y(CALL)g
(MPI_COMM_RANK\(MPI_ALL,)e(myrank\))75 388 y(C)119 b(transpose)23
b(matrix)g(a)h(onto)f(b)218 501 y(CALL)g(MPI_TYPE_EXTENT\()f(MPI_REAL,)h
(sizeofreal,)f(ierr\))75 614 y(C)119 b(create)23 b(datatype)g(for)g(one)h
(row)218 670 y(CALL)f(MPI_TYPE_VECTOR\()f(MPI_REAL,)h(100,)g(100,)g(1,)h
(row,)f(ierr\))75 783 y(C)119 b(create)23 b(datatype)g(for)g(one)h(row,)f
(with)h(the)f(extent)g(of)h(one)f(real)g(number)218 840 y(disp\(1\))g(=)h(0)
218 896 y(disp\(2\))f(=)h(sizeofreal)218 953 y(type\(1\))47
b(=)24 b(row)218 1009 y(type\(2\))47 b(=)24 b(MPI_UB)218 1065
y(blocklen\(1\))46 b(=)24 b(1)218 1122 y(blocklen\(2\))46 b(=)24
b(1)218 1178 y(CALL)f(MPI_TYPE_STRUC\()f(2,)i(type,)f(disp,)g(blocklen,)g
(row1\))218 1291 y(CALL)g(MPI_TYPE_COMMIT\()f(row1,)h(ierr\))75
1404 y(C)119 b(send)23 b(100)h(rows)f(and)h(receive)f(in)g(column)g(major)g
(order)218 1461 y(CALL)g(MPI_SENDRECV\()g(a,)g(100,)g(row1,)h(myrank,)f(0,)g
(b,)h(100*100,)457 1517 y(MPI_REAL,)e(myrank,)h(0,)h(MPI_ALL,)f(status,)g
(ierr\))75 1637 y Ft(F)o(ourth)15 b(example:)43 b FA(manipulate)17
b(an)e(arra)o(y)f(of)g(structures.)75 1743 y Fp(struct)23 b(Partstruct)147
1800 y({)147 1856 y(int)95 b(class;)47 b(/*)23 b(particle)g(class)g(*/)147
1913 y(double)g(d[6];)71 b(/*)23 b(particle)g(coordinates)f(*/)147
1969 y(char)71 b(b[7];)g(/*)23 b(some)g(additional)g(information)f(*/)147
2026 y(};)75 2139 y(struct)h(Partstruct)94 b(particle[1000];)75
2252 y(int)429 b(i,)24 b(dest,)f(rank;)75 2308 y(MPI_communicator)117
b(comm;)75 2477 y(/*)24 b(build)f(datatype)g(describing)f(structure)h(*/)75
2590 y(MPI_datatype)f(Particletype;)75 2647 y(MPI_datatype)g(type[3])h(=)h
({MPI_int,)e(MPI_double,)h(MPI_char};)75 2703 y(int)238 b(blocklen[3])23
b(=)g({1,)h(6,)f(7};)-32 46 y Fv(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: 41 43
bop 75 -100 a Fu(SECTION)16 b(1.)30 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)637 b FA(41)75 49 y Fp(int)238 b(disp[3];)75 219 y(/*)24
b(compute)e(displacements)h(of)g(structure)g(components)f(*/)75
332 y(MPI_address\()g(\(void)h(*\)particle,)g(disp++\);)75
388 y(MPI_address\()f(\(void)h(*\)particle[0].d,)f(disp++\);)75
444 y(MPI_address\()g(\(void)h(*\)particle[0].b,)f(disp\);)75
501 y(for)h(\(i=0;)h(i)f(<2;)h(i++\))f(disp[i])g(-=)h(disp[0];)75
614 y(MPI_type_struct\()e(3,)h(type,)g(disp,)h(blocklen,)e(Particletype\);)
147 727 y(/*)h(If)h(compiler)f(does)g(padding)g(in)g(mysterious)g(ways,)147
783 y(the)g(following)g(may)g(be)h(safer)f(*/)75 896 y(MPI_datatype)f
(type1[4])h(=)h({MPI_int,)e(MPI_double,)h(MPI_char,)f(MPI_UB};)75
953 y(int)238 b(blocklen1[4])22 b(=)i({1,)g(6,)f(7,)h(1};)75
1009 y(int)238 b(disp1[4];)75 1122 y(/*)24 b(compute)e(displacements)h(of)g
(structure)g(components)f(*/)75 1235 y(MPI_address\()g(\(void)h(*\)particle,)
g(disp1++\);)75 1291 y(MPI_address\()f(\(void)h(*\)particle[0].d,)f
(disp1++\);)75 1348 y(MPI_address\()g(\(void)h(*\)particle[0].b,)f
(disp1++\);)75 1404 y(MPI_address\()g(\(void)h(*\)\(particle+1\),)f(disp1\);)
75 1461 y(for)h(\(i=0;)h(i)f(<3;)h(i++\))f(disp1[i])g(-=)g(disp1[0];)75
1574 y(/*)h(build)f(datatype)g(describing)f(structure)h(*/)75
1686 y(MPI_type_struct\()f(4,)h(type1,)g(disp1,)g(blocklen1,)g
(Particletype\);)409 1856 y(/*)h(4.1:)266 1912 y(send)f(the)h(entire)f(array)
g(*/)75 2025 y(MPI_commit\()f(Particletype\);)75 2082 y(MPI_send\()h
(particle,)f(1000,)h(Particletype,)g(dest,)g(tag,)g(comm\);)409
2251 y(/*)h(4.2:)266 2307 y(send)f(only)h(the)f(entries)g(of)g(class)h(zero)f
(particles,)266 2364 y(preceded)g(by)g(the)h(number)f(of)g(such)h(entries)f
(*/)75 2477 y(MPI_datatype)f(Zparticles;)70 b(/*)24 b(datatype)f(describing)f
(all)i(particles)791 2533 y(with)f(index)g(zero)h(\(needs)f(to)g(be)h
(recomputed)791 2590 y(if)f(classes)g(change\))g(*/)75 2646
y(MPI_datatype)f(Ztype;)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)30 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)637 b FA(42)75 49 y Fp(int)23 b(zdisp[1000],)g(zblock[1000],)f(j,)h(k;)
75 106 y(int)g(zzblock[2])g(=)h({1,1};)75 162 y(int)f(zztype[2],)g
(zzindex[2];)75 332 y(/*)h(compute)e(indices)h(of)h(class)f(zero)g(particles)
g(*/)75 388 y(j)h(=)f(0;)75 444 y(for\(i=0;)g(i)g(<)h(1000;)f(i++\))123
501 y(if)g(\(particle[i].class==0\))194 557 y({)194 614 y(zindex[j])g(=)h(i;)
194 670 y(zblock[j])f(=)h(1;)194 727 y(j++;)194 783 y(})75
896 y(/*)g(create)f(datatype)f(for)i(class)f(zero)g(particles)47
b(*/)75 953 y(MPI_type_indexed\()22 b(j,)h(Particletype,)46
b(zindex,)23 b(zblock,)g(Zparticles\);)75 1065 y(/*)h(prepend)e(particle)h
(count)g(*/)75 1122 y(MPI_address\(\(void)f(*\)&j,)h(zzindex\);)75
1178 y(zzindex[1])f(=)i(particle;)75 1235 y(zztype[0])f(=)g(MPI_int;)75
1291 y(zztype[1])g(=)g(Zparticles;)75 1348 y(MPI_type_struct\(2,)e(zztype,)i
(zzindex,)g(zzblock,)g(Ztype\);)75 1461 y(MPI_type_commit\()f(Ztype\);)75
1517 y(MPI_send\()h(MPI_bottom,)f(1,)i(Ztype,)f(dest,)g(tag,)g(comm\);)242
1686 y(/*)h(A)f(probably)g(more)g(efficient)g(way)h(of)f(defining)g
(Zparticles)f(*/)75 1799 y(/*)i(consecutive)e(particles)h(with)g(index)g
(zero)g(are)h(handled)f(as)g(one)h(block)f(*/)75 1856 y(j=0;)75
1912 y(for)g(\(i=0;)h(i)f(<)h(1000;)f(i++\))123 1969 y(if)g
(\(particle[i].index==0\))170 2025 y({)170 2082 y(for)h(\(k=i+1;)f(\(k)g(<)h
(1000\)&&\(particle[k].index)d(==)i(0\))h(;)f(k++\);)170 2138
y(zindex[j])g(=)h(i;)170 2195 y(zblock[j])f(=)h(k-i;)170 2251
y(j++;)170 2307 y(i)g(=)g(k;)170 2364 y(})75 2420 y(MPI_type_indexed\()e(j,)h
(Particletype,)f(zindex,)h(zblock,)g(Zparticles\);)457 2590
y(/*)g(4.3:)314 2646 y(send)g(the)g(first)h(two)f(coordinates)f(of)i(all)f
(entries)g(*/)-32 46 y Fv(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: 43 45
bop 75 -100 a Fu(SECTION)16 b(1.)30 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)637 b FA(43)75 49 y Fp(MPI_datatype)22 b(Allpairs;)142
b(/*)24 b(datatype)f(for)g(all)g(pairs)h(of)f(coordinates)g(*/)75
162 y(int)238 b(sizeofentry;)75 275 y(MPI_extent\()22 b(Particletype,)g
(sizeofentry\);)194 388 y(/*)i(sizeofentry)e(can)i(also)f(be)h(computed)e(by)
i(subtracting)e(the)i(address)266 444 y(of)f(particle[0])g(from)g(the)h
(address)f(of)g(particle[1])f(*/)75 557 y(MPI_type_hvector\()g(1000,)h
(MPI_real,)f(sizeofentry,)h(2,)g(Allpairs\);)75 614 y(MPI_type_commit\()f
(Allpairs\);)75 670 y(MPI_send\()h(particle.d,)f(1,)i(Allpairs,)e(dest,)h
(tag,)h(comm\);)218 783 y(/*)g(an)f(alternative)g(solution)f(to)i(4.3)g(*/)75
896 y(MPI_datatype)e(Onepair;)71 b(/*)23 b(datatype)g(for)h(one)f(pair)g(of)h
(coordinates,)e(with)695 953 y(the)i(extent)f(of)h(one)f(particle)g(entry)g
(*/)75 1009 y(int)g(disp2[3];)75 1065 y(int)g(type2[3])g(=)h({MPI_lb,)f
(MPI_double,)f(MPI_ub};)75 1122 y(int)h(blocklen2[3])g(=)g({1,)h(2,)f(1};)75
1235 y(MPI_address\()f(\(void)h(*\)particle,)g(disp2++\);)75
1291 y(MPI_address\()f(\(void)h(*\)particle[0].d,)f(disp2++\);)75
1348 y(MPI_address\()g(\(void)h(*\)\(particle+1\),)f(disp2\);)75
1404 y(for)h(\(i=0;)h(i<2;)f(i++\))g(disp2[i])g(-=)h(disp2[0];)75
1517 y(MPI_type_struct\()e(3,)h(type2,)g(disp2,)g(blocklen2,)g(Onepair\);)75
1574 y(MPI_commit\()f(Onepair\);)75 1630 y(MPI_send\()h(particle[0].d,)f
(1000,)h(Onepair,)g(dest,)g(tag,)g(comm\);)75 1807 y Ft(Fifth)18
b(example:)43 b FA(same)17 b(arra)o(y)g(manipulations)i(as)f(in)g(the)g
(previous)g(example,)h(but)f(using)h(absolute)75 1863 y(addresses)c(in)h
(datat)o(yp)q(es.)75 1969 y Fp(struct)23 b(Partstruct)147 2026
y({)147 2082 y(int)g(class;)147 2139 y(double)g(d[6];)147 2195
y(char)g(b[7];)147 2252 y(};)75 2364 y(struct)g(Partstruct)g(particle[1000];)
337 2477 y(/*)h(build)f(datatype)g(describing)g(first)g(array)g(entry)g(*/)75
2590 y(MPI_datatype)f(Particletype;)75 2647 y(MPI_datatype)g(type[3])h(=)h
({MPI_int,)e(MPI_double,)h(MPI_char};)75 2703 y(int)238 b(block[3])23
b(=)h({1,)f(6,)h(7};)-32 46 y Fv(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
bop 75 -100 a Fu(SECTION)16 b(1.)30 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)637 b FA(44)75 49 y Fp(int)238 b(disp[3];)75 162 y(MPI_address\()22
b(\(void)h(*\)particle,)g(disp++\);)75 219 y(MPI_address\()f(\(void)h
(*\)particle[0].d,)f(disp++\);)75 275 y(MPI_address\()g(\(void)h
(*\)particle[0].b,)f(disp\);)75 332 y(MPI_type_struct\()g(3,)h(stype,)g
(sindex,)g(sblock,)g(Particletype\);)75 388 y(/*)h(Particletype)e(describes)g
(first)i(array)f(entry)g(--)h(using)f(absolute)147 444 y(addresses)f(*/)505
557 y(/*)h(5.1:)361 614 y(send)h(the)f(entire)g(array)g(*/)75
727 y(MPI_commit\()f(Particletype\);)75 783 y(MPI_send\()h(MPI_bottom,)f
(1000,)h(Particletype,)f(dest,)h(tag,)h(comm\);)481 953 y(/*)f(5.2:)290
1009 y(send)g(the)h(entries)e(of)i(class)f(zero,)290 1065 y(preceded)g(by)g
(the)h(number)f(of)g(such)h(entries)e(*/)75 1178 y(MPI_datatype)g
(Zparticles,)h(Ztype;)75 1291 y(int)g(zindex[1000],)g(zblock[1000],)f(i,)h
(j,)h(k;)75 1348 y(int)f(zzblock[2])g(=)h({1,1};)75 1404 y(int)f(zztype[2],)g
(zzindex[2];)75 1574 y(j=0;)75 1630 y(for)g(\(i=0;)h(i)f(<)h(1000;)f(i++\))
123 1686 y(if)g(\(particle[i].index==0\))170 1743 y({)170 1799
y(for)h(\(k=i+1;)f(\(k)g(<)h(1000\)&&\(particle[k].index)d(==)i(0\))h(;)f
(k++\);)170 1856 y(zindex[j])g(=)h(i;)170 1912 y(zblock[j])f(=)h(k-i;)170
1969 y(j++;)170 2025 y(i)g(=)g(k;)170 2082 y(})75 2138 y(MPI_type_indexed\()e
(j,)h(Particletype,)46 b(zindex,)23 b(zblock,)g(Zparticles\);)75
2195 y(/*)h(Zparticles)e(describe)h(particles)f(with)i(class)f(zero,)g(using)
147 2251 y(their)g(absolute)g(addresses*/)75 2364 y(/*)h(prepend)e(particle)h
(count)g(*/)75 2420 y(MPI_address\(\(void)f(*\)&j,)h(zzindex\);)75
2477 y(zzindex[1])f(=)i(MPI_bottom;)75 2533 y(zztype[0])f(=)g(MPI_int;)75
2590 y(zztype[1])g(=)g(Zparticles;)75 2646 y(MPI_type_struct\(2,)e(zztype,)i
(zzindex,)g(zzblock,)g(Ztype\);)-32 46 y Fv(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: 45 47
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(45)75 49 y Fp(MPI_type_commit\()22 b(Ztype\);)75
106 y(MPI_send\()h(MPI_bottom,)f(1,)i(Ztype,)f(dest,)g(tag,)g(comm\);)75
284 y Fr(1.13.7)49 b(Co)o(rrect)15 b(use)h(of)g(addresses)75
370 y FA(Successiv)o(ely)23 b(declared)f(v)m(ariables)h(in)e(C)g(or)g(F)l
(ortran)e(are)i(not)g(necessarily)h(stored)f(at)f(con)o(tiguous)75
426 y(lo)q(cations.)i(Th)o(us,)16 b(care)g(m)o(ust)f(b)q(e)h(exercised)i
(that)d(displacemen)o(ts)i(do)f(not)f(cross)h(from)f(one)h(v)m(ariable)75
483 y(to)e(another.)20 b(Also,)15 b(in)g(mac)o(hines)h(with)f(segmen)o(ted)g
(address)g(space,)g(addresses)g(are)g(not)f(unique)j(and)75
539 y(address)11 b(arithmetic)h(has)g(some)f(p)q(eculiar)i(prop)q(erties.)19
b(Th)o(us,)12 b(use)g(of)f Fw(addresses)p FA(,)f(i.e.)20 b(displacemen)o(ts)
75 596 y(relativ)o(e)c(to)e(the)i(start)e(address)29 b Fm(MPI)p
733 596 13 2 v 14 w(BOTTOM)p FA(,)14 b(has)h(to)g(b)q(e)h(restricted.)166
652 y(V)l(ariables)k(b)q(elong)f(to)f(the)h(same)f Fw(sequen)o(tial)k
(storage)d FA(if)g(they)g(b)q(elong)g(to)f(the)h(same)f(arra)o(y)l(,)75
708 y(to)g(the)g(same)g Fp(COMMON)g FA(blo)q(c)o(k)h(in)g(F)l(ortran,)f(or)g
(to)f(the)i(same)f(structure)g(in)h(C.)f(V)l(alid)i(addresses)e(are)75
765 y(de\014ned)f(recursiv)o(ely)f(as)f(follo)o(ws:)131 871
y(1.)22 b(The)g(function)g Ft(MPI)p 558 871 14 2 v 16 w(ADDRESS)h
FA(returns)e(a)h(v)m(alid)h(address,)h(when)e(passed)g(as)f(argumen)o(t)g(a)
189 928 y(v)m(ariable)16 b(of)f(the)g(calling)i(program.)131
1021 y(2.)22 b(The)16 b Ft(sta)o(rt)h FA(parameter)e(of)h(a)f(comm)o
(unication)i(function)g(ev)m(aluates)g(to)f(a)g(v)m(alid)h(address,)f(when)
189 1078 y(passed)f(as)g(argumen)o(t)f(a)h(v)m(ariable)i(of)e(the)g(calling)i
(program.)131 1172 y(3.)22 b(If)15 b Ft(v)g FA(is)h(a)f(v)m(alid)i(address,)d
(and)i Ft(i)f FA(is)g(an)h(in)o(teger,)f(then)g Ft(v+i)g FA(is)h(a)f(v)m
(alid)i(address,)e(pro)o(vided)h Ft(v)f FA(and)189 1228 y Ft(v+i)g
FA(are)g(in)h(the)f(same)g(sequen)o(tial)h(storage.)131 1322
y(4.)22 b(If)15 b Ft(v)g FA(is)h(a)f(v)m(alid)i(address)e(then)29
b Fm(MPI)p 820 1322 13 2 v 15 w(BOTTOM)13 b(+)h(v)h FA(is)h(a)f(v)m(alid)i
(address.)166 1428 y(A)22 b(correct)g(program)g(uses)g(only)h(v)m(alid)i
(addresses)d(to)g(iden)o(tify)i(the)e(lo)q(cations)h(of)f(en)o(tries)h(in)75
1485 y(comm)o(unication)16 b(bu\013ers.)k(F)l(urthermore,)14
b(if)h Ft(u)h FA(and)f Ft(v)g FA(are)g(t)o(w)o(o)f(v)m(alid)j(addresses,)e
(then)g(the)g(\(in)o(teger\))75 1541 y(di\013erence)j Ft(u)g(-)f(v)g
FA(can)g(b)q(e)h(computed)g(only)f(if)h(b)q(oth)f Ft(u)g FA(and)h
Fp(v)f FA(are)f(in)i(the)g(same)e(sequen)o(tial)j(storage;)75
1598 y(no)c(other)g(arithmetic)h(op)q(erations)f(can)g(b)q(e)h(meaningfully)i
(executed)e(on)f(addresses.)166 1654 y(W)l(e)f(sa)o(y)g(that)g(a)g(datat)o
(yp)q(e)g(is)h Fw(absolute)g FA(if)g(all)h(displacemen)o(ts)g(within)f(this)g
(datat)o(yp)q(e)f(are)g(v)m(alid)75 1710 y(\(absolute\))h(addresses;)g(it)g
(is)h Fw(relativ)o(e)g FA(otherwise.)166 1767 y(A)f(correct)g(program)f(ob)q
(eys)i(the)f(follo)o(wing)h(constrain)o(ts)e(in)i(the)g(use)f(of)g(datat)o
(yp)q(es:)143 1873 y Fl(\017)23 b FA(If)10 b(the)g Ft(oldt)o(yp)q(e)i
FA(argumen)o(t)d(used)i(in)g Ft(MPI)p 881 1873 14 2 v 15 w(TYPE)p
1013 1873 V 17 w(CONTIGUOUS,)h(MPI)p 1425 1873 V 15 w(TYPE)p
1557 1873 V 17 w(VECTOR,)f(MPI)p 1859 1873 V 16 w(TYPE)p 1992
1873 V 17 w(HVECTOR,)189 1930 y(MPI)p 274 1930 V 15 w(TYPE)p
406 1930 V 17 w(INDEX)20 b FA(or)38 b Ft(MPI)p 739 1930 V 16
w(TYPE)p 872 1930 V 16 w(HINDEX)20 b FA(is)g(absolute,)g(then)g(all)h
(addresses)e(within)i(it)189 1986 y(m)o(ust)12 b(b)q(e)h(to)f(v)m(ariables)h
(con)o(tained)g(within)h(the)f(same)f(arra)o(y)f(or)h(structure;)h(the)g
(result)f(datat)o(yp)q(e)189 2043 y(is)17 b(also)g(absolute,)g(and)g(all)g
(computed)g(addresses)g(m)o(ust)g(also)f(fall)i(within)g(the)f(same)f(arra)o
(y)f(or)189 2099 y(structure.)143 2193 y Fl(\017)23 b FA(If)e(all)g(en)o
(tries)g(of)f(the)h Ft(a)o(rra)o(y)p 698 2193 V 15 w(of)p 750
2193 V 16 w(t)o(yp)q(es)h FA(argumen)o(t)d(of)i Ft(MPI)p 1233
2193 V 15 w(TYPE)p 1365 2193 V 17 w(STRUC)h FA(are)e(absolute)h(ad-)189
2249 y(dresses)d(\(computed)h(b)o(y)g Ft(MPI)p 727 2249 V 15
w(ADDR)p FA(\),)g(then)f(the)h(result)g(datat)o(yp)q(e)f(is)h(also)g
(absolute.)30 b(Eac)o(h)189 2306 y(new)14 b(address)h(computed)g(from)f(an)g
(old)h(address)g(m)o(ust)f(fall)h(within)h(the)f(same)f(arra)o(y)f(or)h
(record)189 2362 y(as)h(the)i(old)f(address.)23 b(\(Addresses)16
b(in)h(the)f(old)h(t)o(yp)q(e)f(ma)o(y)f(not)h(b)q(e)h(all)g(within)g(the)f
(same)g(arra)o(y)189 2419 y(or)e(record.\))143 2512 y Fl(\017)23
b FA(If)18 b(a)g(comm)o(unication)g(call)i(is)e(in)o(v)o(ok)o(ed)h(with)f
(parameters)f Ft(sta)o(rt)i FA(and)36 b Ft(datat)o(yp)q(e)p
FA(,)20 b(then)e(either)189 2569 y Ft(sta)o(rt)c FA(=)26 b
Fm(MPI)p 427 2569 13 2 v 14 w(BOTTOM)14 b FA(and)f Ft(datat)o(yp)q(e)j
FA(is)e(a)f(handle)i(to)e(an)h(absolute)g(datat)o(yp)q(e,)f(or)g
Ft(sta)o(rt)h FA(is)g(set)189 2625 y(to)j(the)i(address)f(of)g(a)g(program)f
(v)m(ariable,)j(and)f(all)g(displacemen)o(ts)h(in)37 b Ft(datat)o(yp)q(e)20
b FA(relativ)o(e)f(to)189 2682 y(this)c(base)g(yield)i(addresses)e(that)f
(are)g(within)j(the)e(same)f(sequen)o(tial)i(storage)e(as)h(this)g(v)m
(ariable.)-32 46 y Fv(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 46 48
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(46)166 49 y(In)21 b(summary)l(,)g(the)f(t)o(yp)q(e)h
(constructors)e Ft(MPI)p 981 49 14 2 v 16 w(TYPE)p 1114 49
V 17 w(CONTIGUOUS,)j(MPI)p 1536 49 V 15 w(TYPE)p 1668 49 V
17 w(VECTOR,)75 106 y(MPI)p 160 106 V 16 w(TYPE)p 293 106 V
17 w(HVECTOR,)15 b(MPI)p 631 106 V 16 w(TYPE)p 764 106 V 17
w(INDEX)f FA(and)29 b Ft(MPI)p 1114 106 V 16 w(TYPE)p 1247
106 V 17 w(HINDEX)14 b FA(can)h(b)q(e)g(recursiv)o(ely)h(ap-)75
162 y(plied)22 b(to)e(build)j(datat)o(yp)q(es)d(that)f(will)k(com)o(bine)e(v)
m(ariables)h(that)e(b)q(elong)h(to)f(the)h(same)f(sequen)o(tial)75
219 y(storage;)d(v)m(ariables)i(that)e(do)g(not)g(b)q(elong)i(to)d(the)i
(same)f(sequen)o(tial)i(storage)d(can)i(b)q(e)g(com)o(bined)g(to-)75
275 y(gether)d(using)h(one)f(application)i(of)e Ft(MPI)p 788
275 V 16 w(TYPE)p 921 275 V 16 w(STRUCT)p FA(.)166 408 y Fn(Discussion:)166
457 y Fs(It)f(is)g(not)g(exp)q(ected)j(that)d(MPI)g(implemen)o(tations)d
(will)i(b)q(e)i(able)f(to)g(detect)i(erroneous,)f(\\out)f(of)f(b)q(ound")75
507 y(displacemen)o(ts)f({)h(unless)g(those)h(o)o(v)o(er\015o)o(w)e(the)i
(user)f(address)i(space)e({)g(since)g(the)h(MPI)f(call)f(ma)o(y)e(not)j(kno)o
(w)f(the)75 557 y(exten)o(t)j(of)e(the)i(arra)o(ys)f(and)f(records)j(in)d
(the)i(host)f(program.)166 607 y(In)o(teger)k(argumen)o(ts)e(of)g(t)o(yp)q(e)
i(constructor)h(functions)e(that)g(represen)o(t)i(displacemen)o(ts)e(should)f
(b)q(e)i(of)e(a)75 657 y(t)o(yp)q(e)f(that)f(can)h(b)q(e)g(used)g(to)f
(represen)o(t)j(an)d(address)i(on)e(the)h(host)g(system)f(\(e.g.,)f(64)h
(bits)h(on)f(a)g(64)g(bit)g(address)75 706 y(mac)o(hine\).)166
922 y Fn(Implemen)o(tati)o(on)e(note:)166 971 y Fs(There)i(is)f(no)f(need)i
(to)f(distinguish)f(\(absolute\))h(addresses)i(and)e(\(relativ)o(e\))g
(displacemen)o(ts)f(on)h(a)f(mac)o(hine)75 1021 y(with)k(con)o(tiguous)h
(address)g(space:)25 b Fm(MPI)p 742 1021 13 2 v 14 w(BOTTOM)16
b Fs(is)h(zero,)g(and)g(b)q(oth)f(addresses)j(and)d(displacemen)o(ts)h(are)75
1071 y(in)o(tegers.)h(On)12 b(mac)o(hines)e(where)j(the)f(distinction)f(is)g
(required,)h(addresses)i(are)e(recognized)g(as)g(expressions)h(that)75
1121 y(in)o(v)o(olv)o(e)g Fm(MPI)p 292 1121 V 14 w(BOTTOM)p
Fs(.)75 1347 y Fx(1.14)60 b(Universal)19 b(comm)o(unication)e(functions)75
1448 y FA(This)g(section)f(is)g(not)g(part)f(of)h(the)g(MPI)g(de\014nition.)
24 b(Its)15 b(goal)h(is)h(to)e(indicate)i(ho)o(w)f(the)g(de\014nition)h(or)75
1505 y(implemen)o(tation)i(of)e(the)g(p)q(oin)o(t)h(to)f(p)q(oin)o(t)g(comm)o
(unication)h(functions)h(can)e(b)q(e)h(reduced)g(to)f(a)g(small)75
1561 y(n)o(um)o(b)q(er)i(of)e(primitiv)o(es.)31 b(W)l(e)18
b(assume)g(the)h(a)o(v)m(ailabilit)o(y)h(of)e(the)g(primitiv)o(e)i(functions)
f(listed)g(at)f(the)75 1618 y(end)e(of)f(the)g(section,)g(and)h(the)f(abilit)
o(y)h(to)f(allo)q(cate)h(memory)f(for)f(new)i(v)m(ariables.)166
1674 y(W)l(e)g(assume)g(that)f(the)i(function)g Ft(MPI)p 846
1674 14 2 v 15 w(TYPE)p 978 1674 V 17 w(COMMIT)f FA(is)g(not)g(c)o(hanging)h
(the)f(represen)o(tation)75 1730 y(of)f(a)g(datat)o(yp)q(e,)f(so)h(that)f
(this)i(function)g(is)g(redundan)o(t.)166 1787 y(Comm)o(unication)g(with)h(a)
e Ft(count)j FA(argumen)o(t)d(that)g(is)i Fi(>)d FA(1)i(can)g(b)q(e)h
(reduced)g(to)e(comm)o(unication)75 1843 y(with)h Ft(count)h(=1)p
FA(,)f(b)o(y)f(replicating)j(the)31 b Ft(datat)o(yp)q(e)17
b FA(argumen)o(t)e Ft(count)i FA(times.)22 b(Comm)o(unication)16
b(with)g(a)75 1900 y Ft(a)f(sta)o(rt)h FA(argumen)o(t)f(that)g(is)h(not)29
b Fm(MPI)p 735 1900 13 2 v 15 w(BOTTOM)15 b FA(can)h(b)q(e)g(reduced)h(to)e
(comm)o(unication)h(with)g Ft(sta)o(rt)g FA(=)75 1956 y Fm(MPI)p
152 1956 V 14 w(BOTTOM)f FA(b)o(y)g(creating)h(a)e(suitable)j(displaced)g
(new)f(datat)o(yp)q(e.)j(Th)o(us:)166 2013 y Ft(MPI)p 251 2013
14 2 v 16 w(SEND\()c(sta)o(rt,)g(count,)h(datat)o(yp)q(e,)h(dest,)f(tag,)f
(comm)m(\))d FA(is)75 2107 y Fp(Type[1])23 b(=)h(datatype)75
2163 y(MPI_ADDRESS\()e(start,)h(Disp[1]\);)75 2219 y(Blocklen[1])f(=)i
(count;)75 2276 y(MPI_TYPE_STRUCT\()e(1,)h(Type,)g(Disp,)h(Blocklen,)e
(Newtype\))75 2332 y(MPI_SEND\()h(MPI_BOTTOM,)f(1,)i(Newtype,)e(dest,)i(tag,)
f(comm\))166 2426 y FA(The)18 b(same)g(construction)h(applies)g(to)f(all)h
(other)f(comm)o(unication)g(functions)h(with)g(argumen)o(ts)75
2483 y Ft(count)e FA(and)f Ft(datat)o(yp)q(e)p FA(.)24 b(W)l(e)15
b(shall)i(henceforth)g(restrict)e(ourselv)o(es)i(to)e(comm)o(unication)h
(that)f(in)o(v)o(olv)o(es)75 2539 y(only)h(one)f(elemen)o(t)h(with)g(an)f
(absolute)g(address)g(\()p Ft(count)i(=1)p FA(,)d(and)i Ft(sta)o(rt)f
FA(=)30 b Fm(MPI)p 1491 2539 13 2 v 14 w(BOTTOM)p FA(\).)166
2596 y(It)10 b(is)h(con)o(v)o(enien)o(t)g(to)e(to)h(mak)o(e)f(explicit)k(the)
d Fw(p)q(ersistence)g FA(attribute)g(of)g(comm)o(unication)h(ob)s(jects.)75
2652 y(A)f Ft(p)q(ersistent)j FA(comm)o(unication)e(ob)s(ject)e(need)i(b)q(e)
g(explicitly)i(deallo)q(cated)f(b)o(y)e(a)g Ft(MPI)p 1516 2652
14 2 v 15 w(COMMOBJ)p 1757 2652 V 18 w(FREE)-32 46 y Fv(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: 47 49
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(47)75 49 y(op)q(eration.)19 b(On)14 b(the)e(other)h(hand,)g
(an)g Ft(ephemeral)e FA(comm)o(unication)i(ob)s(ject)f(is)i(go)q(o)q(d)e(for)
g(a)h(single)h(com-)75 106 y(m)o(unication.)33 b(It)19 b(is)h(deallo)q(cated)
g(b)o(y)f(the)g(system)g(when)h(the)f(\014rst)g(comm)o(unication)h(it)f(is)h
(used)g(for)75 162 y(completes.)166 219 y(The)15 b(function)h
Ft(MPI)p 522 219 14 2 v 16 w(COMM)p 680 219 V 16 w(INIT)f FA(is)g(a)g(new)g
(univ)o(ersal)i(function)f(for)e(the)h(creation)h(of)e(comm)o(u-)75
275 y(nication)i(ob)s(jects:)75 379 y Ft(MPI)p 160 379 V 16
w(COMM)p 318 379 V 16 w(INIT\(handle,)f(datat)o(yp)q(e,)i(source-dest,)g
(tag,)e(comm)m(,)d(op-mo)q(de,)g(p)q(ersistence\))117 456 y
Fs(OUT)108 b Ft(handle)465 b Fs(new)15 b(comm)o(uni)o(cation)c(ob)r(ject)k
(\(handle\))117 530 y(IN)155 b Ft(datat)o(yp)q(e)424 b Fs(datat)o(yp)q(e)14
b(of)g(elemen)o(t)f(sen)o(t)i(or)f(receiv)o(ed)117 603 y(IN)155
b Ft(source-dest)377 b Fs(rank)14 b(of)f(destination)h(or)g(source)h(\(in)o
(teger\))117 677 y(IN)155 b Ft(tag)526 b Fs(message)14 b(tag)f(\(in)o
(teger\))117 751 y(IN)155 b Ft(comm)466 b Fs(comm)o(unicator)11
b(\(handle\))117 824 y(IN)155 b Ft(op-mo)q(de)420 b Fs(one)10
b(of)18 b Fm(MPI)p 1106 824 13 2 v 14 w(ST)m(AND)o(ARD)p Fs(,)f
Fm(MPI)p 1443 824 V 14 w(READ)o(Y)p Fs(,)g Fm(MPI)p 1698 824
V 15 w(SYNCHRONOUS)905 881 y Fs(or)28 b Fm(MPI)p 1047 881 V
14 w(RECV)117 955 y Fs(IN)155 b Ft(p)q(ersistence)383 b Fs(one)14
b(of)27 b Fm(MPI)p 1119 955 V 15 w(PERSISTENT)13 b Fs(or)28
b Fm(MPI)p 1534 955 V 14 w(EPHEMERAL)75 1143 y Fr(1.14.1)49
b(P)o(ersistent)14 b(comm)o(unication)g(objects)75 1229 y Ft(MPI)p
160 1229 14 2 v 16 w(CREA)l(TE)p 345 1229 V 17 w(SEND\(handle,)j(MPI)p
731 1229 V 15 w(BOTTOM,)f(1,)e(datat)o(yp)q(e,)j(dest,)f(tag,)f(comm)m(\))d
FA(is)75 1325 y Fp(MPI_COMM_INIT\(handle,)21 b(datatype,)i(dest,)g(tag,)g
(comm,)g(MPI_STANDARD,)f(MPI_PERSISTENT\))166 1421 y FA(The)f(functions)g
Ft(MPI)p 551 1421 V 16 w(CREA)l(TE)p 736 1421 V 17 w(RSEND)p
FA(,)g Ft(MPI)p 1015 1421 V 16 w(CREA)l(TE)p 1200 1421 V 17
w(RSEND)g FA(and)g Ft(MPI)p 1560 1421 V 16 w(CREA)l(TE)p 1745
1421 V 17 w(RECV)75 1478 y FA(are)15 b(dealt)h(in)g(a)e(similar)j(manner.)166
1534 y(The)e(functions)h Ft(MPI)p 540 1534 V 16 w(ST)l(ART)g
FA(and)g Ft(MPI)p 885 1534 V 15 w(COMMOBJ)p 1126 1534 V 18
w(FREE)g FA(are)f(primitiv)o(e.)75 1655 y Fr(1.14.2)49 b(Nonblo)q(cking)19
b(comm)n(unication)14 b(initiation)75 1740 y Ft(MPI)p 160 1740
V 16 w(ISEND\(handle,)i(MPI)p 557 1740 V 15 w(BOTTOM,)g(1,)f(datat)o(yp)q(e,)
h(dest,)g(tag,)f(comm)m(\))d FA(is)75 1837 y Fp(MPI_COMM_INIT\(handle,)21
b(datatype,)i(dest,)g(tag,)g(comm,)g(MPI_STANDARD,)f(MPI_EPHEMERAL\))75
1893 y(MPI_START\(handle\))166 1989 y FA(The)g(functions)g
Ft(MPI)p 553 1989 V 16 w(IRSEND)p FA(,)f Ft(MPI)p 844 1989
V 16 w(ISSEND)h FA(and)g Ft(MPI)p 1214 1989 V 16 w(IRECV)g
FA(are)f(handled)i(in)g(a)e(similar)75 2046 y(manner.)75 2166
y Fr(1.14.3)49 b(Comm)o(unication)14 b(completion)75 2252 y
FA(The)h(t)o(w)o(o)f(primitiv)o(e)j(completion)f(op)q(erations)g(are)e
Ft(MPI)p 1063 2252 V 16 w(W)l(AIT)l(ANY)i FA(and)g Ft(MPI)p
1467 2252 V 16 w(TEST)l(ALL)p FA(.)166 2308 y(The)c(function)h
Ft(MPI)p 516 2308 V 15 w(W)l(AIT)f FA(can)g(b)q(e)h(implemen)o(ted)g(b)o(y)f
(a)f(call)i(to)e Ft(MPI)p 1368 2308 V 16 w(W)l(AIT)l(ANY)i
FA(with)f(an)24 b Ft(a)o(rra)o(y-)75 2365 y(of-handles)17 b
FA(argumen)o(t)d(of)h(length)h(one.)166 2421 y(The)f(function)g
Ft(MPI)p 521 2421 V 16 w(W)l(AIT)l(ALL)g FA(can)g(b)q(e)g(implemen)o(ted)h
(as)f(a)f(lo)q(op)h(where)g(an)g Ft(MPI)p 1621 2421 V 16 w(W)l(AIT)g
FA(call)g(is)75 2478 y(executed)h(for)f(eac)o(h)g(successiv)o(e)h(handle)h
(in)f(the)f Ft(a)o(rra)o(y-of-handles)p FA(.)166 2534 y(The)f(function)g
Ft(MPI)p 519 2534 V 16 w(TEST)g FA(can)f(b)q(e)h(implemen)o(ted)i(b)o(y)d(a)g
(call)i(to)e Ft(MPI)p 1387 2534 V 16 w(TEST)l(ALL)g FA(with)h(an)g
Ft(a)o(rra)o(y-)75 2591 y(ofhandles)j FA(of)d(length)i(one.)166
2647 y(The)h(function)h Ft(MPI)p 526 2647 V 16 w(TEST)l(ANY)h
FA(can)e(b)q(e)h(implemen)o(ted)h(as)d(a)h(lo)q(op)h(where)f(an)h
Ft(MPI)p 1663 2647 V 15 w(TEST)g FA(call)75 2704 y(is)e(executed)g(for)e(eac)
o(h)i(successiv)o(e)g(handle)h(in)f(the)f Ft(a)o(rra)o(y-of-handle)p
FA(.)-32 46 y Fv(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32
272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40
554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40
836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40
1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345
y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40
1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853
y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40
2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361
y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40
2643 y(47)-40 2699 y(48)p eop
%%Page: 48 50
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(48)75 49 y Fr(1.14.4)49 b(Blo)q(cking)18 b(comm)o(unication)75
135 y Ft(MPI)p 160 135 14 2 v 16 w(SEND\(MPI)p 393 135 V 16
w(BOTTOM,)d(1,)g(datat)o(yp)q(e,)h(dest,)h(tag,)d(comm)m(\))e
FA(is)75 241 y Fp(MPI_COMM_INIT\(handle,)21 b(datatype,)i(dest,)g(tag,)g
(comm,)g(MPI_STANDARD,)f(MPI_EPHEMERAL\))75 298 y(MPI_START\(handle\))75
354 y(MPI_WAIT\(handle,)g(dontcarestatus\))166 461 y FA(The)15
b(functions)h Ft(MPI)p 540 461 V 16 w(RSEND)g FA(and)f Ft(MPI)p
888 461 V 16 w(SSEND)h FA(are)f(handled)i(in)f(a)f(similar)h(manner.)166
517 y Ft(MPI)p 251 517 V 16 w(RECV\(MPI)p 482 517 V 16 w(BOTTOM,)g(1,)e
(datat)o(yp)q(e,)j(source,)e(tag,)g(comm)m(\))d FA(is)75 623
y Fp(MPI_COMM_INIT\(handle,)21 b(datatype,)i(dest,)g(tag,)g(comm,)g
(MPI_RECV,)g(MPI_EPHEMERAL\))75 680 y(MPI_START\(handle\))75
736 y(MPI_WAIT\(handle,)f(status\))75 858 y Fr(1.14.5)49 b(Prob)q(e)17
b(and)f(cancel)75 944 y FA(The)f(functions)h Ft(MPI)p 449 944
V 16 w(PROBE)h FA(and)e Ft(MPI)p 800 944 V 16 w(CANCEL)g FA(are)g(primitiv)o
(e.)75 1065 y Fr(1.14.6)49 b(Return)16 b(status)75 1151 y FA(The)k(functions)
g Ft(MPI)p 458 1151 V 16 w(GET)p 562 1151 V 16 w(SOURCE)p FA(,)h
Ft(MPI)p 868 1151 V 16 w(GET)p 972 1151 V 16 w(T)l(A)o(G)p
FA(,)f Ft(MPI)p 1189 1151 V 16 w(GET)p 1293 1151 V 16 w(LEN)p
FA(,)f Ft(MPI)p 1507 1151 V 16 w(PROBE)p 1671 1151 V 18 w(LEN)p
FA(,)g(and)75 1208 y Ft(MPI)p 160 1208 V 16 w(TEST)p 290 1208
V 16 w(CANCELLED)d FA(are)e(primitiv)o(e.)166 1264 y(These)h(functions)h(are)
f(simple)i(macros)d(that)h(access)g(records)g(in)h(a)f(structure.)75
1386 y Fr(1.14.7)49 b(send-receive)15 b(and)i(exchange)75 1472
y Ft(MPI)p 160 1472 V 16 w(SENDRECV\()22 b(send)p 531 1472
V 18 w(sta)o(rt,)g(send)p 753 1472 V 18 w(count,)h(send)p 995
1472 V 18 w(t)o(yp)q(e,)g(dest,)h(recv)p 1319 1472 V 16 w(sta)o(rt,)e(recv)p
1533 1472 V 17 w(count,)h(recv)p 1768 1472 V 16 w(t)o(yp)q(e,)75
1528 y(source,)15 b(tag,)g(comm)m(,)d(status\))17 b FA(is)75
1634 y Fp(MPI_ISEND\(handle[0],)k(send_start,)h(send_count,)h(send_type,)f
(dest,)i(tag,)f(comm\))75 1691 y(MPI_IRECV\(handle[1],)e(recv_start,)h
(recv_count,)h(recv_type,)f(source,)h(tag,)h(comm\))75 1747
y(MPI_WAITALL\(2,)e(handle,)h(status_array\))75 1804 y(status)g(=)h
(status_array[1])166 1910 y FA(The)13 b(non)o(blo)q(c)o(king)h(sends)f(and)g
(receiv)o(es)h(can)f(b)q(e)g(replaced)h(b)o(y)f(their)g(primitiv)o(e)h
(implemen)o(tation.)166 1966 y(The)f(function)i Ft(MPI)p 519
1966 V 15 w(EX)o(CHANGE)g FA(can)e(b)q(e)h(handled)h(in)f(a)f(similar)i
(manner;)e(a)g(temp)q(orary)g(bu\013er)75 2023 y(need)20 b(b)q(e)h(allo)q
(cated)f(to)f(replicate)i(the)e(send)h(and)g(receiv)o(e)h(bu\013er.)32
b(A)20 b(size)g(for)f(this)h(bu\013er)g(can)f(b)q(e)75 2079
y(computed)d(using)g(the)f(function)h Ft(MPI)p 745 2079 V 16
w(TYPE)p 878 2079 V 16 w(EXTENT)p FA(.)75 2201 y Fr(1.14.8)49
b(Derived)16 b(datat)o(yp)q(es)75 2287 y FA(W)l(e)22 b(ha)o(v)o(e)f(outlined)
i(in)f(Section)g(1.13.1)e(ho)o(w)h(eac)o(h)h(datat)o(yp)q(e)e(constructor)h
(can)h(b)q(e)g(expressed)g(in)75 2343 y(terms)d(of)g(the)g(next)g(one.)32
b(Th)o(us)20 b(all)g(datat)o(yp)q(e)f(constructors)f(can)h(b)q(e)h(expressed)
g(in)g(terms)f(of)g(the)75 2400 y(constructor)11 b Ft(MPI)p
397 2400 V 16 w(TYPE)p 530 2400 V 17 w(STRUCT)p FA(;)h(the)h(functions)g
Ft(MPI)p 1099 2400 V 15 w(TYPE)p 1231 2400 V 17 w(FREE)p FA(,)f
Ft(MPI)p 1464 2400 V 16 w(TYPE)p 1597 2400 V 17 w(EXTENT)h
FA(and)75 2456 y Ft(MPI)p 160 2456 V 16 w(ADDRESS)j FA(are)f(primitiv)o(e.)
-32 46 y Fv(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: 49 51
bop 75 -100 a Fu(SECTION)16 b(1.)35 b(POINT)15 b(TO)h(POINT)f(COMMUNICA)l
(TION)632 b FA(49)75 49 y Fr(1.14.9)49 b(Summ)o(a)o(r)o(y)75
135 y FA(In)13 b(order)e(to)g(implemen)o(t)j(the)e(MPI)f(p)q(oin)o(t-to-p)q
(oin)o(t)i(comm)o(unication)g(one)f(needs)g(16)g(functions;)h(ab)q(out)75
192 y(half)j(of)e(those)h(are)g(trivial)h(macros:)131 298 y(1.)22
b Ft(MPI)p 274 298 14 2 v 15 w(COMM)p 431 298 V 17 w(INIT)131
392 y FA(2.)g Ft(MPI)p 274 392 V 15 w(ST)l(ART)131 485 y FA(3.)g
Ft(MPI)p 274 485 V 15 w(W)l(AIT)l(ALL)131 579 y FA(4.)g Ft(MPI)p
274 579 V 15 w(TEST)l(ANY)131 673 y FA(5.)g Ft(MPI)p 274 673
V 15 w(PROBE)131 767 y FA(6.)g Ft(MPI)p 274 767 V 15 w(CANCEL)131
861 y FA(7.)g Ft(MPI)p 274 861 V 15 w(GET)p 377 861 V 17 w(SOURCE)131
954 y FA(8.)g Ft(MPI)p 274 954 V 15 w(GET)p 377 954 V 17 w(T)l(A)o(G)131
1048 y FA(9.)g Ft(MPI)p 274 1048 V 15 w(GET)p 377 1048 V 17
w(LEN)108 1142 y FA(10.)g Ft(MPI)p 274 1142 V 15 w(PROBE)p
437 1142 V 18 w(LEN)108 1236 y FA(11.)g Ft(MPI)p 274 1236 V
15 w(IS)p 327 1236 V 17 w(CANCELLED)108 1330 y FA(12.)g Ft(MPI)p
274 1330 V 15 w(TYPE)p 406 1330 V 17 w(STRUCT)108 1424 y FA(13.)g
Ft(MPI)p 274 1424 V 15 w(TYPE)p 406 1424 V 17 w(EXTENT)108
1517 y FA(14.)g Ft(MPI)p 274 1517 V 15 w(ADDRESS)108 1611 y
FA(15.)g Ft(MPI)p 274 1611 V 15 w(TYPE)p 406 1611 V 17 w(FREE)108
1705 y FA(16.)g Ft(MPI)p 274 1705 V 15 w(COMM)p 431 1705 V
17 w(FREE)166 1811 y FA(On)17 b(the)f(other)g(hand,)h(w)o(e)f(exp)q(ect)h
(most)f(implemen)o(tations)h(to)f(use)h(more)e(primitiv)o(es,)j(in)f(order)75
1868 y(to)e(reduce)h(comm)o(unication)g(o)o(v)o(erheads,)e(reduce)i
(bu\013ering,)f(and)h(impro)o(v)o(e)f(error)f(rep)q(orting.)-32
46 y Fv(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32
328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40
611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40
893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119
y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40
1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627
y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40
1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135
y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40
2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643
y(47)-40 2699 y(48)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF