%!PS-Adobe-2.0 %%Creator: dvips 5.515 Copyright 1986, 1993 Radical Eye Software %%Title: draft.dvi %%CreationDate: Mon May 10 14:45:24 1993 %%Pages: 107 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips -o draft.ps draft.dvi %DVIPSSource: TeX output 1993.05.10:1322 %%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<0C001C00EC000C000C000C000C000C000C000C000C000C000C00 0C000C000C000C000C00FFC00A137D9211>49 D<1F0060C06060F070F030603000700070 006000C001C00180020004000810101020207FE0FFE00C137E9211>I<0FC03070703870 3870380038003000E00FC0007000380018001C601CF01CF018E03860701FC00E137F9211 >I E /Fb 1 99 df<7C000C00180018001800180030003700388030C060C060C060C060 C0C180C180C1004300660038000A147E930F>98 D E /Fc 3 81 df<0FFF8000F80000F00000F00000F00000F00000F00001E00001E00001E00001E00001 E00001E00003C00003C00003C00003C00003C00003C00007800007800007800007800007 80000780000F00000F8000FFF800111C7F9B0F>73 D<0FF80007FC00F8000FC000BC000F 8000BC00178000BC00178000BC00278000BC002780011E004F00011E004F00011E008F00 011E008F00011E010F00010F010F00020F021E00020F021E00020F041E00020F041E0002 07881E000207901E000407903C000407A03C000407A03C000407C03C000403C03C000403 803C000C038078001E03007C00FF8307FF80261C7E9B26>77 D<0FFFFC0000F80F0000F0 038000F003C000F001C000F001C000F001C001E003C001E003C001E003C001E0038001E0 070001E00E0003C03C0003FFE00003C0000003C0000003C0000003C00000078000000780 0000078000000780000007800000078000000F0000000F800000FFF000001A1C7E9B1C> 80 D E /Fd 29 123 df<60F0F06004047C830C>58 D<60F0F070101010102020408004 0C7C830C>I<00000C0000000C0000001C0000001C0000003C0000007C0000005C000000 9C0000008E0000010E0000010E0000020E0000040E0000040E0000080E0000080E000010 0E0000200E00003FFE000040070000400700008007000100070001000700020007000200 0700060007001E000700FF807FF01C1D7F9C1F>65 D<01FFFF80003C01E0003800700038 00380038001C0038001C0070001C0070001E0070001E0070001E00E0001E00E0001E00E0 001E00E0001E01C0003C01C0003C01C0003C01C000380380007803800070038000F00380 00E0070001C0070003800700070007001C000E007800FFFFC0001F1C7E9B22>68 D<01FC00FF80001C001C00002E001800002E001000002E00100000270010000047002000 0043002000004380200000438020000081C040000081C040000081C040000080E0400001 00E080000100708000010070800001007080000200390000020039000002003900000200 1D000004001E000004000E000004000E00000C000E00001C00040000FF80040000211C7E 9B21>78 D<0003F800000E0E000038038000E001C001C001C0038000E0070000E00F0000 F01E0000F01C0000F03C0000F03C0000F0780000F0780000F0780000F0F00001E0F00001 E0F00001E0F00003C0F00003C0F0000780F0000780F0000F0070000E0070001C00380038 003C0070001C01C0000707800001FC00001C1E7E9C20>I<01FFFE00003C03C0003800E0 003800F00038007000380070007000F0007000F0007000F0007001E000E001C000E00780 00E01E0000FFF00001C0300001C0180001C01C0001C01C0003801C0003801C0003801C00 03801C0007003C0007003C0807003C0807003C100F001E10FFE00E20000007C01D1D7E9B 20>82 D<1FFFFFF01C03807030070030200700206007002040070020400E0020800E0020 800E0020000E0000001C0000001C0000001C0000001C0000003800000038000000380000 003800000070000000700000007000000070000000E0000000E0000000E0000000E00000 01E000007FFF00001C1C7F9B18>84 D<01FFC0FF80001E003C00001E003000000E002000 000F00400000070080000007010000000782000000038400000003C800000001D0000000 01F000000000E000000000E000000000F000000001700000000270000000043800000008 38000000103C000000201C000000401E000000800E000001800E000003000F0000060007 00001E000F8000FF803FF000211C7F9B22>88 D<01E3000717000C0F00180F00380E0030 0E00700E00700E00E01C00E01C00E01C00E01C00E03880E03880E038806078803199001E 0E0011127E9116>97 D<3F00070007000E000E000E000E001C001C001C001C0039E03A30 3C1838187018701C701C701CE038E038E038E030E070E060E0C061C023001E000E1D7E9C 12>I<01F0030C0E0C1C1E383C301870007000E000E000E000E000E000E0046008601030 601F800F127E9112>I<0007E00000E00000E00001C00001C00001C00001C00003800003 8000038000038001E7000717000C0F00180F00380E00300E00700E00700E00E01C00E01C 00E01C00E01C00E03880E03880E038806078803199001E0E00131D7E9C16>I<01F00708 0C0818043808300870307FC0E000E000E000E000E000E0046008601030600F800E127E91 13>I<007180018B800307800607800E07000C07001C07001C0700380E00380E00380E00 380E00381C00381C00381C00183C0008F800073800003800003800007000607000F06000 F0E000E180007E0000111A7F9114>103 D<01C003C003C0018000000000000000000000 00001C00270047004700870087000E000E001C001C001C00380038803880708071003200 1C000A1C7E9B0E>105 D<0007000F000F00060000000000000000000000000070009C01 0C020C021C041C001C001C0038003800380038007000700070007000E000E000E000E001 C061C0F180F300E6007C001024809B11>I<0FC00001C00001C000038000038000038000 0380000700000700000700000700000E07000E18800E21C00E23C01C47801C83001D0000 1E00003F800039C00038E00038E00070E10070E10070E10070E200E06200603C00121D7E 9C16>I<1F800380038007000700070007000E000E000E000E001C001C001C001C003800 3800380038007000700070007000E400E400E400E40064003800091D7E9C0C>I<381F00 4E61804681C04701C08F01C08E01C00E01C00E01C01C03801C03801C03801C0700380710 380710380E10380E2070064030038014127E9119>110 D<00F800030C000E06001C0300 180300300300700380700380E00700E00700E00700E00E00E00E00E01C00601800603000 30E0000F800011127E9114>I<07078009C86008D03008E03011C03011C03801C03801C0 380380700380700380700380600700E00700C00701800783000E86000E78000E00000E00 001C00001C00001C00001C00003C0000FF8000151A819115>I<383C4E424687470F8E1E 8E0C0E000E001C001C001C001C0038003800380038007000300010127E9113>114 D<01F0060C04040C0E180C1C001F000FE00FF003F80038201C7018F018F010803060601F 800F127E9113>I<00C001C001C001C00380038003800380FFF00700070007000E000E00 0E000E001C001C001C001C00382038203840384018800F000C1A80990F>I<1C02270747 074703870187010E010E011C021C021C021C041804180818081C100C2007C010127E9114 >118 D<07878008C84010F0C020F1E020E3C040E18000E00000E00001C00001C00001C0 0001C000638080F38080F38100E5810084C60078780013127E9118>120 D<1C00C02701C04701C04701C08703808703800E03800E03801C07001C07001C07001C07 00180E00180E00180E001C1E000C3C0007DC00001C00001800603800F03000F06000E0C0 004180003E0000121A7E9114>I<038107C10FE6081C1008001000200040008001000200 0400080410042C1877F843F081C010127E9113>I E /Fe 7 113 df<018003801F80E3800380038003800380038003800380038003800380038003800380 03800380038003800380038003800380038007C07FFC0E1C7C9B17>49 D73 D77 D80 D105 D109 D112 D E /Ff 51 123 df<0001FC000703000C03001C07001C0300180000380000380000380000380000700007 FFFC00701C00701C00701C00E03800E03800E03800E03800E07001C07001C07001C07001 C0E201C0E201C0E20380E4038064038038038000030000070000060000C60000E40000CC 00007000001825819C17>12 D<00030006000800180030006000C000C001800300030006 0006000C000C001C0018001800380030003000700070006000600060006000E000E000E0 00E000E0006000600060006000600020003000100008000800102A7B9E11>40 D<001000100008000C000400060006000600060006000700070007000700070006000600 060006000E000E000C000C001C001800180038003000300060006000C000C00180030003 0006000C00180010006000C000102A809E11>I<183878380808101020404080050C7D83 0D>44 DI<3078F06005047C830D>I<003C0000C600018300 0303000603000603800E03800C03801C03801C0300380700380700380700380700700E00 700E00700E00700E00E01C00E01C00E01C00E03800E03800E03000C06000E0600060C000 7180001E0000111D7B9B15>48 D<00020006000C001C007C039C00380038003800380070 00700070007000E000E000E000E001C001C001C001C003800380038003800780FFF00F1C 7C9B15>I<003C0000C3000101800201800201C00441C00441C00841C00841C00841C010 83801083801107000E0600000C0000180000300000C00001000006000008000010010010 02002002004006007E0C00C7F80083F80080E000121D7C9B15>I<003C0000C600018300 0303000603000E03000C03801C03801C03001C0300380700380700380700380F00380E00 181E00181E000C6C00079C00001C00001800003800003000006000E0C000E0C000818000 8600007C0000111D7B9B15>57 D<060F0F06000000000000000000003078F06008127C91 0D>I<0000180000001800000038000000380000007800000078000000B8000001B80000 0138000002380000023C0000041C0000041C0000081C0000181C0000101C0000201C0000 201C00007FFC0000401C0000801C0001801C0001001C0002001C0002001C0004000E000C 000E001C001E00FF00FFC01A1D7E9C1F>65 D<01FFFE00003C0780003803C0003801C000 3801C0003801C0007001C0007003C0007003C00070078000E0070000E00E0000E03C0000 FFF80001C01C0001C00E0001C00F0001C00F0003800F0003800F0003800F0003800F0007 001E0007001C0007003C00070078000E01E000FFFF80001A1C7D9B1D>I<0003F020001E 0C60003002E000E003C001C001C0038001C0070000C00E0000801E0000801C0000803C00 00803C000000780000007800000078000000F0000000F0000000F0000000F0000000F000 0400F0000400F0000400F0000800700008007000100038002000180040000C0180000706 000001F800001B1E7A9C1E>I<01FFFE00003C0780003801C0003801C0003800E0003800 E0007000F00070007000700070007000F000E000F000E000F000E000F000E000F001C001 E001C001E001C001E001C001C0038003C003800380038007800380070007000E0007001C 0007003800070070000E01C000FFFF00001C1C7D9B1F>I<01FFFFE0003C00E000380060 0038004000380040003800400070004000700040007020400070200000E0400000E04000 00E0C00000FFC00001C0800001C0800001C0800001C08000038101000380010003800200 03800200070004000700040007000C00070018000E007800FFFFF0001B1C7D9B1C>I<01 FFFFC0003C01C0003800C000380080003800800038008000700080007000800070208000 70200000E0400000E0400000E0C00000FFC00001C0800001C0800001C0800001C0800003 810000038000000380000003800000070000000700000007000000070000000F000000FF F000001A1C7D9B1B>I<0003F020001E0C60003002E000E003C001C001C0038001C00700 00C00E0000801E0000801C0000803C0000803C000000780000007800000078000000F000 0000F0000000F001FFC0F0001E00F0001C00F0001C00F0001C00F0001C00700038007000 380038003800180078000C0090000707100001F800001B1E7A9C20>I<01FFCFFE003C01 E0003801C0003801C0003801C0003801C00070038000700380007003800070038000E007 0000E0070000E0070000FFFF0001C00E0001C00E0001C00E0001C00E0003801C0003801C 0003801C0003801C00070038000700380007003800070038000F007800FFE7FF001F1C7D 9B1F>I<01FFC0003C0000380000380000380000380000700000700000700000700000E0 0000E00000E00000E00001C00001C00001C00001C0000380000380000380000380000700 000700000700000700000F0000FFE000121C7E9B10>I<01FE0007F8003E000780002E00 0F00002E001700002E001700002E002700004E002E00004E004E00004E004E00004E008E 00008E011C00008E011C00008E021C00008E021C00010704380001070438000107083800 01071038000207107000020720700002072070000207407000040740E000040780E00004 0700E0000C0700E0001C0601E000FF861FFC00251C7D9B25>77 D<01FFFC00003C070000 380380003801C0003801C0003801C0007003C0007003C0007003C00070038000E0078000 E0070000E00E0000E0380001FFE00001C0000001C0000001C00000038000000380000003 80000003800000070000000700000007000000070000000F000000FFE000001A1C7D9B1C >80 D<000F8400304C00403C008018010018030018030018060010060010060000070000 07000003E00003FC0001FF00007F800007C00001C00001C00000C00000C02000C02000C0 600180600180600300600200F00400CC180083E000161E7D9C17>83 D<1FFFFFC01C0701C0300E00C0200E0080600E0080400E0080401C0080801C0080801C00 80001C000000380000003800000038000000380000007000000070000000700000007000 0000E0000000E0000000E0000000E0000001C0000001C0000001C0000001C0000003C000 007FFE00001A1C799B1E>I<7FF0FF800F001C000E0018000E0010000E0010000E001000 1C0020001C0020001C0020001C0020003800400038004000380040003800400070008000 700080007000800070008000E0010000E0010000E0010000E0020000E0020000E0040000 E00400006008000030300000104000000F800000191D779B1F>II<03CC063C0C3C181C3838303870387038E070E070E070E070E0E2C0E2C0E2 61E462643C380F127B9115>97 D<3F00070007000E000E000E000E001C001C001C001C00 39C03E60383038307038703870387038E070E070E070E060E0E0C0C0C1C0618063003C00 0D1D7B9C13>I<01F007080C08181C3838300070007000E000E000E000E000E000E008E0 10602030C01F000E127B9113>I<001F8000038000038000070000070000070000070000 0E00000E00000E00000E0003DC00063C000C3C00181C00383800303800703800703800E0 7000E07000E07000E07000E0E200C0E200C0E20061E4006264003C3800111D7B9C15>I< 01E007100C1018083810701070607F80E000E000E000E000E000E0086010602030C01F00 0D127B9113>I<0003C0000670000C70001C60001C00001C000038000038000038000038 0000380003FF8000700000700000700000700000700000E00000E00000E00000E00000E0 0001C00001C00001C00001C00001C000038000038000038000030000030000070000C600 00E60000CC00007800001425819C0D>I<00F3018F030F06070E0E0C0E1C0E1C0E381C38 1C381C381C383830383038187818F00F700070007000E000E0C0C0E1C0C3007E00101A7D 9113>I<0FC00001C00001C0000380000380000380000380000700000700000700000700 000E78000E8C000F0E000E0E001C0E001C0E001C0E001C0E00381C00381C00381C003838 00703880703880707080707100E03200601C00111D7D9C15>I<01800380010000000000 000000000000000000001C002600470047008E008E000E001C001C001C00380038007100 71007100720072003C00091C7C9B0D>I<0006000E000600000000000000000000000000 0000F00118021802180438043800380038007000700070007000E000E000E000E001C001 C001C001C003800380C300E700CE0078000F24819B0D>I<0FC00001C00001C000038000 0380000380000380000700000700000700000700000E0F000E11000E23800E43801C8300 1C80001D00001E00003F800039C00038E00038E00070E20070E20070E20070E400E06400 603800111D7D9C13>I<1F800380038007000700070007000E000E000E000E001C001C00 1C001C0038003800380038007000700070007000E400E400E400E40068003800091D7C9C 0B>I<3C1E0780266318C04683A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C 0701C01C0701C01C0701C01C070380380E0388380E0388380E0708380E0710701C032030 0C01C01D127C9122>I<3C3C002646004687004707008E07008E07000E07000E07001C0E 001C0E001C0E001C1C00381C40381C40383840383880701900300E0012127C9117>I<01 E007180C0C180C380C300E700E700EE01CE01CE01CE018E038E030E06060C031801E000F 127B9115>I<07870004D98008E0C008E0C011C0E011C0E001C0E001C0E00381C00381C0 0381C00381800703800703000707000706000E8C000E70000E00000E00001C00001C0000 1C00001C00003C0000FF8000131A7F9115>I<3C3C26C2468747078E068E000E000E001C 001C001C001C0038003800380038007000300010127C9112>114 D<01F006080C080C1C18181C001F001FC00FF007F0007800386030E030C030806060C01F 000E127D9111>I<00C001C001C001C00380038003800380FFE00700070007000E000E00 0E000E001C001C001C001C00384038403840388019000E000B1A7D990E>I<1E03002707 00470700470700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C003838803838 801838801839001C5900078E0011127C9116>I<1E06270E470E4706870287020E020E02 1C041C041C041C0818083808181018200C4007800F127C9113>I<1E0183270387470387 4703838707018707010E07010E07011C0E021C0E021C0E021C0E04180C04181C04181C08 1C1C100C263007C3C018127C911C>I<070E0019910010E38020E38041C30041C00001C0 0001C000038000038000038000038000070200670200E70400CB04008B080070F0001112 7D9113>I<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C38383838183818 381C7007F00070007000E0E0C0E1C0818047003C00101A7C9114>I<038207C20FEC0838 1008001000200040008001000200040008081008383067F043E081C00F127D9111>I E /Fg 2 36 df34 DI E /Fh 1 4 df<020002000200C218F2783AE00F800F80 3AE0F278C2180200020002000D0E7E8E12>3 D E /Fi 4 21 df0 D<01800180018001804182F18F399C0FF003C003C00FF0399CF18F418201 8001800180018010127E9215>3 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7F FE7FFE3FFC1FF80FF003C010107E9115>15 D<000001800000078000001E000000780000 01E00000078000001E00000078000001E00000078000001E00000078000000E000000078 0000001E0000000780000001E0000000780000001E0000000780000001E0000000780000 001E00000007800000018000000000000000000000000000000000000000000000000000 0000007FFFFF00FFFFFF8019227D9920>20 D E /Fj 67 126 df<60F0F0F0F0F0F0F0F0 F0F0F0F0F0F0F0600000000060F0F0600419779816>33 DI<0387000387000387000387000387000387007F FFC0FFFFE0FFFFE0070E00070E00070E000E1C000E1C000E1C000E1C00FFFFE0FFFFE07F FFC01C38001C38001C38001C38001C38001C380013197F9816>I<03800007E0000FE000 1E70001C70001C70001C70001C77E01CE7E01DE7E00FC7000F8E000F0E001E0E003F1C00 7F1C00739C00E3F800E1F800E0F1C0E0F1C071F9C07FFFC03F9F801E070013197F9816> 38 D<30787C3C1C1C1C1C3878F0E040060D789816>I<00E001E0038007000E001C001C00 38003800700070007000E000E000E000E000E000E000E000E000E0007000700070003800 38001C001C000E000700038001E000E00B217A9C16>II<01C00001C00001C00001C000 71C700F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF8071C70001C00001C000 01C00001C00011127E9516>I<387C7E7E3E0E1E1C78F060070B798416>44 DI<70F8F8F8700505788416>I<0001800003800003 80000700000700000E00000E00001C00001C0000380000380000700000700000E00000E0 0001C00001C0000380000380000700000700000E00000E00001C00001C00003800003800 00700000700000E00000E00000C0000011207E9C16>I<03E0000FF8001FFC001E3C0038 0E00780F00700700700700E00380E00380E00380E00380E00380E00380E00380E00380F0 0780700700700700780F003C1E001E3C001FFC000FF80003E00011197E9816>I<018003 80038007800F807F80FF8073800380038003800380038003800380038003800380038003 80038003807FF87FFC7FF80E197C9816>I<07E0001FF8003FFC00783E00E00700F00780 F00380600380000380000380000700000700000E00001C0000380000700000E00001C000 0380000F00001E03803803807FFF80FFFF807FFF8011197E9816>I<387C7C7C38000000 000000000038787C7C3C1C1C3870E0400618799116>59 D<7FFF00FFFF80FFFF80000000 000000000000000000000000FFFF80FFFF807FFF00110B7E9116>61 D<00E00001F00001F00001B00001B00003B80003B80003B800031800071C00071C00071C 00071C00071C000E0E000E0E000FFE000FFE001FFF001C07001C07001C07007F1FC0FF1F E07F1FC013197F9816>65 D<7FF800FFFE007FFF001C0F001C07801C03801C03801C0380 1C07801C07001FFF001FFE001FFE001C1F001C03801C03C01C01C01C01C01C01C01C01C0 1C03C01C07807FFF80FFFF007FFC0012197F9816>I<01F18007FB800FFF801F0F803C07 80380380700380700380F00000E00000E00000E00000E00000E00000E00000E00000F000 007003807003803803803C07001F0F000FFE0007FC0001F00011197E9816>I<7FF800FF FE007FFF001C0F001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00E01C00E01C 00E01C00E01C00E01C00E01C01C01C01C01C03C01C07801C0F807FFF00FFFE007FF80013 19809816>I<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C00 1C1C001FFC001FFC001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E0 7FFFE0FFFFE07FFFE013197F9816>I<03E30007FF000FFF001E1F003C0F003807007007 00700700F00000E00000E00000E00000E00000E03F80E07FC0E03F80F007007007007007 00380F003C0F001E1F000FFF0007F70003E70012197E9816>71 D73 D<7F0FE0FF8FF07F0FE01C07801C0F001C0E001C1C001C3C 001C78001CF0001CE0001DF0001FF0001FF8001F38001E1C001C1C001C0E001C0E001C07 001C07001C03807F07E0FF8FF07F07E01419809816>75 DII<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC7001DC7001C C7001CC7001CE7001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C 17007F1F00FF9F007F0F0013197F9816>I<1FFC003FFE007FFF00780F00F00780E00380 E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380 E00380F00780F00780780F007FFF003FFE001FFC0011197E9816>I<7FF800FFFE007FFF 001C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FF8 001C00001C00001C00001C00001C00001C00001C00007F0000FF80007F000012197F9816 >I<7FE000FFF8007FFC001C1E001C0F001C07001C07001C07001C07001C0F001C1E001F FC001FF8001FFC001C1C001C0E001C0E001C0E001C0E001C0E201C0E701C0E707F07E0FF 87E07F03C014197F9816>82 D<07E3001FFF003FFF00781F00F00700E00700E00700E000 00F000007800003F80001FF00007FC0000FE00000F00000700000380000380600380E003 80E00700F80F00FFFE00FFFC00C7F00011197E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0 E0E0E0E0E0E0E0E000E00000E00000E00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000E00007FC000FFE0007FC0013197F9816>I<7F07F0 FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C0 1C01C01C01C01C01C01C01C01C01C01C01C00E03800E038007070007FF0003FE0000F800 1519809816>I87 D<7F1F807F3F807F1F800E1E000E1C00073C00 07380003B80003F00001F00001E00000E00001E00001F00003F00003B80007B800071C00 071C000E0E000E0E001C07007F1FC0FF1FE07F1FC013197F9816>II<7FFF80FFFF80FFFF80E00700E00F00E01E00E01C00003C0000780000700000F00001 E00001C00003C0000780000700000F00001E03801C03803C0380780380700380FFFF80FF FF80FFFF8011197E9816>I95 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<003000780078003000000000000000001FF81FF81F F80038003800380038003800380038003800380038003800380038003800380038003800 3800386070F0F0FFE07FC03F800D237E9916>I<7E0000FE00007E00000E00000E00000E 00000E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF0000FF0000FF8000F BC000F1E000E0E000E07000E07807F87F0FFCFF07F87F01419809816>III<7E3C00FEFE007F FF000F87800F03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E 03807FC7F0FFE7F87FC7F01512809116>I<03E0000FF8001FFC003C1E00780F00700700 E00380E00380E00380E00380E00380F00780700700780F003C1E001FFC000FF80003E000 11127E9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E00700E00700E00700E00 700E00700E00700E00E00F01E00F83C00FFF800EFF000E3C000E00000E00000E00000E00 000E00000E00007FC000FFE0007FC000141B809116>I114 D<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C 600EE00EF00EF81EFFFCFFF8C7E00F127D9116>I<030000070000070000070000070000 7FFF00FFFF00FFFF00070000070000070000070000070000070000070000070100070380 07038007038007870003FE0001FC0000F80011177F9616>I<7E1F80FE3F807E1F800E03 800E03800E03800E03800E03800E03800E03800E03800E03800E03800E03800E0F800FFF F007FBF803E3F01512809116>I<7F1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E 0E00071C00071C00071C00071C0003B80003B80003B80001F00001F00000E00013127F91 16>II<7F1FC07F3FC07F1F C00F1C00073C0003B80003F00001F00000E00001E00001F00003B800073C00071C000E0E 007F1FC0FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E07000E0E000E 0E00070E00071C00071C00039C00039C0003980001B80001B80000F00000F00000F00000 E00000E00000E00001C00079C0007BC0007F80003F00003C0000131B7F9116>I<3FFFC0 7FFFC07FFFC0700780700F00701E00003C0000780001F00003E0000780000F00001E01C0 3C01C07801C0FFFFC0FFFFC0FFFFC012127F9116>I<001F80007F8000FF8001E00001C0 0001C00001C00001C00001C00001C00001C00001C00001C00003C0007F8000FF0000FF00 007F800003C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001E0 0000FF80007F80001F8011207E9C16>II<7C0000FF0000FF800003C00001C00001 C00001C00001C00001C00001C00001C00001C00001C00001E00000FF00007F80007F8000 FF0001E00001C00001C00001C00001C00001C00001C00001C00001C00001C00003C000FF 8000FF00007C000011207E9C16>I E /Fk 82 126 df<70F8F8F8F8F8F8F8F8F8F8F8F8 F8F8F8F870000000000070F8F8F870051C779B18>33 D<030600078F00078F00078F0007 8F00078F00078F007FFFC0FFFFE0FFFFE07FFFC00F1E000F1E000F1E000F1E000F1E000F 1E007FFFC0FFFFE0FFFFE07FFFC01E3C001E3C001E3C001E3C001E3C001E3C000C180013 1C7E9B18>35 D<3803007C07807C0780EE0F80EE0F00EE0F00EE1F00EE1E00EE1E00EE3E 007C3C007C3C00387C0000780000780000F80000F00001F00001E00001E00003E00003C0 0003C00007C0000783800787C00F87C00F0EE00F0EE01F0EE01E0EE01E0EE03E0EE03C07 C03C07C018038013247E9F18>37 D<01C00007E0000FF0000E70001C38001C38001C3800 1C38001C73F01C73F01CE3F00FE3800FC7000F87000F07001F0E003F0E007B8E0073DC00 E1DC00E0F800E0F800E07070E0787070FC707FFFE03FCFE00F03C0141C7F9B18>I<0070 00F001E003C007800F001E001C00380038007000700070007000E000E000E000E000E000 E000E000E0007000700070007000380038001C001E000F00078003C001F000F000700C24 799F18>40 D<6000F00078003C001E000F000780038001C001C000E000E000E000E00070 007000700070007000700070007000E000E000E000E001C001C0038007800F001E003C00 7800F00060000C247C9F18>I<01C00001C00001C00001C000C1C180F1C780F9CF807FFF 001FFC0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001C00001C0 0011147D9718>I<00600000F00000F00000F00000F00000F00000F00000F0007FFFC0FF FFE0FFFFE07FFFC000F00000F00000F00000F00000F00000F00000F00000600013147E97 18>I<1C3E7E7F3F1F070E1E7CF860080C788518>I<7FFF00FFFF80FFFF807FFF0011047D 8F18>I<3078FCFC78300606778518>I<000300000780000780000F80000F00001F00001E 00001E00003E00003C00007C0000780000780000F80000F00001F00001E00003E00003C0 0003C00007C0000780000F80000F00000F00001F00001E00003E00003C00003C00007C00 00780000F80000F00000F0000060000011247D9F18>I<01F00007FC000FFE001F1F001C 07003803807803C07001C07001C0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E0 00E0E000E0F001E07001C07001C07803C03803801C07001F1F000FFE0007FC0001F00013 1C7E9B18>I<01800380038007800F803F80FF80FB804380038003800380038003800380 03800380038003800380038003800380038003807FFCFFFE7FFC0F1C7B9B18>I<03F000 0FFE003FFF007C0F807003C0E001C0F000E0F000E06000E00000E00000E00001C00001C0 0003C0000780000F00001E00003C0000780000F00001E00007C0000F80001E00E03C00E0 7FFFE0FFFFE07FFFE0131C7E9B18>I<07F8001FFE003FFF007807807803C07801C03001 C00001C00003C0000380000F0003FF0003FE0003FF000007800003C00001C00000E00000 E00000E0F000E0F000E0F001C0F003C07C07803FFF001FFE0003F800131C7E9B18>I<00 1F00003F0000770000770000E70001E70001C7000387000787000707000E07001E07003C 0700380700780700F00700FFFFF8FFFFF8FFFFF800070000070000070000070000070000 0700007FF000FFF8007FF0151C7F9B18>I<1FFF803FFF803FFF80380000380000380000 3800003800003800003800003800003BF8003FFE003FFF003C07801803C00001C00000E0 0000E06000E0F000E0F000E0E001C07003C07C0F803FFF001FFC0003F000131C7E9B18> I<007E0001FF0007FF800F83C01E03C01C03C0380180380000700000700000E1F800E7FE 00FFFF00FE0780F803C0F001C0F000E0E000E0F000E07000E07000E07000E03801C03C03 C01E07800FFF0007FE0001F800131C7E9B18>II<03F8000FFE001FFF003E0F803803807001C07001C07001C07001C0380380 3C07801FFF0007FC000FFE001F1F003C07807001C0F001E0E000E0E000E0E000E0E000E0 7001C07803C03E0F801FFF000FFE0003F800131C7E9B18>I<03F0000FFC001FFE003C0F 00780780700380E001C0E001C0E001C0E001E0E001E07001E07803E03C0FE01FFFE00FFE E003F0E00000E00001C00001C00001C0300380780780780F00783E003FFC001FF00007C0 00131C7E9B18>I<183C7E7E3C180000000000000000183C7E7E3E1E0E1C3C78F060071A 789318>59 D<000300000780001F80003F00007E0001FC0003F00007E0001FC0003F0000 7E0000FC0000FC00007E00003F00001FC00007E00003F00001FC00007E00003F00001F80 00078000030011187D9918>I<7FFFC0FFFFE0FFFFE0FFFFE00000000000000000000000 00FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>I<600000F00000FC00007E00003F00001F C00007E00003F00001FC00007E00003F00001F80001F80003F00007E0001FC0003F00007 E0001FC0003F00007E0000FC0000F0000060000011187D9918>I<00700000F80000F800 00D80000D80001DC0001DC0001DC00018C00038E00038E00038E00038E00030600070700 0707000707000707000FFF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF8 7F07F0151C7F9B18>65 DI<00F8E003FEE0 07FFE00F07E01E03E03C01E03800E07000E07000E0700000E00000E00000E00000E00000 E00000E00000E00000E000007000007000E07000E03800E03C00E01E01C00F07C007FF80 03FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F801C03C01C03C01C01E01C00 E01C00E01C00F01C00701C00701C00701C00701C00701C00701C00701C00701C00F01C00 E01C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>III<01F1 C003FDC00FFFC01F0FC01C03C03803C03801C07001C07001C0700000E00000E00000E000 00E00000E00000E00FF0E01FF0E00FF07001C07001C07003C03803C03803C01C07C01F0F C00FFFC003FDC001F1C0141C7E9B18>I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C 01C01C01C01C01C01C01C01C01C01C01C01FFFC01FFFC01FFFC01C01C01C01C01C01C01C 01C01C01C01C01C01C01C01C01C01C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>I< 7FFF00FFFF807FFF0001C00001C00001C00001C00001C00001C00001C00001C00001C000 01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000 01C0007FFF00FFFF807FFF00111C7D9B18>I<7F07F0FF87F87F07F01C03C01C07801C07 001C0E001C1E001C3C001C38001C70001CF0001DF0001DF0001FB8001FB8001F1C001E1C 001C0E001C0E001C07001C07001C03801C03801C01C07F03F0FF87F87F03F0151C7F9B18 >75 D<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E0000 0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00700E00700E0070 0E00700E00707FFFF0FFFFF07FFFF0141C7F9B18>II<7E07F0FF0FF87F07F01D81C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01C E1C01CE1C01C61C01C71C01C71C01C31C01C39C01C39C01C39C01C19C01C19C01C1DC01C 0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18>I<0FF8003FFE007FFF00780F00 700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E00380 E00380E00380E00380E00380E00380E00380F00780700700780F007FFF003FFE000FF800 111C7D9B18>II<0FF8003FFE007FFF0078 0F00700700F00780E00380E00380E00380E00380E00380E00380E00380E00380E00380E0 0380E00380E00380E00380E00380E1E380E1E380F0E78070F700787F007FFF003FFE000F FC00001C00001E00000E00000F0000070000070011227D9B18>I<7FF800FFFE007FFF00 1C0F801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE00 1C0F001C07001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F8 7F00F0161C7F9B18>I<03F3801FFF803FFF807C0F80700780E00380E00380E00380E000 007000007800003F00001FF00007FE0000FF00000F800003C00001C00000E00000E06000 E0E000E0E001E0F001C0F80780FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FF FFF8E07038E07038E07038E0703800700000700000700000700000700000700000700000 700000700000700000700000700000700000700000700000700000700000700007FF0007 FF0007FF00151C7F9B18>IIII<7F8FE0 7F9FE07F8FE00E07000F0700070E00078E00039C0003DC0001F80001F80000F00000F000 00700000F00000F80001F80001DC00039E00038E00070F000707000E07800E03801E03C0 7F07F0FF8FF87F07F0151C7F9B18>II<3F FFE07FFFE07FFFE07001C07003C0700780700700000F00001E00001C00003C0000780000 700000F00001E00001C00003C0000780000700000F00001E00E01C00E03C00E07800E070 00E0FFFFE0FFFFE0FFFFE0131C7E9B18>II<600000F00000F00000F800 007800007C00003C00003C00003E00001E00001F00000F00000F00000F800007800007C0 0003C00003C00003E00001E00001F00000F00000F800007800007800007C00003C00003E 00001E00001E00001F00000F00000F8000078000078000030011247D9F18>II<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E0030 0E0000070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F0078 1F003FFFF01FFBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00 000E00000E00000E3E000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00 380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18 >I<01FE0007FF001FFF803E0780380300700000700000E00000E00000E00000E00000E0 0000E000007000007001C03801C03E03C01FFF8007FF0001FC0012147D9318>I<001F80 003F80001F8000038000038000038000038000038003E3800FFB801FFF803C1F80380F80 700780700380E00380E00380E00380E00380E00380E00380700780700780380F803C1F80 1FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F003807807003807003 80E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03C01FFF8007FF 0001FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001C0007F FFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001 C00001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF8 0FFFF81E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF800 39E0003800001C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E00038 7800F07E03F01FFFC00FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00 000E00000E00000E00000E3E000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00 E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C 809B18>I<03800007C00007C00007C0000380000000000000000000000000007FC000FF C0007FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001 C00001C00001C00001C000FFFF00FFFF80FFFF00111D7C9C18>I107 D<7FE000FFE0007FE00000E00000E00000E00000E00000E000 00E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000 00E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E000FF FBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C 1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F 1F1F001914819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00 E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714 809318>I<01F0000FFE001FFF003E0F803803807001C07001C0E000E0E000E0E000E0E0 00E0E000E0F001E07001C07803C03C07803E0F801FFF000FFE0001F00013147E9318>I< 7E3E00FEFF807FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E0038 0E00380F00700F00700F80E00FC1E00FFFC00EFF800E3E000E00000E00000E00000E0000 0E00000E00000E00007FC000FFE0007FC000151E809318>I<7F87E0FF9FF07FBFF803F8 7803F03003E00003C00003C0000380000380000380000380000380000380000380000380 000380007FFE00FFFF007FFE0015147F9318>114 D<07F7003FFF007FFF00780F00E007 00E00700E007007C00007FE0001FFC0003FE00001F00600780E00380E00380F00380F80F 00FFFF00FFFC00E7F00011147D9318>I<0180000380000380000380000380007FFFC0FF FFC0FFFFC003800003800003800003800003800003800003800003800003800003804003 80E00380E00380E001C1C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE07E07E0 0E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0 0E01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03 800E03800E0380070700070700070700038E00038E00038E00038E0001DC0001DC0001DC 0000F80000F80000700015147F9318>II<7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F800 00F80000700000F00000F80001DC00039E00038E000707000F07807F8FF0FF8FF87F8FF0 15147F9318>I<7F8FF0FF8FF87F8FF00E01C00E03800E03800703800707000707000387 00038600038E0001CE0001CE0000CC0000CC0000DC000078000078000078000070000070 0000700000F00000E00079E0007BC0007F80003F00001E0000151E7F9318>I<3FFFF07F FFF07FFFF07001E07003C0700780000F00001E00003C0000F80001F00003C0000780000F 00701E00703C0070780070FFFFF0FFFFF0FFFFF014147F9318>I<0007E0001FE0007FE0 00780000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E000 01E0007FC000FF8000FF80007FC00001E00000E00000E00000E00000E00000E00000E000 00E00000E00000E00000E00000E000007800007FE0001FE00007E013247E9F18>I<60F0 F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0F0600424 769F18>I<7C0000FF0000FFC00003C00000E00000E00000E00000E00000E00000E00000 E00000E00000E00000E00000E00000F000007FC0003FE0003FE0007FC000F00000E00000 E00000E00000E00000E00000E00000E00000E00000E00000E00000E00003C000FFC000FF 00007C000013247E9F18>I E /Fl 27 122 df<01FFF0001F00001E00001E00001E0000 3C00003C00003C00003C0000780000780000780000780000F00000F00000F00000F00001 E00001E00001E00001E00003C00003C00003C00003C0000780000780000780000780000F 8000FFF800141F7D9E12>73 D<01FE00007FC0001E0000FC00001E0000F8000017000178 0000170001780000270002F00000270004F00000270004F00000270008F00000470009E0 0000470011E00000470021E00000470021E00000870043C00000838043C00000838083C0 0000838083C0000103810780000103820780000103820780000103840780000203840F00 000203880F00000203900F00000203900F00000401E01E00000401E01E00000401C01E00 000C01801E00001C01803E0000FF8103FFC0002A1F7D9E29>77 D<01FFFF80001E00E000 1E0070001E0038001E003C003C003C003C003C003C003C003C003C007800780078007800 7800F0007800E000F003C000F00F0000FFFC0000F0000001E0000001E0000001E0000001 E0000003C0000003C0000003C0000003C00000078000000780000007800000078000000F 800000FFF000001E1F7D9E1F>80 D<00F1800389C00707800E03801C03803C0380380700 780700780700780700F00E00F00E00F00E00F00E20F01C40F01C40703C40705C40308C80 0F070013147C9317>97 D<07803F8007000700070007000E000E000E000E001C001C001C F01D0C3A0E3C0E380F380F700F700F700F700FE01EE01EE01EE01CE03CE038607060E031 C01F0010207B9F15>I<007E0001C1000300800E07801E07801C07003C02007800007800 00780000F00000F00000F00000F00000F0000070010070020030040018380007C0001114 7C9315>I<0000780003F80000700000700000700000700000E00000E00000E00000E000 01C00001C000F1C00389C00707800E03801C03803C0380380700780700780700780700F0 0E00F00E00F00E00F00E20F01C40F01C40703C40705C40308C800F070015207C9F17>I< 007C01C207010E011C013C013802780C7BF07C00F000F000F000F0007000700170023804 183807C010147C9315>I<00007800019C00033C00033C000718000700000700000E0000 0E00000E00000E00000E0001FFE0001C00001C00001C00001C0000380000380000380000 380000380000700000700000700000700000700000700000E00000E00000E00000E00000 C00001C00001C0000180003180007B0000F300006600003C00001629829F0E>I<003C60 00E27001C1E00380E00700E00F00E00E01C01E01C01E01C01E01C03C03803C03803C0380 3C03803C07003C07001C0F001C17000C2E0003CE00000E00000E00001C00001C00301C00 783800F0700060E0003F8000141D7E9315>I<01E0000FE00001C00001C00001C00001C0 00038000038000038000038000070000070000071E000763000E81800F01C00E01C00E01 C01C03801C03801C03801C0380380700380700380700380E10700E20700C20701C20700C 40E00CC060070014207D9F17>I<00C001E001E001C00000000000000000000000000000 0E003300230043804300470087000E000E000E001C001C001C0038403880308070803100 33001C000B1F7C9E0E>I<0001800003C00003C000038000000000000000000000000000 0000000000000000003C00004600008700008700010700010700020E00000E00000E0000 0E00001C00001C00001C00001C0000380000380000380000380000700000700000700000 700000E00000E00030E00079C000F180006300003C00001228829E0E>I<01E0000FE000 01C00001C00001C00001C0000380000380000380000380000700000700000703C0070420 0E08E00E11E00E21E00E40C01C80001D00001E00001FC00038E000387000387000383840 707080707080707080703100E03100601E0013207D9F15>I<03C01FC003800380038003 8007000700070007000E000E000E000E001C001C001C001C003800380038003800700070 0070007100E200E200E200E200640038000A207C9F0C>I<1C0F80F0002630C318004740 640C004780680E004700700E004700700E008E00E01C000E00E01C000E00E01C000E00E0 1C001C01C038001C01C038001C01C038001C01C0708038038071003803806100380380E1 0038038062007007006600300300380021147C9325>I<1C0F802630C047406047806047 00704700708E00E00E00E00E00E00E00E01C01C01C01C01C01C01C038438038838030838 07083803107003303001C016147C931A>I<007C0001C3000301800E01C01E01C01C01E0 3C01E07801E07801E07801E0F003C0F003C0F003C0F00780F00700700F00700E00301800 18700007C00013147C9317>I<01C1E002621804741C04781C04701E04701E08E01E00E0 1E00E01E00E01E01C03C01C03C01C03C01C0380380780380700380E003C1C0072380071E 000700000700000E00000E00000E00000E00001C00001C0000FFC000171D809317>I<1C 1E002661004783804787804707804703008E00000E00000E00000E00001C00001C00001C 00001C000038000038000038000038000070000030000011147C9313>114 D<00FC030206010C030C070C060C000F800FF007F803FC003E000E700EF00CF00CE00840 1020601F8010147D9313>I<018001C0038003800380038007000700FFF007000E000E00 0E000E001C001C001C001C003800380038003820704070407080708031001E000C1C7C9B 0F>I<0E00C03300E02301C04381C04301C04701C08703800E03800E03800E03801C0700 1C07001C07001C07101C0E20180E20180E201C1E200C264007C38014147C9318>I<0E03 803307802307C04383C04301C04700C08700800E00800E00800E00801C01001C01001C01 001C02001C02001C04001C04001C08000E300003C00012147C9315>I<0E00C1C03300E3 C02301C3E04381C1E04301C0E04701C060870380400E0380400E0380400E0380401C0700 801C0700801C0700801C0701001C0701001C0602001C0F02000C0F04000E13080003E1F0 001B147C931E>I<0383800CC4401068E01071E02071E02070C040E00000E00000E00000 E00001C00001C00001C00001C040638080F38080F38100E5810084C60078780013147D93 15>I<0E00C03300E02301C04381C04301C04701C08703800E03800E03800E03801C0700 1C07001C07001C07001C0E00180E00180E001C1E000C3C0007DC00001C00001C00003800 F03800F07000E06000C0C0004380003E0000131D7C9316>I E /Fm 61 124 df<000FF000007FFC0001F80E0003E01F0007C03F000F803F000F803F000F801E 000F800C000F8000000F8000000F8000000F800000FFFFFF00FFFFFF000F801F000F801F 000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F000F801F 000F801F000F801F000F801F000F801F000F801F000F801F000F801F007FF0FFE07FF0FF E01B237FA21F>12 D<000F800000001FC000000038600000007060000000F030000000F0 30000001E030000001E030000001F060000001F060000001F0C0000001F180000001F380 000000FF001FFC00FE001FFC00FC00018000FC000180007C00030000FE00060003BE0006 00073F000C000E1F0018001E1F8018003C0FC030007C07E06000FC07F0C000FC03F0C000 FC01F98000FC00FF0000FE007E000C7E003F000C3F007FC0181F81E7F0780FFF81FFE001 FC003F8026237EA22C>38 D<00180030006000C001C00380070007000E001E001C003C00 3C003C007800780078007800F800F000F000F000F000F000F000F000F000F000F000F000 F80078007800780078003C003C003C001C001E000E0007000700038001C000C000600030 00180D317BA416>40 DI45 D<387CFEFEFE7C3807077C8610>I< 0000180000380000380000700000700000E00000E00000E00001C00001C0000380000380 000380000700000700000700000E00000E00001C00001C00001C00003800003800007000 00700000700000E00000E00001C00001C00001C000038000038000070000070000070000 0E00000E00000E00001C00001C0000380000380000380000700000700000E00000E00000 C0000015317DA41C>I<00180000780001F800FFF800FFF80001F80001F80001F80001F8 0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8 0001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE01320 7C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F8 3803F80003F80003F00003F00007E00007C0000F80001F00003E0000380000700000E018 01C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C> I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003 E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00 FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000E000 01E00003E00003E00007E0000FE0001FE0001FE00037E00077E000E7E001C7E00187E003 07E00707E00E07E00C07E01807E03807E07007E0E007E0FFFFFEFFFFFE0007E00007E000 07E00007E00007E00007E00007E000FFFE00FFFE17207E9F1C>I<1000201E01E01FFFC0 1FFF801FFF001FFE001FF8001BC00018000018000018000018000019FC001FFF001E0FC0 1807E01803E00003F00003F00003F80003F83803F87C03F8FE03F8FE03F8FC03F0FC03F0 7007E03007C01C1F800FFF0003F80015207D9F1C>I<001F8000FFE003F07007C0F00F01 F81F01F83E01F83E01F87E00F07C00007C0000FC0800FC7FC0FCFFE0FD80F0FF00F8FE00 7CFE007CFC007EFC007EFC007EFC007E7C007E7C007E7C007E3C007C3E007C1E00F80F00 F00783E003FFC000FF0017207E9F1C>I<00FE0003FFC00703E00E00F01C00F01C00783C 00783E00783F00783F80783FE0F01FF9E01FFFC00FFF8007FFC003FFE007FFF01E7FF83C 1FFC7807FC7801FEF000FEF0003EF0001EF0001EF0001CF8001C7800383C00381F01F00F FFC001FF0017207E9F1C>56 D<01FE0007FF800F83E01E01F03E00F07C00F87C0078FC00 7CFC007CFC007CFC007EFC007EFC007EFC007E7C00FE7C00FE3E01FE1E037E0FFE7E07FC 7E00207E00007C00007C1E007C3F00F83F00F83F00F03F01E01E03C01C0F800FFE0003F8 0017207E9F1C>I<387CFEFEFE7C380000000000000000387CFEFEFE7C3807167C9510>I< 000070000000007000000000F800000000F800000000F800000001FC00000001FC000000 03FE00000003FE00000003FE00000006FF000000067F0000000E7F8000000C3F8000000C 3F800000183FC00000181FC00000381FE00000300FE00000300FE00000600FF000006007 F00000E007F80000FFFFF80000FFFFF800018001FC00018001FC00038001FE00030000FE 00030000FE000600007F000600007F00FFE00FFFF8FFE00FFFF825227EA12A>65 D<0003FE0080001FFF818000FF01E38001F8003F8003E0001F8007C0000F800F80000780 1F800007803F000003803F000003807F000001807E000001807E00000180FE00000000FE 00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE000000007E00 0000007E000001807F000001803F000001803F000003801F800003000F8000030007C000 060003F0000C0001F800380000FF00F000001FFFC0000003FE000021227DA128>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>IIIIII123 D E /Fn 87 128 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0 000E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0 000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0 000E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703 C00E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C07F87F8151D809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<003F07 E00001C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00E000 000E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C00 0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E 00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D 809C23>I<6060F0F0F8F86868080808080808101010102020404080800D0C7F9C15>34 D<00E0000001900000030800000308000007080000070800000708000007080000071000 0007100000072000000740000003C03FE003800F00038006000380040005C0040009C008 0010E0100030E010006070200060702000E0384000E03C4000E01C8000E00F0020E00700 20700780403009C0401830E18007C03E001B1F7E9D20>38 D<60F0F86808080810102040 80050C7C9C0C>I<004000800100020006000C000C001800180030003000700060006000 6000E000E000E000E000E000E000E000E000E000E000E000E00060006000600070003000 3000180018000C000C00060002000100008000400A2A7D9E10>I<800040002000100018 000C000C000600060003000300038001800180018001C001C001C001C001C001C001C001 C001C001C001C001C0018001800180038003000300060006000C000C0018001000200040 0080000A2A7E9E10>I<0006000000060000000600000006000000060000000600000006 0000000600000006000000060000000600000006000000060000FFFFFFE0FFFFFFE00006 000000060000000600000006000000060000000600000006000000060000000600000006 00000006000000060000000600001B1C7E9720>43 D<60F0F0701010101020204080040C 7C830C>II<60F0F06004047C830C>I<00010003000600060006 000C000C000C0018001800180030003000300060006000C000C000C00180018001800300 03000300060006000C000C000C00180018001800300030003000600060006000C000C000 10297E9E15>I<03C00C301818300C300C700E60066006E007E007E007E007E007E007E0 07E007E007E007E007E007E00760066006700E300C300C18180C3007E0101D7E9B15>I< 030007003F00C70007000700070007000700070007000700070007000700070007000700 070007000700070007000700070007000F80FFF80D1C7C9B15>I<07C01830201C400C40 0EF00FF80FF807F8077007000F000E000E001C001C00380070006000C00180030006010C 01180110023FFE7FFEFFFE101C7E9B15>I<07E01830201C201C781E780E781E381E001C 001C00180030006007E00030001C001C000E000F000F700FF80FF80FF80FF00E401C201C 183007E0101D7E9B15>I<000C00000C00001C00003C00003C00005C0000DC00009C0001 1C00031C00021C00041C000C1C00081C00101C00301C00201C00401C00C01C00FFFFC000 1C00001C00001C00001C00001C00001C00001C0001FFC0121C7F9B15>I<300C3FF83FF0 3FC020002000200020002000200023E024302818301C200E000E000F000F000F600FF00F F00FF00F800E401E401C2038187007C0101D7E9B15>I<00F0030C06040C0E181E301E30 0C700070006000E3E0E430E818F00CF00EE006E007E007E007E007E00760076007700630 0E300C18180C3003E0101D7E9B15>I<4000007FFF807FFF007FFF004002008004008004 0080080000100000100000200000600000400000C00000C00001C0000180000180000380 00038000038000038000078000078000078000078000078000078000030000111D7E9B15 >I<03E00C301008200C20066006600660067006780C3E083FB01FE007F007F818FC307E 601E600FC007C003C003C003C00360026004300C1C1007E0101D7E9B15>I<03C00C3018 18300C700C600EE006E006E007E007E007E007E0076007700F300F18170C2707C7000600 06000E300C780C78187010203030C00F80101D7E9B15>I<60F0F0600000000000000000 000060F0F06004127C910C>I<60F0F0600000000000000000000060F0F0701010101020 204080041A7C910C>I<7FFFFFC0FFFFFFE0000000000000000000000000000000000000 0000000000000000000000000000FFFFFFE07FFFFFC01B0C7E8F20>61 D<0FE03038401CE00EF00EF00EF00E000C001C0030006000C00080018001000100010001 00010001000000000000000000000003000780078003000F1D7E9C14>63 D<000600000006000000060000000F0000000F0000000F00000017800000178000001780 000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F0000180F8 000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F 001E001F00FF80FFF01C1D7F9C1F>65 DI< 001F808000E0618001801980070007800E0003801C0003801C0001803800018078000080 7800008070000080F0000000F0000000F0000000F0000000F0000000F0000000F0000000 F0000000700000807800008078000080380000801C0001001C0001000E00020007000400 0180080000E03000001FC000191E7E9C1E>IIII<001F8080 00E0618001801980070007800E0003801C0003801C000180380001807800008078000080 70000080F0000000F0000000F0000000F0000000F0000000F0000000F000FFF0F0000F80 700007807800078078000780380007801C0007801C0007800E00078007000B8001801180 00E06080001F80001C1E7E9C21>III<1FFF00F8007800780078007800780078007800 78007800780078007800780078007800780078007800787078F878F878F878F0F040E021 C01F00101D7F9B15>IIIII<003F800000E0E0000380380007001C000E00 0E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0F000 01E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C03800 03803C0007801C0007000E000E0007001C000380380000E0E000003F80001B1E7E9C20> II<003F800000E0E0000380380007001C00 0E000E001C0007003C00078038000380780003C0780003C0700001C0F00001E0F00001E0 F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0700001C0780003C0780003C0 380003803C0E07801C1107000E208E0007205C0003A0780000F0E020003FE02000006020 00003060000038E000003FC000003FC000001F8000000F001B257E9C20>II<07E0801C1980300580700380600180E00180E00080E00080E000 80F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C00001 C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>I<7F FFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F002000 0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000 0F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003 FFFC001B1C7F9B1E>IIII<7FF0FFC00FC03E000780180003C0180003E0100001E02000 01F0600000F0400000788000007D8000003D0000001E0000001F0000000F0000000F8000 000F80000013C0000023E0000021E0000041F00000C0F8000080780001007C0003003C00 02001E0006001F001F003F80FFC0FFF01C1C7F9B1F>II<7FFF F07C01F07001E06003C06003C0400780400F80400F00401E00001E00003C00007C000078 0000F00000F00001E00003E00003C0100780100780100F00101F00301E00203C00203C00 607800E0F803E0FFFFE0141C7E9B19>II<08081010202040 404040808080808080B0B0F8F8787830300D0C7A9C15>II< 0810204040808080B0F87830050C7D9C0C>96 D<1FC000307000783800781C00301C0000 1C00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F 870012127E9115>II<07E00C3018 78307870306000E000E000E000E000E000E00060007004300418080C3007C00E127E9112 >I<003F0000070000070000070000070000070000070000070000070000070000070003 E7000C1700180F00300700700700600700E00700E00700E00700E00700E00700E0070060 0700700700300700180F000C370007C7E0131D7E9C17>I<03E00C301818300C700E6006 E006FFFEE000E000E000E00060007002300218040C1803E00F127F9112>I<00F8018C07 1E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C3880 181800381C00381C00381C00381C001818001C38000C300013C000100000300000180000 1FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F800 121C7F9215>II<18003C003C0018 000000000000000000000000000000FC001C001C001C001C001C001C001C001C001C001C 001C001C001C001C001C001C00FF80091D7F9C0C>I<00C001E001E000C0000000000000 00000000000000000FE000E000E000E000E000E000E000E000E000E000E000E000E000E0 00E000E000E000E000E000E000E060E0F0C0F1C061803E000B25839C0D>IIIII<03F0000E1C00180600300300 700380600180E001C0E001C0E001C0E001C0E001C0E001C0600180700380300300180600 0E1C0003F00012127F9115>II<03C1000C3300180B0030 0F00700700700700E00700E00700E00700E00700E00700E00700600700700700300F0018 0F000C370007C700000700000700000700000700000700000700000700003FE0131A7E91 16>II<1F9030704030C010C010E010F8007F803FE00FF000F880388018 C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FFE01C 001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F 9910>IIII<7F8FF00F03800F03000702 0003840001C80001D80000F00000700000780000F800009C00010E00020E000607000403 801E07C0FF0FF81512809116>II<7FFC70386038407040 F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F9112>III<6060F0F0F0F060600C047C9C15>127 D E /Fo 49 122 df<0020004001800380030006000E001C001C003C0038003800780078 007800F800F000F000F000F000F000F000F000F000F000F800780078007800380038003C 001C001C000E000600030003800180004000200B297C9E13>40 D<800040003000380018 000C000E000700070007800380038003C003C003C003E001E001E001E001E001E001E001 E001E001E003E003C003C003C0038003800780070007000E000C00180038003000400080 000B297D9E13>I<78FCFCFEFE7A0202040408083040070E7D850D>44 D<78FCFCFCFC7800000000000078FCFCFCFC7806127D910D>58 D<000380000003800000 07C0000007C0000007C000000FE000000FE000001FF000001BF000001BF0000031F80000 31F8000061FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF8003 001F8003001F8006000FC006000FC00E000FE00C0007E0FFC07FFEFFC07FFE1F1C7E9B24 >65 D<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E0000607E 0000607C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC 0000007C0000607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000 FFFC00001FE0001B1C7D9B22>67 DI I<000FF008007FFE3801FC07F807E001F80F8000781F0000783F0000383E0000387E0000 187C000018FC000000FC000000FC000000FC000000FC000000FC000000FC007FFFFC007F FF7C0001F87E0001F83E0001F83F0001F81F0001F80F8001F807E001F801FC07F8007FFE 78000FF818201C7D9B26>71 DII75 DIII<003FE00001F07C0003C01E00 0F800F801F0007C01E0003C03E0003E07E0003F07C0001F07C0001F0FC0001F8FC0001F8 FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F87C0001F07E0003F07E0003F0 3E0003E03F0007E01F0007C00F800F8003C01E0001F07C00003FE0001D1C7D9B24>II<003FE00001F07C0003C01E000F800F801F0007C01F0007C03E00 03E07E0003F07C0001F07C0001F0FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC00 01F8FC0001F8FC0001F87C0001F07C0001F07E0003F03E0003E03E0703E01F08C7C00F90 6F8003D03E0001F87C00003FF8080000180800001C1800001FF800001FF800000FF00000 0FF0000007E0000003C01D247D9B24>II<07F8201FFEE03C07E07801E07000E0F0 00E0F00060F00060F80000FE0000FFE0007FFE003FFF003FFF800FFFC007FFE0007FE000 03F00001F00000F0C000F0C000F0C000E0E000E0F001C0FC03C0EFFF0083FC00141C7D9B 1B>I<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F8070C01F8030C01F8030C0 1F8030C01F8030001F8000001F8000001F8000001F8000001F8000001F8000001F800000 1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F800007 FFFE0007FFFE001C1C7E9B21>IIII<7FFE1FFE007FFE1FFE0007F001 800003F803800001FC07000000FC06000000FE0C0000007F1C0000003F380000003FB000 00001FE00000000FE00000000FE000000007F000000003F800000007F80000000FFC0000 000CFE000000187E000000387F000000703F800000601F800000C01FC00001C00FE00001 8007F000030007F000FFF03FFF80FFF03FFF80211C7F9B24>II<0FF8001C1E003E 0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F8 07C0780BC03E13F80FE1F815127F9117>97 DI<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F8 0000F800007800007801803C01801C03000E0E0003F80011127E9115>I<000FF0000FF0 0001F00001F00001F00001F00001F00001F00001F00001F00001F001F9F00F07F01C03F0 3C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801F07801F03C01F0 1C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C01C07801C07801E0F801 E0F801E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F038001FC001312 7F9116>I<007F0001E38003C7C00787C00F87C00F83800F80000F80000F80000F80000F 8000FFF800FFF8000F80000F80000F80000F80000F80000F80000F80000F80000F80000F 80000F80000F80000F80000F80007FF8007FF800121D809C0F>I<03F8F00E0F381E0F38 1C07303C07803C07803C07803C07801C07001E0F000E0E001BF800100000180000180000 1FFF001FFFC00FFFE01FFFF07801F8F00078F00078F000787000707800F01E03C007FF00 151B7F9118>II<1E003F003F003F 003F001E00000000000000000000000000FF00FF001F001F001F001F001F001F001F001F 001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>I107 DIII<01FC000F07801C01C03C01E07800F07800 F0F800F8F800F8F800F8F800F8F800F8F800F87800F07800F03C01E01E03C00F078001FC 0015127F9118>II114 D<1FD830786018E018E018F000FF807FE07FF01FF807FC007C C01CC01CE01CE018F830CFC00E127E9113>I<0300030003000300070007000F000F003F FCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E 1A7F9913>IIIIII E /Fp 61 124 df<0001FF81FE00001FFFEFFF80007F80FF87C000FC00FE0FE001F801FE 0FE003F801FC0FE007F001FC0FE007F001FC07C007F001FC000007F001FC000007F001FC 000007F001FC000007F001FC000007F001FC000007F001FC0000FFFFFFFFF800FFFFFFFF F800FFFFFFFFF80007F001FC000007F001FC000007F001FC000007F001FC000007F001FC 000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC 000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC000007F001FC 000007F001FC000007F001FC000007F001FC000007F001FC00007FFF1FFFE0007FFF1FFF E0007FFF1FFFE0002B2A7FA928>11 D<1C007F007F00FF80FFC0FFC07FC07FC01CC000C0 00C00180018001800300030006000C001800300020000A157BA913>39 D45 D<1C003E007F00FF80FF 80FF807F003E001C0009097B8813>I<003F800001FFF00007E0FC000FC07E001F803F00 1F803F003F001F803F001F807F001FC07F001FC07F001FC07F001FC0FF001FE0FF001FE0 FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0 FF001FE0FF001FE0FF001FE0FF001FE07F001FC07F001FC07F001FC07F001FC03F001F80 3F001F801F803F001F803F000FC07E0007E0FC0001FFF000003F80001B277DA622>48 D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE 007FFFFE7FFFFE7FFFFE17277BA622>I<00FF800003FFF0000FFFFC001F03FE003800FF 007C007F80FE003FC0FF003FC0FF003FE0FF001FE0FF001FE07E001FE03C003FE000003F E000003FC000003FC000007F8000007F000000FE000000FC000001F8000003F0000003E0 0000078000000F0000001E0000003C00E0007000E000E000E001C001C0038001C0070001 C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I< 007F800003FFF00007FFFC000F81FE001F00FF003F80FF003F807F803F807F803F807F80 1F807F800F007F800000FF000000FF000000FE000001FC000001F8000007F00000FFC000 00FFF0000001FC0000007E0000007F0000007F8000003FC000003FC000003FE000003FE0 3C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC07E007F807C007F003F01FE00 1FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E0000003E0000007E0000 00FE000000FE000001FE000003FE0000077E00000E7E00000E7E00001C7E0000387E0000 707E0000E07E0000E07E0001C07E0003807E0007007E000E007E000E007E001C007E0038 007E0070007E00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE0000 00FE000000FE000000FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622 >I<0C0003000F803F000FFFFE000FFFFC000FFFF8000FFFF0000FFFE0000FFFC0000FFE 00000E0000000E0000000E0000000E0000000E0000000E0000000E7FC0000FFFF8000F80 FC000E003E000C003F0000001F8000001FC000001FC000001FE000001FE018001FE07C00 1FE0FE001FE0FE001FE0FE001FE0FE001FC0FC001FC078003F8078003F803C007F001F01 FE000FFFF80003FFF00000FF80001B277DA622>I<0007F000003FFC0000FFFE0001FC0F 0003F01F8007E03F800FC03F801FC03F801F803F803F801F003F8000007F0000007F0000 007F000000FF000000FF0FC000FF3FF800FF707C00FFC03E00FFC03F00FF801F80FF801F C0FF001FC0FF001FE0FF001FE0FF001FE07F001FE07F001FE07F001FE07F001FE03F001F E03F001FC01F801FC01F803F800FC03F0007E07E0003FFFC0000FFF000003FC0001B277D A622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFF80 7FFFFF0070000E0070000E0070001C00E0003800E0007000E000E0000000E0000001C000 000380000007800000078000000F0000000F0000001F0000001F0000003F0000003E0000 003E0000007E0000007E0000007E0000007E000000FE000000FE000000FE000000FE0000 00FE000000FE000000FE000000FE0000007C0000003800001C297CA822>I<003FC00001 FFF00003FFFC0007C07E000F003F001E001F001E000F803E000F803E000F803F000F803F 000F803FC00F003FF01F001FFC1E001FFE3C000FFFF80007FFE00003FFF80001FFFC0001 FFFE0007FFFF000F0FFF801E03FFC03C01FFC07C007FE078001FE0F80007E0F80007E0F8 0003E0F80003E0F80003E0F80003C07C0003C07C0007803F000F001FC03E000FFFFC0003 FFF800007FC0001B277DA622>I<007F800001FFF00007FFF8000FE0FC001F807E003F80 3F007F003F007F001F80FF001F80FF001FC0FF001FC0FF001FC0FF001FE0FF001FE0FF00 1FE0FF001FE07F001FE07F003FE03F003FE01F807FE00F807FE007C1DFE003FF9FE0007E 1FE000001FE000001FC000001FC000001FC000003F801F003F803F803F003F803F003F80 7E003F807C001F01F8001E03F0000FFFE00007FF800001FE00001B277DA622>I<01FF00 0FFFE01E03F03801F87801FCFC01FEFE01FEFE01FEFE01FE7C01FE3801FC0003F80007F0 0007C0000F80001F00001E00003C00003800003800007800007000007000007000007000 00700000700000000000000000000000000000000000000000700000F80001FC0003FE00 03FE0003FE0001FC0000F800007000172A7CA920>63 D<000003800000000007C0000000 0007C0000000000FE0000000000FE0000000000FE0000000001FF0000000001FF0000000 003FF8000000003FF8000000003FF80000000073FC0000000073FC00000000F3FE000000 00E1FE00000000E1FE00000001C0FF00000001C0FF00000003C0FF80000003807F800000 07807FC0000007003FC0000007003FC000000E003FE000000E001FE000001E001FF00000 1C000FF000001FFFFFF000003FFFFFF800003FFFFFF80000780007FC0000700003FC0000 700003FC0000E00001FE0000E00001FE0001E00001FF0001C00000FF0001C00000FF00FF FE001FFFFEFFFE001FFFFEFFFE001FFFFE2F297EA834>65 DI<00003FF001800003FFFE 0380000FFFFF8780003FF007DF8000FF8001FF8001FE00007F8003FC00003F8007F00000 1F800FF000000F801FE0000007801FE0000007803FC0000007803FC0000003807FC00000 03807F80000003807F8000000000FF8000000000FF8000000000FF8000000000FF800000 0000FF8000000000FF8000000000FF8000000000FF8000000000FF80000000007F800000 00007F80000000007FC0000003803FC0000003803FC0000003801FE0000003801FE00000 07000FF00000070007F000000E0003FC00001E0001FE00003C0000FF8000F800003FF007 E000000FFFFFC0000003FFFF000000003FF8000029297CA832>IIII<00007FE003000003FFFC0700001FFFFF 0F00003FF00FFF0000FF8001FF0001FE0000FF0003F800003F0007F000003F000FF00000 1F001FE000000F001FE000000F003FC000000F003FC0000007007FC0000007007F800000 07007F8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF800000 0000FF8000000000FF8000000000FF8000000000FF8001FFFFF87F8001FFFFF87F8001FF FFF87FC00000FF003FC00000FF003FC00000FF001FE00000FF001FE00000FF000FF00000 FF0007F00000FF0003F80000FF0001FE0000FF0000FF8001FF00003FF007BF00001FFFFF 1F000003FFFE0F0000007FF003002D297CA836>III76 DII<0000FFE000000007FFFC0000003FC07F800000 7F001FC00001FC0007F00003F80003F80007F00001FC000FF00001FE001FE00000FF001F E00000FF003FC000007F803FC000007F807FC000007FC07F8000003FC07F8000003FC07F 8000003FC0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF 8000003FE0FF8000003FE0FF8000003FE0FF8000003FE0FF8000003FE07F8000003FC07F C000007FC07FC000007FC03FC000007F803FC000007F801FE00000FF001FE00000FF000F F00001FE0007F00001FC0003F80003F80001FC0007F00000FF001FE000003FC07F800000 0FFFFE00000000FFE000002B297CA834>II82 D<007F806003FFF0E007FFF9E00F807FE01F001FE0 3E0007E07C0003E07C0001E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000 FFC000007FFE00007FFFE0003FFFFC001FFFFE000FFFFF8007FFFFC003FFFFE000FFFFE0 0007FFF000007FF000000FF8000007F8000003F8600001F8E00001F8E00001F8E00001F8 F00001F0F00001F0F80003F0FC0003E0FF0007C0FFE01F80F3FFFF00E0FFFE00C01FF000 1D297CA826>I<7FFFFFFFFFC07FFFFFFFFFC07FFFFFFFFFC07F803FC03FC07E003FC007 C078003FC003C078003FC003C070003FC001C0F0003FC001E0F0003FC001E0E0003FC000 E0E0003FC000E0E0003FC000E0E0003FC000E0E0003FC000E000003FC0000000003FC000 0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000 0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000 0000003FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000 0000003FC0000000003FC00000007FFFFFE000007FFFFFE000007FFFFFE0002B287EA730 >IIII<01FF800007FFF0000F81F8 001FC07E001FC07E001FC03F000F803F8007003F8000003F8000003F8000003F80000FFF 8000FFFF8007FC3F800FE03F803F803F803F003F807F003F80FE003F80FE003F80FE003F 80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03FC1E1B7E9A21>97 DI<001FF80000FFFE0003F01F0007E03F800FC03F801F803F803F801F007F800E007F00 00007F000000FF000000FF000000FF000000FF000000FF000000FF000000FF0000007F00 00007F0000007F8000003F8001C01F8001C00FC0038007E0070003F01E0000FFFC00001F E0001A1B7E9A1F>I<00003FF80000003FF80000003FF800000003F800000003F8000000 03F800000003F800000003F800000003F800000003F800000003F800000003F800000003 F800000003F800000003F800001FE3F80000FFFBF80003F03FF80007E00FF8000FC007F8 001F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800 FF0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F 0003F8003F8003F8001F8003F8000F8007F80007C00FF80003F03BFF8000FFF3FF80003F C3FF80212A7EA926>I<003FE00001FFF80003F07E0007C01F000F801F801F800F803F80 0FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF00 0000FF0000007F0000007F0000007F0000003F8000E01F8000E00FC001C007E0038003F8 1F0000FFFE00001FF0001B1B7E9A20>I<0007F0003FFC00FE3E01F87F03F87F03F07F07 F07F07F03E07F00007F00007F00007F00007F00007F00007F000FFFFC0FFFFC0FFFFC007 F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F00007F0007FFF807FFF807FFF8018 2A7EA915>I<00FF81F003FFE7F80FC1FE7C1F80FC7C1F007C383F007E107F007F007F00 7F007F007F007F007F007F007F007F007F003F007E001F007C001F80FC000FC1F8001FFF E00018FF800038000000380000003C0000003E0000003FFFF8001FFFFF001FFFFF800FFF FFC007FFFFE01FFFFFF03E0007F07C0001F8F80000F8F80000F8F80000F8F80000F87C00 01F03C0001E01F0007C00FC01F8003FFFE00007FF0001E287E9A22>II<07000FC01FE0 3FE03FE03FE01FE00FC007000000000000000000000000000000FFE0FFE0FFE00FE00FE0 0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0 0FE0FFFEFFFEFFFE0F2B7DAA14>I107 DIII<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007 E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007 F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F 0001FFFC00003FE0001D1B7E9A22>II<001FC0380000FFF0780003F838F80007E00DF8000FC007F8001FC007F8003F8003F8 007F8003F8007F8003F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800 FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F8003F8003F8003F8001F 8007F8000FC007F80007E01FF80003F07BF80000FFF3F800003FC3F800000003F8000000 03F800000003F800000003F800000003F800000003F800000003F800000003F800000003 F80000003FFF8000003FFF8000003FFF8021277E9A24>II<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC0000FFE0007FFE 007FFF803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0003CF00038F800 38FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000F00000 F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F03807 F03807F03807F03807F03803F03803F87001F86000FFC0001F8015267FA51B>IIIIII<3FFFFF803FFFFF803F007F003C00FE003801FE007803FC007803F8007007F800700F F000700FE000001FC000003FC000007F8000007F000000FF000001FE038001FC038003F8 038007F803800FF007800FE007801FE007003FC00F003F801F007F007F00FFFFFF00FFFF FF00191B7E9A1F>II E /Fq 22 121 df<0001FF8000000FFFF000003FFFFC0000FF81FF0001FE007F8003FC003FC007 F8001FE00FF8001FF00FF0000FF01FF0000FF81FF0000FF83FF0000FFC3FE00007FC3FE0 0007FC7FE00007FE7FE00007FE7FE00007FE7FE00007FE7FE00007FEFFE00007FFFFE000 07FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007 FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FFFFE00007FF FFE00007FFFFE00007FFFFE00007FF7FE00007FE7FE00007FE7FE00007FE7FE00007FE7F E00007FE3FE00007FC3FF0000FFC3FF0000FFC1FF0000FF81FF0000FF80FF0000FF00FF8 001FF007F8001FE003FC003FC001FE007F8000FF81FF00003FFFFC00000FFFF0000001FF 800028397CB731>48 D<00001E000000003E00000000FE00000003FE0000003FFE0000FF FFFE0000FFFFFE0000FFFFFE0000FFCFFE0000000FFE0000000FFE0000000FFE0000000F FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE 0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00 00000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000 000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000000 0FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000F FE0000000FFE0000000FFE0000000FFE00007FFFFFFFC07FFFFFFFC07FFFFFFFC07FFFFF FFC0223879B731>I<0007FE0000007FFFE00001FFFFF80003FFFFFE0007F01FFF000F80 07FF801F0001FFC03E0000FFE07F8000FFF07FC0007FF0FFE0007FF8FFF0003FF8FFF000 3FFCFFF0003FFCFFF0003FFCFFF0003FFC7FE0003FFC3FC0003FFC1F80003FFC0000003F FC0000003FF80000007FF80000007FF00000007FF0000000FFE0000000FFC0000001FF80 000001FF00000003FE00000007FC00000007F80000000FF00000001FC00000003F800000 007F00000000FC00000001F800000001F0003C0003E0003C0007C0003C000F000078001E 000078003C00007800780000F800F00000F801FFFFFFF803FFFFFFF007FFFFFFF00FFFFF FFF01FFFFFFFF03FFFFFFFF07FFFFFFFF0FFFFFFFFF0FFFFFFFFE0FFFFFFFFE0FFFFFFFF E026387BB731>I<0003FF8000001FFFF000007FFFFE0000FE03FF0001F000FF8003C000 FFC00780007FE00FF0007FF00FF8007FF01FFC007FF81FFE007FF81FFE007FF81FFE007F F81FFE007FF81FFE007FF80FFC007FF007F8007FF003F0007FF0000000FFE0000000FFC0 000001FF80000001FF00000003FE00000007FC0000001FF000000FFFC000000FFF800000 0FFFF800000003FE00000000FF800000007FE00000003FF00000003FF80000003FFC0000 001FFC0000001FFE0000001FFE0200001FFF1FC0001FFF3FE0001FFF7FF0001FFF7FF000 1FFFFFF8001FFFFFF8001FFFFFF8001FFEFFF8001FFEFFF0001FFE7FF0003FFC7FE0003F FC3FC0003FF81F80007FF01FE000FFE007FC03FFC003FFFFFF0001FFFFFE00003FFFF000 0007FF800028397CB731>I<00000007C0000000000FC0000000000FC0000000001FC000 0000003FC0000000007FC000000000FFC000000000FFC000000001FFC000000003FFC000 000007FFC00000000FFFC00000000FFFC00000001EFFC00000003CFFC00000007CFFC000 0000F8FFC0000000F0FFC0000001E0FFC0000003C0FFC0000007C0FFC000000F80FFC000 000F00FFC000001E00FFC000003C00FFC000007C00FFC00000F800FFC00000F000FFC000 01E000FFC00003C000FFC00007C000FFC0000F8000FFC0000F0000FFC0001E0000FFC000 3C0000FFC0007C0000FFC000F80000FFC000FFFFFFFFFFC0FFFFFFFFFFC0FFFFFFFFFFC0 FFFFFFFFFFC0000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000 000001FFC000000001FFC000000001FFC000000001FFC000000001FFC0000007FFFFFFC0 0007FFFFFFC00007FFFFFFC00007FFFFFFC02A377DB631>I<04000000C00F800007C00F F8007FC00FFFFFFF800FFFFFFF000FFFFFFE000FFFFFFC000FFFFFF8000FFFFFF0000FFF FFE0000FFFFF80000FFFFE00000FFFF800000F800000000F800000000F800000000F8000 00000F800000000F800000000F800000000F800000000F81FF00000F8FFFE0000FBFFFF8 000FFE03FE000FF000FF000FC000FF800F80007FC00F00007FE00700007FF00000003FF0 0000003FF80000003FF80000003FF80000003FFC0000003FFC0600003FFC1F80003FFC3F C0003FFC7FE0003FFCFFE0003FFCFFF0003FFCFFF0003FFCFFF0003FF8FFE0003FF8FFE0 003FF87FC0007FF07F00007FF03C00007FE03E0000FFC01F0000FF800FC003FF0007F00F FE0003FFFFFC0001FFFFF000007FFFC000000FFC000026397BB731>I<00000FF8000000 7FFF000003FFFF80000FFC07C0001FE001E0003FC001F0007F0007F000FF000FF001FE00 1FF803FC003FF807FC003FF80FFC003FF80FF8003FF81FF8001FF01FF8000FE03FF80007 C03FF00000003FF00000007FF00000007FF00000007FF00000007FF07FF000FFF0FFFE00 FFF1F7FF00FFF3807F80FFF6003FE0FFFE001FF0FFFC001FF0FFFC000FF8FFF8000FFCFF F8000FFCFFF8000FFEFFF8000FFEFFF0000FFEFFF0000FFFFFF0000FFFFFF0000FFF7FF0 000FFF7FF0000FFF7FF0000FFF7FF0000FFF7FF0000FFF3FF0000FFF3FF0000FFE3FF000 0FFE1FF0000FFE1FF8000FFC0FF8000FFC0FF8001FF807FC001FF003FC001FF001FE003F E000FF80FFC0007FFFFF00001FFFFE000007FFF8000000FFC00028397CB731>I<1E0000 0000001F00000000001FF0000000001FFFFFFFFFC01FFFFFFFFFC01FFFFFFFFFC03FFFFF FFFFC03FFFFFFFFF803FFFFFFFFF003FFFFFFFFE003FFFFFFFFC003FFFFFFFF8003FFFFF FFF0007FFFFFFFF0007C000007E0007C00000FC0007800001F80007800001F0000780000 3E0000F000007E0000F00000FC0000F00001F80000000003F00000000003E00000000007 E0000000000FC0000000000F80000000001F80000000003F80000000003F00000000007F 00000000007F0000000000FF0000000000FE0000000001FE0000000001FE0000000003FE 0000000003FE0000000003FE0000000007FC0000000007FC0000000007FC000000000FFC 000000000FFC000000000FFC000000000FFC000000000FFC000000001FFC000000001FFC 000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC000000001FFC 000000001FFC000000000FF80000000007F00000000003E00000002A3B7BB931>I<0001 FF8000000FFFF800003FFFFE00007F00FF0000F8003F8001F0000FC003E0000FE007C000 07F007C00007F00FC00003F80FC00003F81FC00003F81FC00003F81FE00003F81FF00003 F81FF80003F81FFC0007F01FFF0007F01FFFC007E00FFFF00FE00FFFFC1FC007FFFE3F80 07FFFFFF0003FFFFFC0001FFFFF80000FFFFFE00007FFFFF00003FFFFF80003FFFFFE000 FFFFFFF001FDFFFFF007F07FFFF80FE01FFFFC1FC007FFFC3F8001FFFE3F8000FFFE7F00 003FFF7F00000FFFFE000003FFFE000001FFFE000000FFFE000000FFFE0000007FFE0000 007FFE0000007EFE0000007E7F0000007E7F000000FC3F800000FC3FC00001F81FE00003 F00FF00007E007FE007FC003FFFFFF8000FFFFFE00003FFFF8000003FF800028397CB731 >I<0001FF8000001FFFF000007FFFFC0000FF81FE0001FE007F0007FC003F800FF8003F C00FF8001FE01FF8001FF03FF0001FF03FF0000FF87FF0000FF87FF0000FFCFFF0000FFC FFF0000FFCFFF0000FFEFFF0000FFEFFF0000FFEFFF0000FFEFFF0000FFEFFF0000FFFFF F0000FFFFFF0000FFF7FF0000FFF7FF0001FFF7FF0001FFF3FF0001FFF3FF0001FFF1FF0 003FFF0FF8003FFF07F8007FFF03FC006FFF01FE01CFFF00FFEF8FFF007FFF0FFF000FFE 0FFE0000000FFE0000000FFE0000000FFE0000000FFC0000000FFC03E0001FFC07F0001F F80FF8001FF81FFC001FF01FFC003FF01FFC003FE01FFC003FC01FF8007FC00FF000FF80 0FE001FF0007C003FE0007F01FFC0003FFFFF00001FFFFC000007FFF0000000FF8000028 397CB731>I<00000001F80000000000000001F80000000000000003FC00000000000000 03FC0000000000000007FE0000000000000007FE0000000000000007FE00000000000000 0FFF000000000000000FFF000000000000001FFF800000000000001FFF80000000000000 1FFF800000000000003FFFC00000000000003FFFC00000000000007FFFE0000000000000 7DFFE00000000000007DFFE0000000000000FDFFF0000000000000F8FFF0000000000001 F8FFF8000000000001F07FF8000000000001F07FF8000000000003F07FFC000000000003 E03FFC000000000007E03FFE000000000007C01FFE00000000000FC01FFF00000000000F 801FFF00000000000F800FFF00000000001F800FFF80000000001F0007FF80000000003F 0007FFC0000000003E0003FFC0000000003E0003FFC0000000007E0003FFE0000000007C 0001FFE000000000FC0001FFF000000000F80000FFF000000000F80000FFF000000001FF FFFFFFF800000001FFFFFFFFF800000003FFFFFFFFFC00000003FFFFFFFFFC00000003E0 00003FFC00000007E000003FFE00000007C000001FFE0000000FC000001FFF0000000F80 00000FFF0000001F8000000FFF8000001F0000000FFF8000001F00000007FF8000003F00 000007FFC000003E00000003FFC000007E00000003FFE00000FF00000001FFE000FFFFFC 0001FFFFFFF0FFFFFC0001FFFFFFF0FFFFFC0001FFFFFFF0FFFFFC0001FFFFFFF0443B7D BA4B>65 D<0000001FFF000030000001FFFFE000F000000FFFFFFC01F000007FFFFFFE03 F00001FFFE007F87F00003FFE0000FCFF0000FFF000003FFF0001FFC000001FFF0003FF8 0000007FF0007FF00000003FF000FFC00000003FF001FFC00000001FF003FF800000000F F007FF000000000FF00FFF0000000007F00FFE0000000007F01FFE0000000003F01FFE00 00000003F03FFC0000000003F03FFC0000000001F03FFC0000000001F07FFC0000000001 F07FF80000000001F07FF80000000000007FF8000000000000FFF8000000000000FFF800 0000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF80000000000 00FFF8000000000000FFF8000000000000FFF8000000000000FFF8000000000000FFF800 00000000007FF80000000000007FF80000000000007FF80000000000007FFC0000000000 F03FFC0000000000F03FFC0000000000F03FFC0000000000F01FFE0000000000F01FFE00 00000001E00FFE0000000001E00FFF0000000001E007FF0000000003C003FF8000000003 C001FFC0000000078000FFE00000000F00007FF00000001F00003FF80000003E00001FFC 0000007C00000FFF000001F8000003FFE00007F0000001FFFE003FC00000007FFFFFFF00 0000000FFFFFFC0000000001FFFFF000000000001FFF0000003C3D7BBB47>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 /Fr 6 107 df0 D<01800180018001800180C183F18F399C0FF003 C003C00FF0399CF18FC1830180018001800180018010147D9417>3 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003 C010127D9317>15 D<000000C0000003C000000F0000003C000000F0000003C000000700 00001C00000078000001E00000078000001E00000078000000E0000000780000001E0000 000780000001E0000000780000001C0000000700000003C0000000F00000003C0000000F 00000003C0000000C0000000000000000000000000000000000000000000000000000000 007FFFFF80FFFFFFC01A247C9C23>20 DI106 D E /Fs 1 98 df<001800003C00003C00003C00007E00007E00007E0000CF 0000CF0000CF000187800187800387C00303C00303C007FFE007FFE00601E00C00F00C00 F01E00F8FF03FFFF03FF18177F961C>97 D E /Ft 37 124 df<387C7C7E3A0404040808 10204080070E789F0D>39 D<3078F8787005057C840D>46 D<007E0001C3000301800701 C00E00C00E00E01C00E01C00E03C01E03801E07801E07801E07801E07801E07801E0F003 C0F003C0F003C0F003C0F003C0F00380F00780E00780E00700E00700E00E00600E00701C 003038003870000FC000131F7C9D17>48 D<000C001C00FC0F3800380038003800380038 00700070007000700070007000E000E000E000E000E000E001C001C001C001C001C001C0 038003C0FFFE0F1E7C9D17>I<003F8000C1E00100F00200780400780400780F007C0F80 7C0F807C0F00780600780000F80000F00001E00001C0000380000700000E00001C000038 0000600000C0000180000300200600200800401000403FFFC07FFF80FFFF80161E7E9D17 >I<007F000183C00201E00400F00700F00F00F00F01F00F01F00001E00001E00003C000 0380000700000E0000F800000E000007000007800007C00003C00007C03007C07807C0F8 07C0F807C0F00780800F00400E00201C0018780007E000141F7D9D17>I<000060000060 0000E00001C00003C00005C0000DC00009C00011C000238000438000C380008380010380 020380040700080700180700100700200700400700FFFFF0000E00000E00000E00000E00 000E00001C00001E0001FFE0141E7E9D17>I<01803001FFE003FFC003FF0003FC000200 00020000020000040000040000040000047C000587000603800C01800801C00001C00001 E00001E00001E00001E07003C0F803C0F003C0E00380800780400700400E00201C001870 0007C000141F7D9D17>I<000F8000704000C0200180E00301E00701E00E00C01E00001C 00003C000038000078F800790E007A07007C0300F80380F80380F003C0F003C0F003C0F0 03C0F00780E00780E00780E00700E00F00600E00701C0030180018700007C000131F7C9D 17>I<2000003FFFE07FFFC07FFF80400100C00200800200800400000800001000002000 0040000040000080000180000300000300000700000600000E00000E00001E00001C0000 1C00003C00003C00003C0000780000780000780000300000131F799D17>I<003F0000C1 C00100600200600400300C00300C00300C00300C00600E00600F80C00FC18007F60003FC 0001FC0001FF00063F800C0F801007C03003C06001C06000C0C000C0C000C0C000C0C000 80C0010060030030040018180007E000141F7D9D17>I<007E0001C3000301800601C00E 01C01C00C03C00E03C00E03C01E07801E07801E07801E07801E07803E07803E03803C038 07C01C0BC00C13C003E380000780000780000700000E00600E00F01C00F01800E0300080 600041C0003F0000131F7C9D17>I<07E01838201C401C701CF03CF03C603C0038007000 E001C0018003000200060004000400080008000800080000000000000000000000300078 00F800780070000E20799F15>63 D<000010000000180000003800000038000000780000 0078000000FC000001BC0000013C0000033C0000023C0000063C0000043E0000081E0000 081E0000101E0000101E0000201E0000200F0000400F0000400F0000FFFF0000800F0001 000F8001000780020007800200078004000780040007800C0007C03E0007C0FF807FFC1E 207E9F22>65 D<07FFFF00007C01C0003C01E0003C00F0007800F8007800F8007800F800 7800F8007800F8007800F000F001F000F001E000F003C000F00F8000FFFE0000F00F0001 E007C001E003C001E003E001E001E001E001E001E001E003C001E003C003E003C003E003 C003C003C007C003C00F8007800F0007803E00FFFFF0001D1F7E9E20>I<0001F808000E 061800380138007000F801E0007803C0007007800030078000300F0000301F0000301E00 00303E0000203C0000007C0000007C0000007C0000007C000000F8000000F8000000F800 0000F8000000F80000007800004078000080780000803C0000803C0001001C0002000E00 020006000C000300100001C0E000003F00001D217B9F21>I<07FFFF00007C01E0003C00 F0003C00780078003C0078003C0078001E0078001E0078001E0078001F00F0001F00F000 1F00F0001F00F0001F00F0001F00F0001F01E0001E01E0003E01E0003E01E0003E01E000 3C01E0007C03C0007803C000F003C000F003C001E003C003C003C0078007800F0007803C 00FFFFE000201F7E9E23>I<07FFFFF8007C0078003C0038003C00180078001800780008 0078000800780008007800080078080800F0100000F0100000F0100000F0300000FFF000 00F0700001E0200001E0200001E0200001E0200001E0000801E0001003C0001003C00010 03C0002003C0002003C0006003C000C0078001C0078007C0FFFFFF801D1F7E9E1F>I<07 FFFFF8007C0078003C0038003C0018007800180078000800780008007800080078000800 78000800F0100000F0100000F0100000F0300000F0700000FFF00001E0600001E0200001 E0200001E0200001E0200001E0000003C0000003C0000003C0000003C0000003C0000003 C000000780000007C00000FFFE00001D1F7E9E1E>I<0001FC04000F030C003C009C0070 007C00E0003C01C0003803800018078000180F0000181F0000181E0000183E0000103C00 00007C0000007C0000007C0000007C000000F8000000F8000000F8007FFCF80003E07800 01E0780001E0780003C0780003C03C0003C03C0003C01C0003C00E0007C007000B800380 118001E06080003F80001E217B9F24>I<07FFC7FFC0007C00F800003C007800003C0078 00007800F000007800F000007800F000007800F000007800F000007800F00000F001E000 00F001E00000F001E00000F001E00000FFFFE00000F001E00001E003C00001E003C00001 E003C00001E003C00001E003C00001E003C00003C007800003C007800003C007800003C0 07800003C007800003C007800007800F000007C00F8000FFF8FFF800221F7E9E22>I<07 FFE0007C00003C00003C0000780000780000780000780000780000780000F00000F00000 F00000F00000F00000F00001E00001E00001E00001E00001E00001E00003C00003C00003 C00003C00003C00003C00007800007C000FFFC00131F7F9E10>I<07FFE07FE0007C001F 00003C000C00003C00180000780010000078004000007800800000780100000078020000 007804000000F008000000F010000000F060000000F0F0000000F1F0000000F278000001 E478000001E878000001F03C000001E03C000001E01E000001E01E000003C00F000003C0 0F000003C00F000003C007800003C007800003C003C000078003C00007C007E000FFFC3F FC00231F7E9E23>75 D<07FFF000007E0000003C0000003C000000780000007800000078 000000780000007800000078000000F0000000F0000000F0000000F0000000F0000000F0 000001E0000001E0000001E0000001E0000001E0008001E0010003C0010003C0010003C0 030003C0020003C0060003C0060007801E0007807C00FFFFFC00191F7E9E1C>I<07FC00 00FFC0007C0000F800003C00017800003C00017800004E0002F000004E0002F000004E00 04F000004E0004F000004E0008F000004E0008F00000870011E00000870011E000008700 21E00000870021E00000870041E00000838041E00001038083C00001038083C000010381 03C00001038203C0000101C203C0000101C403C0000201C40780000201C80780000201C8 0780000201D00780000200F00780000600E00780000600E00F00000F00C00F8000FFE0C1 FFF8002A1F7E9E2A>I<07FC01FFC0003E003E00003E001800003E001800004F00100000 4F001000004780100000478010000043C010000043C010000083C020000081E020000081 E020000080F020000080F020000080782000010078400001007C400001003C400001003C 400001001E400001001E400002000F800002000F800002000F8000020007800002000780 00060003800006000300000F00010000FFE0010000221F7E9E22>I<0003F800001E0E00 0038070000E0038001C001C003C001E0078000E00F0000F00F0000F01E0000F01E0000F8 3E0000F83C0000F87C0000F87C0000F87C0000F87C0000F8F80001F0F80001F0F80001F0 F80001F0F80003E0780003E0780003C0780007C07C0007803C000F003C001E001E001C00 0E0038000700F00003C3C00000FE00001D217B9F23>I<07FFFF00007C03C0003C01E000 3C00F0007800F0007800F8007800F8007800F8007800F8007800F000F001F000F001E000 F003C000F0078000F00F0000FFF80001E0000001E0000001E0000001E0000001E0000001 E0000003C0000003C0000003C0000003C0000003C0000003C000000780000007C00000FF FC00001D1F7E9E1F>I<07FFFC00007C0700003C03C0003C01E0007801E0007801F00078 01F0007801F0007801F0007801E000F003E000F003C000F0078000F00F0000F03C0000FF F00001E0300001E0380001E01C0001E01C0001E01C0001E01E0003C03E0003C03E0003C0 3E0003C03E0003C03E0003C03E0207803E0407C01F04FFFC0F18000003E01F207E9E21> 82 D<003F040060CC01803C03801C03001C0700180600080E00080E00080E00080E0000 0F00000F80000FE00007FE0003FF8001FFC0007FE00007E00001E00000E00000F00000F0 4000E04000E04000E04000E06000C0600180E00380F80300C60C0081F80016217D9F19> I<3FFFFFF03C0780F03007803060078030400F0010400F0010C00F0010800F0010800F00 10800F0010001E0000001E0000001E0000001E0000001E0000001E0000003C0000003C00 00003C0000003C0000003C0000003C000000780000007800000078000000780000007800 000078000000F0000001F800007FFFE0001C1F7A9E21>IIII<03FFC0FFC0007F007E0000 3E003800001E003000001E002000000F004000000F008000000F81000000078200000007 C600000003C400000003E800000001F000000001F000000000F000000000F800000000F8 000000017C000000023C000000043C0000000C1E000000081E000000101F000000200F00 0000400F800000C0078000008007C000010003C000070003E0001F8007E000FFE01FFE00 221F7F9E22>II123 D E /Fu 15 121 df<70F8F8F87005057C840D>58 D<70F8FCFC7404040408 0810102040060E7C840D>I<000001C00000078000001E00000078000001E00000078000 000E00000038000000F0000003C000000F0000003C000000F0000000F00000003C000000 0F00000003C0000000F0000000380000000E0000000780000001E0000000780000001E00 00000780000001C01A1A7C9723>I62 D<0000780003F80000700000700000700000 700000E00000E00000E00000E00001C00001C000F1C00389C00707800E03801C03803C03 80380700780700780700780700F00E00F00E00F00E00F00E10F01C20F01C20703C20705C 40308C400F078015207E9F18>100 D<007C01C207010E011C013C013802780C7BF07C00 F000F000F000F0007000700170023004183807C010147E9315>I<001E3000713800E0F0 01C0700380700780700700E00F00E00F00E00F00E01E01C01E01C01E01C01E01C01E0380 1E03800E07800E0B8006170001E700000700000700000E00000E00300E00781C00F03800 6070003FC000151D809316>103 D<00E001E001E000C000000000000000000000000000 000E00130023804380438043808700070007000E000E001C001C001C2038403840384038 8019000E000B1F7E9E10>105 D<0000C00001E00001E00001C000000000000000000000 0000000000000000000000001E0000630000438000838001038001038002070000070000 0700000700000E00000E00000E00000E00001C00001C00001C00001C0000380000380000 380000380000700000700030700078E000F1C0006380003E00001328819E13>I<03C01F C0038003800380038007000700070007000E000E000E000E001C001C001C001C00380038 00380038007000700070007100E200E200E200E200640038000A207E9F0E>108 D<1E07802318C023A06043C0704380704380708700E00700E00700E00700E00E01C00E01 C00E01C00E03821C03841C07041C07081C03083803101801E017147E931B>110 D<007C0001C3000301800E01C01E01C01C01E03C01E07801E07801E07801E0F003C0F003 C0F003C0F00780F00700700F00700E0030180018700007C00013147E9316>I<007C0182 03010603060706060E00078007F803FC01FE001F00077007F006F006E004400820301FC0 10147E9315>115 D<00C000E001C001C001C001C003800380FFF8038007000700070007 000E000E000E000E001C001C001C001C10382038203820384018800F000D1C7F9B10>I< 03C1C00C62201034701038F02038F020386040700000700000700000700000E00000E000 00E00000E02061C040F1C040F1C080E2C080446300383C0014147E931A>120 D E /Fv 85 124 df<001F83E000F06E3001C078780380F8780300F03007007000070070 000700700007007000070070000700700007007000FFFFFF800700700007007000070070 000700700007007000070070000700700007007000070070000700700007007000070070 000700700007007000070070000700700007007000070070007FE3FF001D20809F1B>11 D<003F0000E0C001C0C00381E00701E00701E00700000700000700000700000700000700 00FFFFE00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700 E00700E00700E00700E00700E00700E00700E00700E07FC3FE1720809F19>I<003FE000 E0E001C1E00381E00700E00700E00700E00700E00700E00700E00700E00700E0FFFFE007 00E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E007 00E00700E00700E00700E00700E00700E07FE7FE1720809F19>I<001F81F80000F04F04 0001C07C06000380F80F000300F00F000700F00F00070070000007007000000700700000 070070000007007000000700700000FFFFFFFF0007007007000700700700070070070007 007007000700700700070070070007007007000700700700070070070007007007000700 700700070070070007007007000700700700070070070007007007000700700700070070 07007FE3FE3FF02420809F26>I<001F81FF0000F06F070001C07C0F000380F80F000300 F00700070070070007007007000700700700070070070007007007000700700700070070 0700FFFFFFFF000700700700070070070007007007000700700700070070070007007007 000700700700070070070007007007000700700700070070070007007007000700700700 070070070007007007000700700700070070070007007007007FE3FE3FF02420809F26> I<7038F87CFC7EFC7E743A0402040204020804080410081008201040200F0E7E9F17>34 D<70F8FCFC74040404080810102040060E7C9F0D>39 D<0020004000800100020006000C 000C00180018003000300030007000600060006000E000E000E000E000E000E000E000E0 00E000E000E000E0006000600060007000300030003000180018000C000C000600020001 000080004000200B2E7DA112>I<800040002000100008000C0006000600030003000180 0180018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E000E0 00C000C000C001C001800180018003000300060006000C00080010002000400080000B2E 7DA112>I<01800180018001800180C183F18F399C0FF003C003C00FF0399CF18FC18301 80018001800180018010147DA117>I<0006000000060000000600000006000000060000 000600000006000000060000000600000006000000060000000600000006000000060000 00060000FFFFFFF0FFFFFFF0000600000006000000060000000600000006000000060000 000600000006000000060000000600000006000000060000000600000006000000060000 1C207D9A23>I<70F8FCFC74040404080810102040060E7C840D>II<70F8F8F87005057C840D>I<000100030003000600060006000C000C000C0018001800 1800300030003000600060006000C000C000C00180018001800300030003000600060006 000C000C000C00180018001800300030003000600060006000C000C000C000102D7DA117 >I<03F0000E1C001C0E00180600380700700380700380700380700380F003C0F003C0F0 03C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003C070038070 03807003807807803807001806001C0E000E1C0003F000121F7E9D17>I<018003800F80 F38003800380038003800380038003800380038003800380038003800380038003800380 038003800380038003800380038007C0FFFE0F1E7C9D17>I<03F0000C1C00100E002007 00400780800780F007C0F803C0F803C0F803C02007C00007C0000780000780000F00000E 00001C0000380000700000600000C0000180000300000600400C00401800401000803FFF 807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F8078078078078038 0F80000F80000F00000F00000E00001C0000380003F000003C00000E00000F0000078000 07800007C02007C0F807C0F807C0F807C0F00780400780400F00200E001C3C0003F00012 1F7E9D17>I<000600000600000E00000E00001E00002E00002E00004E00008E00008E00 010E00020E00020E00040E00080E00080E00100E00200E00200E00400E00C00E00FFFFF0 000E00000E00000E00000E00000E00000E00000E0000FFE0141E7F9D17>I<1803001FFE 001FFC001FF8001FE00010000010000010000010000010000010000011F000161C00180E 001007001007800003800003800003C00003C00003C07003C0F003C0F003C0E003804003 80400700200600100E000C380003E000121F7E9D17>I<007C000182000701000E03800C 07801C0780380300380000780000700000700000F1F000F21C00F40600F80700F80380F8 0380F003C0F003C0F003C0F003C0F003C07003C07003C07003803803803807001807000C 0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF80400100800200800200 80040000080000080000100000200000200000400000400000C00000C00001C000018000 038000038000038000038000078000078000078000078000078000078000078000030000 121F7D9D17>I<03F0000C0C001006003003002001806001806001806001807001807803 003E03003F06001FC8000FF00003F80007FC000C7E00103F00300F806003804001C0C001 C0C000C0C000C0C000C0C000806001802001001002000C0C0003F000121F7E9D17>I<03 F0000E18001C0C00380600380700700700700380F00380F00380F003C0F003C0F003C0F0 03C0F003C07007C07007C03807C0180BC00E13C003E3C000038000038000038000070030 0700780600780E00700C002018001070000FC000121F7E9D17>I<70F8F8F87000000000 00000000000070F8F8F87005147C930D>I<70F8F8F8700000000000000000000070F0F8 F878080808101010202040051D7C930D>I<7FFFFFE0FFFFFFF000000000000000000000 00000000000000000000000000000000000000000000FFFFFFF07FFFFFE01C0C7D9023> 61 D<0FC0307040384038E03CF03CF03C603C0038007000E000C0018001800100030002 00020002000200020002000000000000000000000007000F800F800F8007000E207D9F15 >63 D<001F800000E0700001000800060006000800010008000100100F00802030C04020 60404040C0202041C01C2041C01C2081801C1083801C1083801C1083801C1083801C1083 801C1083801C1081801C1041C01C1041C01C1040C03C2020605C202030CC40100F078008 0000000800000006000070010001C000E01F00001FF0001C207D9F23>I<000100000003 800000038000000380000007C0000007C0000007C0000009E0000009E0000009E0000010 F0000010F0000010F00000207800002078000020780000403C0000403C0000403C000080 1E0000801E0000FFFE0001000F0001000F0001000F000200078002000780020007800400 03C00E0003C01F0007E0FFC03FFE1F207F9F22>II<000FC040007030C001C009C0038005C0070003C00E0001C01E0000C0 1C0000C03C0000C07C0000407C00004078000040F8000000F8000000F8000000F8000000 F8000000F8000000F8000000F8000000F8000000780000007C0000407C0000403C000040 1C0000401E0000800E000080070001000380020001C0040000703800000FC0001A217D9F 21>IIII< 000FE0200078186000E004E0038002E0070001E00F0000E01E0000601E0000603C000060 3C0000207C00002078000020F8000000F8000000F8000000F8000000F8000000F8000000 F8000000F8007FFCF80003E0780001E07C0001E03C0001E03C0001E01E0001E01E0001E0 0F0001E0070001E0038002E000E0046000781820000FE0001E217D9F24>III<0FFFC0007C00003C00003C00003C00003C00003C00 003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00 003C00003C00003C00003C00203C00F83C00F83C00F83C00F0380040780040700030E000 0F800012207E9E17>IIIII<001F800000F0 F00001C0380007801E000F000F000E0007001E0007803C0003C03C0003C07C0003E07800 01E0780001E0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F800 01F0F80001F0780001E07C0003E07C0003E03C0003C03C0003C01E0007800E0007000F00 0F0007801E0001C0380000F0F000001F80001C217D9F23>II<001F800000F0F00001C0380007801E000F000F000E000700 1E0007803C0003C03C0003C07C0003E07C0003E0780001E0F80001F0F80001F0F80001F0 F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001E0780001E07C0003E0 3C0003C03C0F03C01E1087800E2047000F204F0007A03E0001E0380000F0F010001FB010 00003010000038300000387000003FF000001FE000001FE000000FC0000007801C297D9F 23>II<07E0800C1980 100780300380600180600180E00180E00080E00080E00080F00000F000007800007F0000 3FF0001FFC000FFE0003FF00001F800007800003C00003C00001C08001C08001C08001C0 8001C0C00180C00380E00300F00600CE0C0081F80012217D9F19>I<7FFFFFE0780F01E0 600F0060400F0020400F0020C00F0030800F0010800F0010800F0010800F0010000F0000 000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000 001F800007FFFE001C1F7E9E21>IIII<7FF83FF80FE00FC007C0070003C0020001E00400 01F00C0000F0080000781000007C1000003C2000003E4000001E4000000F8000000F8000 000780000003C0000007E0000005E0000009F0000018F8000010780000207C0000603C00 00401E0000801F0001800F0001000780020007C0070003C01F8007E0FFE01FFE1F1F7F9E 22>I<7FFFF87C00F87000F06001E04001E0C003C0C003C0800780800F80800F00001E00 001E00003C00003C0000780000F80000F00001E00001E00003C00403C0040780040F8004 0F000C1E000C1E00083C00183C0018780038F801F8FFFFF8161F7D9E1C>90 DI<080410082010201040204020804080408040B8 5CFC7EFC7E7C3E381C0F0E7B9F17>II<1FE00030 3000781800781C00300E00000E00000E00000E0000FE00078E001E0E00380E00780E00F0 0E10F00E10F00E10F01E10781E103867200F83C014147E9317>97 D<0E0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00 000E3E000EC3800F01C00F00E00E00E00E00700E00700E00780E00780E00780E00780E00 780E00780E00700E00700E00E00F00E00D01C00CC300083E0015207F9F19>I<03F80E0C 1C1E381E380C70007000F000F000F000F000F000F00070007000380138011C020E0C03F0 10147E9314>I<000380003F800003800003800003800003800003800003800003800003 8000038000038003E380061B801C0780380380380380700380700380F00380F00380F003 80F00380F00380F003807003807003803803803807801C07800E1B8003E3F815207E9F19 >I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80F00000F0 0000F000007000007000003800801800800C010007060001F80011147F9314>I<007C00 C6018F038F07060700070007000700070007000700FFF007000700070007000700070007 00070007000700070007000700070007000700070007007FF01020809F0E>I<0000E003 E3300E3C301C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E380033 E0002000002000003000003000003FFE001FFF800FFFC03001E0600070C00030C00030C0 0030C000306000603000C01C038003FC00141F7F9417>I<0E0000FE00000E00000E0000 0E00000E00000E00000E00000E00000E00000E00000E00000E3E000E43000E81800F01C0 0F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C0FFE7FC16207F9F19>I<1C001E003E001E001C0000000000000000 00000000000E007E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E000000000000000000000 0000007007F000F000700070007000700070007000700070007000700070007000700070 00700070007000700070007000706070F060F0C061803F000C28829E0E>I<0E0000FE00 000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FF00E03 C00E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E000E0E 000E07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00 0E000E000E000E000E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E 81C81C000F00F00E000F00F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00 E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E0 0E000E00E00E000E00E00E00FFE7FE7FE023147F9326>I<0E3E00FE43000E81800F01C0 0F01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C0FFE7FC16147F9319>I<01F800070E001C03803801C03801C07000 E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E07000E03801C03801C01C03 80070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E00E00F00E00700E 00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C00EC3000E 3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D7F9319>I< 03E0800619801C05803C0780380380780380700380F00380F00380F00380F00380F00380 F003807003807803803803803807801C0B800E138003E380000380000380000380000380 000380000380000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E000E00 0E000E000E000E000E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030 704030C010C010C010E00078007F803FE00FF00070803880188018C018C018E030D0608F 800D147E9312>I<020002000200060006000E000E003E00FFF80E000E000E000E000E00 0E000E000E000E000E000E000E080E080E080E080E080610031001E00D1C7F9B12>I<0E 01C0FE1FC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC16147F9319>III<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800003C 00007C00004E000087000107000303800201C00601E01E01E0FF07FE1714809318>II<3FFF380E200E201C40384078407000 E001E001C00380078007010E011E011C0338027006700EFFFE10147F9314>II E /Fw 74 124 df<000FF07F00007FF9FF8000F83FC7C001E07F8FC003E0 7F0FC007C07F0FC007C03F078007C01F000007C01F000007C01F000007C01F000007C01F 0000FFFFFFF800FFFFFFF80007C01F000007C01F000007C01F000007C01F000007C01F00 0007C01F000007C01F000007C01F000007C01F000007C01F000007C01F000007C01F0000 07C01F000007C01F000007C01F000007C01F00003FF8FFF0003FF8FFF0002220809F1F> 11 D<000FE000007FF80000F81C0001E07C0003E07C0007C07C0007C07C0007C0380007 C0000007C0000007C0000007C1FE00FFFFFE00FFFFFE0007C03E0007C03E0007C03E0007 C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007 C03E0007C03E0007C03E0007C03E003FF9FFC03FF9FFC01A20809F1D>I<000FFE00007F FE0000F87E0001E0FE0003E0FE0007C07E0007C07E0007C03E0007C03E0007C03E0007C0 3E0007C03E00FFFFFE00FFFFFE0007C03E0007C03E0007C03E0007C03E0007C03E0007C0 3E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C03E0007C0 3E0007C03E003FF9FFC03FF9FFC01A20809F1D>I<000FF03FFC00007FFDFFFC0000F83F E0FC0001E03F81FC0003E07F81FC0007C07F00FC0007C03F00FC0007C01F007C0007C01F 007C0007C01F007C0007C01F007C0007C01F007C00FFFFFFFFFC00FFFFFFFFFC0007C01F 007C0007C01F007C0007C01F007C0007C01F007C0007C01F007C0007C01F007C0007C01F 007C0007C01F007C0007C01F007C0007C01F007C0007C01F007C0007C01F007C0007C01F 007C0007C01F007C0007C01F007C0007C01F007C003FF8FFE3FF803FF8FFE3FF80292080 9F2C>15 D<0018007000E001C00380038007000E000E001E001C003C003C007800780078 007800F800F000F000F000F000F000F000F000F000F000F80078007800780078003C003C 001C001E000E000E0007000380038001C000E0007000180D2D7DA114>40 DI<00E00001F00000E00000 E000E0E0E0F0E1E0FCE7E0FE4FE01F5F0003F80003F8001F5F00FE4FE0FCE7E0F0E1E0E0 E0E000E00000E00001F00000E00013147DA11A>I<387CFEFFFF7F3B030306060E0C1870 2008107C860F>44 DI<387CFEFEFE7C3807077C860F> I<0000600000E00000E00001C00001C0000380000380000380000700000700000700000E 00000E00001C00001C00001C0000380000380000380000700000700000E00000E00000E0 0001C00001C0000380000380000380000700000700000700000E00000E00001C00001C00 001C0000380000380000380000700000700000E00000E00000C00000132D7DA11A>I<01 FC0007FF001F07C01E03C03E03E07C01F07C01F07C01F0FC01F8FC01F8FC01F8FC01F8FC 01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F8FC01F87C01F07C01F07C01F03E 03E01E03C01F8FC007FF0001FC00151D7E9C1A>I<00E00001E0000FE000FFE000F3E000 03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000 03E00003E00003E00003E00003E00003E00003E00003E00003E00003E000FFFF80FFFF80 111D7C9C1A>I<07F0001FFE00383F007C1F80FE0FC0FE0FC0FE0FE0FE07E07C07E03807 E0000FE0000FC0000FC0001F80001F00003E0000780000F00000E00001C0000380600700 600E00601C00E01FFFC03FFFC07FFFC0FFFFC0FFFFC0131D7D9C1A>I<01FC0007FF000E 0F801E0FC03F07E03F07E03F07E03F07E01E0FC0000FC0000F80001F0001FC0001FC0000 0F800007C00003E00003F00003F83803F87C03F8FE03F8FE03F8FE03F0FC03F07807E03C 0FC01FFF8003FC00151D7E9C1A>I<0001C00003C00007C00007C0000FC0001FC0003BC0 0073C00063C000C3C00183C00383C00703C00E03C00C03C01803C03803C07003C0E003C0 FFFFFEFFFFFE0007C00007C00007C00007C00007C00007C000FFFE00FFFE171D7F9C1A> I<3803803FFF803FFF003FFE003FFC003FF0003F800030000030000030000030000033F8 0037FE003C1F00380F801007C00007C00007E00007E07807E0FC07E0FC07E0FC07E0FC07 C0780FC0600F80381F001FFC0007F000131D7D9C1A>I<003F0001FFC007E0E00F81E01F 03F01E03F03E03F07C03F07C01E07C0000FC1000FCFF00FDFFC0FD03E0FE01F0FE01F0FC 01F8FC01F8FC01F8FC01F87C01F87C01F87C01F83C01F03E01F01E03E00F07C007FF8001 FE00151D7E9C1A>I<6000007FFFF87FFFF87FFFF07FFFE07FFFC0E00180C00300C00300 C00600000C0000180000380000380000780000700000F00000F00001F00001F00001F000 01F00003F00003F00003F00003F00003F00003F00001E00000C000151E7D9D1A>I<01FC 0007FF000F07801E03C01C01E03C01E03C01E03E01E03F01E03FC3C01FE3801FFF000FFE 0007FF8007FFC01FFFE03C3FF0780FF07803F8F001F8F000F8F00078F00078F000707800 707C00E03E03C00FFF8003FC00151D7E9C1A>I<01FC000FFF001F07803E03C07C03E07C 01E0FC01F0FC01F0FC01F0FC01F8FC01F8FC01F8FC01F87C03F87C03F83E05F81FFDF807 F9F80041F80001F03C01F07E01F07E03E07E03E07E07C03C0780381F001FFC0007F00015 1D7E9C1A>I<387CFEFEFE7C38000000000000387CFEFEFE7C3807147C930F>I<7FFFFFFF 80FFFFFFFFC0FFFFFFFFC000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000FFFFFFFFC0FFFFFFFFC07FFFFFFF8022 0F7D9229>61 D<0000E000000000E000000001F000000001F000000001F000000003F800 000003F800000006FC00000006FC0000000EFE0000000C7E0000000C7E000000183F0000 00183F000000303F800000301F800000701FC00000600FC00000600FC00000C007E00000 FFFFE00001FFFFF000018003F000018003F000030001F800030001F800060001FC000600 00FC000E0000FE00FFE00FFFE0FFE00FFFE0231F7E9E28>65 DI<0007FC02003FFF0E00FE03DE03F000FE07E0003E0FC000 1E1F80001E3F00000E3F00000E7F0000067E0000067E000006FE000000FE000000FE0000 00FE000000FE000000FE000000FE0000007E0000007E0000067F0000063F0000063F0000 0C1F80000C0FC0001807E0003803F0007000FE01C0003FFF800007FC001F1F7D9E26>I< FFFFFE0000FFFFFFC00007E007F00007E001F80007E000FC0007E0007E0007E0003F0007 E0003F0007E0001F8007E0001F8007E0001F8007E0001FC007E0001FC007E0001FC007E0 001FC007E0001FC007E0001FC007E0001FC007E0001FC007E0001FC007E0001F8007E000 1F8007E0001F8007E0003F0007E0003F0007E0007E0007E000FC0007E001F80007E007F0 00FFFFFFC000FFFFFE0000221F7E9E28>III<0007FC0200003FFF 0E0000FE03DE0003F000FE0007E0003E000FC0001E001F80001E003F00000E003F00000E 007F000006007E000006007E00000600FE00000000FE00000000FE00000000FE00000000 FE00000000FE003FFFE0FE003FFFE07E00007E007E00007E007F00007E003F00007E003F 00007E001F80007E000FC0007E0007E0007E0003F000FE0000FE01FE00003FFF8E000007 FC0600231F7D9E29>III75 DIII<001FF80000FFFF0001F8 1F8007E007E00FC003F01F8001F81F0000F83F0000FC7F0000FE7E00007E7E00007EFE00 007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F7E00 007E7F0000FE7F0000FE3F0000FC3F8001FC1F8001F80FC003F007E007E001F81F8000FF FF00001FF800201F7D9E27>II< 001FF80000FFFF0001F81F8007E007E00FC003F01F8001F81F8001F83F0000FC7F0000FE 7F0000FE7E00007EFE00007FFE00007FFE00007FFE00007FFE00007FFE00007FFE00007F FE00007FFE00007F7E00007E7E00007E7F0000FE3F0000FC3F87C1FC1F8FE1F80FD833F0 07F81FE001F81F8000FFFF00001FFE0300000E0300000F0700000FFF000007FF000007FE 000007FE000003FC000001F8000000F020287D9E27>II<03FC080FFF381E03F83800F8700078700038F00038F00018F00018F80000FC 00007FC0007FFE003FFF801FFFE00FFFF007FFF000FFF80007F80000FC00007C00003CC0 003CC0003CC0003CE00038E00078F80070FE01E0E7FFC081FF00161F7D9E1D>I<7FFFFF FC7FFFFFFC7C07E07C7007E01C6007E00C6007E00CE007E00EC007E006C007E006C007E0 06C007E0060007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0 000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0000007E0 0003FFFFC003FFFFC01F1E7E9D24>IIIIII<3FFFFF803FFFFF803F803F00 3E007F0038007E003800FC007001FC007001F8006003F0006007F0006007E000000FC000 001FC000001F8000003F0000007F0000007E000000FC000001FC018001F8018003F00180 07F0018007E003800FC003801FC003001F8007003F000F007F001F007E007F00FFFFFF00 FFFFFF00191F7D9E20>I<07FC001FFF003F0F803F07C03F03E03F03E00C03E00003E000 7FE007FBE01F03E03C03E07C03E0F803E0F803E0F803E0FC05E07E0DE03FF8FE0FE07E17 147F9319>97 DI<01FE0007FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC0000FC0000FC0000FC 0000FC00007C00007E00003E00603F00C01F81C007FF0001FC0013147E9317>I<0007F8 0007F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F801F8F8 0FFEF81F83F83E01F87E00F87C00F87C00F8FC00F8FC00F8FC00F8FC00F8FC00F8FC00F8 7C00F87C00F87E00F83E01F81F07F80FFEFF03F8FF18207E9F1D>I<01FE0007FF800F83 C01E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C00 003E00181E00180F807007FFE000FF8015147F9318>I<001F8000FFC001F3E003E7E003 C7E007C7E007C3C007C00007C00007C00007C00007C000FFFC00FFFC0007C00007C00007 C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007C00007 C00007C0003FFC003FFC0013207F9F10>I<01FC3C07FFFE0F079E1E03DE3E03E03E03E0 3E03E03E03E03E03E01E03C00F07800FFF0009FC001800001800001C00001FFF800FFFF0 07FFF81FFFFC3C007C70003EF0001EF0001EF0001E78003C78003C3F01F80FFFE001FF00 171E7F931A>II<1C003E003F007F003F003E001C00000000000000000000000000FF00FF001F001F00 1F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B217EA0 0E>I107 DI< FE0FE03F80FE1FF07FC01E70F9C3E01E407D01F01E807E01F01F807E01F01F007C01F01F 007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F007C01F01F00 7C01F01F007C01F01F007C01F01F007C01F0FFE3FF8FFEFFE3FF8FFE27147D932C>II<01FF0007FFC0 1F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007E7C007C 7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>II<01F81807FE381F87783F01F83E01F87E00F87C00F8FC00F8FC 00F8FC00F8FC00F8FC00F8FC00F87C00F87E00F87E00F83F01F81F87F80FFEF803F8F800 00F80000F80000F80000F80000F80000F80000F80007FF0007FF181D7E931C>II<0FE63FFE701E600E E006E006F800FFC07FF83FFC1FFE03FE001FC007C007E007F006F81EFFFCC7F010147E93 15>I<01800180018003800380038007800F803F80FFFCFFFC0F800F800F800F800F800F 800F800F800F800F800F860F860F860F860F8607CC03F801F00F1D7F9C14>IIIIII<3F FFE03FFFE03C07C0380F80701F80603F00603E00607C0000F80001F80003F00003E06007 C0600F80601F80E03F00C03E01C07C03C0FFFFC0FFFFC013147F9317>II E /Fx 39 124 df<00000007FF800000000001FFFFF0000000000F FFFFFC000000003FFFFFFE00000000FFFC00FF00000001FFC0003F80000007FF00007FC0 00000FFE0001FFC000001FFC0001FFE000001FF80003FFE000003FF00003FFE000003FF0 0003FFE000007FE00003FFE000007FE00003FFE000007FE00003FFE000007FE00003FFE0 00007FE00001FFC000007FE00000FF8000007FE000003E0000007FE00000000000007FE0 0000000000007FE00000000000007FE00000000000007FE00000000000007FE000000000 00007FE0003FFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000FFFFFFFFFFFFF000FFFFFF FFFFFFF000FFFFFFFFFFFFF000007FF00000FFF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF000007FF0 00007FF000007FF000007FF0003FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFFE03FFFFF E03FFFFFE03FFFFFE03FFFFFE03FFFFFE03B487EC742>12 D<0000000003E00000000000 0000000007F000000000000000000007F00000000000000000000FF80000000000000000 000FF80000000000000000000FF80000000000000000001FFC0000000000000000001FFC 0000000000000000003FFE0000000000000000003FFE0000000000000000007FFF000000 0000000000007FFF0000000000000000007FFF000000000000000000FFFF800000000000 000000FFFF800000000000000001FFFFC00000000000000001FFFFC00000000000000001 FFFFC00000000000000003FFFFE00000000000000003EFFFE00000000000000007EFFFF0 0000000000000007CFFFF00000000000000007C7FFF0000000000000000FC7FFF8000000 000000000F83FFF8000000000000001F83FFFC000000000000001F03FFFC000000000000 001F01FFFC000000000000003F01FFFE000000000000003E00FFFE000000000000007E00 FFFF000000000000007C007FFF00000000000000FC007FFF80000000000000F8007FFF80 000000000000F8003FFF80000000000001F8003FFFC0000000000001F0001FFFC0000000 000003F0001FFFE0000000000003E0001FFFE0000000000003E0000FFFE0000000000007 E0000FFFF0000000000007C00007FFF000000000000FC00007FFF800000000000F800007 FFF800000000000F800003FFF800000000001F800003FFFC00000000001F000001FFFC00 000000003FFFFFFFFFFE00000000003FFFFFFFFFFE00000000007FFFFFFFFFFF00000000 007FFFFFFFFFFF00000000007FFFFFFFFFFF0000000000FC0000007FFF8000000000F800 00003FFF8000000001F80000003FFFC000000001F00000003FFFC000000001F00000001F FFC000000003F00000001FFFE000000003E00000000FFFE000000007E00000000FFFF000 000007C00000000FFFF000000007C000000007FFF00000000FC000000007FFF80000000F 8000000003FFF80000001F8000000003FFFC0000001F0000000003FFFC0000007FC00000 0001FFFC0000FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFF FFFF80FFFFFFC00007FFFFFFFF80FFFFFFC00007FFFFFFFF8051487CC75A>65 DI<00 0000003FFE00000E0000000FFFFFC0001E0000007FFFFFF8003E000003FFFFFFFE00FE00 000FFFFFFFFF81FE00003FFFF800FFC3FE0000FFFF80000FF7FE0001FFFC000003FFFE00 07FFF0000001FFFE000FFFC00000007FFE001FFF800000003FFE003FFF000000001FFE00 7FFE000000000FFE00FFFC0000000007FE01FFF80000000007FE03FFF00000000003FE03 FFF00000000001FE07FFE00000000001FE07FFE00000000000FE0FFFC00000000000FE0F FFC000000000007E1FFFC000000000007E1FFF8000000000007E3FFF8000000000007E3F FF8000000000003E3FFF8000000000003E7FFF8000000000003E7FFF0000000000003E7F FF000000000000007FFF00000000000000FFFF00000000000000FFFF00000000000000FF FF00000000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000FF FF00000000000000FFFF00000000000000FFFF00000000000000FFFF00000000000000FF FF00000000000000FFFF00000000000000FFFF000000000000007FFF000000000000007F FF000000000000007FFF000000000000007FFF8000000000003E3FFF8000000000003E3F FF8000000000003E3FFF8000000000003E1FFF8000000000003E1FFFC000000000003E0F FFC000000000007C0FFFC000000000007C07FFE000000000007C07FFE00000000000F803 FFF00000000000F803FFF00000000001F801FFF80000000001F000FFFC0000000003E000 7FFE0000000007E0003FFF000000000FC0001FFF800000001F80000FFFC00000003F0000 07FFF0000000FE000001FFFC000001FC000000FFFF80000FF80000003FFFF8007FF00000 000FFFFFFFFFC000000003FFFFFFFF00000000007FFFFFFC00000000000FFFFFE0000000 0000003FFE000000474979C756>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 /Fy 46 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<03F8000C1E001007002007804007C07807C07803C07807C03807C000078000078000 0700000F00000E0000380003F000001C00000F000007800007800003C00003C00003E020 03E07003E0F803E0F803E0F003C04003C0400780200780100F000C1C0003F00013227EA0 18>51 D<000200000600000E00000E00001E00001E00002E00004E00004E00008E00008E 00010E00020E00020E00040E00040E00080E00100E00100E00200E00200E00400E00800E 00FFFFF8000E00000E00000E00000E00000E00000E00000E00001F0001FFF015217FA018 >I<1000801E07001FFF001FFE001FF80013E00010000010000010000010000010000010 000010F800130E001407001803801003800001C00001C00001E00001E00001E00001E070 01E0F001E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA0 18>I<007E0001C1000300800601C00E03C01C03C0180180380000380000780000700000 700000F0F800F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0 F001E07001E07001E07001E03801C03801C01803801C03000C0600070C0001F00013227E A018>I<01F800060E000803001001802001802000C06000C06000C06000C07000C07801 803E01003F02001FC4000FF80003F80003FC00067F00083F80100F803007C06001C06000 E0C000E0C00060C00060C00060C000606000406000C03000801803000E0E0003F0001322 7EA018>56 D<01F000060C000C0600180700380380700380700380F001C0F001C0F001C0 F001E0F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003E1E0 0001C00001C00001C0000380000380300300780700780600700C002018001030000FC000 13227EA018>I<0001800000018000000180000003C0000003C0000003C0000005E00000 05E000000DF0000008F0000008F0000010F800001078000010780000203C0000203C0000 203C0000401E0000401E0000401E0000800F0000800F0000FFFF00010007800100078003 0007C0020003C0020003C0040003E0040001E0040001E00C0000F00C0000F03E0001F8FF 800FFF20237EA225>65 D<0007E0100038183000E0063001C00170038000F0070000F00E 0000701E0000701C0000303C0000303C0000307C0000107800001078000010F8000000F8 000000F8000000F8000000F8000000F8000000F8000000F800000078000000780000107C 0000103C0000103C0000101C0000201E0000200E000040070000400380008001C0010000 E0020000381C000007E0001C247DA223>67 D69 DI73 D77 DI80 D82 D<03F0200C0C601802603001E07000 E0600060E00060E00060E00020E00020E00020F00000F000007800007F00003FF0001FFE 000FFF0003FF80003FC00007E00001E00000F00000F00000708000708000708000708000 70C00060C00060E000C0F000C0C80180C6070081FC0014247DA21B>I<7FFFFFF8780780 7860078018400780084007800840078008C007800C800780048007800480078004800780 040007800000078000000780000007800000078000000780000007800000078000000780 000007800000078000000780000007800000078000000780000007800000078000000780 00000780000007800000078000000FC00003FFFF001E227EA123>I<0FE0001838003C0C 003C0E0018070000070000070000070000FF0007C7001E07003C0700780700700700F007 08F00708F00708F00F087817083C23900FC1E015157E9418>97 D<0E0000FE00001E0000 0E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F00 0E61C00E80600F00300E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E 0E001E0E001C0E003C0E00380F00700C80600C41C0083F0017237FA21B>I<01FE000703 000C07801C0780380300780000700000F00000F00000F00000F00000F00000F00000F000 007000007800403800401C00800C010007060001F80012157E9416>I<0000E0000FE000 01E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E001 F8E00704E00C02E01C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F0 00E0F000E07000E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<01FC00 0707000C03801C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000 F000007000007800203800201C00400E008007030000FC0013157F9416>I<003C00C601 8F038F030F070007000700070007000700070007000700FFF80700070007000700070007 0007000700070007000700070007000700070007000700070007807FF8102380A20F>I< 00007001F198071E180E0E181C07001C07003C07803C07803C07803C07801C07001C0700 0E0E000F1C0019F0001000001000001800001800001FFE000FFFC00FFFE03800F0600030 400018C00018C00018C000186000306000303800E00E038003FE0015217F9518>I<0E00 00FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00 000E00000E1F800E60C00E80E00F00700F00700E00700E00700E00700E00700E00700E00 700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18237FA21B >I<1C001E003E001E001C00000000000000000000000000000000000E00FE001E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A22 7FA10E>I<01C003E003E003E001C00000000000000000000000000000000001E00FE001 E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000 E000E000E000E000E000E060E0F0C0F18061803E000B2C82A10F>I<0E0000FE00001E00 000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E03 FC0E01F00E01C00E01800E02000E04000E08000E10000E38000EF8000F1C000E1E000E0E 000E07000E07800E03C00E01C00E01E00E00F00E00F8FFE3FE17237FA21A>I<0E00FE00 1E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E000E00FFE00B237FA20E> I<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E00E003800E00E003800E0 0E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E 003800E00E003800E00E003800E00E003800E00E003800E00E003800E0FFE3FF8FFE2715 7F942A>I<0E1F80FE60C01E80E00F00700F00700E00700E00700E00700E00700E00700E 00700E00700E00700E00700E00700E00700E00700E00700E00700E0070FFE7FF18157F94 1B>I<01FC000707000C01801800C03800E0700070700070F00078F00078F00078F00078 F00078F00078F000787000707800F03800E01C01C00E038007070001FC0015157F9418> I<0E1F00FE61C00E80600F00700E00380E003C0E001C0E001E0E001E0E001E0E001E0E00 1E0E001E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F000E00000E00000E00 000E00000E00000E00000E00000E00000E0000FFE000171F7F941B>I<0E3CFE461E8F0F 0F0F060F000E000E000E000E000E000E000E000E000E000E000E000E000E000F00FFF010 157F9413>114 D<0F8830786018C018C008C008E008F0007F803FE00FF001F8003C801C 800C800CC00CC008E018D0308FC00E157E9413>I<02000200020002000600060006000E 001E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E040E040E040E 040E040E040708030801F00E1F7F9E13>I<0E0070FE07F01E00F00E00700E00700E0070 0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00F00E00F0 06017003827800FC7F18157F941B>III121 D E /Fz 20 118 df45 D68 D73 D77 D80 D<007F802001FFE02007C078600F001C601E0006E03C0003E0380001E07800 00E0700000E070000060F0000060F0000060F0000020F0000020F0000020F8000020F800 00007C0000007E0000003F0000003FC000001FF800000FFF800007FFF80003FFFC0000FF FF00000FFF800000FFC000001FE0000007E0000003F0000001F0000000F0000000F80000 00F88000007880000078800000788000007880000078C0000078C0000070E00000F0E000 00E0F00000E0F80001C0EC000380C7000700C1F01E00807FFC00800FF0001D337CB125> 83 D<00FE00000303C0000C00E00010007000100038003C003C003E001C003E001E003E 001E0008001E0000001E0000001E0000001E00000FFE0000FC1E0003E01E000F801E001F 001E003E001E003C001E007C001E00F8001E04F8001E04F8001E04F8003E04F8003E0478 003E047C005E043E008F080F0307F003FC03E01E1F7D9E21>97 D<003F8000E060038018 0700040F00041E001E1C003E3C003E7C003E7C0008780000F80000F80000F80000F80000 F80000F80000F80000F80000F800007800007C00007C00003C00011E00011E00020F0002 07000403801800E060003F80181F7D9E1D>99 D<000001E000003FE000003FE0000003E0 000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0000001E0 000001E0000001E0000001E0000001E0000001E0000001E0001F81E000F061E001C019E0 078005E00F0003E00E0003E01E0001E03C0001E03C0001E07C0001E0780001E0F80001E0 F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0F80001E0780001E0 780001E03C0001E03C0001E01C0001E01E0003E00E0005E0070009E0038011F000E061FF 003F81FF20327DB125>I<003F800000E0E0000380380007003C000E001E001E001E001C 000F003C000F007C000F0078000F8078000780F8000780F8000780FFFFFF80F8000000F8 000000F8000000F8000000F8000000F8000000780000007C0000003C0000003C0000801E 0000800E0001000F0002000780020001C00C0000F03000001FC000191F7E9E1D>I<0007 E0001C1000383800707C00E07C01E07C01C03803C00003C00003C00003C00003C00003C0 0003C00003C00003C00003C00003C00003C000FFFFC0FFFFC003C00003C00003C00003C0 0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00003C0 0003C00003C00003C00003C00003C00003C00003C00003C00003C00003C00007E0007FFF 007FFF0016327FB114>I<000000F0007F030801C1C41C0380E81C070070080F0078001E 003C001E003C003E003E003E003E003E003E003E003E003E003E003E003E001E003C001E 003C000F007800070070000780E00009C1C000087F000018000000180000001800000018 000000180000001C0000000E0000000FFFF80007FFFF0003FFFF800E000FC0180001E030 0000F070000070E0000038E0000038E0000038E0000038E0000038700000707000007038 0000E01C0001C00700070001C01C00003FE0001E2F7E9F21>I<07000F801F801F800F80 0700000000000000000000000000000000000000000000000780FF80FF800F8007800780 078007800780078007800780078007800780078007800780078007800780078007800780 07800780078007800FC0FFF8FFF80D307EAF12>105 D<0780FE001FC000FF83078060F0 00FF8C03C18078000F9001E2003C0007A001E4003C0007A000F4001E0007C000F8001E00 07C000F8001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E0007 8000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E000780 00F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000 F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0001E00078000F0 001E000FC001F8003F00FFFC1FFF83FFF0FFFC1FFF83FFF0341F7E9E38>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 /FA 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 FA(D)26 b(R)g(A)f(F)h(T)225 999 y Fz(Do)r(cumen)n(t) 20 b(for)i(a)f(Standard)g(Message-P)n(assing)f(In)n(terface)621 1194 y Fy(Message)c(P)o(assing)h(In)o(terface)e(F)l(orum)832 1320 y(Ma)o(y)h(10,)g(1993)87 1378 y(This)g(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 Fx(Con)m(ten)m(ts)75 648 y Fw(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(3)143 810 y Fv(1.1)46 b(Ov)o(erview)16 b(and)f(Goals)38 b Fu(:)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 Fv(3)143 868 y(1.2)46 b(Who)15 b(Should)h(Use)f(This)h(Standard?)32 b Fu(:)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 Fv(4)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 Fu(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fv(4)143 983 y(1.4)46 b(What)14 b(Is)i(Included)h(In)f(The)g (Standard?)42 b Fu(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)91 b Fv(4)143 1041 y(1.5)46 b(What)14 b(Is)i(Not)e(Included)k(In)e(The)f(Standard?)23 b Fu(:)g(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:) g(:)h(:)f(:)91 b Fv(5)75 1145 y Fw(2)42 b(P)o(oin)o(t)17 b(to)h(P)o(oin)o(t)g(Comm)o(unication)1001 b(6)143 1203 y Fv(2.1)46 b(In)o(tro)q(duction)15 b Fu(:)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 Fv(6)143 1260 y(2.2)46 b(Data)14 b(T)o(yp)q(es)30 b Fu(:)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 Fv(6)248 1318 y(2.2.1)50 b(Handle)14 b Fu(:)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 Fv(6)248 1376 y(2.2.2)50 b(State)14 b Fu(:)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 Fv(7)248 1434 y(2.2.3)50 b(Named)15 b(constan)o(ts)23 b Fu(:)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 Fv(8)248 1491 y(2.2.4)50 b(Choice)20 b Fu(:)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 Fv(8)143 1549 y(2.3)46 b(Pro)q(cesses)40 b Fu(:)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 Fv(8)143 1607 y(2.4)46 b(Con)o(texts)14 b Fu(:)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(:)91 b Fv(9)248 1665 y(2.4.1)50 b(Con)o(text)14 b(Op)q(erations)44 b Fu(:)22 b(:)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 Fv(11)248 1722 y(2.4.2)50 b(Error)14 b(Handling)29 b Fu(:)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 Fv(13)143 1780 y(2.5)46 b(Messages)f Fu(:)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 Fv(14)248 1838 y(2.5.1)50 b(Data)19 b Fu(:)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(:)69 b Fv(14)248 1895 y(2.5.2)50 b(En)o(v)o(elop)q(e)45 b Fu(:)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 Fv(14)143 1953 y(2.6)46 b(Data)14 b(Bu\013ers)45 b Fu(:)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 Fv(14)248 2011 y(2.6.1)50 b(Data)14 b(Con)o(v)o(ersion)33 b Fu(:)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 Fv(17)143 2069 y(2.7)46 b(Receiv)o(e)17 b(Criteria)d Fu(:)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 Fv(18)143 2126 y(2.8)46 b(Comm)o(unication)15 b(Mo)q(de)35 b Fu(:)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 Fv(19)143 2184 y(2.9)46 b(Comm)o(unication)15 b(Handles)24 b Fu(:)e(:)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 Fv(19)248 2242 y(2.9.1)50 b(Comm)o(unication)16 b(Ob)s(ject)f(Creation)31 b Fu(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)69 b Fv(20)248 2300 y(2.9.2)50 b(Comm)o(unication)16 b(Start)39 b Fu(:)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 Fv(21)248 2357 y(2.9.3)50 b(Comm)o(unication)16 b(Completion)i Fu(:)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 Fv(21)248 2415 y(2.9.4)50 b(Multiple)17 b(Completions)41 b Fu(:)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 Fv(23)143 2473 y(2.10)23 b(Blo)q(c)o(king)16 b(Comm)o(unication)44 b Fu(:)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 Fv(24)143 2530 y(2.11)23 b(Non)o(blo)q(c)o(king)16 b(Comm)o(unication)41 b Fu(:)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 Fv(25)143 2588 y(2.12)23 b(Blo)q(c)o(k)16 b(Sending)g(Op)q(erations)29 b Fu(:)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 Fv(25)143 2646 y(2.13)23 b(Correctness)32 b Fu(:)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 Fv(26)248 2704 y(2.13.1)27 b(Order)37 b Fu(:)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 Fv(27)969 2828 y(i)p eop %%Page: 2 3 2 2 bop 75 -100 a Fv(ii)1518 b Ft(CONTENTS)248 45 y Fv(2.13.2)27 b(Progress)14 b(and)i(F)l(airness)39 b Fu(:)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 Fv(27)75 152 y Fw(3)42 b(Collectiv)o(e)19 b(Comm)o(unication)1077 b(30)143 212 y Fv(3.1)46 b(In)o(tro)q(duction) 15 b Fu(:)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 Fv(30)143 272 y(3.2)46 b(Group)15 b(F)l(unctions)35 b Fu(:)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 Fv(31)143 331 y(3.3)46 b(Comm)o(unication)15 b(F)l(unctions)24 b Fu(:)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 Fv(32)143 391 y(3.4)46 b(Sync)o(hronization)16 b Fu(:)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 Fv(32)143 450 y(3.5)46 b(Data)14 b(mo)o(v)o(e)g(functions)29 b Fu(:)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 Fv(32)143 510 y(3.6)46 b(Global)16 b(Compute)e(Op)q(erations)20 b Fu(:)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 Fv(40)143 570 y(3.7)46 b(Correctness)32 b Fu(:)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 Fv(44)75 677 y Fw(4)42 b(Pro)q(cess)17 b(T)l(op)q(ologies)1250 b(46)143 737 y Fv(4.1)46 b(In)o(tro)q(duction)15 b Fu(:)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 Fv(46)143 796 y(4.2)46 b(Virtual)16 b(T)l(op)q(ologies)37 b Fu(:)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 Fv(47)143 856 y(4.3)46 b(Em)o(b)q(edding)16 b(in)g(MPI)22 b Fu(:)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 Fv(48)143 915 y(4.4)46 b(Ov)o(erview)16 b(of)e(the)i(prop)q(osed)f (MPI)g(functions)20 b Fu(:)j(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:) g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fv(48)248 975 y(4.4.1)50 b(Lo)o(w{lev)o(el)16 b(top)q(ology)f(functions)37 b Fu(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f (:)g(:)h(:)f(:)69 b Fv(49)248 1035 y(4.4.2)50 b(High{lev)o(el)17 b(top)q(ology)e(functions)25 b Fu(:)d(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fv(50)248 1094 y(4.4.3)50 b(T)l(op)q(ology)15 b(inquiry)i(functions) 42 b Fu(:)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 Fv(52)248 1154 y(4.4.4)50 b(P)o(artitioning)16 b(of)e(cartesian)i(structures)22 b Fu(:)g(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:) h(:)f(:)69 b Fv(53)143 1214 y(4.5)46 b(A)15 b(simple)i(example)f Fu(:)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 Fv(55)75 1321 y Fw(5)42 b(Language)19 b(Binding)1268 b(57)75 1428 y(6)42 b(F)l(ormal)17 b(Seman)o(tics)1275 b(58)75 1535 y(7)42 b(En)o(vironmen)o(tal)18 b(Inquiry)1156 b(59)75 1642 y(8)42 b(Pro\014ling)1484 b(60)143 1702 y Fv(8.1)46 b(Requiremen)o(ts)28 b Fu(:)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 Fv(60)143 1762 y(8.2)46 b(Discussion)21 b Fu(:)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 Fv(60)143 1821 y(8.3)46 b(Logic)16 b(of)e(the)i(design)29 b Fu(:)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 Fv(61)143 1881 y(8.4)46 b(Examples)36 b Fu(:)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 Fv(61)248 1940 y(8.4.1)50 b(Pro\014ler)16 b(implemen)o(tation)35 b Fu(:)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 Fv(61)248 2000 y(8.4.2)50 b(MPI)15 b(library)h(implemen)o(tation)h Fu(:)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 Fv(61)143 2060 y(8.5)46 b(Multiple)17 b(lev)o(els)f(of)f(in)o(terception)25 b Fu(:)d(:)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 Fv(63)75 2167 y Fw(9)42 b(Con)o(texts)17 b({)g(Prop)q(osal)h (I)1177 b(64)143 2227 y Fv(9.1)46 b(Con)o(texts)14 b Fu(:)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 Fv(64)248 2286 y(9.1.1)50 b(Lo)q(osely)16 b(sync)o(hronous)f(library)h(call)h(in)o(terface)36 b Fu(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fv(64)248 2346 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 Fu(:)23 b(:)f(:)g(:)h(:)f(:)69 b Fv(65)248 2405 y(9.1.3)50 b(Collectiv)o(e)17 b(comm)o(unication)31 b Fu(:)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 Fv(65)248 2465 y(9.1.4)50 b(Ligh)o(t)o(w)o(eigh)o(t)15 b(gang)g(sc)o(heduling)h Fu(:)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 Fv(65)143 2525 y(9.2)46 b(Basic)16 b(Con)o(text)e(Op)q(erations)32 b Fu(:)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 Fv(65)248 2584 y(9.2.1)50 b(Usage)15 b(note)40 b Fu(:)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 Fv(67)143 2644 y(9.3)46 b(Adv)m(anced)16 b(con)o(text)f(op)q(erations)39 b Fu(:)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 Fv(68)143 2704 y(9.4)46 b(Examples)15 b({)g(Problems)h(in)g(Ric)o(k's)g(list)29 b Fu(:)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 Fv(70)p eop %%Page: 3 4 3 3 bop 75 -100 a Ft(CONTENTS)1504 b Fv(iii)75 45 y Fw(10)16 b(Con)o(texts)h({)g(Prop)q(osal)h(VI)q(I)1116 b(73)143 102 y Fv(10.1)23 b(In)o(tro)q(duction)15 b Fu(:)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 Fv(73)143 158 y(10.2)23 b(Pro)q(cesses)40 b Fu(:)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 Fv(73)143 214 y(10.3)23 b(Pro)q(cess)15 b(Groups)24 b Fu(:)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 Fv(74)143 271 y(10.4)23 b(Comm)o(unication)15 b(Con)o(texts)38 b Fu(:)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 Fv(75)143 327 y(10.5)23 b(Descriptor)15 b(F)l(acilities)44 b Fu(:)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 Fv(76)143 384 y(10.6)23 b(P)o(oin)o(t-to-P)o(oin)o(t)14 b(Comm)o(unication)38 b Fu(:)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 Fv(78)143 440 y(10.7)23 b(Collectiv)o(e)16 b(Comm)o(unication)22 b Fu(:)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 Fv(79)143 497 y(10.8)23 b(Conclusion)47 b Fu(:)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 Fv(79)75 599 y Fw(11)16 b(Con)o(texts)h({)g(Prop)q(osal)h(I)q(I)q(I)1135 b(81)143 655 y Fv(11.1)23 b(In)o(tro)q(duction)15 b Fu(:)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 Fv(81)143 712 y(11.2)23 b(Pro)q(cesses)40 b Fu(:)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 Fv(81)143 768 y(11.3)23 b(Pro)q(cess)15 b(Groups)24 b Fu(:)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 Fv(82)143 824 y(11.4)23 b(Comm)o(unication)15 b(Con)o(texts)38 b Fu(:)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 Fv(84)143 881 y(11.5)23 b(Descriptor)15 b(F)l(acilities)44 b Fu(:)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 Fv(85)143 937 y(11.6)23 b(P)o(oin)o(t-to-P)o(oin)o(t)14 b(Comm)o(unication)38 b Fu(:)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 Fv(86)143 994 y(11.7)23 b(Collectiv)o(e)16 b(Comm)o(unication)22 b Fu(:)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 Fv(87)143 1050 y(11.8)23 b(Conclusion)47 b Fu(:)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 Fv(87)75 1152 y Fw(12)16 b(Summary)g(of)i(con)o(text)f(sub)q(committee)i(prop)q (osals)645 b(88)143 1209 y Fv(12.1)23 b(Common)14 b(F)l(eatures)42 b Fu(:)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 Fv(88)248 1265 y(12.1.1)27 b(Pro)q(cess)15 b(group)g(managemen)o(t)32 b Fu(:)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 Fv(88)248 1322 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 Fu(:)23 b(:)f(:)g(:)h(:)f(:)69 b Fv(88)248 1378 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 Fu(:)22 b(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)69 b Fv(88)248 1434 y(12.1.4)27 b(Opacit)o(y)16 b(of)f(group)g(and)g(pro)q(cess)g(description)45 b Fu(:)22 b(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fv(88)248 1491 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 Fu(:)22 b(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fv(89)143 1547 y(12.2)23 b(Separable)16 b(F)l(eatures)29 b Fu(:)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 Fv(89)248 1604 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 Fu(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)69 b Fv(89)248 1660 y(12.2.2)27 b(T)l(ag)15 b(usage)g(in)h (collectiv)o(e)h(comm)o(unication)24 b Fu(:)f(:)f(:)g(:)h(:)f(:)g(:)h (:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fv(89)248 1717 y(12.2.3)27 b(Con)o(text)14 b(or)h(Group)g(cac)o(he)27 b Fu(:)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 Fv(89)248 1773 y(12.2.4)27 b(Opaque)16 b(ob)s(ject)f(\(descriptor\))g(transmission)23 b Fu(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fv(89)248 1830 y(12.2.5)27 b(Con)o(text)14 b(registry)40 b Fu(:)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 Fv(89)143 1886 y(12.3)23 b(Concept)15 b(Di\013erences)45 b Fu(:)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 Fv(89)248 1943 y(12.3.1)27 b(Concept)15 b(of)g(CONTEXT)g(and)h(GR)o (OUP)i Fu(:)k(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g (:)h(:)f(:)69 b Fv(89)248 1999 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 Fu(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f (:)69 b Fv(90)248 2055 y(12.3.3)27 b(T)l(ransmission)16 b(of)f(group)g(or)f(con)o(text)25 b Fu(:)e(:)f(:)g(:)h(:)f(:)g(:)h(:)f (:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h(:)f(:)69 b Fv(90)143 2112 y(12.4)23 b(Detail)15 b(di\013erences)29 b Fu(:)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 Fv(90)248 2168 y(12.4.1)27 b(Manifestation)15 b(of)g(con)o(text)k Fu(:)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 Fv(90)248 2225 y(12.4.2)27 b(Deletion)16 b(of)f(group)j Fu(:)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 Fv(90)248 2281 y(12.4.3)27 b(Duplication)17 b(of)e(group)23 b Fu(:)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 Fv(90)248 2338 y(12.4.4)27 b(Global)16 b(shared)f(v)m(ariables)43 b Fu(:)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 Fv(90)248 2394 y(12.4.5)27 b(Pro)q(cess)15 b(iden)o(ti\014er)i(addressed)f(comm)o (unication)31 b Fu(:)23 b(:)f(:)g(:)h(:)f(:)g(:)h(:)f(:)h(:)f(:)g(:)h (:)f(:)69 b Fv(90)248 2451 y(12.4.6)27 b(In)o(ter-group)15 b(comm)o(unication)36 b Fu(:)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 Fv(90)75 2553 y Fw(A)28 b(Pro)q(cess)17 b(T)l(op)q(ology)h(Routines) 1061 b(94)p eop %%Page: 0 5 0 4 bop 875 722 a Fw(Abstract)75 828 y Fv(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 Fs(a)1195 1167 y Fv(T)1220 1181 y(E)1246 1167 y(X)g(on)g(Ma)o(y)g(10,)f(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 Ft(CONTENTS)1519 b Fv(1)75 75 y Fx(Ac)m(kno)m (wledgmen)m(ts)166 301 y Fv(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 357 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 414 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 615 y Fr(\017)23 b Fv(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 785 y Fr(\017)23 b Fv(Ewing)15 b(Lusk,)h(Bob)f(Knigh)o(ten,)h(Min)o(utes) 143 955 y Fr(\017)23 b Fv(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 1125 y Fr(\017)23 b Fv(Al)16 b(Geist,)e(Marc)h(Snir,)h(Stev)o(e)f (Otto,)f(Collectiv)o(e)j(Comm)o(unications)143 1295 y Fr(\017)23 b Fv(Rolf)15 b(Hemp)q(el,)i(Pro)q(cess)e(T)l(op)q(ologies) 143 1464 y Fr(\017)23 b Fv(Scott)14 b(Berryman,)h(Language)g(Binding) 143 1634 y Fr(\017)23 b Fv(Stev)o(e)15 b(Zenith,)g(F)l(ormal)g(Seman)o (tics)143 1804 y Fr(\017)23 b Fv(William)17 b(Gropp,)d(En)o(vironmen)o (tal)i(Inquiry)143 1974 y Fr(\017)23 b Fv(James)15 b(Co)o(wnie,)g (Pro\014ling)143 2144 y Fr(\017)23 b Fv(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 2200 y(nication)g(Con)o(texts)143 2370 y Fr(\017)23 b Fv(Stev)o(e)15 b(Otto,)f(Editor.)166 2572 y(Do)h(w)o(e)f(w)o(an)o(t)h(an)g (organization/compan)o(y)f(list)i(here?)166 2647 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 2704 y(men)o(tioned)16 b(ab)q(o)o(v)o(e:)p eop %%Page: 2 7 2 6 bop 75 -100 a Fv(2)1519 b Ft(CONTENTS)100 43 y Fv(Ed)15 b(Anderson)389 b(Anne)16 b(Elster)268 b(Jim)16 b(F)l(eeney)100 100 y(Jon)f(Flo)o(w)o(er)428 b(Daniel)17 b(F)l(ry)o(e)274 b(Ian)15 b(Glendinning)100 156 y(Adam)g(Green)o(b)q(erg)308 b(Rob)q(ert)16 b(Harrison)180 b(Leslie)17 b(Hart)100 212 y(T)l(om)e(Haupt)418 b(Don)15 b(Heller)291 b(T)l(om)14 b(Henderson)100 269 y(C.)h(T.)f(Ho)o(w)o(ard)g(Ho)302 b(Stev)o(en)16 b(Huss-Lederman)51 b(John)15 b(Kap)q(enga)100 325 y(Bob)g(Leary)440 b(Barney)16 b(Maccab)q(e)173 b(P)o(eter)14 b(Madams)100 382 y(Oliv)o(er)i(McBry)o(an)329 b(Phil)17 b(McKinley)218 b(Ch)o(uc)o(k)15 b(Mosher)100 438 y(Dan)g(Nessett)404 b(P)o(aul)16 b(Pierce)278 b(Sanja)o(y)14 b(Rank)m(a)100 495 y(P)o(eter)h(Rigsb)q(ee)375 b(Am)o(buj)15 b(Singh)245 b(Rob)q(ert)15 b(G.)g(V)l(oigt)100 551 y(Dennis)h(W)l(eeks)372 b(Stephen)16 b(Wheat)100 608 y(abmacca@cs.sandia.go)o(v)100 664 y(amm@think.com)100 721 y(als@cs.umd.edu)100 777 y(barszcz@orville.nas.nasa.go)o(v)100 833 y(b)s(jornson@cs.y)o(ale.edu) 100 890 y(b)q(ob@lanl.go)o(v)100 946 y(ccm@arco.com)100 1003 y(danielf@kgn)o(vm)o(t.vnet.ibm.com)100 1059 y(eca@cra)o(y)l(.com) 100 1116 y(fernando@cs.b)q(erk)o(eley)l(.edu)100 1172 y(\014neb)q(erg@nas.nasa.go)o(v)100 1229 y(hart@fsl.noaa.go)o(v)100 1285 y(haupt@npac.syr.edu)100 1342 y(hep@ncub)q(e.com)100 1398 y(jbaron@vnet.ibm.com)100 1454 y(john@cs.wmic)o(h.edu)100 1511 y(leary@sdsc.edu)100 1567 y(mc)o(kinley@cps.msu.edu)100 1624 y(p)q(eter@sun.math.usfca.edu)100 1680 y(robison@shell.com)166 1792 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 1848 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 1905 y(ing)i(the)f(do)q(cumen)o(t.)166 1961 y(T)l(alk)g(ab)q(out)g (\014nancial)i(supp)q(ort)f(here.)p eop %%Page: 3 8 3 7 bop 75 356 a Fq(Chapter)34 b(1)75 564 y Fx(In)m(tro)s(duction)41 b(to)g(MPI)75 805 y Fp(1.1)70 b(Ov)n(erview)21 b(and)j(Goals)75 906 y Fv(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 Fr(\017)23 b Fv(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(3)p eop %%Page: 4 9 4 8 bop 75 -100 a Fv(4)903 b Ft(CHAPTER)16 b(1.)34 b(INTR)o(ODUCTION)17 b(TO)e(MPI)143 45 y Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fp(1.2)70 b(Who)23 b(Should)g(Use)g(This)f(Standard?)75 1354 y Fv(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 Fp(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 Fv(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 Fp(1.4)70 b(What)23 b(Is)g(Included)f(In)h(The)f(Standard?)75 2704 y Fv(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: 5 10 5 9 bop 75 -100 a Ft(1.5.)34 b(WHA)l(T)15 b(IS)h(NOT)f(INCLUDED)h(IN)f (THE)g(ST)l(AND)o(ARD?)619 b Fv(5)143 45 y Fr(\017)23 b Fv(P)o(oin)o(t-to-p)q(oin)o(t)15 b(comm)o(unication)143 139 y Fr(\017)23 b Fv(Collectiv)o(e)16 b(op)q(erations)143 233 y Fr(\017)23 b Fv(Pro)q(cess)15 b(groups)143 327 y Fr(\017)23 b Fv(Comm)o(unication)15 b(con)o(texts)143 420 y Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(A)15 b(mo)q(del)h(implemen)o(tation)143 702 y Fr(\017)23 b Fv(A)15 b(formal)g(sp)q(eci\014cation.)143 796 y Fr(\017)23 b Fv(Pro)q(cess)15 b(top)q(ology)143 889 y Fr(\017)23 b Fv(A)15 b(v)m(alidation)i(suite)75 1033 y Fp(1.5)70 b(What)23 b(Is)g(Not)g(Included)f(In)h(The)f (Standard?)75 1134 y Fv(The)15 b(standard)g(do)q(es)h(not)f(sp)q (ecify:)143 1240 y Fr(\017)23 b Fv(Explicit)17 b(shared-memory)e(op)q (erations)143 1334 y Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(Program)13 b(construction)j(to)q(ols)143 1578 y Fr(\017)23 b Fv(Debugging)15 b(facilities)143 1672 y Fr(\017)23 b Fv(Auxiliary)17 b(functions)e(suc)o(h)h(as)f (timers)143 1766 y Fr(\017)23 b Fv(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: 6 11 6 10 bop 75 358 a Fq(Chapter)34 b(2)75 568 y Fx(P)m(oin)m(t)41 b(to)f(P)m(oin)m(t)h(Comm)m(unication)876 792 y Fv(Marc)14 b(Snir)656 849 y(William)j(Gropp)e(and)g(Ewing)h(Lusk)75 1003 y Fp(2.1)70 b(In)n(tro)r(duction)75 1108 y Fv(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 1164 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 1223 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 1279 y(t)o(yp)q(e.)166 1420 y Fo(Discussion:)32 b Fn(The)12 b(follo)o(wing)d(subsections)k(of)f(the)g(in)o(tro)q(duction)g(con)o (tain)f(general)h(information)d(on)i(the)75 1476 y(design)16 b(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 1533 y(do)q(cumen)o(t.)75 1770 y Fp(2.2)70 b(Data)23 b(T)n(yp)r(es)75 1876 y Fm(2.2.1)55 b(Handle)75 1966 y Fv(MPI)16 b(pro)q(cedures)h(use)f(at)f(v)m(arious)h(places)h Fl(hand)r(les)p Fv(.)22 b(Handles)17 b(are)e(used)i(to)e(access)h (opaque)g(ob)s(jects.)75 2022 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 2079 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 2135 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 2192 y(C)12 b(and)h(F)l(ortran,)f(allo)o(wing)h(to)f(o)o(v)o (ercome)g(problems)h(with)g(the)g(t)o(yping)f(rules)i(in)f(these)g (languages,)g(and)75 2248 y(allo)o(wing)i(for)f(future)g(extension)h (of)f(their)h(functionalit)o(y)l(.)21 b(Handles)16 b(are)e(of)g(t)o(yp) q(e)g Fk(void)23 b(*)15 b Fv(in)g(C)f(and)g(of)75 2305 y(t)o(yp)q(e)h Fk(integer)f Fv(in)i(F)l(ortran.)166 2363 y(An)e(opaque)h(ob)s(ject)e(can)i(b)q(e)g Fk(persistent)d Fv(or)i Fk(ephemeral)p Fv(.)k(A)d(p)q(ersisten)o(t)f(ob)s(ject)g(p)q (ersists)h(un)o(til)75 2419 y(destro)o(y)o(ed)h(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 2476 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 2532 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(An)23 b(opaque)h(ob)s(ject)e(is)i(created)f(b)o(y)h(a)e(call)j(to)d Fk(MPI)p 1125 2591 15 2 v 17 w(CREATE)p Fv(,)g(and)i(destro)o(y)o(ed)e (b)o(y)h(a)g(call)i(to)75 2647 y Fk(MPI)p 150 2647 V 17 w(FREE)p Fv(.)20 b(Additional)k(MPI)d(functions)i(are)e(a)o(v)m (ailable)i(to)e(access)h(and)f(up)q(date)h(sp)q(eci\014c)i(opaque)75 2704 y(ob)s(jects.)964 2828 y(6)p eop %%Page: 7 12 7 11 bop 75 -100 a Ft(2.2.)34 b(D)o(A)l(T)l(A)15 b(TYPES)1375 b Fv(7)166 45 y Fw(MPI)p 275 45 16 2 v 18 w(CREA)l(TE\(handle,)18 b(t)o(yp)q(e,)f(p)q(ersistence\))75 169 y(OUT)h(handle)24 b Fv(handle)16 b(to)f(ob)s(ject)75 261 y Fw(IN)i(t)o(yp)q(e)23 b Fv(state)9 b(v)m(alue)i(that)f(iden)o(ti\014es)i(the)e(t)o(yp)q(e)g (of)g(ob)s(ject)g(to)f(b)q(e)i(created)f(\(e.g.,)g Fk(MPI)p 1571 261 15 2 v 16 w(COMMUNICATION,)189 317 y(MPI)p 264 317 V 16 w(BUFFER,)23 b(MPI)p 543 317 V 17 w(CONTEXT)p Fv(,)14 b(etc.\).)75 409 y Fw(IN)j(p)q(ersistence)23 b Fv(state)14 b(v)m(alue;)j(either)e Fk(MPI)p 873 409 V 17 w(PERSISTENT)f Fv(or)h Fk(MPI)p 1272 409 V 16 w(EPHEMERAL)p Fv(.)166 532 y Fw(MPI)p 275 532 16 2 v 18 w(FREE\(handle\))75 656 y(IN)i(handle)24 b Fv(handle)16 b(to)f(ob)s(ject)166 745 y(An)20 b(ob)s(ject)f(can)h(b)q(e)h(destro)o(y)o(ed)e(only)h(if)g (there)g(is)g(no)g(p)q(ending)i(op)q(eration)e(that)f(is)h(using)h (this)75 801 y(ob)s(ject;)14 b(after)h(successful)h(return)f(of)g(the)g (routine,)h(the)f(handle)i(is)e(unde\014ned.)166 893 y Fw(MPI)p 275 893 V 18 w(ASSOCIA)l(TED\(handle,)j(t)o(yp)q(e\))75 1017 y(IN)f(handle)24 b Fv(handle)16 b(to)f(ob)s(ject)75 1108 y Fw(OUT)j(t)o(yp)q(e)23 b Fv(state)166 1197 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 1253 y(Returns)d(the)f(sp)q(ecial)i(t)o(yp)q(e)e Fk(MPI)p 643 1253 15 2 v 17 w(NULL)f Fv(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 1310 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 1366 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 1485 y Fw(List)i(of)g(handles)46 b Fv(An)15 b(MPI)h(call)g(ma)o(y)e(need)i(a)f(parameter)g(that)f(is)i (a)f Fl(list)g(of)i(hand)r(les)p Fv(.)i(In)d(C,)f(suc)o(h)75 1542 y(list)g(will)i(b)q(e)e(a)f(record)g(with)h(one)g(comp)q(onen)o(t) g(b)q(eing)g(the)g(length)g(of)f(the)h(list,)g(the)g(other)f(comp)q (onen)o(ts)75 1598 y(b)q(eing)j(an)e(arra)o(y)g(of)g(p)q(oin)o(ters.)21 b(In)c(F)l(ortran,)d(the)h(list)i(will)g(b)q(e)f(an)g(arra)o(y)e(of)h (in)o(tegers,)h(the)f(\014rst)h(one)f(of)75 1655 y(whic)o(h)h(is)g(the) f(length)h(of)f(the)g(list.)166 1787 y Fo(Discussion:)31 b Fn(The)12 b(mec)o(hanism)e(for)h(opaque)g(ob)r(jects)i(used)g(here)f (follo)o(ws)e(the)i(POSIX)h(F)m(ortran)e(binding)75 1837 y(standard.)18 b(An)12 b(alternativ)o(e)g(c)o(hoice)g(is)g(to)g(ha)o(v) o(e)f(di\013eren)o(t)i(t)o(yp)q(e)g(declarations)f(for)f(eac)o(h)i(t)o (yp)q(e)f(of)g(opaque)g(ob)r(ject.)75 1887 y(Then,)17 b(opaque)f(ob)r(jects)h(are)f(created/destro)o(y)o(ed)j(lik)o(e)c (regular)h(v)n(ariables,)f(rather)i(than)f(b)o(y)g(MPI)g(calls;)g(they) 75 1937 y(are)e(still)f(accessed)j(and)e(up)q(dated)h(only)e(via)g(MPI) h(functions.)75 2140 y Fm(2.2.2)55 b(State)75 2226 y Fv(MPI)22 b(pro)q(cedures)h(use)g(at)e(v)m(arious)i(places)g(argumen)o (ts)e(with)h Fl(state)h Fv(t)o(yp)q(es.)40 b(The)23 b(v)m(alues)g(of)f (suc)o(h)75 2282 y(data)e(t)o(yp)q(e)g(are)g(all)h(iden)o(ti\014ed)h(b) o(y)e(names,)h(and)g(no)f(op)q(eration)g(is)h(de\014ned)g(on)g(them.)34 b(F)l(or)20 b(exam-)75 2339 y(ple,)f(the)e Fk(MPI)p 319 2339 V 17 w(CREATE)g Fv(routine)g(has)h(a)f(state)f(t)o(yp)q(e)i (parameter)f(with)g(v)m(alues)i Fk(MPI)p 1532 2339 V 17 w(PERSISTENT)d Fv(and)75 2395 y Fk(MPI)p 150 2395 V 17 w(EPHEMERAL)p Fv(.)166 2452 y(An)10 b Fk(enumeration)f Fv(declared)i(in)g(an)g(included)h(MPI.h)e(\014le)i(will)f(b)q(e)g (used)g(in)g(C)f(for)g(state)f(datat)o(yp)q(es.)75 2508 y(The)15 b(F)l(ortran)f(77)h(mec)o(hanism)h(needs)g(to)e(b)q(e)i (decided.)166 2647 y Fo(Discussion:)33 b Fn(Named)12 b(in)o(teger)h(constan)o(ts)h(can)f(b)q(e)h(used)f(in)g(F)m(ortran)g (90,)f(using)g(the)i Fj(PARAMETER)d Fn(mec)o(h-)75 2704 y(anism.)21 b(The)16 b(constan)o(t)g(declarations)g(can)g(b)q(e)g(made) e(a)o(v)n(ailable)f(via)i(an)g Fj(INCLUDE)f Fn(\014le.)23 b(F)m(ortran)16 b(77)f(do)q(es)h(not)p eop %%Page: 8 13 8 12 bop 75 -100 a Fv(8)631 b Ft(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fn(seem)g(to)g(o\013er)h(an)o (y)f(con)o(v)o(enien)o(t)h(mec)o(hanism.)23 b(One)17 b(p)q(ossibilit)o(y)e(is)h(to)g(sp)q(ecify)h(explicit)f(in)o(teger)h(v) n(alues,)f(and)75 102 y(allo)o(w)d(the)i(use)g(of)f(named)f(constan)o (ts)j(with)e(those)h(F)m(ortran)f(77)g(compilers)g(that)g(supp)q(ort)h (them)f(con)o(v)o(enien)o(tly)m(.)75 158 y(Another)h(p)q(ossibilit)o(y) d(is)i(to)g(use)h(c)o(haracter)g(strings,)f(rather)g(than)g(in)o (tegers.)75 371 y Fm(2.2.3)55 b(Named)17 b(constan)n(ts)75 459 y Fv(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 516 y(eter;)17 b(e.g.)24 b Fk(tag)17 b Fv(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 572 y(with)f(a)f(sp)q(ecial)i Fk(DONTCARE)d Fv(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 628 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 685 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 741 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 798 y(\(Section)k(7\).)27 b(The)18 b(sp)q(ecial)h(v)m(alues)g(are)e (pro)o(vided)i(b)o(y)e(named)h(constan)o(t,)f(that)g(are)h(made)f(a)o (v)m(ailable)75 854 y(via)e(an)h(MPI.h)f(include)i(\014le)f(in)h(a)d(C) h(binding.)166 988 y Fo(Discussion:)166 1039 y Fn(Need)g(to)f(agree)g (on)g(a)f(F)m(ortran)h(mec)o(hanism)e(for)h(named)g(constan)o(ts)i (\(see)g(the)f(discussion)h(ab)q(o)o(v)o(e\).)166 1091 y(Implemen)o(ters)9 b(should)h(try)h(to)f(detect)i(illegal)d(uses)i(of) f(\\sp)q(ecial)g(v)n(alues".)17 b(Th)o(us,)11 b(the)g(use)g(of)f(the)h Fj(DONTCARE)75 1140 y Fn(v)n(alue)i(to)h(tag)f(a)h(message)g(sen)o(t)g (should)g(b)q(e)h(\015agged)e(as)h(an)g(error.)75 1353 y Fm(2.2.4)55 b(Choice)75 1442 y Fv(MPI)16 b(functions)g(sometimes)g (use)g(parameters)f(with)h(a)g Fl(choic)n(e)f Fv(\(or)g(union\))i(data) e(t)o(yp)q(e.)21 b(I.e.,)16 b(distinct)75 1498 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 1554 y(mec)o(hanism)19 b(for)g(pro)o(viding)g(suc)o(h)g(parameters)f (will)j(di\013er)e(from)f(language)h(to)f(language.)31 b(In)19 b(C,)f(a)75 1611 y(formal)11 b(parameter)g(of)g(t)o(yp)q(e)h Fk(void)23 b(*)12 b Fv(will)h(b)q(e)f(used,)h(with)f(an)f(actual)h(p)q (oin)o(ter)g(parameter.)18 b(in)13 b(F)l(ortran,)75 1667 y(w)o(e)i(shall)h(c)o(heat.)166 1801 y Fo(Discussion:)166 1853 y Fn(The)h(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 1902 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 1952 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 2002 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 2052 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 2102 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 2151 y(of)h(a)h(di\013eren)o(t)h(t)o(yp)q(e)f(at)g (distinct)g(calls.)166 2203 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 2252 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 2486 y Fp(2.3)70 b(Pro)r(cesses)75 2591 y Fv(An)22 b(MPI)h(program)e(is)h(executed)h(b)o(y)g(sev)o(eral)f (autonomous)f(pro)q(cesses)i(that)e(execute)i(eac)o(h)f(their)75 2647 y(o)o(wn)d(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.)75 2704 y(The)h(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)p eop %%Page: 9 14 9 13 bop 75 -100 a Ft(2.4.)34 b(CONTEXTS)1413 b Fv(9)75 45 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 102 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 158 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 214 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 271 y(assumed)h(that)g(message)g (bu\013ers)g(at)f(distinct)j(pro)q(cessors)e(are)f(disjoin)o(t.)166 327 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 384 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 440 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 497 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 553 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 610 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 666 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 723 y(pro)q(cess,)c(and)g(the)g(allo)q(cation)h(of)f (pro)q(cesses)g(to)g(pro)q(cessors.)22 b(Also,)16 b(the)g(curren)o(t)g (prop)q(osal)g(do)q(es)g(not)75 779 y(pro)o(vide)h(for)g(dynamic)h (creation)f(or)f(deletion)i(of)f(pro)q(cesses)g(during)h(program)e (execution,)i(although)75 835 y(it)f(is)f(in)o(tended)i(to)e(b)q(e)h (consisten)o(t)f(with)h(suc)o(h)g(extension.)24 b(Finally)l(,)18 b(the)e(curren)o(t)g(prop)q(osal)h(do)q(es)f(not)75 892 y(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)g(to)g(alw)o(a)o(ys)f(iden)o(tify)i(pro)q (cesses)f(according)75 948 y(to)h(their)h(relativ)o(e)g(rank)f(in)h(a)f (con)o(text)g(\(group\),)g(so)g(that,)g(e\013ectiv)o(ely)l(,)i(pro)q (cesses)e(are)h(iden)o(ti\014ed)h(b)o(y)75 1005 y(consecutiv)o(e)c(in)o (tegers.)20 b(Absolute,)14 b(system-wide)h(unique)g(pro)q(cess)g(id's)f (are)g(\(will)h(b)q(e\))g(needed)g(only)f(if)75 1061 y(dynamic)h(pro)q(cess)f(creation)g(is)g(to)g(b)q(e)g(supp)q(orted)h (\(in)f(suc)o(h)g(ev)o(en)o(tualit)o(y)h(w)o(e)e(prop)q(ose)h(to)g(use) g(handles)75 1118 y(to)h(opaque)g Fl(pr)n(o)n(c)n(ess)g(structur)n(es)g Fv(for)f(that)h(purp)q(ose\).)75 1260 y Fp(2.4)70 b(Con)n(texts)75 1444 y Fo(Discussion:)48 b Fn(This)18 b(section)g(con)o(tains)f(a)h (prop)q(osal)f(for)g(use)h(of)f(con)o(texts)i(that)e(will)f(subsume)i (groups.)29 b(It)75 1500 y(b)q(orro)o(ws)17 b(hea)o(vily)e(on)h(the)g (curren)o(t)i(group)e(prop)q(osal.)24 b(This)16 b(prop)q(osal)g(has)g (not)g(y)o(et)h(b)q(een)g(discussed)h(in)e(MPI)75 1557 y(meetings.)166 1696 y Fv(A)f Fw(con)o(text)g Fv(consists)h(of:)143 1784 y Fr(\017)23 b Fv(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 1841 y(prop)q(er)e(subset\).)143 1932 y Fr(\017)23 b Fv(A)14 b Fw(ranking)h Fv(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 1988 y(that)f(con)o(text)h(from)f(0)h(to)g Fu(n)10 b Fr(\000)g Fv(1,)15 b(where)g Fu(n)h Fv(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 2077 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 2133 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 2189 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 Fl(c)n(ontext)75 2246 y(hand)r(le)g Fv(\(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 2302 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 2359 y(where)g(created.)166 2415 y(F)l(ollo)o(ws)g(examples)h(of)f(p)q(ossible)i(uses)e(for)g(con)o (texts.)75 2534 y Fw(Lo)q(osely)j(sync)o(hronous)d(library)i(call)i(in) o(terface)46 b Fv(Consider)15 b(the)g(case)g(where)g(a)f(parallel)i (appli-)75 2591 y(cation)c(executes)h(a)f(\\parallel)i(call")f(to)f(a)g (library)h(routine,)g(i.e.,)f(where)h(all)g(pro)q(cesses)g(transfer)e (con)o(trol)75 2647 y(to)16 b(the)h(library)h(routine.)25 b(If)17 b(the)g(library)h(w)o(as)e(dev)o(elop)q(ed)i(separately)l(,)g (then)f(one)g(should)h(b)q(ew)o(are)e(of)75 2704 y(the)j(p)q(ossibilit) o(y)i(that)e(the)g(library)h(co)q(de)f(ma)o(y)g(receiv)o(e)h(b)o(y)f (mistak)o(e)f(messages)h(send)h(b)o(y)f(the)g(caller)p eop %%Page: 10 15 10 14 bop 75 -100 a Fv(10)608 b Ft(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fv(co)q(de,)h(and)g (vice-v)o(ersa.)24 b(T)l(o)16 b(prev)o(en)o(t)h(suc)o(h)g(o)q (ccurrence)g(one)g(migh)o(t)f(use)h(a)f(barrier)h(sync)o(hronization)75 102 y(b)q(efore)d(and)f(after)g(the)g(parallel)i(library)f(call.)20 b(Instead,)14 b(one)f(can)h(allo)q(cate)g(a)f(di\013eren)o(t)g(con)o (text)g(to)g(the)75 158 y(library)l(,)k(th)o(us)f(prev)o(en)o(ting)h (un)o(w)o(an)o(ted)f(in)o(terference.)24 b(No)o(w,)16 b(the)g(transfer)g(of)g(con)o(trol)g(to)g(the)g(library)75 214 y(need)g(not)f(b)q(e)h(sync)o(hronized.)75 331 y Fw(F)l(unctional)h(decomp)q(osition)f(and)f(mo)q(dular)h(co)q(de)f(dev) o(elopmen)o(t)45 b Fv(Often,)13 b(a)g(parallel)h(appli-)75 388 y(cation)d(is)h(dev)o(elop)q(ed)h(b)o(y)e(in)o(tegrating)g(sev)o (eral)g(distinct)i(functional)f(mo)q(dules,)h(that)d(is)i(eac)o(h)f (dev)o(elop)q(ed)75 444 y(separately)l(.)29 b(Eac)o(h)18 b(mo)q(dule)h(is)g(a)f(parallel)h(program)e(that)h(runs)g(on)g(a)g (dedicated)h(set)f(of)g(pro)q(cesses,)75 501 y(and)13 b(the)f(computation)g(consists)h(of)f(phases)h(where)f(mo)q(dules)i (compute)e(separately)l(,)h(in)o(termixed)h(with)75 557 y(global)19 b(phases)f(where)g(all)h(pro)q(cesses)f(comm)o(unicate.)28 b(It)18 b(is)h(con)o(v)o(enien)o(t)f(to)f(allo)o(w)i(eac)o(h)f(mo)q (dule)h(to)75 614 y(use)f(its)g(o)o(wn)g(priv)m(ate)g(pro)q(cess)g(n)o (um)o(b)q(ering)h(sc)o(heme,)f(for)g(the)f(in)o(tramo)q(dule)i (computation.)28 b(This)18 b(is)75 670 y(ac)o(hiev)o(ed)k(b)o(y)f (using)h(a)f(priv)m(ate)h(mo)q(dule)h(con)o(text)e(for)f(in)o(tramo)q (dule)i(computation,)h(and)e(a)g(global)75 727 y(con)o(text)15 b(for)f(in)o(termo)q(dule)j(comm)o(unication.)75 844 y Fw(Collectiv)o(e)e(comm)o(unication)47 b Fv(MPI)11 b(supp)q(orts)h(collectiv)o(e)i(comm)o(unication)f(within)g (dynamically)75 900 y(created)20 b(groups)g(of)f(pro)q(cesses.)35 b(Eac)o(h)20 b(suc)o(h)g(group)g(can)g(b)q(e)h(represen)o(ted)f(b)o(y)g (a)g(distinct)h(con)o(text.)75 956 y(This)14 b(pro)o(vides)g(a)f (simple)i(mec)o(hanism)f(to)f(ensure)h(that)e(comm)o(unication)j(that)d (p)q(ertains)i(to)f(collectiv)o(e)75 1013 y(comm)o(unication)23 b(within)h(one)f(group)f(is)h(not)f(confused)h(with)g(collectiv)o(e)h (comm)o(unication)g(within)75 1069 y(another)15 b(group.)75 1186 y Fw(Ligh)o(t)o(w)o(eigh)o(t)27 b(gang)h(sc)o(heduling)46 b Fv(Consider)25 b(an)e(en)o(vironmen)o(t)h(where)g(pro)q(cesses)g(are) f(m)o(ulti-)75 1243 y(th)o(treaded.)i(Con)o(texts)16 b(can)h(b)q(e)h(used)g(to)e(pro)o(vide)i(a)e(mec)o(hanism)i(whereb)o(y) f(all)h(pro)q(cesses)g(are)e(time-)75 1299 y(shared)e(b)q(et)o(w)o(een) g(sev)o(eral)g(parallel)h(executions,)g(and)f(can)g(con)o(text)g(switc) o(h)g(from)f(one)h(parallel)h(execu-)75 1356 y(tion)g(to)f(another,)g (in)i(a)f(lo)q(osely)g(sync)o(hronous)g(manner.)20 b(A)15 b(thread)g(is)g(allo)q(cated)h(on)f(eac)o(h)g(pro)q(cess)g(to)75 1412 y(eac)o(h)i(parallel)h(execution,)f(and)g(a)f(di\013eren)o(t)h (con)o(text)f(is)h(used)g(to)f(iden)o(tify)i(eac)o(h)e(parallel)i (execution.)75 1469 y(Th)o(us,)h(tra\016c)f(from)f(one)i(execution)g (cannot)g(b)q(e)g(confused)g(with)g(tra\016c)e(from)h(another)g (execution.)75 1525 y(The)13 b(blo)q(c)o(king)i(and)f(un)o(blo)q(c)o (king)g(of)f(threads)g(due)h(to)f(comm)o(unication)h(ev)o(en)o(ts)f (pro)o(vide)h(a)e(\\lazy")i(con-)75 1581 y(text)h(switc)o(hing)h(mec)o (hanism.)21 b(This)16 b(can)g(b)q(e)g(extended)g(to)f(the)g(case)h (where)g(the)f(parallel)i(executions)75 1638 y(are)e(spanning)h (distinct)g(pro)q(cess)g(subsets.)k(\(MPI)15 b(do)q(es)g(not)g(require) h(m)o(ultithreaded)g(pro)q(cesses.\))166 1770 y Fo(Discussion:)32 b Fn(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 1820 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 1870 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 1920 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 1970 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 2019 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 2069 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 2119 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 2169 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 2219 y(pro)q(cess)i(is)d(lik)o(ely)g(to)h(b)q(e)g(small.)166 2269 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 2318 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 2368 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 2418 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 2486 y Fi(\017)23 b Fn(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 2536 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 2586 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 2654 y Fi(\017)23 b Fn(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 2704 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)p eop %%Page: 11 16 11 15 bop 75 -100 a Ft(2.4.)34 b(CONTEXTS)1391 b Fv(11)189 45 y Fn(less)14 b(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 95 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 145 y(of)g(this)h(con)o (text.)145 226 y Fi(\017)23 b Fn(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 276 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 326 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.)75 567 y Fm(2.4.1)55 b(Con)n(text)19 b(Op)r(erations)75 656 y Fv(A)12 b(global)h(con)o(text)f Fw(ALL)g Fv(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 713 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 769 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 826 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 882 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 938 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 1079 y Fo(Discussion:)23 b Fn(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 Fj(ALL)e Fn(con)o(v)o(eys)h(the)g(wrong)75 1136 y(impression,)12 b(since)j(it)f(is)f(just)h(the)h(initial)d(set)j (of)e(pro)q(cesses.)166 1276 y Fv(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 1391 y Fw(MPI)p 184 1391 16 2 v 18 w(COPY)p 355 1391 V 18 w(CONTEXT\(new)o(con)o(text,)h(con)o(text\))166 1449 y Fv(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 1505 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 1562 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 1618 y(function.)j(The)15 b(parameters)f(are)75 1733 y Fw(OUT)k(new)o(con)o(text)k Fv(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 1789 y(with)g(an)g(ob)s(ject)g(b)q(efore)g(the)h(call.)75 1889 y Fw(IN)h(con)o(text)23 b Fv(handle)17 b(to)d(old)i(con)o(text)166 2080 y Fo(Discussion:)31 b Fn(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 2130 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 2179 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 2229 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 2279 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 2337 y Fo(Implemen)o(tati)o(on)8 b(note:)15 b Fn(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 2393 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 2450 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 2506 y(same)g(old)g(table.)75 2704 y Fw(MPI)p 184 2704 V 18 w(NEW)p 331 2704 V 19 w(CONTEXT\(new)o(con)o(text,)k(con)o(text,)g (k)o(ey)l(,)f(index\))p eop %%Page: 12 17 12 16 bop 75 -100 a Fv(12)608 b Ft(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fw(OUT)i(new)o(con)o (text)k Fv(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 102 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 200 y Fw(IN)i(con)o(text)23 b Fv(handle)17 b(to)d(old)i(con)o(text)75 299 y Fw(IN)h(k)o(ey)22 b Fv(in)o(teger)75 397 y Fw(IN)17 b(index)23 b Fv(in)o(teger)166 509 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 Fk(key)p Fv(;)h(this)h(con)o(text)e(is)h (shared)g(b)o(y)g(all)75 566 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 622 y(rank)o(ed)j(according)g(to)g(the)g(order)g(of)f(the)h Fk(index)g Fv(v)m(alues)h(they)f(pro)o(vided;)h(in)g(case)f(of)f(ties,) i(pro)q(cesses)75 679 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 736 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 793 y(call.)166 850 y(P)o(articular)g(uses)h(of)e(this)i(function)g(are:) 166 908 y(\(i\))g(Reordering)h(pro)q(cesses:)22 b(All)c(pro)q(cesses)e (pro)o(vide)h(the)f(same)g Fk(key)g Fv(v)m(alue,)h(and)g(pro)o(vide)f (their)75 964 y(index)g(in)h(the)e(new)g(order.)166 1022 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 1079 y(pro)q(cesses:)21 b(All)c(pro)q(cesses)f(pro)o(vide)g(the)g(same) f Fk(index)g Fv(v)m(alue,)i(and)f(pro)o(vide)g(a)f(k)o(ey)h(iden)o (tifying)h(their)75 1135 y(new)e(sub)q(con)o(text.)75 1249 y Fw(MPI)p 184 1249 16 2 v 18 w(RANK\(rank,)h(con)o(text\))75 1361 y(OUT)i(rank)23 b Fv(in)o(teger)75 1460 y Fw(IN)17 b(con)o(text)23 b Fv(con)o(text)15 b(handle)166 1572 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 1686 y Fw(MPI)p 184 1686 V 18 w(SIZE\(size,)h(con)o(text\))75 1798 y(OUT)g(size)23 b Fv(in)o(teger)75 1897 y Fw(IN)17 b(con)o(text)23 b Fv(con)o(text)15 b(handle)166 2009 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 2136 y Fw(Usage)26 b(note)46 b Fv(Use)22 b(of)g(con)o(texts)g(for)g(libraries:)35 b(Eac)o(h)22 b(library)h(ma)o(y)f(pro)o(vide)h(an)f(initialization)75 2192 y(routine)15 b(that)f(is)h(to)f(b)q(e)h(called)h(b)o(y)e(all)i (pro)q(cesses,)e(and)h(that)f(generate)g(a)g(con)o(text)g(for)g(the)h (use)g(of)f(that)75 2248 y(library)l(.)166 2306 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 2363 y(text)e Fk(ALL)g Fv(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 2419 y(corresp)q(onding)g(con)o(text.)166 2477 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 2533 y(pro)q(cesses)f(where)f(collectiv)o(e)i(comm)o(unication)f(is)g (to)e(o)q(ccur.)166 2591 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 2647 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 2704 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.)p eop %%Page: 13 18 13 17 bop 75 -100 a Ft(2.4.)34 b(CONTEXTS)1391 b Fv(13)166 45 y Fo(Discussion:)33 b Fn(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 95 y(is)g Fo(MPI)p 214 95 15 2 v 17 w(PR)o(OCESS\(pro)q(cess,)g(con)o (text,)h(rank\))p Fn(,)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 145 y(the)i Fj(rank)g Fn(and)f Fj(context)g Fn(parameters.)166 202 y(A)19 b(p)q(ossible)h(addition)e(is)i(a)f(function)g(of)g(the)h(form)e Fo(MPI)p 1136 202 V 17 w(CREA)l(TE)p 1350 202 V 19 w(CONTEXT\(new)o (con)o(text,)75 258 y(list)p 144 258 V 15 w(of)p 198 258 V 17 w(pro)q(cess)p 368 258 V 16 w(handles\))f Fn(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 315 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 371 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)75 428 y(that)j(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 484 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 541 y(are)e(statically)f(allo)q (cated)h(at)f(load-time.)75 750 y Fm(2.4.2)55 b(Error)18 b(Handling)75 837 y Fv(It)e(is)h(assumed)g(that)e(MPI)h(is)h(implemen)o (ted)h(on)e(top)g(of)g(an)g(error-free)g(comm)o(unication)h(subsystem:) 75 894 y(A)e(message)g(sen)o(t)g(is)h(alw)o(a)o(ys)f(receiv)o(ed)h (correctly)l(,)f(and)h(the)f(user)h(do)q(es)f(not)g(need)i(to)d(c)o (hec)o(k)i(for)e(trans-)75 950 y(mission)h(errors,)f(time-outs,)g(and)h (the)f(lik)o(es.)21 b(In)15 b(other)f(w)o(ords,)f(MPI)i(do)q(es)f(not)g (pro)o(vide)h(mec)o(hanisms)75 1007 y(to)h(deal)i(with)f(failures)h(in) f(the)g(underlying)i(comm)o(unication)f(subsystem)f({)f(it)h(is)h(the)e (resp)q(onsibili)q(t)o(y)75 1063 y(of)f(the)h(MPI)g(implemen)o(ter)h (to)e(insulate)i(the)f(user)g(from)f(suc)o(h)h(errors)f(\(or)g(to)g (re\015ect)h(them)g(as)f(global)75 1120 y(program)f(failures\).)21 b(The)15 b(same)g(holds)h(true)f(for)g(no)q(de)g(failures.)166 1177 y(Of)h(course,)h(MPI)f(programs)f(ma)o(y)h(still)i(b)q(e)f (erroneous.)23 b(A)16 b Fw(program)i(error)d Fv(can)i(o)q(ccur)f(when) 75 1233 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 1290 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 1346 y(an)o(y)e(implemen)o(tation.)29 b(In)19 b(addition,)g(a)f Fw(resource)i(error)c Fv(ma)o(y)i(o)q(ccur)g (when)g(a)g(program)f(exceeds)75 1403 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 1459 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 1516 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 1572 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 1628 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 Fw(safe)g Fv(programs,)f(that)h(are)f (not)75 1685 y(sub)s(ject)d(to)g(resource)g(errors.)166 1742 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 1799 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 1856 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)75 1912 y(routine)e(that)f(encoun)o(ters)g(a)g(reco)o(v)o (erable)h(error)f(to)g(store)f(an)i(error)e(n)o(um)o(b)q(er)i(in)g(a)f (global)i(v)m(ariable)75 1969 y(\()p Fl(errno)15 b Fv(in)g(a)g(C)g(en)o (vironmen)o(t\))g(and)g(generate)f(an)h Fl(MPI)h(err)n(or)g(signal)p Fv(,)d(using)j(a)f(sp)q(ecial)h(signal)g(v)m(alue.)75 2025 y(The)d(default)g(handler)h(for)f(this)g(signal)g(terminates)g (the)g(execution)h(of)e(all)i(in)o(v)o(olv)o(ed)g(pro)q(cesses,)f(with) g(a)75 2082 y(suitable)i(error)f(message)f(b)q(eing)j(returned)e(to)g (the)g(user.)19 b(Ho)o(w)o(ev)o(er,)13 b(the)h(user)h(can)f(pro)o(vide) g(his)h(or)f(her)75 2138 y(o)o(wn)j(signal)i(handling)h(routine.)28 b(In)19 b(particular,)f(the)g(user)g(can)g(sp)q(ecify)h(a)f(\\no)q(op") g(signal)g(handler,)75 2195 y(th)o(us)d(relegating)h(all)h(error)e (handling)i(to)e(the)g(user)h(co)q(de,)g(using)g(the)g(error)e (parameters)h(returned)h(b)o(y)75 2251 y(the)f(MPI)g(calls.)166 2308 y(MPI)e(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 2365 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 2421 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 2478 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 2534 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 2591 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 2647 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 2704 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)p eop %%Page: 14 19 14 18 bop 75 -100 a Fv(14)608 b Ft(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fv(the)f(MPI)g (error)g(signal.)166 184 y Fo(Discussion:)34 b Fn(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.)75 407 y Fp(2.5)70 b(Messages)75 509 y Fv(A)15 b(message)g(consists)g(of)g(an)g Fl(envelop)n(e)f Fv(and)i Fl(data)p Fv(.)75 627 y Fm(2.5.1)55 b(Data)75 713 y Fv(The)14 b(data)g(part)g(of)f(a)h(message)g(consists)g(of)g(a)g (sequence)h(of)f(v)m(alues,)h(eac)o(h)g(of)e(a)h(basic)h(datat)o(yp)q (e)f(in)h(the)75 770 y(host)h(language.)25 b(Th)o(us,)17 b(in)h(F)l(ortran,)e(a)g(message)h(consists)g(of)f(a)h(sequence)h(of)e (v)m(alues)i(that)e(are)h(eac)o(h)75 826 y(of)c(t)o(yp)q(e)h Fk(INTEGER)p Fv(,)f Fk(REAL)p Fv(,)f Fk(DOUBLE)23 b(PRECISION)p Fv(,)13 b Fk(COMPLEX)p Fv(,)f Fk(LOGICAL)p Fv(,)g(or)i(\(length)g(1\))f Fk(CHARACTER)p Fv(.)f(A)75 883 y(message)j(ma)o(y)f(mix)i(v)m(alues)g (of)f(di\013eren)o(t)g(t)o(yp)q(es.)166 1022 y Fo(Discussion:)34 b Fn(Ma)o(y)13 b(also)g(need)i Fj(DOUBLE)21 b(COMPLEX)12 b Fn(in)i(F)m(ortran.)75 1223 y Fm(2.5.2)55 b(En)n(v)n(elop)r(e)75 1309 y Fv(The)15 b(follo)o(wing)h(information)g(is)f(asso)q(ciated)h (with)f(eac)o(h)h(message:)75 1387 y Fw(source)22 b Fv(The)16 b(rank)f(the)g(sending)h(pro)q(cess)75 1475 y Fw(destination)25 b Fv(The)15 b(rank)g(of)g(the)g(receiving)i(pro)q(cess)75 1562 y Fw(tag)24 b Fv(User)15 b(de\014ned)75 1650 y Fw(con)o(text)23 b Fv(handle)166 1728 y(The)14 b(range)g(of)g(v)m(alid)h(v)m(alues)h (for)d(the)h Fw(source)g Fv(and)g Fw(destination)i Fv(\014elds)g(is)e Fk(0)24 b(...)47 b(n-1)p Fv(,)14 b(where)75 1784 y Fk(n)20 b Fv(is)g(the)g(n)o(um)o(b)q(er)g(of)f(pro)q(cesses)h(in)g(the)g (curren)o(t)g(con)o(text.)33 b(The)20 b(ranges)f(of)g(v)m(alid)i(v)m (alues)g(for)e Fk(tag)75 1841 y Fv(is)h(implemen)o(tation)i(dep)q (enden)o(t,)g(and)e(can)g(b)q(e)h(found)f(b)o(y)g(calling)i(a)d (suitable)j(query)e(function,)h(as)75 1897 y(describ)q(ed)15 b(in)e(Section)h(7.)19 b Fk(Context)12 b Fv(should)i(b)q(e)f(a)g(con)o (text)f(shared)h(b)o(y)g(b)q(oth)g(source)f(and)h(destination.)166 1954 y(The)i Fk(tag)g Fv(\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 2010 y(di\013eren)o(t)g(messages.)166 2067 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 2123 y(dep)q(enden)o(t;)k(some)e (of)g(the)g(information)g(\(e.g.,)f Fw(sender)g Fv(or)h Fw(receiv)o(er)p Fv(\))f(ma)o(y)g(b)q(e)i(implicit,)i(and)d(need)75 2180 y(not)f(b)q(e)h(explicitly)i(carried)d(b)o(y)h(a)e(message.)75 2320 y Fp(2.6)70 b(Data)23 b(Bu\013ers)75 2421 y Fv(The)17 b(basic)g(p)q(oin)o(t)g(to)f(p)q(oin)o(t)h(comm)o(unication)g(op)q (erations)g(are)f Fw(send)g Fv(and)h Fw(receiv)o(e)p Fv(.)23 b(A)16 b Fw(send)h Fv(op)q(er-)75 2478 y(ation)f(creates)f(a)h (message;)f(the)h(message)g(data)f(is)h(assem)o(bled)h(from)e(the)h Fw(send)i(bu\013er)p Fv(.)j(A)16 b Fw(receiv)o(e)75 2534 y Fv(op)q(eration)i(consumes)f(a)g(message;)h(the)f(message)g(data)g (is)h(mo)o(v)o(ed)e(in)o(to)i(the)f Fw(receiv)o(e)i(bu\013er)p Fv(.)26 b(The)75 2591 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 2647 y(A)j(bu\013er)g(consists)h(of)e(a)h(sequence)h Fw(bu\013er)h(comp)q(onen)o(ts)p Fv(.)29 b(Eac)o(h)18 b(comp)q(onen)o(t)g(consists)h(of)e(a)75 2704 y(sequence)c(v)m (ariables)h(of)d(the)h(same)g(basic)h(t)o(yp)q(e.)19 b(There)12 b(are)g(three)g(basic)h(t)o(yp)q(es)f(of)f(bu\013er)h(comp)q (onen)o(ts:)p eop %%Page: 15 20 15 19 bop 75 -100 a Ft(2.6.)34 b(D)o(A)l(T)l(A)15 b(BUFFERS)1292 b Fv(15)75 45 y Fw(blo)q(c)o(k)23 b Fv(A)15 b(sequence)i(of)e(con)o (tiguous)g(v)m(alues)h(of)f(the)g(same)g(basic)h(t)o(yp)q(e,)f(sp)q (eci\014ed)i(b)o(y)189 142 y Fw(start)23 b Fv(Initial)17 b(elemen)o(t)189 216 y Fw(len)23 b Fv(Num)o(b)q(er)16 b(of)e(elemen)o(ts)i(\()p Fk(len)c Fr(\025)h Fk(0)p Fv(\))189 291 y Fw(datat)o(yp)q(e)23 b Fv(T)o(yp)q(e)16 b(of)f(elemen)o(ts)75 387 y Fw(v)o(ector)22 b Fv(A)13 b(sequence)h(of)f(equally)h(spaced)g (and)f(equally)h(sized)g(blo)q(c)o(ks)g(of)e(elemen)o(ts)i(of)f(the)g (same)f(basic)189 444 y(t)o(yp)q(e,)j(sp)q(eci\014ed)i(b)o(y)189 540 y Fw(start)23 b Fv(Initial)17 b(elemen)o(t)189 615 y Fw(len)23 b Fv(Num)o(b)q(er)16 b(of)e(elemen)o(ts)i(\()p Fk(len)c Fr(\025)h Fk(0)p Fv(\))189 689 y Fw(stride)22 b Fv(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(b)q(et)o(w)o(een)f(the)g (start)f(of)h(eac)o(h)g(blo)q(c)o(k)189 764 y Fw(len)o(blk)23 b Fv(Num)o(b)q(er)15 b(of)g(elemen)o(ts)h(in)g(eac)o(h)f(blo)q(c)o(k)h (\()p Fk(lenblk)c Fr(\024)h Fk(stride)p Fv(\))189 838 y Fw(datat)o(yp)q(e)23 b Fv(T)o(yp)q(e)16 b(of)f(elemen)o(ts)189 935 y(Note)j(that)g(a)h(constan)o(t)f(stride)h(b)q(ecomes)g(con)o (tiguous)g(when)g Fk(stride)k(=)h(lenblk)p Fv(.)30 b(A)19 b(v)o(ector)189 991 y(bu\013er)c(comp)q(onen)o(t)g(can)g(b)q(e)h(an)f (arbitrary)g(submatrix)g(of)g(a)g(t)o(w)o(o-dimensional)h(matrix.)75 1088 y Fw(indexed)23 b Fv(A)15 b(sequence)h(of)f(elemen)o(ts)h(of)f (the)g(same)g(basic)h(t)o(yp)q(e,)f(sp)q(eci\014ed)i(b)o(y)189 1184 y Fw(start)23 b Fv(initial)17 b(elemen)o(t)189 1259 y Fw(list)p 261 1259 16 2 v 19 w(of)p 322 1259 V 19 w(indices)24 b Fv(List)16 b(of)e(displacemen)o(ts)i(of)f(the)g(elemen)o(ts)g(in)h (the)f(bu\013er)g(comp)q(onen)o(ts,)f(rela-)289 1315 y(tiv)o(e)h(to)g(the)g(initial)i(elemen)o(t.)189 1390 y Fw(datat)o(yp)q(e)23 b Fv(T)o(yp)q(e)16 b(of)f(elemen)o(ts)166 1500 y(F)l(or)21 b(example,)i(if)f(a)g(F)l(ortran)e(arra)o(y)g(is)i (declared)h(as)e Fk(double)i(precision)g(a\(10\))p Fv(,)f(then)g(the)75 1556 y(tuple)11 b Fu(<)p Fk(\(a\(3\),)24 b(\(0,3,6,2\),)e(DOUBLE)p Fu(>)10 b Fv(sp)q(eci\014es)i(a)e(bu\013er)h(comp)q(onen)o(t)f(with)h (en)o(tries)f Fk(a\(3\))24 b(a\(6\),)75 1612 y(a\(9\),)f(a\(5\))p Fv(.)166 1746 y Fo(Discussion:)34 b Fn(Do)13 b(w)o(e)h(allo)o(w)e(en)o (tries)j(to)f(b)q(e)h(rep)q(eated)g(in)f(an)f(indexed)i(bu\013er)g (comp)q(onen)o(t?)166 1796 y(Do)e(w)o(e)h(allo)o(w)f(di\013eren)o(t)h (bu\013er)h(comp)q(onen)o(ts)f(to)g(o)o(v)o(erlap?)166 1847 y(Do)f(w)o(e)h(require)h(in)f(an)f(v)o(ector)i(bu\013er)g(comp)q (onen)o(t)e(that)h Fj(len)f Fn(b)q(e)i(a)e(m)o(ultiple)f(of)h Fj(lenblk)p Fn(?)166 1986 y Fv(A)19 b(bu\013er)g(is)h(describ)q(ed)h(b) o(y)e(an)g(opaque)g(ob)s(ject)g(accessed)g(via)h(a)f Fw(bu\013er)i(handle)p Fv(.)32 b(Suc)o(h)20 b(ob-)75 2043 y(ject)e(is)g(created)g(and)g(destro)o(y)o(ed)f(via)i(calls)g(to)e Fk(MPI)p 987 2043 15 2 v 17 w(CREATE)g Fv(and)h Fk(MPI)p 1328 2043 V 16 w(FREE)p Fv(.)f(It)h(is)h(asso)q(ciated)f(with)75 2099 y(successiv)o(e)g(bu\013er)e(comp)q(onen)o(ts)h(b)o(y)f(calling)j (in)e(succession)h(one)e(of)h(the)f(functions)i Fk(MPI)p 1641 2099 V 16 w(ADD)p 1729 2099 V 17 w(BLOCK)p Fv(,)75 2156 y Fk(MPI)p 150 2156 V 17 w(ADD)p 239 2156 V 17 w(VECTOR)e Fv(or)i Fk(MPI)p 547 2156 V 17 w(ADD)p 636 2156 V 16 w(INDEX)p Fv(,)f(in)i(order)e(to)g(app)q(end)i(a)f(comp)q(onen)o(t)g (to)f(the)h(bu\013er)f(asso)q(ci-)75 2212 y(ated)i(with)h(a)f(bu\013er) g(handle.)33 b(A)19 b(bu\013er)h(ob)s(ject)e(can)i(b)q(e)g(destro)o(y)o (ed)e(only)i(if)g(there)f(is)h(no)f(p)q(ending)75 2269 y(comm)o(unication)e(op)q(eration)f(using)h(it.)23 b(After)16 b(a)g(bu\013er)g(ob)s(ject)g(is)h(destro)o(y)o(ed)e(the)i(asso)q (ciated)f(bu\013er)75 2325 y(handle)g(is)g(unde\014ned.)166 2418 y Fw(MPI)p 275 2418 16 2 v 18 w(ADD)p 413 2418 V 18 w(BLOCK\()j(bu\013er,)d(start,)h(len,)g(datat)o(yp)q(e\))166 2510 y Fv(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 2607 y Fw(INOUT)k(bu\013er)k Fv(bu\013er)15 b(handle)75 2704 y Fw(IN)i(start)23 b Fv(bu\013er)15 b(comp)q(onen)o(t)h(initial)h(elemen)o(t)f(\(c)o(hoice)g (t)o(yp)q(e\))p eop %%Page: 16 21 16 20 bop 75 -100 a Fv(16)608 b Ft(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fw(IN)h(len)23 b Fv(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(\(in)o(teger\))75 142 y Fw(IN)h(datat)o(yp)q(e)24 b Fv(datat)o(yp)q(e)15 b(iden)o(ti\014er)166 274 y Fw(MPI)p 275 274 16 2 v 18 w(ADD)p 413 274 V 18 w(VEC\()j(bu\013er,)e(len,)h(stride,)g(len)o(blk,) g(datat)o(yp)q(e)i(\))166 366 y Fv(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 463 y Fw(INOUT)j(bu\013er)k Fv(bu\013er)15 b(handle)75 560 y Fw(IN)i(start)23 b Fv(bu\013er)15 b(comp)q(onen)o(t)h (initial)h(elemen)o(t)f(\(c)o(hoice)g(t)o(yp)q(e\))75 656 y Fw(IN)h(len)23 b Fv(Num)o(b)q(er)16 b(of)f(elemen)o(ts)h(\(in)o (teger\))75 753 y Fw(IN)h(stride)23 b Fv(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 850 y Fw(IN)h(len)o(blk)23 b Fv(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 946 y Fw(IN)h(datat)o(yp)q(e)24 b Fv(datat)o(yp)q(e)15 b(iden)o(ti\014er)166 1078 y Fw(MPI)p 275 1078 V 18 w(ADD)p 413 1078 V 18 w(INDEX\()j(bu\013er,)e(start,)h (list)p 1019 1078 V 20 w(of)p 1081 1078 V 19 w(indices\))166 1171 y Fv(App)q(end)g(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 1268 y Fw(INOUT)k(bu\013er)k Fv(bu\013er)15 b(handle)75 1364 y Fw(start)23 b Fv(initial)17 b(p)q(osition)f(for)f(indexing)i(\(c)o (hoice)f(t)o(yp)q(e\))75 1461 y Fw(list)p 147 1461 V 20 w(of)p 209 1461 V 19 w(indices)23 b Fv(list)16 b(of)f(relativ)o(e)h (indices)h(of)e(en)o(tries)g(\(arra)o(y)f(of)h(in)o(tegers\))166 1558 y(Consider,)g(for)g(example,)h(the)f(follo)o(wing)h(fragmen)o(t)e (of)h(F)l(ortran)f(co)q(de)75 1668 y Fk(DOUBLE)23 b(PRECISION)g (A\(10,20\))75 1725 y(INTEGER)g(B,)g(C\(5,10\))75 1781 y(INTEGER)g(BH)75 1837 y(...)75 1894 y(CALL)g(MPI_CREATE\(BH,)f (MPI_BUFFER,)h(MPI_PERSISTENT\))75 1950 y(CALL)g(MPI_ADD_BLOCK)f(\(BH,) i(B,)f(1,)h(MPI_INT\))75 2007 y(CALL)f(MPI_ADD_VEC)g(\(BH,)g(A\(1,3\),) g(11,)g(4,)h(2,)g(MPI_DOUBLE\))75 2063 y(CALL)f(MPI_ADD_INDEX\(BH,)f (C\(3,7\),)h(\(4,2,1\),)g(MPI_INT\))166 2173 y Fv(Then)16 b(the)f(bu\013er)g(asso)q(ciated)g(with)h(the)f(handle)i Fk(BH)e Fv(consists)g(of)g(the)g(sequence)h(of)f(v)m(ariables)166 2230 y Fk(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 2287 y(A\(8,4\),)g(A\(1,5\),)g(C\(2,8\),)g(C\(5,7\),)g(C\(4,7\))p Fv(.)166 2344 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 2400 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 2457 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 2514 y(v)m(ariables)h(\(i.e.,)e(ev)o(en)g(if)h(it)g(w)o(as)e(set)i(b)o (y)f(an)o(y)g Fk(MPI)p 951 2514 15 2 v 17 w(ADD)p 1040 2514 V 16 w(xxx)g Fv(call\).)25 b(Suc)o(h)17 b(handle)g(is)g(asso)q (ciated)g(with)75 2570 y(an)e(empt)o(y)g(bu\013er,)g(and)g(a)g(message) g(created)g(from)g(it)g(con)o(tains)g(no)g(data.)166 2704 y Fo(Discussion:)p eop %%Page: 17 22 17 21 bop 75 -100 a Ft(2.6.)34 b(D)o(A)l(T)l(A)15 b(BUFFERS)1292 b Fv(17)166 45 y Fn(The)12 b(main)d(mo)q(di\014cations)h(w.r.t.)17 b(the)12 b(prop)q(osal)f(of)g(Gropp)g(and)h(Lusk)f(is)h(measuring)e (length)h(in)h(elemen)o(ts,)75 95 y(rather)18 b(than)f(b)o(ytes.)28 b(Seem)16 b(more)g(natural,)h(since)h(t)o(yp)q(e)f(is)g(kno)o(wn.)27 b(Also,)17 b(ob)r(ject)h(creation)f(uses)h(a)f(generic)75 145 y(function,)j(rather)g(than)g(a)f(function)g(sp)q(eci\014c)i(to)e (bu\013er)h(descriptors.)36 b(As)20 b(result,)h(I)f(ga)o(v)o(e)f(up)g (on)g(the)h(size)75 195 y(parameter.)e(This)13 b(ma)o(y)f(not)i(b)q(e)g (suc)o(h)g(a)g(loss:)k(it)13 b(is)h(not)f(clear)h(that)g(sp)q(ecifying) g(a)f(maxim)n(um)d(length)j(at)h(bu\013er)75 244 y(ob)r(ject)h (creation)f(is)g(useful,)f(since)i(indices)f(of)f(arbitrary)h(size)h (ma)o(y)d(need)j(to)e(b)q(e)i(stored)g(in)e(the)i(ob)r(ject.)75 459 y Fm(2.6.1)55 b(Data)19 b(Con)n(v)n(ersion)75 548 y Fv(The)g(t)o(yp)q(es)g(and)g(the)g(lo)q(cations)g(of)g(the)f(en)o (tries)i(used)f(to)f(create)h(a)f(message)h(is)g(solely)h(determined)75 605 y(from)c(the)h(information)g(in)g(the)g(bu\013er)g(descriptor,)g (using)g(the)g(storage)e(asso)q(ciation)i(rules)h(sp)q(eci\014ed)75 661 y(b)o(y)g(the)h(host)e(language)i(and)f(its)h(implemen)o(tation;)i (the)d(t)o(yp)q(e)g(and)h(the)f(lo)q(cations)h(of)f(these)h(en)o(tries) 75 718 y(do)f(not)g(dep)q(end)i(on)e(the)g(declaration)h(for)e(the)i (corresp)q(onding)g(v)m(ariables)g(in)g(the)g(calling)g(program.)75 774 y(It)c(is)h(not)f(required)i(that)e(the)g(data)g(t)o(yp)q(es)h(sp)q (eci\014ed)h(in)f(a)f(bu\013er)h(descriptor)g(matc)o(h)f(the)g(data)g (t)o(yp)q(es)75 831 y(of)j(the)g(corresp)q(onding)h(elemen)o(ts)g(in)g (the)f(host)g(program.)27 b(Ho)o(w)o(ev)o(er,)18 b(in)h(case)f(of)f (mismatc)o(hes,)i(the)75 887 y(corresp)q(ondence)e(b)q(et)o(w)o(een)e (en)o(tries)h(in)g(the)g(host)f(program)f(and)h(en)o(tries)h(in)g(a)f (message)g(created)h(with)75 943 y(the)g(bu\013er)h(descriptor)g(ma)o (y)e(b)q(e)j(implemen)o(tation)f(dep)q(enden)o(t.)25 b(No)16 b(data)g(con)o(v)o(ersion)h(o)q(ccurs)f(when)75 1000 y(data)f(is)g(mo)o(v)o(ed)g(from)f(a)h(sender)h(bu\013er)f(in)o (to)g(a)g(message.)166 1058 y(Consider)h(the)f(follo)o(wing)h(fragmen)o (t)e(of)h(F)l(ortran)f(co)q(de)75 1175 y Fk(REAL)23 b(A\(100\))75 1232 y(INTEGER)g(BH)75 1288 y(...)75 1345 y(CALL)g(MPI_CREATE\(BH,)f (MPI_BUFFER,)h(MPI_PERSISTENT\))75 1401 y(CALL)g(MPI_ADD_BLOCK)f(\(BH,) i(A\(1\),)f(1,)g(MPI_REAL\))75 1457 y(CALL)g(MPI_ADD_BLOCK)f(\(BH,)i (A\(2\),)f(1,)g(MPI_INT\))75 1514 y(CALL)g(MPI_ADD_BLOCK)f(\(BH,)i (A\(3\),)f(1,)g(MPI_LOGICAL\))75 1570 y(CALL)g(MPI_ADD_BLOCK)f(\(BH,)i (A\(4\),)f(1,)g(MPI_COMPLEX\))75 1627 y(CALL)g(MPI_ADD_BLOCK)f(\(BH,)i (A\(6\),)f(1,)g(MPI_DOUBLE\))75 1683 y(CALL)g(MPI_ADD_BLOCK\(BH,)f (A\(8\),)h(4,)h(MPI_CHAR\))166 1799 y Fv(A)16 b(message)g(created)g (from)f(this)i(bu\013er)f(will)h(consist)g(of)e(a)h(sequence)i(con)o (taining)e(one)h(real,)f(one)75 1855 y(in)o(teger,)22 b(one)f(logical,)i(one)e(complex,)i(one)e(double,)i(and)e(four)f(c)o (haracters.)36 b(No)21 b(data)f(con)o(v)o(ersion)75 1911 y(o)q(ccurs)c(when)f(v)m(alues)i(are)e(copied)h(from)f(the)g(sender)h (bu\013er)f(to)f(the)i(message.)j(Th)o(us,)c(the)g(\014rst)g(en)o(try) 75 1968 y(in)h(the)g(message)f(is)h(a)f(real)h(n)o(um)o(b)q(er)g(equal) g(to)f Fk(A\(1\))p Fv(;)g(the)g(second)h(en)o(try)g(is)g(an)f(in)o (teger)h(n)o(um)o(b)q(er)g(that)75 2024 y(happ)q(ens)h(to)e(ha)o(v)o(e) h(the)g(same)g(binary)g(represen)o(tation)g(as)g Fk(A\(2\))p Fv(;)f(the)h(third)h(en)o(try)e(is)i(a)f(logical)h(v)m(alue)75 2081 y(that)12 b(happ)q(ens)i(to)e(ha)o(v)o(e)g(the)h(same)f(binary)h (represen)o(tation)g(as)f Fk(A\(3\))p Fv(;)h(the)g(fourth)f(en)o(try)g (in)i(a)e(complex)75 2137 y(n)o(um)o(b)q(er)18 b(with)h(a)f(binary)g (represen)o(tation)g(iden)o(tical)i(to)e Fk(A\(4\),)23 b(A\(5\))p Fv(;)18 b(the)h(\014fth)f(en)o(try)f(is)i(a)f(double)75 2194 y(precision)j(v)m(alue)g(with)f(a)g(binary)g(represen)o(tation)g (iden)o(tical)h(to)e Fk(A\(6\),)k(A\(7\))p Fv(;)e(and)f(if)g(w)o(ords)f (ha)o(v)o(e)75 2250 y(four)14 b(b)o(ytes)g(then)h(the)f(last)h(four)f (en)o(tries)g(are)g(b)o(ytes)h(that)e(mak)o(e)h(the)h(binary)g (represen)o(tation)f(of)g Fk(A\(8\))p Fv(,)75 2307 y(in)i(the)f(b)o (yte)g(order)g(of)g(the)g(executing)i(mac)o(hine.)166 2365 y(The)j(corresp)q(ondence)h(b)q(et)o(w)o(een)g(the)f(\014rst)f (sev)o(en)i(en)o(tries)f(of)f(the)h(arra)o(y)f Fk(A)h Fv(and)g(the)g(\014rst)g(\014v)o(e)75 2421 y(en)o(tries)c(of)f(the)h (message)f(created)g(from)g(this)h(bu\013er)f(is)h(determined)h(b)o(y)f (the)f(rules)i(of)e(F)l(ortran)f(77)h(on)75 2478 y(storage)f(asso)q (ciation:)21 b(Eac)o(h)15 b(v)m(ariable)i(of)e(t)o(yp)q(e)g Fk(INTEGER)p Fv(,)f Fk(REAL)p Fv(,)g(or)h Fk(LOGICAL)g Fv(o)q(ccup)o(y)g(one)h Fl(numeric)75 2534 y(stor)n(age)e(unit)p Fv(;)f(a)f(v)m(ariable)i(of)e(t)o(yp)q(e)h Fk(DOUBLE)f Fv(or)g Fk(COMPLEX)f Fv(o)q(ccup)o(y)j(t)o(w)o(o)d(n)o(umeric)i (storage)f(units.)19 b(Th)o(us,)75 2591 y(the)e(same)g(corresp)q (ondence)h(will)h(hold)f(for)f(an)o(y)f(implemen)o(tation.)27 b(Ho)o(w)o(ev)o(er,)17 b(di\013eren)o(t)g(implemen-)75 2647 y(tations)f(ma)o(y)f(ha)o(v)o(e)h(di\013eren)o(t)h(binary)g(enco)q (dings)g(of)f(in)o(teger,)h(real)f(and)h(logical)g(v)m(alues,)g(so)f (that)g(the)75 2704 y(actual)f(v)m(alues)i(transferred)d(b)o(y)i(the)f (message)g(ma)o(y)f(di\013er.)p eop %%Page: 18 23 18 22 bop 75 -100 a Fv(18)608 b Ft(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)166 45 y Fv(The)h(corresp)q (ondence)i(b)q(et)o(w)o(een)e(the)g(en)o(try)g Fk(A\(8\))g Fv(of)g(the)g(arra)o(y)l(,)f(and)i(the)f(last)g(four)g(c)o(haracter)75 102 y(en)o(tries)h(in)h(the)f(message)g(is)g(implemen)o(tation)h(dep)q (enden)o(t,)h(since)f(the)f(F)l(ortran)f(language)h(do)q(es)g(not)75 158 y(sp)q(ecify)j(a)f(corresp)q(ondence)h(b)q(et)o(w)o(een)f(c)o (haracter)f(storage)g(units)h(and)g(n)o(umeric)h(storage)e(units)h (\(an)75 214 y(arra)o(y)12 b(of)h(c)o(haracters)g(cannot)g(b)q(e)h (equiv)m(alenced)j(with)d(an)f(arra)o(y)f(of)i(in)o(tegers\).)19 b(Di\013eren)o(t)13 b(results)h(ma)o(y)75 271 y(o)q(ccur)i(in)g (big-endians)h(or)d(small-endians)k(mac)o(hines,)d(or)g(in)h(32)f(bit)g (or)g(64)g(bit)g(mac)o(hines.)166 327 y(The)c(same)g(holds,)i (symmetrically)l(,)g(when)f(a)f(message)g(is)g(receiv)o(ed.)20 b(En)o(tries)12 b(are)f(mo)o(v)o(ed)f(from)h(the)75 384 y(message)k(in)o(to)h(the)g(receiv)o(er)h(memory)e(according)h(to)f (the)h(information)g(pro)o(vided)h(b)o(y)f(the)g(bu\013er)f(de-)75 440 y(scriptor,)e(with)g(no)f(regard)g(to)g(the)h(w)o(a)o(y)f(the)g (corresp)q(onding)i(v)m(ariables)g(are)e(declared)i(in)g(the)e (receiving)75 497 y(program.)166 553 y(When)18 b(data)f(is)h(mo)o(v)o (ed)f(in)h(a)f(homogeneous)g(en)o(vironmen)o(t)h(b)q(et)o(w)o(een)g(no) q(des)g(ha)o(ving)g(the)f(same)75 610 y(arc)o(hitecture,)f(then)g(no)g (data)f(con)o(v)o(ersion)h(o)q(ccur)g(at)f(an)o(y)g(p)q(oin)o(t)i (during)f(data)f(transfer.)21 b(Assume,)16 b(in)75 666 y(the)g(previous)g(example,)g(that)f(an)g(iden)o(tically)j(declared)f (bu\013er)e(descriptor)h(is)g(used)g(to)f(receiv)o(e)i(data)75 723 y(in)o(to)i(an)g(iden)o(tically)j(declared)e(arra)o(y)e(at)h(the)g (receiving)i(pro)q(cess.)32 b(Then,)20 b(when)g(these)g(t)o(w)o(o)d(no) q(des)75 779 y(comm)o(unicate,)d(the)f(v)m(alues)h(in)g(the)f(\014rst)g (eigh)o(t)h(en)o(tries)f(of)g(arra)o(y)f Fk(A)h Fv(of)g(the)g(sender)h (will)h(b)q(e)f(copied)g(in)o(to)75 835 y(the)e(\014rst)g(eigh)o(t)h (en)o(tries)f(of)g(arra)o(y)f Fk(A)h Fv(at)g(the)g(receiv)o(er)h (\(assuming)f(that)g(reals)g(o)q(ccup)o(y)h(the)f(same)g(storage)75 892 y(as)i(four)h(b)o(ytes\).)k(In)c(particular,)g(in)h(a)e (homogeneous)g(en)o(vironmen)o(t,)h(it)g(is)g(p)q(ossible)i(to)d(comm)o (unicate)75 948 y(using)i(only)g(c)o(haracter)e(t)o(yp)q(ed)i (messages.)166 1005 y(When)g(data)e(is)i(mo)o(v)o(ed)f(in)o(to)g(a)g (heterogeneous)g(en)o(vironmen)o(t)h(b)q(et)o(w)o(een)f(no)q(des)h(ha)o (ving)g(distinct)75 1061 y(arc)o(hitectures,)e(data)g(con)o(v)o(ersion) g(ma)o(y)f(o)q(ccur)i(during)g(the)f(transfer:)19 b(Eac)o(h)13 b(en)o(try)h(is)h(con)o(v)o(erted)f(from)75 1118 y(the)19 b(data)f(represen)o(tation)g(used)h(on)g(the)f(sending)i(no)q(de)f(to)f (the)h(data)f(represen)o(tation)g(used)h(in)h(the)75 1174 y(receiving)d(no)q(de.)166 1231 y(Consider)f(the)f(follo)o(wing)h (fragmen)o(t)e(of)h(F)l(ortran)f(co)q(de.)75 1310 y Fk(REAL)23 b(X,)h(Y)75 1367 y(CHARACTER)f(\(4\))g(Z)75 1423 y(INTEGER)g(BH)75 1480 y(...)75 1536 y(CALL)g(MPI_CREATE\(BH,)f(MPI_BUFFER,)h (MPI_PERSISTENT\))75 1593 y(CALL)g(MPI_ADD_BLOCK)f(\(BH,)i(X,)f(1,)h (MPI_REAL\))75 1649 y(CALL)f(MPI_ADD_BLOCK)f(\(BH,)i(Y,)f(4,)h (MPI_CHAR\))75 1705 y(CALL)f(MPI_ADD_BLOCK)f(\(BH,)i(Z,)f(4,)h (MPI_CHAR\))166 1785 y Fv(Assume)11 b(that)g(the)g(same)g(arra)o(ys)f Fk(X,)24 b(Y,)f(Z)12 b Fv(and)f(bu\013er)g(handle)i Fk(BH)e Fv(are)g(created)g(at)g(t)o(w)o(o)f(pro)q(cesses)75 1841 y(A)15 b(and)g(B;)g(this)g(handle)h(is)f(used)h(b)o(y)f(A)g(to)f (create)g(and)h(send)h(a)e(message)h(for)f(B,)h(b)o(y)g(B)g(to)f (receiv)o(e)i(this)75 1898 y(message.)k(F)l(urther)15 b(assume)g(that)f(b)q(oth)i(A)f(and)g(B)h(run)f(on)g(distinct)i(no)q (des,)e(with)h(p)q(ossibly)h(di\013eren)o(t)75 1954 y(32)h(bit)h(arc)o (hitectures.)29 b(Then)19 b Fk(X)f Fv(at)g(pro)q(cess)h(B)f(is)h (assigned)g(the)g(v)m(alue)g(of)f Fk(X)g Fv(at)g(pro)q(cess)h(A)f(\(up) h(to)75 2011 y(rounding)14 b(errors)e(that)g(ma)o(y)g(o)q(ccur)h (during)h(con)o(v)o(ersion\);)f Fk(Z)g Fv(on)g(pro)q(cess)g(B)g(is)g (assigned)h(the)f(c)o(haracter)75 2067 y(string)19 b(v)m(alue)h(of)f Fk(Z)f Fv(on)h(pro)q(cess)g(A;)g(if)g(b)q(oth)g(no)q(des)h(use)f(ASCI)q (I)h(enco)q(ding,)h(then)f(no)e(con)o(v)o(ersion)h(is)75 2124 y(required)f(for)e(the)g(c)o(haracters.)23 b(On)18 b(the)e(other)g(hand,)h(v)m(ariable)h Fk(Y)f Fv(on)f(pro)q(cess)h(B)g (ma)o(y)f(b)q(e)h(allo)q(cated)75 2180 y(a)h(v)m(alue)h(that)e (di\013ers)h(from)f(the)h(v)m(alue)h(of)e(v)m(ariable)i Fk(Y)f Fv(on)g(pro)q(cess)g(A.)f(This)i(ma)o(y)e(o)q(ccur)h(if)g(the)g (t)o(w)o(o)75 2237 y(no)q(des)g(use)f(a)g(di\013eren)o(t)g(b)o(yte)g (sequence)i(\(little-endian)g(vs)e(big-endian\),)i(or)e(use)g(a)g (di\013eren)o(t)g(binary)75 2293 y(represen)o(tation)i(for)g(reals)g (\(IEEE)g(vs)g(HEX\).)f(Th)o(us,)i(in)g(order)e(to)h(ensure)h(correct)e (execution)i(in)g(a)75 2350 y(heterogeneous)14 b(en)o(vironmen)o(t,)f (it)h(is)g(imp)q(ortan)o(t)f(that)g(the)g(t)o(yp)q(es)h(of)f(v)m(alues) i(in)f(a)f(message)g(matc)o(h)g(the)75 2406 y(t)o(yp)q(es)i(of)g(the)g (corresp)q(onding)h(v)m(alues)h(in)f(the)f(sending)h(and)g(in)g(the)f (receiving)i(program.)75 2546 y Fp(2.7)70 b(Receiv)n(e)20 b(Criteria)75 2647 y Fv(The)d(selection)h(of)f(a)f(message)h(b)o(y)f(a) h(receiv)o(e)h(op)q(eration)f(is)g(done)g(uniquely)i(according)f(to)e (the)h(v)m(alue)75 2704 y(of)e(the)g(message)g(en)o(v)o(elop)q(e.)21 b(The)15 b(receiv)o(e)h(op)q(eration)f(sp)q(eci\014es)i(an)e Fw(en)o(v)o(elop)q(e)i(pattern)p Fv(;)f(a)e(message)p eop %%Page: 19 24 19 23 bop 75 -100 a Ft(2.8.)34 b(COMMUNICA)l(TION)16 b(MODE)1073 b Fv(19)75 45 y(can)21 b(b)q(e)g(receiv)o(ed)h(b)o(y)f (that)f(receiv)o(e)i(op)q(eration)f(only)g(if)g(its)g(en)o(v)o(elop)q (e)h(matc)o(hes)f(that)f(pattern.)36 b(A)75 102 y(pattern)14 b(sp)q(eci\014es)i(v)m(alues)f(for)e(the)i Fk(source)p Fv(,)e Fk(tag)g Fv(and)i Fk(context)e Fv(\014elds)i(of)f(the)g(message) g(en)o(v)o(elop)q(e.)20 b(In)75 158 y(addition,)d(the)e(v)m(alue)i(for) e(the)h Fk(dest)f Fv(\014eld)i(is)g(set,)e(implicitly)l(,)k(to)c(b)q(e) h(equal)h(to)e(the)g(receiving)j(pro)q(cess)75 214 y(id.)i(The)13 b(receiv)o(er)g(ma)o(y)f(sp)q(ecify)h(a)g Fw(DONTCARE)f Fv(v)m(alue)i(for)e Fk(source)p Fv(,)g(or)g Fk(tag)p Fv(,)g(indicating)j(that)c(an)o(y)75 271 y(source)18 b(and/or)f(tag)f(are)h(acceptable.)28 b(It)18 b(cannot)f(sp)q(ecify)i (a)e(DONTCARE)h(v)m(alue)h(for)e Fk(context)f Fv(or)75 327 y Fk(dest)p Fv(.)j(Th)o(us,)c(a)g(message)g(can)g(b)q(e)h(receiv)o (ed)g(b)o(y)f(a)g(receiv)o(e)h(op)q(eration)f(only)h(if)g(it)f(is)h (addressed)f(to)g(the)75 384 y(receiving)k(task,)f(has)f(a)h(matc)o (hing)g(con)o(text,)f(has)h(matc)o(hing)f(source)h(unless)h (source=DONTCARE)75 440 y(in)d(the)f(pattern,)g(and)g(has)g(a)g(matc)o (hing)g(tag)g(unless)h(tag=DONTCARE)f(in)h(the)f(pattern.)166 498 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 554 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 610 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 667 y(program)f(where)i(this)f(o)q(ccurs)h (is)f(undetermined.)75 814 y Fp(2.8)70 b(Comm)n(unication)20 b(Mo)r(de)75 917 y Fv(A)15 b(sending)i(op)q(eration)e(can)g(o)q(ccur)h (in)g(one)f(of)g(t)o(w)o(o)f(mo)q(des:)75 1014 y Fw(REGULAR)24 b Fv(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)i(has)e(b)q(een)h(p)q(osted.)75 1111 y Fw(READ)o(Y)22 b Fv(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.)166 1208 y(A)h Fw(ready)j(send)d Fv(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 1264 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 1321 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 1461 y Fo(Discussion:)f Fn(I)e(deleted)i(the)f(symmetric)d(ready)j (receiv)o(e.)19 b(Will)12 b(reviv)o(e)i(it)f(if)f(there)j(is)e(a)g (requiremen)o(t)g(for)75 1517 y(it.)75 1748 y Fp(2.9)70 b(Comm)n(unication)20 b(Handles)75 1850 y Fv(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 1907 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 1963 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)75 2020 y(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 2076 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 2133 y(comm)o(unication)g(handle.)166 2190 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 2300 y Fw(INIT\(op)q(eration,)k(params,)d(handle\))24 b Fv(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 2357 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 2413 y(ticipan)o(ts,)f(etc.\).)k(A)d(handle)g(is)g (created)f(that)f(iden)o(ti\014es)j(the)f(op)q(eration.)75 2510 y Fw(ST)l(AR)l(T\(handle\))24 b Fv(The)16 b(comm)o(unication)g(op) q(eration)f(is)h(started)75 2607 y Fw(COMPLETE\(handle\))25 b Fv(The)16 b(comm)o(unication)g(op)q(eration)f(is)h(completed.)75 2704 y Fw(FREE\(handle\))25 b Fv(The)16 b(handle,)g(and)f(asso)q (ciated)g(resources)h(are)f(freed.)p eop %%Page: 20 25 20 24 bop 75 -100 a Fv(20)608 b Ft(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fv(Correct)e(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 154 y Fw(INIT)i Fv(\()p Fw(ST)l(AR)l(T)g(COMPLETE) p Fv(\))1208 135 y Fh(\003)1246 154 y Fw(FREE)p Fu(:)75 263 y Fv(I.e.,)c(a)g(handle)h(needs)h(b)q(e)e(created)h(b)q(efore)f (comm)o(unication)h(o)q(ccurs;)g(it)f(can)h(b)q(e)g(reused)g(only)f (after)g(the)75 320 y(previous)j(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 376 y(that)f(all)j(handles)f(are)f(freed)g(at)g (program)f(termination,)h(b)o(y)g(default\).)166 435 y(The)22 b(ab)q(o)o(v)o(e)g(scenario)h(p)q(ertains)g(to)f Fl(p)n(ersistent)f Fv(handles.)42 b(One)23 b(can)g(also)f(create)g Fl(ephemer)n(al)75 491 y Fv(handles.)38 b(Suc)o(h)22 b(handle)g(p)q(ersists)g(only)f(un)o(til)h(the)f(comm)o(unication)h(op) q(eration)f(is)h(completed,)h(at)75 548 y(whic)o(h)18 b(p)q(oin)o(t)g(it)f(is)h(destro)o(y)o(ed.)25 b(Th)o(us,)17 b(correct)g(in)o(v)o(o)q(cation)h(of)e(sub)q(op)q(erations)i(with)g(an) f(ephemeral)75 604 y(handle)f(is)g Fw(INIT)i(ST)l(AR)l(T)f(COMPLETE)p Fv(.)166 663 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 719 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 776 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 832 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 889 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 945 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 1002 y(op)q(erations.)166 1060 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 Fw(p)q(osted)f Fv(once)h(a)f Fw(start)75 1117 y Fv(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 Fw(completed)g Fv(once)g(the)g Fw(complete)g Fv(sub)q(op)q(eration)75 1173 y(completes.)29 b(A)18 b(send)h(and)f(a)f(receiv)o(e)i(op)q (eration)g Fw(matc)o(h)f Fv(if)g(the)g(receiv)o(e)h(pattern)f(sp)q (eci\014ed)i(b)o(y)e(the)75 1230 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 1365 y Fm(2.9.1)55 b(Comm)n(unication)17 b(Ob)s(ject)h(Creation)75 1455 y Fv(An)24 b(ob)s(ject)f(for)f(a)i(send)g(op)q(eration)f(is)h (created)g(b)o(y)f(a)g(call)i(to)d Fw(MPI)p 1354 1455 16 2 v 18 w(INIT)p 1489 1455 V 19 w(SEND)p Fv(.)i(A)f(call)i(to)75 1512 y Fw(MPI)p 184 1512 V 18 w(INIT)p 319 1512 V 19 w(RECV)17 b Fv(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 1568 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 1624 y(with)16 b(a)e(remote)h(pro)q(cess.)166 1719 y Fw(MPI)p 275 1719 V 18 w(INIT)p 410 1719 V 19 w(SEND)k(\(handle,)h(bu\013er)p 932 1719 V 18 w(handle,)g(dest,)e(tag,) i(con)o(text,)f(mo)q(de,)g(p)q(ersis-)75 1775 y(tence\))166 1869 y Fv(Creates)14 b(a)h(send)h(comm)o(unication)g(ob)s(ject.)j(P)o (arameters)14 b(are)75 1972 y Fw(OUT)k(handle)24 b Fv(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 2029 y(the)k(call.)75 2132 y Fw(IN)i(bu\013er)p 291 2132 V 18 w(handle)24 b Fv(handle)16 b(to)f(send)h(bu\013er)f(descriptor)75 2235 y Fw(IN)i(dest)23 b Fv(rank)15 b(in)h(con)o(text)e(of)h(destination)h (\(in)o(teger\))75 2338 y Fw(IN)h(tag)24 b Fv(user)15 b(tag)f(for)h(messages)g(sen)o(t)g(with)g(this)h(handle)g(\(in)o (teger\))75 2441 y Fw(IN)h(con)o(text)23 b Fv(handle)17 b(to)d(con)o(text)h(of)f(messages)h(sen)o(t)g(with)h(this)f(handle)75 2544 y Fw(IN)i(mo)q(de)23 b Fv(send)16 b(mo)q(de)f(\(state)f(t)o(yp)q (e,)h(with)h(t)o(w)o(o)e(v)m(alues:)21 b Fk(MPI)p 1188 2544 15 2 v 16 w(REGULAR)15 b Fv(and)g Fk(MPI)p 1547 2544 V 17 w(READY)p Fv(\))75 2647 y Fw(IN)i(p)q(ersistence)23 b Fv(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 Fk(MPI)p 1527 2647 V 17 w(PERSISTENT)21 b Fv(and)189 2704 y Fk(MPI)p 264 2704 V 16 w(EPHEMERAL)p Fv(\))p eop %%Page: 21 26 21 25 bop 75 -100 a Ft(2.9.)34 b(COMMUNICA)l(TION)16 b(HANDLES)995 b Fv(21)166 45 y Fw(MPI)p 275 45 16 2 v 18 w(INIT)p 410 45 V 19 w(RECV)14 b(\(handle,)j(bu\013er)p 931 45 V 18 w(handle,)f(source,)e(tag,)i(con)o(text,)f(p)q (ersistence\))166 194 y Fv(Create)g(a)f(receiv)o(e)i(handle.)22 b(P)o(arameters)13 b(are)75 292 y Fw(OUT)18 b(handle)24 b Fv(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 348 y(the)k(call.)75 446 y Fw(IN)i(bu\013er)p 291 446 V 18 w(handle)24 b Fv(handle)16 b(to)f(receiv)o(e)h(bu\013er)f (descriptor.)75 543 y Fw(IN)i(source)22 b Fv(rank)15 b(in)h(con)o(text)f(of)g(source,)g(or)f(DONTCARE)i(\(in)o(teger\).)75 641 y Fw(IN)h(tag)24 b Fv(user)15 b(tag)f(for)h(messages)g(receiv)o(ed) h(with)g(this)f(handle,)h(or)f(DONTCARE)g(\(in)o(teger\).)75 738 y Fw(IN)i(con)o(text)23 b Fv(handle)17 b(to)d(con)o(text)h(of)f (messages)h(receiv)o(ed)h(with)g(this)g(handle.)75 836 y Fw(IN)h(p)q(ersistence)23 b Fv(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 Fk(MPI)p 1527 836 15 2 v 17 w(PERSISTENT)21 b Fv(and)189 892 y Fk(MPI)p 264 892 V 16 w(EPHEMERAL)p Fv(\))166 990 y(See)16 b(Section)g(2.5.2)d(for)i(a)g(discussion)i(of)d(source,)h(tag)g(and)g (con)o(text.)166 1123 y Fo(Discussion:)33 b Fn(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 1173 y(p)q(eoples)h(seem)e(to)h(desire.)166 1224 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 1433 y Fm(2.9.2)55 b(Comm)n(unication)17 b(Start)75 1556 y Fw(MPI)p 184 1556 16 2 v 18 w(ST)l(AR)l(T\(handle\))75 1689 y(IN)g(handle)24 b Fv(comm)o(unication)16 b(handle)166 1787 y(The)i Fk(MPI)p 337 1787 15 2 v 17 w(START)g Fv(function)h (starts)e(the)h(execution)i(of)d(a)h(comm)o(unication)h(op)q(eration)g (\(send)f(or)75 1843 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 1900 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 1956 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 2013 y(erroneous)15 b(and)g(its)h(outcome)f(is)g(undetermined.) 75 2140 y Fm(2.9.3)55 b(Comm)n(unication)17 b(Completion)75 2263 y Fw(MPI)p 184 2263 16 2 v 18 w(W)-6 b(AIT)17 b(\()h(handle,)g (return)p 730 2263 V 18 w(status)p 884 2263 V 19 w(handle\))75 2396 y(IN)f(handle)24 b Fv(comm)o(unication)16 b(handle)75 2493 y Fw(OUT)i(return)p 357 2493 V 19 w(handle)23 b Fv(handle)17 b(that)d(is)i(asso)q(ciated)f(with)h(return)f(status)f(ob) s(ject.)166 2591 y(A)i(call)i(to)e Fw(MPI)p 467 2591 V 18 w(W)-6 b(AIT)16 b Fv(returns)g(when)h(the)f(send)h(op)q(eration)g (iden)o(ti\014ed)h(b)o(y)f Fk(handle)e Fv(is)i(com-)75 2647 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 2704 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)p eop %%Page: 22 27 22 26 bop 75 -100 a Fv(22)608 b Ft(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fv(op)q(eration.)k (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 102 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 161 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 218 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 274 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 331 y(op)q(eration)j(has)g(completed.)166 390 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 447 y(pleted)f(op)q(eration)g({)f (the)g Fw(return)i(status)e Fv(ob)s(ject.)166 542 y Fw(MPI)p 275 542 16 2 v 18 w(ST)l(A)l(TUS)i(\(handle,)h(\015ag,)g(return)p 974 542 V 18 w(handle\))75 683 y(IN)f(handle)24 b Fv(comm)o(unication) 16 b(handle)75 790 y Fw(OUT)i(\015ag)24 b Fv(logical)75 896 y Fw(OUT)18 b(return)p 357 896 V 19 w(status)p 512 896 V 19 w(handle)23 b Fv(handle)17 b(that)d(is)i(asso)q(ciated)f(with) h(return)f(status)f(ob)s(ject.)166 1003 y(A)21 b(call)h(to)f Fw(MPI)p 481 1003 V 18 w(ST)l(A)l(TUS)g Fv(returns)g Fk(flag=true)f Fv(if)h(the)g(op)q(eration)h(iden)o(ti\014ed)h(b)o(y)e Fk(handle)75 1059 y Fv(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 1116 y(information)14 b(on)f(the)h(completed)h (information.)k(It)14 b(returns)f Fk(flag=false)p Fv(,)g(otherwise.)19 b(In)14 b(suc)o(h)g(case,)75 1172 y(the)h(v)m(alue)i(of)d(the)i(return) f(handle)h(is)g(unde\014ned.)166 1232 y(Implemen)o(tation)g(notes:)166 1291 y(A)e(call)i(to)e Fk(MPI)p 427 1291 15 2 v 16 w(WAIT)g Fv(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 1348 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 1407 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 Fk(MPI)p 1095 1407 V 17 w(WAIT)p Fv(\))f(allo)o(ws)h(the)h(op)q (erating)f(system)g(to)75 1464 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 1520 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 Fk(MPI)p 1152 1520 V 17 w(STATUS)p Fv(\))f(allo)o(ws)i(the)g(user)f (to)g(sc)o(hedule)75 1577 y(alternativ)o(e)g(activities)i(within)f(a)f (single)i(thread)e(of)f(execution.)166 1636 y(The)h(in)o(tended)h (implemen)o(tation)g(of)e Fk(MPI)p 894 1636 V 17 w(STATUS)g Fv(is)h(for)f(that)g(op)q(eration)h(to)f(return)h(as)f(so)q(on)g(as)75 1693 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 1749 y(succeed.)166 1809 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 1865 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) 75 1922 y(the)i(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 1978 y(sp)q(eci\014ed)i Fk(DONTCARE)d Fv(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 2035 y(than)15 b(the)g(receiv)o(e)h(bu\013er.)166 2130 y Fw(MPI)p 275 2130 16 2 v 18 w(RETURN)p 522 2130 V 20 w(ST)l(A)l(T\()h(handle,)h(len,)g(source,)e(tag\))75 2271 y(IN)h(handle)24 b Fv(handle)16 b(to)f(return)g(status)f(ob)s (ject)75 2378 y Fw(OUT)k(len)24 b Fv(di\013erence)c(b)q(et)o(w)o(een)g (length)g(of)f(receiv)o(e)i(bu\013er)e(and)h(length)g(of)g(receiv)o(ed) g(message,)g(in)189 2434 y(b)o(ytes.)e(Th)o(us,)13 b(the)g(v)m(alue)g (returned)g(is)g(zero)g(if)g(the)f(receiv)o(ed)i(message)e(matc)o(hes)g (the)g(the)h(receiv)o(e)189 2491 y(bu\013er,)h(p)q(ositiv)o(e)j(if)e (it)h(is)f(shorter)g(\(in)o(teger\).)75 2597 y Fw(OUT)j(source)23 b Fv(rank)14 b(of)h(message)g(sender)h(in)g(message)f(con)o(text)f (\(in)o(teger\).)75 2704 y Fw(OUT)k(tag)24 b Fv(tag)14 b(of)h(receiv)o(ed)h(message)f(\(in)o(teger\).)p eop %%Page: 23 28 23 27 bop 75 -100 a Ft(2.9.)34 b(COMMUNICA)l(TION)16 b(HANDLES)995 b Fv(23)166 45 y Fo(Discussion:)166 95 y Fn(I)15 b(put)h(the)g(di\013erence)h(b)q(et)o(w)o(een)f(message)f (bu\013er)i(and)e(message)g(length)g(as)h(the)g(v)n(alue)e(returned,)j (rather)75 145 y(than)d(length)g(of)f(receiv)o(ed)i(message,)e(so)h (that)g(it)g(migh)o(t)e(b)q(e)i(easy)g(to)g(test)h(for)f(exact)g(matc)o (h.)166 201 y(The)f(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 258 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 314 y(should)d(b)q(e)g(pro)o(vided,)f(to)h(ease)h(programming)o(.)75 518 y Fm(2.9.4)55 b(Multiple)17 b(Completions)75 603 y Fv(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 660 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 Fk(MPI)p 1318 660 15 2 v 16 w(WAITANY)g Fv(or)f Fk(MPI)p 1646 660 V 17 w(STATUSANY)75 716 y Fv(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 Fk(MPI)p 1694 716 V 17 w(WAITALL)75 773 y Fv(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 865 y Fw(MPI)p 275 865 16 2 v 18 w(W)-6 b(AIT)l(ANY)16 b(\()i(list)p 677 865 V 19 w(of)p 738 865 V 19 w(handles,)g(index,)f(return)p 1263 865 V 18 w(status)p 1417 865 V 19 w(handle\))166 957 y Fv(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 1013 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 1069 y(of)i(that)f(op)q(eration)i(in)g(the)f (ob)s(ject)f(asso)q(ciated)i(with)f(the)g(return)p 1240 1069 14 2 v 17 w(status)p 1377 1069 V 15 w(handle.)27 b(The)18 b(parameters)75 1126 y(are:)75 1225 y Fw(IN)f(list)p 225 1225 16 2 v 20 w(of)p 287 1225 V 19 w(handles)23 b Fv(list)16 b(of)f(handles)h(to)f(comm)o(unication)h(ob)s(jects.)75 1317 y Fw(OUT)i(index)23 b Fv(index)17 b(of)d(handle)j(for)d(op)q (eration)i(that)e(completed)i(\(in)o(teger\).)75 1409 y Fw(OUT)i(return)p 357 1409 V 19 w(status)p 512 1409 V 19 w(handle)23 b Fv(handle)18 b(that)e(is)h(asso)q(ciated)g(with)g (return)g(status)e(ob)s(ject.)24 b(Set)17 b(to)189 1466 y(return)e(status)f(of)h(op)q(eration)g(that)g(completed.)166 1565 y(The)10 b(successful)i(execution)f(of)f Fk(MPI)p 776 1565 15 2 v 17 w(WAITANY\(list)p 1081 1565 V 15 w(of)p 1144 1565 V 17 w(handles,)23 b(index,)g(return)p 1687 1565 V 16 w(status)p 1847 1565 V 17 w(handle\))75 1621 y Fv(is)12 b(equiv)m(alen)o(t)h(to)d(the)h(successful)i(execution)f(of) f Fk(MPI)p 979 1621 V 17 w(WAIT\(handle[i],)22 b(return)p 1522 1621 V 16 w(status)p 1682 1621 V 16 w(handle\))p Fv(,)75 1678 y(where)15 b Fk(i)g Fv(is)h(the)f(v)m(alue)i(returned)e(b) o(y)h Fk(index)e Fv(and)h Fk(handle[i])f Fv(is)i(the)f Fk(i)p Fv(-th)g(handle)i(in)f(the)f(list.)166 1734 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 1791 y(\(sub)s(ject)15 b(to)f(the)i(restrictions)f(on)g(op)q(eration)h (termination)f(order,)g(see)g(Section)h(2.13\).)75 1904 y Fk(MPI)p 150 1904 V 17 w(WAITANY)23 b(\()g(list)p 501 1904 V 17 w(of)p 566 1904 V 17 w(handles,)g(index,)g(return)p 1109 1904 V 16 w(status)p 1269 1904 V 16 w(handle\))75 1960 y Fv(is)147 2049 y Fk({MPI_WAIT_RECV)f(\(handle[1],)g (\\return\\_status\\_handle\);)e(index)k(=)f(0})h(||)f(...)75 2106 y(||)147 2162 y({MPI_WAIT_RECV)f(\(handle[n],)g (\\return\\_status\\_handle\);)e(index)k(=)f(n-1})166 2251 y Fv(\(\\)p Fr(jj)p Fv(")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 2343 y Fw(MPI)p 275 2343 16 2 v 18 w(ST)l(A)l(TUSANY)h(\()i(list)p 739 2343 V 20 w(of)p 801 2343 V 19 w(handles,)f(index,)g(return)p 1325 2343 V 18 w(status)p 1479 2343 V 20 w(handle\))166 2435 y Fv(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 2491 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 Fk(MPI)p 1664 2491 15 2 v 17 w(WAIT)p 1777 2491 V 17 w(ANY)p Fv(.)75 2548 y(In)g(the)f(later)g(case,)g(it)g(returns)g(a)f(v) m(alue)i(of)f(-1)g(in)h Fk(index)e Fv(and)h Fk(return)p 1295 2548 V 16 w(status)p 1455 2548 V 17 w(handle)f Fv(is)h (unde\014ned.)75 2604 y(The)h(parameters)g(are:)75 2704 y Fw(IN)i(list)p 225 2704 16 2 v 20 w(of)p 287 2704 V 19 w(handles)23 b Fv(list)16 b(of)f(handles)h(to)f(comm)o(unication)h (ob)s(jects.)p eop %%Page: 24 29 24 28 bop 75 -100 a Fv(24)608 b Ft(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)75 45 y Fw(OUT)i(index)23 b Fv(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 102 y(ger\).)75 188 y Fw(OUT)g(return)p 357 188 16 2 v 19 w(status)p 512 188 V 19 w(handle)23 b Fv(handle)18 b(that)e(is)h(asso)q (ciated)g(with)g(return)g(status)e(ob)s(ject.)24 b(Set)17 b(to)189 244 y(return)e(status)f(of)h(op)q(eration)g(that)g(completed,) h(if)f(an)o(y;)g(unde\014ned)i(when)e Fk(index)24 b(=)f(-1)p Fv(.)166 360 y Fw(MPI)p 275 360 V 18 w(W)-6 b(AIT)l(ALL\(list)p 624 360 V 20 w(of)p 686 360 V 19 w(handles,)18 b(list)p 978 360 V 19 w(of)p 1039 360 V 19 w(return)p 1204 360 V 18 w(status)p 1358 360 V 20 w(handles\))166 452 y Fv(Blo)q(c)o(ks)13 b(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 508 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 588 y Fw(IN)j(list)p 225 588 V 20 w(of)p 287 588 V 19 w(handles)23 b Fv(list)16 b(of)f(handles)h(to)f(comm)o(unication)h(ob)s(jects.)75 674 y Fw(OUT)i(list)p 280 674 V 20 w(of)p 342 674 V 19 w(return)p 507 674 V 18 w(status)p 661 674 V 19 w(handles)24 b Fv(Must)17 b(ha)o(v)o(e)h(the)g(same)f(length)i(as)f(the)g(\014rst)f (list.)29 b(Eac)o(h)189 731 y(return)15 b(status)g(ob)s(ject)h(is)g (set)g(to)f(the)h(return)g(status)f(of)g(the)h(corresp)q(onding)h(op)q (eration)f(in)h(the)189 787 y(\014rst)d(list.)75 927 y Fp(2.10)70 b(Blo)r(c)n(king)22 b(Comm)n(unication)75 1028 y Fv(Blo)q(c)o(king)f(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 1085 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 1141 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 1198 y(created)15 b(ahead)h(of)e(the)i(call.)166 1254 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:)786 1292 y Fg(")833 1336 y Fr(\000)831 1392 y Fw(R)891 1292 y Fg(#)8 b(")971 1336 y Fw(SEND)968 1392 y(RECV)1140 1292 y Fg(#)166 1476 y Fv(The)15 b(\014rst)g(letter)g(\(v)o(oid)h(or)e Fw(R)p Fv(\))h(indicates)i(the)e(start)f(mo)q(de)i(\(regular)f(or)f(ready\).) 166 1568 y Fw(MPI)p 275 1568 V 18 w(SEND)k(\(bu\013er)p 610 1568 V 18 w(handle,)g(dest,)f(tag,)h(con)o(text\))d Fv(is)75 1679 y Fk(MPI_INIT_SEND\(handle,)21 b(buffer_handle,)h(dest,)h (tag,)g(context,)g(REGULAR,)g(EPHEMERAL\))75 1735 y (MPI_START\(handle\))75 1792 y(MPI_WAIT\(handle,)f(null\))166 1902 y Fw(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 Fv(is)75 2012 y Fk(MPI_INIT_SEND\(handle,)21 b(buffer_handle,)h(dest,)h (tag,)g(context,)g(READY,)g(EPHEMERAL\))75 2069 y(MPI_START\(handle\)) 75 2125 y(MPI_WAIT\(handle,)f(null\))166 2236 y Fw(MPI)p 275 2236 V 18 w(RECV\(bu\013er)p 599 2236 V 18 w(handle,)c(source,)e (tag,)i(con)o(text,)f(return)p 1427 2236 V 19 w(status)p 1582 2236 V 19 w(handle\))f Fv(is)75 2346 y Fk(MPI_INIT_RECV\(handle,) 21 b(buffer_handle,)h(source,)h(tag,)g(context,)g(EPHEMERAL\))75 2403 y(MPI_START\(handle\))75 2459 y(MPI_WAIT\(handle,return_sta)o (tus_han)o(dle\))166 2534 y Fw(Implemen)o(tation)18 b(note:)166 2591 y Fv(While)g(these)f(functions)g(can)g(b)q(e)g(implemen)o(ted)i (via)e(calls)g(to)f(functions)i(that)d(implemen)o(t)j(sub-)75 2647 y(op)q(erations,)d(as)f(describ)q(ed)j(in)f(this)g(subsection,)f (an)g(e\016cien)o(t)h(implemen)o(tation)g(ma)o(y)e(optimize)j(a)o(w)o (a)o(y)75 2704 y(these)e(m)o(ultiple)i(calls,)f(pro)o(vided)g(it)g(do)q (es)f(not)g(c)o(hange)g(the)h(b)q(eha)o(vior)f(of)g(correct)g (programs.)p eop %%Page: 25 30 25 29 bop 75 -100 a Ft(2.11.)34 b(NONBLOCKING)17 b(COMMUNICA)l(TION)840 b Fv(25)75 45 y Fp(2.11)70 b(Non)n(blo)r(c)n(king)22 b(Comm)n(unication)75 147 y Fv(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 Fk(INIT)f Fv(and)75 203 y Fk(START)p Fv(\))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 259 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 Fk(MPI)p 1742 259 15 2 v 17 w(WAIT,)75 316 y(MPI)p 150 316 V 17 w(STATUS,)23 b(MPI)p 430 316 V 16 w(WAITANY,)g(MPI)p 733 316 V 17 w(STATUSANY)p Fv(,)c(or)i Fk(MPI)p 1132 316 V 17 w(WAITALL)p Fv(.)e(Here,)j(to)q(o,)g(a)f(bu\013er)g(ob)s(ject) 75 372 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 429 y(W)l(e)d(use)g(the)g (same)f(naming)h(con)o(v)o(en)o(tion)g(as)f(for)g(blo)q(c)o(king)i(op)q (erations:)20 b(a)13 b(pre\014x)h(of)g Fw(R)g Fv(indicates)75 485 y(the)h Fk(READY)f Fv(mo)q(de.)20 b(In)15 b(addition,)g(a)g (pre\014x)g(of)f Fw(I)g Fv(is)i(used)f(to)f(indicate)i Fl(imme)n(diate)f Fv(\(i.e.,)f(non)o(blo)q(c)o(king\))75 542 y(execution.)166 634 y Fw(MPI)p 275 634 16 2 v 18 w(ISEND)k(\(handle,)g(bu\013er)p 813 634 V 18 w(handle,)g(dest,)f(tag,) g(con)o(text\))f Fv(is)75 752 y Fk(MPI_INIT_SEND\(handle,)21 b(buffer_handle,)h(dest,)h(tag,)g(context,)g(REGULAR,)g(EPHEMERAL\))75 808 y(MPI_START\(handle\))166 926 y Fw(MPI)p 275 926 V 18 w(IRSEND)18 b(\(handle,)g(bu\013er)p 852 926 V 18 w(handle,)g(dest,)f(tag,)h(con)o(text\))d Fv(is)75 1045 y Fk(MPI_INIT_SEND\(handle,)21 b(buffer_handle,)h(dest,)h(tag,)g (context,)g(READY,)g(EPHEMERAL\))75 1101 y(MPI_START\(handle\))166 1219 y Fw(MPI)p 275 1219 V 18 w(IRECV\(handle,)13 b(bu\013er)p 797 1219 V 18 w(handle,)g(source,)f(tag,)h(con)o(text,)g(return)p 1607 1219 V 18 w(status)p 1761 1219 V 19 w(handle\))75 1276 y Fv(is)75 1394 y Fk(MPI_INIT_RECV\(handle,)21 b(buffer_handle,)h (source,)h(tag,)g(context,)g(EPHEMERAL\))75 1450 y(MPI_START\(handle\)) 75 1591 y Fp(2.12)70 b(Blo)r(c)n(k)22 b(Sending)h(Op)r(erations)75 1693 y Fv(The)14 b(most)e(frequen)o(t)i(t)o(yp)q(e)f(of)g(bu\013er)g (used)h(is)g(a)f(con)o(tiguous)h(bu\013er)f(of)g(n)o(umeric)i(storage)d (units,)i(i.e.,)f(a)75 1749 y(con)o(tiguous)h(bu\013er)h(of)e(w)o(ords) h(that)f(ma)o(y)h(con)o(tain)g(either)h(INTEGER,)g(REAL)g(or)e(LOGICAL) j(v)m(alues)75 1806 y(\(in)11 b(F)o(OR)l(TRAN\).)g(In)g(a)f (homogeneous)h(en)o(vironmen)o(t)f(suc)o(h)h(messages)f(can)h(b)q(e)g (used)h(to)d(send)j(arbitrary)75 1862 y(sequences)k(of)f(con)o(tiguous) g(items,)g(where)h(eac)o(h)f(item)h(o)q(ccupies)g(an)g(in)o(teger)f(n)o (um)o(b)q(er)h(of)e(w)o(ords.)166 1919 y(W)l(e)h(sp)q(ecialize)j(the)e (functions)g(in)g(the)f(t)o(w)o(o)f(previous)i(subsections)g(to)f(this) h(case,)f(th)o(us)g(a)o(v)o(oiding)75 1975 y(the)j(need)i(for)e(the)g (creation)h(of)f(a)g(bu\013er)g(descriptor)h(ob)s(ject.)29 b(W)l(e)18 b(use)h(the)g(same)f(naming)h(sc)o(heme)75 2031 y(used)d(in)g(the)f(previous)h(subsections,)g(and)f(app)q(end)i(a) d Fw(B)i Fv(in)g(the)f(function)h(name,)f(for)f Fk(BLOCK)p Fv(.)166 2123 y Fw(MPI)p 275 2123 V 18 w(SENDB)k(\(start,)f(len,)h (dest,)f(tag,)h(con)o(text\))d Fv(is)75 2241 y Fk (MPI_CREATE\(buffer_handle,)20 b(MPI_BUFFER,)j(MPI_EPHEMERAL\))75 2298 y(MPI_ADD\(buffer_handle,)e(start,)i(len,)g(MPI_REAL\))75 2354 y(MPI_SEND)g(\(buffer_handle,)f(len,)h(dest,)g(tag,)g(context\)) 166 2473 y Fw(MPI)p 275 2473 V 18 w(RSENDB)18 b(\(bu\013er)p 686 2473 V 18 w(handle,)g(dest,)f(tag,)h(con)o(text\))e Fv(is)75 2591 y Fk(MPI_CREATE\(buffer_handle,)k(MPI_BUFFER,)j (MPI_EPHEMERAL\))75 2647 y(MPI_ADD\(buffer_handle,)e(start,)i(len,)g (MPI_REAL\))75 2704 y(MPI_RSEND)g(\(buffer_handle,)e(len,)j(dest,)f (tag,)g(context\))p eop %%Page: 26 31 26 30 bop 75 -100 a Fv(26)608 b Ft(CHAPTER)15 b(2.)35 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)166 45 y Fw(MPI)p 275 45 16 2 v 18 w(RECVB\(bu\013er)p 636 45 V 18 w(handle,)i(source,)f (tag,)g(con)o(text,)g(return)p 1464 45 V 19 w(status)p 1619 45 V 19 w(handle\))f Fv(is)75 204 y Fk(MPI_CREATE\(buffer_handle,) k(MPI_BUFFER,)j(MPI_EPHEMERAL\))75 260 y(MPI_ADD\(buffer_handle,)e (start,)i(len,)g(MPI_REAL\))75 317 y(MPI_RECV\(buffer_handle,)e (source,)i(tag,)g(context,)g(return_status_handle\))166 470 y Fw(MPI)p 275 470 V 18 w(ISENDB)18 b(\(handle,)g(bu\013er)p 850 470 V 18 w(handle,)g(dest,)f(tag,)h(con)o(text\))d Fv(is)75 628 y Fk(MPI_CREATE\(buffer_handle,)20 b(MPI_BUFFER,)j (MPI_EPHEMERAL\))75 685 y(MPI_ADD\(buffer_handle,)e(start,)i(len,)g (MPI_REAL\))75 741 y(MPI_ISEND\(handle,)f(buffer_handle,)f(dest,)j (tag,)f(context\))166 894 y Fw(MPI)p 275 894 V 18 w(IRSENDB)18 b(\(handle,)g(bu\013er)p 889 894 V 18 w(handle,)g(dest,)f(tag,)h(con)o (text\))d Fv(is)75 1053 y Fk(MPI_CREATE\(buffer_handle,)20 b(MPI_BUFFER,)j(MPI_EPHEMERAL\))75 1109 y(MPI_ADD\(buffer_handle,)e (start,)i(len,)g(MPI_REAL\))75 1166 y(MPI_IRSEND\(handle,)e (buffer_handle,)h(dest,)i(tag,)f(context\))166 1319 y Fw(MPI)p 275 1319 V 18 w(IRECVB\(handle,)13 b(bu\013er)p 834 1319 V 18 w(handle,)h(source,)d(tag,)j(con)o(text,)e(return)p 1644 1319 V 18 w(status)p 1798 1319 V 19 w(handle\))75 1375 y Fv(is)75 1534 y Fk(MPI_CREATE\(buffer_handle,)20 b(MPI_BUFFER,)j(MPI_EPHEMERAL\))75 1590 y(MPI_ADD\(buffer_handle,)e (start,)i(len,)g(MPI_REAL\))75 1647 y(MPI_IRECV\(handle,)f (buffer_handle,)f(source,)i(tag,)h(context\))166 1840 y Fo(Discussion:)166 1896 y Fn(I)16 b(use)h(w)o(ord)f(coun)o(t,)h (rather)g(than)f(b)o(yte)h(coun)o(t.)26 b(I)16 b(b)q(eliev)o(e)g(w)o (ord)g(messages)h(are)f(m)o(uc)o(h)g(more)f(prev)n(alen)o(t)75 1946 y(than)d(b)o(yte)f(messages,)h(and)f(it's)g(a)h(blessing)f(not)h (to)f(ha)o(v)o(e)h(to)f(m)o(ultiply)e(b)o(y)i(4)g(for)g(eac)o(h)i (message.)j(Byte)d(messages)75 1996 y(are)h(still)f(a)o(v)n(ailable)f (the)j(hard)f(w)o(a)o(y)m(.)j(Also,)c(w)o(ord)h(messages)g(\014t)g(w)o (ell)f(with)g(the)i(F)m(ortran)f(n)o(umeric)f(storage)h(unit)75 2045 y(concept.)166 2101 y(If)f(w)o(e)i(are)f(to)g(add)f(more)g (functions,)h(m)o(y)e(next)i(addition)f(w)o(ould)g(b)q(e)i(a)e(v)o (ector)i(send)g(op)q(eration.)75 2361 y Fp(2.13)70 b(Correctness)75 2556 y Fo(Discussion:)17 b Fn(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 2613 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.) p eop %%Page: 27 32 27 31 bop 75 -100 a Ft(2.13.)34 b(CORRECTNESS)1280 b Fv(27)75 45 y Fm(2.13.1)55 b(Order)75 137 y Fv(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 193 y(if)22 b(pro)q(cess)f(A)h(executes)f(t)o(w)o(o)f (successiv)o(e)j(send)f Fk(start)e Fv(sub)q(op)q(erations,)j(pro)q (cess)f(B)f(executes)h(t)o(w)o(o)75 249 y(successiv)o(e)e(receiv)o(e)g Fk(start)e Fv(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 306 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 362 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 419 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 475 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 535 y(The)c(last)f(paragraph)g(assumes)g(that)g(the)h(send)g Fk(start)e Fv(op)q(erations)i(are)f(ordered)h(b)o(y)f(the)h(program)75 591 y(order)20 b(at)f(pro)q(cess)h(A,)g(and)g(the)g(receiv)o(e)h Fk(start)e Fv(op)q(erations)h(are)f(ordered)i(b)o(y)e(the)h(program)f (order)75 648 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 704 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 760 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 899 y Fm(2.13.2)55 b(Progress)19 b(and)g(F)-5 b(airness)75 990 y Fv(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 1047 y(cesses)d(that)f(execute)h(eac)o(h)g(their)g(o)o(wn)f(program,)g (and)g(the)h Fw(comm)o(unication)j(subsystem)p Fv(.)26 b(The)75 1103 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 1160 y(use.)k(E.g.:)166 1219 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 1276 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 1335 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 1391 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 1448 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 1504 y(altogether.)166 1564 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 1620 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 1677 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 1733 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 1792 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 1849 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 1905 y(are)12 b Fw(safe)h Fv(and)g(will)h(p)q(ort)f(to)f(an)o(y)g(MPI)h (implemen)o(tation.)21 b Fw(Unsafe)13 b Fv(programs)e(ma)o(y)h(execute) i(on)e(some)75 1962 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 2018 y(tation)k(used)g(for)g(the)g(MPI)g(comm)o (unication)h(subsystem.)34 b(Finally)22 b Fw(erroneous)d Fv(programs)g(nev)o(er)75 2075 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 2131 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 2188 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 2244 y(useful)i(error)f(message.\))131 2365 y(1.)22 b(If)15 b(a)g(pro)q(cess)g(executes)h(an)f Fk(INIT)f Fv(op)q(eration,)h(then)g(the)h(op)q(eration)f(ev)o(en)o (tually)h(succeeds,)g(or)e(a)189 2421 y Fl(r)n(esour)n(c)n(e)f(exc)n (eption)f Fv(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 2478 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 2534 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 2591 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 2647 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 Fk(INIT)f Fv(op)q(erations)189 2704 y(will)g(alw)o(a)o(ys)f(b)q(e)h (guaran)o(teed)f(to)f(succeed.)p eop %%Page: 28 33 28 32 bop 75 -100 a Fv(28)613 b Ft(CHAPTER)16 b(2.)29 b(POINT)16 b(TO)f(POINT)h(COMMUNICA)l(TION)131 45 y Fv(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 102 y(ob)s(ject.)j(I.e.)h(correct)15 b Fk(START)f Fv(op)q(erations)i (alw)o(a)o(ys)e(succeed)i(\(ev)o(en)o(tually\).)131 194 y(3.)22 b(A)e(send)h(op)q(eration)f(is)h Fw(enabled)h Fv(if)e(the)h(sending)g(pro)q(cess)g(has)f(issued)i(a)e Fk(COMPLETE)f Fv(op)q(era-)189 251 y(tion)f(and)g(the)f(receiving)j (pro)q(cess)e(has)g(issued)g(a)g Fk(START)f Fv(op)q(eration)h(for)f(a)h (matc)o(hing)f(receiv)o(e.)189 307 y(Symmetrically)l(,)k(a)d(receiv)o (e)i(op)q(eration)f(is)g Fw(enabled)g Fv(if)h(the)e(receiving)j(pro)q (cess)e(has)f(issued)i(a)189 364 y Fk(COMPLETE)10 b Fv(op)q(eration)i (and)f(the)h(sending)g(pro)q(cess)g(has)f(issued)i(a)e Fk(START)g Fv(op)q(eration)g(for)g(a)g(matc)o(h-)189 420 y(ing)19 b(send.)31 b(An)19 b(enabled)h(op)q(eration)e(ma)o(y)g(b)q (ecome)i Fw(disabled)f Fv(either)h(b)q(ecause)f(it)g(completes)189 477 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 533 y(receiv)o(ed)g(b)o(y)f(another)g(receiv)o(e)h(op)q(eration.)189 608 y Fw(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 664 y(nen)o(tly)17 b(disabled.)131 757 y Fv(4.)22 b(A)15 b Fk(FREE)f Fv(op)q(eration)i (alw)o(a)o(ys)e(succeeds)j(\(ev)o(en)o(tually\).)166 859 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 916 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 972 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 1029 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 1176 y Fk(CALL)23 b(MPI_RANK\(rank,)f(context\)) 75 1233 y(IF)i(\(rank.EQ.0\))e(THEN)147 1289 y(CALL)h (MPI_SENDB\(sendbuf,)e(len,)j(1,)f(tag,)h(context\))147 1345 y(CALL)f(MPI_RECVB\(recvbuf,)e(len,)j(1,)f(tag,)h(context\))75 1402 y(ELSE)95 b(!)24 b(rank.EQ.1)147 1458 y(CALL)f (MPI_RECVB\(recvbuf,)e(len,)j(0,)f(tag,)h(context\))147 1515 y(CALL)f(MPI_SENDB\(sendbuf,)e(len,)j(0,)f(tag,)h(context\))75 1571 y(END)f(IF)166 1662 y Fv(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 1821 y Fk(CALL)23 b(MPI_RANK\(rank,)f(context\))75 1878 y(IF)i(\(rank.EQ.0\))e(THEN)147 1934 y(CALL)h(MPI_RECVB\(recvbuf,)e (len,)j(1,)f(tag,)h(context\))147 1991 y(CALL)f(MPI_SENDB\(sendbuf,)e (len,)j(1,)f(tag,)h(context\))75 2047 y(ELSE)95 b(!)24 b(rank.EQ.1)147 2104 y(CALL)f(MPI_RECVB\(recvbuf,)e(len,)j(0,)f(tag,)h (context\))147 2160 y(CALL)f(MPI_SENDB\(sendbuf,)e(len,)j(0,)f(tag,)h (context\))75 2216 y(END)f(IF)166 2319 y Fv(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 2375 y(plete)g(only)g(if)f (the)g(matc)o(hing)g(receiv)o(e)h(of)f(the)g(second)g(pro)q(cessor)g (is)h(executed;)g(the)f(receiv)o(e)h(op)q(eration)75 2432 y(of)f(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 2488 y(receiv)o(e)h(of)f(the)g(\014rst)g(pro)q(cess)g(is)h(executed.)21 b(This)16 b(program)e(will)j(deadlo)q(c)o(k.)166 2545 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 2704 y Fk(CALL)23 b(MPI_RANK\(rank,)f(context\))p eop %%Page: 29 34 29 33 bop 75 -100 a Ft(2.13.)34 b(CORRECTNESS)1280 b Fv(29)75 45 y Fk(IF)24 b(\(rank.EQ.0\))e(THEN)147 102 y(CALL)h(MPI_SENDB\(sendbuf,)e(len,)j(1,)f(tag,)h(context\))147 158 y(CALL)f(MPI_RECVB\(recvbuf,)e(len,)j(1,)f(tag,)h(context\))75 214 y(ELSE)95 b(!)24 b(rank.EQ.1)147 271 y(CALL)f(MPI_SENDB\(sendbuf,)e (len,)j(0,)f(tag,)h(context\))147 327 y(CALL)f(MPI_RECVB\(recvbuf,)e (len,)j(0,)f(tag,)h(context\))75 384 y(END)f(IF)166 547 y Fv(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 603 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 659 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 716 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 772 y Fk(len)h Fv(w)o(ords)f(of)h (data.)166 829 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 885 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 942 y(b)q(ecome)h(safe.)p eop %%Page: 30 35 30 34 bop 75 358 a Fq(Chapter)34 b(3)75 567 y Fx(Collecti)q(v)m(e)42 b(Comm)m(unication)892 791 y Fv(Al)16 b(Geist)876 847 y(Marc)e(Snir)75 998 y Fp(3.1)70 b(In)n(tro)r(duction)75 1102 y Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(Barrier)15 b(across)f(all)j(group)d(mem)o(b)q (ers)143 2704 y Fr(\017)23 b Fv(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(30)p eop %%Page: 31 36 31 35 bop 75 -100 a Ft(3.2.)34 b(GR)o(OUP)15 b(FUNCTIONS)1192 b Fv(31)143 45 y Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fr(\017)23 b Fv(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 Fp(3.2)70 b(Group)24 b(F)-6 b(unctions)75 1289 y Fv(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 Fw(MPI)p 275 1720 16 2 v 18 w(ALLGR)o(OUP\(group\))i Fv(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 Fw(OUT)h(group)23 b Fv(handle)16 b(to)f(descriptor)h(ob)s(ject)e(of)h(initial)i(group.) 166 2025 y Fw(MPI)p 275 2025 V 18 w(RANK\(group,)g(rank\))d Fv(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 Fw(IN)h(group)23 b Fv(group)15 b(handle)75 2298 y Fw(OUT)j(rank)23 b Fv(in)o(teger)166 2422 y Fw(MPI)p 275 2422 V 18 w(GSIZE\(group,)18 b(size\))e Fv(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 Fw(IN)h(group)23 b Fv(group)15 b(handle)75 2695 y Fw(OUT)j(size)23 b Fv(in)o(teger)p eop %%Page: 32 37 32 36 bop 75 -100 a Fv(32)703 b Ft(CHAPTER)15 b(3.)35 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Fp(3.3)70 b(Comm)n(unication)20 b(F)-6 b(unctions)75 147 y Fv(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 Fp(3.4)70 b(Sync)n(hronization)75 616 y Fw(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 Fv(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 Fw(IN)i(group)23 b Fv(group)15 b(handle)166 1058 y Fk(MPI)p 241 1058 15 2 v 17 w(BARRIER\()22 b(group)i(\))15 b Fv(is)75 1145 y Fk(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 Fp(3.5)70 b(Data)23 b(mo)n(v)n(e)f(functions)75 2235 y Fw(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 Fk(MPI)p 241 2448 15 2 v 17 w(BCAST)12 b Fv(broadcasts)f(a)h (message)h(from)e(the)i(pro)q(cess)g(with)g(rank)f Fk(root)g Fv(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 Fk(group,)75 2561 y(and)23 b(root)p Fv(.)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 Fk(root)g Fv(is)g(con)o(tained)75 2617 y(in)h(the)f(bu\013er)g(of)g (the)h(calling)g(pro)q(cess.)75 2704 y Fw(INOUT)i(bu\013er)p 407 2704 16 2 v 18 w(handle)24 b Fv(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: 33 38 33 37 bop 75 -100 a Ft(3.5.)34 b(D)o(A)l(T)l(A)15 b(MO)o(VE)g (FUNCTIONS)1077 b Fv(33)75 45 y Fw(IN)17 b(group)23 b Fv(group)15 b(handle)75 137 y Fw(IN)i(ro)q(ot)23 b Fv(rank)15 b(of)g(broadcast)g(ro)q(ot)f(\(in)o(teger\))166 262 y Fw(MPI)p 275 262 16 2 v 18 w(BCASTC\()j(buf,)g(len,)h(t)o(yp)q(e,)f (group,)f(ro)q(ot)i(\))166 354 y Fk(MPI)p 241 354 15 2 v 17 w(BCASTC)i Fv(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 410 y(pro)q(cesses)16 b(with)f(the)g(same)g(argumen)o(ts)g(for)f Fk(len,)24 b(group)14 b Fv(and)h Fk(root)p Fv(.)75 500 y Fw(INOUT)j(bu\013er)k Fv(Starting)15 b(address)g(of)g(bu\013er)g(\(c)o(hoice)h(t)o(yp)q(e\)) 75 592 y Fw(IN)h(len)23 b Fv(Num)o(b)q(er)16 b(of)f(en)o(tries)g(in)h (bu\013er)g(\(in)o(teger\))75 684 y Fw(IN)h(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er)75 776 y Fw(IN)j(group)23 b Fv(group)15 b(handle)75 868 y Fw(in)j(ro)q(ot)23 b Fv(rank)15 b(of)g(broadcast)f(ro)q(ot)h(\(in)o(teger\))166 957 y Fk(MPI)p 241 957 V 17 w(BCAST\()23 b(buffer)p 569 957 V 16 w(handle,)g(group,)g(root)g(\))15 b Fv(is)75 1047 y Fk(MPI_GSIZE\()22 b(group,)i(&size)f(\);)75 1103 y(MPI_RANK\()g(group,)g(&rank)g(\);)75 1160 y(MPI_IRECV\(handle,)f (buffer_handle,)f(root,)j(tag,)f(group,)g(return_handle\);)75 1216 y(if)h(\(rank==root\))147 1272 y(for)f(\(i=0;)g(i)h(<)g(size;)f (i++\))218 1329 y(MPI_SEND\(buffer_handle,)e(i,)i(tag,)h(group\);)75 1385 y(MPI_WAIT\(handle\))75 1505 y Fw(Circular)18 b(shift)75 1626 y(MPI)p 184 1626 16 2 v 18 w(CSHIFT\()g(in)o(buf,)f(outbuf,)g (group,)g(shift\))166 1718 y Fv(Pro)q(cess)22 b(with)h(rank)g Fk(i)f Fv(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 Fk(i)15 b Fv(+)75 1774 y Fk(shift)p Fv(\))d(mo)q(d)g Fk(group)p 447 1774 15 2 v 17 w(size)p Fv(,)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 1831 y(call)k(with)f(the) f(same)h(v)m(alues)g(for)f Fk(group)p Fv(,)g(and)h Fk(shift)p Fv(.)k(The)c Fk(shift)f Fv(v)m(alue)i(can)f(b)q(e)g(p)q(ositiv)o(e,)g (zero,)f(or)75 1887 y(negativ)o(e.)75 1987 y Fw(IN)i(in)o(buf)23 b Fv(handle)17 b(to)d(input)i(bu\013er)f(descriptor)75 2079 y Fw(IN)i(outbuf)23 b Fv(handle)17 b(to)d(output)h(bu\013er)h (descriptor)75 2171 y Fw(IN)h(group)23 b Fv(handle)16 b(to)f(group)75 2263 y Fw(IN)i(shift)23 b Fv(in)o(teger)166 2399 y Fw(MPI)p 275 2399 16 2 v 18 w(CSHIFT1\()18 b(buf,)f(group,)f (shift\))166 2491 y Fv(Pro)q(cess)f(with)g(rank)f Fk(i)h Fv(sends)g(the)g(data)f(in)h(its)g(bu\013er)g(to)f(pro)q(cess)h(with)g (rank)f(\()p Fk(i)9 b Fv(+)g Fk(shift)p Fv(\))j(mo)q(d)75 2547 y Fk(group)p 198 2547 15 2 v 16 w(size)p Fv(,)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 2604 y(same)g(v)m(alues)h(for)f Fk(group)p Fv(,)f(and)h Fk(shift)p Fv(.)k(The)d Fk(shift)e Fv(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 Fw(INOUT)j(buf)23 b Fv(handle)16 b(to)f(bu\013er)g(descriptor)p eop %%Page: 34 39 34 38 bop 75 -100 a Fv(34)703 b Ft(CHAPTER)15 b(3.)35 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Fw(IN)h(group)23 b Fv(handle)16 b(to)f(group)75 141 y Fw(IN)i(shift)23 b Fv(in)o(teger)166 286 y Fw(MPI)p 275 286 16 2 v 18 w(CSHIFTC\()17 b(in)o(buf,)g(outbuf,)h(len,)f(t)o(yp)q(e,)g(group,)g (shift\))166 379 y Fv(Beha)o(v)o(es)j(lik)o(e)h Fk(MPI)p 509 379 15 2 v 17 w(CSHIFT)p Fv(,)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 435 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 Fk(len,)23 b(group)p Fv(,)14 b(and)h Fk(shift)p Fv(.)75 532 y Fw(IN)i(in)o(buf)23 b Fv(initial)17 b(lo)q(cation)f(of)f(input)h(bu\013er)75 628 y Fw(OUT)i(outbuf)24 b Fv(initial)17 b(lo)q(cation)f(of)f(output)g (bu\013er)75 724 y Fw(IN)i(len)23 b Fv(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 821 y Fw(IN)j(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er) 75 917 y Fw(IN)j(group)23 b Fv(handle)16 b(to)f(group)75 1014 y Fw(IN)i(shift)23 b Fv(in)o(teger)166 1145 y Fw(MPI)p 275 1145 16 2 v 18 w(CSHIFTC1\()17 b(buf,)g(len,)h(t)o(yp)q(e,)f (group,)f(shift\))166 1238 y Fv(Beha)o(v)o(es)i(lik)o(e)h Fk(MPI)p 505 1238 15 2 v 17 w(CSHIFT1)p Fv(,)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 1294 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 Fk(len,)23 b(group)p Fv(,)14 b(and)h Fk(shift)p Fv(.)75 1391 y Fw(INOUT)j(buf)23 b Fv(initial)17 b(lo)q(cation)f(of)f(bu\013er)75 1487 y Fw(IN)i(len)23 b Fv(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 1584 y Fw(IN)j(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er)75 1680 y Fw(IN)j(group)23 b Fv(handle)16 b(to)f(group)75 1776 y Fw(IN)i(shift)23 b Fv(in)o(teger)166 1873 y Fk(MPI)p 241 1873 V 17 w(CSHIFT\()g(inbuf,)g (outbuf,)g(group,)g(shift\))14 b Fv(is)75 1970 y Fk(MPI_GSIZE\()22 b(group,)i(&size)f(\);)75 2026 y(MPI_RANK\()g(group,)g(&rank)g(\);)75 2083 y(MPI_ISEND\()f(handle,)h(inbuf,)g(mod\(rank+shift,)f(size\),)h (tag,)h(group\);)75 2139 y(MPI_RECV\()f(outbuf,)g (mod\(rank-shift,size\),)e(tag,)i(group,)g(return_handle\))75 2195 y(MPI_WAIT\(handle\);)75 2319 y Fw(End-o\013)18 b(shift)75 2442 y(MPI)p 184 2442 16 2 v 18 w(EOSHIFT\()g(in)o(buf,)f (outbuf,)h(group,)f(shift\))166 2534 y Fv(Pro)q(cess)f(with)g(rank)g Fk(i)p Fv(,)f(max\()p Fk(0)p Fu(;)8 b Fr(\000)p Fk(shift)p Fv(\))k Fr(\024)i Fk(i)g Fu(<)g Fk(min)p Fv(\()p Fk(size)p Fu(;)8 b Fk(size)g Fr(\000)j Fk(shift)p Fv(\),)k(sends)i(the)f(data)75 2591 y(in)d(its)f(input)i(bu\013er)e(to)g(pro)q(cess)g(with)h(rank)f Fk(i+)23 b(shift)p Fv(,)12 b(who)g(receiv)o(es)h(the)f(data)g(in)h(its) f(output)g(bu\013er.)75 2647 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 2704 y(mak)o(e)c(the)g(call)h (with)g(the)f(same)g(v)m(alues)h(for)f Fk(group)p Fv(,)f(and)h Fk(shift)p Fv(.)p eop %%Page: 35 40 35 39 bop 75 -100 a Ft(3.5.)34 b(D)o(A)l(T)l(A)15 b(MO)o(VE)g (FUNCTIONS)1077 b Fv(35)75 45 y Fw(IN)17 b(in)o(buf)23 b Fv(handle)17 b(to)d(input)i(bu\013er)f(descriptor)75 142 y Fw(IN)i(outbuf)23 b Fv(handle)17 b(to)d(output)h(bu\013er)h (descriptor)75 239 y Fw(IN)h(group)23 b Fv(handle)16 b(to)f(group)75 337 y Fw(IN)i(shift)23 b Fv(in)o(teger)166 482 y Fw(MPI)p 275 482 16 2 v 18 w(EOSHIFT1\()18 b(buf,)f(group,)g (shift\))166 575 y Fv(Pro)q(cess)f(with)g(rank)g Fk(i)p Fv(,)f(max\()p Fk(0)p Fu(;)8 b Fr(\000)p Fk(shift)p Fv(\))k Fr(\024)i Fk(i)g Fu(<)g Fk(min)p Fv(\()p Fk(size)p Fu(;)8 b Fk(size)g Fr(\000)j Fk(shift)p Fv(\),)k(sends)i(the)f(data)75 632 y(in)g(its)f(bu\013er)g(to)f(pro)q(cess)h(with)h(rank)e Fk(i+)24 b(shift)p Fv(,)14 b(who)g(receiv)o(es)i(the)f(data)g(in)g(the) g(same)g(bu\013er.)20 b(The)75 688 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 745 y(the)g(call)i(with)e (the)g(same)g(v)m(alues)i(for)d Fk(group)p Fv(,)g(and)i Fk(shift)p Fv(.)75 855 y Fw(INOUT)i(buf)23 b Fv(handle)16 b(to)f(bu\013er)g(descriptor)75 952 y Fw(IN)i(group)23 b Fv(handle)16 b(to)f(group)75 1049 y Fw(IN)i(shift)23 b Fv(in)o(teger)166 1195 y Fw(MPI)p 275 1195 V 18 w(EOSHIFTC\()18 b(in)o(buf,)f(outbuf,)h(len,)f(t)o(yp)q(e,)g(group,)g(shift\))166 1288 y Fv(Beha)o(v)o(es)h(lik)o(e)h Fk(MPI)p 505 1288 15 2 v 17 w(EOSHIFT)p Fv(,)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 1344 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 Fk(len,)23 b(group)p Fv(,)14 b(and)h Fk(shift)p Fv(.)75 1441 y Fw(IN)i(in)o(buf)23 b Fv(initial)17 b(lo)q(cation)f(of)f (input)h(bu\013er)75 1539 y Fw(OUT)i(outbuf)24 b Fv(initial)17 b(lo)q(cation)f(of)f(output)g(bu\013er)75 1636 y Fw(IN)i(len)23 b Fv(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 1733 y Fw(IN)j(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er)75 1830 y Fw(IN)j(group)23 b Fv(handle)16 b(to)f(group)75 1927 y Fw(IN)i(shift)23 b Fv(in)o(teger)166 2060 y Fw(MPI)p 275 2060 16 2 v 18 w(EOSHIFTC1\()18 b(buf,)f(len,)h(t)o(yp)q(e,)e(group,)h(shift\))166 2153 y Fv(Beha)o(v)o(es)h(lik)o(e)g Fk(MPI)p 504 2153 15 2 v 17 w(EOSHIFT1)p Fv(,)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 2209 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 Fk(len,)23 b(group)p Fv(,)14 b(and)h Fk(shift)p Fv(.)75 2306 y Fw(INOUT)j(buf)23 b Fv(initial)17 b(lo)q(cation)f(of)f (bu\013er)75 2403 y Fw(IN)i(len)23 b Fv(n)o(um)o(b)q(er)16 b(of)f(en)o(tries)g(in)h(bu\013er)75 2500 y Fw(IN)h(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er)75 2598 y Fw(IN)j(group)23 b Fv(handle)16 b(to)f(group)75 2695 y Fw(IN)i(shift)23 b Fv(in)o(teger)p eop %%Page: 36 41 36 40 bop 75 -100 a Fv(36)708 b Ft(CHAPTER)15 b(3.)30 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Fw(Gather)75 166 y(MPI)p 184 166 16 2 v 18 w(GA)l(THER\()i(in)o(buf,)f(list)p 684 166 V 20 w(of)p 746 166 V 19 w(outbufs,)g(group,)g(ro)q(ot,)g (return)p 1404 166 V 18 w(status\))166 258 y Fv(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 315 y(ro)q(ot)d(pro)q (cess.)19 b(The)14 b(ro)q(ot)f(pro)q(cess)h(places)g(all)h(the)f (incoming)h(messages)e(in)h(the)g(lo)q(cation)g(sp)q(eci\014ed)i(b)o(y) 75 371 y(the)g(output)f(bu\013er)h(handle)h(corresp)q(onding)g(to)e (the)h(sender's)g(rank.)21 b(F)l(or)15 b(example,)h(the)g(ro)q(ot)f (places)75 428 y(the)f(data)g(from)f(pro)q(cess)h(with)h(rank)f(3)f(in) i(the)g(lo)q(cation)f(sp)q(eci\014ed)j(b)o(y)d(the)g(third)h(bu\013er)f (descriptor)g(in)75 484 y(the)i(list)g(of)f(outbufs.)20 b(The)c(list)p 620 484 14 2 v 17 w(of)p 674 484 V 16 w(outbufs)g(argumen)o(t)e(is)i(ignored)g(for)f(all)i(non-ro)q(ot)e(pro) q(cesses.)21 b(The)75 541 y(routine)c(is)h(called)g(b)o(y)f(all)g(mem)o (b)q(ers)g(of)g(group)f(using)i(the)e(same)h(argumen)o(ts)f(for)g Fk(group)p Fv(,)g(and)h Fk(root)p Fv(.)75 597 y(The)e(input)i(bu\013er) e(of)g(eac)o(h)g(pro)q(cess)g(ma)o(y)g(ha)o(v)o(e)g(a)f(di\013eren)o(t) i(length.)75 690 y Fw(IN)h(in)o(buf)23 b Fv(handle)17 b(to)d(input)i(bu\013er)f(descriptor)75 783 y Fw(IN)i(list)p 225 783 16 2 v 20 w(of)p 287 783 V 19 w(outbufs)23 b Fv(list)16 b(of)f(bu\013er)g(descriptor)g(handles)i(\(ro)q(ot\))75 877 y Fw(IN)g(group)23 b Fv(group)15 b(handle)75 970 y Fw(IN)i(ro)q(ot)23 b Fv(rank)15 b(of)g(receiving)i(pro)q(cess)e(\(in) o(teger\))75 1064 y Fw(OUT)j(return)p 357 1064 V 19 w(status)23 b Fv(return)15 b(status)f(handle)166 1239 y Fo(Discussion:)47 b Fn(Do)17 b(w)o(e)h(w)o(an)o(t)f(the)g(collectiv)o(e)h(routines)g(to)f (ha)o(v)o(e)g(return)h(status)g(handles?)29 b(And)17 b(if)g(so)75 1296 y(what)d(information)d(do)i(w)o(e)i(w)o(an)o(t)e(the) h(handle)g(to)g(b)q(e)g(able)g(to)g(return?)166 1470 y Fw(MPI)p 275 1470 V 18 w(GA)l(THER)o(C\()j(in)o(buf,)g(outbuf,)h (inlen,)g(t)o(yp)q(e,)f(group,)f(ro)q(ot\))166 1562 y Fk(MPI)p 241 1562 15 2 v 17 w(GATHERC)g Fv(b)q(eha)o(v)o(es)i(lik)o(e)h Fk(MPI)p 772 1562 V 17 w(GATHER)e Fv(restricted)h(to)f(blo)q(c)o(k)h (bu\013ers,)g(and)g(with)g(the)g(addi-)75 1619 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 1675 y(pro)o(vided)f(the)f(same)g(v)m(alues)i(for)d Fk(inlen,)23 b(group)p Fv(,)14 b(and)i Fk(root)e Fv(.)75 1768 y Fw(IN)j(in)o(buf)23 b Fv(\014rst)15 b(v)m(ariable)h(of)f(input)h(bu\013er)g(\(c)o(hoice\)) 75 1862 y Fw(OUT)i(outbuf)24 b Fv(\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 (\(matc)o(hes)f(t)o(yp)q(e\))75 1955 y Fw(IN)j(inlen)24 b Fv(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 2049 y Fw(IN)i(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er)75 2142 y Fw(IN)j(group)23 b Fv(group)15 b(handle)75 2235 y Fw(IN)i(ro)q(ot)23 b Fv(rank)15 b(of)g(receiving)i(pro)q(cess)e(\(in)o(teger\))166 2328 y Fk(MPI)p 241 2328 V 17 w(GATHERC\()22 b(inbuf,)h(outbuf,)g (inlen,)g(type,)h(group,)f(root\))38 b Fv(is)75 2421 y Fk(MPI_GSIZE\()22 b(&size,)i(group\);)75 2478 y(MPI_RANK\()f(&rank,)g (group\);)75 2534 y(MPI_ISENDC\(handle,)e(inbuf,)i(inlen,)g(root,)h (tag,)f(group\);)75 2591 y(if)h(\(rank==root\))147 2647 y(for)f(\(i=0;)g(i)h(<)g(size;)f(i++\))147 2704 y({)p eop %%Page: 37 42 37 41 bop 75 -100 a Ft(3.5.)29 b(D)o(A)l(T)l(A)15 b(MO)o(VE)g (FUNCTIONS)1082 b Fv(37)218 45 y Fk(MPI_RECVC\(outbuf,)22 b(inlen,)h(i,)g(tag,)h(group,)f(return_status\);)218 102 y(outbuf)g(+=)h(inlen;)147 158 y(})75 214 y(MPI_WAIT\(handle\);)75 336 y Fw(Scatter)75 458 y(MPI)p 184 458 16 2 v 18 w(SCA)l(TTER\()18 b(list)p 557 458 V 20 w(of)p 619 458 V 19 w(in)o(bufs,)e(outbuf,)i (group,)f(ro)q(ot,)g(return)p 1425 458 V 19 w(status\))166 550 y Fv(The)e(ro)q(ot)f(pro)q(cess)i(sends)f(the)g(con)o(ten)o(t)g(of) f(its)i Fk(i)p Fv(-th)f(input)h(bu\013er)f(to)f(the)h(pro)q(cess)g (with)h(rank)f Fk(i)p Fv(;)75 607 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 663 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 Fk(group)p Fv(,)g(and)75 720 y Fk(root)p Fv(.)75 815 y Fw(IN)k(list)p 225 815 V 20 w(of)p 287 815 V 19 w(in)o(bufs)22 b Fv(list)16 b(of)f(bu\013er)g(descriptor)h (handles)75 910 y Fw(IN)h(outbuf)23 b Fv(bu\013er)16 b(descriptor)f(handle)75 1005 y Fw(IN)i(group)23 b Fv(handle)75 1100 y Fw(IN)17 b(ro)q(ot)23 b Fv(rank)15 b(of)g(sending)i(pro)q(cess)e (\(in)o(teger\))75 1195 y Fw(OUT)j(return)p 357 1195 V 19 w(status)23 b Fv(return)15 b(status)f(handle)166 1290 y Fk(MPI)p 241 1290 15 2 v 17 w(SCATTER\()22 b(list)p 568 1290 V 17 w(of)p 633 1290 V 17 w(inbufs,)h(outbuf,)g(group,)g (root,)g(return)p 1486 1290 V 16 w(status\))15 b Fv(is)75 1385 y Fk(MPI_GSIZE\()22 b(group,)i(&size)f(\);)75 1441 y(MPI_RANK\()g(group,)g(&rank)g(\);)75 1498 y(MPI_IRECV\(handle,)f (outbuf,)g(root,)i(tag,)f(group\);)75 1554 y(if)h(\(rank=root\))147 1611 y(for)f(\(i=0;)g(i)h(<)g(size;)f(i++\))218 1667 y(MPI_SEND\(inbuf[i],)f(i,)h(tag,)g(group\);)75 1724 y(MPI_WAIT\(handle,)f(return_status\);)166 1854 y Fw(MPI)p 275 1854 16 2 v 18 w(SCA)l(TTER)o(C\()17 b(in)o(buf,)g(outbuf,)h(len,)f (t)o(yp)q(e,)g(group,)g(ro)q(ot\))166 1946 y Fk(MPI)p 241 1946 15 2 v 17 w(SCATTERC)e Fv(b)q(eha)o(v)o(es)i(lik)o(e)h Fk(MPI)p 793 1946 V 17 w(SCATTER)e Fv(restricted)h(to)f(blo)q(c)o(k)i (bu\013ers,)f(and)g(with)g(the)g(ad-)75 2003 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 2059 y(of)e(the)h(ro)q(ot) e(pro)q(cess)i(is)g(partitioned)g(in)o(to)g Fk(n)f Fv(consecutiv)o(e)i (blo)q(c)o(ks,)f(eac)o(h)g(consisting)g(of)f Fk(len)g Fv(w)o(ords.)75 2116 y(The)d Fk(i)p Fv(-th)h(blo)q(c)o(k)f(is)h(sen)o (t)f(to)g(the)g Fk(i)p Fv(-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 2172 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 Fk(group,)23 b(len)p Fv(,)75 2229 y(and)15 b Fk(root)p Fv(.)75 2324 y Fw(IN)i(in)o(buf)23 b Fv(\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 2419 y Fw(OUT)j(outbuf)24 b Fv(\014rst)14 b(en)o(try)h(in)h(output)f(bu\013er)g(\(c)o(hoice\).)75 2514 y Fw(IN)i(len)23 b Fv(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 2609 y Fw(IN)h(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er) 75 2704 y Fw(IN)j(group)23 b Fv(handle)p eop %%Page: 38 43 38 42 bop 75 -100 a Fv(38)708 b Ft(CHAPTER)15 b(3.)30 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Fw(IN)h(ro)q(ot)23 b Fv(rank)15 b(of)g(sending)i(pro)q(cess)e(\(in)o(teger\))166 142 y Fk(MPI)p 241 142 15 2 v 17 w(SCATTERC\()22 b(inbuf,)h(outbuf,)g (outlen,)g(type,)g(group,)g(root\))39 b Fv(is)75 239 y Fk(MPI_GSIZE\()22 b(&size,)i(group\);)75 295 y(MPI_RANK\()f(&rank,)g (group\);)75 352 y(MPI_IRECVC\()f(handle,)h(outbuf,)g(outlen,)g(type,)g (root,)g(tag,)h(group,)f(return_handle\);)75 408 y(if)h(\(rank=root\)) 147 465 y(for)f(\(i=0;)g(i)h(<)g(size;)f(i++\))147 521 y({)218 578 y(MPI_SENDC\(inbuf,)f(outlen,)h(type,)g(i,)h(tag,)f (group\);)218 634 y(inbuf)g(+=)h(outlen;)147 690 y(})75 747 y(MPI_WAIT\(handle\);)75 871 y Fw(All-to-all)d(scatter)75 993 y(MPI)p 184 993 16 2 v 18 w(ALLSCA)l(TTER\()d(list)p 659 993 V 20 w(of)p 721 993 V 19 w(in)o(bufs,)f(list)p 978 993 V 20 w(of)p 1040 993 V 19 w(outbufs,)g(group,)g(return)p 1571 993 V 18 w(status\))166 1086 y Fv(Eac)o(h)h(pro)q(cess)g(in)h(the) f(group)f(sends)i(its)f Fk(i)p Fv(-th)g(bu\013er)g(in)h(its)f(input)h (bu\013er)f(list)g(to)g(the)g(pro)q(cess)75 1142 y(with)i(rank)g Fk(i)g Fv(\(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 1199 y(sp)q(eci\014ed)h(b)o(y)d(output)h(bu\013er)f(handle)i(corresp)q (onding)f(to)f(the)h(rank)f(of)g(the)h(sender.)31 b(F)l(or)17 b(example,)75 1255 y(eac)o(h)d(pro)q(cess)h(places)g(the)f(data)f(from) h(pro)q(cess)g(with)h(rank)f(3)g(in)h(the)f(lo)q(cation)h(sp)q (eci\014ed)h(b)o(y)e(the)g(third)75 1312 y(bu\013er)j(descriptor)g(in)h (the)f(list)h(of)e(outbufs.)25 b(The)17 b(routine)g(is)h(called)g(b)o (y)f(all)h(mem)o(b)q(ers)f(of)f(the)h(group)75 1368 y(using)f(the)f (same)g(argumen)o(ts)f(for)h Fk(group)p Fv(.)75 1465 y Fw(IN)i(list)p 225 1465 V 20 w(of)p 287 1465 V 19 w(in)o(bufs)22 b Fv(list)16 b(of)f(bu\013er)g(descriptor)h(handles)75 1561 y Fw(IN)h(list)p 225 1561 V 20 w(of)p 287 1561 V 19 w(outbufs)23 b Fv(list)16 b(of)f(bu\013er)g(descriptor)g(handles)75 1658 y Fw(IN)i(group)23 b Fv(handle)75 1754 y Fw(OUT)18 b(return)p 357 1754 V 19 w(status)23 b Fv(return)15 b(status)f(handle) 166 1886 y Fw(MPI)p 275 1886 V 18 w(ALLSCA)l(TTER)o(C\()k(in)o(buf,)f (outbuf,)g(len,)h(t)o(yp)q(e,)f(group\))166 1979 y Fk(MPI)p 241 1979 15 2 v 17 w(ALLSCATTERC)g Fv(b)q(eha)o(v)o(es)i(lik)o(e)g Fk(MPI)p 870 1979 V 17 w(ALLSCATTER)e Fv(restricted)i(to)f(blo)q(c)o(k) i(bu\013ers,)f(and)g(with)75 2035 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 2092 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 Fk(n)g Fv(consecutiv)o(e)i(blo)q(c)o(ks,)f (eac)o(h)75 2148 y(consisting)19 b(of)f Fk(len)g Fv(w)o(ords.)29 b(The)18 b Fk(i)p Fv(-th)g(blo)q(c)o(k)i(is)e(sen)o(t)h(to)e(the)i Fk(it)p Fv(-th)f(pro)q(cess)g(in)i(the)e(group.)29 b(Eac)o(h)75 2205 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 2261 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 2318 y(argumen)o(ts)h(for)h Fk(group)p Fv(,)f(and)h Fk(len)p Fv(.)75 2414 y Fw(IN)i(in)o(buf)23 b Fv(\014rst)15 b(en)o(try)g(in)h(input)g(bu\013er)f(\(matc)o(hes)g(t)o (yp)q(e\).)75 2511 y Fw(OUT)j(outbuf)24 b Fv(\014rst)14 b(en)o(try)h(in)h(output)f(bu\013er)g(\(matc)o(hes)g(t)o(yp)q(e\).)75 2607 y Fw(IN)i(len)23 b Fv(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 2704 y Fw(IN)i(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er)p eop %%Page: 39 44 39 43 bop 75 -100 a Ft(3.5.)34 b(D)o(A)l(T)l(A)15 b(MO)o(VE)g (FUNCTIONS)1077 b Fv(39)75 45 y Fw(IN)17 b(group)23 b Fv(handle)166 140 y Fk(MPI)p 241 140 15 2 v 17 w(ALLSCATTERC\()f (inbuf,)h(outbuf,)g(len,)g(type,)g(group\))15 b Fv(is)75 236 y Fk(MPI_GSIZE\()22 b(group,)i(&size)f(\);)75 292 y(MPI_RANK\()g(group,)g(&rank)g(\);)75 349 y(for)g(\(i=0;)h(i)f(<)h (rank;)f(i++\))147 405 y({)170 462 y(MPI_IRECVC\(recv_handles[i],)e (outbuf,)i(len,)g(type,)g(tag,)g(group,)g(return_handle\);)170 518 y(outbuf)g(+=)h(len;)147 575 y(})75 631 y(for)f(\(i=0;)h(i)f(<)h (size;)f(i++\))147 688 y({)170 744 y(MPI_ISENDC\(send_handle[i],)e (inbuf,)i(len,)g(type,)g(i,)h(tag,)f(group\);)170 800 y(inbuf)h(+=)f(len;)147 857 y(})75 913 y(MPI_WAITALL\(send_handle\);)75 970 y(MPI_WAITALL\(recv_handle\);)75 1092 y Fw(All-to-all)e(broadcast) 75 1214 y(MPI)p 184 1214 16 2 v 18 w(ALLCAST\()d(in)o(buf,)f(list)p 702 1214 V 20 w(of)p 764 1214 V 19 w(outbufs,)g(group,)g(return)p 1295 1214 V 18 w(status\))166 1306 y Fv(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 1363 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 1419 y(corresp)q(onding)19 b(to)d(the)i(rank)f(of)h(the)f(sender.)28 b(F)l(or)17 b(example,)h(eac)o(h)g(pro)q(cess)g(places)g(the)g(data)f (from)75 1475 y(pro)q(cess)j(with)f(rank)g(3)g(in)h(the)g(lo)q(cation)g (sp)q(eci\014ed)h(b)o(y)e(the)h(third)g(bu\013er)f(descriptor)h(in)g (the)f(list)h(of)75 1532 y(outbufs.)25 b(The)17 b(routine)h(is)f (called)i(b)o(y)e(all)h(mem)o(b)q(ers)f(of)f(the)h(group)g(using)h(the) f(same)f(argumen)o(ts)h(for)75 1588 y Fk(group)p Fv(.)75 1684 y Fw(IN)g(in)o(buf)23 b Fv(bu\013er)15 b(descriptor)h(handle)g (for)f(input)h(bu\013er)75 1779 y Fw(IN)h(list)p 225 1779 V 20 w(of)p 287 1779 V 19 w(outbufs)23 b Fv(list)16 b(of)f(bu\013er)g(descriptor)g(handles)75 1874 y Fw(IN)i(group)23 b Fv(handle)75 1969 y Fw(OUT)18 b(return)p 357 1969 V 19 w(status)23 b Fv(return)15 b(status)f(handle)166 2100 y Fw(MPI)p 275 2100 V 18 w(ALLCASTC\()j(in)o(buf,)h(outbuf,)f(len,)h(t) o(yp)q(e,)e(group\))166 2192 y Fk(MPI)p 241 2192 15 2 v 17 w(ALLCASTC)f Fv(b)q(eha)o(v)o(es)i(lik)o(e)h Fk(MPI)p 793 2192 V 17 w(ALLCAST)e Fv(restricted)h(to)f(blo)q(c)o(k)i (bu\013ers,)f(and)g(with)g(the)g(ad-)75 2249 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 2305 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 2361 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 2418 y(same)g(argumen)o(ts)f(for)h Fk(group)p Fv(,)f(and)h Fk(len)p Fv(.)75 2513 y Fw(IN)i(in)o(buf)23 b Fv(\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 2608 y Fw(OUT)j(outbuf)24 b Fv(\014rst)14 b(en)o(try)h(in)h(output)f(bu\013er)g(\(c)o(hoice\).)75 2704 y Fw(IN)i(len)23 b Fv(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(\).)p eop %%Page: 40 45 40 44 bop 75 -100 a Fv(40)703 b Ft(CHAPTER)15 b(3.)35 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Fw(IN)h(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er)75 139 y Fw(IN)j(group)23 b Fv(group)15 b(handle)166 233 y Fk(MPI)p 241 233 15 2 v 17 w(ALLCASTC\()22 b(inbuf,)h(outbuf,)g(len,)h(type,)f(group\))14 b Fv(is)75 327 y Fk(MPI_GSIZE\()22 b(group,)i(&size)f(\);)75 383 y(MPI_RANK\()g(group,)g(&rank)g(\);)75 440 y(for)g(\(i=0;)h(i)f(<)h (rank;)f(i++\))147 496 y({)170 553 y(MPI_IRECVC\(recv_handles[i],)e (outbuf,)i(len,)g(type,)g(tag,)g(group,)g(return_handle\);)170 609 y(outbuf)g(+=)h(len;)147 665 y(})75 722 y(for)f(\(i=0;)h(i)f(<)h (size;)f(i++\))147 778 y({)170 835 y(MPI_ISENDC\(send_handle[i],)e (inbuf,)i(len,)g(type,)g(i,)h(tag,)f(group\);)147 891 y(})75 948 y(MPI_WAITALL\(send_handle\);)75 1004 y (MPI_WAITALL\(recv_handle\);)75 1148 y Fp(3.6)70 b(Global)22 b(Compute)g(Op)r(erations)75 1249 y Fw(Reduce)75 1370 y(MPI)p 184 1370 16 2 v 18 w(REDUCE\()d(in)o(buf,)e(outbuf,)g(group,)g (ro)q(ot,)h(op\))166 1462 y Fv(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 1519 y(the)f(op)q(eration)g Fk(op)p Fv(,)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 1575 y(rank)f Fk(root)p Fv(.)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 1632 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 1688 y(op)q(eration)i(is)g Fk(max)g Fv(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(=)75 1744 y(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 1801 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 Fk(op)p Fv(.)19 b(The)75 1857 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 1914 y(the)g(t)o(yp)q(e)g(of)g(the)g (result)h(of)e Fk(op)p Fv(.)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 1970 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 2027 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 2083 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 2140 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 2196 y(dep)q(enden)o(t.\))166 2253 y(The)16 b(op)q(eration)g(de\014ned)i(b)o (y)e Fk(op)f Fv(is)i(asso)q(ciativ)o(e)f(and)g(comm)o(utativ)o(e,)f (and)i(the)f(implemen)o(tation)75 2309 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 2365 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 Fk(group,)75 2422 y(root)d Fv(and)g Fk(op)p Fv(.)75 2516 y Fw(IN)i(in)o(buf)23 b Fv(handle)17 b(to)d(input)i(bu\013er)75 2610 y Fw(IN)h(outbuf)23 b Fv(handle)17 b(to)d(output)h(bu\013er)h({)f (signi\014can)o(t)h(only)f(at)g(ro)q(ot)75 2704 y Fw(IN)i(group)23 b Fv(handle)16 b(to)f(group)p eop %%Page: 41 46 41 45 bop 75 -100 a Ft(3.6.)34 b(GLOBAL)16 b(COMPUTE)f(OPERA)l(TIONS) 883 b Fv(41)75 45 y Fw(IN)17 b(ro)q(ot)23 b Fv(rank)15 b(of)g(ro)q(ot)g(pro)q(cess)g(\(in)o(teger\))75 138 y Fw(IN)i(op)23 b Fv(op)q(eration)166 229 y(The)18 b(bu\013er)g (descriptor)g(con)o(tains)g(data)g(t)o(yp)q(e)g(information)g(so)f (that)h(the)g(correct)f(form)g(of)h(the)75 285 y(op)q(eration)d(can)h (b)q(e)g(p)q(erformed.)k(W)l(e)15 b(list)h(b)q(elo)o(w)g(the)f(op)q (erations)g(whic)o(h)h(are)f(supp)q(orted.)75 376 y Fw(MPI)p 184 376 16 2 v 18 w(MAX)21 b Fv(maxim)o(um)75 469 y Fw(MPI)p 184 469 V 18 w(MIN)h Fv(minim)o(um)75 562 y Fw(MPI)p 184 562 V 18 w(MIN)g Fv(minim)o(um)75 654 y Fw(MPI)p 184 654 V 18 w(SUM)h Fv(sum)75 747 y Fw(MPI)p 184 747 V 18 w(PR)o(OD)g Fv(pro)q(duct)75 840 y Fw(MPI)p 184 840 V 18 w(AND)f Fv(and)16 b(\(logical)g(or)e(bit-wise)j(in)o(teger\)) 75 932 y Fw(MPI)p 184 932 V 18 w(OR)23 b Fv(or)15 b(\(logical)h(or)f (bit-wise)h(in)o(teger\))75 1025 y Fw(MPI)p 184 1025 V 18 w(X)o(OR)22 b Fv(xor)15 b(\(logical)h(or)f(bit-wise)h(in)o (teger\))75 1118 y Fw(MPI)p 184 1118 V 18 w(MAXLOC)22 b Fv(rank)15 b(of)g(pro)q(cess)g(with)h(maxim)o(um)f(v)m(alue)75 1210 y Fw(MPI)p 184 1210 V 18 w(MINLOC)23 b Fv(rank)14 b(of)h(pro)q(cess)h(with)f(minim)o(um)i(v)m(alue)166 1337 y Fw(MPI)p 275 1337 V 18 w(REDUCEC\()h(in)o(buf,)f(outbuf,)h(len,) f(t)o(yp)q(e,)g(group,)g(ro)q(ot,)h(op\))166 1429 y Fv(Is)d(same)g(as)g Fk(MPI)p 460 1429 15 2 v 17 w(REDUCE)p Fv(,)f(restricted)h(to)g(a)g (blo)q(c)o(k)h(bu\013er.)75 1520 y Fw(IN)h(in)o(buf)23 b Fv(\014rst)15 b(lo)q(cation)h(in)g(input)g(bu\013er)75 1612 y Fw(OUT)i(outbuf)24 b Fv(\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 1705 y Fw(IN)i(len)23 b Fv(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 1798 y Fw(IN)i(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er) 75 1890 y Fw(IN)j(group)23 b Fv(handle)16 b(to)f(group)75 1983 y Fw(IN)i(ro)q(ot)23 b Fv(rank)15 b(of)g(ro)q(ot)g(pro)q(cess)g (\(in)o(teger\))75 2076 y Fw(IN)i(op)23 b Fv(op)q(eration)166 2202 y Fw(MPI)p 275 2202 16 2 v 18 w(USER)p 435 2202 V 20 w(REDUCE\()18 b(in)o(buf,)f(outbuf,)h(group,)f(ro)q(ot,)g (function\))166 2294 y Fv(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 2351 y(used.)i Fk(function)11 b Fv(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 2407 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 2463 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 2520 y(input)e(bu\013er.)75 2611 y Fw(IN)h(in)o(buf)23 b Fv(handle)17 b(to)d(input)i(bu\013er)75 2704 y Fw(IN)h(outbuf)23 b Fv(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: 42 47 42 46 bop 75 -100 a Fv(42)703 b Ft(CHAPTER)15 b(3.)35 b(COLLECTIVE)16 b(COMMUNICA)l(TION)75 45 y Fw(IN)h(group)23 b Fv(handle)16 b(to)f(group)75 142 y Fw(IN)i(ro)q(ot)23 b Fv(rank)15 b(of)g(ro)q(ot)g(pro)q(cess)g(\(in)o(teger\))166 274 y Fw(MPI)p 275 274 16 2 v 18 w(USER)p 435 274 V 20 w(REDUCEC\()j(in)o(buf,)f(outbuf,)h(len,)f(t)o(yp)q(e,)g(group,)g(ro)q (ot,)g(function\))166 367 y Fv(Is)e(same)g(as)g Fk(MPI)p 460 367 15 2 v 477 367 V 34 w(USER)p 590 367 V 17 w(REDUCE)p Fv(,)f(restricted)h(to)g(a)g(blo)q(c)o(k)h(bu\013er.)75 464 y Fw(IN)h(in)o(buf)23 b Fv(\014rst)15 b(lo)q(cation)h(in)g(input)g (bu\013er)75 561 y Fw(OUT)i(outbuf)24 b Fv(\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 658 y Fw(IN)i(len)23 b Fv(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 755 y Fw(IN)i(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er)75 852 y Fw(IN)j(group)23 b Fv(handle)16 b(to)f(group)75 949 y Fw(IN)i(ro)q(ot)23 b Fv(rank)15 b(of)g(ro)q(ot)g(pro)q(cess)g(\(in)o(teger\))75 1046 y Fw(IN)i(function)24 b Fv(user)16 b(pro)o(vided)g(function)166 1219 y Fo(Discussion:)166 1270 y Fn(Do)f(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 Fo(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(t)o(yp)q(e,)g(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(t)o(yp)q(e,)g (group,)g(function\))166 1906 y Fn(Do)e(w)o(e)h(w)o(an)o(t)f(a)g(user)i (pro)o(vided)e Ff(function)h Fn(\(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 Fj(a)k(op=)f(b)d Fn(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 Fw(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 Fv(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 Fk(i)h Fv(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 Fk(0,...,i)p Fv(.)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 Fk(MPI)p 921 2704 15 2 v 17 w(REDUCE)p Fv(.)p eop %%Page: 43 48 43 47 bop 75 -100 a Ft(3.6.)34 b(GLOBAL)16 b(COMPUTE)f(OPERA)l(TIONS) 883 b Fv(43)75 45 y Fw(IN)17 b(in)o(buf)23 b Fv(handle)17 b(to)d(input)i(bu\013er)75 142 y Fw(IN)h(outbuf)23 b Fv(handle)17 b(to)d(output)h(bu\013er)75 239 y Fw(IN)i(group)23 b Fv(handle)16 b(to)f(group)75 336 y Fw(IN)i(op)23 b Fv(op)q(eration)166 469 y Fw(MPI)p 275 469 16 2 v 18 w(SCANC\()12 b(in)o(buf,)h(outbuf,)g(len,)h(t)o(yp)q(e,)e(group,)h(op)g (\))e Fv(Same)g(as)f Fk(MPI)p 1555 469 15 2 v 17 w(SCAN)p Fv(,)g(restricted)75 561 y(to)15 b(blo)q(c)o(k)h(bu\013ers.)75 671 y Fw(IN)h(in)o(buf)23 b Fv(\014rst)15 b(input)h(bu\013er)f(elemen)o (t)h(\(c)o(hoice\))75 768 y Fw(OUT)i(outbuf)24 b Fv(\014rst)14 b(output)h(bu\013er)h(elemen)o(t)f(\(c)o(hoice\))75 865 y Fw(IN)i(len)23 b Fv(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 962 y Fw(IN)i(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er) 75 1059 y Fw(IN)j(group)23 b Fv(handle)16 b(to)f(group)75 1156 y Fw(IN)i(op)23 b Fv(op)q(eration)166 1302 y Fw(MPI)p 275 1302 16 2 v 18 w(USER)p 435 1302 V 20 w(SCAN\()16 b(in)o(buf,)i(outbuf,)f(group,)g(function)i(\))166 1395 y Fv(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 1451 y Fk(function)k Fv(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 1508 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 1605 y Fw(IN)h(in)o(buf)23 b Fv(handle)17 b(to)d(input)i(bu\013er)75 1702 y Fw(IN)h(outbuf)23 b Fv(handle)17 b(to)d(output)h(bu\013er)75 1799 y Fw(IN)i(group)23 b Fv(handle)16 b(to)f(group)75 1896 y Fw(IN)i(function)24 b Fv(user)16 b(pro)o(vided)g(function)166 2028 y Fw(MPI)p 275 2028 V 18 w(USER)p 435 2028 V 20 w(SCANC\()g(in)o(buf,)h(outbuf,)h(len,)f(t)o(yp)q(e,)g(group,)g (function\))166 2121 y Fv(Is)e(same)g(as)g Fk(MPI)p 460 2121 15 2 v 17 w(USER)p 573 2121 V 17 w(SCAN)p Fv(,)f(restricted)h(to)g (a)g(blo)q(c)o(k)h(bu\013er.)75 2218 y Fw(IN)h(in)o(buf)23 b Fv(\014rst)15 b(lo)q(cation)h(in)g(input)g(bu\013er)75 2315 y Fw(OUT)i(outbuf)24 b Fv(\014rst)14 b(lo)q(cation)i(in)g(output)f (bu\013er)75 2412 y Fw(IN)i(len)23 b Fv(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 2509 y Fw(IN)i(t)o(yp)q(e)23 b Fv(data)14 b(t)o(yp)q(e)i(of)e(bu\013er)75 2607 y Fw(IN)j(group)23 b Fv(handle)16 b(to)f(group)75 2704 y Fw(IN)i(function)24 b Fv(user)16 b(pro)o(vided)g(function)p eop %%Page: 44 49 44 48 bop 75 -100 a Fv(44)708 b Ft(CHAPTER)15 b(3.)30 b(COLLECTIVE)16 b(COMMUNICA)l(TION)166 45 y Fo(Discussion:)166 102 y Fn(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 158 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 214 y(where)f(segmen)o(ts)f (start)g(and)g(end.\))75 440 y Fp(3.7)70 b(Correctness)75 624 y Fo(Discussion:)34 b Fn(This)14 b(is)f(still)g(v)o(ery)i (preliminary)166 763 y Fv(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 820 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 876 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 933 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 989 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 1046 y(for)e(this)h(purp)q(ose)h(are)e Fk(group)p Fv(,)g Fk(root)g Fv(and)h Fk(op)p Fv(.)k(messages)14 b(p)q(ertaining)i(to)e(another)h(o)q(ccurrence)h(of)e(the)75 1102 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 1158 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 1291 y Fo(Discussion:)166 1341 y Fn(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 1391 y(I)h(pro)o(vided)g(in)f(this)h(draft.)166 1440 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 1490 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 Fj(group)f Fn(and,)g(where)i(relev)n(an)o(t,)e Fj(root)g Fn(or)75 1540 y Fj(op)g Fn(parameters.)19 b(Is)14 b(this)g(acceptable?)166 1679 y Fv(A)h(few)g(examples:)75 1782 y Fk(MPI_BCASTC\(buf,)22 b(len,)h(type,)g(group,)g(0\);)75 1839 y(MPI_BCASTC\(buf,)f(len,)h (type,)g(group,)g(1\);)166 1942 y Fv(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 1999 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 2055 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 2158 y Fk(MPI_BCASTC\(buf,)22 b(len,)h(type,)g(group,)g(0\);)75 2215 y(MPI_BCASTC\(buf,)f(len,)h (type,)g(group,)g(0\);)166 2318 y Fv(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 2374 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 2431 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 2487 y(and)h(will)i(execute) f(as)f(in)o(tended.)75 2591 y Fk(MPI_RANK\(&rank,)22 b(group\))75 2647 y(if)i(\(rank==0\))123 2704 y({)p eop %%Page: 45 50 45 49 bop 75 -100 a Ft(3.7.)34 b(CORRECTNESS)1303 b Fv(45)147 45 y Fk(MPI_BCASTC\(buf,)21 b(len,)j(type,)f(group,)g(0\);)147 102 y(MPI_SENDC\(buf,)f(len,)h(type,)g(2,)h(tag,)f(group\);)123 158 y(})75 214 y(elseif)g(\(rank==1\))123 271 y({)147 327 y(MPI_RECVC\(buf,)f(len,)h(type,)g(MPI_DONTCARE,)f(tag,)h(group\);) 147 384 y(MPI_BCASTC\(buf,)e(len,)j(type,)f(group,)g(0\);)147 440 y(MPI_RECVC\(buf,)f(len,)h(type,)g(MPI_DONTCARE,)f(tag,)h(group\);) 123 497 y(})75 553 y(else)123 610 y({)147 666 y(MPI_SENDC\(buf,)f(len,) h(type,)g(2,)h(tag,)f(group\);)147 723 y(MPI_BCASTC\(buf,)e(len,)j (type,)f(group,)g(0\);)123 779 y(})166 885 y Fv(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 942 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 998 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 1055 y(illustrated)c(b)o(y)e(the)g(diagram) g(b)q(elo)o(w.)170 1274 y Fk(0)549 b(1)525 b(2)457 1387 y(/)24 b(-)f(>)48 b(receive)285 b(/)24 b(-)g(send)409 1443 y(/)597 b(/)75 1500 y(broadcast)70 b(/)215 b(broadcast)166 b(/)71 b(broadcast)337 1556 y(/)573 b(/)123 1613 y(send)71 b(-)310 b(receive)47 b(<)23 b(-)166 1832 y Fv(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 1888 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 1945 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 2001 y(the)e(call)i(to)d(broadcast)h (on)g(pro)q(cess)g(one.)p eop %%Page: 46 51 46 50 bop 75 367 a Fq(Chapter)34 b(4)75 586 y Fx(Pro)s(cess)40 b(T)-10 b(op)s(ologi)q(es)850 819 y Fv(Rolf)16 b(Hemp)q(el)75 1024 y Fp(4.1)70 b(In)n(tro)r(duction)75 1147 y Fv(A)14 b(pro)q(cess)f(group)g(in)i(MPI)e(is)h(a)f(collection)j(of)d(n)h(pro)q (cesses.)19 b(Eac)o(h)14 b(pro)q(cess)f(in)i(the)e(group)g(is)h (assigned)75 1203 y(a)g(rank)g(b)q(et)o(w)o(een)h(0)g(and)f(n-1.)20 b(In)15 b(the)g(ma)s(jorit)o(y)e(of)h(parallel)i(applications)g(this)f (linear)h(ordering)f(do)q(es)75 1260 y(not)e(re\015ect)g(the)g(comm)o (unication)h(structure)e(of)h(the)g(pro)q(cesses)g(whic)o(h)h(is)f (usually)i(determined)f(b)o(y)f(the)75 1316 y(underlying)20 b(problem)e(geometry)f(and)h(the)f(n)o(umerical)i(algorithm)f(used.)28 b(Often)18 b(the)f(pro)q(cesses)h(are)75 1373 y(arranged)d(in)h(top)q (ological)g(patterns)e(as)h(simple)i(as)e(a)g(t)o(w)o(o{)e(or)i (three{dimensional)i(grid.)166 1440 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 1496 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 1553 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 Fl(al)r(l)g Fv(pro)q(cesses)h(in)g(the)g (grid,)75 1609 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 1666 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 1722 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 1779 y(to)j(sp)q(ecify)h(the)f (information)h(whic)o(h)g(is)f(really)i(required.)166 1846 y(Additionally)l(,)g(the)e(user{de\014ned)h(pro)q(cess)f (structure)g(can)g(b)q(e)h(exploited)g(b)o(y)f(the)g(system)f(in)i(the) 75 1902 y(assignmen)o(t)d(of)g(pro)q(cesses)h(to)f(hardw)o(are)f(pro)q (cessors,)h(if)h(this)g(helps)h(to)d(impro)o(v)o(e)i(the)f(comm)o (unication)75 1959 y(p)q(erformance)g(on)h(a)f(giv)o(en)h(mac)o(hine.) 20 b(Ho)o(w)12 b(this)i(mapping)g(is)g(done)g(in)g(detail)g(is)g (outside)g(the)g(scop)q(e)f(of)75 2015 y(this)k(standardization)h(prop) q(osal,)f(since)h(it)f(is)h(to)q(o)e(m)o(uc)o(h)h(dep)q(enden)o(t)i(on) d(the)h(particular)h(hardw)o(are.)75 2072 y(The)d(description)i(of)d(a) h(\\virtual)g(pro)q(cess)g(top)q(ology",)f(ho)o(w)o(ev)o(er,)g(only)h (dep)q(ends)i(on)e(the)g(application,)75 2128 y(and)k(is,)g(therefore,) g(mac)o(hine{indep)q(endent.)32 b(The)19 b(functions)g(whic)o(h)h(are)e (prop)q(osed)h(in)g(this)g(pap)q(er)75 2185 y(only)d(deal)g(with)f (this)h(side)g(of)f(the)g(mapping)h(problem.)166 2252 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 2308 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 2365 y(heuristics)i(often)e(yield)i(near{optimal)e (results)h([14)o(].)26 b(On)18 b(the)f(other)g(hand,)h(if)g(there)f(is) h(no)f(w)o(a)o(y)g(for)75 2421 y(the)c(user)g(to)f(sp)q(ecify)j(the)e (logical)h(pro)q(cess)f(arrangemen)o(t)f(as)g(a)h(\\virtual)g(top)q (ology",)f(this)i(information)75 2478 y(is)k(most)f(di\016cult)j(to)d (reco)o(v)o(er)g(later.)28 b(A)18 b(random)g(mapping)g(is)g(most)g(lik) o(ely)h(the)f(consequence.)29 b(On)75 2534 y(some)15 b(mac)o(hines)h(this)g(will)h(lead)f(to)f(unnecessary)h(con)o(ten)o (tion)g(in)g(the)f(in)o(terconnect)i(net)o(w)o(ork.)i(Some)75 2591 y(details)g(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)75 2647 y(pro)q(cess{to{pro)q(cessor)e(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 2704 y([5)o(,)f(4].)952 2828 y(46)p eop %%Page: 47 52 47 51 bop 75 -100 a Ft(4.2.)34 b(VIR)l(TUAL)17 b(TOPOLOGIES)1119 b Fv(47)75 45 y Fp(4.2)70 b(Virtual)21 b(T)-6 b(op)r(ologies)75 159 y Fv(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 215 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 272 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 328 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 385 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 441 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 498 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 554 y(neigh)o(b)q(oring)g(pro)q(cessors.)166 617 y(The)g(graph)g (de\014nition)i(function)f(MPI)p 868 617 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 673 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 730 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 786 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 843 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 899 y(functions)h(more)f(complicated.)166 1045 y Fo(Discussion:)f Fn(One)f(could)f(also)f(ha)o(v)o(e)h(t)o(w)o(o)g(graph)g(mapping)d (functions,)j(one)h(of)e(whic)o(h)h(uses)h(comm)o(unica-)75 1101 y(tion)36 b(w)o(eigh)o(ting,)k(whereas)e(the)f(other)g(do)q(es)g (not.)85 b(The)37 b(mapping)d(function)i(with)h(w)o(eigh)o(ting,)75 1158 y(MPI)p 158 1158 13 2 v 15 w(MAP)p 270 1158 V 16 w(W)o(GRAPH,)10 b(w)o(ould)g(then)i(ha)o(v)o(e)f(an)g(additional)f (input)h(argumen)o(t)f Fj(weights)g Fn(with)h(the)g(same)g(struc-)75 1214 y(ture)k(as)f(the)h(neigh)o(b)q(or)f(list)g Fj(nglist)p Fn(.)j(On)e(the)g(higher)f(abstraction)g(lev)o(el)g(the)h(function)f (MPI)p 1587 1214 V 15 w(GRAPH)g(w)o(ould)75 1271 y(b)q(e)h(complemen)o (ted)d(b)o(y)h(MPI)p 545 1271 V 16 w(W)o(GRAPH)g(in)g(the)i(same)e(w)o (a)o(y)m(.)166 1416 y Fv(In)k(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 1473 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 1529 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 1586 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 1642 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 1698 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 1755 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 1811 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 1868 y(a)h(graph.)166 1931 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 1987 y(are)j(supp)q(orted.)22 b(The)16 b(top)q(ology)g(de\014nition)i (function)e(MPI)p 1140 1987 14 2 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 2044 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 2100 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 2156 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 2213 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 2276 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 2332 y(of)d(other)h(pro)q(cesses)g(b)o(y)f(calling)j(MPI)p 729 2332 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 2389 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 2445 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 2502 y(exc)o(hanged.)166 2647 y Fo(Discussion:)h Fn(In)e(the)h(PT2PT)g(discussion)g(it)f(is)g(not)g(y)o(et)h(decided)g (ho)o(w)f(pro)q(cesses)j(are)d(addressed.)20 b(This)75 2704 y(could,)10 b(for)g(example,)f(b)q(e)i(done)f(b)o(y)g(unique)g (iden)o(ti\014ers,)h(or)f(b)o(y)g(their)g(ranks)h(in)e(a)h(group.)17 b(The)10 b(top)q(ology)f(handling)p eop %%Page: 48 53 48 52 bop 75 -100 a Fv(48)905 b Ft(CHAPTER)15 b(4.)35 b(PR)o(OCESS)15 b(TOPOLOGIES)75 45 y Fn(will)d(b)q(e)j(adapted)f(to)g (whatev)o(er)g(decision)h(will)d(b)q(e)i(tak)o(en)g(in)g(PT2PT.)75 270 y Fp(4.3)70 b(Em)n(b)r(edding)22 b(in)g(MPI)75 371 y Fv(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 428 y(particular,)21 b(the)f(virtual)g(top)q(ology)f(functions)i (do)e(not)h(in)o(terfere)g(with)g(the)f(functions)i(for)e(pro)q(cess)75 484 y(group)i(creation)g(and)g(with)g(those)f(for)h(collectiv)o(e)h (comm)o(unication.)38 b(The)21 b(curren)o(t)g(design)g(of)g(the)75 541 y(pro)q(cess)15 b(top)q(ology)g(functions)h(is)g(based)g(on)f(the)g (follo)o(wing)h(assumptions:)143 629 y Fr(\017)23 b Fv(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 685 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 742 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 798 y(group)15 b(execute)g(the)h(same)f (program.)143 890 y Fr(\017)23 b Fv(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 946 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 1003 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 1059 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 1116 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 1172 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 1228 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 1285 y(ordering)h(of)g(pro)q(cesses)h(in)g(a)e(logical)j(top)q(ology)l (.)75 1373 y(The)g(virtual)g(top)q(ology)g(handling)h(follo)o(ws)f(the) g(general)g(MPI)g(rule)g(of)g(functional)h(la)o(y)o(ering.)25 b(A)o(t)16 b(the)75 1429 y(b)q(ottom)f(it)g(is)h(based)g(on)f(the)h (general)g(pro)q(cess)g(group)f(creation)g(function)i(MPI)p 1486 1429 14 2 v 16 w(CREA)l(TE)p 1693 1429 V 17 w(GR)o(OUP)75 1486 y(plus)i(a)f(few)g(top)q(ology)g(sp)q(eci\014c)i(mapping)e (functions.)30 b(In)18 b(principle)j(this)e(is)f(su\016cien)o(t)h(for)e (de\014ning)75 1542 y(top)q(ologies)f(and)f(use)h(them)f(in)h (applications.)166 1599 y(A)f(n)o(um)o(b)q(er)g(of)f(higher{lev)o(el)j (functions)e(pro)o(vide)g(an)g(in)o(terface)g(whic)o(h)h(is)f(similar)h (to)e(what)g(users)75 1655 y(of)19 b(pac)o(k)m(ages)g(lik)o(e)h (Express)f(and)g(P)l(ARMA)o(CS)h(are)f(familiar)h(with.)32 b(This)19 b(lev)o(el)i(can)e(b)q(e)h(written)f(in)75 1712 y(a)j(p)q(ortable)h(w)o(a)o(y)e(in)i(terms)f(of)g(the)g(lo)o (w{lev)o(el)h(functions.)42 b(Implemen)o(tations)24 b(of)e(the)g (high{lev)o(el)75 1768 y(functions)e(whic)o(h)h(b)o(ypass)e(the)g(lo)o (w)h(lev)o(el)h(ma)o(y)d(b)q(e)j(adv)m(an)o(tageous)d(on)i(some)f (systems)g(in)h(terms)f(of)75 1825 y(memory)c(and)g(cpu)h(time)f (usage,)g(but)g(this)h(is)g(not)f(a)f(requiremen)o(t.)75 1967 y Fp(4.4)70 b(Ov)n(erview)21 b(of)i(the)f(prop)r(osed)j(MPI)e (functions)75 2068 y Fv(This)d(c)o(hapter)f(assumes)f(the)i(a)o(v)m (ailabilit)o(y)h(of)d(the)i(follo)o(wing)f(MPI)g(features)g(whic)o(h)h (are)f(de\014ned)h(in)75 2125 y(other)15 b(c)o(hapters:)131 2213 y(1.)22 b(An)11 b(existing)g(pro)q(cess)g(group)f(\(e.g.,)g(the)h (ALL)h(group\))e(can)g(b)q(e)i(partitioned)f(and/or)f(ren)o(um)o(b)q (ered)189 2269 y(using)189 2379 y Fw(MPI)p 298 2379 16 2 v 18 w(CREA)l(TE)p 533 2379 V 19 w(GR)o(OUP\(gid)p 835 2379 V 20 w(old,)17 b(gid)p 1025 2379 V 20 w(new,)f(group)p 1299 2379 V 19 w(k)o(ey)l(,)f(order)p 1546 2379 V 18 w(k)o(ey\))g Fv(with)189 2506 y Fw(IN)i(gid)p 339 2506 V 19 w(old)24 b Fv(group)15 b(id)h(of)e(paren)o(t)h(group,)189 2576 y Fw(OUT)j(gid)p 394 2576 V 19 w(new)23 b Fv(group)15 b(id)h(of)f(newly)h(created)f(subgroup)g(of)g(whic)o(h)h(the)f(calling) i(pro)q(cess)f(is)f(a)289 2633 y(mem)o(b)q(er,)189 2704 y Fw(IN)i(group)p 402 2704 V 18 w(k)o(ey)22 b Fv(in)o(teger)15 b(v)m(alue)i(used)e(for)g(the)g(partitioning,)p eop %%Page: 49 54 49 53 bop 75 -100 a Ft(4.4.)34 b(O)o(VER)-5 b(VIEW)16 b(OF)f(THE)g(PR)o(OPOSED)h(MPI)f(FUNCTIONS)536 b Fv(49)189 45 y Fw(IN)17 b(order)p 393 45 16 2 v 18 w(k)o(ey)k Fv(in)o(teger)e(v)m (alue)i(used)e(for)g(determining)h(the)f(ranks)g(in)h(the)f(new)g (group)g(\(see)289 102 y(b)q(elo)o(w\),)189 193 y(This)j(function)g(is) f(called)i(b)o(y)e(all)i(pro)q(cesses)e(in)i(group)d Fl(gid)p 1265 193 14 2 v 17 w(old)i Fv(lo)q(osely)g(sync)o(hronously)l (.)39 b(It)189 250 y(creates)18 b(as)g(man)o(y)g(di\013eren)o(t)g (subgroups)h(as)f(there)h(are)f(di\013eren)o(t)g(v)m(alues)i(of)e Fl(gr)n(oup)p 1676 250 V 17 w(key)p Fv(.)30 b(The)189 306 y(ranking)16 b(in)h(the)g(newly)g(created)f(groups)g(is)h (determined)h(b)o(y)e(the)h Fl(or)n(der)p 1464 306 V 17 w(key)f Fv(v)m(alues,)h(with)g(the)189 363 y(pro)q(cess)e(ranks)g (in)h(the)f(paren)o(t)g(group)g(for)g(tie)g(breaking.)131 455 y(2.)22 b(There)14 b(is)g(an)g(in)o(ternal)h(information)f(cac)o (heing)h(facilit)o(y)l(,)g(whic)o(h)g(can)f(b)q(e)g(used)h(b)o(y)f(MPI) g(routines)189 511 y(to)c(store)h(and)g(retriev)o(e)g(information)h (related)f(to)g(a)g(pro)q(cess)g(group.)18 b(This)12 b(facilit)o(y)g(w)o(as)f(prop)q(osed)189 568 y(in)19 b(the)f(Con)o(text)f(Sub)q(committee.)30 b(High{lev)o(el)20 b(top)q(ology)e(functions)h(use)g(this)f(p)q(ossibilit)o(y)j(to)189 624 y(store)14 b(structure)h(information)h(for)f(a)g(pro)q(cess)g (group,)g(whic)o(h)h(is)g(then)g(later)f(used)h(b)o(y)f(top)q(ology)189 680 y(inquiry)21 b(functions.)35 b(Also,)22 b(sp)q(ecial)g(shift)e (functions)h(whic)o(h)g(are)f(based)g(on)g(the)g(top)q(ological)189 737 y(structure)15 b(can)g(tak)o(e)f(adv)m(an)o(tage)h(of)g(this)g (information.)75 908 y Fo(Discussion:)g Fn(If)e(the)h(information)d (cac)o(heing)j(will)d(not)j(b)q(e)g(part)f(of)g(MPI,)g(passing)h(the)g (top)q(ology)e(information)75 965 y(for)g(a)h(group)f(from)f(one)i(top) q(ology)f(function)g(to)h(the)g(other)h(can)f(b)q(e)g(handled)g(in)f (sev)o(eral)h(other)g(w)o(a)o(ys)g(whic)o(h)f(will)75 1021 y(b)q(e)j(discussed)g(later.)166 1161 y Fv(There)i(has)g(b)q(een)h (a)e(general)i(decision)g(in)g(MPI)f(to)f(start)f(all)j(n)o(um)o(b)q (ering)g(with)f(0)g(instead)g(of)g(1.)75 1217 y(Th)o(us,)f(co)q (ordinates)h(in)h(a)e(cartesian)g(structure)h(are)f(0,1,)f(...,)h (dim-1.)24 b(In)17 b(the)g(same)f(w)o(a)o(y)l(,)g(no)q(des)h(in)g(a)75 1273 y(general)f(graph)f(are)f(n)o(um)o(b)q(ered)i(zero)g(up.)75 1394 y Fm(4.4.1)55 b(Lo)n(w{lev)n(el)18 b(top)r(ology)f(functions)75 1480 y Fv(On)k(the)g(lo)o(w)o(est)e(lev)o(el)j(groups)e(are)g(created)h (b)o(y)f(the)h(general)g(function)g(MPI)p 1477 1480 V 16 w(CREA)l(TE)p 1684 1480 V 17 w(GR)o(OUP)l(.)75 1537 y(Using)13 b(the)g(input)g(argumen)o(t)f Fl(newr)n(ank)g Fv(the)g(caller)i(can)e(c)o(hange)h(the)g(pro)q(cess)f(ranks)h(in)g (the)f(new)h(group)75 1593 y(as)h(compared)g(to)g(the)g(paren)o(t)g (group.)19 b(This)c(feature)f(can)h(b)q(e)g(used)g(to)e(e\016cien)o (tly)j(map)e(the)h(pro)q(cesses)75 1649 y(in)i(the)e(group)h(to)f(the)h (p)q(ositions)h(in)f(the)g(top)q(ology)l(.)21 b(F)l(or)15 b(eac)o(h)h(class)g(of)g(top)q(ologies,)g(therefore,)f(there)75 1706 y(is)f(a)f(function)h(whic)o(h)h(computes)e(the)h(rank)f(of)g(the) h(calling)h(pro)q(cess)f(in)g(the)g(new)f(group,)h(based)f(on)h(the)75 1762 y(size)i(and)g(structure)g(of)f(the)g(top)q(ology)l(.)21 b(Note)16 b(that)e(it)i(is)g(a)g(v)m(alid)h(implemen)o(tation)g(if)f (the)f(new)h(ranks)75 1819 y(are)f(iden)o(tical)j(to)c(the)i(old)g (ranks.)k(So,)c(if)f(for)g(a)h(giv)o(en)g(mac)o(hine)g(the)f(placemen)o (t)i(of)e(pro)q(cesses)h(mak)o(es)75 1875 y(no)f(di\013erence,)h(the)f (implemen)o(tation)i(of)e(the)g(rank)g(computation)g(functions)h(is)g (trivial.)166 1932 y(F)l(or)e(cartesian)i(structures)f(the)g(function)h (is)166 2024 y Fw(newrank)h(=)g(MPI)p 545 2024 16 2 v 18 w(MAP)p 689 2024 V 17 w(CAR)l(T\(gid)p 944 2024 V 20 w(old,)g(ndims,)g(dims,)g(p)q(erio)q(d\))f Fv(with)75 2148 y Fw(IN)h(gid)p 225 2148 V 20 w(old)23 b Fv(group)15 b(id)h(of)f(paren)o(t)g(group,)75 2240 y Fw(IN)i(ndims)23 b Fv(n)o(um)o(b)q(er)15 b(of)g(dimensions)i(of)e(cartesian)g (structure,)75 2332 y Fw(IN)i(dims\(*\))23 b Fv(n)o(um)o(b)q(er)16 b(of)f(pro)q(cesses)g(in)h(eac)o(h)g(co)q(ordinate)f(direction,)75 2423 y Fw(IN)i(p)q(erio)q(d\(*\))25 b Fv(p)q(erio)q(dicit)o(y)17 b(sp)q(eci\014cation)g(in)f(eac)o(h)g(co)q(ordinate)f(direction.)75 2512 y(The)g(return)h(v)m(alue)g(is)g(the)f(reordered)g(rank)g(of)g (the)g(calling)i(pro)q(cess.)166 2704 y(The)e(corresp)q(onding)i (function)f(for)e(general)i(graph)f(structures)g(is)p eop %%Page: 50 55 50 54 bop 75 -100 a Fv(50)905 b Ft(CHAPTER)15 b(4.)35 b(PR)o(OCESS)15 b(TOPOLOGIES)166 45 y Fw(newrank)i(=)g(MPI)p 545 45 16 2 v 18 w(MAP)p 689 45 V 17 w(GRAPH\(gid)p 992 45 V 20 w(old,)g(no)q(des,)h(index,)f(nglist\))f Fv(with)75 164 y Fw(IN)h(gid)p 225 164 V 20 w(old)23 b Fv(group)15 b(id)h(of)f(paren)o(t)g(group,)75 253 y Fw(IN)i(no)q(des)23 b Fv(n)o(um)o(b)q(er)16 b(of)e(graph)h(no)q(des,)75 343 y Fw(IN)i(index\(*\),)h(nglist\(*\))25 b Fv(de\014nition)13 b(of)e(graph)g(structure:)17 b(F)l(or)11 b(eac)o(h)g(graph)g(no)q(de)h (its)g(set)f(of)g(neigh-)189 399 y(b)q(ors)i(is)h(en)o(tered,)g(i.)f (e.,)g(the)h(set)f(of)g(pro)q(cesses)h(with)f(whic)o(h)i(the)e(no)q(de) h(pro)q(cess)g(is)g(going)f(to)g(com-)189 455 y(m)o(unicate)k(most)f (frequen)o(tly)l(.)25 b(Since)19 b(there)d(is)i(no)e(w)o(eigh)o(ting)h (of)g(no)q(de)g(connections,)h(it)f(migh)o(t)189 512 y(b)q(e)d(sensible)j(to)c(sp)q(ecify)i(only)g(those)f(neigh)o(b)q(ors)h (with)f(whic)o(h)h(there)f(is)h(a)f(considerable)i(amoun)o(t)189 568 y(of)e(comm)o(unication.)189 641 y(F)l(or)20 b(eac)o(h)h(no)q(de)h Fu(i)35 b Fv(\(0)22 b Fr(\024)h Fu(i)e Fr(\024)i Fu(nodes)14 b Fr(\000)h Fv(1\))20 b(the)h(list)h(of)e(the)h(neigh)o(b)q(or)h(no)q (des)g(is)f(stored)g(at)189 698 y Fu(ng)r(l)q(ist)p Fv(\()p Fu(j)s Fv(\))p Fu(;)30 b(index)p Fv(\()p Fu(i)p Fv(\))13 b Fr(\024)i Fu(j)i Fr(\024)e Fu(index)p Fv(\()p Fu(i)10 b Fv(+)h(1\))f Fr(\000)h Fv(1.)23 b(F)l(or)16 b(the)g(last)g(pro)q (cess)h Fu(index)p Fv(\()p Fu(i)10 b Fv(+)h(1\))16 b(p)q(oin)o(ts)189 754 y(to)g(the)g(\014rst)g(free)h(p)q(osition)h(in)f(v)o(ector)f (nglist.)25 b(Note)16 b(that)g(the)g(matrix)h(is)g(symmetric,)f(i.)h (e.,)f(if)189 811 y(no)q(de)f Fl(i)f Fv(is)h(a)f(neigh)o(b)q(or)h(of)f (no)q(de)h Fl(j)p Fv(,)f(than)g(no)q(de)h Fl(j)f Fv(is)h(also)f(a)g (neigh)o(b)q(or)h(of)f(no)q(de)h Fl(i)p Fv(.)k(This)c(prop)q(ert)o(y) 189 867 y(can)g(b)q(e)h(used)g(for)e(an)h(in)o(ternal)h(c)o(hec)o(king) g(of)f(the)h(input)g(argumen)o(ts.)75 950 y(Again,)f(the)g(function)i (returns)e(the)g(reordered)g(rank)g(of)g(calling)i(pro)q(cess.)75 1046 y(The)11 b(de\014nitions)h(of)e(the)h(argumen)o(ts)f Fk(nodes)p Fv(,)g Fk(index)p Fv(,)h(and)g Fk(nglist)e Fv(are)i(illustrated)h(with)f(the)f(follo)o(wing)75 1102 y(simple)17 b(example:)166 1159 y(Assume)e(there)h(are)f(four)f(pro)q (cesses)i(0,)e(1,)h(2,)f(3)h(with)h(the)f(follo)o(wing)h(adjacency)g (matrix:)100 1211 y(pro)q(cess)50 b(neigh)o(b)q(ors)100 1268 y(0)170 b(1,)15 b(3)100 1324 y(1)170 b(0)100 1381 y(2)g(3)100 1437 y(3)g(0,)15 b(2)166 1490 y(Then,)g(the)h(input)g (argumen)o(ts)e(are:)100 1542 y(no)q(des)i(=)50 b(4)100 1599 y(index)16 b(=)56 b(0,)14 b(2,)h(3,)f(4,)h(6)100 1655 y(nglist)h(=)54 b(1,)14 b(3,)h(0,)f(3,)h(0,)f(2)166 1708 y(If)i(the)g(top)q(ology)g(con)o(tains)g(few)o(er)f(pro)q(cesses)i (than)e(there)h(are)g(pro)q(cesses)g(in)h(the)f(paren)o(t)g(group,)75 1764 y(the)g(newrank)g(v)m(alues)h(for)e(the)g(remaining)i(pro)q (cesses)f(are)g(set)f(to)h(MPI)p 1329 1764 14 2 v 16 w(NORANK.)h(It)e(is)i(an)e(error)g(if)75 1821 y(the)g(top)q(ology)g (de\014nes)h(more)f(pro)q(cesses)h(than)f(are)g(con)o(tained)h(in)g (the)f(paren)o(t)g(group.)75 1940 y Fm(4.4.2)55 b(High{lev)n(el)17 b(top)r(ology)g(functions)75 2026 y Fv(In)i(principle,)i(all)e(that)e (is)i(needed)g(to)f(create)g(an)g(MPI)g(pro)q(cess)g(group)g(with)h (top)q(ological)g(ordering)75 2083 y(are)13 b(the)h(t)o(w)o(o)f (mapping)h(functions)g(and)g(the)g(general)g(group)g(creation)f (routine.)20 b(Ho)o(w)o(ev)o(er,)13 b(this)h(is)g(not)75 2139 y(what)19 b(the)g(applications)i(programmer)d(exp)q(ects)i(to)f (see)h(on)f(his)h(lev)o(el)h(of)e(abstraction.)31 b(Therefore,)75 2195 y(another)13 b(la)o(y)o(er)h(of)f(functions)h(is)g(de\014ned)i(on) d(top)g(of)h(the)f(lo)o(w{lev)o(el)i(functions.)20 b(This)14 b(higher)h(lev)o(el)g(can)75 2252 y(b)q(e)g(p)q(ortably)f(implemen)o (ted)i(in)f(terms)f(of)g(the)g(lev)o(el)i(b)q(elo)o(w.)k(Of)14 b(course)h(MPI)f(implemen)o(tors)h(are)f(free)75 2308 y(to)h(b)o(ypass)g(the)g(lo)o(w)o(er)g(lev)o(el)h(for)f(the)g(sak)o(e)g (of)g(b)q(etter)g(p)q(erformance)g(or)g(resource)g(usage.)166 2365 y(F)l(or)e(cartesian)h(and)g(graph)f(structures)g(the)h(functions) h(MPI)p 1226 2365 V 16 w(CAR)l(T)f(and)g(MPI)p 1561 2365 V 16 w(GRAPH)g(create)75 2421 y(a)g(pro)q(cess)g(group)g(with)h(top)q (ological)g(structure.)k(They)14 b(com)o(bine)h(the)f(call)i(to)d(the)h (mapping)h(function)75 2478 y(with)f(the)g(call)h(to)e(the)g(group)h (creation)g(routine.)20 b(The)14 b(user)f(can)h(decide)i(whether)e(the) f(ranking)h(in)h(the)75 2534 y(new)i(group)g(ma)o(y)f(b)q(e)i (reordered)f(\(for)f(a)g(more)h(e\016cien)o(t)g(mapping\))h(or)e(not.) 25 b(In)17 b(the)g(latter)g(case)g(the)75 2591 y(rank)e(of)g(the)g (calling)i(pro)q(cess)e(is)h(copied)g(from)f(the)g(paren)o(t)g(group.) 166 2647 y(The)h(option)g(of)f(not)g(reordering)h(the)g(pro)q(cess)f (ranks)h(can)f(b)q(e)i(useful)f(in)h(the)e(case)h(of)f(an)h(o)o(v)o (erla)o(y)75 2704 y(of)f(di\013eren)o(t)h(top)q(ologies.)21 b(The)16 b(user)f(can)h(then)g(fully)h(con)o(trol)e(whic)o(h)h(lo)q (cation)g(in)h(the)e(\014rst)g(top)q(ology)p eop %%Page: 51 56 51 55 bop 75 -100 a Ft(4.4.)34 b(O)o(VER)-5 b(VIEW)16 b(OF)f(THE)g(PR)o(OPOSED)h(MPI)f(FUNCTIONS)536 b Fv(51)75 45 y(coincides)17 b(with)e(whic)o(h)h(lo)q(cation)g(in)f(the)g(second)h (one.)k(The)15 b(price)h(whic)o(h)f(one)h(ob)o(viously)f(has)g(to)f(pa) o(y)75 102 y(in)i(this)g(case)f(is)h(that)e(for)h(only)g(one)h(top)q (ology)f(the)g(pro)q(cess)g(arrangemen)o(t)f(can)i(b)q(e)g(optimized.) 166 158 y(As)11 b(sp)q(eci\014ed)j(for)d(the)h(lo)o(w{lev)o(el)g (functions)h(it)f(is)g(an)f(error)g(if)h(one)g(attempts)e(to)h (de\014ne)i(a)e(top)q(ology)75 215 y(with)j(more)g(lo)q(cations)g(than) g(there)g(are)g(pro)q(cesses)g(in)h(the)f(paren)o(t)f(pro)q(cess)h (group.)20 b(If)14 b(it)g(do)q(es)g(not)g(use)75 271 y(all)j(a)o(v)m(ailable)h(pro)q(cesses,)f(the)f(un)o(used)h(pro)q(cess) f(will)i(return)e(MPI)p 1249 271 14 2 v 17 w(NORANK)h(as)f(their)h (rank)f(in)h(the)75 327 y(new)e(group.)166 384 y(MPI)p 258 384 V 16 w(CAR)l(T)h(is)g(de\014ned)g(as)166 476 y Fw(newrank)c(=)g(MPI)p 535 476 16 2 v 18 w(CAR)l(T\(gid)p 791 476 V 19 w(old,)i(gid)p 977 476 V 19 w(cart,)g(ndims,)f(dims,)g(p)q (erio)q(d,)h(reorder\))c Fv(with)75 605 y Fw(IN)17 b(gid)p 225 605 V 20 w(old)23 b Fv(group)15 b(id)h(of)f(paren)o(t)g(group,)75 699 y Fw(OUT)j(gid)p 280 699 V 20 w(cart)23 b Fv(group)17 b(id)h(of)f(cartesian)g(group)g(\(if)g(calling)i(pro)q(cess)e(is)h (part)e(of)h(it,)h(else)g(id)g(of)e(rest)189 756 y(group\),)75 850 y Fw(IN)h(ndims,)g(dims\(*\),)g(p)q(erio)q(d\(*\))25 b Fv(de\014nition)17 b(of)d(cartesian)i(structure,)e(\(for)g(details)i (see)f(the)h(def-)189 906 y(inition)h(of)d(MPI)p 476 906 14 2 v 17 w(MAP)p 600 906 V 16 w(CAR)l(T\))75 1000 y Fw(IN)j(reorder)22 b Fv(ranking)15 b(ma)o(y)g(b)q(e)g(reordered)h(or) f(not.)75 1094 y(The)10 b(return)g(v)m(alue)i(is)f(the)f(rank)g(of)f (the)i(calling)g(pro)q(cess)g(in)g(the)f(cartesian)g(group)g(\(or)f (MPI)p 1628 1094 V 17 w(NORANK\).)166 1151 y(Apart)15 b(from)f(some)h(lo)q(cal)h(computations,)f(MPI)p 1015 1151 V 16 w(CAR)l(T)h(is)g(based)f(on)g(the)h(t)o(w)o(o)d(function)j (calls)166 1243 y Fw(newrank)h(=)g(MPI)p 545 1243 16 2 v 18 w(MAP)p 689 1243 V 17 w(CAR)l(T)g(\(gid)p 961 1243 V 20 w(old,)h(ndims,)f(dims,)f(p)q(erio)q(d\))166 1335 y Fv(and)166 1427 y Fw(MPI)p 275 1427 V 18 w(CREA)l(TE)p 510 1427 V 19 w(GR)o(OUP)h(\(gid)p 829 1427 V 20 w(old,)h(gid)p 1020 1427 V 19 w(cart,)g(0,)f(newrank\))e Fv(.)166 1577 y(F)l(or)f(graph)h(structures)g(the)h(corresp)q(onding)g(routine)f(is) 166 1669 y Fw(newrank)h(=)g(MPI)p 543 1669 V 17 w(GRAPH\(gid)p 846 1669 V 20 w(old,)h(gid)p 1036 1669 V 19 w(graph,)f(no)q(des,)h (index,)f(nglist,)h(reorder\))75 1726 y Fv(with)75 1855 y Fw(IN)g(gid)p 225 1855 V 20 w(old)23 b Fv(group)15 b(id)h(of)f(paren)o(t)g(group,)75 1949 y Fw(OUT)j(gid)p 280 1949 V 20 w(graph)23 b Fv(group)18 b(id)h(of)g(graph)f(group)g (\(if)h(calling)i(pro)q(cess)d(is)i(part)e(of)g(it,)h(else)h(id)f(of)f (rest)189 2005 y(group\),)75 2099 y Fw(IN)f(no)q(des,)g(index\(*\),)h (nglist\(*\))25 b Fv(de\014nition)12 b(of)e(graph)g(structure,)h(\(for) e(details)i(see)g(the)f(de\014nition)189 2156 y(of)k(MPI)p 332 2156 14 2 v 17 w(MAP)p 456 2156 V 16 w(GRAPH\))75 2250 y Fw(IN)j(reorder)22 b Fv(ranking)15 b(ma)o(y)g(b)q(e)g(reordered) h(or)f(not.)166 2403 y(In)f(the)g(con)o(text)f(sub)q(committee)h(a)g (mec)o(hanism)g(has)f(b)q(een)i(prop)q(osed)f(for)f(cac)o(heing)i (information)75 2459 y(whic)o(h)f(is)g(asso)q(ciated)g(with)g(a)f(pro)q (cess)h(group.)19 b(If)14 b(that)e(feature)i(will)h(b)q(e)f(part)f(of)g (MPI,)g(it)h(can)f(b)q(e)h(used)75 2516 y(b)o(y)h(the)g(high{lev)o(el)j (top)q(ology)c(functions)i(to)f(store)f(the)i(follo)o(wing)g (information:)131 2610 y(1.)22 b(T)o(yp)q(e)15 b(of)g(top)q(ology)g (\(cartesian/graph\))131 2704 y(2.)22 b(F)l(or)14 b(a)h(cartesian)g (top)q(ology:)p eop %%Page: 52 57 52 56 bop 75 -100 a Fv(52)905 b Ft(CHAPTER)15 b(4.)35 b(PR)o(OCESS)15 b(TOPOLOGIES)243 45 y Fr(\017)23 b Fv(ndims)16 b(\(n)o(um)o(b)q(er)f(of)g(dimensions\),)243 121 y Fr(\017)23 b Fv(dims\(*\))15 b(\(n)o(um)o(b)q(ers)g(of)f(pro)q(cesses)i(p)q(er)g (co)q(ordinate)f(direction\),)243 197 y Fr(\017)23 b Fv(p)q(erio)q(d\(*\))15 b(\(p)q(erio)q(dicit)o(y)i(information\),)243 272 y Fr(\017)23 b Fv(o)o(wn)p 372 272 14 2 v 16 w(p)q(osition\(*\))c (\(o)o(wn)f(p)q(osition)i(in)g(grid,)h(could)f(also)f(b)q(e)h(computed) f(from)g(rank)g(and)289 329 y(dims\(*\)\))75 428 y(F)l(or)d(a)g(graph)g (structure)g(no)g(information)h(has)f(to)g(b)q(e)h(stored,)f(b)q (ecause)h(the)g(graph)f(no)q(de)h(n)o(um)o(b)q(er)f(is)75 484 y(the)h(rank)f(in)i(the)f(graph)f(group,)h(and)g(the)g(size)g(of)g (the)g(graph)f(is)i(the)e(n)o(um)o(b)q(er)i(of)e(pro)q(cesses)h(in)h (that)75 541 y(group.)166 599 y(In)12 b(case)f(the)g(cac)o(heing)h(mec) o(hanism)f(do)q(es)h(not)e(b)q(ecome)i(part)f(of)f(MPI,)h(there)g(are)g (t)o(w)o(o)e(other)i(p)q(ossi-)75 655 y(bilities:)21 b(since)13 b(the)e(storage)g(and)h(retriev)m(al)h(of)e(the)h(ab)q(o)o (v)o(e)f(information)h(is)g(only)h(done)f(b)o(y)f(the)h(top)q(ology)75 711 y(functions,)17 b(it)g(can)f(in)o(ternally)i(b)q(e)f(stored)f(with) g(other)g(group)g(information)h(in)g(an)f(implemen)o(tation{)75 768 y(dep)q(enden)o(t)h(w)o(a)o(y)l(,)d(whic)o(h)i(eac)o(h)f(v)o(endor) g(can)g(do)h(as)e(is)i(most)e(con)o(v)o(enien)o(t.)166 826 y(As)k(an)h(alternativ)o(e,)g(the)g(information)f(could)i(b)q(e)f (stored)f(in)h(an)g(opaque)f(ob)s(ject,)h(a)f(handle)i(to)75 882 y(whic)o(h)g(w)o(ould)g(ha)o(v)o(e)f(to)g(b)q(e)h(included)h(in)g (the)e(argumen)o(t)g(lists)h(of)f(all)h(related)g(top)q(ology)f (functions.)75 939 y(Ho)o(w)o(ev)o(er,)14 b(this)h(alternativ)o(e)h(w)o (ould)f(b)q(e)h(m)o(uc)o(h)g(less)f(elegan)o(t.)75 1068 y Fm(4.4.3)55 b(T)-5 b(op)r(ology)18 b(inquiry)f(functions)75 1156 y Fv(If)j(a)g(top)q(ology)g(has)f(b)q(een)j(de\014ned)f(with)f (one)g(of)g(the)g(ab)q(o)o(v)o(e)g(high{lev)o(el)i(functions,)f(the)f (top)q(ology)75 1213 y(information)c(can)h(b)q(e)f(lo)q(ok)o(ed)h(up)g (using)f(inquiry)i(functions.)23 b(They)17 b(all)g(are)f(lo)q(cal)h (calls,)g(and)f(do)g(not)75 1269 y(require)g(an)o(y)g(comm)o (unication.)22 b(In)16 b(the)g(follo)o(wing)g(the)g(assumption)f(is)i (made)e(that)g(the)h(information)75 1326 y(cac)o(heing)21 b(is)f(a)o(v)m(ailable.)36 b(Otherwise)21 b(the)f(handle)h(to)e(the)h (opaque)g(information)g(ob)s(ject)f(has)h(to)f(b)q(e)75 1382 y(added)d(to)e(the)i(argumen)o(t)e(lists)i(\(or)e(replace)j(the)e (group)g(iden)o(ti\014er)i(argumen)o(t\).)166 1440 y(The)c(function)h (MPI)p 525 1440 V 17 w(INQMAP)f(returns)g(the)g(t)o(yp)q(e)h(of)e (mapping)i(whic)o(h)g(is)g(assigned)f(to)g(a)g(group.)166 1533 y Fw(map)k(=)g(MPI)p 448 1533 16 2 v 18 w(INQMAP\(gid\).)166 1626 y Fv(The)e(return)g(v)m(alue)i(is)f(one)f(of)g(the)g(follo)o (wing:)143 1725 y Fr(\017)23 b Fv(MPI)p 281 1725 14 2 v 16 w(CAR)l(TTOP:)15 b(cartesian)h(top)q(ology)l(,)143 1825 y Fr(\017)23 b Fv(MPI)p 281 1825 V 16 w(GRAPHTOP:)15 b(graph)g(top)q(ology)l(,)143 1924 y Fr(\017)23 b Fv(MPI)p 281 1924 V 16 w(NOTOP:)15 b(no)g(top)q(ology)l(.)166 2023 y(F)l(or)j(a)g(pro)q(cess)g(group)h(with)f(cartesian)h(ordering)g (whic)o(h)g(has)f(b)q(een)i(created)e(b)o(y)h(MPI)p 1720 2023 V 16 w(CAR)l(T,)75 2079 y(MPI)p 167 2079 V 16 w(INQCAR)l(T)e(lo)q (oks)e(up)h(the)f(follo)o(wing)h(info:)166 2173 y Fw(dim)h(=)h(MPI)p 438 2173 16 2 v 18 w(INQCAR)l(T\(gid,)f(maxdim,)g(size,)g(p)q(erio)q (d,)h(p)q(os\))e Fv(with)75 2307 y Fw(IN)h(gid)24 b Fv(group)14 b(id)j(of)d(group)h(with)h(cartesian)f(structure,)75 2406 y Fw(IN)i(maxdim)23 b Fv(length)15 b(of)g(v)o(ectors)g(size\(*\),) f(p)q(erio)q(d\(*\),)i(and)f(p)q(os\(*\))f(in)j(the)e(calling)i (program,)75 2505 y Fw(OUT)h(size\(*\))24 b Fv(n)o(um)o(b)q(er)16 b(of)e(pro)q(cesses)i(for)f(eac)o(h)g(co)q(ordinate)g(direction,)75 2604 y Fw(OUT)j(p)q(erio)q(d\(*\))25 b Fv(p)q(erio)q(dicit)o(y)17 b(y)o(es/no)e(for)g(eac)o(h)g(co)q(ordinate)g(direction,)75 2704 y Fw(OUT)j(p)q(os\(*\))24 b Fv(p)q(osition)16 b(of)f(calling)i (pro)q(cess)e(in)h(cartesian)g(structure.)p eop %%Page: 53 58 53 57 bop 75 -100 a Ft(4.4.)34 b(O)o(VER)-5 b(VIEW)16 b(OF)f(THE)g(PR)o(OPOSED)h(MPI)f(FUNCTIONS)536 b Fv(53)75 45 y(The)15 b(return)h(v)m(alue)g(is)g(the)f(dimension)i(of)e(the)g (cartesian)g(structure.)166 102 y(F)l(or)e(a)g(pro)q(cess)h(group)g (with)g(cartesian)f(structure,)h(the)f(function)i(MPI)p 1411 102 14 2 v 16 w(INQPID)g(translates)e(the)75 158 y(logical)j(pro)q(cess)g(co)q(ordinates)f(to)g(pro)q(cess)g(ids)h(as)f (they)g(are)g(used)h(b)o(y)f(the)h(p)q(oin)o(t{to{p)q(oin)o(t)f (routines:)166 250 y Fw(pid)j(=)f(MPI)p 423 250 16 2 v 18 w(INQPID\(gid,)h(lo)q(cation\))g Fv(with)75 385 y Fw(IN)f(gid)24 b Fv(group)14 b(id)j(of)d(group)h(with)h(cartesian)f (structure,)75 477 y Fw(IN)i(lo)q(cation)26 b Fv(co)q(ordinate)15 b(v)o(ector)g(of)g(pro)q(cess.)166 577 y(In)h(a)f(sense,)g(the)g(in)o (v)o(erse)h(op)q(eration)f(to)g(MPI)p 970 577 14 2 v 16 w(INQPID)h(is)g(pro)o(vided)g(b)o(y)f(the)g(function:)166 669 y Fw(MPI)p 275 669 16 2 v 18 w(INQLOC\(gid,)j(rank,)f(lo)q(cation,) j(maxdim\))15 b Fv(with)75 804 y Fw(IN)i(gid)24 b Fv(group)14 b(id)j(of)d(group)h(with)h(cartesian)f(structure,)75 896 y Fw(IN)i(rank)22 b Fv(rank)15 b(of)g(a)g(pro)q(cess)g(within)i (group)e Fk(gid)p Fv(,)75 987 y Fw(OUT)j(lo)q(cation\(*)q(\))26 b Fv(co)q(ordinate)15 b(v)o(ector)g(of)f(pro)q(cess,)75 1079 y Fw(IN)j(maxdim)23 b Fv(length)15 b(of)g(v)o(ector)g Fk(location)f Fv(in)i(the)f(calling)i(program)d(\(only)i(for)e(error)h (c)o(hec)o(king\).)75 1179 y(MPI)p 167 1179 14 2 v 16 w(INQLOC)i(translates)e(a)g(rank)f(in)j(the)e(group)g(in)o(to)g(a)g (top)q(ology)g(lo)q(cation.)166 1318 y Fo(Discussion:)22 b Fn(Dep)q(ending)17 b(on)g(the)h(decisions)g(tak)o(en)f(in)g(the)h (PT2PT)f(sub)q(committee,)f(MPI)p 1708 1318 13 2 v 16 w(INQPID)75 1375 y(migh)o(t)c(b)q(e)i(c)o(hanged)h(to)e(return)i(the)g (rank)f(in)f(the)i(group)e(rather)i(than)f(a)g(pid.)75 1578 y Fm(4.4.4)55 b(P)n(artitioning)18 b(of)h(cartesian)f(structures) 75 1664 y Fv(If)h(a)g(group)f(has)h(b)q(een)h(created)f(with)g(MPI)p 856 1664 14 2 v 16 w(CAR)l(T,)g(the)g(function)h(MPI)p 1386 1664 V 16 w(P)l(AR)l(TC)g(can)f(b)q(e)g(used)h(to)75 1720 y(partition)12 b(the)g(group)g(in)o(to)g(subgroups)g(whic)o(h)h (form)e(h)o(yp)q(erplanes)j(of)d(the)h(original)h(pro)q(cess)g (structure.)75 1777 y(As)k(an)f(example,)i(assume)e(that)g(MPI)p 751 1777 V 17 w(CAR)l(T)h(has)f(de\014ned)i(a)e(t)o(w)o(o{dimensional)i (grid)f(structure)f(on)75 1833 y(a)g(pro)q(cess)g(group.)22 b(With)16 b(a)g(call)h(to)e(MPI)p 811 1833 V 16 w(P)l(AR)l(TC)i(this)f (group)g(can)g(then)g(b)q(e)h(split)g(up)f(in)o(to)g(disjoin)o(t)75 1890 y(subgroups)f(whic)o(h)h(represen)o(t)g(ro)o(ws)e(or)g(columns)i (of)f(the)g(original)i(group.)i(The)d(function)g(syn)o(tax)e(is:)166 1982 y Fw(gid)p 238 1982 16 2 v 19 w(new)k(=)f(MPI)p 530 1982 V 18 w(P)l(AR)l(TC\(gid,)g(lostdim\))f Fv(with)75 2117 y Fw(IN)h(gid)24 b Fv(group)14 b(id)j(of)d(group)h(with)h (cartesian)f(structure,)75 2209 y Fw(IN)i(lostdim)24 b Fv(direction)16 b(p)q(erp)q(endicul)q(ar)h(to)e(resulting)h(h)o(yp)q (erplanes.)75 2308 y(The)22 b(function)h(returns)f(the)h(group)f(iden)o (ti\014er)h(of)f(the)g(h)o(yp)q(erplane)i(group)e(in)h(whic)o(h)g(the)f (calling)75 2365 y(pro)q(cess)15 b(is)h(con)o(tained.)166 2421 y(MPI)p 258 2421 14 2 v 16 w(P)l(AR)l(TC)f(uses)f(the)g(function)h (MPI)p 883 2421 V 17 w(CREA)l(TE)p 1091 2421 V 16 w(GR)o(OUP)g(to)e (partition)i(the)f(paren)o(t)g(group,)75 2478 y(using)22 b(the)f(pro)q(cess)g(co)q(ordinate)h(in)f(direction)i Fk(lostdim)d Fv(as)g(the)i(k)o(ey)e(v)m(alue.)39 b(After)21 b(a)f(group)h(has)75 2534 y(b)q(een)14 b(partitioned)f(b)o(y)g(MPI)p 565 2534 V 16 w(P)l(AR)l(TC,)g(the)f(inquiry)i(functions)g(MPI)p 1275 2534 V 16 w(INQCAR)l(T)g(and)f(MPI)p 1694 2534 V 16 w(INQPID)75 2591 y(consisten)o(tly)j(refer)f(to)g(the)g(grid)g (sections)h(if)g(applied)h(to)d(a)h(subgroup.)166 2647 y(If)g(the)h(pro)q(cess)f(top)q(ology)g(is)h(a)e(cartesian)i (structure,)e(a)h(collectiv)o(e)i(shift)e(op)q(eration)h(most)e(lik)o (ely)75 2704 y(is)19 b(used)f(along)h(a)f(co)q(ordinate)g(direction.)30 b(The)19 b(function)g(MPI)p 1208 2704 V 16 w(SHIFTGR)g(partitions)f(a)g (cartesian)p eop %%Page: 54 59 54 58 bop 75 -100 a Fv(54)905 b Ft(CHAPTER)15 b(4.)35 b(PR)o(OCESS)15 b(TOPOLOGIES)75 45 y Fv(group)i(in)o(to)f (one{dimensional)j(subgroups,)e(whic)o(h)h(are)e(all)i(orien)o(ted)f (in)h(one)f(co)q(ordinate)g(direction.)75 102 y(Ev)o(ery)e(pro)q(cess)g (is)h(con)o(tained)g(in)g(exactly)f(one)h(subgroup:)166 197 y Fw(gid)p 238 197 16 2 v 19 w(new)i(=)f(MPI)p 530 197 V 18 w(SHIFTGR\(gid,)h(direction\))f Fv(with)75 354 y Fw(IN)g(gid)24 b Fv(group)14 b(id)j(of)d(group)h(with)h(cartesian)f (structure,)75 461 y Fw(IN)i(direction)24 b Fv(co)q(ordinate)16 b(direction)g(of)f(one{dimensional)i(subgroups.)166 583 y(MPI)p 258 583 14 2 v 16 w(SHIFTGR)11 b(uses)f(the)g(function)h(MPI)p 918 583 V 17 w(CREA)l(TE)p 1126 583 V 16 w(GR)o(OUP)g(to)e(partition)i (the)f(paren)o(t)g(group.)75 639 y(The)15 b(return)f(v)m(alue)i(is)f (the)g(group)f(iden)o(ti\014er)i(of)e(the)h(one{dimensional)h(subgroup) f(to)f(whic)o(h)h(the)g(call-)75 696 y(ing)i(pro)q(cess)g(b)q(elongs.) 24 b(The)17 b(subgroup)g(has)f(a)g(one{dimensional)j(cartesian)d (structure.)24 b(It)16 b(is)h(either)75 752 y(p)q(erio)q(dic)23 b(\(ring\))e(or)f(not)g(\(linear\),)j(dep)q(ending)g(on)e(the)g(p)q (erio)q(dicit)o(y)i(of)d(the)h(paren)o(t)g(group)f(in)i(the)75 809 y(corresp)q(onding)16 b(direction.)166 951 y Fo(Discussion:)f Fn(Instead)f(of)f(creating)g(one{dimensional)e(subgroups)j(and)f(then)h (use)g(the)g(standard)g(collec-)75 1007 y(tiv)o(e)e(comm)o(unicatio)o (n)d(\(circular)k(or)f(end{o\013)s(\))h(shift)e(functions,)h(one)h (could)e(also)h(de\014ne)h(a)f(top)q(ology)f(based)h(shift)75 1064 y(function.)29 b(It)18 b(w)o(ould)e(lo)q(ok)h(v)o(ery)h(m)o(uc)o (h)e(lik)o(e)h(the)h(standard)g(shift,)g(with)f(an)h(additional)e (argumen)o(t)g(de\014ning)75 1120 y(the)i(co)q(ordinate)g(direction)g (for)f(the)h(shift.)29 b(Dep)q(ending)18 b(on)g(the)g(p)q(erio)q(dicit) o(y)f(information)e(of)i(the)h(cartesian)75 1177 y(structure,)e(the)e (shift)g(function)f(could)h(c)o(ho)q(ose)h(the)f(circular)g(or)g (end{o\013)g(v)o(ersion)g(automatically)m(.)166 1319 y Fv(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 1376 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 1376 V 16 w(MAKDIM)g(helps)g(in)75 1432 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 1488 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 1584 y Fw(MPI)p 275 1584 16 2 v 18 w(MAKDIM\(gid,)h(ndims,)f(dims\))f Fv(with)75 1741 y Fw(IN)i(gid)24 b Fv(group)14 b(id)j(of)d(group)h (whic)o(h)h(is)g(to)f(b)q(e)g(structured,)75 1848 y Fw(IN)i(ndims)23 b Fv(n)o(um)o(b)q(er)15 b(of)g(cartesian)g(dimensions,)75 1954 y Fw(IN/OUT)j(dims)23 b Fv(n)o(um)o(b)q(er)15 b(of)g(pro)q(cesses) g(in)i(eac)o(h)e(co)q(ordinate)g(direction.)166 2076 y(The)d(pro)q(cesses)g(of)f(the)h(group)f(with)i(ID)e(n)o(um)o(b)q(er)h Fk(gid)g Fv(are)f(divided)j(as)d(ev)o(enly)i(as)e(p)q(ossible)j(among) 75 2133 y Fk(ndims)i Fv(dimensions,)i(sub)s(ject)e(to)g(the)g (constrain)o(t)g(that)g(all)i(pro)q(cesses)e(in)i(the)e(group)g(are)g (used.)25 b(The)75 2189 y(caller)19 b(ma)o(y)e(further)h(constrain)g (the)g(op)q(eration)g(of)g(this)g(routine)g(b)o(y)g(sp)q(ecifying)i (elemen)o(ts)f(of)e(arra)o(y)75 2246 y Fk(dims)p Fv(.)23 b(If)17 b Fk(dims\(i\))f Fv(is)h(set)f(to)g(a)h(p)q(ositiv)o(e)g(n)o (um)o(b)q(er,)g(the)g(routine)g(will)h(\014x)f(the)f(n)o(um)o(b)q(er)h (of)g(pro)q(cesses)75 2302 y(in)g(co)q(ordinate)g(direction)g Fk(i)f Fv(to)g Fk(dims\(i\))p Fv(.)22 b(Pro)q(cesses)16 b(will)i(then)f(b)q(e)f(distributed)i(among)e(directions)75 2359 y(where)f Fk(dims\(i\))g Fv(is)g(set)g(to)g(0,)f(sub)s(ject)h(to)g (the)g(ab)q(o)o(v)o(e)g(constrain)o(ts.)166 2418 y(Note)k(that)h(an)f (error)g(will)j(o)q(ccur)e(if)h Fk(dims\(i\))d Fv(is)j(p)q(ositiv)o(e)g (and)f(do)q(es)g(not)f(ev)o(enly)i(divide)h(the)75 2475 y(n)o(um)o(b)q(er)13 b(of)f(pro)q(cesses)g(in)h(the)g(group.)19 b(Negativ)o(e)12 b(input)h(v)m(alues)h(of)e Fk(dims\(i\))f Fv(will)j(also)e(cause)h(an)f(error.)75 2531 y(All)k(elemen)o(ts)g(of)f Fk(dims\(*\))f Fv(m)o(ust)h(b)q(e)h(set)f(to)f(0)h(for)g(completely)h (automatic)f(pro)q(cess)g(distribution.)166 2591 y(When)c(the)g (function)h(returns,)f Fk(dims\(i\))f Fv(will)j(b)q(e)e(set)g(to)f(the) h(n)o(um)o(b)q(er)g(of)g(pro)q(cesses)g(in)h(co)q(ordinate)75 2647 y(direction)20 b Fk(i)p Fv(.)29 b(F)l(or)18 b Fk(dims\(i\))g Fv(not)g(set)g(b)o(y)h(the)f(user,)h Fk(dims\(i\))f Fv(will)i(b)q(e)f (ordered)g(\(MAXIMUM,)e(...,)75 2704 y(MINIMUM\).)d(Arra)o(y)h Fk(dims\(*\))f Fv(is)i(suitable)g(for)f(use)g(as)g(input)h(to)f (routine)g(MPI)p 1503 2704 14 2 v 17 w(CAR)l(T.)p eop %%Page: 55 60 55 59 bop 75 -100 a Ft(4.5.)34 b(A)15 b(SIMPLE)h(EXAMPLE)1180 b Fv(55)75 45 y Fp(4.5)70 b(A)22 b(simple)f(example)75 147 y Fv(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 203 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 259 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 316 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 372 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 429 y(whic)o(h)g(are)f(hidden)i(in)f(the)f(subroutine)h Fk(relax)p Fv(.)166 485 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 542 y(at)19 b(all)i(p)q(oin)o(ts)f(o)o(wned)f(b)o(y)h (the)g(pro)q(cess.)33 b(Then)21 b(the)e(v)m(alues)i(at)e(in)o(terpro)q (cess)h(b)q(oundaries)h(ha)o(v)o(e)f(to)75 598 y(b)q(e)h(exc)o(hanged)h (with)f(neigh)o(b)q(oring)h(pro)q(cesses.)37 b(F)l(or)20 b(example,)j(the)d(exc)o(hange)h(subroutine)h(migh)o(t)75 655 y(con)o(tain)13 b(a)g(call)i(lik)o(e)f(MPI)p 524 655 14 2 v 16 w(SENDC\(...,neigh)p 873 655 V 16 w(pid\(1\),...\))k(to) 12 b(send)i(up)q(dated)g(v)m(alues)h(to)d(the)h(left{hand)75 711 y(neigh)o(b)q(or)j(\(i-1,j\).)j(Note)c(that)g(there)g(is)h(only)f (lo)q(cal)i(comm)o(unication)f(in)g(this)f(exc)o(hange)h(op)q(eration.) p eop %%Page: 56 61 56 60 bop 75 -100 a Fv(56)905 b Ft(CHAPTER)15 b(4.)35 b(PR)o(OCESS)15 b(TOPOLOGIES)252 163 y Fv(in)o(teger)g(ndims,)h(mx)p 614 163 14 2 v 16 w(neigh)252 219 y(parameter)e(\(ndims=2,)i(mx)p 757 219 V 16 w(neigh=4\))252 276 y(in)o(teger)f(gid,)h(gid)p 554 276 V 17 w(cart,)e(dims\(ndims\),)h(neigh)p 1057 276 V 18 w(def\(2\),)f(neigh)p 1325 276 V 17 w(pid\(mx)p 1484 276 V 18 w(neigh\))252 332 y(in)o(teger)h(o)o(wn)p 485 332 V 16 w(p)q(osition\(ndims\),)h(p)q(erio)q(d\(ndims\),)h(i,)e (j,)g(n)o(um)p 1319 332 V 16 w(neigh,)h(ret,)f(rank)252 388 y(real)p Fr(\003)p Fv(8)g(u\(0:101,0:101)o(\),)d(f\(0:101,0:10)o (1\))252 445 y(data)i(dims)i(/)f(ndims)h Fr(\003)f Fv(0)g(/)75 501 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 558 y(gid)i(=)f(ALL)75 614 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 671 y(ret)g(=)g(MPI)p 465 671 V 16 w(MAKDIM\(gid,)g (ndims,)h(dims\))252 727 y(if)f(\(ret)g(.lt.)20 b(0\))14 b(call)j(error)p 697 727 V 15 w(handler\(ret\))252 784 y(p)q(erio)q(d\(1\))e(=)h(MPI)p 594 784 V 16 w(PER)252 840 y(p)q(erio)q(d\(2\))f(=)h(MPI)p 594 840 V 16 w(PER)252 897 y(rank)f(=)g(MPI)p 499 897 V 17 w(CAR)l(T)g(\(gid,)g(gid)p 826 897 V 17 w(cart,)f(ndims,)i(dims,)g(p)q(erio)q(d\))252 953 y(ret)f(=)g(MPI)p 465 953 V 16 w(INQCAR)l(T)i(\(gid)p 790 953 V 17 w(cart,)d(ndims,)h(dims,)h(p)q(erio)q(d,)g(o)o(wn)p 1415 953 V 16 w(p)q(osition\))75 1009 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 1066 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 1122 y(i)i(=)f(o)o(wn)p 413 1122 V 16 w(p)q(osition\(1\))252 1179 y(j)g(=)g(o)o(wn)p 414 1179 V 16 w(p)q(osition\(2\))252 1235 y(neigh)p 360 1235 V 17 w(def\(1\))g(=)g(i{1)252 1292 y(neigh)p 360 1292 V 17 w(def\(2\))g(=)g(j)252 1348 y(neigh)p 360 1348 V 17 w(pid\(1\))h(=)f(MPI)p 653 1348 V 16 w(INQPID)i(\(gid,)e(neigh)p 1064 1348 V 17 w(def)t(\))252 1405 y(neigh)p 360 1405 V 17 w(def\(1\))g(=)g(i+1)252 1461 y(neigh)p 360 1461 V 17 w(def\(2\))g(=)g(j)252 1518 y(neigh)p 360 1518 V 17 w(pid\(2\))h(=)f(MPI)p 653 1518 V 16 w(INQPID)i(\(gid,)e(neigh)p 1064 1518 V 17 w(def)t(\))252 1574 y(neigh)p 360 1574 V 17 w(def\(1\))g(=)g(i)252 1630 y(neigh)p 360 1630 V 17 w(def\(2\))g(=)g(j{1)252 1687 y(neigh)p 360 1687 V 17 w(pid\(3\))h(=)f(MPI)p 653 1687 V 16 w(INQPID)i(\(gid,)e(neigh)p 1064 1687 V 17 w(def)t(\))252 1743 y(neigh)p 360 1743 V 17 w(def\(1\))g(=)g(i)252 1800 y(neigh)p 360 1800 V 17 w(def\(2\))g(=)g(j+1)252 1856 y(neigh)p 360 1856 V 17 w(pid\(4\))h(=)f(MPI)p 653 1856 V 16 w(INQPID)i(\(gid,)e(neigh)p 1064 1856 V 17 w(def)t(\))252 1913 y(n)o(um)p 342 1913 V 16 w(neigh)h(=)g(mx)p 592 1913 V 16 w(neigh)75 1969 y(C)89 b(Initialize)18 b(the)e(grid)f(functions)h(and)g(start)d(the)j (iteration)252 2026 y(call)g(init)g(\(u,)f(f)t(\))252 2082 y(do)g(10)g(it=1,100)322 2139 y(call)i(relax)e(\(u,)g(f)t(\))75 2195 y(C)89 b(Exc)o(hange)15 b(data)g(with)g(neigh)o(b)q(or)h(pro)q (cesses)322 2251 y(call)h(exc)o(hange)e(\(u,)g(neigh)p 779 2251 V 17 w(pid\))75 2308 y(10)131 b(con)o(tin)o(ue)252 2364 y(call)16 b(output)f(\(u\))252 2421 y(end)147 2625 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: 57 62 57 61 bop 75 356 a Fq(Chapter)34 b(5)75 564 y Fx(Language)41 b(Binding)952 2828 y Fv(57)p eop %%Page: 58 63 58 62 bop 75 356 a Fq(Chapter)34 b(6)75 564 y Fx(F)-10 b(ormal)40 b(Seman)m(tics)952 2828 y Fv(58)p eop %%Page: 59 64 59 63 bop 75 356 a Fq(Chapter)34 b(7)75 564 y Fx(En)m(vironmen)m(tal)41 b(Inquiry)952 2828 y Fv(59)p eop %%Page: 60 65 60 64 bop 75 359 a Fq(Chapter)34 b(8)75 570 y Fx(Pro\014ling)75 814 y Fp(8.1)70 b(Requiremen)n(ts)75 921 y Fv(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 Fl(must)131 1027 y Fv(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 1083 y(with)e(a)g(name)f(shift.)20 b(Th)o(us)11 b(all)i(of)f(the)g(MPI)g(functions)h(\(whic)o(h)f(normally)g(start)f (with)h(the)g(pre\014x)189 1140 y(\\)p Fk(MPI)p 287 1140 15 2 v 16 w Fv("\))j(should)h(also)f(b)q(e)h(accessable)g(with)g(the)f (pre\014x)h(\\)p Fk(PMPI)p 1300 1140 V 16 w Fv(".)131 1246 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 1302 y(executable)e(image)f(without)h(causing)f(name)h (clashes.)131 1408 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 1464 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 1521 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 1577 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 1737 y Fp(8.2)70 b(Discussion)75 1845 y Fv(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 1901 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 1958 y(di\013eren)o(t)15 b(mac)o(hines.)166 2017 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 2074 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 2130 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 2187 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 2243 y(p)q(erformance)15 b(information)h (they)f(wish)h Fl(without)g Fv(access)f(to)g(the)g(underlying)i (implemen)o(tation.)166 2302 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 2359 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 2415 y(users)f(to)g(the)g(MPI)g(standard.)166 2475 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 Fl(nothing)g Fv(ab)q(out)g(the)h(w)o (a)o(y)f(in)h(whic)o(h)75 2531 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 2588 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.)166 2647 y(While)g(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 2704 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)952 2828 y(60)p eop %%Page: 61 66 61 65 bop 75 -100 a Ft(8.3.)34 b(LOGIC)16 b(OF)f(THE)g(DESIGN)1115 b Fv(61)75 45 y(ma)o(y)17 b(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 102 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 158 y(wherev)o(er)f(it)h(is)f (useful.)166 214 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 271 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 327 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 384 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 440 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 497 y(justi\014cation)g (and)f(discussion)i(of)e(the)g(logic)h(for)f(those)g(requiremen)o(ts.) 166 553 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 610 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 666 y(equally)d(v)m(alid\).)75 806 y Fp(8.3)70 b(Logic)22 b(of)i(the)e(design)75 907 y Fv(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 964 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 1020 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 1076 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 1133 y(desired)g(e\013ects.)75 1272 y Fp(8.4)70 b(Examples)75 1376 y Fm(8.4.1)55 b(Pro\014ler)18 b(implem)o(en)n(tation)75 1461 y Fv(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 1518 y(MPI)p 167 1518 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 1574 y(trivially)f(b)q(e)f(ac)o (hiev)o(ed)g(th)o(us)f(:{)166 1631 y Fm(W)-6 b(ARNING)18 b(:)d Fv(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 1709 y Fk(static)23 b(int)g (totalBytes;)75 1766 y(static)g(int)g(totalTime;)75 1822 y(extern)g(int)g(now\(void\);)71 b(/*)23 b(Some)h(suitable)e(timer)i (function)e(!)i(*/)75 1935 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 1992 y({)147 2048 y(int)g(tstart)g(=)h(now\(\);)147 2105 y(int)f(result)g(=)h(PMPI_SEND\(tag,bytes,buffe)o(r,who\);)68 b(/*)24 b(Pass)f(on)h(all)f(the)g(arguments)g(*/)147 2217 y(totalBytes)f(+=)i(bytes;)405 b(/*)23 b(Accumulate)g(byte)g (count)g(*/)147 2274 y(totalTime)46 b(+=)24 b(now\(\))f(-)h(tstart;)190 b(/*)23 b(and)h(time)333 b(*/)147 2387 y(return)23 b(result;)75 2443 y(})75 2561 y Fm(8.4.2)55 b(MPI)19 b(library)f(implem)o(en)n (tation)75 2647 y Fv(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 2704 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)p eop %%Page: 62 67 62 66 bop 75 -100 a Fv(62)1180 b Ft(CHAPTER)15 b(8.)35 b(PR)o(OFILING)75 45 y Fv(dep)q(ends)17 b(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 165 y Fw(Systems)h(with)i(w)o(eak)f(sym)o(b)q(ols)75 250 y Fv(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 307 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 Fk(#pragma)23 b(weak)13 b Fv(th)o(us)75 363 y(:{)75 465 y Fk(#pragma)23 b(weak)g(MPI_EXAMPLE)g(=)g(PMPI_EXAMPLE)75 578 y(int)g(PMPI_EXAMPLE\(/*)f(appropriate)h(args)g(*/\))75 634 y({)170 691 y(/*)h(Useful)f(content)g(*/)75 747 y(})166 849 y Fv(The)d(e\013ect)g(of)g(this)g Fk(#pragma)f Fv(is)i(to)e (de\014ne)i(the)f(external)h(sym)o(b)q(ol)f Fk(MPI)p 1472 849 15 2 v 17 w(EXAMPLE)f Fv(as)h(a)g(w)o(eak)75 906 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 962 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 1019 y(link)o(er)h(will)h(use)f(the)f(w)o(eak) g(de\014nition.)75 1138 y Fw(Systems)h(without)j(w)o(eak)d(sym)o(b)q (ols)75 1224 y Fv(In)j(the)g(absence)g(of)f(w)o(eak)g(sym)o(b)q(ols)h (then)g(one)f(p)q(ossible)j(solution)e(w)o(ould)g(b)q(e)g(to)f(use)h (the)f(C)h(macro)75 1280 y(pre-pro)q(cessor)c(th)o(us)g(:{)75 1382 y Fk(#ifdef)23 b(PROFILELIB)75 1438 y(#)95 b(ifdef)23 b(__STDC__)75 1495 y(#)191 b(define)23 b(FUNCTION\(name\))f(P##name)75 1551 y(#)95 b(else)75 1608 y(#)191 b(define)23 b(FUNCTION\(name\))f (P/**/name)75 1664 y(#)95 b(endif)75 1721 y(#else)75 1777 y(#)g(define)23 b(FUNCTION\(name\))f(name)75 1834 y(#endif)166 1935 y Fv(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 2037 y Fk(int)23 b(FUNCTION\(MPI_EXAMPLE\)\(/*)e (appropriate)h(args)i(*/\))75 2094 y({)170 2150 y(/*)g(Useful)f (content)g(*/)75 2207 y(})166 2308 y Fv(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 2365 y(dep)q(ending)d(on)f(the)f (state)f(of)h(the)g Fk(PROFILELIB)f Fv(macro)h(sym)o(b)q(ol.)166 2421 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 2478 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,)75 2534 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 2591 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 2647 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 2704 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(:{)p eop %%Page: 63 68 63 67 bop 75 -100 a Ft(8.5.)34 b(MUL)l(TIPLE)16 b(LEVELS)g(OF)f(INTER)o (CEPTION)762 b Fv(63)75 45 y Fk(\045)24 b(cc)f(...)h(-lmyprof)f(-lpmpi) g(-lmpi)166 151 y Fv(Here)e Fk(libmyprof.a)e Fv(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 208 y(functions.)j Fk(libpmpi.a)15 b Fv(con)o(tains)i(the)f (\\name)h(shifted")g(MPI)f(functions,)h(and)g Fk(libmpi.a)e Fv(con)o(tains)75 264 y(the)g(normal)g(de\014nitions)i(of)e(the)g(MPI)h (functions.)75 407 y Fp(8.5)70 b(Multiple)20 b(lev)n(els)g(of)k(in)n (terception)75 509 y Fv(The)15 b(sc)o(heme)h(giv)o(en)g(here)f(do)q(es) h(not)f(directly)h(supp)q(ort)f(the)h(nesting)g(of)e(pro\014ling)j (functions,)e(since)i(it)75 565 y(pro)o(vides)f(only)f(a)g(single)h (alternativ)o(e)g(name)f(for)f(eac)o(h)h(MPI)g(function.)21 b(Consideration)16 b(w)o(as)e(giv)o(en)i(to)75 622 y(an)f(implemen)o (tation)i(whic)o(h)f(w)o(ould)g(allo)o(w)g(m)o(ultiple)h(lev)o(els)g (of)e(call)h(in)o(terception,)h(ho)o(w)o(ev)o(er)d(w)o(e)h(w)o(ere)75 678 y(unable)j(to)e(construct)g(an)g(implemen)o(tation)i(of)e(this)h (whic)o(h)h(did)f(not)g(ha)o(v)o(e)f(the)g(follo)o(wing)i(disadv)m(an-) 75 735 y(tages)143 829 y Fr(\017)23 b Fv(assuming)15 b(a)g(particular)h(implemen)o(tation)g(language.)143 922 y Fr(\017)23 b Fv(imp)q(osing)16 b(a)f(run)g(time)h(cost)f(ev)o(en) g(when)h(no)f(pro\014ling)h(w)o(as)f(taking)g(place.)75 1016 y(Since)i(one)e(of)g(the)h(ob)s(jectiv)o(es)f(of)g(MPI)h(is)f(to)g (p)q(ermit)h(e\016cien)o(t,)g(lo)o(w)f(latency)h(implemen)o(tations,)h (and)75 1073 y(it)j(is)f(not)g(the)h(business)g(of)f(a)g(standard)g(to) g(require)h(a)f(particular)h(implemen)o(tation)g(language,)g(w)o(e)75 1129 y(decided)d(to)e(accept)g(the)g(sc)o(heme)h(outlined)h(ab)q(o)o(v) o(e.)166 1186 y(Note,)f(ho)o(w)o(ev)o(er,)f(that)h(it)h(is)f(p)q (ossible)j(to)c(use)i(the)g(sc)o(heme)f(ab)q(o)o(v)o(e)g(to)g(implemen) o(t)i(a)e(m)o(ulti-lev)o(el)75 1242 y(system,)k(since)g(the)g(function) g(called)i(b)o(y)d(the)h(user)f(ma)o(y)g(call)i(man)o(y)e(di\013eren)o (t)g(pro\014ling)i(functions)75 1299 y(b)q(efore)15 b(calling)i(the)f (underlying)h(MPI)e(function.)166 1355 y(Unfortunately)22 b(suc)o(h)g(an)g(implemen)o(tation)h(ma)o(y)e(require)h(more)g(co-op)q (eration)g(b)q(et)o(w)o(een)g(the)75 1411 y(di\013eren)o(t)g (pro\014ling)i(libraries)g(than)e(is)h(required)g(for)e(the)i(single)g (lev)o(el)h(implemen)o(tation)f(detailed)75 1468 y(ab)q(o)o(v)o(e.)p eop %%Page: 64 69 64 68 bop 75 356 a Fq(Chapter)34 b(9)75 564 y Fx(Con)m(texts)40 b({)g(Prop)s(osal)h(I)876 786 y Fv(Marc)14 b(Snir)75 927 y Fp(9.1)70 b(Con)n(texts)75 1029 y Fv(A)17 b Fw(comm)o(unication)k (con)o(text)c Fv(\(for)f(short,)g Fw(con)o(text)p Fv(\))h(is)g(a)g(mec) o(hanism)g(for)g(the)g(mo)q(dularization)75 1085 y(of)h(MPI)g(comm)o (unication.)29 b(An)o(y)18 b(MPI)g(comm)o(unication)h(o)q(ccurs)f (within)h(a)f(con)o(text,)g(and)g(do)q(es)g(not)75 1142 y(in)o(terfere)j(with)g(comm)o(unication)h(executed)g(within)g(another) e(con)o(text.)37 b(F)l(urthermore,)21 b(a)g(con)o(text)75 1198 y(sp)q(eci\014es)c(a)e(lo)q(cal)h(name)f(space)h(for)e(pro)q (cesses)i(that)e(comm)o(unicate)h(in)h(this)g(con)o(text.)j(The)d(pro)q (cesses)75 1255 y(that)i(participate)i(in)g(a)f(con)o(text)f(are)h (asso)q(ciated)g(with)g(a)g Fw(rank)p Fv(,)g(whic)o(h)h(ranges)e(from)h (0)f(to)h Fu(n)13 b Fr(\000)g Fv(1,)75 1311 y(where)18 b Fu(n)h Fv(is)f(the)h(n)o(um)o(b)q(er)f(of)g(pro)q(cesses)g(that)g (participate)h(in)g(the)f(con)o(text.)28 b(This)19 b(rank)f(is)g(used)h (in)75 1368 y(in)o(terpro)q(cess)d(comm)o(unication)h(as)e(the)h(lo)q (cal)h(address)f(of)f(the)h(pro)q(cess)g(within)h(that)e(con)o(text.)21 b(Th)o(us,)75 1424 y(comm)o(unication)16 b(within)g(a)f(con)o(text)g (is)h(una\013ected)f(b)o(y)g(comm)o(unication)h(outside)g(that)e(con)o (text.)166 1480 y(A)22 b(pro)q(cess)g(ma)o(y)g(comm)o(unicate)g(sim)o (ultaneously)h(in)g(sev)o(eral)f(con)o(texts.)40 b(The)22 b(con)o(text)g(of)f(a)75 1537 y(comm)o(unication)16 b(is)g(explicitly)i (stated)c(as)h(a)g(parameter)f(of)h(the)g(comm)o(unication)h(call.)166 1593 y(A)h(pro)q(cess)g(that)f(participates)i(in)g(a)e(comm)o (unication)i(con)o(text)f(accesses)g(this)g(con)o(text)g(using)g(a)75 1650 y Fl(c)n(ontext)h(hand)r(le)g Fv(\(i.e.,)f(a)h(handle)h(to)e(an)g (opaque)h(ob)s(ject)f(that)g(iden)o(ti\014es)j(a)d(con)o(text\).)26 b(This)19 b(handle)75 1706 y(can)c(b)q(e)h(used)g(to)143 1788 y Fr(\017)23 b Fv(Find)14 b(information)f(ab)q(out)g(this)g(con)o (text,)g(suc)o(h)g(as)g(the)g(n)o(um)o(b)q(er)h(of)e(pro)q(cesses)i (that)e(participate)189 1844 y(in)k(the)f(con)o(text,)f(or)h(the)g (rank)g(of)g(the)g(calling)i(pro)q(cess)f(within)g(the)f(con)o(text.) 143 1933 y Fr(\017)23 b Fv(Comm)o(unicate)12 b(with)h(other)f(pro)q (cesses)h(that)e(participate)j(in)f(the)f(con)o(text;)h(these)f(pro)q (cesses)h(are)189 1989 y(addressed)i(using)h(their)g(con)o(text)f (rank.)143 2078 y Fr(\017)23 b Fv(Create)14 b(new)i(con)o(texts.)166 2160 y(Con)o(text)i(handles)h(cannot)g(b)q(e)g(transferred)f(for)g(one) h(pro)q(cess)f(to)g(another;)i(they)e(can)h(b)q(e)g(used)75 2216 y(only)12 b(on)g(the)f(pro)q(cess)h(where)g(they)g(w)o(ere)f (created.)19 b(Th)o(us,)11 b(\\kno)o(wledge")h(ab)q(out)f(a)h(con)o (text)f(exists)g(only)75 2273 y(lo)q(cally)l(,)17 b(at)e(the)h(pro)q (cesses)g(that)f(participate)h(in)h(that)d(con)o(text.)21 b(Op)q(erations)16 b(within)h(a)e(comm)o(unica-)75 2329 y(tion)h(con)o(texts)e(\(including)k(the)d(generation)h(of)f(new)g(sub) q(con)o(texts\))g(do)g(not)g(require)h(comm)o(unication)75 2385 y(with)g(pro)q(cesses)f(that)g(do)g(not)g(participate)g(in)i(that) d(con)o(text.)166 2442 y(F)l(ollo)o(ws)h(examples)h(of)f(p)q(ossible)i (uses)e(for)g(con)o(texts.)75 2561 y Fm(9.1.1)55 b(Lo)r(osely)17 b(sync)n(hronous)i(library)f(call)g(in)n(terface)75 2647 y Fv(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 2704 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)952 2828 y(64)p eop %%Page: 65 70 65 69 bop 75 -100 a Ft(9.2.)34 b(BASIC)16 b(CONTEXT)f(OPERA)l(TIONS)942 b Fv(65)75 45 y(separately)l(,)23 b(then)e(one)h(should)g(b)q(ew)o(are) g(of)e(the)i(p)q(ossibilit)o(y)h(that)e(the)g(library)h(co)q(de)g(ma)o (y)f(receiv)o(e)75 102 y(b)o(y)f(mistak)o(e)g(messages)f(send)i(b)o(y)f (the)g(caller)h(co)q(de,)g(and)f(vice-v)o(ersa.)35 b(The)20 b(problem)h(is)g(solv)o(ed)f(b)o(y)75 158 y(allo)q(cating)c(a)f (di\013eren)o(t)h(con)o(text)e(to)h(the)g(library)l(,)h(th)o(us)f(prev) o(en)o(ting)h(un)o(w)o(an)o(ted)e(in)o(terference.)75 277 y Fm(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 363 y Fv(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 419 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 476 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 532 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)75 589 y(to)g(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 645 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 701 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 820 y Fm(9.1.3)55 b(Collectiv)n(e)17 b(comm)n(unication)75 906 y Fv(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 963 y(Eac)o(h)15 b(suc)o(h)h(group)f(can)g(b)q(e)h (represen)o(ted)g(b)o(y)f(a)g(distinct)h(comm)o(unication)g(con)o (text.)k(This)c(pro)o(vides)f(a)75 1019 y(simple)g(mec)o(hanism)f(to)f (ensure)h(that)f(comm)o(unication)h(that)f(p)q(ertains)h(to)f (collectiv)o(e)i(comm)o(unication)75 1076 y(within)h(one)f(group)f(is)h (not)f(confused)i(with)f(collectiv)o(e)h(comm)o(unication)g(within)f (another)g(group,)f(and)75 1132 y(a)o(v)o(oids)h(the)g(in)o(tro)q (duction)h(of)f(t)o(w)o(o)f(di\013eren)o(t)h(mec)o(hanisms)h(with)g (similar)g(functionalit)o(y)l(.)75 1251 y Fm(9.1.4)55 b(Ligh)n(t)n(w)n(eigh)n(t)19 b(gang)h(sc)n(heduling)75 1337 y Fv(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 1393 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 1450 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 1506 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 1562 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 1619 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 1675 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 1732 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 1788 y(\(MPI)d(do)q(es)g(not)g(require)h(m)o(ultithreaded) h(pro)q(cesses.\))75 1929 y Fp(9.2)70 b(Basic)22 b(Con)n(text)g(Op)r (erations)75 2030 y Fv(A)17 b(global)g(con)o(text)g Fw(MPI)p 534 2030 16 2 v 18 w(ALL)g Fv(is)g(prede\014ned.)26 b(All)19 b(pro)q(cesses)e(participate)g(in)h(this)f(con)o(text)f(when)75 2087 y(computation)k(starts.)32 b(MPI)20 b(do)q(es)g(not)f(sp)q(ecify)i (ho)o(w)e(pro)q(cesses)h(are)g(initially)i(rank)o(ed)e(within)h(the)75 2143 y(con)o(text)11 b Fk(MPI)p 308 2143 15 2 v 17 w(ALL)p Fv(.)g(It)h(is)g(exp)q(ected)h(that)f(the)g(start-up)f(pro)q(cedure)i (used)f(to)f(initiate)i(an)f(MPI)g(program)75 2200 y(\(at)j(load-time)j (or)d(run-time\))i(will)h(pro)o(vide)f(information)g(or)e(con)o(trol)h (on)h(this)f(initial)j(ranking)e(\(e.g.,)75 2256 y(b)o(y)12 b(sp)q(ecifying)j(that)c(pro)q(cesses)i(are)f(rank)o(ed)h(according)g (to)e(their)i(pid's,)h(or)d(according)i(to)f(the)h(ph)o(ysical)75 2312 y(addresses)h(of)f(the)h(executing)g(pro)q(cessors,)f(or)g (according)h(to)f(a)h(n)o(um)o(b)q(ering)g(sc)o(heme)g(sp)q(eci\014ed)i (at)d(load)75 2369 y(time\).)166 2508 y Fo(Discussion:)h Fn(If)e(w)o(e)h(think)e(of)h(adding)f(new)i(pro)q(cesses)i(at)d (run-time,)e(then)j Fj(MPI)p 1454 2508 14 2 v 15 w(ALL)f Fn(con)o(v)o(eys)g(the)h(wrong)75 2564 y(impression,)f(since)j(it)f(is) f(just)h(the)h(initial)d(set)j(of)e(pro)q(cesses.)166 2704 y Fv(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.)p eop %%Page: 66 71 66 70 bop 75 -100 a Fv(66)844 b Ft(CHAPTER)15 b(9.)35 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(I)166 45 y Fw(MPI)p 275 45 16 2 v 18 w(COPY)p 446 45 V 18 w(CONTEXT\(new)o(con)o(text,)g (con)o(text\))166 137 y Fv(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 193 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 250 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 306 y(function.)j(The)15 b(parameters)f(are)75 406 y Fw(OUT)k(new)o(con)o(text)k Fv(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 462 y(with)g(an)g(ob)s(ject)g(b)q(efore)g(the)h(call.)75 554 y Fw(IN)h(con)o(text)23 b Fv(handle)17 b(to)d(old)i(con)o(text)166 689 y Fw(MPI)p 275 689 V 18 w(NEW)p 422 689 V 19 w(CONTEXT\(new)o(con)o (text,)h(con)o(text,)g(arra)o(y)p 1338 689 V 18 w(of)p 1398 689 V 19 w(ranks,)f(size\))75 824 y(OUT)i(new)o(con)o(text)k Fv(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 880 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 972 y Fw(IN)i(con)o(text)23 b Fv(handle)17 b(to)d(old)i(con)o(text)75 1064 y Fw(IN)h(arra)o(y)p 277 1064 V 18 w(of)p 337 1064 V 19 w(ranks)22 b Fv(ranks)15 b(in)h(the)f(old)h(con)o(text)e(of)h(the) g(pro)q(cesses)h(that)e(join)i(the)f(new)h(con)o(text)75 1156 y Fw(IN)h(size)23 b Fv(size)16 b(of)f(new)h(con)o(text)e(\(in)o (teger\))166 1255 y(A)20 b(new)g(con)o(text)f(is)i(created)e(for)h(the) g(pro)q(cesses)g(in)h(the)f(old)g(con)o(text)f(that)g(are)h(listed)h (in)g(the)75 1312 y(arra)o(y)l(.)f(The)c(pro)q(cesses)f(are)h(listed)g (according)g(to)f(their)h(rank)g(in)g(the)f(old)i(con)o(text.)j(The)c (rank)f(of)g(the)75 1368 y(pro)q(cesses)h(in)g(the)f(new)g(con)o(text)g (is)h(determined)g(b)o(y)f(their)h(place)g(in)g(the)f(list.)166 1424 y(The)h(call)g(has)g(to)f(b)q(e)h(executed)h(b)o(y)e(all)i(pro)q (cesses)f(listed)g(in)h(the)f(arra)o(y;)e(all)i(mak)o(e)f(the)h(call)h (with)75 1481 y(the)h(same)g(list)i(of)d(parameters.)29 b(Pro)q(cesses)18 b(in)h(the)g(old)g(con)o(text)e(that)h(do)g(not)g(b)q (elong)i(to)d(the)i(new)75 1537 y(con)o(text)14 b(need)i(not)f(mak)o(e) g(the)g(call.)21 b(The)15 b(call)h(is)g(blo)q(c)o(king;)g(no)f(pro)q (cess)g(returns)g(from)f(the)i(call)g(un)o(til)75 1594 y(all)g(pro)q(cesses)g(ha)o(v)o(e)f(executed)h(the)f(call.)166 1686 y Fw(MPI)p 275 1686 V 18 w(SPLIT)p 445 1686 V 19 w(CONTEXT\(new)o(con)o(text,)i(con)o(text,)g(k)o(ey)l(,)f(index\))75 1821 y(OUT)i(new)o(con)o(text)k Fv(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 1877 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 1969 y Fw(IN)i(con)o(text)23 b Fv(handle)17 b(to)d(old)i(con)o(text)75 2061 y Fw(IN)h(k)o(ey)22 b Fv(in)o(teger)75 2153 y Fw(IN)17 b(index)23 b Fv(in)o(teger)166 2252 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 Fk(key)p Fv(;)h(this)h(con)o(text)e(is)h (shared)g(b)o(y)g(all)75 2308 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 2365 y(rank)o(ed)j(according)g(to)g(the)g(order)g(of)f(the)h Fk(index)g Fv(v)m(alues)h(they)f(pro)o(vided;)h(in)g(case)f(of)f(ties,) i(pro)q(cesses)75 2421 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 2478 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 2534 y(call.)166 2591 y(P)o(articular)g(uses)h(of)e(this)i(function)g (are:)166 2647 y(\(i\))g(Reordering)h(pro)q(cesses:)22 b(All)c(pro)q(cesses)e(pro)o(vide)h(the)f(same)g Fk(key)g Fv(v)m(alue,)h(and)g(pro)o(vide)f(their)75 2704 y(index)g(in)h(the)e (new)g(order.)p eop %%Page: 67 72 67 71 bop 75 -100 a Ft(9.2.)34 b(BASIC)16 b(CONTEXT)f(OPERA)l(TIONS)942 b Fv(67)166 45 y(\(ii\))15 b(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 102 y(pro)q(cesses:)21 b(All)c(pro)q(cesses)f(pro)o (vide)g(the)g(same)f Fk(index)g Fv(v)m(alue,)i(and)f(pro)o(vide)g(a)f (k)o(ey)h(iden)o(tifying)h(their)75 158 y(new)e(sub)q(con)o(text.)166 214 y Fk(MPI)p 241 214 15 2 v 17 w(COPY)p 354 214 V 16 w(CONTEXT)g Fv(is)h(a)f(particular)i(case)e(of)h Fk(MPI)p 1069 214 V 16 w(SPLIT)p 1205 214 V 17 w(CONTEXT)p Fv(,)e(when)i(all)h (pro)q(cesses)f(pro-)75 271 y(vide)g(the)g(same)e(k)o(ey)h(and)h(index) g(parameter.)166 363 y Fw(MPI)p 275 363 16 2 v 18 w(RANK\(rank,)g(con)o (text\))75 504 y(OUT)i(rank)23 b Fv(in)o(teger)75 598 y Fw(IN)17 b(con)o(text)23 b Fv(con)o(text)15 b(handle)166 705 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.)166 796 y Fw(MPI)p 275 796 V 18 w(SIZE\(size,)h(con)o(text\))75 938 y(OUT)g(size)23 b Fv(in)o(teger)75 1032 y Fw(IN)17 b(con)o(text)23 b Fv(con)o(text)15 b(handle)166 1138 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.)166 1195 y(A)d(con)o(text)g(ob)s(ject)f(is)i(destro)o(y)o (ed)f(using)h(the)f Fk(MPI)p 1036 1195 15 2 v 17 w(FREE)f Fv(function.)75 1316 y Fm(9.2.1)55 b(Usage)19 b(note)75 1402 y Fv(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 1459 y(b)q(e)c(called)i(b)o(y)e(all)g(pro) q(cesses,)g(and)g(that)f(generate)h(a)g(con)o(text)f(for)g(the)h(use)g (of)f(that)g(library)l(.)21 b(A)14 b(sc)o(heme)75 1515 y(for)j(allo)o(wing)i(eac)o(h)g(link)o(ed)g(library)g(to)f(ha)o(v)o(e)g (its)g(o)o(wn)f(initializati)q(on)k(co)q(de)d(w)o(ould)h(can)f(b)q(e)h (used)g(for)75 1572 y(this)d(purp)q(ose)f(\(assuming)h(the)f(library)h (will)h(not)e(ha)o(v)o(e)f(sev)o(eral)i(concurren)o(t)f(instan)o (tiations\).)166 1628 y(Use)g(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 1684 y(text)e Fk(ALL)g Fv(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 1741 y(corresp)q(onding)g(con)o(text.)166 1797 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 1854 y(pro)q(cesses)f(where)f(collectiv)o(e)i(comm)o (unication)f(is)g(to)e(o)q(ccur.)166 1910 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 1967 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 2023 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 2156 y Fo(Implemen)o(tati)o(on)d(note:)166 2205 y Fn(W)m(e)18 b(outline)f(here)i(t)o(w)o(o)f(p)q(ossible)g(implemen)o(tations)d(of)j (con)o(texts.)31 b(They)19 b(are)f(b)o(y)g(no)g(means)f(the)i(only)75 2255 y(p)q(ossible)c(ones.)23 b(In)15 b(eac)o(h)g(implemen)o(tation)d (w)o(e)j(assume)g(that)g(a)g(con)o(text)h(ob)r(ject)g(is)f(a)g(p)q(oin) o(ter)g(to)g(a)g(structure)75 2305 y(that)d(describ)q(es)i(the)f(con)o (text.)18 b(A)12 b(comp)q(onen)o(t)f(of)g(this)h(structure)i(is)e(a)g (table)f(of)h(the)g(pro)q(cesses)j(that)d(participate)75 2355 y(in)17 b(the)i(con)o(text,)f(ordered)h(b)o(y)f(rank.)29 b(W)m(e)17 b(assume)h(that)f(the)i(n)o(um)o(b)q(er)e(of)g(concurren)o (tly)i(activ)o(e)e(con)o(texts)i(at)75 2405 y(eac)o(h)12 b(pro)q(cess)i(is)d(relativ)o(ely)g(small;)e(sa)o(y)j(16-32.)k(In)c (either)g(implemen)o(tatio)o(n)d(one)j(migh)o(t)d(ha)o(v)o(e)j(disjoin) o(t)e(message)75 2455 y(queues)j(for)e(eac)o(h)i(con)o(text,)f(or)g(ha) o(v)o(e)f(shared)i(queues,)g(with)e(the)h(righ)o(t)g(mec)o(hanisms)d (for)j(con)o(text)g(matc)o(hing)e(and)75 2504 y(bu\013er)15 b(allo)q(cation.)166 2554 y(Prop)q(osal)f(1:)j(Large)d(con)o(text)h (tags.)166 2604 y(In)d(this)g(implem)o(en)o(tation)d(w)o(e)j(use)h (large)e(con)o(text)i(tags)f(\(sa)o(y)f(32)h(bits\),)g(so)g(that)f (matc)o(hing)f(of)i(an)f(incoming)75 2654 y(tag)19 b(with)g(a)h(lo)q (cal)e(pro)q(cess)k(requires)f(to)e(p)q(erform)g(a)g(searc)o(h)i(in)e (a)g(hash)h(table)f(or)h(another)g(similar)d(searc)o(h)75 2704 y(structure)e(\(this)d(o)q(ccurs)i(whenev)o(er)g(a)e(message)g(is) h(receiv)o(ed\).)19 b(All)11 b(messages)i(sen)o(t)g(within)f(a)g(con)o (text)h(carry)g(the)p eop %%Page: 68 73 68 72 bop 75 -100 a Fv(68)844 b Ft(CHAPTER)15 b(9.)35 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(I)75 45 y Fn(same)c(tag)h(v)n(alue.)k (W)m(e)c(use)h(as)g(con)o(text)f(tag)g(the)h(pid)f(of)f(the)i(lo)o(w)o (est)f(n)o(um)o(b)q(ered)g(pro)q(cess)i(in)e(the)h(con)o(text)g (\(let's)75 95 y(call)g(it)g(the)h(con)o(text)g(leader\),)h (concatenated)g(with)e(a)g(coun)o(ter)i(that)e(is)h(incremen)o(ted)g (whenev)o(er)h(this)e(pro)q(cess)75 145 y(allo)q(cates)h(a)g(new)g (tag.)24 b(This)16 b(guaran)o(tee)g(a)g(unique)g(tag)g(for)f(eac)o(h)i (group)f(\(sp)q(ecial)g(co)q(de)h(needed)g(for)f(coun)o(ter)75 195 y(wraparound\).)166 247 y Fj(MPI)p 235 247 14 2 v 15 w(COPY)p 338 247 V 15 w(CONTEXT)11 b Fn(-)h(A)h(new)g(tag)f(is)g (generated)i(b)o(y)f(incremen)o(ting)e(the)i(old)f(tag)h(b)o(y)f(one;)h (one)f(can)h(either)75 296 y(cop)o(y)f(the)g(old)f(con)o(text)h(table,) g(or)f(create)j(a)d(new)h(p)q(oin)o(ter)g(to)g(the)g(old)f(table.)17 b(A)12 b(global)e(barrier)i(sync)o(hronization)75 346 y(is)i(needed)h(to)f(mak)o(e)e(sure)j(the)g(call)e(is)h(blo)q(c)o (king.)166 398 y Fj(MPI)p 235 398 V 15 w(SPLIT)p 360 398 V 15 w(CONTEXT)j Fn(-)h(A)h(naiv)o(e)f(implemen)o(tatio)o(n)e(is)j (to)f(ha)o(v)o(e)g(an)h(all-to-all)d(comm)o(unicati)o(on)g(where)75 448 y(eac)o(h)h(pro)q(cess)i(gathers)f(the)f Fj(\(key,)k(index\))15 b Fn(pairs)i(of)f(all)g(pro)q(cesses)j(in)e(the)g(old)f(group.)27 b(Eac)o(h)17 b(pro)q(cess)i(can)75 498 y(determine)14 b(whether)h(it)e(is)h(the)g(leader)h(of)e(a)g(new)i(group)e(and)h (broadcast)g(the)h(new)f(group)g(tag)f(to)h(all)e(mem)o(b)q(ers)75 548 y(\(using)j(p)q(oin)o(t)g(to)g(p)q(oin)o(t)g(comm)o(unicatio)o(n)e (in)i(the)h(old)e(group,)h(or)g(using)h(another)f(all-to-all)e(comm)o (unicatio)o(n\).)75 597 y(Algorithmic)f(minds)g(will)g(think)i(of)f (man)o(y)f(p)q(ossible)i(optimizations.)166 649 y Fj(MPI)p 235 649 V 15 w(NEW)p 316 649 V 15 w(CONTEXT)c Fn(-)g(The)i(lo)o(w)o (est)f(n)o(um)o(b)q(ered)f(pro)q(cess)j(in)e(the)g(list)g(broadcast)g (the)h(new)f(con)o(text)h(tag)e(to)h(all)75 699 y(pro)q(cesses)i(in)d (the)g(list)g(\(using)g(p)q(oin)o(t)g(to)g(p)q(oin)o(t)f(comm)o (unication)e(op)q(erations\).)17 b(A)11 b(more)e(robust)h(implemen)o (tation)75 749 y(ma)o(y)i(en)o(tail)h(the)i(broadcast)f(of)f(the)i(mem) o(b)q(er)d(list,)h(for)h(error)g(c)o(hec)o(king.)166 801 y Fj(MPI)p 235 801 V 15 w(RANK,)21 b(MPI)p 447 801 V 15 w(SIZE)13 b Fn(-)g(require)i(lo)q(cal)e(access)j(to)e(the)g(con)o (text)h(ob)r(ject)166 853 y(Prop)q(osal)f(2:)j(Small)12 b(con)o(text)i(tags.)166 905 y(In)19 b(that)h(implemen)o(tatio)o(n)d (the)j(n)o(um)o(b)q(er)f(of)g(distinct)h(con)o(text)g(tag)f(v)n(alues)g (is)h(equal)f(to)g(the)h(maxima)o(l)75 955 y(n)o(um)o(b)q(er)d(of)g (con)o(texts)i(that)f(can)g(b)q(e)h(activ)o(e)f(at)f(the)i(same)e(no)q (de.)30 b(Th)o(us,)19 b(the)f(con)o(text)h(tag)e(of)h(an)f(incoming)75 1005 y(message)i(can)g(b)q(e)g(used)h(to)f(index)f(directly)i(in)o(to)e (a)g(con)o(text)i(table,)g(a)o(v)o(oiding)c(the)k(need)g(for)e(a)h (searc)o(h)h(in)e(a)75 1055 y(hash)13 b(table.)18 b(Eac)o(h)13 b(pro)q(cess)i(has)e(a)f(unique)h(con)o(text)h(tag)e(for)h(incoming)d (comm)o(unication)g(within)i(this)h(con)o(text.)75 1104 y(Ho)o(w)o(ev)o(er,)h(di\013eren)o(t)h(con)o(text)g(tag)e(v)n(alues)h (ma)o(y)e(b)q(e)j(used)g(b)o(y)f(di\013eren)o(t)h(pro)q(cesses)h(for)e (the)h(same)e(con)o(text)i(\(this)75 1154 y(is)e(necessary)i(in)e (order)h(to)f(densely)h(p)q(opulate)f(the)h(con)o(text)f(tag)g (range\).)18 b(The)c(con)o(text)g(table)f(carries,)h(for)e(eac)o(h)75 1204 y(mem)o(b)q(er)g(of)i(the)g(con)o(text,)g(the)h(con)o(text)f(tag)g (to)f(b)q(e)i(used)g(when)f(sending)g(messages)g(to)g(it.)166 1256 y Fj(MPI)p 235 1256 V 15 w(COPY)p 338 1256 V 15 w(CONTEXT)c Fn(-)h(A)h(new)g(tag)f(is)h(generated)h(b)o(y)e(eac)o(h)h (pro)q(cess)i(for)d(the)i(new)f(con)o(text,)g(and)f(broadcast)75 1306 y(to)18 b(all)g(other)h(mem)o(b)q(ers)f(of)g(the)h(con)o(text,)h (using)e(an)h(all-to-all)d(comm)o(uni)o(cation.)29 b(A)19 b(new)g(con)o(text)h(table)e(is)75 1356 y(created,)d(with)e(these)j (new)e(tags.)166 1408 y Fj(MPI)p 235 1408 V 15 w(SPLIT)p 360 1408 V 15 w(CONTEXT)j Fn(-)h(A)h(naiv)o(e)f(implemen)o(tatio)o(n)e (is)j(to)f(ha)o(v)o(e)g(an)h(all-to-all)d(comm)o(unicati)o(on)g(where) 75 1457 y(eac)o(h)e(pro)q(cess)h(gathers)f(the)h Fj(\(key,)20 b(index,)h(new)p 881 1457 V 15 w(context)p 1050 1457 V 14 w(tag\))13 b Fn(triples)h(of)e(all)h(pro)q(cesses)j(in)d(the)h (old)f(group.)75 1507 y(Eac)o(h)g(pro)q(cess)h(then)f(creates)i(a)d (new)h(con)o(text)g(table)g(for)f(the)h(pro)q(cesses)i(that)e(pro)o (vided)f(the)i(same)d(k)o(ey)i(v)n(alue)f(as)75 1557 y(it.)166 1609 y Fj(MPI)p 235 1609 V 15 w(NEW)p 316 1609 V 15 w(CONTEXT)g Fn(-)i(Similar)d(to)j Fj(MPI)p 785 1609 V 15 w(COPY)p 888 1609 V 15 w(CONTEXT)p Fn(.)166 1661 y Fj(MPI)p 235 1661 V 15 w(RANK,)21 b(MPI)p 447 1661 V 15 w(SIZE)13 b Fn(-)g(require)i(lo)q(cal)e(access)j(to)e(the)g(con)o (text)h(ob)r(ject)75 1899 y Fp(9.3)70 b(Adv)l(anced)23 b(con)n(text)f(op)r(erations)75 2005 y Fv(Additional)e(functions)e(are) f(required)i(to)e(supp)q(ort)h(a)f(less)i(static)e(mo)q(del,)i(where)f (pro)q(cesses)g(ma)o(y)f(b)q(e)75 2062 y(created)i(or)f(deleted)i (during)g(execution.)31 b(This)20 b(requires)f(con)o(texts)f(to)h(gro)o (w)e(or)h(b)q(e)i(merged.)30 b(This)75 2118 y(section)12 b(outlines)g(p)q(ossible)h(mec)o(hanisms)f(for)e(suc)o(h)i(extension.) 19 b(The)11 b(lac)o(k)h(of)f(in)o(terupt)g(driv)o(en)h(comm)o(u-)75 2175 y(nication)j(mec)o(hanisms)g(in)g(MPI)f(restricts)g(the)g (functionalit)o(y)h(of)f(suc)o(h)g(mec)o(hanisms:)20 b(A)14 b(new)h(pro)q(cess)75 2231 y(can)g(join)f(an)h(existing)g(con)o (text)f(only)h(if)g(all)g(pro)q(cesses)g(that)f(participate)h(in)g(the) f(old)h(con)o(text)f(execute)75 2287 y(a)h(call)h(to)f(add)g(this)h (new)f(pro)q(cess.)166 2346 y(A)j(prede\014ned)i(lo)q(cal)g(con)o(text) e Fk(MPI)p 792 2346 15 2 v 16 w(ME)g Fv(where)h(only)g(one)f(pro)q (cess)h(participates,)g(is)g(prede\014ned)75 2403 y(for)c(eac)o(h)g (pro)q(cess.)166 2497 y Fw(MPI)p 275 2497 16 2 v 18 w(SP)l(A)-6 b(WN\()17 b(new)o(con)o(text,)f(oldcon)o(text,)i(arra)o(y)p 1202 2497 V 18 w(of)p 1262 2497 V 19 w(en)o(vironmen)o(ts,)d(len\))166 2591 y Fv(Spa)o(wn)h(new)h(pro)q(cesses)g(and)g(create)f(a)g(new)h(con) o(text)f(that)g(includes)j(the)d(pro)q(cesses)h(in)h(the)e(old)75 2647 y(con)o(text,)d(follo)o(w)o(ed)h(b)o(y)g(the)g(newly)h(spa)o(wned) f(pro)q(cesses.)19 b(The)14 b(arra)o(y)f(pro)o(vides)h(en)o(vironmen)o (t)g(param-)75 2704 y(eters)j(for)f(eac)o(h)h(newly)h(generated)e(pro)q (cess.)26 b(The)17 b(form)f(of)g(the)h(arra)o(y)f(en)o(tries)h(are)g (implemen)o(tation)p eop %%Page: 69 74 69 73 bop 75 -100 a Ft(9.3.)34 b(AD)o(V)-5 b(ANCED)14 b(CONTEXT)i(OPERA)l(TIONS)819 b Fv(69)75 45 y(dep)q(enden)o(t)19 b({)e(they)g(ma)o(y)f(include)k(information)d(on)h(the)f(pro)q(cessor)g (that)f(is)i(to)f(run)g(the)h(new)f(tasks,)75 102 y Fk(argv,)23 b(argc)15 b Fv(argumen)o(ts,)f(etc.)75 214 y Fw(OUT)k(new)o(con)o(text) k Fv(handle)17 b(to)d(new)i(con)o(text)75 314 y Fw(OUT)i(oldcon)o(text) 24 b Fv(handle)16 b(to)f(old)h(con)o(text)75 413 y Fw(IN)h(arra)o(y)p 277 413 16 2 v 18 w(of)p 337 413 V 19 w(en)o(vironmen)o(ts)k Fv(list)16 b(of)f(en)o(vironmen)o(ts)g(for)g(new)g(pro)q(cesses)75 512 y Fw(IN)i(len)23 b Fv(n)o(um)o(b)q(er)16 b(of)f(new)g(pro)q(cesses) h(\(in)o(teger\))166 625 y(As)23 b(particular)g(cases,)h Fk(MPI)p 669 625 15 2 v 17 w(SPAWN\()f(newcontext,)f(MPI)p 1211 625 V 17 w(ME,...\))42 b Fv(allo)o(ws)23 b(one)g(pro)q(cess)g(to) 75 681 y(spa)o(wn)f(new)g(pro)q(cesses,)j(and)d(create)g(a)g(new)h(con) o(text)e(that)h(consists)g(of)g(the)g(spa)o(wning)h(pro)q(cess,)75 737 y(follo)o(w)o(ed)13 b(b)o(y)g(the)g(spa)o(wned)g(pro)q(cesses;)h Fk(MPI)p 849 737 V 17 w(SPAWN\()23 b(newcontext,)f(MPI)p 1391 737 V 17 w(ALL,...\))c Fv(allo)o(ws)13 b(to)g(add)75 794 y(to)21 b(create)g(a)g(new)h(\\univ)o(ersal")g(con)o(text)e(that)h (con)o(tains)h(all)g(previous)g(pro)q(cesses)g(and)g(the)f(newly)75 850 y(spa)o(wned)15 b(pro)q(cesses.)166 944 y Fw(MPI)p 275 944 16 2 v 18 w(BCAST)p 473 944 V 19 w(CONTEXT\()d(new)o(con)o (text,)g(con)o(text,)g(ro)q(ot,)h(arra)o(y)p 1514 944 V 18 w(of)p 1574 944 V 19 w(ranks,)e(coun)o(t\))166 1093 y Fv(Beha)o(v)o(es)i(lik)o(e)h Fk(MPI)p 495 1093 15 2 v 16 w(NEW)p 583 1093 V 17 w(CONTEXT)p Fv(,)e(except)h(that)f(only)h (one)g(pro)q(cess)g(in)h(the)f(old)g(con)o(text,)f(namely)75 1150 y(the)21 b(pro)q(cess)g(with)h(rank)e Fk(root)p Fv(,)i(has)e(to)h(compute)g(the)g(list)h(of)e(the)h(ranks)g(of)f(the)h (pro)q(cesses)h(that)75 1206 y(participate)c(in)g(the)f(new)h(con)o (text.)25 b(The)17 b(new)g(con)o(text)g(do)q(es)h(not)e(necessarily)j (include)g(the)f(pro)q(cess)75 1263 y Fk(root)p Fv(.)h(The)c(call)h(is) f(blo)q(c)o(king,)h(and)f(it)g(has)f(to)g(b)q(e)i(executed)f(b)o(y)g (all)g(pro)q(cesses)h(in)f(the)g(list)g(and)g(b)o(y)g(the)75 1319 y(ro)q(ot)f(pro)q(cess.)75 1432 y Fw(OUT)k(new)o(con)o(text)k Fv(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 1488 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 1587 y Fw(IN)i(con)o(text)23 b Fv(handle)17 b(to)d(old)i(con)o(text)75 1687 y Fw(IN)h(ro)q(ot)23 b Fv(index)17 b(of)e(new)g(con)o(text)g (creator)f(in)i(old)g(con)o(text)75 1786 y Fw(IN)h(arra)o(y)p 277 1786 16 2 v 18 w(of)p 337 1786 V 19 w(ranks)22 b Fv(ranks)17 b(in)h(old)g(con)o(texts)e(of)h(mem)o(b)q(ers)h(of)f(new)g (con)o(text;)g(signi\014can)o(t)i(only)f(at)189 1842 y(ro)q(ot)75 1941 y Fw(IN)f(coun)o(t)23 b Fv(size)16 b(of)f(new)h(con)o(text;)e(signi\014can)o(t)i(only)g(at)e(ro)q(ot)166 2130 y Fo(Implemen)o(tati)o(on)e(note:)166 2181 y Fn(The)19 b(call)e(can)i(b)q(e)g(implemen)o(ted)d(as)i(a)g(broadcast)h(from)e (the)i(ro)q(ot)f(to)g(all)g(new)g(con)o(text)h(participan)o(ts,)75 2231 y(follo)o(w)o(ed)12 b(b)o(y)h(the)h(co)q(de)g(of)f Fj(MPI)p 574 2231 14 2 v 15 w(NEW)p 655 2231 V 15 w(CONTEXT)f Fn(\(the)i(broadcast)g(is)f(executed)i(using)e(p)q(oin)o(t-to-p)q(oin)o (t)f(comm)o(uni-)75 2281 y(cation\).)166 2421 y Fv(Example:)34 b(Supp)q(ose)24 b(one)e(has)g(a)g(serv)o(er)g(con)o(text)g Fk(SERVER)p Fv(,)f(and)h(a)g(clien)o(t)i(con)o(text)d Fk(CLIENT)p Fv(.)75 2478 y(Pro)q(cesses)16 b(in)i(either)f(con)o(texts) e(ma)o(y)h(not)g(kno)o(w)g(ab)q(out)g(pro)q(cesses)h(in)g(the)g(other)f (con)o(text,)f(but)i(they)75 2534 y(all)h(b)q(elong)g(to)e(con)o(text)g Fk(MPI)p 582 2534 15 2 v 17 w(ALL)p Fv(,)g(and)h(all)g(kno)o(w)g(ab)q (out)f(pro)q(cess)h Fk(root)g Fv(\(the)f(\\nameserv)o(er"\).)24 b(The)75 2591 y(ro)q(ot)17 b(pro)q(cess)g(kno)o(ws)g(ab)q(out)h(eac)o (h)f(of)g(the)h(t)o(w)o(o)e(con)o(texts.)26 b(A)17 b(call)i(to)e Fk(MPI)p 1408 2591 V 17 w(BCAST)p 1545 2591 V 16 w(CONTEXT)g Fv(can)g(b)q(e)75 2647 y(used)e(to)f(create)g(a)g(new)h(con)o(text)e (that)h(is)h(the)g(union)g(of)f(the)g Fk(CLIENT)g Fv(and)h Fk(SERVER)e Fv(con)o(texts,)h(so)g(as)g(to)75 2704 y(allo)o(w)h(these)h (to)e(comm)o(unicate.)p eop %%Page: 70 75 70 74 bop 75 -100 a Fv(70)849 b Ft(CHAPTER)15 b(9.)30 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(I)166 45 y Fo(Discussion:)166 96 y Fn(P)o(ossible)12 b(extension:)18 b(the)13 b(ro)q(ot)f(has)g(t)o (w)o(o)g(lists;)g(the)h(list)e(of)h(pro)q(cesses)j(that)d(call)f(to)h (join)f(the)i(new)g(con)o(text,)75 146 y(and)j(the)g(list)f(of)g(pro)q (cesses)k(that)c(are)i(to)e(join)o(t)g(the)h(next)h(con)o(text.)24 b(The)16 b(remianing)e(pro)q(cesses)k(are)e(returned)75 196 y(a)g(v)n(alue)f(indicating)g(they)i(w)o(ere)g(left)e(out.)25 b(This)16 b(could)g(b)q(e)g(useful)h(for)e(master-sla)o(v)o(e)g(co)q (de.)26 b(The)16 b(ro)q(ot)g(is)g(the)75 246 y(master)f(that)h(creates) i(new)e(con)o(texts)h(for)e(the)h(parallel)f(executuin)i(of)e(new)h (tasks.)24 b(All)15 b(disp)q(onible)g(pro)q(cesses)75 296 y(execute)h(the)e(call,)f(but)h(only)f(a)h(subset)h(is)f(allo)q (cated.)166 472 y Fw(MPI)p 275 472 16 2 v 18 w(MER)o(GE)p 490 472 V 19 w(CONTEXT\()k(new)o(con)o(text,)f(con)o(text1,)g(con)o (text2,)g(ro)q(ot\))166 565 y Fv(This)e(function)g(allo)o(ws)g(to)e (merge)h(t)o(w)o(o)f(con)o(texts)h(ev)o(en)h(when)g(there)f(is)h(no)f (con)o(text)g(that)g(encom-)75 621 y(passes)k(the)g(t)o(w)o(o)f(merged) h(con)o(texts;)g(it)g(is)h(only)f(required)h(that)e(one)i(pro)q(cess,)f (namely)h Fk(root)p Fv(,)e(b)q(e)i(in)75 678 y(b)q(oth)13 b(con)o(texts)e(to)h(b)q(e)h(merged.)19 b(The)13 b(call)h(is)f(blo)q(c) o(king)h(and)e(m)o(ust)g(b)q(e)h(executed)h(b)o(y)e(all)i(pro)q(cesses) f(that)75 734 y(participate)k(in)f(the)g(merged)g(con)o(text.)21 b(Eac)o(h)16 b(pro)q(cess)g(pro)o(vides)g(its)g(old)g(con)o(text,)f (and)h(the)g(index)h(of)75 791 y(pro)q(cess)c(ro)q(ot)f(within)i(this)g (old)f(con)o(text)f(\(the)h(index)h(ma)o(y)e(b)q(e)i(di\013eren)o(t)f (in)g(the)g(t)o(w)o(o)f(con)o(texts)g(that)g(are)75 847 y(merged\).)19 b(The)14 b(ro)q(ot)g(pro)o(vides)g(handles)h(to)e(b)q (oth)i(con)o(texts)e(that)g(are)h(to)f(b)q(e)i(merged.)k(The)c(pro)q (cesses)75 904 y(in)h Fk(context1)e Fv(precede)i(the)g(pro)q(cesses)f (in)h Fk(context2)e Fv(in)i(the)g(ranking)f(of)g(the)g(new)h(con)o (text.)75 1017 y Fw(OUT)i(new)o(con)o(text)k Fv(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 1073 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 1173 y Fw(IN)i(con)o(text1)23 b Fv(handle)17 b(to)d(old)i(con)o(text)75 1272 y Fw(IN)h(con)o(text2)23 b Fv(handle)17 b(to)d(second)i(con)o (text;)e(signi\014can)o(t)i(only)g(at)f(ro)q(ot)75 1372 y Fw(IN)i(ro)q(ot)23 b Fv(index)17 b(of)e(ro)q(ot)f(in)i(old)g(con)o (text)166 1485 y(Example:)23 b(a)17 b(serv)o(er)f(\(the)h(\\ro)q(ot"\)) e(and)i(a)f(set)h(of)f(clien)o(t)i(pro)q(cesses)f(participate)h(in)f Fk(context1)p Fv(.)75 1541 y(The)j(serv)o(er)f(spa)o(wns)g(new)h (\\help)q(ers",)h(or)e(has)h(other)f(a)o(v)m(ailable)i(serv)o(er)e(pro) q(cesses)h(join)g(it.)33 b(A)20 b(call)75 1598 y(to)e Fk(MPI)p 209 1598 15 2 v 16 w(MERGE)p 345 1598 V 17 w(CONTEXT)f Fv(can)i(b)q(e)g(used)g(to)e(create)h(a)h(new)f(con)o(text)g(that)f (mak)o(e)h(these)h(new)f(serv)o(ers)75 1654 y(a)o(v)m(ailable)f(to)d (the)i(parallel)g(clinet.)166 1788 y Fo(Discussion:)166 1839 y Fn(Here,)h(to)q(o,)f(the)h(function)e(can)h(b)q(e)h(extended)h (to)d(allo)o(w)g(the)h(creation)h(of)e(a)h(new)g(con)o(text)h(where)g (only)e(a)75 1889 y(subset)g(of)f(the)g(pro)q(cesses)j(in)c(the)i(old)e (group)g(participate)166 1940 y(If)k Fj(MPI)p 280 1940 14 2 v 15 w(MERGE)p 405 1940 V 14 w(CONTEXT)f Fn(is)h(a)o(v)n(ailable)e (then)j(the)g(functionalit)o(y)d(of)i Fj(MPI)p 1344 1940 V 15 w(SPAWN)f Fn(can)i(b)q(e)f(reduced:)27 b(It)17 b(is)75 1990 y(su\013cien)o(t)e(to)e(create)i(a)f(new)g(con)o(text)g(that)g (consists)h(of)e(a)g(spa)o(wning)g(pro)q(cess)j(\(rather)e(than)g(sp)o (wning)f(con)o(text\))75 2040 y(and)h(the)g(spa)o(wned)h(pro)q(cesses.) 20 b(This)14 b(new)g(con)o(text)h(can)f(then)h(b)q(e)f(merged)g(with)f (a)h(preexisting)g(con)o(text.)166 2256 y Fo(Implemen)o(tati)o(on)e (note:)166 2308 y Fn(Implemen)o(tation)f(is)i(similar)f(to)i(the)g (implemen)o(tation)c(of)k Fj(MPI)p 1179 2308 V 15 w(BCAST)p 1304 2308 V 14 w(CONTEXT)75 2542 y Fp(9.4)70 b(Examples)22 b({)h(Problems)f(in)g(Ric)n(k's)g(list)75 2646 y Fv(Only)16 b(the)g(basic)g(con)o(text)e(functions)i(are)f(used)h(in)g(these)f (examples.)166 2704 y Fo(W)l(arning)p Fn(:)h(late)e(nigh)o(t)f(w)o(ork) p eop %%Page: 71 76 71 75 bop 75 -100 a Ft(9.4.)34 b(EXAMPLES)16 b({)e(PR)o(OBLEMS)j(IN)e (RICK'S)h(LIST)729 b Fv(71)75 45 y Fw(F)l(unction)18 b(that)h(implemen)o(ts)e(sh)o(u\017e)f(p)q(erm)o(utation)i(in)g (group/con)o(text)75 204 y Fk(void)23 b(function)g(mpi_shuffle\(inbuf,) e(outbuf,)i(datatype,)g(count,)g(context,)g(size\))75 317 y(...)75 430 y({)75 486 y(mpi_copy_context\(newcontex)o(t,)e (context\);)75 543 y(mpi_rank\(context,)h(i\);)75 599 y(dest)h(=)h(shuffle\(i,)f(size\);)75 656 y(source)g(=)h(unshuffle\(i,) e(size\);)75 712 y(mpi_irecvc)g(\(handle,)h(inbuf,)g(count,)g (datatype,)g(source,)g(0,)g(nexcontext\);)75 769 y(mpi_sendc)g (\(outbuf,)f(count,)h(datatype,)g(dest,)g(0,)h(newcontext\);)75 825 y(mpi_wait\(handle,)e(ret_stat\);)75 882 y(mpi_free\(newcontext\);) 75 938 y(})166 1095 y Fv(This)15 b(w)o(orks)f(OK,)h(if)g(pro)q(cesses)g (are)g(single-threaded.)21 b(If)15 b(they)g(are)g(m)o(ultithreaded,)g (one)g(has)g(to)75 1152 y(mak)o(e)f(sure)g(that)g(other)f(concurren)o (t)i(threads)f(do)g(not)g(create)g(new)g(con)o(texts.)19 b(New)14 b(con)o(text)g(creation)75 1208 y(can)h(b)q(e)h(skipp)q(ed)h (if)f(there)f(are)g(no)g(p)q(ending)i(messages)e(in)h(the)f(con)o(text) g(when)g(mpi)p 1539 1208 14 2 v 17 w(sh)o(u\017e)h(is)g(called.)75 1338 y Fw(Use)25 b(of)h(con)o(texts)g(for)f(library)h(dev)o(elopmen)o (t)44 b Fv(The)23 b(co)q(de)g(of)f(a)g(parallel)i(library)f(function)75 1395 y(should)18 b(b)q(e)f(written)g(so)f(that)g(eac)o(h)h(message)f (that)g(is)h(pro)q(duced)h(b)o(y)e(some)h(pro)q(cess)g(is)g(consumed)g (b)o(y)75 1451 y(another)d(pro)q(cess)h(during)h(the)f(execution)g(of)g (the)f(library)i(co)q(de)f({)f(i.e.)21 b(the)14 b(library)i(should)f (\\clean)h(its)75 1508 y(garbage".)166 1566 y(A)d(parallel)j(library)e (is)g(in)o(v)o(ok)o(ed)g(collectiv)o(ely)i(b)o(y)d(a)g(group)g(of)h (pro)q(cesses.)19 b(An)o(y)14 b(in)o(v)o(ok)m(ation)g(of)f(the)75 1622 y(library)k(o)q(ccurs)g(within)g(a)f(con)o(text)g(de\014ned)i(b)o (y)e(the)h(user.)23 b(All)18 b(pro)q(cesses)f(that)e(participate)i(in)h (suc)o(h)75 1679 y(con)o(text)g(in)o(v)o(ok)o(e)h(the)g(parallel)h (library)l(,)h(and)e(matc)o(hing)g(in)o(v)o(ok)m(ations)g(o)q(ccur)g (at)f(all)i(of)e(them)h(in)h(the)75 1735 y(same)15 b(order.)166 1793 y(The)10 b(library)h(has)f(to)g(generate)g(a)f(new)i(con)o(text,)f (using)h(the)f(function)h Fk(MPI)p 1427 1793 15 2 v 17 w(COPY)p 1540 1793 V 17 w(CONTEXT\(newcontext,)75 1850 y(context\))p Fv(,)16 b(for)h(eac)o(h)g(con)o(text)g Fk(context)f Fv(where)h(from)g(the)g(library)h(ma)o(y)f(b)q(e)h(in)o(v) o(ok)o(ed.)26 b(The)17 b(library)75 1906 y(will)g(then)f(use)g(the)g (con)o(text)f Fk(newcontext)f Fv(for)h(its)h(comm)o(unication)h(whenev) o(er)f(it)g(is)g(in)o(v)o(ok)o(ed)g(within)75 1963 y(the)h(con)o(text)f Fk(context)p Fv(.)24 b(If)17 b(the)g(library)g(uses)h(collectiv)o(e)g (comm)o(unication)g(within)g(dynamically)g(de-)75 2019 y(\014ned)h(subgroups,)f(then)g(these)g(subgroups)g(will)i(b)q(e)f (created)e(b)o(y)h(splitting)i(the)d(group)h(of)g(pro)q(cesses)75 2076 y(de\014ned)f(b)o(y)e Fk(newcontext)p Fv(.)166 2134 y(In)23 b(the)g(general)g(case,)h(the)e(con)o(text)g(of)g(the)h(in)o(v) o(ok)m(ation)g(has)f(to)g(b)q(e)h(passed)g(as)f(an)h(explicit)75 2190 y(parameter)14 b(when)i(the)f(library)h(is)f(in)o(v)o(ok)o(ed.)21 b(The)15 b(library)h(co)q(de)f(will)i(generate)e(a)g(new)g(con)o(text)f (when)75 2247 y(it)h(starts)f(executing)j(and)e(will)i(free)e(this)h (con)o(text)e(when)i(it)g(terminates.)166 2305 y(There)f(are)g(sev)o (eral)h(sp)q(ecial)h(cases)e(where)g(dynamic)h(con)o(text)f(creation)g (can)h(b)q(e)f(a)o(v)o(oided.)166 2363 y(Case)10 b(1:)18 b(The)11 b(library)g(is)h(alw)o(a)o(ys)e(in)o(v)o(ok)o(ed)h(within)h (the)e(con)o(text)h Fk(MPI)p 1343 2363 V 16 w(ALL)p Fv(.)f(Then)i(the)f (new)g(con)o(text)75 2420 y(can)18 b(b)q(e)g(\\cac)o(hed":)25 b(A)17 b(library)i(collectiv)o(e)g(initialization)i(routine)d(should)g (b)q(e)h(in)o(v)o(ok)o(ed)f(b)o(y)f(the)h(user)75 2476 y(at)c(the)g(start)f(of)h(the)g(program;)f(this)i(routine)f(creates)g (a)g(cop)o(y)g(of)g(the)g(con)o(text)g Fk(MPI)p 1537 2476 V 17 w(ALL)f Fv(and)i(stores)e(a)75 2532 y(handle)k(to)e(it)h(in)g (a)g(C)f(static)h(v)m(ariable)h(\(F)l(ortran)d(77)h(COMMON\).)g(The)h (con)o(text)f Fk(MPI)p 1602 2532 V 17 w(ALL)g Fv(need)h(not)75 2589 y(b)q(e)g(passed)f(as)g(a)g(parameter)f(when)i(the)f(library)h(is) g(in)o(v)o(ok)o(ed.)166 2647 y(Case)g(2:)22 b(The)17 b(library)g(is)g(alw)o(a)o(ys)e(in)o(v)o(ok)o(ed)i(in)g(a)f(unique)i Fl(libr)n(ary)f(c)n(al)r(ling)f(c)n(ontext)g Fv(on)h(eac)o(h)f(pro-)75 2704 y(cess.)29 b(Then)18 b(a)g(library)h(initialization)i(routine)e (should)g(b)q(e)g(in)o(v)o(ok)o(ed)f(b)o(y)g(the)g(user)g(on)h(eac)o(h) f(pro)q(cess)p eop %%Page: 72 77 72 76 bop 75 -100 a Fv(72)844 b Ft(CHAPTER)15 b(9.)35 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(I)75 45 y Fv(where)f(the)g(library)g (ma)o(y)f(b)q(e)h(in)o(v)o(ok)o(ed;)g(the)f(initialization)k(routine)d (is)g(called)h(after)e(the)h(user)g(de\014ned)75 102 y(the)i(library)g(calling)i(con)o(texts)d(and)h(b)q(efore)g(the)g (library)g(is)g(in)o(v)o(ok)o(ed.)28 b(Eac)o(h)18 b(initialization)i (call)f(is)f(a)75 158 y(collectiv)o(e)d(call)f(within)g(the)f(library)h (calling)g(con)o(text.)19 b(A)13 b(cop)o(y)g(of)f(the)h(calling)i(con)o (text)d(is)h(created)g(\(b)o(y)75 214 y Fk(MPI)p 150 214 15 2 v 17 w(COPY)p 263 214 V 16 w(CONTEXT)p Fv(\))i(and)i(stored)e (in)j(a)d(static)h(library)h(v)m(ariable.)25 b(Subsequen)o(t)17 b(calls)g(to)f(the)g(library)75 271 y(need)g(not)f(pass)g(the)g (calling)i(con)o(text)e(as)g(a)f(parameter.)166 327 y(Case)19 b(3:)27 b(The)20 b(library)g(ma)o(y)e(b)q(e)i(in)o(v)o(ok)o(ed)f(on)h (eac)o(h)f(pro)q(cess)g(within)i(a)d(\014xed)i(\(small\))g(n)o(um)o(b)q (er)75 384 y(of)f(library)h(calling)h(con)o(texts.)32 b(Copies)20 b(of)f(these)g(con)o(texts)g(can)h(b)q(e)g(created)f(b)q (efore)h(the)f(library)h(is)75 440 y(in)o(v)o(ok)o(ed)e(and)g(\\cac)o (hed")g(in)h(static)f(v)m(ariables.)29 b(Subsequen)o(t)19 b(in)o(v)o(ok)m(ations)f(to)g(the)g(library)h(need)f(not)75 497 y(create)d(new)g(copies,)h(but)f(only)h(select)g(the)f(righ)o(t)g (preexisting)i(cop)o(y)l(.)166 547 y Fn(This)9 b(assumes)h(one)f(can)h (test)g(con)o(texts)h(\(con)o(text)f(handles\))g(for)f(equalit)o(y)m(.) 15 b(This)9 b(should)g(b)q(e)h(said)g(explicitely)75 596 y(in)j(the)i(draft)75 704 y Fw(Use)i(of)h(con)o(texts)f(for)g(a)h (host)f(no)q(de)h(computation)i(mo)q(del)42 b Fn(Let's)14 b(assume)g(t)o(w)o(o)f(con)o(texts:)145 779 y Fi(\017)23 b Fj(MPI)p 258 779 14 2 v 15 w(ALL)13 b Fn(with)g(host)i(b)q(eing)e(no) q(de)i(zero)145 854 y Fi(\017)23 b Fj(MPI)p 258 854 V 15 w(NODE)13 b Fn(that)h(do)q(es)g(not)g(include)g(the)h(host)166 928 y(W)m(e)e(assume)h(the)g(load)f(pro)q(cedure)j(ensures)g(that)e (host)g(is)g(pro)q(cess)i(zero)e(in)g(ALL)75 1078 y Fj(host/node)20 b(code)479 b(translation)75 1128 y(--------------)e(-------------)75 1227 y(I_am_the_host\(\))455 b(\(mpi_rank\(MPI_A)o(LL,)19 b(rank\);)860 1277 y(rank==0;\))75 1377 y(form)i(node)g(group)457 b(mpi_rank\(MPI_AL)o(L,)19 b(task\))860 1427 y(mpi_split_conte)o (xt\(MP)o(I_NOD)o(E,)g(MPI_ALL,)903 1476 y(\(task==0\),0\);)75 1576 y(Broadcast)h(from)h(host)g(to)g(nodes)174 b(mpi_bcast\(MPI_A)o (LL,0,)o(...\))75 1676 y(regular)20 b(communications)f(btwn)196 b(mpi_send\(buffer)o(,len,)o(dest,)o(tag,M)o(PI_NO)o(DE\))75 1725 y(nodes)675 b(mpi_recv\(buffer)o(,len,)o(sourc)o(e,tag)o(,MPI_)o (NODE)o(\))184 1775 y(/*)21 b(source,)g(dest)g(are)g(ranging)f(from)h (0)h(to)f(#nodes-1)f(*/)75 1875 y(sum)h(values)g(from)g(each)g(node)239 b(mpi_reduce\(inbu)o(f,out)o(buf,l)o(en,MP)o(I_ALL)o(,)75 1925 y(at)21 b(host)893 b(0,MPI_ISUM\))228 1975 y(/*)21 b(host)g(\(node)g(zero\))f(calls)h(mpi_reduce)f(with)h(inbuf)g(=)g(0)h (*/)p eop %%Page: 73 78 73 77 bop 75 361 a Fq(Chapter)34 b(10)75 573 y Fx(Con)m(texts)40 b({)g(Prop)s(osal)h(VI)s(I)648 793 y Fn(Lyndon)14 b(J)g(Clark)o(e)g(&)g (Rik)f(J)h(Little\014eld)75 954 y Fp(10.1)70 b(In)n(tro)r(duction)75 1054 y Fn(This)14 b(c)o(hapter)h(is)f(similar)e(in)h(basic)h (principles)h(to)f(Prop)q(osal)g(I)g(and)f(includes)i(all)e(of)g(the)i (functionalit)o(y)d(of)i(that)75 1104 y(prop)q(osal)i(as)g(a)g(subset)h (|)f(it)f(extends)j(in)e(sev)o(eral)g(w)o(a)o(ys)g(and)g(di\013ers)h (in)e(some)h(details.)24 b(Certain)16 b(features)i(of)75 1153 y(other,)g(no)o(w)e(defunct,)i(prop)q(osals)f(discussed)h(in)e (the)i(con)o(text)f(sub)q(committee)f(are)h(included.)27 b(In)17 b(particular,)75 1203 y(this)d(c)o(hapter)h(prop)q(oses)g (that:)134 1308 y(1.)22 b(Con)o(texts)15 b(and)f(groups)g(are)h(not)f (iden)o(tical.)19 b(A)c(con)o(text)g(is)f(alw)o(a)o(ys)f(asso)q(ciated) i(with)f(one)h(group,)f(but)g(a)189 1358 y(group)h(ma)o(y)e(ha)o(v)o(e) i(sev)o(eral)h(con)o(texts.)23 b(Prop)q(erties)17 b(of)e(groups)g(are)h (inherited)g(b)o(y)f(all)f(of)g(the)i(asso)q(ciated)189 1408 y(con)o(texts,)e(for)g(example)e(pro)q(cess)k(rank.)134 1501 y(2.)22 b(Con)o(text)11 b(and)h(group)f(descriptors)i(can)f(b)q(e) g(explicitly)f(transferred)i(to)e(pro)q(cesses)j(that)e(are)g(not)f (mem)o(b)q(ers)189 1550 y(of)i(the)h(con)o(text)h(or)f(group.)134 1643 y(3.)22 b(In)16 b(p)q(oin)o(t-to-p)q(oin)o(t)e(messages,)i(pro)q (cesses)j(can)d(b)q(e)g(iden)o(ti\014ed)g(in)g(an)o(y)f(of)h(three)h(w) o(a)o(ys:)22 b(b)o(y)15 b(pro)q(cess,)j(b)o(y)189 1693 y(rank)13 b(in)h(a)f(shared)i(con)o(text,)f(or)g(b)o(y)g(ranks)g(in)g (separate)h(sender)g(and)f(receiv)o(er)h(con)o(texts.)134 1786 y(4.)22 b(A)17 b(\\cac)o(he")h(facilit)o(y)e(is)h(pro)o(vided)h (that)f(allo)o(ws)f(mo)q(dules)h(to)g(attac)o(h)h(arbitrary)f (information)e(to)i(b)q(oth)189 1835 y(con)o(texts)e(and)e(groups.)166 1941 y(These)18 b(extensions)f(are)g(somewhat)e(indep)q(enden)o(t)j(of) e(eac)o(h)h(other.)26 b(The)17 b(\014rst)g(re\015ects)h(the)f(observ)n (ation)75 1990 y(that)c(m)o(ultiple)d(mo)q(dules)h(often)i(op)q(erate)g (within)f(eac)o(h)h(pro)q(cess)h(group,)f(so)f(that)h(con)o(text)g (formation)d(should)i(b)q(e)75 2040 y(ligh)o(ter)i(w)o(eigh)o(t)f(than) h(group)g(formation.)i(The)f(second)g(and)f(third)g(together)h(pro)o (vide)f(expressiv)o(e)h(supp)q(ort)g(for)75 2090 y(comm)o(unication)9 b(b)q(et)o(w)o(een)14 b(mo)q(dules)d(within)h(di\013eren)o(t)h(groups)g (of)e(pro)q(cesses.)21 b(The)12 b(fourth)h(allo)o(ws)e(mo)q(dules)g(to) 75 2140 y(b)q(e)k(signi\014can)o(tly)d(faster)j(in)e(common)e(cases,)k (without)f(complicating)d(their)j(in)o(terface)h(to)f(the)g (application.)166 2194 y(Muc)o(h)k(of)g(this)g(prop)q(osal)g(m)o(ust)f (b)q(e)h(view)o(ed)g(as)g(recommendations)f(to)h(other)g(sub)q (committees)f(of)h Fe(mpi)p Fn(,)75 2244 y(primarily)12 b(the)k(p)q(oin)o(t-to-p)q(oin)o(t)d(comm)o(unication)f(sub)q (committee)i(and)g(the)i(collectiv)o(e)f(comm)o(unicatio)o(ns)e(sub-)75 2294 y(committee.)j(Concrete)f(syn)o(tax)e(is)h(giv)o(en)f(in)g(the)h (st)o(yle)g(of)e(the)j(ANSI)e(C)h(host)g(language,)e(only)g(for)i(purp) q(oses)h(of)75 2344 y(discussion.)75 2505 y Fp(10.2)70 b(Pro)r(cesses)75 2604 y Fn(This)18 b(prop)q(osal)g(views)g(pro)q (cesses)j(in)d(the)h(famili)o(ar)c(w)o(a)o(y)m(,)j(as)g(one)h(thinks)f (of)f(pro)q(cesses)k(in)d(Unix)g(or)g(NX)g(for)75 2654 y(example.)32 b(Eac)o(h)19 b(pro)q(cess)i(is)e(a)g(distinct)g(space)h (of)e(instructions)i(and)f(data.)33 b(Eac)o(h)19 b(pro)q(cess)i(is)d (allo)o(w)o(ed)g(to)75 2704 y(comp)q(ose)13 b(m)o(ultiple)f(concurren)o (t)k(threads)f(and)e Fe(mpi)h Fn(do)q(es)g(not)g(distinguish)g(suc)o(h) g(threads.)952 2828 y Fv(73)p eop %%Page: 74 79 74 78 bop 75 -100 a Fv(74)774 b Ft(CHAPTER)16 b(10.)29 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(VI)q(I)75 45 y Fm(Pro)r(cess)h(Iden)n (ti\014er)75 126 y Fn(Eac)o(h)10 b(pro)q(cess)h(is)f(iden)o(ti\014ed)g (b)o(y)f(a)h(pro)q(cess-lo)q(cal)g Ff(pr)n(o)n(c)n(ess)h(hand)r(le)p Fn(,)g(whic)o(h)e(is)h(a)f(reference)j(to)e(a)f Ff(pr)n(o)n(c)n(ess)i (descriptor)75 176 y Fn(of)g(unde\014ned)h(size)g(and)f(opaque)g (structure.)19 b(In)12 b(a)e(static)i(pro)q(cess)h(mo)q(del)d(pro)q (cess)j(handles)e(can)g(b)q(e)h(obtained)f(b)o(y)75 226 y(mapping)h(from)g(a)i(group)g(\(or)g(con)o(text\))h(and)f(rank.)19 b(In)14 b(a)g(future)g(extension)h(for)f(dynamic)e(pro)q(cesses,)17 b(handles)75 276 y(ma)o(y)12 b(b)q(e)i(returned)i(b)o(y)e(pro)q(cess)h (creation)g(functions.)166 328 y Fe(mpi)e Fn(pro)o(vides)i(a)e(pro)q (cedure)j(whic)o(h)e(returns)h(a)f(handle)f(for)h(the)h(calling)d(pro)q (cess.)75 427 y Fj(process)20 b(=)i(mpi_my_process\(\))75 556 y Fm(Pro)r(cess)c(Creation)g(&)h(Destruction)75 637 y Fn(This)14 b(prop)q(osal)f(mak)o(es)g(no)h(statemen)o(ts)g(regarding) g(creation)g(and)g(destruction)h(of)e(pro)q(cesses.)166 690 y Fe(mpi)20 b Fn(pro)o(vides)g(facilities)f(for)h(descriptor)i (transmission)d(allo)o(wing)f(the)i(user)i(to)e(explicitly)f(transfer)i (a)75 739 y(pro)q(cess)16 b(decriptor)f(from)d(one)i(pro)q(cess)h(to)f (another.)19 b(These)c(facilities)e(are)h(describ)q(ed)i(b)q(elo)o(w.) 75 890 y Fp(10.3)70 b(Pro)r(cess)23 b(Groups)75 985 y Fn(This)11 b(prop)q(osal)h(views)f(a)h(pro)q(cess)h(group)e(as)h(an)f (ordered)i(collection)e(of)g(\(references)k(to\))c(distinct)h(pro)q (cesses,)i(the)75 1035 y(mem)o(b)q(ership)g(and)i(ordering)g(of)g(whic) o(h)g(do)q(es)g(not)g(c)o(hange)h(o)o(v)o(er)f(the)g(lifetime)e(of)h (the)i(group.)24 b(The)17 b(canonical)75 1085 y(represen)o(tation)g(of) d(a)h(group)g(is)g(a)g(one-to-one)g(map)f(from)f(the)j(in)o(tegers)g (\(0)p Fd(;)7 b Fn(1)p Fd(;)g(:)g(:)g(:)t(;)g(N)14 b Fi(\000)c Fn(1\))15 b(to)g(handles)h(of)e(the)75 1134 y Fd(N)19 b Fn(pro)q(cesses)d(comp)q(osing)d(the)h(group.)166 1187 y(There)j(ma)o(y)d(b)q(e)i(structure)i(asso)q(ciated)f(with)e(a)h (pro)q(cess)h(group)f(de\014ned)h(b)o(y)f(a)f(pro)q(cess)j(top)q(ology) m(.)k(This)75 1236 y(prop)q(osal)14 b(mak)o(es)e(no)i(further)h (statemen)o(ts)f(regarding)g(suc)o(h)g(structures.)75 1366 y Fm(Group)19 b(Iden)n(ti\014er)75 1447 y Fn(Eac)o(h)c(group)g(is) f(iden)o(ti\014ed)h(b)o(y)g(a)f(pro)q(cess-lo)q(cal)i Ff(gr)n(oup)g(hand)r(le)p Fn(,)f(whic)o(h)f(is)h(a)g(reference)i(to)d (a)h Ff(gr)n(oup)h(descriptor)75 1496 y Fn(of)d(unde\014ned)i(size)g (and)f(opaque)g(structure.)166 1549 y(The)h(initialization)d(of)j Fe(mpi)f Fn(mak)o(es)g(eac)o(h)i(pro)q(cess)g(a)f(mem)o(b)q(er)e(of)i (the)g(\\initial")e(group.)21 b Fe(mpi)14 b Fn(pro)o(vides)h(a)75 1598 y(pro)q(cedure)h(that)e(returns)h(a)f(handle)g(to)f(this)h(group.) 75 1698 y Fj(group)21 b(=)g(mpi_initial_group\(\))166 1795 y Fe(mpi)10 b Fn(pro)o(vides)h(facilities)f(for)g(descriptor)i (transmission)d(allo)o(wing)g(the)i(user)h(to)e(explicitly)g(transfer)i (a)e(group)75 1844 y(descriptor)15 b(from)d(one)i(pro)q(cess)i(to)e (another.)75 1974 y Fm(Group)19 b(Creation)f(and)h(Deletion)75 2055 y Fe(mpi)g Fn(pro)o(vides)h(facilities)f(whic)o(h)h(allo)o(w)e (users)j(to)f(dynamically)d(create)k(and)f(delete)h(pro)q(cess)g (groups.)37 b(The)75 2104 y(pro)q(cedures)16 b(describ)q(ed)g(here)f (generate)g(groups)f(whic)o(h)g(are)g(static)g(in)g(mem)o(b)q(ership.) 166 2157 y Fe(mpi)f Fn(pro)o(vides)g(a)g(pro)q(cedure)i(whic)o(h)e (allo)o(ws)e(users)k(to)e(create)h(one)g(or)f(more)f(groups)h(whic)o(h) g(are)h(subsets)h(of)75 2206 y(existing)f(groups.)75 2306 y Fj(groupb)21 b(=)g(mpi_group_partitio)o(n\(gro)o(upa,)d(key\))75 2403 y Fn(This)f(pro)q(cedure)j(creates)f(one)e(or)h(more)e(new)i (groups)f Fj(groupb)g Fn(whic)o(h)g(are)h(distinct)f(subsets)i(of)e(an) g(existing)75 2452 y(group)c Fj(groupa)f Fn(according)h(to)g(the)g (supplied)h(v)n(alues)e(of)h Fj(key)p Fn(.)k(This)c(pro)q(cedure)i(is)e (called)g(b)o(y)g(and)f(sync)o(hronises)75 2502 y(all)h(mem)o(b)q(ers)f (of)i Fj(groupa)p Fn(.)166 2554 y Fe(mpi)h Fn(pro)o(vides)h(a)f(pro)q (cedure)j(whic)o(h)d(allo)o(ws)f(users)j(to)f(create)h(a)e(group)g(b)o (y)h(p)q(erm)o(utation)e(of)h(an)g(existing)75 2604 y(group.)75 2704 y Fj(groupb)21 b(=)g(mpi_group_permutat)o(ion\(g)o(roupa)o(,)e (rank\))p eop %%Page: 75 80 75 79 bop 75 -100 a Ft(10.4.)34 b(COMMUNICA)l(TION)16 b(CONTEXTS)935 b Fv(75)75 45 y Fn(This)13 b(pro)q(cedure)j(creates)f (one)f(new)g(group)g(with)f(the)h(same)f(mem)o(b)q(ership)f(as)h Fj(groupa)g Fn(with)g(a)g(p)q(erm)o(utation)g(of)75 95 y(pro)q(cess)g(ranking,)e(and)g(returns)i(the)f(created)g(group)g (descriptor)g(in)f Fj(groupb)p Fn(.)16 b(It)11 b(is)g(called)g(b)o(y)g (and)g(sync)o(hronises)75 145 y(all)i(mem)o(b)q(ers)f(of)i Fj(groupa)p Fn(.)166 195 y Fe(mpi)19 b Fn(pro)o(vides)h(a)f(pro)q (cedure)j(whic)o(h)d(allo)o(ws)f(users)j(to)f(create)h(a)e(group)g(b)o (y)h(explicit)f(de\014nition)g(of)g(its)75 244 y(mem)o(b)q(ership)12 b(as)i(a)g(list)f(of)h(pro)q(cess)h(handles.)75 312 y Fj(group)21 b(=)g(mpi_group_definitio)o(n\(lis)o(tofpr)o(ocess)o(\))75 380 y Fn(This)g(pro)q(cedure)j(creates)f(one)f(new)g(group)g Fj(group)e Fn(with)h(mem)o(b)q(ership)f(and)i(ordering)g(describ)q(ed)h (b)o(y)e(the)75 429 y(pro)q(cess)i(handle)d(list)h Fj(listofprocess)p Fn(.)36 b(It)21 b(is)g(called)f(b)o(y)h(and)g(sync)o(hronises)h(all)e (pro)q(cesses)j(iden)o(ti\014ed)e(in)75 479 y Fj(listofprocess)p Fn(.)166 529 y Fe(mpi)13 b Fn(pro)o(vides)i(a)e(pro)q(cedure)j(whic)o (h)e(allo)o(ws)e(users)k(to)d(delete)i(user)g(created)h(groups.)75 597 y Fj(mpi_group_deletio)o(n\(gro)o(up\))75 664 y Fn(This)h(pro)q (cedure)j(deletes)f(an)e(existing)g(group)g Fj(group)p Fn(.)28 b(It)17 b(is)h(called)f(b)o(y)g(and)g(sync)o(hronises)i(all)d (mem)o(b)q(ers)h(of)75 714 y Fj(group)p Fn(.)166 764 y Fe(mpi)f Fn(ma)o(y)e(pro)o(vide)i(additional)e(pro)q(cedures)k(whic)o (h)e(allo)o(w)e(users)k(to)e(construct)h(pro)q(cess)h(groups)f(with)e (a)75 814 y(pro)q(cess)h(group)d(top)q(ology)m(.)75 926 y Fm(Group)19 b(A)n(ttributes)75 1003 y Fe(mpi)e Fn(pro)o(vides)g(a)f (pro)q(cedure)j(whic)o(h)e(accepts)i(a)e(v)n(alid)e(group)i(handle)g (and)f(returns)j(the)f(rank)e(of)h(the)g(calling)75 1053 y(pro)q(cess)f(within)d(the)h(iden)o(ti\014ed)g(group.)75 1120 y Fj(rank)21 b(=)h(mpi_group_rank\()o(group)o(\))166 1188 y Fe(mpi)13 b Fn(pro)o(vides)g(a)g(pro)q(cedure)i(whic)o(h)f (accepts)h(a)e(v)n(alid)e(group)i(handle)g(and)h(returns)g(the)g(n)o (um)o(b)q(er)f(of)g(mem-)75 1238 y(b)q(ers,)i(or)f Ff(size)p Fn(,)f(of)g(the)h(iden)o(ti\014ed)g(group.)75 1305 y Fj(size)21 b(=)h(mpi_group_size\()o(group)o(\))166 1373 y Fe(mpi)17 b Fn(pro)o(vides)h(a)f(pro)q(cedure)j(whic)o(h)d(accepts)i (a)f(v)n(alid)e(group)h(handle)h(and)f(pro)q(cess)i(order)g(n)o(um)o(b) q(er,)e(or)75 1423 y Ff(r)n(ank)p Fn(,)g(and)g(returns)h(the)f(v)n (alid)e(pro)q(cess)k(handle)e(to)f(whic)o(h)h(the)g(supplied)g(rank)g (maps)e(within)h(the)i(iden)o(ti\014ed)75 1473 y(group.)75 1540 y Fj(process)i(=)i(mpi_group_process)o(\(grou)o(p,)d(rank\))166 1608 y Fe(mpi)11 b Fn(ma)o(y)f(pro)o(vide)h(additional)f(pro)q(cedures) k(whic)o(h)d(allo)o(w)f(users)j(to)e(determine)h(the)g(pro)q(cess)h (group)f(top)q(ol-)75 1658 y(ogy)h(attributes.)166 1707 y Fe(mpi)18 b Fn(pro)o(vides)g(a)g(group)g(descriptor)h(cac)o(he)g (facilit)o(y)e(whic)o(h)h(allo)o(ws)f(the)i(user)g(to)f(attac)o(h)g (attributes)h(to)75 1757 y(group)14 b(descriptors.)75 1891 y Fp(10.4)70 b(Comm)n(unication)20 b(Con)n(texts)75 1982 y Fn(This)11 b(prop)q(osal)f(views)h(a)f(comm)o(unicatio)o(n)e (con)o(text)j(as)g(the)g(com)o(bination)d(of)i(a)h(pro)q(cess)h(group)f (and)f(a)g(protection)75 2032 y(mec)o(hanism)j(that)j(a)o(v)o(oids)f (collision)f(b)q(et)o(w)o(een)j(messages)e(sen)o(t)i(to)e(di\013eren)o (t)i(con)o(texts.)24 b(The)16 b(con)o(text)h(inherits)75 2082 y(pro)q(cess)f(ranking)e(from)e(its)i(asso)q(ciated)h(group,)f (referred)i(to)e(as)g(a)g Ff(fr)n(ame)p Fn(.)k(Eac)o(h)d(pro)q(cess)h (group)e(ma)o(y)e(b)q(e)j(used)75 2132 y(as)f(a)g(frame)e(for)i(m)o (ultiple)d(con)o(texts.)75 2243 y Fw(Con)o(text)17 b(Iden)o(ti\014er)75 2319 y Fn(Eac)o(h)g(con)o(text)h(is)f(iden)o(ti\014ed)h(b)o(y)f(a)f (pro)q(cess-lo)q(cal)i Ff(c)n(ontext)h(hand)r(le)p Fn(,)f(whic)o(h)f (is)g(a)g(reference)j(to)d(a)g Ff(c)n(ontext)h(de-)75 2369 y(scriptor)13 b Fn(of)g(unde\014ned)i(size)g(and)f(opaque)f (structure.)166 2419 y(The)i(creation)g(of)f(a)g(pro)q(cess)i(group)f (allo)q(cates)f(a)g Ff(b)n(ase)i(c)n(ontext)f Fn(whic)o(h)f(inherits)h (the)g(created)h(group)f(as)f(a)75 2469 y(frame)f(and)h(can)h(b)q(e)g (though)o(t)f(of)f(as)i(an)f(attribute)h(of)e(the)i(created)h(group.)j Fe(mpi)14 b Fn(pro)o(vides)h(a)f(pro)q(cedure)i(whic)o(h)75 2519 y(accepts)g(a)d(v)n(alid)f(group)i(handle)g(and)g(returns)h(a)f (handle)f(to)h(the)h(base)f(con)o(text)h(within)e(the)h(iden)o (ti\014ed)g(group.)75 2586 y Fj(context)20 b(=)i(mpi_base_context\()o (group)o(\))166 2654 y Fe(mpi)e Fn(pro)o(vides)g(facilities)f(for)h (descriptor)i(transmission)d(allo)o(wing)f(the)i(user)i(to)e (explicitly)f(transfer)i(a)75 2704 y(con)o(text)15 b(descriptor)g(from) d(one)i(pro)q(cess)i(to)d(another.)p eop %%Page: 76 81 76 80 bop 75 -100 a Fv(76)769 b Ft(CHAPTER)15 b(10.)35 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(VI)q(I)75 45 y Fw(Con)o(text)g (Creation)h(and)g(Deletion)75 125 y Fe(mpi)12 b Fn(pro)o(vides)g (facilities)f(whic)o(h)g(allo)o(ws)g(user)i(to)f(dynamically)d(create)k (and)f(delete)h(con)o(texts)g(in)f(addition)f(to)g(the)75 175 y(base)j(con)o(text)g(asso)q(ciated)g(with)f(a)f(pro)q(cess)j (group.)j(Con)o(texts)c(created)h(in)d(this)i(fashion)e(can)h(b)q(e)h (though)o(t)f(of)g(as)75 225 y(copies)h(of)g(the)g(base)h(con)o(text)f (of)g(the)g(pro)q(cess)i(group.)166 277 y Fe(mpi)h Fn(pro)o(vides)g(a)f (pro)q(cedure)j(whic)o(h)e(allo)o(ws)f(users)i(to)f(create)i(con)o (texts.)28 b(This)17 b(pro)q(cedure)i(accepts)f(the)75 327 y(handle)12 b(of)f(a)g(group)h(of)f(whic)o(h)h(the)g(calling)f(pro) q(cess)i(is)f(a)f(mem)o(b)q(er,)f(and)i(returns)h(a)f(handle)f(to)h (the)g(new)h(con)o(text.)75 424 y Fj(context)20 b(=)i (mpi_context_creat)o(ion\(g)o(roup\))o(.)75 519 y Fn(This)14 b(pro)q(cedure)h(m)o(ust)e(b)q(e)h(called)g(lo)q(osely)f(sync)o (hronously)h(b)o(y)g(all)e(mem)o(b)q(ers)h(of)g Fj(group)p Fn(.)k(The)d(pro)q(cedure)i(ma)o(y)75 569 y(not)c(actually)f(sync)o (hronize)i(the)f(mem)o(b)q(er)e(pro)q(cesses)15 b(|)c(it)h(is)g (suggested)h(that)f(this)g(is)f(a)h(ligh)o(t)o(w)o(eigh)o(t)e(pro)q (cedure)75 619 y(that)k(can)g(b)q(e)h(implem)o(en)o(ted)d(so)i(as)g(to) g(not)g(require)g(in)o(terpro)q(cess)i(comm)o(unication.)166 670 y Fe(mpi)g Fn(pro)o(vides)h(a)f(pro)q(cedure)j(whic)o(h)e(allo)o (ws)e(users)j(to)f(delete)g(user)h(created)g(con)o(texts.)28 b(The)17 b(pro)q(cedure)75 720 y(accepts)f(a)d(con)o(text)i(handle)e (that)h(w)o(as)g(created)i(b)o(y)d(the)i(calling)d(pro)q(cess)k(and)e (deletes)h(the)f(iden)o(ti\014ed)g(con)o(text.)75 817 y Fj(mpi_context_delet)o(ion\(c)o(ontex)o(t\))75 913 y Fn(This)g(pro)q(cedure)i(has)e(the)g(same)f(sync)o(hronization)h(b)q (eha)o(vior)g(as)g(con)o(text)g(creation.)75 1038 y Fw(Con)o(text)j(A)o (ttributes)75 1118 y Fe(mpi)d Fn(pro)o(vides)h(a)g(pro)q(cedure)i(whic) o(h)d(allo)o(ws)g(users)i(to)f(determine)f(the)i(pro)q(cess)g(group)f (that)g(is)f(the)i(frame)d(of)h(a)75 1168 y(con)o(text.)75 1265 y Fj(group)21 b(=)g(mpi_context_frame\(c)o(ontex)o(t\))166 1360 y Fe(mpi)14 b Fn(pro)o(vides)h(a)g(group)g(descriptor)h(cac)o(he)g (facilit)o(y)d(whic)o(h)i(allo)o(ws)e(user)j(to)f(attac)o(h)g (attributes)g(to)g(group)75 1410 y(descriptors.)75 1558 y Fp(10.5)70 b(Descriptor)22 b(F)-6 b(aciliti)o(es)75 1653 y Fn(This)14 b(section)g(describ)q(es)i(the)f(descriptor)g (transmission)e(and)g(user)i(cac)o(he)g(facilities.)75 1779 y Fm(T)-5 b(ransmission)18 b(F)-5 b(acilit)n(y)75 1860 y Fe(mpi)13 b Fn(pro)o(vides)h(a)g(mec)o(hanism)d(whereb)o(y)k (the)f(user)h(can)f(transmit)f(a)g(v)n(alid)f(descriptor)j(in)f(a)f (message)g(suc)o(h)i(that)75 1910 y(the)e(receiv)o(ed)h(descriptor)g (handle)e(is)g(v)n(alid.)k(This)c(can)h(b)q(e)g(in)o(tegrated)g(with)f (the)h(capabilit)o(y)e(to)h(transmit)f(t)o(yp)q(ed)75 1959 y(messages,)k(and)g(it)f(is)h(suggested)h(that)f(a)g(notional)e (data)i(t)o(yp)q(e)g(should)g(b)q(e)h(in)o(tro)q(duced)f(for)g(this)g (purp)q(ose,)h(e.g.)75 2009 y Fj(MPI)p 144 2009 14 2 v 15 w(DSCR)p 247 2009 V 15 w(TYPE)p Fn(.)c(There)k(are)e(other)g (reasonable)h(approac)o(hes)f(to)g(pro)o(viding)f(this)h(facilit)o(y)m (.)166 2061 y(The)h(descriptor)g(is)g(translated)f(as)h(necessary)h(to) f(b)q(e)g(meaningful)c(on)j(the)h(destination)g(pro)q(cess,)h(storage) 75 2111 y(is)e(allo)q(cated)f(for)h(it,)f(and)g(a)h(handle)g(to)g(that) f(storage)i(is)f(returned.)19 b(Decorations)14 b(are)h(not)e (transmitted.)166 2163 y(Handles)f(are)f(guaran)o(teed)h(to)f(b)q(e)h (unique)g(within)e(eac)o(h)i(pro)q(cess)h(|)e(if)g(pro)q(cesses)j(A)d (and)g(B)h(indep)q(enden)o(tly)75 2212 y(send)g(to)f(pro)q(cess)i(C)f (a)f(descriptor)h(for)f(an)g(ob)r(ject)h(D,)f(then)g(pro)q(cess)j(C)d (will)e(get)j(t)o(w)o(o)f(copies)h(of)e(the)i(same)f(handle.)75 2262 y(As)k(with)g(all)f(transfers)i(of)e(descriptors,)i(the)g (receiving)f(pro)q(cess)i(is)e(resp)q(onsible)h(for)e(releasing)h(the)h (descriptor)75 2312 y(and)e(its)f(handle)h(when)g(it)g(is)f(no)h (longer)g(needed)h(or)f(b)q(ecomes)g(stale.)k(MPI)c(pro)o(vides)g(a)f (pro)q(cedure)j(whic)o(h)e(frees)75 2362 y(a)g(descriptor.)75 2459 y Fj(mpi_free_dscr\(han)o(dle\))166 2554 y Fn(A)d(descriptor)h (registry)g(service)g(whic)o(h)f(allo)o(ws)f(descriptors)i(to)f(b)q(e)h (iden)o(ti\014ed)f(b)o(y)g(name)e(w)o(ould)i(b)q(e)g(a)g(useful)75 2604 y(additional)d(feature.)18 b(This)10 b(service)i(can)f(b)q(e)f (implemen)o(ted)f(at)h(the)h(user)g(lev)o(el)f(using)g(the)h(p)q(oin)o (t-to-p)q(oin)o(t)e(c)o(hapter)75 2654 y(of)16 b Fe(mpi)g Fn(and)g(the)h(descriptor)g(transmission)f(facilities.)24 b(These)18 b(services)g(can)e(b)q(e)h(deferred)h(in)e(this)g(session)i (of)75 2704 y Fe(mpi)p Fn(.)p eop %%Page: 77 82 77 81 bop 75 -100 a Ft(10.5.)34 b(DESCRIPTOR)16 b(F)-5 b(A)o(CILITIES)1049 b Fv(77)75 45 y Fm(Cac)n(he)19 b(F)-5 b(acilit)n(y)75 122 y Fe(mpi)13 b Fn(pro)o(vides)h(a)g(\\cac)o(he")g (facilit)o(y)e(that)i(allo)o(ws)f(an)g(application)g(to)g(attac)o(h)h (arbitrary)g(pieces)h(of)e(information,)75 172 y(called)e Ff(de)n(c)n(or)n(ations)p Fn(,)g(to)g(con)o(text)h(and)f(group)f (descriptors.)19 b(Decorations)11 b(are)h(lo)q(cal)e(to)h(the)h(pro)q (cess)h(and)e(are)g(not)75 221 y(included)f(if)f(the)i(descriptor)h(is) d(sen)o(t)i(to)f(another)h(pro)q(cess.)18 b(This)10 b(facilit)o(y)f(is) h(in)o(tended)g(to)g(supp)q(ort)h(optimizations)75 271 y(suc)o(h)g(as)g(sa)o(ving)f(p)q(ersisten)o(t)i(comm)o(unication)7 b(handles)k(and)g(recording)g(top)q(ology-based)f(decisions)h(b)o(y)f (adaptiv)o(e)75 321 y(algorithms.)166 371 y Fe(mpi)j Fn(pro)o(vides)i(the)f(follo)o(wing)d(services)16 b(related)e(to)g(cac) o(heing:)75 441 y Fo(Generate)g(k)o(ey:)23 b Fn(Generate)15 b(cac)o(he)g(k)o(ey)m(.)189 522 y Fj(keyval)20 b(=)i(mpi_GetDecoratio)o (nKey\()o(\))75 603 y Fo(Store)14 b(decoration:)21 b Fn(Store)14 b(decoration)h(in)e(cac)o(he)i(b)o(y)e(k)o(ey)m(.)189 684 y Fj(mpi_SetDecoratio)o(n\(ha)o(ndle,)18 b(keyval,)j (decoration_val,)189 734 y(decoration_destr)o(ucto)o(r_rou)o(tine\))75 815 y Fo(Retriev)o(e)14 b(decoration:)20 b Fn(Retriev)o(e)15 b(decoration)f(from)e(cac)o(he)j(b)o(y)e(k)o(ey)m(.)189 896 y Fj(mpi_TestDecorati)o(on\(h)o(andle)o(,keyv)o(al,de)o(corat)o (ion\))75 977 y Fo(Delete)h(decoration:)21 b Fn(Delete)14 b(decoration)g(from)e(cac)o(he)j(b)o(y)f(k)o(ey)m(.)189 1058 y Fj(mpi_DeleteDecora)o(tion)o(\(hand)o(le,ke)o(yval\))166 1139 y Fn(Eac)o(h)20 b(decoration)g(consists)h(of)e(a)h(p)q(oin)o(ter)g (or)g(a)f(v)n(alue)g(of)h(the)g(same)f(size)i(as)e(a)h(p)q(oin)o(ter,)h (and)f(w)o(ould)75 1188 y(t)o(ypically)d(b)q(e)h(a)g(reference)j(to)d (a)f(larger)i(blo)q(c)o(k)e(of)h(storage)g(managed)f(b)o(y)h(the)g(mo)q (dule.)29 b(As)19 b(an)f(example,)f(a)75 1238 y(global)d(op)q(eration)h (using)h(cac)o(heing)g(to)f(b)q(e)h(more)f(e\016cien)o(t)h(for)f(aall)f (con)o(texts)j(of)e(a)g(group)g(after)h(the)g(\014rst)h(call)75 1288 y(migh)o(t)12 b(lo)q(ok)h(lik)o(e)g(this:)140 1373 y Fj(static)21 b(int)g(gop_key_assigned)e(=)i(0;)h(/*)f(0)h(only)e(on)i (first)f(entry)f(*/)i(static)75 1423 y(MPI_KEY_TYPE)d(gop_key;)h(/*)i (key)f(for)g(this)g(module's)f(stuff)h(*/)140 1523 y (efficient_global_op)d(\(context,)i(...\))43 b(int)21 b(context_handle;)e({)i(struct)75 1572 y(gop_stuff_type)e(*gop_stuff;)g (/*)j(whatever)e(we)h(need)g(*/)h(int)f(group_handle)e(=)75 1622 y(mpi_context_frame)o(\(cont)o(ext_h)o(andle)o(\);)184 1722 y(if)i(\(!gop_key_assigned\))d(/*)k(get)f(a)g(key)h(on)f(first)g (call)g(ever)g(*/)g({)75 1772 y(gop_key_assigned)d(=)k(1;)f(if)h(\()f (!)h(\(gop_key)e(=)i(MPI_GetDecoratio)o(nKey\()o(\)\))d(\))i({)75 1822 y(MPI_abort)f(\("Insufficient)f(keys)i(available"\);)e(})j(})f(if) h(\(MPI_TestDecorat)o(ion)75 1871 y(\(group_handle,gop)o(_key,)o(&gop_) o(stuff)o(\)\))d({)i(/*)h(This)f(module)f(has)h(executed)g(in)75 1921 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 1971 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 2021 y(do)g(so.)43 b(*/)22 b(gop_stuff)e(=)h (/*)h(malloc)e(a)i(gop_stuff_type)d(*/)228 2120 y(/*)i(...)g(fill)g(in) g(*gop_stuff)f(with)h(whatever)f(we)i(want)f(...)g(*/)228 2220 y(MPI_SetDecorati)o(on)e(\(group_handle,)g(gop_key,)h(gop_stuff,) 75 2270 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 2320 y(global)f(op)g(...)g(*/)g(}) 162 2419 y(gop_stuff_destruct)o(or)e(\(gop_stuff\))g(/*)j(called)e(by)i (MPI)f(on)g(group)g(delete)75 2469 y(*/)g(struct)g(gop_stuff_type)e (*gop_stuff;)g({)j(/*)f(...)g(free)g(storage)g(pointed)f(to)75 2519 y(by)h(gop_stuff)f(...)h(*/)h(})166 2604 y Fn(The)16 b(cac)o(he)g(facilit)o(y)d(could)i(also)g(b)q(e)h(pro)o(vided)f(for)g (pro)q(cess)i(descriptors,)g(but)e(it)g(is)g(less)h(clear)f(ho)o(w)g (suc)o(h)75 2654 y(pro)o(vision)20 b(w)o(ould)f(b)q(e)j(useful.)38 b(It)20 b(is)h(suggested)h(that)e(the)i(cac)o(he)f(store,)i(retriev)o (e)f(and)e(delete)i(decoration)75 2704 y(pro)q(cedures)16 b(should)e(fail)e(when)j(applied)e(to)h(a)f(pro)q(cess)j(descriptor)f (handle.)p eop %%Page: 78 83 78 82 bop 75 -100 a Fv(78)769 b Ft(CHAPTER)15 b(10.)35 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(VI)q(I)75 45 y Fp(10.6)70 b(P)n(oin)n(t-to-P)n(oin)n(t)22 b(Comm)n(unication)75 136 y Fn(This)11 b(prop)q(osal)g(recommends)g(three)h(forms)e(for)h Fe(mpi)g Fn(p)q(oin)o(t-to-p)q(oin)o(t)f(message)h(addressing)h(and)g (selection:)17 b(n)o(ull)75 186 y(con)o(text;)g(closed)g(con)o(text;)g (op)q(en)f(con)o(text.)25 b(It)16 b(is)f(further)i(recommended)e(that)h (messages)g(comm)o(unicated)d(in)75 236 y(eac)o(h)k(form)f(are)h (distinguished)g(suc)o(h)g(that)g(a)g Fj(Send)f Fn(op)q(eration)h(of)f (form)f(X)i(cannot)h(matc)o(h)d(with)i(a)f Fj(Receive)75 285 y Fn(op)q(eration)e(of)f(form)f(Y,)i(requiring)f(that)h(form)e(is)i (em)o(b)q(edded)g(in)o(to)f(the)i(message)e(en)o(v)o(elop)q(e.)166 335 y(The)g(three)h(forms)d(are)i(describ)q(ed,)h(follo)o(w)o(ed)c(b)o (y)j(considerations)g(of)f(uniform)e(in)o(tegration)i(of)f(these)j (forms)75 385 y(in)f(the)i(p)q(oin)o(t-to-p)q(oin)o(t)d(comm)o (unication)f(c)o(hapter)k(of)e Fe(mpi)p Fn(.)75 499 y Fm(Null)18 b(Con)n(text)g(F)-5 b(orm)75 576 y Fn(The)13 b Ff(nul)r(l)h(c)n(ontext)j Fn(form)11 b(con)o(tains)i(no)f(message)h (con)o(text.)18 b(Message)c(selection)f(and)g(addressing)g(are)h (expressed)75 626 y(b)o(y)75 701 y Fj(\(process,)20 b(tag\))75 776 y Fn(where:)f Fj(process)13 b Fn(is)g(a)h(pro)q(cess)i(handle;)d Fj(tag)g Fn(is)h(a)f(message)h(tag.)166 826 y Fj(Send)f Fn(supplies)h(the)h Fj(process)d Fn(of)h(the)i(receiv)o(er.)k Fj(Receive)13 b Fn(supplies)h(the)h Fj(process)d Fn(of)h(the)i(sender.) 166 876 y Fj(Receive)8 b Fn(can)h(wildcard)g(on)g Fj(process)f Fn(b)o(y)h(supplying)f(the)i(wildcard)f(descriptor)i(handle)e(v)n(alue) g Fj(MPI)p 1736 876 14 2 v 15 w(WILDCARD)p Fn(.)75 925 y(In)16 b(this)g(case)i(the)e(receiv)o(er)i(ma)o(y)c(ha)o(v)o(e)i (obtained)g(the)h(pro)q(cess)h(descriptor)f(of)f(the)h(sender,)h(and)e (the)g(n)o(ull)g(de-)75 975 y(scriptor)f(handle)e Fj(MPI)p 430 975 V 15 w(NULL)h Fn(is)f(returned)j(in)d(the)i(relev)n(an)o(t)f(p) q(oin)o(t-to-p)q(oin)o(t)e(enquiry)i(pro)q(cedure.)75 1089 y Fm(Closed)19 b(Con)n(text)f(F)-5 b(orm)75 1166 y Fn(The)17 b Ff(close)n(d)g(c)n(ontext)k Fn(form)15 b(p)q(ermits)h(comm)o(unication)e(b)q(et)o(w)o(een)k(mem)o(b)q(ers)d (of)h(the)h(same)f(con)o(text.)27 b(Message)75 1216 y(selection)15 b(and)e(addressing)i(are)f(expressed)i(b)o(y)75 1291 y Fj(\(context,)k(rank,)h(tag\))75 1366 y Fn(where:)d Fj(context)9 b Fn(is)i(a)g(con)o(text)g(handle;)h Fj(rank)e Fn(is)g(a)h(pro)q(cess)i(rank)e(in)f(the)i(frame)d(of)i Fj(context)p Fn(;)f Fj(tag)g Fn(is)h(a)f(message)75 1416 y(tag.)18 b(The)c(calling)e(pro)q(cess)k(m)o(ust)d(b)q(e)h(a)g(mem)o(b) q(er)e(of)i(the)g(frame)f(of)g Fj(context)p Fn(.)166 1466 y Fj(Send)g Fn(supplies)g(the)i Fj(context)d Fn(of)g(the)j(receiv) o(er)g(\(and)e(sender\),)i(and)e(the)h Fj(rank)f Fn(of)g(the)h(receiv)o (er.)19 b Fj(Receive)75 1516 y Fn(supplies)11 b(the)g Fj(context)f Fn(of)g(the)h(sender)h(\(and)f(receiv)o(er\),)i(and)d(the) h(rank)g(of)f(the)h(sender.)19 b(The)11 b Fj(\(context,)20 b(rank\))75 1565 y Fn(pair)13 b(in)h Fj(Send)f Fn(\()p Fj(Receive)p Fn(\))g(is)g(su\016cien)o(t)i(to)e(determine)h(the)h(pro)q (cess)g(iden)o(ti\014er)g(of)e(the)h(receiv)o(er)i(\(sender\).)166 1615 y Fj(Receive)9 b Fn(cannot)h(wildcard)g(on)g Fj(context)p Fn(.)16 b Fj(Receive)9 b Fn(can)h(wildcard)g(on)g Fj(rank)g Fn(b)o(y)g(supplying)f(the)i(wildcard)75 1665 y(in)o(teger)j Fj(MPI)p 281 1665 V 15 w(DONTCARE)p Fn(.)e(This)i(prop)q(osal)f(mak)o (es)g(no)h(statemen)o(t)g(ab)q(out)f(the)i(pro)o(vision)e(for)g (wildcard)h(on)f Fj(tag)p Fn(.)75 1779 y Fm(Op)r(en)18 b(Con)n(text)h(F)-5 b(orm)75 1856 y Fn(The)19 b Ff(op)n(en)h(c)n (ontext)i Fn(form)17 b(p)q(ermits)h(comm)o(unication)d(b)q(et)o(w)o (een)20 b(mem)o(b)q(ers)d(of)h(an)o(y)g(t)o(w)o(o)g(con)o(texts.)33 b(Message)75 1906 y(selection)15 b(and)e(addressing)i(are)f(expressed)i (b)o(y)75 1981 y Fj(\(lcontext,)k(rcontext,)g(rank,)g(tag\))75 2056 y Fn(where:)i Fj(lcontext)13 b Fn(is)i(a)g(con)o(text)h(handle;)f Fj(rcontext)f Fn(is)h(a)g(con)o(text)h(handle;)f Fj(rank)f Fn(is)i(a)e(pro)q(cess)j(rank)f(in)e(the)75 2106 y(frame)h(of)h Fj(rcontext)p Fn(;)f Fj(tag)h Fn(is)g(a)g(message)g(tag.)25 b(The)17 b(calling)e(pro)q(cess)j(m)o(ust)d(b)q(e)i(a)f(mem)o(b)q(er)f (of)h(the)h(frame)e(of)75 2156 y Fj(lcontext)d Fn(and)i(need)h(not)f(b) q(e)g(a)g(mem)o(b)q(er)e(of)h(the)i(frame)d(of)i Fj(rcontext)p Fn(.)166 2205 y Fj(Send)g Fn(supplies)h(the)g(con)o(text)g(of)f(the)h (sender)h(in)f Fj(lcontext)p Fn(,)d(the)j(con)o(text)h(of)e(the)h (receiv)o(er)h(in)e Fj(rcontext)p Fn(,)75 2255 y(and)f(the)h Fj(rank)e Fn(of)g(the)i(receiv)o(er)h(in)d(the)i(frame)e(of)g Fj(rcontext)p Fn(.)17 b Fj(Receive)11 b Fn(supplies)j(the)f(con)o(text) h(of)f(the)g(receiv)o(er)75 2305 y(in)k Fj(lcontext)p Fn(,)f(the)i(con)o(text)g(of)f(the)h(sender)h(in)e Fj(rcontext)p Fn(,)f(and)h(the)h Fj(rank)f Fn(of)g(the)h(sender)h(in)d(the)i(frame)f (of)75 2355 y Fj(rcontext)p Fn(.)27 b(The)18 b Fj(\(rcontext,)i(rank\)) c Fn(pair)i(in)f Fj(Send)f Fn(\()p Fj(Receive)p Fn(\))h(is)g (su\016cien)o(t)h(to)f(determine)h(the)g(pro)q(cess)75 2405 y(iden)o(ti\014er)c(of)g(the)g(receiv)o(er)h(\(sender\).)166 2455 y Fj(Receive)e Fn(cannot)j(wildcard)e(on)h Fj(lcontext)p Fn(.)20 b Fj(Receive)13 b Fn(can)j(wildcard)e(on)h Fj(rcontext)e Fn(b)o(y)i(supplying)f(the)75 2504 y(wildcard)h(descriptor)h(handle)f (v)n(alue)g Fj(MPI)p 753 2504 V 15 w(WILDCARD)p Fn(,)e(in)i(whic)o(h)g (case)h(it)f(m)o(ust)f(also)g(wildcard)h(on)g Fj(rank)f Fn(since)75 2554 y(the)i(pro)q(cess)h(descriptor)g(of)d(the)i(sender)h (cannot)f(b)q(e)g(determined.)22 b(In)15 b(this)h(case)g(the)g(receiv)o (er)h(ma)o(y)c(not)i(ha)o(v)o(e)75 2604 y(obtained)g(the)g(con)o(text)h (descriptor)g(of)f(the)g(sender,)i(and)e(the)g(n)o(ull)f(descriptor)i (handle)f Fj(MPI)p 1563 2604 V 15 w(NULL)f Fn(is)h(returned)75 2654 y(in)g(the)h(relev)n(an)o(t)g(p)q(oin)o(t-to-p)q(oin)o(t)e (enquiry)h(pro)q(cedure.)25 b Fj(Receive)14 b Fn(can)i(wildcard)f(on)g Fj(rank)f Fn(b)o(y)i(supplying)e(the)75 2704 y(wildard)f(in)o(tger)h(v) n(alue)f Fj(MPI)p 520 2704 V 15 w(DONTCARE)p Fn(.)p eop %%Page: 79 84 79 83 bop 75 -100 a Ft(10.7.)34 b(COLLECTIVE)16 b(COMMUNICA)l(TION)891 b Fv(79)75 45 y Fm(Uniform)17 b(In)n(tegration)75 124 y Fn(The)j(three)h(forms)d(of)h(addressing)i(and)e(selection)h(describ) q(ed)i(ha)o(v)o(e)d(di\013eren)o(t)i(syn)o(tactic)f(framew)o(orks.)34 b(W)m(e)75 174 y(can)18 b(consider)h(in)o(tegrating)e(these)i(forms)e (in)o(to)g(the)h(p)q(oin)o(t-to-p)q(oin)o(t)f(c)o(hapter)h(of)g Fe(mpi)f Fn(b)o(y)h(de\014ning)g(a)f(further)75 224 y(orthogonal)c (axis)g(\(as)i(in)e(the)i(m)o(ulti-lev)o(el)c(prop)q(osal)j(of)g(Gropp) f(&)i(Lusk\))f(whic)o(h)g(deals)g(with)g(form.)j(This)d(is)g(at)75 274 y(the)j(exp)q(ense)h(of)d(m)o(ultiplying)d(the)17 b(n)o(um)o(b)q(er)e(of)h Fj(Send)f Fn(and)h Fj(Receive)e Fn(pro)q(cedures)19 b(b)o(y)d(a)f(factor)h(of)g(three,)h(and)75 324 y(some)g(further)i(but)g(trivial)d(w)o(ork)i(with)g(details)g(of)f (the)i(curren)o(t)h(p)q(oin)o(t-to-p)q(oin)o(t)c(c)o(hapter)k(whic)o(h) e(uniformly)75 373 y(assumes)c(a)f(single)h(addressing)g(and)g (selection)h(form.)166 425 y(There)j(are)g(v)n(arious)f(approac)o(hes)h (to)f(uni\014cation)g(of)f(the)i(syn)o(tactic)g(framew)o(orks)e(whic)o (h)h(ma)o(y)f(simplify)75 475 y(in)o(tegration.)g(Tw)o(o)11 b(options)g(are)h(no)o(w)f(describ)q(ed,)i(eac)o(h)f(based)g(on)f (reten)o(tion)h(and)f(extension)h(of)f(the)h(framew)o(ork)75 524 y(of)h(the)i(closed)f(and)g(op)q(en)g(con)o(texts)h(forms.)166 576 y(The)c(framew)o(ork)e(of)i(the)g(op)q(en)g(con)o(text)h(form)d (could)h(b)q(e)i(adopted)f(and)g(extended.)18 b(The)11 b(n)o(ull)f(con)o(text)i(form)75 625 y(is)g(expressed)i(as)e Fj(\(MPI)p 439 625 14 2 v 14 w(NULL,)21 b(MPI)p 650 625 V 15 w(NULL,)g(process,)f(tag\))p Fn(,)11 b(whic)o(h)h(is)f(a)h(little) f(clumsy)m(.)16 b(The)c(closed)g(con)o(text)75 675 y(form)17 b(is)i(expressed)i(as)e Fj(\(MPI)p 563 675 V 15 w(NULL,)h(context,)h (rank,)f(tag\))p Fn(,)f(whic)o(h)g(is)f(marginally)e(incon)o(v)o(enien) o(t.)33 b(The)75 725 y(op)q(en)14 b(con)o(text)h(form)d(is)i(expressed) i(as)e Fj(\(lcontext,)20 b(rcontext,)g(rank,)g(tag)p Fn(\),)13 b(whic)o(h)h(is)g(of)f(course)i(natural.)166 776 y(The)h(framew)o(ork)f(of)g(the)h(closed)h(con)o(text)f(form)e (could)i(b)q(e)h(adopted)f(and)g(extended.)25 b(The)16 b(n)o(ull)f(con)o(text)75 826 y(form)h(is)h(expressed)j(as)e Fj(\(MPI)p 558 826 V 15 w(NULL,)j(process,)f(tag\))p Fn(,)d(whic)o(h)g(is)h(marginally)c(incon)o(v)o(enien)o(t,)k(and)g (requires)75 876 y(that)12 b(descriptor)i(handles)f(are)f(expressed)j (as)d(in)o(tgers.)18 b(The)13 b(closed)g(con)o(text)g(form)e(is)h (expressed)i(as)f Fj(\(context,)75 926 y(rank,)21 b(tag\))p Fn(,)13 b(whic)o(h)h(is)g(of)f(course)j(natural.)i(Expression)e(of)d (the)i(op)q(en)g(con)o(text)g(form)d(requires)k(a)d(little)h(more)75 976 y(w)o(ork.)23 b(W)m(e)15 b(can)g(use)i(the)f Fj(context)e Fn(\014eld)h(as)h(\\shorthand)f(notation")g(for)g(the)h Fj(\(lcontext,)k(rcontext\))13 b Fn(pair)75 1025 y(at)19 b(the)h(exp)q(ense)h(of)d(in)o(tro)q(ducing)h(some)f(tric)o(k)o(ery)m (.)34 b(W)m(e)19 b(de\014ne)h(a)f(\\duplet)g(descriptor")h(whic)o(h)f (is)g(formally)75 1075 y(comp)q(osed)12 b(of)h(t)o(w)o(o)f(references)j (to)e(con)o(texts,)h(and)e(pro)o(vide)h(a)f(pro)q(cedure)j(whic)o(h)e (constructs)i(suc)o(h)e(a)g(descriptor)75 1125 y(giv)o(en)i(t)o(w)o(o)f (con)o(text)i(descriptors.)23 b(Both)15 b Fj(Send)g Fn(and)f Fj(Receive)g Fn(accept)i(a)f(duplet)g(descriptor)i(in)d Fj(context)p Fn(,)g(are)75 1175 y(able)e(to)f(distinguish)h(the)g (duplet)g(descriptor)h(from)d(a)i(singlet)g(descriptor,)h(and)e(treat)i (the)f(duplet)h(as)e(shorthand)75 1225 y(notation.)17 b(It)d(is)g(conjectured)i(that)e(using)f(this)h(framew)o(ork)e(is)i (the)h(b)q(est)g(c)o(hoice)f(for)g Fe(mpi)p Fn(.)75 1369 y Fp(10.7)70 b(Collecti)o(v)n(e)20 b(Comm)n(unication)75 1463 y Fn(Symmetric)8 b(collectiv)o(e)h(comm)o(unication)e(op)q (erations)i(are)i(complian)o(t)c(with)i(the)i(closed)f(con)o(text)g (form)e(describ)q(ed)75 1513 y(ab)q(o)o(v)o(e.)18 b(This)13 b(prop)q(osal)g(recommends)g(that)g(suc)o(h)h(op)q(erations)g(accept)h (a)e(con)o(text)h(descriptor)h(whic)o(h)e(iden)o(ti\014es)75 1563 y(the)h(con)o(text)h(\(th)o(us)g(frame\))d(in)i(whic)o(h)f(they)i (are)f(to)g(op)q(erate.)166 1614 y Fe(mpi)e Fn(do)q(es)i(plan)e(to)h (describ)q(e)i(symmetric)c(collectiv)o(e)i(comm)o(unicatio)o(n)d(op)q (erations.)18 b(It)13 b(is)g(not)g(p)q(ossible)g(to)75 1664 y(determine)d(whether)h(this)f(prop)q(osal)g(is)g(su\016cien)o(t)h (to)e(allo)o(w)g(implemen)o(tatio)o(n)e(of)j(the)g(collectiv)o(e)g (comm)o(unication)75 1714 y(c)o(hapter)18 b(of)f Fe(mpi)g Fn(in)g(terms)g(of)g(the)h(p)q(oin)o(t-to-p)q(oin)o(t)e(c)o(hapter)i (of)f Fe(mpi)g Fn(without)g(loss)g(of)g(generalit)o(y)m(,)g(since)h (the)75 1763 y(collectiv)o(e)c(op)q(erations)g(are)g(not)g(y)o(et)g (de\014ned.)166 1815 y(Asymmetric)g(collectiv)o(e)i(comm)o(unication)d (op)q(erations,)k(esp)q(ecially)f(those)h(in)e(whic)o(h)h(sender\(s\))j (and)c(re-)75 1864 y(ceiv)o(er\(s\))k(are)e(distinct)h(pro)q(cesses,)i (are)e(complian)o(t)d(with)h(the)i(op)q(en)g(con)o(text)g(form)d (describ)q(ed)k(ab)q(o)o(v)o(e.)28 b(This)75 1914 y(prop)q(osal)12 b(recommends)f(that)h(suc)o(h)h(op)q(erations)g(accept)g(a)f(pair)g(of) f(con)o(text)i(descriptors)h(\(a)e(duplet)h(descriptor\))75 1964 y(whic)o(h)h(iden)o(tify)f(the)h(con)o(texts)h(\(th)o(us)g (frames\))e(in)g(whic)o(h)h(they)g(are)h(to)e(op)q(erate.)166 2015 y Fe(mpi)18 b Fn(do)q(es)g(not)g(plan)f(to)h(describ)q(e)i (asymmetric)c(collectiv)o(e)i(comm)o(unication)d(op)q(erations.)30 b(Suc)o(h)18 b(op)q(er-)75 2065 y(ations)i(are)g(expressiv)o(e)i(when)e (writing)f(programs)g(b)q(ey)o(ond)h(the)h(SPMD)f(mo)q(del,)g(whic)o(h) g(are)g(comp)q(osed)g(of)75 2115 y(comm)o(unicativ)o(e)13 b(functionally)h(distinct)i(pro)q(cess)h(groups.)24 b(These)16 b(services)i(can)e(b)q(e)g(deferred)h(in)e(this)h(session)75 2165 y(of)d Fj(mpi)p Fn(.)75 2310 y Fp(10.8)70 b(Conclusion)75 2403 y Fn(This)13 b(c)o(hapter)h(presen)o(ted)i(a)d(prop)q(osal)f(for)h (comm)o(unication)d(con)o(texts)k(and)f(pro)q(cess)i(groups)f(with)f Fe(mpi)p Fn(.)k(In)c(the)75 2453 y(prop)q(osal)18 b(pro)q(cess)h (groups)f(are)h(created)g(dynamically)c(and)j(are)g(static)g(in)g(mem)o (b)q(ership.)28 b(Asso)q(ciated)19 b(with)75 2503 y(eac)o(h)14 b(pro)q(cess)i(group)e(are)g(one)g(or)g(more)f(comm)o(unication)d(con)o (texts)15 b(whic)o(h)f(inherit)g(pro)q(cess)i(ranking.)166 2554 y(The)g(recommendations)d(for)i(p)q(oin)o(t-to-p)q(oin)o(t)f(comm) o(unication)e(are)k(p)q(o)o(w)o(erful.)22 b(The)16 b(prop)q(osal)f(pro) o(vides)75 2604 y(pro)q(cess)g(addressed)g(comm)o(unicati)o(on)10 b(whic)o(h)j(o)q(ccurs)h(within)f(an)f(extended)j(con)o(text.)j(The)c (prop)q(osal)f(also)f(con-)75 2654 y(tains)g(closed)g(con)o(text)h (comm)o(uni)o(cation)c(addressed)14 b(in)d(terms)h(of)f(con)o(text)h (and)g(rank)g(whic)o(h)f(protects)j(messages)75 2704 y(b)q(elonging)g(to)h(one)g(con)o(text)h(from)d(those)j(b)q(elonging)e (to)h(other)h(con)o(texts.)22 b(The)16 b(prop)q(osal)e(also)h(con)o (tains)g(op)q(en)p eop %%Page: 80 85 80 84 bop 75 -100 a Fv(80)769 b Ft(CHAPTER)15 b(10.)35 b(CONTEXTS)15 b({)g(PR)o(OPOSAL)i(VI)q(I)75 45 y Fn(con)o(text)i(comm)o (unications)d(adressed)21 b(in)d(terms)h(of)f(sender)i(con)o(text,)g (receiv)o(er)h(con)o(text,)f(and)e(pro)q(cess)j(rank)75 95 y(whic)o(h)14 b(pro)o(vides)g(expressiv)o(e)h(p)q(o)o(w)o(er)f(for)g (in)o(tercomm)o(unication)d(b)q(et)o(w)o(een)k(mo)q(dules)e(within)g (di\013eren)o(t)i(groups.)166 145 y(The)d(prop)q(osal)f(is)h (extensible)g(to)g(a)f(n)o(um)o(b)q(er)g(of)g(features)h(whic)o(h)g (migh)o(t)d(b)q(e)k(included)e(in)h(future)g(sessions)h(of)75 195 y Fe(MPI)p Fn(,)g(for)h(example:)i(dynamic)c(pro)q(cesses;)17 b(dynamic)12 b(groups;)h(m)o(ultiple)f(group)i(collectiv)o(e)g(comm)o (uni)o(cations.)p eop %%Page: 81 86 81 85 bop 75 360 a Fq(Chapter)34 b(11)75 572 y Fx(Con)m(texts)40 b({)g(Prop)s(osal)h(I)s(I)s(I)815 791 y Fn(A.)14 b(Skjellum)d Ff(et)k(al.)75 949 y Fp(11.1)70 b(In)n(tro)r(duction)75 1047 y Fn(This)14 b(c)o(hapter)h(tak)o(es)g(a)f(sligh)o(tly)e (di\013eren)o(t)k(approac)o(h)e(to)g(con)o(texts)h(and)f(groups,)g (than)g(do)q(es)h(Prop)q(osal)f(VI)q(I.)g(It)75 1097 y(is)f(of)f(roughly)g(equal)h(conceptual)h(\\p)q(o)o(w)o(er")e(as)i (Prop)q(osal)e(VI)q(I,)h(with)g(some)f(di\013erences.)20 b(As)13 b(appropriate,)g(this)75 1147 y(c)o(hapter)i(b)q(orro)o(ws)f (directly)g(from)e(Prop)q(osal)i(VI)q(I,)g(b)o(y)f(Clark)o(e)h(and)g (Little\014eld.)134 1250 y(1.)22 b(Con)o(texts)e(are)h(supp)q(orted)h (to)e(discriminate)f(b)q(et)o(w)o(een)i(messages)g(in)e(the)i(system.) 37 b(A)20 b(con)o(text)h(is)f(a)189 1299 y(conceptual)d(extension)h(of) f(the)h(tag)e(space)j(in)o(to)d(a)h(system-de\014ned)h(part)f(\(not)g (wildcardable\),)g(and)g(a)189 1349 y(totally)12 b(user-de\014ned)k (part)e(\(the)h(traditional)d(32-bit)h(tag\).)134 1439 y(2.)22 b(A)14 b(con)o(text)i(is)e(a)g(lo)o(w)o(er-lev)o(el)g(concept)i (than)e(a)h(group,)f(so)g(that)h(con)o(texts)h(not)e(asso)q(ciated)i (with)e(groups)189 1489 y(are)k(p)q(ermitted.)31 b(This)18 b(p)q(ermits)f(the)i(user)g(to)f(dev)o(elop)g(co)q(des)h(that)f(build)g (on)g(the)g(serv)o(er)i(mo)q(del,)d(or)189 1539 y(whic)o(h)c(build)g (up)h(groups)h(dynamically)10 b(\(not)k(otherwise)h(supp)q(orted)g(b)o (y)f(MPI1\).)134 1629 y(3.)22 b(Groups)15 b(are)h(used)h(to)e(describ)q (e)j(co)q(op)q(erativ)o(e)e(comm)o(unicatio)o(n)d(in)i(the)h(system.)23 b(Groups)16 b(ha)o(v)o(e)f(one)h(or)189 1679 y(more)i(con)o(text)i(of)f (comm)o(unicati)o(on)d(asso)q(ciated)21 b(with)d(them.)34 b(When)19 b(created,)j(a)d(group)g(is)g(giv)o(en)g(a)189 1729 y(con)o(text)14 b(of)g(comm)o(uni)o(cation.)134 1819 y(4.)22 b(Con)o(text)11 b(and)h(group)f(descriptors)i(can)f(b)q(e) g(explicitly)f(transferred)i(to)e(pro)q(cesses)j(that)e(are)g(not)f (mem)o(b)q(ers)189 1869 y(of)i(the)h(con)o(text)h(or)f(group.)134 1959 y(5.)22 b(In)10 b(p)q(oin)o(t-to-p)q(oin)o(t)e(messages,)i(pro)q (cesses)j(can)d(b)q(e)h(iden)o(ti\014ed)f(in)f(either)i(of)e(t)o(w)o(o) h(w)o(a)o(ys:)16 b(b)o(y)9 b(opaque)h(pro)q(cess)189 2009 y(iden)o(ti\014er,)h(or)g(b)o(y)g(rank)g(in)g(a)g(group;)g(in)g (either)h(case,)g(comm)o(unicatio)o(n)d(scop)q(e)j(is)f(within)f(a)h (giv)o(en)g(con)o(text.)134 2099 y(6.)22 b(The)14 b(cac)o(he)g(facilit) o(y)m(,)d(allo)o(wing)g(groups)j(to)f(add)h(additional)d(information)g (\(describ)q(ed)k(in)e(Prop)q(osal)h(VI)q(I\))189 2149 y(is)k(em)o(braced)h(b)o(y)f(this)h(Prop)q(osal,)g(with)g(reserv)n (ations)g(as)g(noted.)33 b(The)19 b(p)q(ossible)g(need)h(to)e(omit)f (this)189 2199 y(cac)o(heing)c(feature)g(from)e(MPI1)h(should)h(not)f (in)o(v)n(alidate)f(the)i(remainder)f(of)g(Prop)q(osal)g(VI)q(I)h(from) e(further)189 2248 y(consideration)j(\(sev)o(erabilit)o(y\).)75 2406 y Fp(11.2)70 b(Pro)r(cesses)75 2504 y Fn(This)18 b(Prop)q(osal)g(views)g(pro)q(cesses)i(in)e(the)g(familia)o(r)d(w)o(a)o (y)m(,)j(as)g(one)g(thinks)g(of)f(pro)q(cesses)j(in)e(Unix)f(or)h(NX)g (for)75 2554 y(example.)32 b(Eac)o(h)19 b(pro)q(cess)i(is)e(a)g (distinct)g(space)h(of)e(instructions)i(and)f(data.)33 b(Eac)o(h)19 b(pro)q(cess)i(is)d(allo)o(w)o(ed)g(to)75 2604 y(comp)q(ose)f(m)o(ultiple)e(concurren)o(t)20 b(threads)e(and)f Fe(MPI)h Fn(do)q(es)g(not)f(distinguish)g(suc)o(h)i(threads.)29 b Fe(MPI)18 b Fn(shall)e(b)q(e)75 2654 y(thread-a)o(w)o(are,)e(but)h (not)f(thread)h(supp)q(orting,)f(so)h(w)o(e)f(mak)o(e)f(ev)o(ery)i (attempt)f(to)g(mak)o(e)f(thread)i(safe)f(programs)75 2704 y(p)q(ossible)g(in)g(de\014ning)f(what)h(follo)o(ws.)952 2828 y Fv(81)p eop %%Page: 82 87 82 86 bop 75 -100 a Fv(82)786 b Ft(CHAPTER)15 b(11.)34 b(CONTEXTS)16 b({)f(PR)o(OPOSAL)h(I)q(I)q(I)75 45 y Fm(Pro)r(cess)i (Iden)n(ti\014er)75 128 y Fn(Eac)o(h)13 b(pro)q(cess)h(is)f(iden)o (ti\014ed)g(b)o(y)f(an)h(opaque)f(pro)q(cess)j(iden)o(ti\014er,)e(whic) o(h)f(is)h(asso)q(ciable)f(to)h(a)f Ff(pr)n(o)n(c)n(ess)i(descriptor)75 178 y Fn(of)19 b(unde\014ned)i(size)f(and)f(opaque)h(structure,)i (through)e Fe(MPI)f Fn(accessor)i(calls.)35 b(In)19 b(a)g(static)h(pro) q(cess)h(mo)q(del)75 227 y(pro)q(cess)d(iden)o(ti\014ers)g(can)e(b)q(e) h(obtained)g(b)o(y)f(mapping)e(from)h(a)h(group)g(and)h(rank.)25 b(In)17 b(a)f(future)h(extension)g(for)75 277 y(dynamic)12 b(pro)q(cesses,)k(iden)o(ti\014ers)f(ma)o(y)d(b)q(e)i(returned)i(b)o(y) e(pro)q(cess)h(creation)f(functions.)166 330 y Fe(MPI)f Fn(pro)o(vides)i(a)e(pro)q(cedure)j(that)e(returns)h(an)f(iden)o (ti\014er)g(for)g(the)g(calling)f(pro)q(cess.)162 434 y Fj(my_process)20 b(=)h(mpi_my_process\(\))75 534 y Fn(This)11 b(iden)o(ti\014er)g(can)g(b)q(e)g(con)o(v)o(erted)h(to)e(a)h (transmittable)e(form)g(b)o(y)i Fe(MPI)f Fn(con)o(v)o(erter)i (functions,)f(though)f(opaque,)75 584 y(it)k(is)f(conceptually)h(a)g(p) q(oin)o(ter.)75 717 y Fm(Pro)r(cess)k(Creation)g(&)h(Destruction)75 800 y Fn(This)14 b(prop)q(osal)f(mak)o(es)g(no)h(statemen)o(ts)g (regarding)g(creation)g(and)g(destruction)h(of)e(pro)q(cesses.)166 853 y Fe(MPI)20 b Fn(pro)o(vides)g(facilities)f(for)h(iden)o(ti\014er)g (transmission)f(allo)o(wing)e(the)k(user)g(explicitly)e(to)h(transfer)h (a)75 903 y(pro)q(cess)h(iden)o(ti\014er)f(from)d(one)j(pro)q(cess)h (to)e(another.)38 b(These)21 b(facilities)e(are)i(describ)q(ed)h(b)q (elo)o(w.)37 b(MPI)21 b(also)75 953 y(pro)o(vides)14 b(means)f(to)g(transfer)i(underlying)e(information)e(ab)q(out)i(the)i (opaque)e(pro)q(cess)j(descriptor)f(underlying.)75 1107 y Fp(11.3)70 b(Pro)r(cess)23 b(Groups)75 1204 y Fn(This)d(prop)q(osal)h (views)f(a)h(pro)q(cess)h(group)e(as)h(an)f(ordered)i(collection)e(of)g (distinct)h(pro)q(cesses)i(\(via)d(pro)q(cess)75 1254 y(iden)o(ti\014ers\),)c(the)f(mem)o(b)q(ership)f(and)h(ordering)g(of)f (whic)o(h)h(do)q(es)h(not)f(c)o(hange)h(o)o(v)o(er)f(the)g(lifetime)e (of)i(the)h(group.)75 1304 y(The)g(canonical)e(represen)o(tation)j(of)e (a)g(group)g(is)g(a)g(one-to-one)h(map)d(from)h(the)i(in)o(tegers)g (\(0)p Fd(;)7 b Fn(1)p Fd(;)g(:)g(:)g(:)t(;)g(N)14 b Fi(\000)d Fn(1\))k(to)75 1353 y(iden)o(ti\014ers)g(of)e(the)h Fd(N)19 b Fn(pro)q(cesses)e(comp)q(osing)12 b(the)i(group.)166 1407 y(There)j(ma)o(y)d(b)q(e)i(structure)i(asso)q(ciated)f(with)e(a)h (pro)q(cess)h(group)f(de\014ned)h(b)o(y)f(a)f(pro)q(cess)j(top)q(ology) m(.)k(This)75 1456 y(prop)q(osal)14 b(mak)o(es)e(no)i(further)h (statemen)o(ts)f(regarding)g(suc)o(h)g(structures.)166 1509 y(There)f(ma)o(y)e(b)q(e)i(non-en)o(umerativ)o(e)e(w)o(a)o(ys)h (to)g(construct)i(and)e(manipulate)e(sp)q(ecial)j(groups,)f(or)h(for)f (sp)q(ecial)75 1559 y(mac)o(hine)f(arc)o(hitectures)j(\()p Ff(e.g.)p Fn(,)e(cohorts\).)18 b(This)12 b(prop)q(osal)g(mak)o(es)f(no) h(further)h(statemen)o(ts)g(ab)q(out)f(suc)o(h)h(sp)q(ecial)75 1609 y(groups,)h(other)g(than)g(the)g(desirabilit)o(y)f(of)h(a)o(v)o (oiding)d(group-name)i(en)o(umeration,)f(when)j(p)q(ossible.)75 1743 y Fm(Group)k(Iden)n(ti\014er)75 1825 y Fn(Eac)o(h)13 b(group)g(is)f(iden)o(ti\014ed)h(b)o(y)g(an)f(opaque)h Ff(gr)n(oup)h(identi\014er)p Fn(,)f(whic)o(h)f(is)h(a)f(asso)q(ciable)h (to)g(a)f Ff(gr)n(oup)i(descriptor)f Fn(of)75 1875 y(unde\014ned)i (size)g(and)e(opaque)h(structure,)i(through)e Fe(MPI)f Fn(accessor)j(functions.)166 1928 y(The)f(initialization)c(of)j Fe(MPI)g Fn(mak)o(es)g(eac)o(h)g(pro)q(cess)j(a)d(mem)o(b)q(er)f(of)g (the)i(\\initial")d(group.)20 b Fe(MPI)14 b Fn(pro)o(vides)75 1978 y(a)g(pro)q(cedure)h(that)f(returns)i(an)d(iden)o(ti\014er)i(to)e (this)h(group.)162 2081 y Fj(group_ident)20 b(=)h (mpi_initial_group\(\))166 2182 y Fe(MPI)12 b Fn(pro)o(vides)h (facilities)f(for)h(descriptor)h(transmission)d(allo)o(wing)g(the)i (user)h(explicitly)e(transfer)i(a)e(group)75 2231 y(descriptor)j(from)d (one)i(pro)q(cess)i(to)e(another.)75 2365 y Fm(Group)19 b(Creation)f(and)h(Deletion)75 2447 y Fe(MPI)f Fn(pro)o(vides)h (facilities)e(whic)o(h)h(allo)o(w)f(users)j(dynamically)15 b(to)j(create)i(and)e(delete)i(pro)q(cess)g(groups.)32 b(The)75 2497 y(pro)q(cedures)16 b(describ)q(ed)g(here)f(generate)g (groups)f(whic)o(h)g(are)g(static)g(in)g(mem)o(b)q(ership.)166 2550 y Fe(mpi)g Fn(pro)o(vides)i(a)e(pro)q(cedure)j(that)e(allo)o(ws)e (users)k(to)e(create)h(one)f(or)g(more)f(groups)h(whic)o(h)g(are)g (subsets)i(of)75 2600 y(existing)d(groups.)119 2704 y Fj(new_group)20 b(=)h(mpi_group_partitio)o(n\(old)o(_grou)o(p,)e(key\)) p eop %%Page: 83 88 83 87 bop 75 -100 a Ft(11.3.)29 b(PR)o(OCESS)16 b(GR)o(OUPS)1210 b Fv(83)75 45 y Fn(This)13 b(pro)q(cedure)j(creates)f(one)f(or)f(more)f (new)i(groups)g Fj(new)p 1017 45 14 2 v 15 w(group)e Fn(whic)o(h)i(are)f(distinct)h(subsets)h(of)e(an)g(existing)75 95 y(group)h Fj(old)p 262 95 V 15 w(group)f Fn(according)h(to)g(the)g (supplied)g(v)n(alues)g(of)f Fj(key)p Fn(.)18 b(This)c(pro)q(cedure)h (is)f(called)g(b)o(y)g(and)f(sync)o(hro-)75 145 y(nises)19 b(all)e(mem)o(b)q(ers)h(of)f Fj(new)p 542 145 V 15 w(group)p Fn(.)31 b(No)18 b(o)o(v)o(erlapping)f(is)i(p)q(ermitted,)g(so)f(that)h (exactly)f(one)h Fj(new)p 1708 145 V 15 w(group)e Fn(is)75 195 y(ac)o(hiev)o(ed)g(in)g(eac)o(h)g Fj(old)p 462 195 V 15 w(group)f Fn(pro)q(cess.)29 b(The)18 b(new)f(groups)g(ha)o(v)o(e)g (new)g(con)o(texts)h(of)f(comm)o(unicatio)o(n.)25 b(The)75 244 y(n)o(um)o(b)q(er)13 b(of)g(new)i(con)o(texts)g(dep)q(ends)g(on)f (the)g(n)o(um)o(b)q(er)g(of)f(di\013eren)o(t)i(k)o(ey)f(v)n(alues)f (asserted.)166 294 y Fe(MPI)h Fn(pro)o(vides)g(a)g(pro)q(cedure)i(whic) o(h)e(allo)o(ws)e(users)k(to)e(create)h(a)f(group)g(b)o(y)g(p)q(erm)o (utation)f(of)g(an)h(existing)75 344 y(group.)162 429 y Fj(new_group)20 b(=)i(mpi_group_permut)o(ation)o(\(old_)o(grou)o(p,)d (rank\))75 514 y Fn(This)13 b(pro)q(cedure)h(creates)h(one)e(new)g (group)f(with)h(the)g(same)f(mem)o(b)q(ership)f(as)i Fj(old)p 1391 514 V 15 w(group)e Fn(with)i(a)f(p)q(erm)o(utation)75 564 y(of)19 b(pro)q(cess)i(ranking,)f(and)f(returns)i(the)f(created)h (group)e(descriptor)i(in)e Fj(new)p 1357 564 V 15 w(group)p Fn(.)33 b(It)20 b(is)f(called)g(b)o(y)g(and)75 614 y(sync)o(hronises)c (all)e(mem)o(b)q(ers)g(of)g Fj(gha)p Fn(.)k(The)e(new)f(group)g(has)g (a)f(new)i(con)o(text)f(of)f(comm)o(unication.)166 664 y Fe(MPI)20 b Fn(pro)o(vides)g(a)f(pro)q(cedure)j(that)e(allo)o(ws)f (users)j(to)e(create)h(a)f(group)g(b)o(y)f(explicit)h(de\014nition)g (of)f(its)75 713 y(mem)o(b)q(ership)12 b(as)i(a)g(list)f(of)h(pro)q (cess)h(iden)o(ti\014ers.)162 799 y Fj(new_group)20 b(=)i (mpi_group_defini)o(tion\()o(array)o(_of_)o(proce)o(ss_id)o(s,len)o (gth,)75 848 y(context_to_use\))75 934 y Fn(This)15 b(pro)q(cedure)j (creates)f(one)e(new)h(group)f Fj(new)p 858 934 V 15 w(group)g Fn(with)g(mem)o(b)q(ership)e(and)j(ordering)f(describ)q(ed)i (b)o(y)e(the)75 983 y(pro)q(cess)h(handle)f(list)f Fj(array)p 538 983 V 14 w(of)p 596 983 V 16 w(process)p 766 983 V 14 w(ids)p Fn(,)f(of)h(length)h Fj(length)p Fn(.)j(If)c Fj(context)p 1405 983 V 14 w(to)p 1463 983 V 16 w(use)f Fn(is)i(sp)q(eci\014ed)h(as)e(the)75 1033 y(sp)q(ecial)e(con)o(text)g Fj(MPI)p 422 1033 V 15 w(GET)p 503 1033 V 15 w(CONTEXT)p Fn(,)d(then)j(the)g(system)g(allo)q(cates)f(the)h(new)g(con)o(text.)17 b(Else,)12 b(the)g(system)g(trusts)75 1083 y(the)17 b(user)h(to)e(ha)o (v)o(e)g(allo)q(cated)g(the)h(con)o(text)g(legally)e(\(see)j(b)q(elo)o (w\).)26 b(This)16 b(pro)q(cedure)i(m)o(ust)e(b)q(e)h(called)f(b)o(y)g (and)75 1133 y(sync)o(hronises)j(all)d(pro)q(cesses)k(iden)o(ti\014ed)d (in)g(the)h(list.)27 b(A)18 b(further)g(approac)o(h)f(to)g(new)h(group) f(de\014nition)g(is)g(as)75 1183 y(follo)o(ws)162 1268 y Fj(new_group)j(=)i(mpi_group_def_by)o(_lead)o(er\(le)o(ader)o(_id,)c (in_length,)75 1318 y(in_array_of_proce)o(ss_id)o(s,)h(context_to_use,) g(out_array_of_pr)o(ocess)o(_ids,)75 1367 y(out_length\))75 1452 y Fn(This)d(w)o(eak)o(er)h(form)d(requires)k(all)d(future)i(group) f(mem)o(b)q(ers)f(to)h(ha)o(v)o(e)g(iden)o(ti\014ed)h(only)e(a)h (leader)h(\(sp)q(eci\014ed)h(b)o(y)75 1502 y Fj(leader)p 210 1502 V 14 w(id)p Fn(\).)j(The)15 b(leader)h(kno)o(ws)e(the)i (length)f(a)f(names)g(of)g(all)g(participan)o(ts.)21 b(This)15 b(is)f(a)h(sync)o(hronization)g(of)75 1552 y(all)e(participan)o(ts.)18 b(Same)12 b(seman)o(tics)i(for)f Fj(context)p 898 1552 V 14 w(to)p 956 1552 V 16 w(use)g Fn(as)h(ab)q(o)o(v)o(e.)166 1602 y Fc(MPI)21 b Fn(pro)o(vides)g(a)f(w)o (a)o(y)g(formally)e(to)i(duplicate)h(a)f(group,)i(in)e(order)i(to)e (obtain)g(a)g(separate)i(con)o(text)75 1652 y(of)e(comm)o(unication.)35 b(This)21 b(can)g(b)q(e)g(ac)o(hiev)o(ed)g(b)o(y)g(using)f(other)i(op)q (erations,)g(but)f(this)g(pro)q(cedure)h(allo)o(ws)75 1702 y(optimization)11 b(in)j(some)f(implem)o(en)o(tations)e(\(no)j (explicit)g(group)f(cop)o(y)m(,)g(for)h(instance\).)75 1787 y Fj(new_group)20 b(=)i(mpi_group_dupli)o(cate\()o(old_g)o(roup\)) 75 1872 y Fn(The)12 b(only)e(di\013erence)j(b)q(et)o(w)o(een)g(the)f (old)e(and)h(new)h(groups)g(is)f(that)g(there)i(is)e(a)g(new)g(con)o (text)h(of)f(comm)o(unicatio)o(n.)166 1922 y Fe(MPI)i Fn(pro)o(vides)i(a)e(pro)q(cedure)j(whic)o(h)e(allo)o(ws)e(users)k(to)d (delete)i(user)g(created)h(groups.)162 2007 y Fj(mpi_group_deletion)o (\(grou)o(p\))75 2092 y Fn(This)h(pro)q(cedure)j(deletes)f(an)e (existing)g(group)g Fj(group)p Fn(.)28 b(It)17 b(is)h(called)f(b)o(y)g (and)g(sync)o(hronises)i(all)d(mem)o(b)q(ers)h(of)75 2142 y Fj(group)p Fn(.)166 2191 y Fe(MPI)d Fn(ma)o(y)e(pro)o(vide)i (additional)f(pro)q(cedures)k(whic)o(h)d(allo)o(w)e(users)k(to)f (construct)g(pro)q(cess)i(groups)d(with)g(a)75 2241 y(pro)q(cess)i (group)d(top)q(ology)m(.)75 2357 y Fm(Group)19 b(A)n (ttributes/Accessors)75 2434 y Fe(MPI)14 b Fn(pro)o(vides)i(a)e(pro)q (cedure)j(that)e(accepts)h(a)f(v)n(alid)e(group)i(iden)o(ti\014er)g (and)g(returns)h(the)g(rank)f(of)f(the)h(calling)75 2484 y(pro)q(cess)h(within)d(the)h(iden)o(ti\014ed)g(group.)162 2569 y Fj(rank)21 b(=)h(mpi_group_rank\(g)o(roup\))166 2654 y Fe(MPI)d Fn(pro)o(vides)g(a)g(pro)q(cedure)i(that)e(accepts)h(a) f(v)n(alid)f(group)h(iden)o(ti\014er)g(and)g(returns)i(the)e(n)o(um)o (b)q(er)g(of)75 2704 y(mem)o(b)q(ers,)12 b(or)i Ff(size)p Fn(,)f(of)g(the)i(iden)o(ti\014ed)f(group.)p eop %%Page: 84 89 84 88 bop 75 -100 a Fv(84)786 b Ft(CHAPTER)15 b(11.)34 b(CONTEXTS)16 b({)f(PR)o(OPOSAL)h(I)q(I)q(I)162 45 y Fj(size)21 b(=)h(mpi_group_size\(g)o(roup\))166 138 y Fe(MPI)14 b Fn(pro)o(vides)g(a)f(pro)q(cedure)j(that)e(accepts)i(a)e(v) n(alid)e(group)i(iden)o(ti\014er)g Ff(r)n(ank-in-gr)n(oup)p Fn(,)g(and)g(returns)h(the)75 188 y(v)n(alid)d(pro)q(cess)k(iden)o (ti\014er)e(to)g(whic)o(h)g(the)g(supplied)g(rank)g(maps)f(within)g (the)h(iden)o(ti\014ed)g(group.)162 282 y Fj(process_id)20 b(=)h(mpi_group_process\(gr)o(oup,)d(rank\))166 375 y Fe(MPI)h Fn(ma)o(y)f(pro)o(vide)h(additional)f(pro)q(cedures)k(whic)o (h)d(allo)o(w)f(users)j(to)f(determine)f(the)i(pro)q(cess)g(group)75 424 y(top)q(ology)13 b(attributes.)166 476 y Fe(MPI)k Fn(pro)o(vides)g(a)f(group)h(descriptor)i(cac)o(he)e(facilit)o(y)f (thath)h(allo)o(ws)f(the)h(user)h(to)f(attac)o(h)g(attributes)h(to)75 525 y(group)c(descriptors.)19 b(See)c(Prop)q(osal)f(VI)q(I)g(for)g (details.)75 670 y Fp(11.4)70 b(Comm)n(unication)20 b(Con)n(texts)75 764 y Fn(This)14 b(prop)q(osal)g(views)g(a)g(comm)o(unicati)o(on)d(con) o(text)k(as)f(a)g(partition)f(of)h(the)g(tag)g(space,)h(whic)o(h)f(is)g (a)f(protection)75 813 y(mec)o(hanism)e(that)i(a)o(v)o(oids)f (collision)f(b)q(et)o(w)o(een)k(messages)e(sen)o(t)h(b)q(et)o(w)o(een)g (pro)q(cesses.)21 b(Pro)q(cess)15 b(groups)e(ha)o(v)o(e)g(one)75 863 y(or)k(more)e(con)o(texts)j(in)f Fc(MPI)p Fn(.)f(Unlik)o(e)g(Prop)q (osal)h(VI)q(I,)f(more)g(con)o(texts)i(are)f(obtained)f(for)h(a)f (group)h(using)f(the)75 913 y(ab)q(o)o(v)o(e-discussed)g(group)e (creation)g(and)g(replication)g(functions.)19 b(Replication)13 b(ma)o(y)f(only)i(b)q(e)h(formal)c(for)j(go)q(o)q(d)75 963 y(implemen)o(tatio)o(ns.)75 1085 y Fw(Con)o(text)j(Iden)o(ti\014er) 75 1164 y Fn(Eac)o(h)d(con)o(text)h(is)f(iden)o(ti\014ed)g(b)o(y)g(an)g (opaque)g(pro)q(cess)i(iden)o(ti\014er.)j(It)14 b(is)g(conceptually)g (an)g(in)o(teger)h(assigned)f(b)o(y)75 1214 y(the)h(system)e(to)h (partition)f(a)h(large)f(tag)h(space)h(in)o(to)e(a)h(user-de\014ned)i (and)e(system-con)o(trolled)f(subspaces.)20 b(This)75 1264 y(stategy)12 b(pro)o(vides)f(the)g(minimal)c(lev)o(el)k(of)f (isolation)g(needed)i(to)f(build)f(large)h(libraries,)g(and)g(is)g (close)g(to)g(practice.)75 1386 y Fw(Con)o(text)17 b(Creation)h(and)g (Deletion)75 1465 y Fe(MPI)11 b Fn(pro)o(vides)h(facilities)e(that)i (allo)o(w)d(user)k(dynamically)8 b(to)k(allo)q(cate)f(and)g(free)h(con) o(texts.)18 b(When)12 b(con)o(texts)h(are)75 1515 y(used)j(with)e (groups,)h(these)h(calls)e(are)h(not)g(needed.)22 b(F)m(or)14 b(more)g(adv)n(anced)h(users)h(\(suc)o(h)g(as)f(building)e(y)o(our)h(o) o(wn)75 1564 y(dynamic)f(groups\),)i(these)h(calls)f(will)e(b)q(e)i (used.)22 b(Ab)q(o)o(v)o(e,)15 b(where)h Fj(context)p 1276 1564 14 2 v 14 w(to)p 1334 1564 V 15 w(use)e Fn(app)q(ears)i(as)f (an)g(argumen)o(t,)75 1614 y(the)f(follo)o(wing)e(call)h(w)o(ould)g(ha) o(v)o(e)h(b)q(een)h(used)f(to)g(secure)i(suc)o(h)f(a)e(con)o(text)i(in) e(adv)n(ance.)162 1722 y Fj(mpi_context_creati)o(on\(nu)o(mber_)o (of_co)o(ntext)o(s_wa)o(nted,)o(array)o(_of_c)o(ontex)o(ts,)75 1772 y(number_of_context)o(s_pro)o(vided)o(\))75 1879 y Fn(This)h(call)f(is)h(called)f(b)o(y)h(an)o(y)f(pro)q(cess,)j(with)d (no)h(sync)o(hronization)g(to)f(other)i(pro)q(cesses.)166 1930 y Fe(MPI)h Fn(pro)o(vides)g(a)g(pro)q(cedure)i(that)e(allo)o(ws)f (users)j(to)e(delete)h(user-)h(created)f(con)o(texts.)26 b(The)17 b(pro)q(cedure)75 1980 y(accepts)d(a)d(con)o(text)i(iden)o (ti\014er)f(arra)o(y)m(,)f(con)o(taining)g(zero)i(or)f(more)f(con)o (texts)i(created)h(previously)e(in)f(the)i(system.)162 2074 y Fj(mpi_context_deleti)o(on\(co)o(ntext)o(_arra)o(y,len)o(gth\)) 75 2167 y Fn(No)h(sync)o(hronization)g(o)q(ccurs)h(here.)k(The)14 b(user)h(can)f(do)g(erroneous)h(things)f(b)o(y)g(freeing)g(con)o(texts) h(that)f(are)g(still)75 2216 y(in)f(use.)166 2268 y(F)m(or)18 b(general)h(applications,)f(it)g(ma)o(y)f(b)q(e)i(nice)g(to)g(ha)o(v)o (e)f(a)g(name)g(service)i(for)e(con)o(texts)i(\(necessary)g(for)75 2317 y(building)12 b(dynamic)h(groups)h(and)f(serv)o(ers,)j(for)d(y)o (ourself)s(\).)18 b(Herewith:)162 2412 y Fj(mpi_associate_cont)o(exts_) o(with_)o(name\()o(strin)o(g_na)o(me,co)o(ntext)o(_arra)o(y,len)o (gth\))75 2461 y(mpi_disassociate_)o(conte)o(xts_w)o(ith_n)o(ame\(s)o (tring)o(_nam)o(e\))75 2511 y(mpi_get_contexts_)o(by_na)o(me\(st)o (ring_)o(name,)o(max_l)o(engt)o(h,out)o(_leng)o(th,)75 2561 y(context_array)75 2654 y Fn(As)c(with)f(con)o(text)h(generation,) f(the)h(ab)q(o)o(v)o(e)f(calls)g(assume)g(a)g(simple)f(reactiv)o(e,)i (global)e(serv)o(er,)i(or)g(shared)g(name)75 2704 y(space)h(mec)o (hanism)c(\(b)q(oth)k(ac)o(hiev)o(eable)f(easily)f(in)g(practice\).)p eop %%Page: 85 90 85 89 bop 75 -100 a Ft(11.5.)34 b(DESCRIPTOR)16 b(F)-5 b(A)o(CILITIES)1049 b Fv(85)75 45 y Fp(11.5)70 b(Descriptor)22 b(F)-6 b(aciliti)o(es)75 142 y Fn(This)14 b(section)g(describ)q(es)i (the)f(descriptor)g(transmission)e(and)g(user)i(cac)o(he)g(facilities.) 75 274 y Fm(Con)n(v)n(ersion)k(F)-5 b(acilit)n(y)75 356 y Fe(MPI)11 b Fn(pro)o(vides)g(a)f(mec)o(hanism)f(whereb)o(y)j(the)f (user)h(can)f(con)o(v)o(ert)h(a)f(v)n(alid)e(descriptor)j(\()p Ff(e.g.)p Fn(,)f(a)g(group)g(descriptor\))75 406 y(iden\014ed)16 b(through)g(an)g(iden)o(ti\014er)g(\()p Ff(e.g.)p Fn(,)f(a)h(group)f (iden)o(ti\014er\))i(for)e(use)i(in)e(a)g(message)h(suc)o(h)g(that)g (the)h(receiv)o(ed)75 456 y(descriptor)11 b(can)f(b)q(e)h (reconstructed)i(on)c(the)i(remote)e(end.)17 b(This)10 b(can)g(b)q(e)h(in)o(tegrated)f(with)g(message)f(transmission)75 505 y(as)20 b(the)g(user)h(sees)g(\014t,)g(without)e(additional)f (complication)f(to)j(the)g(send/receiv)o(e)i(seman)o(tics)d(of)g Fe(MPI)p Fn(.)g(An)75 555 y(example)13 b(follo)o(ws:)162 657 y Fj(error)21 b(=)h(mpi_group_group)o(_tran)o(smit\()o(group)o(,)d (group_buffer,)g(max_length,)75 707 y(act_length\))75 806 y Fn(If)d(the)g(bu\013er)i(is)d(not)h(long)g(enough)g(to)g(hold)f (the)i(information,)c(an)j(error)h(o)q(ccurs.)26 b(A)16 b(net)o(w)o(ork)h(indep)q(enden)o(t)75 856 y(format)12 b(can)i(b)q(e)g(assumed)f(in)g(the)h Fj(group)p 740 856 14 2 v 15 w(buffer)p Fn(.)j(Cac)o(hed)d(\\attributes")g(are)g(not)f (transmitted)h(\(see)h(b)q(elo)o(w\).)75 988 y Fm(Cac)n(he)k(F)-5 b(acilit)n(y)75 1070 y Fe(MPI)12 b Fn(pro)o(vides)g(a)g(\\cac)o(he")h (facilit)o(y)e(that)h(allo)o(ws)f(an)h(application)f(to)h(attac)o(h)g (arbitrary)g(pieces)i(of)d(information,)75 1120 y(called)k Ff(attributes)p Fn(,)f(to)g(con)o(text)i(and)f(group)g(descriptors.)22 b(A)o(ttributes)16 b(are)g(lo)q(cal)e(to)h(the)g(pro)q(cess)i(and)e (are)g(not)75 1170 y(included)10 b(if)f(the)i(descriptor)h(is)d(sen)o (t)i(to)f(another)h(pro)q(cess.)18 b(This)10 b(facilit)o(y)f(is)h(in)o (tended)g(to)g(supp)q(ort)h(optimizations)75 1220 y(suc)o(h)g(as)g(sa)o (ving)f(p)q(ersisten)o(t)i(comm)o(unication)7 b(handles)k(and)g (recording)g(top)q(ology-based)f(decisions)h(b)o(y)f(adaptiv)o(e)75 1270 y(algorithms.)166 1322 y Fe(MPI)17 b Fn(pro)o(vides)g(the)h(follo) o(wing)c(services)19 b(related)f(to)f(cac)o(heing.)28 b(W)m(e)17 b(call)f(our)h(attributes)h(`attributes';)75 1372 y(Prop)q(osal)11 b(VI)q(I)h(calls)e(them)h(\(equiv)n(alen)o(tly\)) f(decorations)i(\(no)f(big)g(di\013erence,)i(except)f(naming,)d(is)j (an)o(ticipated\).)75 1456 y Fo(Generate)i(k)o(ey:)23 b Fn(Generate)15 b(cac)o(he)g(k)o(ey)m(.)189 1555 y Fj(keyval)20 b(=)i(mpi_get_attribut)o(e_key)o(\(\))75 1654 y Fo(Store)14 b(attribute:)20 b Fn(Store)15 b(attribute)f(in)f(cac)o(he)i(b)o(y)f(k)o (ey)m(.)189 1753 y Fj(mpi_set_attribut)o(e\(ha)o(ndle,)k(keyval,)j (attribute_val,)189 1803 y(attribute_destru)o(ctor)o(_rout)o(ine\))75 1902 y Fo(Retriev)o(e)14 b(attribute)o(:)20 b Fn(Retriev)o(e)15 b(attribute)f(from)e(cac)o(he)j(b)o(y)f(k)o(ey)m(.)189 2002 y Fj(mpi_Test_Attribu)o(te\(h)o(andle)o(,keyv)o(al,at)o(tribu)o (te\))75 2101 y Fo(Delete)g(attribute:)20 b Fn(Delete)14 b(attribute)h(from)d(cac)o(he)j(b)o(y)e(k)o(ey)m(.)276 2200 y Fj(mpi_delete_attri)o(bute\()o(handl)o(e,key)o(val\))166 2299 y Fn(Eac)o(h)f(attribute)g(consists)h(of)e(a)g(p)q(oin)o(ter)h(or) g(a)f(v)n(alue)g(of)g(the)i(same)d(size)j(as)f(a)f(p)q(oin)o(ter,)h (and)f(w)o(ould)g(t)o(ypically)75 2349 y(b)q(e)16 b(a)f(reference)j(to) d(a)h(larger)f(blo)q(c)o(k)g(of)g(storage)h(managed)e(b)o(y)h(the)h(mo) q(dule.)21 b(Our)16 b(example)e(will)g(app)q(ear)i(in)f(a)75 2399 y(later)f(draft,)f(b)q(ecause)j(w)o(e)e(ha)o(v)o(e)g(seman)o(tic)f (di\013erences)k(from)12 b(some)h(of)g(the)i(ancillary)e(asp)q(ects)i (of)f(the)g(example)75 2449 y(of)f(Prop)q(osal)h(VI)q(I.)166 2501 y(The)d(cac)o(he)i(facilit)o(y)c(could)i(also)g(b)q(e)g(pro)o (vided)g(for)g(pro)q(cess)i(iden)o(ti\014ers,)f(but)f(it)g(is)g(less)h (clear)f(ho)o(w)g(suc)o(h)h(pro-)75 2551 y(vision)g(w)o(ould)g(b)q(e)i (useful.)j(It)c(is)g(suggested)i(that)d(the)i(cac)o(he)g(store,)f (retriev)o(e)i(and)d(delete)i(attribute)g(pro)q(cedures)75 2601 y(should)g(fail)e(when)i(applied)g(to)f(a)h(pro)q(cess)i(iden)o (ti\014ers.)166 2654 y(Implemen)o(tations)10 b(should)i(use)i(A)-5 b(VL)13 b(trees,)h(or)f(similar)d(e\016cien)o(t)j(data)f(structures)k (to)c(pro)o(vide)h(relativ)o(ely)75 2704 y(e\016cien)o(t)h(access)i(to) e(attributes.)p eop %%Page: 86 91 86 90 bop 75 -100 a Fv(86)786 b Ft(CHAPTER)15 b(11.)34 b(CONTEXTS)16 b({)f(PR)o(OPOSAL)h(I)q(I)q(I)75 45 y Fp(11.6)70 b(P)n(oin)n(t-to-P)n(oin)n(t)22 b(Comm)n(unication)75 140 y Fn(This)13 b(prop)q(osal)f(recommends)g(t)o(w)o(o)g(forms)g(for)g Fe(MPI)g Fn(p)q(oin)o(t-to-p)q(oin)o(t)g(message)g(addressing)i(and)e (selection:)18 b(b)o(y-)75 190 y(group)9 b(notation,)g(b)o(y)g(pro)q (cess-ID)i(notation;)f(alw)o(a)o(ys,)e(one)i(is)f(w)o(orking)f(in)h(a)g (con)o(text,)i(as)e(this)h(is)f(the)h(fundamen)o(tal)75 240 y(managemen)o(t)h(tactic)i(of)g Fe(MPI)g Fn(for)g(messages.)18 b(As)c(a)f(group)g(alw)o(a)o(ys)f(has)h(a)g(con)o(text)h(at)g (creation,)f(and)g(an)g(ALL)75 290 y(group)f(is)f(an)o(ticipated,)g (this)h(should)g(pro)o(v)o(e)f(\014ne)i(for)e(a)g(static)h(pro)q(cess)i (mo)q(del.)i(W)m(e)11 b(disagree)h(signi\014can)o(tly)f(from)75 340 y(Prop)q(osal)j(VI)q(I)g(in)f(what)h(follo)o(ws.)166 392 y(The)h(t)o(w)o(o)f(forms)f(are)i(describ)q(ed,)h(follo)o(w)o(ed)d (b)o(y)i(considerations)g(of)f(uniform)e(in)o(tegration)i(of)g(these)i (forms)75 442 y(in)d(the)i(p)q(oin)o(t-to-p)q(oin)o(t)d(comm)o (unication)f(c)o(hapter)k(of)e Fe(MPI)p Fn(.)75 570 y Fm(Group-Rank)18 b(F)-5 b(orm)75 651 y Fn(The)19 b Ff(gr)n(oup-r)n(ank) 24 b Fn(form)17 b(p)q(ermits)i(comm)o(unicatio)o(n)d(b)q(et)o(w)o(een) 21 b(mem)o(b)q(ers)d(of)g(the)i(same)e(con)o(text)i(and)f(group.)75 701 y(Message)c(selection)g(and)e(addressing)i(are)f(expressed)i(b)o(y) 75 800 y Fj(\(group,)k(rank,)h(tag\))75 896 y Fn(where:)e Fj(group)13 b Fn(is)h(a)g(group)f(iden)o(ti\014er;)h Fj(rank)f Fn(is)h(a)g(pro)q(cess)i(rank)d(in)h(that)g(group;)f Fj(tag)h Fn(is)f(a)h(message)g(tag.)k(The)75 946 y(calling)12 b(pro)q(cess)k(m)o(ust)d(b)q(e)i(a)e(mem)o(b)q(er)f(of)i(the)g(frame)f (of)g Fj(context)p Fn(.)166 998 y Fj(Send)j Fn(determines)i(the)g(con)o (text)g(using)f(information)d(in)j(the)h(group)f(iden)o(ti\014er.)28 b(It)18 b(do)q(es)g(all)e(necessary)75 1048 y(mappings)c(to)i(the)h (pro)q(cess)h(iden)o(ti\014er)e(space.)20 b Fj(Receive)13 b Fn(cannot)h(wildcard)g(on)g(con)o(text,)g(so)g(a)g(v)n(alid)f(matc)o (hing)75 1098 y(receiv)o(e)j(m)o(ust)d(refer)i(to)f(the)h(same)f(group) g(information.)i Fj(Receive)d Fn(can)h(wildcard)g(on)g Fj(rank)g Fn(b)o(y)g(supplying)f(the)75 1148 y(wildcard)j(in)o(teger)i Fj(MPI)p 456 1148 14 2 v 15 w(DONTCARE)p Fn(.)c(This)j(prop)q(osal)g (mak)o(es)e(the)j(follo)o(wing)c(statemen)o(t)j(ab)q(out)f(the)i(pro)o (vision)75 1197 y(for)12 b(wildcard)g(on)g Fj(tag)p Fn(.)k(Tw)o(o)c(in) o(teger-form)f(wildcard)h(is)g(needed)i(for)d(la)o(y)o(ering:)17 b Fj(care)p 1448 1197 V 14 w(bits)p Fn(,)12 b Fj(dont)p 1662 1197 V 14 w(care)p 1764 1197 V 15 w(bits)p Fn(.)75 1247 y(T)m(ags)h(are)i(matc)o(hed)e(if)g(and)h(only)f(if)437 1343 y(\()p Fd(r)q(eceiv)q(ed)p 607 1343 13 2 v 16 w(tag)q(AN)5 b(D)q(N)g(O)q(T)h(dont)p 968 1343 V 15 w(car)q(e)1060 1349 y Fb(b)1077 1343 y Fd(its)p Fn(\))p Fd(X)s(O)q(Rcar)q(e)p 1324 1343 V 16 w(bits)12 b Fn(==)g(0)256 b(\(11)p Fd(:)p Fn(1\))75 1439 y(This)11 b(general)g(format)e(can)i(b)q(e)g(used)h(to)f (partition)f(the)i(tag)e(space)i(for)e(virtual)g(top)q(ologies)h(or)f (other)i(user-de\014ned)75 1489 y(needs,)j(and)e(is)h(quite)g(imp)q (ortan)o(t)e(to)i(the)h(standard's)f(\015exibilit)o(y)m(.)75 1618 y Fm(Pro)r(cess-Iden)n(ti\014er)j(F)-5 b(orm)75 1699 y Fn(Comm)o(uni)o(cation)11 b(tak)o(es)j(place)g(using)g(the)g (follo)o(wing)e(parameters:)75 1797 y Fj(\(context,)20 b(process_identifie)o(r,)f(tag\))75 1894 y Fn(where:)f Fj(context)11 b Fn(is)h(a)g(con)o(text)h(iden)o(ti\014er,)g Fj(process)p 936 1894 14 2 v 14 w(identifier)d Fn(is)j(a)f(pro)q(cess)i (iden)o(ti\014er,)e Fj(tag)g Fn(is)g(a)g(message)75 1944 y(tag.)34 b(The)20 b(calling)d(pro)q(cess)22 b(m)o(ust)c(b)q(e)i(a)f (mem)o(b)q(er)e(of)i(the)h(same)e(con)o(text)i(as)g(the)g(recipien)o (t.)35 b(There)20 b(is)f(no)75 1994 y(reference)d(to)d(groups)g(here.) 19 b(Con)o(texts)14 b(can)g(ha)o(v)o(e)f(b)q(een)h(shared)h(b)o(y)e (using)g(a)g(least)g(common)e(ancestor)j(prior)f(to)75 2043 y(this)h(call,)f(or)g(b)o(y)h(the)h(ab)q(o)o(v)o(e-men)o(tioned)d (con)o(text)j(naming)c(service.)166 2096 y(There)f(is)f(nev)o(er)i (wildcarding)d(on)h(con)o(text.)17 b(Wildcarding)8 b(on)h Fj(process)p 1301 2096 V 14 w(identifier)e Fn(is)j(through)f Fj(MPI)p 1798 2096 V 15 w(DONTCARE)p Fn(.)75 2145 y(T)m(ag)k (wildcarding)g(is)g(through)h(the)h(in)o(teger)f(pair)g(describ)q(ed)h (ab)q(o)o(v)o(e.)75 2274 y Fm(Uniform)i(In)n(tegration)75 2355 y Fn(The)f(t)o(w)o(o)g(forms)f(of)g(addressing)i(and)f(selection)g (describ)q(ed)i(ha)o(v)o(e)e(di\013eren)o(t)h(syn)o(tactic)g(framew)o (orks.)23 b(W)m(e)16 b(can)75 2405 y(consider)i(in)o(tegrating)e(these) j(forms)d(in)o(to)g(the)i(p)q(oin)o(t-to-p)q(oin)o(t)d(c)o(hapter)j(of) f Fe(MPI)g Fn(b)o(y)f(de\014ning)h(a)g(further)h(or-)75 2455 y(thogonal)11 b(axis)h(\(as)g(in)g(the)g(m)o(ulti-lev)o(el)e(prop) q(osal)h(of)h(Gropp)g(&)g(Lusk\))h(whic)o(h)f(deals)g(with)g(form.)j (This)d(is)g(at)g(the)75 2504 y(exp)q(ense)18 b(of)d(m)o(ultiplyi)o(ng) e(the)j(n)o(um)o(b)q(er)f(of)g Fj(Send)g Fn(and)h Fj(Receive)e Fn(pro)q(cedures)k(b)o(y)e(a)f(factor)h(of)f(t)o(w)o(o,)g(and)h(some)75 2554 y(further)f(but)f(trivial)e(w)o(ork)i(with)f(details)h(of)f(the)i (curren)o(t)g(p)q(oin)o(t-to-p)q(oin)o(t)d(c)o(hapter)j(whic)o(h)f (uniformly)d(assumes)75 2604 y(a)16 b(single)g(addressing)h(and)f (selection)h(form.)23 b(No)16 b(further)h(details,)f(other)h(than)f (naming)e(that)j(disam)o(biguates)75 2654 y(the)d(rank-group)f(form)f (from)f(the)k(pro)q(cess-id-con)o(text)g(form)c(is)j(really)f(needed,)h (and)f(the)h(naming)e(w)o(ould)g(seem)75 2704 y(uncon)o(tro)o(v)o (ersial.)p eop %%Page: 87 92 87 91 bop 75 -100 a Ft(11.7.)34 b(COLLECTIVE)16 b(COMMUNICA)l(TION)891 b Fv(87)75 45 y Fp(11.7)70 b(Collecti)o(v)n(e)20 b(Comm)n(unication)75 136 y Fn(Symmetric)13 b(collectiv)o(e)i(comm)o(unicatio)o(n)d(op)q (erations)j(are)h(complian)o(t)c(with)j(the)g(group-rank)g(form)e (describ)q(ed)75 186 y(ab)q(o)o(v)o(e.)27 b(This)17 b(prop)q(osal)g (recommends)f(that)h(suc)o(h)h(op)q(erations)f(accept)h(a)f(group-iden) o(ti\014er)g(\(whic)o(h)g(con)o(tains)75 236 y(con)o(text)e(and)f (other)g(information\))d(needed)16 b(to)e(op)q(erate)h(correctly)m(.)k (W)m(e)13 b(recommend)g(that)h(the)g(tag)g(argumen)o(t)75 285 y(b)q(e)h(included)f(in)f(collectiv)o(e)h(calls)f(where)i(this)f (could)g(help)g(with)g(debugging.)166 335 y Fe(MPI)f Fn(do)q(es)h(plan)f(to)g(describ)q(e)i(symmetric)c(collectiv)o(e)j (comm)o(unicatio)o(n)d(op)q(erations.)18 b(It)13 b(is)g(imp)q(ossible)f (to)75 385 y(determine)e(whether)h(this)f(prop)q(osal)g(is)g (su\016cien)o(t)h(to)e(allo)o(w)g(implemen)o(tatio)o(n)e(of)j(the)g (collectiv)o(e)g(comm)o(unication)75 435 y(c)o(hapter)17 b(of)e Fe(MPI)h Fn(in)g(terms)f(of)h(the)g(p)q(oin)o(t-to-p)q(oin)o(t)f (c)o(hapter)i(of)f Fe(mpi)f Fn(without)h(loss)g(of)f(generalit)o(y)m(,) h(since)g(the)75 485 y(collectiv)o(e)e(op)q(erations)g(are)g(not)g(y)o (et)g(de\014ned.)166 535 y(Asymmetric)g(collectiv)o(e)i(comm)o (unication)d(op)q(erations,)k(esp)q(ecially)f(those)h(in)e(whic)o(h)h (sender\(s\))j(and)c(re-)75 584 y(ceiv)o(er\(s\))d(are)f(distinct)f (pro)q(cesses,)k(should)c(b)q(e)h(made)e(complian)o(t)f(with)i(the)h (group-rank)f(form)f(describ)q(ed)j(ab)q(o)o(v)o(e.)166 634 y Fe(MPI1)19 b Fn(should)h(forego)f(non-blo)q(c)o(king)f(collectiv) o(e)i(op)q(erations,)h(but)f(ask)g(v)o(endors)g(to)g(supp)q(ort)g (thread)75 684 y(mo)q(dels)13 b(in)g(lieu)h(of)f(suc)o(h)i(op)q (erations.)75 821 y Fp(11.8)70 b(Conclusion)75 912 y Fn(This)20 b(prop)q(osal)h(is)f(substan)o(tially)f(di\013eren)o(t)j (than)e(either)i(Prop)q(osal)e(VI)q(I)h(or)f(I.)g(Con)o(texts)h(are)g (in)o(teger)g(tag)75 962 y(partitions)11 b(here,)i(and)e(are)h (fundamen)o(tally)d(lo)o(w)o(er-lev)o(el)i(ob)r(jects)i(than)f(groups.) 17 b(Groups)12 b(ha)o(v)o(e)f(con)o(texts)i(in)e(this)75 1012 y(prop)q(osal,)g(but)h(not)g(all)e(op)q(erations)i(require)g(the)g (presence)j(of)c(group-scop)q(e.)18 b(T)m(o)11 b(a)o(v)o(oid)f(in)o (vidious)g(comparisons)75 1062 y(here,)15 b(more)d(substan)o(tial)i (comparisons)f(of)g(all)g(three)i(prop)q(osals)f(are)g(deferred)i(the)e (follo)o(wing)d(app)q(endix.)p eop %%Page: 88 93 88 92 bop 75 362 a Fq(Chapter)34 b(12)75 576 y Fx(Summary)39 b(of)h(con)m(text)75 700 y(sub)s(committee)i(prop)s(osals)75 922 y Fn(The)13 b(three)h(prop)q(osals)f(in)f(the)i(con)o(text)f(sub)q (committee)f(share)h(common)d(features,)k(and)e(ha)o(v)o(e)h (di\013erences)i(b)q(oth)75 972 y(in)i(concept)j(and)d(detail.)30 b(Tw)o(o)17 b(of)h(these)h(prop)q(osals)f(con)o(tain)f(features)i(whic) o(h)f(are)g("separable")g(and)g(could)75 1022 y(equally)d(app)q(ear)h (as)g(comp)q(onen)o(ts)f(of)g(one)h(or)g(more)f(other)h(prop)q(osals.) 24 b(This)16 b(summary)d(iden)o(ti\014es)j(feature)h(of)75 1072 y(prop)q(osals)d(as:)k(Common)11 b(F)m(eatures;)j(Separable)g(F)m (eatures;)h(Concept)g(Di\013erences;)g(Detail)e(Di\013erences.)166 1127 y(Hop)q(efully)h(the)i(summary)c(will:)19 b(\(a\))c(help)g(us)g (to)g(discuss)h(the)f(imp)q(ortan)o(t)e(di\013ernces)k(b)q(et)o(w)o (een)g(the)e(pro-)75 1177 y(p)q(osals)f(and)g(mak)o(e)f(agreemen)o(ts)i (on)f(ho)o(w)g(w)o(e)g(should)g(pro)q(ceed)i(with)e(resp)q(ect)j(to)d (those)h(issues;)g(\(b\))g(help)f(us)h(to)75 1227 y(isolate)e(the)i (separable)f(p)q(oin)o(ts)g(and)g(mak)o(e)e(separate)j(agreemen)o(ts)f (on)g(those)h(issues.)166 1283 y(I)c(hop)q(e)h(that)f(the)h(summary)d (is)i(b)q(oth)h(accurate)g(and)f(complete.)17 b(Please)12 b(mak)o(e)e(corrections)j(and)e(additions)75 1332 y(if)i(y)o(ou)g (disco)o(v)o(er)i(suc)o(h.)k(I)13 b(ap)q(ologise)g(in)h(adv)n(ance)g (for)f(m)o(y)f(errors,)j(whic)o(h)f(are)g(surely)h(inevitable.)75 1501 y Fp(12.1)70 b(Common)22 b(F)-6 b(eatures)75 1611 y Fm(12.1.1)55 b(Pro)r(cess)18 b(group)h(managemen)n(t)75 1699 y Fn(In)d(eac)o(h)g(prop)q(osal)g(groups)g(are)g(created)i (dynamically)13 b(and)j(ha)o(v)o(e)f(static)i(mem)o(b)q(ership.)22 b(In)16 b(eac)o(h)h(prop)q(osal)e(a)75 1749 y(group)e(can)h(b)q(e)g (created)h(as)e(a)g(partition)g(of)g(an)g(existing)g(group)g(and)h(as)f (a)g(p)q(erm)o(utation)f(of)h(an)g(existing)h(group.)75 1799 y(In)19 b(eac)o(h)g(prop)q(osal)f(there)i(is)f(a)g(de\014ned)g (group)g(con)o(taining)f(all)f(\(or)i(p)q(erhaps)h(all)d(initial\))g (pro)q(cesses.)36 b(Eac)o(h)75 1848 y(prop)q(osal)14 b(allo)o(ws)e(\(or)i(suggests\))h(that)f(a)g(group)g(can)g(b)q(e)g (created)i(as)e(an)f(explicit)h(list)f(of)g(pro)q(cesses.)75 1996 y Fm(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 2084 y Fn(In)d(eac)o(h)g (prop)q(osal)f(p)q(oin)o(t-to-p)q(oin)o(t)g(comm)o(uncation)d(of)j (scop)q(e)i(closed)f(within)f(a)h(group)f(can)h(b)q(e)g(expressed)i(in) 75 2133 y(terms)c(of)f(a)h(reference)i(to)e(a)f(group)h(coupled)g(with) g(a)f(pro)q(cess)j(rank)e(within)f(the)h(group.)75 2281 y Fm(12.1.3)55 b(Pro)n(vision)19 b(for)f(collectiv)n(e)e(comm)n (unication)g(within)j(group)75 2369 y Fn(In)13 b(eac)o(h)g(prop)q(osal) g(collectiv)o(e)g(comm)o(unicatio)o(n)d(of)j(scop)q(e)h(closed)f (within)f(a)h(group)g(can)g(b)q(e)g(expressed)j(in)c(terms)75 2419 y(of)h(a)h(reference)i(to)e(a)g(group.)75 2566 y Fm(12.1.4)55 b(Opacit)n(y)19 b(of)g(group)f(and)i(pro)r(cess)e (description)75 2654 y Fn(In)10 b(eac)o(h)h(prop)q(osal)f(the)g (description)h(of)f(groups)g(and)g(pro)q(cesses)j(is)d(opaque.)17 b(Groups)10 b(and)g(pro)q(cesses)j(are)d(referred)75 2704 y(to)k(b)o(y)f(a)h(handle)g(lik)o(e)f(ob)r(ject.)952 2828 y Fv(88)p eop %%Page: 89 94 89 93 bop 75 -100 a Ft(12.2.)34 b(SEP)l(ARABLE)16 b(FEA)l(TURES)1088 b Fv(89)75 45 y Fm(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 130 y Fn(In)i(eac)o(h)h(prop)q(osal)f(p)q (oin)o(t-to-p)q(oin)o(t)f(comm)o(unication)e(accepts)21 b(three)f(\014elds,)h(inclusiv)o(e)e(of)g(message)g(tag,)g(in)75 180 y(addressing)c(and)e(selection.)75 339 y Fp(12.2)70 b(Separable)23 b(F)-6 b(eatures)75 447 y Fm(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 531 y Fn(Prop)q(osal)i(I)q(I)q(I)g(describ)q(es)j(tag)c (selection)i(for)f(Receiv)o(e)h(in)e(a)h(t)o(w)o(o-in)o(teger)g(form.) 32 b(Prop)q(osals)20 b(I)f(and)g(VI)q(I)g(sa)o(y)75 581 y(nothing)13 b(ab)q(out)h(tag)f(usage.)166 635 y(This)h(feature)g(can)g (b)q(e)h(placed)f(in)g(all)e(Prop)q(osals)i(I,)g(I)q(I)q(I)g(and)f(VI)q (I.)75 774 y Fm(12.2.2)55 b(T)-5 b(ag)19 b(usage)g(in)g(collectiv)n(e)d (comm)n(unication)75 859 y Fn(Prop)q(osal)h(I)q(I)q(I)f(suggests)i (that)f(tag)f(should)h(b)q(e)g(used)h(as)e(an)h(argumen)o(t)e(to)i (collectiv)o(e)g(comm)o(uni)o(cation)d(where)75 908 y(this)g(will)e (assist)j(debugging.)i(Prop)q(osals)d(I)g(and)g(VI)q(I)g(sa)o(y)g (nothing)f(ab)q(out)h(tag)f(usage.)166 963 y(This)h(feature)g(can)g(b)q (e)h(placed)f(in)g(all)e(Prop)q(osals)i(I,)g(I)q(I)q(I)g(and)f(VI)q(I.) 75 1101 y Fm(12.2.3)55 b(Con)n(text)19 b(or)f(Group)h(cac)n(he)75 1186 y Fn(Prop)q(osal)11 b(VI)q(I)g(describ)q(es)i(a)e("cac)o(he")h (facilit)o(y)d(asso)q(ciated)j(with)e(con)o(texts)j(and)d(groups.)18 b(Prop)q(osal)11 b(I)q(I)q(I)g(describ)q(es)75 1236 y(a)j(similar)d ("cac)o(he")j(facilit)o(y)f(asso)q(ciated)h(with)g(groups.)166 1290 y(This)g(feature)g(can)g(b)q(e)h(placed)f(in)g(all)e(Prop)q(osals) i(I,)g(I)q(I)q(I)g(and)f(VI)q(I.)75 1429 y Fm(12.2.4)55 b(Opaque)19 b(ob)s(ject)f(\(descriptor\))f(transmission)75 1513 y Fn(Prop)q(osal)e(VI)q(I)h(suggests)g(that)f(opaque)h(ob)r(ject)g (transmission)e(can)h(b)q(e)h(pro)o(vided)f(b)o(y)g(in)o(tegration)g (with)g(trans-)75 1563 y(mission)d(of)i(t)o(yp)q(ed)h(data.)j(Prop)q (osal)c(I)q(I)q(I)h(suggests)g(that)f(opaque)g(transmission)f(is)h(pro) o(vided)g(b)o(y)g(a)g(mec)o(hanism)75 1613 y(for)f(\015attening)f(a)h (descriptor)h(in)o(to)e(a)h(memory)d(bu\013er.)19 b(These)14 b(are)f(details)g(of)f(di\013eren)o(t)i(w)o(a)o(ys)f(of)f(pro)o(viding) f(the)75 1663 y(feature.)166 1717 y(This)i(feature)g(can)g(b)q(e)h (placed)f(in)f(Prop)q(osals)h(I)q(I)q(I)g(and)g(VI)q(I.)f(This)h (feature)g(cannot)g(b)q(e)h(placed)f(in)f(Prop)q(osal)75 1767 y(I.)75 1906 y Fm(12.2.5)55 b(Con)n(text)19 b(registry)75 1990 y Fn(Prop)q(osal)d(I)q(I)q(I)g(describ)q(es)i(a)d(con)o(text)i (name)e(registry)h(service.)25 b(Prop)q(osal)16 b(VI)q(I)g(indicates)g (that)g(suc)o(h)h(a)f(service)75 2040 y(w)o(ould)d(b)q(e)i(useful.)166 2094 y(This)e(feature)g(can)g(b)q(e)h(placed)f(in)f(Prop)q(osals)h(I)q (I)q(I)g(and)g(VI)q(I.)f(This)h(feature)g(cannot)g(b)q(e)h(placed)f(in) f(Prop)q(osal)75 2144 y(I.)75 2304 y Fp(12.3)70 b(Concept)22 b(Di\013erences)75 2411 y Fm(12.3.1)55 b(Concept)19 b(of)g(CONTEXT)g (and)g(GR)n(OUP)75 2496 y Fn(In)14 b(Prop)q(osal)g(I)f(CONTEXT)i(and)f (GR)o(OUP)f(are)i(iden)o(tical)e(concepts)i(and)f(are)g(not)g (distinguished.)166 2550 y(In)19 b(Prop)q(osal)g(I)q(I)q(I)g(CONTEXT)h (is)f(a)f(lo)o(w)o(er)h(degree)h(concept)h(than)e(GR)o(OUP)m(.)f(The)h (GR)o(OUP)g(concept)75 2600 y(inherits)14 b(asp)q(ects)i(of)d(the)i (CONTEXT)f(concept.)166 2654 y(In)c(Prop)q(osal)g(VI)q(I)h(CONTEXT)g (is)f(a)g(higher)g(concept)i(than)e(GR)o(OUP)m(.)f(The)i(CONTEXT)g (concept)h(inherits)75 2704 y(asp)q(ects)k(of)d(the)h(GR)o(OUP)g (concept.)p eop %%Page: 90 95 90 94 bop 75 -100 a Fv(90)152 b Ft(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.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 122 y Fn(In)f(Prop)q(osal)f(I)h(the)h(scop)q(e)g (of)e(p)q(oin)o(t-to-p)q(oin)o(t)f(comm)o(unication)f(is)i(limited)f (to)h(the)i(group.)23 b(Pro)q(cesses)c(whic)o(h)75 172 y(are)14 b(mem)o(b)q(ers)f(of)g(distinct)h(groups)g(can)h(only)e(comm)o (unicate)e(through)j(a)g(common)d(ancestor)k(group.)166 222 y(In)g(Prop)q(osals)g(I)q(I)q(I)h(and)f(VI)q(I)g(the)h(scop)q(e)g (of)f(p)q(oin)o(t-to-p)q(oin)o(t)f(comm)o(unicati)o(on)e(is)j(not)g (limited.)20 b(Pro)q(cesses)75 272 y(whic)o(h)d(are)h(mem)o(b)q(ers)e (of)h(distinct)h(groups)f(can)h(comm)o(unicate)d(without)i(reference)j (to)d(a)g(common)e(ancestor)75 322 y(group.)75 439 y Fm(12.3.3)55 b(T)-5 b(ransmission)18 b(of)h(group)f(or)h(con)n(text)75 516 y Fn(In)14 b(Prop)q(osal)g(I)f(the)i(CONTEXT)g(cannot)f(b)q(e)g (transmitted)f(from)g(one)h(pro)q(cess)h(to)f(another.)166 566 y(In)d(Prop)q(osals)h(VI)q(I)g(and)f(I)q(I)q(I)g(b)q(oth)h(CONTEXT) g(and)f(GR)o(OUP)g(can)h(b)q(e)g(transmitted)f(from)e(one)j(pro)q(cess) h(to)75 616 y(another.)19 b(In)14 b(Prop)q(osal)g(VI)q(I)h(PR)o(OCESS)f (can)g(alo)g(b)q(e)g(transmitted)g(\(Prop)q(osal)g(I)q(I)q(I)g (suggests)i(suc)o(h)f(but)f(mak)o(es)75 666 y(no)g(sp)q(eci\014c)h(pro) o(vision,)d(presumably)h(a)h(small)e(o)o(v)o(ersigh)o(t?\))75 805 y Fp(12.4)70 b(Detail)20 b(di\013erences)75 904 y Fm(12.4.1)55 b(Manifestation)18 b(of)h(con)n(text)75 981 y Fn(In)14 b(Prop)q(osals)g(I)g(and)g(VI)q(I)g(con)o(text)g(is)g (an)g(opaque)f(ob)r(ject.)166 1032 y(In)h(Prop)q(osal)g(I)q(I)q(I)g (con)o(text)g(is)g(an)g(in)o(teger.)75 1149 y Fm(12.4.2)55 b(Deletion)17 b(of)i(group)75 1226 y Fn(In)14 b(Prop)q(osals)g(VI)q(I)g (and)g(I)q(I)q(I)g(groups)g(can)g(b)q(e)h(deleted.)166 1276 y(In)f(Prop)q(osal)g(I)f(there)j(is)d(no)h(pro)o(vision)f(for)g (group)h(deletion)g(\(p)q(ossibly)g(a)f(small)f(o)o(v)o(ersigh)o(t?\).) 75 1394 y Fm(12.4.3)55 b(Duplication)18 b(of)h(group)75 1471 y Fn(In)14 b(Prop)q(osals)g(I)h(and)f(I)q(I)q(I)g(there)h(is)f (explicit)g(pro)o(vision)f(for)h(duplication)f(of)h(an)f(existing)h (group)g(to)g(form)f(a)h(new)75 1521 y(\(distinct,)g(homomo)o(rphic\))e (group.)166 1571 y(In)17 b(Prop)q(osal)f(VI)q(I)i(there)g(is)e(no)h (suc)o(h)h(pro)o(vision)e(as)h(similar)d(fun)o(tionalit)o(y)h(is)h(pro) o(vided)h(b)o(y)g(the)g(con)o(text)75 1621 y(\(although)h(the)i(pro)o (vision)e(for)g(group)h(partition,)g(p)q(erm)o(utation)e(and)i (de\014nition)g(can)g(b)q(e)g(used)h(to)f(create)h(a)75 1670 y(snapshot)14 b(cop)o(y)g(of)g(a)f(group\).)75 1788 y Fm(12.4.4)55 b(Global)19 b(shared)f(v)m(ariables)75 1865 y Fn(Prop)q(osals)c(I)g(and)g(VI)q(I)g(do)f(not)h(require)h (global)d(shared)j(v)n(ariables.)166 1915 y(Prop)q(osal)f(I)q(I)q(I)g (requires)i(a)e(global)f(shared)i(v)n(ariable)e(\(whic)o(h)h(can)h(b)q (e)f(implemen)o(ted)e(as)j(suc)o(h)g(or)f(of)g(course)75 1965 y(in)f(the)i(traditional)d(approac)o(h)i(as)g(a)g(global)e (service)j(pro)q(cess.\))75 2082 y Fm(12.4.5)55 b(Pro)r(cess)18 b(iden)n(ti\014er)g(addressed)g(comm)n(unication)75 2160 y Fn(Prop)q(osal)c(I)g(do)q(es)g(not)g(mak)o(e)e(pro)o(vision)h(for)h (pro)q(cess)i(iden)o(ti\014er)e(addressed)h(comm)o(unication.)166 2210 y(Prop)q(osal)i(I)q(I)q(I)g(mak)o(es)f(pro)o(vision)h(for)g(pro)q (cess)i(iden)o(ti\014er)e(addressed)i(comm)o(unication)14 b(within)i(m)o(ultiple)75 2259 y(distinct)e(tag)g(spaces.)166 2309 y(Prop)q(osal)i(VI)q(I)h(mak)o(es)f(pro)o(vision)g(for)g(pro)q (cess)i(iden)o(ti\014er)f(addressed)i(comm)o(unicatio)o(n)14 b(within)i(a)g(single)75 2359 y(distinct)e(tag)g(space.)75 2477 y Fm(12.4.6)55 b(In)n(ter-group)19 b(comm)n(unication)75 2554 y Fn(Prop)q(osal)h(I)h(do)q(es)g(not)f(pro)o(vide)h(in)o (ter-group)f(comm)o(unication)d(as)k(it)f(limits)e(the)j(scop)q(e)g(of) f(p)q(oin)o(t-to-p)q(oin)o(t)75 2604 y(comm)o(unication)10 b(to)k(b)q(e)h(closed)f(within)f(a)h(group.)166 2654 y(Prop)q(osal)c(VI)q(I)h(pro)o(vides)f(in)o(ter-group)g(comm)o (unication)d(in)j(a)g(triplet)h(addressing)g(form:)j(sender)e(\(receiv) o(er\))75 2704 y(group,)h(receiv)o(er)j(\(sender\))f(group,)f(sender)h (\(receiv)o(er\))h(rank.)p eop %%Page: 91 96 91 95 bop 75 -100 a Ft(12.4.)34 b(DET)l(AIL)16 b(DIFFERENCES)1108 b Fv(91)166 45 y Fn(Prop)q(osal)9 b(I)q(I)q(I)h(pro)o(vides)f(in)o (ter-group)h(comm)o(uni)o(cation)c(as)k(pro)q(cess)h(iden)o(ti\014er)f (addressed)h(comm)o(unicatio)o(n.)p eop %%Page: 92 97 92 96 bop 75 378 a Fx(Biblio)q(graph)m(y)96 601 y Fn([1])21 b(V.)11 b(Bala)f(and)g(S.)g(Kipnis.)j(Pro)q(cess)g(groups:)j(a)11 b(mec)o(hanism)d(for)j(the)g(co)q(ordination)f(of)g(and)g(comm)o (unication)162 651 y(among)k(pro)q(cesses)19 b(in)d(the)g(Ven)o(us)h (collectiv)o(e)f(comm)o(unication)d(library)m(.)23 b(T)m(ec)o(hnical)16 b(rep)q(ort,)h(IBM)g(T.)e(J.)162 700 y(Watson)f(Researc)o(h)h(Cen)o (ter,)f(Octob)q(er)i(1992.)h(Preprin)o(t.)96 779 y([2])k(V.)14 b(Bala,)f(S.)g(Kipnis,)g(L.)h(Rudolph,)e(and)i(Marc)g(Snir.)k (Designing)13 b(e\016cien)o(t,)h(scalable,)g(and)f(p)q(ortable)h(col-) 162 829 y(lectiv)o(e)f(comm)o(unicati)o(on)c(libraries.)15 b(T)m(ec)o(hnical)d(rep)q(ort,)h(IBM)f(T.)g(J.)g(W)m(atson)f(Researc)o (h)i(Cen)o(ter,)g(Octob)q(er)162 879 y(1992.)k(Preprin)o(t.)96 958 y([3])k(R.)15 b(Butler)i(and)f(E.)g(Lusk.)25 b(User's)17 b(guide)f(to)g(the)h(P4)f(programming)c(system.)25 b(T)m(ec)o(hnical)16 b(Rep)q(ort)g(TM-)162 1008 y(ANL{92/17,)c(Argonne)j(National)d(Lab)q (oratory)m(,)h(1992.)96 1087 y([4])21 b(S.)e(Chittor)f(and)h(R.)f(J.)g (En)o(b)q(o)q(dy)m(.)32 b(P)o(erformance)19 b(ev)n(aluation)e(of)h (mesh{connected)i(w)o(ormhole{routed)162 1137 y(net)o(w)o(orks)15 b(for)f(in)o(terpro)q(cessor)j(comm)o(unicatio)o(n)12 b(in)i(m)o(ulticom)o(puters.)k(In)c Ff(Pr)n(o)n(c)n(e)n(e)n(dings)i(of) f(the)g(1990)i(Su-)162 1187 y(p)n(er)n(c)n(omputing)e(Confer)n(enc)n(e) p Fn(,)f(pages)g(647{656,)e(1990.)96 1266 y([5])21 b(S.)15 b(Chittor)g(and)h(R.)e(J.)h(En)o(b)q(o)q(dy)m(.)23 b(Predicting)15 b(the)h(e\013ect)h(of)e(mapping)e(on)j(the)g(comm)o(uni)o(cation)d(p)q (erfor-)162 1315 y(mance)e(of)f(large)h(m)o(ulticom)o(puters.)h(In)f Ff(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)g(the)h(1991)g(International)f (Confer)n(enc)n(e)g(on)h(Par)n(al)r(lel)162 1365 y(Pr)n(o)n(c)n (essing,)i(vol.)f(II)h(\(Softwar)n(e\))p Fn(,)e(pages)h(I)q(I{1)f({)h (I)q(I{4,)f(1991.)96 1444 y([6])21 b(J.)14 b(Dongarra,)e(R.)h(Hemp)q (el,)f(A.)i(Hey)m(,)f(and)g(D.)g(W)m(alk)o(er.)j(A)e(prop)q(osal)f(for) h(a)f(user{lev)o(el,)h(message{passing)162 1494 y(in)o(terface)h(in)f (a)g(distributed)h(memory)d(en)o(vironmen)o(t.)18 b(T)m(ec)o(hnical)c (Rep)q(ort)h(TM-12231,)e(ORNL,)g(Octob)q(er)162 1544 y(1992.)96 1623 y([7])21 b(Edin)o(burgh)13 b(P)o(arallel)e(Computing)f (Cen)o(tre,)k(Univ)o(ersit)o(y)e(of)g(Edin)o(burgh.)k Ff(CHIMP)d(Conc)n(epts)p Fn(,)g(June)g(1991.)96 1702 y([8])21 b(Edin)o(burgh)11 b(P)o(arallel)g(Computing)e(Cen)o(tre,)j (Univ)o(ersit)o(y)f(of)g(Edin)o(burgh.)j Ff(CHIMP)e(V)m(ersion)g(1.0)h (Interfac)n(e)p Fn(,)162 1752 y(Ma)o(y)h(1992.)96 1831 y([9])21 b(G.)9 b(Geist)g(and)h(V.)f(Sunderam.)h(Net)o(w)o(ork)g(based) g(concurren)o(t)h(computing)d(on)i(the)g(PVM)g(system.)g(T)m(ec)o (hnical)162 1881 y(Rep)q(ort)15 b(TM-11760,)d(Oak)h(Ridge)h(National)e (Lab)q(oratory)m(,)h(June)h(1991.)75 1960 y([10])21 b(G.)f(A.)g(Geist,) i(M.)e(T.)g(Heath,)i(B.)f(W.)f(P)o(eyton,)i(and)e(P)m(.)g(H.)g(W)m (orley)m(.)37 b(A)21 b(user's)g(guide)g(to)f(PICL:)g(a)162 2010 y(p)q(ortable)10 b(instrumen)o(ted)g(comm)o(uni)o(cation)d (library)m(.)i(T)m(ec)o(hnical)h(Rep)q(ort)f(TM-11616,)g(Oak)g(Ridge)g (National)162 2059 y(Lab)q(oratory)m(,)k(Octob)q(er)i(1990.)75 2138 y([11])21 b(R.)11 b(Hemp)q(el.)j(The)f(ANL/GMD)e(macros)g(\(P)m (ARMA)o(CS\))g(in)h(fortran)f(for)h(p)q(ortable)g(parallel)f(programmi) o(ng)162 2188 y(using)j(the)g(message)g(passing)f(programming)d(mo)q (del)j({)g(users')i(guide)e(and)h(reference)i(man)o(ual.)f(T)m(ec)o (hnical)162 2238 y(rep)q(ort,)g(GMD,)d(P)o(ostfac)o(h)i(1316,)f(D-5205) f(Sankt)i(Augustin)g(1,)f(German)o(y)m(,)e(No)o(v)o(em)o(b)q(er)j (1991.)75 2317 y([12])21 b(R.)10 b(Hemp)q(el,)g(H.-C.)f(Hopp)q(e,)i (and)g(A.)f(Supalo)o(v.)h(P)o(armacs{6.0)e(library)g(in)o(terface)i(sp) q(eci\014cation.)i(T)m(ec)o(hnical)162 2367 y(rep)q(ort,)i(GMD,)d(P)o (ostfac)o(h)i(1316,)f(D-5205)f(Sankt)i(Augustin)g(1,)f(German)o(y)m(,)e (Decem)o(b)q(er)k(1992.)75 2446 y([13])21 b(nCUBE)15 b(Corp)q(oration.)i Ff(nCUBE)e(2)h(Pr)n(o)n(gr)n(ammers)d(Guide,)i (r2.0)p Fn(,)e(Decem)o(b)q(er)i(1990.)75 2525 y([14])21 b(H.)12 b(M)q(\177)-22 b(uhlen)o(b)q(ein)13 b(O.)f(Kr\177)-21 b(amer.)16 b(Mapping)11 b(strategies)j(in)e(message{based)g(m)o (ultipro)q(cessor)g(systems.)k Ff(Par-)162 2575 y(al)r(lel)e(Computing) p Fn(,)g(9:213{225,)d(1989.)75 2654 y([15])21 b(P)o(arasoft)13 b(Corp)q(oration.)j Ff(Expr)n(ess)e(V)m(ersion)f(1.0:)19 b(A)13 b(Communic)n(ation)i(Envir)n(onment)f(for)f(Par)n(al)r(lel)g (Com-)162 2704 y(puters)p Fn(,)h(1988.)952 2828 y Fv(92)p eop %%Page: 93 98 93 97 bop 75 -100 a Ft(BIBLIOGRAPHY)1394 b Fv(93)75 45 y Fn([16])21 b(P)o(aul)11 b(Pierce.)16 b(The)c(NX/2)g(op)q(erating)f (system.)k(In)c Ff(Pr)n(o)n(c)n(e)n(e)n(dings)i(of)g(the)g(Thir)n(d)f (Confer)n(enc)n(e)h(on)g(Hyp)n(er)n(cub)n(e)162 95 y(Concurr)n(ent)i (Computers)f(and)i(Applic)n(ations)p Fn(,)d(pages)i(384{390.)c(A)o(CM)j (Press,)h(1988.)75 170 y([17])21 b(A.)12 b(Skjellum)e(and)i(A.)f (Leung.)k(Zip)q(co)q(de:)j(a)12 b(p)q(ortable)g(m)o(ulticomputer)e (comm)o(unicatio)o(n)f(library)j(atop)f(the)162 219 y(reactiv)o(e)k(k)o (ernel.)j(In)c(D.)f(W.)g(W)m(alk)o(er)f(and)i(Q.)f(F.)h(Stout,)f (editors,)h Ff(Pr)n(o)n(c)n(e)n(e)n(dings)h(of)f(the)h(Fifth)g (Distribute)n(d)162 269 y(Memory)g(Concurr)n(ent)g(Computing)g(Confer)n (enc)n(e)p Fn(,)e(pages)i(767{776.)c(IEEE)k(Press,)g(1990.)75 344 y([18])21 b(A.)11 b(Skjellum,)f(S.)h(Smith,)e(C.)i(Still,)f(A.)h (Leung,)h(and)f(M.)g(Morari.)j(The)e(Zip)q(co)q(de)g(message)f(passing) h(system.)162 394 y(T)m(ec)o(hnical)i(rep)q(ort,)g(La)o(wrence)h(Liv)o (ermore)e(National)g(Lab)q(oratory)m(,)f(Septem)o(b)q(er)j(1992.)75 469 y([19])21 b(V.)16 b(Sunderam.)23 b(PVM:)15 b(a)h(framew)o(ork)e (for)i(parallel)e(distributed)j(computing.)22 b Ff(Concurr)n(ency:)h (Pr)n(actic)n(e)162 518 y(and)16 b(Exp)n(erienc)n(e)p Fn(,)e(2\(4\):315{339,)d(1990.)75 593 y([20])21 b(D.)c(W)m(alk)o(er.)27 b(Standards)18 b(for)f(message)g(passing)g(in)g(a)g(distributed)h (memory)d(en)o(vironmen)o(t.)27 b(T)m(ec)o(hnical)162 643 y(Rep)q(ort)15 b(TM-12147,)d(Oak)h(Ridge)h(National)e(Lab)q (oratory)m(,)h(August)h(1992.)p eop %%Page: 94 99 94 98 bop 75 356 a Fq(App)s(endix)34 b(A)75 564 y Fx(Pro)s(cess)40 b(T)-10 b(op)s(ology)42 b(Routines)75 780 y Fn(In)14 b(this)g(app)q(endix)g(F)m(ortran)f(sp)q(eci\014cations)i(for)f(the)g (prop)q(osed)h(top)q(ology)e(functions)h(are)g(giv)o(en.)191 877 y Fi(\017)f Fo(MPI)p 324 877 15 2 v 18 w(CAR)l(T)141 b Fn(Map)14 b(a)g(cartesian)g(structure)i(\(grid/torus\))191 927 y Fi(\017)d Fo(MPI)p 324 927 V 18 w(MAKDIM)58 b Fn(Divide)13 b(a)h(pro)q(cess)i(group)d(among)f(n)i(cartesian)h(dimensions)191 976 y Fi(\017)e Fo(MPI)p 324 976 V 18 w(P)l(AR)l(TC)112 b Fn(P)o(artition)13 b(a)h(cartesian)h(structure)191 1026 y Fi(\017)e Fo(MPI)p 324 1026 V 18 w(GRAPH)96 b Fn(Map)14 b(a)g(graph)191 1076 y Fi(\017)f Fo(MPI)p 324 1076 V 18 w(INQMAP)71 b Fn(Chec)o(k)15 b(mapping)d(t)o(yp)q(e)191 1126 y Fi(\017)h Fo(MPI)p 324 1126 V 18 w(INQCAR)l(T)50 b Fn(Find)14 b(size)h(of)e(cartesian)i(structure)h(and)d(o)o(wn)h(p)q (osition)191 1176 y Fi(\017)f Fo(MPI)p 324 1176 V 18 w(INQGR)111 b Fn(Find)14 b(o)o(wn)f(no)q(de)i(n)o(um)o(b)q(er)e(in)g (graph)191 1225 y Fi(\017)g Fo(MPI)p 324 1225 V 18 w(INQPID)97 b Fn(Lo)q(ok)14 b(up)g(PID)f(n)o(um)o(b)q(ers)952 2828 y Fv(94)p eop %%Page: 95 100 95 99 bop 1830 -100 a Fv(95)75 45 y Fo(NAME)179 95 y(MPI)p 278 95 15 2 v 17 w(CAR)l(T)146 b Fn(Arrange)10 b(the)g(pro)q(cesses)i (of)c(a)h(pro)q(cess)j(group)d(in)g(a)f(cartesian)i(structure)i (\(torus/grid\))573 145 y(with)i Fj(n)f Fn(dimensions.)75 236 y Fo(SYNOPSIS)179 286 y Fn(in)o(teger)h(function)g(MPI)p 562 286 13 2 v 15 w(CAR)m(T)f(\(gid,)g(ndim,)e(dims,)h(p)q(erio)q(d\)) 179 336 y(in)o(teger)i(gid)179 385 y(in)o(teger)g(ndim)179 435 y(in)o(teger)g(dims\()p Fi(\003)p Fn(\))179 485 y(in)o(teger)g(p)q (erio)q(d\()p Fi(\003)p Fn(\))75 576 y Fo(INPUT)i(AR)o(GUMENTS)179 626 y Fn(gid)338 b(the)15 b(ID)e(n)o(um)o(b)q(er)g(of)h(the)g(pro)q (cess)i(group)e(to)f(b)q(e)i(structured.)179 676 y(ndim)300 b(the)15 b(n)o(um)o(b)q(er)e(of)g(dimensions)g(of)g(the)h(torus.)179 726 y(dims)307 b(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(in)e(eac)o(h) g(co)q(ordinate)g(direction.)179 776 y(p)q(erio)q(d)279 b(p)q(erio)q(dicit)o(y)14 b(sp)q(eci\014cation)g(in)g(eac)o(h)g(co)q (ordinate)g(direction.)75 867 y Fo(DESCRIPTION)179 917 y Fn(The)9 b(pro)q(cesses)j(of)d(the)h(group)f(with)g(ID)g(n)o(um)o(b)q (er)f Fj(gid)h Fn(are)h(arranged)f(in)g(a)g(cartesian)h(structure)i (\(grid/torus\).)179 967 y(By)g(assigning)f(neigh)o(b)q(oring)f(p)q (ositions)i(in)f(the)h(logical)e(pro)q(cess)k(torus)e(to)f(neigh)o(b)q (oring)g(pro)q(cessors)j(in)d(the)179 1016 y(hardw)o(are)j(the)h (system)f(can)g(optimize)e(the)j(lo)q(calit)o(y)e(of)g(in)o(ter{pro)q (cess)j(comm)o(unicatio)o(ns.)g(The)f(n)o(um)o(b)q(er)179 1066 y(of)j(dimensions)h(is)g(sp)q(eci\014ed)i(b)o(y)e Fj(ndim)p Fn(.)33 b(Arra)o(y)19 b Fj(period)f Fn(sp)q(eci\014es)k(the)d (p)q(erio)q(dicit)o(y)h(in)e(eac)o(h)i(co)q(ordi-)179 1116 y(nate)15 b(direction.)20 b(If)14 b Fj(period\(i\))f Fn(is)i(set)g(to)g Fo(MPI)p 975 1116 15 2 v 17 w(PER)f Fn(then)h(dimension)e Fj(i)i Fn(is)f(treated)i(as)f(p)q(erio)q(dic.)20 b(If)179 1166 y Fj(period\(i\))8 b Fn(is)i(set)h(to)f Fo(MPI)p 630 1166 V 18 w(NPER)g Fn(then)h(dimension)d Fj(i)i Fn(is)g(treated)i(as)e(non-p)q(erio)q(dic.)17 b(If)10 b(all)f Fj(period\(i\))179 1216 y Fn(are)14 b(set)h(to)f Fo(MPI)p 463 1216 V 17 w(PER)p Fn(,)f(then)i(the)f(top)q(ology)f(is)g (a)h(torus.)179 1278 y(Note)i(that)g(a)g(n-dimension)e(h)o(yp)q(ercub)q (e)k(is)e(a)f(torus)i(with)f(2)f(pro)q(cesses)k(p)q(er)e(co)q(ordinate) f(direction)g(and)179 1328 y(MPI)p 262 1328 13 2 v 15 w(PER.)d(Th)o(us,)h(ndim=n,)e(dims\(1:n\)=2)g(and)i(p)q(erio)q (d\(1:n\)=MPI)p 1316 1328 V 15 w(PER.)75 1419 y Fo(RETURN)i(V)-5 b(ALUE)179 1469 y Fn(If)12 b(the)h(calling)e(pro)q(cess)j(is)e (assigned)h(a)f(p)q(osition)f(in)h(the)h(grid,)f Fo(MPI)p 1266 1469 15 2 v 17 w(CAR)l(T)h Fn(returns)h(the)f(total)f(n)o(um)o(b)q (er)179 1519 y(of)g(pro)q(cesses)k(in)c(the)i(grid.)j(If)12 b(the)i(calling)e(pro)q(cess)i(is)f(not)g(in)f(the)i(grid,)e(the)i (return)g(v)n(alue)e(is)h(set)h(to)e(0.)18 b(A)179 1569 y(v)n(alue)13 b(of)g(-1)h(is)f(returned)j(if)d(an)h(error)h(o)q(ccurs.) p eop %%Page: 96 101 96 100 bop 75 -100 a Fv(96)663 b Ft(APPENDIX)16 b(A.)30 b(PR)o(OCESS)16 b(TOPOLOGY)g(R)o(OUTINES)75 45 y Fo(NAME)179 95 y(MPI)p 278 95 15 2 v 17 w(MAKDIM)63 b Fn(Divide)13 b(the)h(pro)q(cesses)i(of)c(a)i(pro)q(cess)h(group)e(among)e(n)j (dimensions)e(of)g(a)i(Carte-)573 145 y(sian)g(grid.)75 236 y Fo(SYNOPSIS)179 286 y Fn(in)o(teger)g(function)g(MPI)p 562 286 13 2 v 15 w(MAKDIM)g(\(gid,)f(ndim,)e(dims\))179 336 y(in)o(teger)j(gid)179 385 y(in)o(teger)g(ndim)179 435 y(in)o(teger)g(dims\()p Fi(\003)p Fn(\))75 527 y Fo(INPUT)i(AR)o(GUMENTS)179 576 y Fn(gid)338 b(the)15 b(ID)e(n)o(um)o(b)q(er)g(of)h(the)g(pro)q(cess)i(group)e(to)f(b)q(e)i (structured.)179 626 y(ndim)300 b(the)15 b(n)o(um)o(b)q(er)e(of)g (dimensions)g(of)g(the)h(torus.)179 676 y(dims)307 b(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(in)e(eac)o(h)g(co)q(ordinate)g(direction.)75 767 y Fo(OUTPUT)h(AR)o(GUMENTS)179 817 y Fn(dims)307 b(n)o(um)o(b)q(er)13 b(of)h(pro)q(cesses)i(in)e(eac)o(h)g(co)q (ordinate)g(direction.)75 909 y Fo(DESCRIPTION)179 958 y Fn(The)f(pro)q(cesses)j(of)c(the)i(group)f(with)g(ID)f(n)o(um)o(b)q (er)h Fj(gid)f Fn(are)i(divided)e(as)h(ev)o(enly)g(as)h(p)q(ossible)f (among)e Fj(ndim)179 1008 y Fn(dimensions,)h(sub)r(ject)i(to)g(the)g (constrain)o(t)f(that)h(all)e(pro)q(cesses)k(in)d(the)h(group)f(are)h (used.)19 b(The)14 b(caller)f(ma)o(y)179 1058 y(further)f(constrain)f (the)g(op)q(eration)g(of)f(this)h(routine)h(b)o(y)e(sp)q(ecifying)h (elemen)o(ts)g(of)f(arra)o(y)h Fj(dims)p Fn(.)16 b(If)10 b Fj(dims\(i\))179 1108 y Fn(is)i(set)h(to)f(a)g(p)q(ositiv)o(e)g(n)o (um)o(b)q(er,)g(the)h(routine)f(will)f(\014x)h(the)h(n)o(um)o(b)q(er)f (of)f(pro)q(cesses)k(in)d(co)q(ordinate)h(direction)179 1158 y Fj(i)g Fn(to)h Fj(dims\(i\))p Fn(.)j(Pro)q(cesses)g(will)12 b(then)j(b)q(e)g(distributed)f(among)e(directions)j(where)g Fj(dims\(i\))d Fn(is)i(set)h(to)f(0,)179 1207 y(sub)r(ject)h(to)f(the)g (ab)q(o)o(v)o(e)g(constrain)o(ts.)179 1270 y(Note)g(that)g(an)g(error)h (will)d(o)q(ccur)j(if)e Fj(dims\(i\))g Fn(is)g(p)q(ositiv)o(e)h(and)g (do)q(es)h(not)e(ev)o(enly)h(divide)g(the)g(n)o(um)o(b)q(er)g(of)179 1319 y(pro)q(cesses)g(in)d(the)i(group.)k(Negativ)o(e)12 b(input)f(v)n(alues)h(of)f Fj(dims\(i\))f Fn(will)g(also)i(cause)g(an)g (error.)18 b(All)11 b(elemen)o(ts)179 1369 y(of)i Fj(dims\(*\))f Fn(m)o(ust)h(b)q(e)i(set)g(to)e(0)h(for)f(completely)g(automatic)f(pro) q(cess)k(distribution.)179 1432 y(When)k(the)g(function)f(returns,)j Fj(dims\(i\))c Fn(will)g(b)q(e)i(set)h(to)e(the)h(n)o(um)o(b)q(er)f(of) g(pro)q(cesses)k(in)c(co)q(ordinate)179 1481 y(direction)h Fj(i)p Fn(.)37 b(F)m(or)19 b Fj(dims\(i\))g Fn(not)h(set)h(b)o(y)f(the) h(user,)h Fj(dims\(i\))d Fn(will)f(b)q(e)j(ordered)h(\(MAXIMUM,)e(...,) 179 1531 y(MINIMUM\).)14 b(Arra)o(y)g Fj(dim\(*\))e Fn(is)i(suitable)g (for)f(use)i(as)f(input)g(to)f(routine)i(MPI)p 1461 1531 V 15 w(CAR)m(T.)75 1623 y Fo(RETURN)h(V)-5 b(ALUE)179 1672 y Fn(If)14 b(the)i(routine)f(completes)g(without)g(error,)g(the)h (return)g(v)n(alue)e(is)h(set)h(to)f(0.)21 b(A)15 b(v)n(alue)f(of)h(-1) f(is)h(returned)179 1722 y(if)e(an)g(error)i(o)q(ccurs.)p eop %%Page: 97 102 97 101 bop 1830 -100 a Fv(97)75 45 y Fo(NAME)179 95 y(MPI)p 278 95 15 2 v 17 w(P)l(AR)l(TC)117 b Fn(P)o(artition)13 b(a)h(pro)q(cess)i(group)d(with)h(cartesian)g(structure)i(in)e (subgroups.)75 186 y Fo(SYNOPSIS)179 236 y Fn(in)o(teger)g(function)g (MPI)p 562 236 13 2 v 15 w(P)m(AR)m(TC)f(\(gid,)g(lostdim\))179 286 y(in)o(teger)h(gid)179 336 y(in)o(teger)g(lostdim)75 427 y Fo(INPUT)i(AR)o(GUMENTS)179 477 y Fn(gid)338 b(the)15 b(ID)e(n)o(um)o(b)q(er)g(of)h(the)g(pro)q(cess)i(group)e(to)f(b)q(e)i (partitioned.)179 527 y(lostdim)258 b(the)15 b(co)q(ordinate)f (direction)g(b)o(y)g(whic)o(h)f(the)i(pro)q(cess)h(map)c(will)g(b)q(e)j (reduced.)75 618 y Fo(DESCRIPTION)179 668 y Fn(It)e(is)h(assumed)f (that)g(the)h(pro)q(cesses)i(of)d(the)h(group)g(with)f(ID)g(n)o(um)o(b) q(er)g Fj(gid)f Fn(are)i(arranged)g(in)f(a)g(cartesian)179 718 y(structure)18 b(of)e(size)i(\(n1,n2,...\))23 b(b)o(y)17 b(a)f(previous)h(call)e(to)i(MPI)p 1175 718 V 15 w(CAR)m(T.)e(Then,)i (MPI)p 1540 718 V 16 w(P)m(AR)m(TC)e(creates)j(a)179 767 y(n)o(um)o(b)q(er)d(of)g(subgroups)h(with)f(cartesian)h (structures,)i(the)f(dimension)d(of)h(whic)o(h)g(is)g(one)h(lo)o(w)o (er)f(than)h(its)179 817 y(paren)o(t's.)30 b(The)19 b(direction)f(of)f (splitting)g(of)g(the)i(paren)o(t)f(structure)i(is)e(sp)q(eci\014ed)h (b)o(y)f Fj(lostdim)p Fn(.)28 b(If,)18 b(for)179 867 y(example,)12 b Fj(lostdim)20 b(=)i(2)p Fn(,)13 b(then)i Fj(n2)e Fn(subgroups)i(with)e(size)i(\(n1,n3,n4,...\))g(are)f(formed.) 75 958 y Fo(RETURN)i(V)-5 b(ALUE)179 1008 y Fn(Up)q(on)15 b(successful)h(completion)d Fo(MPI)p 794 1008 15 2 v 18 w(P)l(AR)l(TC)i Fn(returns)h(the)f(group)g(ID)f(n)o(um)o(b)q(er)g (of)h(the)g(subgroup)g(to)179 1058 y(whic)o(h)f(the)g(calling)e(pro)q (cess)k(b)q(elongs.)i(A)c(v)n(alue)g(of)f(-1)g(is)h(returned)i(if)d(an) g(error)i(o)q(ccurs.)p eop %%Page: 98 103 98 102 bop 75 -100 a Fv(98)663 b Ft(APPENDIX)16 b(A.)30 b(PR)o(OCESS)16 b(TOPOLOGY)g(R)o(OUTINES)75 45 y Fo(NAME)179 95 y(MPI)p 278 95 15 2 v 17 w(GRAPH)101 b Fn(Arrange)15 b(the)f(pro)q(cesses)j(of)c(a)h(pro)q(cess)h(group)f(in)f(a)h(general)g (graph)g(structure.)75 186 y Fo(SYNOPSIS)179 236 y Fn(in)o(teger)g (function)g(MPI)p 562 236 13 2 v 15 w(GRAPH)f(\(gid,)g(no)q(des,)h (index,)g(nglist\))179 286 y(in)o(teger)g(gid)179 336 y(in)o(teger)g(no)q(des)179 385 y(in)o(teger)g(index\()p Fi(\003)p Fn(\))179 435 y(in)o(teger)g(nglist\()p Fi(\003)p Fn(\))75 527 y Fo(INPUT)i(AR)o(GUMENTS)179 576 y Fn(gid)338 b(the)15 b(ID)e(n)o(um)o(b)q(er)g(of)h(the)g(pro)q(cess)i(group)e(to)f (b)q(e)i(structured.)179 626 y(no)q(des)292 b(the)15 b(n)o(um)o(b)q(er)e(of)g(no)q(des)i(in)e(the)i(graph.)179 676 y(index)296 b(index)14 b(v)o(ector)h(in)o(to)e(v)o(ector)h(nglist)g (\(see)h(b)q(elo)o(w\).)179 726 y(nglist)294 b(for)14 b(eac)o(h)g(graph)g(no)q(de:)k(list)c(of)f(neigh)o(b)q(oring)g(no)q (des)i(\(see)g(b)q(elo)o(w\).)75 817 y Fo(DESCRIPTION)179 867 y Fn(The)10 b(pro)q(cesses)j(of)d(the)g(group)g(with)g(ID)g(n)o(um) o(b)q(er)f Fj(gid)h Fn(are)g(arranged)h(in)f(a)f(graph)h(structure.)19 b(By)11 b(assigning)179 917 y(neigh)o(b)q(oring)k(graph)g(no)q(des)h (to)g(neigh)o(b)q(oring)e(pro)q(cessors)k(in)d(the)h(hardw)o(are)g(the) g(system)g(can)f(optimize)179 967 y(the)f(lo)q(calit)o(y)f(of)g(in)o (ter{pro)q(cess)j(comm)o(unicatio)o(ns.)g(The)e(n)o(um)o(b)q(er)f(of)g (no)q(des)i(is)f(sp)q(eci\014ed)h(b)o(y)f Fj(nodes)p Fn(.)179 1016 y(Input)k(to)f(MPI)p 434 1016 V 15 w(GRAPH)g(is)h(for)f (eac)o(h)h(no)q(de)g(its)f(set)i(of)e(neigh)o(b)q(ors,)h(i.)f(e.,)h (the)g(set)g(of)f(pro)q(cesses)j(with)179 1066 y(whic)o(h)14 b(the)h(no)q(de)g(pro)q(cess)h(is)e(going)f(to)i(comm)o(unicate)d(most) h(frequen)o(tly)m(.)19 b(Since)c(there)h(is)e(no)g(w)o(eigh)o(ting)179 1116 y(of)e(no)q(de)i(connections,)f(it)g(migh)o(t)e(b)q(e)j(sensible)g (to)e(sp)q(ecify)i(only)e(those)i(neigh)o(b)q(ors)f(with)g(whic)o(h)g (there)h(is)f(a)179 1166 y(considerable)h(amoun)o(t)e(of)i(comm)o (unicati)o(on.)179 1216 y(F)m(or)c(eac)o(h)g(no)q(de)h Fd(i)j Fn(\(1)d Fi(\024)h Fd(i)g Fi(\024)g Fd(nodes)p Fn(\))e(the)h(list)f(of)g(the)g(neigh)o(b)q(or)h(no)q(des)g(is)f (stored)h(at)f Fd(ng)q(l)q(ist)p Fn(\()p Fd(j)r Fn(\))p Fd(;)22 b(index)p Fn(\()p Fd(i)p Fn(\))12 b Fi(\024)179 1266 y Fd(j)i Fi(\024)e Fd(index)p Fn(\()p Fd(i)6 b Fn(+)g(1\))g Fi(\000)g Fn(1.)18 b(F)m(or)12 b(the)h(last)f(pro)q(cess)j Fd(index)p Fn(\()p Fd(i)6 b Fn(+)g(1\))13 b(p)q(oin)o(ts)f(to)g(the)h (\014rst)g(free)h(p)q(osition)d(in)h(v)o(ector)179 1315 y(nglist.)19 b(Note)c(that)g(the)g(matrix)d(is)j(symmetric,)d(i.)i(e.,) g(if)g(no)q(de)h Ff(i)f Fn(is)g(a)h(neigh)o(b)q(or)f(of)g(no)q(de)h Ff(j)p Fn(,)f(than)g(no)q(de)h Ff(j)179 1365 y Fn(is)g(also)f(a)h (neigh)o(b)q(or)g(of)g(no)q(de)h Ff(i)p Fn(.)21 b(This)15 b(prop)q(ert)o(y)h(can)g(b)q(e)g(used)g(for)f(an)f(in)o(ternal)h(c)o (hec)o(king)h(of)e(the)i(input)179 1415 y(argumen)o(ts.)75 1506 y Fo(RETURN)g(V)-5 b(ALUE)179 1556 y Fn(If)18 b(the)h(calling)e (pro)q(cess)j(is)e(assigned)h(a)f(p)q(osition)g(in)g(the)h(graph,)g Fo(MPI)p 1366 1556 15 2 v 17 w(GRAPH)f Fn(returns)i(its)f(no)q(de)179 1606 y(n)o(um)o(b)q(er.)e(If)c(it)g(is)g(not)g(in)g(the)h(graph,)f(a)g (v)n(alue)g(of)g(0)g(is)g(returned.)19 b(A)14 b(v)n(alue)e(of)h(-1)g (is)g(returned)i(if)e(an)g(error)179 1656 y(o)q(ccurs.)p eop %%Page: 99 104 99 103 bop 1830 -100 a Fv(99)75 45 y Fo(NAME)179 95 y(MPI)p 278 95 15 2 v 17 w(INQMAP)76 b Fn(Find)14 b(out)g(mapping)d(t)o(yp)q(e) k(of)e(a)g(pro)q(cess)j(group.)75 186 y Fo(SYNOPSIS)179 236 y Fn(in)o(teger)e(function)g(MPI)p 562 236 13 2 v 15 w(INQMAP)h(\(gid\))75 327 y Fo(INPUT)h(AR)o(GUMENTS)179 377 y Fn(gid)338 b(the)15 b(ID)e(n)o(um)o(b)q(er)g(of)h(the)g(pro)q (cess)i(group.)75 469 y Fo(DESCRIPTION)179 518 y Fn(The)j(function)g (MPI)p 520 518 V 15 w(INQMAP)h(tells)f(the)h(calling)d(pro)q(cess)k (the)f(t)o(yp)q(e)f(of)g(mapping)e(whic)o(h)i(has)g(b)q(een)179 568 y(applied)10 b(to)h(the)h(pro)q(cess)g(group)f(with)g(the)g(ID)g(n) o(um)o(b)q(er)f Fj(gid)p Fn(,)h(of)f(whic)o(h)h(the)g(calling)f(pro)q (cess)j(is)d(a)h(mem)o(b)q(er.)75 659 y Fo(RETURN)16 b(V)-5 b(ALUE)179 709 y Fn(Up)q(on)14 b(successful)h(completion)e Fo(MPI)p 792 709 15 2 v 17 w(INQMAP)h Fn(returns)204 756 y(MPI)p 287 756 13 2 v 15 w(NOMAP:)140 b(if)13 b(no)h(mapping)e (has)i(b)q(een)h(assigned,)204 806 y(MPI)p 287 806 V 15 w(CAR)m(TMAP:)84 b(in)14 b(case)h(of)e(a)h(cartesian)g(mapping,)d (and)204 856 y(MPI)p 287 856 V 15 w(GRAPHMAP:)49 b(in)14 b(case)h(of)e(a)h(graph)f(mapping.)179 904 y(A)h(v)n(alue)f(of)g(-1)h (is)f(returned)j(if)d(an)h(error)h(o)q(ccurs.)p eop %%Page: 100 105 100 104 bop 75 -100 a Fv(100)640 b Ft(APPENDIX)16 b(A.)30 b(PR)o(OCESS)16 b(TOPOLOGY)g(R)o(OUTINES)75 45 y Fo(NAME)179 95 y(MPI)p 278 95 15 2 v 17 w(INQCAR)l(T)55 b Fn(Lo)q(ok)13 b(up)h(cartesian)h(structure)h(and)e(o)o(wn)f(p)q(osition.)75 186 y Fo(SYNOPSIS)179 236 y Fn(in)o(teger)h(function)g(MPI)p 562 236 13 2 v 15 w(INQCAR)m(T)f(\(gid,)g(maxdim,)d(size,)k(p)q(erio)q (d,)g(p)q(os\))179 286 y(in)o(teger)g(gid)179 336 y(in)o(teger)g (maxdim)179 385 y(in)o(teger)g(size\()p Fi(\003)p Fn(\))179 435 y(in)o(teger)g(p)q(erio)q(d\()p Fi(\003)p Fn(\))179 485 y(in)o(teger)g(p)q(os\()p Fi(\003)p Fn(\))75 576 y Fo(INPUT)i(AR)o(GUMENTS)179 626 y Fn(gid)338 b(the)15 b(ID)e(n)o(um)o(b)q(er)g(of)h(the)g(pro)q(cess)i(group)e(with)f(a)h (cartesian)g(structure.)179 676 y(maxdim)244 b(the)15 b(dimension)d(of)h(v)o(ectors)i Fj(size)e Fn(and)h Fj(pos)f Fn(in)h(the)g(calling)e(program.)75 767 y Fo(OUTPUT)j(AR)o(GUMENTS)179 817 y Fn(size)330 b(v)o(ector)15 b(returning)f(the)h(size)f(of)g(the)g (grid)g(in)f(eac)o(h)h(co)q(ordinate)h(direction.)179 867 y(p)q(erio)q(d)279 b(p)q(erio)q(dicit)o(y)14 b(c)o(haracteristics)h (in)f(eac)o(h)g(co)q(ordinate)h(direction.)179 917 y(p)q(os)333 b(v)o(ector)15 b(returning)f(the)h(p)q(osition)e(of)g(the)i(calling)d (pro)q(cess)k(in)d(the)i(grid.)75 1008 y Fo(DESCRIPTION)179 1058 y Fn(After)23 b(the)g(pro)q(cesses)i(of)c(the)i(group)g Fj(gid)e Fn(ha)o(v)o(e)h(b)q(een)i(assigned)e(a)h(cartesian)g (structure)h(\(function)179 1108 y(MPI)p 262 1108 V 15 w(CAR)m(T\),)18 b(the)h(function)g(MPI)p 767 1108 V 15 w(INQCAR)m(T)f(tells)h(the)g(calling)f(pro)q(cess)i(the)g(parameters)f (of)f(that)179 1158 y(structure)e(and)e(its)f(o)o(wn)h(logical)e(p)q (osition.)179 1220 y(If,)d(for)g(example,)g(a)g(three{dimensional)g (grid)g(mapping)e(has)j(b)q(een)g(applied,)g(then)g Fj(size)e Fn(returns)k(the)e(three)179 1270 y(v)n(alues)h Fj(nx,ny,nz)p Fn(,)f(and)i Fj(period\(i\))p Fn(,)e(i=1,2,3,)f(is)j(set)h(to)e Fo(MPI)p 1199 1270 15 2 v 18 w(NPER)p Fn(.)g(The)h(v)o(ector)h Fj(pos)e Fn(con)o(tains)g(the)179 1319 y(logical)h(pro)q(cess)k(co)q (ordinates)e Fj(i,j,k)f Fn(with)h(1)d Fi(\024)h Fd(i)f Fi(\024)h Fd(nx)p Fn(,)h(1)f Fi(\024)f Fd(j)j Fi(\024)e Fd(ny)q Fn(,)i(and)g(1)d Fi(\024)h Fd(k)h Fi(\024)e Fd(nz)r Fn(.)18 b(If)c(the)g(calling)179 1369 y(pro)q(cess)k(is)e(not)g (assigned)g(a)g(p)q(osition)f(in)h(the)g(grid)g(structure,)i(the)f(co)q (ordinates)g(are)f(set)h(to)f(zero)q(es.)26 b(If)179 1419 y(the)14 b(v)o(ectors)h Fj(size)p Fn(,)e Fj(period)f Fn(and)i Fj(pos)f Fn(are)i(to)q(o)e(short,)h(MPI)p 1151 1419 13 2 v 16 w(INQCAR)m(T)f(rep)q(orts)i(an)f(error.)75 1510 y Fo(RETURN)i(V)-5 b(ALUE)179 1560 y Fn(Up)q(on)12 b(successful)i(completion)c Fo(MPI)p 786 1560 15 2 v 17 w(INQCAR)l(T)j Fn(returns)h(the)e(n)o(um)o(b)q(er)g(of)f(dimensions) g(of)g(the)i(carte-)179 1610 y(sian)g(structure,)j Fj(ndim)p Fn(.)h(A)d(v)n(alue)f(of)h(-1)f(is)h(returned)h(if)e(an)h(error)h(o)q (ccurs.)p eop %%Page: 101 106 101 105 bop 1807 -100 a Fv(101)75 45 y Fo(NAME)179 95 y(MPI)p 278 95 15 2 v 17 w(INQGR)116 b Fn(Lo)q(ok)13 b(up)h(size)h(of)e(graph)h(mapping)e(and)h(p)q(osition)h(of)f(calling)f (pro)q(cess.)75 186 y Fo(SYNOPSIS)179 236 y Fn(in)o(teger)i(function)g (MPI)p 562 236 13 2 v 15 w(INQGR)f(\(gid,)g(no)q(des\))75 327 y Fo(INPUT)j(AR)o(GUMENTS)179 377 y Fn(gid)338 b(the)15 b(ID)e(n)o(um)o(b)q(er)g(of)h(the)g(pro)q(cess)i(group)e(with)f(a)h (graph)f(structure.)75 469 y Fo(OUTPUT)i(AR)o(GUMENTS)179 518 y Fn(no)q(des)292 b(the)15 b(total)e(n)o(um)o(b)q(er)g(of)g(no)q (des)i(in)e(the)i(graph)f(structure.)75 610 y Fo(DESCRIPTION)179 659 y Fn(After)e(the)g(pro)q(cesses)i(of)d(the)h(group)f Fj(gid)g Fn(ha)o(v)o(e)h(b)q(een)g(structured)i(as)e(a)f(graph)g (\(function)g(MPI)p 1680 659 V 16 w(GRAPH\),)179 709 y(the)19 b(function)g(MPI)p 506 709 V 15 w(INQGR)g(tells)g(the)g (calling)f(pro)q(cess)j(the)e(size)h(of)f(the)g(graph)g(and)g(its)g(o)o (wn)g(no)q(de)179 759 y(n)o(um)o(b)q(er.)e(No)q(des)e(are)f(n)o(um)o(b) q(ered)g(from)e(1)i(to)f Fj(nodes)g Fn(\(cf.)18 b(function)c(MPI)p 1362 759 V 15 w(GRAPH\).)75 850 y Fo(RETURN)i(V)-5 b(ALUE)179 900 y Fn(Up)q(on)13 b(successful)j(completion)c Fo(MPI)p 791 900 15 2 v 17 w(INQGR)h Fn(returns)i(the)f(no)q(de)g(n)o(um)o(b)q (er)f Fj(i)g Fn(of)g(the)h(calling)f(pro)q(cess,)179 950 y(1)f Fi(\024)h Fd(i)g Fi(\024)g Fd(nodes)p Fn(.)20 b(If)14 b(the)h(calling)e(pro)q(cess)k(is)d(not)g(assigned)h(a)f(no)q (de)h(in)f(the)i(graph,)e(zero)h(is)f(returned.)22 b(A)179 1000 y(v)n(alue)13 b(of)g(-1)h(is)f(returned)j(if)d(an)h(error)h(o)q (ccurs.)p eop %%Page: 102 107 102 106 bop 75 -100 a Fv(102)640 b Ft(APPENDIX)16 b(A.)30 b(PR)o(OCESS)16 b(TOPOLOGY)g(R)o(OUTINES)75 45 y Fo(NAME)179 95 y(MPI)p 278 95 15 2 v 17 w(INQPID)102 b Fn(Lo)q(ok)13 b(up)h(PID)g(n)o(um)o(b)q(ers)g(of)f(selected)j(pro)q(cesses.)75 186 y Fo(SYNOPSIS)179 236 y Fn(in)o(teger)e(function)g(MPI)p 562 236 13 2 v 15 w(INQPID)g(\(gid,)f(npro)q(c,)h(co)q(ord,)g(plist\)) 179 286 y(in)o(teger)g(gid)179 336 y(in)o(teger)g(npro)q(c)179 385 y(in)o(teger)g(co)q(ord\()p Fi(\003)p Fn(\))179 435 y(in)o(teger)g(plist\()p Fi(\003)p Fn(\))75 527 y Fo(INPUT)i(AR)o (GUMENTS)179 576 y Fn(gid)338 b(the)31 b(ID)f(n)o(um)o(b)q(er)f(of)g (the)i(pro)q(cess)h(group)e(with)g(a)f(cartesian)i(or)f(graph)573 626 y(structure.)179 676 y(npro)q(c)292 b(the)14 b(n)o(um)o(b)q(er)e (of)h(pro)q(cesses)i(for)e(whic)o(h)g(the)h(PID)f(n)o(um)o(b)q(ers)f (are)i(to)f(b)q(e)g(lo)q(ok)o(ed)g(up)573 726 y(\(see)i(b)q(elo)o(w\).) 179 776 y(co)q(ord)294 b(the)55 b(logical)e(pro)q(cess)j(co)q (ordinates)f(of)f(the)h(sp)q(eci\014ed)h(pro)q(cesses)573 826 y(\(see)15 b(b)q(elo)o(w\).)75 917 y Fo(OUTPUT)g(AR)o(GUMENTS)179 967 y Fn(plist)315 b(the)15 b(list)e(of)g(PID)h(n)o(um)o(b)q(ers)g(of)f (the)h(sp)q(eci\014ed)i(pro)q(cesses.)75 1058 y Fo(DESCRIPTION)179 1108 y Fn(Usually)f(a)h(pro)q(cess)i(only)e(comm)o(uni)o(cates)f(with)h (a)f(relativ)o(ely)h(small)e(n)o(um)o(b)q(er)h(of)h(other)h(pro)q (cesses)i(in)c(a)179 1158 y(large)i(pro)q(cess)j(structure)g(\(a)d (cartesian)i(structure)g(or)f(a)f(graph\).)30 b(Giv)o(en)17 b(the)h(logical)e(co)q(ordinates)j(of)179 1207 y(those)f(other)g(pro)q (cesses,)j(MPI)p 682 1207 V 16 w(INQPID)c(lo)q(oks)h(up)f(the)i (corresp)q(onding)f(PID)g(n)o(um)o(b)q(ers.)29 b(Those)18 b(PID)179 1257 y(n)o(um)o(b)q(ers)13 b(can)h(then)h(b)q(e)f(used)h(for) f(the)g(message{passing.)179 1319 y(The)j(pro)q(cesses)i(of)e(whic)o(h) f(the)i(PID)e(n)o(um)o(b)q(ers)h(are)g(required)h(are)f(sp)q(eci\014ed) h(b)o(y)f(the)g(input)g(argumen)o(ts)179 1369 y Fj(nproc)c Fn(and)g Fj(coord)p Fn(.)k(Tw)o(o)d(mec)o(hanisms)e(are)i(a)o(v)n (ailable:)246 1450 y(1.Separately)42 b(sp)q(eci\014ed)i(pro)q(cesses:) 78 b Fj(nproc)41 b Fn(is)h(set)i(to)e(the)h(n)o(um)o(b)q(er)f(of)f(pro) q(cesses)279 1500 y(1)14 b Fi(\024)h Fd(npr)q(oc)p Fn(.)23 b(V)m(ector)16 b Fj(coord)f Fn(con)o(tains)h(the)g(logical)e(co)q (ordinates)i(for)f(eac)o(h)i(pro)q(cess.)25 b(In)16 b(p)q(erio)q(dic) 279 1550 y(directions)f(the)g(co)q(ordinates)h(are)f(in)o(terpreted)h (mo)q(dulo)d(the)i(n)o(um)o(b)q(er)f(of)g(pro)q(cesses)j(in)e(the)g (corre-)279 1600 y(sp)q(onding)g(direction)h(\(torus)g(top)q(ology\).) 21 b(As)16 b(an)f(example,)f(assume)h(the)h(pro)q(cesses)i(are)e(mapp)q (ed)279 1650 y(as)c(a)g(t)o(w)o(o{dimensional)d(torus,)j(and)g(the)h (PID)f(n)o(um)o(b)q(ers)f(of)h(three)h(pro)q(cesses)i(are)d(to)g(b)q(e) h(lo)q(ok)o(ed)e(up.)279 1699 y(Then,)j Fj(nproc)f Fn(is)g(set)i(to)f (3,)f(and)h(the)g(\014rst)h(6)e(en)o(tries)i(of)f Fj(coord)e Fn(are)j(set)g(to)e Fd(i)1499 1705 y Fa(1)1518 1699 y Fd(;)7 b(j)1554 1705 y Fa(1)1572 1699 y Fd(;)g(i)1605 1705 y Fa(2)1624 1699 y Fd(;)g(j)1660 1705 y Fa(2)1678 1699 y Fd(;)g(i)1711 1705 y Fa(3)1729 1699 y Fd(;)g(j)1765 1705 y Fa(3)1783 1699 y Fn(.)279 1757 y(Similarly)l(,)13 b(if)i(the)i(mapping)d(w)o(as)h(done)i(with)e(MPI)p 1115 1757 V 16 w(GRAPH,)g(the)h(en)o(tries)h(of)f(v)o(ector)h Fj(coord)e Fn(are)279 1807 y(set)g(to)e(the)i(logical)d(no)q(de)i(n)o (um)o(b)q(ers)g(of)f(the)i(sp)q(eci\014ed)g(graph)f(pro)q(cesses.)246 1874 y(2.No)38 b(individual)e(selection:)68 b(in)38 b(this)g(case)i Fj(nproc)d Fn(is)h(set)h(to)f(a)g(negativ)o(e)h(n)o(um)o(b)q(er)279 1923 y Fd(npr)q(oc)19 b Fi(\024)h(\000)p Fn(1.)33 b(V)m(ector)20 b Fj(plist)d Fn(returns)k(the)e(PID)g(n)o(um)o(b)q(ers)f(of)h(the)g Ff(\014rst)f Fj(|nproc|)g Fn(pro)q(cesses.)279 1973 y(The)d(v)o(ector)g Fj(coord)f Fn(is)g(not)h(used)g(in)f(this)h(case.)21 b(Note)15 b(that)g(this)g(feature)g(do)q(es)g(not)g(scale)g(to)g(v)o (ery)279 2023 y(high)e(pro)q(cess)j(n)o(um)o(b)q(ers.)i(In)c(small)d (applications,)i(ho)o(w)o(ev)o(er,)g(it)h(can)g(b)q(e)h(used)g(to)e (get)i(a)e(global)f(list)279 2073 y(of)h(all)g(PID)g(n)o(um)o(b)q(ers)h (in)f(the)i(map.)75 2195 y Fo(RETURN)h(V)-5 b(ALUE)179 2245 y Fn(Up)q(on)16 b(successful)i(completion)d Fo(MPI)p 799 2245 15 2 v 17 w(INQPID)h Fn(returns)i(0.)26 b(A)16 b(v)n(alue)g(of)g(-1)g(is)g(returned)i(if)e(an)g(error)179 2295 y(o)q(ccurs.)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF .