%!PS-Adobe-2.0 %%Creator: dvips 5.515 Copyright 1986, 1993 Radical Eye Software %%Title: draft.dvi %%CreationDate: Sat Apr 24 12:07:00 1993 %%Pages: 103 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips draft.dvi -o draft.ps %DVIPSSource: TeX output 1993.04.24:1200 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[ 0 -1 1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize -72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{ /nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{ /sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0] N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{ 128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 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 /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N /eop{SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if pop /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div /hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V {}B /RV statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval(NeXT)eq or}{pop false} ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /QV{gsave transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail} B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{ 3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{ 3 2 roll p a}B /bos{/SS save N}B /eos{SS restore}B end %%EndProcSet TeXDict begin 40258431 52099146 1000 300 300 (/amd/iliamna/projects/dsrg/C/staff/otto/papers/Editor/MPI/draft3/draft.dvi) @start /Fa 3 52 df<03000700FF000700070007000700070007000700070007000700 07000700070007000700070007007FF00C157E9412>49 D<0F8030E040708030C038E038 4038003800700070006000C00180030006000C08080810183FF07FF0FFF00D157E9412> I<0FE030306018701C701C001C00180038006007E000300018000C000E000EE00EE00EC0 0C401830300FE00F157F9412>I E /Fb 1 99 df<7C0018001800180018003000300030 003000678068C070406060C060C060C060C06080C080C08180C10046003C000B177E960F >98 D E /Fc 7 118 df<01F007080C08181C3838300070007000E000E000E000E000E0 00E008E010602030C01F000E127B9113>99 D<0003C0000670000C70001C60001C00001C 0000380000380000380000380000380003FF8000700000700000700000700000700000E0 0000E00000E00000E00000E00001C00001C00001C00001C00001C0000380000380000380 00030000030000070000C60000E60000CC00007800001425819C0D>102 D<01800380010000000000000000000000000000001C002600470047008E008E000E001C 001C001C0038003800710071007100720072003C00091C7C9B0D>105 D<3C3C002646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C1C 00381C40381C40383840383880701900300E0012127C9117>110 D<01E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E 000F127B9115>I<00C001C001C001C00380038003800380FFE00700070007000E000E00 0E000E001C001C001C001C00384038403840388019000E000B1A7D990E>116 D<1E0300270700470700470700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C 003838803838801838801839001C5900078E0011127C9116>I E /Fd 8 56 df34 DI50 DI< E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000 E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000 E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000 E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000FFFC FFFCFFFC0E4A73811C>I<001C001C001C001C001C001C001C001C001C001C001C001C00 1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00 1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00 1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00 1C001C001C001C001CFFFCFFFCFFFC0E4A80811C>III E /Fe 1 4 df<020002000200C218F2783AE0 0F800F803AE0F278C2180200020002000D0E7E8E12>3 D E /Ff 3 36 df<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C0 10107E9115>15 D<00000004000000000200000000020000000001000000000080000000 0040FFFFFFFFF8FFFFFFFFF8000000004000000000800000000100000000020000000002 000000000400250E7E902A>33 D<03000300030003000300030003000300030003000300 030003000300030003000300030003000300030003000300030003000300030003000300 8304631813200B4007800300030001000E257D9C15>35 D E /Fg 62 126 df<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600000000060F0F0600419779816> 33 DI<03800007E0 000FE0001E70001C70001C70001C70001C77E01CE7E01DE7E00FC7000F8E000F0E001E0E 003F1C007F1C00739C00E3F800E1F800E0F1C0E0F1C071F9C07FFFC03F9F801E07001319 7F9816>38 D<30787C3C1C1C1C1C3878F0E040060D789816>I<00E001E0038007000E00 1C001C0038003800700070007000E000E000E000E000E000E000E000E000E00070007000 7000380038001C001C000E000700038001E000E00B217A9C16>II<01C00001C00001C0 0001C00071C700F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF8071C70001C0 0001C00001C00001C00011127E9516>I<387C7E7E3E0E1E1C78F060070B798416>44 D<70F8F8F8700505788416>46 D<000180000380000380000700000700000E00000E0000 1C00001C0000380000380000700000700000E00000E00001C00001C00003800003800007 00000700000E00000E00001C00001C0000380000380000700000700000E00000E00000C0 000011207E9C16>I<03E0000FF8001FFC001E3C00380E00780F00700700700700E00380 E00380E00380E00380E00380E00380E00380E00380F00780700700700700780F003C1E00 1E3C001FFC000FF80003E00011197E9816>I<01800380038007800F807F80FF80738003 8003800380038003800380038003800380038003800380038003807FF87FFC7FF80E197C 9816>I<387C7C7C38000000000000000038787C7C3C1C1C3870E0400618799116>59 D<7FFF00FFFF80FFFF80000000000000000000000000000000FFFF80FFFF807FFF00110B 7E9116>61 D<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00 071C00071C00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C0700 7F1FC0FF1FE07F1FC013197F9816>65 D<7FF800FFFE007FFF001C0F001C07801C03801C 03801C03801C07801C07001FFF001FFE001FFE001C1F001C03801C03C01C01C01C01C01C 01C01C01C01C03C01C07807FFF80FFFF007FFC0012197F9816>I<01F18007FB800FFF80 1F0F803C0780380380700380700380F00000E00000E00000E00000E00000E00000E00000 E00000F000007003807003803803803C07001F0F000FFE0007FC0001F00011197E9816> I<7FF800FFFE007FFF001C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00 E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE 007FF8001319809816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C 00001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C 00E01C00E07FFFE0FFFFE07FFFE013197F9816>II<03E30007FF 000FFF001E1F003C0F00380700700700700700F00000E00000E00000E00000E00000E03F 80E07FC0E03F80F00700700700700700380F003C0F001E1F000FFF0007F70003E7001219 7E9816>I73 D<7F0FE0FF8FF07F0FE0 1C07801C0F001C0E001C1C001C3C001C78001CF0001CE0001DF0001FF0001FF8001F3800 1E1C001C1C001C0E001C0E001C07001C07001C03807F07E0FF8FF07F07E01419809816> 75 DII<7E1FC0FF3FE07F1FC01D07001D 87001D87001D87001DC7001DC7001CC7001CC7001CE7001CE7001CE7001C67001C67001C 77001C77001C37001C37001C37001C17007F1F00FF9F007F0F0013197F9816>I<1FFC00 3FFE007FFF00780F00F00780E00380E00380E00380E00380E00380E00380E00380E00380 E00380E00380E00380E00380E00380E00380F00780F00780780F007FFF003FFE001FFC00 11197E9816>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01C01C03 C01C03801C0F801FFF001FFE001FF8001C00001C00001C00001C00001C00001C00001C00 007F0000FF80007F000012197F9816>I<7FE000FFF8007FFC001C1E001C0F001C07001C 07001C07001C07001C0F001C1E001FFC001FF8001FFC001C1C001C0E001C0E001C0E001C 0E001C0E201C0E701C0E707F07E0FF87E07F03C014197F9816>82 D<07E3001FFF003FFF00781F00F00700E00700E00700E00000F000007800003F80001FF0 0007FC0000FE00000F00000700000380000380600380E00380E00700F80F00FFFE00FFFC 00C7F00011197E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0E0E0E0E0E0E0E0E000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00007FC000FFE0007FC0013197F9816>I<7F07F0FF8FF87F07F01C01C01C01C0 1C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0 1C01C01C01C00E03800E038007070007FF0003FE0000F8001519809816>I87 D89 D91 D93 D95 D<1FE0003FF0007FF800783C00300E00000E00000E0003FE001FFE003E0E00700E00E00E 00E00E00E00E00783E007FFFE03FE7E00F83E013127E9116>97 D<7E0000FE00007E0000 0E00000E00000E00000E00000E3E000EFF000FFF800F83C00F00E00E00E00E00700E0070 0E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF00063C001419809816> I<03F80FFC1FFE3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC0FF803 F010127D9116>I<003F00007F00003F0000070000070000070000070003C7000FF7001F FF003C1F00780F00700700E00700E00700E00700E00700E00700E00700700F00700F003C 1F001FFFE00FE7F007C7E014197F9816>I<03E00FF81FFC3C1E780E7007E007FFFFFFFF FFFFE000E000700778073C0F1FFE0FFC03F010127D9116>I<001F00007F8000FF8001E7 8001C30001C00001C0007FFF00FFFF00FFFF0001C00001C00001C00001C00001C00001C0 0001C00001C00001C00001C00001C00001C0003FFE007FFF003FFE0011197F9816>I<03 E3C007F7E00FFFE01C1CC0380E00380E00380E00380E00380E001C1C000FF8001FF0001B E0003800001800001FFC001FFF003FFF807803C0E000E0E000E0E000E0E000E07001C07C 07C03FFF800FFE0003F800131C7F9116>I<7E0000FE00007E00000E00000E00000E0000 0E00000E3C000EFE000FFF000F87800F03800E03800E03800E03800E03800E03800E0380 0E03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816>I<018003C003C00180 00000000000000007FC07FC07FC001C001C001C001C001C001C001C001C001C001C001C0 01C07FFFFFFF7FFF101A7D9916>I<7E0000FE00007E00000E00000E00000E00000E0000 0E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F1E00 0E0E000E07000E07807F87F0FFCFF07F87F01419809816>107 D II<7E3C00FEFE007FFF000F 87800F03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E03807F C7F0FFE7F87FC7F01512809116>I<03E0000FF8001FFC003C1E00780F00700700E00380 E00380E00380E00380E00380F00780700700780F003C1E001FFC000FF80003E00011127E 9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E00700E00700E00700E00700E00 700E00700E00E00F01E00F83C00FFF800EFF000E3C000E00000E00000E00000E00000E00 000E00007FC000FFE0007FC000141B809116>I114 D<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE0 0EF00EF81EFFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00 FFFF00FFFF00070000070000070000070000070000070000070000070100070380070380 07038007870003FE0001FC0000F80011177F9616>I<7E1F80FE3F807E1F800E03800E03 800E03800E03800E03800E03800E03800E03800E03800E03800E03800E0F800FFFF007FB F803E3F01512809116>I<7F1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E0E0007 1C00071C00071C00071C0003B80003B80003B80001F00001F00000E00013127F9116>I< FF1FE0FFBFE0FF1FE038038038038038038038038038E38019F30019F30019B3001DB700 1DB7001DB7001DB7000F1E000F1E000F1E0013127F9116>I<7F1FC07F3FC07F1FC00F1C 00073C0003B80003F00001F00000E00001E00001F00003B800073C00071C000E0E007F1F C0FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E0E0007 0E00071C00071C00039C00039C0003980001B80001B80000F00000F00000F00000E00000 E00000E00001C00079C0007BC0007F80003F00003C0000131B7F9116>I<001F80007F80 00FF8001E00001C00001C00001C00001C00001C00001C00001C00001C00001C00003C000 7F8000FF0000FF00007F800003C00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001E00000FF80007F80001F8011207E9C16>123 D<7C0000FF0000FF8000 03C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001E00000FF00 007F80007F8000FF0001E00001C00001C00001C00001C00001C00001C00001C00001C000 01C00003C000FF8000FF00007C000011207E9C16>125 D E /Fh 82 126 df<70F8F8F8F8F8F8F8F8F8F8F8F8F8F8F8F870000000000070F8F8F870051C77 9B18>33 D<030600078F00078F00078F00078F00078F00078F007FFFC0FFFFE0FFFFE07F FFC00F1E000F1E000F1E000F1E000F1E000F1E007FFFC0FFFFE0FFFFE07FFFC01E3C001E 3C001E3C001E3C001E3C001E3C000C1800131C7E9B18>35 D<3803007C07807C0780EE0F 80EE0F00EE0F00EE1F00EE1E00EE1E00EE3E007C3C007C3C00387C0000780000780000F8 0000F00001F00001E00001E00003E00003C00003C00007C0000783800787C00F87C00F0E E00F0EE01F0EE01E0EE01E0EE03E0EE03C07C03C07C018038013247E9F18>37 D<01C00007E0000FF0000E70001C38001C38001C38001C38001C73F01C73F01CE3F00FE3 800FC7000F87000F07001F0E003F0E007B8E0073DC00E1DC00E0F800E0F800E07070E078 7070FC707FFFE03FCFE00F03C0141C7F9B18>I<007000F001E003C007800F001E001C00 380038007000700070007000E000E000E000E000E000E000E000E0007000700070007000 380038001C001E000F00078003C001F000F000700C24799F18>40 D<6000F00078003C001E000F000780038001C001C000E000E000E000E000700070007000 70007000700070007000E000E000E000E001C001C0038007800F001E003C007800F00060 000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF001FFC0007 F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C00011147D97 18>I<00600000F00000F00000F00000F00000F00000F00000F0007FFFC0FFFFE0FFFFE0 7FFFC000F00000F00000F00000F00000F00000F00000F00000600013147E9718>I<1C3E 7E7F3F1F070E1E7CF860080C788518>I<7FFF00FFFF80FFFF807FFF0011047D8F18>I<30 78FCFC78300606778518>I<000300000780000780000F80000F00001F00001E00001E00 003E00003C00007C0000780000780000F80000F00001F00001E00003E00003C00003C000 07C0000780000F80000F00000F00001F00001E00003E00003C00003C00007C0000780000 F80000F00000F0000060000011247D9F18>I<01F00007FC000FFE001F1F001C07003803 807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000 E0F001E07001C07001C07803C03803801C07001F1F000FFE0007FC0001F000131C7E9B18 >I<01800380038007800F803F80FF80FB80438003800380038003800380038003800380 038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>I<03F0000FFE003F FF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001C00001C00003C000 0780000F00001E00003C0000780000F00001E00007C0000F80001E00E03C00E07FFFE0FF FFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C07801C03001C00001C0 0003C0000380000F0003FF0003FE0003FF000007800003C00001C00000E00000E00000E0 F000E0F000E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B18>I<001F00003F 0000770000770000E70001E70001C7000387000787000707000E07001E07003C07003807 00780700F00700FFFFF8FFFFF8FFFFF8000700000700000700000700000700000700007F F000FFF8007FF0151C7F9B18>I<1FFF803FFF803FFF8038000038000038000038000038 00003800003800003800003BF8003FFE003FFF003C07801803C00001C00000E00000E060 00E0F000E0F000E0E001C07003C07C0F803FFF001FFC0003F000131C7E9B18>I<007E00 01FF0007FF800F83C01E03C01C03C0380180380000700000700000E1F800E7FE00FFFF00 FE0780F803C0F001C0F000E0E000E0F000E07000E07000E07000E03801C03C03C01E0780 0FFF0007FE0001F800131C7E9B18>II<03F8000FFE001FFF003E0F803803807001C07001C07001C07001C03803803C07801F FF0007FC000FFE001F1F003C07807001C0F001E0E000E0E000E0E000E0E000E07001C078 03C03E0F801FFF000FFE0003F800131C7E9B18>I<03F0000FFC001FFE003C0F00780780 700380E001C0E001C0E001C0E001E0E001E07001E07803E03C0FE01FFFE00FFEE003F0E0 0000E00001C00001C00001C0300380780780780F00783E003FFC001FF00007C000131C7E 9B18>I<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A789318> 59 D<000300000780001F80003F00007E0001FC0003F00007E0001FC0003F00007E0000 FC0000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F80000780 00030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE0000000000000000000000000FFFF E0FFFFE0FFFFE07FFFC0130C7E9318>I<600000F00000FC00007E00003F00001FC00007 E00003F00001FC00007E00003F00001F80001F80003F00007E0001FC0003F00007E0001F C0003F00007E0000FC0000F0000060000011187D9918>I<00700000F80000F80000D800 00D80001DC0001DC0001DC00018C00038E00038E00038E00038E00030600070700070700 0707000707000FFF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0 151C7F9B18>65 DI<00F8E003FEE007FFE0 0F07E01E03E03C01E03800E07000E07000E0700000E00000E00000E00000E00000E00000 E00000E00000E000007000007000E07000E03800E03C00E01E01C00F07C007FF8003FE00 00F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00E01C00 E01C00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00E01C00 E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>III<01F1C003FD C00FFFC01F0FC01C03C03803C03801C07001C07001C0700000E00000E00000E00000E000 00E00000E00FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0FC00FFF C003FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C 01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C01C01C 01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I<7FFF00 FFFF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 7FFF00FFFF807FFF00111C7D9B18>I<7F07F0FF87F87F07F01C03C01C07801C07001C0E 001C1E001C3C001C38001C70001CF0001DF0001DF0001FB8001FB8001F1C001E1C001C0E 001C0E001C07001C07001C03801C03801C01C07F03F0FF87F87F03F0151C7F9B18>75 D<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E00 000E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00 700E00707FFFF0FFFFF07FFFF0141C7F9B18>II<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C0 1CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C0DC0 1C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FF8003FFE007FFF00780F007007 00F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E003 80E00380E00380E00380E00380E00380F00780700700780F007FFF003FFE000FF800111C 7D9B18>II<0FF8003FFE007FFF00780F00 700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380 E00380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000FFC00 001C00001E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF001C0F 801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F 001C07001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F00 F0161C7F9B18>I<03F3801FFF803FFF807C0F80700780E00380E00380E00380E0000070 00007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E0 00E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8 E07038E07038E07038E07038007000007000007000007000007000007000007000007000 00700000700000700000700000700000700000700000700000700000700007FF0007FF00 07FF00151C7F9B18>IIII<7F8FE07F9F E07F8FE00E07000F0700070E00078E00039C0003DC0001F80001F80000F00000F0000070 0000F00000F80001F80001DC00039E00038E00070F000707000E07800E03801E03C07F07 F0FF8FF87F07F0151C7F9B18>II<3FFFE0 7FFFE07FFFE07001C07003C0700780700700000F00001E00001C00003C00007800007000 00F00001E00001C00003C0000780000700000F00001E00E01C00E03C00E07800E07000E0 FFFFE0FFFFE0FFFFE0131C7E9B18>II93 D<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E00300E00 00070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F00 3FFFF01FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E 00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E 00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I< 01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E00000 E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80003F 80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F807007 80700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F801FFF F00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F00380780700380700380E0 01C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF8007FF0001 FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007FFFC0 FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFF F81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E0 003800001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800 F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E 00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E 00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B 18>I<03800007C00007C00007C0000380000000000000000000000000007FC000FFC000 7FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I<0038007C007C007C003800 000000000000000FFC1FFC0FFC001C001C001C001C001C001C001C001C001C001C001C00 1C001C001C001C001C001C001C001C001C001C001C6038F078FFF07FE03F800E277E9C18 >II<7FE000FFE0007FE00000E00000E000 00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000 00E00000E00000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E 9B18>I<7CE0E000FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C00 1C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C00 7F1F1F00FFBFBF807F1F1F001914819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00 E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3 FCFFE7FE7FC3FC1714809318>I<01F0000FFE001FFF003E0F803803807001C07001C0E0 00E0E000E0E000E0E000E0E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001 F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F00700E00700E00380E0038 0E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF800E3E000E0000 0E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E809318>I<7F87 E0FF9FF07FBFF803F87803F03003E00003C00003C0000380000380000380000380000380 000380000380000380000380007FFE00FFFF007FFE0015147F9318>114 D<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC0003FE00001F 00600780E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<01800003 80000380000380000380007FFFC0FFFFC0FFFFC003800003800003800003800003800003 80000380000380000380000380400380E00380E00380E001C1C001FFC000FF80003E0013 197F9818>I<7E07E0FE0FE07E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0 0E00E00E00E00E00E00E00E00E00E00E01E00F03E007FFFC03FFFE01FCFC1714809318> I<7F8FF0FF8FF87F8FF01E03C00E03800E03800E0380070700070700070700038E00038E 00038E00038E0001DC0001DC0001DC0000F80000F80000700015147F9318>II<7F8FF07F9FF07F8FF0 070700078E00039E0001DC0001F80000F80000700000F00000F80001DC00039E00038E00 0707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8FF00E01C00E03 800E0380070380070700070700038700038600038E0001CE0001CE0000CC0000CC0000DC 0000780000780000780000700000700000700000F00000E00079E0007BC0007F80003F00 001E0000151E7F9318>I<3FFFF07FFFF07FFFF07001E07003C0700780000F00001E0000 3C0000F80001F00003C0000780000F00701E00703C0070780070FFFFF0FFFFF0FFFFF014 147F9318>I<0007E0001FE0007FE000780000E00000E00000E00000E00000E00000E000 00E00000E00000E00000E00000E00001E0007FC000FF8000FF80007FC00001E00000E000 00E00000E00000E00000E00000E00000E00000E00000E00000E00000E000007800007FE0 001FE00007E013247E9F18>I<60F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0 F0F0F0F0F0F0F0F0F0F0F0F0600424769F18>I<7C0000FF0000FFC00003C00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000F000007FC000 3FE0003FE0007FC000F00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00003C000FFC000FF00007C000013247E9F18>I E /Fi 51 123 df<00003FE00000E0100001803800038078000300780007003000070000 0007000000070000000E0000000E0000000E000000FFFFE0000E00E0001C01C0001C01C0 001C01C0001C01C0001C0380003803800038038000380380003807000038070000700700 0070071000700E2000700E2000700E2000E00E2000E0064000E0038000E0000000C00000 01C0000001C000003180000079800000F3000000620000003C0000001D29829F1A>12 D<000100020004000800100020006000C0018001800300070006000E000C001C00180038 00380030007000700060006000E000E000C000C000C000C000C000C000C000C000C000C0 00C000C000C0004000600060002000100010000800102E79A113>40 D<0010000008000004000006000002000003000003000003000001000001800001800001 800001800001800001800001800003800003800003800003000003000003000007000007 00000600000600000E00000C00000C00001C0000180000380000300000700000600000E0 0000C0000180000100000300000600000C0000180000300000600000800000112E80A113 >I<1C3C3C3C3C040408081020204080060E7D840E>44 D<7FF0FFE07FE00C037D8A10>I< 70F8F8F0E005057B840E>I<000F800030E000E07001C0700380300380380700380F0078 0F00780E00781E00781E00703C00F03C00F03C00F03C00F07801E07801E07801E07801C0 7003C0F003C0F00380F00780F00700700700700E00701C003038001870000FC000151F7C 9D17>48 D<000200020006000E003C00DC031C001C003800380038003800700070007000 7000E000E000E000E001C001C001C001C003800380038003800780FFF80F1E7B9D17>I< 001F000061800080E00100E00200700220700420700410700820F00820F00820F00840E0 0881E00703C0000380000700000C00001800006000008000030000040000080040100040 1000802001807E030047FF0041FE0080FC00807800141F7C9D17>I<001F0000718000C0 C00180C00380E00700E00F00E00F01E01E01E01E01E01E01E01E01C01C03C01C03C01C03 C01C07C01C0F800C0F8006378003C700000F00000E00000E00001C00601C00F03800F070 00E0600080C0004380003E0000131F7B9D17>57 D<070F1F1F0E00000000000000000000 70F8F8F0E008147B930E>I<00000200000006000000060000000E0000001E0000001E00 00003F0000002F0000004F0000004F0000008F0000010F0000010F0000020F0000020F00 00040F00000C0F0000080F0000100F0000100F0000200F80003FFF800040078000C00780 0080078001000780010007800200078002000780060007801E000F80FF807FF81D207E9F 22>65 D<01FFFFC0001E00F0001E0078001E0038001E003C003C003C003C003C003C003C 003C003C0078007800780078007800F0007801E000F0078000FFFE0000F00F8000F003C0 01E001C001E001E001E001E001E001E003C001E003C001E003C001E003C001C0078003C0 0780078007800F0007801E000F007800FFFFE0001E1F7D9E20>I<0000FE020007818600 1C004C0038003C0060003C00C0001C01C0001803800018070000180F0000181E0000101E 0000103C0000003C00000078000000780000007800000078000000F0000000F0000000F0 000000F0000000F00000807000008070000080700001003800010038000200180004000C 001800060020000381C00000FE00001F217A9F21>I<01FFFF80001E00E0001E0070001E 0038001E001C003C001C003C000E003C000E003C000E0078000E0078000E0078000E0078 000E00F0001E00F0001E00F0001E00F0001E01E0003C01E0003C01E0003C01E0007803C0 007003C0007003C000E003C001C0078001C00780038007800E0007801C000F007000FFFF C0001F1F7D9E22>I<01FFFFFE001E001C001E000C001E0004001E0004003C0004003C00 04003C0004003C00040078080800780800007808000078180000F0300000FFF00000F030 0000F0300001E0200001E0200001E0200001E0001003C0002003C0002003C0004003C000 40078000800780018007800100078007000F001F00FFFFFE001F1F7D9E1F>I<01FFFFFC 001E0038001E0018001E0008001E0008003C0008003C0008003C0008003C000800780010 00780800007808000078080000F0100000F0300000FFF00000F0300001E0200001E02000 01E0200001E0200003C0000003C0000003C0000003C00000078000000780000007800000 078000000F800000FFF800001E1F7D9E1E>I<0000FC040007030C001C00980030007800 E0007801C000380380003003800030070000300E0000301E0000201E0000203C0000003C 00000078000000780000007800000078000000F0000000F000FFF0F0000780F0000780F0 000F0070000F0070000F0070000F0070001E0038001E0018003E001C002E000E00CC0003 83040000FC00001E217A9F23>I<01FFF3FFE0001F003E00001E003C00001E003C00001E 003C00003C007800003C007800003C007800003C007800007800F000007800F000007800 F000007800F00000F001E00000FFFFE00000F001E00000F001E00001E003C00001E003C0 0001E003C00001E003C00003C007800003C007800003C007800003C007800007800F0000 07800F000007800F000007800F00000F801F0000FFF1FFE000231F7D9E22>I<01FFF000 1F00001E00001E00001E00003C00003C00003C00003C0000780000780000780000780000 F00000F00000F00000F00001E00001E00001E00001E00003C00003C00003C00003C00007 80000780000780000780000F8000FFF800141F7D9E12>I<01FE00007FC0001E0000FC00 001E0000F80000170001780000170001780000270002F00000270004F00000270004F000 00270008F00000470009E00000470011E00000470021E00000470021E00000870043C000 00838043C00000838083C00000838083C000010381078000010382078000010382078000 0103840780000203840F00000203880F00000203900F00000203900F00000401E01E0000 0401E01E00000401C01E00000C01801E00001C01803E0000FF8103FFC0002A1F7D9E29> 77 D<01FFFF80001E00E0001E0070001E0038001E003C003C003C003C003C003C003C00 3C003C0078007800780078007800F0007800E000F003C000F00F0000FFFC0000F0000001 E0000001E0000001E0000001E0000003C0000003C0000003C0000003C000000780000007 80000007800000078000000F800000FFF000001E1F7D9E1F>80 D<0007E040001C18C000 3005800060038000C0038001C00180018001000380010003800100038001000380000003 C0000003C0000003F8000001FF800001FFE000007FF000001FF0000001F8000000780000 007800000038000000380020003800200038002000300060007000600060006000E00070 00C000E8038000C606000081F800001A217D9F1A>83 D<0FFFFFF01E0780E01807802010 07802020078020200F0020600F0020400F0020400F0020801E0040001E0000001E000000 1E0000003C0000003C0000003C0000003C00000078000000780000007800000078000000 F0000000F0000000F0000000F0000001E0000001E0000001E0000001E0000003E00000FF FF00001C1F789E21>I<7FFC1FF807C003C00780010007800100078001000F0002000F00 02000F0002000F0002001E0004001E0004001E0004001E0004003C0008003C0008003C00 08003C00080078001000780010007800100078001000F0002000F0002000F0002000F000 4000F0004000700080007001000030020000380400000C18000007E000001D20779E22> II<00F1800389C00707 800E03801C03803C0380380700780700780700780700F00E00F00E00F00E00F00E20F01C 40F01C40703C40705C40308C800F070013147C9317>97 D<07803F800700070007000700 0E000E000E000E001C001C001CF01D0C3A0E3C0E380F380F700F700F700F700FE01EE01E E01EE01CE03CE038607060E031C01F0010207B9F15>I<007E0001C1000300800E07801E 07801C07003C0200780000780000780000F00000F00000F00000F00000F0000070010070 020030040018380007C00011147C9315>I<0000780003F8000070000070000070000070 0000E00000E00000E00000E00001C00001C000F1C00389C00707800E03801C03803C0380 380700780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C40 308C800F070015207C9F17>I<007C01C207010E011C013C013802780C7BF07C00F000F0 00F000F0007000700170023804183807C010147C9315>I<00007800019C00033C00033C 000718000700000700000E00000E00000E00000E00000E0001FFE0001C00001C00001C00 001C00003800003800003800003800003800007000007000007000007000007000007000 00E00000E00000E00000E00000C00001C00001C0000180003180007B0000F30000660000 3C00001629829F0E>I<003C6000E27001C1E00380E00700E00F00E00E01C01E01C01E01 C01E01C03C03803C03803C03803C03803C07003C07001C0F001C17000C2E0003CE00000E 00000E00001C00001C00301C00783800F0700060E0003F8000141D7E9315>I<01E0000F E00001C00001C00001C00001C000038000038000038000038000070000070000071E0007 63000E81800F01C00E01C00E01C01C03801C03801C03801C038038070038070038070038 0E10700E20700C20701C20700C40E00CC060070014207D9F17>I<00C001E001E001C000 000000000000000000000000000E003300230043804300470087000E000E000E001C001C 001C003840388030807080310033001C000B1F7C9E0E>I<0001800003C00003C0000380 000000000000000000000000000000000000000000003C00004600008700008700010700 010700020E00000E00000E00000E00001C00001C00001C00001C00003800003800003800 00380000700000700000700000700000E00000E00030E00079C000F180006300003C0000 1228829E0E>I<01E0000FE00001C00001C00001C00001C0000380000380000380000380 000700000700000703C00704200E08E00E11E00E21E00E40C01C80001D00001E00001FC0 0038E000387000387000383840707080707080707080703100E03100601E0013207D9F15 >I<03C01FC0038003800380038007000700070007000E000E000E000E001C001C001C00 1C0038003800380038007000700070007100E200E200E200E200640038000A207C9F0C> I<1C0F80F0002630C318004740640C004780680E004700700E004700700E008E00E01C00 0E00E01C000E00E01C000E00E01C001C01C038001C01C038001C01C038001C01C0708038 038071003803806100380380E10038038062007007006600300300380021147C9325>I< 1C0F802630C04740604780604700704700708E00E00E00E00E00E00E00E01C01C01C01C0 1C01C01C03843803883803083807083803107003303001C016147C931A>I<007C0001C3 000301800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003C0F003C0F007 80F00700700F00700E0030180018700007C00013147C9317>I<01C1E002621804741C04 781C04701E04701E08E01E00E01E00E01E00E01E01C03C01C03C01C03C01C03803807803 80700380E003C1C0072380071E000700000700000E00000E00000E00000E00001C00001C 0000FFC000171D809317>I<1C1E002661004783804787804707804703008E00000E0000 0E00000E00001C00001C00001C00001C0000380000380000380000380000700000300000 11147C9313>114 D<00FC030206010C030C070C060C000F800FF007F803FC003E000E70 0EF00CF00CE008401020601F8010147D9313>I<018001C0038003800380038007000700 FFF007000E000E000E000E001C001C001C001C0038003800380038207040704070807080 31001E000C1C7C9B0F>I<0E00C03300E02301C04381C04301C04701C08703800E03800E 03800E03801C07001C07001C07001C07101C0E20180E20180E201C1E200C264007C38014 147C9318>I<0E03803307802307C04383C04301C04700C08700800E00800E00800E0080 1C01001C01001C01001C02001C02001C04001C04001C08000E300003C00012147C9315> I<0E00C1C03300E3C02301C3E04381C1E04301C0E04701C060870380400E0380400E0380 400E0380401C0700801C0700801C0700801C0701001C0701001C0602001C0F02000C0F04 000E13080003E1F0001B147C931E>I<0383800CC4401068E01071E02071E02070C040E0 0000E00000E00000E00001C00001C00001C00001C040638080F38080F38100E5810084C6 0078780013147D9315>I<0E00C03300E02301C04381C04301C04701C08703800E03800E 03800E03801C07001C07001C07001C07001C0E00180E00180E001C1E000C3C0007DC0000 1C00001C00003800F03800F07000E06000C0C0004380003E0000131D7C9316>I<01C040 03E08007F1800C1F00080200000400000800001000002000004000008000010000020000 0401000802001002003E0C0063FC0041F80080E00012147D9313>I E /Fj 60 122 df<000FF000007FFC0001F80E0003E01F0007C03F000F803F000F803F00 0F801E000F800C000F8000000F8000000F8000000F800000FFFFFF00FFFFFF000F801F00 0F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F00 0F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F007FF0FFE0 7FF0FFE01B237FA21F>12 D<000F800000001FC000000038600000007060000000F03000 0000F030000001E030000001E030000001F060000001F060000001F0C0000001F1800000 01F380000000FF001FFC00FE001FFC00FC00018000FC000180007C00030000FE00060003 BE000600073F000C000E1F0018001E1F8018003C0FC030007C07E06000FC07F0C000FC03 F0C000FC01F98000FC00FF0000FE007E000C7E003F000C3F007FC0181F81E7F0780FFF81 FFE001FC003F8026237EA22C>38 D<00180030006000C001C00380070007000E001E001C 003C003C003C007800780078007800F800F000F000F000F000F000F000F000F000F000F0 00F000F80078007800780078003C003C003C001C001E000E0007000700038001C000C000 60003000180D317BA416>40 DI45 D<387CFEFEFE7C3807077C 8610>I<0000180000380000380000700000700000E00000E00000E00001C00001C00003 80000380000380000700000700000700000E00000E00001C00001C00001C000038000038 0000700000700000700000E00000E00001C00001C00001C0000380000380000700000700 000700000E00000E00000E00001C00001C0000380000380000380000700000700000E000 00E00000C0000015317DA41C>I<00180000780001F800FFF800FFF80001F80001F80001 F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07F FFE013207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01 F87C01F83803F80003F80003F00003F00007E00007C0000F80001F00003E000038000070 0000E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF01520 7D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F000 03F00003E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE7E 00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>I< 0000E00001E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7E001C7E0 0187E00307E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFEFFFFFE0007E0 0007E00007E00007E00007E00007E00007E000FFFE00FFFE17207E9F1C>I<1000201E01 E01FFFC01FFF801FFF001FFE001FF8001BC00018000018000018000018000019FC001FFF 001E0FC01807E01803E00003F00003F00003F80003F83803F87C03F8FE03F8FE03F8FC03 F0FC03F07007E03007C01C1F800FFF0003F80015207D9F1C>I<001F8000FFE003F07007 C0F00F01F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFFE0FD80F0FF 00F8FE007CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C3E007C1E 00F80F00F00783E003FFC000FF0017207E9F1C>I<00FE0003FFC00703E00E00F01C00F0 1C00783C00783E00783F00783F80783FE0F01FF9E01FFFC00FFF8007FFC003FFE007FFF0 1E7FF83C1FFC7807FC7801FEF000FEF0003EF0001EF0001EF0001CF8001C7800383C0038 1F01F00FFFC001FF0017207E9F1C>56 D<01FE0007FF800F83E01E01F03E00F07C00F87C 0078FC007CFC007CFC007CFC007EFC007EFC007EFC007E7C00FE7C00FE3E01FE1E037E0F FE7E07FC7E00207E00007C00007C1E007C3F00F83F00F83F00F03F01E01E03C01C0F800F FE0003F80017207E9F1C>I<387CFEFEFE7C380000000000000000387CFEFEFE7C380716 7C9510>I<000070000000007000000000F800000000F800000000F800000001FC000000 01FC00000003FE00000003FE00000003FE00000006FF000000067F0000000E7F8000000C 3F8000000C3F800000183FC00000181FC00000381FE00000300FE00000300FE00000600F F000006007F00000E007F80000FFFFF80000FFFFF800018001FC00018001FC00038001FE 00030000FE00030000FE000600007F000600007F00FFE00FFFF8FFE00FFFF825227EA12A >65 D<0003FE0080001FFF818000FF01E38001F8003F8003E0001F8007C0000F800F8000 07801F800007803F000003803F000003807F000001807E000001807E00000180FE000000 00FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000 7E000000007E000001807F000001803F000001803F000003801F800003000F8000030007 C000060003F0000C0001F800380000FF00F000001FFFC0000003FE000021227DA128>67 DIII<0003FE00 40001FFFC0C0007F00F1C001F8003FC003F0000FC007C00007C00FC00003C01F800003C0 3F000001C03F000001C07F000000C07E000000C07E000000C0FE00000000FE00000000FE 00000000FE00000000FE00000000FE00000000FE00000000FE000FFFFC7E000FFFFC7F00 001FC07F00001FC03F00001FC03F00001FC01F80001FC00FC0001FC007E0001FC003F000 1FC001FC003FC0007F80E7C0001FFFC3C00003FF00C026227DA12C>III76 DII<0007FC0000003FFF800000FC07E00003F0 01F80007E000FC000FC0007E001F80003F001F80003F003F00001F803F00001F807F0000 1FC07E00000FC07E00000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000F E0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00000FC07F00001FC07F00001FC0 3F00001F803F80003F801F80003F000FC0007E0007E000FC0003F001F80000FC07E00000 3FFF80000007FC000023227DA12A>II82 D<01FC0407FF8C1F03FC3C007C7C003C78001C78001CF800 0CF8000CFC000CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC03FFFE003F FE0003FF00007F00003F00003FC0001FC0001FC0001FE0001EE0001EF0003CFC003CFF00 F8C7FFE080FF8018227DA11F>I<7FFFFFFF807FFFFFFF807E03F80F807803F807807003 F803806003F80180E003F801C0E003F801C0C003F800C0C003F800C0C003F800C0C003F8 00C00003F800000003F800000003F800000003F800000003F800000003F800000003F800 000003F800000003F800000003F800000003F800000003F800000003F800000003F80000 0003F800000003F800000003F800000003F800000003F800000003F8000003FFFFF80003 FFFFF80022227EA127>II 87 D<7FFFC1FFF07FFFC1FFF003FC000C0001FE00180000FE00380000FF007000007F80 6000003F80C000003FC1C000001FE38000000FE30000000FF700000007FE00000003FC00 000003FC00000001FE00000000FE00000000FF00000000FF80000001FFC0000001BFC000 00031FE00000070FF000000E0FF000000C07F800001803FC00003803FC00003001FE0000 6000FF0000E000FF0001C0007F800180003FC0FFFC03FFFEFFFC03FFFE27227FA12A>I< 07FC001FFF803F07C03F03E03F01E03F01F01E01F00001F00001F0003FF003FDF01FC1F0 3F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F07E0CF81FF87F07E03F18167E951B> 97 DI<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000 FC0000FC0000FC0000FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE00 14167E9519>I<0001FE000001FE0000003E0000003E0000003E0000003E0000003E0000 003E0000003E0000003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F 007E003E003E007E003E007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC 003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83BE0007FF3FC001 FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00 F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003FF C000FF0015167E951A>I<003F8000FFC001E3E003C7E007C7E00F87E00F83C00F80000F 80000F80000F80000F80000F8000FFFC00FFFC000F80000F80000F80000F80000F80000F 80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F 80007FF8007FF80013237FA211>I<03FC1E0FFF7F1F0F8F3E07CF3C03C07C03E07C03E0 7C03E07C03E07C03E03C03C03E07C01F0F801FFF0013FC003000003000003800003FFF80 1FFFF00FFFF81FFFFC3800FC70003EF0001EF0001EF0001EF0001E78003C7C007C3F01F8 0FFFE001FF0018217E951C>II<1C003F007F007F007F003F001C00000000000000 0000000000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F00 1F001F001F001F001F001F00FFE0FFE00B247EA310>I<0038007C00FE00FE00FE007C00 38000000000000000000000000000003FE03FE003E003E003E003E003E003E003E003E00 3E003E003E003E003E003E003E003E003E003E003E003E003E003E003E783EFC3EFC3CFC 7C78F87FE01F800F2E83A311>IIIII<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC00 7EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE001716 7E951C>II<00FE0300 07FF87000FC1C7001F006F003F003F007E003F007E001F007C001F00FC001F00FC001F00 FC001F00FC001F00FC001F00FC001F00FC001F007E001F007E001F003E003F001F007F00 0FC1DF0007FF9F0001FC1F0000001F0000001F0000001F0000001F0000001F0000001F00 00001F0000001F000000FFE00000FFE01B207E951E>II<0FF3003FFF00781F00600700 E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380 E00380E00380F00700FC0E00EFFC00C7F00011167E9516>I<0180000180000180000180 000380000380000780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80 000F80000F80000F80000F80000F80000F80000F80000F81800F81800F81800F81800F81 800F830007C30003FE0000F80011207F9F16>IIIIII E /Fk 69 124 df<007E1F0001C1B1800303E3 C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0000E01C0000E01C000FFFFFC 000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0 000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F87FC001A1D80 9C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E00000E 0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C0 0703C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C0 0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 0E01C07FCFF8151D809C17>I<003F07E00001C09C18000380F018000701F03C000E01E0 3C000E00E018000E00E000000E00E000000E00E000000E00E000000E00E00000FFFFFFFC 000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00 0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E 00E01C000E00E01C007FC7FCFF80211D809C23>I<6060F0F0F8F8686808080808080810 1010102020404080800D0C7F9C15>34 D<60F0F8680808081010204080050C7C9C0C>39 D<004000800100020006000C000C0018001800300030007000600060006000E000E000E0 00E000E000E000E000E000E000E000E000E000600060006000700030003000180018000C 000C00060002000100008000400A2A7D9E10>I<800040002000100018000C000C000600 060003000300038001800180018001C001C001C001C001C001C001C001C001C001C001C0 01C0018001800180038003000300060006000C000C00180010002000400080000A2A7E9E 10>I<60F0F0701010101020204080040C7C830C>44 DI<60F0F0 6004047C830C>I<00010003000600060006000C000C000C001800180018003000300030 0060006000C000C000C0018001800180030003000300060006000C000C000C0018001800 1800300030003000600060006000C000C00010297E9E15>I<03C00C301818300C300C70 0E60066006E007E007E007E007E007E007E007E007E007E007E007E007E0076006600670 0E300C300C18180C3007E0101D7E9B15>I<030007003F00C70007000700070007000700 070007000700070007000700070007000700070007000700070007000700070007000F80 FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E00 1C001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I< 07E01830201C201C781E780E781E381E001C001C00180030006007E00030001C001C000E 000F000F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<00F0030C06040C 0E181E301E300C700070006000E3E0E430E818F00CF00EE006E007E007E007E007E00760 0760077006300E300C18180C3003E0101D7E9B15>54 D<4000007FFF807FFF007FFF0040 020080040080040080080000100000100000200000600000400000C00000C00001C00001 800001800003800003800003800003800007800007800007800007800007800007800003 0000111D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007E00760 07700F300F18170C2707C700060006000E300C780C78187010203030C00F80101D7E9B15 >57 D<60F0F0600000000000000000000060F0F06004127C910C>I<60F0F06000000000 00000000000060F0F0701010101020204080041A7C910C>I<0FE03038401CE00EF00EF0 0EF00E000C001C0030006000C00080018001000100010001000100010000000000000000 00000003000780078003000F1D7E9C14>63 D<000600000006000000060000000F000000 0F0000000F00000017800000178000001780000023C0000023C0000023C0000041E00000 41E0000041E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002 003C0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65 DI<001F808000E061800180198007000780 0E0003801C0003801C00018038000180780000807800008070000080F0000000F0000000 F0000000F0000000F0000000F0000000F0000000F0000000700000807800008078000080 380000801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C 1E>IIII<001F808000E0618001801980070007800E000380 1C0003801C00018038000180780000807800008070000080F0000000F0000000F0000000 F0000000F0000000F0000000F000FFF0F0000F8070000780780007807800078038000780 1C0007801C0007800E00078007000B800180118000E06080001F80001C1E7E9C21>II I77 DI<003F800000E0E0000380380007001C000E000E00 1C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F00001E0 F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C038000380 3C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C20>II<003F800000E0E0000380380007001C000E00 0E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F000 01E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C03800 03803C0E07801C1107000E208E0007205C0003A0780000F0E020003FE020000060200000 3060000038E000003FC000003FC000001F8000000F001B257E9C20>II<07E0801C1980300580700380600180E00180E00080E00080E00080F0 0000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001C080 01C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7FFFFF C0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F00 00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F00 00000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC 001B1C7F9B1E>II87 D<08081010202040404040808080808080B0B0F8F8787830300D0C7A9C15>92 D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C 00E01C40E01C40E01C40603C40304E801F870012127E9115>97 DI<07E00C301878307870306000E000E000E000E000E000E0 0060007004300418080C3007C00E127E9112>I<003F0000070000070000070000070000 070000070000070000070000070000070003E7000C1700180F00300700700700600700E0 0700E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E013 1D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000E000E000600070023002 18040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FF E00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00F 1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C00381C00381C00181800 1C38000C300013C0001000003000001800001FF8001FFF001FFF803003806001C0C000C0 C000C0C000C06001803003001C0E0007F800121C7F9215>II<18003C003C0018000000000000000000000000000000FC001C 001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F 9C0C>I<00C001E001E000C000000000000000000000000000000FE000E000E000E000E0 00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0 F1C061803E000B25839C0D>IIIII<03F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0 E001C0E001C06001807003803003001806000E1C0003F00012127F9115>II<03C1000C3300180B00300F00700700700700E00700E00700E00700E0 0700E00700E00700600700700700300F00180F000C370007C70000070000070000070000 0700000700000700000700003FE0131A7E9116>II<1F9030704030C010 C010E010F8007F803FE00FF000F880388018C018C018E010D0608FC00D127F9110>I<04 000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C001C 101C101C101C101C100C100E2003C00C1A7F9910>III< FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E1182000711C400 0711C4000720C40003A0E80003A0E80003C0680001C0700001C070000180300000802000 1B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F0000070000078 0000F800009C00010E00020E000607000403801E07C0FF0FF81512809116>II<7FFC70386038407040F040E041C003C0038007000F040E041C043C 0C380870087038FFF80E127F9112>II E /Fl 40 121 df<0020004001800380030006000E001C001C003C0038003800780078007800F8 00F000F000F000F000F000F000F000F000F000F800780078007800380038003C001C001C 000E000600030003800180004000200B297C9E13>40 D<800040003000380018000C000E 000700070007800380038003C003C003C003E001E001E001E001E001E001E001E001E001 E003E003C003C003C0038003800780070007000E000C00180038003000400080000B297D 9E13>I<78FCFCFEFE7A0202040408083040070E7D850D>44 D<78FCFCFCFC7800000000 000078FCFCFCFC7806127D910D>58 D<00038000000380000007C0000007C0000007C000 000FE000000FE000001FF000001BF000001BF0000031F8000031F8000061FC000060FC00 00E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF8003001F8003001F8006000FC0 06000FC00E000FE00C0007E0FFC07FFEFFC07FFE1F1C7E9B24>65 D<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E0000607E0000 607C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000 007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000FFFC 00001FE0001B1C7D9B22>67 DII<00 0FF008007FFE3801FC07F807E001F80F8000781F0000783F0000383E0000387E0000187C 000018FC000000FC000000FC000000FC000000FC000000FC000000FC007FFFFC007FFF7C 0001F87E0001F83E0001F83F0001F81F0001F80F8001F807E001F801FC07F8007FFE7800 0FF818201C7D9B26>71 D73 D77 DI<003FE00001F07C0003C01E000F800F801F00 07C01E0003C03E0003E07E0003F07C0001F07C0001F0FC0001F8FC0001F8FC0001F8FC00 01F8FC0001F8FC0001F8FC0001F8FC0001F87C0001F07E0003F07E0003F03E0003E03F00 07E01F0007C00F800F8003C01E0001F07C00003FE0001D1C7D9B24>II82 D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE 0000FFE0007FFE003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C0 00F0C000E0E000E0F001C0FC03C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFFE078 1F81E0701F80E0601F8060E01F8070C01F8030C01F8030C01F8030C01F8030001F800000 1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800000 1F8000001F8000001F8000001F8000001F8000001F800007FFFE0007FFFE001C1C7E9B21 >II<7FFE1FFE007FFE1FFE0007F001800003F803800001FC07 000000FC06000000FE0C0000007F1C0000003F380000003FB00000001FE00000000FE000 00000FE000000007F000000003F800000007F80000000FFC0000000CFE000000187E0000 00387F000000703F800000601F800000C01FC00001C00FE000018007F000030007F000FF F03FFF80FFF03FFF80211C7F9B24>88 D<0FF8001C1E003E0F803E07803E07C01C07C000 07C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F80FE1F815 127F9117>97 DI<03FC000E0E001C 1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800007800007801803C 01801C03000E0E0003F80011127E9115>I<000FF0000FF00001F00001F00001F00001F0 0001F00001F00001F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F801F0 F801F0F801F0F801F0F801F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E 9C1B>I<01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F800 00F800007800007C00603C00601E00C00F038001FC0013127F9116>I<007F0001E38003 C7C00787C00F87C00F83800F80000F80000F80000F80000F8000FFF800FFF8000F80000F 80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F 80007FF8007FF800121D809C0F>I<03F8F00E0F381E0F381C07303C07803C07803C0780 3C07801C07001E0F000E0E001BF8001000001800001800001FFF001FFFC00FFFE01FFFF0 7801F8F00078F00078F000787000707800F01E03C007FF00151B7F9118>II<1E003F003F003F003F001E0000000000000000 0000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F 00FFE0FFE00B1E7F9D0E>I107 DIII<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F8 00F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>II114 D<1FD830786018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CF C00E127E9113>I<0300030003000300070007000F000F003FFCFFFC1F001F001F001F00 1F001F001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E1A7F9913>II119 DI E /Fm 59 123 df<0001FF81FE00001FFFEFFF80007F80FF87C000FC00FE0FE001F801FE0F E003F801FC0FE007F001FC0FE007F001FC07C007F001FC000007F001FC000007F001FC00 0007F001FC000007F001FC000007F001FC000007F001FC0000FFFFFFFFF800FFFFFFFFF8 00FFFFFFFFF80007F001FC000007F001FC000007F001FC000007F001FC000007F001FC00 0007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC00 0007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC00 0007F001FC000007F001FC000007F001FC000007F001FC00007FFF1FFFE0007FFF1FFFE0 007FFF1FFFE0002B2A7FA928>11 D45 D<1C003E007F00FF80FF80FF807F003E001C0009097B8813>I<003F800001FF F00007E0FC000FC07E001F803F001F803F003F001F803F001F807F001FC07F001FC07F00 1FC07F001FC0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF00 1FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE07F001FC07F00 1FC07F001FC07F001FC03F001F803F001F801F803F001F803F000FC07E0007E0FC0001FF F000003F80001B277DA622>48 D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000 FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000 FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000 FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFFFE17277BA622>I<00FF800003FF F0000FFFFC001F03FE003800FF007C007F80FE003FC0FF003FC0FF003FE0FF001FE0FF00 1FE07E001FE03C003FE000003FE000003FC000003FC000007F8000007F000000FE000000 FC000001F8000003F0000003E00000078000000F0000001E0000003C00E0007000E000E0 00E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFF FF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC000F81FE001F00FF003F80FF 003F807F803F807F803F807F801F807F800F007F800000FF000000FF000000FE000001FC 000001F8000007F00000FFC00000FFF0000001FC0000007E0000007F0000007F8000003F C000003FC000003FE000003FE03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007F C07E007F807C007F003F01FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E00 00001E0000003E0000007E000000FE000000FE000001FE000003FE0000077E00000E7E00 000E7E00001C7E0000387E0000707E0000E07E0000E07E0001C07E0003807E0007007E00 0E007E000E007E001C007E0038007E0070007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF8 0000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE00007FFFF8 007FFFF8007FFFF81D277EA622>I<0C0003000F803F000FFFFE000FFFFC000FFFF8000F FFF0000FFFE0000FFFC0000FFE00000E0000000E0000000E0000000E0000000E0000000E 0000000E7FC0000FFFF8000F80FC000E003E000C003F0000001F8000001FC000001FC000 001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC001FC078 003F8078003F803C007F001F01FE000FFFF80003FFF00000FF80001B277DA622>I<0007 F000003FFC0000FFFE0001FC0F0003F01F8007E03F800FC03F801FC03F801F803F803F80 1F003F8000007F0000007F0000007F000000FF000000FF0FC000FF3FF800FF707C00FFC0 3E00FFC03F00FF801F80FF801FC0FF001FC0FF001FE0FF001FE0FF001FE07F001FE07F00 1FE07F001FE07F001FE03F001FE03F001FC01F801FC01F803F800FC03F0007E07E0003FF FC0000FFF000003FC0001B277DA622>I<380000003E0000003FFFFFF03FFFFFF03FFFFF F07FFFFFE07FFFFFC07FFFFF807FFFFF0070000E0070000E0070001C00E0003800E00070 00E000E0000000E0000001C000000380000007800000078000000F0000000F0000001F00 00001F0000003F0000003E0000003E0000007E0000007E0000007E0000007E000000FE00 0000FE000000FE000000FE000000FE000000FE000000FE000000FE0000007C0000003800 001C297CA822>I<003FC00001FFF00003FFFC0007C07E000F003F001E001F001E000F80 3E000F803E000F803F000F803F000F803FC00F003FF01F001FFC1E001FFE3C000FFFF800 07FFE00003FFF80001FFFC0001FFFE0007FFFF000F0FFF801E03FFC03C01FFC07C007FE0 78001FE0F80007E0F80007E0F80003E0F80003E0F80003E0F80003C07C0003C07C000780 3F000F001FC03E000FFFFC0003FFF800007FC0001B277DA622>I<007F800001FFF00007 FFF8000FE0FC001F807E003F803F007F003F007F001F80FF001F80FF001FC0FF001FC0FF 001FC0FF001FE0FF001FE0FF001FE0FF001FE07F001FE07F003FE03F003FE01F807FE00F 807FE007C1DFE003FF9FE0007E1FE000001FE000001FC000001FC000001FC000003F801F 003F803F803F003F803F003F807E003F807C001F01F8001E03F0000FFFE00007FF800001 FE00001B277DA622>I<01FF000FFFE01E03F03801F87801FCFC01FEFE01FEFE01FEFE01 FE7C01FE3801FC0003F80007F00007C0000F80001F00001E00003C000038000038000078 000070000070000070000070000070000070000000000000000000000000000000000000 0000700000F80001FC0003FE0003FE0003FE0001FC0000F800007000172A7CA920>63 D<000003800000000007C00000000007C0000000000FE0000000000FE0000000000FE000 0000001FF0000000001FF0000000003FF8000000003FF8000000003FF80000000073FC00 00000073FC00000000F3FE00000000E1FE00000000E1FE00000001C0FF00000001C0FF00 000003C0FF80000003807F80000007807FC0000007003FC0000007003FC000000E003FE0 00000E001FE000001E001FF000001C000FF000001FFFFFF000003FFFFFF800003FFFFFF8 0000780007FC0000700003FC0000700003FC0000E00001FE0000E00001FE0001E00001FF 0001C00000FF0001C00000FF00FFFE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834 >65 DI<00003FF001800003FFFE0380000FFFFF8780003FF007DF8000FF8001FF8001FE 00007F8003FC00003F8007F000001F800FF000000F801FE0000007801FE0000007803FC0 000007803FC0000003807FC0000003807F80000003807F8000000000FF8000000000FF80 00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80 00000000FF80000000007F80000000007F80000000007FC0000003803FC0000003803FC0 000003801FE0000003801FE0000007000FF00000070007F000000E0003FC00001E0001FE 00003C0000FF8000F800003FF007E000000FFFFFC0000003FFFF000000003FF800002929 7CA832>IIII<0000 7FE003000003FFFC0700001FFFFF0F00003FF00FFF0000FF8001FF0001FE0000FF0003F8 00003F0007F000003F000FF000001F001FE000000F001FE000000F003FC000000F003FC0 000007007FC0000007007F80000007007F8000000000FF8000000000FF8000000000FF80 00000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF80 01FFFFF87F8001FFFFF87F8001FFFFF87FC00000FF003FC00000FF003FC00000FF001FE0 0000FF001FE00000FF000FF00000FF0007F00000FF0003F80000FF0001FE0000FF0000FF 8001FF00003FF007BF00001FFFFF1F000003FFFE0F0000007FF003002D297CA836>I73 D76 DII<0000FFE000 000007FFFC0000003FC07F8000007F001FC00001FC0007F00003F80003F80007F00001FC 000FF00001FE001FE00000FF001FE00000FF003FC000007F803FC000007F807FC000007F C07F8000003FC07F8000003FC07F8000003FC0FF8000003FE0FF8000003FE0FF8000003F E0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003F E0FF8000003FE07F8000003FC07FC000007FC07FC000007FC03FC000007F803FC000007F 801FE00000FF001FE00000FF000FF00001FE0007F00001FC0003F80003F80001FC0007F0 0000FF001FE000003FC07F8000000FFFFE00000000FFE000002B297CA834>II82 D<007F806003FFF0E007FFF9E00F807FE01F001FE03E0007E07C0003E07C0001E0FC0001 E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007FFFE0003FFFFC 001FFFFE000FFFFF8007FFFFC003FFFFE000FFFFE00007FFF000007FF000000FF8000007 F8000003F8600001F8E00001F8E00001F8E00001F8F00001F0F00001F0F80003F0FC0003 E0FF0007C0FFE01F80F3FFFF00E0FFFE00C01FF0001D297CA826>I<7FFFFFFFFFC07FFF FFFFFFC07FFFFFFFFFC07F803FC03FC07E003FC007C078003FC003C078003FC003C07000 3FC001C0F0003FC001E0F0003FC001E0E0003FC000E0E0003FC000E0E0003FC000E0E000 3FC000E0E0003FC000E000003FC0000000003FC0000000003FC0000000003FC000000000 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC00000007F FFFFE000007FFFFFE000007FFFFFE0002B287EA730>IIII<01FF800007FFF0000F81F8001FC07E001FC07E001FC03F000F80 3F8007003F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F803F80 3F803F003F807F003F80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F83 9FFC0FFF0FFC01FC03FC1E1B7E9A21>97 DI<001FF80000FFFE0003F01F0007E03F800F C03F801F803F803F801F007F800E007F0000007F000000FF000000FF000000FF000000FF 000000FF000000FF000000FF0000007F0000007F0000007F8000003F8001C01F8001C00F C0038007E0070003F01E0000FFFC00001FE0001A1B7E9A1F>I<00003FF80000003FF800 00003FF800000003F800000003F800000003F800000003F800000003F800000003F80000 0003F800000003F800000003F800000003F800000003F800000003F800001FE3F80000FF FBF80003F03FF80007E00FF8000FC007F8001F8003F8003F8003F8007F0003F8007F0003 F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8 00FF0003F8007F0003F8007F0003F8007F0003F8003F8003F8001F8003F8000F8007F800 07C00FF80003F03BFF8000FFF3FF80003FC3FF80212A7EA926>I<003FE00001FFF80003 F07E0007C01F000F801F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF 0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F0000007F0000007F0000003F 8000E01F8000E00FC001C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>I<0007 F0003FFC00FE3E01F87F03F87F03F07F07F07F07F03E07F00007F00007F00007F00007F0 0007F00007F000FFFFC0FFFFC0FFFFC007F00007F00007F00007F00007F00007F00007F0 0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0 0007F00007F0007FFF807FFF807FFF80182A7EA915>I<00FF81F003FFE7F80FC1FE7C1F 80FC7C1F007C383F007E107F007F007F007F007F007F007F007F007F007F007F007F003F 007E001F007C001F80FC000FC1F8001FFFE00018FF800038000000380000003C0000003E 0000003FFFF8001FFFFF001FFFFF800FFFFFC007FFFFE01FFFFFF03E0007F07C0001F8F8 0000F8F80000F8F80000F8F80000F87C0001F03C0001E01F0007C00FC01F8003FFFE0000 7FF0001E287E9A22>II<07000FC01FE03FE03FE03FE01FE00FC0070000000000000000 00000000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F E00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I<00070000 0F80001FC0003FE0003FE0003FE0001FC0000F8000070000000000000000000000000000 000000000000000001FFE001FFE001FFE0000FE0000FE0000FE0000FE0000FE0000FE000 0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000 0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE07C0FE0FE0FE0FE 0FC0FE1F80FE1F007C3E003FFC000FF000133784AA15>IIIII<003FE00001FFFC0003F07E000FC01F801F800FC0 3F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8 FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800FC0 0FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>II<001FC0380000FFF0780003F838F80007E00DF8000FC007F8001FC0 07F8003F8003F8007F8003F8007F8003F8007F0003F800FF0003F800FF0003F800FF0003 F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F8003F8 003F8003F8001F8007F8000FC007F80007E01FF80003F07BF80000FFF3F800003FC3F800 000003F800000003F800000003F800000003F800000003F800000003F800000003F80000 0003F800000003F80000003FFF8000003FFF8000003FFF8021277E9A24>II<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC 0000FFE0007FFE007FFF803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0 003CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<007000007000007000 00700000F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F000 07F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F000 07F03807F03807F03807F03807F03807F03803F03803F87001F86000FFC0001F8015267F A51B>III< FFFE7FFC0FFEFFFE7FFC0FFEFFFE7FFC0FFE0FE007E000E007F003F001C007F003F001C0 07F807F803C003F807F8038003F807F8038001FC0EFC070001FC0EFC070001FE1EFC0F00 00FE1C7E0E0000FE1C7E0E0000FF383F1E00007F383F1C00007F783F3C00003FF01FB800 003FF01FB800003FF01FF800001FE00FF000001FE00FF000000FC007E000000FC007E000 000FC007E00000078003C00000078003C0002F1B7F9A32>III<3FFFFF803FFFFF803F007F003C00FE003801FE007803FC007803F8 007007F800700FF000700FE000001FC000003FC000007F8000007F000000FF000001FE03 8001FC038003F8038007F803800FF007800FE007801FE007003FC00F003F801F007F007F 00FFFFFF00FFFFFF00191B7E9A1F>I E /Fn 22 121 df<0001FF8000000FFFF000003F FFFC0000FF81FF0001FE007F8003FC003FC007F8001FE00FF8001FF00FF0000FF01FF000 0FF81FF0000FF83FF0000FFC3FE00007FC3FE00007FC7FE00007FE7FE00007FE7FE00007 FE7FE00007FE7FE00007FEFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FF FFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFF E00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FF7FE0 0007FE7FE00007FE7FE00007FE7FE00007FE7FE00007FE3FE00007FC3FF0000FFC3FF000 0FFC1FF0000FF81FF0000FF80FF0000FF00FF8001FF007F8001FE003FC003FC001FE007F 8000FF81FF00003FFFFC00000FFFF0000001FF800028397CB731>48 D<00001E000000003E00000000FE00000003FE0000003FFE0000FFFFFE0000FFFFFE0000 FFFFFE0000FFCFFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000 0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE 0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00 00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000 000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000 0FFE0000000FFE00007FFFFFFFC07FFFFFFFC07FFFFFFFC07FFFFFFFC0223879B731>I< 0007FE0000007FFFE00001FFFFF80003FFFFFE0007F01FFF000F8007FF801F0001FFC03E 0000FFE07F8000FFF07FC0007FF0FFE0007FF8FFF0003FF8FFF0003FFCFFF0003FFCFFF0 003FFCFFF0003FFC7FE0003FFC3FC0003FFC1F80003FFC0000003FFC0000003FF8000000 7FF80000007FF00000007FF0000000FFE0000000FFC0000001FF80000001FF00000003FE 00000007FC00000007F80000000FF00000001FC00000003F800000007F00000000FC0000 0001F800000001F0003C0003E0003C0007C0003C000F000078001E000078003C00007800 780000F800F00000F801FFFFFFF803FFFFFFF007FFFFFFF00FFFFFFFF01FFFFFFFF03FFF FFFFF07FFFFFFFF0FFFFFFFFF0FFFFFFFFE0FFFFFFFFE0FFFFFFFFE026387BB731>I<00 03FF8000001FFFF000007FFFFE0000FE03FF0001F000FF8003C000FFC00780007FE00FF0 007FF00FF8007FF01FFC007FF81FFE007FF81FFE007FF81FFE007FF81FFE007FF81FFE00 7FF80FFC007FF007F8007FF003F0007FF0000000FFE0000000FFC0000001FF80000001FF 00000003FE00000007FC0000001FF000000FFFC000000FFF8000000FFFF800000003FE00 000000FF800000007FE00000003FF00000003FF80000003FFC0000001FFC0000001FFE00 00001FFE0200001FFF1FC0001FFF3FE0001FFF7FF0001FFF7FF0001FFFFFF8001FFFFFF8 001FFFFFF8001FFEFFF8001FFEFFF0001FFE7FF0003FFC7FE0003FFC3FC0003FF81F8000 7FF01FE000FFE007FC03FFC003FFFFFF0001FFFFFE00003FFFF0000007FF800028397CB7 31>I<00000007C0000000000FC0000000000FC0000000001FC0000000003FC000000000 7FC000000000FFC000000000FFC000000001FFC000000003FFC000000007FFC00000000F FFC00000000FFFC00000001EFFC00000003CFFC00000007CFFC0000000F8FFC0000000F0 FFC0000001E0FFC0000003C0FFC0000007C0FFC000000F80FFC000000F00FFC000001E00 FFC000003C00FFC000007C00FFC00000F800FFC00000F000FFC00001E000FFC00003C000 FFC00007C000FFC0000F8000FFC0000F0000FFC0001E0000FFC0003C0000FFC0007C0000 FFC000F80000FFC000FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0000001 FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001 FFC000000001FFC000000001FFC000000001FFC0000007FFFFFFC00007FFFFFFC00007FF FFFFC00007FFFFFFC02A377DB631>I<04000000C00F800007C00FF8007FC00FFFFFFF80 0FFFFFFF000FFFFFFE000FFFFFFC000FFFFFF8000FFFFFF0000FFFFFE0000FFFFF80000F FFFE00000FFFF800000F800000000F800000000F800000000F800000000F800000000F80 0000000F800000000F800000000F81FF00000F8FFFE0000FBFFFF8000FFE03FE000FF000 FF000FC000FF800F80007FC00F00007FE00700007FF00000003FF00000003FF80000003F F80000003FF80000003FFC0000003FFC0600003FFC1F80003FFC3FC0003FFC7FE0003FFC FFE0003FFCFFF0003FFCFFF0003FFCFFF0003FF8FFE0003FF8FFE0003FF87FC0007FF07F 00007FF03C00007FE03E0000FFC01F0000FF800FC003FF0007F00FFE0003FFFFFC0001FF FFF000007FFFC000000FFC000026397BB731>I<00000FF80000007FFF000003FFFF8000 0FFC07C0001FE001E0003FC001F0007F0007F000FF000FF001FE001FF803FC003FF807FC 003FF80FFC003FF80FF8003FF81FF8001FF01FF8000FE03FF80007C03FF00000003FF000 00007FF00000007FF00000007FF00000007FF07FF000FFF0FFFE00FFF1F7FF00FFF3807F 80FFF6003FE0FFFE001FF0FFFC001FF0FFFC000FF8FFF8000FFCFFF8000FFCFFF8000FFE FFF8000FFEFFF0000FFEFFF0000FFFFFF0000FFFFFF0000FFF7FF0000FFF7FF0000FFF7F F0000FFF7FF0000FFF7FF0000FFF3FF0000FFF3FF0000FFE3FF0000FFE1FF0000FFE1FF8 000FFC0FF8000FFC0FF8001FF807FC001FF003FC001FF001FE003FE000FF80FFC0007FFF FF00001FFFFE000007FFF8000000FFC00028397CB731>I<1E00000000001F0000000000 1FF0000000001FFFFFFFFFC01FFFFFFFFFC01FFFFFFFFFC03FFFFFFFFFC03FFFFFFFFF80 3FFFFFFFFF003FFFFFFFFE003FFFFFFFFC003FFFFFFFF8003FFFFFFFF0007FFFFFFFF000 7C000007E0007C00000FC0007800001F80007800001F00007800003E0000F000007E0000 F00000FC0000F00001F80000000003F00000000003E00000000007E0000000000FC00000 00000F80000000001F80000000003F80000000003F00000000007F00000000007F000000 0000FF0000000000FE0000000001FE0000000001FE0000000003FE0000000003FE000000 0003FE0000000007FC0000000007FC0000000007FC000000000FFC000000000FFC000000 000FFC000000000FFC000000000FFC000000001FFC000000001FFC000000001FFC000000 001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000 000FF80000000007F00000000003E00000002A3B7BB931>I<0001FF8000000FFFF80000 3FFFFE00007F00FF0000F8003F8001F0000FC003E0000FE007C00007F007C00007F00FC0 0003F80FC00003F81FC00003F81FC00003F81FE00003F81FF00003F81FF80003F81FFC00 07F01FFF0007F01FFFC007E00FFFF00FE00FFFFC1FC007FFFE3F8007FFFFFF0003FFFFFC 0001FFFFF80000FFFFFE00007FFFFF00003FFFFF80003FFFFFE000FFFFFFF001FDFFFFF0 07F07FFFF80FE01FFFFC1FC007FFFC3F8001FFFE3F8000FFFE7F00003FFF7F00000FFFFE 000003FFFE000001FFFE000000FFFE000000FFFE0000007FFE0000007FFE0000007EFE00 00007E7F0000007E7F000000FC3F800000FC3FC00001F81FE00003F00FF00007E007FE00 7FC003FFFFFF8000FFFFFE00003FFFF8000003FF800028397CB731>I<0001FF8000001F FFF000007FFFFC0000FF81FE0001FE007F0007FC003F800FF8003FC00FF8001FE01FF800 1FF03FF0001FF03FF0000FF87FF0000FF87FF0000FFCFFF0000FFCFFF0000FFCFFF0000F FEFFF0000FFEFFF0000FFEFFF0000FFEFFF0000FFEFFF0000FFFFFF0000FFFFFF0000FFF 7FF0000FFF7FF0001FFF7FF0001FFF3FF0001FFF3FF0001FFF1FF0003FFF0FF8003FFF07 F8007FFF03FC006FFF01FE01CFFF00FFEF8FFF007FFF0FFF000FFE0FFE0000000FFE0000 000FFE0000000FFE0000000FFC0000000FFC03E0001FFC07F0001FF80FF8001FF81FFC00 1FF01FFC003FF01FFC003FE01FFC003FC01FF8007FC00FF000FF800FE001FF0007C003FE 0007F01FFC0003FFFFF00001FFFFC000007FFF0000000FF8000028397CB731>I<000000 01F80000000000000001F80000000000000003FC0000000000000003FC00000000000000 07FE0000000000000007FE0000000000000007FE000000000000000FFF00000000000000 0FFF000000000000001FFF800000000000001FFF800000000000001FFF80000000000000 3FFFC00000000000003FFFC00000000000007FFFE00000000000007DFFE0000000000000 7DFFE0000000000000FDFFF0000000000000F8FFF0000000000001F8FFF8000000000001 F07FF8000000000001F07FF8000000000003F07FFC000000000003E03FFC000000000007 E03FFE000000000007C01FFE00000000000FC01FFF00000000000F801FFF00000000000F 800FFF00000000001F800FFF80000000001F0007FF80000000003F0007FFC0000000003E 0003FFC0000000003E0003FFC0000000007E0003FFE0000000007C0001FFE000000000FC 0001FFF000000000F80000FFF000000000F80000FFF000000001FFFFFFFFF800000001FF FFFFFFF800000003FFFFFFFFFC00000003FFFFFFFFFC00000003E000003FFC00000007E0 00003FFE00000007C000001FFE0000000FC000001FFF0000000F8000000FFF0000001F80 00000FFF8000001F0000000FFF8000001F00000007FF8000003F00000007FFC000003E00 000003FFC000007E00000003FFE00000FF00000001FFE000FFFFFC0001FFFFFFF0FFFFFC 0001FFFFFFF0FFFFFC0001FFFFFFF0FFFFFC0001FFFFFFF0443B7DBA4B>65 D<0000001FFF000030000001FFFFE000F000000FFFFFFC01F000007FFFFFFE03F00001FF FE007F87F00003FFE0000FCFF0000FFF000003FFF0001FFC000001FFF0003FF80000007F F0007FF00000003FF000FFC00000003FF001FFC00000001FF003FF800000000FF007FF00 0000000FF00FFF0000000007F00FFE0000000007F01FFE0000000003F01FFE0000000003 F03FFC0000000003F03FFC0000000001F03FFC0000000001F07FFC0000000001F07FF800 00000001F07FF80000000000007FF8000000000000FFF8000000000000FFF80000000000 00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800 0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000 007FF80000000000007FF80000000000007FF80000000000007FFC0000000000F03FFC00 00000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01FFE0000000001 E00FFE0000000001E00FFF0000000001E007FF0000000003C003FF8000000003C001FFC0 000000078000FFE00000000F00007FF00000001F00003FF80000003E00001FFC0000007C 00000FFF000001F8000003FFE00007F0000001FFFE003FC00000007FFFFFFF000000000F FFFFFC0000000001FFFFF000000000001FFF0000003C3D7BBB47>67 D<001FFF00000001FFFFF0000003FFFFFC000007F007FE00000FF801FF00001FFC00FF80 001FFC007FC0001FFC007FE0001FFC003FE0000FF8003FF0000FF8003FF00007F0003FF0 0001C0003FF0000000003FF0000000003FF0000000003FF0000000FFFFF000000FFFFFF0 00007FF83FF00001FF803FF00007FE003FF0000FF8003FF0001FF0003FF0003FE0003FF0 007FE0003FF0007FE0003FF000FFC0003FF000FFC0003FF000FFC0003FF000FFC0003FF0 00FFC0007FF0007FE0007FF0007FE000DFF0003FF0039FF8001FFC0F0FFFF007FFFE0FFF F001FFFC07FFF0003FE000FFF02C267DA530>97 D<000000003FC00000003FFFC0000000 3FFFC00000003FFFC00000003FFFC000000001FFC000000000FFC000000000FFC0000000 00FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC0000000 00FFC000000000FFC000000000FFC000000000FFC000000000FFC000000000FFC0000000 00FFC000000000FFC00000FFC0FFC0000FFFF8FFC0003FFFFEFFC000FFE03FFFC001FF00 0FFFC003FE0003FFC007FC0001FFC00FF80000FFC01FF00000FFC01FF00000FFC03FF000 00FFC03FE00000FFC07FE00000FFC07FE00000FFC07FE00000FFC0FFE00000FFC0FFE000 00FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE00000FFC0FFE000 00FFC0FFE00000FFC07FE00000FFC07FE00000FFC07FE00000FFC03FF00000FFC03FF000 00FFC01FF00000FFC00FF80001FFC007F80003FFC003FC0007FFC001FE000FFFE000FFC0 7EFFFF003FFFFCFFFF000FFFF0FFFF0001FF80FFFF303C7DBB37>100 D<0001FFC000000FFFF800003FFFFE0000FF80FF0001FE003F8007FC001FC00FF8000FE0 0FF8000FF01FF00007F03FF00007F83FF00007F87FE00007F87FE00003FC7FE00003FC7F E00003FCFFE00003FCFFFFFFFFFCFFFFFFFFFCFFFFFFFFFCFFE0000000FFE0000000FFE0 000000FFE00000007FE00000007FE00000007FE00000003FE00000003FF000003C1FF000 003C1FF000003C0FF800007807FC0000F803FE0001F001FF0007E000FFC03FC0003FFFFF 000007FFFC000000FFE00026267DA52D>I<00FF00000000FFFF00000000FFFF00000000 FFFF00000000FFFF0000000007FF0000000003FF0000000003FF0000000003FF00000000 03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 03FF0000000003FF007FC00003FF01FFF80003FF07FFFC0003FF0F03FE0003FF1C01FF00 03FF3001FF8003FF6000FF8003FFE000FFC003FFC000FFC003FF8000FFC003FF8000FFC0 03FF8000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0 03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0 03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0 03FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFF FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF303C7CBB37>104 D<00F00003FC0007FE00 0FFE000FFF001FFF001FFF001FFF000FFF000FFE0007FE0003FC0000F000000000000000 00000000000000000000000000000000000000000000000000FF00FFFF00FFFF00FFFF00 FFFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 03FF0003FF0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8153D7DBC1B> I<00FE007FC000FFFE01FFF800FFFE07FFFC00FFFE0F03FE00FFFE1C01FF0007FE3001FF 8003FE6000FF8003FEE000FFC003FEC000FFC003FF8000FFC003FF8000FFC003FF8000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFF FFFFFFFC3FFFFFFFFFFC3FFFFF30267CA537>110 D<00FF01FF8000FFFF0FFFF000FFFF 3FFFFC00FFFFFE03FF00FFFFF000FF8003FFC0007FC003FF80003FE003FF00003FF003FF 00001FF803FF00001FFC03FF00000FFC03FF00000FFE03FF00000FFE03FF000007FE03FF 000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF000007FF03FF 000007FF03FF000007FF03FF000007FF03FF000007FE03FF000007FE03FF00000FFE03FF 00000FFC03FF00000FFC03FF00001FF803FF00001FF803FF00003FF003FF80003FE003FF C0007FC003FFF001FF8003FFFC07FF0003FF3FFFFC0003FF0FFFF00003FF01FF000003FF 0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF 0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF 00000000FFFFFC000000FFFFFC000000FFFFFC000000FFFFFC00000030377DA537>112 D<00FE03F000FFFE0FFE00FFFE1FFF00FFFE3C3F80FFFE707FC007FE60FFE003FEE0FFE0 03FEC0FFE003FFC0FFE003FF807FC003FF807FC003FF803F8003FF800E0003FF00000003 FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF 00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00 000003FF00000003FF00000003FF00000003FF00000003FF000000FFFFFE0000FFFFFE00 00FFFFFE0000FFFFFE000023267DA529>114 D<00078000000780000007800000078000 00078000000F8000000F8000000F8000000F8000001F8000001F8000003F8000003F8000 007F800000FF800001FF800007FF80001FFFFFF0FFFFFFF0FFFFFFF0FFFFFFF001FF8000 01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000 01FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF800001FF8000 01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C01FF803C00FF8078 00FFC078007FC070003FE0E0001FFFC00007FF800001FF001E377EB626>116 D120 D E /Fo 6 107 df0 D<01800180018001800180C183F18F399C0FF003 C003C00FF0399CF18FC1830180018001800180018010147D9417>3 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003 C010127D9317>15 D<000000C0000003C000000F0000003C000000F0000003C000000700 00001C00000078000001E00000078000001E00000078000000E0000000780000001E0000 000780000001E0000000780000001C0000000700000003C0000000F00000003C0000000F 00000003C0000000C0000000000000000000000000000000000000000000000000000000 007FFFFF80FFFFFFC01A247C9C23>20 DI106 D E /Fp 8 113 df<00C001C00FC0FFC0F3C003C003C003C003C003C003C003 C003C003C003C003C003C003C003C003C003C003C003C003C003C003C003C0FFFFFFFF10 1D7B9C19>49 D73 D77 D80 D<001800003C00003C00003C00007E00007E00007E0000CF0000CF0000CF 000187800187800387C00303C00303C007FFE007FFE00601E00C00F00C00F01E00F8FF03 FFFF03FF18177F961C>97 D105 D109 D112 D E /Fq 38 124 df45 D<3078F8787005057C84 0D>I<007E0001C3000301800701C00E00C00E00E01C00E01C00E03C01E03801E07801E0 7801E07801E07801E07801E0F003C0F003C0F003C0F003C0F003C0F00380F00780E00780 E00700E00700E00E00600E00701C003038003870000FC000131F7C9D17>48 D<000C001C00FC0F380038003800380038003800700070007000700070007000E000E000 E000E000E000E001C001C001C001C001C001C0038003C0FFFE0F1E7C9D17>I<003F8000 C1E00100F00200780400780400780F007C0F807C0F807C0F00780600780000F80000F000 01E00001C0000380000700000E00001C0000380000600000C00001800003002006002008 00401000403FFFC07FFF80FFFF80161E7E9D17>I<007F000183C00201E00400F00700F0 0F00F00F01F00F01F00001E00001E00003C0000380000700000E0000F800000E00000700 0007800007C00003C00007C03007C07807C0F807C0F807C0F00780800F00400E00201C00 18780007E000141F7D9D17>I<0000600000600000E00001C00003C00005C0000DC00009 C00011C000238000438000C3800083800103800203800407000807001807001007002007 00400700FFFFF0000E00000E00000E00000E00000E00001C00001E0001FFE0141E7E9D17 >I<01803001FFE003FFC003FF0003FC0002000002000002000004000004000004000004 7C000587000603800C01800801C00001C00001E00001E00001E00001E07003C0F803C0F0 03C0E00380800780400700400E00201C0018700007C000141F7D9D17>I<000F80007040 00C0200180E00301E00701E00E00C01E00001C00003C000038000078F800790E007A0700 7C0300F80380F80380F003C0F003C0F003C0F003C0F00780E00780E00780E00700E00F00 600E00701C0030180018700007C000131F7C9D17>I<2000003FFFE07FFFC07FFF804001 00C002008002008004000008000010000020000040000040000080000180000300000300 000700000600000E00000E00001E00001C00001C00003C00003C00003C00007800007800 00780000300000131F799D17>I<003F0000C1C00100600200600400300C00300C00300C 00300C00600E00600F80C00FC18007F60003FC0001FC0001FF00063F800C0F801007C030 03C06001C06000C0C000C0C000C0C000C0C00080C0010060030030040018180007E00014 1F7D9D17>I<007E0001C3000301800601C00E01C01C00C03C00E03C00E03C01E07801E0 7801E07801E07801E07803E07803E03803C03807C01C0BC00C13C003E380000780000780 000700000E00600E00F01C00F01800E0300080600041C0003F0000131F7C9D17>I<07E0 1838201C401C701CF03CF03C603C0038007000E001C00180030002000600040004000800 0800080008000000000000000000000030007800F800780070000E20799F15>63 D<0000100000001800000038000000380000007800000078000000FC000001BC0000013C 0000033C0000023C0000063C0000043E0000081E0000081E0000101E0000101E0000201E 0000200F0000400F0000400F0000FFFF0000800F0001000F800100078002000780020007 8004000780040007800C0007C03E0007C0FF807FFC1E207E9F22>65 D<07FFFF00007C01C0003C01E0003C00F0007800F8007800F8007800F8007800F8007800 F8007800F000F001F000F001E000F003C000F00F8000FFFE0000F00F0001E007C001E003 C001E003E001E001E001E001E001E001E003C001E003C003E003C003E003C003C003C007 C003C00F8007800F0007803E00FFFFF0001D1F7E9E20>I<0001F808000E061800380138 007000F801E0007803C0007007800030078000300F0000301F0000301E0000303E000020 3C0000007C0000007C0000007C0000007C000000F8000000F8000000F8000000F8000000 F80000007800004078000080780000803C0000803C0001001C0002000E00020006000C00 0300100001C0E000003F00001D217B9F21>I<07FFFF00007C01E0003C00F0003C007800 78003C0078003C0078001E0078001E0078001E0078001F00F0001F00F0001F00F0001F00 F0001F00F0001F00F0001F01E0001E01E0003E01E0003E01E0003E01E0003C01E0007C03 C0007803C000F003C000F003C001E003C003C003C0078007800F0007803C00FFFFE00020 1F7E9E23>I<07FFFFF8007C0078003C0038003C00180078001800780008007800080078 0008007800080078080800F0100000F0100000F0100000F0300000FFF00000F0700001E0 200001E0200001E0200001E0200001E0000801E0001003C0001003C0001003C0002003C0 002003C0006003C000C0078001C0078007C0FFFFFF801D1F7E9E1F>I<07FFFFF8007C00 78003C0038003C001800780018007800080078000800780008007800080078000800F010 0000F0100000F0100000F0300000F0700000FFF00001E0600001E0200001E0200001E020 0001E0200001E0000003C0000003C0000003C0000003C0000003C0000003C00000078000 0007C00000FFFE00001D1F7E9E1E>I<0001FC04000F030C003C009C0070007C00E0003C 01C0003803800018078000180F0000181F0000181E0000183E0000103C0000007C000000 7C0000007C0000007C000000F8000000F8000000F8007FFCF80003E0780001E0780001E0 780003C0780003C03C0003C03C0003C01C0003C00E0007C007000B800380118001E06080 003F80001E217B9F24>I<07FFC7FFC0007C00F800003C007800003C007800007800F000 007800F000007800F000007800F000007800F000007800F00000F001E00000F001E00000 F001E00000F001E00000FFFFE00000F001E00001E003C00001E003C00001E003C00001E0 03C00001E003C00001E003C00003C007800003C007800003C007800003C007800003C007 800003C007800007800F000007C00F8000FFF8FFF800221F7E9E22>I<07FFE0007C0000 3C00003C0000780000780000780000780000780000780000F00000F00000F00000F00000 F00000F00001E00001E00001E00001E00001E00001E00003C00003C00003C00003C00003 C00003C00007800007C000FFFC00131F7F9E10>I<00FFFC0007C00003C00003C0000780 000780000780000780000780000780000F00000F00000F00000F00000F00000F00001E00 001E00001E00001E00001E00001E00003C00303C00783C00F83C00F83800F07800807000 40E00021C0001F000016207D9E17>I<07FFE07FE0007C001F00003C000C00003C001800 00780010000078004000007800800000780100000078020000007804000000F008000000 F010000000F060000000F0F0000000F1F0000000F278000001E478000001E878000001F0 3C000001E03C000001E01E000001E01E000003C00F000003C00F000003C00F000003C007 800003C007800003C003C000078003C00007C007E000FFFC3FFC00231F7E9E23>I<07FF F000007E0000003C0000003C000000780000007800000078000000780000007800000078 000000F0000000F0000000F0000000F0000000F0000000F0000001E0000001E0000001E0 000001E0000001E0008001E0010003C0010003C0010003C0030003C0020003C0060003C0 060007801E0007807C00FFFFFC00191F7E9E1C>I<07FC0000FFC0007C0000F800003C00 017800003C00017800004E0002F000004E0002F000004E0004F000004E0004F000004E00 08F000004E0008F00000870011E00000870011E00000870021E00000870021E000008700 41E00000838041E00001038083C00001038083C00001038103C00001038203C0000101C2 03C0000101C403C0000201C40780000201C80780000201C80780000201D00780000200F0 0780000600E00780000600E00F00000F00C00F8000FFE0C1FFF8002A1F7E9E2A>I<07FC 01FFC0003E003E00003E001800003E001800004F001000004F0010000047801000004780 10000043C010000043C010000083C020000081E020000081E020000080F020000080F020 000080782000010078400001007C400001003C400001003C400001001E400001001E4000 02000F800002000F800002000F800002000780000200078000060003800006000300000F 00010000FFE0010000221F7E9E22>I<0003F800001E0E000038070000E0038001C001C0 03C001E0078000E00F0000F00F0000F01E0000F01E0000F83E0000F83C0000F87C0000F8 7C0000F87C0000F87C0000F8F80001F0F80001F0F80001F0F80001F0F80003E0780003E0 780003C0780007C07C0007803C000F003C001E001E001C000E0038000700F00003C3C000 00FE00001D217B9F23>I<07FFFF00007C03C0003C01E0003C00F0007800F0007800F800 7800F8007800F8007800F8007800F000F001F000F001E000F003C000F0078000F00F0000 FFF80001E0000001E0000001E0000001E0000001E0000001E0000003C0000003C0000003 C0000003C0000003C0000003C000000780000007C00000FFFC00001D1F7E9E1F>I<07FF FC00007C0700003C03C0003C01E0007801E0007801F0007801F0007801F0007801F00078 01E000F003E000F003C000F0078000F00F0000F03C0000FFF00001E0300001E0380001E0 1C0001E01C0001E01C0001E01E0003C03E0003C03E0003C03E0003C03E0003C03E0003C0 3E0207803E0407C01F04FFFC0F18000003E01F207E9E21>82 D<003F040060CC01803C03 801C03001C0700180600080E00080E00080E00080E00000F00000F80000FE00007FE0003 FF8001FFC0007FE00007E00001E00000E00000F00000F04000E04000E04000E04000E060 00C0600180E00380F80300C60C0081F80016217D9F19>I<3FFFFFF03C0780F030078030 60078030400F0010400F0010C00F0010800F0010800F0010800F0010001E0000001E0000 001E0000001E0000001E0000001E0000003C0000003C0000003C0000003C0000003C0000 003C000000780000007800000078000000780000007800000078000000F0000001F80000 7FFFE0001C1F7A9E21>IIII<03FFC0FFC0007F007E00003E003800001E003000001E0020 00000F004000000F008000000F81000000078200000007C600000003C400000003E80000 0001F000000001F000000000F000000000F800000000F8000000017C000000023C000000 043C0000000C1E000000081E000000101F000000200F000000400F800000C00780000080 07C000010003C000070003E0001F8007E000FFE01FFE00221F7F9E22>II123 D E /Fr 31 123 df<70F8F8F87005057C840D>58 D<70F8FCFC74040404080810102040 060E7C840D>I<000001C00000078000001E00000078000001E00000078000000E000000 38000000F0000003C000000F0000003C000000F0000000F00000003C0000000F00000003 C0000000F0000000380000000E0000000780000001E0000000780000001E000000078000 0001C01A1A7C9723>I62 D<000002000000060000000E0000000E0000001E000000 1F0000002F0000002F0000004F0000008F0000008F0000010F0000010F0000020F000004 0F0000040F0000080F8000080780001007800020078000200780007FFF80004007800080 0780018007800100078002000780020007C0040003C00C0003C01E0007C0FF807FFC1E20 7E9F22>65 D<00FFFFE000000F007800000F001C00000F000E00000F000700001E000700 001E000380001E000380001E000380003C000380003C000380003C000380003C00038000 7800078000780007800078000780007800078000F0000F0000F0000F0000F0000E0000F0 001E0001E0001C0001E0003C0001E000380001E000700003C000E00003C001C00003C003 800003C007000007803C0000FFFFF00000211F7E9E26>68 D<00FF803FF0000F80078000 0F800200000BC00200000BC002000013C004000011E004000011E004000011E004000020 F008000020F008000020F808000020780800004078100000403C100000403C100000403C 100000801E200000801E200000801E200000800F200001000F400001000F4000010007C0 00010007C00002000780000200038000020003800006000380000F00010000FFE0010000 241F7E9E25>78 D<0001FC0000070700001C01C0003000E000E0006001C0007003800070 07800038070000380E0000381E0000381C0000383C0000383C0000387800007878000078 7800007878000078F00000F0F00000F0F00000E0F00001E0F00001C0F00003C070000380 7000070078000F0038001E0038003C001C0070000E00E0000783800001FC00001D217E9F 23>I<00FFFF80000F01E0000F0070000F0038000F003C001E003C001E003C001E003C00 1E003C003C0078003C0078003C00F0003C01E00078038000780F00007FF80000781C0000 F00E0000F00F0000F0070000F0078001E00F0001E00F0001E00F0001E00F0003C01E0003 C01E0203C01E0203C01E0407C00E04FFFC0718000003E01F207E9E23>82 D<0FFFFFFC1E03C0381803C0181003C0082003C008200780086007800840078008400780 08800F0010000F0000000F0000000F0000001E0000001E0000001E0000001E0000003C00 00003C0000003C0000003C00000078000000780000007800000078000000F0000000F000 0000F0000000F0000001F000007FFFC0001E1F7F9E1B>84 D<00FFF83FF8000FC00F8000 0F80060000078004000007C008000003C010000003C020000003E040000001E080000001 F100000000F300000000F600000000FC0000000078000000007C000000007C000000007C 00000000BE000000011E000000021E000000061F0000000C0F000000080F800000100780 000020078000004007C000008003C000010003E000030003E0000F0007E000FFE01FFE00 251F7F9E26>88 D<00F1800389C00707800E03801C03803C038038070078070078070078 0700F00E00F00E00F00E00F00E10F01C20F01C20703C20705C40308C400F078014147E93 18>97 D<07803F8007000700070007000E000E000E000E001C001C001CF01D0C3A0E3C0E 380F380F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031C01F0010207E9F 14>I<007C01C207010E0F1E0F1C0E3C04780078007800F000F000F000F000F000700170 02300418380FC010147E9314>I<0000780003F80000700000700000700000700000E000 00E00000E00000E00001C00001C000F1C00389C00707800E03801C03803C038038070078 0700780700780700F00E00F00E00F00E00F00E10F01C20F01C20703C20705C40308C400F 078015207E9F18>I<007C01C207010E011C013C013802780C7BF07C00F000F000F000F0 007000700170023004183807C010147E9315>I<001E3000713800E0F001C07003807007 80700700E00F00E00F00E00F00E01E01C01E01C01E01C01E01C01E03801E03800E07800E 0B8006170001E700000700000700000E00000E00300E00781C00F038006070003FC00015 1D809316>103 D<00E001E001E000C000000000000000000000000000000E0013002380 4380438043808700070007000E000E001C001C001C20384038403840388019000E000B1F 7E9E10>105 D<0000C00001E00001E00001C00000000000000000000000000000000000 00000000001E00006300004380008380010380010380020700000700000700000700000E 00000E00000E00000E00001C00001C00001C00001C000038000038000038000038000070 0000700030700078E000F1C0006380003E00001328819E13>I<01E0000FE00001C00001 C00001C00001C0000380000380000380000380000700000700000701E00706100E08700E 10F00E20F00E40601C80001D00001E00001FC000387000383800383800381C2070384070 3840703840701880E01880600F0014207E9F18>I<03C01FC00380038003800380070007 00070007000E000E000E000E001C001C001C001C00380038003800380070007000700071 00E200E200E200E200640038000A207E9F0E>I<1E07802318C023A06043C07043807043 80708700E00700E00700E00700E00E01C00E01C00E01C00E03821C03841C07041C07081C 03083803101801E017147E931B>110 D<007C0001C3000301800E01C01E01C01C01E03C 01E07801E07801E07801E0F003C0F003C0F003C0F00780F00700700F00700E0030180018 700007C00013147E9316>I<03C1E004621804741C08781C08701E08701E10E01E00E01E 00E01E00E01E01C03C01C03C01C03C01C0380380780380700380E003C1C0072380071E00 0700000700000E00000E00000E00000E00001C00001C0000FFC000171D819317>I<1E1E 0023210023C38043C7804387804383008700000700000700000700000E00000E00000E00 000E00001C00001C00001C00001C000038000018000011147E9315>114 D<007C018203010603060706060E00078007F803FC01FE001F00077007F006F006E00440 0820301FC010147E9315>I<00C000E001C001C001C001C003800380FFF8038007000700 070007000E000E000E000E001C001C001C001C10382038203820384018800F000D1C7F9B 10>I<0F01801183C02183E021C1E041C0E04380608380400700400700400700400E0080 0E00800E00800E01000E01000C02000E04000E040006180001E00013147E9316>118 D<03C1C00C62201034701038F02038F020386040700000700000700000700000E00000E0 0000E00000E02061C040F1C040F1C080E2C080446300383C0014147E931A>120 D<0F00601180702180E021C0E041C0E04380E08381C00701C00701C00701C00E03800E03 800E03800E03800E07000C07000C07000E0F00061E0003EE00000E00000E00001C007818 0078380070700060600021C0001F0000141D7E9316>I<01E02003F04007F8C00C1F8008 010000020000040000080000100000600000C0000100000200000400800801001003003F 060061FC0040F80080700013147E9315>I E /Fs 88 128 df<001F83E000F06E3001C0 78780380F8780300F0300700700007007000070070000700700007007000070070000700 7000FFFFFF80070070000700700007007000070070000700700007007000070070000700 700007007000070070000700700007007000070070000700700007007000070070000700 7000070070007FE3FF001D20809F1B>11 D<003F0000E0C001C0C00381E00701E00701E0 070000070000070000070000070000070000FFFFE00700E00700E00700E00700E00700E0 0700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0 0700E07FC3FE1720809F19>I<003FE000E0E001C1E00381E00700E00700E00700E00700 E00700E00700E00700E00700E0FFFFE00700E00700E00700E00700E00700E00700E00700 E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E07FE7 FE1720809F19>I<001F81F80000F04F040001C07C06000380F80F000300F00F000700F0 0F00070070000007007000000700700000070070000007007000000700700000FFFFFFFF 000700700700070070070007007007000700700700070070070007007007000700700700 070070070007007007000700700700070070070007007007000700700700070070070007 007007000700700700070070070007007007007FE3FE3FF02420809F26>I<001F81FF00 00F06F070001C07C0F000380F80F000300F0070007007007000700700700070070070007 00700700070070070007007007000700700700FFFFFFFF00070070070007007007000700 700700070070070007007007000700700700070070070007007007000700700700070070 070007007007000700700700070070070007007007000700700700070070070007007007 0007007007007FE3FE3FF02420809F26>I<7038F87CFC7EFC7E743A0402040204020804 080410081008201040200F0E7E9F17>34 D<007800000084000001840000030200000702 0000070200000702000007020000070400000704000007080000070800000310000003A0 0FFC03C003E0038001C001C0008001C0010003E0010004E0020008F00200187004003078 080070380800701C1000F01E1000F00E2000F0074000F003C0087003C0087801C0103806 70301C18386007E00F801E227EA023>38 D<70F8FCFC74040404080810102040060E7C9F 0D>I<0020004000800100020006000C000C001800180030003000300070006000600060 00E000E000E000E000E000E000E000E000E000E000E000E0006000600060007000300030 003000180018000C000C000600020001000080004000200B2E7DA112>I<800040002000 100008000C00060006000300030001800180018001C000C000C000C000E000E000E000E0 00E000E000E000E000E000E000E000E000C000C000C001C0018001800180030003000600 06000C00080010002000400080000B2E7DA112>I<000600000006000000060000000600 000006000000060000000600000006000000060000000600000006000000060000000600 000006000000060000FFFFFFF0FFFFFFF000060000000600000006000000060000000600 000006000000060000000600000006000000060000000600000006000000060000000600 00000600001C207D9A23>43 D<70F8FCFC74040404080810102040060E7C840D>II<70F8F8F87005057C840D>I<000100030003000600060006000C000C 000C00180018001800300030003000600060006000C000C000C001800180018003000300 03000600060006000C000C000C00180018001800300030003000600060006000C000C000 C000102D7DA117>I<03F0000E1C001C0E00180600380700700380700380700380700380 F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0 F003C07003807003807003807807803807001806001C0E000E1C0003F000121F7E9D17> I<018003800F80F380038003800380038003800380038003800380038003800380038003 80038003800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C 1C00100E00200700400780800780F007C0F803C0F803C0F803C02007C00007C000078000 0780000F00000E00001C0000380000700000600000C0000180000300000600400C004018 00401000803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F80 780780780780380F80000F80000F00000F00000E00001C0000380003F000003C00000E00 000F000007800007800007C02007C0F807C0F807C0F807C0F00780400780400F00200E00 1C3C0003F000121F7E9D17>I<000600000600000E00000E00001E00002E00002E00004E 00008E00008E00010E00020E00020E00040E00080E00080E00100E00200E00200E00400E 00C00E00FFFFF0000E00000E00000E00000E00000E00000E00000E0000FFE0141E7F9D17 >I<1803001FFE001FFC001FF8001FE00010000010000010000010000010000010000011 F000161C00180E001007001007800003800003800003C00003C00003C07003C0F003C0F0 03C0E00380400380400700200600100E000C380003E000121F7E9D17>I<007C00018200 0701000E03800C07801C0780380300380000780000700000700000F1F000F21C00F40600 F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C0700380380380 3807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF804001 0080020080020080040000080000080000100000200000200000400000400000C00000C0 0001C0000180000380000380000380000380000780000780000780000780000780000780 00078000030000121F7D9D17>I<03F0000C0C0010060030030020018060018060018060 01807001807803003E03003F06001FC8000FF00003F80007FC000C7E00103F00300F8060 03804001C0C001C0C000C0C000C0C000C0C000806001802001001002000C0C0003F00012 1F7E9D17>I<03F0000E18001C0C00380600380700700700700380F00380F00380F003C0 F003C0F003C0F003C0F003C07007C07007C03807C0180BC00E13C003E3C0000380000380 000380000700300700780600780E00700C002018001070000FC000121F7E9D17>I<70F8 F8F8700000000000000000000070F8F8F87005147C930D>I<70F8F8F870000000000000 0000000070F0F8F878080808101010202040051D7C930D>I<7FFFFFE0FFFFFFF0000000 0000000000000000000000000000000000000000000000000000000000FFFFFFF07FFFFF E01C0C7D9023>61 D<0FC0307040384038E03CF03CF03C603C0038007000E000C0018001 80010003000200020002000200020002000000000000000000000007000F800F800F8007 000E207D9F15>63 D<000100000003800000038000000380000007C0000007C0000007C0 000009E0000009E0000009E0000010F0000010F0000010F0000020780000207800002078 0000403C0000403C0000403C0000801E0000801E0000FFFE0001000F0001000F0001000F 00020007800200078002000780040003C00E0003C01F0007E0FFC03FFE1F207F9F22>65 DI<000FC040007030C001C009C0 038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C00004078000040 F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000 780000007C0000407C0000403C0000401C0000401E0000800E0000800700010003800200 01C0040000703800000FC0001A217D9F21>IIII<000FE0200078186000E004E0038002E0070001E0 0F0000E01E0000601E0000603C0000603C0000207C00002078000020F8000000F8000000 F8000000F8000000F8000000F8000000F8000000F8007FFCF80003E0780001E07C0001E0 3C0001E03C0001E01E0001E01E0001E00F0001E0070001E0038002E000E0046000781820 000FE0001E217D9F24>III<0FFFC0007C 00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C 00003C00003C00003C00003C00003C00003C00003C00003C00003C00203C00F83C00F83C 00F83C00F0380040780040700030E0000F800012207E9E17>IIIII<001F800000F0F00001C0380007801E000F000F000E0007001E00 07803C0003C03C0003C07C0003E0780001E0780001E0F80001F0F80001F0F80001F0F800 01F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E07C0003E07C0003E03C00 03C03C0003C01E0007800E0007000F000F0007801E0001C0380000F0F000001F80001C21 7D9F23>II<001F800000F0F000 01C0380007801E000F000F000E0007001E0007803C0003C03C0003C07C0003E07C0003E0 780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0 F80001F0780001E0780001E07C0003E03C0003C03C0F03C01E1087800E2047000F204F00 07A03E0001E0380000F0F010001FB01000003010000038300000387000003FF000001FE0 00001FE000000FC0000007801C297D9F23>II<07E0800C1980100780300380600180600180E00180E00080E000 80E00080F00000F000007800007F00003FF0001FFC000FFE0003FF00001F800007800003 C00003C00001C08001C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F8 0012217D9F19>I<7FFFFFE0780F01E0600F0060400F0020400F0020C00F0030800F0010 800F0010800F0010800F0010000F0000000F0000000F0000000F0000000F0000000F0000 000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 000F0000000F0000000F0000000F0000001F800007FFFE001C1F7E9E21>IIII<7FF83FF8 0FE00FC007C0070003C0020001E0040001F00C0000F0080000781000007C1000003C2000 003E4000001E4000000F8000000F8000000780000003C0000007E0000005E0000009F000 0018F8000010780000207C0000603C0000401E0000801F0001800F0001000780020007C0 070003C01F8007E0FFE01FFE1F1F7F9E22>II<7FFFF87C00F87000F06001E04001E0C003C0C003C0800780800F80800F00 001E00001E00003C00003C0000780000F80000F00001E00001E00003C00403C004078004 0F80040F000C1E000C1E00083C00183C0018780038F801F8FFFFF8161F7D9E1C>II<080410082010201040204020804080408040B85CFC7E FC7E7C3E381C0F0E7B9F17>II<08102020404080 8080B8FCFC7C38060E7D9F0D>96 D<1FE000303000781800781C00300E00000E00000E00 000E0000FE00078E001E0E00380E00780E00F00E10F00E10F00E10F01E10781E10386720 0F83C014147E9317>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00 000E00000E00000E00000E3E000EC3800F01C00F00E00E00E00E00700E00700E00780E00 780E00780E00780E00780E00780E00700E00700E00E00F00E00D01C00CC300083E001520 7F9F19>I<03F80E0C1C1E381E380C70007000F000F000F000F000F000F0007000700038 0138011C020E0C03F010147E9314>I<000380003F800003800003800003800003800003 8000038000038000038000038000038003E380061B801C07803803803803807003807003 80F00380F00380F00380F00380F00380F003807003807003803803803807801C07800E1B 8003E3F815207E9F19>I<03F0000E1C001C0E00380700380700700700700380F00380F0 0380FFFF80F00000F00000F000007000007000003800801800800C010007060001F80011 147F9314>I<007C00C6018F038F07060700070007000700070007000700FFF007000700 07000700070007000700070007000700070007000700070007000700070007007FF01020 809F0E>I<0000E003E3300E3C301C1C30380E00780F00780F00780F00780F00780F0038 0E001C1C001E380033E0002000002000003000003000003FFE001FFF800FFFC03001E060 0070C00030C00030C00030C000306000603000C01C038003FC00141F7F9417>I<0E0000 FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E3E00 0E43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E003E001E00 1C000000000000000000000000000E007E000E000E000E000E000E000E000E000E000E00 0E000E000E000E000E000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E000 0000000000000000000000007007F000F000700070007000700070007000700070007000 70007000700070007000700070007000700070007000706070F060F0C061803F000C2882 9E0E>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00 000E00000E0FF00E03C00E03000E02000E04000E08000E10000E30000E70000EF8000F38 000E1C000E1E000E0E000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E 00FE000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F 01F000FE618618000E81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E0 0E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E 000E00E00E000E00E00E000E00E00E000E00E00E00FFE7FE7FE023147F9326>I<0E3E00 FE43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E001C03 803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000 E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E 00E00E00F00E00700E00780E00780E00780E00780E00780E00780E00700E00F00E00E00F 01E00F01C00EC3000E3E000E00000E00000E00000E00000E00000E00000E00000E0000FF E000151D7F9319>I<03E0800619801C05803C0780380380780380700380F00380F00380 F00380F00380F00380F003807003807803803803803807801C0B800E138003E380000380 000380000380000380000380000380000380000380003FF8151D7E9318>I<0E78FE8C0F 1E0F1E0F0C0E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00F 147F9312>I<1F9030704030C010C010C010E00078007F803FE00FF00070803880188018 C018C018E030D0608F800D147E9312>I<020002000200060006000E000E003E00FFF80E 000E000E000E000E000E000E000E000E000E000E000E080E080E080E080E080610031001 E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC16147F93 19>III<7FC3FC0F01E00701C007018003810001C20000E40000EC 00007800003800003C00007C00004E000087000107000303800201C00601E01E01E0FF07 FE1714809318>II<3FFF380E200E 201C40384078407000E001E001C00380078007010E011E011C0338027006700EFFFE1014 7F9314>III<30307878F87C787830 300E057C9E17>127 D E /Ft 70 124 df<000FF07F00007FF9FF8000F83FC7C001E07F 8FC003E07F0FC007C07F0FC007C03F078007C01F000007C01F000007C01F000007C01F00 0007C01F0000FFFFFFF800FFFFFFF80007C01F000007C01F000007C01F000007C01F0000 07C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007 C01F000007C01F000007C01F000007C01F000007C01F00003FF8FFF0003FF8FFF0002220 809F1F>11 D<000FE000007FF80000F81C0001E07C0003E07C0007C07C0007C07C0007C0 380007C0000007C0000007C0000007C1FE00FFFFFE00FFFFFE0007C03E0007C03E0007C0 3E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C0 3E0007C03E0007C03E0007C03E0007C03E003FF9FFC03FF9FFC01A20809F1D>I<000FFE 00007FFE0000F87E0001E0FE0003E0FE0007C07E0007C07E0007C03E0007C03E0007C03E 0007C03E0007C03E00FFFFFE00FFFFFE0007C03E0007C03E0007C03E0007C03E0007C03E 0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E 0007C03E0007C03E003FF9FFC03FF9FFC01A20809F1D>I<0018007000E001C003800380 07000E000E001E001C003C003C007800780078007800F800F000F000F000F000F000F000 F000F000F000F80078007800780078003C003C001C001E000E000E0007000380038001C0 00E0007000180D2D7DA114>40 DI<387CFEFFFF7F3B030306060E0C18702008107C860F>44 DI<387CFEFEFE7C3807077C860F>I<01FC0007FF001F07C01E03C03E03E07C01 F07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01 F8FC01F8FC01F8FC01F87C01F07C01F07C01F03E03E01E03C01F8FC007FF0001FC00151D 7E9C1A>48 D<00E00001E0000FE000FFE000F3E00003E00003E00003E00003E00003E000 03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000 03E00003E00003E00003E00003E000FFFF80FFFF80111D7C9C1A>I<07F0001FFE00383F 007C1F80FE0FC0FE0FC0FE0FE0FE07E07C07E03807E0000FE0000FC0000FC0001F80001F 00003E0000780000F00000E00001C0000380600700600E00601C00E01FFFC03FFFC07FFF C0FFFFC0FFFFC0131D7D9C1A>I<01FC0007FF000E0F801E0FC03F07E03F07E03F07E03F 07E01E0FC0000FC0000F80001F0001FC0001FC00000F800007C00003E00003F00003F838 03F87C03F8FE03F8FE03F8FE03F0FC03F07807E03C0FC01FFF8003FC00151D7E9C1A>I< 0001C00003C00007C00007C0000FC0001FC0003BC00073C00063C000C3C00183C00383C0 0703C00E03C00C03C01803C03803C07003C0E003C0FFFFFEFFFFFE0007C00007C00007C0 0007C00007C00007C000FFFE00FFFE171D7F9C1A>I<3803803FFF803FFF003FFE003FFC 003FF0003F800030000030000030000030000033F80037FE003C1F00380F801007C00007 C00007E00007E07807E0FC07E0FC07E0FC07E0FC07C0780FC0600F80381F001FFC0007F0 00131D7D9C1A>I<003F0001FFC007E0E00F81E01F03F01E03F03E03F07C03F07C01E07C 0000FC1000FCFF00FDFFC0FD03E0FE01F0FE01F0FC01F8FC01F8FC01F8FC01F87C01F87C 01F87C01F83C01F03E01F01E03E00F07C007FF8001FE00151D7E9C1A>I<6000007FFFF8 7FFFF87FFFF07FFFE07FFFC0E00180C00300C00300C00600000C00001800003800003800 00780000700000F00000F00001F00001F00001F00001F00003F00003F00003F00003F000 03F00003F00001E00000C000151E7D9D1A>I<01FC0007FF000F07801E03C01C01E03C01 E03C01E03E01E03F01E03FC3C01FE3801FFF000FFE0007FF8007FFC01FFFE03C3FF0780F F07803F8F001F8F000F8F00078F00078F000707800707C00E03E03C00FFF8003FC00151D 7E9C1A>I<01FC000FFF001F07803E03C07C03E07C01E0FC01F0FC01F0FC01F0FC01F8FC 01F8FC01F8FC01F87C03F87C03F83E05F81FFDF807F9F80041F80001F03C01F07E01F07E 03E07E03E07E07C03C0780381F001FFC0007F000151D7E9C1A>I<387CFEFEFE7C380000 00000000387CFEFEFE7C3807147C930F>I<0000E000000000E000000001F000000001F0 00000001F000000003F800000003F800000006FC00000006FC0000000EFE0000000C7E00 00000C7E000000183F000000183F000000303F800000301F800000701FC00000600FC000 00600FC00000C007E00000FFFFE00001FFFFF000018003F000018003F000030001F80003 0001F800060001FC00060000FC000E0000FE00FFE00FFFE0FFE00FFFE0231F7E9E28>65 DI<0007FC02003FFF0E00FE03DE 03F000FE07E0003E0FC0001E1F80001E3F00000E3F00000E7F0000067E0000067E000006 FE000000FE000000FE000000FE000000FE000000FE000000FE0000007E0000007E000006 7F0000063F0000063F00000C1F80000C0FC0001807E0003803F0007000FE01C0003FFF80 0007FC001F1F7D9E26>IIII<0007FC0200003FFF0E0000FE03DE0003F000FE0007E0003E000FC0001E001F8000 1E003F00000E003F00000E007F000006007E000006007E00000600FE00000000FE000000 00FE00000000FE00000000FE00000000FE003FFFE0FE003FFFE07E00007E007E00007E00 7F00007E003F00007E003F00007E001F80007E000FC0007E0007E0007E0003F000FE0000 FE01FE00003FFF8E000007FC0600231F7D9E29>III< FFFF00FFE0FFFF00FFE007E0001E0007E000180007E000300007E000600007E001C00007 E003800007E006000007E00C000007E018000007E030000007E0F0000007E1F8000007E3 F8000007E6FC000007EC7E000007F87F000007F03F000007E01F800007E00FC00007E00F E00007E007E00007E003F00007E001F80007E000FC0007E000FC0007E0007E0007E0007F 00FFFF03FFF0FFFF03FFF0241F7E9E29>75 DII I<001FF80000FFFF0001F81F8007E007E00FC003F01F8001F81F0000F83F0000FC7F0000 FE7E00007E7E00007EFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE0000 7FFE00007FFE00007F7E00007E7F0000FE7F0000FE3F0000FC3F8001FC1F8001F80FC003 F007E007E001F81F8000FFFF00001FF800201F7D9E27>II<001FF80000FFFF0001F81F8007E007E00FC003F01F8001F81F 8001F83F0000FC7F0000FE7F0000FE7E00007EFE00007FFE00007FFE00007FFE00007FFE 00007FFE00007FFE00007FFE00007FFE00007F7E00007E7E00007E7F0000FE3F0000FC3F 87C1FC1F8FE1F80FD833F007F81FE001F81F8000FFFF00001FFE0300000E0300000F0700 000FFF000007FF000007FE000007FE000003FC000001F8000000F020287D9E27>II<03FC080FFF381E03F83800F8700078700038F000 38F00018F00018F80000FC00007FC0007FFE003FFF801FFFE00FFFF007FFF000FFF80007 F80000FC00007C00003CC0003CC0003CC0003CE00038E00078F80070FE01E0E7FFC081FF 00161F7D9E1D>I<7FFFFFFC7FFFFFFC7C07E07C7007E01C6007E00C6007E00CE007E00E C007E006C007E006C007E006C007E0060007E0000007E0000007E0000007E0000007E000 0007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E000 0007E0000007E0000007E00003FFFFC003FFFFC01F1E7E9D24>IIIIII<3F FFFF803FFFFF803F803F003E007F0038007E003800FC007001FC007001F8006003F00060 07F0006007E000000FC000001FC000001F8000003F0000007F0000007E000000FC000001 FC018001F8018003F0018007F0018007E003800FC003801FC003001F8007003F000F007F 001F007E007F00FFFFFF00FFFFFF00191F7D9E20>I<07FC001FFF003F0F803F07C03F03 E03F03E00C03E00003E0007FE007FBE01F03E03C03E07C03E0F803E0F803E0F803E0FC05 E07E0DE03FF8FE0FE07E17147F9319>97 DI<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC00 00FC0000FC0000FC0000FC0000FC00007C00007E00003E00603F00C01F81C007FF0001FC 0013147E9317>I<0007F80007F80000F80000F80000F80000F80000F80000F80000F800 00F80000F80000F801F8F80FFEF81F83F83E01F87E00F87C00F87C00F8FC00F8FC00F8FC 00F8FC00F8FC00F8FC00F87C00F87C00F87E00F83E01F81F07F80FFEFF03F8FF18207E9F 1D>I<01FE0007FF800F83C01E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000 FC0000FC00007C00007C00003E00181E00180F807007FFE000FF8015147F9318>I<001F 8000FFC001F3E003E7E003C7E007C7E007C3C007C00007C00007C00007C00007C000FFFC 00FFFC0007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C0 0007C00007C00007C00007C00007C0003FFC003FFC0013207F9F10>I<01FC3C07FFFE0F 079E1E03DE3E03E03E03E03E03E03E03E03E03E01E03C00F07800FFF0009FC0018000018 00001C00001FFF800FFFF007FFF81FFFFC3C007C70003EF0001EF0001EF0001E78003C78 003C3F01F80FFFE001FF00171E7F931A>II<1C003E003F007F003F003E001C00000000000000000000 000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F 001F00FFE0FFE00B217EA00E>I107 DIII<01FF0007FFC01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC00 7EFC007EFC007E7C007C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>II<01F81807FE381F87783F01F83E01F8 7E00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F87C00F87E00F87E00F83F01F8 1F87F80FFEF803F8F80000F80000F80000F80000F80000F80000F80000F80007FF0007FF 181D7E931C>II<0FE63FFE701E600EE006E006F800FFC07FF83FFC1FFE03FE001FC007C007E007F006 F81EFFFCC7F010147E9315>I<01800180018003800380038007800F803F80FFFCFFFC0F 800F800F800F800F800F800F800F800F800F800F860F860F860F860F8607CC03F801F00F 1D7F9C14>I IIIII<3FFFE03FFFE03C07C0380F80701F80603F00603E00607C0000F800 01F80003F00003E06007C0600F80601F80E03F00C03E01C07C03C0FFFFC0FFFFC013147F 9317>II E /Fu 39 124 df<00000007FF8000000000 01FFFFF0000000000FFFFFFC000000003FFFFFFE00000000FFFC00FF00000001FFC0003F 80000007FF00007FC000000FFE0001FFC000001FFC0001FFE000001FF80003FFE000003F F00003FFE000003FF00003FFE000007FE00003FFE000007FE00003FFE000007FE00003FF E000007FE00003FFE000007FE00001FFC000007FE00000FF8000007FE000003E0000007F E00000000000007FE00000000000007FE00000000000007FE00000000000007FE0000000 0000007FE00000000000007FE0003FFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000FFFF FFFFFFFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000007FF00000FFF000007FF000007F F000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007F F000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007F F000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007F F000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007F F000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007F F000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007F F000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007F F000007FF000007FF000007FF000007FF000007FF0003FFFFFE03FFFFFE03FFFFFE03FFF FFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03B487EC742>12 D<0000000003E000000000000000000007F000000000000000000007F000000000000000 00000FF80000000000000000000FF80000000000000000000FF80000000000000000001F FC0000000000000000001FFC0000000000000000003FFE0000000000000000003FFE0000 000000000000007FFF0000000000000000007FFF0000000000000000007FFF0000000000 00000000FFFF800000000000000000FFFF800000000000000001FFFFC000000000000000 01FFFFC00000000000000001FFFFC00000000000000003FFFFE00000000000000003EFFF E00000000000000007EFFFF00000000000000007CFFFF00000000000000007C7FFF00000 00000000000FC7FFF8000000000000000F83FFF8000000000000001F83FFFC0000000000 00001F03FFFC000000000000001F01FFFC000000000000003F01FFFE000000000000003E 00FFFE000000000000007E00FFFF000000000000007C007FFF00000000000000FC007FFF 80000000000000F8007FFF80000000000000F8003FFF80000000000001F8003FFFC00000 00000001F0001FFFC0000000000003F0001FFFE0000000000003E0001FFFE00000000000 03E0000FFFE0000000000007E0000FFFF0000000000007C00007FFF000000000000FC000 07FFF800000000000F800007FFF800000000000F800003FFF800000000001F800003FFFC 00000000001F000001FFFC00000000003FFFFFFFFFFE00000000003FFFFFFFFFFE000000 00007FFFFFFFFFFF00000000007FFFFFFFFFFF00000000007FFFFFFFFFFF0000000000FC 0000007FFF8000000000F80000003FFF8000000001F80000003FFFC000000001F0000000 3FFFC000000001F00000001FFFC000000003F00000001FFFE000000003E00000000FFFE0 00000007E00000000FFFF000000007C00000000FFFF000000007C000000007FFF0000000 0FC000000007FFF80000000F8000000003FFF80000001F8000000003FFFC0000001F0000 000003FFFC0000007FC000000001FFFC0000FFFFFFC00007FFFFFFFF80FFFFFFC00007FF FFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF 8051487CC75A>65 DI<000000003FFE00000E0000000FFFFFC0001E0000007FFFFFF8003E0000 03FFFFFFFE00FE00000FFFFFFFFF81FE00003FFFF800FFC3FE0000FFFF80000FF7FE0001 FFFC000003FFFE0007FFF0000001FFFE000FFFC00000007FFE001FFF800000003FFE003F FF000000001FFE007FFE000000000FFE00FFFC0000000007FE01FFF80000000007FE03FF F00000000003FE03FFF00000000001FE07FFE00000000001FE07FFE00000000000FE0FFF C00000000000FE0FFFC000000000007E1FFFC000000000007E1FFF8000000000007E3FFF 8000000000007E3FFF8000000000003E3FFF8000000000003E7FFF8000000000003E7FFF 0000000000003E7FFF000000000000007FFF00000000000000FFFF00000000000000FFFF 00000000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF 00000000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000FFFF 00000000000000FFFF00000000000000FFFF00000000000000FFFF000000000000007FFF 000000000000007FFF000000000000007FFF000000000000007FFF8000000000003E3FFF 8000000000003E3FFF8000000000003E3FFF8000000000003E1FFF8000000000003E1FFF C000000000003E0FFFC000000000007C0FFFC000000000007C07FFE000000000007C07FF E00000000000F803FFF00000000000F803FFF00000000001F801FFF80000000001F000FF FC0000000003E0007FFE0000000007E0003FFF000000000FC0001FFF800000001F80000F FFC00000003F000007FFF0000000FE000001FFFC000001FC000000FFFF80000FF8000000 3FFFF8007FF00000000FFFFFFFFFC000000003FFFFFFFF00000000007FFFFFFC00000000 000FFFFFE00000000000003FFE000000474979C756>I69 DI73 D76 DI80 D82 D<00007FF00007000007FFFF000F00001FFFFFC01F00007FFFFFF03F 0000FFFFFFFC7F0003FFC00FFEFF0007FE0000FFFF0007FC00003FFF000FF000001FFF00 1FF0000007FF001FE0000003FF003FE0000001FF003FC0000001FF007FC0000000FF007F C00000007F007FC00000007F00FFC00000003F00FFC00000003F00FFC00000003F00FFE0 0000003F00FFE00000001F00FFF00000001F00FFF80000001F00FFFC0000001F00FFFF00 000000007FFFC0000000007FFFFE000000007FFFFFE00000003FFFFFFF0000003FFFFFFF F000001FFFFFFFFC00001FFFFFFFFF00000FFFFFFFFFC00007FFFFFFFFE00007FFFFFFFF F00003FFFFFFFFF80000FFFFFFFFFC00007FFFFFFFFE00003FFFFFFFFE00000FFFFFFFFF 000001FFFFFFFF0000003FFFFFFF80000001FFFFFF800000000FFFFFC000000000FFFFC0 000000001FFFC0000000000FFFE00000000007FFE00000000003FFE07800000001FFE0F8 00000000FFE0F800000000FFE0F8000000007FE0F8000000007FE0F8000000007FE0FC00 0000007FE0FC000000007FC0FC000000007FC0FE000000007FC0FE000000007F80FF0000 0000FF80FF80000000FF80FFC0000000FF00FFE0000001FE00FFF8000003FE00FFFE0000 07FC00FFFF80000FF800FFFFFC007FF000FE3FFFFFFFE000FC0FFFFFFF8000F803FFFFFF 0000F0007FFFF80000E00003FFC00000334979C742>I<3FFFFFFFFFFFFFFFFF003FFFFF FFFFFFFFFFFF003FFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFF003FFFFFFFFFFFFFFFFF 003FFF0003FFF8003FFF007FF80003FFF80007FF807FE00003FFF80001FF807FC00003FF F80000FF807F800003FFF800007F807F000003FFF800003F807F000003FFF800003F807E 000003FFF800001F807E000003FFF800001F807E000003FFF800000F807C000003FFF800 000F807C000003FFF800000F807C000003FFF800000F807C000003FFF800000F80FC0000 03FFF800000FC0F8000003FFF8000007C0F8000003FFF8000007C0F8000003FFF8000007 C0F8000003FFF8000007C0F8000003FFF8000007C000000003FFF80000000000000003FF F80000000000000003FFF80000000000000003FFF80000000000000003FFF80000000000 000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF800 00000000000003FFF80000000000000003FFF80000000000000003FFF800000000000000 03FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF8000000 0000000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FF F80000000000000003FFF80000000000000003FFF80000000000000003FFF80000000000 000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF800 00000000000003FFF80000000000000003FFF80000000000000003FFF800000000000000 03FFF80000000000000003FFF80000000000000003FFF80000000000000003FFF8000000 0000000003FFF80000000000000003FFF80000000000000003FFF80000000000000003FF F80000000000000003FFF80000000000000003FFF8000000000003FFFFFFFFFFF8000000 03FFFFFFFFFFF800000003FFFFFFFFFFF800000003FFFFFFFFFFF800000003FFFFFFFFFF F800004A467CC553>I86 D<0007FFFC000000007FFFFFC0000001FFFFFF F8000003FFFFFFFE000007FE001FFF000007FF0003FFC0000FFF8001FFE0000FFF8000FF F0000FFF80007FF0000FFF80007FF8000FFF80007FF80007FF00003FFC0007FF00003FFC 0003FE00003FFC0000F800003FFC00000000003FFC00000000003FFC00000000003FFC00 000000003FFC00000007FFFFFC000000FFFFFFFC000007FFFFFFFC00003FFFE03FFC0000 FFFE003FFC0003FFF0003FFC0007FFC0003FFC000FFF00003FFC001FFE00003FFC003FFC 00003FFC007FF800003FFC007FF800003FFC00FFF000003FFC00FFF000003FFC00FFF000 003FFC00FFF000003FFC00FFF000003FFC00FFF000007FFC007FF80000FFFC007FF80001 EFFC003FFC0003EFFC003FFF0007CFFF000FFFC03F8FFFF807FFFFFF07FFFC01FFFFFC03 FFFC007FFFF001FFFC0003FF80007FF8362E7DAD3A>97 D<007FC00000000000FFFFC000 00000000FFFFC00000000000FFFFC00000000000FFFFC00000000000FFFFC00000000000 03FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000 0000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000000000 01FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000 0000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000000000 01FFC0000000000001FFC0000000000001FFC00FFC00000001FFC07FFFC0000001FFC3FF FFF0000001FFCFFFFFFC000001FFDFF00FFF000001FFFF8003FF800001FFFE0001FFC000 01FFF800007FE00001FFF000007FF00001FFE000003FF80001FFE000001FFC0001FFE000 001FFC0001FFE000001FFE0001FFE000001FFE0001FFE000000FFF0001FFE000000FFF00 01FFE000000FFF0001FFE000000FFF0001FFE000000FFF8001FFE000000FFF8001FFE000 000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF80 01FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF0001FFE000 000FFF0001FFE000000FFF0001FFE000001FFE0001FFE000001FFE0001FFE000001FFC00 01FFE000001FFC0001FFE000003FF80001FFF000003FF80001FFF800007FF00001FFFC00 00FFE00001FFFE0001FFC00001FFBF0007FF800001FF1FE01FFE000001FE0FFFFFFC0000 01FC03FFFFF0000001F800FFFF80000001F0001FF800000039487CC742>I<00001FFFC0 000000FFFFF8000007FFFFFE00001FFFFFFF80007FFC00FFC000FFE001FFC001FFC003FF E003FF8003FFE007FF0003FFE00FFE0003FFE00FFE0003FFE01FFC0001FFC01FFC0001FF C03FFC0000FF803FFC00003E007FF8000000007FF8000000007FF800000000FFF8000000 00FFF800000000FFF800000000FFF800000000FFF800000000FFF800000000FFF8000000 00FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000007FFC000000 003FFC000000003FFC000000001FFC000000F81FFE000000F80FFE000000F80FFF000001 F007FF800003F003FFC00007E001FFE0000FC000FFF0001F80007FFE00FF00001FFFFFFE 000007FFFFF8000000FFFFE00000001FFE00002D2E7CAD35>I<00000000007FC0000000 0000FFFFC00000000000FFFFC00000000000FFFFC00000000000FFFFC00000000000FFFF C0000000000003FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000 000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FF C0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000 000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FF C0000000000001FFC0000000000001FFC00000000FFC01FFC0000000FFFF81FFC0000007 FFFFE1FFC000001FFFFFF9FFC000007FFC03FFFFC00000FFF0007FFFC00001FFC0001FFF C00003FF80000FFFC00007FF000007FFC0000FFE000003FFC0000FFE000003FFC0001FFC 000003FFC0001FFC000003FFC0003FFC000003FFC0003FFC000003FFC0007FF8000003FF C0007FF8000003FFC0007FF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8 000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FF C000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC0007FF8000003FFC0007FF8 000003FFC0007FF8000003FFC0003FF8000003FFC0003FFC000003FFC0003FFC000003FF C0001FFC000003FFC0001FFC000003FFC0000FFE000007FFC00007FF00000FFFC00003FF 00001FFFC00001FFC0003FFFC00000FFE000FFFFE000007FF807FBFFFF80001FFFFFF3FF FF800007FFFFC3FFFF800001FFFF03FFFF8000001FF803FFFF8039487CC742>I<00001F FE00000001FFFFE0000007FFFFF800001FFFFFFE00007FFC07FF0000FFE001FF8001FFC0 007FC003FF80003FE007FF00003FF00FFE00001FF01FFE00000FF81FFC00000FF83FFC00 000FFC3FFC000007FC7FFC000007FC7FF8000007FC7FF8000007FE7FF8000007FEFFF800 0007FEFFF8000007FEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFEFFFFFFFFFFFCFFF800 000000FFF800000000FFF800000000FFF8000000007FF8000000007FF8000000007FFC00 0000003FFC000000003FFC000000003FFC0000001C1FFE0000003E0FFE0000003E07FF00 00007E07FF000000FC03FF800001F801FFC00003F0007FF0001FE0003FFE00FFC0001FFF FFFF800007FFFFFE000000FFFFF80000000FFF80002F2E7DAD36>I<000000FFC0000000 07FFF80000003FFFFC000000FFFFFF000001FFC1FF000007FF03FF80000FFC03FF80000F F807FFC0001FF807FFC0003FF007FFC0003FF007FFC0003FE003FF80007FE003FF80007F E001FF00007FE000FE00007FE0003800007FE0000000007FE0000000007FE0000000007F E0000000007FE0000000007FE0000000007FE0000000007FE0000000007FE0000000007F E0000000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000FFFFFFFE0000007F F0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007F F0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007F F0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007F F0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007F F0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF0000000007F F0000000007FF0000000007FF0000000007FF0000000007FF0000000007FF00000003FFF FFF800003FFFFFF800003FFFFFF800003FFFFFF800003FFFFFF800002A487DC724>I<00 000000001F8000007FF000FFE00007FFFF03FFF0001FFFFFC7FFF0007FFFFFFFC7F800FF E03FFE0FF801FF800FFC0FF803FF0007FE0FF807FE0003FF07F007FE0003FF07F00FFC00 01FF81C00FFC0001FF80000FFC0001FF80001FFC0001FFC0001FFC0001FFC0001FFC0001 FFC0001FFC0001FFC0001FFC0001FFC0001FFC0001FFC0000FFC0001FF80000FFC0001FF 80000FFC0001FF800007FE0003FF000007FE0003FF000003FF0007FE000001FF800FFC00 0000FFE03FF8000001FFFFFFF0000001DFFFFFC0000003C7FFFF00000003C07FF0000000 07C0000000000007C0000000000007C0000000000007C0000000000007E0000000000007 F0000000000007F8000000000007FFFFFFF0000007FFFFFFFF000003FFFFFFFFE00003FF FFFFFFF80001FFFFFFFFFE0001FFFFFFFFFF0000FFFFFFFFFF80007FFFFFFFFF8003FFFF FFFFFFC00FFFFFFFFFFFC01FF800001FFFE03FE0000001FFE07FC00000007FF07FC00000 003FF0FF800000001FF0FF800000001FF0FF800000001FF0FF800000001FF0FF80000000 1FF07FC00000003FE07FC00000003FE03FE00000007FC03FF0000000FFC01FFC000003FF 800FFF00000FFF0003FFF000FFFC0000FFFFFFFFF000003FFFFFFFC0000007FFFFFE0000 00003FFFC0000035447DAE3B>I<007FC00000000000FFFFC00000000000FFFFC0000000 0000FFFFC00000000000FFFFC00000000000FFFFC0000000000003FFC0000000000001FF C0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000 000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FF C0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000 000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FF C0000000000001FFC001FFC0000001FFC00FFFF8000001FFC03FFFFE000001FFC0FFFFFF 000001FFC1FC07FF800001FFC3E003FFC00001FFC7C001FFC00001FFCF0001FFE00001FF DE0000FFE00001FFDC0000FFE00001FFFC0000FFF00001FFF80000FFF00001FFF00000FF F00001FFF00000FFF00001FFF00000FFF00001FFE00000FFF00001FFE00000FFF00001FF E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF F00001FFE00000FFF000FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFF FFC07FFFFFE0FFFFFFC07FFFFFE03B487CC742>I<00FC0001FF0003FF8007FFC00FFFC0 1FFFE01FFFE01FFFE01FFFE01FFFE01FFFE00FFFC007FFC003FF8001FF0000FC00000000 000000000000000000000000000000000000000000000000000000000000007FC0FFFFC0 FFFFC0FFFFC0FFFFC0FFFFC003FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0 01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0 01FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0 01FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18497CC820>I<007FC00000 0000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC0000000 0003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 007FFFF801FFC0007FFFF801FFC0007FFFF801FFC0007FFFF801FFC0007FFFF801FFC000 0FFE0001FFC00007F00001FFC0000FE00001FFC0003FC00001FFC0007F800001FFC000FE 000001FFC001FC000001FFC007F8000001FFC00FF0000001FFC01FC0000001FFC03F8000 0001FFC0FF00000001FFC1FE00000001FFC3FF00000001FFCFFF80000001FFDFFFC00000 01FFFFFFC0000001FFFFFFE0000001FFFFFFF0000001FFFCFFF8000001FFF87FFC000001 FFE03FFC000001FFC01FFE000001FFC01FFF000001FFC00FFF800001FFC007FFC00001FF C003FFC00001FFC001FFE00001FFC001FFF00001FFC000FFF80001FFC0007FFC0001FFC0 003FFC0001FFC0001FFE0001FFC0000FFF0001FFC0000FFF8001FFC0000FFFC0FFFFFF80 7FFFFFFFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFFFFFFFF807FFFFF38487CC73F >107 D<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC00003FFC00001FFC000 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 01FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80 FFFFFF8019487CC720>I<007FC001FFC00000FFE00000FFFFC00FFFF80007FFFC0000FF FFC03FFFFE001FFFFF0000FFFFC0FFFFFF007FFFFF8000FFFFC1FC07FF80FE03FFC000FF FFC3E003FFC1F001FFE00003FFC7C001FFC3E000FFE00001FFCF0001FFE78000FFF00001 FFDE0000FFEF00007FF00001FFDC0000FFEE00007FF00001FFFC0000FFFE00007FF80001 FFF80000FFFC00007FF80001FFF00000FFF800007FF80001FFF00000FFF800007FF80001 FFF00000FFF800007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001 FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001 FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001 FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001 FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001 FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001 FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001 FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF80001 FFE00000FFF000007FF80001FFE00000FFF000007FF80001FFE00000FFF000007FF800FF FFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF0FF FFFFC07FFFFFE03FFFFFF0FFFFFFC07FFFFFE03FFFFFF05C2E7CAD63>I<007FC001FFC0 0000FFFFC00FFFF80000FFFFC03FFFFE0000FFFFC0FFFFFF0000FFFFC1FC07FF8000FFFF C3E003FFC00003FFC7C001FFC00001FFCF0001FFE00001FFDE0000FFE00001FFDC0000FF E00001FFFC0000FFF00001FFF80000FFF00001FFF00000FFF00001FFF00000FFF00001FF F00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FF E00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FF F00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF000FFFF FFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFFFFE0FFFFFFC07FFF FFE03B2E7CAD42>I<00000FFF0000000000FFFFF000000007FFFFFE0000001FFFFFFF80 00003FFC03FFC00000FFE0007FF00001FF80001FF80003FF00000FFC0007FE000007FE00 0FFE000007FF000FFC000003FF001FFC000003FF803FFC000003FFC03FF8000001FFC03F F8000001FFC07FF8000001FFE07FF8000001FFE07FF8000001FFE0FFF8000001FFF0FFF8 000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF0FFF800 0001FFF0FFF8000001FFF0FFF8000001FFF0FFF8000001FFF07FF8000001FFE07FF80000 01FFE07FF8000001FFE07FF8000001FFE03FFC000003FFC03FFC000003FFC01FFC000003 FF801FFE000007FF800FFE000007FF0007FF00000FFE0003FF80001FFC0001FFC0003FF8 0000FFE0007FF000007FFC03FFE000001FFFFFFF80000007FFFFFE00000000FFFFF00000 00000FFF000000342E7DAD3B>I<007FC00FFC000000FFFFC07FFFC00000FFFFC3FFFFF0 0000FFFFCFFFFFFC0000FFFFDFF01FFF0000FFFFFF8007FF800003FFFE0001FFC00001FF F80000FFE00001FFF00000FFF00001FFE000007FF80001FFE000003FFC0001FFE000003F FC0001FFE000003FFE0001FFE000001FFE0001FFE000001FFF0001FFE000001FFF0001FF E000001FFF0001FFE000000FFF0001FFE000000FFF8001FFE000000FFF8001FFE000000F FF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF8001FF E000000FFF8001FFE000000FFF8001FFE000000FFF8001FFE000000FFF0001FFE000001F FF0001FFE000001FFF0001FFE000001FFE0001FFE000001FFE0001FFE000003FFC0001FF E000003FFC0001FFE000007FF80001FFF000007FF80001FFF80000FFF00001FFFC0001FF E00001FFFE0003FFC00001FFFF0007FF800001FFFFE03FFE000001FFEFFFFFFC000001FF E3FFFFF0000001FFE0FFFF80000001FFE01FF800000001FFE0000000000001FFE0000000 000001FFE0000000000001FFE0000000000001FFE0000000000001FFE0000000000001FF E0000000000001FFE0000000000001FFE0000000000001FFE0000000000001FFE0000000 000001FFE0000000000001FFE0000000000001FFE0000000000001FFE00000000000FFFF FFC000000000FFFFFFC000000000FFFFFFC000000000FFFFFFC000000000FFFFFFC00000 000039427CAD42>I<00000FFC0003C0000000FFFF0007C0000007FFFFC00FC000001FFF FFF01FC000003FFE03F81FC00000FFF000FC3FC00001FFE0003E7FC00003FFC0001F7FC0 0007FF80001FFFC0000FFF00000FFFC0000FFF000007FFC0001FFE000007FFC0001FFE00 0003FFC0003FFC000003FFC0003FFC000001FFC0007FFC000001FFC0007FFC000001FFC0 007FF8000001FFC000FFF8000001FFC000FFF8000001FFC000FFF8000001FFC000FFF800 0001FFC000FFF8000001FFC000FFF8000001FFC000FFF8000001FFC000FFF8000001FFC0 00FFF8000001FFC000FFF8000001FFC0007FF8000001FFC0007FFC000001FFC0007FFC00 0001FFC0003FFC000001FFC0003FFC000001FFC0003FFE000003FFC0001FFE000003FFC0 001FFE000007FFC0000FFF00000FFFC00007FF80001FFFC00003FF80003FFFC00001FFC0 007FFFC00000FFF000FFFFC000007FFC07FBFFC000001FFFFFE3FFC0000007FFFFC3FFC0 000001FFFF03FFC00000001FF803FFC0000000000003FFC0000000000003FFC000000000 0003FFC0000000000003FFC0000000000003FFC0000000000003FFC0000000000003FFC0 000000000003FFC0000000000003FFC0000000000003FFC0000000000003FFC000000000 0003FFC0000000000003FFC0000000000003FFC0000000000003FFC00000000001FFFFFF 8000000001FFFFFF8000000001FFFFFF8000000001FFFFFF8000000001FFFFFF8039427C AD3F>I<00FF803F8000FFFF80FFF000FFFF83FFFC00FFFF87FFFE00FFFF8FC3FF00FFFF 8F07FF0003FF9E0FFF8001FFBC0FFF8001FFB80FFF8001FFF80FFF8001FFF00FFF8001FF F007FF0001FFF007FF0001FFE003FE0001FFE000F80001FFE000000001FFE000000001FF C000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FF C000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FF C000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FF C000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000000FFFF FFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000FFFFFFE00000292E7CAD31>I<00 0FFF00E0007FFFF3E001FFFFFFE007FFFFFFE00FF800FFE01FC0001FE03F80000FE03F00 0007E07F000003E07F000003E0FF000003E0FF000003E0FF800003E0FFC0000000FFF000 0000FFFE000000FFFFF800007FFFFFC0007FFFFFF0003FFFFFFC001FFFFFFF000FFFFFFF 8007FFFFFFC003FFFFFFE000FFFFFFF0003FFFFFF00003FFFFF800001FFFF8000000FFFC 0000001FFC7800000FFCF8000007FCF8000003FCFC000003FCFC000003FCFE000003F8FE 000003F8FF000003F8FF800007F0FFC0000FF0FFF0001FE0FFFC00FFC0FFFFFFFF80FC7F FFFE00F81FFFF800E003FF8000262E7CAD2F>I<0001F000000001F000000001F0000000 01F000000001F000000001F000000003F000000003F000000003F000000007F000000007 F000000007F00000000FF00000000FF00000001FF00000003FF00000003FF00000007FF0 000001FFF0000003FFF000000FFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFFC0FFFFFFFF C000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF00000 00FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000 FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FFF0000000FF F0000000FFF0000000FFF001F000FFF001F000FFF001F000FFF001F000FFF001F000FFF0 01F000FFF001F000FFF001F000FFF001F0007FF001E0007FF803E0003FF803E0003FFC07 C0001FFE0F80000FFFFF800007FFFE000001FFFC0000001FF00024427EC12E>I<007FE0 00003FF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0007FFFF000FFFFE0007FFFF0 00FFFFE0007FFFF00003FFE00001FFF00001FFE00000FFF00001FFE00000FFF00001FFE0 0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0 0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE0 0000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF00001FFE00000FFF0 0001FFE00000FFF00001FFE00001FFF00001FFE00001FFF00001FFE00001FFF00001FFE0 0003FFF00000FFE00007FFF00000FFE0000F7FF000007FE0001F7FF000007FF0003E7FF8 00003FFC00FC7FFFE0001FFFFFF87FFFE00007FFFFE07FFFE00001FFFF807FFFE000003F FE007FFFE03B2E7CAD42>III<7FFFFF801FFFFF007FFFFF801FFFFF007FFFFF80 1FFFFF007FFFFF801FFFFF007FFFFF801FFFFF00007FF80001FF0000007FFC0001FC0000 003FFE0003F80000001FFF0007F00000000FFF0007E000000007FF800FC000000003FFC0 1F8000000003FFE03F8000000001FFF07F0000000000FFF8FE00000000007FF9FC000000 00003FFFF800000000003FFFF000000000001FFFE000000000000FFFC0000000000007FF C0000000000003FFC0000000000001FFE0000000000001FFF0000000000001FFF8000000 000003FFFC000000000003FFFE000000000007FFFE00000000000FEFFF00000000001FCF FF80000000003F87FFC0000000007F03FFE000000000FE01FFE000000001FC00FFF00000 0001F8007FF800000003F0007FFC00000007F0003FFE0000000FE0001FFF0000001FC000 0FFF0000003F800007FF800000FF800007FFC000FFFFF8003FFFFFC0FFFFF8003FFFFFC0 FFFFF8003FFFFFC0FFFFF8003FFFFFC0FFFFF8003FFFFFC03A2E7EAD3F>I<7FFFFFC000 FFFF807FFFFFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF807FFFFFC000FFFF8000 FFF000000FE00000FFF800000FC00000FFF800000FC000007FFC00000F8000007FFC0000 1F8000003FFC00001F0000003FFE00003F0000001FFE00003E0000001FFF00007E000000 0FFF00007C0000000FFF8000FC00000007FF8000F800000007FFC001F800000003FFC001 F000000003FFE003F000000003FFE003F000000001FFF003E000000001FFF007E0000000 00FFF007C000000000FFF80FC0000000007FF80F80000000007FFC1F80000000003FFC1F 00000000003FFE3F00000000001FFE3E00000000001FFF7E00000000000FFF7C00000000 000FFFFC00000000000FFFFC000000000007FFF8000000000007FFF8000000000003FFF0 000000000003FFF0000000000001FFE0000000000001FFE0000000000000FFC000000000 0000FFC00000000000007F800000000000007F800000000000003F000000000000003F00 0000000000003F000000000000003E000000000000007E000000000000007C0000000000 0000FC000000001F8000F8000000003FC001F8000000007FE001F000000000FFF003F000 000000FFF003E000000000FFF007E000000000FFF00FC000000000FFF01F8000000000FF F03F80000000007FE07F00000000007F43FE00000000003FFFF800000000001FFFF00000 00000007FFC0000000000001FE00000000000039427EAD3F>I123 D E /Fv 47 122 df<0000C018000000C018000000C01800000180300000018030000001 803000000180300000030060000003006000000300600000030060000003006000000600 C000000600C000000600C000000600C000000C018000FFFFFFFFC0FFFFFFFFC000180300 000018030000001803000000180300000030060000003006000000300600000030060000 FFFFFFFFC0FFFFFFFFC000600C000000C018000000C018000000C018000000C018000001 803000000180300000018030000001803000000300600000030060000003006000000300 6000000600C000000600C000000600C00000222D7DA229>35 D<70F8FCFC740404040408 0810102040060F7C840E>44 DI<70F8F8F87005057C840E>I<01 F000071C000C06001803003803803803807001C07001C07001C07001C0F001E0F001E0F0 01E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E070 01C07001C07001C07803C03803803803801C07000C0600071C0001F00013227EA018>48 D<008003800F80F380038003800380038003800380038003800380038003800380038003 80038003800380038003800380038003800380038003800380038007C0FFFE0F217CA018 >I<03F0000C1C001007002007804003C04003C08003E0F003E0F801E0F801E0F801E020 03E00003E00003C00003C0000780000700000E00001C0000180000300000600000C00001 80000100000200200400200800201800603000403FFFC07FFFC0FFFFC013217EA018>I< 03F8000C1E001007002007804007C07807C07803C07807C03807C0000780000780000700 000F00000E0000380003F000001C00000F000007800007800003C00003C00003E02003E0 7003E0F803E0F803E0F003C04003C0400780200780100F000C1C0003F00013227EA018> I<000200000600000E00000E00001E00001E00002E00004E00004E00008E00008E00010E 00020E00020E00040E00040E00080E00100E00100E00200E00200E00400E00800E00FFFF F8000E00000E00000E00000E00000E00000E00000E00001F0001FFF015217FA018>I<10 00801E07001FFF001FFE001FF80013E00010000010000010000010000010000010000010 F800130E001407001803801003800001C00001C00001E00001E00001E00001E07001E0F0 01E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA018>I< 007E0001C1000300800601C00E03C01C03C0180180380000380000780000700000700000 F0F800F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F001E0 7001E07001E07001E03801C03801C01803801C03000C0600070C0001F00013227EA018> I<01F800060E000803001001802001802000C06000C06000C06000C07000C07801803E01 003F02001FC4000FF80003F80003FC00067F00083F80100F803007C06001C06000E0C000 E0C00060C00060C00060C000606000406000C03000801803000E0E0003F00013227EA018 >56 D<01F000060C000C0600180700380380700380700380F001C0F001C0F001C0F001E0 F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003E1E00001C0 0001C00001C0000380000380300300780700780600700C002018001030000FC00013227E A018>I<0001800000018000000180000003C0000003C0000003C0000005E0000005E000 000DF0000008F0000008F0000010F800001078000010780000203C0000203C0000203C00 00401E0000401E0000401E0000800F0000800F0000FFFF000100078001000780030007C0 020003C0020003C0040003E0040001E0040001E00C0000F00C0000F03E0001F8FF800FFF 20237EA225>65 D<0007E0100038183000E0063001C00170038000F0070000F00E000070 1E0000701C0000303C0000303C0000307C0000107800001078000010F8000000F8000000 F8000000F8000000F8000000F8000000F8000000F800000078000000780000107C000010 3C0000103C0000101C0000201E0000200E000040070000400380008001C0010000E00200 00381C000007E0001C247DA223>67 D69 DI73 D77 DI80 D82 D<03F0200C0C601802603001E07000E06000 60E00060E00060E00020E00020E00020F00000F000007800007F00003FF0001FFE000FFF 0003FF80003FC00007E00001E00000F00000F0000070800070800070800070800070C000 60C00060E000C0F000C0C80180C6070081FC0014247DA21B>I<7FFFFFF8780780786007 8018400780084007800840078008C007800C800780048007800480078004800780040007 800000078000000780000007800000078000000780000007800000078000000780000007 800000078000000780000007800000078000000780000007800000078000000780000007 80000007800000078000000FC00003FFFF001E227EA123>I<0FE0001838003C0C003C0E 0018070000070000070000070000FF0007C7001E07003C0700780700700700F00708F007 08F00708F00F087817083C23900FC1E015157E9418>97 D<0E0000FE00001E00000E0000 0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F000E61C0 0E80600F00300E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E 0E001C0E003C0E00380F00700C80600C41C0083F0017237FA21B>I<01FE000703000C07 801C0780380300780000700000F00000F00000F00000F00000F00000F00000F000007000 007800403800401C00800C010007060001F80012157E9416>I<0000E0000FE00001E000 00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E001F8E007 04E00C02E01C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F0 00E07000E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<01FC00070700 0C03801C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000F00000 7000007800203800201C00400E008007030000FC0013157F9416>I<003C00C6018F038F 030F070007000700070007000700070007000700FFF80700070007000700070007000700 0700070007000700070007000700070007000700070007807FF8102380A20F>I<000070 01F198071E180E0E181C07001C07003C07803C07803C07803C07801C07001C07000E0E00 0F1C0019F0001000001000001800001800001FFE000FFFC00FFFE03800F0600030400018 C00018C00018C000186000306000303800E00E038003FE0015217F9518>I<0E0000FE00 001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00 000E1F800E60C00E80E00F00700F00700E00700E00700E00700E00700E00700E00700E00 700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18237FA21B>I<1C 001E003E001E001C00000000000000000000000000000000000E00FE001E000E000E000E 000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A227FA10E >I<01C003E003E003E001C00000000000000000000000000000000001E00FE001E000E0 00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E0 00E000E000E000E060E0F0C0F18061803E000B2C82A10F>I<0E0000FE00001E00000E00 000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E03FC0E01 F00E01C00E01800E02000E04000E08000E10000E38000EF8000F1C000E1E000E0E000E07 000E07800E03C00E01C00E01E00E00F00E00F8FFE3FE17237FA21A>I<0E00FE001E000E 000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B237FA20E>I<0E1F C07F00FE60E183801E807201C00F003C00E00F003C00E00E003800E00E003800E00E0038 00E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800 E00E003800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFE27157F942A >I<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00700E00700E00700E 00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18157F941B>I< 01FC000707000C01801800C03800E0700070700070F00078F00078F00078F00078F00078 F00078F000787000707800F03800E01C01C00E038007070001FC0015157F9418>I<0E1F 00FE61C00E80600F00700E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E00 1E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F000E00000E00000E00000E00 000E00000E00000E00000E00000E0000FFE000171F7F941B>I<0E3CFE461E8F0F0F0F06 0F000E000E000E000E000E000E000E000E000E000E000E000E000E000F00FFF010157F94 13>114 D<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C800C80 0CC00CC008E018D0308FC00E157E9413>I<02000200020002000600060006000E001E00 3E00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E040E04 0E040708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E00700E0070 0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F0060170 03827800FC7F18157F941B>III121 D E /Fw 20 118 df45 D68 D73 D77 D80 D<007F802001FFE02007C078600F001C601E0006E03C0003E0380001E0780000E0 700000E070000060F0000060F0000060F0000020F0000020F0000020F8000020F8000000 7C0000007E0000003F0000003FC000001FF800000FFF800007FFF80003FFFC0000FFFF00 000FFF800000FFC000001FE0000007E0000003F0000001F0000000F0000000F8000000F8 8000007880000078800000788000007880000078C0000078C0000070E00000F0E00000E0 F00000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D337CB125>83 D<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E001E 0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F001E 003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478003E 047C005E043E008F080F0307F003FC03E01E1F7D9E21>97 D<003F8000E0600380180700 040F00041E001E1C003E3C003E7C003E7C0008780000F80000F80000F80000F80000F800 00F80000F80000F80000F800007800007C00007C00003C00011E00011E00020F00020700 0403801800E060003F80181F7D9E1D>99 D<000001E000003FE000003FE0000003E00000 01E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E00000 01E0000001E0000001E0000001E0000001E0000001E0001F81E000F061E001C019E00780 05E00F0003E00E0003E01E0001E03C0001E03C0001E07C0001E0780001E0F80001E0F800 01E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0780001E07800 01E03C0001E03C0001E01C0001E01E0003E00E0005E0070009E0038011F000E061FF003F 81FF20327DB125>I<003F800000E0E0000380380007003C000E001E001E001E001C000F 003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F8000000F80000 00F8000000F8000000F8000000F8000000780000007C0000003C0000003C0000801E0000 800E0001000F0002000780020001C00C0000F03000001FC000191F7E9E1D>I<0007E000 1C1000383800707C00E07C01E07C01C03803C00003C00003C00003C00003C00003C00003 C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C00003C00003C00003C00003 C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003 C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007E0007FFF007F FF0016327FB114>I<000000F0007F030801C1C41C0380E81C070070080F0078001E003C 001E003C003E003E003E003E003E003E003E003E003E003E003E003E001E003C001E003C 000F007800070070000780E00009C1C000087F0000180000001800000018000000180000 00180000001C0000000E0000000FFFF80007FFFF0003FFFF800E000FC0180001E0300000 F070000070E0000038E0000038E0000038E0000038E00000387000007070000070380000 E01C0001C00700070001C01C00003FE0001E2F7E9F21>I<07000F801F801F800F800700 000000000000000000000000000000000000000000000780FF80FF800F80078007800780 078007800780078007800780078007800780078007800780078007800780078007800780 0780078007800FC0FFF8FFF80D307EAF12>105 D<0780FE001FC000FF83078060F000FF 8C03C18078000F9001E2003C0007A001E4003C0007A000F4001E0007C000F8001E0007C0 00F8001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000 F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0 001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F000 1E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E 000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>109 D<0780FE0000FF83078000FF8C03C0000F9001E00007A001E00007A000F00007C000F000 07C000F000078000F000078000F000078000F000078000F000078000F000078000F00007 8000F000078000F000078000F000078000F000078000F000078000F000078000F0000780 00F000078000F000078000F000078000F000078000F000078000F000078000F0000FC001 F800FFFC1FFF80FFFC1FFF80211F7E9E25>I<001FC00000F0780001C01C00070007000F 0007801E0003C01C0001C03C0001E03C0001E0780000F0780000F0780000F0F80000F8F8 0000F8F80000F8F80000F8F80000F8F80000F8F80000F8F80000F8780000F07C0001F03C 0001E03C0001E01E0003C01E0003C00F00078007800F0001C01C0000F07800001FC0001D 1F7E9E21>I<0783E0FF8C18FF907C0F907C07A07C07C03807C00007C00007C000078000 078000078000078000078000078000078000078000078000078000078000078000078000 0780000780000780000780000780000780000FC000FFFE00FFFE00161F7E9E19>114 D<01FC100E03301800F0300070600030E00030E00010E00010E00010F00010F800007E00 003FF0001FFF000FFFC003FFE0003FF00001F80000F880003C80003C80001CC0001CC000 1CE0001CE00018F00038F00030CC0060C301C080FE00161F7E9E1A>I<00400000400000 400000400000400000C00000C00000C00001C00001C00003C00007C0000FC0001FFFE0FF FFE003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003 C00003C00003C00003C00003C00003C01003C01003C01003C01003C01003C01003C01003 C01001C02001E02000E0400078C0001F00142C7FAB19>I<078000F000FF801FF000FF80 1FF0000F8001F000078000F000078000F000078000F000078000F000078000F000078000 F000078000F000078000F000078000F000078000F000078000F000078000F000078000F0 00078000F000078000F000078000F000078000F000078000F000078000F000078001F000 078001F000078001F000038002F00003C004F00001C008F800007030FF80001FC0FF8021 1F7E9E25>I E /Fx 5 85 df<00000000600000000000700000000000F00000000001F0 0000000001F00000000003F00000000003F00000000007F00000000007F0000000000FF0 000000000FF0000000001BF00000000033F00000000033F00000000063F00000000063F8 00000000C1F800000000C1F80000000181F80000000381F80000000301F80000000601F8 0000000601F80000000C01F80000000C01F80000001801F80000001801F80000003001F8 0000006001F80000006001F8000000C001F8000000C001FC000001FFFFFC000001FFFFFC 0000030000FC0000070000FC0000060000FC00000C0000FC00000C0000FC0000180000FC 0000180000FC0000300000FC0000700000FC0000600000FC0000E00000FC0001E00000FC 0003E00000FE000FF00001FE00FFFE003FFFF0FFFE003FFFF02C327CB135>65 D<000FFFFFFF0000000FFFFFFFC00000003F8007F00000003F8001F80000003F00007C00 00003F00007E0000007F00003E0000007F00001F0000007E00001F0000007E00001F8000 00FE00000F800000FE00000F800000FC00000FC00000FC00000FC00001FC00000FC00001 FC00000FC00001F800000FC00001F800000FC00003F800000FC00003F800001FC00003F0 00001FC00003F000001FC00007F000001FC00007F000001F800007E000003F800007E000 003F80000FE000003F80000FE000003F00000FC000007F00000FC000007F00001FC00000 7E00001FC00000FE00001F800000FC00001F800000FC00003F800001F800003F800001F0 00003F000003F000003F000007E000007F000007C000007F00000FC000007E00001F8000 007E00003F000000FE00007E000000FE0000F8000000FC0001F0000000FC0007E0000001 FC003F800000FFFFFFFE000000FFFFFFF000000032317CB036>68 D<000FFFFFFFFE000FFFFFFFFE00003F8000FE00003F80003E00003F00001E00003F0000 1E00007F00000C00007F00000C00007E00000C00007E00000C0000FE00000C0000FE0000 0C0000FC00000C0000FC00000C0001FC00001C0001FC00C0180001F800C0000001F800C0 000003F801C0000003F801C0000003F00180000003F00380000007F00F80000007FFFF80 000007FFFF00000007E00F0000000FE0070000000FE0070000000FC0060000000FC00600 00001FC00E0000001FC00E0000001F800C0000001F80000000003F80000000003F800000 00003F00000000003F00000000007F00000000007F00000000007E00000000007E000000 0000FE0000000000FE0000000000FC0000000000FC0000000001FC00000000FFFFFC0000 00FFFFFC0000002F317CB02F>70 D<000FFFFFF800000FFFFFFF0000003F801FC000003F 8007E000003F0003F000003F0001F800007F0000FC00007F0000FC00007E0000FC00007E 0000FC0000FE0000FC0000FE0001FC0000FC0001FC0000FC0001FC0001FC0001F80001FC 0003F80001F80003F00001F80007E00003F80007E00003F8000F800003F0003F000003F0 007E000007F003F8000007FFFFE0000007FFFF80000007E007C000000FE003F000000FE0 01F000000FC000F800000FC000F800001FC000FC00001FC000FC00001F8000FC00001F80 00FC00003F8001FC00003F8001FC00003F0001FC00003F0001FC00007F0003F800007F00 03F800007E0003F800007E0003F80600FE0003F80E00FE0003F80C00FC0003F80C00FC00 03F81C01FC0001F838FFFFF000FC70FFFFF0007FE0000000001F802F327CB034>82 D<07FFFFFFFFF807FFFFFFFFF80FE007F001F80F8007F000F80E0007E000701E0007E000 701C000FE0007018000FE0007038000FC0007038000FC0007030001FC0006070001FC000 6060001F80006060001F80006060003F8000E0E0003F8000C000003F00000000003F0000 0000007F00000000007F00000000007E00000000007E0000000000FE0000000000FE0000 000000FC0000000000FC0000000001FC0000000001FC0000000001F80000000001F80000 000003F80000000003F80000000003F00000000003F00000000007F00000000007F00000 000007E00000000007E0000000000FE0000000000FE0000000000FC0000000000FC00000 00001FC0000000001FC0000000001F80000000003F80000000007FC00000007FFFFFC000 007FFFFFC000002D3174B033>84 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 0 1 0 0 bop 795 908 a Fx(D)26 b(R)g(A)f(F)h(T)225 999 y Fw(Do)r(cumen)n(t) 20 b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n(terface)621 1194 y Fv(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)824 1320 y(April)g(24,)i(1993)87 1378 y(This)f(w)o(ork)g(w)o(as)h(supp)q (orted)g(b)o(y)f(ARP)l(A)g(and)g(NSF)g(under)g(con)o(tract)g(n)o(um)o (b)q(er)f(###,)g(b)o(y)g(the)192 1436 y(National)h(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 1494 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 1552 y(through)f(Esprit)f(pro)s(ject)g(P6643.)p eop %%Page: 1 2 1 1 bop 75 378 a Fu(Con)m(ten)m(ts)75 648 y Ft(Ac)o(kno)o(wledgmen)o (ts)1362 b(1)75 752 y(1)42 b(In)o(tro)q(duction)19 b(to)f(MPI)1230 b(2)143 810 y Fs(1.1)46 b(Ov)o(erview)16 b(and)f(Goals)38 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(2)143 868 y(1.2)46 b(Who)15 b(Should)h(Use)f(This)h(Standard?)32 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(3)143 926 y(1.3)46 b(What)14 b(Platforms)h(Are)g(T)l(argets)f(F)l(or)h(Implemen)o(tation?) 38 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(3)143 983 y(1.4)46 b(What)14 b(Is)i(Included)h(In)f(The)g (Standard?)42 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(3)143 1041 y(1.5)46 b(What)14 b(Is)i(Not)e(Included)k(In)e(The)f(Standard?)23 b Fr(:)g(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)91 b Fs(4)75 1145 y Ft(2)42 b(P)o(oin)o(t)17 b(to)h(P)o(oin)o(t)g(Comm)o(unication)1001 b(5)143 1203 y Fs(2.1)46 b(In)o(tro)q(duction)15 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(5)143 1260 y(2.2)46 b(Data)14 b(T)o(yp)q(es)30 b Fr(:)22 b(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(5)248 1318 y(2.2.1)50 b(Handle)14 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(5)248 1376 y(2.2.2)50 b(Arra)o(y)14 b(of)h(handles)35 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(6)248 1434 y(2.2.3)50 b(State)14 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(7)248 1491 y(2.2.4)50 b(Named)15 b(constan)o(ts)23 b Fr(:)f(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)91 b Fs(7)248 1549 y(2.2.5)50 b(Choice)20 b Fr(:)i(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)91 b Fs(7)143 1607 y(2.3)46 b(Pro)q(cesses)40 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)91 b Fs(7)248 1665 y(2.3.1)50 b(Error)14 b(Handling)29 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(8)143 1722 y(2.4)46 b(Messages)f Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(9)248 1780 y(2.4.1)50 b(Data)19 b Fr(:)j(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(9)248 1838 y(2.4.2)50 b(En)o(v)o(elop)q(e)45 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fs(9)143 1895 y(2.5)46 b(Comm)o(unication)15 b(Bu\013ers)41 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(10)248 1953 y(2.5.1)50 b(T)o(yp)q(e)16 b(Matc)o(hing)f(and)g(Data)f(Con)o(v)o (ersion)g Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)69 b Fs(15)143 2011 y(2.6)46 b(Receiv)o(e)17 b(Criteria)d Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)69 b Fs(18)143 2069 y(2.7)46 b(Comm)o(unication)15 b(Mo)q(de)35 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(18)143 2126 y(2.8)46 b(Comm)o(unication)15 b(Ob)s(jects)28 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(19)248 2184 y(2.8.1)50 b(Comm)o(unication)16 b(Ob)s(ject)f (Creation)31 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(20)248 2242 y(2.8.2)50 b(Comm)o(unication)16 b(Start)39 b Fr(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)69 b Fs(21)248 2300 y(2.8.3)50 b(Comm)o(unication)16 b(Completion)i Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(22)248 2357 y(2.8.4)50 b(Multiple)17 b(Completions)41 b Fr(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(23)143 2415 y(2.9)46 b(Blo)q(c)o(king)16 b(Comm)o(unication)44 b Fr(:)23 b(:)f(:)g(:)h(:)f (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) h(:)f(:)g(:)h(:)f(:)69 b Fs(25)143 2473 y(2.10)23 b(Non)o(blo)q(c)o (king)16 b(Comm)o(unication)41 b Fr(:)22 b(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) 69 b Fs(26)143 2530 y(2.11)23 b(Con)o(tiguous)15 b(Blo)q(c)o(k)h (Sending)g(Op)q(erations)38 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(27)143 2588 y(2.12)23 b(Prob)q(e)15 b(and)g(Cancel)g Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(28)143 2646 y(2.13)23 b(Correctness)32 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) 69 b Fs(31)248 2704 y(2.13.1)27 b(Order)37 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(31)969 2828 y(i)p eop %%Page: 2 3 2 2 bop 75 -100 a Fs(ii)1518 b Fq(CONTENTS)248 45 y Fs(2.13.2)27 b(Progress)14 b(and)i(F)l(airness)39 b Fr(:)22 b(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)69 b Fs(31)143 102 y(2.14)23 b(Missing)42 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)69 b Fs(33)75 206 y Ft(3)42 b(Collectiv)o(e)19 b(Comm)o(unication)1077 b(34)143 263 y Fs(3.1)46 b(In)o(tro)q(duction) 15 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)69 b Fs(34)143 320 y(3.2)46 b(Group)15 b(F)l(unctions)35 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(35)143 377 y(3.3)46 b(Comm)o(unication)15 b(F)l(unctions)24 b Fr(:)f(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(36)143 435 y(3.4)46 b(Sync)o(hronization)16 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(36)143 492 y(3.5)46 b(Data)14 b(mo)o(v)o(e)g(functions)29 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(36)143 549 y(3.6)46 b(Global)16 b(Compute)e(Op)q(erations)20 b Fr(:)i(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(43)143 606 y(3.7)46 b(Correctness)32 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(48)75 710 y Ft(4)42 b(Pro)q(cess)17 b(T)l(op)q(ologies)1250 b(50)143 767 y Fs(4.1)46 b(In)o(tro)q(duction)15 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) 69 b Fs(50)143 824 y(4.2)46 b(Virtual)16 b(T)l(op)q(ologies)37 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(51)143 882 y(4.3)46 b(Em)o(b)q(edding)16 b(in)g(MPI)22 b Fr(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(51)143 939 y(4.4)46 b(Ov)o(erview)16 b(of)e(the)i(prop)q(osed)f (MPI)g(functions)20 b Fr(:)j(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(52)143 996 y(4.5)46 b(A)15 b(simple)i(example)f Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(53)75 1099 y Ft(5)42 b(Language)19 b(Binding)1268 b(55)75 1203 y(6)42 b(F)l(ormal)17 b(Seman)o(tics)1275 b(56)75 1306 y(7)42 b(En)o(vironmen)o(tal)18 b(Inquiry)1156 b(57)75 1409 y(8)42 b(Pro\014ling)1484 b(58)143 1466 y Fs(8.1)46 b(Requiremen)o(ts)28 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(58)143 1524 y(8.2)46 b(Discussion)21 b Fr(:)i(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(58)143 1581 y(8.3)46 b(Logic)16 b(of)e(the)i(design)29 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(59)143 1638 y(8.4)46 b(Examples)36 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(59)248 1695 y(8.4.1)50 b(Pro\014ler)16 b(implemen)o(tation)35 b Fr(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(59)248 1753 y(8.4.2)50 b(MPI)15 b(library)h(implemen)o(tation)h Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)69 b Fs(60)143 1810 y(8.5)46 b(Outstanding)16 b(issues)30 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)69 b Fs(61)75 1913 y Ft(9)42 b(Con)o(texts)17 b({)g(Prop)q(osal)h (I)1177 b(62)143 1970 y Fs(9.1)46 b(Con)o(texts)14 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:) f(:)g(:)h(:)f(:)69 b Fs(62)248 2028 y(9.1.1)50 b(Lo)q(osely)16 b(sync)o(hronous)f(library)h(call)h(in)o(terface)36 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(62)248 2085 y(9.1.2)50 b(F)l(unctional)17 b(decomp)q(osition)f (and)f(mo)q(dular)h(co)q(de)g(dev)o(elopmen)o(t)31 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)69 b Fs(62)248 2142 y(9.1.3)50 b(Collectiv)o(e)17 b(comm)o(unication)31 b Fr(:)22 b(:)h(:)f(:)g(:)h(:) f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)69 b Fs(63)248 2199 y(9.1.4)50 b(Ligh)o(t)o(w)o(eigh)o(t)15 b(gang)g(sc)o(heduling)h Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(63)143 2257 y(9.2)46 b(Con)o(text)14 b(Op)q(erations)47 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(64)248 2314 y(9.2.1)50 b(Usage)15 b(note)40 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(65)75 2417 y Ft(10)16 b(Con)o(texts)h({)g(Prop)q(osal)h(VI)q(I) 1116 b(67)143 2475 y Fs(10.1)23 b(In)o(tro)q(duction)15 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)69 b Fs(67)143 2532 y(10.2)23 b(Pro)q(cesses)40 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)69 b Fs(68)143 2589 y(10.3)23 b(Pro)q(cess)15 b(Groups)24 b Fr(:)f(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)69 b Fs(68)143 2646 y(10.4)23 b(Comm)o(unication)15 b(Con)o(texts)38 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(70)143 2704 y(10.5)23 b(Descriptor)15 b(F)l(acilities)44 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(71)p eop %%Page: 3 4 3 3 bop 75 -100 a Fq(CONTENTS)1504 b Fs(iii)143 45 y(10.6)23 b(P)o(oin)o(t-to-P)o(oin)o(t)14 b(Comm)o(unication)38 b Fr(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(72)143 102 y(10.7)23 b(Collectiv)o(e)16 b(Comm)o(unication)22 b Fr(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(74)143 158 y(10.8)23 b(Conclusion)47 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(74)75 260 y Ft(11)16 b(Con)o(texts)h({)g(Prop)q(osal)h(I)q(I)q(I)1135 b(76)143 316 y Fs(11.1)23 b(In)o(tro)q(duction)15 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) 69 b Fs(76)143 373 y(11.2)23 b(Pro)q(cesses)40 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)69 b Fs(76)143 429 y(11.3)23 b(Pro)q(cess)15 b(Groups)24 b Fr(:)f(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(77)143 486 y(11.4)23 b(Comm)o(unication)15 b(Con)o(texts)38 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(79)143 542 y(11.5)23 b(Descriptor)15 b(F)l(acilities)44 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(80)143 599 y(11.6)23 b(P)o(oin)o(t-to-P)o(oin)o(t)14 b(Comm)o(unication)38 b Fr(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(81)143 655 y(11.7)23 b(Collectiv)o(e)16 b(Comm)o(unication)22 b Fr(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(82)143 712 y(11.8)23 b(Conclusion)47 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:) h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(83)75 813 y Ft(12)16 b(Summary)g(of)i(con)o(text)f(sub)q(committee)i(prop)q (osals)645 b(84)143 870 y Fs(12.1)23 b(Common)14 b(F)l(eatures)42 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(84)248 926 y(12.1.1)27 b(Pro)q(cess)15 b(group)g(managemen)o(t)32 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(84)248 983 y(12.1.2)27 b(Pro)o(vision)16 b(for)e(p)q(oin)o(t-to-p)q(oin)o(t)i(comm)o (unication)g(within)h(group)42 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)69 b Fs(84)248 1039 y(12.1.3)27 b(Pro)o(vision)16 b(for)e(collectiv)o(e)j (comm)o(unication)f(within)h(group)32 b Fr(:)22 b(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)69 b Fs(84)248 1096 y(12.1.4)27 b(Opacit)o(y)16 b(of)f(group)g(and)g(pro)q(cess)g(description)45 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(85)248 1152 y(12.1.5)27 b(Fields)17 b(of)d(p)q(oin)o(t-to-p)q(oin) o(t)i(comm)o(unication)46 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(85)143 1209 y(12.2)23 b(Separable)16 b(F)l(eatures)29 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:) f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(85)248 1265 y(12.2.1)27 b(T)l(ag)15 b(usage)g(in)h(p)q(oin)o(t-to-p)q(oin)o(t)g(comm)o (unication)34 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)69 b Fs(85)248 1322 y(12.2.2)27 b(T)l(ag)15 b(usage)g(in)h (collectiv)o(e)h(comm)o(unication)24 b Fr(:)f(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(85)248 1378 y(12.2.3)27 b(Con)o(text)14 b(or)h(Group)g(cac)o(he)27 b Fr(:)c(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(85)248 1434 y(12.2.4)27 b(Opaque)16 b(ob)s(ject)f(\(descriptor\))g(transmission)23 b Fr(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(85)248 1491 y(12.2.5)27 b(Con)o(text)14 b(registry)40 b Fr(:)22 b(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(85)143 1547 y(12.3)23 b(Concept)15 b(Di\013erences)45 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(86)248 1604 y(12.3.1)27 b(Concept)15 b(of)g(CONTEXT)g(and)h(GR)o (OUP)i Fr(:)k(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)69 b Fs(86)248 1660 y(12.3.2)27 b(Scop)q(e)16 b(of)f(p)q(oin)o(t-to-p)q(oin)o(t)h(comm)o(unication)d Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)69 b Fs(86)248 1717 y(12.3.3)27 b(T)l(ransmission)16 b(of)f(group)g(or)f(con)o(text)25 b Fr(:)e(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(86)143 1773 y(12.4)23 b(Detail)15 b(di\013erences)29 b Fr(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(86)248 1830 y(12.4.1)27 b(Manifestation)15 b(of)g(con)o(text)k Fr(:)k(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g (:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(86)248 1886 y(12.4.2)27 b(Deletion)16 b(of)f(group)j Fr(:)k(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:) f(:)69 b Fs(86)248 1943 y(12.4.3)27 b(Duplication)17 b(of)e(group)23 b Fr(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(86)248 1999 y(12.4.4)27 b(Global)16 b(shared)f(v)m(ariables)43 b Fr(:)23 b(:)f(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(87)248 2055 y(12.4.5)27 b(Pro)q(cess)15 b(iden)o(ti\014er)i(addressed)f(comm)o (unication)31 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)69 b Fs(87)248 2112 y(12.4.6)27 b(In)o(ter-group)15 b(comm)o(unication)36 b Fr(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fs(87)75 2214 y Ft(A)28 b(Pro)q(cess)17 b(T)l(op)q(ology)h(Routines) 1061 b(90)p eop %%Page: 0 5 0 4 bop 875 722 a Ft(Abstract)75 828 y Fs(The)18 b(Message)f(P)o (assing)h(In)o(terface)f(F)l(orum)h(\(MPIF\),)e(with)i(participation)h (from)e(o)o(v)o(er)g(40)g(organiza-)75 885 y(tions,)f(has)h(b)q(een)g (meeting)g(since)h(Jan)o(uary)e(1993)f(to)h(discuss)h(and)g(de\014ne)g (a)f(set)h(of)f(library)h(in)o(terface)75 941 y(standards)f(for)h (message)f(passing.)25 b(MPIF)16 b(is)i(not)e(sanctioned)i(or)e(supp)q (orted)h(b)o(y)g(an)o(y)g(o\016cial)g(stan-)75 998 y(dards)e (organization.)166 1054 y(This)22 b(is)f(a)g(draft)f(of)h(what)g(will)h (b)q(ecome)g(the)f(Final)h(Rep)q(ort,)h(V)l(ersion)f(1.0,)f(of)f(the)i (Message)75 1111 y(P)o(assing)c(In)o(terface)h(F)l(orum.)29 b(This)19 b(do)q(cumen)o(t)g(con)o(tains)g(all)g(the)g(tec)o(hnical)h (features)e(prop)q(osed)h(for)75 1167 y(the)c(in)o(terface.)20 b(This)c(cop)o(y)f(of)g(the)g(draft)g(w)o(as)f(pro)q(cessed)i(b)o(y)f (L)1174 1161 y Fp(a)1195 1167 y Fs(T)1220 1181 y(E)1246 1167 y(X)g(on)g(April)i(24,)d(1993.)166 1224 y(MPIF)k(in)o(vites)h (commen)o(ts)f(on)h(the)f(tec)o(hnical)i(con)o(ten)o(t)e(of)g(MPI,)g (as)g(w)o(ell)i(as)e(on)g(the)h(editorial)75 1280 y(presen)o(tation)14 b(in)g(the)g(do)q(cumen)o(t.)19 b(Commen)o(ts)13 b(receiv)o(ed)i(b)q (efore)e(July)i(1,)e(1993)g(will)i(b)q(e)f(considered)h(in)75 1336 y(pro)q(ducing)i(the)e(\014nal)h(draft)e(of)h(V)l(ersion)h(1.0)e (of)h(the)g(Message)g(P)o(assing)g(In)o(terface)g(Sp)q(eci\014cation.) 166 1393 y(The)i(goal)f(of)g(the)g(Message)g(P)o(assing)g(In)o (terface,)g(simply)i(stated,)e(is)g(to)g(dev)o(elop)h(a)g(widely)g (used)75 1449 y(standard)g(for)f(writing)i(message-passing)f(programs.) 24 b(As)17 b(suc)o(h)h(the)f(in)o(terface)g(should)h(establishing)75 1506 y(a)d(practical,)h(p)q(ortable,)f(e\016cien)o(t,)g(and)h (\015exible)h(standard)e(for)f(message)h(passing.)p eop %%Page: 1 6 1 5 bop 75 -100 a Fq(CONTENTS)1519 b Fs(1)75 75 y Fu(Ac)m(kno)m (wledgmen)m(ts)166 282 y Fs(The)19 b(tec)o(hnical)i(dev)o(elopmen)o(t)f (w)o(as)e(carried)i(out)f(b)o(y)g(subgroups,)h(whose)f(w)o(ork)g(w)o (as)f(review)o(ed)75 338 y(b)o(y)d(the)h(full)h(committee.)k(During)15 b(the)h(p)q(erio)q(d)h(of)e(dev)o(elopmen)o(t)h(of)f(the)h(Message)f(P) o(assing)g(In)o(terface)75 395 y(\(MPI\),)f(man)o(y)h(p)q(eople)i(serv) o(ed)e(in)h(p)q(ositions)g(of)f(resp)q(onsibilit)o(y:)143 501 y Fo(\017)23 b Fs(Jac)o(k)15 b(Dongarra,)e(Da)o(vid)i(W)l(alk)o (er,)g(Con)o(v)o(eners)g(and)g(Meeting)h(Chairs)143 595 y Fo(\017)23 b Fs(Ewing)15 b(Lusk,)h(Bob)f(Knigh)o(ten,)h(Min)o(utes) 143 689 y Fo(\017)23 b Fs(Marc)14 b(Snir,)i(William)h(Gropp,)d(Ewing)i (Lusk,)f(P)o(oin)o(t)g(to)g(P)o(oin)o(t)f(Comm)o(unications)143 782 y Fo(\017)23 b Fs(Al)16 b(Geist,)e(Marc)h(Snir,)h(Stev)o(e)f(Otto,) f(Collectiv)o(e)j(Comm)o(unications)143 876 y Fo(\017)23 b Fs(Rolf)15 b(Hemp)q(el,)i(Pro)q(cess)e(T)l(op)q(ologies)143 970 y Fo(\017)23 b Fs(Scott)14 b(Berryman,)h(Language)g(Binding)143 1064 y Fo(\017)23 b Fs(Stev)o(e)15 b(Zenith,)g(F)l(ormal)g(Seman)o (tics)143 1158 y Fo(\017)23 b Fs(William)17 b(Gropp,)d(En)o(vironmen)o (tal)i(Inquiry)143 1251 y Fo(\017)23 b Fs(James)15 b(Co)o(wnie,)g (Pro\014ling)143 1345 y Fo(\017)23 b Fs(T)l(on)o(y)16 b(Skjellum,)h(Lyndon)g(Clark)o(e,)f(Marc)g(Snir,)h(Ric)o(hard)g (Little\014eld,)i(Marc)d(Sears,)g(Comm)o(u-)189 1402 y(nication)g(Con)o(texts)143 1496 y Fo(\017)23 b Fs(Stev)o(e)15 b(Otto,)f(Editor.)166 1602 y(Do)h(w)o(e)f(w)o(an)o(t)h(an)g (organization/compan)o(y)f(list)i(here?)166 1658 y(The)22 b(follo)o(wing)h(list)f(includes)i(some)e(of)f(the)h(activ)o(e)g (participan)o(ts)h(in)f(the)g(MPI)g(pro)q(cess)g(not)75 1715 y(men)o(tioned)16 b(ab)q(o)o(v)o(e:)100 1758 y(Ed)f(Anderson)115 b(Jim)16 b(F)l(eeney)172 b(Jon)16 b(Flo)o(w)o(er)100 1815 y(Daniel)g(F)l(ry)o(e)144 b(Ian)16 b(Glendinning)76 b(Adam)15 b(Green)o(b)q(erg)100 1871 y(Rob)q(ert)g(Harrison)50 b(Leslie)17 b(Hart)176 b(T)l(om)15 b(Haupt)100 1928 y(T)l(om)g (Henderson)61 b(C.)15 b(T.)f(Ho)o(w)o(ard)g(Ho)50 b(Stev)o(en)16 b(Huss-Lederman)100 1984 y(John)g(Kap)q(enga)87 b(Bob)16 b(Leary)187 b(Barney)15 b(Maccab)q(e)100 2041 y(Phil)h(McKinley)88 b(Ch)o(uc)o(k)15 b(Mosher)110 b(Dan)15 b(Nessett)100 2097 y(P)o(aul)g(Pierce)148 b(P)o(eter)15 b(Rigsb)q(ee)123 b(Am)o(buj)15 b(Singh)100 2154 y(Rob)q(ert)g(G.)g(V)l(oigt)51 b(Dennis)16 b(W)l(eeks)120 b(Stephen)16 b(Wheat)166 2265 y(The)c(follo)o(wing)h(organizations)f(made)g(the)h(draft)e(a)o(v)m (ailable)j(b)o(y)e(anon)o(ymous)g(FTP)f(access)i(and/or)75 2322 y(mail)h(serv)o(ers:)k(Oak)c(Ridge)g(National)g(Lab)q(oratory)l(,) e(These)i(outlets)f(w)o(ere)g(instrumen)o(tal)h(in)g(distribut-)75 2378 y(ing)i(the)f(do)q(cumen)o(t.)166 2435 y(T)l(alk)g(ab)q(out)g (\014nancial)i(supp)q(ort)f(here.)p eop %%Page: 2 7 2 6 bop 75 356 a Fn(Chapter)34 b(1)75 564 y Fu(In)m(tro)s(duction)41 b(to)g(MPI)75 805 y Fm(1.1)70 b(Ov)n(erview)21 b(and)j(Goals)75 906 y Fs(Message)11 b(passing)i(is)f(a)g(paradigm)f(used)i(widely)g(on) f(certain)h(classes)f(of)f(parallel)j(mac)o(hines;)f(esp)q(ecially)75 963 y(those)j(with)i(distributed)g(memory)l(.)24 b(Although)17 b(there)g(are)f(man)o(y)h(v)m(ariations,)g(the)g(basic)g(concept)g(of) 75 1019 y(pro)q(cesses)12 b(comm)o(unicating)h(through)e(messages)g(is) i(w)o(ell)f(understo)q(o)q(d.)20 b(Ov)o(er)12 b(the)f(last)h(ten)g(y)o (ears,)f(sub-)75 1076 y(stan)o(tial)16 b(progress)g(has)g(b)q(een)h (made)f(in)h(casting)g(signi\014can)o(t)g(applications)h(in)f(this)f (paradigm.)23 b(Eac)o(h)75 1132 y(v)o(endor)c(has)h(implemen)o(ted)h (their)f(o)o(wn)f(v)m(arian)o(t.)33 b(More)19 b(recen)o(tly)l(,)j(sev)o (eral)d(systems)g(ha)o(v)o(e)h(demon-)75 1188 y(strated)12 b(that)h(a)g(message)f(passing)i(system)f(can)g(b)q(e)h(e\016cien)o (tly)h(and)e(b)q(e)h(p)q(ortably)f(implemen)o(ted.)21 b(It)13 b(is)75 1245 y(th)o(us)h(an)f(appropriate)h(time)g(to)f(try)g (to)g(de\014ne)i(b)q(oth)f(the)g(syn)o(tax)f(and)h(seman)o(tics)g(of)f (a)g(core)h(of)f(library)75 1301 y(routines)h(that)e(will)j(b)q(e)f (useful)h(to)e(a)g(wide)h(range)f(of)g(users)g(and)h(e\016cien)o(tly)g (implemen)o(table)i(on)d(a)g(wide)75 1358 y(range)i(of)g(computers.)166 1414 y(In)21 b(designing)i(MPI)e(w)o(e)f(ha)o(v)o(e)h(sough)o(t)f(to)g (mak)o(e)g(use)h(of)g(the)g(most)f(attractiv)o(e)f(features)i(of)f(a)75 1471 y(n)o(um)o(b)q(er)12 b(of)g(existing)h(message)e(passing)h (systems,)g(rather)f(than)h(selecting)h(one)f(of)g(them)g(and)g (adopting)75 1527 y(it)f(as)f(the)h(standard.)18 b(Th)o(us,)11 b(MPI)g(has)f(b)q(een)i(strongly)f(in\015uenced)i(b)o(y)d(w)o(ork)g(at) g(the)h(IBM)g(T.)f(J.)h(W)l(atson)75 1584 y(Researc)o(h)18 b(Cen)o(ter)g([1)o(,)g(2)o(],)g(In)o(tel's)g(NX/2)g([16)o(],)f(Express) h([15)o(],)g(nCUBE's)g(V)l(ertex)g([13)o(],)f(P4)h([3)o(],)g(and)75 1640 y(P)l(ARMA)o(CS)11 b([11)o(,)g(12)o(].)18 b(Other)11 b(imp)q(ortan)o(t)g(con)o(tributions)g(ha)o(v)o(e)g(come)g(from)f(Zip)q (co)q(de)i([17)o(,)f(18)o(],)g(Chimp)75 1697 y([7)o(,)k(8],)f(PVM)h([9) o(,)g(19],)f(and)h(PICL)h([10)o(].)166 1753 y(One)j(of)f(the)g(ob)s (jectiv)o(es)g(of)g(this)g(pap)q(er)h(is)g(to)e(promote)h(a)f (discussion)j(within)g(the)e(concurren)o(t)75 1810 y(computing)d (researc)o(h)f(comm)o(unit)o(y)f(of)h(the)g(issues)h(that)f(m)o(ust)f (b)q(e)i(addressed)f(in)h(establishing)h(a)e(prac-)75 1866 y(tical,)j(p)q(ortable,)g(and)f(\015exible)j(standard)d(for)g (message)f(passing.)24 b(This)17 b(co)q(op)q(erativ)o(e)g(pro)q(cess)g (b)q(egan)75 1922 y(with)f(a)e(w)o(orkshop)h(on)g(standards)g(for)f (message)h(passing)h(held)g(in)g(April)h(1992)d([20)o(].)166 1979 y(The)k(main)h(adv)m(an)o(tages)e(of)h(establishing)i(a)e(message) g(passing)g(standard)g(are)g(p)q(ortabilit)o(y)h(and)75 2035 y(ease-of-use.)h(In)14 b(a)g(distributed)h(memory)e(comm)o (unication)i(en)o(vironmen)o(t)f(in)g(whic)o(h)h(the)f(higher)h(lev)o (el)75 2092 y(routines)c(and/or)g(abstractions)f(are)h(build)i(up)q(on) e(lo)o(w)o(er)g(lev)o(el)h(message)e(passing)i(routines)f(the)g(b)q (ene\014ts)75 2148 y(of)22 b(standardization)h(are)f(particularly)h (apparen)o(t.)41 b(F)l(urthermore,)24 b(the)e(de\014nition)i(of)e(a)g (message)75 2205 y(passing)16 b(standard,)e(suc)o(h)i(as)e(that)h(prop) q(osed)g(here,)h(pro)o(vides)f(v)o(endors)h(with)f(a)g(clearly)h (de\014ned)h(base)75 2261 y(set)10 b(of)g(routines)g(that)g(they)g(can) h(implemen)o(t)g(e\016cien)o(tly)l(,)i(or)c(in)i(some)f(cases)h(pro)o (vide)f(hardw)o(are)g(supp)q(ort)75 2318 y(for,)k(thereb)o(y)h (enhancing)i(scalabilit)o(y)l(.)166 2374 y(The)h(goal)g(of)g(the)g (Message)g(P)o(assing)g(In)o(terface)g(simply)i(stated)d(is)i(to)f(dev) o(elop)h(a)f(widely)h(used)75 2431 y(standard)e(for)f(writing)i (message-passing)f(programs.)24 b(As)17 b(suc)o(h)h(the)f(in)o(terface) g(should)h(establishing)75 2487 y(a)d(practical,)h(p)q(ortable,)f (e\016cien)o(t,)g(and)h(\015exible)h(standard)e(for)f(message)h (passing.)166 2543 y(A)g(complete)h(list)g(of)f(goals)g(follo)o(w.)143 2647 y Fo(\017)23 b Fs(Design)11 b(an)f(application)i(programming)e(in) o(terface)h(\(not)f(necessarily)i(for)d(compilers)j(or)e(a)g(system)189 2704 y(implemen)o(tation)16 b(library\).)964 2828 y(2)p eop %%Page: 3 8 3 7 bop 75 -100 a Fq(1.2.)34 b(WHO)15 b(SHOULD)h(USE)g(THIS)g(ST)l(AND) o(ARD?)824 b Fs(3)143 45 y Fo(\017)23 b Fs(Allo)o(w)15 b(e\016cien)o(t)h(comm)o(unication:)21 b(Av)o(oid)16 b(memory)e(to)h(memory)g(cop)o(ying)g(and)h(allo)o(w)f(o)o(v)o(erlap) 189 102 y(of)e(computation)g(and)h(comm)o(unication)g(and)g(o\017oad)f (to)g(comm)o(unication)h(copro)q(cessor,)g(where)189 158 y(a)o(v)m(ailable.)143 255 y Fo(\017)23 b Fs(Allo)o(w)15 b(\(but)g(no)h(mandate\))e(extensions)i(for)f(use)g(in)h(heterogeneous) f(en)o(vironmen)o(t.)143 352 y Fo(\017)23 b Fs(Allo)o(w)15 b(con)o(v)o(enien)o(t)h(C,)f(F)l(ortran)f(77,)g(F)l(ortran)g(90,)g(and) i(C++)f(bindings)i(for)e(in)o(terface.)143 449 y Fo(\017)23 b Fs(Assume)15 b(a)g(reliable)i(comm)o(unication)f(in)o(terface:)k (User)15 b(need)h(not)f(cop)q(e)h(with)f(comm)o(unication)189 506 y(failures.)21 b(Suc)o(h)15 b(failures)i(are)d(dealt)i(b)o(y)f(the) h(underlying)h(comm)o(unication)f(subsystem.)143 603 y Fo(\017)23 b Fs(F)l(o)q(cus)15 b(on)g(a)g(prop)q(osal)h(that)e(can)h (b)q(e)h(agreed)f(up)q(on)h(in)g(6)f(mon)o(ths.)143 700 y Fo(\017)23 b Fs(De\014ne)f(an)g(in)o(terface)g(that)f(is)h(not)f(to)q (o)g(di\013eren)o(t)h(from)f(curren)o(t)h(practice,)h(suc)o(h)f(as)g (PVM,)189 756 y(Express,)14 b(P4,)h(etc.)143 853 y Fo(\017)23 b Fs(De\014ne)12 b(an)f(in)o(terface)h(that)f(can)h(b)q(e)g(quic)o(kly) h(implemen)o(ted)g(on)f(man)o(y)f(v)o(endor's)g(platforms,)h(with)189 909 y(no)j(signi\014can)o(t)h(c)o(hanges)f(in)h(the)f(underlying)j (comm)o(unication)d(and)h(system)f(soft)o(w)o(are.)143 1007 y Fo(\017)23 b Fs(The)15 b(in)o(terface)h(should)g(not)f(con)o (tain)g(more)g(functions)h(than)f(are)g(really)h(necessary)l(.)143 1104 y Fo(\017)23 b Fs(Seman)o(tics)15 b(of)g(the)g(in)o(terface)h (should)g(b)q(e)g(language)f(indep)q(enden)o(t.)75 1251 y Fm(1.2)70 b(Who)23 b(Should)g(Use)g(This)f(Standard?)75 1354 y Fs(This)16 b(standard)f(is)h(in)o(tended)h(for)e(use)g(b)o(y)h (all)g(those)f(who)g(w)o(an)o(t)g(to)f(write)i(p)q(ortable)g (message-passing)75 1411 y(programs)21 b(in)j(F)l(ortran)d(77,)i(C,)f (F)l(ortran)g(90,)h(or)f(C++.)43 b(This)23 b(includes)i(individual)g (application)75 1467 y(programmers,)14 b(dev)o(elop)q(ers)j(of)e(soft)o (w)o(are)f(designed)j(to)e(run)h(on)g(parallel)h(mac)o(hines,)f(and)g (creators)e(of)75 1524 y(en)o(vironmen)o(ts,)g(and)f(to)q(ols.)19 b(In)14 b(order)f(to)g(b)q(e)h(attractiv)o(e)e(to)h(this)h(wide)g (audience,)h(the)f(standard)f(m)o(ust)75 1580 y(pro)o(vide)j(a)f (simple,)i(easy-to-use)e(in)o(terface)h(for)e(the)i(basic)g(user)f (while)i(not)e(seman)o(tically)i(precluding)75 1637 y(the)e(high-p)q (erformance)i(message-passing)e(op)q(erations)g(a)o(v)m(ailable)i(on)e (adv)m(anced)i(mac)o(hines.)75 1784 y Fm(1.3)70 b(What)23 b(Platforms)f(Are)h(T)-6 b(argets)23 b(F)-6 b(or)24 b(Implemen)n (tation?)75 1887 y Fs(The)17 b(attractiv)o(eness)f(of)g(the)h (message-passing)g(paradigm)f(at)g(least)h(partially)h(stems)e(from)g (its)h(wide)75 1944 y(p)q(ortabilit)o(y)l(.)k(Programs)13 b(expressed)j(this)f(w)o(a)o(y)f(ma)o(y)g(run)h(on)g (distributed-memory)h(m)o(ultipro)q(cessors,)75 2000 y(net)o(w)o(orks)i(of)i(w)o(orkstations,)e(and)i(com)o(binations)g(of)g (all)g(of)f(these.)34 b(In)20 b(addition,)h(shared-memory)75 2057 y(implemen)o(tations)g(are)e(p)q(ossible.)34 b(The)20 b(paradigm)g(will)h(not)e(b)q(e)h(made)f(obsolete)h(b)o(y)g(arc)o (hitectures)75 2113 y(com)o(bining)15 b(the)e(shared-)h(and)g (distributed-memory)h(views,)f(or)f(b)o(y)g(increases)i(in)f(net)o(w)o (ork)f(sp)q(eeds.)20 b(It)75 2170 y(th)o(us)d(should)i(b)q(e)f(b)q(oth) g(p)q(ossible)h(and)f(useful)g(to)f(implemen)o(t)i(this)f(standard)f (on)h(a)f(great)g(v)m(ariet)o(y)g(of)75 2226 y(mac)o(hines,)i (including)h(those)e(\\mac)o(hines")g(consisting)g(of)g(collections)h (of)e(other)h(mac)o(hines,)g(parallel)75 2283 y(or)d(not,)f(connected)i (b)o(y)f(a)g(comm)o(unication)h(net)o(w)o(ork.)166 2340 y(The)21 b(in)o(terface)f(is)h(suitable)h(for)e(use)h(b)o(y)f(fully)i (general)f(MIMD)f(programs,)g(as)g(w)o(ell)h(as)f(those)75 2396 y(written)d(in)g(the)g(more)f(restricted)h(st)o(yle)g(of)f(SPMD.)g (Although)h(no)f(explicit)j(supp)q(ort)e(for)f(threads)g(is)75 2453 y(pro)o(vided,)g(the)f(in)o(terface)g(has)g(b)q(een)i(designed)f (so)f(as)g(not)g(to)f(prejudice)j(their)f(use.)75 2601 y Fm(1.4)70 b(What)23 b(Is)g(Included)f(In)h(The)f(Standard?)75 2704 y Fs(The)15 b(standard)g(includes)j(\(this)d(is)h(temp)q(orarily)f (as)g(inclusiv)o(e)j(as)d(p)q(ossible\):)p eop %%Page: 4 9 4 8 bop 75 -100 a Fs(4)903 b Fq(CHAPTER)16 b(1.)34 b(INTR)o(ODUCTION)17 b(TO)e(MPI)143 45 y Fo(\017)23 b Fs(P)o(oin)o(t-to-p)q(oin)o(t)15 b(comm)o(unication)143 139 y Fo(\017)23 b Fs(Collectiv)o(e)16 b(op)q(erations)143 233 y Fo(\017)23 b Fs(Pro)q(cess)15 b(groups)143 327 y Fo(\017)23 b Fs(Comm)o(unication)15 b(con)o(texts)143 420 y Fo(\017)23 b Fs(A)15 b(simple)i(w)o(a)o(y)d(to) g(create)h(pro)q(cesses)h(for)e(the)i(SPMD)e(mo)q(del)143 514 y Fo(\017)23 b Fs(Bindings)17 b(for)d(F)l(ortran)g(77,)g(F)l (ortran)h(90,)f(C)h(and)g(C++)143 608 y Fo(\017)23 b Fs(A)15 b(mo)q(del)h(implemen)o(tation)143 702 y Fo(\017)23 b Fs(A)15 b(formal)g(sp)q(eci\014cation.)143 796 y Fo(\017)23 b Fs(Pro)q(cess)15 b(top)q(ology)143 889 y Fo(\017)23 b Fs(A)15 b(v)m(alidation)i(suite)75 1033 y Fm(1.5)70 b(What)23 b(Is)g(Not)g(Included)f(In)h(The)f(Standard?)75 1134 y Fs(The)15 b(standard)g(do)q(es)h(not)f(sp)q(ecify:)143 1240 y Fo(\017)23 b Fs(Explicit)17 b(shared-memory)e(op)q(erations)143 1334 y Fo(\017)23 b Fs(Op)q(erations)c(that)e(require)i(more)f(op)q (erating)h(system)f(supp)q(ort)g(than)g(is)h(curren)o(tly)g(standard;) 189 1391 y(for)14 b(example,)i(in)o(terrupt-driv)o(en)g(receiv)o(es,)g (remote)f(execution,)h(or)e(activ)o(e)i(messages)143 1484 y Fo(\017)23 b Fs(Program)13 b(construction)j(to)q(ols)143 1578 y Fo(\017)23 b Fs(Debugging)15 b(facilities)143 1672 y Fo(\017)23 b Fs(Auxiliary)17 b(functions)e(suc)o(h)h(as)f (timers)143 1766 y Fo(\017)23 b Fs(Explicit)17 b(supp)q(ort)e(for)g (threads)166 1872 y(There)g(are)f(man)o(y)h(features)f(that)g(ha)o(v)o (e)g(b)q(een)i(considered)g(and)f(not)g(included)i(in)f(this)f (standard.)75 1929 y(This)j(happ)q(ened)h(for)e(a)g(n)o(um)o(b)q(er)h (of)f(reasons,)g(one)g(of)g(whic)o(h)i(is)f(the)f(time)h(constrain)o(t) f(that)g(w)o(as)f(self)75 1985 y(imp)q(osed)g(in)h(\014nishing)g(the)e (standard.)20 b(F)l(eatures)15 b(that)f(are)h(not)g(included)j(can)e (alw)o(a)o(ys)e(b)q(e)i(o\013ered)f(as)75 2042 y(extensions)h(b)o(y)f (sp)q(eci\014c)i(implemen)o(tations.)p eop %%Page: 5 10 5 9 bop 75 357 a Fn(Chapter)34 b(2)75 565 y Fu(P)m(oin)m(t)41 b(to)f(P)m(oin)m(t)h(Comm)m(unication)876 788 y Fs(Marc)14 b(Snir)656 845 y(William)j(Gropp)e(and)g(Ewing)h(Lusk)75 992 y Fm(2.1)70 b(In)n(tro)r(duction)75 1095 y Fs(This)19 b(section)f(is)h(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.)30 b(It)18 b(do)q(es)75 1151 y(not)d(y)o(et)g(include)i(a)e(description)i(of)d (the)i(F)l(ortran)e(77)g(and)i(C)f(bindings.)166 1208 y(I)g(ha)o(v)o(e)f(tried)i(to)e(indicate,)i(wherev)o(er)e(appropriate,) h(gaps)f(and)h(unresolv)o(ed)h(issues,)f(using)g(small)75 1265 y(t)o(yp)q(e.)166 1398 y Fl(Discussion:)45 b Fk(The)17 b(follo)o(wing)d(sections)k(of)e(the)h(in)o(tro)q(duction)g(con)o(tain) f(general)h(information)d(on)i(the)75 1448 y(design)g(of)f(MPI)h(pro)q (cedures.)27 b(The)16 b(material)e(should)h(b)q(e)i(mo)o(v)o(ed)d(to)i (a)g(general)g(in)o(tro)q(duction)f(for)h(the)g(en)o(tire)75 1497 y(do)q(cumen)o(t.)21 b(The)15 b(actual)g(binding)f(of)g(these)i (ob)r(jects)g(in)f(F)m(ortran)g(and)f(C)h(will)f(b)q(e)h(discussed)i (in)d(the)i(language)75 1547 y(binding)d(sub)q(committee.)75 1777 y Fm(2.2)70 b(Data)23 b(T)n(yp)r(es)75 1881 y Fj(2.2.1)55 b(Handle)75 1968 y Fs(MPI)16 b(pro)q(cedures)h(use)f(at)f(v)m(arious)h (places)h Fi(hand)r(les)p Fs(.)22 b(Handles)17 b(are)e(used)i(to)e (access)h(opaque)g(ob)s(jects.)75 2025 y(Suc)o(h)j(ob)s(ject)e(can)h(b) q(e)h(created,)g(up)q(dated)f(and)h(destro)o(y)o(ed)e(only)i(b)o(y)f(b) o(y)g(calling)i(suitable)f(MPI)f(pro-)75 2081 y(cedures,)i(and)f(pro)o (viding)g(the)g(handle)h(as)e(parameter.)29 b(Opaque)20 b(ob)s(jects)e(hide)i(from)d(the)i(user)g(the)75 2138 y(in)o(ternal)e(represen)o(tation)e(used)i(for)e(v)m(arious)h(MPI)f(ob) s(jects,)g(th)o(us)h(allo)o(wing)g(to)f(ha)o(v)o(e)h(similar)g(calls)h (in)75 2194 y(C)i(and)g(F)l(ortran,)g(allo)o(wing)h(to)f(o)o(v)o (ercome)f(problems)i(with)f(the)g(t)o(yping)h(rules)g(in)g(these)f (languages,)75 2251 y(and)c(allo)o(wing)g(for)g(future)f(extension)i (of)e(their)h(functionalit)o(y)l(.)21 b(The)15 b(mec)o(hanism)h(for)e (opaque)h(ob)s(jects)75 2307 y(used)h(here)f(lo)q(osely)i(follo)o(ws)e (the)g(POSIX)h(F)l(ortran)e(binding)k(standard.)166 2364 y(An)h(opaque)h(ob)s(ject)e(can)i(b)q(e)f Fi(p)n(ersistent)f Fs(or)h Fi(ephemer)n(al)p Fs(.)32 b(A)19 b(p)q(ersisten)o(t)h(ob)s (ject)e(p)q(ersists)i(un)o(til)75 2421 y(destro)o(y)o(ed)c(b)o(y)h(an)g (explicit)i(op)q(eration.)25 b(An)17 b(ephemeral)h(ob)s(ject)f(is)g(go) q(o)q(d)g(for)f(a)g(single)j(use;)e(th)o(us)g(an)75 2477 y(ephemeral)c(ob)s(ject)d(asso)q(ciated)i(with)g(a)f(comm)o(unication)h (op)q(eration)g(disapp)q(ears)g(once)g(this)g(op)q(eration)75 2534 y(is)g(completed)g(\(or)f(once)g(this)h(ob)s(ject)f(is)h(not)f (needed)i(an)o(ymore)d(for)h(the)h(completion)g(of)f(the)g(op)q (eration\).)166 2591 y(Opaque)21 b(ob)s(ject)e(are)h(created)g(b)o(y)g (calls)h(that)f(are)f(sp)q(eci\014c)j(to)e(eac)o(h)g(ob)s(ject)f(t)o (yp)q(e.)35 b(They)20 b(are)75 2647 y(destro)o(y)o(ede)g(b)o(y)h(a)g (call)g(to)g Fh(MPI)p 642 2647 15 2 v 16 w(FREE)p Fs(.)f(Additional)j (MPI)d(functions)i(are)e(a)o(v)m(ailable)j(to)d(access)h(and)75 2704 y(up)q(date)16 b(sp)q(eci\014c)h(opaque)e(ob)s(jects.)964 2828 y(5)p eop %%Page: 6 11 6 10 bop 75 -100 a Fs(6)631 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)166 45 y Ft(MPI)p 275 45 16 2 v 18 w(FREE\(handle\))75 187 y(IN)h(handle)24 b Fs(handle)16 b(to)f(ob)s(ject)166 294 y(Mark)e(the)g(handle)i(for)e (destruction.)20 b(The)14 b(ob)s(ject)f(can)h(destro)o(y)o(ed)f(as)g (so)q(on)g(as)h(there)f(there)h(is)g(no)75 351 y(p)q(ending)k(op)q (eration)e(that)f(is)h(using)h(this)f(ob)s(ject.)22 b(This)16 b(is)g(equiv)m(alen)o(t)i(to)d(c)o(hanging)i(the)e(p)q(ersistence)75 407 y(of)h(the)h(handle)h(from)e Fh(persistent)f Fs(to)h Fh(ephemeral)p Fs(.)23 b(F)l(or)16 b(example,)i(if)f(a)f(comm)o (unication)h(ob)s(ject)f(is)75 463 y(freed,)e(after)e(the)i(comm)o (unication)g(started)f(but)g(b)q(efore)h(it)g(completed,)g(then)g(the)g (p)q(ending)h(op)q(eration)75 520 y(is)i(not)e(a\013ected;)h(one)g(can) h(use)f(the)g(handle)i(in)f(calls)g(to)e Fh(MPI)p 1147 520 15 2 v 17 w(WAIT)g Fs(or)h Fh(MPI)p 1404 520 V 17 w(STATUS)p Fs(.)f(Ho)o(w)o(ev)o(er,)g(once)75 576 y(the)e(op)q(eration) h(completes,)g(it)g(is)g(erroneous)f(to)g(reuse)g(the)h(freed)g(handle) g(for)f(a)g(new)h(comm)o(unication.)166 712 y Fl(Discussion:)166 765 y Fk(An)f(alternativ)o(e)f(design)g(p)q(oin)o(t)g(w)o(as)h (discussed,)h(whereb)o(y)f(it)f(is)h(the)g(user)g(resp)q(onsibilit)o(y) f(to)h(free)g(a)f(handle)75 815 y(only)e(if)h(there)h(are)g(no)f(p)q (ending)g(op)q(erations)h(on)f(this)g(handle.)17 b(The)12 b(curren)o(t)g(design)g(w)o(as)f(deemed)g(more)f(elegan)o(t.)75 865 y(Note)17 b(that)g(it)f(is)h(not)f(necessary)j(to)d(destro)o(y)i (the)f(handle)f(as)h(so)q(on)g(as)f(it)h(is)f(not)h(needed)h(an)o (ymore.)25 b(A)17 b(v)n(alid)75 915 y(implemen)o(tatio)o(n)11 b(ma)o(y)h(just)i(mark)f(freed)h(handles)h(and)e(garbage)h(collect)g (them)f(p)q(erio)q(dically)m(.)166 968 y(On)18 b(the)h(other)g(hand,)g (some)e(ob)r(jects,)j(suc)o(h)f(as)f(bu\013er)i(descriptor)f(ob)r (jects,)h(can)f(b)q(e)f(used)h(b)o(y)f(sev)o(eral)75 1017 y(distinct)c(concurren)o(t)i(comm)o(unicati)o(on)11 b(op)q(erations.)18 b(Th)o(us,)c(to)g(\014nd)g(out)g(whether)h(suc)o(h) f(ob)r(ject)h(can)f(b)q(e)h(freed,)75 1067 y(one)e(w)o(ould)f(need)i(a) e(reference)k(coun)o(t)d(of)f(p)q(ending)h(op)q(erations.)18 b(This)12 b(complication)f(w)o(as)i(not)f(observ)o(ed)i(at)f(our)75 1117 y(last)h(meeting,)e(and)i(ma)o(y)e(b)q(e)i(a)g(go)q(o)q(d)f (argumen)o(t)g(to)h(reconsider)h(the)g(curren)o(t)g(de\014nition)f(of)f Fg(MPI)p 1635 1117 14 2 v 15 w(FREE)p Fk(.)166 1295 y Ft(MPI)p 275 1295 16 2 v 18 w(ASSOCIA)l(TED\(handle,)18 b(t)o(yp)q(e\))75 1437 y(IN)f(handle)24 b Fs(handle)16 b(to)f(ob)s(ject)75 1544 y Ft(OUT)j(t)o(yp)q(e)23 b Fs(state)166 1651 y(Returns)17 b(the)g(t)o(yp)q(e)g(of)f(the)h(ob)s(ject)g(the)g (handle)h(is)f(curren)o(tly)g(asso)q(ciated)g(with,)h(if)f(suc)o(h)g (exists.)75 1707 y(Returns)d(the)f(sp)q(ecial)i(t)o(yp)q(e)e Fh(MPI)p 643 1707 15 2 v 17 w(NULL)f Fs(if)i(the)f(handle)h(is)g(not)f (curren)o(tly)g(asso)q(ciated)h(with)f(an)o(y)g(ob)s(ject.)166 1767 y(MPI)19 b(ma)o(y)g(pro)o(vide)h(prede\014ned)h(opaque)f(ob)s (jects)f(and)g(prede\014ned,)j(static)d(handles)i(to)e(these)75 1823 y(ob)s(jects.)g(Suc)o(h)d(ob)s(jects)f(ma)o(y)f(not)h(b)q(e)h (destro)o(y)o(ed.)75 1963 y Fj(2.2.2)55 b(Arra)n(y)19 b(of)g(handles)75 2055 y Fs(An)j(MPI)f(call)i(ma)o(y)e(need)i(a)e (parameter)g(that)g(is)h(an)f Fi(arr)n(ay)i(of)f(hand)r(les)p Fs(.)39 b(The)22 b(arra)o(y-of-handles)75 2112 y(ob)s(ject)16 b(is)g(not)g(self-delimitin)q(g;)j(it)d(do)q(es)h(not)f(carry)f (information)i(on)f(the)g(n)o(um)o(b)q(er)g(of)g(en)o(tries)h(in)g(the) 75 2168 y(arra)o(y)l(.)29 b(This)19 b(information)g(has)f(to)g(b)q(e)h (pro)o(vided)h(b)o(y)e(an)h(additional)h Fh(len)e Fs(parameter,)g (whenev)o(er)h(a)75 2225 y(list-of-handles)e(parameter)e(is)g(used.)166 2361 y Fl(Discussion:)166 2414 y Fk(The)i(reason)h(for)f(not)g(ha)o (ving)f(self-delimiting)e(arra)o(ys)k(is)f(that)g(records)h(are)g(not)f (\014rst-class)h(citizens)g(in)75 2463 y(F)m(ortran)13 b(and)g(that)g(ha)o(ving)f(an)h(arra)o(y)g(where)h(one)f(en)o(try)h (enco)q(des)h(length,)e(whereas)h(the)g(other)f(en)o(tries)i(enco)q(de) 75 2513 y(handles)j(w)o(as)f(deemed)g(to)g(b)q(e)h(to)q(o)f (error-prone.)30 b(This)17 b(line)g(of)g(argumen)o(tation)e(really)i (implies)e(that)j(w)o(e)f(do)75 2563 y(not)e(view)g(arra)o (y-of-handles)g(as)g(an)g(opaque)g(ob)r(ject,)h(and)f(that)h(w)o(e)f (exp)q(ect)i(the)f(user)g(to)g(build)e(these)j(ob)r(jects)75 2613 y(explicitly)m(,)12 b(not)i(via)f(MPI)h(calls.)p eop %%Page: 7 12 7 11 bop 75 -100 a Fq(2.3.)34 b(PR)o(OCESSES)1403 b Fs(7)75 45 y Fj(2.2.3)55 b(State)75 133 y Fs(MPI)15 b(pro)q(cedures)h(use)g(at) e(v)m(arious)i(places)g(argumen)o(ts)f(with)g Fi(state)g Fs(t)o(yp)q(es.)20 b(The)c(v)m(alues)g(of)f(suc)o(h)h(data)75 190 y(t)o(yp)q(e)i(are)h(all)g(iden)o(ti\014ed)h(b)o(y)f(names,)f(and)h (no)f(op)q(eration)h(is)g(de\014ned)h(on)e(them.)29 b(F)l(or)18 b(example,)i(the)75 246 y Fh(MPI)p 150 246 15 2 v 17 w(APPEND)14 b Fs(routine)i(has)f(a)g(state)f(t)o(yp)q(e)h(parameter)g (with)g(v)m(alues)i Fh(MPI)p 1343 246 V 16 w(INT,)24 b(MPI)p 1551 246 V 17 w(REAL,)14 b Fs(etc.)75 376 y Fj(2.2.4)55 b(Named)17 b(constan)n(ts)75 464 y Fs(MPI)11 b(pro)q(cedures)h (sometimes)f(assign)g(a)g(sp)q(ecial)i(meaning)f(to)e(a)h(sp)q(ecial)i (v)m(alue)f(of)f(a)g(basic)g(t)o(yp)q(e)g(param-)75 520 y(eter;)17 b(e.g.)24 b Fh(tag)17 b Fs(is)g(an)g(in)o(teger)g(v)m(alued) h(parameter)e(of)g(p)q(oin)o(t-to-p)q(oin)o(t)i(comm)o(unication)f(op)q (erations,)75 577 y(with)f(a)f(sp)q(ecial)i Fh(DONTCARE)d Fs(v)m(alue.)22 b(Suc)o(h)16 b(parameters)e(will)j(ha)o(v)o(e)e(a)g (range)g(of)g(regular)h(v)m(alues,)g(whic)o(h)75 633 y(is)h(a)f(prop)q(er)h(subrange)f(of)g(the)h(range)f(of)g(v)m(alues)h (of)f(the)h(corresp)q(onding)g(basic)g(t)o(yp)q(e;)g(sp)q(ecial)h(v)m (alues)75 690 y(\(suc)o(h)e(as)g(DONTCARE\))g(will)i(b)q(e)f(outside)g (the)g(regular)f(range.)23 b(The)16 b(range)g(of)g(regular)g(v)m(alues) i(can)75 746 y(b)q(e)d(queried,)g(and)f(sometimes)g(set,)g(using)h(en)o (vironmen)o(t)f(inquiry)i(or)e(en)o(vironmen)o(t)g(setting)g(functions) 75 803 y(\(Section)i(7\).)166 937 y Fl(Discussion:)166 988 y Fk(Need)f(to)f(agree)g(on)g(a)f(language)g(mec)o(hanism)f(for)h (named)g(constan)o(ts.)166 1039 y(Implemen)o(ters)h(should)g(detect,)j (whenev)o(er)f(p)q(ossible,)f(illegal)e(uses)j(of)e(\\sp)q(ecial)h(v)n (alues".)21 b(Th)o(us,)15 b(the)g(use)75 1089 y(of)e(the)i Fg(DONTCARE)d Fk(v)n(alue)h(to)h(tag)f(a)h(message)g(sen)o(t)g(will)f (b)q(e)h(\015agged)g(as)g(an)g(error.)75 1301 y Fj(2.2.5)55 b(Choice)75 1389 y Fs(MPI)16 b(functions)g(sometimes)g(use)g (parameters)f(with)h(a)g Fi(choic)n(e)f Fs(\(or)g(union\))i(data)e(t)o (yp)q(e.)21 b(I.e.,)16 b(distinct)75 1445 y(calls)i(to)e(the)h(same)f (routine)h(ma)o(y)f(pass)h(b)o(y)f(reference)i(actual)e(parameters)g (of)g(di\013eren)o(t)h(t)o(yp)q(es.)25 b(The)75 1502 y(mec)o(hanism)16 b(for)e(pro)o(viding)j(suc)o(h)e(parameters)f(will)j (di\013er)f(from)e(language)i(to)e(language.)166 1636 y Fl(Discussion:)166 1687 y Fk(The)j(F)m(ortran)g(77)g(standard)g(sp)q (eci\014es)i(that)e(the)h(t)o(yp)q(e)f(of)f(actual)h(argumen)o(ts)f (need)i(to)f(agree)h(with)e(the)75 1737 y(t)o(yp)q(e)f(of)f(dumm)o(y)d (argumen)o(ts;)i(no)i(construct)h(equiv)n(alen)o(t)d(to)i(C)f(p)q(oin)o (ters)h(is)f(a)o(v)n(ailable.)j(Th)o(us,)e(it)f(w)o(ould)f(seem)75 1786 y(that)19 b(there)i(is)e(no)g(standard)h(conforming)d(mec)o (hanism)g(to)i(supp)q(ort)h(c)o(hoice)f(parameters.)35 b(Ho)o(w)o(ev)o(er,)20 b(most)75 1836 y(F)m(ortran)g(compiler)e(either) j(don't)e(c)o(hec)o(k)i(t)o(yp)q(e)f(consistency)h(of)e(calls)h(to)f (external)i(routines,)g(or)f(supp)q(ort)g(a)75 1886 y(sp)q(ecial)d(mec) o(hanism)d(to)j(link)e(foreign)h(\(e.g.,)g(C\))h(routines.)27 b(I)17 b(suggest)g(that)g(w)o(e)g(accept)g(this)g(nonconformit)o(y)75 1936 y(with)12 b(F)m(ortran)h(77)f(standard.)19 b(I.e.,)12 b(w)o(e)h(accept)h(that)f(the)g(same)f(routine)h(ma)o(y)e(b)q(e)i (passed)h(an)f(actual)f(parameter)75 1986 y(of)h(a)h(di\013eren)o(t)h (t)o(yp)q(e)f(at)g(distinct)g(calls.)166 2037 y(Generic)j(routines)g (can)f(b)q(e)h(used)h(in)d(F)m(ortran)i(90)e(to)h(pro)o(vide)h(a)f (standard)g(conforming)f(solution.)24 b(This)75 2087 y(solution)13 b(will)f(b)q(e)j(consisten)o(t)g(with)f(our)f (nonstandard)i(conforming)c(F)m(ortran)j(77)f(solution.)75 2320 y Fm(2.3)70 b(Pro)r(cesses)75 2507 y Fl(Discussion:)15 b Fk(This)f(material)e(b)q(elongs)i(to)g(an)f(in)o(tro)q(duction)h(or)g (en)o(vironmen)o(t)f(section)166 2647 y Fs(An)i(MPI)f(program)g(is)h (executed)h(b)o(y)e(sev)o(eral)h(autonomous)f(pro)q(cesses)h(that)e (execute)j(eac)o(h)e(their)75 2704 y(o)o(wn)19 b(co)q(de,)h(in)g(a)e (MIMD)h(st)o(yle.)31 b(The)19 b(co)q(des)h(executed)g(b)o(y)f(eac)o(h)g (pro)q(cess)g(need)h(not)f(b)q(e)g(iden)o(tical.)p eop %%Page: 8 13 8 12 bop 75 -100 a Fs(8)631 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fs(The)k(pro)q(cesses)g(comm)o (unicate)g(via)g(calls)g(to)f(MPI)h(comm)o(unication)g(primitiv)o(es.) 35 b(T)o(ypically)l(,)22 b(eac)o(h)75 102 y(pro)q(cessor)17 b(executes)i(in)f(its)g(o)o(wn)f(address)g(space,)h(although)g (shared-memory)g(implemen)o(tations)g(of)75 158 y(MPI)12 b(are)g(p)q(ossible.)21 b(This)13 b(do)q(cumen)o(t)f(sp)q(eci\014es)i (the)f(b)q(eha)o(vior)f(of)g(a)g(parallel)i(program)d(assuming)i(that) 75 214 y(only)h(MPI)g(calls)h(are)e(used)i(for)e(comm)o(unication.)20 b(The)14 b(in)o(teraction)g(of)f(an)h(MPI)g(program)e(with)i(other)75 271 y(p)q(ossible)i(means)e(of)g(comm)o(unication)g(\(e.g.,)f(shared)h (memory\))g(is)g(not)g(sp)q(eci\014ed.)22 b(In)14 b(particular,)h(it)f (is)75 327 y(assumed)h(that)g(message)g(bu\013ers)g(at)f(distinct)j (pro)q(cessors)e(are)f(disjoin)o(t.)166 386 y(MPI)d(do)q(es)g(not)g(sp) q(ecify)h(the)f(execution)h(mo)q(del)g(for)e(eac)o(h)h(pro)q(cess.)19 b(A)11 b(pro)q(cess)g(can)h(b)q(e)f(sequen)o(tial,)75 442 y(or)h(can)g(b)q(e)h(m)o(ultithreaded,)g(with)g(threads)f(p)q (ossibly)h(executing)h(concurren)o(tly)l(.)19 b(Care)12 b(has)g(b)q(een)h(tak)o(en)75 499 y(to)i(mak)o(e)f(MPI)h (\\thread-safe",)f(b)o(y)i(a)o(v)o(oiding)f(the)g(use)h(of)f(implicit)i (global)f(states.)166 557 y(The)d(initial)h(allo)q(cation)g(of)e(pro)q (cesses)g(to)g(an)g(MPI)h(computation)f(and)h(their)g(binding)h(to)e (ph)o(ysical)75 614 y(pro)q(cessors)17 b(is)i(not)e(sp)q(eci\014ed)j(b) o(y)d(the)h(program)f(itself.)28 b(It)18 b(is)g(exp)q(ected)h(that)e(v) o(endors)g(will)i(pro)o(vide)75 670 y(mec)o(hanisms)g(to)g(do)f(so)h (either)h(at)e(load)h(time)g(or)f(at)h(run)g(time.)31 b(Suc)o(h)20 b(mec)o(hanisms)f(will)i(allo)o(w)e(to)75 727 y(sp)q(ecify)i(the)f(initial)i(n)o(um)o(b)q(er)e(of)f(required)i (pro)q(cesses,)g(the)f(co)q(de)g(to)f(b)q(e)i(executed)f(b)o(y)g(eac)o (h)g(initial)75 783 y(pro)q(cess,)j(and)f(the)g(allo)q(cation)g(of)g (pro)q(cesses)g(to)f(pro)q(cessors.)38 b(Also,)24 b(the)d(curren)o(t)h (prop)q(osal)g(do)q(es)75 839 y(not)16 b(pro)o(vide)h(for)f(dynamic)h (creation)f(or)g(deletion)i(of)e(pro)q(cesses)h(during)g(program)e (execution)j(\(total)75 896 y(n)o(um)o(b)q(er)e(of)e(pro)q(cesses)i(is) g(\014xed\),)f(although)g(it)h(is)g(in)o(tended)g(to)f(b)q(e)h (consisten)o(t)f(with)h(suc)o(h)g(extension.)75 952 y(Finally)l(,)i (the)e(curren)o(t)g(prop)q(osal)g(do)q(es)g(not)g(sp)q(ecify)h(a)f (naming)g(sc)o(heme)h(for)e(pro)q(cesses.)23 b(W)l(e)16 b(prop)q(ose)75 1009 y(to)g(alw)o(a)o(ys)g(iden)o(tify)i(pro)q(cesses)f (according)g(to)f(their)h(relativ)o(e)g(rank)f(in)i(a)e(con)o(text)g (\(group\),)g(so)g(that,)75 1065 y(e\013ectiv)o(ely)l(,)g(pro)q(cesses) g(are)e(iden)o(ti\014ed)k(b)o(y)d(consecutiv)o(e)h(in)o(tegers.)75 1198 y Fj(2.3.1)55 b(Error)18 b(Handling)75 1371 y Fl(Discussion:)51 b Fk(Material)18 b(of)f(this)i(section)g(should)f(b)q(e)g(mo)o(v)o(ed)f (to)h(a)g(general)g(in)o(tro)q(duction)g(section.)32 b(This)75 1427 y(material)12 b(has)i(not)g(y)o(et)g(b)q(een)h(app)q (oriv)o(ed)f(b)o(y)f(MPIF)166 1568 y Fs(MPI)18 b(pro)o(vides)g(the)h (user)f(with)g(reliable)i(message)e(transmission:)26 b(A)18 b(message)f(sen)o(t)h(is)h(alw)o(a)o(ys)75 1625 y(receiv)o(ed)f(correctly)l(,)f(and)h(the)f(user)g(do)q(es)g(not)f (need)i(to)e(c)o(hec)o(k)i(for)e(transmission)h(errors,)f(time-outs,)75 1681 y(or)i(other)g(error)f(conditions.)31 b(In)19 b(other)f(w)o(ords,) g(MPI)g(do)q(es)h(not)f(pro)o(vide)h(mec)o(hanisms)g(for)f(dealing)75 1738 y(with)i(failures)h(in)g(the)f(comm)o(unication)h(system.)34 b(Where)20 b(the)g(MPI)g(implemen)o(tation)h(is)g(built)g(on)75 1794 y(an)h(unreliable)i(underlying)g(mec)o(hanism,)f(then)g(it)f(is)g (the)g(job)f(of)h(the)g(implemen)o(ter)h(of)e(the)h(MPI)75 1851 y(subsystem)16 b(to)g(insulate)i(the)e(user)h(from)f(this)h (unreliabilit)o(y)l(,)i(or)d(to)g(re\015ect)h(unreco)o(v)o(erable)g (errors)e(as)75 1907 y(global)20 b(program)e(failures.)34 b(Similarly)21 b(MPI)f(itself)g(pro)o(vides)g(no)f(mec)o(hanisms)h(for) f(handling)i(no)q(de)75 1964 y(failures.)166 2022 y(Of)16 b(course,)h(MPI)f(programs)f(ma)o(y)h(still)i(b)q(e)f(erroneous.)23 b(A)16 b Ft(program)i(error)d Fs(can)i(o)q(ccur)f(when)75 2079 y(an)i(MPI)f(call)i(is)f(called)h(with)f(an)g(incorrect)g (parameter)f(\(non-existing)h(destination)h(in)f(a)g(send)g(op-)75 2135 y(eration,)i(bu\013er)g(to)q(o)f(small)h(in)h(a)e(receiv)o(e)i(op) q(eration,)f(etc.\))33 b(This)20 b(t)o(yp)q(e)g(of)f(error)g(w)o(ould)h (o)q(ccur)g(in)75 2191 y(an)o(y)e(implemen)o(tation.)29 b(In)19 b(addition,)g(a)f Ft(resource)i(error)c Fs(ma)o(y)i(o)q(ccur)g (when)g(a)g(program)f(exceeds)75 2248 y(the)k(amoun)o(t)f(of)g(a)o(v)m (ailable)i(system)f(resources)f(\(n)o(um)o(b)q(er)h(of)f(p)q(ending)j (messages,)e(system)f(bu\013ers,)75 2304 y(etc.\).)29 b(The)19 b(o)q(ccurrence)g(of)f(this)h(t)o(yp)q(e)g(of)f(error)f(dep)q (ends)j(on)f(the)f(amoun)o(t)g(of)g(a)o(v)m(ailable)i(resources)75 2361 y(in)d(the)f(system)g(and)g(the)g(resource)g(allo)q(cation)h(mec)o (hanism)g(used;)g(this)f(ma)o(y)f(di\013er)i(from)e(system)h(to)75 2417 y(system.)j(The)13 b(recommended)i(implemen)o(tation)f(pro\014le)h (pro)o(vides)e(sev)o(eral)h(mec)o(hanisms)g(to)f(alleviate)75 2474 y(the)19 b(p)q(ortabilit)o(y)h(problem)g(this)f(represen)o(ts.)31 b(One)20 b(can)f(also)g(write)g Ft(safe)g Fs(programs,)f(that)h(are)f (not)75 2530 y(sub)s(ject)d(to)g(resource)g(errors.)166 2589 y(All)f(MPI)f(pro)q(cedure)h(calls)g(return)f(an)g(error)f (parameter)g(that)g(indicates)j(successful)f(completion)75 2645 y(of)h(the)g(op)q(eration,)g(or)g(the)g(error)g(condition)h(that)f (o)q(ccurred,)g(otherwise.)166 2704 y(The)21 b(recommended)h(implemen)o (tation)g(pro\014le)g(in)g(a)f(POSIX)h(en)o(vironmen)o(t)f(is)h(for)e (an)o(y)h(MPI)p eop %%Page: 9 14 9 13 bop 75 -100 a Fq(2.4.)34 b(MESSA)o(GES)1423 b Fs(9)75 45 y(routine)14 b(that)f(encoun)o(ters)h(a)g(reco)o(v)o(erable)f(error) g(to)h(generate)f(an)h Fi(MPI)g(err)n(or)h(signal)p Fs(,)d(using)j(a)e (sp)q(ecial)75 102 y(signal)20 b(v)m(alue.)31 b(The)19 b(default)h(handler)g(for)e(this)h(signal)h(terminates)e(the)h (execution)h(of)e(all)i(in)o(v)o(olv)o(ed)75 158 y(pro)q(cesses,)i (with)f(a)f(suitable)i(error)e(message)g(b)q(eing)i(returned)f(to)f (the)g(user.)37 b(Ho)o(w)o(ev)o(er,)20 b(the)h(user)75 214 y(can)d(pro)o(vide)h(his)g(or)f(her)h(o)o(wn)f(signal)h(handling)h (routine.)30 b(In)19 b(particular,)g(the)g(user)f(can)h(sp)q(ecify)g(a) 75 271 y(\\no)q(op")d(signal)i(handler,)g(th)o(us)f(relegating)g(all)h (error)e(handling)j(to)d(the)h(user)g(co)q(de,)g(using)h(the)f(error)75 327 y(parameters)d(returned)i(b)o(y)f(the)g(MPI)h(calls.)166 384 y(MPI)d(calls)h(ma)o(y)f(initiate)h(op)q(erations)g(that)e(con)o (tin)o(ue)i(async)o(hronously)g(after)e(the)i(call)g(returned.)75 440 y(Th)o(us,)22 b(the)g(op)q(eration)f(ma)o(y)g(return)g(with)h(a)f (co)q(de)h(indicating)h(successful)g(completion,)g(y)o(et)e(later)75 497 y(cause)15 b(an)g(error)g(exception)h(to)e(b)q(e)i(raised.)k(If)15 b(there)g(is)h(a)f(subsequen)o(t)g(call)h(that)f(relates)g(to)f(the)h (same)75 553 y(op)q(eration)f(\(e.g.,)f(a)g(call)i(that)e(v)o (eri\014es)i(that)e(an)h(async)o(hronous)f(op)q(eration)h(has)g (completed\))h(then)f(the)75 610 y(error)f(parameter)g(asso)q(ciated)h (with)g(this)g(call)h(will)g(b)q(e)g(used)f(to)f(indicate)i(the)f (nature)g(of)f(the)h(error.)k(In)75 666 y(a)c(few)h(cases,)f(the)g (error)g(ma)o(y)g(o)q(ccur)h(after)f(all)h(calls)h(that)d(relate)i(to)f (the)h(op)q(eration)f(ha)o(v)o(e)g(completed,)75 723 y(so)g(that)g(no)g(error)g(parameter)g(can)g(b)q(e)i(used)f(to)e (indicate)k(the)d(nature)g(of)g(the)h(error)f(\(e.g.,)f(an)h(error)g (in)75 779 y(a)e(send)i(with)f(the)g(ready)g(mo)q(de\).)19 b(In)13 b(suc)o(h)g(cases,)g(an)g(error)f(will)i(b)q(e)g(undetected,)g (if)f(the)g(user)g(disabled)75 835 y(the)i(MPI)g(error)g(signal.)166 968 y Fl(Discussion:)34 b Fk(The)14 b(alternativ)o(e)g(c)o(hoice)g(is)g (to)g(ha)o(v)o(e)f(fatal)g(and)h(non-fatal)e(signals.)166 1018 y(One)j(migh)o(t)c(w)o(an)o(t)j(di\013eren)o(t)h(signals)e(for)g (di\013eren)o(t)i(mo)q(dules.)166 1074 y(The)f(details)g(of)f(suc)o(h)i (prop)q(osal)e(need)i(b)q(e)g(elab)q(orated)f(in)f(an)h(appropriate)g (\\pro\014le")f(sub)q(committee.)75 1299 y Fm(2.4)70 b(Messages)75 1401 y Fs(A)15 b(message)g(consists)g(of)g(an)g Fi(envelop)n(e)f Fs(and)i Fi(data)p Fs(.)75 1521 y Fj(2.4.1)55 b(Data)75 1607 y Fs(The)19 b(data)f(part)g(of)g(a)h(message)f(consists) h(of)f(a)h(sequence)g(of)g(v)m(alues,)h(eac)o(h)f(of)f(a)h(basic)g (datat)o(yp)q(e)f(in)75 1664 y(the)d(host)f(language.)20 b(Th)o(us,)14 b(in)i(F)l(ortran)d(77,)h(a)h(message)f(consists)h(of)f (a)g(sequence)i(of)e(v)m(alues)i(that)e(are)75 1720 y(eac)o(h)20 b(of)g(t)o(yp)q(e)h Fh(INTEGER)p Fs(,)e Fh(REAL)p Fs(,)g Fh(DOUBLE)k(PRECISION)p Fs(,)c Fh(COMPLEX)p Fs(,)g Fh(DOUBLE)k (PRECISION)f(COMPLEX)p Fs(,)75 1776 y Fh(LOGICAL)p Fs(,)12 b(or)h(\(length)h(1\))f Fh(CHARACTER)p Fs(.)e(A)j(message)f(ma)o(y)f (also)i(con)o(tain)f(a)h(v)m(alue)g(of)f(t)o(yp)q(e)h Fh(BYTE)p Fs(,)e(whic)o(h)75 1833 y(consists)19 b(of)g(8)f(binary)i (digits.)31 b(A)19 b(b)o(yte)g(is)g(di\013eren)o(t)g(from)f(a)h(c)o (haracter.)30 b(Diferen)o(t)19 b(mac)o(hines)h(ma)o(y)75 1889 y(ha)o(v)o(e)e(di\013eren)o(t)h(represen)o(tations)g(for)f(the)h (same)f(c)o(haracter,)h(or)f(ma)o(y)g(use)h(more)g(than)f(one)h(b)o (yte)g(to)75 1946 y(reprensen)o(t)j(a)g(c)o(haracter.)40 b(On)23 b(the)f(other)g(hand,)i(a)d(b)o(yte)h(has)g(the)g(same)g (binary)h(v)m(alue)g(on)f(an)o(y)75 2002 y(mac)o(hine.)f(A)15 b(message)g(ma)o(y)f(mix)i(v)m(alues)g(of)f(di\013eren)o(t)g(t)o(yp)q (es.)166 2135 y Fl(Missing:)166 2185 y Fk(Need)e(to)f(agree)h(on)e(the) i(C)f(t)o(yp)q(es)h(\(including)e(handling)g(of)h(signed/unsigned\),)g (and)g(on)g(F)m(ortran)g(90)f(t)o(yp)q(es)75 2234 y(\(including)i (handling)g(of)g(kinds\).)75 2438 y Fj(2.4.2)55 b(En)n(v)n(elop)r(e)75 2524 y Fs(The)15 b(follo)o(wing)h(information)g(is)f(asso)q(ciated)h (with)f(eac)o(h)h(message:)75 2612 y Ft(source)22 b Fs(The)16 b(rank)f(the)g(sending)h(pro)q(cess)75 2704 y Ft(destination)25 b Fs(The)15 b(rank)g(of)g(the)g(receiving)i(pro)q(cess)p eop %%Page: 10 15 10 14 bop 75 -100 a Fs(10)608 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Ft(tag)24 b Fs(User)15 b(de\014ned)75 154 y Ft(con)o(text)23 b Fs(handle)166 263 y(The)14 b(range)g(of)g(v)m(alid)h(v)m(alues)h(for)d (the)h Ft(source)g Fs(and)g Ft(destination)i Fs(\014elds)g(is)e Fh(0)24 b(...)47 b(n-1)p Fs(,)14 b(where)75 320 y Fh(n)g Fs(is)h(the)f(n)o(um)o(b)q(er)h(of)f(pro)q(cesses)g(in)h(the)g(sp)q (eci\014ed)h(con)o(text.)j Fh(source)k(=)h(destination)13 b Fs(is)h(allo)o(w)o(ed:)20 b(a)75 376 y(pro)q(cess)15 b(can)h(send)g(a)e(message)h(to)g(itself.)166 437 y(The)h(ranges)f(of)h (v)m(alid)h(v)m(alues)g(for)e Fh(tag)h Fs(is)g(implemen)o(tation)h(dep) q(enden)o(t,)g(and)f(can)g(b)q(e)h(found)f(b)o(y)75 493 y(calling)h(a)e(suitable)h(query)g(function,)f(as)g(describ)q(ed)i(in)f (Section)g(7.)166 553 y(The)f Fh(tag)g Fs(\014eld)h(can)f(b)q(e)h (arbitrarily)g(set)f(b)o(y)g(the)g(application,)h(and)g(can)f(b)q(e)h (used)f(to)g(distinguish)75 610 y(di\013eren)o(t)g(messages.)166 670 y Fh(Context)f Fs(should)i(b)q(e)g(a)f(con)o(text)g(shared)g(b)o(y) g(b)q(oth)g(source)h(and)f(destination.)166 730 y(The)e(actual)h(mec)o (hanism)g(used)f(to)g(asso)q(ciate)g(an)g(en)o(v)o(elop)q(e)i(with)e(a) g(message)g(is)h(implemen)o(tation)75 787 y(dep)q(enden)o(t;)k(some)e (of)g(the)g(information)g(\(e.g.,)f Ft(sender)g Fs(or)h Ft(receiv)o(er)p Fs(\))f(ma)o(y)g(b)q(e)i(implicit,)i(and)d(need)75 843 y(not)f(b)q(e)h(explicitly)i(carried)d(b)o(y)h(a)e(message.)75 1008 y Fm(2.5)70 b(Comm)n(unication)20 b(Bu\013ers)75 1117 y Fs(The)f(basic)h(p)q(oin)o(t)g(to)e(p)q(oin)o(t)i(comm)o (unication)g(op)q(erations)f(are)g Ft(send)g Fs(and)g Ft(receiv)o(e)p Fs(.)31 b(A)19 b Ft(send)g Fs(op-)75 1174 y(eration)g(creates)g(a)f(message;)i(the)g(message)e(data)g(is)i (tak)o(en)f(from)f(the)h Ft(send)i(bu\013er)p Fs(.)31 b(A)19 b Ft(receiv)o(e)75 1230 y Fs(op)q(eration)i(consumes)h(a)f (message;)i(the)e(message)g(data)f(is)i(put)f(in)o(to)g(the)g Ft(receiv)o(e)j(bu\013er)p Fs(.)37 b(The)75 1287 y(sp)q(eci\014cation) 17 b(of)e(send)h(or)e(receiv)o(e)i(bu\013ers)g(uses)f(the)g(same)g(syn) o(tax.)166 1347 y(A)j(bu\013er)g(consists)h(of)e(a)h(sequence)h Ft(bu\013er)h(comp)q(onen)o(ts)p Fs(.)29 b(Eac)o(h)18 b(comp)q(onen)o(t)g(consists)h(of)e(a)75 1403 y(sequence)h(of)f(\(not)g (necessarily)i(distinct\))f(v)m(ariables)g(of)f(the)h(same)e(basic)i (datat)o(yp)q(e.)26 b(The)17 b(datat)o(yp)q(e)75 1460 y(of)k(suc)o(h)h(v)m(ariable)h(is)f(sp)q(eci\014ed)i(b)o(y)e(a)f(state) g(parameter.)39 b(The)21 b(p)q(ossible)j(v)m(alues)f(for)e(F)l(ortran)f (are)75 1516 y Fh(MPI)p 150 1516 15 2 v 17 w(INT)p Fs(,)e Fh(MPI)p 342 1516 V 17 w(REAL)p Fs(,)h Fh(MPI)p 559 1516 V 16 w(DOUBLE)p Fs(,)g Fh(MPI)p 823 1516 V 16 w(COMPLEX)p Fs(,)g Fh(MPI)p 1111 1516 V 16 w(DCOMPLEX)p Fs(,)f Fh(MPI)p 1422 1516 V 17 w(LOGICAL)p Fs(,)g(MPI)p 1727 1516 14 2 v 17 w(CHAR)75 1573 y(and)k Fh(MPI)p 245 1573 15 2 v 17 w(BYTE)p Fs(,)f(corrsp)q(onding)i(to)f(datat)o(yp)q(es)g Fh(INTEGER)p Fs(,)e Fh(REAL)p Fs(,)i Fh(DOUBLE)h(PRECISION)p Fs(,)d Fh(COMPLEX)p Fs(,)75 1629 y Fh(DOUBLE)j(PRECISION)g(COMPLEX)p Fs(,)13 b Fh(LOGICAL)p Fs(,)g Fh(CHARACTER)g Fs(and)i(to)f(un)o(t)o(yp) q(ed)h Fh(BYTE)p Fs(.)f(The)h(p)q(ossible)h(v)m(al-)75 1686 y(ues)10 b(for)g(C)g(are)g Fh(MPI)p 402 1686 V 17 w(CHAR)p Fs(,)f Fh(MPI)p 609 1686 V 16 w(SHORT)p Fs(,)h Fh(MPI)p 840 1686 V 16 w(INT)p Fs(,)g Fh(MPI)p 1023 1686 V 16 w(LONG)p Fs(,)g Fh(MPI)p 1230 1686 V 16 w(FLOAT)p Fs(,)f Fh(MPI)p 1460 1686 V 17 w(DOUBLE)g Fs(and)i Fh(MPI)p 1786 1686 V 17 w(BYTE)p Fs(.)166 1822 y Fl(Discussion:)166 1876 y Fk(Ma)o(y)17 b(need)i(to)f(tak)o(e)g(care)h(of)e(kinds)h(in)g(F) m(ortran)f(90)h(and)g(of)f(signed/unsigned)h(in)g(C.)f(More)i(elab)q (orate)75 1926 y(de\014nitions)14 b(b)q(elong)f(to)h(the)h(language)e (binding.)166 2069 y Fs(There)i(are)g(\014v)o(e)h(kinds)g(of)f (bu\013er)g(comp)q(onen)o(ts:)75 2210 y Ft(Con)o(tiguous)46 b Fs(A)15 b(sequence)h(of)f(con)o(tiguous)g(v)m(alues)i(of)e(the)g (same)g(basic)h(t)o(yp)q(e,)e(sp)q(eci\014ed)k(b)o(y)75 2320 y Ft(start)23 b Fs(Initial)17 b(elemen)o(t)75 2429 y Ft(len)23 b Fs(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(\()p Fh(len)11 b Fo(\025)i Fh(0)p Fs(\))75 2538 y Ft(datat)o(yp)q(e)24 b Fs(T)o(yp)q(e)15 b(of)g(elemen)o(ts)166 2647 y(Th)o(us,)e(if)h Fh(A)e Fs(is)i(an)f(arra)o(y)f(of)h(in)o(tegers,)g(then)g Fh(A\(1\),)24 b(4,)f(MPI)p 1210 2647 V 17 w(INT)13 b Fs(is)g(the)g(bu\013er)g(comp)q(onen)o(t)h(with)75 2704 y(en)o(tries)i Fh(A\(1\),)23 b(A\(2\),)g(A\(3\),)g(A\(4\))p Fs(.)p eop %%Page: 11 16 11 15 bop 75 -100 a Fq(2.5.)34 b(COMMUNICA)l(TION)16 b(BUFFERS)1001 b Fs(11)75 45 y Ft(V)l(ector)45 b Fs(A)19 b(sequence)h(of)f(equally)h(spaced)g(and)f(equally)i(sized)f(blo)q(c)o (ks)g(of)f(elemen)o(ts)g(of)g(the)g(same)75 102 y(basic)d(t)o(yp)q(e,)f (sp)q(eci\014ed)i(b)o(y)75 196 y Ft(start)23 b Fs(Initial)17 b(elemen)o(t)75 291 y Ft(len)23 b Fs(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(\()p Fh(len)11 b Fo(\025)i Fh(0)p Fs(\))75 386 y Ft(stride)23 b Fs(Num)o(b)q(er)15 b(of)g(elemen)o(ts)h (b)q(et)o(w)o(een)f(the)h(start)e(of)g(eac)o(h)i(blo)q(c)o(k)75 481 y Ft(len)o(blk)23 b Fs(Num)o(b)q(er)16 b(of)e(elemen)o(ts)i(in)g (eac)o(h)g(blo)q(c)o(k)f(\()p Fh(lenblk)d Fr(>)h Fh(0)p Fs(\))75 576 y Ft(datat)o(yp)q(e)24 b Fs(T)o(yp)q(e)15 b(of)g(elemen)o(ts)166 671 y(Assume)c(that)f(an)h(elemen)o(t)h(of)e(t)o (yp)q(e)h Fh(datatype)f Fs(o)q(ccupies)i Fh(m)f Fs(b)o(ytes.)18 b(Then,)12 b(in)g(a)e(b)o(yte)h(addressable)75 727 y(mac)o(hine,)k(the) g(bu\013er)g(comp)q(onen)o(t)g(describ)q(ed)i(b)o(y)e(these)g(\014v)o (e)g(parameters)f(consists)h(of)f(the)h Fh(len)f Fs(v)m(ari-)75 783 y(ables)i(at)e(addresses)i Fh(start,)23 b(start+m,)g(...)47 b(,)24 b(start+m*\(lenblk-1\),)d(start+m*stride,)75 840 y(start+m*\(stride+1\),)g(...,)j(start+m*\(stride+lenblk-)o(1\),)d(...) p Fs(.)h(F)l(or)16 b(example,)h(if)f Fh(A)g Fs(is)h(an)75 896 y(arra)o(y)d(of)h(in)o(tegers,)g(then)143 991 y Fo(\017)23 b Fh(A\(1\),)g(5,)g(3,)h(2,)g(MPI)p 622 991 15 2 v 16 w(INT)17 b Fs(is)g(the)g(bu\013er)g(comp)q(onen)o(t)g(with)g(en)o (tries)g Fh(A\(1\),)24 b(A\(2\),)f(A\(4\),)189 1048 y(A\(5\),)g(A\(7\)) p Fs(.)143 1142 y Fo(\017)g Fh(A\(1\),)g(5,)g(0,)h(2,)g(MPI)p 622 1142 V 16 w(INT)17 b Fs(is)g(the)g(bu\013er)g(comp)q(onen)o(t)g (with)g(en)o(tries)g Fh(A\(1\),)24 b(A\(2\),)f(A\(1\),)189 1199 y(A\(2\),)g(A\(1\))p Fs(.)143 1294 y Fo(\017)g Fh(A\(10\),)g(5,)g (-1,)h(2,)f(MPI)p 669 1294 V 17 w(INT)g Fs(is)h(the)g(bu\013er)g(comp)q (onen)o(t)g(with)g(en)o(tries)g Fh(A\(10\),)f(A\(11\),)189 1350 y(A\(9\),)g(A\(10\),)g(A\(8\))p Fs(.)166 1445 y Fh(Contiguous)18 b Fs(is)h(a)g(sp)q(ecial)i(case)e(of)g Fh(vector)p Fs(.)30 b(A)19 b(v)o(ector)g(bu\013er)g(comp)q(onen)o(t)g (can)g(b)q(e)h(used)g(to)75 1502 y(extract)14 b(an)i(arbitrary)e (submatrix)h(of)g(a)g(t)o(w)o(o-dimensional)h(matrix.)75 1623 y Ft(Indexed)45 b Fs(A)15 b(sequence)i(of)d(elemen)o(ts)i(of)f (the)g(same)g(basic)h(t)o(yp)q(e,)f(sp)q(eci\014ed)i(b)o(y)75 1718 y Ft(start)23 b Fs(initial)17 b(elemen)o(t)75 1813 y Ft(len)23 b Fs(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(\()p Fh(len)11 b Fo(\025)i Fh(0)p Fs(\))75 1908 y Ft(arra)o(y)p 199 1908 16 2 v 18 w(of)p 259 1908 V 19 w(indices)23 b Fs(Arra)o(y)11 b(of)g(displacemen)o(ts)i(of)e(the)h(elemen)o(ts)g(in) g(the)g(bu\013er)f(comp)q(onen)o(ts,)h(relativ)o(e)189 1964 y(to)i(the)h(initial)j(elemen)o(t.)75 2059 y Ft(datat)o(yp)q(e)24 b Fs(T)o(yp)q(e)15 b(of)g(elemen)o(ts)166 2154 y(F)l(or)20 b(example,)i(if)f Fh(A)f Fs(is)h(an)g(arra)o(y)e(of)h(in)o(tegers,)h (and)g Fh(I)f Fs(is)h(an)g(arra)o(y)e(with)i(v)m(alues)g Fh(2,)j(-1,)f(2,)75 2210 y(1)c Fs(then)h Fh(A\(3\),)j(4,)h(I,)f(MPI)p 587 2210 15 2 v 17 w(INT)c Fs(is)h(the)f(bu\013er)h(comp)q(on)o(ten)o (t)f(with)h(en)o(tries)f Fh(A\(5\),)24 b(A\(2\),)f(A\(5\),)75 2267 y(A\(4\))p Fs(.)166 2323 y Fh(Vector)14 b Fs(is)i(a)f(sp)q(ecial)i (case)e(of)g Fh(indexed)p Fs(.)75 2445 y Ft(Heterogeneous)25 b(V)l(ector)g(\(h)o(v)o(ector\))45 b Fs(Same)22 b(as)g Fh(vector)p Fs(,)h(except)g(that)e Fh(stride)h Fs(is)g(giv)o(en)h(in)75 2501 y(m)o(ultiple)17 b(of)e(b)o(ytes,)f(rather)h(than)g(m)o(ultiples)i (of)e(elemen)o(ts:)75 2609 y Ft(start)23 b Fs(Initial)17 b(elemen)o(t)75 2704 y Ft(len)23 b Fs(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(\()p Fh(len)11 b Fo(\025)i Fh(0)p Fs(\))p eop %%Page: 12 17 12 16 bop 75 -100 a Fs(12)608 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Ft(stride)23 b Fs(Num)o(b)q(er)15 b(of)g(b)o(ytes)g(b)q(et)o(w)o(een)h(the)f(start)f (of)h(eac)o(h)g(blo)q(c)o(k)75 138 y Ft(len)o(blk)23 b Fs(Num)o(b)q(er)16 b(of)e(elemen)o(ts)i(in)g(eac)o(h)g(blo)q(c)o(k)f (\()p Fh(lenblk)d Fr(>)h Fh(0)p Fs(\))75 231 y Ft(datat)o(yp)q(e)24 b Fs(T)o(yp)q(e)15 b(of)g(elemen)o(ts)166 334 y(Assume)h(that)f(an)h (elemen)o(t)g(of)f(t)o(yp)q(e)h Fh(datatype)f Fs(o)q(ccupies)i Fh(m)f Fs(b)o(ytes.)21 b(Then,)16 b(in)h(a)e(b)o(yte)h(address-)75 390 y(able)g(mac)o(hine,)g(the)g(bu\013er)f(comp)q(onen)o(t)h(describ)q (ed)i(b)o(y)d(these)h(\014v)o(e)f(parameters)g(consists)h(of)f(the)g Fh(len)75 447 y Fs(v)m(ariables)23 b(at)e(addresses)h Fh(start,)h(start+m,)f(...)48 b(,)24 b(start+m*\(lenblk-1\),)d (start+stride,)75 503 y(start+stride+m,)h(...,)h (start+stride+m*\(lenblk-1\),)d(...)p Fs(.)166 559 y(Consider)c(a)f(C)g (arra)o(y)e(declared)k(as)75 662 y Fh(struct)23 b({)147 719 y(char)g(info[3];)147 775 y(short)g(number;)147 832 y(double)g(val;)242 888 y(})71 b(a[100])166 991 y Fs(Assume)11 b(that)f(all)i(structure)e(comp)q(onen)o(ts)h(are)f(b)o(yte)h(aligned,) i(a)d Fh(short)g Fs(o)q(ccupies)i(t)o(w)o(o)e(b)o(ytes,)h(and)75 1047 y(a)h Fh(double)g Fs(o)q(ccupies)i(eigh)o(t)e(b)o(ytes.)19 b(Then)13 b(the)f(bu\013er)h(comp)q(onen)o(t)f Fh(&a,)24 b(100,)f(13,)g(2,)h(MPI)p 1694 1047 15 2 v 17 w(CHAR)12 b Fs(ex-)75 1104 y(tracts)f(the)h(\014rst)g(t)o(w)o(o)f(c)o(haracters)g (of)h(eac)o(h)g(structure.)19 b(The)12 b(bu\013er)g(comp)q(onen)o(t)g Fh(&\(a.number\),)23 b(100,)75 1160 y(13,)g(1,)h(MPI)p 317 1160 V 17 w(SHORT)19 b Fs(extracts)f(the)i Fh(short)f Fs(\014eld)h(of)f(eac)o(h)h(structure;)h(and)f(the)f(bu\013er)h(comp)q (onen)o(t)75 1217 y Fh(&\(a.val\),)j(100,)g(13,)g(1)18 b Fs(extracts)e(the)i Fh(double)f Fs(\014eld)i(of)e(eac)o(h)g (structure.)27 b(Th)o(us,)18 b(heterogeneous)75 1273 y(v)o(ectors)c(can)i(b)q(e)g(used)f(to)g(extract)f(v)o(ectors)h(of)g (homogeneous)g(v)m(alues)h(from)e(heterogenous)i(data.)166 1330 y Fh(Vector)e Fs(is)i(a)f(sp)q(ecial)i(case)e(of)g Fh(heterogenous)22 b(vector)p Fs(.)75 1449 y Ft(Heterogeneous)d (indexed)g(\(hindexed\))46 b Fs(Same)16 b(as)g(indexed,)j(except)e (that)e(displacemen)o(ts)j(are)75 1506 y(in)e(b)o(ytes,)f(rather)f (than)h(m)o(ultiples)i(of)e(elemen)o(t)h(size.)75 1609 y Ft(start)23 b Fs(initial)17 b(elemen)o(t)75 1701 y Ft(len)23 b Fs(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(\()p Fh(len)11 b Fo(\025)i Fh(0)p Fs(\))75 1794 y Ft(arra)o(y)p 199 1794 16 2 v 18 w(of)p 259 1794 V 19 w(indices)23 b Fs(Arra)o(y)17 b(of)g(b)o(yte)h(displacemen)o(ts)h(of)e(the)h(elemen) o(ts)g(in)h(the)f(bu\013er)f(comp)q(onen)o(ts,)189 1851 y(relativ)o(e)e(to)g(the)g(initial)j(elemen)o(t.)75 1944 y Ft(datat)o(yp)q(e)24 b Fs(T)o(yp)q(e)15 b(of)g(elemen)o(ts)166 2046 y(F)l(or)21 b(example,)k(if)d Fh(a)g Fs(is)h(the)f(C)g(arra)o(y)e (of)i(the)g(previous)h(example,)h(and)e Fh(I)g Fs(is)h(an)f(arra)o(y)f (with)75 2103 y(v)m(alues)14 b Fh(0,)24 b(13,)f(13,)h(27,)f(26)13 b Fs(then)h Fh(&a,)23 b(5,)h(I,)f(MPI)p 1042 2103 15 2 v 17 w(CHAR)13 b Fs(is)g(the)h(bu\013er)f(comp)q(onen)o(t)g(with)h (en)o(tries)75 2159 y Fh(a[0].info[0],)22 b(a[1].info[0],)g (a[1].info[0],)g(a[1].info[1],)g(a[1].info[0])p Fs(.)166 2216 y(Lik)o(e)d Fh(heterogenous)j(vector)p Fs(,)17 b Fh(heterogenous)22 b(indexed)17 b Fs(extends)i(the)f Fh(indexed)e Fs(facilit)o(y)j(so)75 2272 y(as)c(to)f(allo)o(w)i(the)f (extraction)g(of)g(homogeneous)g(data)f(from)h(a)g(heterogenous)g(la)o (y)o(out.)166 2405 y Fl(Discussion:)166 2455 y Fk(The)10 b(use)g(of)f(displacemen)o(ts)g(in)g(indexed)h(bu\013er)h(comp)q(onen)o (ts)e(has)h(the)g(same)f(e\013ect)i(as)e(indirect)h(addressing)75 2504 y(in)o(to)j(an)g(arra)o(y)h(with)f(initial)e(index)j(zero.)19 b(I.e.,)12 b(if)h Fg(a)h Fk(is)f(an)g(arra)o(y)h(with)f(initial)f (index)h(zero,)h(then)g(a)g(bu\013er)g(com-)75 2554 y(p)q(onen)o(t)j (de\014ned)h(b)o(y)e(parameters)g Fg(a[0],)21 b(N,)h(i,)f(type)16 b Fk(extract)h(the)g(elemen)o(ts)g Fg(a[i[0]],)j(a[i[1]],)g(...,)75 2604 y(a[i[n]])p Fk(.)25 b(This)16 b(\014ts)h(w)o(ell)f(C)h(usage)g (but)f(ill-\014ts)g(F)m(ortran)g(usage)h(\(initial)e(index)i(one\).)26 b(W)m(e)16 b(to)q(ok)g(a)h(decision)75 2654 y(of)d(principle)h(to)f (force)h(\\start)g(from)e(zero")i(index)g(arithmetic)e(on)i(F)m(ortran) f(users,)i(rather)f(than)g(ha)o(v)o(e)g(diferen)o(t)75 2704 y(index)f(arithmetic)f(in)g(the)i(C)e(and)h(F)m(ortran)g(binding)f (of)g(MPI.)p eop %%Page: 13 18 13 17 bop 75 -100 a Fq(2.5.)34 b(COMMUNICA)l(TION)16 b(BUFFERS)1001 b Fs(13)166 45 y Fk(The)15 b(use)h(of)e(b)q(oth)h (bu\013er)h(comp)q(onen)o(ts)f(with)g(b)o(yte)g(and)g(elemen)o(t)f (size)i(displacemen)o(ts)e(is)h(motiv)n(ated)e(b)o(y)75 95 y(the)j(observ)n(ation)f(that)g(some)g(applications)f(require)i(the) g(more)f(general)g(b)o(yte)h(displacemen)o(t,)e(but)i(that)f(most)75 145 y(applications)d(w)o(ould)h(use)i(elemen)o(t)e(size)h(displacemen)o (t,)e(whic)o(h)i(is)f(m)o(uc)o(h)f(more)h(natural)g(and)g(con)o(v)o (enien)o(t)h(\(and)75 195 y(mac)o(hine)i(indep)q(enden)o(t\).)29 b(Th)o(us,)18 b(rather)g(than)f(forcing)f(all)g(users)j(to)e(do)f(b)o (yte)i(arithemetic,)f(w)o(e)g(decided)h(to)75 244 y(pro)o(vide)c (separately)g(the)h(more)e(adv)n(anced)h(function)f(to)h(\\exp)q(ert)h (programmers".)166 384 y Fs(A)g(bu\013er)h(is)g(describ)q(ed)h(b)o(y)e (an)h(opaque)f(ob)s(ject)g(accessed)h(via)g(a)f Ft(bu\013er)i(handle)p Fs(.)k(Suc)o(h)c(ob)s(ject)75 440 y(is)k(created)g(b)o(y)f Fh(MPI)p 434 440 15 2 v 17 w(CREATE)p 595 440 V 16 w(BUFFER)p Fs(.)f(It)i(is)g(asso)q(ciated)g(with)f(successiv)o(e)i(bu\013er)e (comp)q(onen)o(ts)h(b)o(y)75 497 y(calling)c(in)g(succession)f(one)g (of)f(the)g(functions)i Fh(MPI)p 974 497 V 16 w(APPEND)p 1134 497 V 17 w(xxx)p Fs(,)d(where)i Fh(xxx)f Fs(iden)o(ti\014es)i(the) f(t)o(yp)q(e)f(of)75 553 y(bu\013er)i(comp)q(onen)o(t)h(app)q(ended)h (to)d(the)i(bu\013er.)26 b(It)18 b(b)q(ecomes)g(a)o(v)m(ailable)h(for)d (use)i(in)g(comm)o(unication)75 610 y(op)q(erations)h(once)h(committed) f(b)o(y)g(the)g(function)h Fh(MPI)p 1045 610 V 17 w(COMMIT)p Fs(.)d(A)i(bu\013er)g(descriptor)h(is)f(destro)o(y)o(ed)75 666 y(after)13 b(the)h(completion)h(of)f(the)g(\014rst)f(comm)o (unication)i(op)q(eration)f(that)f(uses)h(it,)h(if)f(it)g(is)h (ephemeral,)f(or)75 723 y(after)h(it)g(is)h(freed)g(b)o(y)f(a)g(call)i (to)d Fh(MPI)p 702 723 V 17 w(FREE)h Fs(and)g(an)o(y)g(p)q(ending)i (comm)o(unication)f(op)q(eration)g(that)f(uses)75 779 y(it)i(has)f(completed,)h(if)g(it)f(is)h(p)q(ersisten)o(t.)24 b(After)16 b(the)g(bu\013er)h(descriptor)f(ob)s(ject)g(has)g(b)q(een)i (destro)o(y)o(ed,)75 836 y(the)d(handle)i(is)e(unde\014ned.)166 928 y Ft(MPI)p 275 928 16 2 v 18 w(CREA)l(TE)p 510 928 V 19 w(BUFFER\()j(bu\013er,)e(p)q(ersistence)i(\))166 1020 y Fs(Create)d(a)f(new)i(bu\013er)f(descriptor)h(ob)s(ject.)j(The)c (parameters)g(are:)75 1116 y Ft(OUT)j(bu\013er)k Fs(bu\013er)15 b(handle)75 1212 y Ft(IN)i(p)q(ersistence)23 b Fs(bu\013er)g(p)q (ersistence)h(\(state)e(t)o(yp)q(e)h(with)g(p)q(ossible)h(v)m(alues)g Fh(MPI)p 1559 1212 15 2 v 17 w(PERSISTENT)d Fs(or)189 1269 y Fh(MPI)p 264 1269 V 16 w(EPHEMERAL)p Fs(\).)166 1441 y Fl(Discussion:)166 1491 y Fk(Ma)o(y)d(w)o(an)o(t)g(to)h(pro)o (vide)f(information)e(on)i(maxim)n(um)c(ob)r(ject)20 b(size,)g(and)e(p)q(erhaps)i(user)g(space)f(for)f(the)75 1541 y(ob)r(ject.)166 1716 y Ft(MPI)p 275 1716 16 2 v 18 w(APPEND)p 520 1716 V 18 w(CONTIGUOUS\()h(bu\013er,)d(start,)h(len,) g(datat)o(yp)q(e\))166 1808 y Fs(App)q(end)g(a)e(blo)q(c)o(k)g(comp)q (onen)o(t)h(to)e(bu\013er.)20 b(The)c(parameters)e(are:)75 1904 y Ft(INOUT)k(bu\013er)k Fs(bu\013er)15 b(handle)75 2000 y Ft(IN)i(start)23 b Fs(bu\013er)15 b(comp)q(onen)o(t)h(initial)h (elemen)o(t)f(\(c)o(hoice\))75 2096 y Ft(IN)h(len)23 b Fs(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(\(in)o(teger\))75 2192 y Ft(IN)h(datat)o(yp)q(e)24 b Fs(datat)o(yp)q(e)15 b(iden)o(ti\014er)h(\(status\))166 2323 y Ft(MPI)p 275 2323 V 18 w(APPEND)p 520 2323 V 18 w(VEC\()h(bu\013er,)f(len,)i (stride,)f(len)o(blk,)g(datat)o(yp)q(e)i(\))166 2416 y Fs(App)q(end)e(a)e(v)o(ector)f(bu\013er)h(comp)q(onen)o(t)g(to)g (bu\013er.)20 b(The)15 b(parameters)g(are:)75 2512 y Ft(INOUT)j(bu\013er)k Fs(bu\013er)15 b(handle)75 2608 y Ft(IN)i(start)23 b Fs(bu\013er)15 b(comp)q(onen)o(t)h(initial)h (elemen)o(t)f(\(c)o(hoice\))75 2704 y Ft(IN)h(len)23 b Fs(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(\(in)o(teger\))p eop %%Page: 14 19 14 18 bop 75 -100 a Fs(14)608 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Ft(IN)h(stride)23 b Fs(Num)o(b)q(er)16 b(of)e(elemen)o(ts)i(b)q(et)o(w)o(een)g(the)f (start)f(of)h(eac)o(h)g(blo)q(c)o(k)h(\(in)o(teger\))75 136 y Ft(IN)h(len)o(blk)23 b Fs(Num)o(b)q(er)16 b(of)e(elemen)o(ts)i (in)g(eac)o(h)g(blo)q(c)o(k)g(\(in)o(teger\))75 228 y Ft(IN)h(datat)o(yp)q(e)24 b Fs(datat)o(yp)q(e)15 b(iden)o(ti\014er)h (\(status\))166 350 y Ft(MPI)p 275 350 16 2 v 18 w(APPEND)p 520 350 V 18 w(INDEXED\()i(bu\013er,)e(start,)h(len,)h(arra)o(y)p 1352 350 V 17 w(of)p 1411 350 V 19 w(indices,)g(datat)o(yp)q(e\))166 442 y Fs(App)q(end)f(an)e(indexed)i(bu\013er)e(comp)q(onen)o(t)g(to)g (bu\013er.)20 b(The)15 b(parameters)f(are:)75 530 y Ft(INOUT)k (bu\013er)k Fs(bu\013er)15 b(handle)75 621 y Ft(IN)i(start)23 b Fs(initial)17 b(p)q(osition)g(for)d(indexing)j(\(c)o(hoice\))75 712 y Ft(IN)g(len)23 b Fs(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(\(in)o (teger\))75 803 y Ft(IN)h(arra)o(y)p 277 803 V 18 w(of)p 337 803 V 19 w(indices)24 b Fs(arra)o(y)14 b(of)g(displacemen)o(ts)j (of)e(en)o(tries)g(relativ)o(e)h(to)f(start)f(\(arra)o(y)f(of)i(in)o (tegers\))75 894 y Ft(IN)i(datat)o(yp)q(e)24 b Fs(datat)o(yp)q(e)15 b(iden)o(ti\014er)h(\(status\))166 1017 y Ft(MPI)p 275 1017 V 18 w(APPEND)p 520 1017 V 18 w(HVEC\()h(bu\013er,)f(len,)i (stride,)f(len)o(blk,)g(datat)o(yp)q(e)h(\))166 1109 y Fs(App)q(end)f(a)e(heterogenous)g(v)o(ector)f(bu\013er)h(comp)q(onen) o(t)h(to)e(bu\013er.)20 b(The)15 b(parameters)g(are:)75 1196 y Ft(INOUT)j(bu\013er)k Fs(bu\013er)15 b(handle)75 1288 y Ft(IN)i(start)23 b Fs(bu\013er)15 b(comp)q(onen)o(t)h(initial)h (elemen)o(t)f(\(c)o(hoice\))75 1379 y Ft(IN)h(len)23 b Fs(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(\(in)o(teger\))75 1470 y Ft(IN)h(stride)23 b Fs(Num)o(b)q(er)16 b(of)e(b)o(ytes)h(b)q(et) o(w)o(een)h(the)f(start)f(of)h(eac)o(h)g(blo)q(c)o(k)h(\(in)o(teger\)) 75 1561 y Ft(IN)h(len)o(blk)23 b Fs(Num)o(b)q(er)16 b(of)e(elemen)o(ts) i(in)g(eac)o(h)g(blo)q(c)o(k)g(\(in)o(teger\))75 1653 y Ft(IN)h(datat)o(yp)q(e)24 b Fs(datat)o(yp)q(e)15 b(iden)o(ti\014er)h (\(status\))166 1775 y Ft(MPI)p 275 1775 V 18 w(APPEND)p 520 1775 V 18 w(HINDEXED\()h(bu\013er,)f(start,)h(len,)g(arra)o(y)p 1391 1775 V 18 w(of)p 1451 1775 V 19 w(indices,)h(datat)o(yp)q(e\))166 1924 y Fs(App)q(end)f(an)e(heterogenous)g(indexed)i(bu\013er)e(comp)q (onen)o(t)g(to)g(bu\013er.)20 b(The)15 b(parameters)f(are:)75 2011 y Ft(INOUT)k(bu\013er)k Fs(bu\013er)15 b(handle)75 2102 y Ft(IN)i(start)23 b Fs(initial)17 b(p)q(osition)g(for)d(indexing) j(\(c)o(hoice\))75 2194 y Ft(IN)g(len)23 b Fs(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(\(in)o(teger\))75 2285 y Ft(arra)o(y)p 199 2285 V 18 w(of)p 259 2285 V 19 w(indices)23 b Fs(arra)o(y)12 b(of)h(b)o(yte)g(displacemen)o(ts)i(of)e(en)o(tries)g(relativ)o(e)h(to) f(start)f(\(arra)o(y)f(of)i(in)o(tegers\))75 2376 y Ft(IN)k(datat)o(yp) q(e)24 b Fs(datat)o(yp)q(e)15 b(iden)o(ti\014er)h(\(status\))166 2499 y Ft(MPI)p 275 2499 V 18 w(COMMIT)p 526 2499 V 18 w(BUFFER\()j(bu\013erin)e(\))166 2591 y Fs(Commit)i(a)g(bu\013er)g (descriptor)h(ob)s(ject.)31 b(The)19 b(ob)s(ject)g(cannot)g(b)q(e)h(c)o (hanged)g(an)o(ymore)e(after)h(it)75 2647 y(is)h(committed.)31 b(A)19 b(bu\013er)g(descriptor)g(ob)s(ject)g(can)g(b)q(e)h(used)f(for)g (comm)o(unication)g(only)h(after)e(it)h(is)75 2704 y(committed.)h(The) 15 b(parameters)g(are:)p eop %%Page: 15 20 15 19 bop 75 -100 a Fq(2.5.)34 b(COMMUNICA)l(TION)16 b(BUFFERS)1001 b Fs(15)75 45 y Ft(INOUT)18 b(bu\013er)k Fs(bu\013er)15 b(descriptor)h(handle)166 216 y Fl(Discussion:)166 267 y Fk(The)j(commit)d(function)j(ma)o(y)e(do)h(prepro)q(cessing)j(of) d(the)i(bu\013er)g(descriptor)g(to)f(simplify)d(its)i(use)i(and)75 316 y(commit)12 b(resources)17 b(in)d(the)i(comm)o(uni)o(cation)c (subsystem)j(for)f(its)h(use.)21 b(The)16 b(commit)11 b(function)k(ma)o(y)e(generate)75 366 y(a)h(new)g(ob)r(ject)h(and,)e (hence,)i(mo)q(dify)c(the)k(ob)r(ject)f(handle.)166 506 y Fs(Consider,)h(for)g(example,)h(the)f(follo)o(wing)h(fragmen)o(t)e (of)h(F)l(ortran)f(co)q(de)75 614 y Fh(DOUBLE)23 b(PRECISION)g (A\(10,20\))75 671 y(INTEGER)g(B,)g(C\(5,10\))75 727 y(INTEGER)g(BH)75 784 y(...)75 840 y(CALL)g(MPI_CREATE_BUFFER\(BH,)e (MPI_PERSISTENT\))75 897 y(CALL)i(MPI_APPEND_BLOCK)f(\(BH,)h(B,)h(1,)f (MPI_INT\))75 953 y(CALL)g(MPI_APPEND_VEC)f(\(BH,)i(A\(1,3\),)e(11,)i (4,)g(2,)f(MPI_DOUBLE\))75 1009 y(CALL)g(MPI_APPEND_INDEX\(BH,)e (C\(3,7\),)i(\(4,2,1\),)g(MPI_INT\))166 1118 y Fs(Then)16 b(the)f(bu\013er)g(asso)q(ciated)g(with)h(the)f(handle)i Fh(BH)e Fs(consists)g(of)g(the)g(sequence)h(of)f(v)m(ariables)166 1174 y Fh(B,)23 b(A\(1,3\),)g(A\(2,3\),)g(A\(5,3\),)g(A\(6,3\),)g (A\(9,3\),)g(A\(10,3\),)g(A\(3,4\),)g(A\(4,4\),)g(A\(7,4\),)75 1231 y(A\(8,4\),)g(A\(1,5\),)g(C\(2,8\),)g(C\(5,7\),)g(C\(4,7\))p Fs(.)166 1288 y(A)17 b(message)g(created)g(from)f(this)i(bu\013er)f (will)i(consist)e(of)g(a)g(sequence)h(of)f(one)g(in)o(teger,)h(follo)o (w)o(ed)75 1344 y(b)o(y)d(elev)o(en)h(double)h(precision)g(reals,)e (follo)o(w)o(ed)g(b)o(y)g(three)h(in)o(tegers.)166 1401 y(A)h(bu\013er)g(handle)h(can)f(b)q(e)h(used)g(for)e(comm)o(unication,) i(ev)o(en)f(if)g(it)h(is)f(not)g(asso)q(ciated)g(with)g(an)o(y)75 1457 y(v)m(ariables)i(\(i.e.,)f(ev)o(en)g(if)g(it)g(w)o(as)f(not)g(set) g(b)o(y)h(an)o(y)f Fh(MPI)p 1046 1457 15 2 v 17 w(ADD)p 1135 1457 V 17 w(xxx)g Fs(call\).)28 b(Suc)o(h)19 b(handle)g(is)f(asso) q(ciated)75 1514 y(with)e(an)f(empt)o(y)g(bu\013er,)f(and)i(a)f (message)f(created)i(from)e(it)h(con)o(tains)h(no)f(data.)166 1571 y(The)d(same)g(en)o(try)g(ma)o(y)g(app)q(ears)g(more)g(than)g (once)g(in)h(a)f(bu\013er)h(comp)q(onen)o(t,)f(and)h(distinct)g (bu\013er)75 1627 y(comp)q(onen)o(ts)j(ma)o(y)f(o)o(v)o(erlap.)23 b(If)16 b(a)g(bu\013er)g(descriptor)g(with)h(replicated)g(en)o(tries)g (is)f(used)h(to)e(receiv)o(e)i(a)75 1684 y(message,)12 b(then)h(the)g(\014nal)g(v)m(alue)h(of)e(an)g(en)o(try)g(that)g(o)q (ccurs)h(more)f(than)g(once)h(in)g(the)g(bu\013er)g(descriptor)75 1740 y(is)j(unde\014ned.)166 1873 y Fl(Discussion:)166 1923 y Fk(It)g(is)g(not)g(clear)h(to)e(me)h(that)g(o)o(v)o(erlaps)g(ha) o(v)o(e)f(an)o(y)h(useful)g(purp)q(ose,)i(and)d(they)i(ma)o(y)d (complicate)h(imple-)75 1973 y(men)o(tation.)h(But)f(w)o(e)f(had)g(an)f (o)o(v)o(erwhelming)f(v)o(ote)i(in)f(fa)o(v)o(or)g(of)h(this)g (feature.)75 2179 y Fj(2.5.1)55 b(T)n(yp)r(e)18 b(Matc)n(hing)h(and)g (Data)g(Con)n(v)n(ersion)75 2266 y Fs(One)d(can)f(think)h(of)f(message) g(transmission)g(as)g(consisting)h(of)f(three)g(phases:)131 2361 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 2457 y(2.)22 b(A)15 b(message)g(is)g(transfered)g(from)g(sender)g(to)g (receiv)o(er)131 2552 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 2647 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 2704 y(v)m(ariable)d(in)f(the)f (sender)h(bu\013er)f(has)g(to)f(matc)o(h)h(the)g(t)o(yp)q(e)h(of)e(the) i(corresp)q(onding)g(en)o(try)f(in)h(the)f(bu\013er)p eop %%Page: 16 21 16 20 bop 75 -100 a Fs(16)608 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fs(descriptor;)d (the)g(t)o(yp)q(e)f(of)g(an)g(en)o(try)g(in)h(the)g(bu\013er)f (descriptor)h(used)f(to)g(send)h(a)f(message)g(has)g(to)g(matc)o(h)75 102 y(the)19 b(t)o(yp)q(e)f(of)g(the)h(corresp)q(onding)g(en)o(try)f (in)h(the)g(bu\013er)f(descriptor)h(used)g(to)f(receiv)o(e)h(the)g (message;)75 158 y(and)g(the)f(t)o(yp)q(e)g(of)g(eac)o(h)h(v)m(ariable) h(in)f(the)f(receiv)o(e)h(bu\013er)g(has)f(to)g(matc)o(h)g(the)g (corresp)q(onding)h(en)o(try)75 214 y(in)d(the)g(bu\013er)f(descriptor) h(for)f(this)h(bu\013er.)21 b(A)15 b(program)g(that)g(fails)h(to)f (observ)o(e)g(these)h(three)f(rules)h(is)75 271 y(erroneous.)166 328 y(T)l(o)f(de\014ne)i(more)e(precisely)i(t)o(yp)q(e)f(matc)o(hing,)f (w)o(e)g(need)h(to)f(deal)i(with)e(t)o(w)o(o)g(issues:)21 b(matc)o(hing)15 b(of)75 385 y(t)o(yp)q(es)h(of)g(the)h(host)f (language)g(with)h(bu\013er)g(descriptor)f(t)o(yp)q(es;)h(and)g(matc)o (hing)f(of)g(bu\013er)h(descriptor)75 441 y(t)o(yp)q(es)e(at)f(sender)h (and)f(receiv)o(er.)21 b(W)l(e)14 b(restrict)h(ourselv)o(es)g(to)f(the) g(case)h(where)g(sending)h(and)e(receiving)75 498 y(program)g(are)h (written)g(in)h(the)f(same)g(language.)166 555 y(The)e(t)o(yp)q(e)g(of) f(an)h(en)o(try)f(in)h(the)g(sender)g(bu\013er)g(descriptor)g(matc)o (hes)g(the)f(t)o(yp)q(e)h(of)f(an)h(en)o(try)f(in)i(the)75 612 y(receiv)o(er)f(bu\013er)g(descriptor)g(is)h(they)e(ha)o(v)o(e)h (iden)o(tical)h(names:)19 b Fh(MPI)p 1234 612 15 2 v 17 w(INT)12 b Fs(matc)o(hes)g Fh(MPI)p 1580 612 V 17 w(INT)p Fs(,)g Fh(MPI)p 1766 612 V 17 w(REAL)75 668 y Fs(matc)o(hes)j Fh(MPI)p 326 668 V 17 w(REAL)p Fs(,)f(and)h(so)g(on.) 166 725 y(The)k(t)o(yp)q(e)h(of)f(a)g(v)m(ariable)i(in)f(a)f(host)g (program)f(matc)o(hes)h(the)g(t)o(yp)q(e)h(of)e(the)i(en)o(try)f(in)h (a)f(bu\013er)75 782 y(descriptor)e(if)f(the)h(name)f(of)g(the)g (bu\013er)h(descriptor)f(en)o(try)g(t)o(yp)q(e)h(corresp)q(onds)f(to)g (the)g(basic)h(t)o(yp)q(e)f(of)75 838 y(the)i(host)f(program)f(en)o (try:)24 b(an)17 b(en)o(try)g(with)h(t)o(yp)q(e)g(name)f Fh(MPI)p 1177 838 V 17 w(INT)g Fs(matc)o(hes)g(a)g(F)l(ortran)g(v)m (ariable)h(of)75 895 y(t)o(yp)q(e)c Fh(INTEGER)p Fs(,)f(an)h(en)o(try)f (with)i(t)o(yp)q(e)f(name)g Fh(MPI)p 948 895 V 16 w(REAL)g Fs(matc)o(hes)f(a)h(F)l(ortran)f(v)m(ariable)i(of)f(t)o(yp)q(e)g Fh(REAL)p Fs(,)75 951 y(and)g(so)g(on.)20 b(There)14 b(is)h(one)f(exception)h(to)f(this)h(last)f(rule:)20 b(An)15 b(en)o(try)e(with)i(t)o(yp)q(e)f(name)g Fh(MPI)p 1683 951 V 17 w(BYTE)g Fs(can)75 1008 y(b)q(e)j(used)g(to)f(matc)o(h)g (an)o(y)g(b)o(yte)g(of)g(storage)f(\(on)i(a)f(b)o(yte-addressable)h (mac)o(hine\),)g(irresp)q(ectiv)o(e)h(of)e(the)75 1064 y(datat)o(yp)q(e)d(of)h(the)g(v)m(ariable)h(that)e(con)o(tains)h(this)g (b)o(yte.)19 b(The)c(v)m(alue)g(of)e(the)h(message)f(en)o(try)h(will)h (b)q(e)g(the)75 1121 y(binary)h(v)m(alue)g(of)f(the)g(corresp)q(onding) h(b)o(yte)f(in)h(memory)l(.)166 1178 y(These)g(t)o(yp)q(e)g(matc)o (hing)g(rules)h(imply)g(that)f(no)g(t)o(yp)q(e)g(con)o(v)o(ersion)g(o)q (ccur)g(during)h(the)f(MPI)g(com-)75 1235 y(m)o(unication.)21 b(If)15 b(a)f(v)m(alue)i(transfered)e(in)i(a)e(message)g(is)h(t)o(yp)q (ed)g(\(i.e.)20 b(of)14 b(a)h(t)o(yp)q(e)f(di\013eren)o(t)h(from)f Fh(BYTE)p Fs(\),)75 1291 y(then)g(the)g(t)o(yp)q(e)g(of)g(the)g(v)m (ariable)h(the)f(v)m(alue)h(is)f(read)g(from,)f(the)h(t)o(yp)q(e)g(of)g (the)g(v)m(alue)h(transferred)e(in)i(the)75 1347 y(message,)i(and)h (the)f(t)o(yp)q(e)g(of)g(the)h(v)m(ariable)g(where)g(the)f(v)m(alue)i (is)f(stored)f(at)f(the)i(receiv)o(er)g(all)g(matc)o(h,)75 1404 y(and)h(matc)o(h)e(the)i(t)o(yp)q(es)f(of)g(the)h(corresp)q (onding)g(en)o(tries)g(in)g(the)g(bu\013er)f(descriptors)h(at)f(sender) h(and)75 1460 y(receiv)o(er.)h(The)13 b(v)m(alue)g(stored)g(at)f(the)g (receiv)o(er)i(will)g(b)q(e)f(the)g(v)m(alue)h(loaded)f(from)f(the)h (sender.)19 b(If)13 b(sender)75 1517 y(and)h(receiv)o(er)g(run)g(in)h (an)f(iden)o(tical)h(en)o(vironmen)o(t)f(\(same)f(no)q(de)i(arc)o (hitecture,)f(same)f(compiler,)i(etc.\),)75 1573 y(then)i(the)f(binary) h(represen)o(tation)f(of)g(the)h(data)e(stored)h(at)g(the)g(receiv)o (er)h(is)g(iden)o(tical)h(to)e(the)g(binary)75 1630 y(represen)o (tation)g(of)g(the)h(data)e(loaded)i(from)f(the)g(sender.)24 b(Ho)o(w)o(ev)o(er,)15 b(if)i(sender)g(and)f(receiv)o(er)h(ha)o(v)o(e)f (a)75 1686 y(di\013eren)o(t)j(en)o(vironmen)o(t,)h(then)f(the)g(binary) g(represen)o(tation)g(of)f(the)h(v)m(alue)h(sen)o(t)e(will)j(b)q(e)e (con)o(v)o(erted)75 1743 y(to)g(the)h(binary)g(represen)o(tation)g(of)g (that)f(same)g(v)m(alue)i(in)g(the)f(receiv)o(er)g(en)o(vironmen)o(t.) 34 b(Th)o(us,)21 b(if)f(a)75 1799 y(F)l(ortran)c(real)h(v)m(alue)h(is)f (transferred)g(\(from)f(a)g(v)m(ariable)j(of)d(t)o(yp)q(e)h Fh(REAL)f Fs(to)h(a)f(v)m(ariable)i(of)f(t)o(yp)q(e)g Fh(REAL)p Fs(,)75 1856 y(using)g(bu\013er)f(descriptor)h(en)o(tries)g (with)f(t)o(yp)q(e)h(state)e Fh(MPI)p 1082 1856 V 17 w(REAL)g Fs(at)h(sender)h(and)f(receiv)o(er\))h(from)f(a)g(64)75 1912 y(bit)g(mac)o(hine)g(to)e(a)h(32)f(bit)i(mac)o(hine,)g(then)f(the) g(binary)h(represen)o(tation)f(of)g(the)g(\015oating)g(p)q(oin)o(t)h(v) m(alue)75 1968 y(sen)o(t)i(will)i(b)q(e)e(con)o(v)o(erted)g(from)f(64)h (bits)g(to)g(32)f(bits.)29 b(Suc)o(h)19 b(con)o(v)o(ersions)f(ma)o(y)f (in)o(tro)q(duce)i(rounding)75 2025 y(error)14 b(and)i(cause)f(o)o(v)o (er\015o)o(ws)f(or)h(under\015o)o(w)g(conditions.)166 2082 y(If)j(a)f(v)m(alue)h(sen)o(t)g(in)g(a)f(message)g(is)h(un)o(t)o (yp)q(ed)g(\(i.e.,)f(of)g(t)o(yp)q(e)h Fh(BYTE)p Fs(\),)e(then)i(it)g (m)o(ust)f(b)q(e)h(declared)75 2139 y(so)h(in)g(the)g(bu\013er)g (descriptor)h(of)e(b)q(oth)h(sender)h(and)f(receiv)o(er.)32 b(A)19 b(b)o(yte)g(is)g(mo)o(v)o(ed)g(from)f(sender)i(to)75 2195 y(receiv)o(er;)k(the)e(binary)f(represen)o(tation)h(of)e(the)i(b)o (yte)e(stored)h(at)g(the)g(receiv)o(er)h(is)f(iden)o(tical)i(to)e(the) 75 2252 y(binary)14 b(represen)o(tation)f(of)f(the)h(b)o(yte)g(loaded)h (at)e(the)h(sender.)20 b(This)13 b(holds)h(true,)f(whether)g(sender)h (and)75 2308 y(receiv)o(er)i(run)f(in)h(the)g(same)f(or)f(in)i (distinct)h(en)o(vironmen)o(ts.)166 2366 y(Consider)f(the)f(follo)o (wing)h(examples.)75 2478 y Fh(!)48 b(FIRST)23 b(EXAMPLE)75 2534 y(INTEGER)g(A\(100\))75 2591 y(...)75 2647 y(CALL)g (MPI_CREATE_BUFFER\(BH,)e(MPI_PERSISTENT\))75 2704 y(CALL)i (MPI_ADD_CONTIGUOUS)f(\(BH,)h(A\(1\),)g(1,)h(MPI_CHAR\))p eop %%Page: 17 22 17 21 bop 75 -100 a Fq(2.5.)34 b(COMMUNICA)l(TION)16 b(BUFFERS)1001 b Fs(17)166 45 y(This)16 b(program)f(is)i(erroneous,)e (since)j(the)e(t)o(yp)q(e)g(of)f(the)h(bu\013er)g(descriptor)h(do)q(es) f(not)f(matc)o(h)h(the)75 102 y(t)o(yp)q(e)f(of)g(the)g(v)m(ariable)h (in)g(the)f(bu\013er.)20 b(The)15 b(b)q(eha)o(vior)h(or)e(this)i (program)e(is)h(unde\014ned.)22 b(A)15 b(desireable)75 158 y(b)q(eha)o(vior)e(is)h(for)e(that)g(error)g(to)h(b)q(e)g(detected) h(\(at)e(compile)i(time)f(or)g(run)g(time\))g(and)g(result)g(in)h(an)f (error)75 214 y(condition.)75 320 y Fh(!)48 b(SECOND)23 b(EXAMPLE)75 376 y(INTEGER)g(A\(100\))75 433 y(...)75 489 y(CALL)g(MPI_CREATE_BUFFER\(BH,)e(MPI_PERSISTENT\))75 546 y(CALL)i(MPI_ADD_CONTIGUOUS)f(\(BH,)h(A\(1\),)g(1,)h(MPI_BYTE\))166 651 y Fs(This)16 b(program)f(is)h(correct.)k(The)c(b)o(yte)g(that)e (will)k(b)q(e)e(transmitted)f(in)i(a)e(message)g(created)h(with)75 708 y(this)i(bu\013er)g(descriptor)g(is)g(the)g(\014rst)g(b)o(yte)f(in) i(the)e(storage)g(o)q(ccupied)j(b)o(y)d Fh(A\(1\))p Fs(.)27 b(The)18 b(v)m(alue)h(of)f(this)75 764 y(b)o(yte)d(is)h(implemen)o (tation)h(dep)q(enden)o(t,)f(and)g(will)h(v)m(ary)e(according)h(to)f (the)g(n)o(um)o(b)q(er)h(of)f(b)o(ytes)g(used)h(to)75 821 y(store)e(F)l(ortran)h(v)m(ariables)h(of)f(t)o(yp)q(e)g Fh(INTEGER)f Fs(and)i(the)f(b)o(yte)g(ordering)g(on)h(the)f(host)g(mac) o(hine.)75 926 y Fh(!)48 b(THIRD)23 b(EXAMPLE)75 983 y(INTEGER)g(A\(100\))75 1039 y(...)75 1096 y(CALL)g (MPI_CREATE_BUFFER\(BH1,)e(MPI_PERSISTENT\))75 1152 y(CALL)i (MPI_ADD_CONTIGUOUS)f(\(BH1,)h(A\(1\),)g(1,)h(MPI_INTEGER\))75 1208 y(...)75 1265 y(CALL)f(MPI_CREATE_BUFFER\(BH2,)e(MPI_PERSISTENT\)) 75 1321 y(CALL)i(MPI_ADD_CONTIGUOUS)f(\(BH2,)h(A\(1\),)g(4,)h (MPI_BYTE\))166 1427 y Fs(Consider)16 b(the)f(follo)o(wing)h(three)f (cases:)131 1520 y(1.)22 b(A)d(message)g(is)h(sen)o(t)f(using)h (bu\013er)f(descriptor)h(handle)h Fh(BH1)e Fs(and)g(receiv)o(ed)i (using)f(bu\013er)f(de-)189 1577 y(scriptor)e(handle)h Fh(BH2)p Fs(.)25 b(The)18 b(program)e(is)h(erroneous,)h(since)g(the)f (sender)h(and)f(receiv)o(er)h(bu\013er)189 1633 y(descriptors)g(don't)g (matc)o(h.)28 b(The)19 b(b)q(eha)o(vior)f(of)g(the)h(program)e(is)h (unde\014ned,)j(and)d(a)g(p)q(ossible)189 1690 y(\(desireable)e(but)g (unlik)o(ely\))h(b)q(eha)o(vior)e(is)h(for)f(an)g(error)f(condition)j (to)d(o)q(ccur.)131 1783 y(2.)22 b(Both)17 b(sender)h(and)g(receiv)o (er)g(use)g(bu\013er)g(descriptor)g(handle)h Fh(BH1)p Fs(.)26 b(The)18 b(program)f(is)h(correct,)189 1840 y(and)h(an)f(in)o (teger)h(v)m(alue)h(is)f(transmitted)g(from)f(sender)h(to)f(receiv)o (er.)31 b(The)19 b(v)m(alue)h(assigned)g(to)189 1896 y Fh(A\(1\))e Fs(at)g(the)g(receiv)o(er)i(is)f(iden)o(tical)h(to)e(the) h(v)m(alue)h(of)e Fh(A\(1\))g Fs(at)g(the)g(sender,)i(but)f(the)f (binary)189 1953 y(represen)o(tation)g(of)g(this)g(v)m(alue)i(ma)o(y)d (b)q(e)i(di\013eren)o(t,)g(if)f(sender)h(and)f(receiv)o(er)h(run)g(in)g (di\013eren)o(t)189 2009 y(en)o(vironmen)o(ts.)131 2103 y(3.)j(Both)17 b(sender)h(and)g(receiv)o(er)g(use)g(bu\013er)g (descriptor)g(handle)h Fh(BH2)p Fs(.)26 b(The)18 b(program)f(is)h (correct.)189 2159 y(Assume)13 b(that)f(b)q(oth)h(sender)h(and)f (receiv)o(er)h(use)f(four)g(b)o(ytes)f(to)h(store)f(in)o(tegers.)19 b(Then)14 b(the)f(v)m(alue)189 2215 y(stored)h(in)i Fh(A\(1\))e Fs(at)h(the)g(receiv)o(er)h(has)e(the)i(same)e(binary)i(represen)o (tation)f(as)g(the)g(v)m(alue)h(of)e Fh(A\(1)189 2272 y Fs(at)i(the)i(sender.)26 b(If)18 b(the)f(same)g(b)o(yte)g(ordering)h (and)g(the)f(same)g(enco)q(ding)i(of)e(in)o(teger)g(v)m(alues)h(is)189 2328 y(used)d(at)g(b)q(oth)g(ends)h(then)f Fh(A\(1\))f Fs(at)h(the)g(receiv)o(er)h(is)f(set)g(to)g(the)g(v)m(alue)h(of)f Fh(A\(1\))f Fs(at)h(the)g(sender;)189 2385 y(otherwise)g(the)g(same)g (32)g(bits)g(ma)o(y)g(enco)q(de)h(di\013eren)o(t)g(v)m(alues.)166 2554 y Fl(Implemen)o(tati)o(on)c(note:)166 2604 y Fk(The)i(curren)o(t)h (de\014nition)e(do)q(es)h(not)g(require)g(messages)g(to)f(carry)i(t)o (yp)q(e)f(information.)h(A)e(message)h(can)f(b)q(e)75 2654 y(comp)q(osed)h(and)h(sen)o(t)h(using)e(only)g(the)h(information)d (in)i(the)i(sender)g(bu\013er)g(descriptor,)g(and)e(can)h(b)q(e)h (receiv)o(ed)75 2704 y(and)c(stored)h(using)f(only)g(the)h(information) c(in)j(the)h(receiv)o(er)h(bu\013er)f(descriptor.)19 b(If)11 b(messages)i(are)f(sen)o(t)i(b)q(et)o(w)o(een)p eop %%Page: 18 23 18 22 bop 75 -100 a Fs(18)608 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fk(di\013eren)o(t)e (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 95 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 145 y(en)o(vironmen)o(t)f(in)g(order)i(to)f(con)o (v)o(ert)g(data)g(at)g(the)g(receiv)o(er.)23 b(In)15 b(either)h(case)g(the)f(lo)q(cal)g(bu\013er)g(descriptor)i(can)75 195 y(b)q(e)e(used)g(to)f(deriv)o(e)h(the)g(t)o(yp)q(es)g(of)f(the)g(v) n(alues)g(transferred.)21 b(Ho)o(w)o(ev)o(er,)15 b(additional)d(t)o(yp) q(e)j(information)c(carried)75 244 y(b)o(y)j(messages)g(can)g(pro)o (vide)f(b)q(etter)j(error)f(detection.)166 295 y(There)i(is)e(no)h (agreemen)o(t)f(y)o(et)h(on)g(the)g(need)h(for)e(a)g(de\014nition)h (and,)f(if)g(needed,)i(on)f(the)g(righ)o(t)f(de\014nition)75 344 y(of)j(t)o(yp)q(e)i(matc)o(hing)d(and)i(con)o(v)o(ersion)g(b)q(et)o (w)o(een)i(programs)d(written)h(in)g(di\013eren)o(t)h(languages.)33 b(The)19 b(natural)75 394 y(in)o(terpretation)f(of)g(\\send)h(from)d(C) i(and)g(receiv)o(e)h(in)e(F)m(ortran")h(is)g(either)h(\\send)g(from)d (C,)h(receiv)o(e)j(in)d(C)h(and)75 444 y(con)o(v)o(ert)11 b(to)g(F)m(ortran",)f(or)h(\\con)o(v)o(ert)g(to)f(F)m(ortran,)h(send)h (from)c(F)m(ortran)j(and)f(receiv)o(e)i(in)f(F)m(ortran".)16 b(Ho)o(w)o(ev)o(er,)11 b(the)75 494 y(corresp)q(ondence)j(b)q(et)o(w)o (een)e(F)m(ortran)e(t)o(yp)q(es)i(and)e(C)h(t)o(yp)q(es)g(is)g (implemen)o(tatio)o(n)d(dep)q(enden)o(t.)19 b(Th)o(us,)11 b(the)g(diagram)75 544 y(sho)o(wn)k(b)q(elo)o(w)f(is)h(not)f(comm)o (utativ)o(e,)e(and)j(the)g(t)o(w)o(o)f(in)o(terpretations)i(of)e(C)g (to)h(F)m(ortran)g(comm)o(unicati)o(on)d(ma)o(y)75 593 y(lead)i(to)f(di\013eren)o(t)i(results.)251 633 y(mac)o(hine)d(1)300 b(mac)o(hine)13 b(2)544 683 y(send)244 732 y(C)h(program)121 b Ff(!)i Fk(C)14 b(program)332 832 y Ff(#)463 b(#)544 882 y Fk(send)191 932 y(F)m(ortran)14 b(program)67 b Ff(!)j Fk(F)m(ortran)13 b(program)166 980 y(A)19 b(go)q(o)q(d)f (solution)g(w)o(ould)f(mak)o(e)g(this)i(diagram)d(comm)o(utativ)o(e.)29 b(Otherwise,)21 b(one)e(needs)h(to)e(pic)o(k)h(one)75 1030 y(of)c(the)i(t)o(w)o(o)e(paths)h(as)g(the)h(canonical)e (de\014nition)g(of)h(in)o(terlanguage)f(comm)o(unicatio)o(n.)21 b(If)16 b(the)g(upp)q(er)h(path)f(is)75 1080 y(c)o(hosen,)d(the)f (receiv)o(er)h(of)e(a)h(message)f(needs)i(to)f(kno)o(w)f(the)h (language)f(the)h(message)g(w)o(as)f(sen)o(t)i(from;)d(if)h(the)h(lo)o (w)o(er)75 1129 y(path)k(is)h(c)o(hosen,)g(the)g(sender)h(needs)g(to)e (kno)o(w)g(the)g(language)g(the)h(message)f(is)g(receiv)o(ed)i(in)o (to.)24 b(Rather)17 b(than)75 1179 y(struggling)c(with)h(these)i (issues)g(it)e(migh)o(t)e(b)q(e)j(simpler)e(to)h(let)g(the)h(b)q(eha)o (vior)f(of)g(C)g(to)g(F)m(ortran)g(comm)o(unication)75 1229 y(b)q(e)19 b(unde\014ned.)31 b(The)19 b(user)g(can)f(alw)o(a)o(ys) f(matc)o(h)g(language)g(at)h(sending)h(and)e(receiving)i(end)f(if)g(he) g(or)g(she)h(is)75 1279 y(willing)12 b(to)h(struggle)i(with)e(the)i (issue)f(of)g(calling)e(MPI)i(C)g(functions)g(from)e(F)m(ortran)i(or)g (vice-v)o(ersa.)75 1507 y Fm(2.6)70 b(Receiv)n(e)20 b(Criteria)75 1609 y Fs(The)14 b(selection)h(of)e(a)g(message)g(b)o(y)g(a)h(receiv)o (e)g(op)q(eration)g(is)g(done)g(uniquely)h(according)f(to)f(the)h(v)m (alue)g(of)75 1665 y(the)e(message)g(en)o(v)o(elop)q(e.)20 b(The)13 b(receiv)o(e)g(op)q(eration)f(sp)q(eci\014es)j(an)d Ft(en)o(v)o(elop)q(e)i(pattern)p Fs(;)f(a)f(message)g(can)75 1722 y(b)q(e)17 b(receiv)o(ed)g(b)o(y)e(that)h(receiv)o(e)g(op)q (eration)g(only)h(if)f(its)g(en)o(v)o(elop)q(e)h(matc)o(hes)f(that)f (pattern.)21 b(A)16 b(pattern)75 1778 y(sp)q(eci\014es)e(v)m(alues)f (for)e(the)h Fh(source)p Fs(,)f Fh(tag)g Fs(and)h Fh(context)f Fs(\014elds)i(of)f(the)g(message)f(en)o(v)o(elop)q(e.)20 b(In)12 b(addition,)75 1835 y(the)17 b(v)m(alue)h(for)f(the)g Fh(dest)g Fs(\014eld)h(is)f(set,)g(implicitl)q(y)l(,)j(to)c(b)q(e)i (equal)g(to)e(the)h(receiving)i(pro)q(cess)e(id.)27 b(The)75 1891 y(receiv)o(er)13 b(ma)o(y)e(sp)q(ecify)i(a)f Fh(DONTCARE)e Fs(v)m(alue)j(for)f Fh(source)p Fs(,)f(or)g Fh(tag)p Fs(,)h(indicating)i(that)d(an)o(y)h(source)g(and/or)75 1948 y(tag)k(are)h(acceptable.)26 b(It)17 b(cannot)g(sp)q(ecify)h(a)f (DONTCARE)g(v)m(alue)h(for)e Fh(context)g Fs(or)h Fh(dest)p Fs(.)24 b(Th)o(us,)17 b(a)75 2004 y(message)d(can)h(b)q(e)h(receiv)o (ed)f(b)o(y)g(a)f(receiv)o(e)i(op)q(eration)f(only)g(if)g(it)g(is)h (addressed)f(to)f(the)h(receiving)h(task,)75 2061 y(has)h(a)g(matc)o (hing)g(con)o(text,)g(has)g(matc)o(hing)g(source)g(unless)i (source=DONTCARE)f(in)g(the)f(pattern,)75 2117 y(and)g(has)f(a)g(matc)o (hing)g(tag)g(unless)h(tag=DONTCARE)f(in)h(the)g(pattern.)22 b(DONTCARE)17 b(v)m(alues)h(for)75 2174 y(source)d(or)f(tag)f(are)h(sp) q(eci\014ed)j(via)e(a)f(named)h(constan)o(t)f(for)f(source)i(don)o (tcare)f(and)h(a)f(named)h(constan)o(t)75 2230 y(for)g(tag)f(don)o (tcare.)166 2287 y(The)21 b(length)g(of)f(the)h(receiv)o(ed)h(message)e (m)o(ust)h(b)q(e)g(less)g(or)f(equal)i(the)f(length)g(of)f(the)h (receiv)o(e)75 2343 y(bu\013er.)31 b(I.e.,)19 b(all)g(incoming)h(data)e (m)o(ust)h(\014t,)g(without)f(truncation,)i(in)o(to)f(the)f(receiv)o(e) i(bu\013er.)31 b(It)18 b(is)75 2400 y(erroneous)e(to)f(receiv)o(e)h(a)g (message)f(whic)o(h)i(length)f(exceed)h(the)f(receiv)o(e)h(bu\013er,)e (and)h(the)g(outcome)f(of)75 2456 y(program)f(where)i(this)f(o)q(ccurs) h(is)f(undetermined.)75 2601 y Fm(2.7)70 b(Comm)n(unication)20 b(Mo)r(de)75 2704 y Fs(A)15 b(send)h(op)q(eration)f(can)h(o)q(ccur)f (in)h(one)g(of)f(three)g(mo)q(des:)p eop %%Page: 19 24 19 23 bop 75 -100 a Fq(2.8.)34 b(COMMUNICA)l(TION)16 b(OBJECTS)1004 b Fs(19)75 45 y Ft(ST)l(AND)o(ARD)22 b Fs(The)15 b(send)h(ma)o(y)e(start)g(whether)i(or)e(not)h(a)g(matc)o (hing)g(receiv)o(e)h(has)f(b)q(een)i(p)q(osted.)75 140 y Ft(READ)o(Y)22 b Fs(The)15 b(send)h(ma)o(y)f(start)f(only)h(if)h(a)f (matc)o(hing)g(receiv)o(e)h(has)f(b)q(een)i(p)q(osted.)75 236 y Ft(SECURE)24 b Fs(The)19 b(send)h(op)q(eration)f(will)i(not)e (complete)h(successfully)h(un)o(til)g(it)e(is)h(guaran)o(teed)f(that) 189 292 y(the)c(message)g(sen)o(t)g(will)h(b)q(e)g(receiv)o(ed.)166 387 y(A)i Ft(ready)j(send)d Fs(can)h(start)e(only)i(if)g(a)f(matc)o (hing)h(receiv)o(e)g(is)g(already)g(p)q(osted;)h(otherwise)f(the)75 444 y(op)q(eration)g(is)g(erroneous)g(and)g(its)g(outcome)f(is)h (unde\014ned.)33 b(In)19 b(some)f(systems,)h(this)g(will)i(allo)o(w)e (to)75 500 y(optimize)d(comm)o(unication)g(and)g(a)o(v)o(oid)f(a)f (hand-shaking)j(op)q(eration)e(that)g(is)g(otherwise)h(required.)166 557 y(A)d Ft(secure)h(send)f Fs(will)i(complete)e(if)h(a)f(matc)o(hing) g(receiv)o(e)h(is)f(p)q(osted,)g(and)h(the)f(receiv)o(e)h(op)q(eration) 75 613 y(is)k(committed)g(to)g(receiv)o(e)g(the)g(message)g(sen)o(t)f (b)o(y)h(the)g(secure)g(send.)29 b(\(E.g.,)17 b(the)h(send)g(and)g (receiv)o(e)75 670 y(op)q(erations)12 b(ha)o(v)o(e)g(already)g(b)q(een) h(matc)o(hed,)f(the)g(receiv)o(e)h(op)q(eration)f(has)g(already)g (started)f(and)h(cannot)75 726 y(b)q(e)k(cancelled)h(an)o(ymore.\))166 783 y(A)d(receiv)o(e)i(op)q(eration)e(can)h(o)q(ccur)g(in)g(one)f(of)g (t)o(w)o(o)f(mo)q(des:)20 b Ft(ST)l(AND)o(ARD)13 b Fs(and)i Ft(SECURE)p Fs(.)g(A)75 840 y(secure)g(send)g(can)g(b)q(e)g(matc)o(hed) f(only)h(b)o(y)f(a)g Ft(secure)i(receiv)o(e)p Fs(;)e(a)g(program)f (where)i(a)f(secure)h(send)g(can)75 896 y(b)q(e)j(matc)o(hed)g(b)o(y)g (a)f(standard)h(receiv)o(e)g(is)h(erroneous)e(and)h(its)g(b)q(eha)o (vior)h(is)f(unde\014ned.)29 b(The)18 b(secure)75 953 y(receiv)o(e)e(can)f(b)q(e)h(p)q(osted)g(either)g(b)q(efore)f(or)g (after)f(the)i(matc)o(hing)f(send.)166 1009 y(A)f(standard)g(send)h (and)g(a)f(ready)g(send)h(can)f(b)q(oth)h(b)q(e)g(matc)o(hed)f(only)h (b)o(y)f(a)g Ft(standard)j(receiv)o(e)p Fs(;)75 1066 y(a)c(program)g(where)h(a)g(secure)g(receiv)o(e)h(can)f(matc)o(h)f(a)g (nonsecure)i(send)f(is)h(erroneous)e(and)h(its)g(b)q(eha)o(vior)75 1122 y(is)j(unde\014ned.)25 b(The)17 b(receiv)o(e)g(has)f(to)g(b)q(e)h (p)q(osted)f(ahead)h(of)f(the)g(send)h(for)f(a)g(ready)g(send)h(and)g (can)f(b)q(e)75 1179 y(p)q(osted)f(either)h(b)q(efore)g(or)f(after)f (the)h(send)h(is)g(p)q(osted)f(for)g(a)g(standard)f(send.)166 1312 y Fl(Implemen)o(tati)o(on)e(note:)166 1362 y Fk(The)18 b(curren)o(t)g(de\014nition)f(assumes)g(it)g(si)g(the)h(user)h(resp)q (onsibilit)o(y)e(to)g(prev)o(en)o(t)h(matc)o(hing)d(of)i(a)g(regular)75 1412 y(send)12 b(with)f(a)f(secure)j(receiv)o(e)f(and)f(vice-v)o(ersa.) 18 b(Otherwise,)13 b(messages)e(need)h(b)q(e)f(tagged)g(as)g(standard)g (or)g(secure.)166 1462 y(Assume)18 b(an)f(implemen)o(tation)e(of)i(MPI) h(comm)o(unication)d(that)j(a)o(v)o(oids)f(retries.)31 b(What)18 b(proto)q(cols)g(can)75 1512 y(b)q(e)f(used?)27 b(Since)17 b(a)g(receiv)o(e)h(ma)o(y)c(ha)o(v)o(e)j(a)f(wildcard)g (source)i(\014eld,)f(the)g(\014rst)g(step)h(in)e(the)h(proto)q(col)g(m) o(ust)e(b)q(e)75 1561 y(executed)h(b)o(y)d(the)i(sender.)166 1612 y(F)m(or)e(a)h(ready)g(send,)h(this)f(\014rst)g(step)h(ma)o(y)d (in)o(v)o(olv)o(e)h(sending)h(the)h(data,)e(since)i(the)f(receiv)o(er)i (is)d(guaran)o(teed)75 1661 y(to)h(ha)o(v)o(e)f(space)i(to)f(store)h (it.)j(The)c(proto)q(col)g(is)f(send,)i(p)q(ossibly)e(follo)o(w)o(ed)g (b)o(y)g(an)h(ac)o(k-send.)166 1712 y(The)h(proto)q(col)g(for)g(secure) i(send)f(is)f(lik)o(ely)f(to)h(b)q(e)h(the)f(follo)o(wing:)j(The)e (sender)h(sends)f(a)f(request-to-send)75 1761 y(message.)j(The)13 b(receiv)o(er)i(stores)g(this)e(request)i(\(whic)o(h)f(con)o(tains)f(a) g(cop)o(y)g(of)g(the)h(message)f(en)o(v)o(elop)q(e\).)19 b(When)13 b(a)75 1811 y(matc)o(hing)g(receiv)o(e)k(is)e(p)q(osted,)h (the)g(receiv)o(er)g(sends)h(bac)o(k)e(an)g(ac)o(kno)o(wledge,)g(and)g (the)g(sender)i(no)o(w)e(sends)h(the)75 1861 y(message.)i(The)c(proto)q (col)g(is)g(\(req,)g(ac)o(k-req,)f(send\),)i(p)q(ossibly)e(follo)o(w)o (ed)g(b)o(y)g(an)h(ac)o(k-send.)166 1911 y(What)f(proto)q(col)f(is)h (used)h(for)f(standard)h(sends?)19 b(Either)14 b(the)f(second)h(proto)q (col)f(\(req,)h(ac)o(k-req,)f(send\))h(or)f(a)75 1961 y(mix)f(of)h(the)i(\014rst)f(and)g(the)h(second)g(\(e.g.)i(\014rst)e (used)g(for)e(short)i(messages,)e(second)i(for)f(long)f(messages\).)166 2011 y(When)j(the)g(receiv)o(er)h(do)q(es)g(not)e(wildcard)h(the)g (source)h(\014eld)f(then)g(the)g(proto)q(col)g(can)g(b)q(e)g(rev)o (ersed:)24 b(The)75 2061 y(receiv)o(er)15 b(sends)h(a)d(clear-to-send)i (message,)e(and)h(the)g(sender)i(can)e(pro)q(ceed)h(with)f(the)g(short) h(proto)q(col)e(if)g(it)h(has)75 2111 y(a)g(clear-to-send)g(when)h(the) f(send)h(is)f(executed.)166 2161 y(What)f(do)f(w)o(e)i(gain)e(from)f (the)j(\\secure)h(receiv)o(e"?)j(Some)12 b(optimizations)f(for)i (regular)g(receiv)o(es)i(\(e.g.,)d(in)g(a)75 2211 y(regular)i(receiv)o (e)i(of)e(a)g(short)g(message)g(the)h(receiv)o(er)h(kno)o(ws)e(the)h (short)g(proto)q(col)f(will)f(b)q(e)i(used,)g(and)f(need)h(not)75 2261 y(c)o(hec)o(k)g(for)e(a)h(request-to-send\).)20 b(Q:)14 b(is)g(that)g(enough)g(justi\014cation)f(for)h(the)g(secure)i (receiv)o(e?)75 2489 y Fm(2.8)70 b(Comm)n(unication)20 b(Ob)t(jects)75 2591 y Fs(An)g(opaque)g(comm)o(unication)h(ob)s(ject)e (iden)o(ti\014es)i(v)m(arious)g(prop)q(erties)f(of)g(a)f(comm)o (unication)i(op)q(er-)75 2647 y(ation,)i(suc)o(h)f(as)f(the)h(bu\013er) g(descriptor)g(that)f(is)h(asso)q(ciated)g(with)g(it,)h(its)f(con)o (text,)g(the)g(tag)f(and)75 2704 y(destination)16 b(parameters)f(to)g (b)q(e)h(used)g(for)e(a)h(send,)h(or)f(the)g(tag)g(and)h(source)f (parameters)g(to)f(b)q(e)i(used)p eop %%Page: 20 25 20 24 bop 75 -100 a Fs(20)608 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fs(for)g(a)g(receiv) o(e.)24 b(In)17 b(addition,)g(this)g(ob)s(ject)f(stores)g(information)g (ab)q(out)g(the)h(status)e(of)h(the)h(last)f(com-)75 102 y(m)o(unication)g(op)q(eration)g(that)e(w)o(as)h(p)q(erformed)g (with)h(this)g(ob)s(ject.)j(This)d(ob)s(ject)f(is)g(accessed)h(using)g (a)75 158 y(comm)o(unication)g(handle.)166 214 y(One)g(can)f(consider)h (comm)o(unication)g(op)q(erations)f(to)f(consist)i(of)f(the)g(follo)o (wing)g(sub)q(op)q(erations:)75 315 y Ft(INIT\(op)q(eration,)k(params,) d(handle\))24 b Fs(Pro)q(cess)15 b(pro)o(vides)f(all)i(relev)m(an)o(t)e (parameters)g(for)g(its)g(par-)189 371 y(ticipation)k(in)g(the)g(comm)o (unication)g(op)q(eration)f(\(t)o(yp)q(e)g(of)g(op)q(eration,)h(data)e (bu\013er,)i(tag,)e(par-)189 428 y(ticipan)o(ts,)f(etc.\).)k(An)d(ob)s (ject)e(is)i(created)f(that)g(iden)o(ti\014es)i(the)e(op)q(eration.)75 520 y Ft(ST)l(AR)l(T\(handle\))24 b Fs(The)16 b(comm)o(unication)g(op)q (eration)f(is)h(started)75 612 y Ft(COMPLETE\(handle\))25 b Fs(The)16 b(comm)o(unication)g(op)q(eration)f(is)h(completed.)75 704 y Ft(FREE\(handle\))25 b Fs(The)16 b(comm)o(unication)g(ob)s(ject,) e(and)h(asso)q(ciated)h(resources)f(are)g(freed.)75 804 y(Correct)f(in)o(v)o(o)q(cation)i(of)f(these)g(sub)q(op)q(erations)h (is)g(a)f(sequence)h(of)f(the)g(form)551 901 y Ft(INIT)i Fs(\()p Ft(ST)l(AR)l(T)g(COMPLETE)p Fs(\))1208 882 y Fe(\003)1246 901 y Ft(FREE)p Fr(:)75 998 y Fs(I.e.,)12 b(an)g(ob)s(ject)g(needs)h(b)q(e)f(created)h(b)q(efore)f(comm)o (unication)h(o)q(ccurs;)g(it)f(can)g(b)q(e)h(reused)g(only)g(after)e (the)75 1054 y(previous)16 b(use)f(has)f(completed;)i(and)f(it)g(needs) h(to)e(b)q(e)h(freed)h(ev)o(en)o(tually)f(\(of)g(course,)f(one)h(can)g (assume)75 1111 y(that)f(all)j(ob)s(jects)d(are)h(freed)h(at)e(program) g(termination,)h(b)o(y)h(default\).)166 1167 y(The)h(ab)q(o)o(v)o(e)f (scenario)i(p)q(ertains)f(to)f Fi(p)n(ersistent)g Fs(ob)s(jects.)24 b(One)18 b(can)f(also)f(create)h Fi(ephemer)n(al)g Fs(ob-)75 1223 y(jects.)23 b(Suc)o(h)17 b(ob)s(ject)e(p)q(ersists)i(only)g(un)o (til)g(the)f(comm)o(unication)h(op)q(eration)g(is)f(completed,)i(at)d (whic)o(h)75 1280 y(p)q(oin)o(t)i(it)g(is)g(destro)o(y)o(ed.)24 b(Th)o(us,)16 b(correct)h(in)o(v)o(o)q(cation)g(of)f(sub)q(op)q (erations)h(with)g(an)g(ephemeral)h(ob)s(ject)75 1336 y(is)e Ft(INIT)h(ST)l(AR)l(T)g(COMPLETE)p Fs(.)166 1393 y(A)i(user)h(ma)o(y)e(directly)j(in)o(v)o(ok)o(es)e(these)g(sub)q(op)q (erations.)33 b(This)20 b(w)o(ould)g(allo)o(w)f(to)g(amortize)g(the)75 1449 y(o)o(v)o(erhead)h(of)h(setting)f(up)i(a)e(comm)o(unication)h(o)o (v)o(er)f(man)o(y)h(successiv)o(e)h(uses)f(of)f(the)h(same)f(handle,)75 1506 y(and)h(allo)o(ws)h(to)e(o)o(v)o(erlap)h(comm)o(unication)h(and)f (computation.)38 b(Simpler)23 b(comm)o(unication)f(op)q(era-)75 1562 y(tions)c(com)o(bine)h(sev)o(eral)g(of)e(these)i(sub)q(op)q (erations)g(in)o(to)f(one)g(op)q(eration,)h(th)o(us)f(simplifying)i (the)f(use)75 1619 y(of)f(comm)o(unication)i(primitiv)o(es.)32 b(Th)o(us,)20 b(one)f(only)g(needs)h(to)e(sp)q(ecify)j(precisely)f(the) f(seman)o(tics)g(of)75 1675 y(these)14 b(sub)q(op)q(erations)g(in)h (order)e(to)g(sp)q(ecify)i(the)f(seman)o(tics)f(of)h(MPI)f(p)q(oin)o(t) h(to)f(p)q(oin)o(t)h(comm)o(unication)75 1732 y(op)q(erations.)166 1788 y(W)l(e)22 b(sa)o(y)g(that)f(a)h(comm)o(unication)h(op)q(eration)f (\(send)h(or)e(receiv)o(e\))i(is)g Ft(p)q(osted)f Fs(once)h(a)f Ft(start)75 1844 y Fs(sub)q(op)q(eration)d(w)o(as)d(in)o(v)o(ok)o(ed;)j (the)f(op)q(eration)g(is)g Ft(completed)g Fs(once)g(the)g Ft(complete)g Fs(sub)q(op)q(eration)75 1901 y(completes.)29 b(A)18 b(send)h(and)f(a)f(receiv)o(e)i(op)q(eration)g Ft(matc)o(h)f Fs(if)g(the)g(receiv)o(e)h(pattern)f(sp)q(eci\014ed)i(b)o (y)e(the)75 1957 y(receiv)o(e)e(matc)o(hes)f(the)g(message)g(en)o(v)o (elop)q(e)h(created)f(b)o(y)h(the)f(send.)75 2078 y Fj(2.8.1)55 b(Comm)n(unication)17 b(Ob)s(ject)h(Creation)75 2247 y Fl(Discussion:)34 b Fk(This)14 b(section)g(has)g(not)g(y)o(et)g(b)q (een)h(appro)o(v)o(ed)166 2386 y Fs(An)j(ob)s(ject)e(for)h(a)g(send)h (op)q(eration)g(is)g(created)f(b)o(y)g(a)g(call)i(to)e Ft(MPI)p 1373 2386 16 2 v 18 w(INIT)p 1508 2386 V 18 w(SEND)p Fs(.)h(A)f(call)i(to)75 2442 y Ft(MPI)p 184 2442 V 18 w(INIT)p 319 2442 V 19 w(RECV)e Fs(is)i(similarly)h(used)e (for)f(creating)h(an)g(ob)s(ject)g(for)f(a)h(receiv)o(e)g(op)q (eration.)29 b(The)75 2499 y(creation)11 b(of)g(a)g(comm)o(unication)h (ob)s(ject)e(is)i(a)f(lo)q(cal)h(op)q(eration)f(that)g(need)h(not)f(in) o(v)o(olv)o(e)g(comm)o(unication)75 2555 y(with)16 b(a)e(remote)h(pro)q (cess.)166 2647 y Ft(MPI)p 275 2647 V 18 w(INIT)p 410 2647 V 19 w(SEND)k(\(handle,)h(bu\013er)p 932 2647 V 18 w(handle,)g(dest,)e(tag,)i(con)o(text,)f(mo)q(de,)g(p)q(ersis-)75 2704 y(tence\))p eop %%Page: 21 26 21 25 bop 75 -100 a Fq(2.8.)34 b(COMMUNICA)l(TION)16 b(OBJECTS)1004 b Fs(21)166 45 y(Creates)14 b(a)h(send)h(comm)o (unication)g(ob)s(ject.)j(P)o(arameters)14 b(are)75 142 y Ft(OUT)k(handle)24 b Fs(message)11 b(handle.)20 b(The)12 b(handle)h(should)f(not)f(b)q(e)i(asso)q(ciated)f(with)f(an)o(y)h(ob)s (ject)f(b)q(efore)189 198 y(the)k(call.)75 295 y Ft(IN)i(bu\013er)p 291 295 16 2 v 18 w(handle)24 b Fs(handle)16 b(to)f(send)h(bu\013er)f (descriptor)75 392 y Ft(IN)i(dest)23 b Fs(rank)15 b(in)h(con)o(text)e (of)h(destination)h(\(in)o(teger\))75 489 y Ft(IN)h(tag)24 b Fs(user)15 b(tag)f(for)h(messages)g(sen)o(t)g(with)g(this)h(handle)g (\(in)o(teger\))75 586 y Ft(IN)h(con)o(text)23 b Fs(con)o(text)15 b(of)f(messages)h(sen)o(t)g(with)h(this)f(handle)75 683 y Ft(IN)i(mo)q(de)23 b Fs(send)11 b(mo)q(de)f(\(state)f(t)o(yp)q(e,)i (with)g(three)f(v)m(alues:)18 b Fh(MPI)p 1186 683 15 2 v 17 w(STANDARD)p Fs(,)9 b Fh(MPI)p 1489 683 V 16 w(READY)h Fs(and)g Fh(MPI)p 1790 683 V 17 w(SECURE)p Fs(\))75 780 y Ft(IN)17 b(p)q(ersistence)23 b Fs(handle)h(p)q(ersistence)g(\(state)d (t)o(yp)q(e,)j(with)f(t)o(w)o(o)e(v)m(alues:)35 b Fh(MPI)p 1527 780 V 17 w(PERSISTENT)21 b Fs(and)189 836 y Fh(MPI)p 264 836 V 16 w(EPHEMERAL)p Fs(\))166 969 y Ft(MPI)p 275 969 16 2 v 18 w(INIT)p 410 969 V 19 w(RECV)d(\(handle,)i(bu\013er)p 938 969 V 18 w(handle,)g(source,)e(tag,)h(con)o(text,)g(mo)q(de,)g(p)q (er-)75 1025 y(sistence\))166 1118 y Fs(Create)c(a)f(receiv)o(e)i (handle.)22 b(P)o(arameters)13 b(are)75 1215 y Ft(OUT)18 b(handle)24 b Fs(message)11 b(handle.)20 b(The)12 b(handle)h(should)f (not)f(b)q(e)i(asso)q(ciated)f(with)f(an)o(y)h(ob)s(ject)f(b)q(efore) 189 1271 y(the)k(call.)75 1368 y Ft(IN)i(bu\013er)p 291 1368 V 18 w(handle)24 b Fs(handle)16 b(to)f(receiv)o(e)h(bu\013er)f (descriptor.)75 1465 y Ft(IN)i(source)22 b Fs(rank)15 b(in)h(con)o(text)f(of)g(source,)g(or)f Fh(MPI)p 974 1465 15 2 v 17 w(ANY)p 1063 1465 V 17 w(SOURCE)g Fs(\(in)o(teger\).)75 1562 y Ft(IN)j(tag)24 b Fs(user)15 b(tag)f(for)h(messages)g(receiv)o (ed)h(with)g(this)f(handle,)h(or)f Fh(MPI)p 1341 1562 V 17 w(ANY)p 1430 1562 V 16 w(TAG)g Fs(\(in)o(teger\).)75 1659 y Ft(IN)i(con)o(text)23 b Fs(con)o(text)15 b(of)f(messages)h (receiv)o(ed)h(with)g(this)g(handle.)75 1756 y Ft(IN)h(mo)q(de)23 b Fs(receiv)o(e)16 b(mo)q(de)g(\(state)e(t)o(yp)q(e,)h(with)g(t)o(w)o (o)f(v)m(alues:)21 b Fh(MPI)p 1233 1756 V 17 w(STANDARD)p Fs(,)13 b(and)j Fh(MPI)p 1629 1756 V 17 w(SECURE)p Fs(\))75 1853 y Ft(IN)h(p)q(ersistence)23 b Fs(handle)h(p)q(ersistence)g (\(state)d(t)o(yp)q(e,)j(with)f(t)o(w)o(o)e(v)m(alues:)35 b Fh(MPI)p 1527 1853 V 17 w(PERSISTENT)21 b Fs(and)189 1909 y Fh(MPI)p 264 1909 V 16 w(EPHEMERAL)p Fs(\))166 2006 y(See)16 b(Section)g(2.4.2)d(for)i(a)g(discussion)i(of)d(source,)h (tag)g(and)g(con)o(text.)166 2139 y Fl(Discussion:)33 b Fk(I)13 b(ha)o(v)o(e)h(not)f(included)g(prop)q(osals)h(for)f (partially)e(sp)q(eci\014ed)k(message)e(handles,)g(that)h(some)75 2189 y(p)q(eoples)h(seem)e(to)h(desire.)166 2240 y(I)g(ha)o(v)o(e)f (merged)h(all)f(handle)g(setup)i(in)o(to)e(one)h(call.)75 2449 y Fj(2.8.2)55 b(Comm)n(unication)17 b(Start)75 2571 y Ft(MPI)p 184 2571 16 2 v 18 w(ST)l(AR)l(T\(handle\))75 2704 y(IN)g(handle)24 b Fs(comm)o(unication)16 b(handle)p eop %%Page: 22 27 22 26 bop 75 -100 a Fs(22)608 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)166 45 y Fs(The)i Fh(MPI)p 337 45 15 2 v 17 w(START)g Fs(function)h(starts)e(the)h (execution)i(of)d(a)h(comm)o(unication)h(op)q(eration)g(\(send)f(or)75 102 y(receiv)o(e\).)i(A)13 b(sender)h(should)g(not)f(up)q(date)h(the)g (send)g(bu\013er)f(after)g(a)g(send)g(op)q(eration)h(has)f(started)g (and)75 158 y(un)o(til)g(it)f(is)g(completed.)20 b(A)12 b(receiv)o(er)g(should)h(not)e(access)h(the)g(receiv)o(e)h(bu\013er)f (after)f(a)g(receiv)o(e)i(op)q(eration)75 214 y(w)o(as)18 b(started)g(and)h(un)o(til)h(it)f(is)h(completed.)32 b(A)19 b(program)e(that)i(do)q(es)g(not)f(satisfy)h(this)g(condition)h (is)75 271 y(erroneous)15 b(and)g(its)h(outcome)f(is)g(undetermined.)75 395 y Fj(2.8.3)55 b(Comm)n(unication)17 b(Completion)75 517 y Ft(MPI)p 184 517 16 2 v 18 w(W)-6 b(AIT)17 b(\()h(handle,)g (return)p 730 517 V 18 w(status)p 884 517 V 19 w(handle\))75 647 y(IN)f(handle)24 b Fs(comm)o(unication)16 b(handle)75 743 y Ft(OUT)i(return)p 357 743 V 19 w(handle)23 b Fs(handle)17 b(that)d(is)i(asso)q(ciated)f(with)h(return)f(status)f(ob)s(ject.)166 838 y(A)i(call)i(to)e Ft(MPI)p 467 838 V 18 w(W)-6 b(AIT)16 b Fs(returns)g(when)h(the)f(send)h(op)q(eration)g(iden)o(ti\014ed)h(b)o (y)f Fh(handle)e Fs(is)i(com-)75 894 y(plete.)24 b(The)17 b(completion)g(of)f(a)g(send)h(op)q(eration)g(indicates)h(that)d(the)i (sender)g(is)f(no)o(w)g(free)h(to)e(up)q(date)75 951 y(the)i(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 1007 y(op)q(eration.)j(Ho)o(w)o(ev)o(er,)13 b(it)i(do)q(es)g(not)f(indicate)i(that)d(the)i(message)f(has)g(b)q(een) i(receiv)o(ed;)f(rather)f(it)h(ma)o(y)75 1064 y(ha)o(v)o(e)g(b)q(een)h (bu\013ered)g(b)o(y)f(the)g(comm)o(unication)h(subsystem.)166 1120 y(The)g(completion)g(of)g(a)f(receiv)o(e)h(op)q(eration)g (indicates)h(that)e(the)h(receiv)o(er)g(is)g(no)o(w)f(free)h(to)f (access)75 1177 y(the)d(lo)q(cations)h(in)g(the)f(receiv)o(e)i (bu\013er,)e(whic)o(h)h(con)o(tain)f(the)h(receiv)o(ed)g(message,)f(or) g(an)o(y)f(other)h(lo)q(cation)75 1233 y(that)g(can)g(b)q(e)h (referenced)h(b)o(y)e(the)h(receiv)o(e)g(op)q(eration.)19 b(It)13 b(do)q(es)g(not)f(indicate)i(that)d(the)i(matc)o(hing)f(send)75 1290 y(op)q(eration)j(has)g(completed.)166 1347 y(The)i(call)g(returns) g(a)f(handle)i(to)e(an)g(opaque)h(ob)s(ject)f(that)g(con)o(tains)g (information)h(on)f(the)h(com-)75 1403 y(pleted)f(op)q(eration)g({)f (the)g Ft(return)i(status)e Fs(ob)s(ject.)166 1495 y Ft(MPI)p 275 1495 V 18 w(ST)l(A)l(TUS)i(\(handle,)h(\015ag,)g(return)p 974 1495 V 18 w(handle\))75 1626 y(IN)f(handle)24 b Fs(comm)o (unication)16 b(handle)75 1721 y Ft(OUT)i(\015ag)24 b Fs(logical)75 1817 y Ft(OUT)18 b(return)p 357 1817 V 19 w(handle)23 b Fs(handle)17 b(that)d(is)i(asso)q(ciated)f(with)h (return)f(status)f(ob)s(ject.)166 1912 y(A)21 b(call)h(to)f Ft(MPI)p 481 1912 V 18 w(ST)l(A)l(TUS)g Fs(returns)g Fh(flag=true)f Fs(if)h(the)g(op)q(eration)h(iden)o(ti\014ed)h(b)o(y)e Fh(handle)75 1968 y Fs(is)i(complete,)i(In)e(suc)o(h)g(case,)h(the)f (return)g(handle)h(p)q(oin)o(ts)f(to)f(an)g(opaque)h(ob)s(ject)f(that)g (con)o(tains)75 2025 y(information)14 b(on)f(the)h(completed)h (information.)k(It)14 b(returns)f Fh(flag=false)p Fs(,)g(otherwise.)19 b(In)14 b(suc)o(h)g(case,)75 2081 y(the)h(v)m(alue)i(of)d(the)i(return) f(handle)h(is)g(unde\014ned.)166 2138 y(A)e(call)i(to)e Fh(MPI)p 427 2138 15 2 v 16 w(WAIT)g Fs(blo)q(c)o(ks)h(only)g(the)g (executing)g(thread.)20 b(If)14 b(the)h(executing)g(pro)q(cess)g(is)g (m)o(ulti-)75 2194 y(threaded,)g(then)h(other)e(threads)h(within)i(the) e(pro)q(cess)h(can)f(b)q(e)h(sc)o(heduled)h(for)d(execution.)166 2251 y(The)21 b(use)h(of)f(a)f(blo)q(c)o(king)j(receiv)o(e)f(op)q (eration)f(\()p Fh(MPI)p 1095 2251 V 17 w(WAIT)p Fs(\))f(allo)o(ws)h (the)h(op)q(erating)f(system)g(to)75 2308 y(desc)o(hedule)e(the)e(blo)q (c)o(k)o(ed)i(thread)e(and)g(sc)o(hedule)i(another)d(thread)h(for)g (execution,)h(if)g(suc)o(h)f(is)h(a)o(v)m(ail-)75 2364 y(able.)k(The)16 b(use)g(of)f(a)g(non)o(blo)q(c)o(king)i(receiv)o(e)g (op)q(eration)e(\()p Fh(MPI)p 1152 2364 V 17 w(STATUS)p Fs(\))f(allo)o(ws)i(the)g(user)f(to)g(sc)o(hedule)75 2421 y(alternativ)o(e)g(activities)i(within)f(a)f(single)i(thread)e(of) f(execution.)166 2477 y(The)h(in)o(tended)h(implemen)o(tation)g(of)e Fh(MPI)p 894 2477 V 17 w(STATUS)g Fs(is)h(for)f(that)g(op)q(eration)h (to)f(return)h(as)f(so)q(on)g(as)75 2534 y(p)q(ossible.)22 b(Ho)o(w)o(ev)o(er,)14 b(if)i(rep)q(eatedly)h(called)g(for)d(an)i(op)q (eration)f(that)g(is)h(enabled,)h(it)e(m)o(ust)g(ev)o(en)o(tually)75 2590 y(succeed.)166 2647 y(The)23 b(return)f(status)f(ob)s(ject)h(for)g (a)g(send)h(op)q(eration)g(carries)f(no)h(information.)41 b(The)23 b(return)75 2704 y(status)17 b(ob)s(ject)h(for)f(a)h(receiv)o (e)h(op)q(eration)g(carries)f(information)g(on)g(the)g(source,)h(tag)e (and)i(length)f(of)p eop %%Page: 23 28 23 27 bop 75 -100 a Fq(2.8.)34 b(COMMUNICA)l(TION)16 b(OBJECTS)1004 b Fs(23)75 45 y(the)20 b(receiv)o(ed)h(message.)34 b(These)20 b(\014elds)h(are)e(required)i(b)q(ecause)g(the)f(receiv)o(e) h(op)q(eration)f(ma)o(y)f(ha)o(v)o(e)75 102 y(sp)q(eci\014ed)i Fh(DONTCARE)d Fs(in)i(either)f(source)g(or)g(tag)f(\014eld,)i(and)f (the)g(message)g(ma)o(y)f(ha)o(v)o(e)h(b)q(een)h(shorter)75 158 y(than)15 b(the)g(receiv)o(e)h(bu\013er.)166 250 y Ft(MPI)p 275 250 16 2 v 18 w(QUER)l(Y\()i(handle,)g(len,)f(source,)g (tag\))75 362 y(IN)g(handle)24 b Fs(handle)16 b(to)f(return)g(status)f (ob)s(ject)75 448 y Ft(OUT)k(len)24 b Fs(n)o(um)o(b)q(er)15 b(of)g(elemen)o(ts)h(receiv)o(ed.)75 535 y Ft(OUT)i(source)23 b Fs(rank)14 b(of)h(message)g(sender)h(in)g(message)f(con)o(text)f (\(in)o(teger\).)75 622 y Ft(OUT)k(tag)24 b Fs(tag)14 b(of)h(receiv)o(ed)h(message)f(\(in)o(teger\).)166 734 y Ft(MPI)p 275 734 V 18 w(CREA)l(TE)p 510 734 V 19 w(ST)l(A)l(T\()i (handle\))166 825 y Fs(Creates)d(a)h(new)h(return)f(status)f(ob)s (ject.)75 902 y Ft(OUT)k(handle)24 b Fs(handle)16 b(to)f(return)g (status)g(ob)s(ject.)166 1054 y Fl(Discussion:)166 1104 y Fk(The)e(use)g(of)f(a)h(return)g(status)h(ob)r(ject,)f(rather)g(than) g(a)f(list)g(of)g(parameters)h(ma)o(y)d(simplify)g(the)j(use)h(of)e (MPI)75 1154 y(routines,)17 b(if)f(the)g(v)n(alues)g(stored)i(in)e(the) h(ob)r(ject)g(are)f(seldom)f(c)o(hec)o(k)o(ed.)27 b(A)16 b(prede\014ned)j(return)e(status)g(ob)r(ject)75 1203 y(should)d(b)q(e)h(pro)o(vided,)f(to)g(ease)h(programming.)h(The)f (main)d(reason)j(for)f(the)h(use)g(of)f(a)g(return-status)i(ob)r(ject)f (is)75 1253 y(that)f(one)h(w)o(an)o(ts)f(to)g(b)q(e)g(able)g(to)g(use)h (the)g(same)e Fg(MPI)p 923 1253 14 2 v 15 w(WAIT)g Fk(and)h Fg(MPI)p 1186 1253 V 15 w(STATUS)f Fk(calls)h(for)g(c)o(hec)o(king)g (on)g(di\013eren)o(t)75 1303 y(t)o(yp)q(es)h(of)f(op)q(erations,)f (e.g.)19 b(b)q(oth)14 b(sends)i(and)d(receiv)o(es,)j(and)e(p)q(erhaps)h (new)g(op)q(erations)f(in)g(the)g(future.)20 b(These)75 1353 y(di\013eren)o(t)12 b(op)q(erations)g(return)g(di\013eren)o(t)g (information)c(\(alb)q(eit)j(w)o(e)h(could)f(decree)i(that)e(a)g(send)h (returns)h(the)f(same)75 1403 y(information)f(as)j(a)g(receiv)o(e\).) 166 1453 y(The)i(issue)h(of)e(memory)f(allo)q(cation)g(for)i(return)p 939 1453 13 2 v 16 w(status)h(handles)f(is)g(not)g(y)o(et)g(solv)o(ed.) 24 b(There)17 b(is)f(a)g(desire)75 1502 y(that)e(the)g(user)h(will)e(b) q(e)h(able)g(to)g(allo)q(cate)f(space)i(for)f(them)f(\(e.g.,)f(on)i (the)h(stac)o(k\).)166 1552 y(W)m(e)i(return)i(n)o(um)o(b)q(er)d(of)h (elemen)o(ts)g(receiv)o(ed,)j(rather)e(than)f(b)o(ytes)i(receiv)o(ed)f (b)q(ecause)h(\\n)o(um)o(b)q(er)e(of)g(ele-)75 1602 y(men)o(ts")g(is)h (closer)h(to)e(the)i(application)d(seman)o(tic)i(lev)o(el)f(\(user)i (do)q(es)g(not)f(need)h(to)f(b)q(e)g(a)o(w)o(are)g(of)f(the)i(size)g (of)75 1652 y(elemen)o(ts\),)g(and)f(is)f(more)h(in)o(v)n(arian)o(t.)28 b(The)19 b(return)g(status)g(ob)r(ject)g(returns)h(the)e(n)o(um)o(b)q (er)g(of)f Fl(elemen)o(ts)e Fk(re-)75 1702 y(ceiv)o(ed.)k(If)14 b(there)h(w)o(as)f(no)g(truncation,)g(then)h(this)f(is)g(equal)g(to)f (the)i(n)o(um)o(b)q(er)e(of)h(elemen)o(ts)g(sen)o(t.)19 b(On)c(the)f(other)75 1751 y(hand,)k(the)f(n)o(um)o(b)q(er)g(of)g(b)o (ytes)h(collected)g(form)d(the)j(sender)h(memory)m(,)c(the)j(n)o(um)o (b)q(er)e(of)h(b)o(ytes)h(sen)o(t)g(o)o(v)o(er)f(the)75 1801 y(wire,)12 b(and)g(the)g(n)o(um)o(b)q(er)f(of)g(b)o(ytes)i(stored) f(in)g(the)g(receiv)o(er)h(memory)d(ma)o(y)g(all)g(b)q(e)i(di\013eren)o (t,)h(in)e(a)h(heterogeneous)75 1851 y(en)o(vironmen)o(t.)23 b(The)17 b(n)o(um)o(b)q(er)e(of)g(elemen)o(ts)h(sen)o(t)h(can)f(b)q(e)g (computed)g(form)e(the)j(send)g(bu\013er)g(descriptor;)g(the)75 1901 y(n)o(um)o(b)q(er)c(of)g(elemen)o(ts)h(receiv)o(ed)h(can)f(b)q(e)h (computed)e(form)g(the)h(receiv)o(e)h(bu\013er)g(descriptor)g(and)f (the)g(length)g(\(in)75 1951 y(b)o(ytes\))h(of)e(the)i(receiv)o(ed)g (message.)75 2152 y Fj(2.8.4)55 b(Multiple)17 b(Completions)75 2238 y Fs(It)f(is)h(con)o(v)o(enien)o(t)f(to)g(b)q(e)g(able)h(to)f(w)o (ait)f(for)h(the)g(completion)h(of)e(an)o(y)h(or)g(all)h(the)f(op)q (erations)g(in)h(a)f(set,)75 2294 y(rather)g(than)g(ha)o(ving)h(to)e(w) o(ait)h(for)g(sp)q(eci\014c)i(message.)23 b(A)16 b(call)i(to)e Fh(MPI)p 1318 2294 15 2 v 16 w(WAITANY)g Fs(or)f Fh(MPI)p 1646 2294 V 17 w(STATUSANY)75 2350 y Fs(can)c(b)q(e)h(used)g(to)e(w)o (ait)h(for)f(the)i(completion)g(of)e(one)i(out)e(of)h(sev)o(eral)g(op)q (erations;)i(a)d(call)j(to)d Fh(MPI)p 1694 2350 V 17 w(WAITALL)75 2407 y Fs(can)15 b(b)q(e)h(used)g(to)f(w)o(ait)f(for)h (all)h(p)q(ending)h(op)q(erations)e(in)h(a)f(list.)166 2499 y Ft(MPI)p 275 2499 16 2 v 18 w(W)-6 b(AIT)l(ANY)16 b(\()i(list)p 677 2499 V 19 w(of)p 738 2499 V 19 w(handles,)g(len,)f (index,)g(return)p 1362 2499 V 19 w(handle\))166 2591 y Fs(Blo)q(c)o(ks)h(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 2647 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 2704 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(return)p 1223 2704 14 2 v 16 w(handle.)21 b(The)16 b(parameters)e(are:)p eop %%Page: 24 29 24 28 bop 75 -100 a Fs(24)608 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Ft(IN)h(list)p 225 45 16 2 v 20 w(of)p 287 45 V 19 w(handles)23 b Fs(list)16 b(of)f(handles)h(to)f(comm)o(unication)h(ob)s(jects.)75 144 y Ft(IN)h(len)23 b Fs(list)16 b(length)g(\(in)o(teger\))75 243 y Ft(OUT)i(index)23 b Fs(index)17 b(of)d(handle)j(for)d(op)q (eration)i(that)e(completed)i(\(in)o(teger\).)75 341 y Ft(OUT)i(return)p 357 341 V 19 w(handle)23 b Fs(handle)c(that)e(is)i (asso)q(ciated)f(with)g(return)g(status)f(ob)s(ject.)27 b(Set)18 b(to)f(return)189 398 y(status)d(of)h(op)q(eration)g(that)g (completed.)166 510 y(The)d(successful)i(execution)f(of)f Fh(MPI)p 784 510 15 2 v 16 w(WAITANY\(list)p 1088 510 V 16 w(of)p 1152 510 V 17 w(handles,)23 b(index,)g(return)p 1695 510 V 16 w(handle\))75 567 y Fs(has)15 b(the)g(same)g(e\013ect)g (as)g(the)h(successful)g(execution)h(of)d Fh(MPI)p 1139 567 V 17 w(WAIT\(handle[i],)22 b(return)p 1682 567 V 16 w(handle\))p Fs(,)75 623 y(where)17 b Fh(i)g Fs(is)g(the)g(v)m(alue) h(returned)f(b)o(y)g Fh(index)f Fs(and)g Fh(handle[i])g Fs(is)h(the)g Fh(i)p Fs(-th)g(handle)h(in)f(the)g(list,)h(and)75 679 y(the)d(cancelation)i(of)d(all)j(remaining)f(w)o(ait)f(op)q (erations.)166 737 y(If)21 b(more)g(then)g(one)g(op)q(eration)h(is)f (enabled)i(and)e(can)g(terminate,)h(one)f(is)h(arbitrarily)g(c)o(hosen) 75 794 y(\(sub)s(ject)15 b(to)f(the)i(restrictions)f(on)g(op)q(eration) h(termination)f(order,)g(and)g(fairness,)g(see)h(Section)g(2.13\).)166 851 y Fh(MPI)p 241 851 V 17 w(WAITANY)23 b(\()g(list)p 592 851 V 17 w(of)p 657 851 V 17 w(handles,)g(len,)g(index,)g(return)p 1319 851 V 16 w(status)p 1479 851 V 17 w(handle\))14 b Fs(is)147 951 y Fh({MPI_WAIT)22 b(\(handle[0],)h(return_handle\);)e (index)j(=)f(0})h(||)f(...)75 1008 y(||)147 1064 y({MPI_WAIT)f (\(handle[len-1],)g(return_handle\);)g(index)h(=)h(len-1})166 1163 y Fs(\(\\)p Fo(jj)p Fs(")13 b(indicates)k(c)o(hoice;)f(one)f(of)g (the)g(alternativ)o(es)h(is)f(c)o(hosen,)g(nondeterministically)m(.\)) 166 1256 y Ft(MPI)p 275 1256 16 2 v 18 w(ST)l(A)l(TUSANY)h(\()i(list)p 739 1256 V 20 w(of)p 801 1256 V 19 w(handles,)f(len,)h(index,)f(return) p 1425 1256 V 18 w(handle\))166 1349 y Fs(Causes)12 b(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 1406 y(to)i(return.)23 b(In)17 b(the)f(former)f(case,)h(it)g(has)g(the)g(same)g(return)g (seman)o(tics)g(as)g(a)g(call)h(to)e Fh(MPI)p 1664 1406 15 2 v 17 w(WAIT)p 1777 1406 V 17 w(ANY)p Fs(.)75 1462 y(In)j(the)g(later)g(case,)f(it)h(returns)g(a)f(v)m(alue)i(of)e(-1)g (in)i Fh(index)e Fs(and)h Fh(return)p 1343 1462 V 16 w(handle)f Fs(is)h(unde\014ned.)29 b(The)75 1518 y(parameters)14 b(are:)75 1631 y Ft(IN)j(list)p 225 1631 16 2 v 20 w(of)p 287 1631 V 19 w(handles)23 b Fs(list)16 b(of)f(handles)h(to)f(comm)o (unication)h(ob)s(jects.)75 1730 y Ft(IN)h(len)23 b Fs(list)16 b(length)g(\(in)o(teger\))75 1828 y Ft(OUT)i(index)23 b Fs(index)18 b(of)e(handle)h(for)f(op)q(eration)h(that)e(completed,)j (or)e(-1)g(if)h(none)f(completed)i(\(in)o(te-)189 1885 y(ger\).)75 1983 y Ft(OUT)g(return)p 357 1983 V 19 w(handle)23 b Fs(handle)c(that)e(is)i(asso)q(ciated)f(with)g(return)g(status)f(ob)s (ject.)27 b(Set)18 b(to)f(return)189 2040 y(status)d(of)h(op)q(eration) g(that)g(completed,)g(if)h(an)o(y;)f(unde\014ned)i(when)e Fh(index)24 b(=)f(-1)p Fs(.)166 2188 y Ft(MPI)p 275 2188 V 18 w(W)-6 b(AIT)l(ALL\(list)p 624 2188 V 20 w(of)p 686 2188 V 19 w(handles,)18 b(len,)f(list)p 1077 2188 V 20 w(of)p 1139 2188 V 19 w(return)p 1304 2188 V 18 w(handles\))166 2281 y Fs(Blo)q(c)o(ks)c(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 2337 y(and)h(return)h(the)f(status)f(of)h(all)h (these)f(op)q(erations.)20 b(The)c(parameters)e(are:)75 2450 y Ft(IN)j(list)p 225 2450 V 20 w(of)p 287 2450 V 19 w(handles)23 b Fs(list)16 b(of)f(handles)h(to)f(comm)o(unication)h (ob)s(jects.)75 2548 y Ft(IN)h(len)23 b Fs(lists)16 b(length)g(\(in)o (teger\))75 2647 y Ft(OUT)i(list)p 280 2647 V 20 w(of)p 342 2647 V 19 w(return)p 507 2647 V 18 w(handles)24 b Fs(Must)18 b(ha)o(v)o(e)h(the)g(same)g(length)g(as)g(the)g(\014rst)g (list.)32 b(Eac)o(h)19 b(return)189 2704 y(status)12 b(ob)s(ject)g(is)i(set)e(to)h(the)g(return)f(status)h(of)f(the)h (corresp)q(onding)h(op)q(eration)f(in)h(the)f(\014rst)g(list.)p eop %%Page: 25 30 25 29 bop 75 -100 a Fq(2.9.)34 b(BLOCKING)17 b(COMMUNICA)l(TION)966 b Fs(25)166 45 y Fl(Discussion:)166 96 y Fk(The)14 b(fairness)f (requiremen)o(t)g(giv)o(en)g(in)g(Section)g(2.13)f(implies)g(that)h (the)h(use)g(of)e Fg(WAIT)p 1525 96 14 2 v 15 w(ANY)h Fk(cannot)g(lead)g(to)75 145 y(starv)n(ation:)21 b(If)15 b(the)h(sending)g(pro)q(cess)h(has)f(issued)g(a)f(send)i(complete)d(op) q(eration,)i(and)f(the)h(receiving)g(pro)q(cess)75 195 y(rep)q(eatedly)21 b(p)q(ost)f(a)g(receiv)o(e)h(for)e(the)h(message)g (sen)o(t,)h(then)g(that)e(message)h(m)o(ust)f(b)q(e)h(ev)o(en)o(tually) f(receiv)o(ed.)75 245 y(Section)c(2.13)e(has)i(not)f(y)o(et)h(b)q(een)h (discussed.)21 b(The)15 b(fairness)g(requiremen)o(t)g(can)f(b)q(e)i (attac)o(k)o(ed)e(either)i(for)e(b)q(eing)75 295 y(to)q(o)j(w)o(eak)h (\(ev)o(en)o(tually)f(is)g(not)g(go)q(o)q(d)g(enough\),)h(or)g(to)q(o)f (strong)h(\(hard)f(to)g(implemen)o(t\).)26 b(In)18 b(the)g(later)f (case,)75 345 y(if)d(the)h(requiremen)o(t)g(of)f(fairness)h(is)g(drop)q (ed)h(from)d(MPI)i(implem)o(en)o(tations,)d(then)j(some)f(mec)o(hanism) f(need)i(b)q(e)75 394 y(pro)o(vided)k(to)g(the)g(user)h(to)f(ac)o(hiev) o(e)g(fairness)h(b)o(y)e(his)h(or)g(her)h(o)o(wn)e(devices.)35 b(One)19 b(suc)o(h)h(prop)q(osal)f(is)g(to)f(b)q(e)75 444 y(able)c(to)g(sp)q(ecify)g(a)g(rotating)g(priorit)o(y)f(order)i(on) f(the)g(op)q(erations)h(p)q(osted)g(b)o(y)f(a)f Fg(MPI)p 1431 444 V 15 w(WAITANY)p Fk(:)g(searc)o(h)i(the)f(list)75 494 y(sequen)o(tially)m(,)e(starting)i(form)e(a)i(user)h(sp)q (eci\014ed)g(p)q(osition.)75 724 y Fm(2.9)70 b(Blo)r(c)n(king)21 b(Comm)n(unication)75 827 y Fs(Blo)q(c)o(king)g(send)e(and)h(receiv)o (e)g(op)q(erations)f(com)o(bine)h(all)h(comm)o(unication)f(sub)q(op)q (erations)g(in)o(to)f(one)75 883 y(call.)h(The)12 b(op)q(eration)h (returns)f(only)g(when)h(the)f(comm)o(unication)h(completes)g(and)f(no) g(comm)o(unication)75 940 y(ob)s(ject)19 b(p)q(ersists)i(after)e(the)i (call)g(completed.)35 b(Ho)o(w)o(ev)o(er,)20 b(the)g(bu\013er)g (descriptor)h(ob)s(ject)e(needs)i(b)q(e)75 996 y(created)15 b(ahead)h(of)e(the)i(call.)166 1053 y(W)l(e)f(use)h(the)f(follo)o(wing) h(naming)g(con)o(v)o(en)o(tion)f(for)f(suc)o(h)i(op)q(erations:)782 1116 y Fd(2)782 1189 y(6)782 1216 y(4)833 1156 y Fo(\000)831 1213 y Ft(R)836 1269 y(S)891 1116 y Fd(3)891 1189 y(7)891 1216 y(5)926 1141 y(")975 1185 y Ft(SEND)971 1241 y(RECV)1143 1141 y Fd(#)166 1375 y Fs(The)i(\014rst)f(letter)h(\(v)o(oid,)g Ft(R)g Fs(or)g Ft(S)p Fs(\))f(indicates)j(the)d(start)g(mo)q(de)h (\(standard,)g(ready)l(,)g(or)f(secure\).)75 1432 y(Only)f(t)o(w)o(o)e (of)h(the)g(com)o(binations)h(\(standard)f(and)g(secure\))g(are)g (meaningful)i(for)d(receiv)o(es.)166 1524 y Ft(MPI)p 275 1524 16 2 v 18 w(SEND)k(\(bu\013er)p 610 1524 V 18 w(handle,)g(dest,)f(tag,)h(con)o(text\))d Fs(is)75 1657 y Fh(MPI_INIT_SEND\(handle,)21 b(buffer_handle,)h(dest,)h(tag,)g (context,)g(MPI_REGULAR,)f(MPI_EPHEMERAL\))75 1713 y (MPI_START\(handle\))75 1770 y(MPI_WAIT\(handle,)g(null\))166 1902 y Ft(MPI)p 275 1902 V 18 w(RSEND)c(\(bu\013er)p 649 1902 V 18 w(handle,)g(dest,)f(tag,)h(con)o(text\))d Fs(is)75 2034 y Fh(MPI_INIT_SEND\(handle,)21 b(buffer_handle,)h(dest,)h (tag,)g(context,)g(MPI_READY,)g(MPI_EPHEMERAL\))75 2091 y(MPI_START\(handle\))75 2147 y(MPI_WAIT\(handle,)f(null\))166 2279 y Ft(MPI)p 275 2279 V 18 w(SSEND)c(\(bu\013er)p 639 2279 V 18 w(handle,)g(dest,)f(tag,)h(con)o(text\))d Fs(is)75 2412 y Fh(MPI_INIT_SEND\(handle,)21 b(buffer_handle,)h(dest,)h (tag,)g(context,)g(MPI_SECURE,)g(MPI_EPHEMERAL\))75 2468 y(MPI_START\(handle\))75 2525 y(MPI_WAIT\(handle,)f(null\))166 2657 y Ft(MPI)p 275 2657 V 18 w(RECV\(bu\013er)p 599 2657 V 18 w(handle,)c(source,)e(tag,)i(con)o(text,)f(return)p 1427 2657 V 19 w(handle\))f Fs(is)p eop %%Page: 26 31 26 30 bop 75 -100 a Fs(26)608 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fh (MPI_INIT_RECV\(handle,)21 b(buffer_handle,)h(source,)h(tag,)g (context,)g(MPI_STANDARD,)f(MPI_EPHEMERAL\))75 102 y (MPI_START\(handle\))75 158 y(MPI_WAIT\(handle,return_han)o(dle\))166 288 y Ft(MPI)p 275 288 16 2 v 18 w(SRECV\(bu\013er)p 628 288 V 18 w(handle,)c(source,)e(tag,)i(con)o(text,)f(return)p 1456 288 V 19 w(handle\))f Fs(is)75 417 y Fh(MPI_INIT_RECV\(handle,)21 b(buffer_handle,)h(source,)h(tag,)g(context,)g(MPI_SECURE,)f (MPI_EPHEMERAL\))75 474 y(MPI_START\(handle\))75 530 y(MPI_WAIT\(handle,return_han)o(dle\))166 700 y Fl(Implemen)o(tati)o (on)12 b(note:)166 750 y Fk(While)f(these)i(functions)f(can)h(b)q(e)f (implemen)o(ted)e(via)h(calls)h(to)f(functions)h(that)g(implemen)o(t)e (sub)q(op)q(erations,)75 800 y(as)k(describ)q(ed)h(in)e(this)g (subsection,)i(an)e(e\016cien)o(t)h(implemen)o(tatio)o(n)d(ma)o(y)g (optimize)h(a)o(w)o(a)o(y)h(these)i(m)o(ultiple)c(calls,)75 850 y(pro)o(vided)j(it)f(do)q(es)i(not)f(c)o(hange)g(the)g(b)q(eha)o (vior)g(of)f(correct)j(programs.)75 1076 y Fm(2.10)70 b(Non)n(blo)r(c)n(king)22 b(Comm)n(unication)75 1178 y Fs(Non)o(blo)q(c)o(king)f(send)f(and)f(receiv)o(e)i(op)q(erations)f (com)o(bine)g(the)g(\014rst)f(t)o(w)o(o)f(sub)q(op)q(erations)i(\()p Fh(INIT)f Fs(and)75 1234 y Fh(START)p Fs(\))c(in)o(to)g(one)h(call.)22 b(They)16 b(use)g(ephemeral)h(comm)o(unication)f(ob)s(jects,)f(so)g (that)g(the)h(op)q(eration)f(is)75 1291 y(completed,)g(and)g(the)g (asso)q(ciated)f(resources)h(are)f(freed,)h(b)o(y)f(using)h(one)g(of)f (the)h(functions)g Fh(MPI)p 1742 1291 15 2 v 17 w(WAIT,)75 1347 y(MPI)p 150 1347 V 17 w(STATUS,)23 b(MPI)p 430 1347 V 16 w(WAITANY,)g(MPI)p 733 1347 V 17 w(STATUSANY)p Fs(,)c(or)i Fh(MPI)p 1132 1347 V 17 w(WAITALL)p Fs(.)e(Here,)j(to)q(o,)g(a)f (bu\013er)g(ob)s(ject)75 1403 y(has)15 b(to)g(b)q(e)g(created)h(ahead)f (of)g(the)g(comm)o(unication)h(initiation)h(op)q(eration.)166 1460 y(W)l(e)d(use)h(the)f(same)g(naming)g(con)o(v)o(en)o(tion)g(as)g (for)f(blo)q(c)o(king)j(op)q(erations:)j(a)14 b(pre\014x)h(of)e Ft(R)i Fs(\()p Ft(S)p Fs(\))e(indi-)75 1516 y(cates)h(the)g Fh(READY)g Fs(\()p Ft(SECURE)p Fs(\))g(mo)q(de.)20 b(In)15 b(addition,)g(a)f(pre\014x)h(of)f Ft(I)g Fs(is)g(used)h(to)f(indicate)i Fi(imme)n(diate)75 1573 y Fs(\(i.e.,)f(non)o(blo)q(c)o(king\))h (execution.)166 1665 y Ft(MPI)p 275 1665 16 2 v 18 w(ISEND)i(\(handle,) g(bu\013er)p 813 1665 V 18 w(handle,)g(dest,)f(tag,)g(con)o(text\))f Fs(is)75 1794 y Fh(MPI_INIT_SEND\(handle,)21 b(buffer_handle,)h(dest,)h (tag,)g(context,)g(MPI_STANDARD,)f(MPI_EPHEMERAL\))75 1851 y(MPI_START\(handle\))166 1980 y Ft(MPI)p 275 1980 V 18 w(IRSEND)c(\(handle,)g(bu\013er)p 852 1980 V 18 w(handle,)g(dest,)f(tag,)h(con)o(text\))d Fs(is)75 2110 y Fh(MPI_INIT_SEND\(handle,)21 b(buffer_handle,)h(dest,)h(tag,)g (context,)g(MPI_READY,)g(MPI_EPHEMERAL\))75 2167 y(MPI_START\(handle\)) 166 2296 y Ft(MPI)p 275 2296 V 18 w(ISSEND)18 b(\(handle,)g(bu\013er)p 842 2296 V 18 w(handle,)g(dest,)f(tag,)g(con)o(text\))f Fs(is)75 2426 y Fh(MPI_INIT_SEND\(handle,)21 b(buffer_handle,)h(dest,)h (tag,)g(context,)g(MPI_SECURE,)g(MPI_EPHEMERAL\))75 2482 y(MPI_START\(handle\))166 2612 y Ft(MPI)p 275 2612 V 18 w(IRECV\(handle,)13 b(bu\013er)p 797 2612 V 18 w(handle,)g(source,)f (tag,)h(con)o(text,)g(return)p 1607 2612 V 18 w(status)p 1761 2612 V 19 w(handle\))75 2668 y Fs(is)p eop %%Page: 27 32 27 31 bop 75 -100 a Fq(2.11.)34 b(CONTIGUOUS)16 b(BLOCK)g(SENDING)g (OPERA)l(TIONS)586 b Fs(27)75 45 y Fh(MPI_INIT_RECV\(handle,)21 b(buffer_handle,)h(source,)h(tag,)g(context,)g(MPI_STANDARD,)f (MPI_EPHEMERAL\))75 102 y(MPI_START\(handle\))166 238 y Ft(MPI)p 275 238 16 2 v 18 w(ISRECV\(handle,)13 b(bu\013er)p 826 238 V 18 w(handle,)g(source,)f(tag,)h(con)o(text,)g(return)p 1636 238 V 18 w(status)p 1790 238 V 19 w(handle\))75 294 y Fs(is)75 432 y Fh(MPI_INIT_RECV\(handle,)21 b(buffer_handle,)h (source,)h(tag,)g(context,)g(MPI_SECURE,)f(MPI_EPHEMERAL\))75 488 y(MPI_START\(handle\))75 641 y Fm(2.11)70 b(Con)n(tiguous)23 b(Blo)r(c)n(k)f(Sending)h(Op)r(erations)75 746 y Fs(The)e(most)f (frequen)o(t)h(t)o(yp)q(e)f(of)h(bu\013er)g(used)g(is)g(a)g(bu\013er)f (with)h(one)g(con)o(tiguous)g(comp)q(onen)o(t.)37 b(W)l(e)75 802 y(sp)q(ecialize)17 b(the)d(functions)h(in)g(the)f(t)o(w)o(o)f (previous)i(subsections)g(to)f(this)g(case,)g(th)o(us)g(a)o(v)o(oiding) h(the)f(need)75 859 y(for)h(the)g(creation)h(of)f(a)g(bu\013er)g (descriptor)h(ob)s(ject.)k(W)l(e)c(use)f(the)h(same)f(naming)h(sc)o (heme)g(used)g(in)g(the)75 915 y(previous)g(subsections,)g(and)f(app)q (end)h(a)f Ft(C)g Fs(in)h(the)g(function)g(name,)e(for)h Fh(CONTIGUOUS)p Fs(.)166 1009 y Ft(MPI)p 275 1009 V 18 w(SENDC)i(\(start,)h(len,)f(t)o(yp)q(e,)g(dest,)g(tag,)h(con)o(text\))e Fs(is)75 1146 y Fh(MPI_CREATE_BUFFER\(buffer_h)o(andle,)k (MPI_EPHEMERAL\))75 1203 y(MPI_ADD\(buffer_handle,)h(start,)i(len,)g (type\))75 1259 y(MPI_SEND)g(\(buffer_handle,)f(len,)h(dest,)g(tag,)g (context\))166 1395 y Ft(MPI)p 275 1395 V 18 w(RSENDC)18 b(\(handle,)g(start,)f(len,)h(t)o(yp)q(e,)e(dest,)h(tag,)h(con)o (text\))e Fs(is)75 1533 y Fh(MPI_CREATE\(buffer_handle,)k(MPI_BUFFER,)j (MPI_EPHEMERAL\))75 1590 y(MPI_ADD\(buffer_handle,)e(start,)i(len,)g (type\))75 1646 y(MPI_RSEND)g(\(buffer_handle,)e(len,)j(dest,)f(tag,)g (context\))166 1782 y Ft(MPI)p 275 1782 V 18 w(SSENDC)18 b(\(handle,)g(start,)f(len,)g(t)o(yp)q(e,)g(dest,)g(tag,)h(con)o (text\))e Fs(is)75 1920 y Fh(MPI_CREATE\(buffer_handle,)k(MPI_BUFFER,)j (MPI_EPHEMERAL\))75 1976 y(MPI_ADD\(buffer_handle,)e(start,)i(len,)g (type\))75 2033 y(MPI_SSEND)g(\(buffer_handle,)e(len,)j(dest,)f(tag,)g (context\))166 2169 y Ft(MPI)p 275 2169 V 18 w(RECV)o(C)18 b(\(start,)i(len,)g(t)o(yp)q(e,)f(source,)g(tag,)h(con)o(text,)f (return)p 1533 2169 V 19 w(status)p 1688 2169 V 19 w(handle\))75 2225 y Fs(is)75 2363 y Fh(MPI_CREATE\(buffer_handle,)h(MPI_BUFFER,)j (MPI_EPHEMERAL\))75 2419 y(MPI_ADD\(buffer_handle,)e(start,)i(len,)g (type\))75 2476 y(MPI_RECV\(buffer_handle,)e(source,)i(tag,)g(context,) g(return_status_handle\))166 2612 y Ft(MPI)p 275 2612 V 18 w(SRECV)o(C)14 b(\(start,)i(len,)f(t)o(yp)q(e,)g(source,)g(tag,)h (con)o(text,)f(return)p 1533 2612 V 19 w(status)p 1688 2612 V 19 w(handle\))75 2668 y Fs(is)p eop %%Page: 28 33 28 32 bop 75 -100 a Fs(28)608 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fh (MPI_CREATE\(buffer_handle,)k(MPI_BUFFER,)j(MPI_EPHEMERAL\))75 102 y(MPI_ADD\(buffer_handle,)e(start,)i(len,)g(type\))75 158 y(MPI_SRECV\(buffer_handle,)e(source,)h(tag,)i(context,)f (return_status_handle\))166 281 y Ft(MPI)p 275 281 16 2 v 18 w(ISENDC)17 b(\(handle,)i(start,)e(len,)g(t)o(yp)q(e,)g(dest,)g (tag,)h(con)o(text\))d Fs(is)75 404 y Fh(MPI_CREATE\(buffer_handle,)20 b(MPI_BUFFER,)j(MPI_EPHEMERAL\))75 460 y(MPI_ADD\(buffer_handle,)e (start,)i(len,)g(type\))75 517 y(MPI_ISEND\(handle,)f(buffer_handle,)f (dest,)j(tag,)f(context\))166 640 y Ft(MPI)p 275 640 V 18 w(IRSENDC)17 b(\(handle,)i(start,)e(len,)g(t)o(yp)q(e,)g(dest,)g (tag,)h(con)o(text\))e Fs(is)75 763 y Fh(MPI_CREATE\(buffer_handle,)k (MPI_BUFFER,)j(MPI_EPHEMERAL\))75 819 y(MPI_ADD\(buffer_handle,)e (start,)i(len,)g(type\))75 876 y(MPI_IRSEND\(handle,)e(buffer_handle,)h (dest,)i(tag,)f(context\))166 999 y Ft(MPI)p 275 999 V 18 w(ISSENDC)17 b(\(handle,)i(start,)e(len,)g(t)o(yp)q(e,)g(dest,)g (tag,)h(con)o(text\))d Fs(is)75 1121 y Fh(MPI_CREATE\(buffer_handle,)20 b(MPI_BUFFER,)j(MPI_EPHEMERAL\))75 1178 y(MPI_ADD\(buffer_handle,)e (start,)i(len,)g(type\))75 1234 y(MPI_ISSEND\(handle,)e(buffer_handle,) h(dest,)i(tag,)f(context\))166 1357 y Ft(MPI)p 275 1357 V 18 w(IRECV)o(C\(handle,)12 b(start,)h(len,)g(t)o(yp)q(e,)f(source,)g (tag,)h(con)o(text,)f(return)p 1670 1357 V 19 w(status)p 1825 1357 V 19 w(handle\))75 1414 y Fs(is)75 1537 y Fh (MPI_CREATE\(buffer_handle,)20 b(MPI_BUFFER,)j(MPI_EPHEMERAL\))75 1593 y(MPI_ADD\(buffer_handle,)e(start,)i(len,)g(type\))75 1650 y(MPI_IRECV\(handle,)f(buffer_handle,)f(source,)i(tag,)h (context\))166 1773 y Ft(MPI)p 275 1773 V 18 w(ISRECV)o(C\(handle,)13 b(start,)f(len,)h(t)o(yp)q(e,)f(source,)g(tag,)h(con)o(text,)g(return)p 1700 1773 V 18 w(status)p 1854 1773 V 19 w(handle\))75 1829 y Fs(is)75 1952 y Fh(MPI_CREATE\(buffer_handle,)20 b(MPI_BUFFER,)j(MPI_EPHEMERAL\))75 2008 y(MPI_ADD\(buffer_handle,)e (start,)i(len,)g(type\))75 2065 y(MPI_ISRECV\(handle,)e(buffer_handle,) h(source,)h(tag,)h(context\))75 2207 y Fm(2.12)70 b(Prob)r(e)23 b(and)h(Cancel)75 2308 y Fs(The)14 b Fh(MPI)p 242 2308 15 2 v 16 w(PROBE)f Fs(op)q(eration)g(allo)o(ws)h(to)e(c)o(hec)o(k)i (for)f(incoming)h(messages,)f(without)g(actually)h(receiving)75 2365 y(them.)20 b(The)c(user)f(can)h(then)f(decide)i(where)f(to)f (receiv)o(e)h(them,)f(based)g(on)h(the)f(information)h(returned)75 2421 y(b)o(y)f(the)f(prob)q(e)h(\(basically)l(,)h(the)f(information)g (on)f(the)h(message)f(en)o(v)o(elop)q(e\).)21 b(An)14 b(additional)i(function,)75 2478 y Fh(MPI)p 150 2478 V 17 w(GET)p 239 2478 V 17 w(LEN)d Fs(allo)o(ws)h(to)f(compute)h(the)g (amoun)o(t)f(of)h(storage)e(needed)j(to)e(receiv)o(e)i(the)f(message,)f (when)75 2534 y(this)j(length)g(is)f(not)g(readily)h(computed)g(from)e (the)i(information)f(returned)h(b)o(y)f Fh(MPI)p 1544 2534 V 17 w(PROBE)p Fs(.)166 2591 y(The)g Fh(MPI)p 334 2591 V 17 w(CANCEL)f Fs(op)q(eration)i(allo)o(ws)f(to)g(cancel)h(p)q (ending)h(comm)o(unications.)j(This)c(is)g(required)75 2647 y(for)f(clean)o(up.)22 b(P)o(osting)16 b(a)f(send)h(or)f(a)h (receiv)o(e)g(ties)g(user)g(resources)g(\(send)g(or)f(receiv)o(e)h (bu\013ers\),)f(and)h(a)75 2704 y(cancel)g(ma)o(y)f(b)q(e)h(needed)g (to)f(free)g(these)g(resources)h(gracefully)l(.)p eop %%Page: 29 34 29 33 bop 75 -100 a Fq(2.12.)34 b(PR)o(OBE)16 b(AND)f(CANCEL)1138 b Fs(29)166 45 y Ft(MPI)p 275 45 16 2 v 18 w(PR)o(OBE\()18 b(source,)e(tag,)i(con)o(text,)f(\015ag,)h(t)o(yp)q(e,)f(return)p 1388 45 V 18 w(status\))75 190 y(IN)g(source)22 b Fs(rank)15 b(in)h(con)o(text)f(of)g(source,)g(or)f Fh(MPI)p 974 190 15 2 v 17 w(ANY)p 1063 190 V 17 w(SOURCE)g Fs(\(in)o(teger\).)75 286 y Ft(IN)j(tag)24 b Fs(user)15 b(tag)f(for)h(messages)g(receiv)o(ed) h(with)g(this)f(handle,)h(or)f Fh(MPI)p 1341 286 V 17 w(ANY)p 1430 286 V 16 w(TAG)g Fs(\(in)o(teger\).)75 382 y Ft(IN)i(con)o(text)23 b Fs(con)o(text)15 b(of)f(messages)h(receiv)o (ed)h(with)g(this)g(handle.)75 479 y Ft(OUT)i(\015ag)24 b Fs(\(logical\))75 575 y Ft(IN)17 b(t)o(yp)q(e)23 b Fs(assumed)15 b(t)o(yp)q(e)g(of)g(data)g(in)h(message)e(\(status)g(v)m (ariable\).)75 671 y Ft(OUT)k(return)p 357 671 16 2 v 19 w(handle)23 b Fs(handle)17 b(that)d(is)i(asso)q(ciated)f(with)h (return)f(status)f(ob)s(ject.)166 781 y Fh(MPI)p 241 781 15 2 v 17 w(PROBE)h Fs(returns)g Fh(flag)24 b(=)f(true)15 b Fs(if)i(a)e(there)h(is)g(a)f(message)h(that)f(can)h(b)q(e)g(receiv)o (ed)h(and)f(that)75 837 y(matc)o(hes)k(the)g(pattern)g(sp)q(eci\014ed)j (b)o(y)d(the)g(parameters)g Fh(source)p Fs(,)g Fh(tag)p Fs(,)h(and)f Fh(context)p Fs(.)35 b(It)20 b(returns)75 894 y Fh(flag)j(=)h(false)p Fs(,)15 b(otherwise.)21 b(If)15 b Fh(MPI)p 731 894 V 17 w(PROBE)g Fs(returns)g Fh(flag)24 b(=)f(true)p Fs(,)15 b(then)h(the)f(length,)h(source)g(and)75 950 y(tag)g(of)g(the)h(message)g(matc)o(hed)g(are)f(returned)h(in)h (the)f(return)g(status)f(ob)s(ject.)24 b(These)18 b(are)e(the)h(same)75 1007 y(v)m(alues)i(that)d(w)o(ould)i(ha)o(v)o(e)f(b)q(een)i(returned)f (b)o(y)f(a)h(call)g(to)f Fh(MPI)p 1176 1007 V 17 w(RECV)g Fs(or)g(to)g Fh(MPI)p 1494 1007 V 16 w(SRECV)g Fs(executed)i(at)75 1063 y(the)d(same)f(p)q(oin)o(t)h(in)h(the)f(program)e(\(with)i(a)f(ca) o(v)o(eat)g(concerning)i(length;)f(see)g(b)q(elo)o(w\).)22 b(These)16 b(v)m(alues)75 1119 y(can)j(b)q(e)h(deco)q(ded)g(from)e(the) h(return)g(status)f(ob)s(ject)g(using)i(the)f Fh(MPI)p 1302 1119 V 16 w(RETURN)p 1462 1119 V 17 w(STAT)f Fs(function.)32 b(The)75 1176 y(v)m(alue)16 b(returned)g(in)g(the)f(return)g(status)g (ob)s(ject)f(is)i(unde\014ned)h(if)f Fh(flag=false)p Fs(.)166 1233 y(The)21 b(length)g(v)m(alue)h(returned)g(b)o(y)e(the)h (return)g(status)f(ob)s(ject)g(is)h(\(correctly\))f(the)h(n)o(um)o(b)q (er)g(of)75 1289 y(elemen)o(ts)14 b(in)h(the)f(message,)f(pro)o(vided)i (that)e(all)h(elemen)o(ts)h(in)f(the)g(message)f(are)h(of)f(the)h(t)o (yp)q(e)g(sp)q(eci\014ed)75 1346 y(b)o(y)h(the)g Fh(type)g Fs(parameter;)f(otherwise)h(the)h(length)g(v)m(alue)g(returned)g(is)f (unde\014ned.)166 1403 y(A)e(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 1459 y(b)o(y)f(the)g(call)i(to)d Fh(MPI)p 418 1459 V 17 w(PROBE)g Fs(will)j(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,)g(if)f(no)g(other)75 1516 y(in)o(terv)o(ening)k(receiv)o(e)g(o)q(ccurred)f(after)f(the)h (prob)q(e.)21 b(If)15 b(the)g(receiving)h(pro)q(cess)f(is)h(m)o (ultithreaded,)f(it)g(is)75 1572 y(the)g(user)h(resp)q(onsibilit)o(y)h (to)e(ensure)h(that)e(the)h(last)h(condition)g(holds.)166 1705 y Fl(Discussion:)166 1756 y Fk(Do)g(w)o(e)g(w)o(an)o(t)g Fg(MPI)p 471 1756 14 2 v 15 w(PROBE)f Fk(to)i(return)g(mo)q(de)e (\(standard)i(or)g(secure\)?)27 b(If)16 b(y)o(es,)h(w)o(e)g(need)g(to)f (carry)h(mo)q(de)75 1806 y(information)c(with)i(messages)g(\(it's)g (deja)h(vu)f(all)f(o)o(v)o(er)i(again\).)21 b(If)15 b(not,)h(then)g(it) f(is)g(up)g(to)h(the)g(user)g(to)g(enco)q(de)75 1856 y(this)e(information)d(\(in)i(the)i(tag\))f(so)g(that)g(receiv)o(er)h (can)f(decide)h(whether)g(to)f(use)h(a)e(secure)j(or)e(standard)g (send.)166 1906 y(MPI)h(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 1956 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 2006 y(implicitly)l(,)13 b(a)i(FIF)o(O)h(structure)i(to)d(manage)f (messages)i(b)q(et)o(w)o(een)h(eac)o(h)f(pair)f(of)g(messages,)g(for)h (eac)o(h)g(con)o(text.)75 2055 y Fg(MPI)p 144 2055 V 15 w(PROBE)h Fk(returns)i(information)c(on)j(the)h(\014rst)f(matc)o (hing)e(message)i(in)f(this)h(FIF)o(O;)g(this)g(will)f(also)g(b)q(e)h (the)75 2105 y(message)i(receiv)o(ed)i(b)o(y)e(the)h(\014rst)h (subsequen)o(t)g(receiv)o(e)g(with)e(the)h(same)e(source,)k(tag)d(and)h (con)o(text)g(as)f(the)75 2155 y(message)14 b(matc)o(hed)f(b)o(y)g Fg(MPI)p 528 2155 V 16 w(PROBE)p Fk(.)166 2205 y(Message)g(passing)f (in)g(MPI)g(can)h(b)q(e)g(implem)o(en)o(ted)d(without)i(app)q(ending)g (t)o(yp)q(e)h(information)c(to)j(messages.)75 2255 y(A)h(message)h(is)f (merely)f(a)h(string)h(of)f(b)o(ytes)h(and)f(the)h(in)o(terpretation)g (of)e(these)j(b)o(ytes)f(in)o(to)f(a)g(sequence)j(of)c(t)o(yp)q(ed)75 2305 y(elemen)o(ts)18 b(is)g(done)g(using)g(the)g(information)d(in)j (the)g(bu\013er)h(descriptors)h(at)e(eac)o(h)g(end.)31 b(The)18 b(abilit)o(y)e(to)i(use)75 2355 y(suc)o(h)g(implem)o(en)o (tation)c(strategy)j(is)g(deemed)g(to)g(b)q(e)g(an)g(imp)q(ortan)o(t)e (goal.)25 b(In)17 b(suc)o(h)h(implemen)o(tatio)o(n,)c(when)75 2405 y(a)j(message)g(arriv)o(es,)h(it)f(is)g(not)g(b)q(e)g(kno)o(wn)g (ho)o(w)g(man)o(y)e(elemen)o(ts)i(it)g(con)o(tains,)h(or)f(ev)o(en)h (ho)o(w)f(m)o(uc)o(h)f(storage)75 2455 y(is)e(needed)h(to)f(receiv)o(e) h(that)f(message)f(\(b)q(ecause)j(of)d(p)q(ossible)h(represen)o(tation) i(con)o(v)o(ersion)e(in)f(a)h(heterogeneous)75 2504 y(en)o(vironmen)o (t\).)i(The)c(prob)q(e)f(function)g(cannot)g(use)h(a)f(bu\013er)h (descriptor;)h(this)e(defeats)h(the)g(purp)q(ose)g(of)f(probing)75 2554 y(in)k(order)h(to)g(decide)g(where)h(to)e(receiv)o(e)i(a)e (message.)23 b(Therefore,)17 b(prob)q(e)f(cannot,)g(in)f(general,)h (return)g(correct)75 2604 y(length)i(information.)29 b(Still,)18 b(it)g(is)g(often)h(the)g(case)g(that)g(prob)q(e)g(is)f (used)h(to)g(decide)g(ho)o(w)f(m)o(uc)o(h)f(storage)i(to)75 2654 y(allo)q(cate)14 b(in)g(order)h(to)f(receiv)o(e)i(a)e(message.)20 b(Enco)q(ding)14 b(suc)o(h)h(information)d(in)i(the)h(message)f(tag)g (is)h(deemed)f(to)75 2704 y(b)q(e)d(to)q(o)f(akw)o(ard,)g(and)g(it)g (is)g(deemed)g(imp)q(ortan)o(t)e(for)i Fg(MPI)p 971 2704 V 15 w(PROBE)g Fk(to)g(return)h(some)e(useful)i(size)g(information.)j (The)p eop %%Page: 30 35 30 34 bop 75 -100 a Fs(30)608 b Fq(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fk(curren)o(t)d (de\014nition)e(of)f Fg(MPI)p 512 45 14 2 v 15 w(PROBE)g Fk(is)i(a)e(compromise)f(b)q(et)o(w)o(een)k(these)g(t)o(w)o(o)e(goals.) 16 b(F)m(or)11 b(the)h(most)e(common)e(case)75 95 y(of)13 b(messages)g(where)i(all)d(en)o(tries)j(ha)o(v)o(e)e(the)h(same)f(t)o (yp)q(e)h Fg(MPI)p 1039 95 V 15 w(PROBE)f Fk(returns)i(the)f(correct)h (length)e(information;)75 145 y(the)h(more)f(esoteric)i(case)f(is)g (handled)f(b)o(y)g(the)i Fg(MPI)p 883 145 V 15 w(GET)p 964 145 V 15 w(LEN)e Fk(that)g(is)h(describ)q(ed)h(b)q(elo)o(w.)j(The)c (curren)o(t)h(solution)75 195 y(sa)o(v)o(es)h(us)f(the)h(need)g(for)f (one)g(additional)f(w)o(ord)h(p)q(er)h(message)f(that)g(w)o(ould)f (otherwise)j(b)q(e)e(needed)i(to)e(transfer)75 244 y(the)f(message)g (length)g(\(in)f(elemen)o(ts\))h(with)g(the)g(message.)166 426 y Ft(MPI)p 275 426 16 2 v 18 w(GET)p 404 426 V 20 w(LEN\()k(len,)f(return)p 813 426 V 19 w(status,)g(bu\013er)p 1135 426 V 18 w(descriptor\))166 524 y Fs(Computes)g(the)h(n)o(um)o(b)q (er)h(of)e(elemen)o(ts)i(that)e(w)o(ould)h(b)q(e)h(receiv)o(ed,)g(if)f (the)g(message)g(that)f(is)h(as-)75 580 y(so)q(ciated)e(with)h(the)f (return)f(status)g(handle)i(w)o(ould)g(b)q(e)f(receiv)o(ed)h(in)g(the)f (bu\013er)g(asso)q(ciated)g(with)g(the)75 637 y(bu\013er)f(descriptor)h (handle.)75 757 y Ft(OUT)i(len)24 b Fs(n)o(um)o(b)q(er)15 b(of)g(elemen)o(ts)h(that)e(w)o(ould)i(b)q(e)g(receiv)o(ed)g(\(in)o (teger\))75 877 y Ft(IN)h(return)p 302 877 V 18 w(status)23 b Fs(handle)17 b(to)d(return)i(status)e(descriptor)75 998 y Ft(IN)j(bu\013er)p 291 998 V 18 w(descriptor)23 b Fs(handle)16 b(to)f(bu\013er)g(descriptor)166 1194 y Fl(Discussion:)166 1250 y Fk(In)f(order)g(to)g(supp)q(ort)g(this)g (function,)f(and)h(additional)e(\014eld)i(is)f(needed)j(to)d(in)h(the)g (return)h(status)g(ob)r(ject,)75 1300 y(e.g.,)10 b(n)o(um)o(b)q(er)f (of)g(b)o(ytes)i(in)f(the)h(incoming)c(message)j(matc)o(hed)g(b)o(y)g (prob)q(e,)h(or)f(v)n(alue)f(of)h(t)o(yp)q(e)g(parameter)g(pro)o(vided) 75 1350 y(b)o(y)k(prob)q(e)g(\(unless)h(w)o(e)f(add)g(this)g(parameter) f(to)h(the)h Fg(MPI)p 1001 1350 14 2 v 15 w(GET)p 1082 1350 V 15 w(LEN)e Fk(function,)g(whic)o(h)h(is)g(to)q(o)f(ugly)g(to)h (b)q(ear\).)166 1531 y Ft(MPI)p 275 1531 16 2 v 18 w(CANCEL\()j (handle,)h(\015ag\))75 1706 y(IN)f(handle)24 b Fs(handle)16 b(to)f(comm)o(unication)h(ob)s(ject)75 1826 y Ft(OUT)i(\015ag)24 b Fs(\(logical\))166 1966 y(A)19 b(call)i(to)e Fh(MPI)p 442 1966 15 2 v 17 w(CANCEL)f Fs(cancels)j(a)e(p)q(ending)i(comm)o (unication)f(op)q(eration)g(\(send)g(or)f(receiv)o(e\).)75 2022 y(The)14 b(call)h(returns)e Fh(flag)23 b(=)h(true)13 b Fs(if)h(the)g(cancel)h(op)q(eration)f(succeeeded,)h Fh(flag)23 b(=)h(false)13 b Fs(otherwise.)75 2079 y(It)j(m)o(ust)f(b)q (e)i(the)f(case)g(that)f(either)i(the)f(cancel)h(op)q(eration)f (succeeds)h(or)e(that)g(the)h(p)q(ending)i(comm)o(u-)75 2135 y(nication)g(op)q(eration)e(completes)i(\(but)e(not)g(b)q(oth\).) 24 b(If)17 b(a)f(comm)o(unication)h(op)q(eration)g(w)o(as)f(cancelled) 75 2191 y(successfully)l(,)k(the)d(e\013ect)h(is)f(as)h(if)f(this)h(op) q(eration)g(w)o(as)f(nev)o(er)g(executed.)28 b(If)17 b(a)g(send)i(w)o(as)d(canceleed)75 2248 y(successfully)22 b(then)e(the)g(message)f(sen)o(t)g(will)j(not)d(b)q(e)h(receiv)o(ed,)i (the)e(receiv)o(e)g(bu\013er)g(of)f(an)o(y)h(p)q(osted)75 2304 y(receiv)o(e)g(for)f(that)g(message)g(will)i(not)e(b)q(e)h (altered,)g(and)g(an)o(y)f(suc)o(h)h(receiv)o(e)g(has)f(to)g(b)q(e)h (satis\014ed)g(b)o(y)75 2361 y(another)15 b(send;)g(if)g(a)g(receiv)o (e)h(w)o(as)e(cancelled)j(successfully)l(,)g(then)e(the)g(reciev)o(e)h (bu\013er)f(p)q(osted)g(will)h(not)75 2417 y(b)q(e)g(altered,)f(and)h (an)o(y)e(send)i(matc)o(hing)f(this)h(receiv)o(e)g(has)f(to)g(b)q(e)h (satis\014ed)f(b)o(y)h(another)e(receiv)o(e.)166 2556 y Fl(Implemen)o(tati)o(on)e(note:)166 2613 y Fk(There)j(is)f(not)f(exp) q(ectation)i(that)f(a)g(cancel)g(op)q(eration)g(will)e(b)q(e)j(fast.)p eop %%Page: 31 36 31 35 bop 75 -100 a Fq(2.13.)34 b(CORRECTNESS)1280 b Fs(31)75 45 y Fm(2.13)70 b(Correctness)75 234 y Fl(Discussion:)17 b Fk(The)d(material)f(in)h(this)g(section)h(has)g(not)f(y)o(et)h(b)q (een)h(discussed)g(b)o(y)e(MPIF.)g(Some)g(or)g(all)f(of)h(it)g(is)75 291 y(lik)o(ely)f(to)g(mo)o(v)o(e)g(to)g(Section)i(6.)i(It)d(is)g (incorp)q(orated)h(here)g(for)e(completeness.)75 510 y Fj(2.13.1)55 b(Order)75 601 y Fs(MPI)17 b(preserv)o(es)f(the)h(order) g(of)f(messages)g(b)q(et)o(w)o(een)h(an)o(y)g(\014xed)g(pair)g(of)g (pro)q(cesses.)24 b(In)18 b(other)e(w)o(ords,)75 657 y(if)22 b(pro)q(cess)f(A)h(executes)f(t)o(w)o(o)f(successiv)o(e)j(send) f Fh(start)e Fs(sub)q(op)q(erations,)j(pro)q(cess)f(B)f(executes)h(t)o (w)o(o)75 713 y(successiv)o(e)e(receiv)o(e)g Fh(start)e Fs(op)q(erations,)i(and)f(b)q(oth)h(receiv)o(es)f(matc)o(h)g(either)h (sends,)g(then)f(the)g(\014rst)75 770 y(receiv)o(e)f(will)h(receiv)o(e) g(the)e(message)g(sen)o(t)g(b)o(y)h(the)f(\014rst)g(send,)i(and)e(the)h (second)g(receiv)o(e)g(will)h(receiv)o(e)75 826 y(the)f(message)f(sen)o (t)h(b)o(y)g(the)g(second)g(send.)29 b(Th)o(us,)18 b(if)h(a)e(t)o(w)o (o)g(messages)g(from)g(the)h(same)g(source)g(can)75 883 y(satisfy)g(a)g(p)q(ending)i(receiv)o(e,)g(the)e(\014rst)g(message)g (sen)o(t)g(is)g(accepted;)i(if)f(a)f(message)g(can)g(satisfy)g(t)o(w)o (o)75 939 y(p)q(ending)f(receiv)o(es,)f(the)f(\014rst)g(receiv)o(e)h(p) q(osted)f(is)h(satis\014ed.)166 998 y(The)c(last)f(paragraph)g(assumes) g(that)g(the)h(send)g Fh(start)e Fs(op)q(erations)i(are)f(ordered)h(b)o (y)f(the)h(program)75 1055 y(order)20 b(at)f(pro)q(cess)h(A,)g(and)g (the)g(receiv)o(e)h Fh(start)e Fs(op)q(erations)h(are)f(ordered)i(b)o (y)e(the)h(program)f(order)75 1111 y(at)h(pro)q(cess)h(B.)g(If)g(a)g (pro)q(cess)g(is)g(m)o(ultithreaded)h(and)f(the)g(op)q(erations)h(are)e (executed)i(b)o(y)f(distinct)75 1168 y(threads,)d(then)g(the)g(seman)o (tics)f(of)h(the)f(threaded)h(system)g(ma)o(y)f(not)g(de\014ne)i(an)e (order)h(b)q(et)o(w)o(een)g(the)75 1224 y(t)o(w)o(o)c(op)q(erations,)h (in)h(whic)o(h)g(case)f(the)g(condition)i(is)f(v)o(oid.)75 1361 y Fj(2.13.2)55 b(Progress)19 b(and)g(F)-5 b(airness)75 1451 y Fs(W)l(e)20 b(can)g(mo)q(del)g(the)g(execution)h(of)e(MPI)h (programs)e(as)h(an)h(in)o(teraction)g(b)q(et)o(w)o(een)g(executing)h (pro-)75 1508 y(cesses)d(that)f(execute)h(eac)o(h)g(their)g(o)o(wn)f (program,)g(and)g(the)h Ft(comm)o(unication)j(subsystem)p Fs(.)26 b(The)75 1564 y(comm)o(unication)16 b(subsystem)g(ma)o(y)f(ha)o (v)o(e)g(v)m(arious)h(constrain)o(ts)g(on)f(the)h(amoun)o(t)f(of)g (resources)h(it)g(can)75 1621 y(use.)k(E.g.:)166 1680 y(Bounds)e(on)f(the)g(n)o(um)o(b)q(er)h(and)f(total)g(sizes)h(of)f (activ)o(e)h(comm)o(unication)g(ob)s(jects.)25 b(Suc)o(h)18 b(b)q(ound)75 1736 y(can)d(b)q(e)h(global,)g(p)q(er)f(no)q(de,)h(or)e (p)q(er)i(pair)g(of)e(comm)o(unicating)i(no)q(des.)166 1795 y(Bounds)e(on)g(the)g(n)o(um)o(b)q(er)g(and)h(total)e(sizes)i(of)e (messages)g(bu\013ered)i(in)f(the)g(system.)19 b(Suc)o(h)c(b)q(ound)75 1852 y(can,)k(again,)g(b)q(e)g(global,)g(p)q(er)g(no)q(de,)g(or)f(p)q (er)h(pair)f(of)g(comm)o(unicating)h(no)q(de.)30 b(In)19 b(addition,)h(a)e(mes-)75 1908 y(sage)f(ma)o(y)g(b)q(e)h(bu\013ered)g (at)f(the)g(sender,)i(at)d(the)i(receiv)o(er,)g(at)f(b)q(oth,)h(or)f(p) q(erhaps)h(at)f(another)g(place)75 1965 y(altogether.)166 2024 y(Th)o(us,)i(it)g(will)i(b)q(e)e(di\016cult)h(to)e(set)h(rules)g (on)g(resource)g(managemen)o(t)f(of)g(the)h(comm)o(unication)75 2080 y(subsystem.)29 b(Ho)o(w)o(ev)o(er,)17 b(it)i(is)g(generally)g (exp)q(ected)g(that)f(implemen)o(ters)h(will)h(pro)o(vide)f (information)75 2136 y(on)c(the)g(mec)o(hanism)g(used)h(for)e(resource) h(allo)q(cation,)h(and)f(that)f(query)i(and)f(set)f(functions)i(will)h (allo)o(w)75 2193 y(to)e(query)g(and)g(p)q(ossibly)i(con)o(trol)e(the)g (amoun)o(t)g(of)f(a)o(v)m(ailable)j(resources.)166 2252 y(W)l(e)g(pro)o(vide)h(in)g(this)f(section)h(a)f(set)g(of)g(minimal)h (requiremen)o(ts)g(on)f(the)h(comm)o(unication)f(sub-)75 2308 y(system.)26 b(Programs)15 b(that)i(execute)h(on)f(an)o(y)g (subsystem)g(that)f(ful\014ls)j(these)f(minimal)g(requiremen)o(ts)75 2365 y(are)12 b Ft(safe)h Fs(and)g(will)h(p)q(ort)f(to)f(an)o(y)g(MPI)h (implemen)o(tation.)21 b Ft(Unsafe)13 b Fs(programs)e(ma)o(y)h(execute) i(on)e(some)75 2421 y(MPI)k(implemen)o(tations,)h(dep)q(ending)h(on)e (the)g(amoun)o(t)f(of)g(a)o(v)m(ailable)j(resources)e(and)g(the)g (implemen-)75 2478 y(tation)k(used)g(for)g(the)g(MPI)g(comm)o (unication)h(subsystem.)34 b(Finally)22 b Ft(erroneous)d Fs(programs)g(nev)o(er)75 2534 y(execute)e(correctly)l(.)22 b(\(While)17 b(it)f(is)g(desirable)i(to)d(detect)h(erroneous)g (programs,)e(it)i(is)h(not)e(p)q(ossible)j(to)75 2591 y(do)c(so)h(at)e(compile)j(time,)f(and)g(often)f(prohibitiv)o(e)i(to)e (do)h(so)f(a)g(run)h(time.)20 b(Th)o(us,)14 b(the)h(do)q(cumen)o(t)g (do)q(es)75 2647 y(not)f(sp)q(ecify)h(a)f(b)q(eha)o(vior)h(for)f (erroneous)g(programs,)f(although)h(the)g(desired)i(b)q(eha)o(vior)f (is)f(to)g(return)g(a)75 2704 y(useful)i(error)f(message.\))p eop %%Page: 32 37 32 36 bop 75 -100 a Fs(32)613 b Fq(CHAPTER)16 b(2.)29 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)131 45 y Fs(1.)22 b(If)15 b(a)g(pro)q(cess)g(executes)h(an)f Fh(INIT)f Fs(op)q(eration,)h(then)g(the)h(op)q(eration)f(ev)o(en)o(tually)h (succeeds,)g(or)e(a)189 102 y Fi(r)n(esour)n(c)n(e)f(exc)n(eption)f Fs(o)q(ccurs.)19 b(The)13 b(standard)f(do)q(es)g(not)h(sp)q(ecify)g (when)g(a)f(resource)h(exception)g(is)189 158 y(allo)o(w)o(ed)h(to)g(o) q(ccur.)20 b(It)14 b(is)h(exp)q(ected)h(that)d(an)h(op)q(erational)h (de\014nition)h(will)g(b)q(e)f(made)g(a)o(v)m(ailable,)189 214 y(in)20 b(the)g(form)e(of)h(test)g(programs)g(that)f(ha)o(v)o(e)h (to)g(execute)h(with)g(no)g(resource)f(exceptions.)34 b(It)189 271 y(is)21 b(highly)i(desirable)f(to)f(ha)o(v)o(e)f(generous) h(b)q(ounds)h(on)f(the)g(n)o(um)o(b)q(er)h(of)e(concurren)o(tly)i (activ)o(e)189 327 y(comm)o(unication)17 b(ob)s(jects)f(eac)o(h)g(pro)q (cess)h(ma)o(y)f(ha)o(v)o(e,)g(so)g(that,)g(in)i(practice,)f Fh(INIT)f Fs(op)q(erations)189 384 y(will)g(alw)o(a)o(ys)f(b)q(e)h (guaran)o(teed)f(to)f(succeed.)131 480 y(2.)22 b(Eac)o(h)16 b(pro)q(cess)g(can)h(initiate)h(a)e(comm)o(unication)h(op)q(eration)g (for)e(eac)o(h)i(activ)o(e)f(comm)o(unication)189 536 y(ob)s(ject.)j(I.e.)h(correct)15 b Fh(START)f Fs(op)q(erations)i(alw)o (a)o(ys)e(succeed)i(\(ev)o(en)o(tually\).)131 632 y(3.)22 b(A)e(send)h(op)q(eration)f(is)h Ft(enabled)h Fs(if)e(the)h(sending)g (pro)q(cess)g(has)f(issued)i(a)e Fh(COMPLETE)f Fs(op)q(era-)189 689 y(tion)f(and)g(the)f(receiving)j(pro)q(cess)e(has)g(issued)g(a)g Fh(START)f Fs(op)q(eration)h(for)f(a)h(matc)o(hing)f(receiv)o(e.)189 745 y(Symmetrically)l(,)k(a)d(receiv)o(e)i(op)q(eration)f(is)g Ft(enabled)g Fs(if)h(the)e(receiving)j(pro)q(cess)e(has)f(issued)i(a) 189 802 y Fh(COMPLETE)10 b Fs(op)q(eration)i(and)f(the)h(sending)g(pro) q(cess)g(has)f(issued)i(a)e Fh(START)g Fs(op)q(eration)g(for)g(a)g (matc)o(h-)189 858 y(ing)19 b(send.)31 b(An)19 b(enabled)h(op)q (eration)e(ma)o(y)g(b)q(ecome)i Ft(disabled)f Fs(either)h(b)q(ecause)f (it)g(completes)189 914 y(successfully)e(or,)e(in)h(the)f(case)h(of)f (a)g(receiv)o(e,)h(b)q(ecause)g(the)g(matc)o(hing)f(message)g(is)h (successfully)189 971 y(receiv)o(ed)g(b)o(y)f(another)g(receiv)o(e)g (op)q(eration)h(or,)e(in)i(the)f(case)g(of)g(a)f(send,)i(b)q(ecause)g (the)f(matc)o(hing)189 1027 y(receiv)o(e)h(successfully)h(receiv)o(es)f (another)f(message.)189 1104 y Ft(An)24 b(enabled)j(op)q(eration)f (either)g(completes)f(successfully)h(or)e(b)q(ecomes)i(p)q(erma-)189 1160 y(nen)o(tly)17 b(disabled.)189 1236 y Fs(I.e.,)d(an)h(enabled)i (op)q(eration)e(either)h(ev)o(en)o(tually)g(succeeds,)g(or)e(b)q (ecomes)i(disabled)h(\(progress\);)189 1293 y(and)i(an)g(op)q(eration)g (cannot)g(b)q(e)h(enabled)h(in\014nitely)g(man)o(y)e(times)g(without)g (ev)o(er)g(succeeding)189 1349 y(\(fairness\).)131 1445 y(4.)j(A)15 b Fh(FREE)f Fs(op)q(eration)i(alw)o(a)o(ys)e(succeeds)j (\(ev)o(en)o(tually\).)166 1554 y(The)i(four)f(conditions)i(guaran)o (tee)d(progress)h(in)i(the)e(comm)o(unication)i(subsystem.)30 b(The)18 b(third)75 1610 y(condition)e(guaran)o(tee)f(\(w)o(eak\))f (fairness)h(among)g(comp)q(eting)h(comm)o(unication)g(requests.)166 1667 y(Examples)g(\(in)o(v)o(olving)g(t)o(w)o(o)e(pro)q(cessors)h(with) g(ranks)g(0)g(and)g(1\))166 1724 y(The)g(follo)o(wing)h(program)e(is)i (safe,)f(and)g(should)h(alw)o(a)o(ys)f(succeed.)75 1877 y Fh(CALL)23 b(MPI_RANK\(rank,)f(context\))75 1934 y(IF)i (\(rank.EQ.0\))e(THEN)147 1990 y(CALL)h(MPI_SENDB\(sendbuf,)e(len,)j (1,)f(tag,)h(context\))147 2047 y(CALL)f(MPI_RECVB\(recvbuf,)e(len,)j (1,)f(tag,)h(context\))75 2103 y(ELSE)95 b(!)24 b(rank.EQ.1)147 2160 y(CALL)f(MPI_RECVB\(recvbuf,)e(len,)j(0,)f(tag,)h(context\))147 2216 y(CALL)f(MPI_SENDB\(sendbuf,)e(len,)j(0,)f(tag,)h(context\))75 2272 y(END)f(IF)166 2368 y Fs(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 2534 y Fh(CALL)23 b(MPI_RANK\(rank,)f(context\))75 2591 y(IF)i(\(rank.EQ.0\))e(THEN)147 2647 y(CALL)h(MPI_RECVB\(recvbuf,)e (len,)j(1,)f(tag,)h(context\))147 2704 y(CALL)f(MPI_SENDB\(sendbuf,)e (len,)j(1,)f(tag,)h(context\))p eop %%Page: 33 38 33 37 bop 75 -100 a Fq(2.14.)34 b(MISSING)1432 b Fs(33)75 45 y Fh(ELSE)95 b(!)24 b(rank.EQ.1)147 102 y(CALL)f (MPI_RECVB\(recvbuf,)e(len,)j(0,)f(tag,)h(context\))147 158 y(CALL)f(MPI_SENDB\(sendbuf,)e(len,)j(0,)f(tag,)h(context\))75 214 y(END)f(IF)166 321 y Fs(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 377 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)75 434 y(of)c(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 490 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 547 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 709 y Fh(CALL)23 b(MPI_RANK\(rank,)f(context\))75 766 y(IF)i(\(rank.EQ.0\))e(THEN)147 822 y(CALL)h(MPI_SENDB\(sendbuf,)e (len,)j(1,)f(tag,)h(context\))147 879 y(CALL)f(MPI_RECVB\(recvbuf,)e (len,)j(1,)f(tag,)h(context\))75 935 y(ELSE)95 b(!)24 b(rank.EQ.1)147 992 y(CALL)f(MPI_SENDB\(sendbuf,)e(len,)j(0,)f(tag,)h (context\))147 1048 y(CALL)f(MPI_RECVB\(recvbuf,)e(len,)j(0,)f(tag,)h (context\))75 1104 y(END)f(IF)166 1267 y Fs(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 1324 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 1380 y(one)i(of)g(the)h(t)o(w)o(o)e(messages)g(sen)o(t)h(is)h (bu\013ered)g(out)f(of)f(either)i(pro)q(cesses')g(address)f(space.)23 b(Th)o(us,)17 b(this)75 1437 y(program)c(can)i(succeed)g(only)g(if)g (the)f(comm)o(unication)h(system)f(has)g(su\016cien)o(t)h(bu\013er)g (space)f(to)g(bu\013er)75 1493 y Fh(len)h Fs(w)o(ords)f(of)h(data.)166 1549 y(If)g(additional)h(requiremen)o(ts)f(will)i(b)q(ecome)e(part)f (of)h(the)g(standard)f(\(e.g.,)f(b)q(ounds)j(on)f(the)f(mini-)75 1606 y(mal)i(n)o(um)o(b)q(er)f(of)g(concurren)o(tly)h(activ)o(e)f (handles)i(that)e(need)h(b)q(e)g(supp)q(orted,)f(then)h(further)f (programs)75 1662 y(b)q(ecome)h(safe.)75 1806 y Fm(2.14)70 b(Missing)143 1907 y Fo(\017)23 b Fs(send-receiv)o(e)143 2001 y Fo(\017)g Fs(Send)16 b(and)f(receiv)o(e)h(from)f(same)g (bu\013er)p eop %%Page: 34 39 34 38 bop 75 358 a Fn(Chapter)34 b(3)75 567 y Fu(Collecti)q(v)m(e)42 b(Comm)m(unication)892 791 y Fs(Al)16 b(Geist)876 847 y(Marc)e(Snir)75 998 y Fm(3.1)70 b(In)n(tro)r(duction)75 1102 y Fs(This)22 b(section)f(is)h(a)e(draft)h(of)f(the)h(curren)o(t)g (prop)q(osal)g(for)g(collectiv)o(e)i(comm)o(unication.)38 b(Collectiv)o(e)75 1158 y(comm)o(unication)12 b(is)f(de\014ned)i(to)d (b)q(e)i(comm)o(unication)g(that)e(in)o(v)o(olv)o(es)h(a)g(group)g(of)g (pro)q(cesses.)18 b(Examples)75 1215 y(are)c(broadcast)g(and)g(global)i (sum.)j(A)c(collectiv)o(e)h(op)q(eration)f(is)f(executed)i(b)o(y)e(ha)o (ving)h(all)g(pro)q(cesses)g(in)75 1271 y(the)j(group)f(call)h(the)g (comm)o(unication)g(routine,)h(with)e(matc)o(hing)h(parameters.)26 b(Routines)18 b(can)g(\(but)75 1328 y(are)f(not)g(required)h(to\))e (return)i(as)f(so)q(on)g(as)g(their)g(participation)i(in)f(the)f (collectiv)o(e)i(comm)o(unication)75 1384 y(is)h(complete.)34 b(The)19 b(completion)i(of)e(a)g(call)i(indicates)g(that)e(the)g (caller)i(is)f(no)o(w)f(free)g(to)g(access)h(the)75 1441 y(lo)q(cations)i(in)g(the)f(comm)o(unication)g(bu\013er,)h(or)f(an)o(y) g(other)f(lo)q(cation)i(that)e(can)h(b)q(e)h(referenced)g(b)o(y)75 1497 y(the)c(collectiv)o(e)j(op)q(eration.)29 b(Ho)o(w)o(ev)o(er,)18 b(it)h(do)q(es)f(not)g(indicate)i(that)e(other)g(pro)q(cesses)h(in)g (the)f(group)75 1554 y(ha)o(v)o(e)c(started)g(the)h(op)q(eration)g (\(unless)h(otherwise)f(indicated)h(in)g(the)f(description)h(of)f(the)f (op)q(eration\).)75 1610 y(Ho)o(w)o(ev)o(er,)i(the)g(successful)i (completion)g(of)e(a)h(collectiv)o(e)h(comm)o(unication)f(call)h(ma)o (y)e(dep)q(end)i(on)f(the)75 1667 y(execution)f(of)f(a)g(matc)o(hing)g (call)h(at)f(all)h(pro)q(cesses)g(in)g(the)f(group.)166 1724 y(The)g(syn)o(tax)g(and)g(seman)o(tics)g(of)g(the)g(collectiv)o(e) i(op)q(erations)f(is)f(de\014ned)i(so)e(as)f(to)h(b)q(e)h(consisten)o (t)75 1781 y(with)g(the)f(syn)o(tax)f(and)i(seman)o(tics)f(of)g(the)g (p)q(oin)o(t)h(to)e(p)q(oin)o(t)i(op)q(erations.)166 1839 y(The)f(reader)f(is)h(referred)f(to)g(the)g(p)q(oin)o(t-to-p)q (oin)o(t)h(comm)o(unication)g(section)g(of)f(the)h(curren)o(t)f(MPI)75 1895 y(draft)g(for)f(information)i(concerning)g(comm)o(unication)g (bu\013ers)g(and)f(their)h(manipulations.)21 b(The)15 b(con-)75 1952 y(text)d(section)h(describ)q(es)g(the)g(formation,)e (manipulation,)j(and)f(query)f(functions)h(\(suc)o(h)g(as)e(group)h (size\))75 2008 y(that)i(are)h(a)o(v)m(ailable)i(for)e(groups)g(and)g (group)g(ob)s(jects.)166 2066 y(The)23 b(collectiv)o(e)i(comm)o (unication)f(routines)f(are)g(built)h(ab)q(o)o(v)o(e)f(the)g(p)q(oin)o (t-to-p)q(oin)o(t)h(routines.)75 2122 y(While)14 b(v)o(endors)d(ma)o(y) h(optimize)h(certain)g(collectiv)o(e)h(routines)e(for)g(their)g(arc)o (hitectures,)h(a)f(complete)h(li-)75 2179 y(brary)h(of)g(the)h (collectiv)o(e)h(comm)o(unication)g(routines)f(can)f(b)q(e)i(written)e (en)o(tirely)i(using)f(p)q(oin)o(t-to-p)q(oin)o(t)75 2235 y(comm)o(unication)21 b(functions.)37 b(W)l(e)20 b(are)h(using)g(naiv)o(e)g(implemen)o(tations)h(of)e(the)g(collectiv)o (e)j(calls)e(in)75 2292 y(terms)f(of)f(p)q(oin)o(t)i(to)e(p)q(oin)o(t)i (op)q(erations)f(in)h(order)f(to)f(pro)o(vide)i(an)f(op)q(erational)h (de\014nition)h(of)d(their)75 2348 y(seman)o(tics.)166 2406 y(The)c(follo)o(wing)h(comm)o(unication)g(functions)g(are)f(prop)q (osed.)143 2505 y Fo(\017)23 b Fs(Broadcast)14 b(from)g(one)i(mem)o(b)q (er)f(to)g(all)h(mem)o(b)q(ers)f(of)g(a)g(group.)143 2604 y Fo(\017)23 b Fs(Barrier)15 b(across)f(all)j(group)d(mem)o(b)q (ers)143 2704 y Fo(\017)23 b Fs(Gather)14 b(data)h(from)f(all)i(group)f (mem)o(b)q(ers)g(to)g(one)g(mem)o(b)q(er.)952 2828 y(34)p eop %%Page: 35 40 35 39 bop 75 -100 a Fq(3.2.)34 b(GR)o(OUP)15 b(FUNCTIONS)1192 b Fs(35)143 45 y Fo(\017)23 b Fs(Scatter)14 b(data)h(from)f(one)i(mem)o (b)q(er)f(to)g(all)h(mem)o(b)q(ers)f(of)g(a)g(group.)143 137 y Fo(\017)23 b Fs(Global)15 b(op)q(erations)g(suc)o(h)h(as)e(sum,)h (max,)f(min,)i(etc.,)e(w)o(ere)h(the)g(result)g(is)h(kno)o(wn)e(b)o(y)h (all)h(group)189 193 y(mem)o(b)q(ers)e(and)h(a)g(v)m(ariation)g(where)g (the)g(result)g(is)g(kno)o(wn)f(b)o(y)h(only)g(one)g(mem)o(b)q(er.)20 b(The)15 b(abilit)o(y)189 250 y(to)f(ha)o(v)o(e)h(user)g(de\014ned)i (global)f(op)q(erations.)143 342 y Fo(\017)23 b Fs(Sim)o(ultaneous)14 b(shift)g(of)f(data)g(around)g(the)g(group,)h(the)f(simplest)i(example) f(b)q(eing)h(all)f(mem)o(b)q(ers)189 398 y(sending)i(their)g(data)e(to) h(\(rank+1\))f(with)i(wrap)e(around.)143 490 y Fo(\017)23 b Fs(Scan)15 b(across)g(all)h(mem)o(b)q(ers)f(of)g(a)g(group)g(\(also)g (called)h(parallel)h(pre\014x\).)143 582 y Fo(\017)23 b Fs(Broadcast)14 b(from)g(all)j(mem)o(b)q(ers)e(to)f(all)j(mem)o(b)q (ers)e(of)g(a)g(group.)143 674 y Fo(\017)23 b Fs(Scatter)18 b(data)f(from)h(all)h(mem)o(b)q(ers)g(to)f(all)h(mem)o(b)q(ers)f(of)g (a)g(group)h(\(also)f(called)i(complete)f(ex-)189 730 y(c)o(hange)c(or)g(index\).)166 819 y(T)l(o)g(simplify)i(the)f (collectiv)o(e)h(comm)o(unication)g(in)o(terface)e(it)h(is)g(designed)h (with)f(t)o(w)o(o)e(la)o(y)o(ers.)21 b(The)75 876 y(lo)o(w)e(lev)o(el)i (routines)e(ha)o(v)o(e)g(all)i(the)e(generalit)o(y)h(of,)f(and)h(mak)o (e)e(use)i(of,)g(the)f(comm)o(unication)h(bu\013er)75 932 y(routines)15 b(of)g(the)f(p)q(oin)o(t-to-p)q(oin)o(t)i(section)f (whic)o(h)h(allo)o(ws)f(arbitrarily)g(complex)h(messages)e(to)g(b)q(e)i (con-)75 989 y(structed.)k(The)14 b(second)h(lev)o(el)g(routines)g(are) f(similar)i(to)d(the)i(upp)q(er)g(lev)o(el)g(p)q(oin)o(t-to-p)q(oin)o (t)g(routines)g(in)75 1045 y(that)f(they)i(send)g(only)f(a)g(con)o (tiguous)g(bu\013er.)75 1187 y Fm(3.2)70 b(Group)24 b(F)-6 b(unctions)75 1289 y Fs(A)17 b(full)h(description)g(of)e(the)h(group)f (formation)g(and)h(manipulation)h(functions)f(can)g(b)q(e)g(found)g(in) h(the)75 1345 y(con)o(text)f(c)o(hapter)h(of)f(the)g(MPI)h(do)q(cumen)o (t.)28 b(Here)18 b(w)o(e)f(describ)q(e)i(only)g(those)e(group)g (functions)i(that)75 1402 y(are)c(used)h(in)g(the)f(seman)o(tic)g (description)i(of)e(the)g(collectiv)o(e)i(comm)o(unication)f(routines.) 166 1458 y(An)g(initial)j(group)d(con)o(taining)h(all)g(pro)q(cesses)g (is)g(supplied)h(b)o(y)e(default)h(in)g(MPI.)f(MPI)g(pro)o(vides)75 1515 y(a)f(pro)q(cedure)g(that)f(returns)h(the)g(handle)h(to)e(this)i (initial)h(group.)i(The)c(pro)q(cesses)g(in)h(the)f(inital)h(group)75 1571 y(eac)o(h)22 b(ha)o(v)o(e)f(a)h(unique)h(rank)e(in)i(the)f(group)f (represen)o(ted)h(b)o(y)g(in)o(tegers)g(\(0,)g(1,)h(2,)f(...,)g([n)o (um)o(b)q(er-of-)75 1628 y(pro)q(cesses)16 b(-)f(1].)166 1720 y Ft(MPI)p 275 1720 16 2 v 18 w(ALLGR)o(OUP\(group\))i Fs(Return)g(the)f(descriptor)h(of)e(the)i(inital)g(group)f(con)o (taining)h(all)75 1811 y(pro)q(cesses.)75 1900 y Ft(OUT)h(group)23 b Fs(handle)16 b(to)f(descriptor)h(ob)s(ject)e(of)h(initial)i(group.) 166 2025 y Ft(MPI)p 275 2025 V 18 w(RANK\(group,)g(rank\))d Fs(Return)i(the)f(rank)g(of)g(the)g(calling)i(pro)q(cess)e(within)h (the)f(sp)q(eci-)75 2117 y(\014ed)h(group.)75 2206 y Ft(IN)h(group)23 b Fs(group)15 b(handle)75 2298 y Ft(OUT)j(rank)23 b Fs(in)o(teger)166 2422 y Ft(MPI)p 275 2422 V 18 w(GSIZE\(group,)18 b(size\))e Fs(Return)g(the)f(n)o(um)o(b)q(er)h(of)f(pro)q(cesses)h (that)e(b)q(elong)j(to)e(the)g(sp)q(ec-)75 2514 y(i\014ed)h(group.)75 2603 y Ft(IN)h(group)23 b Fs(group)15 b(handle)75 2695 y Ft(OUT)j(size)23 b Fs(in)o(teger)p eop %%Page: 36 41 36 40 bop 75 -100 a Fs(36)703 b Fq(CHAPTER)15 b(3.)35 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Fm(3.3)70 b(Comm)n(unication)20 b(F)-6 b(unctions)75 147 y Fs(The)11 b(prop)q(osed)g(comm)o(unication)h(functions)g(are)e(divided)j(in)o(to) e(t)o(w)o(o)f(la)o(y)o(ers.)18 b(The)11 b(lo)o(w)o(est)f(lev)o(el)j (uses)e(the)75 203 y(same)j(bu\013er)g(descriptor)h(ob)s(jects)e(a)o(v) m(ailable)j(in)f(p)q(oin)o(t-to-p)q(oin)o(t)g(to)f(create)g(noncon)o (tiguous,)g(m)o(ultiple)75 259 y(data)k(t)o(yp)q(e)h(messages.)31 b(The)19 b(second)h(lev)o(el)g(is)g(similar)g(to)e(the)h(blo)q(c)o(k)h (send/receiv)o(e)g(p)q(oin)o(t-to-p)q(oin)o(t)75 316 y(op)q(erations)g(in)g(that)f(it)h(supp)q(orts)g(only)g(con)o(tiguous)g (bu\013ers)g(of)f(data.)32 b(F)l(or)19 b(eac)o(h)h(comm)o(unication)75 372 y(op)q(eration,)15 b(w)o(e)g(list)h(these)f(t)o(w)o(o)f(lev)o(el)j (of)e(calls)h(together.)75 514 y Fm(3.4)70 b(Sync)n(hronization)75 616 y Ft(Barrier)17 b(sync)o(hronization)75 737 y(MPI)p 184 737 16 2 v 18 w(BARRIER\()h(group)g(\))166 829 y Fs(MPI)p 258 829 14 2 v 16 w(BARRIER)g(blo)q(c)o(ks)f(the)f(calling)i (pro)q(cess)e(un)o(til)h(all)g(group)e(mem)o(b)q(ers)i(ha)o(v)o(e)e (called)j(it;)e(the)75 885 y(call)g(returns)f(at)g(an)o(y)g(pro)q(cess) g(only)h(after)e(all)j(group)e(mem)o(b)q(ers)g(ha)o(v)o(e)g(en)o(tered) g(the)g(call.)75 972 y Ft(IN)i(group)23 b Fs(group)15 b(handle)166 1058 y Fh(MPI)p 241 1058 15 2 v 17 w(BARRIER\()22 b(group)i(\))15 b Fs(is)75 1145 y Fh(MPI_CREATE_BUFFER\(buffer_h)o (andle,)20 b(MPI_BUFFER,)j(MPI_PERSISTENT\);)75 1201 y(MPI_GSIZE\()f(group,)i(&size)f(\);)75 1257 y(MPI_RANK\()g(group,)g (&rank)g(\);)75 1314 y(if)h(\(rank==0\))75 1370 y({)147 1427 y(for)f(\(i=1;)g(i)h(<)g(size;)f(i++\))218 1483 y(MPI_RECV\(buffer_handle,)e(i,)i(tag,)h(group,)f(return_handle\);)147 1540 y(for)g(\(i=1;)g(i)h(<)g(size;)f(i++\))218 1596 y(MPI_SEND\(buffer_handle,)e(i,)i(tag,)h(group\);)75 1653 y(})75 1709 y(else)75 1766 y({)147 1822 y (MPI_SEND\(buffer_handle,)c(0,)k(tag,)f(group\);)147 1878 y(MPI_RECV\(buffer_handle,)d(0,)k(tag,)f(group,)g (return_handle\);)75 1935 y(})75 1991 y(MPI_FREE\(buffer_handle\);)75 2133 y Fm(3.5)70 b(Data)23 b(mo)n(v)n(e)f(functions)75 2235 y Ft(Broadcast)75 2356 y(MPI)p 184 2356 16 2 v 18 w(BCAST\()c(bu\013er)p 555 2356 V 17 w(handle,)g(group,)f(ro)q(ot)h(\)) 166 2448 y Fh(MPI)p 241 2448 15 2 v 17 w(BCAST)12 b Fs(broadcasts)f(a)h (message)h(from)e(the)i(pro)q(cess)g(with)g(rank)f Fh(root)g Fs(to)g(all)h(other)g(pro)q(cesses)75 2504 y(of)18 b(the)g(group.)29 b(It)18 b(is)h(called)h(b)o(y)e(all)h(mem)o(b)q(ers)g(of)e(group)h (using)h(the)g(same)f(argumen)o(ts)f(for)h Fh(group,)75 2561 y(and)23 b(root)p Fs(.)d(On)15 b(return)h(the)f(con)o(ten)o(ts)f (of)h(the)g(bu\013er)g(of)g(the)g(pro)q(cess)h(with)f(rank)g Fh(root)g Fs(is)g(con)o(tained)75 2617 y(in)h(bu\013er)f(of)g(all)h (group)f(mem)o(b)q(ers.)75 2704 y Ft(INOUT)j(bu\013er)p 407 2704 16 2 v 18 w(handle)24 b Fs(Handle)16 b(for)e(bu\013er)i(where) f(from)g(message)f(is)i(sen)o(t)f(or)g(receiv)o(ed.)p eop %%Page: 37 42 37 41 bop 75 -100 a Fq(3.5.)34 b(D)o(A)l(T)l(A)15 b(MO)o(VE)g (FUNCTIONS)1077 b Fs(37)75 45 y Ft(IN)17 b(group)23 b Fs(group)15 b(handle)75 141 y Ft(IN)i(ro)q(ot)23 b Fs(rank)15 b(of)g(broadcast)g(ro)q(ot)f(\(in)o(teger\))166 273 y Ft(MPI)p 275 273 16 2 v 18 w(BCASTC\()j(buf,)g(len,)h(group,)f(ro)q(ot) h(\))166 365 y Fh(MPI)p 241 365 15 2 v 17 w(BCASTC)i Fs(b)q(eha)o(v)o(es)h(lik)o(e)i(broadcast,)e(restricted)h(to)e(a)h(blo) q(c)o(k)h(bu\013er.)37 b(It)22 b(is)f(called)i(b)o(y)e(all)75 422 y(pro)q(cesses)16 b(with)f(the)g(same)g(argumen)o(ts)g(for)f Fh(len,)24 b(group)14 b Fs(and)h Fh(root)p Fs(.)75 518 y Ft(INOUT)j(bu\013er)k Fs(Starting)15 b(address)g(of)g(bu\013er)g(\(c) o(hoice)h(t)o(yp)q(e\))75 614 y Ft(IN)h(len)23 b Fs(Num)o(b)q(er)16 b(of)f(w)o(ords)f(in)i(bu\013er)f(\(in)o(teger\))75 711 y Ft(IN)i(group)23 b Fs(group)15 b(handle)75 807 y Ft(in)j(ro)q(ot)23 b Fs(rank)15 b(of)g(broadcast)f(ro)q(ot)h(\(in)o(teger\))166 903 y Fh(MPI)p 241 903 V 17 w(BCAST\()23 b(buffer)p 569 903 V 16 w(handle,)g(group,)g(root)g(\))15 b Fs(is)75 1000 y Fh(MPI_GSIZE\()22 b(group,)i(&size)f(\);)75 1056 y(MPI_RANK\()g(group,)g(&rank)g(\);)75 1113 y(MPI_IRECV\(handle,)f (buffer_handle,)f(root,)j(tag,)f(group,)g(return_handle\);)75 1169 y(if)h(\(rank==root\))147 1226 y(for)f(\(i=0;)g(i)h(<)g(size;)f (i++\))218 1282 y(MPI_SEND\(buffer_handle,)e(i,)i(tag,)h(group\);)75 1339 y(MPI_WAIT\(handle\))75 1462 y Ft(Circular)18 b(shift)75 1584 y(MPI)p 184 1584 16 2 v 18 w(CSHIFT\()g(in)o(buf,)f(outbuf,)g (group,)g(shift\))166 1677 y Fs(Pro)q(cess)22 b(with)h(rank)g Fh(i)f Fs(sends)h(the)g(data)f(in)i(its)e(input)i(bu\013er)f(to)f(pro)q (cess)h(with)g(rank)f(\()p Fh(i)15 b Fs(+)75 1733 y Fh(shift)p Fs(\))d(mo)q(d)g Fh(group)p 447 1733 15 2 v 17 w(size)p Fs(,)h(who)g(receiv)o(es)h(the)g(data)e(in)i(its)g(output)f(bu\013er.) 20 b(All)14 b(pro)q(cesses)g(mak)o(e)f(the)75 1790 y(call)k(with)f(the) f(same)h(v)m(alues)g(for)f Fh(group)p Fs(,)g(and)h Fh(shift)p Fs(.)k(The)c Fh(shift)f Fs(v)m(alue)i(can)f(b)q(e)g(p)q(ositiv)o(e,)g (zero,)f(or)75 1846 y(negativ)o(e.)75 1956 y Ft(IN)i(in)o(buf)23 b Fs(handle)17 b(to)d(input)i(bu\013er)f(descriptor)75 2052 y Ft(IN)i(outbuf)23 b Fs(handle)17 b(to)d(output)h(bu\013er)h (descriptor)75 2148 y Ft(IN)h(group)23 b Fs(handle)16 b(to)f(group)75 2244 y Ft(IN)i(shift)23 b Fs(in)o(teger)166 2389 y Ft(MPI)p 275 2389 16 2 v 18 w(CSHIFT1\()18 b(buf,)f(group,)f (shift\))166 2481 y Fs(Pro)q(cess)f(with)g(rank)f Fh(i)h Fs(sends)g(the)g(data)f(in)h(its)g(bu\013er)g(to)f(pro)q(cess)h(with)g (rank)f(\()p Fh(i)9 b Fs(+)g Fh(shift)p Fs(\))j(mo)q(d)75 2538 y Fh(group)p 198 2538 15 2 v 16 w(size)p Fs(,)i(who)g(receiv)o(es) h(the)f(data)f(in)i(the)f(same)g(bu\013er.)20 b(All)15 b(pro)q(cesses)f(mak)o(e)g(the)g(call)h(with)g(the)75 2594 y(same)g(v)m(alues)h(for)f Fh(group)p Fs(,)f(and)h Fh(shift)p Fs(.)k(The)d Fh(shift)e Fs(v)m(alue)j(can)e(b)q(e)h(p)q (ositiv)o(e,)g(zero,)e(or)h(negativ)o(e.)75 2704 y Ft(INOUT)j(buf)23 b Fs(handle)16 b(to)f(bu\013er)g(descriptor)p eop %%Page: 38 43 38 42 bop 75 -100 a Fs(38)703 b Fq(CHAPTER)15 b(3.)35 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Ft(IN)h(group)23 b Fs(handle)16 b(to)f(group)75 141 y Ft(IN)i(shift)23 b Fs(in)o(teger)166 285 y Ft(MPI)p 275 285 16 2 v 18 w(CSHIFTC\()17 b(in)o(buf,)g(outbuf,)h(len,)f(group,)g(shift\))166 377 y Fs(Beha)o(v)o(es)j(lik)o(e)h Fh(MPI)p 509 377 15 2 v 17 w(CSHIFT)p Fs(,)d(with)i(bu\013ers)g(restricted)g(to)g(b)q(e)g (blo)q(c)o(ks)h(of)e(n)o(umeric)i(units.)35 b(All)75 434 y(pro)q(cesses)16 b(mak)o(e)e(the)i(call)g(with)f(the)h(same)f(v)m (alues)h(for)f Fh(len,)23 b(group)p Fs(,)14 b(and)h Fh(shift)p Fs(.)75 529 y Ft(IN)i(in)o(buf)23 b Fs(initial)17 b(lo)q(cation)f(of)f (input)h(bu\013er)75 625 y Ft(OUT)i(outbuf)24 b Fs(initial)17 b(lo)q(cation)f(of)f(output)g(bu\013er)75 721 y Ft(IN)i(len)23 b Fs(n)o(um)o(b)q(er)16 b(of)f(en)o(tries)g(in)h(input)h(\(and)e (output\))f(bu\013ers)75 816 y Ft(IN)j(group)23 b Fs(handle)16 b(to)f(group)75 912 y Ft(IN)i(shift)23 b Fs(in)o(teger)166 1043 y Ft(MPI)p 275 1043 16 2 v 18 w(CSHIFTC1\()17 b(buf,)g(len,)h (group,)f(shift\))166 1136 y Fs(Beha)o(v)o(es)h(lik)o(e)h Fh(MPI)p 505 1136 15 2 v 17 w(CSHIFT1)p Fs(,)e(with)i(bu\013ers)f (restricted)g(to)g(b)q(e)h(blo)q(c)o(ks)g(of)e(n)o(umeric)i(units.)30 b(All)75 1192 y(pro)q(cesses)16 b(mak)o(e)e(the)i(call)g(with)f(the)h (same)f(v)m(alues)h(for)f Fh(len,)23 b(group)p Fs(,)14 b(and)h Fh(shift)p Fs(.)75 1288 y Ft(INOUT)j(buf)23 b Fs(initial)17 b(lo)q(cation)f(of)f(bu\013er)75 1384 y Ft(IN)i(len)23 b Fs(n)o(um)o(b)q(er)16 b(of)f(en)o(tries)g(in)h(input)h (\(and)e(output\))f(bu\013ers)75 1479 y Ft(IN)j(group)23 b Fs(handle)16 b(to)f(group)75 1575 y Ft(IN)i(shift)23 b Fs(in)o(teger)166 1671 y Fh(MPI)p 241 1671 V 17 w(CSHIFT\()g(inbuf,)g (outbuf,)g(group,)g(shift\))14 b Fs(is)75 1767 y Fh(MPI_GSIZE\()22 b(group,)i(&size)f(\);)75 1823 y(MPI_RANK\()g(group,)g(&rank)g(\);)75 1880 y(MPI_ISEND\()f(handle,)h(inbuf,)g(mod\(rank+shift,)f(size\),)h (tag,)h(group\);)75 1936 y(MPI_RECV\()f(outbuf,)g (mod\(rank-shift,size\),)e(tag,)i(group,)g(return_handle\))75 1993 y(MPI_WAIT\(handle\);)75 2115 y Ft(End-o\013)18 b(shift)75 2238 y(MPI)p 184 2238 16 2 v 18 w(EOSHIFT\()g(in)o(buf,)f (outbuf,)h(group,)f(shift\))166 2330 y Fs(Pro)q(cess)f(with)g(rank)g Fh(i)p Fs(,)f(max\()p Fh(0)p Fr(;)8 b Fo(\000)p Fh(shift)p Fs(\))k Fo(\024)i Fh(i)g Fr(<)g Fh(min)p Fs(\()p Fh(size)p Fr(;)8 b Fh(size)g Fo(\000)j Fh(shift)p Fs(\),)k(sends)i(the)f(data)75 2386 y(in)d(its)f(input)i(bu\013er)e(to)g(pro)q(cess)g(with)h(rank)f Fh(i+)23 b(shift)p Fs(,)12 b(who)g(receiv)o(es)h(the)f(data)g(in)h(its) f(output)g(bu\013er.)75 2443 y(The)17 b(output)g(bu\013er)g(of)f(pro)q (cesses)i(whic)o(h)f(do)g(not)g(receiv)o(e)h(data)e(is)h(left)g(unc)o (hanged.)26 b(All)19 b(pro)q(cesses)75 2499 y(mak)o(e)c(the)g(call)h (with)g(the)f(same)g(v)m(alues)h(for)f Fh(group)p Fs(,)f(and)h Fh(shift)p Fs(.)75 2608 y Ft(IN)i(in)o(buf)23 b Fs(handle)17 b(to)d(input)i(bu\013er)f(descriptor)75 2704 y Ft(IN)i(outbuf)23 b Fs(handle)17 b(to)d(output)h(bu\013er)h(descriptor)p eop %%Page: 39 44 39 43 bop 75 -100 a Fq(3.5.)34 b(D)o(A)l(T)l(A)15 b(MO)o(VE)g (FUNCTIONS)1077 b Fs(39)75 45 y Ft(IN)17 b(group)23 b Fs(handle)16 b(to)f(group)75 135 y Ft(IN)i(shift)23 b Fs(in)o(teger)166 264 y Ft(MPI)p 275 264 16 2 v 18 w(EOSHIFT1\()18 b(buf,)f(group,)g(shift\))166 356 y Fs(Pro)q(cess)f(with)g(rank)g Fh(i)p Fs(,)f(max\()p Fh(0)p Fr(;)8 b Fo(\000)p Fh(shift)p Fs(\))k Fo(\024)i Fh(i)g Fr(<)g Fh(min)p Fs(\()p Fh(size)p Fr(;)8 b Fh(size)g Fo(\000)j Fh(shift)p Fs(\),)k(sends)i(the)f(data)75 413 y(in)g(its)f(bu\013er)g(to)f(pro)q(cess)h(with)h(rank)e Fh(i+)24 b(shift)p Fs(,)14 b(who)g(receiv)o(es)i(the)f(data)g(in)g(the) g(same)g(bu\013er.)20 b(The)75 469 y(output)15 b(bu\013er)g(of)g(pro)q (cesses)h(whic)o(h)g(do)g(not)f(receiv)o(e)h(data)e(is)i(left)g(unc)o (hanged.)21 b(All)c(pro)q(cesses)e(mak)o(e)75 526 y(the)g(call)i(with)e (the)g(same)g(v)m(alues)i(for)d Fh(group)p Fs(,)g(and)i Fh(shift)p Fs(.)75 619 y Ft(INOUT)i(buf)23 b Fs(handle)16 b(to)f(bu\013er)g(descriptor)75 709 y Ft(IN)i(group)23 b Fs(handle)16 b(to)f(group)75 800 y Ft(IN)i(shift)23 b Fs(in)o(teger)166 929 y Ft(MPI)p 275 929 V 18 w(EOSHIFTC\()18 b(in)o(buf,)f(outbuf,)h(len,)f(group,)g(shift\))166 1020 y Fs(Beha)o(v)o(es)h(lik)o(e)h Fh(MPI)p 505 1020 15 2 v 17 w(EOSHIFT)p Fs(,)e(with)h(bu\013ers)h(restricted)f(to)g(b)q(e)g (blo)q(c)o(ks)h(of)f(n)o(umeric)h(units.)30 b(All)75 1077 y(pro)q(cesses)16 b(mak)o(e)e(the)i(call)g(with)f(the)h(same)f(v)m (alues)h(for)f Fh(len,)23 b(group)p Fs(,)14 b(and)h Fh(shift)p Fs(.)75 1162 y Ft(IN)i(in)o(buf)23 b Fs(initial)17 b(lo)q(cation)f(of)f (input)h(bu\013er)75 1252 y Ft(OUT)i(outbuf)24 b Fs(initial)17 b(lo)q(cation)f(of)f(output)g(bu\013er)75 1342 y Ft(IN)i(len)23 b Fs(n)o(um)o(b)q(er)16 b(of)f(en)o(tries)g(in)h(input)h(\(and)e (output\))f(bu\013ers)75 1432 y Ft(IN)j(group)23 b Fs(handle)16 b(to)f(group)75 1522 y Ft(IN)i(shift)23 b Fs(in)o(teger)166 1643 y Ft(MPI)p 275 1643 16 2 v 18 w(EOSHIFTC1\()18 b(buf,)f(len,)h (group,)e(shift\))166 1735 y Fs(Beha)o(v)o(es)i(lik)o(e)g Fh(MPI)p 504 1735 15 2 v 17 w(EOSHIFT1)p Fs(,)f(with)h(bu\013er)g (restricted)g(to)f(b)q(e)h(blo)q(c)o(ks)h(of)e(n)o(umeric)i(units.)28 b(All)75 1791 y(pro)q(cesses)16 b(mak)o(e)e(the)i(call)g(with)f(the)h (same)f(v)m(alues)h(for)f Fh(len,)23 b(group)p Fs(,)14 b(and)h Fh(shift)p Fs(.)75 1876 y Ft(INOUT)j(buf)23 b Fs(initial)17 b(lo)q(cation)f(of)f(bu\013er)75 1966 y Ft(IN)i(len)23 b Fs(n)o(um)o(b)q(er)16 b(of)f(en)o(tries)g(in)h(input)h (\(and)e(output\))f(bu\013ers)75 2056 y Ft(IN)j(group)23 b Fs(handle)16 b(to)f(group)75 2146 y Ft(IN)i(shift)23 b Fs(in)o(teger)75 2265 y Ft(Gather)75 2386 y(MPI)p 184 2386 16 2 v 18 w(GA)l(THER\()18 b(in)o(buf,)f(list)p 684 2386 V 20 w(of)p 746 2386 V 19 w(outbufs,)g(group,)g(ro)q(ot,)g (return)p 1404 2386 V 18 w(status\))166 2478 y Fs(Eac)o(h)g(pro)q(cess) g(\(including)i(the)e(ro)q(ot)f(pro)q(cess\))h(sends)h(the)f(con)o(ten) o(t)f(of)h(its)g(input)h(bu\013er)f(to)f(the)75 2534 y(ro)q(ot)h(pro)q(cess.)29 b(The)18 b(ro)q(ot)f(pro)q(cess)h(places)h (all)g(the)f(incoming)i(messages)d(in)i(the)f(lo)q(cation)h(sp)q (eci\014ed)75 2591 y(b)o(y)14 b(the)g(output)g(bu\013er)g(handle)i (corresp)q(onding)f(to)e(the)i(sender's)f(rank.)19 b(It)14 b(is)h(called)h(b)o(y)e(all)h(mem)o(b)q(ers)75 2647 y(of)g(group)h (using)h(the)f(same)f(argumen)o(ts)g(for)g Fh(group)p Fs(,)g(and)h Fh(root)p Fs(.)22 b(The)16 b(input)g(bu\013er)g(of)g(eac)o (h)g(pro)q(cess)75 2704 y(ma)o(y)e(ha)o(v)o(e)h(a)g(di\013eren)o(t)h (length.)p eop %%Page: 40 45 40 44 bop 75 -100 a Fs(40)703 b Fq(CHAPTER)15 b(3.)35 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Ft(IN)h(in)o(buf)23 b Fs(handle)17 b(to)d(input)i(bu\013er)f(descriptor)75 139 y Ft(IN)i(list)p 225 139 16 2 v 20 w(of)p 287 139 V 19 w(outbufs)23 b Fs(list)16 b(of)f(bu\013er)g(descriptor)g(handles)i (\(ro)q(ot\))75 233 y Ft(IN)g(group)23 b Fs(group)15 b(handle)75 327 y Ft(IN)i(ro)q(ot)23 b Fs(rank)15 b(of)g(receiving)i (pro)q(cess)e(\(in)o(teger\))75 420 y Ft(OUT)j(return)p 357 420 V 19 w(status)23 b Fs(return)15 b(status)f(handle)166 550 y Ft(MPI)p 275 550 V 18 w(GA)l(THER)o(C\()j(in)o(buf,)g(inlen,)h (outbuf,)g(group,)e(ro)q(ot\))166 642 y Fh(MPI)p 241 642 15 2 v 17 w(GATHERC)g Fs(b)q(eha)o(v)o(es)i(lik)o(e)h Fh(MPI)p 772 642 V 17 w(GATHER)e Fs(restricted)h(to)f(blo)q(c)o(k)h (bu\013ers,)g(and)g(with)g(the)g(addi-)75 698 y(tional)f(restriction)h (that)e(all)i(input)g(bu\013ers)e(should)i(ha)o(v)o(e)f(the)g(same)f (length.)26 b(All)18 b(pro)q(cesses)f(should)75 755 y(pro)o(vided)f (the)f(same)g(v)m(alues)i(for)d Fh(inlen,)23 b(group)p Fs(,)14 b(and)i Fh(root)e Fs(.)75 848 y Ft(IN)j(in)o(buf)23 b Fs(\014rst)15 b(v)m(ariable)h(of)f(input)h(bu\013er)g(\(c)o(hoice\)) 75 942 y Ft(IN)h(inlen)24 b Fs(Num)o(b)q(er)16 b(of)e(\(w)o(ord\))g(v)m (ariables)j(in)f(input)g(bu\013er)f(\(in)o(teger\))75 1036 y Ft(OUT)j(outbuf)24 b Fs(\014rst)14 b(v)m(ariable)j(of)e(output)g (bu\013er)g({)g(signi\014can)o(t)h(only)g(at)e(ro)q(ot)h(\(c)o(hoice\)) 75 1130 y Ft(IN)i(group)23 b Fs(group)15 b(handle)75 1224 y Ft(IN)i(ro)q(ot)23 b Fs(rank)15 b(of)g(receiving)i(pro)q(cess)e (\(in)o(teger\))166 1318 y Fh(MPI)p 241 1318 V 17 w(GATHERC\()22 b(inbuf,)h(inlen,)h(outbuf,)e(group,)h(root\))39 b Fs(is)75 1411 y Fh(MPI_GSIZE\()22 b(&size,)i(group\);)75 1468 y(MPI_RANK\()f(&rank,)g(group\);)75 1524 y(MPI_ISENDC\(handle,)e (inbuf,)i(inlen,)g(root,)h(tag,)f(group\);)75 1581 y(if)h (\(rank==root\))147 1637 y(for)f(\(i=0;)g(i)h(<)g(size;)f(i++\))147 1694 y({)218 1750 y(MPI_RECVC\(outbuf,)f(inlen,)h(i,)g(tag,)h(group,)f (return_status\);)218 1807 y(outbuf)g(+=)h(inlen;)147 1863 y(})75 1919 y(MPI_WAIT\(handle\);)75 2040 y Ft(Scatter)75 2161 y(MPI)p 184 2161 16 2 v 18 w(SCA)l(TTER\()18 b(list)p 557 2161 V 20 w(of)p 619 2161 V 19 w(in)o(bufs,)e(outbuf,)i(group,)f (ro)q(ot,)g(return)p 1425 2161 V 19 w(status\))166 2253 y Fs(The)e(ro)q(ot)f(pro)q(cess)i(sends)f(the)g(con)o(ten)o(t)g(of)f (its)i Fh(i)p Fs(-th)f(input)h(bu\013er)f(to)f(the)h(pro)q(cess)g(with) h(rank)f Fh(i)p Fs(;)75 2309 y(eac)o(h)g(pro)q(cess)h(\(including)i (the)e(ro)q(ot)e(pro)q(cess\))h(stores)g(the)h(incoming)g(message)f(in) i(its)e(output)g(bu\013er.)75 2366 y(The)f(routine)g(is)g(called)h(b)o (y)f(all)h(mem)o(b)q(ers)e(of)h(the)f(group)h(using)g(the)g(same)f (argumen)o(ts)g(for)g Fh(group)p Fs(,)g(and)75 2422 y Fh(root)p Fs(.)75 2516 y Ft(IN)k(list)p 225 2516 V 20 w(of)p 287 2516 V 19 w(in)o(bufs)22 b Fs(list)16 b(of)f(bu\013er)g (descriptor)h(handles)75 2610 y Ft(IN)h(outbuf)23 b Fs(bu\013er)16 b(descriptor)f(handle)75 2704 y Ft(IN)i(group)23 b Fs(handle)p eop %%Page: 41 46 41 45 bop 75 -100 a Fq(3.5.)34 b(D)o(A)l(T)l(A)15 b(MO)o(VE)g (FUNCTIONS)1077 b Fs(41)75 45 y Ft(IN)17 b(ro)q(ot)23 b Fs(rank)15 b(of)g(sending)i(pro)q(cess)e(\(in)o(teger\))75 132 y Ft(OUT)j(return)p 357 132 16 2 v 19 w(status)23 b Fs(return)15 b(status)f(handle)166 210 y Fh(MPI)p 241 210 15 2 v 17 w(SCATTER\()22 b(list)p 568 210 V 17 w(of)p 633 210 V 17 w(inbufs,)h(outbuf,)g(group,)g(root,)g(return)p 1486 210 V 16 w(status\))15 b Fs(is)75 288 y Fh(MPI_GSIZE\()22 b(group,)i(&size)f(\);)75 344 y(MPI_RANK\()g(group,)g(&rank)g(\);)75 401 y(MPI_IRECV\(handle,)f(outbuf,)g(root,)i(tag,)f(group\);)75 457 y(if)h(\(rank=root\))147 514 y(for)f(\(i=0;)g(i)h(<)g(size;)f (i++\))218 570 y(MPI_SEND\(inbuf[i],)f(i,)h(tag,)g(group\);)75 626 y(MPI_WAIT\(handle,)f(return_status\);)166 740 y Ft(MPI)p 275 740 16 2 v 18 w(SCA)l(TTER)o(C\()17 b(in)o(buf,)g(outbuf,) h(len,)f(group,)g(ro)q(ot\))166 831 y Fh(MPI)p 241 831 15 2 v 17 w(SCATTERC)e Fs(b)q(eha)o(v)o(es)i(lik)o(e)h Fh(MPI)p 793 831 V 17 w(SCATTER)e Fs(restricted)h(to)f(blo)q(c)o(k)i (bu\013ers,)f(and)g(with)g(the)g(ad-)75 888 y(ditional)j(restriction)g (that)e(all)h(output)g(bu\013ers)g(ha)o(v)o(e)f(the)h(same)f(length.)32 b(The)19 b(input)g(bu\013er)g(blo)q(c)o(k)75 944 y(of)e(the)h(ro)q(ot)e (pro)q(cess)i(is)g(partitioned)g(in)o(to)g Fh(n)f Fs(consecutiv)o(e)i (blo)q(c)o(ks,)f(eac)o(h)g(consisting)g(of)f Fh(len)g Fs(w)o(ords.)75 1001 y(The)d Fh(i)p Fs(-th)h(blo)q(c)o(k)f(is)h(sen)o (t)f(to)g(the)g Fh(i)p Fs(-th)g(pro)q(cess)g(in)i(the)e(group)g(and)g (stored)g(in)h(its)f(output)g(bu\013er.)20 b(The)75 1057 y(routine)e(is)h(called)g(b)o(y)f(all)h(mem)o(b)q(ers)f(of)g(the)g (group)f(using)i(the)f(same)f(argumen)o(ts)g(for)h Fh(group,)23 b(len)p Fs(,)75 1114 y(and)15 b Fh(root)p Fs(.)75 1191 y Ft(IN)i(in)o(buf)23 b Fs(\014rst)15 b(en)o(try)g(in)h(input)g (bu\013er)f({)g(signi\014can)o(t)h(only)g(at)e(ro)q(ot)h(\(c)o (hoice\).)75 1279 y Ft(OUT)j(outbuf)24 b Fs(\014rst)14 b(en)o(try)h(in)h(output)f(bu\013er)g(\(c)o(hoice\).)75 1366 y Ft(IN)i(len)23 b Fs(n)o(um)o(b)q(er)16 b(of)f(en)o(tries)g(to)g (b)q(e)h(stored)e(in)i(output)f(bu\013er)h(\(in)o(teger\))75 1453 y Ft(IN)h(group)23 b Fs(handle)75 1541 y Ft(IN)17 b(ro)q(ot)23 b Fs(rank)15 b(of)g(sending)i(pro)q(cess)e(\(in)o(teger\)) 166 1618 y Fh(MPI)p 241 1618 V 17 w(SCATTERC\()22 b(inbuf,)h(outbuf,)g (outlen,)g(group,)g(root\))39 b Fs(is)75 1696 y Fh(MPI_GSIZE\()22 b(&size,)i(group\);)75 1752 y(MPI_RANK\()f(&rank,)g(group\);)75 1809 y(MPI_IRECVC\()f(handle,)h(outbuf,)g(outlen,)g(root,)g(tag,)h (group\);)75 1865 y(if)g(\(rank=root\))147 1922 y(for)f(\(i=0;)g(i)h(<) g(size;)f(i++\))147 1978 y({)218 2035 y(MPI_SENDC\(inbuf,)f(outlen,)h (i,)g(tag,)h(group,)f(return_status\);)218 2091 y(inbuf)g(+=)h(outlen;) 147 2148 y(})75 2204 y(MPI_WAIT\(handle\);)75 2321 y Ft(All-to-all)d(scatter)75 2442 y(MPI)p 184 2442 16 2 v 18 w(ALLSCA)l(TTER\()d(list)p 659 2442 V 20 w(of)p 721 2442 V 19 w(in)o(bufs,)f(list)p 978 2442 V 20 w(of)p 1040 2442 V 19 w(outbufs,)g(group,)g(return)p 1571 2442 V 18 w(status\))166 2534 y Fs(Eac)o(h)h(pro)q(cess)g(in)h(the)f(group)f (sends)i(its)f Fh(i)p Fs(-th)g(bu\013er)g(in)h(its)f(input)h(bu\013er)f (list)g(to)g(the)g(pro)q(cess)75 2591 y(with)i(rank)g Fh(i)g Fs(\(itself)g(included\);)k(eac)o(h)c(pro)q(cess)g(places)h(the) f(incoming)h(messages)e(in)i(the)f(lo)q(cation)75 2647 y(sp)q(eci\014ed)f(b)o(y)e(output)f(bu\013er)h(handle)h(corresp)q (onding)g(to)f(the)f(rank)h(of)g(the)f(sender.)26 b(The)17 b(routine)g(is)75 2704 y(called)g(b)o(y)e(all)h(mem)o(b)q(ers)f(of)g (the)g(group)g(using)h(the)g(same)e(argumen)o(ts)h(for)f Fh(group)p Fs(.)p eop %%Page: 42 47 42 46 bop 75 -100 a Fs(42)703 b Fq(CHAPTER)15 b(3.)35 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Ft(IN)h(list)p 225 45 16 2 v 20 w(of)p 287 45 V 19 w(in)o(bufs)22 b Fs(list)16 b(of)f(bu\013er)g(descriptor)h(handles)75 140 y Ft(IN)h(list)p 225 140 V 20 w(of)p 287 140 V 19 w(outbufs)23 b Fs(list)16 b(of)f(bu\013er)g(descriptor)g(handles)75 236 y Ft(IN)i(group)23 b Fs(handle)75 331 y Ft(OUT)18 b(return)p 357 331 V 19 w(status)23 b Fs(return)15 b(status)f(handle) 166 461 y Ft(MPI)p 275 461 V 18 w(ALLSCA)l(TTER)o(C\()k(in)o(buf,)f (outbuf,)g(len,)h(group\))166 554 y Fh(MPI)p 241 554 15 2 v 17 w(ALLSCATTERC)f Fs(b)q(eha)o(v)o(es)i(lik)o(e)g Fh(MPI)p 870 554 V 17 w(ALLSCATTER)e Fs(restricted)i(to)f(blo)q(c)o(k)i (bu\013ers,)f(and)g(with)75 610 y(the)f(additional)i(restriction)f (that)e(all)i(blo)q(c)o(ks)g(sen)o(t)f(from)f(one)i(pro)q(cess)f(to)f (another)h(ha)o(v)o(e)g(the)g(same)75 667 y(length.)i(The)14 b(input)g(bu\013er)f(blo)q(c)o(k)i(of)e(eac)o(h)g(pro)q(cess)h(is)g (partitioned)g(in)o(to)f Fh(n)g Fs(consecutiv)o(e)i(blo)q(c)o(ks,)f (eac)o(h)75 723 y(consisting)19 b(of)f Fh(len)g Fs(w)o(ords.)29 b(The)18 b Fh(i)p Fs(-th)g(blo)q(c)o(k)i(is)e(sen)o(t)h(to)e(the)i Fh(it)p Fs(-th)f(pro)q(cess)g(in)i(the)e(group.)29 b(Eac)o(h)75 779 y(pro)q(cess)17 b(concatenates)g(the)g(incoming)h(messages,)e(in)i (the)f(order)g(of)f(the)h(senders')g(ranks,)g(and)g(store)75 836 y(them)c(in)i(its)f(output)f(bu\013er.)19 b(The)14 b(routine)g(is)g(called)h(b)o(y)e(all)i(mem)o(b)q(ers)f(of)f(the)g (group)g(using)i(the)e(same)75 892 y(argumen)o(ts)h(for)h Fh(group)p Fs(,)f(and)h Fh(len)p Fs(.)75 988 y Ft(IN)i(in)o(buf)23 b Fs(\014rst)15 b(en)o(try)g(in)h(input)g(bu\013er)f(\(c)o(hoice\).)20 b(ro)q(ot)15 b(\(in)o(teger\))75 1083 y Ft(OUT)j(outbuf)24 b Fs(\014rst)14 b(en)o(try)h(in)h(output)f(bu\013er)g(\(c)o(hoice\).)75 1178 y Ft(IN)i(len)23 b Fs(n)o(um)o(b)q(er)16 b(of)f(en)o(tries)g(sen)o (t)g(from)g(eac)o(h)g(pro)q(cess)g(to)g(eac)o(h)g(other)g(\(in)o (teger\).)75 1273 y Ft(IN)i(group)23 b Fs(handle)166 1369 y Fh(MPI)p 241 1369 V 17 w(ALLSCATTERC\()f(inbuf,)h(outbuf,)g (len,)g(group\))15 b Fs(is)75 1464 y Fh(MPI_GSIZE\()22 b(group,)i(&size)f(\);)75 1521 y(MPI_RANK\()g(group,)g(&rank)g(\);)75 1577 y(for)g(\(i=0;)h(i)f(<)h(rank;)f(i++\))147 1633 y({)170 1690 y(MPI_IRECVC\(recv_handles[i],)e(outbuf,)i(len,)g(tag,)g (group\);)170 1746 y(outbuf)g(+=)h(len;)147 1803 y(})75 1859 y(for)f(\(i=0;)h(i)f(<)h(size;)f(i++\))147 1916 y({)170 1972 y(MPI_ISENDC\(send_handle[i],)e(inbuf,)i(len,)g(i,)h(tag,) f(group\);)170 2029 y(inbuf)h(+=)f(len;)147 2085 y(})75 2142 y(MPI_WAITALL\(send_handle\);)75 2198 y (MPI_WAITALL\(recv_handle\);)75 2320 y Ft(All-to-all)e(broadcast)75 2442 y(MPI)p 184 2442 16 2 v 18 w(ALLCAST\()d(in)o(buf,)f(list)p 702 2442 V 20 w(of)p 764 2442 V 19 w(outbufs,)g(group,)g(return)p 1295 2442 V 18 w(status\))166 2534 y Fs(Eac)o(h)c(pro)q(cess)h(in)g (the)g(group)f(broadcasts)g(its)h(input)g(bu\013er)g(to)f(all)h(pro)q (cesses)g(\(including)i(itself)t(\);)75 2591 y(eac)o(h)e(pro)q(cess)f (places)i(the)f(incoming)g(messages)f(in)i(the)e(lo)q(cation)i(sp)q (eci\014ed)g(b)o(y)f(output)f(bu\013er)h(handle)75 2647 y(corresp)q(onding)i(to)e(the)h(rank)f(of)g(the)h(sender.)20 b(The)15 b(routine)h(is)f(called)h(b)o(y)f(all)g(mem)o(b)q(ers)g(of)f (the)h(group)75 2704 y(using)h(the)f(same)g(argumen)o(ts)f(for)h Fh(group)p Fs(.)p eop %%Page: 43 48 43 47 bop 75 -100 a Fq(3.6.)34 b(GLOBAL)16 b(COMPUTE)f(OPERA)l(TIONS) 883 b Fs(43)75 45 y Ft(IN)17 b(in)o(buf)23 b Fs(bu\013er)15 b(descriptor)h(handle)g(for)f(input)h(bu\013er)75 139 y Ft(IN)h(list)p 225 139 16 2 v 20 w(of)p 287 139 V 19 w(outbufs)23 b Fs(list)16 b(of)f(bu\013er)g(descriptor)g(handles)75 234 y Ft(IN)i(group)23 b Fs(handle)75 328 y Ft(OUT)18 b(return)p 357 328 V 19 w(status)23 b Fs(return)15 b(status)f(handle) 166 458 y Ft(MPI)p 275 458 V 18 w(ALLCASTC\()j(in)o(buf,)h(outbuf,)f (len,)h(group\))166 550 y Fh(MPI)p 241 550 15 2 v 17 w(ALLCASTC)d Fs(b)q(eha)o(v)o(es)i(lik)o(e)h Fh(MPI)p 793 550 V 17 w(ALLCAST)e Fs(restricted)h(to)f(blo)q(c)o(k)i(bu\013ers,) f(and)g(with)g(the)g(ad-)75 606 y(ditional)h(restriction)f(that)e(all)j (blo)q(c)o(ks)f(sen)o(t)f(from)f(one)i(pro)q(cess)g(to)e(another)h(ha)o (v)o(e)g(the)h(same)f(length.)75 663 y(Eac)o(h)h(pro)q(cess)g (concatenates)f(the)h(incoming)h(messages,)e(in)i(the)f(order)f(of)h (the)f(senders')h(ranks,)g(and)75 719 y(store)c(them)h(in)g(its)g (output)f(bu\013er.)20 b(The)14 b(routine)g(is)g(called)h(b)o(y)f(all)g (mem)o(b)q(ers)g(of)f(the)h(group)f(using)i(the)75 775 y(same)g(argumen)o(ts)f(for)h Fh(group)p Fs(,)f(and)h Fh(len)p Fs(.)75 870 y Ft(IN)i(in)o(buf)23 b Fs(\014rst)15 b(en)o(try)g(in)h(input)g(bu\013er)f(\(c)o(hoice\).)20 b(ro)q(ot)15 b(\(in)o(teger\))75 964 y Ft(OUT)j(outbuf)24 b Fs(\014rst)14 b(en)o(try)h(in)h(output)f(bu\013er)g(\(c)o(hoice\).)75 1058 y Ft(IN)i(len)23 b Fs(n)o(um)o(b)q(er)16 b(of)f(en)o(tries)g(sen)o (t)g(from)g(eac)o(h)g(pro)q(cess)g(to)g(eac)o(h)g(other)g(\(including)j (itself)t(\).)75 1153 y Ft(IN)f(group)23 b Fs(group)15 b(handle)166 1247 y Fh(MPI)p 241 1247 V 17 w(ALLCASTC\()22 b(inbuf,)h(outbuf,)g(len,)h(group\))14 b Fs(is)75 1341 y Fh(MPI_GSIZE\()22 b(group,)i(&size)f(\);)75 1398 y(MPI_RANK\()g (group,)g(&rank)g(\);)75 1454 y(for)g(\(i=0;)h(i)f(<)h(rank;)f(i++\)) 147 1511 y({)170 1567 y(MPI_IRECVC\(recv_handles[i],)e(outbuf,)i(len,)g (tag,)g(group\);)170 1624 y(outbuf)g(+=)h(len;)147 1680 y(})75 1736 y(for)f(\(i=0;)h(i)f(<)h(size;)f(i++\))147 1793 y({)170 1849 y(MPI_ISENDC\(send_handle[i],)e(inbuf,)i(len,)g(i,)h (tag,)f(group\);)147 1906 y(})75 1962 y(MPI_WAITALL\(send_handle\);)75 2019 y(MPI_WAITALL\(recv_handle\);)75 2163 y Fm(3.6)70 b(Global)22 b(Compute)g(Op)r(erations)75 2264 y Ft(Reduce)75 2386 y(MPI)p 184 2386 16 2 v 18 w(REDUCE\()d(in)o(buf,)e(outbuf,)g (group,)g(ro)q(ot,)h(op\))166 2478 y Fs(Com)o(bines)f(the)h(v)m(alues)g (pro)o(vided)g(in)g(the)f(input)h(bu\013er)g(of)e(eac)o(h)i(pro)q(cess) f(in)h(the)f(group,)g(using)75 2534 y(the)f(op)q(eration)g Fh(op)p Fs(,)g(and)g(returns)f(the)h(com)o(bined)h(v)m(alue)h(in)e(the) g(output)g(bu\013er)g(of)f(the)h(pro)q(cess)h(with)75 2591 y(rank)f Fh(root)p Fs(.)21 b(Eac)o(h)16 b(pro)q(cess)g(can)g(pro)o (vide)g(one)g(v)m(alue,)h(or)f(a)f(sequence)i(of)f(v)m(alues,)h(in)f (whic)o(h)h(case)f(the)75 2647 y(com)o(bine)f(op)q(eration)f(is)h (executed)g(p)q(oin)o(t)o(wise)g(on)f(eac)o(h)g(en)o(try)g(of)g(the)g (sequence.)21 b(F)l(or)13 b(example,)i(if)g(the)75 2704 y(op)q(eration)i(is)g Fh(max)g Fs(and)g(input)g(bu\013ers)g(con)o (tains)g(t)o(w)o(o)f(\015oating)g(p)q(oin)o(t)i(n)o(um)o(b)q(ers,)f (then)g(outbuf\(1\))f(=)p eop %%Page: 44 49 44 48 bop 75 -100 a Fs(44)703 b Fq(CHAPTER)15 b(3.)35 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Fs(global)e(max\(in)o (buf\(1\)\))e(and)i(outbuf\(2\))e(=)h(global)h(max\(in)o(buf\(2\)\).)19 b(All)14 b(input)g(bu\013ers)g(should)g(de\014ne)75 102 y(sequences)g(of)f(equal)g(length)h(of)e(en)o(tries)i(of)e(t)o(yp)q(es) h(that)f(matc)o(h)h(the)g(t)o(yp)q(e)g(of)f(the)h(op)q(erands)g(of)g Fh(op)p Fs(.)19 b(The)75 158 y(output)f(bu\013er)g(should)i(de\014ne)f (a)f(sequence)h(of)f(the)g(same)g(length)h(of)f(en)o(tries)h(of)f(t)o (yp)q(es)g(that)g(matc)o(h)75 214 y(the)g(t)o(yp)q(e)g(of)g(the)g (result)h(of)e Fh(op)p Fs(.)29 b(\(Note)17 b(that,)h(here)g(as)g(for)g (all)h(other)e(comm)o(unication)i(op)q(erations,)75 271 y(the)d(t)o(yp)q(e)f(of)g(en)o(tries)h(inserted)g(in)h(a)e(message)g (dep)q(end)i(on)e(the)h(information)g(pro)o(vided)g(b)o(y)f(the)h (input)75 327 y(bu\013er)d(descriptor,)g(and)h(not)e(on)h(the)g (declarations)h(of)f(these)g(v)m(ariables)h(in)g(the)f(calling)i (program.)j(The)75 384 y(t)o(yp)q(es)13 b(of)g(the)g(v)m(ariables)i(in) f(the)f(calling)i(program)d(need)i(not)f(matc)o(h)g(the)g(t)o(yp)q(es)g (de\014ned)i(b)o(y)e(the)g(bu\013er)75 440 y(descriptor,)22 b(but)f(in)g(suc)o(h)g(case)g(the)g(outcome)f(of)h(a)f(reduce)h(op)q (eration)g(ma)o(y)f(b)q(e)i(implemen)o(tation)75 497 y(dep)q(enden)o(t.\))166 554 y(The)16 b(op)q(eration)g(de\014ned)i(b)o (y)e Fh(op)f Fs(is)i(asso)q(ciativ)o(e)f(and)g(comm)o(utativ)o(e,)f (and)i(the)f(implemen)o(tation)75 610 y(can)i(tak)o(e)f(adv)m(an)o (tage)g(of)g(asso)q(ciativit)o(y)h(and)g(comm)o(utativit)o(y)f(in)h (order)f(to)g(c)o(hange)h(order)f(of)h(ev)m(alu-)75 667 y(ation.)29 b(The)18 b(routine)h(is)g(called)h(b)o(y)e(all)h(group)f (mem)o(b)q(ers)h(using)g(the)f(same)g(argumen)o(ts)f(for)h Fh(group,)75 723 y(root)d Fs(and)g Fh(op)p Fs(.)75 819 y Ft(IN)i(in)o(buf)23 b Fs(handle)17 b(to)d(input)i(bu\013er)75 916 y Ft(IN)h(outbuf)23 b Fs(handle)17 b(to)d(output)h(bu\013er)h({)f (signi\014can)o(t)h(only)f(at)g(ro)q(ot)75 1012 y Ft(IN)i(group)23 b Fs(handle)16 b(to)f(group)75 1108 y Ft(IN)i(ro)q(ot)23 b Fs(rank)15 b(of)g(ro)q(ot)g(pro)q(cess)g(\(in)o(teger\))75 1204 y Ft(IN)i(op)23 b Fs(op)q(eration)15 b(\(status\))166 1300 y(W)l(e)20 b(list)g(b)q(elo)o(w)h(the)f(op)q(erations)g(whic)o(h)h (are)e(supp)q(orted)h(for)g(F)l(ortran,)f(eac)o(h)h(with)g(the)g (corre-)75 1357 y(sp)q(onding)c(v)m(alue)h(of)e(the)g Fh(op)g Fs(parameter.)75 1453 y Ft(MPI)p 184 1453 16 2 v 18 w(IMAX)21 b Fs(in)o(teger)16 b(maxim)o(um)75 1549 y Ft(MPI)p 184 1549 V 18 w(RMAX)22 b Fs(real)15 b(maxim)o(um)75 1645 y Ft(MPI)p 184 1645 V 18 w(DMAX)21 b Fs(double)c(precision)g(real) e(maxim)o(um)75 1742 y Ft(MPI)p 184 1742 V 18 w(IMIN)22 b Fs(in)o(teger)15 b(minim)o(um)75 1838 y Ft(MPI)p 184 1838 V 18 w(RMIN)22 b Fs(real)16 b(minim)o(um)75 1934 y Ft(MPI)p 184 1934 V 18 w(DMIN)22 b Fs(double)17 b(precision)f(real)g (minim)o(um)75 2030 y Ft(MPI)p 184 2030 V 18 w(ISUM)22 b Fs(in)o(teger)16 b(sum)75 2126 y Ft(MPI)p 184 2126 V 18 w(RSUM)23 b Fs(real)15 b(sum)75 2223 y Ft(MPI)p 184 2223 V 18 w(DSUM)23 b Fs(double)16 b(precision)h(real)e(sum)75 2319 y Ft(MPI)p 184 2319 V 18 w(CSUM)22 b Fs(complex)16 b(sum)75 2415 y Ft(MPI)p 184 2415 V 18 w(DCSUM)22 b Fs(double)17 b(precision)g(complex)f(sum)75 2511 y Ft(MPI)p 184 2511 V 18 w(IPR)o(OD)22 b Fs(in)o(teger)16 b(pro)q(duct)75 2607 y Ft(MPI)p 184 2607 V 18 w(RPR)o(OD)23 b Fs(real)15 b(pro)q(duct)75 2704 y Ft(MPI)p 184 2704 V 18 w(DPR)o(OD)23 b Fs(double)16 b(precision)h(real)e(pro)q(duct)p eop %%Page: 45 50 45 49 bop 75 -100 a Fq(3.6.)34 b(GLOBAL)16 b(COMPUTE)f(OPERA)l(TIONS) 883 b Fs(45)75 45 y Ft(MPI)p 184 45 16 2 v 18 w(CPR)o(OD)22 b Fs(complex)16 b(pro)q(duct)75 140 y Ft(MPI)p 184 140 V 18 w(DCPR)o(OD)22 b Fs(double)17 b(precision)g(complex)f(pro)q(duct) 75 234 y Ft(MPI)p 184 234 V 18 w(AND)22 b Fs(logical)17 b(and)75 329 y Ft(MPI)p 184 329 V 18 w(IAND)22 b Fs(in)o(teger)15 b(\(bit-wise\))h(and)75 424 y Ft(MPI)p 184 424 V 18 w(OR)23 b Fs(logical)17 b(or)75 518 y Ft(MPI)p 184 518 V 18 w(IOR)23 b Fs(in)o(teger)15 b(\(bit-wise\))h(or)75 613 y Ft(MPI)p 184 613 V 18 w(X)o(OR)22 b Fs(logical)17 b(xor)75 708 y Ft(MPI)p 184 708 V 18 w(IX)o(OR)22 b Fs(in)o(teger)15 b(\(bit-wise\))h(xor)75 803 y Ft(MPI)p 184 803 V 18 w(MAXLOC)22 b Fs(rank)15 b(of)g(pro)q(cess)g(with)h(maxim)o(um)f(in)o(teger)g(v)m (alue)75 897 y Ft(MPI)p 184 897 V 18 w(MAXRLOC)22 b Fs(rank)15 b(of)g(pro)q(cess)g(with)h(maxim)o(um)f(real)g(v)m(alue)75 992 y Ft(MPI)p 184 992 V 18 w(MAXDLOC)22 b Fs(rank)15 b(of)g(pro)q(cess)g(with)h(maxim)o(um)f(double)h(precision)h(real)e(v)m (alue)75 1087 y Ft(MPI)p 184 1087 V 18 w(MINLOC)23 b Fs(rank)14 b(of)h(pro)q(cess)h(with)f(minim)o(um)i(in)o(teger)e(v)m (alue)75 1181 y Ft(MPI)p 184 1181 V 18 w(MINRLOC)23 b Fs(rank)15 b(of)f(pro)q(cess)i(with)f(minim)o(um)i(real)e(v)m(alue)75 1276 y Ft(MPI)p 184 1276 V 18 w(MINDLOC)23 b Fs(rank)15 b(of)f(pro)q(cess)i(with)f(minim)o(um)i(double)f(precision)h(real)e(v)m (alue)166 1406 y Ft(MPI)p 275 1406 V 18 w(REDUCEC\()j(in)o(buf,)f (outbuf,)h(len,)f(group,)g(ro)q(ot,)h(op\))166 1498 y Fs(Is)d(same)g(as)g Fh(MPI)p 460 1498 15 2 v 17 w(REDUCE)p Fs(,)f(restricted)h(to)g(a)g(blo)q(c)o(k)h(bu\013er.)75 1593 y Ft(IN)h(in)o(buf)23 b Fs(\014rst)15 b(lo)q(cation)h(in)g(input)g (bu\013er)75 1687 y Ft(OUT)i(outbuf)24 b Fs(\014rst)14 b(lo)q(cation)i(in)g(output)f(bu\013er)h({)e(signi\014can)o(t)j(only)e (at)g(ro)q(ot)75 1782 y Ft(IN)i(len)23 b Fs(n)o(um)o(b)q(er)16 b(of)f(en)o(tries)g(in)h(input)h(and)e(output)g(bu\013er)g(\(in)o (teger\))75 1877 y Ft(IN)i(group)23 b Fs(handle)16 b(to)f(group)75 1972 y Ft(IN)i(ro)q(ot)23 b Fs(rank)15 b(of)g(ro)q(ot)g(pro)q(cess)g (\(in)o(teger\))75 2066 y Ft(IN)i(op)23 b Fs(op)q(eration)15 b(\(status\))166 2196 y Ft(MPI)p 275 2196 16 2 v 18 w(USER)p 435 2196 V 20 w(REDUCE\()j(in)o(buf,)f(outbuf,)h(group,)f(ro)q(ot,)g (function\))166 2288 y Fs(Same)h(as)f(the)i(reduce)f(op)q(eration)h (function)f(ab)q(o)o(v)o(e)g(except)g(that)g(a)f(user)h(supplied)j (function)d(is)75 2345 y(used.)i Fh(function)11 b Fs(is)i(an)g(asso)q (ciativ)o(e)g(and)f(comm)o(utativ)o(e)g(function)i(with)f(t)o(w)o(o)e (argumen)o(ts.)18 b(The)13 b(t)o(yp)q(es)75 2401 y(of)h(the)h(t)o(w)o (o)e(argumen)o(ts)h(and)g(of)h(the)f(returned)h(v)m(alue)h(of)e(the)h (function,)g(and)g(the)f(t)o(yp)q(es)h(of)f(all)i(en)o(tries)75 2458 y(in)j(the)g(input)g(and)g(output)f(bu\013ers)h(all)g(agree.)29 b(The)19 b(output)f(bu\013er)h(has)f(the)g(same)h(length)g(as)f(the)75 2514 y(input)e(bu\013er.)75 2609 y Ft(IN)h(in)o(buf)23 b Fs(handle)17 b(to)d(input)i(bu\013er)75 2704 y Ft(IN)h(outbuf)23 b Fs(handle)17 b(to)d(output)h(bu\013er)h({)f(signi\014can)o(t)h(only)f (at)g(ro)q(ot)p eop %%Page: 46 51 46 50 bop 75 -100 a Fs(46)703 b Fq(CHAPTER)15 b(3.)35 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Ft(IN)h(group)23 b Fs(handle)16 b(to)f(group)75 142 y Ft(IN)i(ro)q(ot)23 b Fs(rank)15 b(of)g(ro)q(ot)g(pro)q(cess)g(\(in)o(teger\))75 239 y Ft(IN)i(function)24 b Fs(user)16 b(pro)o(vided)g(function)166 371 y Ft(MPI)p 275 371 16 2 v 18 w(USER)p 435 371 V 20 w(REDUCEC\()i(in)o(buf,)f(outbuf,)h(len,)f(group,)g(ro)q(ot,)g (function\))166 464 y Fs(Is)e(same)g(as)g Fh(MPI)p 460 464 15 2 v 477 464 V 34 w(USER)p 590 464 V 17 w(REDUCE)p Fs(,)f(restricted)h(to)g(a)g(blo)q(c)o(k)h(bu\013er.)75 561 y Ft(IN)h(in)o(buf)23 b Fs(\014rst)15 b(lo)q(cation)h(in)g(input)g (bu\013er)75 658 y Ft(OUT)i(outbuf)24 b Fs(\014rst)14 b(lo)q(cation)i(in)g(output)f(bu\013er)h({)e(signi\014can)o(t)j(only)e (at)g(ro)q(ot)75 755 y Ft(IN)i(len)23 b Fs(n)o(um)o(b)q(er)16 b(of)f(en)o(tries)g(in)h(input)h(and)e(output)g(bu\013er)g(\(in)o (teger\))75 852 y Ft(IN)i(group)23 b Fs(handle)16 b(to)f(group)75 949 y Ft(IN)i(ro)q(ot)23 b Fs(rank)15 b(of)g(ro)q(ot)g(pro)q(cess)g (\(in)o(teger\))75 1046 y Ft(IN)i(op)23 b Fs(op)q(eration)15 b(\(status\))166 1219 y Fl(Discussion:)166 1270 y Fk(Do)g(w)o(e)h(also) f(w)o(an)o(t)g(a)g(v)o(ersion)h(of)f(reduce)i(that)e(broadcasts)i(the)f (result)g(to)g(all)e(pro)q(cesses)k(in)d(the)i(group?)75 1319 y(\(This)10 b(can)f(b)q(e)h(ac)o(hiev)o(ed)g(b)o(y)f(a)h(reduce)h (follo)o(w)o(ed)d(b)o(y)h(a)g(broadcast,)i(but)f(a)f(com)o(bined)f (function)h(ma)o(y)f(b)q(e)i(somewhat)75 1369 y(more)j(e\016cien)o (t.\))19 b(These)c(w)o(ould)e(b)q(e)h(resp)q(ectiv)o(ely:)166 1455 y Fl(MPI)p 265 1455 V 17 w(GOP\()h(in)o(buf,)e(outbuf,)h(group,)g (op\))166 1577 y(MPI)p 265 1577 V 17 w(GOPC\()h(in)o(buf,)e(outbuf,)h (len,)h(group,)g(op\))166 1698 y(MPI)p 265 1698 V 17 w(USER)p 413 1698 V 17 w(GOP\()f(in)o(buf,)g(outbuf,)f(group,)i (function\))166 1820 y(MPI)p 265 1820 V 17 w(USER)p 413 1820 V 17 w(GOPC\()g(in)o(buf,)e(outbuf,)h(len,)h(group,)f(function\)) 166 1906 y Fk(Do)f(w)o(e)h(w)o(an)o(t)f(a)g(user)i(pro)o(vided)e Fc(function)h Fk(\(t)o(w)o(o)f(IN)h(parameters,)f(one)h(OUT)g(v)n (alue\),)f(or)g(a)g(user)i(pro)o(vided)75 1955 y(pro)q(cedure)i(that)f (o)o(v)o(erwrites)g(the)g(second)h(input)e(\(ie.)23 b(one)15 b(IN)h(param,)d(one)j(INOUT)g(param,)e(the)i(equiv)n(alen)o(t)75 2005 y(of)i(C)g Fg(a)k(op=)f(b)d Fk(t)o(yp)q(e)h(assignmen)o(t\)?)31 b(The)19 b(second)h(c)o(hoice)f(ma)o(y)d(allo)o(w)h(a)h(more)g (e\016cien)o(t)h(implemen)o(tatio)o(n,)75 2055 y(without)14 b(c)o(hanging)f(the)h(seman)o(tics)g(of)f(the)h(MPI)g(call.)75 2262 y Ft(Scan)75 2385 y(MPI)p 184 2385 16 2 v 18 w(SCAN\()j(in)o(buf,) g(outbuf,)h(group,)e(op)i(\))166 2478 y Fs(MPI)p 258 2478 14 2 v 16 w(SCAN)13 b(is)g(used)g(to)f(p)q(erform)h(a)f(parallel)i (pre\014x)f(with)g(resp)q(ect)h(to)d(an)i(asso)q(ciativ)o(e)g (reduction)75 2534 y(op)q(eration)h(on)h(data)e(distributed)j(across)e (the)g(group.)19 b(The)c(op)q(eration)f(returns)g(in)i(the)e(output)g (bu\013er)75 2591 y(of)g(the)g(pro)q(cess)g(with)h(rank)e Fh(i)h Fs(the)g(reduction)h(of)f(the)g(v)m(alues)h(in)g(the)f(input)i (bu\013ers)e(of)f(pro)q(cesses)i(with)75 2647 y(ranks)h Fh(0,...,i)p Fs(.)21 b(The)c(t)o(yp)q(e)f(of)g(op)q(erations)g(supp)q (orted)h(and)f(their)h(seman)o(tic,)f(and)g(the)g(constrain)o(ts)75 2704 y(on)f(input)h(and)g(output)f(bu\013ers)g(are)g(as)g(for)f Fh(MPI)p 921 2704 15 2 v 17 w(REDUCE)p Fs(.)p eop %%Page: 47 52 47 51 bop 75 -100 a Fq(3.6.)34 b(GLOBAL)16 b(COMPUTE)f(OPERA)l(TIONS) 883 b Fs(47)75 45 y Ft(IN)17 b(in)o(buf)23 b Fs(handle)17 b(to)d(input)i(bu\013er)75 134 y Ft(IN)h(outbuf)23 b Fs(handle)17 b(to)d(output)h(bu\013er)75 223 y Ft(IN)i(group)23 b Fs(handle)16 b(to)f(group)75 311 y Ft(IN)i(op)23 b Fs(op)q(eration)15 b(\(status\))166 428 y Ft(MPI)p 275 428 16 2 v 18 w(SCANC\()k(in)o(buf,)i(outbuf,)f(len,)h(group,)f(op)g (\))e Fs(Same)f(as)h Fh(MPI)p 1491 428 15 2 v 16 w(SCAN)p Fs(,)f(restricted)h(to)75 520 y(blo)q(c)o(k)e(bu\013ers.)75 608 y Ft(IN)h(in)o(buf)23 b Fs(\014rst)15 b(input)h(bu\013er)f(elemen)o (t)h(\(c)o(hoice\))75 697 y Ft(OUT)i(outbuf)24 b Fs(\014rst)14 b(output)h(bu\013er)h(elemen)o(t)f(\(c)o(hoice\))75 786 y Ft(IN)i(len)23 b Fs(n)o(um)o(b)q(er)16 b(of)f(en)o(tries)g(in)h (input)h(and)e(output)g(bu\013er)g(\(in)o(teger\))75 875 y Ft(IN)i(group)23 b Fs(handle)16 b(to)f(group)75 963 y Ft(IN)i(op)23 b Fs(op)q(eration)15 b(\(status\))166 1087 y Ft(MPI)p 275 1087 16 2 v 18 w(USER)p 435 1087 V 20 w(SCAN\()h(in)o(buf,)i(outbuf,)f(group,)g(function)i(\))166 1179 y Fs(Same)12 b(as)h(the)f(scan)h(op)q(eration)f(function)i(ab)q(o) o(v)o(e)e(except)h(that)f(a)g(user)h(supplied)h(function)g(is)f(used.) 75 1236 y Fh(function)k Fs(is)i(an)f(asso)q(ciativ)o(e)g(and)h(comm)o (utativ)o(e)e(function)i(with)g(t)o(w)o(o)e(argumen)o(ts.)28 b(The)18 b(t)o(yp)q(es)g(of)75 1292 y(the)d(t)o(w)o(o)f(argumen)o(ts)g (and)i(of)f(the)g(returned)h(v)m(alues)g(all)g(agree.)75 1373 y Ft(IN)h(in)o(buf)23 b Fs(handle)17 b(to)d(input)i(bu\013er)75 1462 y Ft(IN)h(outbuf)23 b Fs(handle)17 b(to)d(output)h(bu\013er)75 1551 y Ft(IN)i(group)23 b Fs(handle)16 b(to)f(group)75 1639 y Ft(IN)i(function)24 b Fs(user)16 b(pro)o(vided)g(function)166 1756 y Ft(MPI)p 275 1756 V 18 w(USER)p 435 1756 V 20 w(SCANC\()g(in)o(buf,)h(outbuf,)h(len,)f(group,)g(function\))166 1848 y Fs(Is)e(same)g(as)g Fh(MPI)p 460 1848 15 2 v 17 w(USER)p 573 1848 V 17 w(SCAN)p Fs(,)f(restricted)h(to)g(a)g(blo)q(c)o (k)h(bu\013er.)75 1929 y Ft(IN)h(in)o(buf)23 b Fs(\014rst)15 b(lo)q(cation)h(in)g(input)g(bu\013er)75 2018 y Ft(OUT)i(outbuf)24 b Fs(\014rst)14 b(lo)q(cation)i(in)g(output)f(bu\013er)75 2107 y Ft(IN)i(len)23 b Fs(n)o(um)o(b)q(er)16 b(of)f(en)o(tries)g(in)h (input)h(and)e(output)g(bu\013er)g(\(in)o(teger\))75 2195 y Ft(IN)i(group)23 b Fs(handle)16 b(to)f(group)75 2284 y Ft(IN)i(function)24 b Fs(user)16 b(pro)o(vided)g(function)166 2441 y Fl(Discussion:)166 2498 y Fk(Do)f(w)o(e)h(w)o(an)o(t)f(scan)h (op)q(erations)g(executed)i(b)o(y)d(segmen)o(ts?)24 b(\(The)16 b(HPF)g(de\014nition)f(of)g(pre\014x)i(and)e(su\016x)75 2554 y(op)q(eration)h(migh)o(t)e(b)q(e)i(handy)g({)g(in)f(addition)g (to)h(the)h(scanned)g(v)o(ector)f(of)g(v)n(alues)g(there)h(is)f(a)f (mask)g(that)h(tells)75 2611 y(where)f(segmen)o(ts)f(start)g(and)g (end.\))p eop %%Page: 48 53 48 52 bop 75 -100 a Fs(48)708 b Fq(CHAPTER)15 b(3.)30 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Fm(3.7)70 b(Correctness)75 229 y Fl(Discussion:)34 b Fk(This)14 b(is)f(still)g(v)o(ery)i(preliminary)166 368 y Fs(The)k(seman)o(tics)g (of)f(the)h(collectiv)o(e)h(comm)o(unication)g(op)q(erations)f(can)f(b) q(e)i(deriv)o(ed)f(from)f(their)75 425 y(op)q(erational)g(de\014nition) i(in)f(terms)e(of)g(p)q(oin)o(t-to-p)q(oin)o(t)i(comm)o(unication.)28 b(It)18 b(is)g(assumed)g(that)f(mes-)75 481 y(sages)e(p)q(ertaining)i (to)e(one)g(op)q(eration)h(cannot)f(b)q(e)i(confused)f(with)g(messages) f(p)q(ertaining)h(to)f(another)75 538 y(op)q(eration.)20 b(Also)14 b(messages)f(p)q(ertaining)i(to)e(t)o(w)o(o)g(distinct)i(o)q (ccurrences)g(of)e(the)h(same)g(op)q(eration)g(can-)75 594 y(not)h(b)q(e)h(confused,)f(if)h(the)g(t)o(w)o(o)d(o)q(ccurrences)k (ha)o(v)o(e)e(distinct)h(parameters.)j(The)d(relev)m(an)o(t)g (parameters)75 651 y(for)e(this)h(purp)q(ose)h(are)e Fh(group)p Fs(,)g Fh(root)g Fs(and)h Fh(op)p Fs(.)k(messages)14 b(p)q(ertaining)i(to)e(another)h(o)q(ccurrence)h(of)e(the)75 707 y(same)k(op)q(eration,)g(with)g(di\013eren)o(t)g(parameters.)27 b(The)18 b(implemen)o(ter)i(can,)e(of)f(course,)i(use)f(another,)75 764 y(more)d(e\016cien)o(t)h(implemen)o(tation,)g(as)f(long)g(as)g(it)g (has)g(the)h(same)f(e\013ect.)166 896 y Fl(Discussion:)166 946 y Fk(This)c(statemen)o(t)h(do)q(es)g(not)g(y)o(et)g(apply)e(to)i (the)g(curren)o(t,)h(incomplete)e(and)g(somewhat)g(careless)i (de\014nitions)75 996 y(I)h(pro)o(vided)g(in)f(this)h(draft.)166 1045 y(The)i(de\014nition)f(ab)q(o)o(v)o(e)g(means)g(that)g(messages)h (p)q(ertaining)f(to)g(a)g(collectiv)o(e)h(comm)o(uni)o(cation)d(carry)j (in-)75 1095 y(formation)11 b(iden)o(tifying)h(the)j(op)q(eration)e (itself,)g(and)h(the)g(v)n(alues)g(of)f(the)h Fg(group)f Fk(and,)g(where)i(relev)n(an)o(t,)e Fg(root)g Fk(or)75 1145 y Fg(op)g Fk(parameters.)19 b(Is)14 b(this)g(acceptable?)166 1284 y Fs(A)h(few)g(examples:)75 1387 y Fh(MPI_BCAST\(buf,)22 b(len,)h(group,)g(0\);)75 1444 y(MPI_BCAST\(buf,)f(len,)h(group,)g (1\);)166 1547 y Fs(Tw)o(o)13 b(consecutiv)o(e)h(broadcasts,)f(in)h (the)g(same)f(group,)g(with)h(the)g(same)f(tag,)g(but)g(di\013eren)o(t) h(ro)q(ots.)75 1604 y(Since)k(the)e(op)q(erations)g(are)g (distinguishable,)i(messages)e(from)f(one)h(broadcast)g(cannot)g(b)q(e) g(confused)75 1660 y(with)g(messages)e(from)h(the)g(other)g(broadcast;) f(the)h(program)f(is)i(safe)f(and)g(will)i(execute)f(as)f(exp)q(ected.) 75 1763 y Fh(MPI_BCAST\(buf,)22 b(len,)h(group,)g(0\);)75 1820 y(MPI_BCAST\(buf,)f(len,)h(group,)g(0\);)166 1923 y Fs(Tw)o(o)18 b(consecutiv)o(e)i(broadcasts,)f(in)h(the)f(same)g (group,)h(with)f(the)g(same)g(tag)f(and)i(ro)q(ot.)30 b(Since)75 1979 y(p)q(oin)o(t-to-p)q(oin)o(t)14 b(comm)o(unication)g (preserv)o(es)g(the)f(order)h(of)f(messages)g(here,)g(to)q(o,)g (messages)g(from)g(one)75 2036 y(broadcast)g(will)i(not)e(b)q(e)h (confused)g(with)g(messages)f(from)g(the)g(other)g(broadcast;)g(the)h (program)e(is)i(safe)75 2092 y(and)h(will)i(execute)f(as)f(in)o (tended.)75 2195 y Fh(MPI_RANK\(&rank,)22 b(group\))75 2252 y(if)i(\(rank==0\))123 2308 y({)147 2365 y(MPI_BCASTC\(buf,)d (len,)j(group,)f(0\);)147 2421 y(MPI_SENDC\(buf,)f(len,)h(2,)g(tag,)h (group\);)123 2478 y(})75 2534 y(elseif)f(\(rank==1\))123 2591 y({)147 2647 y(MPI_RECVC\(buf,)f(len,)h(MPI_DONTCARE,)f(tag,)h (group\);)147 2704 y(MPI_BCASTC\(buf,)e(len,)j(group,)f(0\);)p eop %%Page: 49 54 49 53 bop 75 -100 a Fq(3.7.)34 b(CORRECTNESS)1303 b Fs(49)147 45 y Fh(MPI_RECVC\(buf,)22 b(len,)h(MPI_DONTCARE,)f(tag,)h(group\);)123 102 y(})75 158 y(else)123 214 y({)147 271 y(MPI_SENDC\(buf,)f(len,)h (2,)g(tag,)h(group\);)147 327 y(MPI_BCASTC\(buf,)d(len,)j(group,)f (0\);)123 384 y(})166 490 y Fs(Pro)q(cess)17 b(zero)g(executes)h(a)f (broadcast)f(follo)o(w)o(ed)i(b)o(y)f(a)g(send)g(to)g(pro)q(cess)g (one;)h(pro)q(cess)g(t)o(w)o(o)e(ex-)75 547 y(ecutes)h(a)f(send)h(to)f (pro)q(cess)h(one,)f(follo)o(w)o(ed)h(b)o(y)f(a)g(broadcast;)g(and)h (pro)q(cess)g(one)f(executes)h(a)f(receiv)o(e,)75 603 y(a)21 b(broadcast)g(and)g(a)g(receiv)o(e.)39 b(A)21 b(p)q(ossible)i(outcome)e(is)h(for)f(the)g(op)q(erations)h(to)e(b)q(e)i (matc)o(hed)f(as)75 659 y(illustrated)c(b)o(y)e(the)g(diagram)g(b)q (elo)o(w.)170 879 y Fh(0)549 b(1)525 b(2)457 992 y(/)24 b(-)f(>)48 b(receive)285 b(/)24 b(-)g(send)409 1048 y(/)597 b(/)75 1104 y(broadcast)70 b(/)215 b(broadcast)166 b(/)71 b(broadcast)337 1161 y(/)573 b(/)123 1217 y(send)71 b(-)310 b(receive)47 b(<)23 b(-)166 1437 y Fs(The)14 b(reason)g(is)h(that)f (broadcast)f(is)i(not)f(a)g(sync)o(hronous)g(op)q(eration;)h(the)f (call)h(at)f(a)g(pro)q(cess)h(ma)o(y)75 1493 y(return)j(b)q(efore)g (the)f(other)h(pro)q(cesses)g(ha)o(v)o(e)f(en)o(tered)h(the)g (broadcast.)27 b(Th)o(us,)18 b(the)f(message)h(sen)o(t)f(b)o(y)75 1549 y(pro)q(cess)g(zero)f(can)h(arriv)o(e)g(to)f(pro)q(cess)g(one)h(b) q(efore)g(the)g(message)f(sen)o(t)g(b)o(y)h(pro)q(cess)g(t)o(w)o(o,)e (and)i(b)q(efore)75 1606 y(the)e(call)i(to)d(broadcast)h(on)g(pro)q (cess)g(one.)p eop %%Page: 50 55 50 54 bop 75 359 a Fn(Chapter)34 b(4)75 569 y Fu(Pro)s(cess)40 b(T)-10 b(op)s(ologi)q(es)850 794 y Fs(Rolf)16 b(Hemp)q(el)75 951 y Fm(4.1)70 b(In)n(tro)r(duction)75 1057 y Fs(The)12 b(MPI1)g(draft)g(standard)f(for)h(a)g(user{lev)o(el)h(message{passing)f (in)o(terface)g([6])g(explicitly)i(states)e(that)75 1113 y(it)j(do)q(es)f(not)g(y)o(et)g(pro)o(vide)h(a)f(complete)i(in)o (terface)e(for)g(message{passing)g(parallel)i(programming.)j(In-)75 1170 y(stead)12 b(the)f(draft)g(concen)o(trates)h(on)f(the)h(functions) h(whic)o(h)f(are)g(essen)o(tial)h(in)f(an)o(y)g(reasonable)g(standard.) 75 1226 y(More)i(sophisticated)i(features)f(will)h(ha)o(v)o(e)f(to)f(b) q(e)h(added)h(later,)e(some)h(of)f(whic)o(h)i(are)f(listed)h(in)f (section)75 1283 y(5)g(of)g(the)g(draft)f(standard.)166 1341 y(One)k(of)e(the)h(outstanding)g(issues)h(is)g(the)f(handling)i (of)d(logical)i(pro)q(cess)g(top)q(ologies)f(\(or)f(virtual)75 1398 y(top)q(ologies\).)28 b(Pro)q(cess)18 b(groups)f(in)i(MPI1)f(are)f (unstructured)i(collections)g(of)f(pro)q(cesses.)28 b(This)19 b(con-)75 1454 y(trasts)g(with)h(the)g(ma)s(jorit)o(y)f(of)h(parallel)i (applications,)g(in)f(whic)o(h)g(the)f(pro)q(cesses)h(are)f(arranged)f (in)75 1511 y(top)q(ological)d(patterns)f(whic)o(h)h(are)f(often)g(as)f (simple)j(as)e(a)g(t)o(w)o(o{)e(or)i(three{dimensional)i(grid.)166 1570 y(F)l(or)12 b(the)h(user)g(who)g(programs)f(an)h(application)h(on) f(suc)o(h)g(a)g(pro)q(cess)g(structure)g(the)g(most)f(natural)75 1626 y(w)o(a)o(y)k(of)g(referring)i(to)e(individual)k(pro)q(cesses)d (is)h(to)e(sp)q(ecify)i(their)g(co)q(ordinates)f(in)h(the)f(pro)q(cess) g(grid.)75 1683 y(Usually)22 b(a)e(pro)q(cess)g(do)q(es)h(not)f(ha)o(v) o(e)g(to)g(kno)o(w)g(the)g(PID)h(n)o(um)o(b)q(ers)f(of)g Fi(al)r(l)g Fs(pro)q(cesses)h(in)g(the)g(grid,)75 1739 y(b)q(ecause)h(comm)o(unication)g(only)g(tak)o(es)f(place)h(with)g(pro) q(cesses)f(in)h(a)f(certain)h(neigh)o(b)q(orho)q(o)q(d,)i(and)75 1796 y(p)q(erhaps)18 b(with)g(a)f(few)h(distan)o(t)f(pro)q(cesses.)27 b(Non{scalable)19 b(features)e(lik)o(e)i(the)e(explicit)j(listing)f(of) e(all)75 1852 y(participating)c(pro)q(cesses)g(in)g(the)g(application)h (could,)g(therefore,)e(b)q(e)h(a)o(v)o(oided,)g(if)f(there)h(w)o(ere)f (a)g(means)75 1908 y(to)j(sp)q(ecify)h(the)f(information)h(whic)o(h)g (is)f(really)i(required.)166 1967 y(Additionally)l(,)26 b(the)c(user{de\014ned)h(pro)q(cess)f(structure)f(can)h(b)q(e)h (exploited)g(b)o(y)f(the)g(system)f(in)75 2024 y(the)e(assignmen)o(t)f (of)h(pro)q(cesses)g(to)f(hardw)o(are)g(pro)q(cessors.)30 b(Ho)o(w)18 b(this)i(mapping)f(is)g(done)g(in)h(detail)75 2080 y(is)g(outside)h(the)f(scop)q(e)g(of)f(this)h(standardization)h (prop)q(osal,)g(since)f(it)g(is)h(to)q(o)e(m)o(uc)o(h)h(dep)q(enden)o (t)h(on)75 2137 y(the)f(particular)g(hardw)o(are.)31 b(The)20 b(description)h(of)e(a)g(\\virtual)h(pro)q(cess)g(top)q (ology",)f(ho)o(w)o(ev)o(er,)g(only)75 2193 y(dep)q(ends)f(on)f(the)g (application,)h(and)f(is,)h(therefore,)e(mac)o(hine{indep)q(endent.)27 b(The)17 b(functions)g(whic)o(h)75 2250 y(are)e(prop)q(osed)g(in)h (this)g(pap)q(er)g(only)g(deal)f(with)h(this)g(side)g(of)f(the)g (mapping)h(problem.)166 2308 y(There)e(are)g(w)o(ell{kno)o(wn)h(tec)o (hniques)g(for)f(mapping)h(grid/torus)e(structures)h(to)g(hardw)o(are)f (top)q(o-)75 2365 y(logies)18 b(suc)o(h)f(as)g(h)o(yp)q(ercub)q(es)h (or)f(grids.)26 b(But)17 b(ev)o(en)g(for)g(more)f(complicated)j(graph)d (structures)h(go)q(o)q(d)75 2421 y(heuristics)d(often)e(yield)i (near{optimal)f(results)g([14)o(].)18 b(On)13 b(the)g(other)f(hand,)h (if)g(there)f(is)h(no)g(w)o(a)o(y)e(for)h(the)75 2478 y(user)k(to)e(sp)q(ecify)j(the)f(logical)g(pro)q(cess)g(arrangemen)o(t) e(as)h(a)h(\\virtual)f(top)q(ology",)g(this)h(information)f(is)75 2534 y(most)e(di\016cult)i(to)e(reco)o(v)o(er)h(later.)19 b(A)14 b(random)f(mapping)i(is)f(most)f(lik)o(ely)j(the)d(consequence.) 21 b(Whereas)75 2591 y(this)16 b(is)g(not)g(a)f(problem)i(for)e(mac)o (hines)h(with)g(fast)f(in)o(terconnect)i(net)o(w)o(orks)d(and)i(slo)o (w)g(pro)q(cessors,)f(in)75 2647 y(general)j(resources)f(can)g(b)q(e)h (used)g(more)e(e\016cien)o(tly)j(b)o(y)e(k)o(eeping)h(the)f(comm)o (unication)h(lo)q(cal.)27 b(Some)75 2704 y(details)19 b(ab)q(out)e(predicted)i(and)f(measured)g(p)q(erformance)f(impro)o(v)o (emen)o(ts)h(whic)o(h)g(result)g(from)f(go)q(o)q(d)952 2828 y(50)p eop %%Page: 51 56 51 55 bop 75 -100 a Fq(4.2.)34 b(VIR)l(TUAL)17 b(TOPOLOGIES)1119 b Fs(51)75 45 y(pro)q(cess{to{pro)q(cessor)15 b(mapping)h(on)f(mo)q (dern)h(w)o(ormhole{routing)f(arc)o(hitectures)h(can)g(b)q(e)g(found)g (in)75 102 y([5)o(,)f(4].)75 269 y Fm(4.2)70 b(Virtual)21 b(T)-6 b(op)r(ologies)75 378 y Fs(In)17 b(the)g(most)e(general)i(case)g (the)f(connection)i(structure)e(of)g(a)g(set)h(of)f(pro)q(cesses)h(can) f(b)q(e)h(represen)o(ted)75 435 y(b)o(y)c(a)g(graph.)19 b(The)14 b(no)q(des)f(stand)h(for)e(the)i(pro)q(cesses,)f(and)h(the)f (edges)h(connect)f(pro)q(cesses)h(whic)o(h)g(com-)75 491 y(m)o(unicate)h(with)g(eac)o(h)g(other.)20 b(MPI)14 b(pro)o(vides)i(message{passing)e(b)q(et)o(w)o(een)h(an)o(y)g(pair)g (of)f(pro)q(cesses)h(in)75 547 y(a)i(group.)27 b(There)18 b(is)g(no)g(requiremen)o(t)g(for)f(op)q(ening)i(a)e(c)o(hannel)i (explicitly)l(.)30 b(Therefore,)18 b(a)f(\\missing)75 604 y(link")g(in)f(the)f(user{de\014ned)i(pro)q(cess)f(graph)f(do)q(es) h(not)f(prev)o(en)o(t)g(the)g(corresp)q(onding)i(pro)q(cesses)f(from)75 660 y(exc)o(hanging)h(messages.)k(It)16 b(only)g(means)g(that)f(this)i (connection)g(is)f(neglected)h(in)g(the)f(virtual)h(top)q(ol-)75 717 y(ogy)l(.)24 b(As)16 b(a)g(consequence,)i(an)f(automatic)f(mapping) h(to)q(ol)g(will)h(not)e(try)g(to)g(assign)h(the)g(pro)q(cesses)g(to)75 773 y(neigh)o(b)q(oring)g(pro)q(cessors.)166 834 y(The)g(graph)g (de\014nition)i(function)f(MPI)p 868 834 14 2 v 16 w(GRAPH)f(presen)o (ted)h(in)g(this)f(pap)q(er)h(do)q(es)f(not)g(include)75 890 y(an)o(y)e(w)o(eigh)o(ting)g(of)f(the)h(comm)o(unication)h(v)o (olume)f(along)g(the)g(di\013eren)o(t)g(edges.)20 b(Pro)q(cesses)15 b(are)f(either)75 947 y(neigh)o(b)q(ors)22 b(or)e(not.)37 b(Exp)q(erience)23 b(with)f(similar)g(tec)o(hniques)g(in)g(P)l(ARMA)o (CS)f([11)o(,)g(12])f(sho)o(w)h(that)75 1003 y(this)h(information)g(is) g(usually)h(su\016cien)o(t)g(for)e(a)g(go)q(o)q(d)h(mapping.)40 b(Additionally)l(,)25 b(a)d(more)f(precise)75 1060 y(sp)q (eci\014cation)16 b(w)o(ould)f(b)q(e)g(more)e(di\016cult)j(for)e(the)g (user)g(to)g(set)g(up,)g(and)h(it)f(w)o(ould)h(mak)o(e)e(the)i(in)o (terface)75 1116 y(functions)h(more)f(complicated.)166 1177 y(In)i(principle)i(a)c(function)i(for)f(the)g(de\014nition)i(of)e (suc)o(h)g(a)g(graph)g(structure)g(w)o(ould)g(b)q(e)h(su\016cien)o(t)75 1233 y(for)c(all)i(applications.)21 b(Ho)o(w)o(ev)o(er,)13 b(in)h(man)o(y)g(applications)h(the)f(graph)g(structure)f(is)h(v)o(ery) g(regular,)g(and)75 1290 y(the)e(detailed)i(set{up)f(of)e(the)i(graph)f (w)o(ould)h(b)q(e)g(incon)o(v)o(enien)o(t)g(for)f(the)g(user)h(and)f (resource{consuming)75 1346 y(during)g(run)g(time.)19 b(A)12 b(large)f(fraction)g(of)g(all)i(parallel)g(applications)g(use)f (pro)q(cess)g(top)q(ologies)f(lik)o(e)i(rings,)75 1403 y(or)g(t)o(w)o(o{)f(or)h(higher{dimensional)k(grids)c(or)h(tori.)19 b(These)14 b(structures)f(are)g(completely)i(de\014ned)g(b)o(y)f(the)75 1459 y(n)o(um)o(b)q(er)g(of)g(dimensions)i(and)e(the)g(n)o(um)o(b)q (ers)h(of)f(pro)q(cesses)g(in)h(eac)o(h)f(co)q(ordinate)h(direction.)21 b(Also,)14 b(the)75 1515 y(mapping)h(of)e(grids)h(and)h(tori)e(is)i (generally)g(an)f(easier)g(problem)h(then)f(that)f(of)h(general)g (graphs.)19 b(Th)o(us,)75 1572 y(it)14 b(is)h(desirable)h(to)d(do)h (the)h(mapping)g(as)e(grids)i(and)f(tori)g(rather)g(than)g(obscuring)h (the)f(information)g(in)75 1628 y(a)h(graph.)166 1689 y(Therefore,)f(in)h(addition)g(to)e(the)i(general)f(graph)g(cartesian)g (structures)g(of)g(arbitrary)f(dimension)75 1745 y(are)j(supp)q(orted.) 22 b(The)16 b(top)q(ology)g(de\014nition)i(function)e(MPI)p 1140 1745 V 17 w(CAR)l(T)g(can)g(b)q(e)h(used)f(to)f(describ)q(e)j(b)q (oth)75 1802 y(grids)11 b(and)f(tori)g(b)o(y)g(sp)q(ecifying)j(p)q(er)d (co)q(ordinate)h(direction)h(whether)e(the)g(pro)q(cess)h(structure)f (is)h(p)q(erio)q(dic)75 1858 y(or)i(not.)20 b(Similar)15 b(functions)g(are)e(con)o(tained)i(in)g(EXPRESS)g([15)o(])e(and)h(P)l (ARMA)o(CS.)g(Note)g(that)f(an)h(n{)75 1915 y(dimensional)h(h)o(yp)q (ercub)q(e)g(is)f(an)f(n{dimensional)i(torus)e(with)g(2)g(pro)q(cesses) h(p)q(er)f(co)q(ordinate)h(direction.)75 1971 y(Th)o(us,)h(sp)q(ecial)i (supp)q(ort)e(for)g(h)o(yp)q(ercub)q(e)h(structures)f(is)h(not)f (necessary)l(.)166 2032 y(Based)g(on)f(the)h(p)q(ositions)g(in)g(the)g (virtual)g(top)q(ology)f(a)g(pro)q(cess)h(can)g(lo)q(ok)g(up)g(the)f (PID)h(n)o(um)o(b)q(ers)75 2088 y(of)d(other)h(pro)q(cesses)g(b)o(y)f (calling)j(MPI)p 729 2088 V 16 w(INQPID.)e(The)g(pro)q(cesses)g(are)g (sp)q(eci\014ed)i(b)o(y)d(their)h(logical)h(no)q(de)75 2145 y(n)o(um)o(b)q(ers)20 b(\(graph\))e(or)h(rectangular)g(pro)q(cess) h(co)q(ordinates)g(\(grid/torus\).)31 b(Th)o(us,)20 b(it)g(is)f(p)q (ossible)j(to)75 2201 y(inquire)17 b(for)e(the)g(PID)g(n)o(um)o(b)q (ers)h(of)f(only)g(those)g(\(few\))g(pro)q(cesses)g(with)h(whic)o(h)g (messages)f(ha)o(v)o(e)g(to)f(b)q(e)75 2258 y(exc)o(hanged.)75 2425 y Fm(4.3)70 b(Em)n(b)r(edding)22 b(in)g(MPI)75 2534 y Fs(The)17 b(supp)q(ort)g(for)f(virtual)i(top)q(ologies)f(has)f(to)h (b)q(e)g(fully)h(in)o(tegrated)f(in)g(the)g(framew)o(ork)f(of)g(MPI.)g (In)75 2591 y(particular,)d(the)g(pro)q(cess)g(group)f(concept)h(is)g (b)q(eing)h(de\014ned)g(in)f(close)h(collab)q(oration)f(with)g(the)g (Collec-)75 2647 y(tiv)o(e)18 b(Comm)o(unication)f(sub)q(committee.)27 b(The)18 b(curren)o(t)f(design)h(of)f(the)h(pro)q(cess)f(top)q(ology)g (functions)75 2704 y(is)f(based)f(on)g(the)h(follo)o(wing)g (assumptions:)p eop %%Page: 52 57 52 56 bop 75 -100 a Fs(52)905 b Fq(CHAPTER)15 b(4.)35 b(PR)o(OCESS)15 b(TOPOLOGIES)143 45 y Fo(\017)23 b Fs(MPI)15 b(is)h(free)g(to)f(c)o(ho)q(ose)h(an)o(y)f(pro)q(cess)h(in)h(a)e(group) g(for)g(an)o(y)h(lo)q(cation)g(in)h(the)f(top)q(ology)l(.)21 b(There)189 102 y(are)16 b(no)g(sp)q(ecial)i(pro)q(cesses)f(whic)o(h)g (ha)o(v)o(e)f(to)g(b)q(e)h(aligned)g(with)g(top)q(ology)f (substructures.)23 b(This)189 158 y(assumption)d(\014ts)g(b)q(est)h(to) e(a)h(\\lo)q(cal)h(SPMD)f(mo)q(del")h(in)g(whic)o(h)g(all)g(pro)q (cesses)g(in)g(the)f(same)189 214 y(group)15 b(execute)g(the)h(same)f (program.)143 300 y Fo(\017)23 b Fs(One)g(imp)q(ortan)o(t)f(feature)g (of)g(MPI)g(are)g(the)h(pro)q(cess)f(groups.)42 b(The)22 b(treatmen)o(t)f(of)h(virtual)189 357 y(top)q(ologies)f(has)g(to)g(tak) o(e)g(this)g(concept)h(in)o(to)f(accoun)o(t.)38 b(The)22 b(functions)g(presen)o(ted)f(in)i(this)189 413 y(pap)q(er)16 b(are)g(not)g(only)h(compatible)h(with)e(the)h(pro)q(cess)f(groups,)g (they)g(ev)o(en)h(tak)o(e)f(adv)m(an)o(tage)f(of)189 470 y(them)e(for)g(the)g(de\014nition)i(of)e(mapping)h(o)o(v)o(erla)o (ys)f(and)g(dynamic)i(remapping)f(during)g(execution)189 526 y(time.)42 b(Virtual)23 b(pro)q(cess)g(top)q(ologies)g(help)h(in)f (the)g(sub)q(division)i(of)d(pro)q(cess)h(groups)f(whic)o(h)189 582 y(in)f(man)o(y)e(applications)j(has)e(to)f(b)q(e)i(done)g(along)f (pro)q(cess)g(co)q(ordinate)h(lines.)36 b(F)l(urthermore,)189 639 y(the)14 b(de\014nition)i(of)e(collectiv)o(e)i(gather{t)o(yp)q(e)d (comm)o(unication)i(calls)g(b)q(ene\014ts)g(from)f(the)g(natural)189 695 y(ordering)h(of)g(pro)q(cesses)h(in)g(a)e(logical)j(top)q(ology)l (.)75 769 y(The)k(supp)q(ort)g(for)f(virtual)h(top)q(ologies)g(cannot)g (b)q(e)g(handled)h(b)o(y)f(a)f(library)i(on)e(top)h(of)f(MPI.)g(One)75 826 y(reason)11 b(is)h(the)g(in)o(teraction)g(of)f(the)g(top)q(ologies) h(with)g(group)f(creation)h(and)f(collectiv)o(e)j(comm)o(unication.)75 882 y(F)l(urthermore,)f(a)h(p)q(ortable)g(top)q(ology)g(de\014nition)i (routine)e(w)o(ould)h(need)f(detailed)i(information)e(ab)q(out)75 938 y(the)k(a)o(v)m(ailable)h(hardw)o(are)e(resources)g(\(pro)q (cessors,)h(in)o(terconnect)g(links,)h(etc.\))27 b(whic)o(h)18 b(for)f(the)h(most)75 995 y(general)d(case)g(is)g(di\016cult)h(to)e (standardize)h(in)g(MPI.)f(Also,)h(the)f(implemen)o(tation)i(of)e(suc)o (h)h(a)f(p)q(ortable)75 1051 y(library)g(w)o(ould)g(tend)f(to)g(b)q(e)h (ine\016cien)o(t)h(b)q(ecause)f(it)f(could)h(not)f(tak)o(e)g(adv)m(an)o (tage)g(of)f(e\016cien)o(t)i(mapping)75 1108 y(algorithms)h(whic)o(h)h (dep)q(end)h(strongly)e(on)g(the)g(hardw)o(are)g(top)q(ology)l(.)75 1247 y Fm(4.4)70 b(Ov)n(erview)21 b(of)i(the)f(prop)r(osed)j(MPI)e (functions)75 1349 y Fs(The)e(top)q(ology)f(de\014nition)i(functions)f (MPI)p 866 1349 14 2 v 16 w(CAR)l(T)g(and)g(MPI)p 1215 1349 V 16 w(GRAPH)g(assign)f(a)g(top)q(ology)h(to)e(a)75 1405 y(pro)q(cess)j(group.)37 b(The)22 b(group)f(ma)o(y)f(either)i(b)q (e)g(the)f(ALL)i(group,)f(or)e(it)i(ma)o(y)e(b)q(e)i(the)g(result)f(of) g(a)75 1462 y(cop)o(ying)15 b(or)e(partitioning)i(op)q(eration.)20 b(The)15 b(default)f(top)q(ology)g(of)g(a)g(pro)q(cess)g(group)g(is:)20 b Fi(no)15 b(mapping)p Fs(.)75 1518 y(The)d(function)g(MPI)p 431 1518 V 16 w(INQMAP)g(is)g(pro)o(vided)g(for)f(inquiring)i(ab)q(out) f(the)f(top)q(ology)g(of)g(a)g(pro)q(cess)h(group,)75 1574 y(whereas)i(MPI)p 338 1574 V 17 w(INQCAR)l(T)h(and)g(MPI)p 761 1574 V 16 w(INQGR)g(return)g(the)f(size)h(of)f(the)h(pro)q(cess)f (structure)g(and)h(the)75 1631 y(p)q(osition)h(of)f(the)g(calling)i (pro)q(cess)f(in)g(a)f(cartesian)g(or)g(graph)f(top)q(ology)l(,)h(resp) q(ectiv)o(ely)l(.)166 1687 y(In)22 b(a)g(p)q(ortable)g(program)f(the)h (n)o(um)o(b)q(er)g(of)f(a)o(v)m(ailable)j(pro)q(cessors)d(usually)i(is) g(not)e(kno)o(wn)h(at)75 1744 y(compile)g(time.)35 b(In)21 b(the)g(case)f(of)g(a)g(cartesian)g(top)q(ology)g(the)h(function)g(MPI) p 1478 1744 V 16 w(MAKDIM)g(helps)g(in)75 1800 y(setting)i(the)f(n)o (um)o(b)q(ers)h(of)f(pro)q(cesses)h(p)q(er)g(co)q(o)q(dinate)g (direction,)j(dep)q(ending)e(on)f(the)g(n)o(um)o(b)q(er)f(of)75 1857 y(pro)q(cesses)16 b(in)g(the)f(group)g(and)g(optional)h(constrain) o(ts)f(whic)o(h)h(can)f(b)q(e)h(sp)q(eci\014ed)h(b)o(y)e(the)h(user.) 166 1913 y(The)i(n)o(um)o(b)q(er)h(of)f(pro)q(cesses)h(in)g(the)f (group)g(m)o(ust)g(b)q(e)h(greater)e(than)i(or)e(equal)j(to)d(the)i(n)o (um)o(b)q(er)75 1970 y(of)e(pro)q(cesses)h(in)g(the)g(virtual)g(top)q (ology)l(.)27 b(If)17 b(there)h(are)f(more)g(pro)q(cesses)h(in)g(the)g (group)f(than)h(in)g(the)75 2026 y(top)q(ology)l(,)d(the)g(system)g (decides)i(whic)o(h)f(pro)q(cesses)f(are)g(used.)166 2083 y(A)c(mapping)h(can)g(b)q(e)g(assigned)g(to)f(a)g(pro)q(cess)h (group)f(at)g(an)o(y)g(time.)19 b(It)11 b(is)h(a)f(sync)o(hronization)h (p)q(oin)o(t)75 2139 y(for)k(all)h(pro)q(cesses)g(of)g(the)f(group,)h (and)f(all)i(participating)f(pro)q(cesses)g(m)o(ust)f(call)i(the)f Fi(same)f Fs(mapping)75 2195 y(function)g(with)g(consisten)o(t)f (parameters.)166 2252 y(If)j(a)g(group)g(has)g(b)q(een)h(assigned)g(a)f (cartesian)g(top)q(ology)l(,)h(the)f(function)h(MPI)p 1554 2252 V 16 w(P)l(AR)l(TC)g(can)f(b)q(e)75 2308 y(used)12 b(to)f(partition)h(the)g(group)f(in)o(to)h(subgroups)g(whic)o(h)g(are)f (assigned)i(certain)f(sections)g(of)f(the)h(original)75 2365 y(pro)q(cess)j(structure.)20 b(As)15 b(an)g(example,)g(assume)g (that)g(MPI)p 1114 2365 V 16 w(CAR)l(T)g(has)g(de\014ned)i(a)d(t)o(w)o (o{dimensional)75 2421 y(grid)20 b(structure)g(on)g(a)g(pro)q(cess)g (group.)35 b(With)20 b(a)g(call)h(to)e(MPI)p 1214 2421 V 17 w(P)l(AR)l(TC)h(this)h(group)f(can)g(then)g(b)q(e)75 2478 y(split)15 b(up)f(in)o(to)g(disjoin)o(t)g(subgroups)g(whic)o(h)g (represen)o(t)g(ro)o(ws)f(or)g(columns)i(of)e(the)h(original)h(group.)k (The)75 2534 y(inquiry)e(functions)f(MPI)p 520 2534 V 16 w(INQCAR)l(T)g(and)g(MPI)p 944 2534 V 16 w(INQPID)g(consisten)o(tly) g(refer)f(to)g(the)g(grid)g(sections)75 2591 y(if)h(applied)h(to)d(a)h (subgroup.)166 2647 y(MPI)p 258 2647 V 16 w(P)l(AR)l(TC)d(com)o(bines)f (the)g(assignmen)o(t)g(of)f(a)g(virtual)i(top)q(ology)e(with)i(the)e (creation)h(of)g(groups.)75 2704 y(The)17 b(reason)g(is)g(that)g(if)g (in)h(an)f(application)i(a)d(group)h(is)h(partitioned)g(in)o(to)f (subgroups,)g(this)g(is)h(most)p eop %%Page: 53 58 53 57 bop 75 -100 a Fq(4.5.)34 b(A)15 b(SIMPLE)h(EXAMPLE)1180 b Fs(53)75 45 y(lik)o(ely)16 b(done)f(along)f(co)q(ordinate)h(lines)h (in)f(a)f(virtual)h(top)q(ology)l(.)20 b(It)14 b(therefore)g(seems)h (to)f(b)q(e)h(reasonable)75 102 y(to)g(pro)o(vide)g(an)g(automatic)g (function)h(for)f(this)g(op)q(eration.)166 158 y(The)22 b(virtual)g(top)q(ology)f(of)h(a)f(pro)q(cess)h(group)f(can)h(b)q(e)g (c)o(hanged)g(whenev)o(er)g(necessary)l(.)40 b(The)75 214 y(old)20 b(top)q(ology)g(is)g(o)o(v)o(erwritten.)33 b(This)21 b(do)q(es)f(not)f(a\013ect)g(the)h(top)q(ology)g(of)f (subgroups.)34 b(As)20 b(an)g(ex-)75 271 y(ample,)g(assume)e(the)h(ALL) h(group)e(has)h(b)q(een)h(assigned)f(a)g(t)o(w)o(o{dimensional)g(torus) f(mapping,)i(and)75 327 y(MPI)p 167 327 14 2 v 16 w(P)l(AR)l(TC)13 b(has)e(b)q(een)i(called)g(for)e(partitioning)i(the)f(original)h(top)q (ology)e(in)o(to)h(pro)q(cess)g(rings.)19 b(Then,)75 384 y(if)14 b(MPI)p 207 384 V 17 w(GRAPH)g(assignes)g(a)f(graph)h(top)q (ology)f(to)g(the)h(ALL)h(group,)e(the)h(previous)g(group)g(partitions) 75 440 y(still)j(exist,)e(and)g(they)g(still)i(ha)o(v)o(e)e(the)g(ring) h(top)q(ology)l(.)166 497 y(The)g(de\014nitions)h(and)f(detailed)i (descriptions)f(of)e(the)h(prop)q(osed)g(MPI)g(top)q(ology)f(functions) i(can)75 553 y(b)q(e)f(found)f(in)h(app)q(endix)h(A.)75 696 y Fm(4.5)70 b(A)22 b(simple)f(example)75 798 y Fs(The)12 b(example)h(in)g(\014gure)f(4.1)f(sho)o(ws)g(ho)o(w)h(the)g(grid)g (de\014nition)i(and)e(inquiry)i(functions)f(can)f(b)q(e)h(used)f(in)75 854 y(an)k(application)h(program.)k(A)16 b(partial)g(di\013eren)o(tial) h(equation,)f(for)f(example)h(the)g(P)o(oisson)g(equation,)75 911 y(is)g(to)f(b)q(e)h(solv)o(ed)f(on)h(a)f(rectangular)g(domain.)21 b(First)15 b(the)g(pro)q(cesses)h(organize)f(themselv)o(es)h(in)h(a)e (t)o(w)o(o{)75 967 y(dimensional)j(structure.)i(Eac)o(h)15 b(pro)q(cess)h(then)g(inquires)h(for)e(the)h(PID)f(n)o(um)o(b)q(ers)h (of)f(its)h(neigh)o(b)q(ors)g(in)75 1024 y(the)f(four)g(directions.)21 b(The)15 b(n)o(umerical)h(problem)g(is)g(solv)o(ed)f(b)o(y)g(an)g (iterativ)o(e)g(metho)q(d,)g(the)g(details)h(of)75 1080 y(whic)o(h)g(are)f(hidden)i(in)f(the)f(subroutine)h Fh(relax)p Fs(.)166 1137 y(In)e(eac)o(h)f(relaxation)g(step)g(eac)o(h)g(pro)q (cess)h(computes)f(new)g(v)m(alues)h(for)f(the)g(solution)h(grid)f (function)75 1193 y(at)i(all)i(p)q(oin)o(ts)f(o)o(wned)g(b)o(y)f(the)h (pro)q(cess.)22 b(Then)16 b(the)g(v)m(alues)h(at)e(in)o(terpro)q(cess)i (b)q(oundaries)g(ha)o(v)o(e)e(to)g(b)q(e)75 1250 y(exc)o(hanged)d(with) h(neigh)o(b)q(oring)g(pro)q(cesses.)19 b(F)l(or)11 b(example,)i(the)f (exc)o(hange)g(subroutine)h(migh)o(t)f(con)o(tain)75 1306 y(a)h(call)i(lik)o(e)g(MPI)p 367 1306 V 17 w(SEND\(...,neigh)p 684 1306 V 15 w(pid\(1\),...\))k(to)13 b(send)h(up)q(dated)h(v)m(alues) g(to)e(the)h(left{hand)g(neigh)o(b)q(or)75 1362 y(\(i-1,j\).)21 b(\(W)l(e)16 b(can)g(b)q(e)h(more)e(precise)i(when)g(the)f (de\014nition)h(of)f(MPI)p 1276 1362 V 16 w(SEND)g(is)h(\014nished.\)) 23 b(Note)16 b(that)75 1419 y(there)f(is)h(only)g(lo)q(cal)g(comm)o (unication)g(in)g(this)g(exc)o(hange)f(op)q(eration.)p eop %%Page: 54 59 54 58 bop 75 -100 a Fs(54)905 b Fq(CHAPTER)15 b(4.)35 b(PR)o(OCESS)15 b(TOPOLOGIES)252 106 y Fs(in)o(teger)g(ndim,)h(mx)p 596 106 14 2 v 16 w(neigh)252 163 y(parameter)e(\(ndim=2,)i(mx)p 739 163 V 16 w(neigh=4\))252 219 y(in)o(teger)f(gid,)h(dims\(ndim\),)f (neigh)p 856 219 V 18 w(def\(2,mx)p 1049 219 V 15 w(neigh\),)h(neigh)p 1321 219 V 17 w(pid\(mx)p 1480 219 V 17 w(neigh\),)g(n)o(um)p 1736 219 V 16 w(neigh,)g(ret)252 276 y(in)o(teger)f(o)o(wn)p 485 276 V 16 w(p)q(osition\(ndim\),)h(p)q(erio)q(d\(ndim\),)h(i,)e(j) 252 332 y(real)p Fo(\003)p Fs(8)g(u\(0:101,0:101)o(\),)d(f\(0:101,0:10) o(1\))252 388 y(data)i(dims)i(/)f(ndim)h Fo(\003)f Fs(0)g(/)75 445 y(C)89 b(Create)15 b(a)g(grid)g(structure)g(in)h(ALL)g(group)f(and) h(inquire)g(ab)q(out)g(o)o(wn)e(p)q(osition)252 501 y(gid)i(=)f(ALL)75 558 y(C)89 b(Set)15 b(pro)q(cess)h(grid)f(size)i(and)e(p)q(erio)q (dicit)o(y)252 614 y(ret)g(=)g(MPI)p 465 614 V 16 w(MAKDIM\(gid,)g (ndim,)h(dims\))252 671 y(if)f(\(ret)g(.lt.)20 b(0\))14 b(call)j(error)p 697 671 V 15 w(handler\(ret\))252 727 y(p)q(erio)q(d\(1\))e(=)h(MPI)p 594 727 V 16 w(PER)252 784 y(p)q(erio)q(d\(2\))f(=)h(MPI)p 594 784 V 16 w(PER)252 840 y(ret)f(=)g(MPI)p 465 840 V 16 w(CAR)l(T)h(\(gid,)f(ndim,)h(dims,)f (p)q(erio)q(d\))252 897 y(if)g(\(ret)g(.lt.)20 b(0\))14 b(call)j(error)p 697 897 V 15 w(handler\(ret\))75 953 y(C)89 b(If)16 b(not)e(a)h(grid)h(pro)q(cess:)k(stop)252 1009 y(if)15 b(\(ret)g(.eq.)20 b(0\))14 b(stop)252 1066 y(ret)h(=)g(MPI)p 465 1066 V 16 w(INQCAR)l(T)i(\(gid,)e(ndim,)h(dims,)f (p)q(erio)q(d,)h(o)o(wn)p 1302 1066 V 16 w(p)q(osition\))252 1122 y(if)f(\(ret)g(.lt.)20 b(0\))14 b(call)j(error)p 697 1122 V 15 w(handler\(ret\))75 1179 y(C)89 b(Lo)q(ok)15 b(up)h(the)f(PID)h(n)o(um)o(b)q(ers)f(for)g(the)g(neigh)o(b)q(ors.)21 b(Own)15 b(pro)q(cess)h(co)q(ordinates)f(are)g(\(i,j\).)75 1235 y(C)89 b(Neigh)o(b)q(ors)16 b(are)f(\(i{1,j\),)f(\(i+1,j\),)g (\(i,j{1\),)g(\(i,j+1\))252 1292 y(i)i(=)f(o)o(wn)p 413 1292 V 16 w(p)q(osition\(1\))252 1348 y(j)g(=)g(o)o(wn)p 414 1348 V 16 w(p)q(osition\(2\))252 1405 y(neigh)p 360 1405 V 17 w(def\(1,1\))f(=)i(i{1)252 1461 y(neigh)p 360 1461 V 17 w(def\(2,1\))e(=)i(j)252 1518 y(neigh)p 360 1518 V 17 w(def\(1,2\))e(=)i(i+1)252 1574 y(neigh)p 360 1574 V 17 w(def\(2,2\))e(=)i(j)252 1630 y(neigh)p 360 1630 V 17 w(def\(1,3\))e(=)i(i)252 1687 y(neigh)p 360 1687 V 17 w(def\(2,3\))e(=)i(j{1)252 1743 y(neigh)p 360 1743 V 17 w(def\(1,4\))e(=)i(i)252 1800 y(neigh)p 360 1800 V 17 w(def\(2,4\))e(=)i(j+1)252 1856 y(n)o(um)p 342 1856 V 16 w(neigh)g(=)g(mx)p 592 1856 V 16 w(neigh)252 1913 y(ret)f(=)g(MPI)p 465 1913 V 16 w(INQPID)i(\(gid,)e(n)o(um)p 858 1913 V 16 w(neigh,)h(neigh)p 1113 1913 V 17 w(def,)f(neigh)p 1322 1913 V 18 w(pid\))252 1969 y(if)g(\(ret)g(.lt.)20 b(0\))14 b(call)j(error)p 697 1969 V 15 w(handler\(ret\))75 2026 y(C)89 b(Initialize)18 b(the)e(grid)f(functions)h(and)g(start)d (the)j(iteration)252 2082 y(call)g(init)g(\(u,)f(f)t(\))252 2139 y(do)g(10)g(it=1,100)322 2195 y(call)i(relax)e(\(u,)g(f)t(\))75 2251 y(C)89 b(Exc)o(hange)15 b(data)g(with)g(neigh)o(b)q(or)h(pro)q (cesses)322 2308 y(call)h(exc)o(hange)e(\(u,)g(neigh)p 779 2308 V 17 w(pid\))75 2364 y(10)131 b(con)o(tin)o(ue)252 2421 y(call)16 b(output)f(\(u\))252 2477 y(end)147 2682 y(Figure)g(4.1:)k(Set{up)d(of)e(pro)q(cess)i(structure)f(for)f(t)o(w)o (o{dimensional)i(parallel)h(P)o(oisson)e(solv)o(er.)p eop %%Page: 55 60 55 59 bop 75 356 a Fn(Chapter)34 b(5)75 564 y Fu(Language)41 b(Binding)952 2828 y Fs(55)p eop %%Page: 56 61 56 60 bop 75 356 a Fn(Chapter)34 b(6)75 564 y Fu(F)-10 b(ormal)40 b(Seman)m(tics)952 2828 y Fs(56)p eop %%Page: 57 62 57 61 bop 75 356 a Fn(Chapter)34 b(7)75 564 y Fu(En)m(vironmen)m(tal)41 b(Inquiry)952 2828 y Fs(57)p eop %%Page: 58 63 58 62 bop 75 359 a Fn(Chapter)34 b(8)75 568 y Fu(Pro\014ling)834 793 y Fs(James)15 b(Co)o(wnie)75 949 y Fm(8.1)70 b(Requiremen)n(ts)75 1055 y Fs(T)l(o)15 b(meet)g(the)g(MPI)g(pro\014ling)i(in)o(terface,)e (an)g(implemen)o(tation)i(of)d(the)i(MPI)f(functions)h Fi(must)131 1157 y Fs(1.)22 b(pro)o(vide)14 b(a)f(mec)o(hanism)h (through)f(whic)o(h)h(all)g(of)f(the)g(MPI)h(de\014ned)h(functions)f (ma)o(y)e(b)q(e)i(accessed)189 1214 y(with)e(a)g(name)g(shift)h(\(MPI)f (suggests)f(the)h(pre\014x)h(\\)p Ft(P)p 1097 1214 16 2 v 18 w Fs(",)f(but)h(an)o(y)e(pre\014x)i(ma)o(y)f(b)q(e)g(used)h(pro) o(vided)189 1270 y(that)h(it)i(is)f(do)q(cumen)o(ted\).)131 1373 y(2.)22 b(ensure)c(that)f(those)h(MPI)g(functions)h(whic)o(h)f (are)g(not)f(replaced)i(ma)o(y)f(still)h(b)q(e)g(link)o(ed)g(in)o(to)f (an)189 1429 y(executable)e(image)f(without)h(causing)f(name)h (clashes.)131 1532 y(3.)22 b(do)q(cumen)o(t)c(the)f(implemen)o(tation)i (of)e(di\013eren)o(t)h(language)g(bindings)h(of)e(the)h(MPI)g(in)o (terface)f(if)189 1589 y(they)g(are)h(la)o(y)o(ered)g(on)f(top)g(of)h (eac)o(h)f(other,)h(so)f(that)g(the)h(pro\014ler)g(dev)o(elop)q(er)h (kno)o(ws)e(whether)189 1645 y(she)d(m)o(ust)f(implemen)o(t)i(the)e (pro\014le)i(in)o(terface)f(for)f(eac)o(h)h(binding,)h(or)e(can)h (economise)h(b)o(y)e(imple-)189 1701 y(men)o(ting)i(it)h(only)f(for)g (the)g(lo)o(w)o(est)g(lev)o(el)h(routines.)75 1857 y Fm(8.2)70 b(Discussion)75 1963 y Fs(The)13 b(ob)s(jectiv)o(e)g(of)g (the)g(MPI)g(pro\014ling)h(in)o(terface)g(is)f(to)f(ensure)i(that)e(it) i(is)f(relativ)o(ely)h(easy)f(for)g(authors)75 2019 y(of)18 b(pro\014ling)i(\(and)f(other)f(similar\))h(to)q(ols)g(to)f(in)o (terface)h(their)g(co)q(des)g(to)f(MPI)h(implemen)o(tations)h(on)75 2076 y(di\013eren)o(t)15 b(mac)o(hines.)166 2135 y(Since)20 b(MPI)e(is)h(a)f(mac)o(hine)h(indep)q(enden)o(t)h(standard)e(with)h (man)o(y)f(di\013eren)o(t)g(implemen)o(tations,)75 2191 y(it)e(is)h(unreasonable)g(to)e(exp)q(ect)i(that)f(the)g(authors)f(of)h (pro\014ling)h(to)q(ols)f(for)g(MPI)g(will)i(ha)o(v)o(e)d(access)i(to) 75 2248 y(the)c(source)h(co)q(de)f(whic)o(h)h(implemen)o(ts)h(MPI)e(on) g(an)o(y)g(particular)h(mac)o(hine.)20 b(It)13 b(is)h(therefore)f (necessary)75 2304 y(to)21 b(pro)o(vide)i(a)f(mec)o(hanism)g(b)o(y)g (whic)o(h)h(the)f(implemen)o(tors)h(of)f(suc)o(h)g(to)q(ols)g(can)g (collect)i(whatev)o(er)75 2360 y(p)q(erformance)15 b(information)h (they)f(wish)h Fi(without)g Fs(access)f(to)g(the)g(underlying)i (implemen)o(tation.)166 2419 y(W)l(e)d(b)q(eliev)o(e)i(that)e(ha)o (ving)g(suc)o(h)g(an)h(in)o(terface)f(is)h(imp)q(ortan)o(t)e(if)i(MPI)f (is)g(to)g(b)q(e)h(attractiv)o(e)e(to)g(end)75 2476 y(users,)i(since)i (the)e(a)o(v)m(ailabilit)o(y)j(of)d(man)o(y)g(di\013eren)o(t)h(to)q (ols)f(will)i(b)q(e)g(a)e(signi\014can)o(t)h(factor)f(in)h(attracting) 75 2532 y(users)f(to)g(the)g(MPI)g(standard.)166 2591 y(The)e(pro\014ling)h(in)o(terface)e(is)h(just)g(that,)f(an)g(in)o (terface.)20 b(It)12 b(sa)o(ys)g Fi(nothing)g Fs(ab)q(out)g(the)h(w)o (a)o(y)f(in)h(whic)o(h)75 2647 y(it)h(is)h(used.)20 b(There)14 b(is)h(therefore)f(no)g(attempt)f(to)g(la)o(y)h(do)o(wn)g(what)g (information)g(is)h(collected)g(through)75 2704 y(the)g(in)o(terface,)g (or)g(ho)o(w)g(the)g(collected)i(information)e(is)h(sa)o(v)o(ed,)e (\014ltered,)i(or)f(displa)o(y)o(ed.)952 2828 y(58)p eop %%Page: 59 64 59 63 bop 75 -100 a Fq(8.3.)34 b(LOGIC)16 b(OF)f(THE)g(DESIGN)1115 b Fs(59)166 45 y(While)15 b(the)g(initial)h(imp)q(etus)f(for)f(the)g (dev)o(elopmen)o(t)h(of)e(this)i(in)o(terface)f(arose)g(from)f(the)h (desire)i(to)75 102 y(p)q(ermit)g(the)f(implemen)o(tation)i(of)d (pro\014ling)j(to)q(ols,)d(it)i(is)f(clear)h(that)f(an)g(in)o(terface)g (lik)o(e)h(that)f(sp)q(eci\014ed)75 158 y(ma)o(y)i(also)h(pro)o(v)o(e)f (useful)i(for)e(other)h(purp)q(oses,)g(suc)o(h)g(as)g(\\in)o(ternet)o (w)o(orking")f(m)o(ultiple)i(MPI)f(imple-)75 214 y(men)o(tations.)j (Since)c(all)f(that)f(is)h(de\014ned)h(is)f(an)g(in)o(terface,)f(there) h(is)g(no)f(ob)s(jection)h(to)f(its)h(b)q(eing)g(used)75 271 y(wherev)o(er)f(it)h(is)f(useful.)166 332 y(As)j(the)g(issues)h(b)q (eing)g(addressed)f(here)h(are)f(in)o(timately)h(tied)f(up)h(with)f (the)g(w)o(a)o(y)f(in)i(whic)o(h)g(ex-)75 388 y(ecutable)j(images)e (are)g(built,)j(whic)o(h)e(ma)o(y)f(di\013er)h(greatly)f(on)g (di\013eren)o(t)h(mac)o(hines,)h(the)e(examples)75 444 y(giv)o(en)c(b)q(elo)o(w)g(should)h(b)q(e)f(treated)g(solely)g(as)f (one)h(w)o(a)o(y)f(of)g(implemen)o(ting)j(the)d(ob)s(jectiv)o(e)h(of)f (the)h(MPI)75 501 y(pro\014ling)h(in)o(terface.)k(The)16 b(actual)g(requiremen)o(ts)g(made)g(of)f(an)h(implemen)o(tation)h(are)e (those)g(detailed)75 557 y(in)i(the)f(Requiremen)o(ts)i(section)e(ab)q (o)o(v)o(e,)g(the)g(whole)h(of)f(the)g(rest)g(of)f(this)i(c)o(hapter)f (is)g(only)h(presen)o(t)f(as)75 614 y(justi\014cation)g(and)f (discussion)i(of)e(the)g(logic)h(for)f(those)g(requiremen)o(ts.)166 674 y(The)i(examples)g(b)q(elo)o(w)h(sho)o(w)e(one)h(w)o(a)o(y)f(in)h (whic)o(h)h(an)f(implemen)o(tation)h(could)f(b)q(e)h(constructed)75 731 y(to)h(meet)h(the)g(requiremen)o(ts)g(on)g(a)g(Unix)h(system)e (\(there)h(are)f(doubtless)i(others)e(whic)o(h)i(w)o(ould)f(b)q(e)75 787 y(equally)d(v)m(alid\).)75 954 y Fm(8.3)70 b(Logic)22 b(of)i(the)e(design)75 1064 y Fs(Pro)o(vided)16 b(that)f(an)g(MPI)g (implemen)o(tation)i(meets)e(the)h(requiremen)o(ts)g(ab)q(o)o(v)o(e,)e (it)i(is)g(p)q(ossible)h(for)e(the)75 1120 y(implemen)o(tor)20 b(of)e(the)h(pro\014ling)h(system)f(to)f(in)o(tercept)i(all)f(of)g(the) g(MPI)g(calls)h(whic)o(h)f(are)g(made)g(b)o(y)75 1177 y(the)g(user)h(program.)30 b(She)20 b(can)f(then)h(collect)g(whatev)o (er)f(information)g(she)h(requires)g(b)q(efore)f(calling)75 1233 y(the)c(underlying)i(MPI)d(implemen)o(tation)i(\(through)f(its)g (name)f(shifted)i(en)o(try)e(p)q(oin)o(ts\))h(to)f(ac)o(hiev)o(e)i(the) 75 1289 y(desired)g(e\013ects.)75 1456 y Fm(8.4)70 b(Examples)75 1567 y Fj(8.4.1)55 b(Pro\014ler)18 b(implem)o(en)n(tation)75 1661 y Fs(Supp)q(ose)25 b(that)e(the)h(pro\014ler)h(wishes)g(to)e (accum)o(ulate)i(the)f(total)f(amoun)o(t)g(of)h(data)f(sen)o(t)h(b)o(y) g(the)75 1718 y(MPI)p 167 1718 14 2 v 16 w(SEND)18 b(function,)g(along) f(with)h(the)f(total)g(elapsed)h(time)f(sp)q(en)o(t)h(in)g(the)f (function.)27 b(This)18 b(could)75 1774 y(trivially)f(b)q(e)f(ac)o (hiev)o(ed)g(th)o(us)f(:{)166 1835 y Fj(W)-6 b(ARNING)18 b(:)d Fs(syn)o(tax)f(correction)h(needed)i(in)f(examples)g(when)g(MPI)f (syn)o(tax)f(is)i(de\014ned.)75 1966 y Fh(static)23 b(int)g (totalBytes;)75 2022 y(static)g(int)g(totalTime;)75 2079 y(extern)g(int)g(now\(void\);)71 b(/*)23 b(Some)h(suitable)e(timer)i (function)e(!)i(*/)75 2192 y(int)f(MPI_SEND\(const)f(int)i(tag,)f (const)g(int)h(bytes,)f(void)g(*)h(buffer,)f(const)g(int)g(who\))75 2248 y({)147 2305 y(int)g(tstart)g(=)h(now\(\);)147 2361 y(int)f(result)g(=)h(P_MPI_SEND\(tag,bytes,buff)o(er,who\))o(;)69 b(/*)23 b(Pass)h(on)f(all)h(the)f(arguments)g(*/)147 2474 y(totalBytes)f(+=)i(bytes;)405 b(/*)23 b(Accumulate)g(byte)g (count)g(*/)147 2530 y(totalTime)46 b(+=)24 b(now\(\))f(-)h(tstart;)190 b(/*)23 b(and)h(time)333 b(*/)147 2643 y(return)23 b(result;)75 2700 y(})p eop %%Page: 60 65 60 64 bop 75 -100 a Fs(60)1180 b Fq(CHAPTER)15 b(8.)35 b(PR)o(OFILING)75 45 y Fj(8.4.2)55 b(MPI)19 b(library)f(implem)o(en)n (tation)75 131 y Fs(On)g(a)f(Unix)h(system,)f(in)h(whic)o(h)g(the)g (MPI)f(library)h(is)g(implemen)o(ted)h(in)f(C,)f(then)g(there)h(are)e (v)m(arious)75 187 y(p)q(ossible)22 b(options,)f(of)e(whic)o(h)i(t)o(w) o(o)e(of)g(the)h(most)g(ob)o(vious)g(are)g(presen)o(ted)g(here.)35 b(Whic)o(h)20 b(is)h(b)q(etter)75 244 y(dep)q(ends)c(on)e(whether)g (the)h(link)o(er)g(and)f(compiler)i(supp)q(ort)e(w)o(eak)g(sym)o(b)q (ols.)75 364 y Ft(Systems)h(with)i(w)o(eak)f(sym)o(b)q(ols)75 450 y Fs(If)i(the)f(compiler)i(and)f(link)o(er)h(supp)q(ort)f(w)o(eak)f (external)h(sym)o(b)q(ols)f(\(e.g.)30 b(Solaris)19 b(2.x,)f(other)g (system)75 506 y(V.4)13 b(mac)o(hines\),)i(then)f(only)g(a)g(single)h (library)g(is)f(required)h(through)f(the)g(use)g(of)g Fh(#pragma)23 b(weak)13 b Fs(th)o(us)75 563 y(:{)75 669 y Fh(#pragma)23 b(weak)g(MPI_EXAMPLE)g(=)g(P_MPI_EXAMPLE)75 782 y(int)g(P_MPI_EXAMPLE\(/*)f(appropriate)g(args)i(*/\))75 838 y({)170 895 y(/*)g(Useful)f(content)g(*/)75 951 y(})166 1057 y Fs(The)d(e\013ect)g(of)g(this)g Fh(#pragma)f Fs(is)i(to)e (de\014ne)i(the)f(external)h(sym)o(b)q(ol)f Fh(MPI)p 1472 1057 15 2 v 17 w(EXAMPLE)f Fs(as)h(a)g(w)o(eak)75 1114 y(de\014nition,)d(this)f(means)g(that)f(the)g(link)o(er)i(will)g (not)e(complain)i(if)f(there)g(is)g(another)f(de\014nition)j(of)d(the) 75 1170 y(sym)o(b)q(ol)g(\(for)e(instance)i(in)g(the)f(pro\014ling)i (library\),)e(ho)o(w)o(ev)o(er)f(if)i(no)f(other)g(de\014nition)i (exists,)e(then)h(the)75 1226 y(link)o(er)h(will)h(use)f(the)f(w)o(eak) g(de\014nition.)75 1346 y Ft(Systems)h(without)j(w)o(eak)d(sym)o(b)q (ols)75 1432 y Fs(In)c(the)f(absence)h(of)e(w)o(eak)h(sym)o(b)q(ols)g (then)h(a)f(p)q(ossible)h(solution)g(w)o(ould)g(use)f(the)g(C)g(macro)g (pre-pro)q(cessor)75 1489 y(th)o(us)k(:{)75 1595 y Fh(#ifdef)23 b(PROFILELIB)75 1651 y(#)95 b(ifdef)23 b(__STDC__)75 1708 y(#)191 b(define)23 b(FUNCTION\(name\))f(P_##name)75 1764 y(#)95 b(else)75 1821 y(#)191 b(define)23 b(FUNCTION\(name\))f (P_/**/name)75 1877 y(#)95 b(endif)75 1934 y(#else)75 1990 y(#)g(define)23 b(FUNCTION\(name\))f(name)75 2047 y(#endif)166 2153 y Fs(Eac)o(h)15 b(of)g(the)g(user)g(visible)j (functions)e(in)g(the)f(library)h(w)o(ould)g(then)f(b)q(e)h(declared)g (th)o(us)75 2259 y Fh(int)23 b(FUNCTION\(MPI_EXAMPLE\)\(/*)e (appropriate)h(args)i(*/\))75 2315 y({)170 2372 y(/*)g(Useful)f (content)g(*/)75 2428 y(})166 2534 y Fs(The)d(same)g(source)g(\014le)h (can)g(then)f(b)q(e)h(compiled)h(to)d(pro)q(duce)i(b)q(oth)f(v)o (ersions)g(of)g(the)g(library)l(,)75 2591 y(dep)q(ending)d(on)f(the)f (state)f(of)h(the)g Fh(PROFILELIB)f Fs(macro)h(sym)o(b)q(ol.)166 2647 y(It)e(is)g(required)h(that)e(the)h(standard)f(MPI)h(library)g(b)q (e)h(built)g(in)f(suc)o(h)g(a)g(w)o(a)o(y)e(that)h(the)h(inclusion)i (of)75 2704 y(MPI)g(functions)g(can)g(b)q(e)h(ac)o(hiev)o(ed)f(one)g (at)g(a)f(time.)20 b(This)c(is)f(a)f(somewhat)g(unpleasan)o(t)i (requiremen)o(t,)p eop %%Page: 61 66 61 65 bop 75 -100 a Fq(8.5.)34 b(OUTST)l(ANDING)16 b(ISSUES)1132 b Fs(61)75 45 y(since)22 b(it)f(ma)o(y)f(mean)h(that)f(eac)o(h)g (external)i(function)f(has)g(to)f(b)q(e)h(compiled)i(from)d(a)g (separate)g(\014le.)75 102 y(Ho)o(w)o(ev)o(er)14 b(this)i(is)g (necessary)g(so)f(that)g(the)g(author)g(of)g(the)h(pro\014ling)g (library)g(need)h(only)f(de\014ne)g(those)75 158 y(MPI)f(functions)g (whic)o(h)g(she)g(wishes)h(to)e(in)o(tercept,)h(references)g(to)f(an)o (y)g(others)g(b)q(eing)i(ful\014lled)h(b)o(y)e(the)75 214 y(normal)g(MPI)g(library)l(.)21 b(Therefore)15 b(the)h(link)g(step) f(can)h(lo)q(ok)f(something)h(lik)o(e)g(this)g(:{)75 321 y Fh(\045)24 b(cc)f(...)h(-lmyprof)f(-lpmpi)g(-lmpi)166 427 y Fs(Here)e Fh(libmyprof.a)e Fs(con)o(tains)i(the)g(pro\014ler)g (functions)h(whic)o(h)f(in)o(tercept)g(some)g(of)f(the)h(MPI)75 483 y(functions.)j Fh(libpmpi.a)15 b Fs(con)o(tains)i(the)f(\\name)h (shifted")g(MPI)f(functions,)h(and)g Fh(libmpi.a)e Fs(con)o(tains)75 540 y(the)g(normal)g(de\014nitions)i(of)e(the)g(MPI)h(functions.)75 683 y Fm(8.5)70 b(Outstanding)22 b(issues)131 785 y Fs(1.)g(Can)15 b(w)o(e)g(come)h(up)g(with)g(a)f(reasonably)h(p)q(ortable)g(sc)o(heme)g (whic)o(h)h(can)e(encompass)h(nesting)g(of)189 841 y(pro\014ler)f(in)o (terfaces)g(?)20 b(The)15 b(sc)o(heme)g(outlined)h(ab)q(o)o(v)o(e)e (only)h(giv)o(es)g(one)g(lev)o(el,)h(and)e(I)h(don't)f(ha)o(v)o(e)189 898 y(a)h(solution)g(for)g(m)o(ultiple)i(lev)o(els.)p eop %%Page: 62 67 62 66 bop 75 357 a Fn(Chapter)34 b(9)75 565 y Fu(Con)m(texts)40 b({)g(Prop)s(osal)h(I)876 788 y Fs(Marc)14 b(Snir)75 933 y Fm(9.1)70 b(Con)n(texts)75 1035 y Fs(A)15 b Ft(con)o(text)h Fs(consists)f(of:)143 1131 y Fo(\017)23 b Fs(A)18 b(set)g(of)f(pro)q (cesses)i(that)e(curren)o(tly)i(b)q(elong)g(to)e(the)h(con)o(text)g (\(p)q(ossibly)h(all)g(pro)q(cesses,)g(or)e(a)189 1187 y(prop)q(er)e(subset\).)143 1283 y Fo(\017)23 b Fs(A)14 b Ft(ranking)h Fs(of)g(the)f(pro)q(cesses)i(within)f(that)g(con)o (text,)e(i.e.,)i(a)f(n)o(um)o(b)q(ering)i(of)e(the)h(pro)q(cesses)g(in) 189 1339 y(that)f(con)o(text)h(from)f(0)h(to)g Fr(n)10 b Fo(\000)g Fs(1,)15 b(where)g Fr(n)h Fs(is)g(the)f(n)o(um)o(b)q(er)g (of)g(pro)q(cesses)h(in)g(that)e(con)o(text.)166 1435 y(A)h(pro)q(cess)h(ma)o(y)e(b)q(elong)i(to)f(sev)o(eral)g(con)o(texts)g (at)f(the)i(same)e(time.)166 1492 y(An)o(y)e(in)o(terpro)q(cess)g(comm) o(unication)h(o)q(ccurs)f(within)h(a)f(con)o(text,)g(and)g(messages)f (sen)o(t)h(within)h(one)75 1548 y(con)o(text)g(can)g(b)q(e)h(receiv)o (ed)g(only)f(within)i(the)e(same)g(con)o(text.)18 b(A)13 b(con)o(text)g(is)h(sp)q(eci\014ed)h(using)f(a)e Fi(c)n(ontext)75 1604 y(hand)r(le)g Fs(\(i.e.,)g(a)g(handle)h(to)f(an)g(opaque)g(ob)s (ject)f(that)g(iden)o(ti\014es)j(a)e(con)o(text\).)18 b(Con)o(text)11 b(handles)i(cannot)75 1661 y(b)q(e)i(transferred)f(for) g(one)h(pro)q(cess)g(to)f(another;)g(they)h(can)f(b)q(e)i(used)f(only)g (on)f(the)h(pro)q(cess)g(where)g(they)75 1717 y(where)g(created.)166 1774 y(F)l(ollo)o(ws)g(examples)h(of)f(p)q(ossible)i(uses)e(for)g(con)o (texts.)75 1898 y Fj(9.1.1)55 b(Lo)r(osely)17 b(sync)n(hronous)i (library)f(call)g(in)n(terface)75 1985 y Fs(Consider)13 b(the)g(case)g(where)g(a)f(parallel)i(application)h(executes)e(a)f (\\parallel)i(call")g(to)e(a)g(library)i(routine,)75 2041 y(i.e.,)g(where)h(all)g(pro)q(cesses)g(transfer)f(con)o(trol)g(to) g(the)h(library)g(routine.)20 b(If)15 b(the)f(library)i(w)o(as)d(dev)o (elop)q(ed)75 2098 y(separately)l(,)k(then)g(one)f(should)i(b)q(ew)o (are)e(of)g(the)h(p)q(ossibilit)o(y)h(that)e(the)h(library)g(co)q(de)g (ma)o(y)f(receiv)o(e)h(b)o(y)75 2154 y(mistak)o(e)f(messages)g(send)g (b)o(y)g(the)h(caller)g(co)q(de,)g(and)f(vice-v)o(ersa.)23 b(T)l(o)16 b(prev)o(en)o(t)g(suc)o(h)h(o)q(ccurrence)g(one)75 2211 y(migh)o(t)f(use)h(a)e(barrier)i(sync)o(hronization)g(b)q(efore)f (and)h(after)e(the)i(parallel)g(library)g(call.)24 b(Instead,)17 b(one)75 2267 y(can)d(allo)q(cate)h(a)e(di\013eren)o(t)h(con)o(text)g (to)f(the)h(library)l(,)h(th)o(us)f(prev)o(en)o(ting)g(un)o(w)o(an)o (ted)g(in)o(terference.)20 b(No)o(w,)75 2324 y(the)15 b(transfer)g(of)f(con)o(trol)h(to)g(the)g(library)h(need)g(not)f(b)q(e) h(sync)o(hronized.)75 2448 y Fj(9.1.2)55 b(F)-5 b(unctional)19 b(decomp)r(osition)d(and)j(mo)r(dular)e(co)r(de)h(dev)n(elopmen)n(t)75 2534 y Fs(Often,)i(a)f(parallel)i(application)g(is)e(dev)o(elop)q(ed)i (b)o(y)e(in)o(tegrating)h(sev)o(eral)f(distinct)h(functional)h(mo)q(d-) 75 2591 y(ules,)c(that)f(is)h(eac)o(h)g(dev)o(elop)q(ed)h(separately)l (.)24 b(Eac)o(h)16 b(mo)q(dule)i(is)f(a)f(parallel)i(program)d(that)h (runs)h(on)f(a)75 2647 y(dedicated)g(set)e(of)g(pro)q(cesses,)g(and)g (the)h(computation)f(consists)h(of)e(phases)i(where)f(mo)q(dules)i (compute)75 2704 y(separately)l(,)d(in)o(termixed)h(with)f(global)h (phases)f(where)g(all)h(pro)q(cesses)f(comm)o(unicate.)19 b(It)13 b(is)g(con)o(v)o(enien)o(t)952 2828 y(62)p eop %%Page: 63 68 63 67 bop 75 -100 a Fq(9.1.)34 b(CONTEXTS)1391 b Fs(63)75 45 y(to)13 b(allo)o(w)h(eac)o(h)g(mo)q(dule)g(to)f(use)h(its)g(o)o(wn)f (priv)m(ate)i(pro)q(cess)f(n)o(um)o(b)q(ering)g(sc)o(heme,)g(for)f(the) h(in)o(tramo)q(dule)75 102 y(computation.)24 b(This)17 b(is)g(ac)o(hiev)o(ed)g(b)o(y)g(using)g(a)f(priv)m(ate)i(mo)q(dule)f (con)o(text)f(for)g(in)o(tramo)q(dule)i(compu-)75 158 y(tation,)c(and)i(a)f(global)h(con)o(text)e(for)h(in)o(termo)q(dule)h (comm)o(unication.)75 279 y Fj(9.1.3)55 b(Collectiv)n(e)17 b(comm)n(unication)75 365 y Fs(MPI)j(supp)q(orts)h(collectiv)o(e)h (comm)o(unication)f(within)h(dynamically)g(created)f(groups)f(of)g(pro) q(cesses.)75 421 y(Eac)o(h)11 b(suc)o(h)g(group)f(can)h(b)q(e)h (represen)o(ted)f(b)o(y)g(a)g(distinct)h(con)o(text.)18 b(This)11 b(pro)o(vides)g(a)g(simple)h(mec)o(hanism)75 478 y(to)j(ensure)h(that)f(comm)o(unication)i(that)d(p)q(ertains)j(to)e (collectiv)o(e)i(comm)o(unication)g(within)f(one)g(group)75 534 y(is)g(not)f(confused)g(with)h(collectiv)o(e)h(comm)o(unication)f (within)g(another)f(group.)75 655 y Fj(9.1.4)55 b(Ligh)n(t)n(w)n(eigh)n (t)19 b(gang)h(sc)n(heduling)75 741 y Fs(Consider)14 b(an)f(en)o(vironmen)o(t)g(where)g(pro)q(cesses)h(are)e(m)o(ultith)o (treaded.)20 b(Con)o(texts)12 b(can)h(b)q(e)h(used)g(to)e(pro-)75 797 y(vide)h(a)e(mec)o(hanism)i(whereb)o(y)f(all)h(pro)q(cesses)f(are)f (time-shared)i(b)q(et)o(w)o(een)f(sev)o(eral)g(parallel)h(executions,) 75 854 y(and)19 b(can)h(con)o(text)e(switc)o(h)i(from)e(one)h(parallel) i(execution)f(to)f(another,)g(in)h(a)f(lo)q(osely)h(sync)o(hronous)75 910 y(manner.)27 b(A)17 b(thread)g(is)h(allo)q(cated)h(on)e(eac)o(h)g (pro)q(cess)h(to)f(eac)o(h)g(parallel)i(execution,)g(and)f(a)f (di\013eren)o(t)75 967 y(con)o(text)d(is)i(used)f(to)f(iden)o(tify)i (eac)o(h)f(parallel)i(execution.)k(Th)o(us,)14 b(tra\016c)g(from)g(one) h(execution)h(cannot)75 1023 y(b)q(e)i(confused)g(with)g(tra\016c)f (from)f(another)h(execution.)28 b(The)18 b(blo)q(c)o(king)g(and)g(un)o (blo)q(c)o(king)h(of)e(threads)75 1079 y(due)g(to)f(comm)o(unication)h (ev)o(en)o(ts)f(pro)o(vide)h(a)f(\\lazy")g(con)o(text)g(switc)o(hing)h (mec)o(hanism.)24 b(This)17 b(can)f(b)q(e)75 1136 y(extended)j(to)f (the)h(case)f(where)h(the)f(parallel)i(executions)f(are)g(spanning)g (distinct)h(pro)q(cess)e(subsets.)75 1192 y(\(MPI)d(do)q(es)g(not)g (require)h(m)o(ultithreaded)h(pro)q(cesses.\))166 1325 y Fl(Discussion:)32 b Fk(A)12 b(con)o(text)h(handle)e(migh)o(t)f(b)q(e) j(implemen)o(ted)c(as)k(a)e(p)q(oin)o(ter)h(to)g(a)g(structure)i(that)e (consists)75 1375 y(of)h(con)o(text)i(lab)q(el)e(\(that)h(is)g(carried) h(b)o(y)f(messages)g(sen)o(t)g(within)f(this)h(con)o(text\))h(and)f(a)g (con)o(text)g(mem)o(b)q(er)f(table,)75 1425 y(that)i(translates)h(pro)q (cess)h(ranks)f(within)e(a)h(con)o(text)h(to)f(absolute)h(addresses)h (or)e(to)g(routing)g(information.)k(Of)75 1474 y(course,)j(other)f (implemen)o(tatio)o(ns)d(are)i(p)q(ossible,)h(including)e(implemen)o (tations)e(that)j(do)g(not)g(require)g(eac)o(h)75 1524 y(con)o(text)15 b(mem)o(b)q(er)d(to)i(store)g(a)g(full)f(list)g(of)g (the)i(con)o(text)f(mem)o(b)q(ers.)166 1574 y(Con)o(texts)i(can)f(b)q (e)h(used)h(only)d(on)h(the)h(pro)q(cess)h(where)g(they)f(w)o(ere)g (created.)24 b(Since)16 b(the)g(con)o(text)g(carries)75 1624 y(information)f(on)i(the)h(group)f(of)g(pro)q(cesses)j(that)d(b)q (elong)g(to)h(this)f(con)o(text,)i(a)e(pro)q(cess)i(can)f(send)g(a)f (message)75 1674 y(within)e(a)g(con)o(text)h(only)e(to)i(other)g(pro)q (cesses)i(that)d(b)q(elong)g(to)g(that)h(con)o(text.)23 b(Th)o(us,)15 b(eac)o(h)h(pro)q(cess)h(needs)g(to)75 1723 y(k)o(eep)c(trac)o(k)g(only)f(of)h(the)g(con)o(texts)h(that)f (where)g(created)i(at)d(that)h(pro)q(cess;)i(the)e(total)f(n)o(um)o(b)q (er)g(of)g(con)o(texts)i(p)q(er)75 1773 y(pro)q(cess)i(is)d(lik)o(ely)g (to)h(b)q(e)g(small.)166 1823 y(The)g(only)f(di\013erence)i(I)f(see)g (b)q(et)o(w)o(een)h(this)f(curren)o(t)h(de\014nition)e(of)g(con)o (text,)h(whic)o(h)f(subsumes)h(the)g(group)75 1873 y(concept,)k(and)e (a)g(pared)h(do)o(wn)f(de\014nition,)h(if)e(that)i(I)f(assume)g(here)i (that)e(pro)q(cess)i(n)o(um)o(b)q(ering)e(is)g(relativ)o(e)g(to)75 1923 y(the)g(con)o(text,)h(rather)f(then)h(b)q(eing)f(global,)e(th)o (us)i(requiring)f(a)h(con)o(text)g(mem)o(b)q(er)e(table.)24 b(I)16 b(argue)f(that)h(this)g(is)75 1972 y(not)e(m)o(uc)o(h)e(added)j (o)o(v)o(erhead,)e(and)h(giv)o(es)g(m)o(uc)o(h)f(additional)f(needed)j (functionalit)o(y)m(.)145 2045 y Ff(\017)23 b Fk(If)18 b(a)g(new)h(con)o(text)g(is)g(created)h(b)o(y)e(cop)o(ying)g(a)g (previous)h(con)o(text,)h(then)f(one)g(do)q(es)g(not)g(need)g(a)g(new) 189 2095 y(mem)o(b)q(er)12 b(table;)j(rather,)g(one)g(needs)g(just)g(a) f(new)h(con)o(text)g(lab)q(el)f(and)h(a)f(new)h(p)q(oin)o(ter)g(to)f (the)h(same)f(old)189 2145 y(con)o(text)g(mem)o(b)q(er)e(table.)18 b(This)c(holds)g(true,)g(in)g(particular,)f(for)g(con)o(texts)i(that)f (include)g(all)f(pro)q(cesses.)145 2218 y Ff(\017)23 b Fk(A)13 b(con)o(text)g(mem)o(b)q(er)f(table)g(mak)o(es)g(sure)i(that) f(a)g(message)f(is)h(sen)o(t)h(only)e(to)h(a)f(pro)q(cess)j(that)e(can) g(execute)189 2268 y(in)h(the)h(con)o(text)g(of)e(the)i(message.)20 b(The)15 b(alternativ)o(e)f(mec)o(hanism,)d(whic)o(h)k(is)f(c)o(hec)o (king)h(at)f(reception,)h(is)189 2318 y(less)f(e\016cien)o(t,)g(and)f (requires)i(that)e(eac)o(h)h(con)o(text)h(lab)q(el)e(b)q(e)h (system-wide)f(unique.)18 b(This)c(requires)g(that,)189 2367 y(to)d(the)i(least,)e(all)g(pro)q(cesses)j(in)e(a)f(con)o(text)h (execute)i(a)d(collectiv)o(e)h(agreemen)o(t)g(algorithm)d(at)i(the)i (creation)189 2417 y(of)g(this)h(con)o(text.)145 2490 y Ff(\017)23 b Fk(The)15 b(use)h(of)f(relativ)o(e)g(addressing)g (within)g(eac)o(h)g(con)o(text)h(is)f(needed)i(to)e(supp)q(ort)h(true)g (mo)q(dular)d(dev)o(el-)189 2540 y(opmen)o(t)j(of)h(sub)q(computations) g(that)g(execute)i(on)f(a)f(subset)i(of)d(the)i(pro)q(cesses.)32 b(There)18 b(is)g(also)e(a)i(big)189 2590 y(adv)n(an)o(tage)13 b(in)g(using)h(the)g(same)f(con)o(text)i(construct)g(for)f(collectiv)o (e)g(comm)o(unicatio)o(ns)e(as)i(w)o(ell.)p eop %%Page: 64 69 64 68 bop 75 -100 a Fs(64)844 b Fq(CHAPTER)15 b(9.)35 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(I)75 45 y Fm(9.2)70 b(Con)n(text)22 b(Op)r(erations)75 151 y Fs(A)12 b(global)h(con)o(text) f Ft(ALL)g Fs(is)h(prede\014ned.)21 b(All)13 b(pro)q(cesses)g(b)q (elong)g(to)f(this)h(con)o(text)e(when)i(computation)75 208 y(starts.)19 b(MPI)c(do)q(es)g(not)g(sp)q(ecify)h(ho)o(w)f(pro)q (cesses)g(are)g(initially)j(rank)o(ed)d(within)i(the)e(con)o(text)f (ALL.)i(It)75 264 y(is)h(exp)q(ected)h(that)e(the)h(start-up)f(pro)q (cedure)i(used)f(to)f(initiate)i(an)f(MPI)g(program)e(\(at)h(load-time) h(or)75 321 y(run-time\))d(will)g(pro)o(vide)g(information)f(or)g(con)o (trol)g(on)g(this)g(initial)i(ranking)f(\(e.g.,)e(b)o(y)h(sp)q (ecifying)i(that)75 377 y(pro)q(cesses)h(are)f(rank)o(ed)g(according)h (to)f(their)h(pid's,)g(or)f(according)h(to)f(the)g(ph)o(ysical)i (addresses)f(of)f(the)75 434 y(executing)h(pro)q(cessors,)f(or)g (according)g(to)g(a)g(n)o(um)o(b)q(ering)h(sc)o(heme)f(sp)q(eci\014ed)j (at)c(load)i(time\).)166 575 y Fl(Discussion:)23 b Fk(If)17 b(w)o(e)h(think)f(of)h(adding)e(new)i(pro)q(cesses)j(at)c(run-time,)g (then)i Fg(ALL)e Fk(con)o(v)o(eys)h(the)g(wrong)75 632 y(impression,)12 b(since)j(it)f(is)f(just)h(the)h(initial)d(set)j(of)e (pro)q(cesses.)166 773 y Fs(The)i(follo)o(wing)h(op)q(erations)g(are)e (a)o(v)m(ailable)j(for)e(creating)g(new)h(con)o(texts.)75 889 y Ft(MPI)p 184 889 16 2 v 18 w(COPY)p 355 889 V 18 w(CONTEXT\(new)o(con)o(text,)h(con)o(text\))166 948 y Fs(Create)g(a)g(new)g(con)o(text)g(that)g(includes)j(all)e(pro)q (cesses)g(in)g(the)f(old)h(con)o(text.)26 b(The)18 b(rank)f(of)g(the)75 1004 y(pro)q(cesses)g(in)g(the)f(previous)h(con)o(text)f(is)g(preserv)o (ed.)24 b(The)16 b(call)i(m)o(ust)d(b)q(e)i(executed)g(b)o(y)f(all)i (pro)q(cesses)75 1061 y(in)f(the)g(old)g(con)o(text.)22 b(It)17 b(is)g(a)f(blo)q(c)o(king)h(call:)24 b(No)16 b(call)h(returns)f(un)o(til)i(all)f(pro)q(cesses)g(ha)o(v)o(e)f(called) i(the)75 1117 y(function.)j(The)15 b(parameters)f(are)75 1236 y Ft(OUT)k(new)o(con)o(text)k Fs(handle)16 b(to)d(newly)h(created) g(con)o(text.)19 b(The)14 b(handle)h(should)g(not)e(b)q(e)i(asso)q (ciated)189 1292 y(with)g(an)g(ob)s(ject)g(b)q(efore)g(the)h(call.)75 1396 y Ft(IN)h(con)o(text)23 b Fs(handle)17 b(to)d(old)i(con)o(text)166 1591 y Fl(Discussion:)31 b Fk(I)12 b(considered)h(adding)d(a)h(string)h (parameter,)f(to)g(pro)o(vide)h(a)f(unique)g(iden)o(ti\014er)h(to)f (the)h(next)75 1641 y(con)o(text.)19 b(But,)14 b(in)g(an)f(en)o (vironmen)o(t)g(where)i(pro)q(cesses)i(are)d(single)g(threaded,)h(this) f(is)f(not)h(m)o(uc)o(h)f(help:)18 b(Either)75 1691 y(all)13 b(pro)q(cesses)j(agree)f(on)f(the)h(order)f(they)h(create)g(new)g(con)o (texts,)g(or)f(the)g(application)f(deadlo)q(c)o(ks.)19 b(A)14 b(k)o(ey)g(ma)o(y)75 1741 y(help)g(in)f(an)g(en)o(vironmen)o(t)g (where)h(pro)q(cesses)j(are)d(m)o(ultithreaded,)e(to)h(distinguish)g (call)g(from)f(distinct)i(threads)75 1790 y(of)f(the)i(same)e(pro)q (cess;)i(but)f(it)g(migh)o(t)d(b)q(e)k(simpler)e(to)g(use)i(a)f(m)o (utex)e(algorithm)g(at)h(eac)o(h)i(pro)q(cess.)166 1849 y Fl(Implemen)o(tati)o(on)8 b(note:)15 b Fk(No)10 b(comm)o(unication)d (is)j(needed)h(to)f(create)h(a)f(new)g(con)o(text,)h(b)q(ey)o(ond)g(a)e (barrier)75 1906 y(sync)o(hronization;)k(all)g(pro)q(cesses)j(can)e (agree)h(to)e(use)i(the)f(same)f(naming)f(sc)o(heme)h(for)h(successiv)o (e)i(copies)e(of)f(the)75 1962 y(same)f(con)o(text.)19 b(Also,)13 b(no)g(new)h(rank)f(table)g(is)h(needed,)g(just)g(a)f(new)h (con)o(text)g(lab)q(el)e(and)i(a)f(new)h(p)q(oin)o(ter)f(to)g(the)75 2019 y(same)g(old)g(table.)75 2217 y Ft(MPI)p 184 2217 V 18 w(NEW)p 331 2217 V 19 w(CONTEXT\(new)o(con)o(text,)k(con)o(text,)g (k)o(ey)l(,)f(index\))75 2336 y(OUT)i(new)o(con)o(text)k Fs(handle)15 b(to)d(newly)h(created)g(con)o(text)f(at)h(calling)h(pro)q (cess.)19 b(This)14 b(handle)g(should)189 2392 y(not)g(b)q(e)i(asso)q (ciated)g(with)f(an)g(ob)s(ject)g(b)q(efore)h(the)f(call.)75 2496 y Ft(IN)i(con)o(text)23 b Fs(handle)17 b(to)d(old)i(con)o(text)75 2600 y Ft(IN)h(k)o(ey)22 b Fs(in)o(teger)75 2704 y Ft(IN)17 b(index)23 b Fs(in)o(teger)p eop %%Page: 65 70 65 69 bop 75 -100 a Fq(9.2.)34 b(CONTEXT)15 b(OPERA)l(TIONS)1098 b Fs(65)166 45 y(A)18 b(new)g(con)o(text)f(is)h(created)g(for)g(eac)o (h)g(distinct)h(v)m(alue)g(of)e Fh(key)p Fs(;)h(this)h(con)o(text)e(is) h(shared)g(b)o(y)g(all)75 102 y(pro)q(cesses)13 b(that)f(made)h(the)g (call)h(with)f(this)g(k)o(ey)f(v)m(alue.)21 b(Within)13 b(eac)o(h)g(new)g(con)o(text)f(the)h(pro)q(cesses)g(are)75 158 y(rank)o(ed)j(according)g(to)g(the)g(order)g(of)f(the)h Fh(index)g Fs(v)m(alues)h(they)f(pro)o(vided;)h(in)g(case)f(of)f(ties,) i(pro)q(cesses)75 214 y(are)e(rank)o(ed)g(according)h(to)e(their)i (rank)f(in)h(the)f(old)h(con)o(text.)166 271 y(This)e(call)h(is)f(blo)q (c)o(king:)21 b(No)13 b(call)i(returns)f(un)o(til)h(all)f(pro)q(cesses) g(in)h(the)f(old)g(con)o(text)f(executed)i(the)75 328 y(call.)166 385 y(P)o(articular)g(uses)h(of)e(this)i(function)g(are:) 166 442 y(\(i\))g(Reordering)h(pro)q(cesses:)22 b(All)c(pro)q(cesses)e (pro)o(vide)h(the)f(same)g Fh(key)g Fs(v)m(alue,)h(and)g(pro)o(vide)f (their)75 498 y(index)g(in)h(the)e(new)g(order.)166 555 y(\(ii\))g(Splitting)h(a)e(con)o(text)f(in)o(to)i(sub)q(con)o(texts,)f (while)i(preserving)f(the)f(old)h(relativ)o(e)g(order)f(among)75 612 y(pro)q(cesses:)21 b(All)c(pro)q(cesses)f(pro)o(vide)g(the)g(same)f Fh(index)g Fs(v)m(alue,)i(and)f(pro)o(vide)g(a)f(k)o(ey)h(iden)o (tifying)h(their)75 668 y(new)e(sub)q(con)o(text.)75 782 y Ft(MPI)p 184 782 16 2 v 18 w(RANK\(rank,)h(con)o(text\))75 891 y(OUT)i(rank)23 b Fs(in)o(teger)75 987 y Ft(IN)17 b(con)o(text)23 b Fs(con)o(text)15 b(handle)166 1096 y(Return)h(the)f(rank)g(of)g(the)g(calling)i(pro)q(cess)e(within)i(the) e(sp)q(eci\014ed)i(con)o(text.)75 1209 y Ft(MPI)p 184 1209 V 18 w(SIZE\(size,)h(con)o(text\))75 1318 y(OUT)g(size)23 b Fs(in)o(teger)75 1414 y Ft(IN)17 b(con)o(text)23 b Fs(con)o(text)15 b(handle)166 1523 y(Return)h(the)f(n)o(um)o(b)q(er)h (of)e(pro)q(cesses)i(that)e(b)q(elong)j(to)d(the)h(sp)q(eci\014ed)j (con)o(text.)75 1648 y Fj(9.2.1)55 b(Usage)19 b(note)75 1735 y Fs(Use)e(of)g(con)o(texts)f(for)h(libraries:)25 b(Eac)o(h)17 b(library)h(ma)o(y)e(pro)o(vide)i(an)f(initialization)j (routine)e(that)e(is)i(to)75 1791 y(b)q(e)e(called)h(b)o(y)e(all)h(pro) q(cesses,)f(and)h(that)e(generate)h(a)g(con)o(text)f(for)h(the)g(use)h (of)f(that)f(library)l(.)166 1848 y(Use)h(of)g(con)o(texts)g(for)f (functional)j(decomp)q(osition:)k(A)15 b(harness)g(program,)f(running)i (in)g(the)g(con-)75 1905 y(text)e Fh(ALL)g Fs(generates)f(a)h(sub)q (con)o(text)h(for)e(eac)o(h)i(mo)q(dule)g(and)g(then)f(starts)f(the)i (submo)q(dule)g(within)h(the)75 1961 y(corresp)q(onding)g(con)o(text.) 166 2018 y(Use)i(of)f(con)o(texts)g(for)g(collectiv)o(e)j(comm)o (unication:)26 b(A)18 b(con)o(text)f(is)h(created)g(for)f(eac)o(h)h (group)f(of)75 2075 y(pro)q(cesses)f(where)f(collectiv)o(e)i(comm)o (unication)f(is)g(to)e(o)q(ccur.)166 2132 y(Use)k(of)g(con)o(texts)f (for)h(con)o(text-switc)o(hing)g(among)g(sev)o(eral)g(parallel)i (executions:)26 b(A)18 b(pream)o(ble)75 2188 y(co)q(de)d(is)g(used)g (to)f(generate)g(a)g(di\013eren)o(t)g(con)o(text)g(for)g(eac)o(h)g (execution;)i(this)e(pream)o(ble)h(co)q(de)g(needs)h(to)75 2245 y(use)g(a)e(m)o(utual)i(exclusion)h(proto)q(col)e(to)f(mak)o(e)h (sure)g(eac)o(h)h(thread)f(claims)h(the)f(righ)o(t)g(con)o(text.)166 2378 y Fl(Discussion:)33 b Fk(If)12 b(pro)q(cess)j(handles)e(are)h (made)e(explicit)g(in)h(MPI,)f(then)i(an)f(additional)e(function)h (needed)75 2427 y(is)g Fl(MPI)p 214 2427 15 2 v 17 w(PR)o(OCESS\(pro)q (cess,)g(con)o(text,)h(rank\))p Fk(,)e(whic)o(h)h(returns)i(a)e(handle) g(to)f(the)i(pro)q(cess)h(iden)o(ti\014ed)e(b)o(y)75 2477 y(the)i Fg(rank)g Fk(and)f Fg(context)g Fk(parameters.)166 2534 y(A)19 b(p)q(ossible)h(addition)e(is)i(a)f(function)g(of)g(the)h (form)e Fl(MPI)p 1136 2534 V 17 w(CREA)l(TE)p 1350 2534 V 19 w(CONTEXT\(new)o(con)o(text,)75 2591 y(list)p 144 2591 V 15 w(of)p 198 2591 V 17 w(pro)q(cess)p 368 2591 V 16 w(handles\))f Fk(whic)o(h)j(creates)i(a)e(new)g(con)o(text)h(out)f (of)f(an)h(explicit)f(list)h(of)f(mem)o(b)q(ers)g(\(and)75 2647 y(rank)d(them)f(in)h(their)g(order)h(of)e(o)q(ccurrence)k(in)d (the)g(list\).)24 b(This,)16 b(coupled)g(with)g(a)g(mec)o(hanism)e(for) h(requiring)75 2704 y(the)h(spa)o(wning)e(of)h(new)g(pro)q(cesses)j(to) d(the)h(computation,)d(will)h(allo)o(w)f(to)i(create)i(a)e(new)g(all)f (inclusiv)o(e)h(con)o(text)p eop %%Page: 66 71 66 70 bop 75 -100 a Fs(66)844 b Fq(CHAPTER)15 b(9.)35 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(I)75 45 y Fk(that)h(includes)g(the)h (additional)d(pro)q(cesses.)33 b(Ho)o(w)o(ev)o(er,)18 b(I)g(opp)q(ose)h(the)f(idea)g(of)f(requiring)h(dynamic)e(pro)q(cess)75 102 y(creation)g(as)f(part)g(of)g(MPI.)g(Man)o(y)g(implem)o(en)o(ters)f (w)o(an)o(t)h(to)g(run)h(MPI)f(in)g(an)g(en)o(vironmen)o(t)f(where)i (pro)q(cesses)75 158 y(are)e(statically)f(allo)q(cated)h(at)f (load-time.)p eop %%Page: 67 72 67 71 bop 75 363 a Fn(Chapter)34 b(10)75 577 y Fu(Con)m(texts)40 b({)g(Prop)s(osal)h(VI)s(I)617 806 y Fs(Lyndon)16 b(J)g(Clark)o(e)f(&)g (Rik)i(J)e(Little\014eld)75 986 y Fm(10.1)70 b(In)n(tro)r(duction)75 1100 y Fs(This)15 b(c)o(hapter)e(is)i(similar)g(in)g(basic)g (principles)i(to)c(Prop)q(osal)h(I)g(and)h(includes)h(all)f(of)f(the)g (functionalit)o(y)75 1157 y(of)22 b(that)g(prop)q(osal)h(as)f(a)g (subset)g(|)h(it)g(extends)g(in)g(sev)o(eral)g(w)o(a)o(ys)e(and)i (di\013ers)g(in)g(some)f(details.)75 1213 y(Certain)d(features)g(of)f (other,)h(no)o(w)f(defunct,)j(prop)q(osals)e(discussed)h(in)g(the)f (con)o(text)f(sub)q(committee)75 1270 y(are)d(included.)22 b(In)16 b(particular,)g(this)f(c)o(hapter)g(prop)q(oses)h(that:)131 1409 y(1.)22 b(Con)o(texts)11 b(and)i(groups)g(are)f(not)g(iden)o (tical.)21 b(A)13 b(con)o(text)f(is)i(alw)o(a)o(ys)e(asso)q(ciated)h (with)g(one)g(group,)189 1465 y(but)k(a)h(group)f(ma)o(y)g(ha)o(v)o(e)g (sev)o(eral)g(con)o(texts.)27 b(Prop)q(erties)18 b(of)f(groups)g(are)g (inherited)i(b)o(y)f(all)g(of)189 1521 y(the)d(asso)q(ciated)g(con)o (texts,)g(for)f(example)i(pro)q(cess)g(rank.)131 1641 y(2.)22 b(Con)o(text)14 b(and)h(group)g(descriptors)g(can)g(b)q(e)h (explicitly)i(transferred)c(to)h(pro)q(cesses)g(that)g(are)f(not)189 1698 y(mem)o(b)q(ers)h(of)g(the)g(con)o(text)g(or)f(group.)131 1818 y(3.)22 b(In)16 b(p)q(oin)o(t-to-p)q(oin)o(t)h(messages,)f(pro)q (cesses)g(can)g(b)q(e)h(iden)o(ti\014ed)h(in)f(an)o(y)f(of)f(three)i(w) o(a)o(ys:)j(b)o(y)c(pro-)189 1874 y(cess,)c(b)o(y)g(rank)g(in)h(a)f (shared)h(con)o(text,)e(or)h(b)o(y)g(ranks)g(in)h(separate)f(sender)h (and)f(receiv)o(er)h(con)o(texts.)131 1994 y(4.)22 b(A)15 b(\\cac)o(he")f(facilit)o(y)j(is)e(pro)o(vided)h(that)e(allo)o(ws)h(mo) q(dules)i(to)d(attac)o(h)g(arbitrary)g(information)i(to)189 2050 y(b)q(oth)f(con)o(texts)g(and)g(groups.)166 2189 y(These)j(extensions)h(are)f(somewhat)f(indep)q(enden)o(t)j(of)e(eac)o (h)g(other.)28 b(The)18 b(\014rst)g(re\015ects)g(the)g(ob-)75 2245 y(serv)m(ation)g(that)f(m)o(ultiple)i(mo)q(dules)g(often)e(op)q (erate)h(within)g(eac)o(h)g(pro)q(cess)g(group,)f(so)h(that)f(con)o (text)75 2302 y(formation)g(should)h(b)q(e)g(ligh)o(ter)g(w)o(eigh)o(t) f(than)h(group)f(formation.)26 b(The)17 b(second)h(and)g(third)g (together)75 2358 y(pro)o(vide)f(expressiv)o(e)g(supp)q(ort)f(for)g (comm)o(unication)h(b)q(et)o(w)o(een)g(mo)q(dules)g(within)h (di\013eren)o(t)e(groups)g(of)75 2415 y(pro)q(cesses.)27 b(The)17 b(fourth)g(allo)o(ws)g(mo)q(dules)i(to)d(b)q(e)i(signi\014can) o(tly)h(faster)e(in)h(common)f(cases,)g(without)75 2471 y(complicating)g(their)e(in)o(terface)h(to)e(the)i(application.)166 2534 y(Muc)o(h)f(of)f(this)i(prop)q(osal)f(m)o(ust)g(b)q(e)g(view)o(ed) h(as)f(recommendations)g(to)f(other)h(sub)q(committees)g(of)75 2591 y Fp(mpi)p Fs(,)g(primarily)h(the)f(p)q(oin)o(t-to-p)q(oin)o(t)h (comm)o(unication)g(sub)q(committee)g(and)f(the)g(collectiv)o(e)i(comm) o(u-)75 2647 y(nications)d(sub)q(committee.)20 b(Concrete)13 b(syn)o(tax)f(is)h(giv)o(en)h(in)f(the)h(st)o(yle)f(of)f(the)h(ANSI)h (C)f(host)f(language,)75 2704 y(only)k(for)e(purp)q(oses)i(of)f (discussion.)952 2828 y(67)p eop %%Page: 68 73 68 72 bop 75 -100 a Fs(68)769 b Fq(CHAPTER)15 b(10.)35 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(VI)q(I)75 45 y Fm(10.2)70 b(Pro)r(cesses)75 147 y Fs(This)20 b(prop)q(osal)g(views)f(pro)q (cesses)h(in)g(the)g(familiar)g(w)o(a)o(y)l(,)f(as)g(one)g(thinks)h(of) f(pro)q(cesses)h(in)g(Unix)g(or)75 203 y(NX)15 b(for)g(example.)20 b(Eac)o(h)15 b(pro)q(cess)h(is)f(a)g(distinct)i(space)e(of)g (instructions)h(and)f(data.)k(Eac)o(h)c(pro)q(cess)g(is)75 259 y(allo)o(w)o(ed)f(to)f(comp)q(ose)h(m)o(ultiple)h(concurren)o(t)f (threads)f(and)h Fp(mpi)g Fs(do)q(es)g(not)f(distinguish)j(suc)o(h)e (threads.)75 380 y Fj(Pro)r(cess)k(Iden)n(ti\014er)75 466 y Fs(Eac)o(h)13 b(pro)q(cess)g(is)h(iden)o(ti\014ed)h(b)o(y)e(a)g (pro)q(cess-lo)q(cal)i Fi(pr)n(o)n(c)n(ess)e(hand)r(le)p Fs(,)g(whic)o(h)h(is)g(a)f(reference)h(to)e(a)h Fi(pr)n(o)n(c)n(ess)75 523 y(descriptor)g Fs(of)f(unde\014ned)i(size)g(and)e(opaque)h (structure.)19 b(In)13 b(a)f(static)g(pro)q(cess)h(mo)q(del)g(pro)q (cess)g(handles)75 579 y(can)i(b)q(e)h(obtained)f(b)o(y)g(mapping)g (from)f(a)h(group)g(\(or)f(con)o(text\))g(and)h(rank.)k(In)d(a)e (future)h(extension)h(for)75 636 y(dynamic)g(pro)q(cesses,)f(handles)i (ma)o(y)d(b)q(e)i(returned)g(b)o(y)f(pro)q(cess)g(creation)h (functions.)166 692 y Fp(mpi)f Fs(pro)o(vides)h(a)f(pro)q(cedure)h (whic)o(h)g(returns)f(a)g(handle)h(for)f(the)g(calling)i(pro)q(cess.)75 781 y Fh(process)23 b(=)h(mpi_my_process\(\))75 902 y Fj(Pro)r(cess)18 b(Creation)g(&)h(Destruction)75 988 y Fs(This)d(prop)q(osal)f(mak)o(es)g(no)g(statemen)o(ts)f(regarding)h (creation)h(and)f(destruction)h(of)f(pro)q(cesses.)166 1044 y Fp(mpi)c Fs(pro)o(vides)h(facilities)i(for)d(descriptor)h (transmission)f(allo)o(wing)i(the)e(user)h(to)e(explicitly)15 b(transfer)75 1101 y(a)g(pro)q(cess)g(decriptor)h(from)e(one)i(pro)q (cess)f(to)g(another.)k(These)d(facilities)h(are)e(describ)q(ed)i(b)q (elo)o(w.)75 1243 y Fm(10.3)70 b(Pro)r(cess)23 b(Groups)75 1345 y Fs(This)f(prop)q(osal)f(views)h(a)f(pro)q(cess)h(group)f(as)f (an)i(ordered)f(collection)i(of)e(\(references)g(to\))g(distinct)75 1401 y(pro)q(cesses,)c(the)g(mem)o(b)q(ership)h(and)e(ordering)h(of)g (whic)o(h)g(do)q(es)g(not)f(c)o(hange)h(o)o(v)o(er)f(the)g(lifetime)j (of)d(the)75 1458 y(group.)39 b(The)22 b(canonical)i(represen)o(tation) d(of)h(a)f(group)h(is)g(a)f(one-to-one)h(map)g(from)f(the)h(in)o (tegers)75 1514 y(\(0)p Fr(;)8 b Fs(1)p Fr(;)g(:)g(:)f(:)t(;)h(N)14 b Fo(\000)c Fs(1\))15 b(to)f(handles)j(of)e(the)g Fr(N)20 b Fs(pro)q(cesses)15 b(comp)q(osing)h(the)f(group.)166 1571 y(There)f(ma)o(y)f(b)q(e)h(structure)g(asso)q(ciated)g(with)g(a)f (pro)q(cess)h(group)f(de\014ned)i(b)o(y)f(a)f(pro)q(cess)h(top)q(ology) l(.)75 1627 y(This)i(prop)q(osal)f(mak)o(es)g(no)g(further)g(statemen)o (ts)f(regarding)h(suc)o(h)h(structures.)75 1748 y Fj(Group)j(Iden)n (ti\014er)75 1834 y Fs(Eac)o(h)g(group)g(is)g(iden)o(ti\014ed)i(b)o(y)e (a)g(pro)q(cess-lo)q(cal)h Fi(gr)n(oup)h(hand)r(le)p Fs(,)e(whic)o(h)h(is)g(a)f(reference)g(to)g(a)f Fi(gr)n(oup)75 1890 y(descriptor)e Fs(of)e(unde\014ned)j(size)g(and)e(opaque)g (structure.)166 1947 y(The)20 b(initialization)j(of)d Fp(mpi)g Fs(mak)o(es)g(eac)o(h)g(pro)q(cess)h(a)e(mem)o(b)q(er)i(of)e (the)i(\\initial")g(group.)35 b Fp(mpi)75 2003 y Fs(pro)o(vides)16 b(a)f(pro)q(cedure)h(that)e(returns)h(a)g(handle)i(to)d(this)i(group.) 75 2092 y Fh(group)23 b(=)h(mpi_initial_group\(\))166 2182 y Fp(mpi)11 b Fs(pro)o(vides)h(facilities)i(for)d(descriptor)h (transmission)f(allo)o(wing)i(the)e(user)h(to)e(explicitly)15 b(transfer)75 2238 y(a)g(group)g(descriptor)g(from)g(one)g(pro)q(cess)h (to)e(another.)75 2359 y Fj(Group)19 b(Creation)f(and)h(Deletion)75 2445 y Fp(mpi)e Fs(pro)o(vides)h(facilities)h(whic)o(h)g(allo)o(w)e (users)g(to)g(dynamically)i(create)e(and)h(delete)g(pro)q(cess)g (groups.)75 2501 y(The)d(pro)q(cedures)h(describ)q(ed)i(here)d (generate)g(groups)g(whic)o(h)h(are)f(static)g(in)h(mem)o(b)q(ership.) 166 2558 y Fp(mpi)h Fs(pro)o(vides)h(a)g(pro)q(cedure)g(whic)o(h)g (allo)o(ws)g(users)g(to)f(create)g(one)h(or)f(more)g(groups)g(whic)o(h) h(are)75 2614 y(subsets)d(of)g(existing)h(groups.)75 2704 y Fh(groupb)23 b(=)h(mpi_group_partition\(grou)o(pa,)d(key\))p eop %%Page: 69 74 69 73 bop 75 -100 a Fq(10.3.)34 b(PR)o(OCESS)16 b(GR)o(OUPS)1205 b Fs(69)75 45 y(This)20 b(pro)q(cedure)g(creates)e(one)i(or)e(more)h (new)g(groups)g Fh(groupb)f Fs(whic)o(h)i(are)f(distinct)h(subsets)f (of)g(an)75 102 y(existing)d(group)f Fh(groupa)f Fs(according)h(to)g (the)g(supplied)i(v)m(alues)f(of)f Fh(key)p Fs(.)k(This)d(pro)q(cedure) g(is)f(called)i(b)o(y)75 158 y(and)e(sync)o(hronises)h(all)h(mem)o(b)q (ers)e(of)g Fh(groupa)p Fs(.)166 217 y Fp(mpi)i Fs(pro)o(vides)h(a)g (pro)q(cedure)g(whic)o(h)h(allo)o(ws)e(users)h(to)f(create)g(a)h(group) f(b)o(y)g(p)q(erm)o(utation)h(of)f(an)75 273 y(existing)f(group.)75 377 y Fh(groupb)23 b(=)h(mpi_group_permutation\(gr)o(oupa,)d(rank\))75 479 y Fs(This)14 b(pro)q(cedure)h(creates)e(one)h(new)g(group)g(with)g (the)f(same)h(mem)o(b)q(ership)h(as)e Fh(groupa)g Fs(with)h(a)f(p)q (erm)o(u-)75 536 y(tation)j(of)g(pro)q(cess)g(ranking,)g(and)h(returns) f(the)g(created)g(group)g(descriptor)h(in)g Fh(groupb)p Fs(.)k(It)c(is)f(called)75 592 y(b)o(y)f(and)h(sync)o(hronises)g(all)g (mem)o(b)q(ers)f(of)g Fh(groupa)p Fs(.)166 651 y Fp(mpi)g Fs(pro)o(vides)g(a)f(pro)q(cedure)i(whic)o(h)g(allo)o(ws)f(users)f(to)h (create)f(a)h(group)f(b)o(y)h(explicit)i(de\014nition)f(of)75 707 y(its)f(mem)o(b)q(ership)i(as)e(a)g(list)h(of)e(pro)q(cess)i (handles.)75 812 y Fh(group)23 b(=)h(mpi_group_definition\(list)o (ofproces)o(s\))75 914 y Fs(This)11 b(pro)q(cedure)g(creates)g(one)f (new)h(group)f Fh(group)g Fs(with)h(mem)o(b)q(ership)h(and)e(ordering)h (describ)q(ed)h(b)o(y)f(the)75 970 y(pro)q(cess)k(handle)h(list)g Fh(listofprocess)p Fs(.)i(It)d(is)h(called)g(b)o(y)f(and)g(sync)o (hronises)h(all)g(pro)q(cesses)f(iden)o(ti\014ed)75 1027 y(in)h Fh(listofprocess)p Fs(.)166 1085 y Fp(mpi)f Fs(pro)o(vides)h(a)f (pro)q(cedure)h(whic)o(h)g(allo)o(ws)f(users)g(to)g(delete)h(user)g (created)f(groups.)75 1190 y Fh(mpi_group_deletion\(group\))75 1292 y Fs(This)d(pro)q(cedure)g(deletes)g(an)f(existing)i(group)e Fh(group)p Fs(.)17 b(It)12 b(is)f(called)i(b)o(y)e(and)h(sync)o (hronises)g(all)g(mem)o(b)q(ers)75 1348 y(of)j Fh(group)p Fs(.)166 1407 y Fp(mpi)h Fs(ma)o(y)f(pro)o(vide)i(additional)g(pro)q (cedures)g(whic)o(h)g(allo)o(w)g(users)f(to)f(construct)h(pro)q(cess)g (groups)75 1463 y(with)g(a)e(pro)q(cess)i(group)f(top)q(ology)l(.)75 1597 y Fj(Group)k(A)n(ttributes)75 1687 y Fp(mpi)e Fs(pro)o(vides)g(a)g (pro)q(cedure)h(whic)o(h)g(accepts)f(a)g(v)m(alid)h(group)f(handle)h (and)g(returns)e(the)i(rank)e(of)h(the)75 1743 y(calling)g(pro)q(cess)e (within)i(the)e(iden)o(ti\014ed)i(group.)75 1848 y Fh(rank)23 b(=)h(mpi_group_rank\(group\))166 1950 y Fp(mpi)16 b Fs(pro)o(vides)g(a)f(pro)q(cedure)h(whic)o(h)h(accepts)f(a)f(v)m(alid)i (group)f(handle)h(and)e(returns)h(the)g(n)o(um)o(b)q(er)75 2006 y(of)f(mem)o(b)q(ers,)g(or)f Fi(size)p Fs(,)g(of)h(the)g(iden)o (ti\014ed)i(group.)75 2111 y Fh(size)23 b(=)h(mpi_group_size\(group\)) 166 2213 y Fp(mpi)11 b Fs(pro)o(vides)h(a)f(pro)q(cedure)i(whic)o(h)f (accepts)g(a)f(v)m(alid)i(group)e(handle)i(and)e(pro)q(cess)h(order)f (n)o(um)o(b)q(er,)75 2269 y(or)16 b Fi(r)n(ank)p Fs(,)g(and)h(returns)f (the)h(v)m(alid)h(pro)q(cess)e(handle)i(to)e(whic)o(h)h(the)g(supplied) i(rank)d(maps)g(within)i(the)75 2326 y(iden)o(ti\014ed)f(group.)75 2430 y Fh(process)23 b(=)h(mpi_group_process\(group)o(,)d(rank\))166 2532 y Fp(mpi)g Fs(ma)o(y)g(pro)o(vide)g(additional)i(pro)q(cedures)f (whic)o(h)g(allo)o(w)f(users)h(to)e(determine)i(the)g(pro)q(cess)75 2589 y(group)15 b(top)q(ology)g(attributes.)166 2647 y Fp(mpi)d Fs(pro)o(vides)g(a)g(group)g(descriptor)g(cac)o(he)h (facilit)o(y)g(whic)o(h)f(allo)o(ws)h(the)f(user)g(to)f(attac)o(h)g (attributes)75 2704 y(to)k(group)f(descriptors.)p eop %%Page: 70 75 70 74 bop 75 -100 a Fs(70)769 b Fq(CHAPTER)15 b(10.)35 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(VI)q(I)75 45 y Fm(10.4)70 b(Comm)n(unication)20 b(Con)n(texts)75 147 y Fs(This)e(prop)q(osal)g (views)g(a)f(comm)o(unication)h(con)o(text)f(as)h(the)f(com)o(bination) h(of)f(a)h(pro)q(cess)g(group)f(and)75 203 y(a)g(protection)h(mec)o (hanism)g(that)f(a)o(v)o(oids)g(collision)j(b)q(et)o(w)o(een)d (messages)g(sen)o(t)g(to)g(di\013eren)o(t)h(con)o(texts.)75 259 y(The)13 b(con)o(text)f(inherits)i(pro)q(cess)f(ranking)g(from)f (its)h(asso)q(ciated)g(group,)f(referred)h(to)f(as)h(a)f Fi(fr)n(ame)p Fs(.)19 b(Eac)o(h)75 316 y(pro)q(cess)c(group)g(ma)o(y)g (b)q(e)h(used)g(as)e(a)h(frame)g(for)f(m)o(ultiple)j(con)o(texts.)75 435 y Ft(Con)o(text)g(Iden)o(ti\014er)75 521 y Fs(Eac)o(h)c(con)o(text) f(is)h(iden)o(ti\014ed)i(b)o(y)d(a)h(pro)q(cess-lo)q(cal)h Fi(c)n(ontext)f(hand)r(le)p Fs(,)g(whic)o(h)h(is)f(a)g(reference)g(to)f (a)g Fi(c)n(ontext)75 577 y(descriptor)k Fs(of)e(unde\014ned)j(size)g (and)e(opaque)g(structure.)166 634 y(The)21 b(creation)g(of)f(a)g(pro)q (cess)h(group)g(allo)q(cates)g(a)g Fi(b)n(ase)f(c)n(ontext)h Fs(whic)o(h)g(inherits)h(the)f(created)75 690 y(group)15 b(as)f(a)h(frame)f(and)h(can)g(b)q(e)g(though)o(t)g(of)f(as)g(an)h (attribute)g(of)f(the)h(created)g(group.)20 b Fp(mpi)14 b Fs(pro)o(vides)75 746 y(a)j(pro)q(cedure)h(whic)o(h)f(accepts)h(a)e (v)m(alid)j(group)e(handle)h(and)f(returns)g(a)g(handle)h(to)e(the)h (base)h(con)o(text)75 803 y(within)e(the)g(iden)o(ti\014ed)h(group.)75 891 y Fh(context)23 b(=)h(mpi_base_context\(group\))166 978 y Fp(mpi)11 b Fs(pro)o(vides)h(facilities)i(for)d(descriptor)h (transmission)f(allo)o(wing)i(the)e(user)h(to)e(explicitly)15 b(transfer)75 1035 y(a)g(con)o(text)f(descriptor)i(from)f(one)g(pro)q (cess)g(to)g(another.)75 1153 y Ft(Con)o(text)i(Creation)h(and)g (Deletion)75 1239 y Fp(mpi)d Fs(pro)o(vides)g(facilities)i(whic)o(h)e (allo)o(ws)g(user)g(to)f(dynamically)j(create)d(and)h(delete)h(con)o (texts)e(in)i(addi-)75 1296 y(tion)g(to)g(the)g(base)g(con)o(text)f (asso)q(ciated)i(with)f(a)g(pro)q(cess)g(group.)22 b(Con)o(texts)15 b(created)h(in)h(this)g(fashion)75 1352 y(can)e(b)q(e)h(though)o(t)f (of)f(as)h(copies)h(of)f(the)g(base)h(con)o(text)e(of)h(the)g(pro)q (cess)h(group.)166 1409 y Fp(mpi)c Fs(pro)o(vides)h(a)f(pro)q(cedure)h (whic)o(h)g(allo)o(ws)g(users)f(to)g(create)g(con)o(texts.)18 b(This)13 b(pro)q(cedure)g(accepts)75 1465 y(the)h(handle)h(of)e(a)h (group)f(of)h(whic)o(h)g(the)g(calling)i(pro)q(cess)e(is)g(a)g(mem)o(b) q(er,)g(and)f(returns)h(a)g(handle)h(to)e(the)75 1522 y(new)i(con)o(text.)75 1609 y Fh(context)23 b(=)h (mpi_context_creation\(gr)o(oup\).)75 1697 y Fs(This)16 b(pro)q(cedure)g(m)o(ust)e(b)q(e)i(called)h(lo)q(osely)f(sync)o (hronously)g(b)o(y)f(all)h(mem)o(b)q(ers)f(of)g Fh(group)p Fs(.)k(The)c(pro)q(ce-)75 1753 y(dure)j(ma)o(y)f(not)g(actually)i(sync) o(hronize)g(the)e(mem)o(b)q(er)h(pro)q(cesses)g(|)g(it)g(is)g (suggested)g(that)f(this)h(is)g(a)75 1810 y(ligh)o(t)o(w)o(eigh)o(t)d (pro)q(cedure)h(that)e(can)h(b)q(e)h(implemen)o(ted)g(so)f(as)f(to)h (not)f(require)i(in)o(terpro)q(cess)f(comm)o(uni-)75 1866 y(cation.)166 1923 y Fp(mpi)22 b Fs(pro)o(vides)g(a)g(pro)q (cedure)h(whic)o(h)g(allo)o(ws)f(users)g(to)f(delete)i(user)f(created)g (con)o(texts.)40 b(The)75 1979 y(pro)q(cedure)16 b(accepts)f(a)f(con)o (text)g(handle)i(that)e(w)o(as)g(created)h(b)o(y)g(the)g(calling)h(pro) q(cess)f(and)g(deletes)h(the)75 2036 y(iden)o(ti\014ed)h(con)o(text.)75 2123 y Fh(mpi_context_deletion\(conte)o(xt\))75 2211 y Fs(This)f(pro)q(cedure)g(has)f(the)g(same)g(sync)o(hronization)h(b)q (eha)o(vior)g(as)f(con)o(text)f(creation.)75 2330 y Ft(Con)o(text)j(A)o (ttributes)75 2415 y Fp(mpi)j Fs(pro)o(vides)g(a)f(pro)q(cedure)i(whic) o(h)f(allo)o(ws)g(users)g(to)f(determine)i(the)e(pro)q(cess)h(group)g (that)f(is)h(the)75 2472 y(frame)15 b(of)f(a)h(con)o(text.)75 2560 y Fh(group)23 b(=)h(mpi_context_frame\(context)o(\))166 2647 y Fp(mpi)14 b Fs(pro)o(vides)g(a)f(group)h(descriptor)g(cac)o(he)g (facilit)o(y)h(whic)o(h)f(allo)o(ws)g(user)g(to)f(attac)o(h)g (attributes)h(to)75 2704 y(group)h(descriptors.)p eop %%Page: 71 76 71 75 bop 75 -100 a Fq(10.5.)34 b(DESCRIPTOR)16 b(F)-5 b(A)o(CILITIES)1049 b Fs(71)75 45 y Fm(10.5)70 b(Descriptor)22 b(F)-6 b(aciliti)o(es)75 147 y Fs(This)16 b(section)g(describ)q(es)g (the)g(descriptor)f(transmission)h(and)f(user)h(cac)o(he)f(facilities.) 75 268 y Fj(T)-5 b(ransmission)18 b(F)-5 b(acilit)n(y)75 354 y Fp(mpi)10 b Fs(pro)o(vides)h(a)f(mec)o(hanism)h(whereb)o(y)f(the) g(user)h(can)f(transmit)g(a)g(v)m(alid)h(descriptor)g(in)g(a)f(message) g(suc)o(h)75 411 y(that)16 b(the)g(receiv)o(ed)i(descriptor)f(handle)g (is)g(v)m(alid.)26 b(This)17 b(can)f(b)q(e)h(in)o(tegrated)f(with)h (the)g(capabilit)o(y)h(to)75 467 y(transmit)12 b(t)o(yp)q(ed)h (messages,)f(and)g(it)h(is)g(suggested)f(that)f(a)h(notional)h(data)f (t)o(yp)q(e)g(should)i(b)q(e)f(in)o(tro)q(duced)75 523 y(for)j(this)h(purp)q(ose,)h(e.g.)24 b Fh(MPI)p 590 523 15 2 v 16 w(DSCR)p 702 523 V 17 w(TYPE)p Fs(.)16 b(There)h(are)f(other) g(reasonable)h(approac)o(hes)g(to)f(pro)o(viding)75 580 y(this)g(facilit)o(y)l(.)166 636 y(The)f(descriptor)h(is)g(translated)f (as)g(necessary)h(to)e(b)q(e)i(meaningful)h(on)e(the)h(destination)g (pro)q(cess,)75 693 y(storage)h(is)i(allo)q(cated)g(for)f(it,)h(and)f (a)g(handle)i(to)d(that)h(storage)f(is)i(returned.)30 b(Decorations)17 b(are)h(not)75 749 y(transmitted.)166 806 y(Handles)23 b(are)e(guaran)o(teed)g(to)g(b)q(e)h(unique)i(within)e (eac)o(h)g(pro)q(cess)g(|)g(if)g(pro)q(cesses)g(A)g(and)g(B)75 862 y(indep)q(enden)o(tly)j(send)d(to)g(pro)q(cess)g(C)f(a)h (descriptor)g(for)g(an)f(ob)s(ject)h(D,)f(then)h(pro)q(cess)g(C)g(will) h(get)75 919 y(t)o(w)o(o)17 b(copies)h(of)g(the)g(same)g(handle.)29 b(As)18 b(with)g(all)h(transfers)e(of)h(descriptors,)g(the)g(receiving) i(pro)q(cess)75 975 y(is)h(resp)q(onsible)h(for)d(releasing)i(the)f (descriptor)h(and)f(its)g(handle)h(when)g(it)f(is)h(no)f(longer)g (needed)h(or)75 1032 y(b)q(ecomes)16 b(stale.)k(MPI)15 b(pro)o(vides)h(a)f(pro)q(cedure)h(whic)o(h)g(frees)f(a)g(descriptor.) 75 1125 y Fh(mpi_free_dscr\(handle\))166 1219 y Fs(A)i(descriptor)g (registry)g(service)g(whic)o(h)h(allo)o(ws)f(descriptors)g(to)g(b)q(e)g (iden)o(ti\014ed)i(b)o(y)e(name)g(w)o(ould)75 1276 y(b)q(e)f(a)f (useful)i(additional)f(feature.)k(This)c(service)h(can)e(b)q(e)h (implemen)o(ted)h(at)e(the)h(user)f(lev)o(el)i(using)f(the)75 1332 y(p)q(oin)o(t-to-p)q(oin)o(t)g(c)o(hapter)f(of)g Fp(mpi)g Fs(and)g(the)g(descriptor)h(transmission)f(facilities.)22 b(These)16 b(services)g(can)75 1389 y(b)q(e)g(deferred)g(in)g(this)f (session)h(of)f Fp(mpi)p Fs(.)75 1510 y Fj(Cac)n(he)k(F)-5 b(acilit)n(y)75 1596 y Fp(mpi)22 b Fs(pro)o(vides)g(a)g(\\cac)o(he")f (facilit)o(y)i(that)e(allo)o(ws)i(an)e(application)j(to)d(attac)o(h)g (arbitrary)g(pieces)i(of)75 1653 y(information,)16 b(called)h Fi(de)n(c)n(or)n(ations)p Fs(,)e(to)g(con)o(text)g(and)h(group)g (descriptors.)22 b(Decorations)15 b(are)h(lo)q(cal)h(to)75 1709 y(the)g(pro)q(cess)g(and)g(are)f(not)g(included)k(if)d(the)g (descriptor)g(is)g(sen)o(t)g(to)f(another)g(pro)q(cess.)25 b(This)17 b(facilit)o(y)75 1765 y(is)f(in)o(tended)h(to)d(supp)q(ort)i (optimizations)g(suc)o(h)g(as)f(sa)o(ving)g(p)q(ersisten)o(t)h(comm)o (unication)g(handles)h(and)75 1822 y(recording)f(top)q(ology-based)f (decisions)i(b)o(y)e(adaptiv)o(e)h(algorithms.)166 1878 y Fp(mpi)f Fs(pro)o(vides)h(the)f(follo)o(wing)h(services)g(related)g (to)e(cac)o(heing:)75 1972 y Ft(Generate)k(k)o(ey:)j Fs(Generate)15 b(cac)o(he)g(k)o(ey)l(.)189 2085 y Fh(keyval)23 b(=)g(mpi_GetDecorationKey\(\))75 2197 y Ft(Store)17 b(decoration:)24 b Fs(Store)15 b(decoration)g(in)h(cac)o(he)g(b)o(y)f (k)o(ey)l(.)189 2310 y Fh(mpi_SetDecoration\(handl)o(e,)21 b(keyval,)i(decoration_val,)189 2366 y(decoration_destructor_r)o (outine\))75 2479 y Ft(Retriev)o(e)17 b(decoration:)24 b Fs(Retriev)o(e)16 b(decoration)f(from)f(cac)o(he)i(b)o(y)f(k)o(ey)l (.)189 2591 y Fh(mpi_TestDecoration\(hand)o(le,keyva)o(l,decor)o (ation\))75 2704 y Ft(Delete)j(decoration:)24 b Fs(Delete)16 b(decoration)f(from)f(cac)o(he)i(b)o(y)f(k)o(ey)l(.)p eop %%Page: 72 77 72 76 bop 75 -100 a Fs(72)769 b Fq(CHAPTER)15 b(10.)35 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(VI)q(I)189 45 y Fh (mpi_DeleteDecoration\(ha)o(ndle,key)o(val\))166 151 y Fs(Eac)o(h)j(decoration)g(consists)h(of)f(a)g(p)q(oin)o(ter)h(or)e(a) h(v)m(alue)i(of)e(the)g(same)g(size)h(as)f(a)g(p)q(oin)o(ter,)i(and)75 208 y(w)o(ould)16 b(t)o(ypically)i(b)q(e)e(a)g(reference)h(to)e(a)h (larger)f(blo)q(c)o(k)i(of)f(storage)e(managed)i(b)o(y)g(the)g(mo)q (dule.)23 b(As)16 b(an)75 264 y(example,)f(a)g(global)g(op)q(eration)g (using)h(cac)o(heing)g(to)e(b)q(e)h(more)g(e\016cien)o(t)g(for)g(aall)g (con)o(texts)f(of)h(a)f(group)75 320 y(after)g(the)i(\014rst)f(call)h (migh)o(t)f(lo)q(ok)g(lik)o(e)i(this:)140 413 y Fg(static)k(int)g (gop_key_assigned)e(=)i(0;)h(/*)f(0)h(only)e(on)i(first)f(entry)f(*/)i (static)75 462 y(MPI_KEY_TYPE)d(gop_key;)h(/*)i(key)f(for)g(this)g (module's)f(stuff)h(*/)140 562 y(efficient_global_op)d(\(context,)i (...\))43 b(int)21 b(context_handle;)e({)i(struct)75 612 y(gop_stuff_type)e(*gop_stuff;)g(/*)j(whatever)e(we)h(need)g(*/)h (int)f(group_handle)e(=)75 662 y(mpi_context_frame)o(\(cont)o(ext_h)o (andle)o(\);)184 761 y(if)i(\(!gop_key_assigned\))d(/*)k(get)f(a)g(key) h(on)f(first)g(call)g(ever)g(*/)g({)75 811 y(gop_key_assigned)d(=)k(1;) f(if)h(\()f(!)h(\(gop_key)e(=)i(MPI_GetDecoratio)o(nKey\()o(\)\))d(\))i ({)75 861 y(MPI_abort)f(\("Insufficient)f(keys)i(available"\);)e(})j(}) f(if)h(\(MPI_TestDecorat)o(ion)75 911 y(\(group_handle,gop)o(_key,)o (&gop_)o(stuff)o(\)\))d({)i(/*)h(This)f(module)f(has)h(executed)g(in)75 960 y(this)g(group)g(before.)42 b(We)21 b(will)g(use)g(the)h(cached)e (information)g(*/)h(})h(else)f({)g(/*)75 1010 y(This)g(is)g(a)h(group)f (that)g(we)g(have)g(not)g(yet)g(cached)g(anything)f(in.)43 b(We)21 b(will)g(now)75 1060 y(do)g(so.)43 b(*/)22 b(gop_stuff)e(=)h (/*)h(malloc)e(a)i(gop_stuff_type)d(*/)228 1160 y(/*)i(...)g(fill)g(in) g(*gop_stuff)f(with)h(whatever)f(we)i(want)f(...)g(*/)228 1259 y(MPI_SetDecorati)o(on)e(\(group_handle,)g(gop_key,)h(gop_stuff,) 75 1309 y(gop_stuff_destruc)o(tor\);)e(})k(/*)f(...)g(use)h(contents)e (of)h(*gop_stuff)f(to)h(do)h(the)75 1359 y(global)f(op)g(...)g(*/)g(}) 162 1459 y(gop_stuff_destruct)o(or)e(\(gop_stuff\))g(/*)j(called)e(by)i (MPI)f(on)g(group)g(delete)75 1508 y(*/)g(struct)g(gop_stuff_type)e (*gop_stuff;)g({)j(/*)f(...)g(free)g(storage)g(pointed)f(to)75 1558 y(by)h(gop_stuff)f(...)h(*/)h(})166 1657 y Fs(The)d(cac)o(he)h (facilit)o(y)g(could)h(also)e(b)q(e)h(pro)o(vided)g(for)f(pro)q(cess)g (descriptors,)i(but)e(it)h(is)f(less)h(clear)75 1713 y(ho)o(w)13 b(suc)o(h)g(pro)o(vision)h(w)o(ould)g(b)q(e)g(useful.)20 b(It)14 b(is)g(suggested)f(that)f(the)i(cac)o(he)f(store,)g(retriev)o (e)g(and)h(delete)75 1770 y(decoration)h(pro)q(cedures)h(should)h(fail) f(when)f(applied)i(to)e(a)g(pro)q(cess)g(descriptor)h(handle.)75 1912 y Fm(10.6)70 b(P)n(oin)n(t-to-P)n(oin)n(t)22 b(Comm)n(unication)75 2013 y Fs(This)13 b(prop)q(osal)f(recommends)h(three)f(forms)g(for)f Fp(mpi)i Fs(p)q(oin)o(t-to-p)q(oin)o(t)g(message)e(addressing)i(and)g (selec-)75 2070 y(tion:)22 b(n)o(ull)c(con)o(text;)d(closed)i(con)o (text;)f(op)q(en)h(con)o(text.)22 b(It)16 b(is)h(further)f(recommended) h(that)e(messages)75 2126 y(comm)o(unicated)k(in)f(eac)o(h)g(form)g (are)f(distinguished)k(suc)o(h)d(that)g(a)f Fh(Send)h Fs(op)q(eration)g(of)f(form)h(X)g(can-)75 2183 y(not)e(matc)o(h)g(with) h(a)f Fh(Receive)f Fs(op)q(eration)i(of)f(form)g(Y,)g(requiring)h(that) f(form)g(is)h(em)o(b)q(edded)g(in)o(to)g(the)75 2239 y(message)e(en)o(v)o(elop)q(e.)166 2296 y(The)21 b(three)f(forms)g(are) g(describ)q(ed,)j(follo)o(w)o(ed)e(b)o(y)g(considerations)g(of)f (uniform)h(in)o(tegration)f(of)75 2352 y(these)15 b(forms)g(in)h(the)f (p)q(oin)o(t-to-p)q(oin)o(t)h(comm)o(unication)g(c)o(hapter)f(of)g Fp(mpi)p Fs(.)75 2473 y Fj(Null)j(Con)n(text)g(F)-5 b(orm)75 2559 y Fs(The)17 b Fi(nul)r(l)g(c)n(ontext)j Fs(form)c(con)o(tains)g (no)h(message)f(con)o(text.)23 b(Message)16 b(selection)h(and)g (addressing)g(are)75 2615 y(expressed)f(b)o(y)75 2704 y Fh(\(process,)23 b(tag\))p eop %%Page: 73 78 73 77 bop 75 -100 a Fq(10.6.)34 b(POINT-TO-POINT)17 b(COMMUNICA)l(TION) 796 b Fs(73)75 45 y(where:)20 b Fh(process)14 b Fs(is)i(a)f(pro)q(cess) g(handle;)h Fh(tag)f Fs(is)h(a)f(message)g(tag.)166 102 y Fh(Send)d Fs(supplies)i(the)f Fh(process)e Fs(of)i(the)f(receiv)o (er.)20 b Fh(Receive)11 b Fs(supplies)k(the)e Fh(process)e Fs(of)h(the)h(sender.)166 159 y Fh(Receive)j Fs(can)h(wildcard)h(on)f Fh(process)g Fs(b)o(y)g(supplying)h(the)g(wildcard)g(descriptor)f (handle)i(v)m(alue)75 215 y Fh(MPI)p 150 215 15 2 v 17 w(WILDCARD)p Fs(.)e(In)j(this)g(case)f(the)g(receiv)o(er)h(ma)o(y)e(ha) o(v)o(e)h(obtained)h(the)f(pro)q(cess)h(descriptor)f(of)g(the)75 272 y(sender,)e(and)g(the)g(n)o(ull)i(descriptor)e(handle)h Fh(MPI)p 930 272 V 17 w(NULL)e Fs(is)h(returned)g(in)h(the)f(relev)m (an)o(t)g(p)q(oin)o(t-to-p)q(oin)o(t)75 328 y(enquiry)f(pro)q(cedure.) 75 453 y Fj(Closed)j(Con)n(text)f(F)-5 b(orm)75 540 y Fs(The)20 b Fi(close)n(d)g(c)n(ontext)k Fs(form)c(p)q(ermits)h(comm)o (unication)f(b)q(et)o(w)o(een)h(mem)o(b)q(ers)f(of)g(the)g(same)g(con)o (text.)75 596 y(Message)15 b(selection)h(and)g(addressing)f(are)g (expressed)h(b)o(y)75 692 y Fh(\(context,)23 b(rank,)g(tag\))75 788 y Fs(where:)d Fh(context)13 b Fs(is)h(a)g(con)o(text)g(handle;)h Fh(rank)f Fs(is)h(a)f(pro)q(cess)g(rank)g(in)h(the)f(frame)g(of)g Fh(context)p Fs(;)f Fh(tag)g Fs(is)75 845 y(a)i(message)g(tag.)k(The)c (calling)i(pro)q(cess)e(m)o(ust)g(b)q(e)h(a)f(mem)o(b)q(er)g(of)g(the)g (frame)g(of)g Fh(context)p Fs(.)166 902 y Fh(Send)h Fs(supplies)i(the)f Fh(context)f Fs(of)g(the)g(receiv)o(er)h(\(and)g(sender\),)g(and)f(the) h Fh(rank)f Fs(of)g(the)h(receiv)o(er.)75 958 y Fh(Receive)12 b Fs(supplies)j(the)e Fh(context)g Fs(of)f(the)h(sender)h(\(and)f (receiv)o(er\),)h(and)f(the)g(rank)g(of)g(the)g(sender.)20 b(The)75 1015 y Fh(\(context,)j(rank\))13 b Fs(pair)h(in)h Fh(Send)e Fs(\()p Fh(Receive)p Fs(\))f(is)i(su\016cien)o(t)h(to)e (determine)i(the)f(pro)q(cess)g(iden)o(ti\014er)h(of)75 1071 y(the)g(receiv)o(er)h(\(sender\).)166 1128 y Fh(Receive)c Fs(cannot)h(wildcard)h(on)f Fh(context)p Fs(.)18 b Fh(Receive)12 b Fs(can)h(wildcard)h(on)f Fh(rank)f Fs(b)o(y)h(supplying)i(the)75 1184 y(wildcard)i(in)o(teger)e Fh(MPI)p 485 1184 V 17 w(DONTCARE)p Fs(.)f(This)i(prop)q(osal)f(mak)o(es)g(no)h(statemen)o(t)e (ab)q(out)h(the)h(pro)o(vision)g(for)75 1241 y(wildcard)g(on)g Fh(tag)p Fs(.)75 1366 y Fj(Op)r(en)i(Con)n(text)h(F)-5 b(orm)75 1452 y Fs(The)23 b Fi(op)n(en)g(c)n(ontext)j Fs(form)c(p)q(ermits)i(comm)o(unication)f(b)q(et)o(w)o(een)g(mem)o(b)q (ers)g(of)f(an)o(y)h(t)o(w)o(o)e(con)o(texts.)75 1509 y(Message)15 b(selection)h(and)g(addressing)f(are)g(expressed)h(b)o(y) 75 1605 y Fh(\(lcontext,)22 b(rcontext,)h(rank,)g(tag\))75 1701 y Fs(where:)d Fh(lcontext)13 b Fs(is)i(a)f(con)o(text)f(handle;)j Fh(rcontext)d Fs(is)i(a)f(con)o(text)g(handle;)h Fh(rank)f Fs(is)h(a)f(pro)q(cess)g(rank)75 1757 y(in)j(the)e(frame)h(of)f Fh(rcontext)p Fs(;)f Fh(tag)i Fs(is)g(a)f(message)h(tag.)k(The)c (calling)i(pro)q(cess)e(m)o(ust)f(b)q(e)h(a)f(mem)o(b)q(er)h(of)75 1814 y(the)f(frame)g(of)g Fh(lcontext)f Fs(and)h(need)h(not)f(b)q(e)h (a)f(mem)o(b)q(er)g(of)g(the)g(frame)g(of)g Fh(rcontext)p Fs(.)166 1871 y Fh(Send)k Fs(supplies)j(the)e(con)o(text)g(of)f(the)h (sender)h(in)g Fh(lcontext)p Fs(,)e(the)h(con)o(text)g(of)f(the)h (receiv)o(er)h(in)75 1927 y Fh(rcontext)p Fs(,)d(and)h(the)f Fh(rank)g Fs(of)h(the)f(receiv)o(er)h(in)h(the)f(frame)f(of)g Fh(rcontext)p Fs(.)29 b Fh(Receive)17 b Fs(supplies)k(the)75 1984 y(con)o(text)16 b(of)g(the)h(receiv)o(er)h(in)f Fh(lcontext)p Fs(,)f(the)h(con)o(text)f(of)g(the)h(sender)h(in)f Fh(rcontext)p Fs(,)f(and)h(the)g Fh(rank)75 2040 y Fs(of)e(the)g (sender)g(in)h(the)f(frame)g(of)g Fh(rcontext)p Fs(.)j(The)d Fh(\(rcontext,)23 b(rank\))14 b Fs(pair)i(in)g Fh(Send)e Fs(\()p Fh(Receive)p Fs(\))f(is)75 2097 y(su\016cien)o(t)j(to)e (determine)j(the)e(pro)q(cess)g(iden)o(ti\014er)i(of)e(the)g(receiv)o (er)h(\(sender\).)166 2154 y Fh(Receive)c Fs(cannot)h(wildcard)h(on)f Fh(lcontext)p Fs(.)19 b Fh(Receive)12 b Fs(can)h(wildcard)h(on)f Fh(rcontext)f Fs(b)o(y)i(supply-)75 2210 y(ing)g(the)g(wildcard)h (descriptor)f(handle)h(v)m(alue)g Fh(MPI)p 956 2210 V 16 w(WILDCARD)p Fs(,)e(in)h(whic)o(h)g(case)g(it)g(m)o(ust)f(also)h (wildcard)75 2266 y(on)i Fh(rank)g Fs(since)i(the)f(pro)q(cess)g (descriptor)g(of)f(the)g(sender)h(cannot)g(b)q(e)g(determined.)25 b(In)17 b(this)g(case)g(the)75 2323 y(receiv)o(er)d(ma)o(y)e(not)h(ha)o (v)o(e)g(obtained)g(the)h(con)o(text)e(descriptor)i(of)e(the)i(sender,) f(and)h(the)f(n)o(ull)i(descriptor)75 2379 y(handle)g Fh(MPI)p 295 2379 V 17 w(NULL)e Fs(is)h(returned)g(in)h(the)e(relev)m (an)o(t)i(p)q(oin)o(t-to-p)q(oin)o(t)f(enquiry)h(pro)q(cedure.)20 b Fh(Receive)13 b Fs(can)75 2436 y(wildcard)j(on)g Fh(rank)e Fs(b)o(y)h(supplying)i(the)f(wildard)g(in)o(tger)f(v)m(alue)i Fh(MPI)p 1268 2436 V 16 w(DONTCARE)p Fs(.)75 2560 y Fj(Uniform)g(In)n (tegration)75 2647 y Fs(The)e(three)h(forms)e(of)h(addressing)h(and)f (selection)i(describ)q(ed)g(ha)o(v)o(e)e(di\013eren)o(t)h(syn)o(tactic) f(framew)o(orks.)75 2704 y(W)l(e)g(can)h(consider)g(in)o(tegrating)g (these)f(forms)g(in)o(to)g(the)h(p)q(oin)o(t-to-p)q(oin)o(t)g(c)o (hapter)f(of)g Fp(mpi)g Fs(b)o(y)g(de\014ning)p eop %%Page: 74 79 74 78 bop 75 -100 a Fs(74)769 b Fq(CHAPTER)15 b(10.)35 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(VI)q(I)75 45 y Fs(a)c(further)g (orthogonal)g(axis)g(\(as)g(in)h(the)g(m)o(ulti-lev)o(el)h(prop)q(osal) f(of)f(Gropp)g(&)h(Lusk\))f(whic)o(h)i(deals)f(with)75 102 y(form.)19 b(This)14 b(is)f(at)g(the)h(exp)q(ense)g(of)f(m)o (ultiplying)j(the)d(n)o(um)o(b)q(er)h(of)f Fh(Send)g Fs(and)g Fh(Receive)g Fs(pro)q(cedures)h(b)o(y)75 158 y(a)e(factor)f(of)g(three,)i(and)f(some)f(further)h(but)g(trivial)h(w)o (ork)e(with)i(details)g(of)e(the)h(curren)o(t)g(p)q(oin)o(t-to-p)q(oin) o(t)75 214 y(c)o(hapter)j(whic)o(h)h(uniformly)g(assumes)f(a)g(single)i (addressing)f(and)f(selection)h(form.)166 275 y(There)k(are)g(v)m (arious)h(approac)o(hes)f(to)f(uni\014cation)j(of)e(the)g(syn)o(tactic) g(framew)o(orks)f(whic)o(h)i(ma)o(y)75 331 y(simplify)15 b(in)o(tegration.)k(Tw)o(o)12 b(options)h(are)f(no)o(w)g(describ)q(ed,) j(eac)o(h)e(based)g(on)g(reten)o(tion)g(and)g(extension)75 388 y(of)i(the)g(framew)o(ork)f(of)h(the)g(closed)h(and)f(op)q(en)h (con)o(texts)f(forms.)166 448 y(The)d(framew)o(ork)f(of)h(the)g(op)q (en)h(con)o(text)f(form)f(could)i(b)q(e)g(adopted)f(and)h(extended.)20 b(The)12 b(n)o(ull)i(con-)75 504 y(text)g(form)h(is)g(expressed)h(as)e Fh(\(MPI)p 680 504 15 2 v 17 w(NULL,)23 b(MPI)p 912 504 V 17 w(NULL,)g(process,)g(tag\))p Fs(,)14 b(whic)o(h)i(is)f(a)g(little) h(clumsy)l(.)75 561 y(The)10 b(closed)h(con)o(text)f(form)f(is)i (expressed)g(as)f Fh(\(MPI)p 941 561 V 16 w(NULL,)23 b(context,)g(rank,)g(tag\))p Fs(,)11 b(whic)o(h)g(is)f(marginally)75 617 y(incon)o(v)o(enien)o(t.)21 b(The)15 b(op)q(en)g(con)o(text)f(form) g(is)h(expressed)h(as)e Fh(\(lcontext,)22 b(rcontext,)h(rank,)g(tag)p Fs(\),)75 674 y(whic)o(h)16 b(is)g(of)f(course)g(natural.)166 734 y(The)j(framew)o(ork)e(of)h(the)g(closed)i(con)o(text)e(form)f (could)j(b)q(e)f(adopted)f(and)h(extended.)28 b(The)18 b(n)o(ull)75 790 y(con)o(text)11 b(form)g(is)h(expressed)h(as)e Fh(\(MPI)p 731 790 V 17 w(NULL,)23 b(process,)g(tag\))p Fs(,)11 b(whic)o(h)i(is)f(marginally)h(incon)o(v)o(enien)o(t,)75 847 y(and)18 b(requires)g(that)f(descriptor)h(handles)h(are)e (expressed)i(as)e(in)o(tgers.)27 b(The)18 b(closed)g(con)o(text)g(form) e(is)75 903 y(expressed)j(as)e Fh(\(context,)23 b(rank,)g(tag\))p Fs(,)18 b(whic)o(h)h(is)f(of)g(course)g(natural.)28 b(Expression)19 b(of)e(the)h(op)q(en)75 960 y(con)o(text)i(form)h(requires)h(a)e (little)j(more)d(w)o(ork.)37 b(W)l(e)21 b(can)g(use)g(the)g Fh(context)f Fs(\014eld)j(as)d(\\shorthand)75 1016 y(notation")14 b(for)f(the)i Fh(\(lcontext,)22 b(rcontext\))13 b Fs(pair)i(at)e(the)i (exp)q(ense)g(of)f(in)o(tro)q(ducing)h(some)f(tric)o(k)o(ery)l(.)75 1073 y(W)l(e)i(de\014ne)h(a)f(\\duplet)h(descriptor")f(whic)o(h)h(is)f (formally)g(comp)q(osed)h(of)e(t)o(w)o(o)g(references)i(to)e(con)o (texts,)75 1129 y(and)h(pro)o(vide)g(a)f(pro)q(cedure)i(whic)o(h)g (constructs)e(suc)o(h)h(a)f(descriptor)h(giv)o(en)h(t)o(w)o(o)d(con)o (text)h(descriptors.)75 1186 y(Both)g Fh(Send)g Fs(and)h Fh(Receive)e Fs(accept)i(a)f(duplet)i(descriptor)f(in)g Fh(context)p Fs(,)e(are)h(able)h(to)f(distinguish)j(the)75 1242 y(duplet)f(descriptor)f(from)f(a)g(singlet)i(descriptor,)f(and)g (treat)e(the)i(duplet)h(as)e(shorthand)h(notation.)21 b(It)75 1298 y(is)16 b(conjectured)g(that)e(using)i(this)g(framew)o (ork)d(is)j(the)f(b)q(est)h(c)o(hoice)g(for)e Fp(mpi)p Fs(.)75 1463 y Fm(10.7)70 b(Collecti)o(v)n(e)20 b(Comm)n(unication)75 1572 y Fs(Symmetric)14 b(collectiv)o(e)h(comm)o(unication)e(op)q (erations)h(are)f(complian)o(t)g(with)h(the)f(closed)h(con)o(text)f (form)75 1628 y(describ)q(ed)j(ab)q(o)o(v)o(e.)j(This)14 b(prop)q(osal)h(recommends)f(that)f(suc)o(h)h(op)q(erations)g(accept)h (a)e(con)o(text)h(descrip-)75 1685 y(tor)g(whic)o(h)i(iden)o(ti\014es)h (the)f(con)o(text)e(\(th)o(us)h(frame\))f(in)i(whic)o(h)g(they)g(are)e (to)h(op)q(erate.)166 1745 y Fp(mpi)k Fs(do)q(es)g(plan)h(to)f(describ) q(e)i(symmetric)e(collectiv)o(e)i(comm)o(unication)f(op)q(erations.)32 b(It)19 b(is)g(not)75 1802 y(p)q(ossible)c(to)e(determine)i(whether)f (this)g(prop)q(osal)g(is)g(su\016cien)o(t)g(to)g(allo)o(w)f(implemen)o (tation)i(of)f(the)f(col-)75 1858 y(lectiv)o(e)i(comm)o(unication)f(c)o (hapter)g(of)f Fp(mpi)g Fs(in)i(terms)e(of)g(the)h(p)q(oin)o(t-to-p)q (oin)o(t)g(c)o(hapter)f(of)g Fp(mpi)h Fs(without)75 1914 y(loss)h(of)g(generalit)o(y)l(,)h(since)g(the)f(collectiv)o(e)i(op)q (erations)f(are)f(not)f(y)o(et)h(de\014ned.)166 1975 y(Asymmetric)j(collectiv)o(e)h(comm)o(unication)f(op)q(erations,)g(esp) q(ecially)i(those)d(in)i(whic)o(h)f(sender\(s\))75 2031 y(and)e(receiv)o(er\(s\))g(are)g(distinct)h(pro)q(cesses,)f(are)f (complian)o(t)i(with)f(the)g(op)q(en)h(con)o(text)e(form)g(describ)q (ed)75 2088 y(ab)q(o)o(v)o(e.)k(This)14 b(prop)q(osal)g(recommends)g (that)f(suc)o(h)h(op)q(erations)f(accept)h(a)f(pair)h(of)g(con)o(text)f (descriptors)75 2144 y(\(a)f(duplet)h(descriptor\))g(whic)o(h)g(iden)o (tify)h(the)e(con)o(texts)g(\(th)o(us)g(frames\))g(in)h(whic)o(h)g (they)g(are)f(to)g(op)q(erate.)166 2204 y Fp(mpi)k Fs(do)q(es)h(not)f (plan)h(to)f(describ)q(e)i(asymmetric)e(collectiv)o(e)i(comm)o (unication)f(op)q(erations.)23 b(Suc)o(h)75 2261 y(op)q(erations)14 b(are)f(expressiv)o(e)h(when)g(writing)g(programs)e(b)q(ey)o(ond)j(the) e(SPMD)g(mo)q(del,)i(whic)o(h)f(are)f(com-)75 2317 y(p)q(osed)g(of)e (comm)o(unicativ)o(e)i(functionally)h(distinct)f(pro)q(cess)g(groups.) 18 b(These)13 b(services)f(can)h(b)q(e)f(deferred)75 2374 y(in)k(this)g(session)f(of)g Fh(mpi)p Fs(.)75 2538 y Fm(10.8)70 b(Conclusion)75 2647 y Fs(This)21 b(c)o(hapter)g(presen)o (ted)g(a)f(prop)q(osal)h(for)f(comm)o(unication)i(con)o(texts)e(and)g (pro)q(cess)h(groups)g(with)75 2704 y Fp(mpi)p Fs(.)e(In)c(the)f(prop)q (osal)h(pro)q(cess)f(groups)g(are)f(created)h(dynamically)i(and)f(are)e (static)h(in)h(mem)o(b)q(ership.)p eop %%Page: 75 80 75 79 bop 75 -100 a Fq(10.8.)34 b(CONCLUSION)1319 b Fs(75)75 45 y(Asso)q(ciated)15 b(with)g(eac)o(h)g(pro)q(cess)g(group)f(are)g (one)h(or)f(more)g(comm)o(unication)h(con)o(texts)f(whic)o(h)i(inherit) 75 102 y(pro)q(cess)f(ranking.)166 158 y(The)k(recommendations)g(for)f (p)q(oin)o(t-to-p)q(oin)o(t)h(comm)o(unication)h(are)e(p)q(o)o(w)o (erful.)31 b(The)19 b(prop)q(osal)75 214 y(pro)o(vides)e(pro)q(cess)f (addressed)h(comm)o(unication)g(whic)o(h)g(o)q(ccurs)f(within)h(an)f (extended)i(con)o(text.)k(The)75 271 y(prop)q(osal)f(also)g(con)o (tains)f(closed)i(con)o(text)e(comm)o(unication)i(addressed)f(in)g (terms)f(of)h(con)o(text)f(and)75 327 y(rank)15 b(whic)o(h)h(protects)f (messages)g(b)q(elonging)i(to)d(one)i(con)o(text)f(from)f(those)h(b)q (elonging)i(to)e(other)g(con-)75 384 y(texts.)k(The)13 b(prop)q(osal)g(also)g(con)o(tains)h(op)q(en)f(con)o(text)g(comm)o (unications)h(adressed)f(in)h(terms)f(of)f(sender)75 440 y(con)o(text,)k(receiv)o(er)i(con)o(text,)e(and)h(pro)q(cess)g (rank)g(whic)o(h)g(pro)o(vides)h(expressiv)o(e)f(p)q(o)o(w)o(er)g(for)f (in)o(tercom-)75 497 y(m)o(unication)g(b)q(et)o(w)o(een)g(mo)q(dules)g (within)g(di\013eren)o(t)g(groups.)166 553 y(The)h(prop)q(osal)f(is)h (extensible)h(to)e(a)g(n)o(um)o(b)q(er)h(of)f(features)g(whic)o(h)h (migh)o(t)g(b)q(e)g(included)i(in)e(future)75 610 y(sessions)12 b(of)g Fp(MPI)p Fs(,)f(for)g(example:)19 b(dynamic)13 b(pro)q(cesses;)g(dynamic)g(groups;)f(m)o(ultiple)i(group)d(collectiv)o (e)75 666 y(comm)o(unications.)p eop %%Page: 76 81 76 80 bop 75 357 a Fn(Chapter)34 b(11)75 564 y Fu(Con)m(texts)40 b({)g(Prop)s(osal)h(I)s(I)s(I)800 787 y Fs(A.)15 b(Skjellum)i Fi(et)f(al.)75 931 y Fm(11.1)70 b(In)n(tro)r(duction)75 1033 y Fs(This)21 b(c)o(hapter)f(tak)o(es)f(a)h(sligh)o(tly)h (di\013eren)o(t)g(approac)o(h)f(to)f(con)o(texts)h(and)g(groups,)h (than)f(do)q(es)g(Pro-)75 1089 y(p)q(osal)14 b(VI)q(I.)g(It)f(is)g(of)g (roughly)h(equal)g(conceptual)g(\\p)q(o)o(w)o(er")e(as)h(Prop)q(osal)g (VI)q(I,)h(with)f(some)g(di\013erences.)75 1145 y(As)i(appropriate,)f (this)h(c)o(hapter)f(b)q(orro)o(ws)g(directly)i(from)d(Prop)q(osal)i (VI)q(I,)g(b)o(y)g(Clark)o(e)f(and)h(Little\014eld.)131 1252 y(1.)22 b(Con)o(texts)12 b(are)h(supp)q(orted)i(to)e(discriminate) i(b)q(et)o(w)o(een)f(messages)f(in)h(the)g(system.)19 b(A)13 b(con)o(text)g(is)189 1309 y(a)f(conceptual)j(extension)f(of)e (the)i(tag)e(space)h(in)o(to)g(a)g(system-de\014ned)i(part)d(\(not)h (wildcardable\),)189 1365 y(and)i(a)g(totally)g(user-de\014ned)i(part)e (\(the)g(traditional)g(32-bit)h(tag\).)131 1460 y(2.)22 b(A)15 b(con)o(text)f(is)i(a)e(lo)o(w)o(er-lev)o(el)j(concept)e(than)g (a)g(group,)f(so)h(that)f(con)o(texts)h(not)f(asso)q(ciated)i(with)189 1516 y(groups)d(are)g(p)q(ermitted.)20 b(This)14 b(p)q(ermits)g(the)f (user)h(to)e(dev)o(elop)j(co)q(des)f(that)e(build)k(on)d(the)g(serv)o (er)189 1573 y(mo)q(del,)i(or)g(whic)o(h)h(build)h(up)f(groups)f (dynamically)i(\(not)d(otherwise)i(supp)q(orted)f(b)o(y)h(MPI1\).)131 1667 y(3.)22 b(Groups)15 b(are)g(used)i(to)e(describ)q(e)i(co)q(op)q (erativ)o(e)f(comm)o(unication)h(in)f(the)g(system.)21 b(Groups)15 b(ha)o(v)o(e)189 1723 y(one)f(or)g(more)h(con)o(text)f(of)g (comm)o(unication)h(asso)q(ciated)g(with)g(them.)20 b(When)15 b(created,)f(a)g(group)189 1780 y(is)h(giv)o(en)h(a)f(con)o(text)g(of)f (comm)o(unication.)131 1874 y(4.)22 b(Con)o(text)14 b(and)h(group)g (descriptors)g(can)g(b)q(e)h(explicitly)i(transferred)c(to)h(pro)q (cesses)g(that)g(are)f(not)189 1931 y(mem)o(b)q(ers)h(of)g(the)g(con)o (text)g(or)f(group.)131 2025 y(5.)22 b(In)h(p)q(oin)o(t-to-p)q(oin)o(t) g(messages,)g(pro)q(cesses)g(can)g(b)q(e)g(iden)o(ti\014ed)h(in)f (either)h(of)e(t)o(w)o(o)f(w)o(a)o(ys:)33 b(b)o(y)189 2081 y(opaque)15 b(pro)q(cess)g(iden)o(ti\014er,)h(or)f(b)o(y)g(rank)f (in)i(a)f(group;)f(in)i(either)g(case,)f(comm)o(unication)g(scop)q(e) 189 2138 y(is)g(within)i(a)e(giv)o(en)g(con)o(text.)131 2232 y(6.)22 b(The)17 b(cac)o(he)h(facilit)o(y)l(,)g(allo)o(wing)g (groups)f(to)g(add)g(additional)i(information)e(\(describ)q(ed)i(in)f (Pro-)189 2289 y(p)q(osal)i(VI)q(I\))g(is)g(em)o(braced)g(b)o(y)g(this) g(Prop)q(osal,)g(with)g(reserv)m(ations)g(as)f(noted.)33 b(The)20 b(p)q(ossible)189 2345 y(need)c(to)e(omit)h(this)g(cac)o (heing)h(feature)f(from)f(MPI1)h(should)h(not)f(in)o(v)m(alidate)i(the) e(remainder)g(of)189 2401 y(Prop)q(osal)g(VI)q(I)h(from)f(further)g (consideration)h(\(sev)o(erabilit)o(y\).)75 2545 y Fm(11.2)70 b(Pro)r(cesses)75 2647 y Fs(This)20 b(Prop)q(osal)e(views)i(pro)q (cesses)f(in)h(the)f(familiar)h(w)o(a)o(y)l(,)f(as)f(one)h(thinks)h(of) e(pro)q(cesses)i(in)g(Unix)f(or)75 2704 y(NX)c(for)g(example.)20 b(Eac)o(h)15 b(pro)q(cess)h(is)f(a)g(distinct)i(space)e(of)g (instructions)h(and)f(data.)k(Eac)o(h)c(pro)q(cess)g(is)952 2828 y(76)p eop %%Page: 77 82 77 81 bop 75 -100 a Fq(11.3.)34 b(PR)o(OCESS)16 b(GR)o(OUPS)1205 b Fs(77)75 45 y(allo)o(w)o(ed)12 b(to)f(comp)q(ose)h(m)o(ultiple)h (concurren)o(t)f(threads)f(and)h Fp(MPI)g Fs(do)q(es)g(not)f (distinguish)j(suc)o(h)e(threads.)75 102 y Fp(MPI)i Fs(shall)i(b)q(e)f (thread-a)o(w)o(are,)e(but)i(not)f(thread)g(supp)q(orting,)h(so)f(w)o (e)g(mak)o(e)g(ev)o(ery)g(attempt)g(to)f(mak)o(e)75 158 y(thread)i(safe)g(programs)f(p)q(ossible)j(in)f(de\014ning)h(what)d (follo)o(ws.)75 280 y Fj(Pro)r(cess)k(Iden)n(ti\014er)75 366 y Fs(Eac)o(h)f(pro)q(cess)g(is)g(iden)o(ti\014ed)i(b)o(y)e(an)f (opaque)h(pro)q(cess)g(iden)o(ti\014er,)i(whic)o(h)e(is)h(asso)q (ciable)g(to)e(a)g Fi(pr)n(o)n(c)n(ess)75 423 y(descriptor)g Fs(of)g(unde\014ned)h(size)g(and)f(opaque)g(structure,)f(through)h Fp(MPI)g Fs(accessor)f(calls.)23 b(In)17 b(a)e(static)75 479 y(pro)q(cess)i(mo)q(del)h(pro)q(cess)g(iden)o(ti\014ers)g(can)g(b)q (e)f(obtained)h(b)o(y)f(mapping)h(from)e(a)h(group)g(and)g(rank.)25 b(In)75 536 y(a)17 b(future)h(extension)g(for)f(dynamic)i(pro)q (cesses,)f(iden)o(ti\014ers)h(ma)o(y)e(b)q(e)h(returned)g(b)o(y)g(pro)q (cess)g(creation)75 592 y(functions.)166 649 y Fp(MPI)d Fs(pro)o(vides)h(a)f(pro)q(cedure)h(that)e(returns)h(an)h(iden)o (ti\014er)g(for)f(the)g(calling)i(pro)q(cess.)170 743 y Fh(my_process)23 b(=)h(mpi_my_process\(\))75 837 y Fs(This)12 b(iden)o(ti\014er)h(can)e(b)q(e)h(con)o(v)o(erted)f(to)f(a)h (transmittable)g(form)g(b)o(y)g Fp(MPI)g Fs(con)o(v)o(erter)g (functions,)h(though)75 893 y(opaque,)j(it)g(is)h(conceptually)h(a)e(p) q(oin)o(ter.)75 1016 y Fj(Pro)r(cess)j(Creation)g(&)h(Destruction)75 1102 y Fs(This)d(prop)q(osal)f(mak)o(es)g(no)g(statemen)o(ts)f (regarding)h(creation)h(and)f(destruction)h(of)f(pro)q(cesses.)166 1158 y Fp(MPI)c Fs(pro)o(vides)h(facilities)h(for)e(iden)o(ti\014er)i (transmission)e(allo)o(wing)h(the)g(user)f(explicitly)j(to)d(transfer) 75 1215 y(a)k(pro)q(cess)g(iden)o(ti\014er)i(from)e(one)g(pro)q(cess)h (to)e(another.)20 b(These)c(facilities)h(are)e(describ)q(ed)i(b)q(elo)o (w.)k(MPI)75 1271 y(also)13 b(pro)o(vides)g(means)g(to)f(transfer)g (underlying)j(information)e(ab)q(out)g(the)f(opaque)h(pro)q(cess)h (descriptor)75 1327 y(underlying.)75 1471 y Fm(11.3)70 b(Pro)r(cess)23 b(Groups)75 1573 y Fs(This)11 b(prop)q(osal)f(views)h (a)f(pro)q(cess)h(group)f(as)g(an)g(ordered)g(collection)i(of)e (distinct)i(pro)q(cesses)e(\(via)h(pro)q(cess)75 1629 y(iden)o(ti\014ers\),)k(the)g(mem)o(b)q(ership)h(and)f(ordering)f(of)g (whic)o(h)i(do)q(es)f(not)f(c)o(hange)g(o)o(v)o(er)g(the)h(lifetime)h (of)e(the)75 1686 y(group.)39 b(The)22 b(canonical)i(represen)o(tation) d(of)h(a)f(group)h(is)g(a)f(one-to-one)h(map)g(from)f(the)h(in)o (tegers)75 1742 y(\(0)p Fr(;)8 b Fs(1)p Fr(;)g(:)g(:)f(:)t(;)h(N)14 b Fo(\000)c Fs(1\))15 b(to)f(iden)o(ti\014ers)j(of)e(the)g Fr(N)20 b Fs(pro)q(cesses)15 b(comp)q(osing)h(the)f(group.)166 1799 y(There)f(ma)o(y)f(b)q(e)h(structure)g(asso)q(ciated)g(with)g(a)f (pro)q(cess)h(group)f(de\014ned)i(b)o(y)f(a)f(pro)q(cess)h(top)q(ology) l(.)75 1855 y(This)i(prop)q(osal)f(mak)o(es)g(no)g(further)g(statemen)o (ts)f(regarding)h(suc)o(h)h(structures.)166 1912 y(There)i(ma)o(y)g(b)q (e)h(non-en)o(umerativ)o(e)f(w)o(a)o(ys)f(to)h(construct)g(and)g (manipulate)h(sp)q(ecial)h(groups,)e(or)75 1968 y(for)12 b(sp)q(ecial)i(mac)o(hine)f(arc)o(hitectures)g(\()p Fi(e.g.)p Fs(,)e(cohorts\).)18 b(This)13 b(prop)q(osal)g(mak)o(es)f(no)g(further) g(statemen)o(ts)75 2025 y(ab)q(out)h(suc)o(h)h(sp)q(ecial)h(groups,)e (other)g(than)g(the)h(desirabilit)o(y)h(of)e(a)o(v)o(oiding)h (group-name)f(en)o(umeration,)75 2081 y(when)j(p)q(ossible.)75 2203 y Fj(Group)j(Iden)n(ti\014er)75 2289 y Fs(Eac)o(h)h(group)g(is)g (iden)o(ti\014ed)j(b)o(y)d(an)g(opaque)g Fi(gr)n(oup)h(identi\014er)p Fs(,)f(whic)o(h)h(is)g(a)f(asso)q(ciable)h(to)f(a)f Fi(gr)n(oup)75 2346 y(descriptor)d Fs(of)e(unde\014ned)j(size)g(and)e(opaque)g (structure,)g(through)g Fp(MPI)g Fs(accessor)g(functions.)166 2402 y(The)i(initialization)j(of)d Fp(MPI)g Fs(mak)o(es)f(eac)o(h)h (pro)q(cess)g(a)g(mem)o(b)q(er)g(of)f(the)i(\\initial")g(group.)25 b Fp(MPI)75 2459 y Fs(pro)o(vides)16 b(a)f(pro)q(cedure)h(that)e (returns)h(an)g(iden)o(ti\014er)i(to)e(this)g(group.)170 2553 y Fh(group_ident)23 b(=)h(mpi_initial_group\(\))166 2647 y Fp(MPI)14 b Fs(pro)o(vides)h(facilities)h(for)e(descriptor)g (transmission)h(allo)o(wing)g(the)f(user)h(explicitly)i(transfer)75 2704 y(a)e(group)g(descriptor)g(from)g(one)g(pro)q(cess)h(to)e (another.)p eop %%Page: 78 83 78 82 bop 75 -100 a Fs(78)786 b Fq(CHAPTER)15 b(11.)34 b(CONTEXTS)16 b({)f(PR)o(OPOSAL)h(I)q(I)q(I)75 45 y Fj(Group)j (Creation)f(and)h(Deletion)75 131 y Fp(MPI)c Fs(pro)o(vides)h (facilities)h(whic)o(h)g(allo)o(w)e(users)g(dynamically)j(to)c(create)h (and)h(delete)g(pro)q(cess)g(groups.)75 187 y(The)f(pro)q(cedures)h (describ)q(ed)i(here)d(generate)g(groups)g(whic)o(h)h(are)f(static)g (in)h(mem)o(b)q(ership.)166 244 y Fp(mpi)k Fs(pro)o(vides)g(a)f(pro)q (cedure)i(that)e(allo)o(ws)h(users)g(to)f(create)h(one)g(or)f(more)g (groups)h(whic)o(h)g(are)75 300 y(subsets)15 b(of)g(existing)h(groups.) 123 388 y Fh(new_group)22 b(=)i(mpi_group_partition\(old_gro)o(up,)d (key\))75 476 y Fs(This)15 b(pro)q(cedure)g(creates)g(one)f(or)g(more)g (new)h(groups)f Fh(new)p 1104 476 15 2 v 17 w(group)f Fs(whic)o(h)j(are)e(distinct)h(subsets)g(of)f(an)75 533 y(existing)i(group)e Fh(old)p 446 533 V 17 w(group)g Fs(according)i(to)e(the)h(supplied)i(v)m(alues)f(of)e Fh(key)p Fs(.)20 b(This)15 b(pro)q(cedure)h(is)f(called)75 589 y(b)o(y)d(and)g(sync)o(hronises)g(all)h(mem)o(b)q(ers)f(of)f Fh(new)p 849 589 V 17 w(group)p Fs(.)18 b(No)12 b(o)o(v)o(erlapping)g (is)g(p)q(ermitted,)h(so)f(that)f(exactly)75 645 y(one)16 b Fh(new)p 234 645 V 17 w(group)f Fs(is)i(ac)o(hiev)o(ed)g(in)g(eac)o (h)f Fh(old)p 846 645 V 17 w(group)f Fs(pro)q(cess.)23 b(The)16 b(new)h(groups)f(ha)o(v)o(e)f(new)i(con)o(texts)75 702 y(of)h(comm)o(unication.)30 b(The)19 b(n)o(um)o(b)q(er)g(of)f(new)h (con)o(texts)f(dep)q(ends)i(on)e(the)h(n)o(um)o(b)q(er)f(of)g (di\013eren)o(t)h(k)o(ey)75 758 y(v)m(alues)d(asserted.)166 815 y Fp(MPI)g Fs(pro)o(vides)g(a)g(pro)q(cedure)g(whic)o(h)h(allo)o (ws)f(users)g(to)f(create)h(a)f(group)h(b)o(y)g(p)q(erm)o(utation)g(of) f(an)75 871 y(existing)h(group.)170 959 y Fh(new_group)23 b(=)h(mpi_group_permutation\(old)o(_group,)c(rank\))75 1047 y Fs(This)h(pro)q(cedure)h(creates)e(one)h(new)g(group)f(with)h (the)g(same)f(mem)o(b)q(ership)i(as)f Fh(old)p 1590 1047 V 16 w(group)f Fs(with)h(a)75 1104 y(p)q(erm)o(utation)15 b(of)g(pro)q(cess)g(ranking,)g(and)h(returns)e(the)i(created)f(group)g (descriptor)g(in)h Fh(new)p 1675 1104 V 17 w(group)p Fs(.)j(It)75 1160 y(is)h(called)h(b)o(y)e(and)h(sync)o(hronises)g(all)g (mem)o(b)q(ers)g(of)f Fh(gha)p Fs(.)31 b(The)20 b(new)g(group)f(has)g (a)g(new)h(con)o(text)e(of)75 1216 y(comm)o(unication.)166 1273 y Fp(MPI)d Fs(pro)o(vides)h(a)f(pro)q(cedure)h(that)f(allo)o(ws)g (users)h(to)e(create)h(a)g(group)h(b)o(y)f(explicit)i(de\014nition)g (of)75 1329 y(its)e(mem)o(b)q(ership)i(as)e(a)g(list)h(of)e(pro)q(cess) i(iden)o(ti\014ers.)170 1417 y Fh(new_group)23 b(=)h (mpi_group_definition\(arra)o(y_of_pr)o(ocess_i)o(ds,lengt)o(h,)75 1474 y(context_to_use\))75 1562 y Fs(This)15 b(pro)q(cedure)g(creates)f (one)h(new)g(group)f Fh(new)p 918 1562 V 17 w(group)f Fs(with)i(mem)o(b)q(ership)h(and)e(ordering)h(describ)q(ed)75 1618 y(b)o(y)20 b(the)g(pro)q(cess)h(handle)g(list)g Fh(array)p 745 1618 V 16 w(of)p 809 1618 V 17 w(process)p 994 1618 V 16 w(ids)p Fs(,)g(of)f(length)g Fh(length)p Fs(.)34 b(If)20 b Fh(context)p 1725 1618 V 17 w(to)p 1790 1618 V 16 w(use)75 1675 y Fs(is)i(sp)q(eci\014ed)i(as)e(the)g(sp)q (ecial)h(con)o(text)f Fh(MPI)p 863 1675 V 16 w(GET)p 951 1675 V 17 w(CONTEXT)p Fs(,)f(then)h(the)g(system)f(allo)q(cates)i (the)f(new)75 1731 y(con)o(text.)f(Else,)16 b(the)f(system)g(trusts)g (the)h(user)g(to)f(ha)o(v)o(e)g(allo)q(cated)i(the)e(con)o(text)g (legally)i(\(see)f(b)q(elo)o(w\).)75 1787 y(This)j(pro)q(cedure)g(m)o (ust)f(b)q(e)h(called)i(b)o(y)d(and)h(sync)o(hronises)g(all)g(pro)q (cesses)g(iden)o(ti\014ed)i(in)e(the)f(list.)31 b(A)75 1844 y(further)15 b(approac)o(h)g(to)f(new)i(group)f(de\014nition)i(is) e(as)g(follo)o(ws)170 1932 y Fh(new_group)23 b(=)h (mpi_group_def_by_leader\(l)o(eader_i)o(d,)d(in_length,)75 1988 y(in_array_of_process_ids,)g(context_to_use,)g (out_array_of_process_ids,)75 2045 y(out_length\))75 2133 y Fs(This)16 b(w)o(eak)o(er)e(form)h(requires)h(all)g(future)f (group)g(mem)o(b)q(ers)g(to)g(ha)o(v)o(e)f(iden)o(ti\014ed)k(only)d(a)g (leader)h(\(sp)q(ec-)75 2189 y(i\014ed)k(b)o(y)e Fh(leader)p 390 2189 V 17 w(id)p Fs(\).)29 b(The)19 b(leader)h(kno)o(ws)e(the)g (length)i(a)e(names)h(of)f(all)h(participan)o(ts.)31 b(This)19 b(is)g(a)75 2246 y(sync)o(hronization)d(of)f(all)h (participan)o(ts.)k(Same)c(seman)o(tics)f(for)f Fh(context)p 1353 2246 V 17 w(to)p 1418 2246 V 17 w(use)g Fs(as)h(ab)q(o)o(v)o(e.) 166 2302 y Fq(MPI)d Fs(pro)o(vides)g(a)g(w)o(a)o(y)f(formally)h(to)f (duplicate)j(a)d(group,)h(in)h(order)e(to)h(obtain)g(a)f(separate)h (con)o(text)75 2358 y(of)e(comm)o(unication.)19 b(This)11 b(can)g(b)q(e)g(ac)o(hiev)o(ed)h(b)o(y)e(using)h(other)f(op)q (erations,)i(but)e(this)h(pro)q(cedure)h(allo)o(ws)75 2415 y(optimization)k(in)g(some)f(implemen)o(tations)h(\(no)f(explicit) j(group)d(cop)o(y)l(,)f(for)h(instance\).)75 2503 y Fh(new_group)23 b(=)g(mpi_group_duplicate\(old_group)o(\))75 2591 y Fs(The)f(only)h (di\013erence)g(b)q(et)o(w)o(een)f(the)h(old)f(and)g(new)h(groups)e(is) i(that)e(there)h(is)h(a)f(new)g(con)o(text)f(of)75 2647 y(comm)o(unication.)166 2704 y Fp(MPI)15 b Fs(pro)o(vides)h(a)f(pro)q (cedure)h(whic)o(h)g(allo)o(ws)f(users)g(to)g(delete)h(user)g(created)f (groups.)p eop %%Page: 79 84 79 83 bop 75 -100 a Fq(11.4.)29 b(COMMUNICA)l(TION)16 b(CONTEXTS)940 b Fs(79)170 45 y Fh(mpi_group_deletion\(group\))75 133 y Fs(This)12 b(pro)q(cedure)g(deletes)g(an)f(existing)i(group)e Fh(group)p Fs(.)17 b(It)12 b(is)f(called)i(b)o(y)e(and)h(sync)o (hronises)g(all)g(mem)o(b)q(ers)75 189 y(of)j Fh(group)p Fs(.)166 246 y Fp(MPI)f Fs(ma)o(y)f(pro)o(vide)h(additional)i(pro)q (cedures)f(whic)o(h)f(allo)o(w)g(users)g(to)g(construct)f(pro)q(cess)h (groups)75 302 y(with)i(a)e(pro)q(cess)i(group)f(top)q(ology)l(.)75 423 y Fj(Group)k(A)n(ttributes/Accessors)75 508 y Fp(MPI)c Fs(pro)o(vides)g(a)f(pro)q(cedure)h(that)f(accepts)h(a)f(v)m(alid)i (group)f(iden)o(ti\014er)h(and)e(returns)h(the)f(rank)h(of)f(the)75 565 y(calling)j(pro)q(cess)e(within)i(the)e(iden)o(ti\014ed)i(group.) 170 653 y Fh(rank)24 b(=)f(mpi_group_rank\(group\))166 740 y Fp(MPI)13 b Fs(pro)o(vides)g(a)g(pro)q(cedure)g(that)f(accepts)h (a)g(v)m(alid)h(group)f(iden)o(ti\014er)h(and)f(returns)g(the)g(n)o(um) o(b)q(er)75 797 y(of)i(mem)o(b)q(ers,)g(or)f Fi(size)p Fs(,)g(of)h(the)g(iden)o(ti\014ed)i(group.)170 884 y Fh(size)24 b(=)f(mpi_group_size\(group\))166 972 y Fp(MPI)f Fs(pro)o(vides)g(a)g(pro)q(cedure)g(that)g(accepts)g(a)f(v)m(alid)j (group)d(iden)o(ti\014er)j Fi(r)n(ank-in-gr)n(oup)p Fs(,)f(and)75 1029 y(returns)18 b(the)g(v)m(alid)h(pro)q(cess)g(iden)o(ti\014er)g(to) e(whic)o(h)i(the)f(supplied)i(rank)e(maps)g(within)h(the)f(iden)o (ti\014ed)75 1085 y(group.)170 1173 y Fh(process_id)23 b(=)h(mpi_group_process\(group,)c(rank\))166 1260 y Fp(MPI)f Fs(ma)o(y)f(pro)o(vide)i(additional)g(pro)q(cedures)g(whic)o(h)g(allo)o (w)f(users)g(to)g(determine)h(the)f(pro)q(cess)75 1317 y(group)c(top)q(ology)g(attributes.)166 1373 y Fp(MPI)c Fs(pro)o(vides)g(a)f(group)g(descriptor)h(cac)o(he)g(facilit)o(y)h (thath)e(allo)o(ws)h(the)g(user)g(to)f(attac)o(h)f(attributes)75 1430 y(to)15 b(group)f(descriptors.)21 b(See)16 b(Prop)q(osal)f(VI)q(I) h(for)f(details.)75 1572 y Fm(11.4)70 b(Comm)n(unication)20 b(Con)n(texts)75 1673 y Fs(This)i(prop)q(osal)g(views)f(a)g(comm)o (unication)h(con)o(text)f(as)g(a)g(partition)h(of)f(the)g(tag)g(space,) h(whic)o(h)g(is)75 1730 y(a)g(protection)g(mec)o(hanism)g(that)f(a)o(v) o(oids)h(collision)i(b)q(et)o(w)o(een)f(messages)e(sen)o(t)h(b)q(et)o (w)o(een)g(pro)q(cesses.)75 1786 y(Pro)q(cess)15 b(groups)g(ha)o(v)o(e) g(one)g(or)g(more)g(con)o(texts)f(in)i Fq(MPI)p Fs(.)f(Unlik)o(e)i (Prop)q(osal)e(VI)q(I,)h(more)f(con)o(texts)f(are)75 1843 y(obtained)20 b(for)e(a)h(group)g(using)h(the)f(ab)q(o)o(v)o (e-discussed)h(group)f(creation)g(and)h(replication)h(functions.)75 1899 y(Replication)d(ma)o(y)c(only)i(b)q(e)g(formal)e(for)h(go)q(o)q(d) g(implemen)o(tations.)75 2018 y Ft(Con)o(text)i(Iden)o(ti\014er)75 2104 y Fs(Eac)o(h)e(con)o(text)g(is)h(iden)o(ti\014ed)i(b)o(y)d(an)h (opaque)f(pro)q(cess)h(iden)o(ti\014er.)22 b(It)16 b(is)g(conceptually) h(an)f(in)o(teger)f(as-)75 2160 y(signed)e(b)o(y)f(the)g(system)g(to)f (partition)i(a)f(large)g(tag)f(space)h(in)o(to)g(a)g(user-de\014ned)i (and)e(system-con)o(trolled)75 2217 y(subspaces.)34 b(This)20 b(stategy)e(pro)o(vides)i(the)g(minimal)h(lev)o(el)g(of)e(isolation)i (needed)g(to)d(build)k(large)e(li-)75 2273 y(braries,)15 b(and)h(is)f(close)h(to)f(practice.)75 2392 y Ft(Con)o(text)i(Creation) h(and)g(Deletion)75 2478 y Fp(MPI)h Fs(pro)o(vides)g(facilities)i(that) d(allo)o(w)h(user)f(dynamically)j(to)d(allo)q(cate)h(and)g(free)g(con)o (texts.)30 b(When)75 2534 y(con)o(texts)12 b(are)h(used)g(with)g (groups,)g(these)f(calls)i(are)f(not)f(needed.)21 b(F)l(or)12 b(more)g(adv)m(anced)i(users)f(\(suc)o(h)f(as)75 2591 y(building)j(y)o(our)d(o)o(wn)h(dynamic)g(groups\),)f(these)h(calls)h (will)h(b)q(e)e(used.)20 b(Ab)q(o)o(v)o(e,)12 b(where)h Fh(context)p 1725 2591 15 2 v 17 w(to)p 1790 2591 V 16 w(use)75 2647 y Fs(app)q(ears)j(as)g(an)g(argumen)o(t,)g(the)g(follo)o (wing)h(call)g(w)o(ould)g(ha)o(v)o(e)f(b)q(een)h(used)g(to)e(secure)i (suc)o(h)g(a)f(con)o(text)75 2704 y(in)g(adv)m(ance.)p eop %%Page: 80 85 80 84 bop 75 -100 a Fs(80)791 b Fq(CHAPTER)15 b(11.)29 b(CONTEXTS)16 b({)f(PR)o(OPOSAL)h(I)q(I)q(I)170 45 y Fh(mpi_context_creation\(number_o)o(f_contex)o(ts_want)o(ed,arra)o (y_of_con)o(texts,)75 102 y(number_of_contexts_provide)o(d\))75 193 y Fs(This)g(call)g(is)g(called)h(b)o(y)e(an)o(y)g(pro)q(cess,)g (with)g(no)g(sync)o(hronization)h(to)f(other)g(pro)q(cesses.)166 250 y Fp(MPI)c Fs(pro)o(vides)h(a)e(pro)q(cedure)i(that)f(allo)o(ws)g (users)g(to)g(delete)h(user-)f(created)g(con)o(texts.)18 b(The)11 b(pro)q(ce-)75 306 y(dure)k(accepts)g(a)f(con)o(text)g(iden)o (ti\014er)i(arra)o(y)l(,)d(con)o(taining)i(zero)f(or)g(more)g(con)o (texts)g(created)h(previously)75 363 y(in)h(the)f(system.)170 446 y Fh(mpi_context_deletion\(context_)o(array,le)o(ngth\))75 530 y Fs(No)f(sync)o(hronization)i(o)q(ccurs)f(here.)20 b(The)15 b(user)g(can)g(do)f(erroneous)h(things)g(b)o(y)f(freeing)i (con)o(texts)e(that)75 586 y(are)h(still)i(in)f(use.)166 643 y(F)l(or)d(general)i(applications,)h(it)e(ma)o(y)g(b)q(e)g(nice)i (to)d(ha)o(v)o(e)h(a)g(name)g(service)h(for)f(con)o(texts)f (\(necessary)75 699 y(for)i(building)i(dynamic)f(groups)f(and)h(serv)o (ers,)e(for)h(y)o(ourself)t(\).)k(Herewith:)170 783 y Fh(mpi_associate_contexts_with_n)o(ame\(stri)o(ng_name)o(,contex)o (t_array,)o(length\))75 839 y(mpi_disassociate_contexts_)o(with_na)o (me\(strin)o(g_name\))75 896 y(mpi_get_contexts_by_name\(s)o(tring_n)o (ame,max_)o(length,)o(out_len)o(gth,)75 952 y(context_array)75 1036 y Fs(As)i(with)h(con)o(text)f(generation,)i(the)f(ab)q(o)o(v)o(e)f (calls)i(assume)e(a)g(simple)i(reactiv)o(e,)g(global)f(serv)o(er,)g(or) 75 1092 y(shared)15 b(name)h(space)f(mec)o(hanism)h(\(b)q(oth)f(ac)o (hiev)o(eable)h(easily)h(in)f(practice\).)75 1233 y Fm(11.5)70 b(Descriptor)22 b(F)-6 b(aciliti)o(es)75 1335 y Fs(This)16 b(section)g(describ)q(es)g(the)g(descriptor)f(transmission)h(and)f (user)h(cac)o(he)f(facilities.)75 1455 y Fj(Con)n(v)n(ersion)k(F)-5 b(acilit)n(y)75 1541 y Fp(MPI)16 b Fs(pro)o(vides)h(a)e(mec)o(hanism)i (whereb)o(y)f(the)g(user)g(can)g(con)o(v)o(ert)g(a)f(v)m(alid)j (descriptor)e(\()p Fi(e.g.)p Fs(,)g(a)f(group)75 1597 y(descriptor\))22 b(iden\014ed)h(through)f(an)f(iden)o(ti\014er)j(\()p Fi(e.g.)p Fs(,)e(a)f(group)h(iden)o(ti\014er\))h(for)e(use)h(in)g(a)f (message)75 1653 y(suc)o(h)f(that)f(the)h(receiv)o(ed)h(descriptor)g (can)f(b)q(e)g(reconstructed)g(on)g(the)g(remote)f(end.)35 b(This)20 b(can)g(b)q(e)75 1710 y(in)o(tegrated)c(with)h(message)f (transmission)h(as)f(the)g(user)h(sees)f(\014t,)g(without)h(additional) g(complication)75 1766 y(to)e(the)g(send/receiv)o(e)h(seman)o(tics)g (of)e Fp(MPI)p Fs(.)h(An)h(example)g(follo)o(ws:)170 1850 y Fh(error)24 b(=)f(mpi_group_group_transmit\(grou)o(p,)e (group_buffer,)h(max_length,)75 1906 y(act_length\))75 1990 y Fs(If)h(the)g(bu\013er)g(is)g(not)f(long)h(enough)h(to)e(hold)h (the)g(information,)i(an)d(error)g(o)q(ccurs.)43 b(A)23 b(net)o(w)o(ork)75 2046 y(indep)q(enden)o(t)g(format)c(can)h(b)q(e)h (assumed)f(in)h(the)g Fh(group)p 1098 2046 15 2 v 16 w(buffer)p Fs(.)34 b(Cac)o(hed)21 b(\\attributes")e(are)h(not)75 2103 y(transmitted)15 b(\(see)g(b)q(elo)o(w\).)75 2223 y Fj(Cac)n(he)k(F)-5 b(acilit)n(y)75 2308 y Fp(MPI)20 b Fs(pro)o(vides)h(a)e(\\cac)o(he")h(facilit)o(y)h(that)e(allo)o(ws)i (an)f(application)h(to)f(attac)o(h)f(arbitrary)g(pieces)i(of)75 2365 y(information,)14 b(called)j Fi(attributes)p Fs(,)d(to)g(con)o (text)g(and)h(group)f(descriptors.)20 b(A)o(ttributes)15 b(are)f(lo)q(cal)i(to)e(the)75 2421 y(pro)q(cess)19 b(and)g(are)f(not)g (included)k(if)d(the)f(descriptor)h(is)h(sen)o(t)e(to)g(another)g(pro)q (cess.)31 b(This)19 b(facilit)o(y)g(is)75 2478 y(in)o(tended)i(to)f (supp)q(ort)g(optimizations)h(suc)o(h)f(as)g(sa)o(ving)f(p)q(ersisten)o (t)i(comm)o(unication)g(handles)g(and)75 2534 y(recording)16 b(top)q(ology-based)f(decisions)i(b)o(y)e(adaptiv)o(e)h(algorithms.)166 2591 y Fp(MPI)j Fs(pro)o(vides)g(the)g(follo)o(wing)h(services)g (related)f(to)f(cac)o(heing.)32 b(W)l(e)19 b(call)h(our)f(attributes)g (`at-)75 2647 y(tributes';)13 b(Prop)q(osal)f(VI)q(I)i(calls)f(them)g (\(equiv)m(alen)o(tly\))h(decorations)e(\(no)g(big)h(di\013erence,)h (except)f(nam-)75 2704 y(ing,)i(is)h(an)o(ticipated\).)p eop %%Page: 81 86 81 85 bop 75 -100 a Fq(11.6.)34 b(POINT-TO-POINT)17 b(COMMUNICA)l(TION) 796 b Fs(81)75 45 y Ft(Generate)18 b(k)o(ey:)j Fs(Generate)15 b(cac)o(he)g(k)o(ey)l(.)189 157 y Fh(keyval)23 b(=)g (mpi_get_attribute_key\(\))75 268 y Ft(Store)17 b(attribute:)24 b Fs(Store)15 b(attribute)g(in)h(cac)o(he)g(b)o(y)f(k)o(ey)l(.)189 379 y Fh(mpi_set_attribute\(handl)o(e,)21 b(keyval,)i(attribute_val,) 189 436 y(attribute_destructor_ro)o(utine\))75 547 y Ft(Retriev)o(e)17 b(attribute:)24 b Fs(Retriev)o(e)16 b(attribute)f(from)f(cac)o(he)i(b)o(y)f(k)o(ey)l(.)189 659 y Fh(mpi_Test_Attribute\(hand)o(le,keyva)o(l,attri)o(bute\))75 770 y Ft(Delete)j(attribute:)24 b Fs(Delete)16 b(attribute)f(from)f (cac)o(he)i(b)o(y)f(k)o(ey)l(.)284 882 y Fh (mpi_delete_attribute\(handle)o(,keyval)o(\))166 993 y Fs(Eac)o(h)f(attribute)g(consists)g(of)f(a)h(p)q(oin)o(ter)h(or)e(a)h (v)m(alue)h(of)f(the)g(same)g(size)h(as)e(a)h(p)q(oin)o(ter,)g(and)h(w) o(ould)75 1050 y(t)o(ypically)i(b)q(e)f(a)f(reference)h(to)f(a)g (larger)h(blo)q(c)o(k)g(of)f(storage)f(managed)h(b)o(y)h(the)f(mo)q (dule.)22 b(Our)16 b(example)75 1106 y(will)f(app)q(ear)e(in)h(a)f (later)g(draft,)g(b)q(ecause)h(w)o(e)f(ha)o(v)o(e)f(seman)o(tic)i (di\013erences)g(from)f(some)f(of)h(the)g(ancillary)75 1163 y(asp)q(ects)i(of)g(the)g(example)h(of)f(Prop)q(osal)g(VI)q(I.)166 1219 y(The)f(cac)o(he)h(facilit)o(y)g(could)g(also)g(b)q(e)g(pro)o (vided)g(for)e(pro)q(cess)i(iden)o(ti\014ers,)g(but)g(it)f(is)h(less)g (clear)f(ho)o(w)75 1275 y(suc)o(h)20 b(pro)o(vision)g(w)o(ould)f(b)q(e) i(useful.)33 b(It)19 b(is)h(suggested)g(that)e(the)i(cac)o(he)f(store,) h(retriev)o(e)f(and)h(delete)75 1332 y(attribute)15 b(pro)q(cedures)h (should)g(fail)g(when)g(applied)h(to)e(a)g(pro)q(cess)g(iden)o (ti\014ers.)166 1388 y(Implemen)o(tations)j(should)g(use)f(A)-5 b(VL)18 b(trees,)f(or)f(similar)i(e\016cien)o(t)g(data)e(structures)h (to)f(pro)o(vide)75 1445 y(relativ)o(ely)g(e\016cien)o(t)g(access)g(to) e(attributes.)75 1588 y Fm(11.6)70 b(P)n(oin)n(t-to-P)n(oin)n(t)22 b(Comm)n(unication)75 1689 y Fs(This)c(prop)q(osal)g(recommends)g(t)o (w)o(o)e(forms)h(for)g Fp(MPI)h Fs(p)q(oin)o(t-to-p)q(oin)o(t)g (message)g(addressing)g(and)g(se-)75 1746 y(lection:)j(b)o(y-group)16 b(notation,)e(b)o(y)i(pro)q(cess-ID)f(notation;)g(alw)o(a)o(ys,)f(one)i (is)g(w)o(orking)f(in)h(a)f(con)o(text,)f(as)75 1802 y(this)k(is)h(the)f(fundamen)o(tal)g(managemen)o(t)f(tactic)h(of)f Fp(MPI)h Fs(for)g(messages.)27 b(As)18 b(a)f(group)h(alw)o(a)o(ys)f (has)75 1859 y(a)f(con)o(text)g(at)g(creation,)g(and)h(an)f(ALL)h (group)f(is)h(an)o(ticipated,)g(this)g(should)h(pro)o(v)o(e)d(\014ne)i (for)f(a)g(static)75 1915 y(pro)q(cess)f(mo)q(del.)21 b(W)l(e)16 b(disagree)f(signi\014can)o(tly)i(from)d(Prop)q(osal)i(VI)q (I)g(in)g(what)f(follo)o(ws.)166 1972 y(The)e(t)o(w)o(o)f(forms)g(are)g (describ)q(ed,)j(follo)o(w)o(ed)f(b)o(y)f(considerations)g(of)g (uniform)g(in)o(tegration)g(of)g(these)75 2028 y(forms)h(in)i(the)g(p)q (oin)o(t-to-p)q(oin)o(t)g(comm)o(unication)g(c)o(hapter)f(of)f Fp(MPI)p Fs(.)75 2150 y Fj(Group-Rank)k(F)-5 b(orm)75 2235 y Fs(The)19 b Fi(gr)n(oup-r)n(ank)24 b Fs(form)18 b(p)q(ermits)h(comm)o(unication)g(b)q(et)o(w)o(een)g(mem)o(b)q(ers)g (of)g(the)f(same)h(con)o(text)f(and)75 2292 y(group.)i(Message)14 b(selection)j(and)e(addressing)h(are)f(expressed)h(b)o(y)75 2385 y Fh(\(group,)23 b(rank,)g(tag\))75 2478 y Fs(where:)f Fh(group)16 b Fs(is)g(a)g(group)g(iden)o(ti\014er;)i Fh(rank)e Fs(is)h(a)f(pro)q(cess)g(rank)g(in)h(that)f(group;)g Fh(tag)g Fs(is)g(a)g(message)75 2534 y(tag.)j(The)c(calling)i(pro)q (cess)f(m)o(ust)e(b)q(e)i(a)f(mem)o(b)q(er)h(of)e(the)i(frame)e(of)h Fh(context)p Fs(.)166 2591 y Fh(Send)21 b Fs(determines)i(the)f(con)o (text)g(using)g(information)g(in)h(the)f(group)g(iden)o(ti\014er.)42 b(It)22 b(do)q(es)g(all)75 2647 y(necessary)13 b(mappings)h(to)f(the)g (pro)q(cess)h(iden)o(ti\014er)g(space.)20 b Fh(Receive)12 b Fs(cannot)h(wildcard)i(on)e(con)o(text,)f(so)75 2704 y(a)k(v)m(alid)h(matc)o(hing)f(receiv)o(e)h(m)o(ust)f(refer)f(to)h(the) g(same)g(group)f(information.)23 b Fh(Receive)15 b Fs(can)h(wildcard)p eop %%Page: 82 87 82 86 bop 75 -100 a Fs(82)786 b Fq(CHAPTER)15 b(11.)34 b(CONTEXTS)16 b({)f(PR)o(OPOSAL)h(I)q(I)q(I)75 45 y Fs(on)c Fh(rank)f Fs(b)o(y)g(supplying)j(the)e(wildcard)g(in)o(teger)g Fh(MPI)p 981 45 15 2 v 17 w(DONTCARE)p Fs(.)e(This)i(prop)q(osal)g(mak) o(es)f(the)h(follo)o(wing)75 102 y(statemen)o(t)17 b(ab)q(out)h(the)f (pro)o(vision)i(for)e(wildcard)i(on)f Fh(tag)p Fs(.)28 b(Tw)o(o)17 b(in)o(teger-form)g(wildcard)i(is)g(needed)75 158 y(for)c(la)o(y)o(ering:)20 b Fh(care)p 432 158 V 16 w(bits)p Fs(,)15 b Fh(dont)p 668 158 V 16 w(care)p 780 158 V 17 w(bits)p Fs(.)k(T)l(ags)c(are)g(matc)o(hed)g(if)g(and)h (only)g(if)386 266 y(\()p Fr(r)q(eceiv)r(ed)p 576 266 14 2 v 15 w(tag)r(AN)5 b(D)q(N)g(O)q(T)h(dont)p 970 266 V 15 w(car)q(e)1069 273 y Fb(b)1086 266 y Fr(its)p Fs(\))p Fr(X)t(O)q(Rcar)q(e)p 1360 266 V 15 w(bits)13 b Fs(==)g(0)195 b(\(11)p Fr(:)p Fs(1\))75 374 y(This)18 b(general)f(format)f(can)h(b)q (e)h(used)g(to)e(partition)i(the)f(tag)f(space)i(for)e(virtual)i(top)q (ologies)g(or)e(other)75 431 y(user-de\014ned)h(needs,)f(and)f(is)h (quite)g(imp)q(ortan)o(t)e(to)h(the)g(standard's)f(\015exibili)q(t)o(y) l(.)75 563 y Fj(Pro)r(cess-Iden)n(ti\014er)j(F)-5 b(orm)75 653 y Fs(Comm)o(unication)16 b(tak)o(es)e(place)i(using)g(the)f(follo)o (wing)h(parameters:)75 757 y Fh(\(context,)23 b(process_identifier,)e (tag\))75 858 y Fs(where:)i Fh(context)16 b Fs(is)h(a)f(con)o(text)g (iden)o(ti\014er,)i Fh(process)p 1036 858 15 2 v 17 w(identifier)d Fs(is)i(a)f(pro)q(cess)h(iden)o(ti\014er,)h Fh(tag)e Fs(is)75 915 y(a)e(message)g(tag.)k(The)d(calling)h(pro)q(cess)f(m)o (ust)e(b)q(e)i(a)f(mem)o(b)q(er)h(of)e(the)i(same)f(con)o(text)g(as)f (the)i(recipien)o(t.)75 971 y(There)22 b(is)g(no)f(reference)h(to)f (groups)g(here.)40 b(Con)o(texts)20 b(can)i(ha)o(v)o(e)f(b)q(een)h (shared)g(b)o(y)f(using)i(a)e(least)75 1028 y(common)15 b(ancestor)f(prior)i(to)e(this)i(call,)g(or)f(b)o(y)g(the)g(ab)q(o)o(v) o(e-men)o(tioned)h(con)o(text)e(naming)i(service.)166 1086 y(There)11 b(is)h(nev)o(er)f(wildcarding)i(on)d(con)o(text.)18 b(Wildcarding)13 b(on)e Fh(process)p 1414 1086 V 16 w(identifier)f Fs(is)h(through)75 1143 y Fh(MPI)p 150 1143 V 17 w(DONTCARE)p Fs(.)i(T)l(ag)i(wildcarding)i(is)f(through)f(the)g(in)o(teger)g(pair)h (describ)q(ed)h(ab)q(o)o(v)o(e.)75 1276 y Fj(Uniform)g(In)n(tegration) 75 1365 y Fs(The)h(t)o(w)o(o)f(forms)g(of)h(addressing)g(and)h (selection)g(describ)q(ed)h(ha)o(v)o(e)e(di\013eren)o(t)g(syn)o(tactic) g(framew)o(orks.)75 1422 y(W)l(e)c(can)f(consider)i(in)o(tegrating)e (these)h(forms)f(in)o(to)g(the)h(p)q(oin)o(t-to-p)q(oin)o(t)g(c)o (hapter)f(of)g Fp(MPI)h Fs(b)o(y)f(de\014ning)75 1478 y(a)g(further)g(orthogonal)g(axis)g(\(as)g(in)h(the)g(m)o(ulti-lev)o (el)h(prop)q(osal)f(of)f(Gropp)g(&)h(Lusk\))f(whic)o(h)i(deals)f(with) 75 1535 y(form.)19 b(This)14 b(is)f(at)g(the)h(exp)q(ense)g(of)f(m)o (ultiplying)j(the)d(n)o(um)o(b)q(er)h(of)f Fh(Send)g Fs(and)g Fh(Receive)g Fs(pro)q(cedures)h(b)o(y)75 1591 y(a)g(factor)f(of)g(t)o(w)o(o,)g(and)h(some)g(further)g(but)g(trivial)h (w)o(ork)e(with)i(details)g(of)e(the)h(curren)o(t)g(p)q(oin)o(t-to-p)q (oin)o(t)75 1648 y(c)o(hapter)f(whic)o(h)g(uniformly)h(assumes)f(a)f (single)i(addressing)g(and)f(selection)h(form.)k(No)13 b(further)f(details,)75 1704 y(other)21 b(than)f(naming)i(that)e(disam) o(biguates)h(the)g(rank-group)g(form)f(from)g(the)h(pro)q(cess-id-con)o (text)75 1760 y(form)14 b(is)i(really)g(needed,)g(and)g(the)f(naming)h (w)o(ould)f(seem)h(uncon)o(tro)o(v)o(ersial.)75 1915 y Fm(11.7)70 b(Collecti)o(v)n(e)20 b(Comm)n(unication)75 2020 y Fs(Symmetric)g(collectiv)o(e)i(comm)o(unication)e(op)q(erations) g(are)g(complian)o(t)g(with)g(the)g(group-rank)g(form)75 2077 y(describ)q(ed)d(ab)q(o)o(v)o(e.)i(This)d(prop)q(osal)f (recommends)h(that)e(suc)o(h)h(op)q(erations)g(accept)h(a)e(group-iden) o(ti\014er)75 2133 y(\(whic)o(h)e(con)o(tains)g(con)o(text)f(and)h (other)f(information\))g(needed)i(to)e(op)q(erate)h(correctly)l(.)19 b(W)l(e)12 b(recommend)75 2190 y(that)i(the)g(tag)g(argumen)o(t)f(b)q (e)i(included)i(in)e(collectiv)o(e)i(calls)e(where)g(this)g(could)g (help)h(with)e(debugging.)166 2248 y Fp(MPI)j Fs(do)q(es)h(plan)g(to)f (describ)q(e)i(symmetric)e(collectiv)o(e)i(comm)o(unication)f(op)q (erations.)26 b(It)18 b(is)f(im-)75 2304 y(p)q(ossible)22 b(to)e(determine)i(whether)f(this)g(prop)q(osal)g(is)g(su\016cien)o(t)h (to)e(allo)o(w)h(implemen)o(tation)h(of)e(the)75 2361 y(collectiv)o(e)j(comm)o(unication)e(c)o(hapter)g(of)g Fp(MPI)g Fs(in)g(terms)g(of)f(the)h(p)q(oin)o(t-to-p)q(oin)o(t)h(c)o (hapter)e(of)h Fp(mpi)75 2417 y Fs(without)15 b(loss)h(of)e(generalit)o (y)l(,)i(since)g(the)g(collectiv)o(e)h(op)q(erations)e(are)g(not)g(y)o (et)f(de\014ned.)166 2476 y(Asymmetric)k(collectiv)o(e)h(comm)o (unication)f(op)q(erations,)g(esp)q(ecially)i(those)d(in)i(whic)o(h)f (sender\(s\))75 2532 y(and)d(receiv)o(er\(s\))g(are)f(distinct)i(pro)q (cesses,)f(should)h(b)q(e)g(made)f(complian)o(t)g(with)g(the)g (group-rank)g(form)75 2589 y(describ)q(ed)i(ab)q(o)o(v)o(e.)166 2647 y Fp(MPI1)k Fs(should)g(forego)e(non-blo)q(c)o(king)k(collectiv)o (e)f(op)q(erations,)f(but)g(ask)f(v)o(endors)g(to)g(supp)q(ort)75 2704 y(thread)15 b(mo)q(dels)h(in)g(lieu)h(of)e(suc)o(h)g(op)q (erations.)p eop %%Page: 83 88 83 87 bop 75 -100 a Fq(11.8.)34 b(CONCLUSION)1319 b Fs(83)75 45 y Fm(11.8)70 b(Conclusion)75 147 y Fs(This)16 b(prop)q(osal)h(is)f (substan)o(tially)h(di\013eren)o(t)f(than)g(either)g(Prop)q(osal)g(VI)q (I)h(or)e(I.)h(Con)o(texts)f(are)h(in)o(teger)75 203 y(tag)h(partitions)i(here,)g(and)g(are)f(fundamen)o(tally)h(lo)o(w)o (er-lev)o(el)h(ob)s(jects)d(than)h(groups.)29 b(Groups)18 b(ha)o(v)o(e)75 259 y(con)o(texts)g(in)h(this)g(prop)q(osal,)g(but)f (not)g(all)h(op)q(erations)g(require)g(the)f(presence)i(of)e (group-scop)q(e.)29 b(T)l(o)75 316 y(a)o(v)o(oid)17 b(in)o(vidious)i (comparisons)e(here,)h(more)e(substan)o(tial)i(comparisons)f(of)g(all)h (three)f(prop)q(osals)g(are)75 372 y(deferred)f(the)f(follo)o(wing)h (app)q(endix.)p eop %%Page: 84 89 84 88 bop 75 361 a Fn(Chapter)34 b(12)75 573 y Fu(Summary)39 b(of)h(con)m(text)75 698 y(sub)s(committee)i(prop)s(osals)75 925 y Fs(The)20 b(three)g(prop)q(osals)h(in)g(the)f(con)o(text)f(sub)q (committee)i(share)f(common)g(features,)g(and)g(ha)o(v)o(e)g(dif-)75 982 y(ferences)h(b)q(oth)f(in)h(concept)g(and)g(detail.)36 b(Tw)o(o)19 b(of)h(these)g(prop)q(osals)h(con)o(tain)f(features)g(whic) o(h)h(are)75 1038 y("separable")15 b(and)h(could)g(equally)h(app)q(ear) e(as)g(comp)q(onen)o(ts)g(of)g(one)h(or)e(more)h(other)g(prop)q(osals.) 20 b(This)75 1095 y(summary)12 b(iden)o(ti\014es)i(feature)e(of)g(prop) q(osals)g(as:)18 b(Common)12 b(F)l(eatures;)g(Separable)h(F)l(eatures;) g(Concept)75 1151 y(Di\013erences;)i(Detail)h(Di\013erences.)166 1212 y(Hop)q(efully)j(the)f(summary)f(will:)26 b(\(a\))16 b(help)j(us)e(to)g(discuss)i(the)e(imp)q(ortan)o(t)g(di\013ernces)i(b)q (et)o(w)o(een)75 1269 y(the)14 b(prop)q(osals)g(and)g(mak)o(e)f (agreemen)o(ts)h(on)f(ho)o(w)h(w)o(e)f(should)i(pro)q(ceed)g(with)f (resp)q(ect)h(to)e(those)h(issues;)75 1325 y(\(b\))h(help)h(us)g(to)e (isolate)i(the)f(separable)h(p)q(oin)o(ts)g(and)f(mak)o(e)g(separate)f (agreemen)o(ts)h(on)g(those)g(issues.)166 1386 y(I)22 b(hop)q(e)g(that)e(the)i(summary)e(is)i(b)q(oth)g(accurate)f(and)g (complete.)39 b(Please)22 b(mak)o(e)f(corrections)75 1443 y(and)c(additions)h(if)f(y)o(ou)g(disco)o(v)o(er)g(suc)o(h.)25 b(I)17 b(ap)q(ologise)h(in)g(adv)m(ance)f(for)f(m)o(y)h(errors,)f(whic) o(h)i(are)e(surely)75 1499 y(inevitable.)75 1670 y Fm(12.1)70 b(Common)22 b(F)-6 b(eatures)75 1782 y Fj(12.1.1)55 b(Pro)r(cess)18 b(group)h(managemen)n(t)75 1877 y Fs(In)j(eac)o(h)f(prop)q(osal)h (groups)f(are)g(created)g(dynamically)j(and)d(ha)o(v)o(e)g(static)g (mem)o(b)q(ership.)40 b(In)22 b(eac)o(h)75 1934 y(prop)q(osal)17 b(a)f(group)h(can)f(b)q(e)i(created)e(as)h(a)f(partition)h(of)f(an)h (existing)g(group)g(and)f(as)h(a)f(p)q(erm)o(utation)75 1990 y(of)g(an)h(existing)h(group.)25 b(In)18 b(eac)o(h)f(prop)q(osal)g (there)g(is)g(a)g(de\014ned)h(group)f(con)o(taining)g(all)h(\(or)e(p)q (erhaps)75 2046 y(all)g(initial\))h(pro)q(cesses.)j(Eac)o(h)15 b(prop)q(osal)h(allo)o(ws)f(\(or)f(suggests\))h(that)f(a)h(group)g(can) g(b)q(e)h(created)f(as)g(an)75 2103 y(explicit)i(list)f(of)f(pro)q (cesses.)75 2252 y Fj(12.1.2)55 b(Pro)n(vision)19 b(for)f(p)r(oin)n (t-to-p)r(oin)n(t)f(comm)n(unication)f(within)j(group)75 2347 y Fs(In)g(eac)o(h)f(prop)q(osal)h(p)q(oin)o(t-to-p)q(oin)o(t)f (comm)o(uncation)h(of)e(scop)q(e)i(closed)g(within)h(a)e(group)f(can)i (b)q(e)g(ex-)75 2403 y(pressed)d(in)g(terms)e(of)h(a)g(reference)h(to)f (a)f(group)h(coupled)i(with)f(a)e(pro)q(cess)i(rank)f(within)h(the)f (group.)75 2552 y Fj(12.1.3)55 b(Pro)n(vision)19 b(for)f(collectiv)n(e) e(comm)n(unication)g(within)j(group)75 2647 y Fs(In)c(eac)o(h)g(prop)q (osal)g(collectiv)o(e)h(comm)o(unication)g(of)e(scop)q(e)h(closed)h (within)f(a)g(group)f(can)h(b)q(e)g(expressed)75 2704 y(in)h(terms)f(of)f(a)h(reference)h(to)f(a)g(group.)952 2828 y(84)p eop %%Page: 85 90 85 89 bop 75 -100 a Fq(12.2.)34 b(SEP)l(ARABLE)16 b(FEA)l(TURES)1088 b Fs(85)75 45 y Fj(12.1.4)55 b(Opacit)n(y)19 b(of)g(group)f(and)i(pro)r (cess)e(description)75 142 y Fs(In)f(eac)o(h)f(prop)q(osal)g(the)h (description)g(of)f(groups)g(and)g(pro)q(cesses)h(is)g(opaque.)22 b(Groups)16 b(and)h(pro)q(cesses)75 198 y(are)e(referred)g(to)g(b)o(y)g (a)g(handle)h(lik)o(e)h(ob)s(ject.)75 351 y Fj(12.1.5)55 b(Fields)18 b(of)h(p)r(oin)n(t-to-p)r(oin)n(t)e(comm)n(unication)75 447 y Fs(In)j(eac)o(h)g(prop)q(osal)g(p)q(oin)o(t-to-p)q(oin)o(t)h (comm)o(unication)f(accepts)g(three)g(\014elds,)i(inclusiv)o(e)g(of)d (message)75 504 y(tag,)14 b(in)i(addressing)g(and)f(selection.)75 678 y Fm(12.2)70 b(Separable)23 b(F)-6 b(eatures)75 792 y Fj(12.2.1)55 b(T)-5 b(ag)19 b(usage)g(in)g(p)r(oin)n(t-to-p)r(oin)n (t)e(comm)n(unication)75 888 y Fs(Prop)q(osal)e(I)q(I)q(I)j(describ)q (es)f(tag)e(selection)h(for)f(Receiv)o(e)i(in)g(a)e(t)o(w)o(o-in)o (teger)g(form.)20 b(Prop)q(osals)15 b(I)h(and)g(VI)q(I)75 945 y(sa)o(y)f(nothing)g(ab)q(out)g(tag)g(usage.)166 1007 y(This)h(feature)f(can)g(b)q(e)h(placed)g(in)g(all)g(Prop)q(osals) f(I,)h(I)q(I)q(I)h(and)e(VI)q(I.)75 1160 y Fj(12.2.2)55 b(T)-5 b(ag)19 b(usage)g(in)g(collectiv)n(e)d(comm)n(unication)75 1256 y Fs(Prop)q(osal)f(I)q(I)q(I)j(suggests)c(that)h(tag)g(should)h(b) q(e)g(used)g(as)f(an)h(argumen)o(t)e(to)h(collectiv)o(e)i(comm)o (unication)75 1313 y(where)e(this)h(will)h(assist)e(debugging.)21 b(Prop)q(osals)15 b(I)g(and)h(VI)q(I)g(sa)o(y)f(nothing)g(ab)q(out)g (tag)g(usage.)166 1375 y(This)h(feature)f(can)g(b)q(e)h(placed)g(in)g (all)g(Prop)q(osals)f(I,)h(I)q(I)q(I)h(and)e(VI)q(I.)75 1527 y Fj(12.2.3)55 b(Con)n(text)19 b(or)f(Group)h(cac)n(he)75 1624 y Fs(Prop)q(osal)14 b(VI)q(I)h(describ)q(es)g(a)f("cac)o(he")f (facilit)o(y)i(asso)q(ciated)f(with)g(con)o(texts)f(and)h(groups.)19 b(Prop)q(osal)14 b(I)q(I)q(I)75 1680 y(describ)q(es)j(a)e(similar)h ("cac)o(he")f(facilit)o(y)h(asso)q(ciated)g(with)f(groups.)166 1742 y(This)h(feature)f(can)g(b)q(e)h(placed)g(in)g(all)g(Prop)q(osals) f(I,)h(I)q(I)q(I)h(and)e(VI)q(I.)75 1895 y Fj(12.2.4)55 b(Opaque)19 b(ob)s(ject)f(\(descriptor\))f(transmission)75 1992 y Fs(Prop)q(osal)c(VI)q(I)i(suggests)e(that)g(opaque)h(ob)s(ject)f (transmission)g(can)h(b)q(e)g(pro)o(vided)h(b)o(y)e(in)o(tegration)h (with)75 2048 y(transmission)i(of)f(t)o(yp)q(ed)h(data.)k(Prop)q(osal) 15 b(I)q(I)q(I)j(suggests)c(that)h(opaque)h(transmission)g(is)g(pro)o (vided)g(b)o(y)75 2105 y(a)e(mec)o(hanism)g(for)f(\015attening)i(a)e (descriptor)h(in)o(to)g(a)g(memory)f(bu\013er.)20 b(These)14 b(are)f(details)i(of)f(di\013eren)o(t)75 2161 y(w)o(a)o(ys)g(of)h(pro)o (viding)h(the)f(feature.)166 2223 y(This)h(feature)g(can)f(b)q(e)i (placed)g(in)f(Prop)q(osals)g(I)q(I)q(I)h(and)f(VI)q(I.)h(This)f (feature)f(cannot)h(b)q(e)g(placed)h(in)75 2279 y(Prop)q(osal)e(I.)75 2432 y Fj(12.2.5)55 b(Con)n(text)19 b(registry)75 2529 y Fs(Prop)q(osal)d(I)q(I)q(I)i(describ)q(es)f(a)f(con)o(text)f(name)h (registry)g(service.)23 b(Prop)q(osal)16 b(VI)q(I)h(indicates)h(that)d (suc)o(h)h(a)75 2585 y(service)g(w)o(ould)g(b)q(e)g(useful.)166 2647 y(This)g(feature)g(can)f(b)q(e)i(placed)g(in)f(Prop)q(osals)g(I)q (I)q(I)h(and)f(VI)q(I.)h(This)f(feature)f(cannot)h(b)q(e)g(placed)h(in) 75 2704 y(Prop)q(osal)e(I.)p eop %%Page: 86 91 86 90 bop 75 -100 a Fs(86)152 b Fq(CHAPTER)16 b(12.)34 b(SUMMAR)l(Y)16 b(OF)f(CONTEXT)g(SUBCOMMITTEE)g(PR)o(OPOSALS)75 45 y Fm(12.3)70 b(Concept)22 b(Di\013erences)75 159 y Fj(12.3.1)55 b(Concept)19 b(of)g(CONTEXT)g(and)g(GR)n(OUP)75 256 y Fs(In)d(Prop)q(osal)f(I)h(CONTEXT)f(and)g(GR)o(OUP)g(are)g(iden)o (tical)i(concepts)f(and)f(are)g(not)g(distinguished.)166 318 y(In)22 b(Prop)q(osal)g(I)q(I)q(I)h(CONTEXT)f(is)g(a)f(lo)o(w)o(er) h(degree)g(concept)g(than)f(GR)o(OUP)l(.)h(The)g(GR)o(OUP)75 375 y(concept)16 b(inherits)g(asp)q(ects)g(of)e(the)i(CONTEXT)f (concept.)166 437 y(In)d(Prop)q(osal)f(VI)q(I)h(CONTEXT)f(is)h(a)e (higher)i(concept)g(than)f(GR)o(OUP)l(.)g(The)g(CONTEXT)g(concept)75 493 y(inherits)17 b(asp)q(ects)e(of)g(the)g(GR)o(OUP)g(concept.)75 648 y Fj(12.3.2)55 b(Scop)r(e)18 b(of)h(p)r(oin)n(t-to-p)r(oin)n(t)e (comm)n(unication)75 745 y Fs(In)e(Prop)q(osal)g(I)g(the)f(scop)q(e)i (of)e(p)q(oin)o(t-to-p)q(oin)o(t)h(comm)o(unication)g(is)g(limited)i (to)d(the)g(group.)20 b(Pro)q(cesses)75 801 y(whic)o(h)e(are)f(mem)o(b) q(ers)g(of)g(distinct)h(groups)f(can)g(only)h(comm)o(unicate)f(through) g(a)g(common)f(ancestor)75 857 y(group.)166 920 y(In)21 b(Prop)q(osals)g(I)q(I)q(I)h(and)f(VI)q(I)h(the)f(scop)q(e)g(of)f(p)q (oin)o(t-to-p)q(oin)o(t)i(comm)o(unication)f(is)g(not)f(limited.)75 976 y(Pro)q(cesses)e(whic)o(h)i(are)e(mem)o(b)q(ers)g(of)g(distinct)i (groups)e(can)g(comm)o(unicate)h(without)f(reference)i(to)d(a)75 1032 y(common)e(ancestor)f(group.)75 1187 y Fj(12.3.3)55 b(T)-5 b(ransmission)18 b(of)h(group)f(or)h(con)n(text)75 1284 y Fs(In)d(Prop)q(osal)f(I)h(the)f(CONTEXT)g(cannot)g(b)q(e)h (transmitted)f(from)f(one)h(pro)q(cess)h(to)e(another.)166 1346 y(In)j(Prop)q(osals)e(VI)q(I)j(and)e(I)q(I)q(I)i(b)q(oth)e (CONTEXT)g(and)g(GR)o(OUP)g(can)g(b)q(e)h(transmitted)f(from)f(one)75 1402 y(pro)q(cess)c(to)f(another.)17 b(In)12 b(Prop)q(osal)e(VI)q(I)i (PR)o(OCESS)f(can)f(alo)h(b)q(e)g(transmitted)f(\(Prop)q(osal)g(I)q(I)q (I)j(suggests)75 1459 y(suc)o(h)j(but)f(mak)o(es)f(no)i(sp)q(eci\014c)h (pro)o(vision,)e(presumably)h(a)f(small)h(o)o(v)o(ersigh)o(t?\))75 1634 y Fm(12.4)70 b(Detail)20 b(di\013erences)75 1749 y Fj(12.4.1)55 b(Manifestation)18 b(of)h(con)n(text)75 1846 y Fs(In)d(Prop)q(osals)f(I)g(and)h(VI)q(I)g(con)o(text)f(is)g(an)h (opaque)f(ob)s(ject.)166 1908 y(In)h(Prop)q(osal)f(I)q(I)q(I)i(con)o (text)d(is)i(an)f(in)o(teger.)75 2062 y Fj(12.4.2)55 b(Deletion)17 b(of)i(group)75 2159 y Fs(In)d(Prop)q(osals)f(VI)q(I)h (and)g(I)q(I)q(I)h(groups)d(can)i(b)q(e)g(deleted.)166 2221 y(In)g(Prop)q(osal)f(I)g(there)h(is)f(no)h(pro)o(vision)f(for)g (group)g(deletion)i(\(p)q(ossibly)f(a)f(small)h(o)o(v)o(ersigh)o(t?\).) 75 2375 y Fj(12.4.3)55 b(Duplication)18 b(of)h(group)75 2472 y Fs(In)14 b(Prop)q(osals)f(I)g(and)g(I)q(I)q(I)i(there)e(is)h (explicit)h(pro)o(vision)e(for)g(duplication)i(of)e(an)g(existing)h (group)e(to)h(form)75 2529 y(a)i(new)g(\(distinct,)h(homomorphic\))f (group.)166 2591 y(In)k(Prop)q(osal)g(VI)q(I)h(there)e(is)h(no)g(suc)o (h)g(pro)o(vision)g(as)f(similar)i(fun)o(tionalit)o(y)g(is)f(pro)o (vided)g(b)o(y)g(the)75 2647 y(con)o(text)12 b(\(although)h(the)g(pro)o (vision)h(for)e(group)h(partition,)g(p)q(erm)o(utation)g(and)g (de\014nition)i(can)e(b)q(e)g(used)75 2704 y(to)i(create)g(a)f (snapshot)h(cop)o(y)g(of)g(a)g(group\).)p eop %%Page: 87 92 87 91 bop 75 -100 a Fq(12.4.)34 b(DET)l(AIL)16 b(DIFFERENCES)1108 b Fs(87)75 45 y Fj(12.4.4)55 b(Global)19 b(shared)f(v)m(ariables)75 131 y Fs(Prop)q(osals)d(I)h(and)f(VI)q(I)h(do)f(not)g(require)h(global) g(shared)f(v)m(ariables.)166 187 y(Prop)q(osal)f(I)q(I)q(I)i(requires)e (a)g(global)h(shared)f(v)m(ariable)h(\(whic)o(h)g(can)f(b)q(e)g (implemen)o(ted)i(as)e(suc)o(h)g(or)f(of)75 244 y(course)i(in)h(the)g (traditional)f(approac)o(h)g(as)g(a)g(global)h(service)g(pro)q(cess.\)) 75 366 y Fj(12.4.5)55 b(Pro)r(cess)18 b(iden)n(ti\014er)g(addressed)g (comm)n(unication)75 451 y Fs(Prop)q(osal)d(I)h(do)q(es)f(not)g(mak)o (e)g(pro)o(vision)h(for)e(pro)q(cess)i(iden)o(ti\014er)g(addressed)g (comm)o(unication.)166 508 y(Prop)q(osal)21 b(I)q(I)q(I)h(mak)o(es)f (pro)o(vision)g(for)g(pro)q(cess)g(iden)o(ti\014er)i(addressed)e(comm)o (unication)h(within)75 564 y(m)o(ultiple)17 b(distinct)f(tag)f(spaces.) 166 621 y(Prop)q(osal)g(VI)q(I)h(mak)o(es)e(pro)o(vision)i(for)e(pro)q (cess)h(iden)o(ti\014er)i(addressed)e(comm)o(unication)h(within)g(a)75 677 y(single)h(distinct)f(tag)e(space.)75 799 y Fj(12.4.6)55 b(In)n(ter-group)19 b(comm)n(unication)75 885 y Fs(Prop)q(osal)e(I)h (do)q(es)f(not)g(pro)o(vide)h(in)o(ter-group)f(comm)o(unication)h(as)f (it)g(limits)i(the)e(scop)q(e)h(of)f(p)q(oin)o(t-to-)75 941 y(p)q(oin)o(t)f(comm)o(unication)g(to)e(b)q(e)i(closed)g(within)h (a)d(group.)166 998 y(Prop)q(osal)h(VI)q(I)h(pro)o(vides)g(in)o (ter-group)f(comm)o(unication)h(in)g(a)f(triplet)h(addressing)f(form:)k (sender)75 1054 y(\(receiv)o(er\))c(group,)g(receiv)o(er)h(\(sender\))f (group,)f(sender)i(\(receiv)o(er\))f(rank.)166 1111 y(Prop)q(osal)h(I)q (I)q(I)i(pro)o(vides)f(in)o(ter-group)g(comm)o(unication)g(as)f(pro)q (cess)h(iden)o(ti\014er)h(addressed)f(com-)75 1167 y(m)o(unication.)p eop %%Page: 88 93 88 92 bop 75 379 a Fu(Biblio)q(graph)m(y)98 604 y Fs([1])21 b(V.)14 b(Bala)h(and)f(S.)h(Kipnis.)20 b(Pro)q(cess)14 b(groups:)19 b(a)14 b(mec)o(hanism)h(for)f(the)g(co)q(ordination)i(of)e (and)g(com-)168 661 y(m)o(unication)i(among)e(pro)q(cesses)i(in)f(the)g (Ven)o(us)h(collectiv)o(e)g(comm)o(unication)g(library)l(.)k(T)l(ec)o (hnical)168 717 y(rep)q(ort,)15 b(IBM)g(T.)g(J.)g(W)l(atson)g(Researc)o (h)g(Cen)o(ter,)g(Octob)q(er)g(1992.)k(Preprin)o(t.)98 820 y([2])i(V.)h(Bala,)h(S.)e(Kipnis,)k(L.)d(Rudolph,)j(and)c(Marc)g (Snir.)40 b(Designing)23 b(e\016cien)o(t,)h(scalable,)g(and)168 876 y(p)q(ortable)17 b(collectiv)o(e)i(comm)o(unication)e(libraries.)26 b(T)l(ec)o(hnical)18 b(rep)q(ort,)e(IBM)h(T.)f(J.)g(W)l(atson)g(Re-)168 933 y(searc)o(h)f(Cen)o(ter,)g(Octob)q(er)h(1992.)i(Preprin)o(t.)98 1035 y([3])j(R.)14 b(Butler)h(and)f(E.)f(Lusk.)18 b(User's)13 b(guide)i(to)e(the)h(P4)g(programming)f(system.)k(T)l(ec)o(hnical)f (Rep)q(ort)168 1092 y(TM-ANL{92/17,)e(Argonne)h(National)h(Lab)q (oratory)l(,)e(1992.)98 1194 y([4])21 b(S.)c(Chittor)g(and)h(R.)f(J.)g (En)o(b)q(o)q(dy)l(.)27 b(P)o(erformance)16 b(ev)m(aluation)j(of)d (mesh{connected)i(w)o(ormhole{)168 1251 y(routed)f(net)o(w)o(orks)e (for)i(in)o(terpro)q(cessor)f(comm)o(unication)i(in)f(m)o (ulticomputers.)25 b(In)17 b Fi(Pr)n(o)n(c)n(e)n(e)n(dings)168 1307 y(of)g(the)f(1990)i(Sup)n(er)n(c)n(omputing)e(Confer)n(enc)n(e)p Fs(,)c(pages)j(647{656,)e(1990.)98 1410 y([5])21 b(S.)f(Chittor)g(and)g (R.)g(J.)f(En)o(b)q(o)q(dy)l(.)35 b(Predicting)21 b(the)f(e\013ect)g (of)f(mapping)i(on)e(the)h(comm)o(unica-)168 1466 y(tion)g(p)q (erformance)g(of)f(large)g(m)o(ulticomputers.)34 b(In)20 b Fi(Pr)n(o)n(c)n(e)n(e)n(dings)d(of)k(the)f(1991)h(International)168 1523 y(Confer)n(enc)n(e)15 b(on)h(Par)n(al)r(lel)f(Pr)n(o)n(c)n (essing,)f(vol.)i(II)f(\(Softwar)n(e\))p Fs(,)f(pages)h(I)q(I{1)h({)f (I)q(I{4,)g(1991.)98 1626 y([6])21 b(J.)13 b(Dongarra,)f(R.)h(Hemp)q (el,)i(A.)e(Hey)l(,)g(and)h(D.)e(W)l(alk)o(er.)k(A)e(prop)q(osal)f(for) f(a)h(user{lev)o(el,)i(message{)168 1682 y(passing)i(in)o(terface)g(in) g(a)f(distributed)i(memory)e(en)o(vironmen)o(t.)23 b(T)l(ec)o(hnical)18 b(Rep)q(ort)f(TM-12231,)168 1739 y(ORNL,)g(Octob)q(er)e(1992.)98 1841 y([7])21 b(Edin)o(burgh)g(P)o(arallel)f(Computing)g(Cen)o(tre,)g (Univ)o(ersit)o(y)g(of)f(Edin)o(burgh.)34 b Fi(CHIMP)19 b(Conc)n(epts)p Fs(,)168 1898 y(June)e(1991.)98 2000 y([8])k(Edin)o(burgh)c(P)o(arallel)g(Computing)f(Cen)o(tre,)f(Univ)o (ersit)o(y)h(of)g(Edin)o(burgh.)22 b Fi(CHIMP)15 b(V)m(ersion)h(1.0)168 2057 y(Interfac)n(e)p Fs(,)e(Ma)o(y)g(1992.)98 2159 y([9])21 b(G.)13 b(Geist)f(and)h(V.)g(Sunderam.)k(Net)o(w)o(ork)11 b(based)i(concurren)o(t)g(computing)h(on)e(the)h(PVM)g(system.)168 2216 y(T)l(ec)o(hnical)k(Rep)q(ort)f(TM-11760,)d(Oak)i(Ridge)i (National)e(Lab)q(oratory)l(,)f(June)j(1991.)75 2319 y([10])k(G.)14 b(A.)g(Geist,)g(M.)g(T.)f(Heath,)h(B.)g(W.)g(P)o(eyton,) f(and)i(P)l(.)f(H.)g(W)l(orley)l(.)19 b(A)14 b(user's)g(guide)h(to)f (PICL:)g(a)168 2375 y(p)q(ortable)f(instrumen)o(ted)f(comm)o(unication) h(library)l(.)i(T)l(ec)o(hnical)f(Rep)q(ort)e(TM-11616,)f(Oak)h(Ridge) 168 2432 y(National)k(Lab)q(oratory)l(,)e(Octob)q(er)i(1990.)75 2534 y([11])21 b(R.)15 b(Hemp)q(el.)20 b(The)14 b(ANL/GMD)g(macros)f (\(P)l(ARMA)o(CS\))h(in)i(fortran)d(for)g(p)q(ortable)i(parallel)h (pro-)168 2591 y(gramming)f(using)g(the)g(message)f(passing)h (programming)f(mo)q(del)i({)e(users')h(guide)g(and)g(reference)168 2647 y(man)o(ual.)23 b(T)l(ec)o(hnical)18 b(rep)q(ort,)d(GMD,)g(P)o (ostfac)o(h)f(1316,)h(D-5205)g(Sankt)h(Augustin)g(1,)g(German)o(y)l(,) 168 2704 y(No)o(v)o(em)o(b)q(er)f(1991.)952 2828 y(88)p eop %%Page: 89 94 89 93 bop 75 -100 a Fq(BIBLIOGRAPHY)1394 b Fs(89)75 45 y([12])21 b(R.)15 b(Hemp)q(el,)h(H.-C.)e(Hopp)q(e,)h(and)f(A.)h(Supalo) o(v.)k(P)o(armacs{6.0)12 b(library)k(in)o(terface)e(sp)q (eci\014cation.)168 102 y(T)l(ec)o(hnical)h(rep)q(ort,)d(GMD,)g(P)o (ostfac)o(h)f(1316,)h(D-5205)f(Sankt)h(Augustin)i(1,)e(German)o(y)l(,)h (Decem)o(b)q(er)168 158 y(1992.)75 252 y([13])21 b(nCUBE)16 b(Corp)q(oration.)j Fi(nCUBE)c(2)i(Pr)n(o)n(gr)n(ammers)e(Guide,)i (r2.0)p Fs(,)f(Decem)o(b)q(er)f(1990.)75 346 y([14])21 b(H.)c(M)q(\177)-24 b(uhlen)o(b)q(ein)19 b(O.)d(Kr\177)-23 b(amer.)24 b(Mapping)16 b(strategies)g(in)i(message{based)e(m)o (ultipro)q(cessor)h(sys-)168 402 y(tems.)j Fi(Par)n(al)r(lel)15 b(Computing)p Fs(,)g(9:213{225,)d(1989.)75 496 y([15])21 b(P)o(arasoft)14 b(Corp)q(oration.)22 b Fi(Expr)n(ess)16 b(V)m(ersion)g(1.0:)22 b(A)17 b(Communic)n(ation)g(Envir)n(onment)e (for)j(Par-)168 552 y(al)r(lel)e(Computers)p Fs(,)f(1988.)75 646 y([16])21 b(P)o(aul)c(Pierce.)23 b(The)16 b(NX/2)g(op)q(erating)g (system.)22 b(In)17 b Fi(Pr)n(o)n(c)n(e)n(e)n(dings)e(of)i(the)g(Thir)n (d)g(Confer)n(enc)n(e)e(on)168 703 y(Hyp)n(er)n(cub)n(e)g(Concurr)n (ent)f(Computers)i(and)f(Applic)n(ations)p Fs(,)e(pages)h(384{390.)d(A) o(CM)j(Press,)f(1988.)75 796 y([17])21 b(A.)14 b(Skjellum)i(and)e(A.)g (Leung.)19 b(Zip)q(co)q(de:)h(a)14 b(p)q(ortable)h(m)o(ulticomputer)f (comm)o(unication)h(library)168 853 y(atop)g(the)f(reactiv)o(e)h(k)o (ernel.)20 b(In)15 b(D.)f(W.)g(W)l(alk)o(er)h(and)g(Q.)g(F.)f(Stout,)g (editors,)g Fi(Pr)n(o)n(c)n(e)n(e)n(dings)g(of)i(the)168 909 y(Fifth)21 b(Distribute)n(d)h(Memory)f(Concurr)n(ent)g(Computing)g (Confer)n(enc)n(e)p Fs(,)e(pages)i(767{776.)d(IEEE)168 966 y(Press,)d(1990.)75 1060 y([18])21 b(A.)12 b(Skjellum,)i(S.)e (Smith,)h(C.)e(Still,)j(A.)d(Leung,)i(and)g(M.)e(Morari.)i(The)g(Zip)q (co)q(de)g(message)f(passing)168 1116 y(system.)20 b(T)l(ec)o(hnical)d (rep)q(ort,)d(La)o(wrence)i(Liv)o(ermore)f(National)h(Lab)q(oratory)l (,)e(Septem)o(b)q(er)i(1992.)75 1210 y([19])21 b(V.)e(Sunderam.)30 b(PVM:)18 b(a)g(framew)o(ork)f(for)h(parallel)i(distributed)h (computing.)30 b Fi(Concurr)n(ency:)168 1266 y(Pr)n(actic)n(e)16 b(and)g(Exp)n(erienc)n(e)p Fs(,)e(2\(4\):315{339)o(,)e(1990.)75 1360 y([20])21 b(D.)12 b(W)l(alk)o(er.)k(Standards)c(for)g(message)g (passing)g(in)i(a)e(distributed)i(memory)e(en)o(vironmen)o(t.)j(T)l(ec) o(h-)168 1417 y(nical)i(Rep)q(ort)f(TM-12147,)d(Oak)i(Ridge)h(National) g(Lab)q(oratory)l(,)e(August)h(1992.)p eop %%Page: 90 95 90 94 bop 75 356 a Fn(App)s(endix)34 b(A)75 564 y Fu(Pro)s(cess)40 b(T)-10 b(op)s(ology)42 b(Routines)75 786 y Fs(In)16 b(this)f(app)q(endix)i(F)l(ortran)d(sp)q(eci\014cations)j(for)e(the)g (prop)q(osed)h(top)q(ology)f(functions)h(are)f(giv)o(en.)191 895 y Fo(\017)g Ft(MPI)p 338 895 16 2 v 18 w(CAR)l(T)149 b Fs(Map)15 b(a)g(cartesian)g(structure)g(\(grid/torus\))191 952 y Fo(\017)g Ft(MPI)p 338 952 V 18 w(MAKDIM)57 b Fs(Divide)17 b(a)d(pro)q(cess)i(group)f(among)f(n)i(cartesian)f(dimensions)191 1008 y Fo(\017)g Ft(MPI)p 338 1008 V 18 w(P)l(AR)l(TC)117 b Fs(P)o(artition)15 b(a)g(cartesian)g(structure)191 1065 y Fo(\017)g Ft(MPI)p 338 1065 V 18 w(GRAPH)101 b Fs(Map)15 b(a)g(graph)191 1121 y Fo(\017)g Ft(MPI)p 338 1121 V 18 w(INQMAP)72 b Fs(Chec)o(k)15 b(mapping)h(t)o(yp)q(e)191 1178 y Fo(\017)f Ft(MPI)p 338 1178 V 18 w(INQCAR)l(T)49 b Fs(Find)16 b(size)g(of)f(cartesian)g(structure)g(and)g(o)o(wn)g(p)q (osition)191 1234 y Fo(\017)g Ft(MPI)p 338 1234 V 18 w(INQGR)118 b Fs(Find)16 b(o)o(wn)f(no)q(de)g(n)o(um)o(b)q(er)h(in)g (graph)191 1291 y Fo(\017)f Ft(MPI)p 338 1291 V 18 w(INQPID)102 b Fs(Lo)q(ok)15 b(up)h(PID)f(n)o(um)o(b)q(ers)952 2828 y(90)p eop %%Page: 91 96 91 95 bop 1830 -100 a Fs(91)75 45 y Ft(NAME)179 102 y(MPI)p 288 102 16 2 v 18 w(CAR)l(T)121 b Fs(Arrange)16 b(the)g(pro)q(cesses)h (of)f(a)g(pro)q(cess)h(group)f(in)h(a)f(cartesian)g(structure)573 158 y(\(torus/grid\))e(with)i Fh(n)f Fs(dimensions.)75 256 y Ft(SYNOPSIS)179 312 y Fs(in)o(teger)g(function)h(MPI)p 599 312 14 2 v 17 w(CAR)l(T)f(\(gid,)g(ndim,)h(dims,)f(p)q(erio)q(d\)) 179 369 y(in)o(teger)g(gid)179 425 y(in)o(teger)g(ndim)179 482 y(in)o(teger)g(dims\()p Fo(\003)p Fs(\))179 538 y(in)o(teger)g(p)q (erio)q(d\()p Fo(\003)p Fs(\))75 636 y Ft(INPUT)i(AR)o(GUMENTS)179 693 y Fs(gid)334 b(the)15 b(ID)h(n)o(um)o(b)q(er)f(of)g(the)g(pro)q (cess)h(group)f(to)f(b)q(e)i(structured.)179 749 y(ndim)294 b(the)15 b(n)o(um)o(b)q(er)h(of)f(dimensions)i(of)d(the)i(torus.)179 806 y(dims)301 b(n)o(um)o(b)q(er)16 b(of)e(pro)q(cesses)i(in)g(eac)o(h) f(co)q(ordinate)h(direction.)179 862 y(p)q(erio)q(d)269 b(p)q(erio)q(dicit)o(y)18 b(sp)q(eci\014cation)f(in)f(eac)o(h)f(co)q (ordinate)h(direction.)75 960 y Ft(DESCRIPTION)179 1016 y Fs(The)f(pro)q(cesses)g(of)g(the)g(group)g(with)g(ID)g(n)o(um)o(b)q (er)g Fh(gid)g Fs(are)f(arranged)h(in)h(a)e(cartesian)h(structure)179 1073 y(\(grid/torus\).)j(By)d(assigning)h(neigh)o(b)q(oring)g(p)q (ositions)g(in)f(the)g(logical)h(pro)q(cess)f(torus)g(to)f(neigh-)179 1129 y(b)q(oring)e(pro)q(cessors)g(in)h(the)f(hardw)o(are)f(the)h (system)g(can)g(optimize)h(the)f(lo)q(calit)o(y)h(of)f(in)o(ter{pro)q (cess)179 1186 y(comm)o(unications.)20 b(The)15 b(n)o(um)o(b)q(er)f(of) g(dimensions)i(is)f(sp)q(eci\014ed)h(b)o(y)e Fh(ndim)p Fs(.)19 b(Arra)o(y)14 b Fh(period)f Fs(sp)q(ec-)179 1242 y(i\014es)18 b(the)g(p)q(erio)q(dicit)o(y)i(in)e(eac)o(h)f(co)q (ordinate)h(direction.)29 b(If)17 b Fh(period\(i\))g Fs(is)h(set)f(to)g Ft(MPI)p 1751 1242 16 2 v 18 w(PER)179 1299 y Fs(then)j(dimension)h Fh(i)e Fs(is)h(treated)f(as)g(p)q(erio)q (dic.)34 b(If)20 b Fh(period\(i\))e Fs(is)i(set)f(to)g Ft(MPI)p 1602 1299 V 18 w(NPER)h Fs(then)179 1355 y(dimension)e Fh(i)d Fs(is)i(treated)f(as)f(non-p)q(erio)q(dic.)25 b(If)17 b(all)g Fh(period\(i\))e Fs(are)g(set)h(to)g Ft(MPI)p 1634 1355 V 18 w(PER)p Fs(,)g(then)179 1412 y(the)f(top)q(ology)g(is)h(a)f(torus.)179 1487 y(Note)c(that)h(a)g (n-dimension)i(h)o(yp)q(ercub)q(e)f(is)g(a)f(torus)f(with)h(2)g(pro)q (cesses)h(p)q(er)f(co)q(ordinate)h(direction)179 1543 y(and)i(MPI)p 359 1543 14 2 v 17 w(PER.)g(Th)o(us,)f(ndim=n,)j (dims\(1:n\)=2)e(and)g(p)q(erio)q(d\(1:n\)=MPI)p 1513 1543 V 17 w(PER.)75 1641 y Ft(RETURN)k(V)-6 b(ALUE)179 1698 y Fs(If)14 b(the)g(calling)h(pro)q(cess)f(is)g(assigned)h(a)e(p)q (osition)i(in)f(the)g(grid,)g Ft(MPI)p 1372 1698 16 2 v 18 w(CAR)l(T)f Fs(returns)h(the)g(total)179 1754 y(n)o(um)o(b)q(er)k (of)f(pro)q(cesses)h(in)h(the)f(grid.)28 b(If)18 b(the)g(calling)h(pro) q(cess)f(is)h(not)e(in)i(the)f(grid,)g(the)g(return)179 1811 y(v)m(alue)e(is)g(set)f(to)f(0.)20 b(A)15 b(v)m(alue)i(of)d(-1)h (is)h(returned)g(if)f(an)h(error)e(o)q(ccurs.)p eop %%Page: 92 97 92 96 bop 75 -100 a Fs(92)663 b Fq(APPENDIX)16 b(A.)30 b(PR)o(OCESS)16 b(TOPOLOGY)g(R)o(OUTINES)75 45 y Ft(NAME)179 102 y(MPI)p 288 102 16 2 v 18 w(MAKDIM)29 b Fs(Divide)18 b(the)e(pro)q(cesses)h(of)e(a)h(pro)q(cess)h(group)f(among)f(n)i (dimensions)g(of)f(a)573 158 y(Cartesian)f(grid.)75 256 y Ft(SYNOPSIS)179 312 y Fs(in)o(teger)g(function)h(MPI)p 599 312 14 2 v 17 w(MAKDIM)f(\(gid,)g(ndim,)g(dims\))179 369 y(in)o(teger)g(gid)179 425 y(in)o(teger)g(ndim)179 482 y(in)o(teger)g(dims\()p Fo(\003)p Fs(\))75 580 y Ft(INPUT)i(AR)o(GUMENTS)179 636 y Fs(gid)334 b(the)15 b(ID)h(n)o(um)o(b)q(er)f(of)g(the)g(pro)q(cess)h(group)f(to)f(b)q(e)i (structured.)179 693 y(ndim)294 b(the)15 b(n)o(um)o(b)q(er)h(of)f (dimensions)i(of)d(the)i(torus.)179 749 y(dims)301 b(n)o(um)o(b)q(er)16 b(of)e(pro)q(cesses)i(in)g(eac)o(h)f(co)q(ordinate)h(direction.)75 847 y Ft(OUTPUT)j(AR)o(GUMENTS)179 904 y Fs(dims)301 b(n)o(um)o(b)q(er)16 b(of)e(pro)q(cesses)i(in)g(eac)o(h)f(co)q (ordinate)h(direction.)75 1002 y Ft(DESCRIPTION)179 1058 y Fs(The)11 b(pro)q(cesses)g(of)g(the)f(group)h(with)g(ID)g(n)o(um)o(b) q(er)g Fh(gid)g Fs(are)f(divided)j(as)e(ev)o(enly)h(as)e(p)q(ossible)j (among)179 1114 y Fh(ndim)k Fs(dimensions,)j(sub)s(ject)e(to)g(the)g (constrain)o(t)g(that)f(all)i(pro)q(cesses)g(in)g(the)f(group)g(are)g (used.)179 1171 y(The)e(caller)h(ma)o(y)e(further)h(constrain)g(the)g (op)q(eration)g(of)g(this)g(routine)h(b)o(y)e(sp)q(ecifying)j(elemen)o (ts)179 1227 y(of)c(arra)o(y)g Fh(dims)p Fs(.)20 b(If)15 b Fh(dims\(i\))f Fs(is)i(set)f(to)f(a)h(p)q(ositiv)o(e)h(n)o(um)o(b)q (er,)f(the)h(routine)f(will)i(\014x)e(the)h(n)o(um)o(b)q(er)179 1284 y(of)g(pro)q(cesses)g(in)i(co)q(ordinate)e(direction)i Fh(i)e Fs(to)g Fh(dims\(i\))p Fs(.)22 b(Pro)q(cesses)17 b(will)h(then)e(b)q(e)h(distributed)179 1340 y(among)d(directions)j (where)e Fh(dims\(i\))f Fs(is)i(set)f(to)g(0,)f(sub)s(ject)h(to)g(the)g (ab)q(o)o(v)o(e)g(constrain)o(ts.)179 1415 y(Note)j(that)h(an)g(error)f (will)j(o)q(ccur)e(if)g Fh(dims\(i\))f Fs(is)i(p)q(ositiv)o(e)g(and)f (do)q(es)g(not)g(ev)o(enly)h(divide)h(the)179 1472 y(n)o(um)o(b)q(er)d (of)g(pro)q(cesses)g(in)h(the)f(group.)28 b(Negativ)o(e)18 b(input)h(v)m(alues)g(of)f Fh(dims\(i\))f Fs(will)j(also)e(cause)179 1528 y(an)e(error.)22 b(All)17 b(elemen)o(ts)g(of)f Fh(dims\(*\))f Fs(m)o(ust)g(b)q(e)i(set)f(to)f(0)h(for)g(completely)h(automatic)f(pro) q(cess)179 1585 y(distribution.)179 1660 y(When)21 b(the)g(function)g (returns,)h Fh(dims\(i\))d Fs(will)k(b)q(e)e(set)f(to)g(the)h(n)o(um)o (b)q(er)g(of)f(pro)q(cesses)h(in)h(co-)179 1716 y(ordinate)h(direction) i Fh(i)p Fs(.)45 b(F)l(or)22 b Fh(dims\(i\))h Fs(not)g(set)g(b)o(y)g (the)h(user,)h Fh(dims\(i\))e Fs(will)i(b)q(e)f(ordered)179 1773 y(\(MAXIMUM,)18 b(...,)g(MINIMUM\).)g(Arra)o(y)g Fh(dim\(*\))g Fs(is)h(suitable)h(for)e(use)h(as)g(input)g(to)f(routine) 179 1829 y(MPI)p 271 1829 V 16 w(CAR)l(T.)75 1927 y Ft(RETURN)h(V)-6 b(ALUE)179 1984 y Fs(If)18 b(the)g(routine)g(completes)g(without)g (error,)f(the)h(return)f(v)m(alue)i(is)f(set)g(to)f(0.)27 b(A)18 b(v)m(alue)h(of)e(-1)g(is)179 2040 y(returned)e(if)h(an)f(error) g(o)q(ccurs.)p eop %%Page: 93 98 93 97 bop 1830 -100 a Fs(93)75 45 y Ft(NAME)179 102 y(MPI)p 288 102 16 2 v 18 w(P)l(AR)l(TC)89 b Fs(P)o(artition)15 b(a)g(pro)q(cess)g(group)g(with)h(cartesian)f(structure)g(in)h (subgroups.)75 200 y Ft(SYNOPSIS)179 256 y Fs(in)o(teger)f(function)h (MPI)p 599 256 14 2 v 17 w(P)l(AR)l(TC)f(\(gid,)g(lostdim\))179 312 y(in)o(teger)g(gid)179 369 y(in)o(teger)g(lostdim)75 467 y Ft(INPUT)i(AR)o(GUMENTS)179 523 y Fs(gid)334 b(the)15 b(ID)h(n)o(um)o(b)q(er)f(of)g(the)g(pro)q(cess)h(group)f(to)f(b)q(e)i (partitioned.)179 580 y(lostdim)248 b(the)12 b(co)q(ordinate)g (direction)h(b)o(y)f(whic)o(h)g(the)g(pro)q(cess)g(map)f(will)j(b)q(e)e (reduced.)75 678 y Ft(DESCRIPTION)179 734 y Fs(It)19 b(is)h(assumed)f(that)g(the)g(pro)q(cesses)h(of)f(the)g(group)g(with)h (ID)f(n)o(um)o(b)q(er)h Fh(gid)e Fs(are)h(arranged)g(in)179 791 y(a)k(cartesian)h(structure)f(of)h(size)g(\(n1,n2,...\))43 b(b)o(y)24 b(a)f(previous)i(call)g(to)e(MPI)p 1580 791 V 16 w(CAR)l(T.)h(Then,)179 847 y(MPI)p 271 847 V 16 w(P)l(AR)l(TC)e(creates)f(a)f(n)o(um)o(b)q(er)i(of)f(subgroups)g(with)g (cartesian)h(structures,)f(the)h(dimen-)179 904 y(sion)c(of)f(whic)o(h) h(is)g(one)g(lo)o(w)o(er)f(than)h(its)g(paren)o(t's.)26 b(The)18 b(direction)g(of)g(splitting)h(of)e(the)g(paren)o(t)179 960 y(structure)g(is)h(sp)q(eci\014ed)i(b)o(y)e Fh(lostdim)p Fs(.)26 b(If,)18 b(for)f(example,)i Fh(lostdim)k(=)h(2)p Fs(,)17 b(then)i Fh(n2)e Fs(subgroups)179 1016 y(with)e(size)h (\(n1,n3,n4,...\))i(are)d(formed.)75 1114 y Ft(RETURN)k(V)-6 b(ALUE)179 1171 y Fs(Up)q(on)16 b(successful)h(completion)g Ft(MPI)p 852 1171 16 2 v 18 w(P)l(AR)l(TC)d Fs(returns)i(the)f(group)h (ID)g(n)o(um)o(b)q(er)f(of)h(the)f(sub-)179 1227 y(group)d(to)h(whic)o (h)g(the)g(calling)i(pro)q(cess)e(b)q(elongs.)20 b(A)13 b(v)m(alue)h(of)e(-1)h(is)g(returned)h(if)f(an)g(error)f(o)q(ccurs.)p eop %%Page: 94 99 94 98 bop 75 -100 a Fs(94)663 b Fq(APPENDIX)16 b(A.)30 b(PR)o(OCESS)16 b(TOPOLOGY)g(R)o(OUTINES)75 45 y Ft(NAME)179 102 y(MPI)p 288 102 16 2 v 18 w(GRAPH)73 b Fs(Arrange)13 b(the)h(pro)q(cesses)g(of)g(a)f(pro)q(cess)h(group)f(in)i(a)e(general)i (graph)e(struc-)573 158 y(ture.)75 256 y Ft(SYNOPSIS)179 312 y Fs(in)o(teger)i(function)h(MPI)p 599 312 14 2 v 17 w(GRAPH)f(\(gid,)g(no)q(des,)g(index,)i(nglist\))179 369 y(in)o(teger)e(gid)179 425 y(in)o(teger)g(no)q(des)179 482 y(in)o(teger)g(index\()p Fo(\003)p Fs(\))179 538 y(in)o(teger)g(nglist\()p Fo(\003)p Fs(\))75 636 y Ft(INPUT)i(AR)o (GUMENTS)179 693 y Fs(gid)334 b(the)15 b(ID)h(n)o(um)o(b)q(er)f(of)g (the)g(pro)q(cess)h(group)f(to)f(b)q(e)i(structured.)179 749 y(no)q(des)282 b(the)15 b(n)o(um)o(b)q(er)h(of)f(no)q(des)g(in)i (the)e(graph.)179 806 y(index)288 b(index)17 b(v)o(ector)d(in)o(to)h(v) o(ector)g(nglist)h(\(see)f(b)q(elo)o(w\).)179 862 y(nglist)286 b(for)15 b(eac)o(h)g(graph)g(no)q(de:)20 b(list)c(of)f(neigh)o(b)q (oring)i(no)q(des)f(\(see)f(b)q(elo)o(w\).)75 960 y Ft(DESCRIPTION)179 1016 y Fs(The)k(pro)q(cesses)g(of)f(the)g(group)h(with)g(ID)f(n)o(um)o (b)q(er)h Fh(gid)f Fs(are)h(arranged)f(in)h(a)f(graph)h(structure.)179 1073 y(By)d(assigning)h(neigh)o(b)q(oring)h(graph)e(no)q(des)h(to)f (neigh)o(b)q(oring)i(pro)q(cessors)e(in)h(the)f(hardw)o(are)g(the)179 1129 y(system)k(can)h(optimize)h(the)e(lo)q(calit)o(y)i(of)f(in)o (ter{pro)q(cess)f(comm)o(unications.)37 b(The)21 b(n)o(um)o(b)q(er)g (of)179 1186 y(no)q(des)16 b(is)f(sp)q(eci\014ed)j(b)o(y)d Fh(nodes)p Fs(.)179 1242 y(Input)i(to)e(MPI)p 453 1242 V 16 w(GRAPH)h(is)h(for)e(eac)o(h)h(no)q(de)h(its)f(set)g(of)f(neigh)o (b)q(ors,)i(i.)f(e.,)f(the)h(set)g(of)g(pro)q(cesses)179 1299 y(with)g(whic)o(h)h(the)f(no)q(de)h(pro)q(cess)f(is)g(going)g(to)g (comm)o(unicate)g(most)f(frequen)o(tly)l(.)23 b(Since)17 b(there)f(is)179 1355 y(no)e(w)o(eigh)o(ting)h(of)f(no)q(de)h (connections,)g(it)g(migh)o(t)f(b)q(e)h(sensible)i(to)c(sp)q(ecify)j (only)f(those)f(neigh)o(b)q(ors)179 1412 y(with)h(whic)o(h)h(there)g (is)f(a)g(considerable)i(amoun)o(t)e(of)f(comm)o(unication.)179 1468 y(F)l(or)9 b(eac)o(h)i(no)q(de)f Fr(i)j Fs(\(1)f Fo(\024)h Fr(i)f Fo(\024)h Fr(nodes)p Fs(\))d(the)g(list)h(of)f(the)g (neigh)o(b)q(or)h(no)q(des)g(is)g(stored)e(at)h Fr(ng)r(l)q(ist)p Fs(\()p Fr(j)s Fs(\))p Fr(;)18 b(index)p Fs(\()p Fr(i)p Fs(\))11 b Fo(\024)179 1525 y Fr(j)k Fo(\024)e Fr(index)p Fs(\()p Fr(i)8 b Fs(+)h(1\))g Fo(\000)g Fs(1.)19 b(F)l(or)14 b(the)h(last)g(pro)q(cess)g Fr(index)p Fs(\()p Fr(i)8 b Fs(+)h(1\))14 b(p)q(oin)o(ts)h(to)f(the)h(\014rst)f(free)h(p)q (osition)179 1581 y(in)k(v)o(ector)f(nglist.)30 b(Note)18 b(that)g(the)g(matrix)g(is)h(symmetric,)g(i.)g(e.,)f(if)h(no)q(de)g Fi(i)f Fs(is)h(a)f(neigh)o(b)q(or)h(of)179 1637 y(no)q(de)g Fi(j)p Fs(,)g(than)g(no)q(de)h Fi(j)e Fs(is)i(also)e(a)h(neigh)o(b)q (or)h(of)e(no)q(de)h Fi(i)p Fs(.)31 b(This)19 b(prop)q(ert)o(y)g(can)g (b)q(e)g(used)h(for)e(an)179 1694 y(in)o(ternal)e(c)o(hec)o(king)g(of)f (the)g(input)h(argumen)o(ts.)75 1792 y Ft(RETURN)j(V)-6 b(ALUE)179 1848 y Fs(If)17 b(the)f(calling)j(pro)q(cess)e(is)g (assigned)g(a)g(p)q(osition)g(in)h(the)f(graph,)f Ft(MPI)p 1440 1848 16 2 v 18 w(GRAPH)g Fs(returns)h(its)179 1905 y(no)q(de)k(n)o(um)o(b)q(er.)35 b(If)21 b(it)f(is)h(not)f(in)h(the)f (graph,)h(a)f(v)m(alue)i(of)d(0)h(is)h(returned.)36 b(A)20 b(v)m(alue)i(of)d(-1)h(is)179 1961 y(returned)15 b(if)h(an)f(error)g(o) q(ccurs.)p eop %%Page: 95 100 95 99 bop 1830 -100 a Fs(95)75 45 y Ft(NAME)179 102 y(MPI)p 288 102 16 2 v 18 w(INQMAP)44 b Fs(Find)16 b(out)f(mapping)h(t)o(yp)q (e)f(of)g(a)g(pro)q(cess)g(group.)75 200 y Ft(SYNOPSIS)179 256 y Fs(in)o(teger)g(function)h(MPI)p 599 256 14 2 v 17 w(INQMAP)f(\(gid\))75 354 y Ft(INPUT)i(AR)o(GUMENTS)179 410 y Fs(gid)334 b(the)15 b(ID)h(n)o(um)o(b)q(er)f(of)g(the)g(pro)q (cess)h(group.)75 508 y Ft(DESCRIPTION)179 565 y Fs(The)h(function)h (MPI)p 546 565 V 16 w(INQMAP)f(tells)h(the)f(calling)i(pro)q(cess)e (the)g(t)o(yp)q(e)f(of)h(mapping)g(whic)o(h)h(has)179 621 y(b)q(een)13 b(applied)g(to)e(the)h(pro)q(cess)g(group)f(with)h (the)g(ID)g(n)o(um)o(b)q(er)g Fh(gid)p Fs(,)g(of)f(whic)o(h)h(the)g (calling)i(pro)q(cess)179 678 y(is)h(a)g(mem)o(b)q(er.)75 776 y Ft(RETURN)k(V)-6 b(ALUE)179 832 y Fs(Up)q(on)16 b(successful)g(completion)g Ft(MPI)p 850 832 16 2 v 18 w(INQMAP)e Fs(returns)204 885 y(MPI)p 296 885 14 2 v 16 w(NOMAP:)148 b(if)16 b(no)f(mapping)h(has)f(b)q(een)h(assigned,)204 941 y(MPI)p 296 941 V 16 w(CAR)l(TMAP:)88 b(in)16 b(case)g(of)e(a)h (cartesian)h(mapping,)f(and)204 998 y(MPI)p 296 998 V 16 w(GRAPHMAP:)49 b(in)16 b(case)g(of)e(a)h(graph)g(mapping.)179 1050 y(A)g(v)m(alue)h(of)f(-1)g(is)h(returned)g(if)f(an)g(error)g(o)q (ccurs.)p eop %%Page: 96 101 96 100 bop 75 -100 a Fs(96)663 b Fq(APPENDIX)16 b(A.)30 b(PR)o(OCESS)16 b(TOPOLOGY)g(R)o(OUTINES)75 45 y Ft(NAME)179 102 y(MPI)p 288 102 16 2 v 18 w(INQCAR)l(T)21 b Fs(Lo)q(ok)15 b(up)h(cartesian)f(structure)g(and)h(o)o(wn)e(p)q(osition.)75 200 y Ft(SYNOPSIS)179 256 y Fs(in)o(teger)h(function)h(MPI)p 599 256 14 2 v 17 w(INQCAR)l(T)g(\(gid,)f(maxdim,)g(size,)h(p)q(erio)q (d,)g(p)q(os\))179 312 y(in)o(teger)f(gid)179 369 y(in)o(teger)g (maxdim)179 425 y(in)o(teger)g(size\()p Fo(\003)p Fs(\))179 482 y(in)o(teger)g(p)q(erio)q(d\()p Fo(\003)p Fs(\))179 538 y(in)o(teger)g(p)q(os\()p Fo(\003)p Fs(\))75 636 y Ft(INPUT)i(AR)o(GUMENTS)179 693 y Fs(gid)334 b(the)15 b(ID)h(n)o(um)o(b)q(er)f(of)g(the)g(pro)q(cess)h(group)f(with)g(a)g (cartesian)g(structure.)179 749 y(maxdim)234 b(the)15 b(dimension)i(of)e(v)o(ectors)g Fh(size)f Fs(and)h Fh(pos)g Fs(in)h(the)g(calling)g(program.)75 847 y Ft(OUTPUT)j(AR)o(GUMENTS)179 904 y Fs(size)324 b(v)o(ector)15 b(returning)g(the)h(size)g(of)f(the)g (grid)g(in)h(eac)o(h)g(co)q(ordinate)f(direction.)179 960 y(p)q(erio)q(d)269 b(p)q(erio)q(dicit)o(y)18 b(c)o(haracteristics)d (in)h(eac)o(h)f(co)q(ordinate)h(direction.)179 1016 y(p)q(os)327 b(v)o(ector)15 b(returning)g(the)h(p)q(osition)g(of)f(the)g(calling)i (pro)q(cess)e(in)h(the)g(grid.)75 1114 y Ft(DESCRIPTION)179 1171 y Fs(After)11 b(the)i(pro)q(cesses)f(of)g(the)g(group)g Fh(gid)f Fs(ha)o(v)o(e)h(b)q(een)h(assigned)g(a)e(cartesian)i (structure)e(\(function)179 1227 y(MPI)p 271 1227 V 16 w(CAR)l(T\),)k(the)g(function)g(MPI)p 806 1227 V 17 w(INQCAR)l(T)h (tells)g(the)f(calling)h(pro)q(cess)f(the)g(parameters)f(of)179 1284 y(that)g(structure)h(and)h(its)f(o)o(wn)g(logical)h(p)q(osition.) 179 1359 y(If,)d(for)f(example,)h(a)f(three{dimensional)j(grid)e (mapping)g(has)f(b)q(een)i(applied,)g(then)f Fh(size)f Fs(returns)179 1415 y(the)f(three)h(v)m(alues)h Fh(nx,ny,nz)p Fs(,)e(and)g Fh(period\(i\))p Fs(,)g(i=1,2,3,)g(is)h(set)g(to)f Ft(MPI)p 1475 1415 16 2 v 18 w(NPER)p Fs(.)g(The)h(v)o(ector)179 1472 y Fh(pos)j Fs(con)o(tains)h(the)g(logical)h(pro)q(cess)f(co)q (ordinates)g Fh(i,j,k)f Fs(with)i(1)c Fo(\024)h Fr(i)g Fo(\024)g Fr(nx)p Fs(,)h(1)f Fo(\024)g Fr(j)i Fo(\024)e Fr(ny)r Fs(,)i(and)179 1528 y(1)j Fo(\024)g Fr(k)h Fo(\024)f Fr(nz)r Fs(.)32 b(If)19 b(the)h(calling)g(pro)q(cess)g(is)f(not)g (assigned)g(a)g(p)q(osition)h(in)g(the)f(grid)h(structure,)179 1585 y(the)c(co)q(ordinates)h(are)e(set)h(to)g(zero)q(es.)23 b(If)16 b(the)g(v)o(ectors)g Fh(size)p Fs(,)f Fh(period)h Fs(and)g Fh(pos)g Fs(are)f(to)q(o)h(short,)179 1641 y(MPI)p 271 1641 14 2 v 16 w(INQCAR)l(T)h(rep)q(orts)d(an)i(error.)75 1739 y Ft(RETURN)j(V)-6 b(ALUE)179 1796 y Fs(Up)q(on)18 b(successful)h(completion)g Ft(MPI)p 858 1796 16 2 v 18 w(INQCAR)l(T)f Fs(returns)f(the)h(n)o(um)o(b)q(er)g(of)g(dimensions) h(of)179 1852 y(the)c(cartesian)g(structure,)g Fh(ndim)p Fs(.)k(A)c(v)m(alue)i(of)e(-1)g(is)g(returned)h(if)g(an)f(error)f(o)q (ccurs.)p eop %%Page: 97 102 97 101 bop 1830 -100 a Fs(97)75 45 y Ft(NAME)179 102 y(MPI)p 288 102 16 2 v 18 w(INQGR)90 b Fs(Lo)q(ok)15 b(up)h(size)g(of)f(graph)g(mapping)h(and)f(p)q(osition)h(of)f(calling)i (pro)q(cess.)75 200 y Ft(SYNOPSIS)179 256 y Fs(in)o(teger)e(function)h (MPI)p 599 256 14 2 v 17 w(INQGR)g(\(gid,)f(no)q(des\))75 354 y Ft(INPUT)i(AR)o(GUMENTS)179 410 y Fs(gid)334 b(the)15 b(ID)h(n)o(um)o(b)q(er)f(of)g(the)g(pro)q(cess)h(group)f(with)g(a)g (graph)g(structure.)75 508 y Ft(OUTPUT)k(AR)o(GUMENTS)179 565 y Fs(no)q(des)282 b(the)15 b(total)g(n)o(um)o(b)q(er)h(of)e(no)q (des)i(in)g(the)f(graph)g(structure.)75 663 y Ft(DESCRIPTION)179 719 y Fs(After)24 b(the)h(pro)q(cesses)f(of)h(the)f(group)g Fh(gid)h Fs(ha)o(v)o(e)f(b)q(een)h(structured)g(as)f(a)g(graph)g (\(function)179 776 y(MPI)p 271 776 V 16 w(GRAPH\),)f(the)g(function)h (MPI)p 870 776 V 17 w(INQGR)g(tells)g(the)g(calling)h(pro)q(cess)e(the) h(size)g(of)f(the)179 832 y(graph)c(and)h(its)h(o)o(wn)e(no)q(de)i(n)o (um)o(b)q(er.)34 b(No)q(des)20 b(are)g(n)o(um)o(b)q(ered)g(from)g(1)f (to)g Fh(nodes)h Fs(\(cf.)33 b(func-)179 889 y(tion)15 b(MPI)p 364 889 V 17 w(GRAPH\).)75 987 y Ft(RETURN)k(V)-6 b(ALUE)179 1043 y Fs(Up)q(on)16 b(successful)h(completion)g Ft(MPI)p 852 1043 16 2 v 18 w(INQGR)f Fs(returns)f(the)h(no)q(de)h(n)o (um)o(b)q(er)f Fh(i)f Fs(of)g(the)h(calling)179 1099 y(pro)q(cess,)e(1)e Fo(\024)h Fr(i)f Fo(\024)h Fr(nodes)p Fs(.)20 b(If)14 b(the)g(calling)i(pro)q(cess)e(is)h(not)e(assigned)i(a) e(no)q(de)i(in)g(the)f(graph,)f(zero)179 1156 y(is)i(returned.)21 b(A)15 b(v)m(alue)h(of)f(-1)g(is)h(returned)g(if)f(an)g(error)g(o)q (ccurs.)p eop %%Page: 98 103 98 102 bop 75 -100 a Fs(98)663 b Fq(APPENDIX)16 b(A.)30 b(PR)o(OCESS)16 b(TOPOLOGY)g(R)o(OUTINES)75 45 y Ft(NAME)179 102 y(MPI)p 288 102 16 2 v 18 w(INQPID)74 b Fs(Lo)q(ok)15 b(up)h(PID)f(n)o(um)o(b)q(ers)h(of)f(selected)h(pro)q(cesses.)75 200 y Ft(SYNOPSIS)179 256 y Fs(in)o(teger)f(function)h(MPI)p 599 256 14 2 v 17 w(INQPID)g(\(gid,)f(npro)q(c,)g(co)q(ord,)g(plist\)) 179 312 y(in)o(teger)g(gid)179 369 y(in)o(teger)g(npro)q(c)179 425 y(in)o(teger)g(co)q(ord\()p Fo(\003)p Fs(\))179 482 y(in)o(teger)g(plist\()p Fo(\003)p Fs(\))75 580 y Ft(INPUT)i(AR)o (GUMENTS)179 636 y Fs(gid)334 b(the)22 b(ID)g(n)o(um)o(b)q(er)g(of)f (the)h(pro)q(cess)g(group)f(with)h(a)f(cartesian)h(or)f(graph)573 693 y(structure.)179 749 y(npro)q(c)282 b(the)22 b(n)o(um)o(b)q(er)g (of)g(pro)q(cesses)g(for)f(whic)o(h)i(the)f(PID)f(n)o(um)o(b)q(ers)i (are)e(to)g(b)q(e)573 806 y(lo)q(ok)o(ed)16 b(up)f(\(see)h(b)q(elo)o (w\).)179 862 y(co)q(ord)284 b(the)42 b(logical)h(pro)q(cess)g(co)q (ordinates)f(of)f(the)h(sp)q(eci\014ed)j(pro)q(cesses)573 918 y(\(see)15 b(b)q(elo)o(w\).)75 1016 y Ft(OUTPUT)k(AR)o(GUMENTS)179 1073 y Fs(plist)309 b(the)15 b(list)h(of)f(PID)g(n)o(um)o(b)q(ers)h(of) f(the)g(sp)q(eci\014ed)i(pro)q(cesses.)75 1171 y Ft(DESCRIPTION)179 1227 y Fs(Usually)c(a)f(pro)q(cess)h(only)g(comm)o(unicates)f(with)h(a) f(relativ)o(ely)h(small)g(n)o(um)o(b)q(er)g(of)f(other)g(pro)q(cesses) 179 1284 y(in)23 b(a)f(large)g(pro)q(cess)g(structure)g(\(a)f (cartesian)i(structure)f(or)f(a)h(graph\).)40 b(Giv)o(en)23 b(the)f(logical)179 1340 y(co)q(ordinates)d(of)f(those)g(other)g(pro)q (cesses,)h(MPI)p 1028 1340 V 16 w(INQPID)h(lo)q(oks)e(up)h(the)g (corresp)q(onding)g(PID)179 1397 y(n)o(um)o(b)q(ers.)h(Those)15 b(PID)g(n)o(um)o(b)q(ers)h(can)f(then)h(b)q(e)f(used)h(for)f(the)g (message{passing.)179 1472 y(The)f(pro)q(cesses)h(of)f(whic)o(h)h(the)f (PID)g(n)o(um)o(b)q(ers)g(are)g(required)i(are)d(sp)q(eci\014ed)k(b)o (y)d(the)g(input)h(argu-)179 1528 y(men)o(ts)g Fh(nproc)f Fs(and)h Fh(coord)p Fs(.)20 b(Tw)o(o)14 b(mec)o(hanisms)i(are)f(a)o(v)m (ailable:)243 1622 y(1.Separately)33 b(sp)q(eci\014ed)i(pro)q(cesses:) 55 b Fh(nproc)31 b Fs(is)j(set)e(to)g(the)g(n)o(um)o(b)q(er)h(of)g(pro) q(cesses)279 1679 y(1)18 b Fo(\024)g Fr(npr)q(oc)p Fs(.)30 b(V)l(ector)18 b Fh(coord)g Fs(con)o(tains)h(the)g(logical)g(co)q (ordinates)g(for)f(eac)o(h)h(pro)q(cess.)30 b(In)279 1735 y(p)q(erio)q(dic)22 b(directions)f(the)f(co)q(ordinates)g(are)f (in)o(terpreted)h(mo)q(dulo)h(the)f(n)o(um)o(b)q(er)g(of)f(pro-)279 1791 y(cesses)f(in)h(the)f(corresp)q(onding)h(direction)g(\(torus)e (top)q(ology\).)28 b(As)18 b(an)g(example,)h(assume)279 1848 y(the)e(pro)q(cesses)g(are)g(mapp)q(ed)h(as)e(a)h(t)o(w)o (o{dimensional)g(torus,)g(and)g(the)g(PID)g(n)o(um)o(b)q(ers)g(of)279 1904 y(three)j(pro)q(cesses)h(are)f(to)f(b)q(e)i(lo)q(ok)o(ed)g(up.)35 b(Then,)21 b Fh(nproc)f Fs(is)h(set)f(to)f(3,)i(and)f(the)g(\014rst)g (6)279 1961 y(en)o(tries)15 b(of)g Fh(coord)g Fs(are)f(set)h(to)g Fr(i)829 1968 y Fa(1)848 1961 y Fr(;)8 b(j)888 1968 y Fa(1)907 1961 y Fr(;)g(i)944 1968 y Fa(2)963 1961 y Fr(;)g(j)1003 1968 y Fa(2)1021 1961 y Fr(;)g(i)1058 1968 y Fa(3)1077 1961 y Fr(;)g(j)1117 1968 y Fa(3)1135 1961 y Fs(.)279 2026 y(Similarly)l(,)14 b(if)e(the)f(mapping)h(w)o(as)f(done)h(with)f (MPI)p 1153 2026 V 17 w(GRAPH,)g(the)g(en)o(tries)h(of)f(v)o(ector)g Fh(coord)279 2082 y Fs(are)k(set)g(to)f(the)h(logical)i(no)q(de)f(n)o (um)o(b)q(ers)f(of)g(the)g(sp)q(eci\014ed)j(graph)c(pro)q(cesses.)243 2155 y(2.No)30 b(individual)j(selection:)52 b(in)31 b(this)g(case)f Fh(nproc)g Fs(is)g(set)h(to)e(a)h(negativ)o(e)h(n)o(um)o(b)q(er)279 2212 y Fr(npr)q(oc)17 b Fo(\024)h(\000)p Fs(1.)29 b(V)l(ector)18 b Fh(plist)g Fs(returns)g(the)g(PID)h(n)o(um)o(b)q(ers)f(of)g(the)g Fi(\014rst)g Fh(|nproc|)f Fs(pro-)279 2268 y(cesses.)30 b(The)19 b(v)o(ector)f Fh(coord)g Fs(is)h(not)f(used)h(in)h(this)f (case.)30 b(Note)18 b(that)g(this)h(feature)g(do)q(es)279 2324 y(not)13 b(scale)i(to)f(v)o(ery)f(high)i(pro)q(cess)g(n)o(um)o(b)q (ers.)k(In)c(small)g(applications,)h(ho)o(w)o(ev)o(er,)d(it)h(can)g(b)q (e)279 2381 y(used)i(to)e(get)h(a)g(global)h(list)g(of)e(all)j(PID)e(n) o(um)o(b)q(ers)g(in)h(the)g(map.)75 2516 y Ft(RETURN)j(V)-6 b(ALUE)179 2573 y Fs(Up)q(on)15 b(successful)h(completion)g Ft(MPI)p 849 2573 16 2 v 18 w(INQPID)e Fs(returns)h(0.)20 b(A)14 b(v)m(alue)i(of)f(-1)f(is)i(returned)f(if)g(an)179 2629 y(error)f(o)q(ccurs.)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF .