Subject: A proposal for buffer descriptors

From: William Gropp <[email-masked]>
Date: Tue, 2 Mar 93 14:13:52 CST

The following postscript file contains a more detailed account of the buffer
descriptors that we discussed at the last meeting.  These allow one to send
non-contiguous structures of mixed typed data between heterogeneous machines.
Bill and Rusty

%!PS-Adobe-2.0
%%Creator: dvips, version 5.4 (C) 1986-90 Radical Eye Software
%%Title: bd.dvi
%%Pages: 8 1
%%BoundingBox: 0 0 612 792
%%EndComments
%%BeginProcSet: tex.pro
/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
Resolution VResolution vsize neg mul TR}B /@letter{/vsize 10 N}B /@landscape{
/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{/vsize 15.5531 N
}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{statusdict
/manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0
]N /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 /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 /E{pop nn dup definefont setfont}B /ch-image{ch-data dup type /stringtype
ne{ctr get /ctr ctr 1 add N}if}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 /ctr 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}B /eop{clear SI restore showpage userdict /eop-hook
known{eop-hook}if}B /@start{userdict /start-hook known{start-hook}if
/VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1
string dup 0 3 index put cvn put}for}B /p /show load N /RMat[1 0 0 -1 0 0]N
/BDot 8 string N /v{/ruley X /rulex X V}B /V{gsave TR -.1 -.1 TR rulex ruley
scale 1 1 false RMat{BDot}imagemask 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 /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 /w{0 rmoveto}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
/eos{clear SS restore}B end
%%EndProcSet
TeXDict begin 1000 300 300 @start /Fa 1 1 df<FFFFFF80FFFFFF8019027D8A20>0
D E /Fb 46 123 df<003FE3F801F03F1C03C03E3E07C07C3E0F807C3E0F807C1C0F807C000F80
7C000F807C000F807C000F807C00FFFFFFC0FFFFFFC00F807C000F807C000F807C000F807C000F
807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C00
7FE1FFC07FE1FFC01F1D809C1C>11 D<78FCFCFCFC7806067D850D>46 D<00600001E0000FE000
FFE000F3E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E0007FFF807FFF80111B7D9A18>
49 D<07F8001FFE00383F80780FC0FC07C0FC07E0FC03E0FC03E07803E00007E00007C00007C0
000F80001F00001E0000380000700000E0000180600300600600600800E01FFFC03FFFC07FFFC0
FFFFC0FFFFC0131B7E9A18>I<03F8001FFE003C1F003C0F807C07C07E07C07C07C03807C0000F
80000F80001E00003C0003F800001E00000F800007C00007C00007E03007E07807E0FC07E0FC07
E0FC07C0780F80781F001FFE0007F800131B7E9A18>I<000180000380000780000F80001F8000
3F80006F8000CF80008F80018F80030F80060F800C0F80180F80300F80600F80C00F80FFFFF8FF
FFF8000F80000F80000F80000F80000F80000F8001FFF801FFF8151B7F9A18>I<000380000003
80000007C0000007C0000007C000000FE000000FE000001FF000001BF000001BF0000031F80000
31F8000061FC000060FC0000E0FE0000C07E0000C07E0001803F0001FFFF0003FFFF8003001F80
03001F8006000FC006000FC00E000FE00C0007E0FFC07FFEFFC07FFE1F1C7E9B24>65
D<FFFFF800FFFFFF000FC01F800FC00FC00FC007C00FC007E00FC007E00FC007E00FC007E00FC0
07E00FC007C00FC00F800FC03F000FFFFE000FC00F800FC007C00FC007E00FC003E00FC003F00F
C003F00FC003F00FC003F00FC003F00FC007E00FC007E00FC01FC0FFFFFF00FFFFFC001C1C7E9B
22>I<001FE02000FFF8E003F80FE007C003E00F8001E01F0000E03E0000E03E0000607E000060
7C000060FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC0000007C0000
607E0000603E0000603E0000C01F0000C00F80018007C0030003F80E0000FFFC00001FE0001B1C
7D9B22>I<FFFFF800FFFFFF000FC01FC00FC007E00FC001F00FC001F80FC000F80FC000FC0FC0
007C0FC0007C0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0FC0007E0F
C0007C0FC0007C0FC0007C0FC000F80FC000F80FC001F00FC007E00FC01FC0FFFFFF00FFFFF800
1F1C7E9B25>I<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC18180
0FC181800FC181800FC180000FC380000FFF80000FFF80000FC380000FC180000FC180000FC180
600FC180600FC000E00FC000C00FC000C00FC001C00FC001C00FC003C00FC00F80FFFFFF80FFFF
FF801B1C7E9B1F>I<FFFFFF00FFFFFF000FC01F000FC007000FC003000FC003800FC003800FC0
01800FC181800FC181800FC180000FC180000FC380000FFF80000FFF80000FC380000FC180000F
C180000FC180000FC180000FC000000FC000000FC000000FC000000FC000000FC00000FFFF0000
FFFF0000191C7E9B1E>I<000FF008007FFE3801FC07F807E001F80F8000781F0000783F000038
3E0000387E0000187C000018FC000000FC000000FC000000FC000000FC000000FC000000FC007F
FFFC007FFF7C0001F87E0001F83E0001F83F0001F81F0001F80F8001F807E001F801FC07F8007F
FE78000FF818201C7D9B26>I<FFFFFFFF07E007E007E007E007E007E007E007E007E007E007E0
07E007E007E007E007E007E007E007E007E007E007E007E007E0FFFFFFFF101C7F9B12>73
D<FFFF00FFFF000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0
000FC0000FC0000FC0000FC0000FC0030FC0030FC0030FC0070FC0070FC0060FC00E0FC01E0FC0
7EFFFFFEFFFFFE181C7E9B1D>76 D<FFC00003FFFFE00007FF0FE00007F00DF0000DF00DF0000D
F00DF0000DF00CF80019F00CF80019F00C7C0031F00C7C0031F00C3E0061F00C3E0061F00C1F00
C1F00C1F00C1F00C1F00C1F00C0F8181F00C0F8181F00C07C301F00C07C301F00C03E601F00C03
E601F00C01FC01F00C01FC01F00C01FC01F00C00F801F00C00F801F0FFC0701FFFFFC0701FFF28
1C7E9B2D>I<FFE003FFFFE003FF0FF000300FF800300DFC00300CFE00300C7E00300C3F00300C
1F80300C1FC0300C0FE0300C07F0300C03F0300C01F8300C01FC300C00FE300C007F300C003F30
0C001FB00C001FF00C000FF00C0007F00C0003F00C0001F00C0000F00C0000F0FFC00070FFC000
30201C7E9B25>I<003FE00001F07C0003C01E000F800F801F0007C01E0003C03E0003E07E0003
F07C0001F07C0001F0FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC0001F8FC00
01F87C0001F07E0003F07E0003F03E0003E03F0007E01F0007C00F800F8003C01E0001F07C0000
3FE0001D1C7D9B24>I<FFFFF800FFFFFE000FC03F800FC00F800FC007C00FC007E00FC007E00F
C007E00FC007E00FC007E00FC007C00FC007C00FC00F800FC03F000FFFFC000FC000000FC00000
0FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC00000FFFC00
00FFFC00001B1C7E9B21>I<FFFFF00000FFFFFE00000FC03F00000FC00F80000FC007C0000FC0
07E0000FC007E0000FC007E0000FC007E0000FC007E0000FC007C0000FC00F80000FC03E00000F
FFF000000FC07C00000FC03E00000FC03F00000FC01F80000FC01F80000FC01F80000FC01F8000
0FC01F80000FC01F80000FC01F81800FC01F81800FC00FC180FFFC07C300FFFC01FE00211C7E9B
24>82 D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FFE0007FFE
003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C000E0E000E0F001
C0FC03C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFFE0781F81E0701F80E0601F8060E01F
8070C01F8030C01F8030C01F8030C01F8030001F8000001F8000001F8000001F8000001F800000
1F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000
001F800007FFFE0007FFFE001C1C7E9B21>I<FFFC03FFFFFC03FF0FC000300FC000300FC00030
0FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000300FC000
300FC000300FC000300FC000300FC000300FC000300FC0003007C0003007C0006003E000E001F0
01C000FC0780007FFE00000FF800201C7E9B25>I<FFFC01FF80FFFC01FF800FC000180007E000
300007E000300007F000700003F000600003F800E00001F800C00001FC00C00000FC01800000FC
018000007E030000007E030000007F070000003F060000003F8E0000001F8C0000001FCC000000
0FD80000000FD800000007F000000007F000000007F000000003E000000003E000000001C00000
0001C00000211C7F9B24>I<FFFC01FF80FFFC01FF800FE000380007F000300003F800700003F8
00600001FC00C00000FE01C00000FE018000007F030000003F870000003F860000001FCE000000
0FFC0000000FF800000007F800000003F000000003F000000003F000000003F000000003F00000
0003F000000003F000000003F000000003F000000003F00000003FFF0000003FFF0000211C7F9B
24>89 D<0FF8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07
C0F807C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 D<FF0000FF00001F00001F0000
1F00001F00001F00001F00001F00001F00001F00001F3F801FE1E01F80701F00781F003C1F003C
1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F003C1F00781F80701EC1E01C3F00171D7F
9C1B>I<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F80000F80000F80000F800
007800007801803C01801C03000E0E0003F80011127E9115>I<000FF0000FF00001F00001F000
01F00001F00001F00001F00001F00001F00001F001F9F00F07F01C03F03C01F07801F07801F0F8
01F0F801F0F801F0F801F0F801F0F801F07801F07801F03C01F01C03F00F0FFE03F9FE171D7E9C
1B>I<01FC000F07001C03803C01C07801C07801E0F801E0F801E0FFFFE0F80000F80000F80000
7800007C00603C00601E00C00F038001FC0013127F9116>I<03F8F00E0F381E0F381C07303C07
803C07803C07803C07801C07001E0F000E0E001BF8001000001800001800001FFF001FFFC00FFF
E01FFFF07801F8F00078F00078F000787000707800F01E03C007FF00151B7F9118>103
D<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>105
D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F0FF81F0F
F81F03801F07001F0C001F18001F70001FF8001FFC001FBC001F3E001F1F001F0F001F0F801F07
C01F03E0FFC7FCFFC7FC161D7F9C19>107 D<FF00FF001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B
1D7F9C0E>I<FF0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807C01F00F8
07C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00
F807C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F01F80F81F80
F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7
FF18127F911B>I<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F8
00F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<FF3F80FFE1E01F80F0
1F00781F007C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F007C1F00781F80F0
1FC1E01F3F001F00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B>I<FE3E
00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F00001F00
001F00001F0000FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF807FE07F
F01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<0300030003000300070007000F
000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08079803F0
0E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>I<FF8FF8FEFF8FF8FE1F03
E0301F03E0301F83E0700F83F0600F86F06007C6F0C007CEF8C007EC79C003EC7D8003F83D8001
F83F0001F83F0001F01F0000F01E0000E00E0000E00E001F127F9122>119
D<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F80000F800007C0000FE0001DF00039F
00070F800607C00C03E0FF07FCFF07FC16127F9119>I<FFC1FCFFC1FC1F00601F80E00F80C00F
C0C007C18007C18003E30003E30001F70001F60000FE0000FC0000FC0000780000780000300000
3000007000706000F86000F8C000F980007300003E0000161A7F9119>I<3FFF803C1F00303F00
303E00607C0060FC0060F80001F00003F00007E00007C1800F81801F81801F03803E03007E0700
7C0F00FFFF0011127F9115>I E /Fc 58 126 df<03800007E0000FE0001E70001C70001C7000
1C70001C77E01CE7E01DE7E00FC7000F8E000F0E001E0E003F1C007F1C00739C00E3F800E1F800
E0F1C0E0F1C071F9C07FFFC03F9F801E070013197F9816>38 D<00E001E0038007000E001C001C
0038003800700070007000E000E000E000E000E000E000E000E000E00070007000700038003800
1C001C000E000700038001E000E00B217A9C16>40 D<C000E000700038001C000E000E00070007
0003800380038001C001C001C001C001C001C001C001C001C0038003800380070007000E000E00
1C0038007000E000C0000A217B9C16>I<01C00001C00001C00001C00071C700F9CF807FFF001F
FC0007F00007F0001FFC007FFF00F9CF8071C70001C00001C00001C00001C00011127E9516>I<
387C7E7E3E0E1E1C78F060070B798416>44 D<70F8F8F8700505788416>46
D<03E0000FF8001FFC001E3C00380E00780F00700700700700E00380E00380E00380E00380E003
80E00380E00380E00380F00780700700700700780F003C1E001E3C001FFC000FF80003E0001119
7E9816>48 D<01800380038007800F807F80FF8073800380038003800380038003800380038003
80038003800380038003807FF87FFC7FF80E197C9816>I<07E0001FF8003FFC00783E00E00700
F00780F00380600380000380000380000700000700000E00001C0000380000700000E00001C000
0380000F00001E03803803807FFF80FFFF807FFF8011197E9816>I<07E0001FF8003FFC00781E
00780700300700000700000700000E00003E0007FC0007F00007FC00001E000007000003000003
80000380600380F00380E00700781E003FFC001FF80007E00011197E9816>I<007C0000FC0000
DC0001DC00039C00039C00071C000F1C000E1C001E1C003C1C00381C00781C00F01C00FFFFE0FF
FFE0FFFFE0001C00001C00001C00001C00001C0001FFC001FFC001FFC013197F9816>I<07F000
1FFC003FFE007C1F00F00780E00380E00380E003807007007C1F001FFC0007F0001FFC003C1E00
700700F00780E00380E00380E00380F007807007007C1F003FFE001FFC0007F00011197E9816>
56 D<70F8F8F870000000000000000070F8F8F8700512789116>58 D<387C7C7C380000000000
00000038787C7C3C1C1C3870E0400618799116>I<7FFF00FFFF80FFFF80000000000000000000
000000000000FFFF80FFFF807FFF00110B7E9116>61 D<7FF800FFFE007FFF001C0F001C07801C
03801C03801C03801C07801C07001FFF001FFE001FFE001C1F001C03801C03C01C01C01C01C01C
01C01C01C01C03C01C07807FFF80FFFF007FFC0012197F9816>66 D<7FF800FFFE007FFF001C0F
001C07801C03C01C01C01C01C01C01E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00
E01C01C01C01C01C03C01C07801C0F807FFF00FFFE007FF8001319809816>68
D<7FFFC0FFFFC07FFFC01C01C01C01C01C01C01C01C01C00001C00001C1C001C1C001FFC001FFC
001FFC001C1C001C1C001C00001C00E01C00E01C00E01C00E01C00E07FFFE0FFFFE07FFFE01319
7F9816>I<7F1FC0FFBFE07F1FC01C07001C07001C07001C07001C07001C07001C07001FFF001F
FF001FFF001C07001C07001C07001C07001C07001C07001C07001C07001C07007F1FC0FFBFE07F
1FC013197F9816>72 D<FFFEFFFEFFFE0380038003800380038003800380038003800380038003
800380038003800380038003800380FFFEFFFEFFFE0F197D9816>I<FFC000FFC000FFC0001C00
001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C00401C00E01C00E01C00E01C00E0FFFFE0FFFFE0FFFFE013197F9816>76
D<FC07E0FE0FE0FE0FE03A0B803B1B803B1B803B1B803B1B803B1B803BBB8039B38039B38039B3
8039B38039F38038E38038E380380380380380380380380380380380FE0FE0FE0FE0FE0FE01319
7F9816>I<7E1FC0FF3FE07F1FC01D07001D87001D87001D87001DC7001DC7001CC7001CC7001C
E7001CE7001CE7001C67001C67001C77001C77001C37001C37001C37001C17007F1F00FF9F007F
0F0013197F9816>I<1FFC003FFE007FFF00780F00F00780E00380E00380E00380E00380E00380
E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780F00780780F007FFF00
3FFE001FFC0011197E9816>I<7FF800FFFE007FFF001C0F801C03801C03C01C01C01C01C01C01
C01C03C01C03801C0F801FFF001FFE001FF8001C00001C00001C00001C00001C00001C00001C00
007F0000FF80007F000012197F9816>I<7FE000FFF8007FFC001C1E001C0F001C07001C07001C
07001C07001C0F001C1E001FFC001FF8001FFC001C1C001C0E001C0E001C0E001C0E001C0E201C
0E701C0E707F07E0FF87E07F03C014197F9816>82 D<07E3001FFF003FFF00781F00F00700E007
00E00700E00000F000007800003F80001FF00007FC0000FE00000F000007000003800003806003
80E00380E00700F80F00FFFE00FFFC00C7F00011197E9816>I<7FFFE0FFFFE0FFFFE0E0E0E0E0
E0E0E0E0E0E0E0E000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
E00000E00000E00000E00000E00007FC000FFE0007FC0013197F9816>I<FE0FE0FF1FE0FE0FE0
3803801C07001C07001C07001C07000E0E000E0E000E0E000E0E00060C00071C00071C00071C00
071C0003180003B80003B80003B80001B00001F00001F00000E00013197F9816>86
D<FFF0FFF0FFF0E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
E000E000E000E000E000E000E000E000E000E000FFF0FFF0FFF00C20789C16>91
D<FFF0FFF0FFF00070007000700070007000700070007000700070007000700070007000700070
0070007000700070007000700070007000700070FFF0FFF0FFF00C207F9C16>93
D<FFFF80FFFF80FFFF8011037E7E16>95 D<1FE0003FF0007FF800783C00300E00000E00000E00
03FE001FFE003E0E00700E00E00E00E00E00E00E00783E007FFFE03FE7E00F83E013127E9116>
97 D<7E0000FE00007E00000E00000E00000E00000E00000E3E000EFF000FFF800F83C00F00E0
0E00E00E00700E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF00063C00
1419809816>I<03F80FFC1FFE3C1E780C7000E000E000E000E000E000F000700778073E0E1FFC
0FF803F010127D9116>I<003F00007F00003F0000070000070000070000070003C7000FF7001F
FF003C1F00780F00700700E00700E00700E00700E00700E00700E00700700F00700F003C1F001F
FFE00FE7F007C7E014197F9816>I<03E00FF81FFC3C1E780E7007E007FFFFFFFFFFFFE000E000
700778073C0F1FFE0FFC03F010127D9116>I<001F00007F8000FF8001E78001C30001C00001C0
007FFF00FFFF00FFFF0001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0
0001C00001C0003FFE007FFF003FFE0011197F9816>I<03E3C007F7E00FFFE01C1CC0380E0038
0E00380E00380E00380E001C1C000FF8001FF0001BE0003800001800001FFC001FFF003FFF8078
03C0E000E0E000E0E000E0E000E07001C07C07C03FFF800FFE0003F800131C7F9116>I<7E0000
FE00007E00000E00000E00000E00000E00000E3C000EFE000FFF000F87800F03800E03800E0380
0E03800E03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01519809816>
I<018003C003C0018000000000000000007FC07FC07FC001C001C001C001C001C001C001C001C0
01C001C001C001C07FFFFFFF7FFF101A7D9916>I<7E0000FE00007E00000E00000E00000E0000
0E00000E7FE00E7FE00E7FE00E0F000E1E000E3C000E78000EF0000FF0000FF8000FBC000F1E00
0E0E000E07000E07807F87F0FFCFF07F87F01419809816>107 D<FFC000FFC000FFC00001C000
01C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C000
01C00001C00001C00001C00001C000FFFF80FFFF80FFFF8011197E9816>I<F9C380FFEFC0FFFF
E03C78E03C78E03870E03870E03870E03870E03870E03870E03870E03870E03870E03870E0FE7C
F8FE7CF8FE3C781512809116>I<7E3C00FEFE007FFF000F87800F03800E03800E03800E03800E
03800E03800E03800E03800E03800E03800E03807FC7F0FFE7F87FC7F01512809116>I<03E000
0FF8001FFC003C1E00780F00700700E00380E00380E00380E00380E00380F00780700700780F00
3C1E001FFC000FF80003E00011127E9116>I<7E3E00FEFF007FFF800F83C00F00E00E00E00E00
700E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF000E3C000E00000E00
000E00000E00000E00000E00007FC000FFE0007FC000141B809116>I<FF0FC0FF3FE0FF7FE007
F04007C000078000078000070000070000070000070000070000070000070000070000FFFC00FF
FC00FFFC0013127F9116>114 D<0FEC3FFC7FFCF03CE01CE01C70007F801FF007F8003C600EE0
0EF00EF81EFFFCFFF8C7E00F127D9116>I<0300000700000700000700000700007FFF00FFFF00
FFFF00070000070000070000070000070000070000070000070100070380070380070380078700
03FE0001FC0000F80011177F9616>I<7E1F80FE3F807E1F800E03800E03800E03800E03800E03
800E03800E03800E03800E03800E03800E03800E0F800FFFF007FBF803E3F01512809116>I<7F
1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E0E00071C00071C00071C00071C0003B80003
B80003B80001F00001F00000E00013127F9116>I<FF1FE0FFBFE0FF1FE0380380380380380380
38038038E38019F30019F30019B3001DB7001DB7001DB7001DB7000F1E000F1E000F1E0013127F
9116>I<7F1FC07F3FC07F1FC00F1C00073C0003B80003F00001F00000E00001E00001F00003B8
00073C00071C000E0E007F1FC0FF3FE07F1FC013127F9116>I<7F1FC0FF9FE07F1FC01C07000E
07000E0E000E0E00070E00071C00071C00039C00039C0003980001B80001B80000F00000F00000
F00000E00000E00000E00001C00079C0007BC0007F80003F00003C0000131B7F9116>I<3FFFC0
7FFFC07FFFC0700780700F00701E00003C0000780001F00003E0000780000F00001E01C03C01C0
7801C0FFFFC0FFFFC0FFFFC012127F9116>I<001F80007F8000FF8001E00001C00001C00001C0
0001C00001C00001C00001C00001C00001C00003C0007F8000FF0000FF00007F800003C00001C0
0001C00001C00001C00001C00001C00001C00001C00001C00001E00000FF80007F80001F801120
7E9C16>I<7C0000FF0000FF800003C00001C00001C00001C00001C00001C00001C00001C00001
C00001C00001E00000FF00007F80007F8000FF0001E00001C00001C00001C00001C00001C00001
C00001C00001C00001C00003C000FF8000FF00007C000011207E9C16>125
D E /Fd 59 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01
C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E
01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000
0E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00
000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01
C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<003F07E00001C0
9C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00E000000E00E000000E
00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C00
0E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C
000E00E01C000E00E01C000E00E01C007FC7FCFF80211D809C23>14 D<6060F0F0F8F868680808
08080808101010102020404080800D0C7F9C15>34 D<004000800100020006000C000C00180018
00300030007000600060006000E000E000E000E000E000E000E000E000E000E000E000E0006000
60006000700030003000180018000C000C00060002000100008000400A2A7D9E10>40
D<800040002000100018000C000C000600060003000300038001800180018001C001C001C001C0
01C001C001C001C001C001C001C001C0018001800180038003000300060006000C000C00180010
002000400080000A2A7E9E10>I<01800180018001804182F18F399C0FF003C003C00FF0399CF1
8F4182018001800180018010127E9E15>I<60F0F0701010101020204080040C7C830C>44
D<FFE0FFE00B0280890E>I<60F0F06004047C830C>I<00010003000600060006000C000C000C00
18001800180030003000300060006000C000C000C0018001800180030003000300060006000C00
0C000C00180018001800300030003000600060006000C000C00010297E9E15>I<03C00C301818
300C300C700E60066006E007E007E007E007E007E007E007E007E007E007E007E007E007600660
06700E300C300C18180C3007E0101D7E9B15>I<030007003F00C7000700070007000700070007
0007000700070007000700070007000700070007000700070007000700070007000F80FFF80D1C
7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C001C00380070
006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<60F0F060000000000000
0000000060F0F06004127C910C>58 D<60F0F0600000000000000000000060F0F0701010101020
204080041A7C910C>I<000600000006000000060000000F0000000F0000000F00000017800000
178000001780000023C0000023C0000023C0000041E0000041E0000041E0000080F0000080F000
0180F8000100780001FFF80003007C0002003C0002003C0006003E0004001E0004001E000C001F
001E001F00FF80FFF01C1D7F9C1F>65 D<FFFFC00F00F00F00380F003C0F001C0F001E0F001E0F
001E0F001E0F001C0F003C0F00780F01F00FFFE00F00780F003C0F001E0F000E0F000F0F000F0F
000F0F000F0F000F0F001E0F001E0F003C0F0078FFFFE0181C7E9B1D>I<001F808000E0618001
801980070007800E0003801C0003801C00018038000180780000807800008070000080F0000000
F0000000F0000000F0000000F0000000F0000000F0000000F00000007000008078000080780000
80380000801C0001001C0001000E000200070004000180080000E03000001FC000191E7E9C1E>
I<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F0003800F0003C00F0001C00F00
01C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F0001C00F
0001C00F0003C00F0003800F0007800F0007000F000E000F001C000F007000FFFFC0001B1C7E9B
20>I<FFFFF80F00780F00180F00080F00080F000C0F00040F00040F02040F02000F02000F0200
0F06000FFE000F06000F02000F02000F02000F02000F00000F00000F00000F00000F00000F0000
0F00000F8000FFF800161C7E9B1B>70 D<FFF3FFC00F003C000F003C000F003C000F003C000F00
3C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC000F003C000F
003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C00
0F003C000F003C00FFF3FFC01A1C7E9B1F>72 D<FFF00F000F000F000F000F000F000F000F000F
000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1C
7F9B0F>I<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E00278
0009E002780008F004780008F004780008F0047800087808780008780878000878087800083C10
7800083C107800083C107800081E207800081E207800081E207800080F407800080F4078000807
8078000807807800080780780008030078001C03007800FF8307FF80211C7E9B26>77
D<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F8040008780400083C
0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4000801E40008
00F40008007C0008007C0008003C0008003C0008001C0008000C001C000C00FF8004001A1C7E9B
1F>I<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F001E0F001E0F001C0F003C
0F00780F00E00FFF800F00000F00000F00000F00000F00000F00000F00000F00000F00000F0000
0F00000F0000FFF000171C7E9B1C>80 D<07E0801C1980300580700380600180E00180E00080E0
0080E00080F00000F800007C00007FC0003FF8001FFE0007FF0000FF80000F800007C00003C000
01C08001C08001C08001C0C00180C00180E00300D00200CC0C0083F800121E7E9C17>83
D<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F0020800F0020800F0020800F0020000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800003FFFC001B1C7F9B
1E>I<FFF07FC00F000E000F0004000F0004000F0004000F0004000F0004000F0004000F000400
0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004
000F0004000F0004000F0004000700080007800800038010000180100000C020000070C000001F
00001A1D7E9B1F>I<FFE00FF01F0003C00F0001800F0001000F800300078002000780020003C0
040003C0040003C0040001E0080001E0080001F0080000F0100000F0100000F830000078200000
782000003C4000003C4000003C4000001E8000001E8000001F8000000F0000000F000000060000
00060000000600001C1D7F9B1F>I<FFE0FFE0FF1F001F003C1E001E00180F001F00100F001F00
100F001F001007801F00200780278020078027802003C027804003C043C04003C043C04003E043
C04001E081E08001E081E08001E081E08000F100F10000F100F10000F100F100007900FA00007A
007A00007A007A00003E007C00003C003C00003C003C00003C003C000018001800001800180000
18001800281D7F9B2B>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0FEFE07297C9E0C>91 D<08081010202040404040808080808080B0B0
F8F8787830300D0C7A9C15>I<FEFE060606060606060606060606060606060606060606060606
06060606060606060606060606FEFE0729809E0C>I<1FC000307000783800781C00301C00001C
00001C0001FC000F1C00381C00701C00601C00E01C40E01C40E01C40603C40304E801F87001212
7E9115>97 D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C0000
1C7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C00C0
1C01C01C01801E030019060010F800131D7F9C17>I<07E00C301878307870306000E000E000E0
00E000E000E00060007004300418080C3007C00E127E9112>I<003F0000070000070000070000
070000070000070000070000070000070000070003E7000C1700180F00300700700700600700E0
0700E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E0131D7E9C
17>I<03E00C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803E0
0F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E00
0E000E000E000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C0
0C38C01C3880181800381C00381C00381C00381C001818001C38000C300013C000100000300000
1800001FF8001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F800
121C7F9215>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C7C001C87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03
801C03801C03801C03801C0380FF9FF0141D7F9C17>I<18003C003C0018000000000000000000
000000000000FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
00FF80091D7F9C0C>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00
001C00001C3FC01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C38
001C3C001C1C001C0E001C0F001C0F80FF9FE0131D7F9C16>107 D<FC001C001C001C001C001C
001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00
1C001C001C00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C01C01C
001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0
1C001C01C01C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C001C87
001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
801C03801C0380FF9FF014127F9117>I<03F0000E1C00180600300300700380600180E001C0E0
01C0E001C0E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115>I<
FC7C001D86001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C01C0
1C01C01C01801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C0000FF8000
131A7F9117>I<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700E007
00E00700600700700700300F00180F000C370007C7000007000007000007000007000007000007
00000700003FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C001C
001C001C001C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00FF000
F880388018C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FF
E01C001C001C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F99
10>I<FC1F801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C0380
1C03801C03801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C01001C01000E02
000E020007040007040007040003880003880003D80001D00001D00000E00000E00000E0000040
0013127F9116>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E1182
000711C4000711C4000720C40003A0E80003A0E80003C0680001C0700001C07000018030000080
20001B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F000007000007800
00F800009C00010E00020E000607000403801E07C0FF0FF81512809116>I<FF07E03C03801C01
001C01000E02000E020007040007040007040003880003880003D80001D00001D00000E00000E0
0000E000004000004000008000008000F08000F10000F300006600003C0000131A7F9116>I<7F
FC70386038407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F91
12>I E /Fe 14 118 df<000FF83F00007FFDFFC001F81FE3E003E03F87E007C03F87E00F803F
07E00F803F03C00F801F00000F801F00000F801F00000F801F00000F801F00000F801F0000FFFF
FFFC00FFFFFFFC000F801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F
801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F801F00000F801F0000
0F801F00000F801F00000F801F00000F801F00007FF0FFF0007FF0FFF00023237FA221>11
D<387CFEFEFE7C3807077C8610>46 D<00180000780001F800FFF800FFF80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F8
0001F80001F80001F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE013207C9F1C
>49 D<FFFFFF8000FFFFFFE00007F001F80007F000FC0007F0007E0007F0007E0007F0007F0007
F0007F0007F0007F0007F0007F0007F0007F0007F0007E0007F000FE0007F000FC0007F003F800
07FFFFF00007FFFFF00007F001FC0007F0007E0007F0003F0007F0003F8007F0001F8007F0001F
C007F0001FC007F0001FC007F0001FC007F0001FC007F0001FC007F0003F8007F0003F8007F000
7F0007F001FE00FFFFFFF800FFFFFFC00022227EA128>66 D<00FF8007FFE00F83F01F03F03E03
F07E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E00003E00
301F00600FC0E007FF8000FE0014167E9519>99 D<0001FE000001FE0000003E0000003E000000
3E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0001FC3E0007
FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC003E00FC003E00FC003E00
FC003E00FC003E00FC003E00FC003E007C003E007C003E003E007E001E00FE000F83BE0007FF3F
C001FC3FC01A237EA21F>I<00FE0007FF800F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8
FFFFF8FFFFF8FC0000FC0000FC00007C00007C00007E00003E00181F00300FC07003FFC000FF00
15167E951A>I<1C003E007F007F007F003E001C000000000000000000000000000000FF00FF00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FF
E00B247EA310>105 D<00FE0007FFC00F83E01E00F03E00F87C007C7C007C7C007CFC007EFC00
7EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E007FFC000FE001716
7E951C>111 D<FF0FE000FF3FF8001FF07C001F803E001F001F001F001F801F001F801F000FC0
1F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F001F801F001F801F803F
001FC03E001FE0FC001F3FF8001F0FC0001F0000001F0000001F0000001F0000001F0000001F00
00001F0000001F000000FFE00000FFE000001A207E951F>I<FE1F00FE3FC01E67E01EC7E01E87
E01E87E01F83C01F00001F00001F00001F00001F00001F00001F00001F00001F00001F00001F00
001F00001F0000FFF000FFF00013167E9517>114 D<0FF3003FFF00781F00600700E00300E003
00F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E00380E00380F007
00FC0E00EFFC00C7F00011167E9516>I<01800001800001800001800003800003800007800007
80000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F80000F80000F80000F
80000F80000F80000F81800F81800F81800F81800F81800F830007C30003FE0000F80011207F9F
16>I<FF01FE00FF01FE001F003E001F003E001F003E001F003E001F003E001F003E001F003E00
1F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F007E001F00FE
000F81BE0007FF3FC001FC3FC01A167E951F>I E end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 300
TeXDict begin @letter /letter where {pop letter} if
%%EndSetup
%%Page: 1 1
bop 210 105 a Fe(1.)18 b(Bu\013er)g(descriptors)210 216 y Fd(The)h
(message-passing)f(routines)h(describ)q(ed)h(ab)q(o)o(v)o(e)e(are)h
(su\016cien)o(t)g(to)f(write)h(relativ)o(ely)e(e\016cien)o(t)i(pro-)210
286 y(grams.)25 b(In)17 b(man)o(y)e(applications,)h(ho)o(w)o(ev)o(er,)h(the)h
(data)e(to)h(b)q(e)g(sen)o(t)h(or)e(receiv)o(ed)i(is)f(not)g(in)f(consequtiv)
o(e)210 355 y(lo)q(cations)11 b(in)g(memory)m(.)k(While)c(an)o(y)g(data,)g
(ho)o(w)o(ev)o(er)h(laid)f(out)h(in)f(memory)m(,)e(ma)o(y)g(b)q(e)k(sen)o(t)f
(or)g(receiv)o(ed)h(this)210 425 y(w)o(a)o(y)m(,)h(there)j(are)e(a)g(n)o(um)o
(b)q(er)g(of)f(sp)q(ecial)i(cases)h(for)d(whic)o(h)i(sp)q(ecial)f(arrangemen)
o(ts)g(ma)o(y)e(b)q(e)j(made)e(b)o(y)h(the)210 495 y(op)q(erating)e(system)g
(or)f(the)i(hardw)o(are.)k(These)c(include)f(constan)o(t,)g(non-unit)g
(strides)h(\(useful)f(for)g(sending)210 565 y(a)k(ro)o(w)g(from)e(a)i(F)m
(ortran)g(arra)o(y\),)g(scatter/gathers)i(\(useful)f(for)e(sparse)j(v)o
(ectors\),)g(and)d(non-con)o(tiguous)210 634 y(blo)q(c)o(ks)j(\(useful)g(for)
g(sending)g(structures)j(with)c(p)q(oin)o(ters\).)34 b(These)20
b(op)q(erations)g(ma)o(y)d(b)q(e)i(pro)o(vided)g(b)o(y)210
704 y(the)c(lo)o(w-lev)o(el)e(hardw)o(are)i(and)g(soft)o(w)o(are)g(b)q
(ecause)h(they)f(are)g(common)d(and)i(b)q(ecause)j(imp)q(ortan)o(t)c(p)q
(erfor-)210 774 y(mance)d(optimizations)e(can)j(b)q(e)g(made)e(for)h(them,)g
(particularly)g(the)h(elimination)d(of)i(unnecessary)i(memory)210
844 y(motion.)22 b(F)m(or)16 b(Unix)g(programmers,)e(the)j(non-con)o(tiguous)
e(blo)q(c)o(k)h(case)h(is)f(simply)e(the)j(analogue)e(of)g(the)210
913 y(routines)d Fc(readv)e Fd(and)g Fc(writev)p Fd(.)16 b(Sev)o(eral)c
(message-passing)e(implemen)o(tatio)o(ns)f(already)i(pro)o(vide)f(non-unit)
210 983 y(stride)h(v)o(ector)h(op)q(erations,)f(and)f(researc)o(h)j(w)o(ork)d
(with)g(scatter/gather)j(op)q(erations)d(has)h(sho)o(wn)g(that)g(these)210
1053 y(are)j(also)g(of)f(great)h(p)q(oten)o(tial)f(b)q(ene\014t.)272
1123 y(MPI)e(pro)o(vides)g(access)i(to)d(all)g(of)g(these)i(in)e(an)o(y)g
(com)o(bination)e(b)o(y)j(w)o(a)o(y)f(of)g(a)g(general)h(data-arrangemen)o(t)
210 1192 y(descriptor.)210 1319 y Fb(1.1.)16 b(Organization)210
1415 y Fd(A)i(data-arrangemen)o(t)e(is)i(de\014ned)h(in)e(2)g(steps:)27
b(\(1\))18 b(create)h(a)f(data-arrangemen)o(t)e(descriptor)j(and)f(\(2\))210
1485 y(add)13 b(descriptions)i(of)e(the)h(data)f(arrangemen)o(t)g(to)g(it.)k
(A)d(data-arrangemen)o(t)e(descriptor)j(is)e(created)i(with)210
1555 y Fc(MPI)p 279 1555 14 2 v 15 w(NewBD)p Fd(.)e(The)i(routines)g
Fc(MPI)p 741 1555 V 15 w(BDVec)p Fd(,)e Fc(MPI)p 957 1555 V
15 w(BDBlk)p Fd(,)h(and)g Fc(MPI)p 1255 1555 V 15 w(BDIdx)f
Fd(add)i(descriptions)g(for)f(non-unit)210 1624 y(stride)e(v)o(ectors,)h(blo)
q(c)o(ks,)e(and)h(indexed)g(v)o(ectors)g(\(these)i(are)d(describ)q(ed)j(in)d
(more)f(detail)h(on)h(the)g(man)e(pages)210 1694 y(for)17 b(these)i
(routines\).)29 b(A)17 b(send)h(or)f(receiv)o(e)i(op)q(eration)e(then)h(tak)o
(es)g(the)f(data-arrangemen)o(t)g(descriptor)210 1764 y(instead)d(of)f(the)i
(\(bu\013er,size\))g(that)f(the)h(send)g(and)e(receiv)o(e)j(routines)e(use)h
(for)e(con)o(tiguous)h(data.)210 1890 y Fb(1.2.)i(V)l(ectors)210
1987 y Fd(The)d(\\v)o(ector")g(data-arrangemen)o(t)f(allo)o(ws)f(sending)i
(and)g(receiving)g(of)f(non-con)o(tiguous)g(data)g(where)i(the)210
2057 y(elemen)o(ts)g(are)g(separated)h(b)o(y)f(a)f(constan)o(t)i(distance)g
(or)e(stride.)272 2126 y(T)m(o)g(add)h(a)g(v)o(ector)g(to)g(the)h(data)e
(arrangemen)o(t,)g(use)210 2222 y Fc(MPI_BDVec\()20 b(da,)h(buffer,)f
(elmlen,)h(stride,)f(elmcount,)g(datatype)g(\))210 2318 y Fd(The)14
b(parameters)g(are:)210 2415 y Fb(bu\013er)251 b Fd(p)q(oin)o(ter)14
b(to)g(bu\013er)210 2514 y Fb(elmlen)236 b Fd(size)15 b(of)e(eac)o(h)h
(elemen)o(t,)f(in)h(b)o(ytes)210 2614 y Fb(stride)254 b Fd(distance)15
b(b)q(et)o(w)o(een)g(successiv)o(e)h(elemen)o(ts,)d(in)h(b)o(ytes)p
eop
%%Page: 2 2
bop 210 105 a Fb(elmcoun)o(t)182 b Fd(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)
210 208 y Fb(datat)o(yp)q(e)190 b Fd(datat)o(yp)q(e)14 b(\(e.g.,)f
Fc(MPI)p 932 208 14 2 v 15 w(INT)p Fd(\))272 311 y(F)m(or)h(example,)e(if)h
(a)h(F)m(ortran)f(arra)o(y)h(is)g(declared)g(as)210 414 y Fc(double)21
b(precision)e(a\(10,20\))210 517 y Fd(and)14 b(the)g(ro)o(w)g
Fc(a\(3,1:20\))e Fd(is)i(to)f(b)q(e)i(sen)o(t,)f(use)210 620
y Fc(bd)21 b(=)h(MPI_BDNew\(1\))210 690 y(MPI_BDVec\()e(bd,)h(a\(3,1\),)f(8,)
i(8*10,20)e(\))210 759 y(MPI_bsend\()g(to,)h(tag,)g(bd,)g(context)f(\))210
862 y Fd(Here)15 b(w)o(e)f(assume)g(that)g(a)f(double)h(precision)g(quan)o
(tit)o(y)f(tak)o(es)i(eigh)o(t)e(b)o(ytes.)210 990 y Fb(1.3.)j(Blo)q(c)o(ks)
210 1087 y Fd(Blo)q(c)o(ks)d(of)f(con)o(tiguous)g(data)g(ma)o(y)f(b)q(e)i
(added)g(to)f(the)h(data)f(arrangemen)o(t)g(with)g Fc(MPI)p
1564 1087 V 15 w(BDBlk)p Fd(.)17 b(The)c(format)210 1156 y(is)210
1259 y Fc(MPI_BDBlk\()20 b(bd,)h(buffer,)f(len,)h(datatype)f(\))272
1362 y Fd(Multiple)12 b(uses)i(of)e Fc(MPI)p 640 1362 V 15
w(BDBlk)g Fd(ma)o(y)e(b)q(e)j(used)h(to)e(send)i(complicated)d(data)h
(structures.)21 b(F)m(or)12 b(example,)210 1432 y(to)i(send)h(the)f
(structure)210 1535 y Fc(struct)21 b({)297 1605 y(int)g(n[3];)297
1674 y(double)g(a[4];)297 1744 y(char)65 b(s;)297 1814 y(})22
b(S;)210 1917 y Fd(w)o(e)14 b(can)g(use)h(the)f(follo)o(wing)e(co)q(de:)210
2020 y Fc(bd)21 b(=)h(MPI_BDNew\()e(3)h(\);)210 2090 y(MPI_BDBlk\()f(bd,)h
(&S.n[0],)f(3)i(*)f(sizeof\(int\),)85 b(MPI_INT)20 b(\);)210
2159 y(MPI_BDBlk\()g(bd,)h(&S.a,)86 b(4)22 b(*)f(sizeof\(double\),)e(MPI_DBL)
h(\);)210 2229 y(MPI_BDBlk\()g(bd,)h(&S.s,)86 b(sizeof\(char\),)150
b(MPI_OTHER)20 b(\);)210 2299 y(MPI_bsend\()g(to,)h(tag,)g(bd,)g(context)f
(\);)210 2402 y Fd(T)m(o)13 b(receiv)o(e)i(the)g(structure,)g(the)g(exact)f
(same)f(co)q(de)i(is)f(used,)g(with)g(the)g Fc(MPI)p 1432 2402
V 15 w(bsend)f Fd(replaced)i(with)210 2505 y Fc(MPI_brecv\()20
b(source,)g(tag,)h(bd,)g(context,)f(recv_handle)g(\);)p eop
%%Page: 3 3
bop 210 105 a Fb(1.4.)16 b(Indexed)210 202 y Fd(Another)e(t)o(yp)q(e)g(of)f
(non-con)o(tiguous)g(comm)o(unicatio)o(n)e(pattern)j(that)f(is)h(common)c(in)
j(applications)g(is)g(\\in-)210 271 y(dexed.")18 b(F)m(or)11
b(example,)f(if)g(elemen)o(ts)h(of)f(one)i(v)o(ector,)g(indexed)g(b)o(y)e
(another,)i(are)g(used.)18 b(These)12 b(are)g(de\014ned)210
341 y(with)i Fc(MPI)p 374 341 14 2 v 15 w(BDIdx)p Fd(.)j(The)d(format)e(is)
210 444 y Fc(MPI_BDIdx\()20 b(bd,)h(buffer,)f(idxarray,)g(numitems,)g
(datatype)g(\))p eop
%%Page: 4 4
bop 210 105 a Fb(NAME)314 175 y(MPI)p 413 175 15 2 v 17 w(NewBD)117
b Fd(Create)15 b(a)f(new)g(bu\013er)h(descriptor)210 245 y
Fb(SYNOPSIS)314 314 y Fd(MPI)p 397 314 13 2 v 15 w(BD)f(*MPI)p
589 314 V 15 w(NewBD\()h(n)o(umitems)c(\))314 384 y(in)o(t)i(n)o(umitems;)210
454 y Fb(INPUT)j(AR)o(GUMENTS)314 524 y Fd(n)o(umitesm)215
b(Maxim)o(um)10 b(n)o(um)o(b)q(er)j(of)h(bu\013er)h(descriptions)g(for)e(the)
i(bu\013er)f(descriptor.)210 593 y Fb(DESCRIPTION)314 663 y(MPI)p
413 663 15 2 v 17 w(NewBD)h Fd(creates)h(a)e(new)g(bu\013er)i(descriptor.)k
(The)15 b(v)n(alue)f(of)f Fc(numitems)g Fd(is)h(the)h(maxim)n(um)314
733 y(n)o(um)o(b)q(er)c(of)g(bu\013er)h(descriptions)h(that)e(can)h(b)q(e)g
(added)g(with)g(the)g(routines)g Fc(MPI)p 1574 733 14 2 v 15
w(BDVec)p Fd(,)e Fc(MPI)p 1787 733 V 16 w(BDBlk)p Fd(,)314
802 y(and)j Fc(MPI)p 463 802 V 16 w(BDIdx)p Fd(.)210 872 y
Fb(RETURN)j(V)-5 b(ALUE)314 942 y(MPI)p 413 942 15 2 v 17 w(NewBD)14
b Fd(returns)i(a)d(p)q(oin)o(ter)h(to)g(a)g(bu\013er)g(descriptor,)h(or)f(n)o
(ull)f(if)g(an)h(error)g(o)q(ccurs.)p eop
%%Page: 5 5
bop 210 105 a Fb(NAME)314 175 y(MPI)p 413 175 15 2 v 17 w(BD)o(V)l(ec)136
b Fd(Add)14 b(a)g(stride)g(v)o(ector)h(to)f(a)f(bu\013er)i(descriptor)210
245 y Fb(SYNOPSIS)314 314 y Fd(in)o(t)e(MPI)p 460 314 13 2
v 15 w(BD)o(V)m(ec\()i(b)q(d,)f(bu\013er,)g(elmlen,)e(stride,)i(elmcoun)o(t,)
e(datat)o(yp)q(e)j(\);)314 384 y(MPI)p 397 384 V 15 w(BD)f(b)q(d;)314
454 y(c)o(har)g(*bu\013er;)314 524 y(in)o(t)f(elmlen,)f(stride,)i(elmcoun)o
(t,)f(datat)o(yp)q(e;)210 593 y Fb(INPUT)j(AR)o(GUMENTS)314
663 y Fd(b)q(d)347 b(Data)13 b(bu\013er)314 733 y(bu\013er)290
b(p)q(oin)o(ter)14 b(to)g(bu\013er)314 802 y(elmlen)275 b(size)15
b(of)e(eac)o(h)h(elemen)o(t,)f(in)h(b)o(ytes)314 872 y(stride)293
b(distance)15 b(b)q(et)o(w)o(een)g(successiv)o(e)h(elemen)o(ts,)d(in)h(b)o
(ytes)314 942 y(elmcoun)o(t)228 b(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)314
1012 y(datat)o(yp)q(e)234 b(datat)o(yp)q(e)14 b(\(e.g.,)f Fc(MPI)p
1055 1012 14 2 v 15 w(INT)p Fd(\))210 1081 y Fb(DESCRIPTION)314
1151 y(MPI)p 413 1151 15 2 v 17 w(BD)o(V)l(ec)d Fd(adds)g(a)g(description)h
(of)f(a)g(v)o(ector)h(\(with)f(non-unit-stride\))h(to)f(a)g(previously)g
(created)314 1221 y(bu\013er)15 b(descriptor.)210 1291 y Fb(RETURN)h(V)-5
b(ALUE)314 1360 y(MPI)p 413 1360 V 17 w(BD)o(V)l(ec)13 b Fd(returns)j(0,)d
(or)h Fa(\000)p Fd(1)g(if)f(an)g(error)i(o)q(ccurs.)p eop
%%Page: 6 6
bop 210 105 a Fb(NAME)314 175 y(MPI)p 413 175 15 2 v 17 w(BDBlk)137
b Fd(Add)14 b(a)g(con)o(tiguous)f(blo)q(c)o(k)h(to)g(a)f(bu\013er)i
(descriptor)210 245 y Fb(SYNOPSIS)314 314 y Fd(in)o(t)e(MPI)p
460 314 13 2 v 15 w(BDBlk\()h(b)q(d,)g(bu\013er,)g(len,)g(datat)o(yp)q(e)g
(\))314 384 y(MPI)p 397 384 V 15 w(BD)g(b)q(d;)314 454 y(c)o(har)g
(*bu\013er;)314 524 y(in)o(t)f(len,)h(datat)o(yp)q(e;)210 593
y Fb(INPUT)i(AR)o(GUMENTS)314 663 y Fd(b)q(d)347 b(Data)13
b(bu\013er)314 733 y(bu\013er)290 b(p)q(oin)o(ter)14 b(to)g(bu\013er)314
802 y(len)341 b(n)o(um)o(b)q(er)13 b(of)h(b)o(ytes)314 872
y(datat)o(yp)q(e)234 b(datat)o(yp)q(e)14 b(\(e.g.,)f Fc(MPI)p
1055 872 14 2 v 15 w(INT)p Fd(\))210 942 y Fb(DESCRIPTION)314
1012 y(MPI)p 413 1012 15 2 v 17 w(BDBlk)18 b Fd(adds)h(a)f(description)i(of)e
(a)h(con)o(tiguous)f(blo)q(c)o(k)h(to)f(a)h(previously)g(created)h(bu\013er)
314 1081 y(descriptor.)210 1151 y Fb(RETURN)c(V)-5 b(ALUE)314
1221 y(MPI)p 413 1221 V 17 w(BDBlk)13 b Fd(returns)i(0,)e(or)h
Fa(\000)p Fd(1)g(if)f(an)h(error)h(o)q(ccurs.)p eop
%%Page: 7 7
bop 210 105 a Fb(NAME)314 175 y(MPI)p 413 175 15 2 v 17 w(BDIdx)140
b Fd(Add)14 b(a)g(scatter/gather)h(to)f(a)g(bu\013er)h(descriptor)210
245 y Fb(SYNOPSIS)314 314 y Fd(in)o(t)e(MPI)p 460 314 13 2
v 15 w(BDIdx\()h(b)q(d,)g(bu\013er,)h(idxarra)o(y)m(,)d(n)o(umitems,)f(datat)
o(yp)q(e)j(\))314 384 y(MPI)p 397 384 V 15 w(BD)g(b)q(d;)314
454 y(c)o(har)g(*bu\013er;)314 524 y(in)o(t)f(idxarra)o(y[],)f(n)o(umitems,)f
(datat)o(yp)q(e;)210 593 y Fb(INPUT)16 b(AR)o(GUMENTS)314 663
y Fd(b)q(d)347 b(Data)13 b(bu\013er)314 733 y(bu\013er)290
b(p)q(oin)o(ter)14 b(to)g(bu\013er)314 802 y(idxarra)o(y)242
b(p)q(oin)o(ter)14 b(to)g(index)g(arra)o(y)314 872 y(n)o(umitems)215
b(n)o(um)o(b)q(er)13 b(of)h(elemen)o(ts)314 942 y(datat)o(yp)q(e)234
b(datat)o(yp)q(e)14 b(\(e.g.,)f Fc(MPI)p 1055 942 14 2 v 15
w(INT)p Fd(\))210 1012 y Fb(DESCRIPTION)314 1081 y(MPI)p 413
1081 15 2 v 17 w(BDIdx)d Fd(adds)g(a)h(description)g(of)f(a)g(scatter)i(or)e
(gather)h(blo)q(c)o(k)f(to)h(a)f(previously)g(created)i(bu\013er)314
1151 y(descriptor.)19 b(\(It)14 b(is)g(a)g(gather)g(when)g(used)h(in)e(a)h
(send)h(and)f(a)f(scatter)j(when)e(used)h(in)e(a)h(receiv)o(e.\))210
1221 y Fb(RETURN)i(V)-5 b(ALUE)314 1291 y(MPI)p 413 1291 V
17 w(BDBlk)13 b Fd(returns)i(0,)e(or)h Fa(\000)p Fd(1)g(if)f(an)h(error)h(o)q
(ccurs.)p eop
%%Page: 8 8
bop 210 105 a Fb(NAME)314 175 y(MPI)p 413 175 15 2 v 17 w(F)l(reeBD)120
b Fd(F)m(ree)15 b(a)e(bu\013er)i(descriptor)210 245 y Fb(SYNOPSIS)314
314 y Fd(in)o(t)e(MPI)p 460 314 13 2 v 15 w(F)m(reeBD\()i(b)q(d)f(\))314
384 y(MPI)p 397 384 V 15 w(BD)g(b)q(d;)210 454 y Fb(INPUT)i(AR)o(GUMENTS)314
524 y Fd(b)q(d)347 b(Data)13 b(bu\013er)210 593 y Fb(DESCRIPTION)314
663 y(MPI)p 413 663 15 2 v 17 w(F)l(reeBD)g Fd(frees)i(a)f(bu\013er)g
(descriptor)i(created)f(with)f Fc(MPI)p 1354 663 14 2 v 15
w(NewBD)p Fd(.)210 733 y Fb(RETURN)i(V)-5 b(ALUE)314 802 y(MPI)p
413 802 15 2 v 17 w(NewBD)14 b Fd(returns)i(0,)d(or)h Fa(\000)p
Fd(1)f(if)g(an)h(error)h(o)q(ccurs.)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF