%!PS-Adobe-2.0 %%Creator: dvips 5.528 Copyright 1986, 1994 Radical Eye Software %%Title: p.dvi %%CreationDate: Wed Sep 7 09:37:49 1994 %%Pages: 6 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 %%EndComments %DVIPSCommandLine: dvips p %DVIPSParameters: dpi=300, comments removed %DVIPSSource: TeX output 1994.09.07:0436 %%BeginProcSet: tex.pro /TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}B /TR{translate}N /isls false N /vsize 11 72 mul N /hsize 8.5 72 mul N /landplus90{false}def /@rigin{isls{[0 landplus90{1 -1}{-1 1} ifelse 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix currentmatrix dup dup 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 %%BeginProcSet: special.pro TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs 792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N /rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N /@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{ /CLIP 2 N}B /@hoffset{/ho X}B /@voffset{/vo X}B /@angle{/ang X}B /@rwi{ 10 div /rwi X /rwiSeen true N}B /@rhi{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B /@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict /md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{} N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{itransform lineto} }{6 -2 roll transform 6 -2 roll transform 6 -2 roll transform{ itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll curveto}}{{ closepath}}pathforall newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp {pop pop showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale}if 0 setgray} N /psfts{S 65781.76 div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin /magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts /psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X /psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def @MacSetUp}N /doclip{ psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{SDict begin /SpecialSave save N gsave normalscale currentpoint TR @SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial {CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR }{rhiSeen{rhi ury lly sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if /showpage{}N /erasepage{}N /copypage{}N newpath }N /@endspecial{count ocount sub{pop}repeat countdictstack dcount sub{ end}repeat grestore SpecialSave restore end}N /@defspecial{SDict begin} N /@fedspecial{end}B /li{lineto}B /rl{rlineto}B /rc{rcurveto}B /np{ /SaveX currentpoint /SaveY X N 1 setlinecap newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N /ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix setmatrix}N end %%EndProcSet TeXDict begin 40258431 52099146 1000 300 300 (/tmp_mnt/Net/sparky/sparky4/itf/Papers/India/p.dvi) @start /Fa 1 23 df<0180300380700380700380700700E00700E00700E00700E00E01 C00E01C00E01C00E01C01C03881C03881C03881E07883E19903BE0E03800003800007000 00700000700000700000E00000E00000C00000151B7F9119>22 D E /Fb 7 119 df45 D<03E0000FF8001FFC001E3C 00380E00780F00700700700700E00380E00380E00380E00380E00380E00380E00380E003 80F00780700700700700780F003C1E001E3C001FFC000FF80003E00011197E9816>48 D<07E0001FF8003FFC00781E00780700300700000700000700000E00003E0007FC0007F0 0007FC00001E00000700000300000380000380600380F00380E00700781E003FFC001FF8 0007E00011197E9816>51 D<003F00007F00003F0000070000070000070000070003C700 0FF7001FFF003C1F00780F00700700E00700E00700E00700E00700E00700E00700700F00 700F003C1F001FFFE00FE7F007C7E014197F9816>100 D109 D<7E3E00FEFF007FFF800F83C00F00E00E00E00E0070 0E00700E00700E00700E00700E00700E00E00F01E00F83C00FFF800EFF000E3C000E0000 0E00000E00000E00000E00000E00007FC000FFE0007FC000141B809116>112 D<7F1FC0FF1FE07F1FC01C07001E0F000E0E000E0E000E0E00071C00071C00071C00071C 0003B80003B80003B80001F00001F00000E00013127F9116>118 D E /Fc 26 121 df<78FCFCFCFC7806067D850D>46 D<001FE02000FFF8E003F80FE007 C003E00F8001E01F0000E03E0000E03E0000607E0000607C000060FC000000FC000000FC 000000FC000000FC000000FC000000FC000000FC0000007C0000607E0000603E0000603E 0000C01F0000C00F80018007C0030003F80E0000FFFC00001FE0001B1C7D9B22>67 D<000FF008007FFE3801FC07F807E001F80F8000781F0000783F0000383E0000387E0000 187C000018FC000000FC000000FC000000FC000000FC000000FC000000FC007FFFFC007F FF7C0001F87E0001F83E0001F83F0001F81F0001F80F8001F807E001F801FC07F8007FFE 78000FF818201C7D9B26>71 D78 D80 D82 D<07F8201FFEE03C07E07801E07000E0F000E0F00060F00060F80000FE0000FF E0007FFE003FFF003FFF800FFFC007FFE0007FE00003F00001F00000F0C000F0C000F0C0 00E0E000E0F001C0FC03C0EFFF0083FC00141C7D9B1B>I<7FFFFFE07FFFFFE0781F81E0 701F80E0601F8060E01F8070C01F8030C01F8030C01F8030C01F8030001F8000001F8000 001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000001F8000 001F8000001F8000001F8000001F8000001F800007FFFE0007FFFE001C1C7E9B21>I<0F F8001C1E003E0F803E07803E07C01C07C00007C0007FC007E7C01F07C03C07C07C07C0F8 07C0F807C0F807C0780BC03E13F80FE1F815127F9117>97 DI<03FC000E0E001C1F003C1F00781F00780E00F80000F80000F8 0000F80000F80000F800007800007801803C01801C03000E0E0003F80011127E9115>I< 000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F001F9F0 0F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801F0 7801F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C01C07801 C07801E0F801E0F801E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F03 8001FC0013127F9116>I104 D<1E003F003F003F003F001E00000000000000000000000000FF00FF001F001F001F001F 001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B1E7F9D0E>I108 DII<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8F800F8F8 00F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<03F0600F0CE0 1E07E03C03E07C03E07803E0F803E0F803E0F803E0F803E0F803E0F803E07803E07C03E0 3C03E01C07E00E0FE003F3E00003E00003E00003E00003E00003E00003E0001FFC001FFC 161A7E9119>113 DI<1FD8 30786018E018E018F000FF807FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E12 7E9113>I<0300030003000300070007000F000F003FFCFFFC1F001F001F001F001F001F 001F001F001F001F0C1F0C1F0C1F0C0F08079803F00E1A7F9913>III120 D E /Fd 52 123 df<0001FC3C00060E67000C0EC7001C0DC6001C01C0003801C0003803 800038038000380380003803800070038007FFFFF800700700007007000070070000E007 0000E00E0000E00E0000E00E0000E00E0001C00E0001C01C0001C01C0001C01C0001C01C 0003801C0003803800038038000380380003003800070030000700700006006000C66060 00E470C000C8618000703E00002025819C19>11 D<0001FE0FF0000307380C000607700C 000C06601C001C00E00C001C00C000001C01C000003801C000003801C000003801C00000 3803800003FFFFFFF000700380700070038070007003807000700780E000700700E00070 0700E000E00700E000E00701C000E00701C000E00E01C000E00E01C001C00E038801C00E 038801C00E038801C01C039001C01C019003801C00E003801C0000038038000003003800 000300300000C630300000E638600000CC30C00000781F0000002625819C25>14 D<183C3C3C0404080810204080060C779C0D>39 D<00030006000800180030006000C000 C0018003000300060006000C000C001C0018001800380030003000700070006000600060 006000E000E000E000E000E0006000600060006000600020003000100008000800102A7B 9E11>I<001000100008000C000400060006000600060006000700070007000700070006 000600060006000E000E000C000C001C001800180038003000300060006000C000C00180 0300030006000C00180010006000C000102A809E11>I<18387838080810102040408005 0C7D830D>44 DI<3078F06005047C830D>I<003C0000C600 0183000303000603000603800E03800C03801C03801C0300380700380700380700380700 700E00700E00700E00700E00E01C00E01C00E01C00E03800E03800E03000C06000E06000 60C0007180001E0000111D7B9B15>48 D<00020006000C001C007C039C00380038003800 38007000700070007000E000E000E000E001C001C001C001C003800380038003800780FF F00F1C7C9B15>I<003C0000C3000101800201800201C00441C00441C00841C00841C008 41C01083801083801107000E0600000C0000180000300000C00001000006000008000010 01001002002002004006007E0C00C7F80083F80080E000121D7C9B15>I<003E0000C180 0101800200C00400C00440C00841C00841C00841C0088380070380000700000E0001F800 003800000C00000C00000E00000E00000E00000E00700E00E01C00801C00803800803000 40600021C0001F0000121D7C9B15>I<003C0000C6000183000303000603000E03000C03 801C03801C03001C0300380700380700380700380F00380E00181E00181E000C6C00079C 00001C00001800003800003000006000E0C000E0C0008180008600007C0000111D7B9B15 >57 D<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 FFC0003C0000380000380000380000380000700000700000700000700000E00000E00000 E00000E00001C00001C00001C00001C00003800003800003800003800007000007000007 00000700000F0000FFE000121C7E9B10>73 D<007FF00007800007000007000007000007 00000E00000E00000E00000E00001C00001C00001C00001C000038000038000038000038 0000700000700000700000700060E000E0E000C0C00081C0008380004700003C0000141D 7B9B16>I<01FC03FE001C0070003C0060002E0040002E0040002E004000470080004700 8000470080004380800083810000838100008181000081C1000101C2000101C2000100E2 000100E2000200E4000200740002007400020074000400380004003800040038000C0018 001C001000FF8010001F1C7D9B1F>78 D<0007F000001C1C0000700E0000E0070001C003 8003800380070003800E0003C01E0003C01C0003C03C0003C03C0003C0780003C0780003 C0780003C0F0000780F0000780F0000780F0000F00F0000F00F0000E00F0001E00F0003C 0070003800700070007800E0003801C0001C0380000E0E000003F800001A1E7A9C20>I< 01FFFC00003C070000380380003801C0003801C0003801C0007003C0007003C0007003C0 0070038000E0078000E0070000E00E0000E0380001FFE00001C0000001C0000001C00000 03800000038000000380000003800000070000000700000007000000070000000F000000 FFE000001A1C7D9B1C>I<01FFF800003C0E000038070000380380003803800038038000 700780007007800070078000700F0000E00E0000E01C0000E0700000FFC00001C0C00001 C0600001C0700001C07000038070000380700003807000038070000700F0000700F04007 00F0400700F0800F007880FFE0790000001E001A1D7D9B1E>82 D<000F8400304C00403C 00801801001803001803001806001006001006000007000007000003E00003FC0001FF00 007F800007C00001C00001C00000C00000C02000C02000C0600180600180600300600200 F00400CC180083E000161E7D9C17>I<1FFFFFC01C0701C0300E00C0200E0080600E0080 400E0080401C0080801C0080801C0080001C000000380000003800000038000000380000 0070000000700000007000000070000000E0000000E0000000E0000000E0000001C00000 01C0000001C0000001C0000003C000007FFE00001A1C799B1E>I<03CC063C0C3C181C38 38303870387038E070E070E070E070E0E2C0E2C0E261E462643C380F127B9115>97 D<3F00070007000E000E000E000E001C001C001C001C0039C03E60383038307038703870 387038E070E070E070E060E0E0C0C0C1C0618063003C000D1D7B9C13>I<01F007080C08 181C3838300070007000E000E000E000E000E000E008E010602030C01F000E127B9113> I<001F80000380000380000700000700000700000700000E00000E00000E00000E0003DC 00063C000C3C00181C00383800303800703800703800E07000E07000E07000E07000E0E2 00C0E200C0E20061E4006264003C3800111D7B9C15>I<01E007100C1018083810701070 607F80E000E000E000E000E000E0086010602030C01F000D127B9113>I<0003C0000670 000C70001C60001C00001C0000380000380000380000380000380003FF80007000007000 00700000700000700000E00000E00000E00000E00000E00001C00001C00001C00001C000 01C000038000038000038000030000030000070000C60000E60000CC0000780000142581 9C0D>I<00F3018F030F06070E0E0C0E1C0E1C0E381C381C381C381C3838303830381878 18F00F700070007000E000E0C0C0E1C0C3007E00101A7D9113>I<0FC00001C00001C000 0380000380000380000380000700000700000700000700000E78000E8C000F0E000E0E00 1C0E001C0E001C0E001C0E00381C00381C00381C00383800703880703880707080707100 E03200601C00111D7D9C15>I<01800380010000000000000000000000000000001C0026 00470047008E008E000E001C001C001C0038003800710071007100720072003C00091C7C 9B0D>I<0006000E0006000000000000000000000000000000F001180218021804380438 00380038007000700070007000E000E000E000E001C001C001C001C003800380C300E700 CE0078000F24819B0D>I<0FC00001C00001C00003800003800003800003800007000007 00000700000700000E0F000E11000E23800E43801C83001C80001D00001E00003F800039 C00038E00038E00070E20070E20070E20070E400E06400603800111D7D9C13>I<1F8003 80038007000700070007000E000E000E000E001C001C001C001C00380038003800380070 00700070007000E400E400E400E40068003800091D7C9C0B>I<3C1E0780266318C04683 A0E04703C0E08E0380E08E0380E00E0380E00E0380E01C0701C01C0701C01C0701C01C07 0380380E0388380E0388380E0708380E0710701C0320300C01C01D127C9122>I<3C3C00 2646004687004707008E07008E07000E07000E07001C0E001C0E001C0E001C1C00381C40 381C40383840383880701900300E0012127C9117>I<01E007180C0C180C380C300E700E 700EE01CE01CE01CE018E038E030E06060C031801E000F127B9115>I<07870004D98008 E0C008E0C011C0E011C0E001C0E001C0E00381C00381C00381C003818007038007030007 07000706000E8C000E70000E00000E00001C00001C00001C00001C00003C0000FF800013 1A7F9115>I<03C4062C0C3C181C3838303870387038E070E070E070E070E0E0C0E0C0E0 61E063C03DC001C001C0038003800380038007803FF00E1A7B9113>I<3C3C26C2468747 078E068E000E000E001C001C001C001C0038003800380038007000300010127C9112>I< 01F006080C080C1C18181C001F001FC00FF007F0007800386030E030C030806060C01F00 0E127D9111>I<00C001C001C001C00380038003800380FFE00700070007000E000E000E 000E001C001C001C001C00384038403840388019000E000B1A7D990E>I<1E0300270700 470700470700870E00870E000E0E000E0E001C1C001C1C001C1C001C1C00383880383880 1838801839001C5900078E0011127C9116>I<1E06270E470E4706870287020E020E021C 041C041C041C0818083808181018200C4007800F127C9113>I<1E018327038747038747 03838707018707010E07010E07011C0E021C0E021C0E021C0E04180C04181C04181C081C 1C100C263007C3C018127C911C>I<070E0019910010E38020E38041C30041C00001C000 01C000038000038000038000038000070200670200E70400CB04008B080070F00011127D 9113>I<1E03270747074707870E870E0E0E0E0E1C1C1C1C1C1C1C1C3838383818381838 1C7007F00070007000E0E0C0E1C0818047003C00101A7C9114>I<038207C20FEC083810 08001000200040008001000200040008081008383067F043E081C00F127D9111>I E /Fe 46 122 df<00FC000782000E07001C07001C02001C00001C00001C00001C0000FF FF001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C07001C 0700FF1FE01317809614>12 D<00FC7E000703C1000E0783801C0703801C0701001C0700 001C0700001C0700001C070000FFFFFF801C0703801C0703801C0703801C0703801C0703 801C0703801C0703801C0703801C0703801C0703801C0703801C070380FF1FCFF01C1780 961D>14 D<60F0F070101020204040040A7D960A>39 D<60F0F070101020204040040A7D 830A>44 DI<60F0F06004047D830A>I<07C018303018701C600C 600CE00EE00EE00EE00EE00EE00EE00EE00EE00E600C600C701C30181C7007C00F157F94 12>48 D<03000700FF000700070007000700070007000700070007000700070007000700 07000700070007007FF00C157E9412>I<0FE030306018701C701C001C00180038006007 E000300018000C000E000EE00EE00EC00C401830300FE00F157F9412>51 D<20303FE03FC0240020002000200020002F8030E020700030003800384038E038E03880 30406020C01F000D157E9412>53 D<01F00608080C181C301C70006000E000E3E0EC30F0 18F00CE00EE00EE00E600E600E300C3018183007C00F157F9412>I<07E018302018600C 600C700C78183E101F600FC00FF018F8607C601EC00EC006C006C004600C38300FE00F15 7F9412>56 D<07C0183030186018E00CE00CE00EE00EE00E601E301E186E0F8E000E000C 001C70187018603020C01F800F157F9412>I<00FC100383300E00B01C00703800303000 30700010600010E00010E00000E00000E00000E00000E00000E000106000107000103000 203800201C00400E008003830000FC0014177E9619>67 DIII< FC00FE1E00381F001017001013801011C01011C01010E010107010103810103810101C10 100E10100F101007101003901001D01001D01000F0100070100030380030FE001017177F 961A>78 D<00FC000303000E01C01C00E0380070300030700038600018E0001CE0001CE0 001CE0001CE0001CE0001CE0001C7000387000383000303800701C00E00E01C003030000 FC0016177E961B>II82 D<0FC4302C601C400CC004C004C004E0007000 7F003FE00FF801FC001C000E0006800680068006C004E008D81087E00F177E9614>I<7F FFF860381840380840380880380480380480380400380000380000380000380000380000 380000380000380000380000380000380000380000380000380000380007FFC016177F96 19>II87 D<1FC0386038301038003803F81E38 30387038E039E039E07970FF1F1E100E7F8D12>97 DI<07F01838303870106000 E000E000E000E000600070083008183007C00D0E7F8D10>I<007E00000E00000E00000E 00000E00000E00000E00000E00000E0007CE001C3E00300E00700E00600E00E00E00E00E 00E00E00E00E00600E00700E00301E00182E0007CFC012177F9614>I<0FC01860303070 38E018FFF8E000E000E000600070083010183007C00D0E7F8D10>I<03E006700E701C20 1C001C001C001C001C00FF801C001C001C001C001C001C001C001C001C001C001C001C00 FF800C1780960B>I<0F9E18E33060707070707070306018C02F80200060003FE03FF83F FC600EC006C006C006600C38380FE010157F8D12>II<183C3C1800000000007C 1C1C1C1C1C1C1C1C1C1C1C1CFF081780960A>I107 DIII<07C018303018600C600CE00EE00EE00EE00EE00E701C301818 3007C00F0E7F8D12>II114 D<1F4060C0C040C040E000FF007F801FC001E080608060C060E0C09F000B0E 7F8D0E>I<080008000800180018003800FF803800380038003800380038003800384038 40384038401C800F000A147F930E>II119 D121 D E /Ff 1 4 df<0C000C008C40EDC07F 800C007F80EDC08C400C000C000A0B7D8B10>3 D E /Fg 28 122 df<00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001 F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001 F80001F80001F80001F80001F80001F80001F8007FFFE07FFFE013207C9F1C>49 D<03FC000FFF003C1FC07007E07C07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003 F80003F00003F00007E00007C0000F80001F00003E0000380000700000E01801C0180380 180700180E00380FFFF01FFFF03FFFF07FFFF0FFFFF0FFFFF015207D9F1C>I<00FE0007 FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F81F03F00003F00003E00007C000 1F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE7E00FEFF00FEFF00FEFF 00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000E00001E00003E0 0003E00007E0000FE0001FE0001FE00037E00077E000E7E001C7E00187E00307E00707E0 0E07E00C07E01807E03807E07007E0E007E0FFFFFEFFFFFE0007E00007E00007E00007E0 0007E00007E00007E000FFFE00FFFE17207E9F1C>I68 D73 D78 D80 D82 D<01FC0407FF8C1F03FC3C007C7C003C78001C 78001CF8000CF8000CFC000CFC0000FF0000FFE0007FFF007FFFC03FFFF01FFFF80FFFFC 03FFFE003FFE0003FF00007F00003F00003FC0001FC0001FC0001FE0001EE0001EF0003C FC003CFF00F8C7FFE080FF8018227DA11F>I<07FC001FFF803F07C03F03E03F01E03F01 F01E01F00001F00001F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01 F07E02F07E0CF81FF87F07E03F18167E951B>97 D<00FF8007FFE00F83F01F03F03E03F0 7E03F07C01E07C0000FC0000FC0000FC0000FC0000FC0000FC00007C00007E00007E0000 3E00301F00600FC0E007FF8000FE0014167E9519>99 D<0001FE000001FE0000003E0000 003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000003E0000 003E0001FC3E0007FFBE000F81FE001F007E003E003E007E003E007C003E00FC003E00FC 003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E007C003E007C003E003E 007E001E00FE000F83BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF800F87C01E 01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C 00007E00003E00181F00300FC07003FFC000FF0015167E951A>I<003F8000FFC001E3E0 03C7E007C7E00F87E00F83C00F80000F80000F80000F80000F80000F8000FFFC00FFFC00 0F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F8000 0F80000F80000F80000F80000F80000F80007FF8007FF80013237FA211>I<03FC1E0FFF 7F1F0F8F3E07CF3C03C07C03E07C03E07C03E07C03E07C03E03C03C03E07C01F0F801FFF 0013FC003000003000003800003FFF801FFFF00FFFF81FFFFC3800FC70003EF0001EF000 1EF0001EF0001E78003C7C007C3F01F80FFFE001FF0018217E951C>I<1C003E007F007F 007F003E001C000000000000000000000000000000FF00FF001F001F001F001F001F001F 001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FFE00B247EA310> 105 D108 DII<00FE0007FFC00F83 E01E00F03E00F87C007C7C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC00 7E7C007C7C007C3E00F81F01F00F83E007FFC000FE0017167E951C>II114 D<0FF3003FFF00781F00600700E0 0300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E0 0380E00380F00700FC0E00EFFC00C7F00011167E9516>I<018000018000018000018000 0380000380000780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F8000 0F80000F80000F80000F80000F80000F80000F80000F81800F81800F81800F81800F8180 0F830007C30003FE0000F80011207F9F16>II120 DI E /Fh 76 124 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C000 0E01C0000E01C0000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C000 0E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C000 0E01C0000E01C0000E01C0007F87FC001A1D809C18>11 D<007E0001C1800301800703C0 0E03C00E01800E00000E00000E00000E00000E0000FFFFC00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0 7F87F8151D809C17>I<007FC001C1C00303C00703C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01 C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D809C17>I<003F07E0 0001C09C18000380F018000701F03C000E01E03C000E00E018000E00E000000E00E00000 0E00E000000E00E000000E00E00000FFFFFFFC000E00E01C000E00E01C000E00E01C000E 00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00 E01C000E00E01C000E00E01C000E00E01C000E00E01C000E00E01C007FC7FCFF80211D80 9C23>I<60F0F8680808081010204080050C7C9C0C>39 D<004000800100020006000C00 0C0018001800300030007000600060006000E000E000E000E000E000E000E000E000E000 E000E000E000600060006000700030003000180018000C000C0006000200010000800040 0A2A7D9E10>I<800040002000100018000C000C00060006000300030003800180018001 8001C001C001C001C001C001C001C001C001C001C001C001C00180018001800380030003 00060006000C000C00180010002000400080000A2A7E9E10>I<00060000000600000006 000000060000000600000006000000060000000600000006000000060000000600000006 000000060000FFFFFFE0FFFFFFE000060000000600000006000000060000000600000006 0000000600000006000000060000000600000006000000060000000600001B1C7E9720> 43 D<60F0F0701010101020204080040C7C830C>II<60F0F060 04047C830C>I<00010003000600060006000C000C000C00180018001800300030003000 60006000C000C000C0018001800180030003000300060006000C000C000C001800180018 00300030003000600060006000C000C00010297E9E15>I<03C00C301818300C300C700E 60066006E007E007E007E007E007E007E007E007E007E007E007E007E00760066006700E 300C300C18180C3007E0101D7E9B15>I<030007003F00C7000700070007000700070007 0007000700070007000700070007000700070007000700070007000700070007000F80FF F80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F000E000E001C 001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15>I<07 E01830201C201C781E780E781E381E001C001C00180030006007E00030001C001C000E00 0F000F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C 00003C00003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C 00301C00201C00401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C 0001FFC0121C7F9B15>I<300C3FF83FF03FC020002000200020002000200023E0243028 18301C200E000E000F000F000F600FF00FF00FF00F800E401E401C2038187007C0101D7E 9B15>I<00F0030C06040C0E181E301E300C700070006000E3E0E430E818F00CF00EE006 E007E007E007E007E007600760077006300E300C18180C3003E0101D7E9B15>I<400000 7FFF807FFF007FFF00400200800400800400800800001000001000002000006000004000 00C00000C00001C000018000018000038000038000038000038000078000078000078000 078000078000078000030000111D7E9B15>I<03E00C301008200C200660066006600670 06780C3E083FB01FE007F007F818FC307E601E600FC007C003C003C003C0036002600430 0C1C1007E0101D7E9B15>I<03C00C301818300C700C600EE006E006E007E007E007E007 E0076007700F300F18170C2707C700060006000E300C780C78187010203030C00F80101D 7E9B15>I<60F0F0600000000000000000000060F0F06004127C910C>I<60F0F060000000 0000000000000060F0F0701010101020204080041A7C910C>I<00060000000600000006 0000000F0000000F0000000F00000017800000178000001780000023C0000023C0000023 C0000041E0000041E0000041E0000080F0000080F0000180F8000100780001FFF8000300 7C0002003C0002003C0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D 7F9C1F>65 DI<001F808000E06180018019 80070007800E0003801C0003801C00018038000180780000807800008070000080F00000 00F0000000F0000000F0000000F0000000F0000000F0000000F000000070000080780000 8078000080380000801C0001001C0001000E000200070004000180080000E03000001FC0 00191E7E9C1E>IIII<001F808000E0618001801980070007 800E0003801C0003801C00018038000180780000807800008070000080F0000000F00000 00F0000000F0000000F0000000F0000000F000FFF0F0000F807000078078000780780007 80380007801C0007801C0007800E00078007000B800180118000E06080001F80001C1E7E 9C21>III<1FFF00F80078007800780078007800780078007800780078007800780078 0078007800780078007800787078F878F878F878F0F040E021C01F00101D7F9B15>IIIII<003F800000E0E0000380380007001C000E000E001C0007003C00078038 000380780003C0780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F0 0001E0F00001E0F00001E0700001C0780003C0780003C0380003803C0007801C0007000E 000E0007001C000380380000E0E000003F80001B1E7E9C20>II82 D<07E0801C19803005807003 80600180E00180E00080E00080E00080F00000F800007C00007FC0003FF8001FFE0007FF 0000FF80000F800007C00003C00001C08001C08001C08001C0C00180C00180E00300D002 00CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F0040C00F 0020800F0020800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F 0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F 0000000F0000000F0000001F800003FFFC001B1C7F9B1E>IIII<7FF0FFC00FC03E0007 80180003C0180003E0100001E0200001F0600000F0400000788000007D8000003D000000 1E0000001F0000000F0000000F8000000F80000013C0000023E0000021E0000041F00000 C0F8000080780001007C0003003C0002001E0006001F001F003F80FFC0FFF01C1C7F9B1F >I91 D93 D<1FC000307000783800781C00301C00001C00001C0001FC000F1C00381C00701C00601C 00E01C40E01C40E01C40603C40304E801F870012127E9115>97 DI<07E00C301878307870306000E000E000E000E000E000E0 0060007004300418080C3007C00E127E9112>I<003F0000070000070000070000070000 070000070000070000070000070000070003E7000C1700180F00300700700700600700E0 0700E00700E00700E00700E00700E00700600700700700300700180F000C370007C7E013 1D7E9C17>I<03E00C301818300C700E6006E006FFFEE000E000E000E000600070023002 18040C1803E00F127F9112>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FF E00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E007FE00F 1D809C0D>I<00038003C4C00C38C01C3880181800381C00381C00381C00381C00181800 1C38000C300013C0001000003000001800001FF8001FFF001FFF803003806001C0C000C0 C000C0C000C06001803003001C0E0007F800121C7F9215>II<18003C003C0018000000000000000000000000000000FC001C 001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D7F 9C0C>I<00C001E001E000C000000000000000000000000000000FE000E000E000E000E0 00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E060E0F0C0 F1C061803E000B25839C0D>IIIII<03F0000E1C00180600300300700380600180E001C0E001C0E001C0E001C0 E001C0E001C06001807003803003001806000E1C0003F00012127F9115>II<03C1000C3300180B00300F00700700700700E00700E00700E00700E0 0700E00700E00700600700700700300F00180F000C370007C70000070000070000070000 0700000700000700000700003FE0131A7E9116>II<1F9030704030C010 C010E010F8007F803FE00FF000F880388018C018C018E010D0608FC00D127F9110>I<04 000400040004000C000C001C003C00FFE01C001C001C001C001C001C001C001C001C001C 101C101C101C101C100C100E2003C00C1A7F9910>III< FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E1182000711C400 0711C4000720C40003A0E80003A0E80003C0680001C0700001C070000180300000802000 1B127F911E>I<7F8FF00F03800F030007020003840001C80001D80000F0000070000078 0000F800009C00010E00020E000607000403801E07C0FF0FF81512809116>II<7FFC70386038407040F040E041C003C0038007000F040E041C043C 0C380870087038FFF80E127F9112>II E /Fi 19 117 df<387CFEFEFE7C3807077C860F>46 D<00E00001E0000FE000FFE000F3E00003 E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003 E00003E00003E00003E00003E00003E00003E00003E00003E00003E000FFFF80FFFF8011 1D7C9C1A>49 D<07F0001FFE00383F007C1F80FE0FC0FE0FC0FE0FE0FE07E07C07E03807 E0000FE0000FC0000FC0001F80001F00003E0000780000F00000E00001C0000380600700 600E00601C00E01FFFC03FFFC07FFFC0FFFFC0FFFFC0131D7D9C1A>I<0000E000000000 E000000001F000000001F000000001F000000003F800000003F800000006FC00000006FC 0000000EFE0000000C7E0000000C7E000000183F000000183F000000303F800000301F80 0000701FC00000600FC00000600FC00000C007E00000FFFFE00001FFFFF000018003F000 018003F000030001F800030001F800060001FC00060000FC000E0000FE00FFE00FFFE0FF E00FFFE0231F7E9E28>65 D<0007FC02003FFF0E00FE03DE03F000FE07E0003E0FC0001E 1F80001E3F00000E3F00000E7F0000067E0000067E000006FE000000FE000000FE000000 FE000000FE000000FE000000FE0000007E0000007E0000067F0000063F0000063F00000C 1F80000C0FC0001807E0003803F0007000FE01C0003FFF800007FC001F1F7D9E26>67 D73 D<07FC001FFF003F0F803F07C03F03E03F03E00C03E00003E0007FE007FBE01F03E03C03 E07C03E0F803E0F803E0F803E0FC05E07E0DE03FF8FE0FE07E17147F9319>97 DI<01FE0007 FF801F0FC03E0FC03E0FC07C0FC07C0300FC0000FC0000FC0000FC0000FC0000FC00007C 00007E00003E00603F00C01F81C007FF0001FC0013147E9317>I<01FE0007FF800F83C0 1E01E03E00F07C00F07C00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C00007C0000 3E00181E00180F807007FFE000FF8015147F9318>101 D<1C003E007F007F007F003E00 1C00000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F00 1F001F001F001F001F001F001F00FFE0FFE00B217EA00E>105 D108 DI< FE0FC0FE3FE01E61F01EC0F81E80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8 1F00F81F00F81F00F81F00F81F00F81F00F8FFE3FFFFE3FF18147D931D>I<01FF0007FF C01F83F03E00F83E00F87C007C7C007CFC007EFC007EFC007EFC007EFC007EFC007E7C00 7C7C007C3E00F83E00F81F83F007FFC001FF0017147F931A>II114 D<0FE63FFE701E600EE006E006F800FFC07FF83FFC1FFE03FE001FC0 07C007E007F006F81EFFFCC7F010147E9315>I<01800180018003800380038007800F80 3F80FFFCFFFC0F800F800F800F800F800F800F800F800F800F800F860F860F860F860F86 07CC03F801F00F1D7F9C14>I E /Fj 45 122 df<003C000000006200000000C2000000 018100000001810000000381000000038100000003810000000381000000038200000003 820000000384000000038800000001C800000001D000000001E003FF8001C0007C0000E0 00380001E000300001F0002000027000400004700040000838008000183C008000301C01 0000701E020000700E020000F007040000F007880000F003880000F001D00100F000E001 0078007003003800B802003C031C04000E0C0E0C0003F003F00021257EA326>38 D<70F8FCFC7404040404080810102040060F7C840E>44 D<70F8F8F87005057C840E>46 D<01F000071C000C06001803003803803803807001C07001C07001C07001C0F001E0F001 E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001E0F001 E07001C07001C07001C07803C03803803803801C07000C0600071C0001F00013227EA018 >48 D<008003800F80F38003800380038003800380038003800380038003800380038003 800380038003800380038003800380038003800380038003800380038007C0FFFE0F217C A018>I<03F0000C1C001007002007804003C04003C08003E0F003E0F801E0F801E0F801 E02003E00003E00003C00003C0000780000700000E00001C0000180000300000600000C0 000180000100000200200400200800201800603000403FFFC07FFFC0FFFFC013217EA018 >I<03F8000C1E001007002007804007C07807C07803C07807C03807C000078000078000 0700000F00000E0000380003F000001C00000F000007800007800003C00003C00003E020 03E07003E0F803E0F803E0F003C04003C0400780200780100F000C1C0003F00013227EA0 18>I<000200000600000E00000E00001E00001E00002E00004E00004E00008E00008E00 010E00020E00020E00040E00040E00080E00100E00100E00200E00200E00400E00800E00 FFFFF8000E00000E00000E00000E00000E00000E00000E00001F0001FFF015217FA018> I<1000801E07001FFF001FFE001FF80013E0001000001000001000001000001000001000 0010F800130E001407001803801003800001C00001C00001E00001E00001E00001E07001 E0F001E0F001E0E001C08001C04003C04003802007001006000C1C0003F00013227EA018 >I<007E0001C1000300800601C00E03C01C03C018018038000038000078000070000070 0000F0F800F30C00F40600F40300F80380F801C0F001C0F001E0F001E0F001E0F001E0F0 01E07001E07001E07001E03801C03801C01803801C03000C0600070C0001F00013227EA0 18>I<01F000060C000C0600180700380380700380700380F001C0F001C0F001C0F001E0 F001E0F001E0F001E0F001E07001E07003E03803E01805E00C05E00619E003E1E00001C0 0001C00001C0000380000380300300780700780600700C002018001030000FC00013227E A018>57 D<000FE00000701C0000800200030001800400004008000020080000201007C0 1020183008203008084060040440C0078441C0038481C003828380038283800382838003 828380038283800382838003828380038281C0038241C0038240C007824060078420300B 84201831881007C0F00800000008000000040000000300000E00800078007007C0000FFC 001F237DA226>64 D<0001800000018000000180000003C0000003C0000003C0000005E0 000005E000000DF0000008F0000008F0000010F800001078000010780000203C0000203C 0000203C0000401E0000401E0000401E0000800F0000800F0000FFFF0001000780010007 80030007C0020003C0020003C0040003E0040001E0040001E00C0000F00C0000F03E0001 F8FF800FFF20237EA225>II<0007E0100038183000E0063001C00170038000F0070000F00E 0000701E0000701C0000303C0000303C0000307C0000107800001078000010F8000000F8 000000F8000000F8000000F8000000F8000000F8000000F800000078000000780000107C 0000103C0000103C0000101C0000201E0000200E000040070000400380008001C0010000 E0020000381C000007E0001C247DA223>I70 D73 D75 DIII80 D<03F0200C0C601802603001E07000E0600060E00060 E00060E00020E00020E00020F00000F000007800007F00003FF0001FFE000FFF0003FF80 003FC00007E00001E00000F00000F0000070800070800070800070800070C00060C00060 E000C0F000C0C80180C6070081FC0014247DA21B>83 D<7FFFFFF8780780786007801840 0780084007800840078008C007800C800780048007800480078004800780040007800000 078000000780000007800000078000000780000007800000078000000780000007800000 078000000780000007800000078000000780000007800000078000000780000007800000 07800000078000000FC00003FFFF001E227EA123>I<0FE0001838003C0C003C0E001807 0000070000070000070000FF0007C7001E07003C0700780700700700F00708F00708F007 08F00F087817083C23900FC1E015157E9418>97 D<0E0000FE00001E00000E00000E0000 0E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F000E61C00E8060 0F00300E00380E003C0E001C0E001E0E001E0E001E0E001E0E001E0E001E0E001E0E001C 0E003C0E00380F00700C80600C41C0083F0017237FA21B>I<01FE000703000C07801C07 80380300780000700000F00000F00000F00000F00000F00000F00000F000007000007800 403800401C00800C010007060001F80012157E9416>I<0000E0000FE00001E00000E000 00E00000E00000E00000E00000E00000E00000E00000E00000E00000E001F8E00704E00C 02E01C01E03800E07800E07000E0F000E0F000E0F000E0F000E0F000E0F000E0F000E070 00E07800E03800E01801E00C02E0070CF001F0FE17237EA21B>I<01FC000707000C0380 1C01C03801C07801E07000E0F000E0FFFFE0F00000F00000F00000F00000F00000700000 7800203800201C00400E008007030000FC0013157F9416>I<003C00C6018F038F030F07 0007000700070007000700070007000700FFF80700070007000700070007000700070007 0007000700070007000700070007000700070007807FF8102380A20F>I<00007001F198 071E180E0E181C07001C07003C07803C07803C07803C07801C07001C07000E0E000F1C00 19F0001000001000001800001800001FFE000FFFC00FFFE03800F0600030400018C00018 C00018C000186000306000303800E00E038003FE0015217F9518>I<0E0000FE00001E00 000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E1F 800E60C00E80E00F00700F00700E00700E00700E00700E00700E00700E00700E00700E00 700E00700E00700E00700E00700E00700E00700E0070FFE7FF18237FA21B>I<1C001E00 3E001E001C00000000000000000000000000000000000E00FE001E000E000E000E000E00 0E000E000E000E000E000E000E000E000E000E000E000E000E00FFC00A227FA10E>I<0E 0000FE00001E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E 00000E00000E03FC0E01F00E01C00E01800E02000E04000E08000E10000E38000EF8000F 1C000E1E000E0E000E07000E07800E03C00E01C00E01E00E00F00E00F8FFE3FE17237FA2 1A>107 D<0E00FE001E000E000E000E000E000E000E000E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E 00FFE00B237FA20E>I<0E1FC07F00FE60E183801E807201C00F003C00E00F003C00E00E 003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E00 3800E00E003800E00E003800E00E003800E00E003800E00E003800E00E003800E00E0038 00E0FFE3FF8FFE27157F942A>I<0E1F80FE60C01E80E00F00700F00700E00700E00700E 00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E 0070FFE7FF18157F941B>I<01FC000707000C01801800C03800E0700070700070F00078 F00078F00078F00078F00078F00078F000787000707800F03800E01C01C00E0380070700 01FC0015157F9418>I<0E1F00FE61C00E80600F00700E00380E003C0E001C0E001E0E00 1E0E001E0E001E0E001E0E001E0E001E0E003C0E003C0E00380F00700E80E00E41C00E3F 000E00000E00000E00000E00000E00000E00000E00000E00000E0000FFE000171F7F941B >I<0E3CFE461E8F0F0F0F060F000E000E000E000E000E000E000E000E000E000E000E00 0E000E000F00FFF010157F9413>114 D<0F8830786018C018C008C008E008F0007F803F E00FF001F8003C801C800C800CC00CC008E018D0308FC00E157E9413>I<020002000200 02000600060006000E001E003E00FFF80E000E000E000E000E000E000E000E000E000E00 0E000E040E040E040E040E040E040708030801F00E1F7F9E13>I<0E0070FE07F01E00F0 0E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E0070 0E00700E00F00E00F006017003827800FC7F18157F941B>II121 D E /Fk 2 16 df<01800180018001804182F18F 399C0FF003C003C00FF0399CF18F4182018001800180018010127E9215>3 D<03C00FF01FF83FFC7FFE7FFEFFFFFFFFFFFFFFFF7FFE7FFE3FFC1FF80FF003C010107E 9115>15 D E /Fl 20 122 df45 D78 D82 D<007F806003FFF0E007FFF9E00F807FE01F001FE03E0007E07C0003E07C 0001E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF000000FFC000007FFE00007F FFE0003FFFFC001FFFFE000FFFFF8007FFFFC003FFFFE000FFFFE00007FFF000007FF000 000FF8000007F8000003F8600001F8E00001F8E00001F8E00001F8F00001F0F00001F0F8 0003F0FC0003E0FF0007C0FFE01F80F3FFFF00E0FFFE00C01FF0001D297CA826>I<7FFF FFFFFFC07FFFFFFFFFC07FFFFFFFFFC07F803FC03FC07E003FC007C078003FC003C07800 3FC003C070003FC001C0F0003FC001E0F0003FC001E0E0003FC000E0E0003FC000E0E000 3FC000E0E0003FC000E0E0003FC000E000003FC0000000003FC0000000003FC000000000 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 3FC0000000003FC0000000003FC0000000003FC0000000003FC0000000003FC000000000 3FC00000007FFFFFE000007FFFFFE000007FFFFFE0002B287EA730>I<01FF800007FFF0 000F81F8001FC07E001FC07E001FC03F000F803F8007003F8000003F8000003F8000003F 80000FFF8000FFFF8007FC3F800FE03F803F803F803F003F807F003F80FE003F80FE003F 80FE003F80FE003F807E007F807F00DF803F839FFC0FFF0FFC01FC03FC1E1B7E9A21>97 D<003FE00001FFF80003F07E0007C01F000F801F801F800F803F800FC07F000FC07F0007 C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F0000 007F0000007F0000003F8000E01F8000E00FC001C007E0038003F81F0000FFFE00001FF0 001B1B7E9A20>101 D104 D<07000F801FC03FE03FE03FE01FC00F8007000000000000 000000000000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7DAA14>I107 DII< FFC07F0000FFC1FFC000FFC787E0000FCE03F0000FD803F0000FD803F8000FF003F8000F F003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0 03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003 F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80211B7D9A26>I112 D114 D<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC0000FFE0007FFE 007FFF803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0003CF00038F800 38FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000F00000 F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F03807 F03807F03807F03807F03803F03803F87001F86000FFC0001F8015267FA51B>II120 DI E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300dpi TeXDict begin %%EndSetup %%Page: 1 1 1 0 bop 339 233 a Fl(The)22 b(Nexus)h(T)-6 b(ask-parallel)22 b(Run)n(time)e(System)1597 211 y Fk(\003)214 353 y Fj(Ian)c(F)l(oster) 364 b(Carl)17 b(Kesselman)369 b(Stev)o(en)15 b(T)l(uec)o(k)o(e)37 469 y(Math)h(&)h(Computer)e(Science)155 b(Bec)o(kman)14 b(Institute)206 b(Math)16 b(&)h(Computer)e(Science)5 527 y(Argonne)h(National)g(Lab)q(oratory)244 b(Caltec)o(h)290 b(Argonne)16 b(National)g(Lab)q(oratory)124 586 y(Argonne,)g(IL)g (60439)223 b(P)o(asadena,)17 b(CA)f(91125)273 b(Argonne,)16 b(IL)g(60439)121 644 y(foster@mcs.anl.go)o(v)162 b(carl@compbio.caltec) o(h.)o(edu)204 b(tuec)o(k)o(e@mc)o(s.anl.go)o(v)336 806 y Fi(Abstract)5 908 y Fh(A)25 b(run)o(time)g(system)g(pro)o(vides)g(a)g (parallel)g(language)-45 958 y(compiler)17 b(with)h(an)h(in)o(terface)g (to)f(the)i(lo)o(w-lev)o(el)d(facilities)-45 1007 y(required)e(to)f (supp)q(ort)g(in)o(teraction)g(b)q(et)o(w)o(een)h(concurren)o(tly)-45 1057 y(executing)h(program)e(comp)q(onen)o(ts.)23 b(Nexus)17 b(is)e(a)h(p)q(ortable)-45 1107 y(run)o(time)21 b(system)i(for)f (task-parallel)g(programmi)o(ng)e(lan-)-45 1157 y(guages.)27 b(Distinguishing)15 b(features)j(of)e(Nexus)i(include)f(its)-45 1207 y(supp)q(ort)d(for)f(m)o(ultiple)e(threads)j(of)f(con)o(trol,)f (dynamic)g(pro-)-45 1257 y(cessor)k(acquisition,)d(dynamic)g(address)j (space)f(creation,)g(a)-45 1306 y(global)k(memory)f(mo)q(del)i(via)f (in)o(terpro)q(cessor)k(references,)-45 1356 y(and)9 b(async)o(hronous)i(ev)o(en)o(ts.)17 b(In)10 b(addition,)e(it)i(supp)q (orts)g(het-)-45 1406 y(erogeneit)o(y)i(at)f(m)o(ultiple)e(lev)o(els,)i (allo)o(wing)e(a)i(single)g(compu-)-45 1456 y(tation)h(to)g(utilize)f (di\013eren)o(t)i(programming)c(languages,)i(ex-)-45 1506 y(ecutables,)17 b(pro)q(cessors,)i(and)d(net)o(w)o(ork)g(proto)q (cols.)25 b(Nexus)-45 1555 y(is)17 b(curren)o(tly)i(b)q(eing)e(used)h (as)g(a)f(compiler)f(target)i(for)f(t)o(w)o(o)-45 1605 y(task-parallel)24 b(languages:)39 b(F)m(ortran)24 b(M)h(and)g(Comp)q (osi-)-45 1655 y(tional)20 b(C)110 1651 y(++)174 1655 y(.)39 b(In)21 b(this)g(pap)q(er,)i(w)o(e)e(presen)o(t)h(the)g(Nexus) -45 1705 y(design,)c(outline)f(tec)o(hniques)i(used)f(to)f(implemen)o (t)e(Nexus)-45 1755 y(on)e(parallel)f(computers,)h(sho)o(w)h(ho)o(w)f (it)g(is)g(used)h(in)f(compil-)-45 1804 y(ers,)f(and)e(compare)g(its)g (p)q(erformance)h(with)f(that)g(of)g(another)-45 1854 y(run)o(time)j(system.)-45 2014 y Fg(1)56 b(In)n(tro)r(duction)5 2115 y Fh(Compilers)15 b(for)i(parallel)f(languages)h(rely)g(on)g(the)h (exis-)-45 2165 y(tence)g(of)e(a)h(run)o(time)f(system.)26 b(The)17 b(run)o(time)f(system)g(de-)-45 2215 y(\014nes)f(the)g (compiler's)d(view)i(of)f(a)h(parallel)f(computer:)18 b(ho)o(w)-45 2265 y(computational)12 b(resources)18 b(are)d(allo)q (cated)f(and)h(con)o(trolled)-45 2314 y(and)i(ho)o(w)f(parallel)f(comp) q(onen)o(ts)i(of)f(a)g(program)g(in)o(teract,)-45 2364 y(comm)o(unicate)c(and)h(sync)o(hronize)i(with)f(one)g(another.)5 2415 y(Most)h(existing)f(run)o(time)f(systems)i(supp)q(ort)g(the)g (single-)-45 2465 y(program,)c(m)o(ultiple-data)e(\(SPMD\))k (programming)c(mo)q(del)p -45 2504 386 2 v 1 2531 a Ff(\003)19 2542 y Fe(This)k(w)o(ork)g(w)o(as)g(supp)q(orted)d(b)o(y)j(the)f (O\016ce)i(of)f(Scien)o(ti\014c)d(Com-)-45 2582 y(puting,)19 b(U.S.)g(Departmen)o(t)d(of)i(Energy)m(,)i(under)d(Con)o(tract)h(W-31-) -45 2621 y(109-Eng-38,)10 b(and)i(b)o(y)g(the)g(National)f(Science)g(F) m(oundation's)f(Cen)o(ter)-45 2661 y(for)16 b(Researc)o(h)f(in)i(P)o (arallel)e(Computation)f(under)i(Con)o(tract)f(CCR-)-45 2700 y(8809615.)1017 806 y Fh(used)21 b(to)e(implemen)o(t)e (data-parallel)h(languages.)35 b(In)20 b(this)1017 856 y(mo)q(del,)11 b(eac)o(h)h(pro)q(cessor)i(in)d(a)h(parallel)e(computer) i(executes)1017 906 y(a)20 b(cop)o(y)h(of)f(the)h(same)e(program.)36 b(Pro)q(cessors)23 b(exc)o(hange)1017 956 y(data)18 b(and)h(sync)o (hronize)g(with)f(eac)o(h)h(other)g(through)f(calls)1017 1006 y(to)d(the)g(run)o(time)e(library)m(,)h(whic)o(h)g(t)o(ypically)f (is)i(designed)g(to)1017 1055 y(optimize)e(collectiv)o(e)i(op)q (erations)f(in)g(whic)o(h)h(all)e(pro)q(cessors)1017 1105 y(comm)o(unicate)g(at)h(the)i(same)d(time,)h(in)g(a)g(structured)j (fash-)1017 1155 y(ion.)k(A)15 b(ma)r(jor)f(researc)o(h)i(goal)e(in)h (this)g(area)g(is)g(to)g(iden)o(tify)1017 1205 y(common)10 b(run)o(time)h(systems)i(that)f(can)g(b)q(e)h(shared)h(b)o(y)e(a)g(v)n (a-)1017 1255 y(riet)o(y)i(of)g(SPMD)f(systems.)1067 1305 y(T)m(ask-parallel)e(computations)g(extend)i(the)g(SPMD)f(pro-) 1017 1355 y(gramming)h(paradigm)i(b)o(y)h(allo)o(wing)f(unrelated)i (activities)1017 1405 y(to)j(tak)o(e)f(place)g(concurren)o(tly)m(.)36 b(The)19 b(need)i(for)e(task)g(par-)1017 1454 y(allelism)g(arises)k(in) e(time-dep)q(enden)o(t)h(problems)e(suc)o(h)j(as)1017 1504 y(discrete-ev)o(en)o(t)c(sim)o(ulation,)13 b(in)j(irregular)g (problems)f(suc)o(h)1017 1554 y(as)k(sparse)g(matrix)e(problems,)h(and) g(in)g(m)o(ultidisciplinary)1017 1604 y(sim)o(ulations)13 b(coupling)h(m)o(ultiple,)e(p)q(ossibly)j(data-parallel,)1017 1654 y(computations.)33 b(T)m(ask-parallel)17 b(programs)h(ma)o(y)f (dynam-)1017 1703 y(ically)f(create)j(m)o(ultiple,)c(p)q(oten)o(tially) h(unrelated,)i(threads)1017 1753 y(of)f(con)o(trol.)28 b(Comm)o(unication)14 b(and)j(sync)o(hronization)h(are)1017 1803 y(b)q(et)o(w)o(een)e(threads,)e(rather)h(than)f(pro)q(cessors,)i (and)e(can)g(o)q(c-)1017 1853 y(cur)h(async)o(hronously)f(among)d(an)o (y)j(subset)h(of)e(threads)i(and)1017 1903 y(at)22 b(an)o(y)g(p)q(oin)o (t)f(in)g(time.)41 b(A)22 b(compiler)f(often)h(has)g(little)1017 1952 y(global)10 b(information)e(ab)q(out)j(a)f(task-parallel)g (computation,)1017 2002 y(so)g(there)i(are)e(few)g(opp)q(ortunities)g (for)g(exploiting)e(optimized)1017 2052 y(collectiv)o(e)14 b(op)q(erations.)1067 2102 y(The)e(design)g(of)f(Nexus)i(is)e(shap)q (ed)i(b)q(oth)f(b)o(y)f(the)h(require-)1017 2152 y(men)o(ts)17 b(of)f(task-parallel)g(computations)g(and)g(b)o(y)h(a)g(desire)1017 2202 y(to)22 b(supp)q(ort)g(the)h(use)f(of)f(heterogeneous)j(en)o (vironmen)o(ts,)1017 2252 y(in)14 b(whic)o(h)g(heterogeneous)j (collections)d(of)g(computers)g(ma)o(y)1017 2301 y(b)q(e)j(connected)i (b)o(y)d(heterogeneous)j(net)o(w)o(orks.)26 b(Other)18 b(de-)1017 2351 y(sign)12 b(goals)f(include)h(e\016ciency)m(,)h(p)q (ortabilit)o(y)d(across)j(div)o(erse)1017 2401 y(systems,)j(and)f(supp) q(ort)h(for)f(in)o(terop)q(erabilit)o(y)f(of)h(di\013eren)o(t)1017 2451 y(compilers.)h(It)c(is)f(not)g(y)o(et)g(clear)h(to)f(what)g(exten) o(t)h(these)h(v)n(ar-)1017 2501 y(ious)g(goals)f(can)h(b)q(e)h (satis\014ed)f(in)g(a)f(single)h(run)o(time)f(system:)1017 2551 y(in)g(particular,)f(the)i(need)g(for)e(e\016ciency)i(ma)o(y)d (con\015ict)i(with)1017 2600 y(the)18 b(need)g(for)f(p)q(ortabilit)o(y) f(and)g(heterogeneit)o(y)m(.)29 b(Later)17 b(in)1017 2650 y(this)d(pap)q(er,)g(w)o(e)f(presen)o(t)i(some)e(preliminary)e(p)q (erformance)1017 2700 y(results)k(that)f(address)h(this)f(question.)p eop %%Page: 2 2 2 1 bop 5 117 a Fh(As)23 b(w)o(e)g(describ)q(e)h(in)f(this)g(pap)q(er,) i(Nexus)e(is)g(already)-45 166 y(in)j(use)h(as)g(a)f(compiler)g(target) h(for)f(t)o(w)o(o)g(task-parallel)-45 216 y(languages:)k(F)m(ortran)20 b(M)g([7)o(])f(\(FM\))i(and)f(Comp)q(ositional)-45 266 y(C)-15 262 y(++)64 266 y([3)o(])14 b(\(CC)198 262 y(++)263 266 y(\).)20 b(Our)15 b(initial)d(exp)q(eriences)17 b(ha)o(v)o(e)e(b)q (een)-45 316 y(gratifying)9 b(in)h(that)h(the)g(resulting)f(compilers)g (are)h(consider-)-45 366 y(ably)i(simpler)g(than)h(earlier)h(protot)o (yp)q(es)g(that)f(did)g(not)g(use)-45 415 y(Nexus)h(services.)5 465 y(Space)h(do)q(es)g(not)f(p)q(ermit)f(a)h(detailed)h(discussion)f (of)g(re-)-45 515 y(lated)k(w)o(ork.)33 b(Ho)o(w)o(ev)o(er,)21 b(w)o(e)e(note)g(that)h(the)f(Chan)o(t)g(sys-)-45 565 y(tem)14 b([9)o(])g(has)g(similar)e(design)j(goals)e(\(but)i(adopts)g (di\013eren)o(t)-45 615 y(solutions\).)-45 765 y Fg(2)56 b(Nexus)18 b(Design)g(and)h(Impleme)o(n)n(tation)5 857 y Fh(Before)g(describing)g(the)h(Nexus)f(in)o(terface)g(and)g(imple-) -45 907 y(men)o(tation,)c(w)o(e)h(review)h(the)g(requiremen)o(ts)g(and) f(assump-)-45 957 y(tions)e(that)g(motiv)n(ated)e(the)i(Nexus)h (design.)5 1006 y(Nexus)10 b(is)g(in)o(tended)g(as)f(a)g Fd(gener)n(al-purp)n(ose)i(runtime)g(sys-)-45 1056 y(tem)20 b Fh(for)g(task-parallel)f(languages.)36 b(While)19 b(it)h(curren)o (tly)-45 1106 y(con)o(tains)c(no)h(sp)q(ecialized)g(supp)q(ort)g(for)g (data)f(parallelism,)-45 1156 y(data-parallel)e(languages)h(suc)o(h)h (as)g(pC)591 1152 y(++)671 1156 y(and)f(HPF)h(can)-45 1206 y(in)10 b(principle)h(also)f(use)h(it)g(as)g(a)f(run)o(time)g(la)o (y)o(er.)16 b(Nexus)c(is)e(de-)-45 1255 y(signed)g(sp)q(eci\014cally)g (as)g(a)f Fd(c)n(ompiler)h(tar)n(get)p Fh(,)g(not)f(as)h(a)f(library) -45 1305 y(for)19 b(use)g(b)o(y)g(application)f(programmers.)31 b(Consequen)o(tly)m(,)-45 1355 y(the)14 b(design)h(fa)o(v)o(ors)e (e\016ciency)i(o)o(v)o(er)e(ease)i(of)f(use.)5 1405 y(W)m(e)k(b)q (eliev)o(e)h(that)g(the)g(future)g(of)f(parallel)f(computing)-45 1455 y(lies)i(in)h Fd(heter)n(o)n(gene)n(ous)g(envir)n(onments)g Fh(in)f(whic)o(h)h(div)o(erse)-45 1504 y(net)o(w)o(orks)14 b(and)g(comm)o(unications)d(proto)q(cols)j(in)o(terconnect)-45 1554 y(PCs,)23 b(w)o(orkstations,)e(small)e(shared-memory)g(mac)o (hines,)-45 1604 y(and)g(large-scale)h(parallel)e(computers.)34 b(W)m(e)19 b(also)g(exp)q(ect)-45 1654 y Fd(heter)n(o)n(gene)n(ous)24 b(applic)n(ations)g Fh(com)o(bining)d(di\013eren)o(t)j(pro-)-45 1704 y(grammi)o(ng)18 b(languages,)j(programming)c(paradigms,)j(and)-45 1754 y(algorithms)12 b(to)h(b)q(ecome)h(widespread.)5 1803 y(Nexus)19 b(abstractions)f(need)h(to)f(b)q(e)g(close)h(to)e(the)i (hard-)-45 1853 y(w)o(are,)14 b(in)g(order)g(to)g(pro)o(vide)g Fd(e\016ciency)h Fh(on)e(mac)o(hines)h(that)-45 1903 y(pro)o(vide)22 b(appropriate)h(lo)o(w-lev)o(el)e(supp)q(ort.)45 b(Op)q(erations)-45 1953 y(that)19 b(o)q(ccur)g(frequen)o(tly)g(in)f (task-parallel)f(computations,)-45 2003 y(suc)o(h)e(as)f(thread)h (creation,)f(thread)h(sc)o(heduling,)f(and)g(com-)-45 2052 y(m)o(unication,)c(need)j(to)f(b)q(e)h(particularly)f(fast.)17 b(A)o(t)c(the)g(same)-45 2102 y(time,)19 b(Nexus)h(abstractions)g(m)o (ust)e(b)q(e)i(easily)f(la)o(y)o(ered)g(on)-45 2152 y(top)14 b(of)g(existing)g(run)o(time)g(mec)o(hanisms,)e(so)i(as)h(to)f(pro)o (vide)-45 2202 y Fd(p)n(ortability)c Fh(to)h(mac)o(hines)g(that)g(do)g (not)h(supp)q(ort)g(Nexus)g(ab-)-45 2252 y(stractions)j(directly)m(.)k (Comm)o(uni)o(cation)11 b(mec)o(hanisms)i(that)-45 2301 y(w)o(ere)18 b(considered)h(in)d(designing)h(Nexus)h(include)f(message) -45 2351 y(passing,)e(shared)h(memory)m(,)11 b(distributed)16 b(shared)g(memory)m(,)-45 2401 y(and)e(message-driv)o(en)f (computation.)5 2451 y(Finally)m(,)19 b(Nexus)i(is)f(in)o(tended)h(to)e (b)q(e)i(a)f Fd(lingua)h(fr)n(anc)n(a)-45 2501 y Fh(for)14 b(compilers,)f(promoting)g(reuse)j(of)e(co)q(de)h(b)q(et)o(w)o(een)h (com-)-45 2551 y(piler)21 b(implemen)o(tation)d(as)k(w)o(ell)f(as)g Fd(inter)n(op)n(er)n(ability)f Fh(b)q(e-)-45 2600 y(t)o(w)o(een)15 b(co)q(de)f(generated)i(b)o(y)d(di\013eren)o(t)i(compilers.)5 2650 y(Imp)q(ortan)o(t)c(issues)i(purp)q(osefully)g(not)f(addressed)i (in)e(the)-45 2700 y(initial)17 b(design)j(include)f(reliabilit)o(y)e (and)i(fault)f(tolerance,)1017 117 y(real-time)i(issues,)k(global)19 b(resource)k(allo)q(cation,)e(replica-)1017 166 y(tion,)d(data)g(and)f (co)q(de)i(migration,)d(and)h(sc)o(heduling)h(p)q(oli-)1017 216 y(cies.)k(W)m(e)14 b(exp)q(ect)i(to)f(examine)e(these)j(issues)g (in)e(future)h(re-)1017 266 y(searc)o(h.)1017 370 y Fi(2.1)52 b(Core)17 b(Abstractions)1067 474 y Fh(The)d(Nexus)h(in)o(terface)f(is) g(organized)f(around)h(\014v)o(e)g(basic)1017 524 y(abstractions:)25 b(no)q(des,)17 b(con)o(texts,)i(threads,)f(global)d(p)q(oin)o(t-)1017 573 y(ers,)h(and)e(remote)g(service)i(requests.)23 b(The)15 b(asso)q(ciated)g(ser-)1017 623 y(vices)j(pro)o(vide)f(direct)i(supp)q (ort)f(for)f(ligh)o(t-w)o(eigh)o(t)e(thread-)1017 673 y(ing,)e(address)i(space)g(managemen)o(t,)c(comm)o(unication,)f(and) 1017 723 y(sync)o(hronization)16 b([8)o(].)24 b(A)16 b(computation)e(consists)j(of)e(a)h(set)1017 773 y(of)f Fd(thr)n(e)n(ads)p Fh(,)h(eac)o(h)g(executing)h(in)e(an)g(address)i (space)g(called)1017 822 y(a)c Fd(c)n(ontext)p Fh(.)19 b(An)13 b(individual)e(thread)j(executes)i(a)d(sequen)o(tial)1017 872 y(program,)e(whic)o(h)i(ma)o(y)d(read)j(and)g(write)g(data)f (shared)h(with)1017 922 y(other)k(threads)h(executing)f(in)f(the)h (same)f(con)o(text.)26 b(It)17 b(can)1017 972 y(also)j(generate)i (async)o(hronous)e Fd(r)n(emote)h(servic)n(e)f(r)n(e)n(quests)p Fh(,)1017 1022 y(whic)o(h)14 b(in)o(v)o(ok)o(e)f(pro)q(cedures)j(in)e (other)g(con)o(texts.)1017 1137 y Fc(No)q(des.)42 b Fh(The)11 b(most)f(basic)h(abstraction)g(in)f(Nexus)i(is)f(that)1017 1187 y(of)18 b(a)h Fd(no)n(de)p Fh(.)32 b(A)19 b(no)q(de)g(represen)o (ts)i(a)e(ph)o(ysical)f(pro)q(cessing)1017 1237 y(resource.)41 b(Consequen)o(tly)m(,)22 b(the)f(set)h(of)e(no)q(des)h(allo)q(cated) 1017 1287 y(b)o(y)16 b(a)g(program)f(determines)h(the)h(total)e(pro)q (cessing)j(p)q(o)o(w)o(er)1017 1336 y(a)o(v)n(ailable)8 b(to)i(that)g(computation.)15 b(When)c(a)f(program)e(using)1017 1386 y(Nexus)15 b(starts,)g(an)f(initial)e(set)j(of)f(no)q(des)h(is)f (created;)h(no)q(des)1017 1436 y(can)f(also)f(b)q(e)h(added)f(or)h (released)h(dynamically)l(.)g(Programs)1017 1486 y(do)e(not)h(execute)h (directly)f(on)f(a)g(no)q(de.)18 b(Rather,)13 b(as)h(w)o(e)f(will)1017 1536 y(discuss)k(b)q(elo)o(w,)e(computation)f(tak)o(es)i(place)f(in)h (a)f(con)o(text,)1017 1585 y(and)f(it)g(is)f(the)i(con)o(text)f(that)g (is)g(mapp)q(ed)f(to)h(a)f(no)q(de.)1067 1637 y(Nexus)g(pro)o(vides)f (a)g(set)h(of)f(routines)h(to)f(create)h(no)q(des)g(on)1017 1686 y(named)18 b(computational)e(resources,)22 b(suc)o(h)d(as)g(a)f (symmet-)1017 1736 y(ric)c(shared-memory)e(m)o(ultipro)q(cessor)h(or)g (a)g(pro)q(cessor)i(in)e(a)1017 1786 y(distributed-memory)g(computer.) 20 b(A)15 b(no)q(de)g(sp)q(eci\014es)i(only)1017 1836 y(a)11 b(computational)d(resource)13 b(and)e(do)q(es)h(not)e(imply)f (an)o(y)h(sp)q(e-)1017 1886 y(ci\014c)16 b(comm)o(unication)c(medium)h (or)i(proto)q(col.)22 b(This)16 b(nam-)1017 1936 y(ing)i(strategy)h(is) g(implemen)o(tatio)o(n)d(dep)q(enden)o(t;)22 b(ho)o(w)o(ev)o(er,)1017 1985 y(a)f(no)q(de)h(can)g(b)q(e)g(manipulated)d(in)i(an)h(implem)o(en) o(tation-)1017 2035 y(indep)q(enden)o(t)16 b(manner)d(once)h(created.) 1017 2151 y Fc(Con)o(texts.)41 b Fh(Computation)14 b(tak)o(es)i(place)g (within)g(an)f(ob-)1017 2200 y(ject)21 b(called)f(a)f Fd(c)n(ontext)p Fh(.)37 b(Eac)o(h)20 b(con)o(text)h(relates)g(an)e (exe-)1017 2250 y(cutable)j(co)q(de)g(and)f(one)h(or)f(more)g(data)g (segmen)o(ts)g(to)g(a)1017 2300 y(no)q(de.)32 b(Man)o(y)18 b(con)o(texts)i(can)f(b)q(e)g(mapp)q(ed)e(on)o(to)h(a)g(single)1017 2350 y(no)q(de.)34 b(Con)o(texts)19 b(cannot)g(b)q(e)h(migrated)d(b)q (et)o(w)o(een)j(no)q(des)1017 2400 y(once)15 b(created.)1067 2451 y(Con)o(texts)20 b(are)g(created)i(and)d(destro)o(y)o(ed)i (dynamically)l(.)1017 2501 y(W)m(e)c(an)o(ticipate)f(con)o(text)i (creation)f(o)q(ccurring)g(frequen)o(tly:)1017 2551 y(p)q(erhaps)22 b(ev)o(ery)g(sev)o(eral)g(thousand)f(instructions.)40 b(Con-)1017 2600 y(sequen)o(tly)m(,)27 b(con)o(text)f(creation)f (should)f(b)q(e)i(inexp)q(ensiv)o(e:)1017 2650 y(certainly)18 b(less)h(exp)q(ensiv)o(e)g(then)g(pro)q(cess)h(creation)e(under)1017 2700 y(Unix.)i(This)15 b(is)g(feasible)f(b)q(ecause)i(unlik)o(e)e(Unix) h(pro)q(cesses,)p eop %%Page: 3 3 3 2 bop -45 117 a Fh(con)o(texts)17 b(do)g(not)f(guaran)o(tee)h (protection.)26 b(W)m(e)16 b(note)h(that)-45 166 y(the)11 b(b)q(eha)o(vior)g(of)f(concurren)o(t)j(I/O)d(op)q(erations)i(within)e (con-)-45 216 y(texts)15 b(is)f(curren)o(tly)g(unde\014ned.)5 268 y(Compiler-de\014ned)9 b(initialization)e(co)q(de)k(is)f(executed)i (au-)-45 318 y(tomatically)c(b)o(y)i(Nexus)i(when)f(a)f(con)o(text)h (is)g(created.)18 b(Once)-45 367 y(initialization)10 b(is)k(complete,)e(a)h(con)o(text)h(is)f(inactiv)o(e)g(un)o(til)f(a)-45 417 y(thread)g(is)f(created)h(b)o(y)f(an)g(explicit)g(remote)g(service) h(request)-45 467 y(to)17 b(that)h(con)o(text.)30 b(The)18 b(creation)g(op)q(eration)g(is)f(sync)o(hro-)-45 517 y(nized)d(to)g(ensure)h(that)f(a)f(con)o(text)h(is)g(not)g(used)g(b)q (efore)g(it)g(is)-45 567 y(completely)e(initialized.)17 b(The)d(separation)f(of)g(con)o(text)i(cre-)-45 616 y(ation)e(and)h(co) q(de)g(execution)h(is)e(unique)h(to)g(Nexus)h(and)e(is)h(a)-45 666 y(direct)h(consequence)i(of)c(the)i(requiremen)o(ts)g(of)e(task)h (paral-)-45 716 y(lelism.)i(All)d(threads)h(of)f(con)o(trol)g(in)g(a)g (con)o(text)i(are)f(equiv)n(a-)-45 766 y(len)o(t,)f(and)h(all)f (computation)f(is)i(created)h(async)o(hronously)m(.)-45 883 y Fc(Threads.)41 b Fh(Computation)12 b(tak)o(es)k(place)f(in)f(one) i(or)f(more)-45 933 y Fd(thr)n(e)n(ads)h Fh(of)g(con)o(trol.)26 b(A)17 b(thread)g(of)f(con)o(trol)g(m)o(ust)g(b)q(e)h(cre-)-45 983 y(ated)h(within)e(a)h(con)o(text.)29 b(Nexus)18 b(distinguishes)f (b)q(et)o(w)o(een)-45 1033 y(t)o(w)o(o)h(t)o(yp)q(es)h(of)f(thread)h (creation:)27 b(within)17 b(the)i(same)f(con-)-45 1083 y(text)13 b(as)g(the)g(curren)o(tly)g(executing)h(thread)f(and)f(in)g (a)g(di\013er-)-45 1132 y(en)o(t)j(con)o(text)g(from)e(the)i(curren)o (tly)h(executing)f(thread.)21 b(W)m(e)-45 1182 y(discuss)15 b(thread)g(creation)f(b)q(et)o(w)o(een)h(con)o(texts)g(b)q(elo)o(w.)5 1234 y(Nexus)29 b(pro)o(vides)g(a)g(routine)g(for)f(creating)i(threads) -45 1284 y(within)14 b(the)g(con)o(text)i(of)d(the)i(curren)o(tly)g (executing)g(thread.)-45 1334 y(The)h(n)o(um)o(b)q(er)e(of)h(threads)i (that)e(can)h(b)q(e)f(created)i(within)e(a)-45 1383 y(con)o(text)c(is)g (limited)d(only)i(b)o(y)g(the)i(resources)g(a)o(v)n(ailable.)j(The)-45 1433 y(thread)i(routines)g(in)e(Nexus)i(are)g(mo)q(deled)e(after)h(a)g (subset)-45 1483 y(of)i(the)g(POSIX)h(thread)g(sp)q(eci\014cation)g ([10)o(].)30 b(The)18 b(op)q(era-)-45 1533 y(tions)13 b(supp)q(orted)i(include)e(thread)h(creation,)f(termination,)-45 1583 y(and)18 b(yielding)f(the)i(curren)o(t)h(thread.)32 b(Mutexes)19 b(and)g(con-)-45 1632 y(dition)13 b(v)n(ariables)g(are)h (also)f(pro)o(vided)h(for)g(sync)o(hronization)-45 1682 y(b)q(et)o(w)o(een)h(threads)g(within)e(a)h(con)o(text.)5 1734 y(Basing)g(Nexus)i(on)f(POSIX)g(threads)h(w)o(as)f(a)f(pragmatic) -45 1784 y(c)o(hoice:)j(b)q(ecause)c(most)d(v)o(endors)h(supp)q(ort)h (POSIX)g(threads)-45 1833 y(\(or)17 b(something)e(similar\),)g(it)h (allo)o(ws)f(Nexus)j(to)e(b)q(e)i(imple-)-45 1883 y(men)o(ted)g(using)f (v)o(endor-supplied)i(thread)f(libraries.)30 b(The)-45 1933 y(dra)o(wbac)o(k)21 b(to)g(this)f(approac)o(h)h(is)g(that)g(POSIX) h(w)o(as)e(de-)-45 1983 y(signed)15 b(as)g(an)f(application)f(program)h (in)o(terface,)h(with)f(fea-)-45 2033 y(tures)k(suc)o(h)f(as)f (real-time)f(sc)o(heduling)h(supp)q(ort)h(that)g(ma)o(y)-45 2083 y(add)11 b(o)o(v)o(erhead)g(for)f(parallel)g(systems.)17 b(A)11 b(lo)o(w)o(er-lev)o(el)f(in)o(ter-)-45 2132 y(face)16 b(designed)h(sp)q(eci\014cally)g(as)f(a)g(compiler)f(target)h(w)o(ould) -45 2182 y(most)g(lik)o(ely)f(result)j(in)e(b)q(etter)i(p)q(erformance) f([1)o(])g(and)f(will)-45 2232 y(b)q(e)f(in)o(v)o(estigated)e(in)h (future)g(researc)o(h.)5 2284 y(T)m(o)23 b(summarize,)h(the)h(mapping)d (of)h(computation)g(to)-45 2333 y(ph)o(ysical)17 b(pro)q(cessors)j(is)e (determined)g(b)o(y)f(b)q(oth)h(the)g(map-)-45 2383 y(ping)d(of)g (threads)h(to)g(con)o(texts)g(and)f(the)h(mapping)e(of)h(con-)-45 2433 y(texts)g(to)f(no)q(des.)k(The)d(relationship)e(b)q(et)o(w)o(een)i (no)q(des,)g(con-)-45 2483 y(texts,)f(and)g(threads)h(is)f(illustrated) f(in)h(Fig.)f(1.)-45 2600 y Fc(Global)32 b(P)o(oin)o(ters.)38 b Fh(Nexus)31 b(pro)o(vides)f(the)h(compiler)-45 2650 y(with)16 b(a)g(global)e(namespace,)i(b)o(y)g(allo)o(wing)e(a)h(global) g(name)-45 2700 y(to)g(b)q(e)g(created)i(for)d(an)o(y)h(address)h (within)e(a)h(con)o(text.)22 b(This)1082 523 y @beginspecial 61 @llx 564 @lly 461 @urx 731 @ury 2000 @rwi @setspecial %%BeginDocument: layers.eps %Version: 2.0 %Copyright: 1988, NeXT, Inc. /__NXdef{1 index where{pop pop pop}{def}ifelse}bind def /__NXbdef{1 index where{pop pop pop}{bind def}ifelse}bind def /UserObjects 10 array __NXdef /defineuserobject{ exch dup 1 add dup UserObjects length gt{ array dup 0 UserObjects putinterval /UserObjects exch def }{pop}ifelse UserObjects exch 3 -1 roll put }__NXbdef /undefineuserobject{UserObjects exch null put}__NXbdef /execuserobject{UserObjects exch get exec}__NXbdef /__NXRectPath{4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath}__NXbdef /__NXProcessRectArgs{ 1 index type /arraytype eq{ exch 0 4 2 index length 1 sub{ dup 3 add 1 exch{1 index exch get exch}for 5 1 roll 5 index exec }for pop pop }{exec}ifelse }__NXbdef /rectfill{gsave newpath {__NXRectPath fill} __NXProcessRectArgs grestore}__NXbdef /rectclip{newpath {__NXRectPath} __NXProcessRectArgs clip newpath}__NXbdef /rectstroke{ gsave newpath dup type /arraytype eq{dup length 6 eq}{false}ifelse{ {gsave __NXRectPath null concat stroke grestore} dup length array cvx copy dup 2 4 -1 roll put __NXProcessRectArgs }{{__NXRectPath stroke} __NXProcessRectArgs}ifelse grestore }__NXbdef /xyshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show 3 index 3 index 2 mul 1 add get add exch 3 index 3 index 2 mul get add exch moveto pop }for pop pop }__NXbdef /xshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show exch 3 index 3 index get add exch moveto pop }for pop pop }__NXbdef /yshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show 3 index 3 index get add moveto pop }for pop pop }__NXbdef /arct{arcto pop pop pop pop}__NXbdef /setbbox{pop pop pop pop}__NXbdef /ucache{}__NXbdef /ucachestatus{mark 0 0 0 0 0}__NXbdef /setucacheparams{cleartomark}__NXbdef /uappend{systemdict begin cvx exec end}__NXbdef /ueofill{gsave newpath uappend eofill grestore}__NXbdef /ufill{gsave newpath uappend fill grestore}__NXbdef /ustroke{ gsave newpath dup length 6 eq {exch uappend concat}{uappend}ifelse stroke grestore }__NXbdef /__NXustrokepathMatrix dup where {pop pop}{matrix def}ifelse /ustrokepath{ newpath dup length 6 eq{ exch uappend __NXustrokepathMatrix currentmatrix exch concat strokepath setmatrix }{uappend strokepath}ifelse } __NXbdef /upath{ [exch {/ucache cvx}if pathbbox /setbbox cvx {/moveto cvx}{/lineto cvx}{/curveto cvx}{/closepath cvx}pathforall]cvx } __NXbdef /setstrokeadjust{pop}__NXbdef /currentstrokeadjust{false}__NXbdef /selectfont{exch findfont exch dup type /arraytype eq {makefont}{scalefont}ifelse setfont}__NXbdef /_NXCombineArrays{ counttomark dup 2 add index dup length 3 -1 roll { 2 index length sub dup 4 1 roll 1 index exch 4 -1 roll putinterval exch }repeat pop pop pop }__NXbdef /setcmykcolor{ 1.0 exch sub dup dup 6 -1 roll sub dup 0 lt{pop 0}if 5 1 roll 4 -1 roll sub dup 0 lt{pop 0}if 3 1 roll exch sub dup 0 lt{pop 0}if setrgbcolor }__NXbdef /currentcmykcolor{currentrgbcolor 3{1.0 exch sub 3 1 roll}repeat 0}__NXbdef /flushgraphics{}def /setwindowtype{pop pop}def /currentwindowtype{pop 0}def /setalpha{pop}def /currentalpha{1.0}def /hidecursor{}def /obscurecursor{}def /revealcursor{}def /setcursor{4 {pop}repeat}bind def /showcursor{}def /NextStepEncoding where not{ /NextStepEncoding StandardEncoding 256 array copy def 0 [129/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/Ccedilla/Egrave /Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis /Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/Ugrave/Uacute /Ucircumflex/Udieresis/Yacute/Thorn/mu/multiply/divide/copyright 176/registered 181/brokenbar 190/logicalnot 192/onesuperior 201/twosuperior 204/threesuperior 209/plusminus/onequarter/onehalf/threequarters/agrave /aacute/acircumflex/atilde/adieresis/aring/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave 226/iacute 228/icircumflex/idieresis/eth /ntilde 236/ograve/oacute/ocircumflex/otilde/odieresis 242/ugrave/uacute /ucircumflex 246/udieresis/yacute 252/thorn/ydieresis] {dup type /nametype eq {NextStepEncoding 2 index 2 index put pop 1 add}{exch pop}ifelse }forall pop /NextStepEncoding NextStepEncoding readonly def /_NXfstr 128 string dup 0 (_NX) putinterval def /findfont{ % Because we can never let NextStepEncoding get into % SharedFontDirectory, we cannot reencode a font to NextStepEncoding % if we are in shared mode. So if currentshared is true, % we call the normal findfont and return that /currentshared where {pop currentshared} {false} ifelse {//findfont exec} {dup _NXfstr 3 125 getinterval cvs length 3 add _NXfstr 0 3 -1 roll getinterval cvn exch FontDirectory 2 index known {pop FontDirectory exch get} {//findfont exec dup /Encoding get StandardEncoding eq { dup length dict exch {1 index /FID ne {2 index 3 1 roll put}{pop pop}ifelse}forall dup /Encoding NextStepEncoding put definefont }{exch pop} ifelse }ifelse }ifelse }bind def }{pop}ifelse /_NXProcArray 5 array __NXdef /_NXChannels 0 __NXdef /_NXTotalBytes 0 __NXdef /_NXDoImageOp{ 1 index{dup}{1}ifelse /_NXChannels exch store _NXChannels 2 add 2 roll _NXProcArray 0 _NXChannels getinterval astore pop 5 index 4 index mul 2 index{1 sub 8 idiv 1 add mul}{mul 1 sub 8 idiv 1 add}ifelse 4 index mul /_NXTotalBytes exch store pop exch pop gsave matrix invertmatrix concat 0.5 setgray 0 0 4 2 roll rectfill grestore { 0 1 _NXChannels 1 sub{ _NXProcArray exch get exec length _NXTotalBytes exch sub /_NXTotalBytes exch store}for _NXTotalBytes 0 le{exit}if }loop /_NXProcArray 5 array def }__NXbdef /colorimage{_NXDoImageOp}__NXbdef /alphaimage{1 add _NXDoImageOp}def gsave -1 -9 translate /__NXbasematrix matrix currentmatrix def grestore /acsRect { moveto dup 0 exch rlineto exch 0 rlineto 0 exch neg rlineto closepath } def /oval { translate scale newpath 0.5 0.5 0.5 0 360 arc } def /ovalPath { 4 copy oval closepath neg exch neg exch 4 -1 roll 1 exch div 4 -1 roll 1 exch div scale translate } def /ff02 { oval gsave eofill grestore setgray matrix defaultmatrix setmatrix stroke } def /ffr2 { 4 copy rectfill 5 -1 roll setgray rectstroke } def /line { moveto rlineto stroke } def /SU { setmiterlimit setflat setlinewidth setlinecap setlinejoin gsave } def /arrow { newpath moveto dup rotate -10 3 rlineto 3 -3 rlineto -3 -3 rlineto closepath gsave 0 setlinejoin stroke grestore fill neg rotate } def /plainarrow { gsave /y2 exch def /x2 exch def /y1 exch def /x1 exch def /y0 exch def /x0 exch def newpath x0 y0 translate 0 0 moveto dup rotate x1 y1 lineto x2 y2 lineto x1 y1 neg lineto closepath gsave 0 setlinejoin stroke grestore fill grestore } def /frrb { /rad exch def /IV exch rad 2 mul sub def /IH exch rad 2 mul sub def 0.5 0.5 translate exch rad add exch moveto rad neg 0 rad neg 0 rad neg rad rcurveto 0 IV rlineto 0 rad 0 rad rad rad rcurveto IH 0 rlineto rad 0 rad 0 rad rad neg rcurveto 0 IV neg rlineto 0 rad neg 0 rad neg rad neg rad neg rcurveto closepath stroke -0.5 -0.5 translate } def /firb { /rad exch def /IV exch rad 2 mul sub def /IH exch rad 2 mul sub def 0.5 0.5 translate exch rad add exch moveto rad neg 0 rad neg 0 rad neg rad rcurveto 0 IV rlineto 0 rad 0 rad rad rad rcurveto IH 0 rlineto rad 0 rad 0 rad rad neg rcurveto 0 IV neg rlineto 0 rad neg 0 rad neg rad neg rad neg rcurveto closepath fill -0.5 -0.5 translate } def /rbp { /rad exch def /IV exch rad 2 mul sub def /IH exch rad 2 mul sub def exch rad add exch moveto rad neg 0 rad neg 0 rad neg rad rcurveto 0 IV rlineto 0 rad 0 rad rad rad rcurveto IH 0 rlineto rad 0 rad 0 rad rad neg rcurveto 0 IV neg rlineto 0 rad neg 0 rad neg rad neg rad neg rcurveto closepath } def /ffrb { 5 copy firb 6 -1 roll setgray frrb } def /rbox { /h exch def /w exch def h 2 div add exch w 2 div add exch translate rotate w 2 div neg h 2 div neg w h rectstroke } def /rboxfilled { /h exch def /w exch def h 2 div add exch w 2 div add exch translate rotate w 2 div neg h 2 div neg w h rectfill } def /rffb { 5 copy gsave rboxfilled grestore 6 -1 roll setgray rbox } def /roval { /h exch def /w exch def h 2 div add exch w 2 div add exch translate rotate w h w 2 div neg h 2 div neg gsave oval } def /rovalstroke { roval matrix defaultmatrix setmatrix stroke grestore } def /rovalfill { roval matrix defaultmatrix setmatrix fill grestore } def /rofs { 5 copy gsave rovalfill grestore 6 -1 roll setgray rovalstroke } def /flipH { 0 translate -1 1 scale } def /flipV { 0 exch translate 1 -1 scale } def /pathtextdict 28 dict def /pathtext { pathtextdict begin /offset exch def /str exch def /pathdist 0 def /setdist offset def /charcount 0 def gsave flattenpath { movetoproc } { linetoproc } { curvetoproc } { closepathproc } pathforall grestore newpath end } def pathtextdict begin /movetoproc { /newy exch def /newx exch def /firstx newx def /firsty newy def /ovr 0 def newx newy transform /cpy exch /cpx exch def } def /linetoproc { /oldx newx def /oldy newy def /newy exch def /newx exch def /dx newx oldx sub def /dy newy oldy sub def /dist dx dup mul dy dup mul add sqrt def dist 0 ne { /dsx dx dist div ovr mul def /dsy dy dist div ovr mul def oldx dsx add oldy dsy add transform /cpy exch def /cpx exch def /pathdist pathdist dist add def { getNextWidth setdist nextCharHalfWidth add pathdist le { charcount str length lt { setchar } { exit } ifelse } { /ovr setdist pathdist sub def exit } ifelse } loop } if } def /curvetoproc { (Error) print } def /closepathproc { firstx firsty linetoproc firstx firsty movetoproc } def /getNextWidth { charcount 1 add str length lt { /nextCharHalfWidth str charcount 1 add 1 getinterval stringwidth pop 2 div def } if } def /setchar { /char str charcount 1 getinterval def /charcount charcount 1 add def /charwidth char stringwidth pop def gsave cpx cpy itransform translate dy dx atan rotate 0 0 moveto char show currentpoint transform /cpy exch def /cpx exch def grestore /setdist setdist charwidth add def } def end /c /curveto load def /l /lineto load def /m /moveto load def /s /stroke load def /f /fill load def /S /scale load def /R /rotate load def /T /translate load def /L /setlinewidth load def /N /newpath load def /C /closepath load def 61 564 400 167 rectclip 61 564 400 167 rectclip 0 setgray 0 0 0.15 1 10 SU gsave 62 566 T 0 0 0.15 1 10 SU gsave /Times-Roman findfont 24 scalefont [1 0 0 -1 0 0] makefont 69 exch defineuserobject 69 execuserobject setfont 18 10 T 19 flipV 70.5 9.5 T -69.5 8 T N 0 0 m 0 setgray 0 0 m (N O D E) show 0 0 T grestore grestore 0 0 0.15 1 10 SU 1 1 T 36 flipV 85.5 18 T 1 0.666667 S -85.5 -27 T N 0.15 L 0 setgray 0 0 171 54 rectstroke 0 0 T grestore grestore grestore 0 setgray 0 0 0.15 1 10 SU gsave 286 566 T 0 0 0.15 1 10 SU gsave 69 execuserobject setfont 18 10 T 19 flipV 70.5 9.5 T -69.5 8 T N 0 0 m 0 setgray 0 0 m (N O D E) show 0 0 T grestore grestore 0 0 0.15 1 10 SU 1 1 T 36 flipV 85.5 18 T 1 0.666667 S -85.5 -27 T N 0.15 L 0 setgray 0 0 171 54 rectstroke 0 0 T grestore grestore grestore 0 0 0.15 1 10 SU 69 641 T [1 0 0 -1 0 15] concat gsave /Times-Roman findfont 18 scalefont [1 0 0 -1 0 0] makefont 216 exch defineuserobject 216 execuserobject setfont 30 7.5 T -29 6 T N 0 0 m 0 setgray 0 0 m (Context) show 0 0 T grestore grestore 0 0 0.15 1 10 SU 63 630 T [1 0 0 -1 0 36] concat 35.5 18 T 1.570909 0.8 S -22.5 -22.5 T N 0.15 L 0 setgray 0 0 45 45 rectstroke 0 0 T grestore 0 0 0.15 1 10 SU 162 630 T [1 0 0 -1 0 36] concat 35.5 18 T 1.570909 0.8 S -22.5 -22.5 T N 0.15 L 0 setgray 0 0 45 45 rectstroke 0 0 T grestore 0 0 0.15 1 10 SU 332 630 T [1 0 0 -1 0 36] concat 40.5 18 T 1.792164 0.8 S -22.5 -22.5 T N 0.15 L 0 setgray 0 0 45 45 rectstroke 0 0 T grestore 0 setgray 0 0 0.15 1 10 SU gsave 107 692 T 0 0 0.15 1 10 SU gsave 69 execuserobject setfont 7 10 T 18 flipV 8.5 9 T -7.5 8 T N 0 0 m 0 setgray 0 0 m (T) show 0 0 T grestore grestore 0 0 0.15 1 10 SU 1 1 T 36 flipV 13.5 18 T 0.75 1 S -18 -18 T N 0.15 L 0 setgray 0 0 36 36 rectstroke 0 0 T grestore grestore grestore 0 setgray 0 0 0.15 1 10 SU gsave 62 692 T 0 0 0.15 1 10 SU gsave 69 execuserobject setfont 7 10 T 18 flipV 8.5 9 T -7.5 8 T N 0 0 m 0 setgray 0 0 m (T) show 0 0 T grestore grestore 0 0 0.15 1 10 SU 1 1 T 36 flipV 13.5 18 T 0.75 1 S -18 -18 T N 0.15 L 0 setgray 0 0 36 36 rectstroke 0 0 T grestore grestore grestore 0 setgray 0 0 0.15 1 10 SU gsave 183 692 T 0 0 0.15 1 10 SU gsave 69 execuserobject setfont 7 10 T 18 flipV 8.5 9 T -7.5 8 T N 0 0 m 0 setgray 0 0 m (T) show 0 0 T grestore grestore 0 0 0.15 1 10 SU 1 1 T 36 flipV 13.5 18 T 0.75 1 S -18 -18 T N 0.15 L 0 setgray 0 0 36 36 rectstroke 0 0 T grestore grestore grestore 0 setgray 0 0 0.15 1 10 SU gsave 304 692 T 0 0 0.15 1 10 SU gsave 69 execuserobject setfont 7 10 T 18 flipV 8.5 9 T -7.5 8 T N 0 0 m 0 setgray 0 0 m (T) show 0 0 T grestore grestore 0 0 0.15 1 10 SU 1 1 T 36 flipV 13.5 18 T 0.75 1 S -18 -18 T N 0.15 L 0 setgray 0 0 36 36 rectstroke 0 0 T grestore grestore grestore 0 setgray 0 0 0.15 1 10 SU gsave 340 692 T 0 0 0.15 1 10 SU gsave 69 execuserobject setfont 7 10 T 18 flipV 8.5 9 T -7.5 8 T N 0 0 m 0 setgray 0 0 m (T) show 0 0 T grestore grestore 0 0 0.15 1 10 SU 1 1 T 36 flipV 13.5 18 T 0.75 1 S -18 -18 T N 0.15 L 0 setgray 0 0 36 36 rectstroke 0 0 T grestore grestore grestore 0 setgray 0 0 0.15 1 10 SU gsave 376 692 T 0 0 0.15 1 10 SU gsave 69 execuserobject setfont 7 10 T 18 flipV 8.5 9 T -7.5 8 T N 0 0 m 0 setgray 0 0 m (T) show 0 0 T grestore grestore 0 0 0.15 1 10 SU 1 1 T 36 flipV 13.5 18 T 0.75 1 S -18 -18 T N 0.15 L 0 setgray 0 0 36 36 rectstroke 0 0 T grestore grestore grestore 0 setgray 0 0 0.15 1 10 SU gsave 412 692 T 0 0 0.15 1 10 SU gsave 69 execuserobject setfont 7 10 T 18 flipV 8.5 9 T -7.5 8 T N 0 0 m 0 setgray 0 0 m (T) show 0 0 T grestore grestore 0 0 0.15 1 10 SU 1 1 T 36 flipV 13.5 18 T 0.75 1 S -18 -18 T N 0.15 L 0 setgray 0 0 36 36 rectstroke 0 0 T grestore grestore grestore 0 0 0.15 1 10 SU 99 606 T N 2 L 0 setgray 0 22 0 0 line -90 0 0 arrow 0 0 T grestore 0 0 0.15 1 10 SU 198 606 T N 2 L 0 setgray 0 22 0 0 line -90 0 0 arrow 0 0 T grestore 0 0 0.15 1 10 SU 373 606 T N 2 L 0 setgray 0 22 0 0 line -90 0 0 arrow 0 0 T grestore 0 0 0.15 1 10 SU 77 669 T N 2 L 0 setgray 0 22 0 0 line -90 0 0 arrow 0 0 T grestore 0 0 0.15 1 10 SU 122 669 T N 2 L 0 setgray 0 22 0 0 line -90 0 0 arrow 0 0 T grestore 0 0 0.15 1 10 SU 198 669 T N 2 L 0 setgray 0 22 0 0 line -90 0 0 arrow 0 0 T grestore 0 0 0.15 1 10 SU 355 669 T N 2 L 0 setgray 0 22 0 0 line -90 0 0 arrow 0 0 T grestore 0 0 0.15 1 10 SU 391 669 T N 2 L 0 setgray 0 22 0 0 line -90 0 0 arrow 0 0 T grestore 0 0 0.15 1 10 SU 407 668 T N 2 L 0 setgray 19 24 0 0 line 231.634033 0 0 arrow 0 0 T grestore 0 0 0.15 1 10 SU 319 667 T 19 flipH N 2 L 0 setgray 19 24 0 0 line 231.634033 0 0 arrow 0 0 T grestore 0 0 0.15 1 10 SU 168 641 T [1 0 0 -1 0 15] concat gsave 216 execuserobject setfont 30 7.5 T -29 6 T N 0 0 m 0 setgray 0 0 m (Context) show 0 0 T grestore grestore 0 0 0.15 1 10 SU 342 641 T [1 0 0 -1 0 15] concat gsave 216 execuserobject setfont 30 7.5 T -29 6 T N 0 0 m 0 setgray 0 0 m (Context) show 0 0 T grestore grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat grestore %%EndDocument @endspecial 1136 615 a(Figure)14 b(1:)k Fd(No)n(des,)d(Contexts,)g (and)g(Thr)n(e)n(ads)1017 766 y Fh(name)f(is)h(called)g(a)g Fd(glob)n(al)h(p)n(ointer)p Fh(.)22 b(A)15 b(global)e(p)q(oin)o(ter)j (can)1017 816 y(b)q(e)c(mo)o(v)o(ed)d(b)q(et)o(w)o(een)j(con)o(texts,)g (th)o(us)g(pro)o(viding)d(for)i(a)f(mo)o(v-)1017 865 y(able)15 b(in)o(tercon)o(text)h(reference.)24 b(Global)13 b(p)q(oin)o(ters)j(are)f(used)1017 915 y(in)h(conjunction)f(with)g (remote)h(service)h(requests)g(to)f(cause)1017 965 y(actions)f(to)g (tak)o(e)g(place)g(on)g(a)g(di\013eren)o(t)h(con)o(text.)22 b(The)15 b(use)1017 1015 y(of)c(global)e(p)q(oin)o(ters)j(w)o(as)f (motiv)n(ated)f(b)o(y)h(the)g(follo)o(wing)e(con-)1017 1065 y(siderations.)1059 1156 y Fk(\017)20 b Fh(While)12 b(the)g(data-parallel)f(programming)e(mo)q(del)h(nat-)1100 1206 y(urally)h(asso)q(ciates)i(comm)o(unication)8 b(with)k(the)g (section)1100 1256 y(of)18 b(co)q(de)i(that)e(generates)i(or)f (consumes)f(data,)h(task-)1100 1305 y(parallel)c(programs)g(need)h(to)g (asso)q(ciate)g(the)h(comm)o(u-)1100 1355 y(nication)e(with)h(a)g(sp)q (eci\014c)h(data)f(structure)i(or)e(a)f(sp)q(e-)1100 1405 y(ci\014c)d(piece)g(of)e(co)q(de.)18 b(A)11 b(global)f(namespace)h (facilitates)1100 1455 y(this.)1059 1538 y Fk(\017)20 b Fh(Dynamic)c(b)q(eha)o(viors)i(are)g(the)g(rule)g(in)f(task-parallel) 1100 1588 y(computation.)f(References)f(to)d(data)g(structures)j(need) 1100 1637 y(to)f(b)q(e)h(passed)f(b)q(et)o(w)o(een)i(con)o(texts.)1059 1720 y Fk(\017)k Fh(Data)i(structures)k(other)d(than)f(arra)o(ys)h (need)h(to)e(b)q(e)1100 1770 y(supp)q(orted.)k(A)16 b(general)h(global) d(p)q(oin)o(ter)i(mec)o(hanism)1100 1820 y(facilitates)21 b(construction)i(of)e(complex,)h(distributed)1100 1870 y(data)14 b(structures.)1059 1953 y Fk(\017)20 b Fh(Distributed-memory) 12 b(computers)i(are)h(b)q(eginning)e(to)1100 2003 y(pro)o(vide)26 b(direct)h(hardw)o(are)f(supp)q(ort)h(for)f(a)g(global)1100 2053 y(shared)e(namespace.)43 b(W)m(e)21 b(w)o(an)o(ted)i(to)f (re\015ect)i(this)1100 2102 y(trend)15 b(in)f(Nexus.)1067 2194 y(Global)20 b(p)q(oin)o(ters)j(can)f(b)q(e)g(used)h(to)f(implemen) o(t)d(data)1017 2243 y(structures)i(other)d(than)g(C)g(p)q(oin)o(ters.) 31 b(F)m(or)17 b(example,)g(the)1017 2293 y(FM)d(compiler)f(uses)i (them)e(to)h(implem)o(en)o(t)e(c)o(hannels.)1017 2401 y Fc(Remote)i(Service)f(Requests.)40 b Fh(A)13 b(thread)g(can)g (request)1017 2451 y(that)k(an)f(action)g(b)q(e)h(p)q(erformed)f(in)g (a)g(remote)g(con)o(text)h(b)o(y)1017 2501 y(issuing)c(a)h Fd(r)n(emote)g(servic)n(e)g(r)n(e)n(quest)p Fh(.)j(A)d(remote)f (service)h(re-)1017 2551 y(quest)20 b(results)g(in)e(the)h(execution)g (of)f(a)h(sp)q(ecial)g(function,)1017 2600 y(called)12 b(a)f Fd(hand)r(ler)p Fh(,)h(in)g(the)g(con)o(text)h(p)q(oin)o(ted)f (to)f(b)o(y)h(a)g(global)1017 2650 y(p)q(oin)o(ter.)38 b(The)20 b(handler)h(is)f(in)o(v)o(ok)o(ed)f(async)o(hronously)h(in) 1017 2700 y(that)d(con)o(text;)g(no)g(action,)f(suc)o(h)h(as)f (executing)h(a)f(receiv)o(e,)p eop %%Page: 4 4 4 3 bop -45 117 a Fh(needs)21 b(to)e(tak)o(e)h(place)g(in)f(the)h(con)o (text)g(in)f(order)i(for)e(the)-45 166 y(handler)e(to)g(execute.)30 b(A)17 b(remote)g(service)h(request)h(is)e(not)-45 216 y(a)c(remote)f(pro)q(cedure)j(call,)d(b)q(ecause)i(there)g(is)f(no)g (ac)o(kno)o(wl-)-45 266 y(edgemen)o(t)d(or)f(return)j(v)n(alue)d(from)f (the)i(call,)g(and)f(the)i(thread)-45 316 y(that)j(initiated)f(the)h (request)i(do)q(es)f(not)e(blo)q(c)o(k.)5 366 y(Remote)21 b(service)i(requests)h(are)f(similar)c(in)j(some)f(re-)-45 415 y(sp)q(ects)h(to)f(activ)o(e)f(messages)h([11)o(].)37 b(They)20 b(also)g(di\013er)h(in)-45 465 y(signi\014can)o(t)g(w)o(a)o (ys,)h(ho)o(w)o(ev)o(er.)41 b(Because)23 b(activ)o(e)e(message)-45 515 y(handlers)16 b(are)f(designed)h(to)f(execute)i(within)e(an)g(in)o (terrupt)-45 565 y(handler,)j(there)g(are)g(restrictions)g(on)f(the)h (w)o(a)o(ys)f(in)g(whic)o(h)-45 615 y(they)f(can)f(mo)q(dify)e(the)j (en)o(vironmen)o(t)f(of)g(a)g(no)q(de.)23 b(F)m(or)14 b(ex-)-45 664 y(ample,)h(they)i(cannot)f(call)g(memory)e(allo)q(cation) h(routines.)-45 714 y(While)g(these)i(restrictions)g(do)e(not)h(hinder) g(the)g(use)h(of)e(ac-)-45 764 y(tiv)o(e)c(messages)h(for)f(data)g (transfer,)h(they)g(limit)c(their)k(utilit)o(y)-45 814 y(as)17 b(a)g(mec)o(hanism)e(for)i(creating)g(general)h(threads)g(of)f (con-)-45 864 y(trol.)34 b(In)19 b(con)o(trast,)i(remote)e(service)i (requests)g(are)f(more)-45 914 y(exp)q(ensiv)o(e)15 b(but)g(less)f (restrictiv)o(e.)20 b(In)14 b(particular,)g(they)g(can)-45 963 y(create)19 b(threads)f(of)f(con)o(trol,)g(and)g(t)o(w)o(o)g(or)g (more)f(handlers)-45 1013 y(can)e(execute)i(concurren)o(tly)m(.)5 1063 y(During)10 b(a)g(remote)g(service)i(request,)h(data)d(can)h(b)q (e)g(trans-)-45 1113 y(ferred)16 b(b)q(et)o(w)o(een)h(con)o(texts)f(b)o (y)f(the)h(use)g(of)e(a)h Fd(bu\013er)p Fh(.)22 b(Data)-45 1163 y(is)c(inserted)i(in)o(to)e(a)h(bu\013er)g(and)g(remo)o(v)o(ed)e (from)g(a)i(bu\013er)-45 1212 y(through)e(the)g(use)g(of)f(pac)o(king)g (and)h(unpac)o(king)f(functions)-45 1262 y(similar)9 b(to)j(those)h(found)e(in)g(PVM)i(and)e(MPI)h([5,)f(6].)17 b(In)o(v)o(ok-)-45 1312 y(ing)c(a)h(remote)f(service)j(request)f(is)f (a)f(three-step)j(pro)q(cess:)-15 1383 y(1.)k(The)c(remote)f(service)i (request)g(is)e(initialized)f(b)o(y)i(pro-)38 1433 y(viding)10 b(a)h(global)f(p)q(oin)o(ter)i(to)f(an)g(address)i(in)e(the)h(desti-)38 1483 y(nation)i(con)o(text)h(and)g(the)g(iden)o(ti\014er)g(for)f(the)i (handler)38 1533 y(in)d(the)i(remote)e(con)o(text.)19 b(A)14 b(bu\013er)g(is)g(returned)h(from)38 1582 y(the)g (initialization)c(op)q(eration.)-15 1657 y(2.)20 b(Data)10 b(to)g(b)q(e)h(passed)h(to)e(the)h(remote)f(handler)h(is)f(placed)38 1707 y(in)o(to)g(the)h(bu\013er.)17 b(The)11 b(bu\013er)g(uses)h(the)f (global)d(p)q(oin)o(ter)38 1757 y(pro)o(vided)i(at)g(initialization)e (to)i(determine)g(if)f(an)o(y)h(data)38 1807 y(con)o(v)o(ersion)k(or)g (enco)q(ding)g(is)g(required.)-15 1882 y(3.)20 b(The)25 b(remote)e(service)j(request)f(is)f(p)q(erformed.)49 b(In)38 1932 y(p)q(erforming)20 b(the)i(request,)i(Nexus)f(uses)f(the)g (global)38 1981 y(p)q(oin)o(ter)h(pro)o(vided)f(at)g(initialization)e (to)i(determine)38 2031 y(what)f(comm)o(unication)d(proto)q(cols)j(can) g(b)q(e)h(used)g(to)38 2081 y(comm)o(unicate)17 b(with)i(the)g(no)q(de) h(on)f(whic)o(h)g(the)h(con-)38 2131 y(text)15 b(resides.)5 2202 y(The)h(handler)h(is)f(in)o(v)o(ok)o(ed)f(in)h(the)h(destination)f (con)o(text)-45 2252 y(with)10 b(the)g(lo)q(cal)f(address)i(comp)q (onen)o(t)e(of)h(the)g(global)e(p)q(oin)o(ter)-45 2301 y(and)h(the)h(message)f(bu\013er)h(as)g(argumen)o(ts.)15 b(In)10 b(the)f(most)g(gen-)-45 2351 y(eral)15 b(form)e(of)h(remote)g (service)i(request,)g(the)f(handler)g(runs)-45 2401 y(in)c(a)h(new)g (thread.)18 b(Ho)o(w)o(ev)o(er,)12 b(a)f(compiler)f(can)i(also)f(sp)q (ecify)-45 2451 y(that)k(a)g(handler)h(is)f(to)g(execute)i(in)e(a)f (preallo)q(cated)i(thread)-45 2501 y(if)g(it)g(kno)o(ws)g(that)g(that)h (handler)f(will)f(terminate)h(without)-45 2551 y(susp)q(ending.)29 b(This)17 b(a)o(v)o(oids)f(the)i(need)g(to)g(allo)q(cate)e(a)h(new)-45 2600 y(thread;)e(in)g(addition,)e(if)h(a)g(parallel)g(computer)g (system)h(al-)-45 2650 y(lo)o(ws)c(handlers)i(to)e(read)i(directly)f (from)e(the)i(message)g(in)o(ter-)-45 2700 y(face,)17 b(it)f(a)o(v)o(oids)g(the)h(cop)o(ying)e(to)i(an)f(in)o(termediate)g (bu\013er)1017 117 y(that)e(w)o(ould)e(otherwise)i(b)q(e)g(necessary)h (for)e(thread-safe)h(ex-)1017 166 y(ecution.)27 b(As)18 b(an)e(example,)g(a)h(handler)g(that)f(implemen)o(ts)1017 216 y(the)j(get)f(and)f(put)h(op)q(erations)h(found)e(in)g(Split-C)g ([4)o(])h(can)1017 266 y(tak)o(e)c(adv)n(an)o(tage)f(of)h(this)g (optimization.)1017 362 y Fi(2.2)52 b(Implemen)o(tation)1067 458 y Fh(In)18 b(order)g(to)g(supp)q(ort)g(heterogeneit)o(y)m(,)h(the)f (Nexus)h(im-)1017 508 y(plemen)o(tation)9 b(encapsulates)i(thread)g (and)e(comm)o(unication)1017 558 y(functions)24 b(in)f(thread)h(and)f (proto)q(col)h(mo)q(dules,)g(resp)q(ec-)1017 608 y(tiv)o(ely)m(,)c (that)g(implemen)o(t)d(a)j(standard)h(in)o(terface)f(to)g(lo)o(w-)1017 658 y(lev)o(el)e(mec)o(hanisms)e(\(Fig.)h(2\).)31 b(Curren)o(t)19 b(thread)g(mo)q(dules)1017 707 y(include)12 b(POSIX)g(threads,)g(DCE)f (threads,)i(C)e(threads,)h(and)1017 757 y(Solaris)g(threads.)19 b(Curren)o(t)14 b(proto)q(col)e(mo)q(dules)g(include)h(lo-)1017 807 y(cal)19 b(\(in)o(tracon)o(text\))g(comm)o(unicati)o(on,)d(TCP)j (so)q(c)o(k)o(et,)h(and)1017 857 y(In)o(tel)27 b(NX)f(message-passing.) 55 b(Proto)q(col)27 b(mo)q(dules)e(for)1017 907 y(MPI,)c(PVM,)f(SVR4)g (shared)h(memory)m(,)e(Fib)q(er)i(Channel,)1017 957 y(IBM's)k(EUI)f (message-passing)f(library)m(,)i(AAL-5)f(\(A)m(TM)1017 1006 y(Adaptation)10 b(La)o(y)o(er)h(5\))f(for)h(Async)o(hronous)h(T)m (ransfer)f(Mo)q(de)1017 1056 y(\(A)m(TM\),)16 b(and)g(the)g(Cra)o(y)g (T3D's)f(get)i(and)e(put)i(op)q(erations)1017 1106 y(are)e(planned)e (or)h(under)h(dev)o(elopmen)o(t.)1067 1156 y(More)h(than)g(one)g(comm)o (unicatio)o(n)d(mec)o(hanism)g(can)j(b)q(e)1017 1206 y(used)k(within)d(a)i(single)f(program.)30 b(F)m(or)18 b(example,)g(a)g(con-)1017 1255 y(text)13 b Fd(A)e Fh(migh)o(t)f(comm)o (unicate)f(with)j(con)o(texts)h Fd(B)f Fh(and)f Fd(C)h Fh(us-)1017 1305 y(ing)f(t)o(w)o(o)g(di\013eren)o(t)i(comm)o(unicatio)o (n)c(mec)o(hanisms)h(if)g Fd(B)i Fh(and)1017 1355 y Fd(C)17 b Fh(are)g(lo)q(cated)g(on)g(di\013eren)o(t)h(no)q(des.)28 b(This)17 b(functionalit)o(y)1017 1405 y(is)g(supp)q(orted)h(as)f (follo)o(ws.)25 b(When)17 b(a)g(proto)q(col)g(mo)q(dule)e(is)1017 1455 y(initialized,)e(it)h(creates)i(a)e(table)g(con)o(taining)f(the)i (functions)1017 1504 y(that)d(implemen)o(t)c(the)k(lo)o(w-lev)o(el)e (in)o(terface)i(and)f(a)h(small)d(de-)1017 1554 y(scriptor)14 b(that)e(sp)q(eci\014es)j(ho)o(w)d(this)g(proto)q(col)h(is)f(to)g(b)q (e)i(used.)1017 1604 y(\(Proto)q(col)h(descriptors)i(are)e(small)e(ob)r (jects:)21 b(t)o(ypically)14 b(4-5)1017 1654 y(w)o(ords,)20 b(dep)q(ending)f(on)g(the)g(proto)q(col.\))32 b(When)19 b(a)g(global)1017 1704 y(p)q(oin)o(ter)12 b(is)g(created)h(in)e(a)h (con)o(text,)g(a)g(list)f(of)g(descriptors)i(for)1017 1754 y(the)20 b(proto)q(cols)e(supp)q(orted)i(b)o(y)f(this)f(con)o (text)i(is)e(attac)o(hed)1017 1803 y(to)e(the)g(global)f(p)q(oin)o (ter.)24 b(The)16 b(proto)q(col)g(descriptor)h(list)e(is)1017 1853 y(part)10 b(of)g(the)g(global)e(p)q(oin)o(ter)i(and)g(is)g(passed) h(with)e(the)i(global)1017 1903 y(p)q(oin)o(ter)18 b(whenev)o(er)h(it)d (is)i(transferred)h(b)q(et)o(w)o(een)f(con)o(texts.)1017 1953 y(A)d(recipien)o(t)g(of)e(a)h(global)f(p)q(oin)o(ter)i(can)f (compare)g(this)g(pro-)1017 2003 y(to)q(col)d(list)f(with)g(its)g(lo)q (cal)g(proto)q(cols)h(to)f(determine)h(the)g(b)q(est)1017 2052 y(proto)q(col)17 b(to)h(use)g(when)f(comm)o(unicating)d(on)j(that) h(global)1017 2102 y(p)q(oin)o(ter.)1067 2152 y(Although)i(some)g (existing)g(message-passing)g(systems)1017 2202 y(supp)q(ort)j(limited) d(net)o(w)o(ork)j(heterogeneit)o(y)m(,)h(none)f(do)f(so)1017 2252 y(with)f(the)g(same)e(generalit)o(y)m(.)38 b(F)m(or)20 b(example,)g(PVM3)h(al-)1017 2301 y(lo)o(ws)d(pro)q(cessors)i(in)d(a)h (parallel)f(computer)g(to)h(comm)o(uni-)1017 2351 y(cate)d(with)e (external)h(computers)g(b)o(y)f(sending)h(messages)g(to)1017 2401 y(the)e Fb(pvmd)f Fh(daemon)f(pro)q(cess)j(whic)o(h)f(acts)g(as)f (a)g(message)g(for-)1017 2451 y(w)o(arder)k([5)o(].)j(Ho)o(w)o(ev)o (er,)c(this)g(approac)o(h)g(is)g(not)g(optimal)d(on)1017 2501 y(mac)o(hines)g(suc)o(h)g(as)h(the)f(IBM)h(SP1)f(and)g(the)h(In)o (tel)f(P)o(aragon,)1017 2551 y(whose)j(no)q(des)g(are)f(able)g(to)g (supp)q(ort)h(TCP)f(directly)m(,)f(and)h(it)1017 2600 y(limits)k(PVM)i(programs)e(to)i(using)f(just)h(one)g(proto)q(col)f(in) 1017 2650 y(addition)11 b(to)h(TCP)m(.)f(P4)g(has)h(sev)o(eral)g(sp)q (ecial)g(m)o(ultiproto)q(col)1017 2700 y(implemen)o(tations,)k(suc)o(h) k(as)e(a)h(v)o(ersion)f(for)g(the)i(P)o(aragon)p eop %%Page: 5 5 5 4 bop 381 557 a @beginspecial 25 @llx 492 @lly 588 @urx 695 @ury 2814 @rwi @setspecial %%BeginDocument: nexus_structure.eps % NeXT Printing Package % Version: 3.1 % Copyright: 1988, NeXT, Inc. /__NXdef{1 index where{pop pop pop}{def}ifelse}bind def /__NXbdef{1 index where{pop pop pop}{bind def}ifelse}bind def /UserObjects 10 array __NXdef /defineuserobject{ exch dup 1 add dup UserObjects length gt{ array dup 0 UserObjects putinterval /UserObjects exch def }{pop}ifelse UserObjects exch 3 -1 roll put }__NXbdef /undefineuserobject{UserObjects exch null put}__NXbdef /execuserobject{UserObjects exch get exec}__NXbdef /__NXRectPath{4 2 roll moveto 1 index 0 rlineto 0 exch rlineto neg 0 rlineto closepath}__NXbdef /__NXProcessRectArgs{ 1 index type /arraytype eq{ exch 0 4 2 index length 1 sub{ dup 3 add 1 exch{1 index exch get exch}for 5 1 roll 5 index exec }for pop pop }{exec}ifelse }__NXbdef /rectfill{gsave newpath {__NXRectPath fill} __NXProcessRectArgs grestore}__NXbdef /rectclip{newpath {__NXRectPath} __NXProcessRectArgs clip newpath}__NXbdef /rectstroke{ gsave newpath dup type /arraytype eq{dup length 6 eq}{false}ifelse{ {gsave __NXRectPath null concat stroke grestore} dup length array cvx copy dup 2 4 -1 roll put __NXProcessRectArgs }{{__NXRectPath stroke} __NXProcessRectArgs}ifelse grestore }__NXbdef /_NXLevel2 systemdict /languagelevel known {languagelevel 2 ge}{false}ifelse __NXdef /xyshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show 3 index 3 index 2 mul 1 add get add exch 3 index 3 index 2 mul get add exch moveto pop }for pop pop }__NXbdef /xshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show exch 3 index 3 index get add exch moveto pop }for pop pop }__NXbdef /yshow{ 0 1 3 index length 1 sub{ currentpoint 4 index 3 index 1 getinterval show 3 index 3 index get add moveto pop }for pop pop }__NXbdef /arct{arcto pop pop pop pop}__NXbdef /setbbox{pop pop pop pop}__NXbdef /ucache{}__NXbdef /ucachestatus{mark 0 0 0 0 0}__NXbdef /setucacheparams{cleartomark}__NXbdef /uappend{systemdict begin cvx exec end}__NXbdef /ueofill{gsave newpath uappend eofill grestore}__NXbdef /ufill{gsave newpath uappend fill grestore}__NXbdef /ustroke{ gsave newpath dup length 6 eq {exch uappend concat}{uappend}ifelse stroke grestore }__NXbdef /__NXustrokepathMatrix dup where {pop pop}{matrix def}ifelse /ustrokepath{ newpath dup length 6 eq{ exch uappend __NXustrokepathMatrix currentmatrix exch concat strokepath setmatrix }{uappend strokepath}ifelse } __NXbdef /upath{ [exch {/ucache cvx}if pathbbox /setbbox cvx {/moveto cvx}{/lineto cvx}{/curveto cvx}{/closepath cvx}pathforall]cvx } __NXbdef /setstrokeadjust{pop}__NXbdef /currentstrokeadjust{false}__NXbdef /selectfont{exch findfont exch dup type /arraytype eq {makefont}{scalefont}ifelse setfont}__NXbdef /_NXCombineArrays{ counttomark dup 2 add index dup length 3 -1 roll { 2 index length sub dup 4 1 roll 1 index exch 4 -1 roll putinterval exch }repeat pop pop pop }__NXbdef /flushgraphics{}def /setwindowtype{pop pop}def /currentwindowtype{pop 0}def /setalpha{pop}def /currentalpha{1.0}def /hidecursor{}def /obscurecursor{}def /revealcursor{}def /setcursor{4 {pop}repeat}bind def /showcursor{}def /NextStepEncoding where not{ /NextStepEncoding StandardEncoding 256 array copy def 0 [129/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/Ccedilla/Egrave /Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis /Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/Ugrave/Uacute /Ucircumflex/Udieresis/Yacute/Thorn/mu/multiply/divide/copyright 176/registered 181/brokenbar 190/logicalnot 192/onesuperior 201/twosuperior 204/threesuperior 209/plusminus/onequarter/onehalf/threequarters/agrave /aacute/acircumflex/atilde/adieresis/aring/ccedilla/egrave/eacute /ecircumflex/edieresis/igrave 226/iacute 228/icircumflex/idieresis/eth /ntilde 236/ograve/oacute/ocircumflex/otilde/odieresis 242/ugrave/uacute /ucircumflex 246/udieresis/yacute 252/thorn/ydieresis] {dup type /nametype eq {NextStepEncoding 2 index 2 index put pop 1 add}{exch pop}ifelse }forall pop /NextStepEncoding NextStepEncoding readonly def /_NXfstr 128 string dup 0 (_NX) putinterval def /_NXfindfont /findfont load def /findfont{ % Because we can never let NextStepEncoding get into % SharedFontDirectory, we cannot reencode a font to NextStepEncoding % if we are in shared mode. So if currentshared is true, % we call the normal findfont and return that /currentshared where {pop currentshared} {false} ifelse {_NXfindfont} {dup _NXfstr 3 125 getinterval cvs length 3 add _NXfstr 0 3 -1 roll getinterval cvn exch FontDirectory 2 index known {pop FontDirectory exch get} {_NXfindfont dup /Encoding get StandardEncoding eq { dup length dict exch {1 index /FID ne {2 index 3 1 roll put}{pop pop}ifelse}forall dup /Encoding NextStepEncoding put definefont }{exch pop} ifelse }ifelse }ifelse }bind def }{pop}ifelse /_NXImageString {/__NXImageString where{pop}{/__NXImageString 4000 string __NXdef}ifelse __NXImageString}__NXbdef /_NXDoImageOp{ 3 dict begin /parr 5 array def 1 index{dup}{1}ifelse /chans exch def chans 2 add 2 roll parr 0 chans getinterval astore pop 5 index 4 index mul 2 index{1 sub 8 idiv 1 add mul}{mul 1 sub 8 idiv 1 add}ifelse 4 index mul /totbytes exch def pop exch pop gsave matrix invertmatrix concat 0.5 setgray 0 0 4 2 roll rectfill grestore {0 1 chans 1 sub{parr exch get exec length totbytes exch sub /totbytes exch def}for totbytes 0 le{exit}if}loop end }__NXbdef /alphaimage{1 add _NXDoImageOp}def _NXLevel2{ /NXCalibratedRGBColorSpace where{pop}{ /NXCalibratedRGBColorSpace {mark /NXCalibratedRGB /ColorSpace findresource exch pop}stopped {cleartomark /NXCalibratedRGB[/CIEBasedABC 2 dict dup begin /MatrixLMN[.4124 .2126 .0193 .3576 .7152 .1192 .1805 .0722 .9505]def /WhitePoint[.9505 1 1.089] def end] /ColorSpace defineresource}if def}ifelse /nxsetrgbcolor{NXCalibratedRGBColorSpace setcolorspace setcolor}__NXbdef /nxsetgray{dup dup nxsetrgbcolor}__NXbdef /_NXCalibratedImage{exch{array astore dup length true}{false}ifelse 8 -1 roll{NXCalibratedRGBColorSpace setcolorspace}if 8 dict dup 9 1 roll begin /ImageType 1 def /MultipleDataSources exch def currentcolorspace 0 get /Indexed eq{pop /Decode[0 2 6 index exp 1 sub]def} {2 mul dup array /Decode exch def 1 sub 0 1 3 -1 roll{Decode exch dup 2 mod put}for}ifelse /DataSource exch def /ImageMatrix exch def /BitsPerComponent exch def /Height exch def /Width exch def end image}__NXbdef } { /setcmykcolor{ 1.0 exch sub dup dup 6 -1 roll sub dup 0 lt{pop 0}if 5 1 roll 4 -1 roll sub dup 0 lt{pop 0}if 3 1 roll exch sub dup 0 lt{pop 0}if setrgbcolor}__NXbdef /currentcmykcolor{currentrgbcolor 3{1.0 exch sub 3 1 roll}repeat 0}__NXbdef /colorimage{2 copy 3 ne or{_NXDoImageOp}{4 index dup 8 ne exch 4 ne and{_NXDoImageOp}{ pop pop save 6 1 roll 12 dict begin/Proc exch def/Res 0 string def /Alloc{2 index length mul 2 add dup 2 index load length gt{1.2 mul round cvi string def}{pop pop}ifelse}def 1 index 8 eq{/Unpack{.34 Alloc}def}{ /Wid 4 index 3 mul def exch pop 8 exch/Str1 0 string def/Lim Wid def /Unpack{.67 Alloc/Str1 2 Alloc 0 exch Lim exch {dup -4 bitshift 17 mul Str1 exch 4 index exch put 15 and 17 mul Str1 exch 3 index 1 add exch put 2 sub dup 0 le{0 lt Wid exch{exch 1 sub exch}if}if exch 2 add exch }forall/Lim exch def Str1 exch 0 exch getinterval }def }ifelse /Ops[{.3 mul add 1}{.59 mul add 2}{.11 mul add round cvi Res exch 2 index exch put 1 add 0.0 0}]def/Val 0.0 def/Phase 0 def {0 Val Phase Proc/Res Unpack{exch Ops exch get exec}forall/Phase exch def/Val exch def Res exch 0 exch getinterval} image end restore}ifelse}ifelse }__NXbdef /nxsetrgbcolor{setrgbcolor}__NXbdef /nxsetgray{setgray}__NXbdef /setpattern{pop .5 setgray}__NXbdef /_NXCalibratedImage{dup 1 eq {pop pop image}{colorimage}ifelse pop}__NXbdef } ifelse /_NXSetCMYKOrRGB where{pop}{ mark{systemdict /currentwindow get exec}stopped {{pop pop pop setcmykcolor}}{{nxsetrgbcolor pop pop pop pop}}ifelse /_NXSetCMYKOrRGB exch def cleartomark }ifelse gsave -20 -28 translate /__NXbasematrix matrix currentmatrix def grestore /acsRect { moveto dup 0 exch rlineto exch 0 rlineto 0 exch neg rlineto closepath } def /oval { translate scale newpath 0.5 0.5 0.5 0 360 arc } def /ovalPath { 4 copy oval closepath neg exch neg exch 4 -1 roll 1 exch div 4 -1 roll 1 exch div scale translate } def /ff02 { oval gsave eofill grestore setgray matrix defaultmatrix setmatrix stroke } def /ffr2 { 4 copy rectfill 5 -1 roll setgray rectstroke } def /line { moveto rlineto stroke } def /SU { setmiterlimit setflat setlinewidth setlinecap setlinejoin gsave } def /arrow { newpath moveto dup rotate -10 3 rlineto 3 -3 rlineto -3 -3 rlineto closepath gsave 0 setlinejoin stroke grestore fill neg rotate } def /plainarrow { gsave /y2 exch def /x2 exch def /y1 exch def /x1 exch def /y0 exch def /x0 exch def newpath x0 y0 translate 0 0 moveto dup rotate x1 y1 lineto x2 y2 lineto x1 y1 neg lineto closepath gsave 0 setlinejoin stroke grestore fill grestore } def /frrb { /rad exch def /IV exch rad 2 mul sub def /IH exch rad 2 mul sub def 0.5 0.5 translate exch rad add exch moveto rad neg 0 rad neg 0 rad neg rad rcurveto 0 IV rlineto 0 rad 0 rad rad rad rcurveto IH 0 rlineto rad 0 rad 0 rad rad neg rcurveto 0 IV neg rlineto 0 rad neg 0 rad neg rad neg rad neg rcurveto closepath stroke -0.5 -0.5 translate } def /firb { /rad exch def /IV exch rad 2 mul sub def /IH exch rad 2 mul sub def 0.5 0.5 translate exch rad add exch moveto rad neg 0 rad neg 0 rad neg rad rcurveto 0 IV rlineto 0 rad 0 rad rad rad rcurveto IH 0 rlineto rad 0 rad 0 rad rad neg rcurveto 0 IV neg rlineto 0 rad neg 0 rad neg rad neg rad neg rcurveto closepath fill -0.5 -0.5 translate } def /rbp { /rad exch def /IV exch rad 2 mul sub def /IH exch rad 2 mul sub def exch rad add exch moveto rad neg 0 rad neg 0 rad neg rad rcurveto 0 IV rlineto 0 rad 0 rad rad rad rcurveto IH 0 rlineto rad 0 rad 0 rad rad neg rcurveto 0 IV neg rlineto 0 rad neg 0 rad neg rad neg rad neg rcurveto closepath } def /pieceOfRadius { exch 0 exch rlineto 0 exch 2 copy dup dup rcurveto -90 rotate } def /strokedRoundBox { dup 0 exch moveto 3 copy pieceOfRadius pop 3 copy 3 -1 roll exch pieceOfRadius pop 3 copy pieceOfRadius pop 3 copy 3 -1 roll exch pieceOfRadius pop closepath stroke } def /filledRoundBox { dup 0 exch moveto 3 copy pieceOfRadius pop 3 copy 3 -1 roll exch pieceOfRadius pop 3 copy pieceOfRadius pop 3 copy 3 -1 roll exch pieceOfRadius pop closepath fill } def /roundBoxPath { dup 0 exch moveto 3 copy pieceOfRadius pop 3 copy 3 -1 roll exch pieceOfRadius pop 3 copy pieceOfRadius pop 3 copy 3 -1 roll exch pieceOfRadius pop closepath } def /ffrb { 5 copy firb 6 -1 roll setgray frrb } def /rbox { /h exch def /w exch def h 2 div add exch w 2 div add exch translate rotate w 2 div neg h 2 div neg w h rectstroke } def /rboxfilled { /h exch def /w exch def h 2 div add exch w 2 div add exch translate rotate w 2 div neg h 2 div neg w h rectfill } def /rffb { 5 copy gsave rboxfilled grestore 6 -1 roll setgray rbox } def /roval { /h exch def /w exch def h 2 div add exch w 2 div add exch translate rotate w h w 2 div neg h 2 div neg gsave oval } def /rovalstroke { roval matrix defaultmatrix setmatrix stroke grestore } def /rovalfill { roval matrix defaultmatrix setmatrix fill grestore } def /rofs { 5 copy gsave rovalfill grestore 6 -1 roll setgray rovalstroke } def /flipH { 0 translate -1 1 scale } def /flipV { 0 exch translate 1 -1 scale } def /pathtextdict 28 dict def /pathtext { pathtextdict begin /offset exch def /str exch def /pathdist 0 def /setdist offset def /charcount 0 def gsave flattenpath { movetoproc } { linetoproc } { curvetoproc } { closepathproc } pathforall grestore newpath end } def pathtextdict begin /movetoproc { /newy exch def /newx exch def /firstx newx def /firsty newy def /ovr 0 def newx newy transform /cpy exch /cpx exch def } def /linetoproc { /oldx newx def /oldy newy def /newy exch def /newx exch def /dx newx oldx sub def /dy newy oldy sub def /dist dx dup mul dy dup mul add sqrt def dist 0 ne { /dsx dx dist div ovr mul def /dsy dy dist div ovr mul def oldx dsx add oldy dsy add transform /cpy exch def /cpx exch def /pathdist pathdist dist add def { getNextWidth setdist nextCharHalfWidth add pathdist le { charcount str length lt { setchar } { exit } ifelse } { /ovr setdist pathdist sub def exit } ifelse } loop } if } def /curvetoproc { (Error) print } def /closepathproc { firstx firsty linetoproc firstx firsty movetoproc } def /getNextWidth { charcount 1 add str length lt { /nextCharHalfWidth str charcount 1 add 1 getinterval stringwidth pop 2 div def } if } def /setchar { /char str charcount 1 getinterval def /charcount charcount 1 add def /charwidth char stringwidth pop def gsave cpx cpy itransform translate dy dx atan rotate 0 0 moveto char show currentpoint transform /cpy exch def /cpx exch def grestore /setdist setdist charwidth add def } def end /c /curveto load def /l /lineto load def /m /moveto load def /s /stroke load def /f /fill load def /S /scale load def /R /rotate load def /T /translate load def /L /setlinewidth load def /N /newpath load def /C /closepath load def gsave 25 492 563 203 rectclip 0 nxsetgray 0 0 0.15 1 10 SU gsave /Times-Roman findfont 18 scalefont [1 0 0 -1 0 0] makefont 377 exch defineuserobject 377 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1040] concat 377 execuserobject setfont 0 nxsetgray 54 512 moveto ( Network) show 54 533 moveto (Protocol 1) show grestore grestore 0 0 0.15 1 10 SU [1 0 0 -1 26 549.5] concat [1.166667 0 0 1.2 1.000004 0.499998] concat N 0.15 L 0 nxsetgray 0 0 108 45 rectstroke 0 0 T grestore 0 nxsetgray 0 0 0.15 1 10 SU gsave 377 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1040] concat 377 execuserobject setfont 0 nxsetgray 180 512 moveto ( Network) show 180 533 moveto (Protocol 2) show grestore grestore 0 0 0.15 1 10 SU [1 0 0 -1 152 549.5] concat [1.166667 0 0 1.2 1.000004 0.499998] concat N 0.15 L 0 nxsetgray 0 0 108 45 rectstroke 0 0 T grestore 0 nxsetgray 0 0 0.15 1 10 SU gsave 377 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1038] concat 377 execuserobject setfont 0 nxsetgray 306 515 moveto (Thread) show 306 536 moveto (Library) show grestore grestore 0 nxsetgray 0 0 0.15 1 10 SU gsave 377 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1041] concat 377 execuserobject setfont 0 nxsetgray 396 527 moveto (Other System Services) show grestore grestore 0 0 0.15 1 10 SU [1 0 0 -1 278.5 549.5] concat [0.916667 0 0 1.2 0.5 0.499998] concat N 0.15 L 0 nxsetgray 0 0 108 45 rectstroke 0 0 T grestore 0 0 0.15 1 10 SU [1 0 0 -1 377.5 549.5] concat [1.916667 0 0 1.2 0.5 0.499998] concat N 0.15 L 0 nxsetgray 0 0 108 45 rectstroke 0 0 T grestore 0 nxsetgray 0 0 0.15 1 10 SU gsave 377 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1166] concat 377 execuserobject setfont 0 nxsetgray 54 575 moveto ( Protocol) show 54 596 moveto ( Module 1) show grestore grestore 0 0 0.15 1 10 SU [1 0 0 -1 26 612.5] concat [1.166667 0 0 1.2 1.000004 0.499998] concat N 0.15 L 0 nxsetgray 0 0 108 45 rectstroke 0 0 T grestore 0 nxsetgray 0 0 0.15 1 10 SU gsave 377 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1166] concat 377 execuserobject setfont 0 nxsetgray 180 575 moveto ( Protocol) show 180 596 moveto (Module 2) show grestore grestore 0 0 0.15 1 10 SU [1 0 0 -1 152 612.5] concat [1.166667 0 0 1.2 1.000004 0.499998] concat N 0.15 L 0 nxsetgray 0 0 108 45 rectstroke 0 0 T grestore 0 nxsetgray 0 0 0.15 1 10 SU gsave 377 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1233] concat 377 execuserobject setfont 0 nxsetgray 306 602 moveto (Nexus) show 306 623 moveto (Thread) show 306 644 moveto (Module) show grestore grestore 0 nxsetgray 0 0 0.15 1 10 SU gsave 377 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1221] concat 377 execuserobject setfont 0 nxsetgray 396 617 moveto (Other Nexus Services) show grestore grestore 0 0 0.15 1 10 SU [1 0 0 -1 278.5 666.5] concat [0.916667 0 0 2.4 0.5 0.499996] concat N 0.15 L 0 nxsetgray 0 0 108 45 rectstroke 0 0 T grestore 0 0 0.15 1 10 SU [1 0 0 -1 377.5 666.5] concat [1.916667 0 0 2.4 0.5 0.499996] concat N 0.15 L 0 nxsetgray 0 0 108 45 rectstroke 0 0 T grestore 0 nxsetgray 0 0 0.15 1 10 SU gsave 377 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1260] concat 377 execuserobject setfont 0 nxsetgray 90 620 moveto ( Nexus Protocol) show 90 641 moveto (Module Interface) show grestore grestore 0 0 0.15 1 10 SU [1 0 0 -1 26 666.5] concat [2.333333 0 0 1.2 1.000008 0.499998] concat N 0.15 L 0 nxsetgray 0 0 108 45 rectstroke 0 0 T grestore 0 nxsetgray 0 0 0.15 1 10 SU gsave 377 execuserobject setfont 0 nxsetgray [1 0 0 -1 0 1359] concat 377 execuserobject setfont 0 nxsetgray 180 686 moveto (N e x u s I n t e r f a c e) show grestore grestore 0 0 0.15 1 10 SU [1 0 0 -1 26 694] concat [5.166667 0 0 0.6 0.999969 0.999999] concat N 0.15 L 0 nxsetgray 0 0 108 45 rectstroke 0 0 T grestore gsave 0 0 612 792 rectclip [1 0 0 -1 0 792] concat grestore grestore showpage %%EndDocument @endspecial 558 648 a Fh(Figure)14 b(2:)k Fd(Structur)n(e)c(of)h (Nexus)g(Implementation)-45 799 y Fh(that)i(allo)o(ws)e(the)i(no)q(des) g(to)g(use)g(b)q(oth)g(NX)f(and)h(TCP)f([2].)-45 849 y(But)e(it)g(do)q(es)h(not)e(allo)o(w)g(arbitrary)g(mixing)f(of)h (proto)q(cols.)-45 1007 y Fg(3)56 b(P)n(erformance)18 b(Studies)5 1106 y Fh(In)d(this)g(section,)h(w)o(e)g(presen)o(t)h (results)f(of)f(some)f(prelim-)-45 1156 y(inary)i(Nexus)i(p)q (erformance)f(studies.)28 b(W)m(e)16 b(note)h(that)g(the)-45 1206 y(thrust)f(of)f(our)h(dev)o(elopmen)o(t)e(e\013ort)j(to)e(date)h (has)f(b)q(een)i(to)-45 1255 y(pro)o(vide)10 b(a)f(correct)j(implem)o (en)o(tation)7 b(of)i(Nexus.)17 b(No)10 b(tuning)-45 1305 y(or)16 b(optimization)e(w)o(ork)i(has)h(b)q(een)g(done)g(at)f (all.)25 b(In)16 b(addi-)-45 1355 y(tion,)10 b(the)i(op)q(erating)f (system)f(features)i(used)g(to)e(implemen)o(t)-45 1405 y(Nexus)16 b(are)f(completely)f(generic:)20 b(w)o(e)15 b(ha)o(v)o(e)g(not)g(exploited)-45 1455 y(ev)o(en)10 b(the)g(simplest)f(of)g(op)q(erating)g(system)g(features,)i(suc)o(h)g (as)-45 1504 y(non)o(blo)q(c)o(king)16 b(I/O.)g(Consequen)o(tly)m(,)h (the)h(results)g(rep)q(ort