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 df<FFFFFF80FFFFFF8019027D8A20>0
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 D<FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F0000
1F3F801FE1E01F80701F00781F003C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C
1F003C1F00781F80701EC1E01C3F00171D7F9C1B>I<03FC000E0E001C1F003C1F00781F00780E
00F80000F80000F80000F80000F80000F800007800007801803C01801C03000E0E0003F8001112
7E9115>I<000FF0000FF00001F00001F00001F00001F00001F00001F00001F00001F00001F001
F9F00F07F01C03F03C01F07801F07801F0F801F0F801F0F801F0F801F0F801F0F801F07801F078
01F03C01F01C03F00F0FFE03F9FE171D7E9C1B>I<01FC000F07001C03803C01C07801C07801E0
F801E0F801E0FFFFE0F80000F80000F800007800007C00603C00601E00C00F038001FC0013127F
9116>I<03F8F00E0F381E0F381C07303C07803C07803C07803C07801C07001E0F000E0E001BF8
001000001800001800001FFF001FFFC00FFFE01FFFF07801F8F00078F00078F000787000707800
F01E03C007FF00151B7F9118>103 D<FF0000FF00001F00001F00001F00001F00001F00001F00
001F00001F00001F00001F0FC01F31E01F40F01F80F81F80F81F00F81F00F81F00F81F00F81F00
F81F00F81F00F81F00F81F00F81F00F81F00F8FFE7FFFFE7FF181D7F9C1B>I<1E003F003F003F
003F001E00000000000000000000000000FF00FF001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F00FFE0FFE00B1E7F9D0E>I<FF00FF001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00FFE0FF
E00B1D7F9C0E>108 D<FF0FC07E00FF31E18F001F40F207801F80FC07C01F80FC07C01F00F807
C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F807C01F00F8
07C01F00F807C01F00F807C0FFE7FF3FF8FFE7FF3FF825127F9128>I<FF0FC0FF31E01F40F01F
80F81F80F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F00F8FF
E7FFFFE7FF18127F911B>I<01FC000F07801C01C03C01E07800F07800F0F800F8F800F8F800F8
F800F8F800F8F800F87800F07800F03C01E01E03C00F078001FC0015127F9118>I<FF3F80FFE1
E01F80F01F00781F007C1F003C1F003E1F003E1F003E1F003E1F003E1F003E1F003C1F007C1F00
781F80F01FC1E01F3F001F00001F00001F00001F00001F00001F0000FFE000FFE000171A7F911B
>I<FE3E00FE47001E8F801E8F801E8F801F07001F00001F00001F00001F00001F00001F00001F
00001F00001F00001F0000FFF000FFF00011127F9114>114 D<1FD830786018E018E018F000FF
807FE07FF01FF807FC007CC01CC01CE01CE018F830CFC00E127E9113>I<030003000300030007
0007000F000F003FFCFFFC1F001F001F001F001F001F001F001F001F001F0C1F0C1F0C1F0C0F08
079803F00E1A7F9913>I<FF07F8FF07F81F00F81F00F81F00F81F00F81F00F81F00F81F00F81F
00F81F00F81F00F81F00F81F00F81F01F80F01F80786FF01F8FF18127F911B>I<FFC1FCFFC1FC
1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F60001F60001FE0000FC0000FC00
00780000780000300016127F9119>I<FFC7FCFFC7FC1F81800F838007C70003EE0001FC0001F8
0000F800007C0000FE0001DF00039F00070F800607C00C03E0FF07FCFF07FC16127F9119>120
D<FFC1FCFFC1FC1F00601F80E00F80C00FC0C007C18007C18003E30003E30001F70001F60000FE
0000FC0000FC00007800007800003000003000007000706000F86000F8C000F980007300003E00
00161A7F9119>I<3FFF803C1F00303F00303E00607C0060FC0060F80001F00003F00007E00007
C1800F81801F81801F03803E03007E07007C0F00FFFF0011127F9115>I
E /Fd 3 117 df<01E007100C1018083810701070607F80E000E000E000E000E000E008601060
2030C01F000D127B9113>101 D<01F006080C080C1C18181C001F001FC00FF007F00078003860
30E030C030806060C01F000E127D9111>115 D<00C001C001C001C00380038003800380FFE007
00070007000E000E000E000E001C001C001C001C00384038403840388019000E000B1A7D990E>
I E /Fe 29 118 df<FFFCFFFCFFFCFFFC0E047F8C13>45 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 D<FFFFFF8000FFFFFFF00007F003FC0007F0007E0007F0003F0007F0001F8007F0000FC007
F00007E007F00007E007F00007F007F00003F007F00003F007F00003F007F00003F807F00003F8
07F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003F807F00003
F007F00003F007F00003F007F00007E007F00007E007F0000FC007F0001F8007F0003F0007F000
7E0007F003FC00FFFFFFF000FFFFFF800025227EA12B>I<FFFFE0FFFFE003F80003F80003F800
03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
03F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F800
03F800FFFFE0FFFFE013227FA115>73 D<FFF000000FFFFFF800001FFF07F800001FE006FC0000
37E006FC000037E006FC000037E0067E000067E0067E000067E0063F0000C7E0063F0000C7E006
1F800187E0061F800187E0060FC00307E0060FC00307E0060FC00307E00607E00607E00607E006
07E00603F00C07E00603F00C07E00601F81807E00601F81807E00601F81807E00600FC3007E006
00FC3007E006007E6007E006007E6007E006003FC007E006003FC007E006001F8007E006001F80
07E006001F8007E006000F0007E0FFF00F00FFFFFFF00600FFFF30227EA135>77
D<FFFFFF00FFFFFFE007F007F007F001FC07F000FC07F0007E07F0007E07F0007F07F0007F07F0
007F07F0007F07F0007F07F0007E07F0007E07F000FC07F001FC07F007F007FFFFE007FFFF0007
F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F0000007F00000
07F0000007F0000007F00000FFFF8000FFFF800020227EA126>80 D<0007FC0000003FFF800000
FC07E00003F001F80007E000FC000FC0007E001F80003F001F80003F003F00001F803F00001F80
7F00001FC07E00000FC07E00000FC0FE00000FE0FE00000FE0FE00000FE0FE00000FE0FE00000F
E0FE00000FE0FE00000FE0FE00000FE0FE00000FE07E00000FC07F00001FC07F00001FC03F0000
1F803F81F03F801F83F83F000FC70C7E0007E606FC0003F607F80000FF07E000003FFF80000007
FF80200000038020000003C020000003E0E0000003FFE0000001FFC0000001FFC0000000FFC000
0000FF800000007F000000001E00232C7DA12A>I<07FC001FFF803F07C03F03E03F01E03F01F0
1E01F00001F00001F0003FF003FDF01FC1F03F01F07E01F0FC01F0FC01F0FC01F0FC01F07E02F0
7E0CF81FF87F07E03F18167E951B>97 D<FF000000FF0000001F0000001F0000001F0000001F00
00001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0FE0001F3FF8001F
F07C001F801E001F001F001F000F801F000F801F000FC01F000FC01F000FC01F000FC01F000FC0
1F000FC01F000FC01F000FC01F000F801F001F801F801F001FC03E001EE07C001C3FF800180FC0
001A237EA21F>I<00FF8007FFE00F83F01F03F03E03F07E03F07C01E07C0000FC0000FC0000FC
0000FC0000FC0000FC00007C00007E00007E00003E00301F00600FC0E007FF8000FE0014167E95
19>I<0001FE000001FE0000003E0000003E0000003E0000003E0000003E0000003E0000003E00
00003E0000003E0000003E0000003E0001FC3E0007FFBE000F81FE001F007E003E003E007E003E
007C003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E00FC003E007C00
3E007C003E003E007E001E00FE000F83BE0007FF3FC001FC3FC01A237EA21F>I<00FE0007FF80
0F87C01E01E03E01F07C00F07C00F8FC00F8FC00F8FFFFF8FFFFF8FC0000FC0000FC00007C0000
7C00007E00003E00181F00300FC07003FFC000FF0015167E951A>I<003F8000FFC001E3E003C7
E007C7E00F87E00F83C00F80000F80000F80000F80000F80000F8000FFFC00FFFC000F80000F80
000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80000F80
000F80000F80000F80007FF8007FF80013237FA211>I<FF000000FF0000001F0000001F000000
1F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F0000001F07E0
001F1FF8001F307C001F403C001F803E001F803E001F003E001F003E001F003E001F003E001F00
3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E00FF
E1FFC0FFE1FFC01A237EA21F>104 D<1C003E007F007F007F003E001C00000000000000000000
0000000000FF00FF001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F00FFE0FFE00B247EA310>I<FF00FF001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F00FFE0FFE00B237EA210>108 D<FF07F007F000FF1FFC1FFC001F303E303E001F403E
403E001F801F801F001F801F801F001F001F001F001F001F001F001F001F001F001F001F001F00
1F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F001F
001F001F001F001F001F001F001F001F001F001F00FFE0FFE0FFE0FFE0FFE0FFE02B167E9530>
I<FF07E000FF1FF8001F307C001F403C001F803E001F803E001F003E001F003E001F003E001F00
3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
003E00FFE1FFC0FFE1FFC01A167E951F>I<00FE0007FFC00F83E01E00F03E00F87C007C7C007C
7C007CFC007EFC007EFC007EFC007EFC007EFC007EFC007E7C007C7C007C3E00F81F01F00F83E0
07FFC000FE0017167E951C>I<FF0FE000FF3FF8001FF07C001F803E001F001F001F001F801F00
1F801F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F000FC01F001F801F
001F801F803F001FC03E001FE0FC001F3FF8001F0FC0001F0000001F0000001F0000001F000000
1F0000001F0000001F0000001F000000FFE00000FFE000001A207E951F>I<FE1F00FE3FC01E67
E01EC7E01E87E01E87E01F83C01F00001F00001F00001F00001F00001F00001F00001F00001F00
001F00001F00001F00001F0000FFF000FFF00013167E9517>114 D<0FF3003FFF00781F006007
00E00300E00300F00300FC00007FE0007FF8003FFE000FFF0001FF00000F80C00780C00380E003
80E00380F00700FC0E00EFFC00C7F00011167E9516>I<01800001800001800001800003800003
80000780000780000F80003F8000FFFF00FFFF000F80000F80000F80000F80000F80000F80000F
80000F80000F80000F80000F80000F81800F81800F81800F81800F81800F830007C30003FE0000
F80011207F9F16>I<FF01FE00FF01FE001F003E001F003E001F003E001F003E001F003E001F00
3E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F003E001F
007E001F00FE000F81BE0007FF3FC001FC3FC01A167E951F>I 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 D<FFE0FFE00B0280890E>I<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 D<FFFFC0000F00F0000F003C000F000E000F0007000F0007000F0003
800F0003C00F0001C00F0001C00F0001E00F0001E00F0001E00F0001E00F0001E00F0001E00F00
01E00F0001E00F0001C00F0001C00F0003C00F0003800F0007800F0007000F000E000F001C000F
007000FFFFC0001B1C7E9B20>I<FFF3FFC00F003C000F003C000F003C000F003C000F003C000F
003C000F003C000F003C000F003C000F003C000F003C000F003C000FFFFC000F003C000F003C00
0F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C000F003C
000F003C00FFF3FFC01A1C7E9B1F>72 D<FFF00F000F000F000F000F000F000F000F000F000F00
0F000F000F000F000F000F000F000F000F000F000F000F000F000F000F000F00FFF00C1C7F9B0F
>I<FF8000FF800F8000F8000F8000F8000BC00178000BC00178000BC001780009E002780009E0
02780008F004780008F004780008F0047800087808780008780878000878087800083C10780008
3C107800083C107800081E207800081E207800081E207800080F407800080F4078000807807800
0807807800080780780008030078001C03007800FF8307FF80211C7E9B26>77
D<FF007FC00F800E000F8004000BC0040009E0040009E0040008F0040008F8040008780400083C
0400083C0400081E0400080F0400080F0400080784000807C4000803C4000801E4000801E40008
00F40008007C0008007C0008003C0008003C0008001C0008000C001C000C00FF8004001A1C7E9B
1F>I<003F800000E0E0000380380007001C000E000E001C0007003C00078038000380780003C0
780003C0700001C0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001E0F00001
E0700001C0780003C0780003C0380003803C0007801C0007000E000E0007001C000380380000E0
E000003F80001B1E7E9C20>I<FFFF800F00E00F00780F003C0F001C0F001E0F001E0F001E0F00
1E0F001E0F001C0F003C0F00780F00E00FFF800F00000F00000F00000F00000F00000F00000F00
000F00000F00000F00000F00000F0000FFF000171C7E9B1C>I<FFFF00000F01E0000F0078000F
003C000F001C000F001E000F001E000F001E000F001E000F001C000F003C000F0078000F01E000
0FFF00000F03C0000F00E0000F00F0000F0078000F0078000F0078000F0078000F0078000F0078
000F0078100F0078100F0038100F003C20FFF01C20000007C01C1D7E9B1F>82
D<07E0801C1980300580700380600180E00180E00080E00080E00080F00000F800007C00007FC0
003FF8001FFE0007FF0000FF80000F800007C00003C00001C08001C08001C08001C0C00180C001
80E00300D00200CC0C0083F800121E7E9C17>I<7FFFFFC0700F01C0600F00C0400F0040400F00
40C00F0020800F0020800F0020800F0020000F0000000F0000000F0000000F0000000F0000000F
0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F000000
0F0000000F0000001F800003FFFC001B1C7F9B1E>I<FFF07FC00F000E000F0004000F0004000F
0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F0004000F000400
0F0004000F0004000F0004000F0004000F0004000F0004000F0004000F00040007000800078008
00038010000180100000C020000070C000001F00001A1D7E9B1F>I<FFE0FFE0FF1F001F003C1E
001E00180F001F00100F001F00100F001F001007801F00200780278020078027802003C0278040
03C043C04003C043C04003E043C04001E081E08001E081E08001E081E08000F100F10000F100F1
0000F100F100007900FA00007A007A00007A007A00003E007C00003C003C00003C003C00003C00
3C00001800180000180018000018001800281D7F9B2B>87 D<FEFEC0C0C0C0C0C0C0C0C0C0C0C0
C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE07297C9E0C>91
D<FEFE060606060606060606060606060606060606060606060606060606060606060606060606
06FEFE0729809E0C>93 D<1FC000307000783800781C00301C00001C00001C0001FC000F1C0038
1C00701C00601C00E01C40E01C40E01C40603C40304E801F870012127E9115>97
D<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C001D86
001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C00C01C01C01C01
801E030019060010F800131D7F9C17>I<07E00C301878307870306000E000E000E000E000E000
E00060007004300418080C3007C00E127E9112>I<003F00000700000700000700000700000700
00070000070000070000070000070003E7000C1700180F00300700700700600700E00700E00700
E00700E00700E00700E00700600700700700300700180F000C370007C7E0131D7E9C17>I<03E0
0C301818300C700E6006E006FFFEE000E000E000E00060007002300218040C1803E00F127F9112
>I<00F8018C071E061E0E0C0E000E000E000E000E000E00FFE00E000E000E000E000E000E000E
000E000E000E000E000E000E000E000E000E007FE00F1D809C0D>I<00038003C4C00C38C01C38
80181800381C00381C00381C00381C001818001C38000C300013C0001000003000001800001FF8
001FFF001FFF803003806001C0C000C0C000C0C000C06001803003001C0E0007F800121C7F9215
>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C7C001C
87001D03001E03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
03801C03801C0380FF9FF0141D7F9C17>I<18003C003C00180000000000000000000000000000
00FC001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C00FF80091D
7F9C0C>I<FC00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C
3FC01C0F001C0C001C08001C10001C20001C40001CE0001DE0001E70001C78001C38001C3C001C
1C001C0E001C0F001C0F80FF9FE0131D7F9C16>107 D<FC001C001C001C001C001C001C001C00
1C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C
00FF80091D7F9C0C>I<FC7E07E0001C838838001D019018001E01E01C001C01C01C001C01C01C
001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C01C001C01C0
1C001C01C01C001C01C01C001C01C01C00FF8FF8FF8021127F9124>I<FC7C001C87001D03001E
03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C
0380FF9FF014127F9117>I<03F0000E1C00180600300300700380600180E001C0E001C0E001C0
E001C0E001C0E001C06001807003803003001806000E1C0003F00012127F9115>I<FC7C001D86
001E03001C01801C01C01C00C01C00E01C00E01C00E01C00E01C00E01C00E01C01C01C01C01C01
801E03001D06001CF8001C00001C00001C00001C00001C00001C00001C0000FF8000131A7F9117
>I<03C1000C3300180B00300F00700700700700E00700E00700E00700E00700E00700E0070060
0700700700300F00180F000C370007C70000070000070000070000070000070000070000070000
3FE0131A7E9116>I<FCE01D301E781E781C301C001C001C001C001C001C001C001C001C001C00
1C001C00FFC00D127F9110>I<1F9030704030C010C010E010F8007F803FE00FF000F880388018
C018C018E010D0608FC00D127F9110>I<04000400040004000C000C001C003C00FFE01C001C00
1C001C001C001C001C001C001C001C101C101C101C101C100C100E2003C00C1A7F9910>I<FC1F
801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03801C03
801C07800C07800E1B8003E3F014127F9117>I<FF07E03C03801C01001C01000E02000E020007
040007040007040003880003880003D80001D00001D00000E00000E00000E00000400013127F91
16>I<FF3FCFE03C0F03801C0701801C0701001C0B01000E0B82000E0B82000E1182000711C400
0711C4000720C40003A0E80003A0E80003C0680001C0700001C0700001803000008020001B127F
911E>I<7F8FF00F03800F030007020003840001C80001D80000F00000700000780000F800009C
00010E00020E000607000403801E07C0FF0FF81512809116>I<FF07E03C03801C01001C01000E
02000E020007040007040007040003880003880003D80001D00001D00000E00000E00000E00000
4000004000008000008000F08000F10000F300006600003C0000131A7F9116>I<7FFC70386038
407040F040E041C003C0038007000F040E041C043C0C380870087038FFF80E127F9112>I
E /Fg 14 118 df<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000
FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000
FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007F
FFFE7FFFFE7FFFFE17277BA622>49 D<00FF800003FFF0000FFFFC001F03FE003800FF007C007F
80FE003FC0FF003FC0FF003FE0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC00000
3FC000007F8000007F000000FE000000FC000001F8000003F0000003E00000078000000F000000
1E0000003C00E0007000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC0
7FFFFFC0FFFFFF80FFFFFF80FFFFFF801B277DA622>I<FFFFFCFFFFFCFFFFFC01FE0001FE0001
FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001
FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001
FE0001FE0001FE0001FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFFFC16297EA81A>73
D<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC007FE00003FC000FF00003FC0007F80003FC
0007FC0003FC0003FC0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE
0003FC0003FE0003FC0003FC0003FC0007F80003FC0007F80003FC001FE00003FC007FC00003FF
FFFE000003FFFFF0000003FC00FC000003FC007F000003FC003F800003FC003F800003FC001FC0
0003FC001FE00003FC001FE00003FC001FE00003FC001FE00003FC001FE00003FC001FF00003FC
001FF00003FC001FF00003FC001FF00703FC001FF80703FC000FF80703FC0007F80EFFFFF003FE
1CFFFFF001FFF8FFFFF0003FF030297DA834>82 D<001FF80000FFFE0003F01F0007E03F800FC0
3F801F803F803F801F007F800E007F0000007F000000FF000000FF000000FF000000FF000000FF
000000FF000000FF0000007F0000007F0000007F8000003F8001C01F8001C00FC0038007E00700
03F01E0000FFFC00001FE0001A1B7E9A1F>99 D<00003FF80000003FF80000003FF800000003F8
00000003F800000003F800000003F800000003F800000003F800000003F800000003F800000003
F800000003F800000003F800000003F800001FE3F80000FFFBF80003F03FF80007E00FF8000FC0
07F8001F8003F8003F8003F8007F0003F8007F0003F8007F0003F800FF0003F800FF0003F800FF
0003F800FF0003F800FF0003F800FF0003F800FF0003F8007F0003F8007F0003F8007F0003F800
3F8003F8001F8003F8000F8007F80007C00FF80003F03BFF8000FFF3FF80003FC3FF80212A7EA9
26>I<003FE00001FFF80003F07E0007C01F000F801F801F800F803F800FC07F000FC07F0007C0
7F0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF000000FF000000FF0000007F0000007F0000
007F0000003F8000E01F8000E00FC001C007E0038003F81F0000FFFE00001FF0001B1B7E9A20>
I<07000F801FC03FE03FE03FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE0
0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
E00FE0FFFEFFFEFFFE0F2B7DAA14>105 D<FFC07F0000FFC1FFC000FFC787E0000FCE03F0000F
D803F0000FD803F8000FF003F8000FF003F8000FE003F8000FE003F8000FE003F8000FE003F800
0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
000FE003F8000FE003F8000FE003F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80211B7D
9A26>110 D<003FE00001FFFC0003F07E000FC01F801F800FC03F800FE03F0007E07F0007F07F
0007F07F0007F0FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8FF0007F8
7F0007F07F0007F03F800FE03F800FE01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E
9A22>I<FFC1F0FFC7FCFFCE3E0FD87F0FD87F0FF07F0FF03E0FF01C0FE0000FE0000FE0000FE0
000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000FFFF
00FFFF00FFFF00181B7E9A1C>114 D<03FE300FFFF01E03F03800F0700070F00070F00070F800
70FC0000FFE0007FFE007FFF803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF000
3CF00038F80038FC0070FF01E0F7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000
F00000F00000F00001F00003F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007
F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F03807F03807F03807
F03807F03807F03803F03803F87001F86000FFC0001F8015267FA51B>I<FFE03FF800FFE03FF8
00FFE03FF8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
03F8000FE003F8000FE003F8000FE003F8000FE007F80007E007F80007E00FF80003F03BFF8001
FFF3FF80003FC3FF80211B7D9A26>I E /Fh 17 122 df<FFFFFFFF80FFFFFFFF8007E0001F80
03E000078003E00001C003E00000C003E00000C003E000004003E000004003E000004003E00000
4003E000002003E001002003E001002003E001000003E001000003E003000003E003000003E00F
000003FFFF000003FFFF000003E00F000003E003000003E003000003E001000003E001001003E0
01001003E001001003E000001003E000002003E000002003E000002003E000002003E000006003
E000006003E00000E003E00001E003E00003C007E0001FC0FFFFFFFFC0FFFFFFFFC024297EA829
>69 D<FFFF80FFFF8007F00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
03E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E00003E000
07F000FFFF80FFFF8011297EA816>73 D<FFE0000003FFC0FFE0000003FFC007E0000003F80002
F0000005F00002F0000005F0000278000009F0000278000009F0000278000009F000023C000011
F000023C000011F000021E000021F000021E000021F000021E000021F000020F000041F000020F
000041F0000207800081F0000207800081F0000207800081F0000203C00101F0000203C00101F0
000203E00201F0000201E00201F0000201E00201F0000200F00401F0000200F00401F0000200F0
0401F0000200780801F0000200780801F00002003C1001F00002003C1001F00002003C1001F000
02001E2001F00002001E2001F00002000F4001F00002000F4001F00002000F4001F00002000780
01F0000700078001F0000F80030003F800FFF803007FFFC0FFF803007FFFC032297EA837>77
D<FFFFFF8000FFFFFFF00007E000FC0003E0003E0003E0001F0003E0000F8003E0000FC003E000
07C003E00007E003E00007E003E00007E003E00007E003E00007E003E00007E003E00007C003E0
000FC003E0000F8003E0001F0003E0003E0003E001F80003FFFFE00003E000000003E000000003
E000000003E000000003E000000003E000000003E000000003E000000003E000000003E0000000
03E000000003E000000003E000000003E000000003E000000003E000000003E000000007F00000
00FFFF800000FFFF80000023297EA829>80 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>I<FFF00FF8FFF00FF80F8003C007800380078001
0003C0020003C0020003E0020001E0040001E0040000F0080000F0080000F81800007810000078
1000003C2000003C2000003E6000001E4000001E4000000F8000000F8000000700000007000000
070000000200001D1A7F9920>I<FFF00FF8FFF00FF80F8003C0078003800780010003C0020003
C0020003E0020001E0040001E0040000F0080000F0080000F818000078100000781000003C2000
003C2000003E6000001E4000001E4000000F8000000F8000000700000007000000070000000200
00000200000004000000040000000400000008000070080000F8100000F8100000F8200000F040
0000608000001F0000001D267F9920>121 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 <knighten@SSD.intel.com>
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 <dayde@enseeiht.fr>
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 <mpi-envir@cs.utk.edu>); Fri, 26 Feb 1993 14:57:10 -0600
From: William Gropp <gropp@mcs.anl.gov>
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 <knighten@SSD.intel.com>
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 <lyndon@epcc.ed.ac.uk>
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 <mpi-envir@cs.utk.edu>); Mon, 10 May 1993 09:06:46 -0500
From: William Gropp <gropp@mcs.anl.gov>
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 D<EBF180380389C038070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40
A2EA703C135C38308C80380F070013147C9317>97 D<1478EB03F8EB0070A414E0A4EB01C0A213
F1EA038938070780EA0E03121C123C383807001278A3EAF00EA31420EB1C40A2EA703C135C3830
8C80380F070015207C9F17>100 D<137CEA01C2EA0701120E121C123CEA3802EA780CEA7BF0EA
7C0012F0A4127013011302EA3804EA1838EA07C010147C9315>I<1478EB019CEB033CA2EB0718
1400A2130EA53801FFE038001C00A45BA55BA65BA45B1201A25B1231007BC7FC12F31266123C16
29829F0E>I<13C0EA01E0A213C0C7FCA7120E12331223EA4380130012471287120EA35AA3EA38
40138012301270EA31001233121C0B1F7C9E0E>105 D<EA03C0121FEA0380A4EA0700A4120EA4
5AA45AA45AA3127112E2A4126412380A207C9F0C>108 D<381C0F80382630C0384740601380EB
0070A2008E13E0120EA3381C01C0A3EB03840038138814081307EB031000701330383001C01614
7C931A>110 D<137CEA01C338030180000E13C0121E001C13E0123C1278A338F003C0A3EB0780
1400EA700F130EEA3018EA1870EA07C013147C9317>I<EA1C1EEA26613847838013871307EB03
00008EC7FC120EA35AA45AA45A123011147C9313>114 D<EA018013C0EA0380A4EA0700A2EAFF
F0EA0700120EA45AA45AA31320EA7040A21380A2EA3100121E0C1C7C9B0F>116
D E /Fb 44 122 df<137013F0EA01E0EA03C0EA0780EA0F00121E121C5AA25AA45AA81270A47E
A27E121E7EEA0780EA03C0EA01F0120013700C24799F18>40 D<126012F012787E7E7EEA078012
03EA01C0A2EA00E0A41370A813E0A4EA01C0A2EA03801207EA0F00121E5A5A5A12600C247C9F18
>I<EA01C0A438C1C180EAF1C7EAF9CF387FFF00EA1FFCEA07F0A2EA1FFCEA7FFF38F9CF80EAF1
C7EAC1C13801C000A411147D9718>I<121C123E127E127F123F121F1207120E121E127C12F812
60080C788518>44 D<1230127812FCA2127812300606778518>46 D<1218123C127EA2123C1218
1200A81218123C127EA2123E121E120E121C123C127812F01260071A789318>59
D<137013F8A213D8A2EA01DCA3138CEA038EA41306EA0707A4380FFF80A3EA0E03A2381C01C0A2
387F07F038FF8FF8387F07F0151C7F9B18>65 D<EBF8E0EA03FEEA07FFEA0F07EA1E03EA3C01EA
38005AA214005AA8127014E0A27E123C381E01C0EA0F073807FF803803FE00EA00F8131C7E9B18
>67 D<EA7FF8EAFFFE6C7E381C0F80EB03C0A2EB01E01300A214F01470A814F014E0A2130114C0
1303EB0F80387FFF00485AEA7FF8141C7F9B18>I<B512F0A3381C0070A41400A2130EA3EA1FFE
A3EA1C0EA390C7FCA21438A5B512F8A3151C7F9B18>I<B512E0A3EA1C00A41400A2131CA3EA1F
FCA3EA1C1CA390C7FCA7EAFFC0A3131C7E9B18>I<3801F1C0EA03FDEA0FFFEA1F0FEA1C031238
13011270A290C7FC5AA5EB0FF0131F130F387001C0A213031238A2EA1C07EA1F0FEA0FFFEA03FD
EA01F1141C7E9B18>I<387F07F038FF8FF8387F07F0381C01C0A9EA1FFFA3EA1C01AA387F07F0
38FF8FF8387F07F0151C7F9B18>I<EA7FFFB512806C1300EA01C0B3A4EA7FFFB512806C130011
1C7D9B18>I<EA7FE012FF127F000EC7FCB11470A5387FFFF0B5FC7E141C7F9B18>76
D<38FC01F8EAFE03A2383B06E0A4138EA2EA398CA213DCA3EA38D8A213F81370A21300A638FE03
F8A3151C7F9B18>I<387E07F038FF0FF8387F07F0381D81C0A313C1121CA213E1A313611371A2
13311339A31319A2131D130DA3EA7F07EAFF87EA7F03151C7F9B18>I<EA0FF8EA3FFE487EEA78
0FEA700700F01380EAE003B0EAF00700701300EA780FEA7FFF6C5AEA0FF8111C7D9B18>I<EAFF
FEEBFF8014C0EA1C03EB01E013001470A514E01301EB03C0EA1FFF1480EBFE00001CC7FCA8B47E
A3141C7F9B18>I<EA7FF8EAFFFE6C7E381C0F80130314C01301A313031480130F381FFF005BA2
EA1C0F7FEB0380A5149CA3387F01F8EAFF81387F00F0161C7F9B18>82 D<3803F380EA1FFF5AEA
7C0FEA7007EAE003A390C7FC12701278123FEA1FF0EA07FEC67EEB0F80EB03C01301EB00E0A212
6012E0130100F013C038F80780B5FCEBFE00EAE7F8131C7E9B18>I<387FFFF8B5FCA238E07038
A400001300B2EA07FFA3151C7F9B18>I<38FF83FEA3381C0070B36C13E0EA0F01380783C03803
FF806C1300EA007C171C809B18>I<387F8FE0139F138F380E0700120FEA070E138EEA039C13DC
EA01F8A26C5AA2137013F07F120113DCEA039E138EEA070F7F000E13801303001E13C0387F07F0
38FF8FF8387F07F0151C7F9B18>88 D<EA7FFFB51280A26C130011047D7F18>95
D<EA1FE0EA3FF8487EEA781EEA300EC67EA213FF1207121FEA7F07127812E0A36C5AEA781F383F
FFF0EA1FFBEA07E114147D9318>97 D<EA01FEEA07FF001F1380EA3E073838030048C7FCA25AA6
1270EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>99 D<EB1F80133F131F1303A5
EA03E3EA0FFBEA1FFFEA3C1FEA380FEA7007130312E0A6EA7007A2EA380FEA3C1F381FFFF0380F
FBF83803E3F0151C7E9B18>I<EA01F0EA07FCEA1FFEEA3E0F38380780EA7003A238E001C0A2B5
FCA300E0C7FC1270EB01C01238EA3E03381FFF8000071300EA01FC12147D9318>I<EB1F80EB7F
C0EBFFE013E13801C0C01400A3387FFFC0B5FCA23801C000AEEA7FFFA3131C7F9B18>I<3801E1
F03807FFF85A381E1E30381C0E00487EA5EA1C0EEA1E1EEA1FFC5BEA39E00038C7FC7EEA1FFEEB
FFC04813E0387801F038700070481338A4007813F0EA7E03381FFFC06C13803801FC00151F7F93
18>I<127E12FE127E120EA5133EEBFF80000F13C013C1EB80E01300120EAB387FC3FC38FFE7FE
387FC3FC171C809B18>I<EA0380487EA36C5AC8FCA4EA7FC012FF127F1201AEB5FC1480140011
1D7C9C18>I<EA7FE012FF127F1200B3A4387FFFC0B512E06C13C0131C7E9B18>108
D<387CE0E038FFFBF8EA7FFF381F1F1CEA1E1EA2EA1C1CAB387F1F1F39FFBFBF80397F1F1F0019
14819318>I<EA7E3E38FEFF80007F13C0EA0FC1EB80E01300120EAB387FC3FC38FFE7FE387FC3
FC1714809318>I<EA01F0EA0FFE487E383E0F80EA3803387001C0A238E000E0A5EAF001007013
C0EA7803383C0780EA3E0F381FFF006C5AEA01F013147E9318>I<EA7E3E38FEFF80007F13C038
0FC1E01380EB0070120E1438A6000F1370A2EB80E013C1EBFFC0000E1380EB3E0090C7FCA7EA7F
C0487E6C5A151E809318>I<387F87E038FF9FF0387FBFF83803F878EBF030EBE0005BA25BA9EA
7FFEB5FC6C5A15147F9318>114 D<EA07F7EA3FFF5AEA780FEAE007A3007CC7FCEA7FE0EA1FFC
EA03FEEA001F38600780EAE003A212F038F80F00B5FC13FCEAE7F011147D9318>I<487E1203A4
387FFFC0B5FCA238038000A9144014E0A33801C1C013FF6C1380EB3E0013197F9818>I<387E07
E0EAFE0FEA7E07EA0E00AC1301EA0F033807FFFC6C13FE3801FCFC1714809318>I<387F8FF000
FF13F8007F13F0381E03C0000E1380A338070700A3EA038EA4EA01DCA3EA00F8A2137015147F93
18>I<387F8FF000FF13F8007F13F0380E01C0EB0380A21207EB0700A2EA03871386138EEA01CE
A2EA00CCA213DC1378A31370A313F05B1279EA7BC0EA7F806CC7FC121E151E7F9318>121
D E /Fc 47 122 df<EB7E1F3901C1B180390303E3C0000713C3000EEBC180903801C000A6B512
FC380E01C0B0387F87FC1A1D809C18>11 D<137E3801C180EA0301380703C0120EEB018090C7FC
A5B512C0EA0E01B0387F87F8151D809C17>I<EB7FC0EA01C1EA03031207EA0E01A7B5FCEA0E01
B0387FCFF8151D809C17>I<13401380EA0100120212065AA25AA25AA212701260A312E0AC1260
A312701230A27EA27EA27E12027EEA008013400A2A7D9E10>40 D<7E12407E7E12187EA27EA27E
A213801201A313C0AC1380A312031300A21206A25AA25A12105A5A5A0A2A7E9E10>I<126012F0
A212701210A41220A212401280040C7C830C>44 D<EAFFE0A20B0280890E>I<126012F0A21260
04047C830C>I<EA0FE0EA3038EA401CEAE00E12F0A3EA000C131C1330136013C0138012011300
A6C7FCA51203EA0780A2EA03000F1D7E9C14>63 D<B512C0380F00F01438143C141C141EA4141C
143C1478EB01F0EBFFE0EB0078143C141E140E140FA5141EA2143C1478B512E0181C7E9B1D>66
D<90381F8080EBE0613801801938070007000E13035A14015A00781300A2127000F01400A80070
14801278A212386CEB0100A26C13026C5B380180083800E030EB1FC0191E7E9C1E>I<B512C038
0F00F0143C140E80A2EC038015C01401A215E0A815C0A21403158014071500140E5C1470B512C0
1B1C7E9B20>I<B512FC380F003C140C1404A214061402A213021400A3130613FE13061302A314
0113001402A31406A2140C143CB512FC181C7E9B1C>I<B512F8380F007814181408A2140C1404
A213021400A3130613FE13061302A490C7FCA77FEAFFF8161C7E9B1B>I<90381F8080EBE06138
01801938070007000E13035A14015A00781300A2127000F01400A6ECFFF0EC0F80007013071278
A212387EA27E6C130B380180113800E06090381F80001C1E7E9C21>I<EAFFF0EA0F00B3A8EAFF
F00C1C7F9B0F>73 D<EAFFF8EA0F8090C7FCB01408A31418A2141014301470EB01F0B5FC151C7E
9B1A>76 D<B46CEBFF80000FECF800A2390BC00178A33809E002A23808F004A3EB7808A3EB3C10
A3EB1E20A3EB0F40A2EB0780A3EB0300121C3AFF8307FF80211C7E9B26>I<B4EB7FC0390F800E
001404EA0BC0EA09E0A2EA08F013F81378133CA2131E130FA2EB078414C41303EB01E4A2EB00F4
147CA2143CA2141C140C121C38FF80041A1C7E9B1F>I<EB3F80EBE0E03803803848487E000E7F
487F003C148000381303007814C0A20070130100F014E0A8007014C000781303A200381480003C
1307001C14006C130E6C5B6C6C5A3800E0E0EB3F801B1E7E9C20>I<B51280380F00E01478143C
141C141EA5141C143C147814E0EBFF8090C7FCACEAFFF0171C7E9B1C>I<3807E080EA1C19EA30
05EA7003EA600112E01300A36C13007E127CEA7FC0EA3FF8EA1FFEEA07FFC61380130FEB07C013
0313011280A300C01380A238E00300EAD002EACC0CEA83F8121E7E9C17>83
D<007FB512C038700F010060130000401440A200C014201280A300001400B1497E3803FFFC1B1C
7F9B1E>I<39FFF07FC0390F000E001404B3A26C5B138000035B12016C6C5AEB70C0011FC7FC1A
1D7E9B1F>I<EA1FC0EA3070EA78387F12301200A2EA01FCEA0F1C12381270126000E01340A3EA
603C38304E80381F870012127E9115>97 D<12FC121CAA137CEA1D86EA1E03381C018014C01300
14E0A614C013011480381E0300EA1906EA10F8131D7F9C17>I<EA07E0EA0C30EA18781230EA70
30EA600012E0A61260EA70041230EA1808EA0C30EA07C00E127E9112>I<133F1307AAEA03E7EA
0C17EA180F487E1270126012E0A61260127012306C5AEA0C373807C7E0131D7E9C17>I<EA03E0
EA0C30EA1818EA300CEA700EEA600612E0EAFFFEEAE000A41260EA70021230EA1804EA0C18EA03
E00F127F9112>I<13F8EA018CEA071E1206EA0E0C1300A6EAFFE0EA0E00B0EA7FE00F1D809C0D>
I<EB03803803C4C0EA0C38001C138038181800EA381CA4EA1818EA1C38EA0C30EA13C00010C7FC
12307EEA1FF813FF1480EA3003386001C0EAC000A33860018038300300EA1C0EEA07F8121C7F92
15>I<12FC121CAA137C1387EA1D03001E1380121CAD38FF9FF0141D7F9C17>I<1218123CA21218
C7FCA712FC121CB0EAFF80091D7F9C0C>I<12FC121CAAEB3FC0EB0F00130C13085B5B5B13E012
1DEA1E70EA1C781338133C131C7F130F148038FF9FE0131D7F9C16>107
D<12FC121CB3A9EAFF80091D7F9C0C>I<39FC7E07E0391C838838391D019018001EEBE01C001C
13C0AD3AFF8FF8FF8021127F9124>I<EAFC7CEA1C87EA1D03001E1380121CAD38FF9FF014127F
9117>I<EA03F0EA0E1CEA1806487E00701380EA600100E013C0A600601380EA700300301300EA
1806EA0E1CEA03F012127F9115>I<EAFC7CEA1D86EA1E03381C018014C0130014E0A6EB01C0A2
1480381E0300EA1D06EA1CF890C7FCA7B47E131A7F9117>I<EAFCE0EA1D30EA1E78A2EA1C3013
00ACEAFFC00D127F9110>114 D<EA1F90EA3070EA4030EAC010A212E0EAF800EA7F80EA3FE0EA
0FF0EA00F8EA8038131812C0A2EAE010EAD060EA8FC00D127F9110>I<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
D<B512F814FF390FC01FC0EC07E0EC01F015F8140015FC157CA2157EA8157CA315F8A2EC01F0EC
07E0EC1FC0B6120014F81F1C7E9B25>68 D<B5FCA2EA07E0B3A6B5FCA2101C7F9B12>73
D<EA0FF8EA1C1E383E0F80130714C0121C1200137FEA07E7EA1F07123C127C12F8A3EA780B383E
13F8EA0FE115127F9117>97 D<EA03FCEA0E0EEA1C1F123C1278130E00F8C7FCA61278EB018012
3C381C0300EA0E0EEA03F811127E9115>99 D<EA01FCEA0F07381C0380383C01C0127814E012F8
A2B5FC00F8C7FCA31278007C1360123C6C13C0380F03803801FC0013127F9116>101
D<121E123FA4121EC7FCA6B4FCA2121FAEEAFFE0A20B1E7F9D0E>105 D<B4FCA2121FB3A7EAFF
E0A20B1D7F9C0E>108 D<39FF0FC07E903831E18F3A1F40F20780D980FC13C0A2EB00F8AB3AFF
E7FF3FF8A225127F9128>I<38FF0FC0EB31E0381F40F0EB80F8A21300AB38FFE7FFA218127F91
1B>I<EA01FC380F0780381C01C0003C13E0387800F0A200F813F8A6007813F0A2383C01E0381E
03C0380F07803801FC0015127F9118>I<38FF3F80EBE1E0381F80F0EB0078147C143C143EA614
3C147C1478EB80F0EBC1E0EB3F0090C7FCA6EAFFE0A2171A7F911B>I<EA1FD8EA3078EA601812
E0A2EAF000EAFF80EA7FE013F0EA1FF8EA07FCEA007CEAC01CA212E01318EAF830EACFC00E127E
9113>115 D<1203A45AA25AA2EA3FFC12FFEA1F00A9130CA4EA0F08EA0798EA03F00E1A7F9913>
I<38FF07F8A2EA1F00AC1301120F380786FFEA01F818127F911B>I E /Fe
18 87 df<1230127812F81278127005057C840D>46 D<EB3F80EBC1E0380100F0000213785AA2
000F137C1380A2EB00781206C712F814F0EB01E014C0EB0380EB0700130E5B5B13605B485A3803
00201206000813405A383FFFC0481380B5FC161E7E9D17>50 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 D<D807FCECFFC0D8007CECF800013CEB0178A2014EEB02F0
A21504A21508A20187EB11E0A21521A21541EB8380D80103495AA2EC81031482EB01C214C40002
4A5A14C8A214D0EB00F0000613E04BC7FC000F01C07F3AFFE0C1FFF82A1F7E9E2A>I<3A07FC01
FFC03A003E003E001518A2014F1310A2EB4780A2EB43C0A201835BEB81E0A2EB80F0A21478D801
005B147C143CA2141EA200026D5AA31407A20006130392C7FC000F7FEAFFE0221F7E9E22>I<EB
03F8EB1E0EEB38079038E003803901C001C0000314E03807800048C712F0A2121E15F8123E123C
127CA448EB01F0A4EC03E0127815C01407007C1480003CEB0F00141E6C131C000E5B6C13F03803
C3C0D800FEC7FC1D217B9F23>I<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>I<EA20
80EA3F00122C1220A3122FEA3080EA2040EA0060A312C0EA80C0EA6180EA1F000B107F8F0F>I<
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
D<EAFFF813FF148038F00FC0EB03E01301EB00F0A5EB01E0EB03C0EB1F80B51200A2148038F007
E01301EB00F01478A614F01301EB07E0B512C01480EBFC0015207B9F1E>I<EB1FC0EBFFF84813
FC3803E03C3807800C48C7FC121E123E123C127C1278A35AA81278A3127C123C123E121E6C1302
3807800E3803E03E3801FFFC6C13F0EB1FC017227DA01D>I<EAFFFCEBFF8014C038F007E0EB01
F0EB00F81478143CA2141EA2140E140FA9141EA3143C147C14F8EB01F0EB07E0B512C01480EBFC
0018207B9F21>I<B512C0A300F0C7FCABB51280A300F0C7FCACB512E0A313207B9F1B>I<EB1FE0
EBFFF84813FE3803E03E3807800E48C7FC121E123E123C127C1278A35AA6EB03FEA21278EB001E
A2127C123C123E121E7EEA07803803E03E3801FFFE6C13F8EB1FC017227DA01E>71
D<00F01378AEB512F8A338F00078AF15207B9F20>I<12F0B3AE04207C9F0D>I<12F0B3ABB51280
A311207B9F19>76 D<00F8EB01F86C1303A200F4147800F61307A300F3130EA3EB801EA200F113
1CEBC03CA200F01338A2EBE078A2EB6070EB70F0A2EB30E01339A2EB19C0A3EB0F80A390C7FC1D
207B9F28>I<00FC13787EA212F612F7A2EAF380A313C012F113E0A212F013F01370A213781338
133CA2131C131E130EA31307A2130314F8A2130115207B9F20>I<133FEBFFC0000313F03807E1
F8380F807C48487E001E131E487FA248EB0780A348EB03C0A96C130700781480A36CEB0F00A26C
131E001F133E6C6C5A3807E1F86CB45AC613C0013FC7FC1A227DA021>I<EAFFF813FF148038F0
0FC0EB03E01301EB00F0A7EB01E01303EB0FC0B51280140013F800F0C7FCAD14207B9F1D>I<EA
FFF813FF148038F007C0EB03E01301EB00F0A5EB01E01303EB07C0B51280140013F8EAF03C7FA2
7FA2EB0780A2EB03C0130114E0EB00F0A21478A2143C16207B9F1D>82 D<EA01FC3807FF804813
C0EA1F03EA3C0014005AA5127C123C123FEA1FE0EA0FFC6C7EEA01FF38003F80EB07C0130314E0
1301A514C0EAC003EAF00738FC0F80387FFF00EA1FFEEA03F813227EA019>I<B612C0A3D8001E
C7FCB3AB1A207E9F1F>I<EA07E0EA3FF8EA7FFCEA701EEA401FEA000FA3133FEA07FF121FEA7E
0F12F812F0A3EAF83FEA7FFFEA3FEFEA1F8F10147E9316>97 D<EA03F0EA0FFCEA1FFEEA3E0EEA
3C02EA7800A25AA61278A2EA3C01EA3E0FEA1FFFEA0FFEEA03F010147E9314>99
D<EB0780ACEA07C7EA0FF7EA1FFFEA3E1FEA7C07127812F812F0A71278130FEA3E1FEA1FFFEA0F
F7EA07C711207E9F17>I<EA03F0EA0FFC487EEA3E1FEA3C07127838700380B5FCA300F0C7FCA3
127012786C5AEA3E076CB4FCEA07FEEA01F811147F9314>I<137EEA01FE1203EA078013005AA7
EAFFF0A3EA0F00B10F20809F0E>I<3803E0F0EA0FFF5A383E3E00EA3C1E487EA5EA3C1EEA3E3E
EA1FFC485AEA33E00030C7FC1238EA3FFEEBFF806C13C04813E0387803F0EAF000A3EAF801387E
07E0383FFFC0000F1300EA03FC141E7F9317>I<12F0ACEAF1F8EAF3FCEAF7FEEAFC1FEAF80FA2
12F0AE10207D9F17>I<12F0A41200A812F0B3A204207D9F0B>I<12F0B3AE04207D9F0B>108
D<39F0FC07E039F3FE1FF039F7FF3FF839FE0FF07C39F807C03CA200F01380AE1E147D9327>I<
EAF1F8EAF3FCEAF7FEEAFC1FEAF80FA212F0AE10147D9317>I<EA01F8EA07FE381FFF80383F0F
C0EA3C03387801E0A238F000F0A6387801E0A2383C03C0EA3F0F381FFF803807FE00EA01F81414
7F9317>I<EAF0E012F312F7EAFF0012FCA25AA25AAC0B147D9310>114 D<EA07F0EA1FFC123FEA
780C1300A3127CEA3FC0EA1FF0EA0FF81203EA007C133CA212C0EAF07CEAFFF8EA7FF0EA0FC00E
147F9311>I<121EA6EAFFF0A3EA1E00AD1320EA1FF0120FEA07C00C1A7F9910>I<EAF00FAF131F
133FB5FCEA7FEFEA3F0F10147D9317>I E /Fh 36 118 df<13E0EA01C0EA0380EA0700120EA2
5AA25AA35AA45AAC1270A47EA37EA27EA27EEA0380EA01C0EA00E00B2A7E9E10>40
D<12E012707E7E7EA27EA2EA0380A3EA01C0A4EA00E0ACEA01C0A4EA0380A3EA0700A2120EA25A
5A5A5A0B2A7E9E10>I<EA018013C01380A2EA6186EAF99FEA7DBEEA1FF8EA07E0A2EA1FF8EA7D
BEEAF99FEA6186EA0180A213C0138010127E9E15>I<131C133EA2132E1367A2EBE78013C713C3
00017F1383138100037FA248C67EA21206000E1378380FFFF8A2381C003CA2121800387FA24813
1F80A248EB0780191D7F9C1C>65 D<EAFFF813FF38F00F80EB03C0EB01E0EB00F0A5EB01E0EB07
C0B51280EBFE00EBFF8038F03FC0EB03E0EB01F013001478A514F0EB01E0EB07C0B51280EBFC00
151D7C9C1C>I<EB3FC0EBFFF0EA03C03807803048C7FC121E5AA25AA35AA91278A37EA27E6C13
08380780183803C0783800FFF0EB3F80151F7D9D1B>I<EAFFFC13FF38F00F80EB03E0EB01F013
0014781438143CA2141C141EA8143CA3147814F0A2EB03E0EB0FC0B5120013FC171D7C9C1E>I<
B512C0A200F0C7FCABB51280A200F0C7FCACB512C0A2121D7C9C19>I<B51280A200F0C7FCABB5
FCA200F0C7FCAE111D7C9C18>I<EB3F803801FFF03803C0F838078038380F0018001E13005AA2
5AA35AA6EB07F8A2EB00381278A37EA27E7EEA07803803C0F83801FFF038003F80151F7D9D1C>
I<00F013F0ADB5FCA2EAF000AE141D7C9C1D>I<12F0B3AB041D7C9C0C>I<12F0B3A9EAFFFEA20F
1D7C9C16>76 D<00FCEB07E0A300EE130DA300E71319A3EB803900E31331EBC071A200E11361A2
EBE0E1A200E013C113F1EB7181A3EB3B01A3131EA313001B1D7C9C24>I<00FC1370A27E12EE12
EF12E7A2138012E313C0A2EAE1E0A212E013F013701378A2133CA2131C131E130EA2130F130714
F01303A2141D7C9C1D>I<133F3801FFE0487F3807C0F8380F807C381E001E003E131F003C7F48
EB0780A348EB03C0A86C130700781480A2007C130F003C1400003E5B6C133E6C6C5A6C6C5A6CB4
5A6C5BD8003FC7FC1A1F7E9D1F>I<EAFFFC13FF38F00F80EB03C0EB01E0EB00F0A6EB01E01303
EB0FC0B51280EBFE0000F0C7FCAD141D7C9C1B>I<EAFFF813FF38F00F80EB03C0EB01E0EB00F0
A5EB01E01303EB0FC0B51280140013F8EAF03C131C131E7FA2EB0780A2EB03C0A2EB01E0EB00F0
A21478151D7C9C1B>82 D<EA03F8EA0FFEEA1C0F487E487E0060C7FC12E0A47E1278127FEA3FE0
EA1FFCEA07FEEA01FF38001F801307EB03C0A21301A400C01380EAE00338F00700EA7C0EEA1FFC
EA07F0121F7E9D17>I<B61280A2D8001EC7FCB3A9191D7F9C1C>I<00F01370B3A5007813E0A238
3C01C0381E0380EA0F073807FE00EA01F8141E7C9C1D>I<00F001F0137080A2007801B81360D9
019C13E0A3D83C03EB01C0141E140E001E15809038070F03A2EB0607000F1500010E1387130C00
07EB0386A2018C138E019813CE0003EB01CCA3D801D013C8EC00D801F013F85B00001470241D7F
9C27>87 D<EA0FC0EA3FF0EA7FF8EA7038EA401C1200A213FC120F123FEA781C12E0A3EAF07CEA
7FFC13DCEA3F1C0E127E9114>97 D<EA07E0EA0FF8EA1FFCEA3C1CEA700413005AA612701304EA
3C1CEA1FFCEA0FF8EA07E00E127E9112>99 D<130EABEA0F8EEA1FEEEA3FFEEA7C3EEA700EA212
E0A612F0EA701EEA7C3EEA3FFEEA1FEEEA0F8E0F1D7E9C15>I<EA07C0EA1FE0EA3FF0EA7878EA
7018EA601CEAFFFCA3EAE000A312701304EA3C1CEA3FFCEA1FF8EA07E00E127E9112>I<13FC12
011203EA0700120EA7EAFFE0A2EA0E00B00E1D809C0D>I<3803C3C0EA0FFF5A381C3800487EA5
6C5AEA1FF85BEA3BC00038C7FCA2EA1FFC13FF481380EA700738E001C0A3EAF003387C0F80383F
FF006C5AEA07F8121B7F9115>I<12F0A41200A71270B2041D7E9C0A>105
D<12E0B3AB031D7D9C0A>108 D<EAE3E0EAEFF0EAFFF8EAF83CEAF01C12E0AD0E127D9115>110
D<EA03F0EA0FFC487EEA3C0F38780780EA700338E001C0A5EAF00300701380EA7807383C0F00EA
1FFE6C5AEA03F012127F9115>I<EAE38012E712EFEAFC005A5AA25AAB09127D910E>114
D<EA1FC0EA3FF0127FEAF030EAE000A27E127FEA3FC0EA1FE0EA00F01338A21280EAF078EAFFF0
EA7FE0EA1FC00D127F9110>I<121CA6EAFFE0A2EA1C00AC1320EA1FF0120FEA07C00C187F970F>
I<EAE01CAE137CEAFFFCEA7FDCEA3F1C0E127D9115>I E /Fi 11 121 df<B5FCA2EA07E0B3A9
B5FCA2101F7E9E14>73 D<D8FFE0EC3FF86D147F00071600D806F814DFA3017CEB019FA26DEB03
1FA26D1306A290380F800CA2903807C018A3903803E030A2903801F060A2903800F8C0A2EC7D80
A2EC3F00A3141ED8FFF0903803FFF8140C2D1F7E9E32>77 D<B512FEECFF803907E00FE0EC03F0
EC01F8A215FCA515F8A2EC03F0EC0FE090B51280ECFE0001E0C7FCACB5FCA21E1F7E9E24>80
D<EA01FE3807FF80381F0FC0123EA2127CEB030000FCC7FCA6127C127E003E1360003F13C0EA1F
813807FF00EA01FC13147E9317>99 D<EA01FE3807FF80380F83C0381E01E0383E00F05A14F812
FCB5FCA200FCC7FCA3127CA26C1318121E380F80703807FFE0C6138015147F9318>101
D<121C123E123F5A7E123E121CC7FCA6B4FCA2121FB0EAFFE0A20B217EA00E>105
D<38FE0FC0EB3FE0381E61F0EBC0F81380EA1F00AD38FFE3FFA218147D931D>110
D<48B4FC000713C0381F83F0383E00F8A248137CA200FC137EA6007C137CA26C13F8A2381F83F0
3807FFC00001130017147F931A>I<38FF1FC0EB7FF0381FE1F8EB80FCEB007EA2143E143FA614
3E147E147CEB80FCEBC1F8EB7FE0EB1F8090C7FCA7EAFFE0A2181D7E931D>I<EA0180A31203A3
1207120F123FEAFFFCA2EA0F80AA1386A5EA07CCEA03F8EA01F00F1D7F9C14>116
D<38FFE1FFA2380F80706C6C5A6D5A3803E180EA01F36CB4C7FC137E133E133F497E136FEBC7C0
380183E0380381F0380701F8380E00FC39FF81FF80A219147F931C>120
D E /Fj 56 123 df<90381F83E09038F06E303901C07878380380F8903800F03048EB7000A7B6
12803907007000B2387FE3FF1D20809F1B>11 D<133FEBE0C0EA01C0380381E0EA0701A290C7FC
A6B512E0EA0700B2387FC3FE1720809F19>I<EB3FE013E0EA01C1EA0381EA0700A8B5FCEA0700
B2387FE7FE1720809F19>I<90381F81F89038F04F043901C07C06390380F80FEB00F05A0270C7
FCA6B7FC3907007007B23A7FE3FE3FF02420809F26>I<EA7038EAF87CEAFC7EA2EA743AEA0402
A3EA0804A2EA1008A2EA2010EA40200F0E7E9F17>34 D<132013401380EA0100120212065AA25A
A25AA312701260A312E0AC1260A312701230A37EA27EA27E12027EEA0080134013200B2E7DA112
>40 D<7E12407E7E7E120C7EA27EA2EA0180A313C01200A313E0AC13C0A312011380A3EA0300A2
1206A25A12085A5A5A5A0B2E7DA112>I<127012F812FCA212741204A31208A21210A212201240
060E7C840D>44 D<EAFFC0A20A027F8A0F>I<127012F8A3127005057C840D>I<EA03F0EA0C1CEA
100E487E00401380128000F013C0EAF803A3EA200712001480A2EB0F00130E5B5B5B13605B485A
48C7FC000613405A5A00101380EA3FFF5AB5FC121E7E9D17>50 D<EA03F0EA0C1CEA100EEA200F
007813801307A2EA380F12001400A2130E5B5BEA03F0EA003C130E130FEB0780A214C0122012F8
A300F013801240EB0F00EA200EEA1C3CEA03F0121F7E9D17>I<1306A2130EA2131E132EA2134E
138EA2EA010E1202A212041208A212101220A2124012C0B512F038000E00A7EBFFE0141E7F9D17
>I<127012F8A312701200AA127012F8A3127005147C930D>58 D<127012F8A312701200AA1270
12F012F8A212781208A31210A31220A21240051D7C930D>I<5B497EA3497EA3EB09E0A3EB10F0
A3EB2078A3497EA3497EA2EBFFFE3801000FA30002EB0780A348EB03C0120E001FEB07E039FFC0
3FFE1F207F9F22>65 D<90380FC04090387030C03801C0093803800538070003000E1301001E13
00121C123C007C1440A2127800F81400A91278007C1440A2123C121C001E1480120E6CEB010038
0380026C6C5A38007038EB0FC01A217D9F21>67 D<B6FC380F800F00071303A28015801400A314
801500A3138113FF13811380A4EC0020A31540A315C0A2EC0180000F130FB6FC1B1F7E9E1F>69
D<B6FC380F800F00071303A28015801400A4EC8000A4138113FF13811380A491C7FCA8487EEAFF
FE191F7E9E1E>I<EAFFFCEA0FC0EA0780B3A9EA0FC0EAFFFC0E1F7F9E10>73
D<B46CEB1FF8000F158000071500D805C0132FA3D804E0134FA20170138FA3903838010FA3EB1C
02A3EB0E04A3EB0708A3EB0390A2EB01E0A3380E00C0001FEC1F803AFFE0C1FFF8251F7E9E2A>
77 D<39FF803FF83907C007C0EC03803905E00100A2EA04F01378A2133CA2131E130FA2EB0781
A2EB03C1EB01E1A2EB00F1A21479143DA2141FA28080A2000E7F121F38FFE0011D1F7E9E22>I<
EB1F80EBF0F03801C0383807801E48487E000E7F001E148048EB03C0A2007C14E000781301A200
F814F0A9007814E0007C1303A2003C14C0A26CEB0780000E1400000F5B3807801E3801C0383800
F0F0EB1F801C217D9F23>I<B512E0380F80780007131C141E801580A61500141E141C1478EBFF
E00180C7FCAD487EEAFFFC191F7E9E1F>I<B57E380F80F0000713788080A2141FA4141EA25C5C
5CEBFF80EB81C0EB80E08014701478A3147CA31504147E143E390FC01E0839FFFC0F10C7EA03E0
1E207E9E21>82 D<3807E080EA0C19EA1007EA3003EA6001A212E01300A36C1300A21278127FEA
3FF0EA1FFC6C7EEA03FF38001F801307EB03C0A213011280A400C01380130300E01300EAF006EA
CE0CEA81F812217D9F19>I<007FB512E038780F010060EB006000401420A200C0143000801410
A400001400B3497E3807FFFE1C1F7E9E21>I<39FFFC3FF8390FC007C03907800380EC0100B3A3
00031302A2EA01C05C6C6C5AEB7018EB3820EB0FC01D207E9E22>I<397FF81FF8390FE00FC039
07C00700000313026C6C5AEBF00C00001308EB7810137CEB3C20EB3E40131E6D5AA213076D7E49
7E1305EB09F0EB18F8EB1078EB207CEB603CEB401EEB801F00017F9038000780000214C0000713
03391F8007E039FFE01FFE1F1F7F9E22>88 D<EA0804EA1008EA2010A2EA4020A2EA8040A3EAB8
5CEAFC7EA2EA7C3EEA381C0F0E7B9F17>92 D<EA1FE0EA3030EA7818131CEA300E1200A313FEEA
078EEA1E0E1238127800F01310A3131E127838386720380F83C014147E9317>97
D<120E12FE120EAA133EEBC380380F01C0EB00E0120E1470A21478A61470A214E0120F380D01C0
380CC300EA083E15207F9F19>I<EA03F8EA0E0CEA1C1E1238130CEA7000A212F0A61270A2EA38
01A2EA1C02EA0E0CEA03F010147E9314>I<EB0380133F1303AAEA03E3EA061BEA1C07EA3803A2
1270A212F0A61270A212381307121CEA0E1B3803E3F815207E9F19>I<EA03F0EA0E1C487E487E
A21270EB038012F0A2B5FC00F0C7FCA31270A26C13801218380C0100EA0706EA01F811147F9314
>I<137C13C6EA018F1203EA07061300A7EAFFF0EA0700B2EA7FF01020809F0E>I<14E03803E330
EA0E3CEA1C1C38380E00EA780FA5EA380E6C5AEA1E38EA33E00020C7FCA21230A2EA3FFE381FFF
806C13C0383001E038600070481330A4006013606C13C0381C03803803FC00141F7F9417>I<12
0E12FE120EAA133E1343EB8180380F01C0A2120EAE38FFE7FC16207F9F19>I<121C121E123E12
1E121CC7FCA6120E127E120EB1EAFFC00A1F809E0C>I<13E0EA01F0A3EA00E01300A61370EA07
F012001370B3A31260EAF06013C0EA6180EA3F000C28829E0E>I<120E12FE120EAAEB0FF0EB03
C0140013025B5B5B1330137013F8EA0F38EA0E1C131E130E7F1480130314C014E038FFCFF81520
7F9F18>I<120E12FE120EB3ABEAFFE00B20809F0C>I<390E1F01F039FE618618390E81C81C390F
00F00EA2000E13E0AE3AFFE7FE7FE023147F9326>I<EA0E3EEAFE43380E8180380F01C0A2120E
AE38FFE7FC16147F9319>I<EA01F8EA070E381C0380383801C0A2387000E0A200F013F0A60070
13E0A2383801C0A2381C038038070E00EA01F814147F9317>I<EA0E3E38FEC380380F01C0EB00
E0120E14F014701478A6147014F014E0EA0F0114C0380EC300133E90C7FCA8EAFFE0151D7F9319
>I<3803E080EA0619EA1C05EA3C07EA38031278127012F0A61270127812381307EA1C0BEA0E13
EA03E3EA0003A8EB3FF8151D7E9318>I<EA0E78EAFE8CEA0F1EA2130CEA0E00AEEAFFE00F147F
9312>I<EA1F90EA3070EA4030EAC010A3EAE0001278EA7F80EA3FE0EA0FF0EA0070EA80381318
A212C0A2EAE030EAD060EA8F800D147E9312>I<1202A31206A2120EA2123EEAFFF8EA0E00AB13
08A5EA06101203EA01E00D1C7F9B12>I<380E01C0EAFE1FEA0E01AE13031206EA030D3801F1FC
16147F9319>I<38FF83F8381E01E0381C00C06C1380A338070100A2EA0382A3EA01C4A213ECEA
00E8A21370A3132015147F9318>I<39FF9FE1FC393C078070391C030060EC8020000E1440A214
C0D807071380130414E039038861001471EBC8733801D032143A3800F03CEBE01CA2EB6018EB40
081E147F9321>I<387FC3FC380F01E0000713C0148038038100EA01C2EA00E413EC1378133813
3C137C134E1387EA010738030380380201C0000613E0121E38FF07FE1714809318>I<38FF83F8
381E01E0381C00C06C1380A338070100A2EA0382A3EA01C4A213ECEA00E8A21370A31320A25BA3
EAF080A200F1C7FC1262123C151D7F9318>I<EA3FFFEA380E1220131CEA403813781370EA00E0
120113C0EA038012071301120E121EEA1C03EA3802EA7006130EEAFFFE10147F9314>I
E /Fk 13 115 df<12F8A505057A8411>46 D<13FE3803FFC04813E04813F0381F03F8383C00FC
0038137E0078133E127000F0131FA212601220C7FCA3143EA2147CA214F8EB01F014E0EB03C0EB
0780EB0F00131E5B5B5B485A485A485A48C7FC121E5A007FB5FCA418287EA71E>50
D<B61280A4C71207EC0F00141E5C147C14785C13015C495A13075C130F91C7FC5BA2131E133EA2
5BA3137813F8A5485AA719277EA61E>55 D<B612E0A400F8C8FCAEB61280A400F8C8FCB0B612F0
A41C2A7BA924>69 D<EA01FE380FFF80003F13C014E0383C03F0EA3001000013F81300A5137FEA
07FF121FEA3FE0EA7F0012FC5AA3EAFC01EA7E07EA7FFF7EEA1FFCEA0FE0151B7E9A1D>97
D<143EAF13FCEA03FF4813FE5AEA1FC1383F007E003E133E5AA212FC5AA77E127CA26C137E003F
13FEEA1FC1EA0FFF6C13BE6C133EEA00FC172A7EA91F>100 D<9038F807803903FE7FC0000FB5
FC5A903807C000383E03E0A2486C7EA66C485AA26C485A13FF485BD83BFEC7FCEA38F80078C8FC
A27E383FFFC014F86C7F80487F387C007F48EB1F80140FA36C131F007EEB3F00383F80FE13FF00
0F13F86C5BC613801A287E9A1E>103 D<12F8AF133FEBFF8000FB13C0B512E0130738FE03F0EA
FC01A312F8B2142A7BA91F>I<12F8A51200AA12F8B3A9052A7CA90E>I<12F8B3B3A6052A7CA90E
>108 D<EAF83FEBFF8000FB13C0B512E0130738FE03F0EAFC01A312F8B2141B7B9A1F>110
D<137F3801FFC0000713F0487F381FC1FC383F007E003E133E487FA200787F00F81480A7007CEB
1F00A2007E5B003E133E003F137E381FC1FC6CB45A6C5B000113C06C6CC7FC191B7E9A1E>I<EA
F83813F812F912FBEAFFC013005AA25AA25AB10D1B7B9A14>114 D E /Fl
15 119 df<BA12FEA485D8001F9038C00001EF001F180784180085A2851A80191FA3190FA2177C
A2F107C0A405FC90C7FCA316011603161F92B5FCA5EDC01F160316011600A3057C147CA31AF8A3
94C8FC19011AF0A31903A219071AE0190F191F193F197F19FF060313C0180F95B5FCBBFCA21A80
A346467CC54E>69 D<B712FEA5D8000FEBE000B3B3B3A7B712FEA527477DC62D>73
D<B600E00503B6FC6F5FA26F5FA2D8001FF3F8006F171EA2DABFFE5FA2DA9FFF5FA2028F6D5EA2
02876D4B5AA302836D4B5AA202816D4B5AA202806D4B5AA26F6C151EA36F6C5DA26F6C5DA26F6D
5CA26F6D495AA26F6D495AA36F6D495AA26F6D49C7FCA2706C131EA2706C5BA2706C5BA3706D5A
A270EBC1E0A270EBE3C0A270EBF780A37001FFC8FCA2715AA2715AA2715AA2D97FE06E5AB600F0
0407B7FCA2715AA2715A68477CC671>77 D<B97E18FC18FF19C019F0D8001F902680000F13FC05
017F716C7E7213807213C0841AE0A27213F0A31AF8A81AF0A34E13E0A21AC04E1380604E13004D
485A050F13F892B75A19C04EC7FC18F003C0CAFCB3A9B712F8A545477CC651>80
D<903807FFFC017FEBFFC048B612F84815FE3A07FE001FFF6D010313C0486D6C7F6F7F167F83A2
6C90C76C7EA26C5AEA00F890C8FCA40207B5FC91B6FC1307013FEBE03F9038FFFE00000313F048
13C04890C7FC485A485A485AA2485AA5167F6C6C14FFED01EF6C6C130301FF903807CFFF000F90
26C03F8F13F86C90B5000713FC0001ECFC036C6CEBF0010103903980007FF8362E7DAD3A>97
D<EC1FFE49B512E0010714F8011F14FE90397FFC07FF9026FFE0011380489039C0007FC04849EB
3FE04890C713F04848141F001FED0FF85B003F16FC1607127F5B17FEA212FFA290B7FCA317FC01
F8C9FCA4127FA27F123FA2171C6C6C153E120F6C6C157E17FC6C6DEB01F86C6DEB03F026007FF0
EB1FE0D93FFEEBFFC06DB612800107ECFE00010014F8020F13802F2E7DAD36>101
D<EF1F80DA7FF0EBFFE00107B5000313F0011F14C7017F9138FFC7F8903AFFE03FFE0F48903880
0FFC4890380007FE4848903903FF07F0A248486DEB81C0EF8000A2001F82A6000F5EA36C6C4990
C7FCA26C6C495A6C6D485A6C9038E03FF84890B55A01DF14C0D803C791C8FC9038C07FF0000790
CAFCA47F7F7F90B612F016FF6C16E017F86C16FE836C17807F0003B812C0120FD81FF8C7001F13
E0D83FE0140148489138007FF0173F4848151FA56C6CED3FE0A26C6CED7FC06D15FFD81FFC0203
13806CB4020F1300000301F0EBFFFCC690B612F0013F15C001074AC7FCD9003F13C035447DAE3B
>103 D<13FC48B4FC4813804813C05A4813E0A66C13C07E6C13806C1300EA00FC90C7FCABEB7F
C0B5FCA512037EB3B0B6FCA518497CC820>105 D<EB7FC0B5FCA512037EB3B3B3A6B61280A519
487CC720>108 D<90287FC001FFC0ECFFE0B5010F01F8010713FC033F01FE011F13FF92B6017F
809126C1FC07902680FE037F9126C3E0039026C1F0017F00039026C7C0019038C3E0006CD9CF00
DAE7808002DE6D01EFC7127F02DC15EE02FC03FE814A5D4A5DA34A5DB3A8B6D8C07F9026FFE03F
B512F0A55C2E7CAD63>I<903A7FC001FFC0B5010F13F8033F13FE92B6FC9126C1FC077F9126C3
E0037F00039038C7C0016CD9CF008002DE7F14DC02FC815C5CA35CB3A8B6D8C07FEBFFE0A53B2E
7CAD42>I<EC0FFF91B512F0010714FE011F6E7E90263FFC037F903AFFE0007FF0480180EB1FF8
4890C76C7E48486E7E000F824980001F1780003F17C04980A2007F17E0A300FF17F0AA007F17E0
A46C6C4A13C0A2001F17806D5C000F17006C6C4A5A6C6D495A6C6D495A6C6D495A903A7FFC03FF
E0011FB6128001074AC7FC010014F0020F90C8FC342E7DAD3B>I<9039FF803F80B5EBFFF00283
13FC02877F91388FC3FF15070003D99E0F13806C13BC14B814F814F06F1300A24A6C5AED00F893
C7FCA25CB3A6B612E0A5292E7CAD31>114 D<EB01F0A61303A31307A3130FA2131F133FA2137F
EA01FF5A000F90B512C0B7FCA4C601F0C7FCB3A5ED01F0A9017F14E0ECF803133F9138FC07C090
391FFE0F806DB5FC6DEBFE0001015B9038001FF024427EC12E>116 D<B66C48B5FCA5000101E0
C7EA1FC06E1580A26C6D15005F017F153E6E147E013F157C6E14FC011F5D6E13016D5DED80036D
5DEDC007A26D01E05B160F6D5DEDF01F6D92C7FC6F5A027F133EEDFC7E023F137CEDFEFC021F5B
15FFA26E5BA26E5BA26E5BA26E5BA26E90C8FCA2157E153C382E7DAD3F>118
D E /Fm 8 117 df<121E121F13F090B712C0A35A178017005E5E5E5E485D007CC712074B5A00
784A5A4BC7FC157E48147C5D1401C7485A4A5A5D140F4A5AA24AC8FC5CA25C5C1301A31303A249
5AA4130FA5131FA96D5A6D5A6D5A2A3B7AB932>55 D<DB1FFE14600203B538C001E0021FECF803
027FECFE07903B01FFFC00FF0F010701C0EB1FDF4990C7EA07FFD91FFC8049481400D9FFE0157F
5C48173F4849151F4890C9FC48170F5B001F1707A2485A1803A2127F5B95C7FCA212FFAB127FA3
6DEE01E0123FA36C7EF003C0120F7F6CEF07806C7F6C6DED0F006C5F6E153ED93FF85D6D6C5D6D
B4EC03F06D01E0EB0FE0010101FCEB7F806D6CB6C7FC021F14FC020314E09126001FFEC8FC3B3D
7ABB48>67 D<EB1FFF48B512F04814FC3907F007FE390FF801FF486C6C7F6F7E82153F6C4880A2
6C5AEA01C0C8FCA391B5FC130F90387FF83F3801FF803807FE00EA0FF8485A485A127FA2485AA4
157F6C7E15DF3A3FF0039FF83B1FFC0F0FFFF03807FFFE0001497E39003FE0002C267DA530>97
D<903801FFC0010F13F8013F13FE9038FF80FF3A01FE003F80D807FCEB1FC04848EB0FE016F048
481307003F15F8A2485AED03FCA312FF90B6FCA301E0C8FCA4127FA3123F6D143C121FA26C6C14
786C6C14F86C6CEB01F06C6CEB07E06C9038C03FC0013FB51200010713FC010013E026267DA52D
>101 D<13FFB5FCA412077EB0ED7FC0913801FFF802077F91380F03FE91381C01FF023014804A
7E02E014C05C5CA391C7FCB3A4B5D8FC3F13FFA4303C7CBB37>104 D<9039FF01FF80B5000F13
F0023F13FC9138FE03FFDAF0001380000301C0EB7FC04AEB3FE091C713F0EE1FF817FC160F17FE
A2160717FFA917FEA2160F17FCA2EE1FF8A2EE3FF06E14E06EEB7FC09139F001FF80DAFC071300
91383FFFFC020F13F0020190C7FC91C9FCADB512FCA430377DA537>112
D<9038FE03F000FFEB0FFE4A7E91383C3F809138707FC00007903860FFE0000313E05C13FF9138
807FC0A2ED3F80ED0E0091C8FCB3A3B512FEA423267DA529>114 D<EB0780A5130FA4131FA213
3FA2137F13FF5A1207001FEBFFF8B6FCA30001EB8000B3153CA86C147814C0017F137090383FE0
E090381FFFC001071380010113001E377EB627>116 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)
	<type> 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 <dayde@enseeiht.fr>
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.
