Mon Nov 23 16:03:14 EST 1992 From owner-mpi-envir@CS.UTK.EDU Wed Dec 30 11:30:54 1992 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA25099; Wed, 30 Dec 92 11:30:54 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA13591; Wed, 30 Dec 92 11:30:35 -0500 X-Resent-To: mpi-envir@CS.UTK.EDU ; Wed, 30 Dec 1992 16:30:33 GMT Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from chevre.cs.wisc.edu by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA13579; Wed, 30 Dec 92 11:30:32 -0500 Date: Wed, 30 Dec 92 10:30:29 -0600 From: miron@cs.wisc.edu (Miron Livny) Message-Id: <9212301630.AA01755@chevre.cs.wisc.edu> Received: by chevre.cs.wisc.edu; Wed, 30 Dec 92 10:30:29 -0600 To: mpi-envir@cs.utk.edu Subject: Interface to scheduler Cc: dongarra@cs.utk.edu, miron@cs.wisc.edu Dear committee, Let me first introduce myself, my name is Miron Livny and I am a faculty at the Computer Sciences Department at the University of Wisconsin-Madison. One of my research areas is distributed resource management. Some of the results of this research have been incorporated in the Condor Batch System that we have developed. Condor is a distributed batch system for a cluster of workstations. It has been operational for more than four years in our department (Condor currently controls more than 250 workstations in our department) and has been used by a wide range of academic and commercial institutions all over the world. In the last workshop on cluster computing in FSU I learned about the MPI effort. From the prospectives of a scheduling system I would have liked to see a programming-scheduler interface in the MPI standard. Since different processing environments may use different schedulers, a parallel application cannot move from one environment to the other unless it can communicate with the scheduler of the target environment. I am wondering what is the committee's views/plans regarding such an interface. If you believe that it is part of your charter, I will be more than happy to share with you our ideas regarding such an interface. We are currently in the process of integrating PVM with Condor. For Condor to schedule PVM application effectively, it has to communicate with the application. We can use the interface that we have developed for PVM-Condor as a starting point ..... Miron Livny From owner-mpi-envir@CS.UTK.EDU Mon Jan 4 18:19:46 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA05241; Mon, 4 Jan 93 18:19:46 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA01492; Mon, 4 Jan 93 18:19:16 -0500 X-Resent-To: mpi-envir@CS.UTK.EDU ; Mon, 04 Jan 1993 23:19:13 GMT Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA01460; Mon, 4 Jan 93 18:19:10 -0500 Received: from godzilla.mcs.anl.gov by antares.mcs.anl.gov (4.1/SMI-GAR) id AA13287; Mon, 4 Jan 93 17:19:08 CST From: gropp@antares.mcs.anl.gov (William Gropp) Received: by godzilla.mcs.anl.gov (4.1/GeneV4) id AA09564; Mon, 4 Jan 93 17:19:06 CST Date: Mon, 4 Jan 93 17:19:06 CST Message-Id: <9301042319.AA09564@godzilla.mcs.anl.gov> To: mpi-envir@cs.utk.edu Subject: Draft routine list and intro %!PS-Adobe-2.0 %%Creator: dvips, version 5.4 (C) 1986-90 Radical Eye Software %%Title: inquiry.dvi %%Pages: 2 1 %%BoundingBox: 0 0 612 792 %%EndComments %%BeginProcSet: tex.pro /TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{ isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale Resolution VResolution vsize neg mul TR}B /@letter{/vsize 10 N}B /@landscape{ /isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{/vsize 15.5531 N }B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0 ]N /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0 ]N df-tail}B /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[ }B /E{pop nn dup definefont setfont}B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B /ctr 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{ /cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto}B /eop{clear SI restore showpage userdict /eop-hook known{eop-hook}if}B /@start{userdict /start-hook known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}B /p /show load N /RMat[1 0 0 -1 0 0]N /BDot 8 string N /v{/ruley X /rulex X V}B /V{gsave TR -.1 -.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}B /a{moveto}B /delta 0 N /tail{ dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{ -3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t {p 4 w}B /w{0 rmoveto}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B /eos{clear SS restore}B end %%EndProcSet TeXDict begin 1000 300 300 @start /Fa 1 1 df0 D E /Fb 10 118 df<60F0F0701010101020204080040C7C830C>59 D<0007E00000E00000E000 01C00001C00001C00001C000038000038000038000038001E7000717000C0F00180F00380E0030 0E00700E00700E00E01C00E01C00E01C00E01C00E03880E03880E038806078803199001E0E0013 1D7E9C16>100 D<01F007080C0818043808300870307FC0E000E000E000E000E000E004600860 1030600F800E127E9113>I<01C003C003C001800000000000000000000000001C002700470047 00870087000E000E001C001C001C003800388038807080710032001C000A1C7E9B0E>105 D<381F81F04E20C6184640E81C4680F01C8F00F01C8E00E01C0E00E01C0E00E01C1C01C0381C01 C0381C01C0381C01C0703803807138038071380380E1380380E2700700643003003820127E9124 >109 D<381F004E61804681C04701C08F01C08E01C00E01C00E01C01C03801C03801C03801C07 00380710380710380E10380E2070064030038014127E9119>I<00F800030C000E06001C030018 0300300300700380700380E00700E00700E00700E00E00E00E00E01C0060180060300030E0000F 800011127E9114>I<07078009C86008D03008E03011C03011C03801C03801C038038070038070 0380700380600700E00700C00701800783000E86000E78000E00000E00001C00001C00001C0000 1C00003C0000FF8000151A819115>I<01F0060C04040C0E180C1C001F000FE00FF003F8003820 1C7018F018F010803060601F800F127E9113>115 D<1C00C02701C04701C04701C08703808703 800E03800E03801C07001C07001C07001C0700180E20180E20180E201C1E200C264007C3801312 7E9118>117 D E /Fc 22 123 df<003FE3F801F03F1C03C03E3E07C07C3E0F807C3E0F807C1C 0F807C000F807C000F807C000F807C000F807C00FFFFFFC0FFFFFFC00F807C000F807C000F807C 000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F807C000F80 7C000F807C007FE1FFC07FE1FFC01F1D809C1C>11 D<0FF8001C1E003E0F803E07803E07C01C07 C00007C0007FC007E7C01F07C03C07C07C07C0F807C0F807C0F807C0780BC03E13F80FE1F81512 7F9117>97 DI<03FC000E0E001C1F003C1F00781F00780E 00F80000F80000F80000F80000F80000F800007800007801803C01801C03000E0E0003F8001112 7E9115>I<000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F001 F9F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801F078 01F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C01C07801C07801E0 F801E0F801E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F038001FC0013127F 9116>I<03F8F00E0F381E0F381C07303C07803C07803C07803C07801C07001E0F000E0E001BF8 001000001800001800001FFF001FFFC00FFFE01FFFF07801F8F00078F00078F000787000707800 F01E03C007FF00151B7F9118>103 DI<1E003F003F003F 003F001E00000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F00 1F001F001F001F001F00FFE0FFE00B1E7F9D0E>I108 DII<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8 F800F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>II114 D<1FD830786018E018E018F000FF 807FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<030003000300030007 0007000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08 079803F00E1A7F9913>III120 DI<3FFF803C1F00303F00303E00607C0060FC0060F80001F00003F00007E00007 C1800F81801F81801F03803E03007E07007C0F00FFFF0011127F9115>I E /Fd 3 117 df<01E007100C1018083810701070607F80E000E000E000E000E000E008601060 2030C01F000D127B9113>101 D<01F006080C080C1C18181C001F001FC00FF007F00078003860 30E030C030806060C01F000E127D9111>115 D<00C001C001C001C00380038003800380FFE007 00070007000E000E000E000E001C001C001C001C00384038403840388019000E000B1A7D990E> I E /Fe 29 118 df45 D<387CFEFEFE7C3807077C8610>I< 00180000780001F800FFF800FFF80001F80001F80001F80001F80001F80001F80001F80001F800 01F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F80001F800 01F80001F80001F80001F8007FFFE07FFFE013207C9F1C>49 D<03FC000FFF003C1FC07007E07C 07F0FE03F0FE03F8FE03F8FE01F87C01F83803F80003F80003F00003F00007E00007C0000F8000 1F00003E0000380000700000E01801C0180380180700180E00380FFFF01FFFF03FFFF07FFFF0FF FFF0FFFFF015207D9F1C>I<00FE0007FFC00F07E01E03F03F03F03F81F83F81F83F81F81F03F8 1F03F00003F00003E00007C0001F8001FE0001FF000007C00001F00001F80000FC0000FC3C00FE 7E00FEFF00FEFF00FEFF00FEFF00FC7E01FC7801F81E07F00FFFC001FE0017207E9F1C>I<0000 70000000007000000000F800000000F800000000F800000001FC00000001FC00000003FE000000 03FE00000003FE00000006FF000000067F0000000E7F8000000C3F8000000C3F800000183FC000 00181FC00000381FE00000300FE00000300FE00000600FF000006007F00000E007F80000FFFFF8 0000FFFFF800018001FC00018001FC00038001FE00030000FE00030000FE000600007F00060000 7F00FFE00FFFF8FFE00FFFF825227EA12A>65 D<0003FE0080001FFF818000FF01E38001F8003F 8003E0001F8007C0000F800F800007801F800007803F000003803F000003807F000001807E0000 01807E00000180FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00 000000FE000000007E000000007E000001807F000001803F000001803F000003801F800003000F 8000030007C000060003F0000C0001F800380000FF00F000001FFFC0000003FE000021227DA128 >67 DI73 D77 D80 D<0007FC0000003FFF800000 FC07E00003F001F80007E000FC000FC0007E001F80003F001F80003F003F00001F803F00001F80 7F00001FC07E00000FC07E00000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000F E0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00000FC07F00001FC07F00001FC03F0000 1F803F81F03F801F83F83F000FC70C7E0007E606FC0003F607F80000FF07E000003FFF80000007 FF80200000038020000003C020000003E0E0000003FFE0000001FFC0000001FFC0000000FFC000 0000FF800000007F000000001E00232C7DA12A>I<07FC001FFF803F07C03F03E03F01E03F01F0 1E01F00001F00001F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F0 7E0CF81FF87F07E03F18167E951B>97 DI<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC 0000FC0000FC0000FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE0014167E95 19>I<0001FE000001FE0000003E0000003E0000003E0000003E0000003E0000003E0000003E00 00003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E003E003E007E003E 007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E007C00 3E007C003E003E007E001E00FE000F83BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF80 0F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C0000 7C00007E00003E00181F00300FC07003FFC000FF0015167E951A>I<003F8000FFC001E3E003C7 E007C7E00F87E00F83C00F80000F80000F80000F80000F80000F8000FFFC00FFFC000F80000F80 000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80 000F80000F80000F80007FF8007FF80013237FA211>I104 D<1C003E007F007F007F003E001C00000000000000000000 0000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00 1F001F001F00FFE0FFE00B247EA310>I108 D II<00FE0007FFC00F83E01E00F03E00F87C007C7C007C 7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E0 07FFC000FE0017167E951C>II114 D<0FF3003FFF00781F006007 00E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E003 80E00380F00700FC0E00EFFC00C7F00011167E9516>I<01800001800001800001800003800003 80000780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F80000F 80000F80000F80000F80000F80000F81800F81800F81800F81800F81800F830007C30003FE0000 F80011207F9F16>II E /Ff 57 123 df<007E1F0001C1B1800303E3C00703C3C00E03C1800E01C0000E01C0000E01C0000E01C0 000E01C0000E01C000FFFFFC000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01 C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0000E01C0007F 87FC001A1D809C18>11 D<007E0001C1800301800703C00E03C00E01800E00000E00000E00000E 00000E0000FFFFC00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E 01C00E01C00E01C00E01C00E01C00E01C07F87F8151D809C17>I<007FC001C1C00303C00703C0 0E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFFFC00E01C00E01C00E01C00E01C00E01C0 0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C07FCFF8151D80 9C17>I<004000800100020006000C000C0018001800300030007000600060006000E000E000E0 00E000E000E000E000E000E000E000E000E000600060006000700030003000180018000C000C00 060002000100008000400A2A7D9E10>40 D<800040002000100018000C000C0006000600030003 00038001800180018001C001C001C001C001C001C001C001C001C001C001C001C0018001800180 038003000300060006000C000C00180010002000400080000A2A7E9E10>I<60F0F07010101010 20204080040C7C830C>44 DI<60F0F06004047C830C>I<000100030006 00060006000C000C000C0018001800180030003000300060006000C000C000C001800180018003 0003000300060006000C000C000C00180018001800300030003000600060006000C000C0001029 7E9E15>I<03C00C301818300C300C700E60066006E007E007E007E007E007E007E007E007E007 E007E007E007E00760066006700E300C300C18180C3007E0101D7E9B15>I<030007003F00C700 070007000700070007000700070007000700070007000700070007000700070007000700070007 00070007000F80FFF80D1C7C9B15>I<07C01830201C400C400EF00FF80FF807F8077007000F00 0E000E001C001C00380070006000C00180030006010C01180110023FFE7FFEFFFE101C7E9B15> I<07E01830201C201C781E780E781E381E001C001C00180030006007E00030001C001C000E000F 000F700FF80FF80FF80FF00E401C201C183007E0101D7E9B15>I<000C00000C00001C00003C00 003C00005C0000DC00009C00011C00031C00021C00041C000C1C00081C00101C00301C00201C00 401C00C01C00FFFFC0001C00001C00001C00001C00001C00001C00001C0001FFC0121C7F9B15> I<60F0F0600000000000000000000060F0F0701010101020204080041A7C910C>59 D<0FE03038401CE00EF00EF00EF00E000C001C0030006000C00080018001000100010001000100 01000000000000000000000003000780078003000F1D7E9C14>63 D<0006000000060000000600 00000F0000000F0000000F00000017800000178000001780000023C0000023C0000023C0000041 E0000041E0000041E0000080F0000080F0000180F8000100780001FFF80003007C0002003C0002 003C0006003E0004001E0004001E000C001F001E001F00FF80FFF01C1D7F9C1F>65 D<001F808000E0618001801980070007800E0003801C0003801C00018038000180780000807800 008070000080F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000070 0000807800008078000080380000801C0001001C0001000E000200070004000180080000E03000 001FC000191E7E9C1E>67 DI72 DI77 DI<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380780003C0 780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001 E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C000380380000E0 E000003F80001B1E7E9C20>II82 D<07E0801C1980300580700380600180E00180E00080E00080E00080F00000F800007C00007FC0 003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001C0C00180C001 80E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F00 40C00F0020800F0020800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F 0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000 0F0000000F0000001F800003FFFC001B1C7F9B1E>II87 D91 D93 D<1FC000307000783800781C00301C00001C00001C0001FC000F1C0038 1C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97 DI<07E00C301878307870306000E000E000E000E000E000 E00060007004300418080C3007C00E127E9112>I<003F00000700000700000700000700000700 00070000070000070000070000070003E7000C1700180F00300700700700600700E00700E00700 E00700E00700E00700E00700600700700700300700180F000C370007C7E0131D7E9C17>I<03E0 0C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803E00F127F9112 >I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E 000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C38 80181800381C00381C00381C00381C001818001C38000C300013C0001000003000001800001FF8 001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215 >II<18003C003C00180000000000000000000000000000 00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D 7F9C0C>I107 DIII<03F0000E1C00180600300300700380600180E001C0E001C0E001C0 E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115>II<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700E00700E0070060 0700700700300F00180F000C370007C70000070000070000070000070000070000070000070000 3FE0131A7E9116>II<1F9030704030C010C010E010F8007F803FE00FF000F880388018 C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C00 1C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>IIII<7F8FF00F03800F030007020003840001C80001D80000F00000700000780000F800009C 00010E00020E000607000403801E07C0FF0FF81512809116>II<7FFC70386038 407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F9112>I E /Fg 14 118 df<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000 FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000 FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007F FFFE7FFFFE7FFFFE17277BA622>49 D<00FF800003FFF0000FFFFC001F03FE003800FF007C007F 80FE003FC0FF003FC0FF003FE0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC00000 3FC000007F8000007F000000FE000000FC000001F8000003F0000003E00000078000000F000000 1E0000003C00E0007000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC0 7FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I73 D82 D<001FF80000FFFE0003F01F0007E03F800FC0 3F801F803F803F801F007F800E007F0000007F000000FF000000FF000000FF000000FF000000FF 000000FF000000FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E00700 03F01E0000FFFC00001FE0001A1B7E9A1F>99 D<00003FF80000003FF80000003FF800000003F8 00000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003 F800000003F800000003F800000003F800001FE3F80000FFFBF80003F03FF80007E00FF8000FC0 07F8001F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800FF 0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F0003F800 3F8003F8001F8003F8000F8007F80007C00FF80003F03BFF8000FFF3FF80003FC3FF80212A7EA9 26>I<003FE00001FFF80003F07E0007C01F000F801F801F800F803F800FC07F000FC07F0007C0 7F0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F0000007F0000 007F0000003F8000E01F8000E00FC001C007E0038003F81F0000FFFE00001FF0001B1B7E9A20> I<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE0 0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F E00FE0FFFEFFFEFFFE0F2B7DAA14>105 D110 D<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F 0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8 7F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E 9A22>I114 D<03FE300FFFF01E03F03800F0700070F00070F00070F800 70FC0000FFE0007FFE007FFF803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF000 3CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000 F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007 F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F03807F03807 F03807F03807F03803F03803F87001F86000FFC0001F8015267FA51B>II E /Fh 17 122 df69 D73 D77 D80 D<01FC00000E0780001001C0003C00E0003E00F000 3E0078001C00780008007800000078000000780000007800007FF80003E078000F8078001F0078 003E0078007C00780078007820F8007820F8007820F8007820F800F8207C00F8203C013C401F06 3FC007F80F001B1A7E991E>97 D<007E0003C3800700E00E00F01C00703C00783C003878003C78 003CF8003CF8003CFFFFFCF80000F80000F80000F80000F800007800007C00003C00043C00041E 00080E001007002001C0C0007F00161A7E991B>101 D<07000F801F801F800F80070000000000 000000000000000000000000000007807F807F800F800780078007800780078007800780078007 8007800780078007800780078007800780078007800780FFF8FFF80D297FA811>105 D<0780FF80FF800F80078007800780078007800780078007800780078007800780078007800780 078007800780078007800780078007800780078007800780078007800780078007800780078007 800780FFFCFFFC0E2A7FA911>108 D<0781F800FC00FF860E030700FF98070C03800FA0079003 C007A003D001E007C003E001E007C003E001E0078003C001E0078003C001E0078003C001E00780 03C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001 E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E0078003C001E00780 03C001E0FFFC7FFE3FFFFFFC7FFE3FFF301A7F9933>I<0783F800FF8C1C00FF900E000FA00700 07A0078007C0078007C00780078007800780078007800780078007800780078007800780078007 800780078007800780078007800780078007800780078007800780078007800780078007800780 0780FFFCFFFCFFFCFFFC1E1A7F9921>I<007F000001C1C000070070000E0038001C001C003C00 1E003C001E0078000F0078000F00F8000F80F8000F80F8000F80F8000F80F8000F80F8000F80F8 000F80F8000F8078000F0078000F003C001E003C001E001E003C000E0038000700700001C1C000 007F0000191A7E991E>I<003F008001E0C180038021800F0013801E000B801E000F803C000780 7C0007807C00078078000780F8000780F8000780F8000780F8000780F8000780F8000780F80007 807C0007807C0007803C0007803E000F801E000F800F0017800780278001E0C780007F07800000 078000000780000007800000078000000780000007800000078000000780000007800000078000 00FFFC0000FFFC1E267E9920>113 D<0787C0FF98E0FF91F00FA1F007C1F007C0E007C0000780 000780000780000780000780000780000780000780000780000780000780000780000780000780 0007800007800007C000FFFE00FFFE00141A7F9917>I<00800000800000800000800001800001 80000180000380000380000780000F80001FFF80FFFF8007800007800007800007800007800007 800007800007800007800007800007800007800007800007804007804007804007804007804007 804007804003C08001C08000E100003E0012257FA417>116 D<07800780FF80FF80FF80FF800F 800F80078007800780078007800780078007800780078007800780078007800780078007800780 0780078007800780078007800780078007800780078007800780078007800F8007800F80038017 8001C027C000E047FC003F87FC1E1A7F9921>II121 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300 TeXDict begin @letter /letter where {pop letter} if %%EndSetup %%Page: 1 1 bop 611 307 a Fh(MPI)19 b(En)n(vironmen)n(tal)g(Inquiry)262 444 y Fg(1)69 b(In)n(tro)r(duction)262 535 y Ff(A)20 b(k)o(ey)g(area)g(that)g (m)o(ust)f(b)q(e)i(standardized)g(for)e(p)q(ortable)i(programs)d(is)i(the)h (area)f(of)262 585 y(en)o(vironmen)o(tal)11 b(inquiry;)h(that)i(is,)f (getting)g(information)d(ab)q(out)k(the)g(programmi)o(ng)c(en-)262 635 y(vironmen)o(t.)16 b(This)d(includes)g(suc)o(h)h(basic)f(things)f(as)h (determining)f(what)h(no)q(de)g(a)g(pro)q(cess)262 685 y(is)f(in)g(and)h(ho)o (w)f(man)o(y)e(no)q(des)k(there)g(are)f(as)f(w)o(ell)g(as)h(more)f(adv)n (anced)g(information,)e(suc)o(h)262 735 y(as)16 b(the)g(amoun)o(t)f(of)g (free)i(bu\013er)g(space)g(for)f(messages)g(or)h(the)f(n)o(um)o(b)q(er)g(of)f (groups)i(that)262 784 y(can)d(b)q(e)g(de\014ned.)324 834 y(One)f(goal)e(of)h (this)h(section)g(is)f(to)h(pro)o(vide)f(access)i(to)f(the)g(programmer,)d (from)g(within)262 884 y(a)17 b(program,)g(to)h(all)e(of)i(the)g(parameters)g (in)f(the)i(MPI)f(sp)q(eci\014cation.)31 b(In)18 b(addition,)f(a)262 934 y(standardized)11 b(in)o(terface)f(to)g(routines)h(that)f(iden)o(tify)f (the)i(name)e(of)h(the)g(parallel)f(mac)o(hine,)262 984 y(as)k(w)o(ell)h(as)g (v)o(endor-sp)q(eci\014c)h(extensions,)g(is)e(de\014ned.)262 1100 y Fe(1.1)55 b(Questions)312 1177 y Ff(1.)20 b(Can)14 b(parameters)g(b)q (e)g Fd(set)g Ff(as)g(w)o(ell)f(as)h(retriev)o(ed?)312 1260 y(2.)20 b(What)14 b(is)g(the)g(extension)h(mec)o(hanism?)312 1343 y(3.)20 b(Minim)o(um)10 b(v)n(alues)k(for)g(parameters?)312 1426 y(4.)20 b(Ho)o(w)13 b(man)o(y)e(of)h(these)i(should)e(b)q(e)i(de\014ned) g(at)e(compile)f(time)h(as)g(w)o(ell)h(as)f(run)h(time,)365 1475 y(for)h(languages)f(with)h(conditional)e(compilation?)262 1613 y Fg(2)69 b(Routines)262 1704 y Ff(This)13 b(section)i(brie\015y)f(in)o (tro)q(duces)h(routines)f(for)g(en)o(vironmen)o(tal)e(inquiry)m(.)262 1820 y Fe(2.1)55 b(Absolute)18 b(minim)n(um)262 1896 y Fc(mpi)p 346 1896 15 2 v 15 w(n)o(umno)q(des)g Ff(Num)o(b)q(er)c(of)f(no)q(des)i(in)e (the)i(parallel)d(mac)o(hine)262 1979 y Fc(mpi)p 346 1979 V 15 w(m)o(yno)q(de)20 b Ff(Num)o(b)q(er)13 b(\(in)h(the)g(range)g([0)p Fb(;)7 b(mpi)p 1077 1979 13 2 v 15 w(numnodes)i Fa(\000)h Ff(1])j(of)g(this)h (no)q(de)262 2096 y Fe(2.2)55 b(Characteristics)25 b(of)h(the)f(mac)n(hine)g (and)h(the)f(MPI)h(imple-)389 2154 y(men)n(tation)262 2230 y Fc(mpi)p 346 2230 15 2 v 15 w(top)q(ology)19 b Ff(T)o(yp)q(e)i(of)e(in)o (terconnection)i(top)q(ology)e(\(e.g.,)h(h)o(yp)q(ercub)q(e,)j(2d-torus,)365 2280 y(unkno)o(wn\))262 2363 y Fc(mpi)p 346 2363 V 15 w(distance)c Ff(Distance)14 b(b)q(et)o(w)o(een)i(t)o(w)o(o)d(no)q(des)262 2446 y Fc(mpi)p 346 2446 V 15 w(memory)20 b Ff(Amoun)o(t)13 b(of)g(a)o(v)n(ailable)f(memory)f(on)j(a)f(no)q(de.)967 2574 y(1)p eop %%Page: 2 2 bop 262 307 a Fc(mpi)p 346 307 15 2 v 15 w(bu\013er)p 485 307 V 16 w(size)20 b Ff(Av)n(ailable)12 b(message)i(bu\013er)g(space)262 390 y Fc(mpi)p 346 390 V 15 w(t)o(yp)q(e)p 454 390 V 17 w(range)20 b Ff(Range)13 b(of)g(v)n(alid)g(message)g(t)o(yp)q(es)262 473 y Fc(mpi)p 346 473 V 15 w(msg)p 444 473 V 17 w(sizes)20 b Ff(Range)13 b(of)g(v)n(alid)g(message)g(sizes)262 556 y Fc(mpi)p 346 556 V 15 w(max)p 449 556 V 18 w(pgroups)18 b Ff(Av)n(ailable)12 b(n)o(um)o(b)q(er)i(of)f(pro)q(cess)j(groups)262 639 y Fc(mpi)p 346 639 V 15 w(max)p 449 639 V 18 w(cctx)21 b Ff(Av)n(ailable)12 b(n)o(um)o(b)q(er)h(of)g(comm)o(unication)e(con)o(texts)262 755 y Fe(2.3)55 b(Description)17 b(of)i(the)f(mac)n(hine)262 832 y Fc(mpi)p 346 832 V 15 w(os)p 404 832 V 17 w(name)i Ff(Name)12 b(of)g(the)h(Op)q(erating)g(System)f(on)g(the)i(parallel)d(mac)o(hine,)g (includ-)365 882 y(ing)i(the)h(v)o(ersion)f(n)o(um)o(b)q(er)g(\(should)g(b)q (e)h(enough)g(to)f(iden)o(tify)f(the)i(sp)q(eci\014c)h(release\))262 965 y Fc(mpi)p 346 965 V 15 w(mac)o(hine)p 534 965 V 16 w(name)20 b Ff(Name)12 b(of)i(the)g(mac)o(hine.)262 1048 y Fc(mpi)p 346 1048 V 15 w(v)o(endor)19 b Ff(Used)c(for)f(v)o(endor-sp)q(eci\014c)h (extensions)324 1139 y(Still)9 b(needed)i(are)g(routines)f(to)g(determine)g (things)g(lik)o(e)f(I/O)h(parameters)h(\(lo)q(cal)e(disks,)262 1189 y(distance)14 b(to)g(disk)g(con)o(troller)g(no)q(des,)g(etc.\).)967 2574 y(2)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF From owner-mpi-envir@CS.UTK.EDU Tue Jan 12 12:08:17 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA06906; Tue, 12 Jan 93 12:08:17 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA10368; Tue, 12 Jan 93 12:08:07 -0500 X-Resent-To: mpi-envir@CS.UTK.EDU ; Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from [134.9.48.4] by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA10359; Tue, 12 Jan 93 12:08:00 -0500 Received: by ocfmail.ocf.llnl.gov (4.1/SMI-4.0) id AA10743; Tue, 12 Jan 93 09:07:43 PST Date: Tue, 12 Jan 93 09:07:43 PST From: nessett@ocfmail.ocf.llnl.gov (Danny Nessett) Message-Id: <9301121707.AA10743@ocfmail.ocf.llnl.gov> To: mpi-envir@cs.utk.edu Subject: need for a way to find out UNIX pids of MPI processes Cc: nessett@ocfmail.ocf.llnl.gov There is a need to find out the UNIX pids of the processes taking part in an MPI-based computation when these processes exist on more than one machine. Specifically, if a batch server is used to start up an MPI-based distributed application, it will reserve resources on the machines participating in the application or set resource limits on those machines. When the distributed application is started, the batch system must be able to bind those resource reservations/limits to the appropriate processes (i.e., those participating in the MPI-based computation). Consequently, there should be an MPI call that returns the UNIX pids (*not* the internal MPI process/ task/thread ids) so the batch system can make the appropriate system calls to do the binding. Dan Nessett P.S. I am not currently on this mailing list. Could you add me so that I can take part in any discussion of this issue? Thanks. From owner-mpi-envir@CS.UTK.EDU Tue Jan 12 18:14:11 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA16618; Tue, 12 Jan 93 18:14:11 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA26149; Tue, 12 Jan 93 18:14:00 -0500 X-Resent-To: mpi-envir@CS.UTK.EDU ; Tue, 12 Jan 1993 18:13:59 EST Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from ssd.intel.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA26141; Tue, 12 Jan 93 18:13:58 -0500 Received: from tualatin.SSD.intel.com by SSD.intel.com (4.1/SMI-4.1) id AA05642; Tue, 12 Jan 93 15:13:51 PST Date: Tue, 12 Jan 93 15:13:51 PST Message-Id: <9301122313.AA05642@SSD.intel.com> Received: by tualatin.SSD.intel.com (4.1/SMI-4.0) id AA09307; Tue, 12 Jan 93 15:13:49 PST From: Bob Knighten Sender: knighten@SSD.intel.com To: nessett@ocfmail.ocf.llnl.gov Cc: mpi-envir@cs.utk.edu Subject: Re: need for a way to find out UNIX pids of MPI processes In-Reply-To: <9301121707.AA10743@ocfmail.ocf.llnl.gov> References: <9301121707.AA10743@ocfmail.ocf.llnl.gov> Reply-To: knighten@SSD.intel.com (Bob Knighten) Danny Nessett writes: > > There is a need to find out the UNIX pids of the processes taking part > in an MPI-based computation when these processes exist on more than one > machine. Specifically, if a batch server is used to start up an MPI-based > distributed application, it will reserve resources on the machines > participating in the application or set resource limits on those machines. > When the distributed application is started, the batch system must be able > to bind those resource reservations/limits to the appropriate processes (i.e., > those participating in the MPI-based computation). Consequently, there should > be an MPI call that returns the UNIX pids (*not* the internal MPI process/ > task/thread ids) so the batch system can make the appropriate system calls > to do the binding. > > Dan Nessett > > P.S. I am not currently on this mailing list. Could you add me so that I > can take part in any discussion of this issue? Thanks. It does not seem likely that we are assumming or want to assume that our systems are UNIX based, nor even necessarily POSIX compliant. Interfaces to bind resources or set limits may be a necessary part of the MPI interfaces. If so, I strongly favor using POSIX interfaces whenever these are available, but anything more specific seems ill-advised. Robert L. Knighten | knighten@ssd.intel.com Intel Supercomputer Systems Division | 15201 N.W. Greenbrier Pkwy. | (503) 629-4315 Beaverton, Oregon 97006 | (503) 629-9147 [FAX] From owner-mpi-envir@CS.UTK.EDU Wed Feb 17 11:00:45 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA11204; Wed, 17 Feb 93 11:00:45 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA04805; Wed, 17 Feb 93 11:00:19 -0500 X-Resent-To: mpi-envir@CS.UTK.EDU ; Wed, 17 Feb 1993 11:00:16 EST Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from enseeiht.enseeiht.fr by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA04761; Wed, 17 Feb 93 11:00:06 -0500 Received: from marylin (marylin.enseeiht.fr) by enseeiht.enseeiht.fr, Wed, 17 Feb 1993 17:00:01 +0100 Message-Id: <199302171600.AA21017@enseeiht.enseeiht.fr> Date: Wed, 17 Feb 93 16:57:39 +0100 From: Michel DAYDE To: mpi-envir@cs.utk.edu Subject: elapsed time function cpu_time function was rejected at the Minneapolis meeting. Is that the same for an elapsed_time function ? I mainly think in terms of porting codes between distincts machines and we could have to wait for a long time before having standardized calls to an elapsed time function. Therefore MPI could be a way... Michel Dayde, ENSEEIHT-IRIT and CERFACS. From owner-mpi-envir@CS.UTK.EDU Fri Feb 26 15:57:51 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA06294; Fri, 26 Feb 93 15:57:51 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA24727; Fri, 26 Feb 93 15:57:23 -0500 X-Resent-To: mpi-envir@CS.UTK.EDU ; Fri, 26 Feb 1993 15:57:21 EST Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA24710; Fri, 26 Feb 93 15:57:18 -0500 Received: from godzilla.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA00100 (5.65c/IDA-1.4.4 for ); Fri, 26 Feb 1993 14:57:10 -0600 From: William Gropp Received: by godzilla.mcs.anl.gov (4.1/GeneV4) id AA23072; Fri, 26 Feb 93 14:57:08 CST Date: Fri, 26 Feb 93 14:57:08 CST Message-Id: <9302262057.AA23072@godzilla.mcs.anl.gov> To: mpi-envir@cs.utk.edu Subject: elapsed time function POSIX will (probably) define such a function; Fortran 90 already has one. It is my suggestion that we point people at these routines rather than add to their number. Bill From owner-mpi-envir@CS.UTK.EDU Fri Feb 26 16:13:47 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA06850; Fri, 26 Feb 93 16:13:47 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA25690; Fri, 26 Feb 93 16:13:26 -0500 X-Resent-To: mpi-envir@CS.UTK.EDU ; Fri, 26 Feb 1993 16:13:25 EST Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from ssd.intel.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA25682; Fri, 26 Feb 93 16:13:24 -0500 Received: from tualatin.SSD.intel.com by SSD.intel.com (4.1/SMI-4.1) id AA09418; Fri, 26 Feb 93 13:13:18 PST Date: Fri, 26 Feb 93 13:13:18 PST Message-Id: <9302262113.AA09418@SSD.intel.com> Received: by tualatin.SSD.intel.com (4.1/SMI-4.0) id AA01214; Fri, 26 Feb 93 13:13:15 PST From: Bob Knighten Sender: knighten@SSD.intel.com To: gropp@mcs.anl.gov Cc: mpi-envir@cs.utk.edu Subject: Re: elapsed time function In-Reply-To: <9302262057.AA23072@godzilla.mcs.anl.gov> References: <9302262057.AA23072@godzilla.mcs.anl.gov> Reply-To: knighten@SSD.intel.com (Bob Knighten) William Gropp writes: > POSIX will (probably) define such a function; Fortran 90 already has one. > It is my suggestion that we point people at these routines rather than add > to their number. > Bill Yes. POSIX P1003.4 already has defined the clock_settime(), clock_gettime() and clock_getres() for elapsed time measurement. P1003.4 also include both one-shot and periodic timers. -- Bob Robert L. Knighten | knighten@ssd.intel.com Intel Supercomputer Systems Division | 15201 N.W. Greenbrier Pkwy. | (503) 629-4315 Beaverton, Oregon 97006 | (503) 629-9147 [FAX] From owner-mpi-envir@CS.UTK.EDU Fri Feb 26 16:17:33 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA06972; Fri, 26 Feb 93 16:17:33 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA25912; Fri, 26 Feb 93 16:17:17 -0500 X-Resent-To: mpi-envir@CS.UTK.EDU ; Fri, 26 Feb 1993 16:17:15 EST Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from [134.9.48.4] by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA25904; Fri, 26 Feb 93 16:17:14 -0500 Received: by ocfmail.ocf.llnl.gov (4.1/SMI-4.0) id AA08828; Fri, 26 Feb 93 13:16:59 PST Date: Fri, 26 Feb 93 13:16:59 PST From: nessett@ocfmail.ocf.llnl.gov (Danny Nessett) Message-Id: <9302262116.AA08828@ocfmail.ocf.llnl.gov> To: mpi-envir@cs.utk.edu Subject: RE: elapsed time function >> POSIX will (probably) define such a function; Fortran 90 already has one. >> It is my suggestion that we point people at these routines rather than add >> to their number. >> Bill I agree. Dan From owner-mpi-envir@CS.UTK.EDU Thu Apr 8 15:25:06 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA16496; Thu, 8 Apr 93 15:25:06 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA28903; Thu, 8 Apr 93 15:24:25 -0400 X-Resent-To: mpi-envir@CS.UTK.EDU ; Thu, 8 Apr 1993 15:24:24 EDT Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA28835; Thu, 8 Apr 93 15:23:13 -0400 Received: from carbon.pnl.gov (130.20.188.38) by pnlg.pnl.gov; Thu, 8 Apr 93 12:13 PST Received: from sodium.pnl.gov by carbon.pnl.gov (4.1/SMI-4.1) id AA08178; Thu, 8 Apr 93 12:11:40 PDT Received: by sodium.pnl.gov (4.1/SMI-4.0) id AA19332; Thu, 8 Apr 93 12:11:37 PDT Date: Thu, 8 Apr 93 12:11:37 PDT From: rj_littlefield@pnlg.pnl.gov Subject: buffering proposal to mpi-envir To: geist@msr.EPM.ORNL.GOV, gropp@mcs.anl.gov, mpi-envir@CS.UTK.EDU, mpi-pt2pt@CS.UTK.EDU Cc: d39135@carbon.pnl.gov Message-Id: <9304081911.AA19332@sodium.pnl.gov> X-Envelope-To: mpi-pt2pt@CS.UTK.EDU, mpi-envir@CS.UTK.EDU Al Geist writes: > We will not serve our purpose if we declare every program > that requires buffering to be unsafe. > The vast majority of message-passing programs are written now > assuming some buffering. > Many programs suffer a big performance hit if they have to be > written with synchronous communication exclusivily. (to be "safe") I agree, and I have previously informally proposed a way to get around this problem in a system-independent fashion. This seems like a point-to-point issue, but the minutes of the Feb.17-19 meeting say that it was deferred to the Environment subcommittee. So, I hereby officially offer this proposal to the Environment subcommittee, with cross-posting to both groups. PROPOSAL TO SUPPORT MPI MESSAGE BUFFERING IN USER-PROVIDED SPACE 1. INTERFACE An application program can optionally provide buffer space for MPI's use: e.g. MPI_USER_PROVIDES_BUFFER (len,buffer) where IN len is the length of 'buffer', in bytes. OUT buffer is a scratch array of len bytes for MPI's use in buffering messages 2. FUNCTIONALITY If the above routine is called, then for subsequent sends, MPI must *act as if* message data is being buffered by the sender. That is, user-provided buffer space may be consumed by outgoing messages, but not by incoming ones. 3. POSSIBLE IMPLEMENTATION One approach is for MPI to simply transform all blocking sends into . copy data to (application-provided) buffer space . issue non-blocking send from the buffer copy . return to application and . check completion on subsequent MPI call(s) No doubt many optimizations within MPI are possible -- the proposal just requires that MPI act as described here. 4. DISCUSSION The intended usage is that an application will provide buffer space once, immediately after MPI initialization. This is a minimalist proposal. An application may not be able to compute tight bounds on how much buffer space is actually required, but at least the proposed interface provides a single point-of-modification to aid in porting. No mechanism is proposed for canceling MPI access to the user-provided buffer. No mechanism is proposed to support multiple buffer spaces, although this might be convenient for some libraries. Allowing user-provided buffer space to be bound to a particular context (per Lyndon's recent suggestion regarding 'secure' communications) might meet both of these needs, but further study of that extension would be required. --Rik Littlefield ---------------------------------------------------------------------- rj_littlefield@pnl.gov (alias 'd39135') Rik Littlefield Tel: 509-375-3927 Pacific Northwest Lab, MS K1-87 Fax: 509-375-6631 P.O.Box 999, Richland, WA 99352 From owner-mpi-envir@CS.UTK.EDU Fri Apr 9 22:58:07 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA11828; Fri, 9 Apr 93 22:58:07 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA20926; Fri, 9 Apr 93 22:57:52 -0400 X-Resent-To: mpi-envir@CS.UTK.EDU ; Fri, 9 Apr 1993 22:57:51 EDT Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA20883; Fri, 9 Apr 93 22:56:53 -0400 Received: from carbon.pnl.gov (130.20.188.38) by pnlg.pnl.gov; Fri, 9 Apr 93 19:45 PST Received: from sodium.pnl.gov by carbon.pnl.gov (4.1/SMI-4.1) id AA09922; Fri, 9 Apr 93 19:43:30 PDT Received: by sodium.pnl.gov (4.1/SMI-4.0) id AA22459; Fri, 9 Apr 93 19:43:26 PDT Date: Fri, 9 Apr 93 19:43:26 PDT From: rj_littlefield@pnlg.pnl.gov Subject: proposal -- context and tag limits To: lyndon@epcc.ed.ac.uk, mpi-context@cs.utk.edu, mpsears@newton.cs.sandia.gov Cc: d39135@carbon.pnl.gov, gropp@mcs.anl.gov, mpi-collcomm@cs.utk.edu, mpi-envir@cs.utk.edu, mpi-pt2pt@cs.utk.edu Message-Id: <9304100243.AA22459@sodium.pnl.gov> X-Envelope-To: mpi-pt2pt@cs.utk.edu, mpi-envir@cs.utk.edu, mpi-context@cs.utk.edu, mpi-collcomm@cs.utk.edu Lyndon et.al. write: > ... This seems to say that the bit > length of the envelope is fixed to some number of bits and the more > fields we want to cram into the envelope the shorter the bit lengths of > fields must be. Is there a good reason why the bit length of the > envelope shoud be fixed in this fashion, or perhaps are you arguing > that the bit length of the envelope should be as short as possible? > > > This is a question vendors might answer: how many > > context values and tag values are you willing to support on future > > platforms and how many are you willing to back fit on existing ones? > > Yes, this would be a good question for the vendors indeed. > > VENDORS - PLEASE PLEASE PLEASE DO ADVISE US ON THIS ONE. I wonder what kind of useful advice vendors could really give us. Hardware support boils down to a question of getting faster performance in exchange for some relatively small resource limit. But in almost every case I can think of, such limits are made functionally transparent to the user by automatic fallback to some slower mechanism without the resource limit. Thus we have.. fixed size register sets with compilers that spill to memory, fixed size caches with automatic flush/reload from main memory, fixed size TLB's with cpu traps for TLB reload, fixed size physical memory with virtual memory support, and so on. The only counterexample that pops to mind is fixed-length numeric values, for which reasonably well established conventions exist. No such conventions currently exist regarding tag and context values. ============ PROPOSAL TO ENVIRONMENT COMMITTEE ============== The MPI specification should 1. require that all MPI implementations provide functional support for specified generous limits (e.g., 32 bits) on tag and context values, and 2. suggest that vendors provide a system-specific mechanism by which the user can optionally specify tag and context limits that the program agrees to abide by. Even the form of these limits should remain unspecified since they may vary from system to system. ======================== END PROPOSAL ======================== Further discussion... If a vendor wishes to provide hardware support to enhance performance for some stricter limits, and if some people are able and willing to write programs within those limits, that's great. Those people on those machines will be lark happy. If the performance increase is substantial, and I'm on one of those machines, and my program is simple enough, I'll probably be one of those people. However, I am not aware of any system on which generous limits could not be supported, albeit with some loss of performance compared to staying within the (currently hypothetical) hardware-supported limits. Everyone I know would MUCH prefer suboptimal performance over HAVING to rewrite applications to conform to varying and inconsistent hard limits. Yes, I recall the many arguments against mandating specific limits. But, I claim that those arguments are misdirected. They are based on analogy to things like word length and memory size, which I again note are subject to well established conventions and principles. (You can't run big programs on small machines, and we pretty much agree about what "big" and "small" mean.) In the case of context and tag values, such conventions do not exist, and a very wide range of conflicting limits have been discussed at various times and places. I believe that we will not meet our goal of portability if we do not specify usable limits on tag and context values. --Rik ---------------------------------------------------------------------- rj_littlefield@pnl.gov (alias 'd39135') Rik Littlefield Tel: 509-375-3927 Pacific Northwest Lab, MS K1-87 Fax: 509-375-6631 P.O.Box 999, Richland, WA 99352 From owner-mpi-envir@CS.UTK.EDU Tue Apr 20 14:08:11 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA04431; Tue, 20 Apr 93 14:08:11 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA22251; Tue, 20 Apr 93 14:07:45 -0400 X-Resent-To: mpi-envir@CS.UTK.EDU ; Tue, 20 Apr 1993 14:07:40 EDT Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from daedalus.epcc.ed.ac.uk by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA22052; Tue, 20 Apr 93 14:06:10 -0400 Date: Tue, 20 Apr 93 19:06:06 BST Message-Id: <5045.9304201806@subnode.epcc.ed.ac.uk> From: L J Clarke Subject: Re: proposal -- context and tag limits To: rj_littlefield@pnlg.pnl.gov, mpi-context@cs.utk.edu In-Reply-To: rj_littlefield@pnlg.pnl.gov's message of Fri, 9 Apr 93 19:43:26 PDT Reply-To: lyndon@epcc.ed.ac.uk Cc: d39135@carbon.pnl.gov, gropp@mcs.anl.gov, mpi-collcomm@cs.utk.edu, mpi-envir@cs.utk.edu, mpi-pt2pt@cs.utk.edu Rik writes: > ============ PROPOSAL TO ENVIRONMENT COMMITTEE ============== Yes, I support the spirit and detail of the proposal. > Everyone I know would MUCH prefer suboptimal performance > over HAVING to rewrite applications to conform to varying and > inconsistent hard limits. Yes, this claim is true of everyone I know except for one very small community of academic scientists who will write their relatively simple programs from scratch for every machine on which they will do major scientific production runs. I know a whole lot more academics and commercials who just will not write programs from scratch in this way. > Yes, I recall the many arguments against mandating specific > limits. But, I claim that those arguments are misdirected. Indeed I believe that your claim is valid. > I believe that we will not meet our goal of portability > if we do not specify usable limits on tag and context values. I have the same belief. I also believe that if we fail on portability then we fail period. Best Wishes Lyndon /--------------------------------------------------------\ e||) | Lyndon J Clarke Edinburgh Parallel Computing Centre | e||) c||c | Tel: 031 650 5021 Email: lyndon@epcc.edinburgh.ac.uk | c||c \--------------------------------------------------------/ From owner-mpi-envir@CS.UTK.EDU Mon May 10 10:06:31 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-UTK) id AA04168; Mon, 10 May 93 10:06:31 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA22246; Mon, 10 May 93 10:06:19 -0400 X-Resent-To: mpi-envir@CS.UTK.EDU ; Mon, 10 May 1993 10:06:18 EDT Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA22236; Mon, 10 May 93 10:06:15 -0400 Received: from godzilla.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA24967 (5.65c/IDA-1.4.4 for ); Mon, 10 May 1993 09:06:46 -0500 From: William Gropp Received: by godzilla.mcs.anl.gov (4.1/GeneV4) id AA07986; Mon, 10 May 93 09:06:44 CDT Date: Mon, 10 May 93 09:06:44 CDT Message-Id: <9305101406.AA07986@godzilla.mcs.anl.gov> To: mpi-envir@cs.utk.edu Subject: Document for discussion Here is some text that I hope can serve as a starting point for our discussions. Since the context committee is still working things out, much of what we need to do here still depends on their choices. Please have a look at this and send any counter-proposals to this list. Thanks. Bill \documentstyle{report} \def\code#1{{\tt #1}} \def\setmargin#1{\begingroup\leftmargin #1 \advance\leftmargin\labelsep \leftmargini #1 \advance\leftmargini\labelsep} \def\esetmargin{\endgroup} \def\ibamount{3.0cm\relax} \def\ibaamount{4.0cm} \def\ibdamount{4.5cm} \def\ibcamount{2.0cm} \def\ib#1{\hbox to \ibamount{#1\hfil}} \def\iba#1{\hbox to \ibaamount{#1\hfil}} \def\ibd#1{\hbox to \ibdamount{#1\hfil}} \def\ibc#1{\hbox to \ibcamount{#1\hfil}} \begin{document} \chapter{MPI Environmental Management} There are three classes of routines in this chapter: MPI-specific, parallel programming, and routines that are not actually part of MPI but are documented here for completeness (such as routines for accessing the time-of-day). In addition, a discussion of MPI startup through the use of an initialization routine is included. \section{MPI-specific} These routines are specific to the operation of MPI. The first two routines are absolutely essential; they are: \setmargin{\ibdamount} \begin{description} \item[\ibd{MPI\_mytid}] My task id (opaque?) \item[\ibd{MPI\_numtids}] The number of task id's \end{description} \esetmargin MPI also contain routines for managing implementation limits in MPI. These routines will take a requested value and return the actual value, possibly including a value for ``not applicable.'' Such routines may include \setmargin{\ibdamount} \begin{description} \item[\ibd{MPI\_ValidTags}] The range (or other description) of valid tags \item[\ibd{MPI\_NumGroups}]Maximum number of groups \item[\ibd{MPI\_NumCntxs}]Maximum number of contexts \item[\ibd{MPI\_BufferSize}]Buffer space for unsent/unreceived messages \item[\ibd{MPI\_BufferManagement}]Buffer management \end{description} \esetmargin Note that all of these could return ``not applicable.'' More detailed routines for buffer management may also be provided. These could include: \setmargin{\ibdamount} \begin{description} \item[\ibd{MPI\_BufferSizePairs}]Between pairs of processors \item[\ibd{MPI\_BufferSizeAll}]Between ``me'' and all others \item[\ibd{MPI\_ExclusiveBuffer}]Dedicate a buffer of a specified size between a selected pair of processors \end{description} \esetmargin \begin{small}\narrower {\bf Discussion:} Another approach is to use a single routine that takes a query parameter and returns the requested data (or a ``not available''). The routines returning the maximum number of things (like groups) could instead return the maximum number of {\em new} things that could be created. All of these routines are meant to be advisory, particularly in a multithreaded environment, since they may be allocated dynamically.\par \end{small} There is also some desire for \setmargin{\ibdamount} \begin{description} \item[\ibd{MPI\_IOmode}]Whether IO is per node or per group/context \item[\ibd{MPI\_ErrorMode}]Various choices of error handling \end{description} \esetmargin Both of these, since they have global effect, are somewhat undesirable. They should return the previous mode; multithreaded applications will have to be very careful with these. It is important to be able to determine, both at run time and compile time, which of the ``optional'' capabilities the MPI implementation supports. These include \setmargin{\ibdamount} \begin{description} \item[\ibd{Ready Receiver}]Whether ready-receiver communication is simulated with regular sends and receives. \item[\ibd{Nonblocking}]Whether nonblocking operations are simulated with blocking sends and receives \item[\ibd{Heterogeneous}]Whether heterogeneous processing is supported (that is, this MPI works with heterogeneous systems) \end{description} \esetmargin In addition, it is useful to be able to unpack the various opaque objects into individual variables, such as buffer descriptors and contexts, and the message queue. Operations should include \setmargin{\ibdamount} \begin{description} \item[\ibd{MPI\_UnpackBufferDescriptor}] \item[\ibd{MPI\_DumpMessageQueue}] \item[\ibd{MPI\_UnpackContext}] \item[\ibd{MPI\_StatusOfHandles}] \end{description} \esetmargin \section{Parallel programming} This section includes routines that relate to parallel programming but are not MPI-specific. These may include such things as: \setmargin{\ibdamount} \begin{description} \item[\ibd{MPI\_GetNbrs}]Return the ``neighbors'' in the underlying physical topology \item[\ibd{MPI\_GetPhysNode}]Return a unique specifier for the actual (as opposed to virtual) node. This should be a character string for maximum flexibility. From this value it must be possible to identify a specific piece of hardware; possible values include ``processor 9 in rack 4 of mpp.cs.org'' and ``231'' (where 231 is the actual processor number in the running homogeneous system). A return value of ``not applicable'' is allowed but strongly discouraged. \item[\ibd{GetTopology}]Return physical network topology. Predefined values include \code{MPI\_mesh2d}, \code{MPI\_hypercube}, and \code{MPI\_omeganetwork}. \item[\ibd{MPI\_GetDistance}]Return the ``distance'' from one processor to another \item[\ibd{MPI\_GetDiameter}]Return the maximum ``distance'' from one processor to another. \end{description} \esetmargin Each of these routines may return ``not applicable;'' it is hoped that quality implementations will try and provide as much information as possible to the user. In addition, some of the ``get'' routines must be interpreted as providing approximate answers. For example, if groups and contexts are allocated from the user's address space, then any return value will be approximate. The exact meaning of ``distance'' is left to the implementation. In a system with only local connections, such as a mesh or hypercube, the distance should be the number of edges in the connection graph that a message would travel along. In a system with a flat interconnect, such as an omega or butterfly network, the distance could be zero from a node to itself and either one or the number of stages in the network for all other nodes. \section{non-MPI} This section contains routines that are {\em not\/} part of MPI but are included for completeness. These will include various routines for resource usage, time-of-day, etc. The POSIX interfaces will be summarized here. \section{Startup} One goal of MPI is to achieve {\em source code portability}. By this we mean that a program written using MPI and complying with the relevant language standards is portable as written, and must not require any source code changes when moved from one system to another. This explicitly does {\em not} say anything about how an MPI program is started or launched from the command line, nor what the user must do to set up the environment in which an MPI program will run. However, an implementation may require some setup to be performed before other MPI routines may be called. To provide for this, MPI includes an initialization routine \code{MPI\_init}. All MPI programs must contain a call to \code{MPI\_init}; this routine must be called before any other MPI routines are called. The format is: \begin{verbatim} start_ctx = MPI_init( ... args ... ); \end{verbatim} The \code{start\_ctx} can then be used in place of the \code{all\_ctx} (context of all processes). Multiple calls to \code{MPI\_init} (say first by a user-code and then by a software package called by the user's code) have meaning; they set up the context that will be used as the context of all processes. \begin{small}\narrower {\bf Discussion:} Several other approaches were discussed, including a replacement main program and a subroutine-call interface. I've included the \code{MPI\_init} version because it seemed to be the least objectionable and since workable versions of the other two may be written using \code{MPI\_init}. I'm not sure what arguments \code{MPI\_init} should take. One argument should be the initial context; if null, then the ``all context'' is assumed. There is some reason to pass the command line arguments \code{argc,argv} to \code{MPI\_init} in order to allow it to look for MPI-specific arguments (such as the number and name of processors to use in a heterogeneous environment), but this may be too controversial.\par We should also discuss the other posibilities. One, \code{MPI\_main}, is a main program replacement (users use \code{MPI\_main} instead of \code{main} in C and \code{PROGRAM name} in Fortran). Another approach is \code{MPI\_call} that calls a specified routine. Note that the \code{MPI\_main} interface can be implemented with \code{MPI\_call} through \begin{verbatim} int main( argc, argv ) int argc; char **argv; { return MPI_call( argc, argv, MPI_main ); } \end{verbatim} \par \end{small} \end{document} From owner-mpi-envir@CS.UTK.EDU Thu Sep 2 14:23:02 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib) id AA17186; Thu, 2 Sep 93 14:23:02 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA08585; Thu, 2 Sep 93 14:21:20 -0400 X-Resent-To: mpi-envir@CS.UTK.EDU ; Thu, 2 Sep 1993 14:21:13 EDT Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA08542; Thu, 2 Sep 93 14:20:40 -0400 Received: from snacker.pnl.gov (130.20.186.18) by pnlg.pnl.gov; Thu, 2 Sep 93 11:13 PDT Received: by snacker.pnl.gov (4.1/SMI-4.1) id AA20197; Thu, 2 Sep 93 11:10:48 PDT Date: Thu, 2 Sep 93 11:10:48 PDT From: d39135@snacker.pnl.gov Subject: safe buffering proposal To: als@cs.umd.edu, babb@cs.du.edu, bkg@llnl.gov, bob@lanl.gov, dcheng@nas.nasa.gov, dongarra@cs.utk.edu, elster@cs.cornell.edu, evdv@ama.caltech.edu, feenyj@vnet.endicott.ibm.com, gropp@mcs.anl.gov, gst@ornl.gov, hart@fsl.noaa.gov, heller@shell.com, hender@fsl.noaa.gov, howell@zach.fit.edu, igl@ecs.soton.ac.uk, jim@meiko.co.uk, joelw@convex.com, knighten@ssd.intel.com, lederman@super.org, lusk@mcs.anl.gov, lyndon@epcc.ed.ac.uk, moose@think.com, mpi-envir@cs.utk.edu, mpi-pt2pt@cs.utk.edu, nessett@llnl.gov, otto@cse.ogi.edu, peter@sun.math.usfca.edu, pmadams@ncube.com, rj_littlefield@pnlg.pnl.gov, snir@watson.ibm.com, tony@cs.msstate.edu, walker@msr.epm.ornl.gov, wkh@almaden.ibm.com Cc: d39135@snacker Message-Id: <9309021810.AA20197@snacker.pnl.gov> X-Envelope-To: dongarra@cs.utk.edu, mpi-envir@cs.utk.edu, mpi-pt2pt@cs.utk.edu PROPOSAL TO SUPPORT SAFE MPI MESSAGE BUFFERING IN USER-PROVIDED SPACE This is to formally submit the buffering proposal that I outlined at the last MPI meeting. I have copied it to all attendees of the last MPI meeting to make sure that all those who requested individual copies get them. People with long memories may note that an earlier version of this proposal appeared in mpi-pt2pt and mpi-envir on April 8. Relevant discussion occurred on Feb 8 and Apr 8-11 in mpi-pt2pt. The current proposal extends the April 8 version by associating buffer space with a communicator. This extension allows to . cancel MPI access to the user-provided buffer (by freeing the communicator), and . specify multiple buffers (by associating them with separate communicators). The complete proposal follows. 1. INTERFACE An application program can optionally provide space for MPI's use in buffering message data via the following call: MPI_USER_PROVIDES_BUFFER (comm,len,buffer) where IN comm is a communicator with which the buffer is to be associated; IN len is the length of 'buffer', in bytes; OUT buffer is a scratch array of len bytes for MPI's use in buffering messages. 2. FUNCTIONALITY By default, application programs are "unsafe" if they assume buffering. However, an application can make it safe to assume a specified amount of data buffering, by providing buffer space via the MPI_USER_PROVIDES_BUFFER call. If MPI_USER_PROVIDES_BUFFER is called, then for subsequent regular sends using the specified communicator, MPI must provide as much safety *as if* outgoing message data were buffered by the sending process, in the provided buffer space, using a circular contiguous-space allocation policy. That is, user-provided buffer space may be consumed by outgoing messages, but not by incoming ones, and MPI is not required to split any message if it must be copied to the buffer. Following the call to MPI_USER_PROVIDES_BUFFER, the application is not permitted to access the buffer until the corresponding communicator has been freed. Access to the provided buffer space is not inherited by communicators derived from the initially specified one. 3. POSSIBLE IMPLEMENTATION One approach is for MPI to simply transform all blocking sends on the specified communicator into . copy data to (application-provided) buffer space . issue non-blocking send from the buffer copy . return to application and . check completion on subsequent MPI call(s) No doubt many optimizations within MPI are possible -- the proposal just requires that MPI provide at least this much safety. 4. DISCUSSION This proposal does not provide guarantees on the *number* of outstanding sends, only their aggregate message length. Not guaranteeing number is consistent with MPI's general stance of treating limits as a quality-of-implementation issue. Guaranteeing the length is nominally at odds with MPI's general stance, but is felt to be an important compromise in order to support programs that assume current "common practice". It is unreasonable to simply declare existing programs to be "unsafe", when a simple method exists to make them safe. ---------------------------------------------------------------------- rj_littlefield@pnl.gov (alias 'd39135') Rik Littlefield Tel: 509-375-3927 Pacific Northwest Lab, MS K1-87 Fax: 509-375-6631 P.O.Box 999, Richland, WA 99352 From owner-mpi-envir@CS.UTK.EDU Thu Sep 2 20:32:39 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with SMTP (5.61+IDA+UTK-930125/2.8t-netlib) id AA18896; Thu, 2 Sep 93 20:32:39 -0400 Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA01694; Thu, 2 Sep 93 20:30:48 -0400 X-Resent-To: mpi-envir@CS.UTK.EDU ; Thu, 2 Sep 1993 20:30:47 EDT Errors-To: owner-mpi-envir@CS.UTK.EDU Received: from pnlg.pnl.gov by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK) id AA01681; Thu, 2 Sep 93 20:30:44 -0400 Received: from snacker.pnl.gov (130.20.186.18) by pnlg.pnl.gov; Thu, 2 Sep 93 17:30 PDT Received: by snacker.pnl.gov (4.1/SMI-4.1) id AA28225; Thu, 2 Sep 93 17:28:02 PDT Date: Thu, 2 Sep 93 17:28:02 PDT From: rj_littlefield@pnlg.pnl.gov Subject: Re: safe buffering proposal To: hender@macaw.fsl.noaa.gov, mpi-envir@cs.utk.edu, mpi-pt2pt@cs.utk.edu Cc: rj_littlefield@pnlg.pnl.gov Message-Id: <9309030028.AA28225@snacker.pnl.gov> X-Envelope-To: mpi-envir@cs.utk.edu, mpi-pt2pt@cs.utk.edu In non-reflected email, Tom Henderson wrote: > In general, I like your proposal. One thing is confusing me: > > > MPI_USER_PROVIDES_BUFFER (comm,len,buffer) > > > > where IN comm is a communicator with which the > > buffer is to be associated; > > > > IN len is the length of 'buffer', in bytes; > > > > OUT buffer is a scratch array of len bytes for MPI's > > use in buffering messages. > > Why is buffer an OUT argument? (I assume that the routine malloc()'s buffer > in user space.) Why would a user want a pointer to a scratch array s/he is > not allowed to use? > ... > Feel free to pass this on to pt2pt if you like. The 'buffer' array is allocated by the caller of MPI_USER_PROVIDES_BUFFER, in whatever way the caller finds convenient -- static, automatic, or malloc'd. The caller then passes a pointer to this array, to MPI_USER_PROVIDES_BUFFER. Trying to describe 'buffer' as IN or OUT may be more confusing than helpful in this case. MPI_USER_PROVIDES_DATA does not care about the contents on entry, and the application cannot use the contents later. It would be better to call the buffer SCRATCH. > If we have MPI_USER_PROVIDES_BUFFER(), do we still need the "synchronous" > communication mode? (As I recall the definition, synchronous mode is where the send is guaranteed not to return, until the matching receive is sure to complete also. Assuming that definition is right, then...) MPI_USER_PROVIDES_BUFFER complements synchronous mode, but does not replace it. Synchronous mode guarantees that an unsafe program will fail. MPI_USER_PROVIDES_BUFFER allows an unsafe program to be made safe, assuming that you know how much buffering is required. My proposal did not do so, but I suppose the interaction between synchronous mode and MPI_USER_PROVIDES_BUFFER should be specified. Possible specifications include: 1. Synchronous mode cannot be used with communicators for which MPI_USER_PROVIDES_BUFFER has been called. 2. The behavior of mixing synchronous mode and MPI_USER_PROVIDES_BUFFER is explicitly undefined. 3. On a communicator for which MPI_USER_PROVIDES_BUFFER has been called, a synchronous send will block waiting for a matching receive if and only if the user-provided buffer space has been exhausted, assuming a circular contiguous-space allocation policy for that buffer. Specification 3 is intended to guarantee failure of a program that is still unsafe, even though MPI_USER_PROVIDES_BUFFER has been called. (I.e., for which not enough buffer space has been provided to guarantee safety.) HOWEVER, I suspect that specification 3 is inadequate, and I would not be surprised even to find that its intent is impossible to accomplish for all possible programs. The reason is that any sort of buffering at least partially uncouples the dependencies between processes, and I imagine that it could be very difficult or impossible to guarantee safety of all possible execution sequences by observing only one. Personally, I would propose for now to use specification 2: explicitly undefined behavior. That way it can be fixed later if anyone cares and also figures out what it should be. --Rik ---------------------------------------------------------------------- rj_littlefield@pnl.gov (alias 'd39135') Rik Littlefield Tel: 509-375-3927 Pacific Northwest Lab, MS K1-87 Fax: 509-375-6631 P.O.Box 999, Richland, WA 99352 From owner-mpi-envir@CS.UTK.EDU Thu Jan 6 12:09:35 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib) id MAA01069; Thu, 6 Jan 1994 12:09:34 -0500 Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id MAA10948; Thu, 6 Jan 1994 12:09:55 -0500 X-Resent-To: mpi-envir@CS.UTK.EDU ; Thu, 6 Jan 1994 12:09:53 EST Errors-to: owner-mpi-envir@CS.UTK.EDU Received: from watson.ibm.com by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id MAA10934; Thu, 6 Jan 1994 12:09:48 -0500 Received: from WATSON by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 4507; Thu, 06 Jan 94 12:09:46 EST Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0" id 3155; Thu, 6 Jan 1994 12:09:44 EST Received: from snir.watson.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3) with TCP; Thu, 06 Jan 94 12:09:42 EST Received: by snir.watson.ibm.com (AIX 3.2/UCB 5.64/930311) id AA16501; Thu, 6 Jan 1994 12:09:37 -0500 From: snir@watson.ibm.com (Marc Snir) Message-Id: <9401061709.AA16501@snir.watson.ibm.com> To: mpi-envir@CS.UTK.EDU Subject: suggestions for changes 7.2 -- error handling Date: Thu, 06 Jan 94 12:09:37 -0500 Suggestions for changes in 7.2 -- Error Handling (suggested in part by Hubertus Franke) The current draft offers two mechanism for error handling that seem to overlap: error mode and error handler. Whatever effect one can achieve by seeting the rror mode, one can also achieve by setting the the error mode to ERRORSCALLUSERROUTINE and by providing a suitable error handle. Accordingly, we propose to have only one mechanism that allow to attach error handlers to communicators. The current draft seems to have deficient C and Fortran syntax: how does a Fortran function return a value which is a function (MPI_SET_ERRHANDLER)? How does an int C function return an error handler as its value (MPI_Set_errhandler)? The problem is more than syntax: since Fortran does not have pointers to functions, one needs to encapsulate an error handler into an opaque object, if one wishes to have a solution for Fortran. (In plain terms, one needs in Fortran an additional level of indirection that allows to identify an error handler with an integer.) We propose to have a new opaque error handler object. The additional overhead this imposes is that each user provided error handling procedure needs to be encapsulated into an opaque object (i.e., associated with an integer) before it can be used. Of course, this encapsulation can be trivial: return integer which is address of function. The alternative to this proposal would be to restrict error handling to C. The modified section (postscript) is appended below. - ------------------------------------------------------- %!PS-Adobe-2.0 %%Creator: dvips 5.47 Copyright 1986-91 Radical Eye Software %%Title: ERROR.DVI.* %%Pages: 4 1 %%BoundingBox: 0 0 612 792 %%EndComments %%BeginProcSet: texc.pro /TeXDict 250 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{ isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10 N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{ /vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{ statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{CharBuilder} N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail} B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data dup length 5 sub get} B /ch-height{ch-data dup length 4 sub get} B /ch-xoff{128 ch-data dup length 3 sub get sub} B /ch-yoff{ ch-data dup length 2 sub get 127 sub} B /ch-dx{ch-data dup length 1 sub get} B /ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]/id ch-image N /rw ch-width 7 add 8 idiv string N /rc 0 N /gp 0 N /cp 0 N{rc 0 ne{rc 1 sub /rc X rw}{G}ifelse}imagemask restore}B /G{{id gp get /gp gp 1 add N dup 18 mod S 18 idiv pl S get exec}loop}B /adv{cp add /cp X}B /chg{rw cp id gp 4 index getinterval putinterval dup gp add /gp X adv}B /nd{/cp 0 N rw exit}B /lsh{rw cp 2 copy get dup 0 eq{pop 1}{dup 255 eq{pop 254}{dup dup add 255 and S 1 and or}ifelse}ifelse put 1 adv}B /rsh{rw cp 2 copy get dup 0 eq{pop 128}{dup 255 eq{pop 127}{dup 2 idiv S 128 and or}ifelse}ifelse put 1 adv}B /clr{rw cp 2 index string putinterval adv}B /set{rw cp fillstr 0 4 index getinterval putinterval adv}B /fillstr 18 string 0 1 17{2 copy 255 put pop}for N /pl[{adv 1 chg}bind{adv 1 chg nd}bind{1 add chg}bind{1 add chg nd}bind{adv lsh}bind{ adv lsh nd}bind{adv rsh}bind{adv rsh nd}bind{1 add adv}bind{/rc X nd}bind{1 add set}bind{1 add clr}bind{adv 2 chg}bind{adv 2 chg nd}bind{pop nd}bind]N /D{ /cc X dup type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE S 1 string dup 0 3 index put cvn put} for}N /p /show load N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X /rulex X V}B /V statusdict begin /product where{pop product dup length 7 ge{0 7 getinterval (Display)eq}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /a{moveto}B /delta 0 N /tail{dup /delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail} B /c{-4 M}B /d{-3 M}B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0 rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{ /SS save N}B /eos{clear SS restore}B end %%EndProcSet TeXDict begin 1000 300 300 @start /Fa 13 117 df<127012F8A212F012E005057B840E> 46 D<48B512FE39001E001C150C1504A25BA490387808081500A21418495AEBFFF0EBF030A238 01E020A3EC001048481320A21540A248481380140115001407380F001FB512FE1F1F7D9E1F>69 D<48B5FC39001E03C0EC00E0157015785BA44913F0A2EC01E015C09038F00700141EEBFFF0EBF0 3848487E141E140E140F3803C01EA448485A1508A21510000F131C39FFF00C20C7EA07C01D207D 9E21>82 D97 D<1478EB03F8EB0070A414E0A4EB01C0A213 F1EA038938070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C135C3830 8C80380F070015207C9F17>100 D<137CEA01C2EA0701120E121C123CEA3802EA780CEA7BF0EA 7C0012F0A4127013011302EA3804EA1838EA07C010147C9315>I<1478EB019CEB033CA2EB0718 1400A2130EA53801FFE038001C00A45BA55BA65BA45B1201A25B1231007BC7FC12F31266123C16 29829F0E>I<13C0EA01E0A213C0C7FCA7120E12331223EA4380130012471287120EA35AA3EA38 40138012301270EA31001233121C0B1F7C9E0E>105 D108 D<381C0F80382630C0384740601380EB 0070A2008E13E0120EA3381C01C0A3EB03840038138814081307EB031000701330383001C01614 7C931A>110 D<137CEA01C338030180000E13C0121E001C13E0123C1278A338F003C0A3EB0780 1400EA700F130EEA3018EA1870EA07C013147C9317>I114 D116 D E /Fb 44 122 df<137013F0EA01E0EA03C0EA0780EA0F00121E121C5AA25AA45AA81270A47E A27E121E7EEA0780EA03C0EA01F0120013700C24799F18>40 D<126012F012787E7E7EEA078012 03EA01C0A2EA00E0A41370A813E0A4EA01C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18 >II<121C123E127E127F123F121F1207120E121E127C12F812 60080C788518>44 D<1230127812FCA2127812300606778518>46 D<1218123C127EA2123C1218 1200A81218123C127EA2123E121E120E121C123C127812F01260071A789318>59 D<137013F8A213D8A2EA01DCA3138CEA038EA41306EA0707A4380FFF80A3EA0E03A2381C01C0A2 387F07F038FF8FF8387F07F0151C7F9B18>65 D67 DIII<3801F1C0EA03FDEA0FFFEA1F0FEA1C031238 13011270A290C7FC5AA5EB0FF0131F130F387001C0A213031238A2EA1C07EA1F0FEA0FFFEA03FD EA01F1141C7E9B18>I<387F07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F0 38FF8FF8387F07F0151C7F9B18>II76 D<38FC01F8EAFE03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03 F8A3151C7F9B18>I<387E07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A313611371A2 13311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C7F9B18>III82 D<3803F380EA1FFF5AEA 7C0FEA7007EAE003A390C7FC12701278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00E0A212 6012E0130100F013C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5FCA238E07038 A400001300B2EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0EA0F01380783C03803 FF806C1300EA007C171C809B18>I<387F8FE0139F138F380E0700120FEA070E138EEA039C13DC EA01F8A26C5AA2137013F07F120113DCEA039E138EEA070F7F000E13801303001E13C0387F07F0 38FF8FF8387F07F0151C7F9B18>88 D95 D97 D99 DIII<3801E1 F03807FFF85A381E1E30381C0E00487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEB FFC04813E0387801F038700070481338A4007813F0EA7E03381FFFC06C13803801FC00151F7F93 18>I<127E12FE127E120EA5133EEBFF80000F13C013C1EB80E01300120EAB387FC3FC38FFE7FE 387FC3FC171C809B18>II108 D<387CE0E038FFFBF8EA7FFF381F1F1CEA1E1EA2EA1C1CAB387F1F1F39FFBFBF80397F1F1F0019 14819318>IIII<387F87E038FF9FF0387FBFF83803F878EBF030EBE0005BA25BA9EA 7FFEB5FC6C5A15147F9318>114 DI<487E1203A4 387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C1380EB3E0013197F9818>I<387E07 E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C13FE3801FCFC1714809318>I<387F8FF000 FF13F8007F13F0381E03C0000E1380A338070700A3EA038EA4EA01DCA3EA00F8A2137015147F93 18>I<387F8FF000FF13F8007F13F0380E01C0EB0380A21207EB0700A2EA03871386138EEA01CE A2EA00CCA213DC1378A31370A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>121 D E /Fc 47 122 df11 D<137E3801C180EA0301380703C0120EEB018090C7FC A5B512C0EA0E01B0387F87F8151D809C17>II<13401380EA0100120212065AA25AA25AA212701260A312E0AC1260 A312701230A27EA27EA27E12027EEA008013400A2A7D9E10>40 D<7E12407E7E12187EA27EA27E A213801201A313C0AC1380A312031300A21206A25AA25A12105A5A5A0A2A7E9E10>I<126012F0 A212701210A41220A212401280040C7C830C>44 DI<126012F0A21260 04047C830C>I63 D66 D<90381F8080EBE0613801801938070007000E13035A14015A00781300A2127000F01400A80070 14801278A212386CEB0100A26C13026C5B380180083800E030EB1FC0191E7E9C1E>IIII<90381F8080EBE06138 01801938070007000E13035A14015A00781300A2127000F01400A6ECFFF0EC0F80007013071278 A212387EA27E6C130B380180113800E06090381F80001C1E7E9C21>I73 D76 DIIII<3807E080EA1C19EA30 05EA7003EA600112E01300A36C13007E127CEA7FC0EA3FF8EA1FFEEA07FFC61380130FEB07C013 0313011280A300C01380A238E00300EAD002EACC0CEA83F8121E7E9C17>83 D<007FB512C038700F010060130000401440A200C014201280A300001400B1497E3803FFFC1B1C 7F9B1E>I<39FFF07FC0390F000E001404B3A26C5B138000035B12016C6C5AEB70C0011FC7FC1A 1D7E9B1F>I97 D<12FC121CAA137CEA1D86EA1E03381C018014C01300 14E0A614C013011480381E0300EA1906EA10F8131D7F9C17>II<133F1307AAEA03E7EA 0C17EA180F487E1270126012E0A61260127012306C5AEA0C373807C7E0131D7E9C17>II<13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA0E00B0EA7FE00F1D809C0D> II<12FC121CAA137C1387EA1D03001E1380121CAD38FF9FF0141D7F9C17>I<1218123CA21218 C7FCA712FC121CB0EAFF80091D7F9C0C>I<12FC121CAAEB3FC0EB0F00130C13085B5B5B13E012 1DEA1E70EA1C781338133C131C7F130F148038FF9FE0131D7F9C16>107 D<12FC121CB3A9EAFF80091D7F9C0C>I<39FC7E07E0391C838838391D019018001EEBE01C001C 13C0AD3AFF8FF8FF8021127F9124>IIII114 DI<1204A4120CA2121C123C EAFFE0EA1C00A91310A5120CEA0E20EA03C00C1A7F9910>I<38FC1F80EA1C03AD1307120CEA0E 1B3803E3F014127F9117>I<38FF07E0383C0380381C0100A2EA0E02A26C5AA3EA0388A213D8EA 01D0A2EA00E0A3134013127F9116>I<39FF3FCFE0393C0F0380381C07011500130B000E1382A2 1311000713C4A213203803A0E8A2EBC06800011370A2EB8030000013201B127F911E>I<387F8F F0380F03801400EA0702EA0384EA01C813D8EA00F01370137813F8139CEA010E1202EA06073804 0380381E07C038FF0FF81512809116>I<38FF07E0383C0380381C0100A2EA0E02A26C5AA3EA03 88A213D8EA01D0A2EA00E0A31340A25BA212F000F1C7FC12F31266123C131A7F9116>I E /Fd 15 118 df<127812FCA412781200A6127812FCA4127806127D910D>58 D68 D73 D97 D99 D101 D<121E123FA4121EC7FCA6B4FCA2121FAEEAFFE0A20B1E7F9D0E>105 D108 D<39FF0FC07E903831E18F3A1F40F20780D980FC13C0A2EB00F8AB3AFF E7FF3FF8A225127F9128>I<38FF0FC0EB31E0381F40F0EB80F8A21300AB38FFE7FFA218127F91 1B>II<38FF3F80EBE1E0381F80F0EB0078147C143C143EA614 3C147C1478EB80F0EBC1E0EB3F0090C7FCA6EAFFE0A2171A7F911B>I115 D<1203A45AA25AA2EA3FFC12FFEA1F00A9130CA4EA0F08EA0798EA03F00E1A7F9913> I<38FF07F8A2EA1F00AC1301120F380786FFEA01F818127F911B>I E /Fe 18 87 df<1230127812F81278127005057C840D>46 D50 D<1220383FFFE04813C014803840 0100EAC00212805B485A5B5B5BA25B120148C7FCA25A1206120EA2121E121CA2123CA35AA31230 131F799D17>55 D<141014181438A21478A214FCEB01BC143C130313021306EB043EEB081EA213 10A21320801340A290B5FCEB800FD80100138014071202A25AA2000C14C0123E39FF807FFC1E20 7E9F22>65 D<903801F80890380E0618903838013890387000F8484813784848137048481330A2 48C7FC5A121E003E1420003C1400127CA45AA5007814401580A27EEC0100001C13027E0006130C 6C13103801C0E0D8003FC7FC1D217B9F21>67 D<0007B5FC39007C01E090383C00F0157849133C A2151EA3151F5BA64848131E153EA3153C157C4848137815F0A2EC01E0EC03C0EC07803907800F 00143CB512E0201F7E9E23>I<0007B512F839007C0078013C133815185B1508A414089038F010 00A31430EBFFF0EBF0703801E020A4EC00081510485AA21520A2156015C0380780011407B61280 1D1F7E9E1F>I<903801FC0490380F030C90383C009C0170137C49133C48481338484813181207 48C7FC5A121E003E1410003C1400127CA45AA2EC7FFCEC03E000781301A2EC03C0A27EA2121C6C 13076CEB0B80380380113801E06039003F80001E217B9F24>71 D<3A07FFC7FFC03A007C00F800 013C1378A2495BA649485AA490B5FCEBF0014848485AA64848485AA6484848C7FC01C07F39FFF8 FFF8221F7E9E22>I<3807FFE038007C00133CA25BA65BA6485AA6485AA6485A7FEAFFFC131F7F 9E10>I<3807FFF0D8007EC7FC133CA25BA65BA6485AA41580EC0100EA03C0A25C14021406A238 07801E147CB512FC191F7E9E1C>76 DI<3A07FC01 FFC03A003E003E001518A2014F1310A2EB4780A2EB43C0A201835BEB81E0A2EB80F0A21478D801 005B147C143CA2141EA200026D5AA31407A20006130392C7FC000F7FEAFFE0221F7E9E22>II<0007B5FC39007C03C090383C01E0EC00F05B15F8A415F0EBF0 0115E0EC03C0EC0780EC0F00EBFFF8D801E0C7FCA6485AA6485A7FEAFFFC1D1F7E9E1F>I<3807 FFFC38007C0790383C03C0EC01E0137815F0A415E0EBF00315C0EC0780EC0F00143CEBFFF03801 E030143880A3141E3803C03EA51502D807801304EBC01F39FFFC0F18C7EA03E01F207E9E21>82 D<003FB512F0383C078000301430126039400F0010A212C01280A3D8001E1300A65BA65BA65B48 7E387FFFE01C1F7A9E21>84 D<39FFF003FE391F8000F86CC712601540A26D1380000713011500 1402A26D5A12035CA25C13E000015BA25CA26D5AD800F1C7FCA213F2A213FC137C1378A21370A2 13201F207A9E22>86 D E /Ff 10 58 df<121FEA3180EA60C0EA4040EAC060A8EA4040EA60C0 EA3180EA1F000B107F8F0F>48 D<120C123C12CC120CACEAFF8009107E8F0F>I<121FEA6180EA 40C0EA806012C01200A213C0EA0180EA030012065AEA10201220EA7FC012FF0B107F8F0F>I<12 1FEA2180EA60C0A2120013801201EA0F00EA00801340136012C0A2EA8040EA6080EA1F000B107F 8F0F>I<1203A25A5A120B121312331223124312C3EAFFE0EA0300A4EA1FE00B107F8F0F>II< EA0780EA1840EA30C0126013005A12CFEAF080EAE040EAC060A31240EA60C0EA3080EA1F000B10 7F8F0F>I<1240EA7FE013C0EA8080A2EA010012025AA2120C1208A21218A50B117E900F>I<121F EA3180EA60C0A3EA7180EA3F00120FEA3380EA61C0EAC060A3EA4040EA6080EA1F000B107F8F0F >I<121FEA3180EA60C0EAC0401360A3EA40E01221EA1E6012001340EA60C01380EA4300123E0B 107F8F0F>I E /Fg 35 118 df<137013E0EA01C0EA038012071300120E121EA25AA35AA41270 12F0AC12701278A47EA37EA2120E7E13801203EA01C0EA00E013700C2E7EA112>40 D<12E012707E7E121E120E7E1380A2EA03C0A3EA01E0A4120013F0AC13E01201A4EA03C0A3EA07 80A21300120E121E121C5A5A5A0C2E7DA112>I<1278A412181230A21260A212E0050A7D830D> 44 D<131FA2497E133BA2EB7BC013731371EBF1E013E113E000017FA213C000031378A2138000 077FA21300380FFFFEA3381E000FA24814801407A24814C01403A24814E01B207F9F1E>65 DIIII71 D<00F01378AEB512F8A338F00078AF15207B9F20>I<12F0B3AE04207C9F0D>I<12F0B3ABB51280 A311207B9F19>76 D<00F8EB01F86C1303A200F4147800F61307A300F3130EA3EB801EA200F113 1CEBC03CA200F01338A2EBE078A2EB6070EB70F0A2EB30E01339A2EB19C0A3EB0F80A390C7FC1D 207B9F28>I<00FC13787EA212F612F7A2EAF380A313C012F113E0A212F013F01370A213781338 133CA2131C131E130EA31307A2130314F8A2130115207B9F20>I<133FEBFFC0000313F03807E1 F8380F807C48487E001E131E487FA248EB0780A348EB03C0A96C130700781480A36CEB0F00A26C 131E001F133E6C6C5A3807E1F86CB45AC613C0013FC7FC1A227DA021>II82 DII97 D99 DII<137EEA01FE1203EA078013005AA7 EAFFF0A3EA0F00B10F20809F0E>I<3803E0F0EA0FFF5A383E3E00EA3C1E487EA5EA3C1EEA3E3E EA1FFC485AEA33E00030C7FC1238EA3FFEEBFF806C13C04813E0387803F0EAF000A3EAF801387E 07E0383FFFC0000F1300EA03FC141E7F9317>I<12F0ACEAF1F8EAF3FCEAF7FEEAFC1FEAF80FA2 12F0AE10207D9F17>I<12F0A41200A812F0B3A204207D9F0B>I<12F0B3AE04207D9F0B>108 D<39F0FC07E039F3FE1FF039F7FF3FF839FE0FF07C39F807C03CA200F01380AE1E147D9327>I< EAF1F8EAF3FCEAF7FEEAFC1FEAF80FA212F0AE10147D9317>II114 DI<121EA6EAFFF0A3EA1E00AD1320EA1FF0120FEA07C00C1A7F9910>II E /Fh 36 118 df<13E0EA01C0EA0380EA0700120EA2 5AA25AA35AA45AAC1270A47EA37EA27EA27EEA0380EA01C0EA00E00B2A7E9E10>40 D<12E012707E7E7EA27EA2EA0380A3EA01C0A4EA00E0ACEA01C0A4EA0380A3EA0700A2120EA25A 5A5A5A0B2A7E9E10>II<131C133EA2132E1367A2EBE78013C713C3 00017F1383138100037FA248C67EA21206000E1378380FFFF8A2381C003CA2121800387FA24813 1F80A248EB0780191D7F9C1C>65 DIII< B512C0A200F0C7FCABB51280A200F0C7FCACB512C0A2121D7C9C19>II I<00F013F0ADB5FCA2EAF000AE141D7C9C1D>I<12F0B3AB041D7C9C0C>I<12F0B3A9EAFFFEA20F 1D7C9C16>76 D<00FCEB07E0A300EE130DA300E71319A3EB803900E31331EBC071A200E11361A2 EBE0E1A200E013C113F1EB7181A3EB3B01A3131EA313001B1D7C9C24>I<00FC1370A27E12EE12 EF12E7A2138012E313C0A2EAE1E0A212E013F013701378A2133CA2131C131E130EA2130F130714 F01303A2141D7C9C1D>I<133F3801FFE0487F3807C0F8380F807C381E001E003E131F003C7F48 EB0780A348EB03C0A86C130700781480A2007C130F003C1400003E5B6C133E6C6C5A6C6C5A6CB4 5A6C5BD8003FC7FC1A1F7E9D1F>II82 DII<00F01370B3A5007813E0A238 3C01C0381E0380EA0F073807FE00EA01F8141E7C9C1D>I<00F001F0137080A2007801B81360D9 019C13E0A3D83C03EB01C0141E140E001E15809038070F03A2EB0607000F1500010E1387130C00 07EB0386A2018C138E019813CE0003EB01CCA3D801D013C8EC00D801F013F85B00001470241D7F 9C27>87 D97 D99 D<130EABEA0F8EEA1FEEEA3FFEEA7C3EEA700EA212 E0A612F0EA701EEA7C3EEA3FFEEA1FEEEA0F8E0F1D7E9C15>II<13FC12 011203EA0700120EA7EAFFE0A2EA0E00B00E1D809C0D>I<3803C3C0EA0FFF5A381C3800487EA5 6C5AEA1FF85BEA3BC00038C7FCA2EA1FFC13FF481380EA700738E001C0A3EAF003387C0F80383F FF006C5AEA07F8121B7F9115>I<12F0A41200A71270B2041D7E9C0A>105 D<12E0B3AB031D7D9C0A>108 D110 DI114 DI<121CA6EAFFE0A2EA1C00AC1320EA1FF0120FEA07C00C187F970F> II E /Fi 11 121 df73 D77 D80 D99 D101 D<121C123E123F5A7E123E121CC7FCA6B4FCA2121FB0EAFFE0A20B217EA00E>105 D<38FE0FC0EB3FE0381E61F0EBC0F81380EA1F00AD38FFE3FFA218147D931D>110 D<48B4FC000713C0381F83F0383E00F8A248137CA200FC137EA6007C137CA26C13F8A2381F83F0 3807FFC00001130017147F931A>I<38FF1FC0EB7FF0381FE1F8EB80FCEB007EA2143E143FA614 3E147E147CEB80FCEBC1F8EB7FE0EB1F8090C7FCA7EAFFE0A2181D7E931D>I116 D<38FFE1FFA2380F80706C6C5A6D5A3803E180EA01F36CB4C7FC137E133E133F497E136FEBC7C0 380183E0380381F0380701F8380E00FC39FF81FF80A219147F931C>120 D E /Fj 56 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000A7B6 12803907007000B2387FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701A290C7FC A6B512E0EA0700B2387FC3FE1720809F19>II<90381F81F89038F04F043901C07C06390380F80FEB00F05A0270C7 FCA6B7FC3907007007B23A7FE3FE3FF02420809F26>I34 D<132013401380EA0100120212065AA25A A25AA312701260A312E0AC1260A312701230A37EA27EA27E12027EEA0080134013200B2E7DA112 >40 D<7E12407E7E7E120C7EA27EA2EA0180A313C01200A313E0AC13C0A312011380A3EA0300A2 1206A25A12085A5A5A5A0B2E7DA112>I<127012F812FCA212741204A31208A21210A212201240 060E7C840D>44 DI<127012F8A3127005057C840D>I50 DI<1306A2130EA2131E132EA2134E 138EA2EA010E1202A212041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17 >I<127012F8A312701200AA127012F8A3127005147C930D>58 D<127012F8A312701200AA1270 12F012F8A212781208A31210A31220A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10F0 A3EB2078A3497EA3497EA2EBFFFE3801000FA30002EB0780A348EB03C0120E001FEB07E039FFC0 3FFE1F207F9F22>65 D<90380FC04090387030C03801C0093803800538070003000E1301001E13 00121C123C007C1440A2127800F81400A91278007C1440A2123C121C001E1480120E6CEB010038 0380026C6C5A38007038EB0FC01A217D9F21>67 D69 DI73 D 77 D<39FF803FF83907C007C0EC03803905E00100A2EA04F01378A2133CA2131E130FA2EB0781 A2EB03C1EB01E1A2EB00F1A21479143DA2141FA28080A2000E7F121F38FFE0011D1F7E9E22>I< EB1F80EBF0F03801C0383807801E48487E000E7F001E148048EB03C0A2007C14E000781301A200 F814F0A9007814E0007C1303A2003C14C0A26CEB0780000E1400000F5B3807801E3801C0383800 F0F0EB1F801C217D9F23>II82 D<3807E080EA0C19EA1007EA3003EA6001A212E01300A36C1300A21278127FEA 3FF0EA1FFC6C7EEA03FF38001F801307EB03C0A213011280A400C01380130300E01300EAF006EA CE0CEA81F812217D9F19>I<007FB512E038780F010060EB006000401420A200C0143000801410 A400001400B3497E3807FFFE1C1F7E9E21>I<39FFFC3FF8390FC007C03907800380EC0100B3A3 00031302A2EA01C05C6C6C5AEB7018EB3820EB0FC01D207E9E22>I<397FF81FF8390FE00FC039 07C00700000313026C6C5AEBF00C00001308EB7810137CEB3C20EB3E40131E6D5AA213076D7E49 7E1305EB09F0EB18F8EB1078EB207CEB603CEB401EEB801F00017F9038000780000214C0000713 03391F8007E039FFE01FFE1F1F7F9E22>88 D92 D97 D<120E12FE120EAA133EEBC380380F01C0EB00E0120E1470A21478A61470A214E0120F380D01C0 380CC300EA083E15207F9F19>IIII<137C13C6EA018F1203EA07061300A7EAFFF0EA0700B2EA7FF01020809F0E>I<14E03803E330 EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE381FFF 806C13C0383001E038600070481330A4006013606C13C0381C03803803FC00141F7F9417>I<12 0E12FE120EAA133E1343EB8180380F01C0A2120EAE38FFE7FC16207F9F19>I<121C121E123E12 1E121CC7FCA6120E127E120EB1EAFFC00A1F809E0C>I<13E0EA01F0A3EA00E01300A61370EA07 F012001370B3A31260EAF06013C0EA6180EA3F000C28829E0E>I<120E12FE120EAAEB0FF0EB03 C0140013025B5B5B1330137013F8EA0F38EA0E1C131E130E7F1480130314C014E038FFCFF81520 7F9F18>I<120E12FE120EB3ABEAFFE00B20809F0C>I<390E1F01F039FE618618390E81C81C390F 00F00EA2000E13E0AE3AFFE7FE7FE023147F9326>IIII<3803E080EA0619EA1C05EA3C07EA38031278127012F0A61270127812381307EA1C0BEA0E13 EA03E3EA0003A8EB3FF8151D7E9318>III<1202A31206A2120EA2123EEAFFF8EA0E00AB13 08A5EA06101203EA01E00D1C7F9B12>I<380E01C0EAFE1FEA0E01AE13031206EA030D3801F1FC 16147F9319>I<38FF83F8381E01E0381C00C06C1380A338070100A2EA0382A3EA01C4A213ECEA 00E8A21370A3132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214 C0D807071380130414E039038861001471EBC8733801D032143A3800F03CEBE01CA2EB6018EB40 081E147F9321>I<387FC3FC380F01E0000713C0148038038100EA01C2EA00E413EC1378133813 3C137C134E1387EA010738030380380201C0000613E0121E38FF07FE1714809318>I<38FF83F8 381E01E0381C00C06C1380A338070100A2EA0382A3EA01C4A213ECEA00E8A21370A31320A25BA3 EAF080A200F1C7FC1262123C151D7F9318>II E /Fk 13 115 df<12F8A505057A8411>46 D<13FE3803FFC04813E04813F0381F03F8383C00FC 0038137E0078133E127000F0131FA212601220C7FCA3143EA2147CA214F8EB01F014E0EB03C0EB 0780EB0F00131E5B5B5B485A485A485A48C7FC121E5A007FB5FCA418287EA71E>50 D55 D69 D97 D<143EAF13FCEA03FF4813FE5AEA1FC1383F007E003E133E5AA212FC5AA77E127CA26C137E003F 13FEEA1FC1EA0FFF6C13BE6C133EEA00FC172A7EA91F>100 D<9038F807803903FE7FC0000FB5 FC5A903807C000383E03E0A2486C7EA66C485AA26C485A13FF485BD83BFEC7FCEA38F80078C8FC A27E383FFFC014F86C7F80487F387C007F48EB1F80140FA36C131F007EEB3F00383F80FE13FF00 0F13F86C5BC613801A287E9A1E>103 D<12F8AF133FEBFF8000FB13C0B512E0130738FE03F0EA FC01A312F8B2142A7BA91F>I<12F8A51200AA12F8B3A9052A7CA90E>I<12F8B3B3A6052A7CA90E >108 D110 D<137F3801FFC0000713F0487F381FC1FC383F007E003E133E487FA200787F00F81480A7007CEB 1F00A2007E5B003E133E003F137E381FC1FC6CB45A6C5B000113C06C6CC7FC191B7E9A1E>I114 D E /Fl 15 119 df69 D73 D77 D80 D<903807FFFC017FEBFFC048B612F84815FE3A07FE001FFF6D010313C0486D6C7F6F7F167F83A2 6C90C76C7EA26C5AEA00F890C8FCA40207B5FC91B6FC1307013FEBE03F9038FFFE00000313F048 13C04890C7FC485A485A485AA2485AA5167F6C6C14FFED01EF6C6C130301FF903807CFFF000F90 26C03F8F13F86C90B5000713FC0001ECFC036C6CEBF0010103903980007FF8362E7DAD3A>97 D101 D103 D<13FC48B4FC4813804813C05A4813E0A66C13C07E6C13806C1300EA00FC90C7FCABEB7F C0B5FCA512037EB3B0B6FCA518497CC820>105 D108 D<90287FC001FFC0ECFFE0B5010F01F8010713FC033F01FE011F13FF92B6017F 809126C1FC07902680FE037F9126C3E0039026C1F0017F00039026C7C0019038C3E0006CD9CF00 DAE7808002DE6D01EFC7127F02DC15EE02FC03FE814A5D4A5DA34A5DB3A8B6D8C07F9026FFE03F B512F0A55C2E7CAD63>I<903A7FC001FFC0B5010F13F8033F13FE92B6FC9126C1FC077F9126C3 E0037F00039038C7C0016CD9CF008002DE7F14DC02FC815C5CA35CB3A8B6D8C07FEBFFE0A53B2E 7CAD42>II<9039FF803F80B5EBFFF00283 13FC02877F91388FC3FF15070003D99E0F13806C13BC14B814F814F06F1300A24A6C5AED00F893 C7FCA25CB3A6B612E0A5292E7CAD31>114 D116 D118 D E /Fm 8 117 df<121E121F13F090B712C0A35A178017005E5E5E5E485D007CC712074B5A00 784A5A4BC7FC157E48147C5D1401C7485A4A5A5D140F4A5AA24AC8FC5CA25C5C1301A31303A249 5AA4130FA5131FA96D5A6D5A6D5A2A3B7AB932>55 D67 D97 D<903801FFC0010F13F8013F13FE9038FF80FF3A01FE003F80D807FCEB1FC04848EB0FE016F048 481307003F15F8A2485AED03FCA312FF90B6FCA301E0C8FCA4127FA3123F6D143C121FA26C6C14 786C6C14F86C6CEB01F06C6CEB07E06C9038C03FC0013FB51200010713FC010013E026267DA52D >101 D<13FFB5FCA412077EB0ED7FC0913801FFF802077F91380F03FE91381C01FF023014804A 7E02E014C05C5CA391C7FCB3A4B5D8FC3F13FFA4303C7CBB37>104 D<9039FF01FF80B5000F13 F0023F13FC9138FE03FFDAF0001380000301C0EB7FC04AEB3FE091C713F0EE1FF817FC160F17FE A2160717FFA917FEA2160F17FCA2EE1FF8A2EE3FF06E14E06EEB7FC09139F001FF80DAFC071300 91383FFFFC020F13F0020190C7FC91C9FCADB512FCA430377DA537>112 D<9038FE03F000FFEB0FFE4A7E91383C3F809138707FC00007903860FFE0000313E05C13FF9138 807FC0A2ED3F80ED0E0091C8FCB3A3B512FEA423267DA529>114 D116 D E end %%EndProlog %%BeginSetup %%Feature: *Resolution 300 TeXDict begin %%EndSetup %%Page: 1 1 bop 75 359 a Fm(Chapter)32 b(7)75 568 y Fl(MPI)40 b(En)m(vironmen)m(tal)h (Managemen)m(t)75 811 y Fk(7.2)59 b(Erro)n(r)21 b(handling)75 917 y Fj(This)15 b(section)h(con)o(tains)f(the)g(suggested)g(POSIX)g(binding) i(for)e(error)f(handling)i(in)g(MPI.)e(MPI)h(imple-)75 974 y(men)o(tations)d(that)h(do)f(not)h(run)g(in)g(a)g(POSIX-complian)o(t)i(en)o (vironmen)o(t)e(ma)o(y)f(need)h(to)g(use)g(alternativ)o(e)75 1030 y(mec)o(hanisms.)166 1089 y(An)k(MPI)h(implemen)o(tation)g(cannot)f(or)g (ma)o(y)f(c)o(ho)q(ose)i(not)f(to)f(handle)j(some)e(errors)f(that)h(o)q(ccur) 75 1145 y(during)23 b(MPI)f(calls.)41 b(These)22 b(can)g(include)i(errors)d (that)h(generate)f(exceptions)i(or)f(traps,)g(suc)o(h)g(as)75 1202 y(\015oating)e(p)q(oin)o(t)h(errors)e(or)h(access)g(violations.)36 b(The)20 b(set)g(of)g(errors)f(that)h(are)g(handled)h(b)o(y)f(MPI)g(is)75 1258 y(implemen)o(tation-dep)q(endent.)i(Eac)o(h)15 b(suc)o(h)g(error)g (generates)g(an)g Fi(MPI)h(exception)p Fj(.)166 1317 y(A)g(user)h(can)f(asso) q(ciate)h(an)f(error)g(handler)h(with)g(a)f(comm)o(unicator.)23 b(The)16 b(sp)q(eci\014ed)j(error)d(han-)75 1373 y(dling)k(routine)f(will)i (b)q(e)e(used)g(for)f(an)o(y)h(MPI)f(exception)i(that)e(o)q(ccurs)h(during)g (a)g(call)h(to)e(MPI)g(for)g(a)75 1430 y(comm)o(unication)d(with)f(this)g (comm)o(unicator.)19 b(MPI)14 b(calls)h(that)e(are)g(not)h(related)g(to)f(an) o(y)g(comm)o(unica-)75 1486 y(tor)e(are)h(considered)i(to)d(b)q(e)i(attac)o (hed)f(to)f(the)h(comm)o(unicator)g Fh(MPI)p 1230 1486 13 2 v 15 w(COMM)p 1375 1486 V 14 w(W)o(ORLD)p Fj(.)g(The)g(attac)o(hmen)o(t)75 1542 y(of)i(error)g(handlers)i(to)e(comm)o(unicators)g(is)i(purely)f(lo)q (cal:)21 b(di\013eren)o(t)15 b(pro)q(cesses)g(ma)o(y)f(attac)o(h)g (di\013eren)o(t)75 1599 y(error)g(handlers)j(to)d(the)i(same)e(comm)o (unicator.)166 1658 y(A)j(newly)i(created)e(comm)o(unicator)h(inherits)g(the) g(error)f(handler)h(that)f(is)h(asso)q(ciated)g(with)g(the)75 1714 y(\\paren)o(t")h(comm)o(unicator.)32 b(In)20 b(particular,)h(the)f(user) g(can)f(sp)q(ecify)i(a)e(\\global")h(error)f(handler)i(for)75 1770 y(all)d(comm)o(unicators)e(b)o(y)h(asso)q(ciating)g(this)g(handler)h (with)f(the)g(comm)o(unicator)f Fh(MPI)p 1570 1770 V 14 w(COMM)p 1714 1770 V 15 w(W)o(ORLD)75 1827 y Fj(immediately)h(after)d(initialization.) 166 1886 y(Sev)o(eral)i(prede\014ned)g(error)f(handlers)h(are)f(a)o(v)m (ailable)i(in)f(MPI:)75 1988 y Fh(MPI)p 152 1988 V 14 w(ERRORSF)m(A)m(T)m(AL) k Fj(The)14 b(handler,)h(when)g(called,)g(causes)f(the)g(program)f(to)h(ab)q (ort)f(on)h(all)h(executing)189 2045 y(pro)q(cesses.)22 b(This)16 b(has)g(the)g(same)g(e\013ect)f(as)h(if)g Fg(MPI)p 1089 2045 14 2 v 16 w(ABORT)h Fj(w)o(as)e(called)j(b)o(y)e(the)g(pro)q(cess)g(that)189 2101 y(in)o(v)o(ok)o(ed)f(the)g(handler.)75 2204 y Fh(MPI)p 152 2204 13 2 v 14 w(ERRORSRETURN)21 b Fj(The)16 b(handler)g(has)f(no)g (e\013ect.)166 2306 y(Implemen)o(tations)k(ma)o(y)f(pro)o(vide)h(additional)h (prede\014ned)g(error)d(handlers)j(and)e(programmers)75 2363 y(can)d(co)q(de)h(their)g(o)o(wn)f(error)f(handlers.)166 2421 y(The)h(error)e(handler)j Fh(MPI)p 610 2421 V 14 w(ERRORSF)m(A)m(T)m(AL)c Fj(is)j(asso)q(ciated)g(b)o(y)f(default)h(with)g Fh(MPI)p 1570 2421 V 14 w(COMM)p 1714 2421 V 15 w(W)o(ORLD)75 2478 y Fj(after)f (initialization.)22 b(Th)o(us,)14 b(if)h(the)f(user)h(c)o(ho)q(oses)f(not)g (to)g(con)o(trol)g(error)f(handling,)j(ev)o(ery)e(error)g(that)75 2534 y(MPI)j(handles)h(is)f(treated)g(as)f(fatal.)25 b(Since)18 b(\(almost\))e(all)i(MPI)f(calls)h(return)f(an)f(error)h(co)q(de,)g(a)g(user) 75 2591 y(ma)o(y)e(c)o(ho)q(ose)h(to)g(handle)h(errors)e(in)i(its)f(main)g (co)q(de,)h(b)o(y)f(testing)g(the)g(return)g(co)q(de)g(of)g(MPI)g(calls)h (and)75 2647 y(executing)f(a)e(suitable)h(reco)o(v)o(ery)f(co)q(de)h(when)g (the)g(call)g(w)o(as)f(not)g(successful.)21 b(In)15 b(suc)o(h)g(case,)f(the)h (error)75 2704 y(handler)g Fh(MPI)p 315 2704 V 15 w(ERRORSRETURN)d Fj(will)k(b)q(e)f(used.)20 b(Usually)c(it)e(is)h(more)f(con)o(v)o(enien)o(t)h (and)f(more)g(e\016cien)o(t)-32 46 y Ff(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 2 2 bop 75 -100 a Fj(2)578 b Fe(CHAPTER)16 b(7.)34 b(MPI)16 b(ENVIR)o(ONMENT)l (AL)g(MANA)o(GEMENT)75 45 y Fj(not)d(to)g(test)h(for)f(errors)g(after)g(eac)o (h)g(MPI)h(call,)h(and)f(ha)o(v)o(e)f(suc)o(h)h(error)f(handled)i(b)o(y)f(a)f (non)h(trivial)h(MPI)75 102 y(error)f(handler.)166 251 y Fd(Discussion:)43 b Fc(Do)15 b(w)o(e)i(sp)q(ecify)f(that)h Fh(MPI)p 884 251 13 2 v 14 w(ERRORSF)m(A)m(T)m(AL)c Fc(should)j(generate)h(a)f Fh(SIGABRT)f Fc(signal)g(at)75 307 y(eac)o(h)i(executing)g(pro)q(cess?)27 b(Is)17 b(that)f(the)h(desired)g(e\013ect?)27 b(\(e.g.,)16 b(so)g(as)h(to)f(allo)o(w)f(a)h(debugger)h(to)f(tak)o(e)g(o)o(v)o(er.\))75 364 y(Same)d(remark)g(applies)g(to)h Fh(MPI)p 594 364 V 14 w(ABORT)p Fc(.)166 513 y Fj(An)j(MPI)g(error)f(handler)i(is)g(an)e(opaque)h (ob)s(ject,)g(whic)o(h)g(is)h(accessed)f(b)o(y)g(a)g(handle.)26 b(MPI)17 b(calls)75 569 y(are)d(pro)o(vided)h(to)f(create)h(new)f(error)g (handlers,)h(to)f(asso)q(ciate)h(error)e(handlers)j(with)f(comm)o(unicators,) 75 626 y(and)g(to)g(test)g(whic)o(h)h(error)e(handler)i(is)g(asso)q(ciated)g (with)f(a)g(comm)o(unicator.)75 739 y Fg(MPI)p 160 739 14 2 v 16 w(CREA)l(TE)p 345 739 V 17 w(ERRHANDLER\()i(function,)f(errhandler)f(\)) 117 827 y Fc(IN)155 b Fg(function)434 b Fc(user)15 b(de\014ned)g(error)g (handling)e(pro)q(cedure)117 922 y(OUT)108 b Fg(errhandler)397 b Fc(MPI)14 b(error)h(handler)f(\(handle\))75 1056 y Fb(int)23 b(MPI)p 245 1056 15 2 v 17 w(Create)p 406 1056 V 17 w(errhandler\(MPI)p 759 1056 V 15 w(Handlerfunction)f(*function,)393 1113 y(MPI)p 468 1113 V 17 w(Errhandler)g(*errhandler\))75 1209 y(MPI)p 150 1209 V 17 w(CREATE)p 311 1209 V 16 w(ERRHANDLER\(FUNCTION,)f(HANDLER,)i (IERROR\))170 1266 y(EXTERNAL)g(FUNCTION)170 1322 y(INTEGER)g(ERRHANDLER,)g (IERROR)166 1418 y Fj(Register)12 b(the)g(user)g(routine)g Fg(handler)p 802 1418 14 2 v 18 w(function)h Fj(for)e(use)h(as)f(an)h(MPI)g (exception)h(handler.)19 b(Returns)75 1475 y(in)d Fg(errhandler)f Fj(a)g(handle)i(to)d(the)i(registered)f(exception)h(handler.)166 1624 y Fd(Implemen)o(tati)o(on)c(note:)36 b Fc(The)15 b(handle)f(returned)h (ma)o(y)d(con)o(tain)i(the)g(address)h(of)f(the)g(error)h(handling)75 1680 y(routine.)j(Suc)o(h)13 b(call)f(is)h(sup)q(er\015uous)h(in)f(C,)f(whic) o(h)h(has)g(a)f(referencing)i(op)q(erator,)g(but)f(is)f(necessary)j(in)e(F)m (ortran.)166 1886 y Fj(The)j(user)h(routine)f(should)i(b)q(e)f(a)e(C)h (function)h(of)f(t)o(yp)q(e)h Fh(MPI)p 1224 1886 13 2 v 14 w(Handler)p 1371 1886 V 17 w(function)p Fj(,)g(whic)o(h)g(is)g(de\014ned)75 1943 y(as)75 2109 y Fb(typedef)23 b(void)g(\(MPI_Handler_function\)\(MPI_C)o (omm,)e(int)i(,)h(...\);)75 2265 y Fj(The)14 b(\014rst)f(argumen)o(t)f(is)i (the)g(comm)o(unicator)f(in)h(use.)19 b(The)14 b(second)g(is)g(the)f(error)g (co)q(de)h(to)f(b)q(e)h(returned)75 2322 y(b)o(y)k(the)h(MPI)g(routine.)30 b(The)19 b(remaining)h(argumen)o(ts)d(are)h(\\)p Fb(varargs)p Fj(")f(argumen)o(ts)h(whose)h(n)o(um)o(b)q(er)75 2378 y(and)g(meaning)h(is)g (implemen)o(tation-dep)q(enden)o(t.)34 b(An)20 b(implemen)o(tation)g(should)g (clearly)h(do)q(cumen)o(t)75 2434 y(these)15 b(argumen)o(ts.)189 2591 y Fa(R)n(ationale.)72 b Fj(The)21 b(v)m(ariable)h(argumen)o(t)e(list)h (is)g(pro)o(vided)h(b)q(ecause)f(it)g(pro)o(vides)g(an)g(ANSI-)189 2647 y(standard)13 b(ho)q(ok)h(for)g(pro)o(viding)h(additional)g(information) f(to)g(the)g(error)f(handler;)i(without)g(this)189 2704 y(ho)q(ok,)f(ANSI)i (C)f(prohibits)i(additional)f(argumen)o(ts.)j(\()p Fa(End)d(of)g(r)n (ationale.)p Fj(\))1967 46 y Ff(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Page: 3 3 bop 75 -100 a Fe(7.2.)34 b(ERR)o(OR)17 b(HANDLING)1239 b Fj(3)75 45 y Fg(MPI)p 160 45 14 2 v 16 w(SET)p 259 45 V 17 w(ERRHANDLER\()16 b(comm)m(,)c(errhandler)j(\))117 125 y Fc(IN)155 b Fg(comm)466 b Fc(comm)o(unicator)11 b(to)j(set)h(the)f(error)h(handler)f(for)g (\(handle\))117 206 y(IN)155 b Fg(errhandler)397 b Fc(new)15 b(MPI)f(error)g(handler)h(for)e(comm)o(unicator)e(\(handle\))75 334 y Fb(int)23 b(MPI)p 245 334 15 2 v 17 w(Set)p 334 334 V 17 w(errhandler\(MPI)p 687 334 V 15 w(Comm)h(comm,)f(MPI)p 1037 334 V 17 w(Errhandler)f(errhandler\))75 423 y(MPI)p 150 423 V 17 w(SET)p 239 423 V 17 w(ERRHANDLER\(COMM,)f(ERRHANDLER,)i(IERROR\)) 170 480 y(INTEGER)g(COMM,)h(ERRHANDLER,)e(IERROR)166 569 y Fj(Asso)q(ciates)16 b(the)g(new)g(error)f(handler)h Fg(erro)o(rhandler)f Fj(with)h(comm)o(unicator)g Fg(comm)9 b Fj(at)15 b(the)h(calling)75 625 y(pro)q(cess.)75 732 y Fg(MPI)p 160 732 14 2 v 16 w(GET)p 264 732 V 17 w(ERRHANDLER\()g(comm)m(,)c(errhandler)j(\))117 812 y Fc(IN)155 b Fg(comm)466 b Fc(comm)o(unicator)11 b(to)j(get)g(the)h (error)g(handler)f(from)e(\(handle\))117 893 y(OUT)108 b Fg(errhandler)397 b Fc(MPI)16 b(error)g(handler)g(curren)o(tly)g(asso)q(ciated)g(with)f(comm)o (u-)905 950 y(nicator)f(\(handle\))75 1077 y Fb(int)23 b(MPI)p 245 1077 15 2 v 17 w(Get)p 334 1077 V 17 w(errhandler\(MPI)p 687 1077 V 15 w(Comm)h(comm,)f(MPI)p 1037 1077 V 17 w(Errhandler)f (*errhandler\))75 1167 y(MPI)p 150 1167 V 17 w(GET)p 239 1167 V 17 w(ERRHANDLER\(COMM,)f(ERRHANDLER,)i(IERROR\))170 1223 y(INTEGER)g(COMM,)h(ERRHANDLER,)e(IERROR)166 1313 y Fj(Returns)16 b(in)g Fg(errhandler)g Fj(\(a)f(handle)i(to\))e(the)g(error)g(handler)i(that) e(is)h(curren)o(tly)g(asso)q(ciated)g(with)75 1369 y(comm)o(unicator)f Fg(comm)m Fj(.)166 1428 y(Example:)22 b(A)16 b(library)h(function)g(ma)o(y)f (register)g(at)f(its)i(en)o(try)f(p)q(oin)o(t)g(the)g(curren)o(t)g(error)g (handler)75 1485 y(for)h(a)h(comm)o(unicator,)f(set)h(its)g(o)o(wn)f(priv)m (ate)i(error)e(handler)i(for)e(this)h(comm)o(unicator,)g(and)g(restore)75 1541 y(b)q(efore)d(exiting)i(the)e(previous)h(error)e(handler.)166 1683 y Fd(Discussion:)30 b Fc(One)10 b(ma)o(y)e(ha)o(v)o(e)h(the)i(function)e Fh(MPI)p 993 1683 13 2 v 14 w(SET)p 1083 1683 V 16 w(ERRHANDLER)g Fc(b)q(oth)h(set)h(a)e(new)h(error)h(handler)75 1740 y(and)17 b(return)i(the)g(previous)f(error)g(handler)g(\(the)g(function)g(w)o(ould)f (ha)o(v)o(e)g(t)o(w)o(o)g(errhandler)i(argumen)o(ts\),)f(th)o(us)75 1796 y(sa)o(ving)13 b(one)h(call)f(when)h(b)q(oth)p 562 1796 V 28 w(GET)g(and)p 762 1796 V 28 w(SET)g(are)g(needed.)19 b(But,)14 b(in)f(an)o(y)h(case,)g(one)g(needs)h(b)q(oth)e(functions.)75 2042 y Fg(MPI)p 160 2042 14 2 v 16 w(ERROR)p 323 2042 V 18 w(STRING\()i(erro)o(rco)q(de,)f(len,)i(string)f(\))117 2122 y Fc(IN)155 b Fg(erro)o(rco)q(de)410 b Fc(Error)15 b(co)q(de)g(returned)g(b)o (y)f(an)f(MPI)i(routine)117 2203 y(IN)155 b Fg(len)533 b Fc(Length)14 b(of)g Fh(string)117 2284 y Fc(OUT)108 b Fg(string)481 b Fc(T)m(ext)14 b(that)g(corresp)q(onds)i(to)e(the)g Fh(erro)o(rco)q(de)75 2412 y Fb(int)23 b(MPI)p 245 2412 15 2 v 17 w(Error)p 382 2412 V 17 w(string\(int)f(errorcode,)h(int)g(len,)g(char)h(*string\))75 2501 y(MPI)p 150 2501 V 17 w(ERROR)p 287 2501 V 16 w(STRING\(ERRORCODE,)e (STRING,)h(IERROR\))170 2558 y(INTEGER)g(ERRORCODE,)g(IERROR)170 2614 y(CHARACTER\(*\))g(STRING)166 2704 y Fj(Returns)16 b(the)f(error)f (string)i(asso)q(ciated)f(with)h(an)f(error)f(co)q(de.)-32 46 y Ff(1)-32 103 y(2)-32 159 y(3)-32 215 y(4)-32 272 y(5)-32 328 y(6)-32 385 y(7)-32 441 y(8)-32 498 y(9)-40 554 y(10)-40 611 y(11)-40 667 y(12)-40 724 y(13)-40 780 y(14)-40 836 y(15)-40 893 y(16)-40 949 y(17)-40 1006 y(18)-40 1062 y(19)-40 1119 y(20)-40 1175 y(21)-40 1232 y(22)-40 1288 y(23)-40 1345 y(24)-40 1401 y(25)-40 1457 y(26)-40 1514 y(27)-40 1570 y(28)-40 1627 y(29)-40 1683 y(30)-40 1740 y(31)-40 1796 y(32)-40 1853 y(33)-40 1909 y(34)-40 1966 y(35)-40 2022 y(36)-40 2078 y(37)-40 2135 y(38)-40 2191 y(39)-40 2248 y(40)-40 2304 y(41)-40 2361 y(42)-40 2417 y(43)-40 2474 y(44)-40 2530 y(45)-40 2587 y(46)-40 2643 y(47)-40 2699 y(48)p eop %%Page: 4 4 bop 75 -100 a Fj(4)578 b Fe(CHAPTER)16 b(7.)34 b(MPI)16 b(ENVIR)o(ONMENT)l (AL)g(MANA)o(GEMENT)189 45 y Fa(R)n(ationale.)38 b Fj(The)13 b(form)f(of)g(this)h(prop)q(osal)g(w)o(as)f(c)o(hosen)h(to)f(mak)o(e)g(the)h (F)l(ortran)f(and)h(C)f(bindings)189 102 y(similar.)30 b(A)18 b(v)o(ersion)g(that)g(returns)g(a)g(p)q(oin)o(ter)g(to)g(a)g(string)g(has)g (t)o(w)o(o)f(di\016culties.)31 b(First,)18 b(the)189 158 y(return)10 b(string)h(m)o(ust)g(b)q(e)g(statically)h(allo)q(cated)g(and)f(di\013eren)o (t)g(for)f(eac)o(h)h(error)f(message)g(\(allo)o(wing)189 214 y(the)j(p)q(oin)o(ters)g(returned)g(b)o(y)g(successiv)o(e)h(calls)g(to)e Fh(MPI)p 1117 214 13 2 v 14 w(ERROR)p 1268 214 V 14 w(STRING)h Fj(to)f(p)q(oin)o(t)h(to)f(the)h(correct)189 271 y(message.)30 b(Second,)20 b(in)g(F)l(ortran,)e(a)g(function)i(declared)g(as)f(returning)g Fh(CHARA)o(CTER*\(*\))e Fj(can)189 327 y(not)d(b)q(e)i(referenced)g(in,)g (for)f(example,)g(a)g Fh(PRINT)g Fj(statemen)o(t.)k(\()p Fa(End)c(of)i(r)n (ationale.)p Fj(\))1967 46 y Ff(1)1967 103 y(2)1967 159 y(3)1967 215 y(4)1967 272 y(5)1967 328 y(6)1967 385 y(7)1967 441 y(8)1967 498 y(9)1959 554 y(10)1959 611 y(11)1959 667 y(12)1959 724 y(13)1959 780 y(14)1959 836 y(15)1959 893 y(16)1959 949 y(17)1959 1006 y(18)1959 1062 y(19)1959 1119 y(20)1959 1175 y(21)1959 1232 y(22)1959 1288 y(23)1959 1345 y(24)1959 1401 y(25)1959 1457 y(26)1959 1514 y(27)1959 1570 y(28)1959 1627 y(29)1959 1683 y(30)1959 1740 y(31)1959 1796 y(32)1959 1853 y(33)1959 1909 y(34)1959 1966 y(35)1959 2022 y(36)1959 2078 y(37)1959 2135 y(38)1959 2191 y(39)1959 2248 y(40)1959 2304 y(41)1959 2361 y(42)1959 2417 y(43)1959 2474 y(44)1959 2530 y(45)1959 2587 y(46)1959 2643 y(47)1959 2699 y(48)p eop %%Trailer end userdict /end-hook known{end-hook}if %%EOF ------- End of Forwarded Message From owner-mpi-envir@CS.UTK.EDU Tue Jan 11 20:49:56 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib) id UAA11359; Tue, 11 Jan 1994 20:49:56 -0500 Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id UAA24483; Tue, 11 Jan 1994 20:50:16 -0500 X-Resent-To: mpi-envir@CS.UTK.EDU ; Tue, 11 Jan 1994 20:50:14 EST Errors-to: owner-mpi-envir@CS.UTK.EDU Received: from watson.ibm.com by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id UAA24466; Tue, 11 Jan 1994 20:50:12 -0500 Received: from WATSON by watson.ibm.com (IBM VM SMTP V2R3) with BSMTP id 1923; Tue, 11 Jan 94 20:50:14 EST Received: from YKTVMV by watson.vnet.ibm.com with "VAGENT.V1.0" id 2443; Tue, 11 Jan 1994 20:50:13 EST Received: from snir.watson.ibm.com by yktvmv.watson.ibm.com (IBM VM SMTP V2R3) with TCP; Tue, 11 Jan 94 20:50:12 EST Received: by snir.watson.ibm.com (AIX 3.2/UCB 5.64/930311) id AA33966; Tue, 11 Jan 1994 20:50:11 -0500 From: snir@watson.ibm.com (Marc Snir) Message-Id: <9401120150.AA33966@snir.watson.ibm.com> To: mpi-envir@CS.UTK.EDU Cc: johns@ccsf.caltech.edu, c1dje@watson.ibm.com, snir@watson.ibm.com Subject: a proposal from Salmon and Edelsohn Reply-To: snir@watson.ibm.com Date: Tue, 11 Jan 94 20:46:47 -0500 - -:) -:) -:) -:) -:) MPI_QUERY_RESOURCE(resource_type, value) IN resource_type resource type OUT value usage response int MPI_Query_resource(MPI_Resource_type resource_type, void *value); MPI_QUERY_RESOURCE(RESOURCE_TYPE, VALUE, IERROR) VALUE INTEGER RESOURCE_TYPE, IERROR MPI_QUERY_RESOURCE returns the resource usage value for the specified resource type. It returns MPI_UNDEFINED if the resource type is not defined/supported on the system. We list below options for resource_type: MPI_TOTAL_PHYSICAL_MEMORY MPI_TOTAL_VIRTUAL_MEMORY MPI_FREE_PHYSICAL_MEMORY MPI_FREE_VIRTUAL_MEMORY MPI_FRAC_AVG_BANDWIDTH MPI_AVG_LOAD MPI_FRAC_AVG_CPU (MS) The advantage of such design is that it is open ended: vendors can add additional system specific resources (size of local disk, space in \tmp, availability of various adapters,...) ------- End of Forwarded Message From owner-mpi-envir@CS.UTK.EDU Fri Jan 14 01:35:57 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib) id BAA01209; Fri, 14 Jan 1994 01:35:56 -0500 Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id BAA10139; Fri, 14 Jan 1994 01:36:31 -0500 X-Resent-To: mpi-envir@CS.UTK.EDU ; Fri, 14 Jan 1994 01:36:30 EST Errors-to: owner-mpi-envir@CS.UTK.EDU Received: from enseeiht.enseeiht.fr by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id BAA10132; Fri, 14 Jan 1994 01:36:13 -0500 Received: from julia.enseeiht.fr by enseeiht.enseeiht.fr, Fri, 14 Jan 1994 07:35:33 +0100 Date: Fri, 14 Jan 1994 07:35:33 +0100 From: Michel DAYDE Message-Id: <199401140635.AA11046@enseeiht.enseeiht.fr> To: mpi-envir@CS.UTK.EDU Subject: MPI_QUERY_RESOURCE Cc: dayde@enseeiht.fr The options for resource_type are very interesting MPI_TOTAL_PHYSICAL_MEMORY MPI_TOTAL_VIRTUAL_MEMORY MPI_FREE_PHYSICAL_MEMORY MPI_FREE_VIRTUAL_MEMORY MPI_FRAC_AVG_BANDWIDTH MPI_AVG_LOAD MPI_FRAC_AVG_CPU since MPI_UNDEFINED is returned if the resource is not defined/supported on the system would it be possible to add statistics that we check often (for performance issues) such as MPI_PAGE_FAULTS MPI_CACHE_FAULTS These are often available using systems calls. We could think also to MPI_IO_BLOCKS ... Michel.