Wed Jan 13 12:00:32 EST 1993 From owner-mpi-profile@CS.UTK.EDU Wed Jan 13 15:30:45 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA08952; Wed, 13 Jan 93 15:30:45 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA24840; Wed, 13 Jan 93 15:30:41 -0500 X-Resent-To: mpi-profile@CS.UTK.EDU ; Wed, 13 Jan 1993 15:30:39 EST Errors-To: owner-mpi-profile@CS.UTK.EDU Received: from THUD.CS.UTK.EDU by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA24834; Wed, 13 Jan 93 15:30:38 -0500 Received: from LOCALHOST.cs.utk.edu by thud.cs.utk.edu with SMTP (5.61++/2.7c-UTK) id AA03698; Wed, 13 Jan 93 15:30:37 -0500 Message-Id: <9301132030.AA03698@thud.cs.utk.edu> To: mpi-profile@cs.utk.edu Subject: test Date: Wed, 13 Jan 93 15:30:37 EST From: Reed Wade testing archiver -reed From owner-mpi-profile@CS.UTK.EDU Wed Jan 13 15:31:32 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA08966; Wed, 13 Jan 93 15:31:32 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA24904; Wed, 13 Jan 93 15:31:29 -0500 X-Resent-To: mpi-profile@CS.UTK.EDU ; Wed, 13 Jan 1993 15:31:27 EST Errors-To: owner-mpi-profile@CS.UTK.EDU Received: from rios2.EPM.ORNL.GOV by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA24894; Wed, 13 Jan 93 15:31:26 -0500 Received: by rios2.epm.ornl.gov (AIX 3.2/UCB 5.64/4.03) id AA12616; Wed, 13 Jan 1993 15:31:25 -0500 Date: Wed, 13 Jan 1993 15:31:25 -0500 From: walker@rios2.epm.ornl.gov (David Walker) Message-Id: <9301132031.AA12616@rios2.epm.ornl.gov> To: mpi-profile@cs.utk.edu Subject: test This is a test From owner-mpi-profile@CS.UTK.EDU Tue Feb 2 05:55:18 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA29945; Tue, 2 Feb 93 05:55:18 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA11696; Tue, 2 Feb 93 05:55:03 -0500 X-Resent-To: mpi-profile@CS.UTK.EDU ; Tue, 2 Feb 1993 05:55:01 EST Errors-To: owner-mpi-profile@CS.UTK.EDU Received: from marge.meiko.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA11679; Tue, 2 Feb 93 05:54:56 -0500 Received: from hub.meiko.co.uk by marge.meiko.com with SMTP id AA24760 (5.65c/IDA-1.4.4 for ); Tue, 2 Feb 1993 05:54:53 -0500 Received: from float.co.uk (float.meiko.co.uk) by hub.meiko.co.uk (4.1/SMI-4.1) id AA20677; Tue, 2 Feb 93 10:54:48 GMT Date: Tue, 2 Feb 93 10:54:47 GMT From: jim@meiko.co.uk (James Cownie) Message-Id: <9302021054.AA20677@hub.meiko.co.uk> Received: by float.co.uk (5.0/SMI-SVR4) id AA03273; Tue, 2 Feb 93 10:53:12 GMT To: mpi-profile@cs.utk.edu Subject: First version of profiling chapter Content-Length: 7177 Feedback please... latex source follows. I don't think it uses any of the MPI specific features, but you'll need a \begin{document} and \end{document}. They're not here because it's supposed to be a chapter. -- Jim James Cownie Meiko Limited Meiko Inc. 650 Aztec West Reservoir Place Bristol BS12 4SD 1601 Trapelo Road England Waltham MA 02154 Phone : +44 454 616171 +1 617 890 7676 FAX : +44 454 618188 +1 617 890 5042 E-Mail: jim@meiko.co.uk or jim@meiko.com % % $Id: prof.tex,v 1.1 1993/02/02 10:38:37 jim Exp jim $ % % $Log: prof.tex,v $ % Revision 1.1 1993/02/02 10:38:37 jim % Initial revision % % \section{Objectives} The objective of the MPI profiling interface is to ensure that it is relatively easy for authors of profiling (and other similar) tools to interface their codes to MPI implementations on different machines, without requiring access to the source code of the MPI implementation itself. We believe that having such an interface is important if MPI is to be attractive to end users, since the availability of many different tools will be a significant factor in attracting users to the MPI standard. The profiling interface is just that, an interface. It says {\em nothing} about the way in which it is used. There is therefore no attempt to lay down what information is collected through the interface, or how the collected information is saved, filtered, or displayed. While the initial impetus for the development of this interface arose from the desire to permit the implementation of profiling tools, it is clear that an interface like that specified may also prove useful for other purposes, such as ``internetworking'' multiple MPI implementations. Since all that is defined is an interface, there is no objection to its being used wherever it is useful. Since the issues being addressed here are intimately tied up with the way in which executable images are built, which may differ greatly on different machines, the examples given below should be treated solely as one way of implementing the objective of the MPI profiling interface. The requirement of the profiling interface is solely that a differently named set of MPI routines should be made available, anything beyond that is an implementation issue. The examples below show one way in which this objective could be met on a Unix system. \section{Logic of the design} Since MPI is a machine independent standard with many different implementations, it is unreasonable to expect that the authors of profiling tools for MPI will have access to the source code which implements MPI on any particular machine. It is therefore necessary to provide a mechanism by which the implementors of such tools can collect whatever performance information they wish without access to the underlying implementation. The suggested solution to this problem is to ask implementors of MPI libraries to provide a mechanism by which it is possible to access the MPI functions, but with a systematically different set of function names. This allows the implementor of the profiling system to intercept all of the MPI calls which are made by the user program. She can then collect whatever information she requires before calling the underlying MPI implementation to achieve the desired effects. \section{Examples} \subsection{Profiler implementation} Suppose that the profiler wishes to accumulate the total amount of data sent by the MPI\_SEND function, along with the total elapsed time spent in the function. This could trivially be achieved thus :-- \begin{verbatim} static int totalBytes; static int totalTime; extern int now(void); /* Some suitable timer function ! */ int MPI_SEND(const int tag, const int bytes, void * buffer, const int who) { int tstart = now(); int result = P_MPI_SEND(tag,bytes,buffer,who); /* Pass on all the arguments */ totalBytes += bytes; /* Accumulate byte count */ totalTime += now() - tstart; /* and time */ return result; } \end{verbatim} \subsection{MPI library implementation} On a Unix system, in which the MPI library is implemented in C, then there are various possible options, depending on whether the linker and compiler support weak symbols. \subsubsection{Systems without weak symbols} In the absence of weak symbols then a possible solution would use the C macro pre-processor thus :-- \begin{verbatim} #ifdef PROFILELIB # ifdef __STDC__ # define FUNCTION(name) P_##name # else # define FUNCTION(name) P_/**/name # endif #else # define FUNCTION(name) name #endif \end{verbatim} Each of the user visible functions in the library would then be declared thus \begin{verbatim} int FUNCTION(MPI_EXAMPLE)(int n, void *buffer, int target) { /* Useful content */ } \end{verbatim} The same source file can then be compiled to produce both versions of the library, depending on the state of the {\tt PROFILELIB} macro symbol. When the linker does not support weak symbols, then it is recommended that the standard MPI library be built in such a way that the inclusion of MPI functions can be achieved one at a time. If this is the case then the author of the profiling library need only define those MPI functions which she wishes to intercept, and the link step can look something like this :-- \begin{verbatim} % cc ... -lmyprof -lpmpi -lmpi \end{verbatim} Here {\tt libmyprof.a} contains the profiler functions which intercept some of the MPI functions. {\tt libpmpi.a} contains the ``name shifted'' MPI functions, and {\tt libmpi.a} contains the normal definitions of the MPI functions. \subsubsection{Systems with weak symbols} If the compiler and linker support weak external symbols (e.g. Solaris 2.x, other system V.4 machines), then only a single library is required through the use of {\tt \#pragma weak} thus :-- \begin{verbatim} #pragma weak MPI_EXAMPLE = P_MPI_EXAMPLE int P_MPI_EXAMPLE(int n, void * buffer, int target) { /* Useful content */ } \end{verbatim} The effect of this {\tt pragma} is to define the external symbol {\tt MPI\_EXAMPLE} as a weak definition, this means that the linker will not complain if there is another definition of the symbol (for instance in the profiling library), however if no other definition exists, then the linker will use the weak definition. \section{Requirements} To meet the MPI profiling interface, an implementation of the MPI functions must \begin{enumerate} \item provide a mechanism through which all of the MPI defined functions may be accessed with a name shift ({\em PRECISE SHIFT TO BE DETERMINED : {\tt P\_} prefix ?}). \item ensure that those MPI functions which are not replaced may still be linked into an executable image without causing name clashes. \item document the implementation of different language bindings of the MPI interface if they are layered on top of each other, so that the profiler developer knows whether she must implement the profile interface for each binding, or can economise by implementing it only for the lowest level routines. \end{enumerate} From owner-mpi-profile@CS.UTK.EDU Tue Feb 2 23:29:28 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA05541; Tue, 2 Feb 93 23:29:28 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA29080; Tue, 2 Feb 93 23:29:17 -0500 X-Resent-To: mpi-profile@CS.UTK.EDU ; Tue, 2 Feb 1993 23:29:16 EST Errors-To: owner-mpi-profile@CS.UTK.EDU Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA29072; Tue, 2 Feb 93 23:29:15 -0500 Received: from donner.mcs.anl.gov by antares.mcs.anl.gov (4.1/SMI-GAR) id AA28324; Tue, 2 Feb 93 22:29:13 CST Received: by donner.mcs.anl.gov (4.1/GCF-5.8) id AA23867; Tue, 2 Feb 93 22:29:11 CST Message-Id: <9302030429.AA23867@donner.mcs.anl.gov> To: mpi-profile@cs.utk.edu Subject: profiling draft Date: Tue, 02 Feb 93 22:29:10 CST From: Rusty Lusk I really like this idea. It lets me instrument MPI to my heart's content without proposing that everyone do it my way. Two possible improvements to the draft... I was not familiar with the terminology "weak symbols". Possibly I am not the only one. It is not explained until after it is used. Some discussion of how nesting of instrumentation packages might be accomodated would be appropriate. (Can you have 256-character function names? in Fortran?) It seems to me that vendors will provide instumented versions, and users will want to further instrument. - Rusty Lusk From owner-mpi-profile@CS.UTK.EDU Thu Mar 18 10:05:12 1993 Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34) id AA12120; Thu, 18 Mar 93 10:05:12 -0500 Received: from localhost by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA08125; Thu, 18 Mar 93 10:04:39 -0500 X-Resent-To: mpi-profile@CS.UTK.EDU ; Thu, 18 Mar 1993 10:04:37 EST Errors-To: owner-mpi-profile@CS.UTK.EDU Received: from marge.meiko.com by CS.UTK.EDU with SMTP (5.61++/2.8s-UTK) id AA08108; Thu, 18 Mar 93 10:04:28 -0500 Received: from hub.meiko.co.uk by marge.meiko.com with SMTP id AA00509 (5.65c/IDA-1.4.4 for ); Thu, 18 Mar 1993 10:04:18 -0500 Received: from float.co.uk (float.meiko.co.uk) by hub.meiko.co.uk (4.1/SMI-4.1) id AA11901; Thu, 18 Mar 93 15:04:08 GMT Date: Thu, 18 Mar 93 15:04:08 GMT From: jim@meiko.co.uk (James Cownie) Message-Id: <9303181504.AA11901@hub.meiko.co.uk> Received: by float.co.uk (5.0/SMI-SVR4) id AA01431; Thu, 18 Mar 93 15:00:57 GMT To: mpi-profile@cs.utk.edu Subject: Latest profiling draft Content-Length: 34395 Gentlemen, I have marginally revised the previous draft, mostly just tidying and re-ordering the existing text, so that the requirement comes first, followed by the discussion. Since I had some requests not to send latex last time, here is a uuencoded compressed postscript file. Feedback please. -- Jim James Cownie Meiko Limited Meiko Inc. 650 Aztec West Reservoir Place Bristol BS12 4SD 1601 Trapelo Road England Waltham MA 02154 Phone : +44 454 616171 +1 617 890 7676 FAX : +44 454 618188 +1 617 890 5042 E-Mail: jim@meiko.co.uk or jim@meiko.com begin 660 prof.ps.Z M'YV0)4) F=(B")DW8LJTD.$"AH(2)8;(*1.&SALY.D"0L9,&SAP0-5S0R#$# MQ) WBP*9,1CARD+C:F<2J1(ITT;]P0J4@5!!4T=4 T80H3!TP:.FK,T"'C MADV23J&$.5-F3D8:>?>6>2*'3!F,((+,&5/FG0M[4<9S&S9G(>#+" +&Y M1@X;('#0D.&TB..3;=HTIC/G(1$K20:B;A/&,9/*9;5Z!-'B#0BK6'<#-Y.5 MHVO8 X_6D<,XH]DR6$!(I@.GSLN8)!O.%P ?QA"P0LJT(GX?"FCQN:>8[QDF!G/8:%?@" D9)X;(+S@Q!X#]C%@ M@T+L(49E9&A4AAE].-'@%'O -P8:'3:(Q1Y3@.!$'PH(T2 54NQ!AQRUS<$& M626^D(:-'YD!U!Q%>?B"'7.DH4=1,<0 P@TYM5%'4$("L=*">^S(QAQ[;+%9 M"THJN=F772@P1E@_T=%'&@0RJ5-?;[!A'5@,]F3'DCE9(06;;GX5ED9IS.E& M>2 L!E115F)YYQQMOKDG&D4>J4 +:LH)@I-!;0;CF00>FJB>#-J)IZ(,$FED M49#F)*F2/&5(J5E23%K12GB(N=Q$;M!!VXQIX*%1'7#LVBL-(/#UTE6390BL MB&C\9IVOS-80+'L@$.L82" @JRP="@!IZZNYY@C$C8X)"D<9>^C((P@SUA%D M'RZ^ 1M;M0!E!EEE$'&'G/045$="QD M@'+(W" 99K2@;QILE+MR:'PBZ.'/"E:&<5AT4)''N""4-#+2&L.J@!FURJ'K MT[66_(:N)+OH8;XK6=:@&&$ "4)T3-&8!X51K;5;="\(40?/9 R!!E-[*& W M4W+3?5B.IHW9D]@PJUCMM&3P6JX9;_BF+>.U]I%3VF&LW;#E=EP- AMO\.3Q MR@HDW"#-,F]Q\0LXESL'@4H*2?6,7&ML.,XZA\'SZ3AC*>D+JY_=X.M6;]&[ M0YOU_N<9*(NL4ZX"X0?[2XTB?/F(+=Z1!!AUH[/$] M&16%H8#UFS=V!OG4SE&'&,\J/#H:+:!1!DLNF8\_^OIBUE0L S]@R8]^PO(> M_O" %#/L(08RP(&8_I<^ ;H/?B4Y8/T"-3\%MB /#?1?"P 8!@L2,%DYT:"P M8%*7;'6P7>?#@PA):,+W)4M)*F2/!]- &[[,L(+LH\/2RF ?L%7F?4.D'KE( MM\(7D(YTJ")#AE:$IM.)SV8OD,,=L,@<+)ZA5RVSSQC :+@7' &+PROCWN30 M-S881@[X"H,=BE(2)5V%#4%)$?M>0#:SK3 G&()/_120HKBU+0R[66&*FGB^ M"D9'>KURXHQL%D./?8^!9B#0]T"821!\3W_\PY8&+]E 3^(O?.-+5JI,^<%2 M:NLG([)7&3C"&%:B$GZ?W%]+7G(PCJ'L44IJ 7=8B4D"C1)_G"30,%/5!1'R M4#!GZF$9:#.'-42K+Q:9R.F(4*XQC,%WUC-8$GF'*P(F\4][Z *FJ,<@/I:M M*"OTIB" M%;.4M$+VKN<&#I&UP*4YF&J*8WK6*4 M\L44LA(VI>2LK&(9&].94E8.=-@LB]!$UTAZ"E%Y@I/O7J"IU.XI.C& @6SY M-*<7O"8)/5QMX?H#&LJMS4.;45)_:J" /10N13@L)_+8MYF2!%)7HAN#'1@D M4<;5S 8UN $.8N""&X!F=Z(ZDN^PJUWN>G=]?6H0HT9UMAS! 5]_S9$4-.9+ MHG(I>4(2 A'>P!\;%$^Y993#DP09QBP.>&TM:Y =RB7@J:P-;@T69'3.VBXK M[.%T:@V4ONC KY06K9W 21R"[J"_B>1MKB&N X((>L%DV<6'FWDQ>RKS'CG8 M 2B^0H%^Y@"'&^4A!66(0[7P,"*/ 498-#[,C=F B= API %O)%T#I7'[D5 M4VT%$EJMK&6VNO5P]]K#&>;04U;Q9IC"!"B,#HK#GTPE6@/65837QN6BS+] O?Z,I&&I:\PP3V:LVT2IF,L_1S&E^U##7'&$Y'SA0;D;20>NL$XWE>;]F M>B9?_!RL0&>S#'W \I?;9=:\C;G,,ZJ1==L0+TP.;, -4ATR9R4B#]C"[G6]#U M4=^ N[8&L,#-@]!64>?M$D9G,W+0-J]/UP04_49#; C@*ILW4G?WBMXPW$,+ M@-4$%K7K7BTH2;_;1:Z%J.5T#KSOP!MTACUL9N$O*)^2()Z&/>0$XFK8@\!/ MMX8]\)M=]KF#PZ.E;HN]VC<([G"Z-D2/-R5A>;MFFO*KCQHG.BMQN.[PS#2 M-V II_[LJ0)61'"OHRCJU=:FBQKS&(B8A@SH>8-ZV*, _!AH/PDJC]%FD(,8 MU '$>R,7' @YN )K:SG4'B9:L %+S 5G#X0AMJ%?$WJ.8%3 G0SQ\7C""WS4##_QK!!C4_O:VSSWN=Z_[WOM7 MML '/NUS_WL:Q.0&-Y!)#&S@@QG,0 %$X $,9H"#&P"?^M:7+?:O7WWN9W_Z MW8?!#8Q _B'8GOQ&*,+YR:]^\<.@_>Z'O_7A7X08#&&HLJV_^?-O?^#K7[;H MEW[K)X#C5WXP8'_4)UL(2'@'. 0)V( /N( *Z( ,& ,S$!,*,'[*QWPSX"S1 MEX#=(7[FEX W,(*$5P3JEWTHZ'[OIW[MMX(OZ(+Y]W\BV'\B^( *0'T/*%O? MQX/!QX+^]X/PUX#!9X,3&'P["'X/:'TEZ(--.%0N^((MF']3V'\K:(7J1X(F M*(('2'@@. ,R('Y&D -#L'S-=P/0)WWOIX#MMX1!2(1P^(!NZ(-TN(94>(=V MF(?T!WP*L(=U^'W?)X<5N']&*'_8V'XV.(=Y2(DP$ 2+> -" M\(C,EP329X0'J#=%"(M&> /VEWUC. 1&0'@%6'L':( \B(S+"'PQH(S'"(!D M6(SB%XS.R(O.Z(O:Z(Q)4A=%D ,U8(:X"(>A6([D>(ZZ:(2E2(D!2'CM.("7 MF(V].(_R6(_F:(1)8H$W4 0* ([BR /8-P3[N(\SX((QH'_:57N_9WU"D'RB M\8_O&)'H1WA),GW[B -$\(_65XP*4(S%F'W^D5TX\)"WJ(9=B(0,F(J:^(,] MF(=XB(ZP2'WXIY)U6),NZ9+I&),I"7[!UY(M.81VB'\YB9)$N9(]*81(&7RP M>( 0)'[?6(8E&9 E6((YN),_>)7@IUU3Z8!EV)7;IWZ1" ,VT!W)UW=FZ!D@ M$'W1"(]L&7PSB95P"9<227[&B'X*&%L-^8U)PGQCF99J.(3/6(3,6(I"4(2% M>7U"D)(SD)B(J9@AR(._&)F4"(R368AZ&)3G!W_LIX!V2839UW^?:7[9-W[/ M:'[D]XPI: 2E>8 7F ,:N%U\25QJ29< N)EB2'Y'B(R@29%;V'\@V)NBR9LL M^(RXF8P":)S\.(&!282_.7WFUW_0^9S22831R9S3J5VW28T!N(Q&0(B+F ,9 M.(:PZ0/C^(R/.7Z,N7X4>7M>&)P\28*IF'T)R(PO>9/J]Y9 F9])"7STR8+P M^9Y>V)[#B7NU*7_=>8W,F(^N^8WCB8L%R(#HUWYKV7^ZZ9Z^.9W5F:'J9X/W MR:%PN*'[!Z)4Z*$D&J+4B:'3.0/7*9S4N)8=:9L/JH"M27@;2)X\<(RFB7ZB MJ:,GVJ,9BJ+T*)1=J9R$J(S$6:0'VH"F:(KT**)K6*(CNG]]F)WJ%X"IN9D6 M>'SB"9$1.H!5VJ50^J0F6J)OF9-+BJ1HRIE):G]G>H_;:(\-6*:P2)NUR8[4 M**-:6J.X&*%\NIFHR). BHI#]:>$VHF&JI*%BJCNR'Y]*H"JZ9I$4*,W\'S1 MIXSG9Z>4.)1PJJEN2H^=2CPPZ:FA"@.1&*9.>JI>FJI6RIH8^)IFZ%U^>:#[ M:'M56JNT.GU! .,N9@QL*M"T*M>^*N^"JS3)ZS!6C)>F -"D( YJ*P)R'?+ MFJS1.GTY8 3/B@-%<*W9&J VJW7ZJWN:*N.>I_CRJJNN:4EN8^K27XS0("J M>: Q0 3#203A%Z_U2J^?200"J8#Z&IH"*:3[VH!%$)H#.X$%VX V$)H).X'( MQ["A.0,/&['*.9KOBG_D5ZW-J)NMZ:HE>:3:!Z.=B9W(B(S8V88GF(HFNX:# M>K(\F;(NB[(PV[(QFX ORY,DZXX\:(P2E'O9^;''Z;%,>7P,JI%TVJ4]2X34 MZ)O"J:(]J@ _VJ-,J[1(NY[%29RL2*><.JKFZ+1OVHS\>:=B6(3?R;$V.GZ: M2:<%^(D'F9M'B(9M^[:>R;9*>K5KBK5&.J1$R(KFI[=V:(5"^GYA:(76)[AA M.ZMT.:OCYYP':'SG6J. YY=.J7C&B8SM6ISEA8P=28<2>HJ-=NJH!.*4R^+MK M"+S 6Y_Z&7S%BXG$BY3XN9_):[S,.WYV:J"$N+'H6K:UE[CDIP X<+C76WM/ M^[U "KX^&K[D&Z?C>[Y/NX8/F(4,R(2:6)S3=YP 6('A*!.%UZ \$)[/6)?M M6I?[RW_T]XM,RX,[N)B*29_+B8C.ZXSP5XKTV:Y(F)[B)\&4J8F6N8=\2['K M^JZIN9I9>J[].)XC&:L3R9;O6)$0.[#UQWS@Z)>H&;K,&*/BAP,#++GY^99Y MV*YTVX8RR()2:(<__,/:59#<*8 Z/*NV1\,;>H&DL8]FR<)VH99#*+].R;SV M:<792G_P6\))S+1#A8Q!S+EB;(>=Z\.:>\9VZ+VR2\/[Q\5%4)Q#90,##!XQ M0:/X&[^+6H;LIZ('B9T!>YEXZ(<\RX+(9XP%"84>2YL0'%L0= .1NIY26;)3.^7U&T)&?V9E\?+,\.YICO+ED/,IH+,JA#(#:=W_+29S'F7Z) M*X*S2L>->\=$?'[;57Y\/+ G.)H2&H# W*7X9XCBAYV3:II6>ZGQ>X '6!>/ M_(^<2;HIB;6\/(&22X0S^8N=N9T#N*E=J[7@/)39_,U&6+F_7)SF?)=Y:LO9 MNG_CA\1@VI4F"(4SR[*M*[-*:J<5"+^]"G])^)AJBJ24N\FTB9U,B\%!B-!4 M&)IZ>VB<=X6KM/;*,9.,5#B,3(>\4+['\#_'[RVYE)#+JUM[X\2<\F MG=(,R+Y4J-(MO=* RM+0B[VP_)'=F;A^5\<.D;LGJ;@^#=!QR9*R.M2@*(I% MS:2[>-1*W;;!; 3'R,A!X,@WH9$8W9/'^Y+TW-'Y9[9;?9P#Z]6#7'_T]]'5 MG'_T";^XS)]"(*6VM[94N(??EX)U67VWUYVX.7YTO;@Z7:.Q%<4\8*F 7;KK M**I96]CD?-B$38F#[>-LWFL6Z3;)<7(P##,9W.*6E?-^DG-^G M?(>R>X!K/-]T^L;,F-OUO=%7S='+&+WOFZG&QYCLC9L'RJZ.NLE<';9AV82: MN).@:Y,^R9(>?LD<'GS9FZ2S.[M96A=C",E) BS11ZL.6'YI6])# *(@"HA) M:[EWJJ(*\'LK"-)FO5T";M=T*9"RV\C/7)+3]^&8'.+O"\?KY^NH'2 2RWM::Z=:VSG@GGNE$NYKCUZX[NIIM/9D?+>F23.G,B^O)"*K% MFI+'[.@)O8P;K,-BZ,&8GN*]'N%CZ*X>?'] F(+1_M8K*7^2>7UD:.Z/;K\* M*,'$RI\_F+DBCL7)/IGGSH-K_;X'C(2^>($-B>TE*91@B]=?6X& B=B,??"? M2CP?+?"U*>+TR?"KW-@('\Z*'^_ 8O^4-K\ I?_(3G[4?3:<.@=88?I=AR/%F"$$>*!080S\S<'B+ MN#P 67W$^,9*7X+PB7Q#,!.QY0/BD88*J.$I^;_J69L9?_5;3^E<__5>[_79 MW/6<"?9E'_9GG_;):/9KC_9K/_9LC_5M3Z5T;X$[/P35:G]2GP.0"^Q?2[EZ M;.A5G($[>JL0;,0>F86)O_9-N+_/"K;]&[J4;-4].:6C9NN7-+;>8RU]Z)V";=.< =J<+O7?VT6IR7/;)$ MGHR;O?9K&\LF_K-,XI1Y'_OC"*J .82WK'T97=6<^>7^K-'(1W]('(RL6'UM MR.6;B\0IV'ZBR?E5C 2!NRHFH;Y4HXIH&JV*::(&I@!Y4/NC?%I/=K$?1K3S MOA'LLU%7+G!MJ W%HUP9U<)TJ-4&EU]I(T/(I0?X(!OB OT/UIAR(\UQ6B3^%P?F%E83=#S*# ME"PY24$JYN6PD@U :\(GE@DAB =\7EP8M(-G4(+XO2*4RY82]7EA2,ATI2Y! M&'Q^#QQ<2)9N&>TDU6?S!I#HVF>9"A(>HF3DST1<)>1/\.?W>*TX-LDRD];S M2*]L(O4'&>"-@@ $"0(^ +N0L'?T"45:V(I?DPG>-4 Y. -?X=R3@S_0:SE M7:@ <6$LPX40C,L],/@V^6RA1 .&+6H8UB5*M@QIH#%\/LF0&3[#:.@,D2$O MG('6T!@B,3FH_WAADI*#6(\6QK 89J ^5AL+9G^/B\& 4=C$BH IE %"(!6Z MA4H5S(A1/;2%0^WZ%#ZFII2,86IR7FB(/OD7G$9X!J+W*HAA*P09Q)X6MG90 MXMIPQ\C9J<.'R("$(:!*B!*1(1+$)+<1%0\P-(8+4?B 1%M(SW#A/T1$M/ D MEJ:F9@^!V1 (0Z1P'[W#&B#[XE?["4O)Z$69G\DTLD91CDM2M3 74PK*#*G378&]V$_3("RY?]=)=,$E#"A7*J*A/ J3;^KR!6Q4DC341HM M #DW2N<4N1_QXTR\*"AZL(S7QI"?._MRIRA!U:VXR!-[&?++7ER)DB$C\R,# M;$!,) +O,/8!HU4XX6Q3Y/M8-= 9(D;%.*@@GV-,C(LQ,A[!R7@8*>-C9(R6 M$3)F1L6X&25C93R,O$N8V3T49PK]C@^85(3Q;$4T8\@+6R-K?(W<\'U=)5SH M&FDC;.Q/MW$VXL;$A<-LHV_Y!VR9:Q M)(#PSWBI1+)V?.K@>Q1 #>H][\#T"PO*/X8GP\$>_QQ]?&'^< MCPQGEHDJ#7&FR$N3 !0D.U%Q;9T62Z6OEN[A$_M:CG*IUP M-(L7S7-)11%'%3V7K;*$\%$0LL%RA227)&L[74?2*B[)_BJW*&,O,(&\TBU[+4HY)1(DI7Z&FY$R<\E.:Q8$H"P502$20[ZAR;:_X5GM0 M9"E\DX]K.T9'[\6H5I]=!B'97?"/\12 M$L)"[4,6S2&SM(IBJ/U0R./T!J6EPUN/U/(MQ;*Q"(NVY;:49K0+K^FB_M4= MR.5.,I?F4C Y(.T%[*X9J%0\IFO2 R\RAE33%Y]^666!:6PDL8B:PRO6QB "MU&,F,W/-LMMS%'-A8()7 M-'/9S2H9<+W4CVLC3GEM5K6K[G %OU$XBH>NJ0NB+=LDWVCE,B-B$$QH7J_G ME(+FE-4DDEB3/[&U+SD4#64#G#YM"/,9PKW%G:89*S(^" MO^4DN625S[)3"B@ M.2Q=9/+YP;GN23[)8/D,<^U!>2M!S6<)P MY3:;2*4/"O[ 0/3&&%B"ZJ!LZ(."KMGFSEY;);'K%(12+I][]N61$MG(R3>")1(TJY MEJ@3E:%,E/T!O,FI1*'H$\5\4=1RII]$MD4-T.E((< M)_MH'CVD?!21[M%%JD<;Z11-I)"4D2K21BI#<^5Q4D2I_ZNAZ6D\.H)-Q,\+)K@2/$4T@882I-?$.5,D2@'%2DOA"-/*15M MHE8TFV+1*UI%<^(U_:;6-)QFT7$J <^&VTJ_\QN^L;>H3_5I1^*G -4!WE.!5$+IZF)#AYYDQ7NX*=^7*6%8'M=Y"L M9U^=F6Q,958ZM9HR"^M@!56&E; >5JWW]YS1!5JGC"B2L2N?=;.6DW_AT"WV/M$G_/2MOO6+]5;UV3X?4^^#4-L%N1K7Y'H]C]\UHW8Y MM0)MO&W'I=[F? 2$W32[=E7M>DV1)3?=KN 5G))3;=61:(A;;L(SB:W M!^,EO%*G3NRG%M+4E*/H*QFT05QN"]G-'@3!*.3^6DKB2:A9):5H0W6DLWQ+ M$&LIR3&@!#/E$>1S1Y/)4/*PVK2HOE2%/4"_:CQHH'!4!#Q>&$I+0.\%&(%O M0GU8B*F0/VBR="<4J2^0Z\*3QF*AQ"$A!%3 M82I;"E,@+4:F4 O2 -ETHWJ@72-&W<^_)"QZY1^(@.SSK^YOI]H>&$AGU9_Z MBZB,H6MD"TUQ9 M#C1 .&H 939XQ>^T.\XK7Z7 VYM#<@)+8XF34+FQY+8 M:,Z#EDA2, VF==>?>E5_ND!(4>Z))31(>V!1E%2/"7!(GJ2[2NE$VD/+<6DO MU1W;WBDBA:)F\G\+4)D5( %G?L)3%[5_RDH&T(!4Z('4T L+0UJ/LTFTW18Y MS2?*W)5\5G:^I8$XA 8B+*JW]I*-#DRNV5D)KN_D0ROWW)+<0LAG_0L,'*G M$GV>IU/D#.4DD+6N≬I%A!T3%F$L@B(-9[9%/0E5L:IV:KAD$'R:ILDT M=8EBZ3)<-_)+8MV$>W5;*M?%1E6LZVK=JOL[Q^Z7?+K=L^GJ4Y+:<-&A(]QG M$%<1T<0]Q?H<84F%F-^0X%XSH.CR^&Y1))H0J@PQUZ(Z>+L34(M^SZ\1JL,? MF(0,[^4CO$12(?Y=A/@E*V=\+%U+%PZMJ7-VU MF7<7" '%WFE;_2Y6#;R =_(:5\$;>9^?!LVX#H],ZHW&2WNUYN'MO9/WY;;< MXX7 ["N$,J=NM';8<_??.RDW,G474D7>/8"G@1)F4/L@254[P.8ZJD) M7+G@5^6*7[=$? 7F[#I&.6]_^=!XZO5JX?Y*8/\K^5%?![:>=I3\A&73[+@& M+H$T=/MB(46'V[ ZLD O N[82\4P =X "-@ IR &S !;FJJR2$$HS'TJ[ C M:J2',6E5-;DD&Y$BL[@17((P5+D_17-5CGWU^7<=I6' MD]%A6IS+#WG&QUNYP*[+/T4>F-NV71A_TET3 M&2>KI%*\G5GSW*Y=UOLU]_$UGF+6F.#JXV_<.^NF\@5 O.C<:MK3E24Y*ID\ MBK;7P.+,B"SWCJ]$ALBSU_M)8\C+HYB>UCN*[6<1=>&)"W@\9C$*7.PG"TE% M[/3]@A"B8T;#ISZ2R>HV.ML0^D&6K-+\&BCUMUA5&3M:Q+6'$O6P-52A-"TO M"G*LMKT:'_ZKK'J5]5I5J(\ [;Z6_+_4CQ)VMD^J1:E'7.F%U&,,1N?/ZDJ7>!']WU?+H\CP MH^NLQ?,O?\DJ8%6LR-DX&];(ARO%6ML;7)45 M\!'/!KN;FZ@2O<[6.3NOLNF\57>?^SE(IQD"Z29@1 0TT)6-9&;P>AVA9[6B M/!-%JE(4B;6]9U4U7*T>N;6Y^A'AYIX(M*:NW1,#=(R,.'^MY-Q6$ZMR[LF) M%;,EHPO$ 2,1K71'WAGX!6&$^E2'WX2>7Q4Z0U-HS"6A._2J_&H1J@ 1S?(\ MC)QR;&%Q/,"MS< 5C51+9A3$87$)^]527WI1:_3-\Z-=MH^-(7G5?%WH@#[0 M!/HX'^@R-5CITLT$?B!(/2^[(O68GM'W 9H!C3.10%)ZM8#IS5S%L+3QC4 CR=^!#0<1:16>D:K:1M-HWGI4MVC7%97Q2OS_'Z6:::5 MJ >I.XQ)![WS7FF,!,O'<@@B5$&M9#'?D:W0A#K(CM1#/:BU-.-AU(4:43MJ M19V9"I"J9#^6FB[UAT:6XB*(GCC.N@3&J$MM(?6T!AZ0Z?J57VA)[3% M,M4?&O6!:**)XLQ2/"Q/X'.&0:U13-)TM>Y!KHK2?R)784RLD6NO[M6?N&3. M-U\M['):K4X2C[:,;KK(-P$Y(,YJJA:Z!$UG[,S^N#78]-;5F?%\LM^)K>,O M]_NX*A5!JVNU&EK;HP("1E$-V]WJOQ8]TT\@94/%MJ\FK2*0KY6T@2[0E8Y( M!^E_32(9JSI[UN#!XX&'-/2,Z)5'G E=B/-Q/HT:96^3"+R0(D@Z22<:UX7D MFQH.41#DHIFE&9 _*[,0/-F R-U!XLK5$AMLF]ZC:3J:P@-BL@2)+:Q40EZ8SC@+0JD>E>0^"]HI6%5 M=NVYWZ\=S5*F&EM@%9-X7"U.W7=(H<+F>QAX)1K>P5T?JS(97+HE=.<.2T!, M:!EW,GK21F!: N27N^%\];,TV:I($X9M,0AV RP!$[0*:"SM[-OE894$$0BQ M1B!#V "B!RQPAAI25PGJR@Y+L/E\W)ES&F J^3$YJ2CEO'31[A93O=M.-TRI;^B-JDS5AWK?[CM^8Z/V;7_%93C"WF4H..,B M-=M[/-),^-_0E_ (\ #.R)A9;(&)I"J!PSD&)*\H6AFBB3, 10^?L#W !7@! M#T.1B 'Y!X)Z[F(?WX%<"9S5*B U*7QF$B4B1,3VN&!#(;G MH8@JR%PXA@1"S_74,L03+A)E"\9E9L(6^(0E6135B$ _JC]:$!>E))SXPZ\< M0./A-UP3YG"5U*13N%%+E$OMBFMQI#:*K/BP[$0FVX8O8I=:@4BX;,&).XF( M.S$D;J,F^'$U$8=$-*$*/QR*V&O'((JTCHT9PLW0C$R(M>4 MYZ[TF65V?/^&(:Y57JH9+SM(?Y!OB2(PCB$UVE@N:GE(HPHCR.:.%&5Q4J4- M:/^6RU\\ZRZQ:72^2^F;?;22!P-J "S25V^IWC&E1V>$%A$E6LIUT AM%T(4 MA^#0_J7C-F@Z#2"P*_-B7M?R6!!D O?R_+E_'% 7VN90./L, 1XG+1NZ G[H MXF!)SI#?UVX^FDUC=O%+;EQ?NE&9 M3'S.N-.J"W@OMAQR.TQ]2M6,,VLXW<>]HE!TS6!Y$.]I3OP:.:.A/L)7.EQ: MX>V+F;>U\OR4$K8<6$)UUU5M_94/Z\$ M+D-A6H]17,)8^W@6Y2)O-AMI';K%7C)U4Y7*3<@RL8LL0\TTLQO@XUG[TR6[ M.XTZR A4[U%E;_JQ-_:(=[-6%='DY;_*S9Z__Y62K'(5/W7@>]=J59Y4SH13 MZ-M!QG$G5=H@WI+0>KRKZE4=1C_,X4[5E9P(K]R[780G(=L.Q+D64<]#/_S[ MX,3'M).$JKIT1GU'A3VB'BV.(?&ZO>R0.)ICLABFL@$5,UK6H2AVAW>WEJ#L MVP==[_U-@;WW0<;>)R9]+^R:EQ3SK-9[6P>9)L-$11D2:[)&*7I1>QABQA%N ME7TQ^LB,1C4=A\F#+ PQ(PF_#BM\JW1W/_S"JS+-'=)$Y(+/\!5>E8'XP$7? M([R)G_"#+";+1V:4V%642W1:\]R;'_*VU]KG;0K7:9&8P!W)*_D1-\B"+&ZUW,;,V7&K[/:+F#OHDC^Q75>E<*<% MT*PR]%5[;$J[OT3\.1BW(\M>V3^YY(%WGE7S(KO*KGD1#\V_^30/Y]5\G)>U M6_TMN>C/OI) M[^@K?6>G])>^TG>FKA2>E)7MP8#;+*GO6M!%ZD6]KR[UH][4H_H9AG]6?:EG M0L,V(56?6+^]Z4WQ^O0#EL[R5#33[>]Z=YK^3#N[V7]_4>W\-[>G_DPSM:__>8'78M MVZ+.6;6;TV1]3LNA>O/FN>GR+W(MG^$^)4WI#3?Q)3XAVG YX#ZM0XP?DC=< MK2=5'A\997MA*_(]/G::]<+VY)M\ >[QI6E?2TEL[.4+6SYFN8%:= M<0C75?L')V9\.BY;MO[5__AHG!JA<>R$QID6&I>F7W]MH7%;G]:__@Q;^R5H M[:NHM7^0Z#XV%^%!GWBT+TJT]W_Z1QO&/UV>TT=R= X94%XWA:B=].)DJS24 MNQ4=LDQWZ!?=>8.FF)([T]IPM3O*4:@B)-H9N^#? MXB4[[)* N;_?ZWLCO_PAL:17_OS>8&/UT?M0Z;&+%O#$WJ<%>R/D^R&QN8=Y MW1^S#WJ5/>ZO?\&6]-O^?-M[4(;]R7_V+_^6F_WO]_*"_1'/8;?_JTS"D[Z7 M.!NETYPNZ6-4K/3+J1^\B4XCN?P=#H%\0GF%(/=/'L*R0%_P1Y'W*'5+BYG= M\DX906G-^71NC7/]QR7B 1XAL5PL%S:%8#Y<5+03,1Z4E@*RB(AYD96#XA*Q M(-Z+^6$( 4MAB<@7PMF A5T8XMM4>'U7";@#'GO$79*G_-U[1&"\9^\]?_E> M$1@$)H%&8!.80SU>#PTA\JM0-+\*=_=)X7>:R5T7WN%$#5YYQP4*<4C@%\CU M#3)BX-77!6Z!7F :B 8Z?V:@%D@&JH%OX!H(A$AY>!]MQPXP'7^3A+"6% MU?7FS2EZ3)/3%.<%1^L=^;3"C4_1'0/RPPTP.!$CJ-]-=^W'U1,)-DS+WI6C MREPYKYJ\I%T<>S,,)SCWI2ZD'"CX[/559Q"_-I3C,PR35727^%6"G@?PJ M@"".%DI!4>&9B]8=;'^ZB?>7"Z)[11U+AHQ@7-C)M1?B!8/!8,0C#(8E9I\7 M@PR:'S2 V6'8DEF'P M(+F*)E(.-B(]R3E8#DY.&^ I8A3=>3X-![BS,$1 '6W5TW!A89HB,J^I>_ 4 M 75; 311BV*RH3 [:\NQ%YAP2+7'LZ==6"6.S( EKY2"9M40&.G56&O9.'?+ M 24K8%D70_E@9YWEAGAX8G<>:0#S_!Y[%+6F[<2 ATL^)3=-;$9(L*ZR( 1 MSX4#Y]2 A$<-B,^E/R-2J"7D17_F'YWUG&0WG)2NAO\9<)R56Q.&##!'X7MT MY84YFQ:8LI1Y*_:25VG.32P#4B MCPA-A!,P;(\9(&(#Y2RM",73+$E[I\@\YX/8($J8^J8 W'H-"%YH?T0B^-D0 M1:J8@NJ7"MC(Z"6FT7!6J1@\*8]S-_,@A@V(4T6OD(36'732^>AS^ER'LKX! M;Y@A_;:'A2_S6:KSQY&$.M<%$MA%5M*: F30D25V7)>C>&A"@DQKB(EH0ME' M,WC&A2 "$EP'LK5#9@EVY#Q5,E-.A_,%^8:]H9+S?!PLM LC$OH4?*A,]K&0 MF#+;31GC'(XQRZ'[@5EA9L=A'02Q'#^SC&C(\^AOTL:Y,.%()$([>4X\6W=".M$D:1MU8AK)X.0307.>9C&@#4Q7'\( MR/R'^F%K.)/\,D4._A:"U41R""E7T%$?T@GU,1]^<:V(7 A^1(CX5>P%@0!; M8]E'8PF>;"60FK+/P%&*3"I"$IZ P!+812*J1R1ATI?JX(?VD6!(T2PBOAR8 MT\_!(7_+8HCR-(:?R+TB!-T^2TN/R)S .5)+D B<['A$8G-B)/J(4LO%0OH8 M'Z,A&H(! 7X_S1ADU,DE61P7I]34B%9B*)(E:EYW"I5%I\UXA,CG-/B].U.B M5Q0@RG!GHG^XAPPS:&*;Z%\\=LB,#.CYP!]R%PUS[JAV?XW!4R/ZB86,Z M)7;]!R@RB,060DH3%PH:+,X($9#>$(?!R"#BB(L5(K=0*(M*M3*E9"FC MH=17)6Z*6B*GN,5](EBBI[@ECHJ%7]LOUH-%R+#;06SCJG#E G M3S$IU(7Q+NH@NKHM$2(KHGVPYDDNJ0WF]'^5,@K*((&PQXK)HKT"&.V(+9"OJ M*P//K:50C M"?@Q'[9 +=! **_X%[R3S\CK$%+C"$ZD-;J!4%PK<@XY*:3BSO@IX)OK33MSI[#+89L MP-DR)30-B8@'=!*$_'"XWDJ"$UD?B^/5YR!R'XH)]''U/(0(8_EVX$QW_AG, M2#HE/8I+22.<#"Y;#F@"Q/4?AZ$F$H:\ MCC- KF(*:A^VXSRHN-@ 5X_@ [?<=D1>B!=T(6P]&EZ#_9AWB)Q(R(E,=T]/ MHKCL_8:]E3H76\ ?84@F!(0,4?,9&I*CX#+.6G1370V.1&+A^!-2(:EC='?U M,8Z*X_6AO51^BDGL!#_ 8I%SJU'\6(\]_@-<.6BL<@LA2# ($]R MX0A!+D]Z@XFDCF/@%;(.1F"DD/]QHIF.L<5VH8#T5 ,@D(50C2884:7+CDL(5@@$YXX)<\; J);.$?$')VG)NU0(9;PJ-/!X,:J:A8=MA/,(+W$) C01=TTA MJP7/=5*#Y$.R?XPD6LX7I 896$E().9('CC%2QGCI-AV4UY7AG_PA6H2/H+ M+"+EV1UITIEN%E?)90D.7K3ALY2&Z4:T#;' M+/5T)YMUIQ[EC?VB$/2?7)/&"+)$WK L1-/P!'\L=/0..7,NG4L_"&NXB/E, MH,K@U4E12.=6/E*>U2($I/-%#W:(XU8]N6NY)5>=EG<&23 RRE;72()U&F%8 MIXM@@[Z(A*CKG"/W' FGBZ0MP8=-UQ'B(SU>.8)QM7.AR%"!$WV3K%R8^$8A M>DS=(S)&J4(MCBNC_NB-J]\A E#P>.1(<_+X15@ECWS"4FXXI Q_X[QL>P1- M[TB.>"CI73URWNV R*-*LE.&=Y^)_+$GNI3,48UG[JE#IY/0U93AB9/+2&FY MJ92S'W-GTJ@DQ(Q_5\E%1'9D],ARFB37)9&H(F45,J5 M3ED;249",$VAR":"PZF1$8BI%Q_]<2L),&+ZD3RU'UG(_Z%GELHXEX0\ ME^/D;X@R9B#QHX'3)XIST64]F82X+=+E%S3RI#?NG#>G!5U@KQO.4VK]AKU1 M==F\\(EP"G2I^8 ?VI+*J.2\B>&.>F1+\GT[R+VFWRD@3"(MTI2-!\REMA/G MU3!*W0/2"#(@>Z4X6 (:)X/+N6!^.='^6E 4I=/4C<56 Z<_H).^E>QD<=I?6Y?*B MU3*93T($VF#]>#T AV1""99YQ6N9-U&6R6D,(9^,ZGG4;BBZBO>!ZN@AG MD^N-<(PC;N=^-(-7C_OQ*C(SQN4.LO/T-5&F^+'SP'L[SYY)PMT /U]#*7[@ MA7==R2)HEC%W&![2?RAA9PO44W[@'YN:7*F)X6HYD#(7B!Q(5>;5EVDR<3>1 M$)=]+''9Q_@$\M6!<*9C:0.-DG_064?.>BG7>VFTHB MR>EXSE2!PU1 MDF]>1*-. :-OCB9^)91W3PHC>-M;&82T));*8+.-M(*:G^_(DWR<-*?':$[\%X[^F$S)Z5A^'Y).A5PG@V1314Y*F"PGL.YT3EC$R!VD53%@ ";A.C#,BT<"6G MG0X2%G8?VP?U >[\H-(A$%H$R !["Q$*N(PEJI1?9 - @_-)(U.+) EFH5_S M'$%?C&4.:@.M<&\D^M,FWB%BIGQT%'IE XX3.K*Q332HVC-9;I=HE92S^:B7 M.8R^(GQ\-'G101<7RB& "G692*XA<>22B(!\5(&Z::#J;U81 ]@&FB'0*QQ1;^Q1=Z%,TD5N,3:H$@ MB"=7:OFD+703CXPI;B4AKES\$O#(ES3F>NF*XB2^B#DV(YJB9^@@!.*0HOX' MA01+XE9ERFCP=\0$Y@=3.6=U;$E.%TG:H)/_1S+Z!U$@"T@S2H'H($H(?(D: MZFD R"07PYV _X=!QU0)G5)-DM"S21\RHC@G:IZAV:4:2G7Z'S E?:C**#22 MHOFB+N8MG B%&!=&B%H.Z/,XNB^@S_N9A6!<=>%=,G]*-8IH>:)&;HAE(EQB M@_1%9UQL^&E&@O1'J'A:JIL?843*@P"#:Z.IR,$5)DQE..JIZ%KDZ'NY,IZC M5$@8:CJN22M-J6E_V'%_W>3(^4E#VH2Y,Z]A M-]A))K:Z72#TH7A P]B.HV;'Z=F<+%\I$(//L#0BRN!RG?0H@POL9.A\*^S+ M6MB6MB[6AUM:C7QG(\@7ZI4])U9C3.>W,4%QJ%4J'IQQO*-"RH)P-@OI'KIR MLHOM:&**MRRCV&/L6)74=$I(TSBX$)>:53/3R,1T$J.+!HR85K07%*2-'BR@ M*7Y%R-(+7?KU 6>J"\WPTAWD0J"B5AR-L^)I+B]X8>*J>@C M(2ZC\>@\"KYE.<7E2L(:JJ/O1P^R2.J0C.&X)/)9_J>B@=,8*^(AOTH1=Q, M?*?_R-KB%\T?]YHJ)8EV'Q&$^)DXHIG,8/\!S\%SS-5:^(-U(9E85'3A M0"B7Z1AJ1G$^8(CU@7W<:T.JD&H#N2]DR1L'[DR/WYFD2!HXJ5 JV61\F%93 MJHQZVA&4:.-+),?\3@%AC^HZDB=]")A1&C@&<0?G< :0!PO">L!AP %.00*Y M+TP$&8$*T%J "DV#;$$&. QU1WZ =WP8@<&X( =, :-"1A $ 9C*AF@IO(* M@0%?D!%T"4Z+QT!2] J:%&_@'V 4($ "J6/( 2F &X "A %)00H 'B0(.L8; MD*FB $Z%:E KI !I J %*0 9@ *0#Z4 2G &8 "- %00!(0JZ( 4X"^X!@P M!9EJXT$&I "3BI(@!LRJO*JF.B)XJL["L-H=L "W*G8P Z0 D&IL 7-T"<8E MUC$GH$@PP<)60J1N*,!9L".PJBC MRJKOJJW:J#Q)- !*0 :H*J: 4#&IIJN MH@!,0!@ 9;0!* !T *X*&&X JKJNMJMAP+M*!M (G:H9T'BLJNIJO]JJ%@F6 MP53PKHX!*< ;@ +<#7! C?&NKJIE@*NJ/[RKM&H2$ / 0!4D#+ M6K$"K5/ %!"S.JQ'0!'0 D !*8#3FK4F 4[ $7"KDJU40!$@!4!'0@:@ $I &,"P.JQK@*<*+ RK^X5E0#DPJP2" MI5H%N %]0LD:$X"JJ^K..J_6JRM#7P DC*JPJJQ:&_RJZNK1Z@0P 2E !M)W M@ 0R 0BPLNZM:P%ST*Y. 8RK'("X5JH5:Q(@!#0!*8 :T*V6K!6K$E"RRJI7 M0$6 *.2K,P'?LX2B(:>KCM&O.JP0"\@+AV)!5K%M"\;JH*:ZJZN/8) M*0 -HR14IZ9KI;JW]JVJP1S0KIX$(ZM,\3!,K[#KK+H_K &B:JK*!- !OVK? M@88D'W9!\1H$L '@ZA&P/^0+KVOU*@5\KB9KEB4:-+#V*PH@!$@;M^H1'" M[JU2 +^ KCJL/X:ZR@3P"VL &NI/JV@ZPV077!20VP'FZO.$B,KK-JY?J]O MP!.+ A &F.NH>@:$!2$LIJJI\@3RPGN@KR8!M@:ZRB2@(;%%"UN\3JYX+!>; M NRM4\ :H :T%6Y"&\"L%@66:A.P(Q0)10()>WJL ;CJAI&YH@#OJQT K/*. M7%X:RZVNL:)L]'JK:@&-052 !DRR >P2H&($KK:K"="N*@:(PJ@Z!J0!9('^ M.@YF8B.)DE"\C@5^K*P*!

:DDPK)X>ZBHWVRL@%HEJ62!<-*K"ZO00J;:MF\&V6K$2 7KL MIMJI?JJ$JZAJK(:LJX&^NJJVJN2JK)JQWJJYZN9:K/JJP.H%\LP6JZ0J&H"L M@JK+:K-Z$SRKT>J68- R5)M!3G"M2JOAZ;:JK):LMNN=$ ?,#1.!R*JIL@8I M0*0:J1ZRZZNH:H& JJH!>_"N]K.S:JT:JS8>P $7L+@X&V< N%H9C*PUAH_ M&.BPFVJ^*JOR$#W&--'&YJL.ZX8!)TRSJVJJ2JZFJO^LP(H"F &308 )^BO MU&O%ZB3D"R5M7W* @O%*W=1TFX&PRIP,+(FK[#JWMJORJJJ031[-S"N :X2K!:K&QO3VJJRJF%@TX('?\*O*JM2 MM6Z 51L6Z*^M*FTPLOX84JT1^['"JJFJW\H8S % PJ]Z@=RLGEP>@ *$#^3# M-+O6H@!N0!B@&MRJ?@6:@*[*JES 8/NNR@]G %^0+^BOZBJY.C6@ %9!&7#8 MT@!XP*W*!7 !T&JENK."K;U"DI!\- V>G-]AK<($=L$6P:V* (@K"B &6 ?O M:FTPV;*J-.U$\-L&M^JJ9*O([JV6;;V: G"R)\6OVJJ:M#"VCJVM<:OFM6XMN,H48+:H+7_1KDX$/8;? M^MZFJN(M"O!C[*WY @BKKI:W@JVS$;@J -&K8ANN(K6NJJC:JFJWLBI\H!# MM\""W:JR@JSZ@AB@L ZUTD2[2MK:%-BMNOH3\ M'1+K:>*2VJVVK.@;<",KL M'"#@]B5RC#"+ FP'">ZPVK'RM_@LCHNNKK3#*KFJKA*U4X'(*K6ZJA7!4KNS MKJJV:T]PV,X AX%_F]3JJ^#"&2 O\ 73[(5 &5@&N.V^.JY>K%"M3%NQ[K1O M;D]KXNJK:,(T^ZK^&)]M]CH3S+'KF!;T]ZTAP&X:ABDLCCLJ'O98JKJZDLAJCJL M=P!DVWB0&.Q!B3';7JQL[!3RO86A?M*D70X::J@N[@< 9,LJHJKTNJ\KCUZI@ 4[0!.P*LVJH: ML8HL&M!X0+MNKJL:Y>ZL]VVEFWP,N6$!&T#93K47P:WZU&ZZO^YHV\9RM:WJ M5(#K2K%2+;'P%?P)6FY)*ZWB!,)LI3JL(KC= :BZ8S@5G.U2&ZDR,APLMWH6 MP*ISKA$K!Z CZQ5F\HV'O*NH1O8WJK_K+IZ[=( .*U]:^9VNX]NJOJM\K.B M:H]K:RP'@BV$^]K>N^CJHEOH3@0WPE?P\ J\MRI%, ?\&(MMP:NY6@R/( <2MI+O?JJI7@KYJ$=RJ MC"ZW*P=XNU)N8)L&8*I6[MMK&.BO3JVH>K7*M$AN49OO*K4)KX9;L>*QJ:J= MRYKDN69NZ#KRPA[S+6W@UN(&%2^V"JUYN8!J8PNK2JXJOZ.K:(LH+ >,P:TZ)MRPAL&&B_IVN(5OFQO\)K7ZZ_H@ MV]JN>.R.B^,.O($%:.$3/ F\:GAK^CZLN$')JGB JDG F>L6?+-8;6 [$5@7 MF.V46P9LMF0&^6KPBJHC;P0WY+*W* !:ZZD*J^YJ9+L"[[6UP8X@U\Z[VZVZ MRN%NNPIM;GNQKKEM@.&[ .>X6B]3RZ[&OBH&JAOXIK]Q;\7Z$^2K3FZ;,!5H MO]\OB4$6/+SJ+O9;K]Z]N$9M$ "/O&')L^L&K!IQ;@0!P!OE+KI)<)LK[2*^(ZL;(. R"4[+F#7D M,J_T*JQ:L<*XP08;J\H:P1'NPWJ\UL!1[L$:!9^^^JIVVZHRNDPLSQL K[FC M+U&;_H(6VNV>.PJSJ_ZL3(L*\\'@*HR;W7ZO-(++2__NMG.OT,NYH@"$Q1S MK(Z\X8B!B[ &P(P(J$JN[KCS[Q[+,TB_/,-]J\C.N>SJ&M!XX+Z*;,6Z^^*Y MM(+O:[O.O1^K^JOD@K"RJBUP;ZO5.O39A/OZDZKN>+"?NO$ MF]/*JL$P+4P,JT*B+;F*NLK"*(#LBSX4!HOPDSJ6\#VB[ MO8_N+-RJJ@'++B9,!U2W["XI;/=ZNP(N#AP"+[3#*IDQV4*V 2Q,03Y$N6E M'ES>WL$5JYJK\#JLFS!E>^\*M:/M 8SJ#K7HZLB;L("UR.^[FMX*N-YLMUIB MP*K+!ZCZ\YK &P)?@:I.N8+OIOJ]UK#H*M#[KG*ZBJSNF_#*%.^J%_S:WKAL M,*LP.\!YTK7VK4*K80+JXZ\3 )"K.TFM:9P&5#=6KT/ZU5, M[2*ZI*H63!:_MU)M9= 5+[5[*U@<$&_"#R\9,+VB +]MO)'G&L:D+J9:V.X( M)6ZG6Z^2 06QTZ)=\,17 .JKL#ZN:2ZR>^-&!;PL!$L(B\'L ;^@KX*[L2[' M:@GGNG# X1NZRJJE[DE!9?K8GL5R+7Z[\5:Y_8%>^\G._=J M4C#>!P?VWK"' ;Q[YN+ !R^^>PBWP?DJ-:SI,L0YK50<#E\)S*H"L.9&Q3UQ MJGKE4@1\+WV[%6NW:^Y#C/OKI;,8_AL<*\N^QO>^*B "GNCS'R MLK E@6C[(S3%-/##ZQ,#"50M!%OUAL>K;JV[%?"VRX$8['7T!8>Q_-#A[K@E M\'!+&Q\&ST;_.K)>!&O $2$"W+[*;KS1$2BL4NT_Z_,6PD9M]&KF0L>9+T8K MQ.*MN&IE$ !SLD"!:"P>Q\,EL&&[N"2VJ6Y/7+%FQ.:QB0O4GKV?[%$,4Y"Z M*B_+2Q8OM;EM'QP5E,"6+GL5),:=\$S\WT+$C$%'7-&20CE!0GRQ=KS#:CTL,(RX M009(&^V:N8 O?FV75RROQ_!N]5KXZ#!W?JF7O M]]L3+ ;\0I& QYJTSD>\O*\ZM7BQF:K75JRH\<)\N::J$\%'&QQ?S%TR]C'? M*L2<;*Q,(MO,UBURS#E8R+)JKVPAJZMA@6#K+,/$V^VB2Q-CRHU'$1S4TKW4 MLL$,&.?%3\*O2NXBQ_JJNPLVJ!C%XN^U!,#](!?SD2'7Q0O:[Q?;LGJQ;X!Y@'# M"AL_P3.O[@LVM*2 MM-_P$=QX0,Y;L^3LX8;,R&L;"]3>MTKONZH@A[S3[[L*[K;$%ZOSC!J)MLZQ MF5OP\CW:,O)\\%+'X.K4NSG+M>AOG"S\'@:,0<0:"ONU>RM@ZQ)'M>LN'H$Z M$\K2;,$*)_O+!? D' 33M8(M86'-U@5$!PN[,7.SJ>K&VJJ*L]4"2E#.9@38 M;":&=3RJ1(>TRLY2JBQK/,NIGKF#:ZBJRY:YQV]L[!EGSP'M[-NKH@"_:K!Z MT,:SQZISJZSB (=Q-1O13JO0K;1JT<;0P86VVL$"!X"&:BL\XZH7JY4K"@>V M-+%8O 5OQ5KQ:ESKEL=_LR\2Z MP#9O^DL;SP%MKU2\XUZ^9O3V&_/^O<'Q+^S;/KX!0HJ,.+^(A0*LTF)MQ1IW),:U[FB\/8^J&\;(NM1F8M)J()4? MJ[&\POL,,%O/:O%"?"[3NH[Q^YOETL*;=*FZ[6+ ?BS]#*M^P_P%4,"OZAJ3 M03N\KZJK),1LRS._N''S'?W/LJF,"$D AC3,$%),$4[MW< KAJTMJR1ZK?% M(F.XG *Z"Q2$!3EMQN[[>L+:K3V#JMI MS,GJ 'M 2L&2K68KO8P",+/?!++ =, M!!GNK?HGR!)^L[;[&-2KK_38; #[M^1R )T'$-5T[^AK(R.V]H*[O"1$<%]O MI1H&!,1*+<-:]'RSIZJHJR^P 4) 'O >S $[ .^\$/+*9;7JNQ5;!&LU5* : MQ-7$L6C@*,,'-09-3&,HU3%%;&L'O &Z^%6U$NMK!H"Z*LJP O .R=3:C!WG+%^ 5/ /1W;"LY6\JGJ MU.X%AS%K/=/>N%NQ&.!6,\BWZF$M/MRJCW4Y7 =D$M*K /S8#-5YK4[2] M?30/,M_&U'6!LX").LV#];BJ>K2K/8"^VEC$ML0M7VW&9JO),/Z<5J_,?<&Y M2ETOQ='S%W!:I]90:R$-6].[*NY;S:PZK-:JB1MJQI:R]3.=4PTW^+50$%;_5;?JBM M=?WBWM9P=>AZ'3;6^S4.' 1X$R$K-AWSVM9^;!8\&6S%"W9SS4)L%P^V0:U7 MPZJC07^- E38D/6P>ETCQBG K@)7FK+;U*<[PY=?8< M;(@!-((+[$OOR\!TG'LA0]G!!4X:5G.K3T#S3-96SN]K<'NP:L[O@20+Z>:K M C4%;3?#M.[OF%UF_QCM\_<;2,/%$?-.JZX. 3^R_D 3 \G9[04MRNZQ*X%D M($M+8-KK#)S^PL^;<7Z-$G *PG#+; #KM87RM OL7LBB=C-](.L:7.WBRUYS M!)9VI"WK[LP[[R\\%#NN_#,*D!F3VM+L]D8"OZLP[E.,J3:^90!I'"YHV6:L M@4LY$[MG[TO;16^ZE8%Z7.M^OT5S7IP$\PR]=$"<3*_"Z&HDN[ R!6&N[3@%X]C0Q^O+)LNK;;.H&KK%O^3JRKL1Q M;Q\MQ(*U'6P2D#+#M&/"M3T5A,=EK[HJX[:QT;3\0,)RVUGQMQVX(M1X0&#M M36?.Y';9?!V/OK%M&> "G $";@Y]%*R]WVI1O/&Z 'C 7-QLIZH"=)[-W:( M5H!(H&7?!&ZQY;O78K[$+;-Z+6/!JBK.G"S/MD<$B QMD]E,01?;$T>\^7(H MO?T>TLWT'WRYALMX,.N! HP 5L%>(-E^6,/J'4 1!*X62'_=P;+44/*["E/S MSF&((2M63]U5]QEP=<_96C>XC;'6JE] $8 %! &T*A-0!("K%G;C 068UW"W MW$UW0P%V-]GM)9?6M^K>?5K[W75W$1#;!MD[,@D[PJX$9 '1+ >,&>1U:(U< M2]$(Z7)=T@YG:Y)S*]H&V>IJ%0 @/PGMJKO;Q*+8HC6C//2XQ5DVMBIQK6[0 MLT*<)"BXGK+VJ^JRJ[WQM[K#CM54-XV@=O>K1 2W^JU.P +\[2S4$\CWH#WW4V]JK7]LL'Z)V_= M#;/Q#1J'!<,P[?QM>;FRL:=J%PRKJD&-[K@:OC@U[:J)G'@ M;'F4N#OMHNLR$]0*\[>Z(YO$QBXY/4HCMNQ#"[;C]KY-!;>KL2VXRRAG M%T-N92#[!L &=-.M,[\!Z')#C!X3W>1KSGVKVA06T55ZSPP8[ &C3:_NW$#&V[ =)V>*Q_']2-QTE!=F^I#[:?;&^3WX7M DX# M,*X6]0=M%T00V^LV>ZO* ."J.*L D+,0@5Z@J#8-[W0.PH7#T.OLI.K.7JJX M\SR;0^\7.S2"K<^*RX VX=O)"K1Z+$%K1 ^KJ:LNJ] JT=0L$^W0D@3%[3H[ MT5:K4_3D"QALJSOKE\UN;]'P]@ ];[NR=_#J'+VZW2RWOEUN;]R'L]-B=G.K M@.Q=7&"+ 4""YSNQDK_CM]N-<4O@E+A:G*_:KL W;_L>JZJ<-@2^*2RU C7K M_"L[W2#N,ARWWKY^ZU7@3"L$9BU_:[D6O!>X@0MVF\:RZM@=J49P)2_OC28, M"$(V%" %/ %&0!)@=S,!LFLE'HDXS2- _/I^AZMF #-^5J, 7P!J307H*^$X M[SQF7=G9.".20V,/S/(B(F,; 56 $S $4 %)P!/@!,2VC'3;JTM_ 2/ ",!( MI]2SMVB;C2>@PVJ6L19+JZ['>""0N]_K^(:0^G[C\+@\3H_;X_BX:NO;YMC[ MN&,=6O_CD:I?!% LY 0YY=H3L*L=.:PBD!OD#U^ MCZ.V%GG;^U1SY-*J=C'DC@!L1Z2+K0:ST',1P"H[N#(O3.M!JZL<09$0/Q,1 M4RUG_=C&PX^V9RQH%]WYMRQ>/3O:.W?4Z M'YKW 6H7I) ;,K+IG<_*JBDVH;CB.,VMMYKP\>"M':SLC0.3&55N M0"P9, <@+B]=>I/'8'16OAXW'@6WPP QB\FBJLVKBW^L(@:(NQ*7MJTJ&*PT M:[C'LR8^%:;ON"K6-A["\J9[4;2RHRRS/PQ[N2]M0EZRV'K%\:^R;#B7PX"SK%J:8]O*ZU2[&\_6_2K+76PS!9&W MNLI+A]R@*A)@%ZO@#+>GFE.WWWUT;?/L%KI_ @M,E<>^?;#UG!H7K.$OIAHM M.]N?+ MU4[E+K"LNE3_P@'OP+M5+^&U^(3[R4+0!/I3GJ4;7:)MZGR'7^:> ML1RL/Q2ZQIGL"0[Z;[0M[WF^(FVYXTX.OK7H@L^FZ.0K@52\?I-#7/!3/T9PL3+MPB]OO@0WKY(+F M9W,X'+@^U1MZL1OE*MSI,?U[Z.K>/S5SC=$^SROK6&W3CEDE;7[M38"K+D"S MKF.S 6W TG 5N,PG-!O0&CL,[VH+ *UCZYKO=J&R=K T;(,[>],/4O>8':V7 M'OUJAL"MNKN"M 9.7L.T8>^TK:-GN!,TK\W7OL5V+Z)N+*^V9WK]_?UFSWFZ MK7&J!Z]D^=!]K:ZA=L#H&0,;9;:X[# D[J\JP)[)PKKL>L3/%GSH$._+B!#SQG,Z$%^CT M[+ZJ:LNVK6K'[B[GJ.&("SNLA@0&^A-@'0C$NSKR*S_T!5VM< $>E+Q[JUB[ M:'_11[AP/5D'X39LO6W[GL.MZO/[NRK*5*\J'@ZSPO%SVNS61KM2LKT.KK+# M]B[E6IJ7#:,OQ6L/?^+,;@GIY<;KF"H>/B&SRTA[JOH#).LRMNR=4R\&>RW9 M3BI;!\[&>ZNYHL^WLRH+&_O"S53!>3VT&XAUS4@JL.;QM[)3BN&U\('863T%]N L%5[<8N%/ 8V ; Message-Id: <199305051551.AA21083@hub.meiko.co.uk> Received: by float.co.uk (5.0/SMI-SVR4) id AA02439; Wed, 5 May 93 16:50:53 BST To: mpi-profile@cs.utk.edu Subject: Latest draft Content-Length: 38230 People, Here is a uuencoded compressed postscript of the latest draft of the profiling chapter. The changes are minor 1) Assert the prefix to be PMPI_ for the profiling versions of the functions, and reflect this change elsewhere. I could see no benefit in leaving this choice free. 2) Added a small discussion of multiple levels of function interception. (Maybe we should include an example of how to make this work in C, I didn't have the time to do this. The main problem is in the initialisation, which is non-trivial. You really need access to the static constructor mechanism of C++ to do it cleanly. Maybe it'll get clearer in the bar at the Bristol Suites !) See you in Dallas. -- Jim James Cownie Meiko Limited Meiko Inc. 650 Aztec West Reservoir Place Bristol BS12 4SD 1601 Trapelo Road England Waltham MA 02154 Phone : +44 454 616171 +1 617 890 7676 FAX : +44 454 618188 +1 617 890 5042 E-Mail: jim@meiko.co.uk or jim@meiko.com begin 660 prof.ps.Z M'YV0)4(H* &""IHT#04"@">,&A!T7((24&8/S M#9LY:,JD:0,"11TW#># 89.F3$(Z;XR&0?FF M3D(X.&#MDT&!5N-%S&,<,Y+^>$L5,& M)AD[:>C F:,C:9$C29P\=#.&31TR'D'^=2CBA5TY+X#B><%63.XRN_&^^8T' MKTOA(A2\ ")F)@P%>Q1 F0,%9>,B;L*(:5AX3U4H8;3"* W^C,,4(/!Z7-FC MAT+74$'T ;$'SLSY:=JY3P(R99BA'!!E.$>? O;!H8!_ JX7'-PQ "= M=-191P=VVG%'WW?AS1$#>6&8!P)ZZC4&0GOOV86&?/0EB)]^_"F@&6<*$ $: M%7(0-0<;9)5AQ5)PR=$"%B#8F :..O((U(]C!-E"%B#0D:,;._98(VA/H,28 M8W1 YD839*&$!P@7L4:6="&6T0(2+3QAAAES5!92FBU8T>:;<:XD99)6S@!" M#"#DQ08;"NQ)I9*=P0""HFV\P1E<->9H!ATM&,$C2-X!082D*[VHW*9I<"8' M$?LYMBAE L[7X( %1GA@@C*B\<8=<*2I@!QN!=D?JJRZT9T"*!"!41DA<.$& MB1:F"-6"O"XGF'URT&%%&S^19=>!*!@+Q+,;24LMEW:5ANQZ"":+@KCI6:B M'6V,18==P+81!A[HEKB2#(J29!U(8]AQE[HHL ""766046^R^(*@;VQD^ILN MN0&#T!!G;!R\'@@)+_Q1P_]";.RX)IH!'QK,KNIL4-U.6^V[FFRZ":><;I0!TN%UWKGX2HV#9&B50"G0 @TU!,J5 ME2W$4(.BC#I:V1O*(;'?HVF,$48+0CA5V$*^:E3S%C'@ZP+IIX:N.^^*=@&" MO&L$B-%*>=J>-1%2!&$$%>A!-:L"9^!*TD:=$;Z9X70FCB?CCL]I7N2*YPE" MY5%.B7EG,\"@:.CN#V\ZI"^HS@;KKL,N.TNU'Z_ %C: P>Y.I:BIM2" ^2= M\(AG/!,ESW]$Z%$+B$*&%E!A*F5(0 *D=P=@44T'I9E:"A(P-A!L4%8=-%*E M6M(")X1A,1KD(/6LIZN2^8T@GPG-:$I3!"<0836M>0W#9@."VMR&.+Q)@V]T M\P+A$,8>0E'4E'C$E2;JOLHRM["4LSR/*3M'RC&\)B=C.TISG5H$]UGA*@ M A5F/ 5Y4&V2$Y$F6T-#)PI)B$[3H9J<&M<>O6K4.+= 8 M2%!@-9/584-PE6M(5]35@\*A#D#+JY08)D-SV@&O<1WLQO385YS]%6B)D0.N M&F,?<@EV7PI#H0(N:D,!X9"*.P1!#W^H1==P438M*:)MP(C$,3*QC".)8EZ2 M\UD=6E$(ITD-$$T[Q-1^,8S 2>(2@^M$.=0!,&C4 W2H]@(RG+68RB'#F* ; MV6G5ELVWD[YC^ZY']WC=0 $9=?\/'XOJB M3L!Q,C')#HSB0RYHP9XU#&BM.-K="K&+OETM<'?C6N+FY07&1>YL%= 0.@!% M#I\"S0H;TL(7.@0%PC&#"W*('I,!;E*5NI1"PL"?9HW@(G!H2T( 93(G*&8( M0Y'#')+@!BBD 0_[,<+Q$B*#&MB@64@8"1UJL!T/; M*=B:VVPRR'EO-I:TU)C'8 1,@QW3%JJV81H4<-7>OO>B M\JT $AJPWJ1+X "%MZK:5K$TN,6BD4_+DH:H]HAB5"(9GQQG0+.A!@%[^_SG M0 \Z(I(-PUE-)H0Z,(0,>)X+?=(NA[*?O6?FQ,Y%&&[G-K!]ZWZV^,\3,I<< MC=UOB@)4W>_.Y[Q[O3%SEN8>Y/X&ANOQ!2X0;RP?.Y_OVLQ7['V9R!W2\ M/.8-:K'RTC.3SBJ'*2V82IKH@WHRD*6.(# /'K"0H2NL1T,+7+_.V%>& M]KJ/2AIN(M76O]Z7L@=^"_#PAC=-;0_&-Y6?DI](W>>A^<;,_>Z/'TGJFPSU M=#!#&V"F?=Y+I'/>MR7;W:$SHTTXA>(("DB>NPQ0%4P:@ M,0:)AH3[?1167@R@A:'NXAWHCB!/ITQ?_(U2G BBH M%X,E.(4K@7HV^$O" WVZIWKF@1_R8A[R,@=K\&/Y87K+009C\''RUWCT)V$. MXH#ZUX 69EVC]P(#:'4&6!DAJ(!Z^%@@UH=;\H>,QW"R5XAV.#=UXS!30Q!E M(BIZ$A4(.!=AT"0]0R:1R$T2(5<@9@=N (D )#^F)($ MZ8_GR(_Q&(Y%L)$PX /]AC$X@)-&YRV#XBN9+V M*)!,&8\&^91.B9%2"0,X4(]5"0,V0 /I> ,T()3<9@-#( ,#.9 V24+*]B9@?F8[NR)@XT#[N&)DXT);R. 0#B967.9!#4)9_DFQIF6PH)P- F0,H M-Y=&J0 P.6I#T)(0&4"JZ9H@:8^MAI0D26KZN)2DII((.6H2PIJZJ9L626H/ M.9'".8ZMYI%)F9PAJ9'Y"([]J)2U&9VX*9V[&96\.02P"0-#@)PV@)R7J0"< MF3 SP)8Z&0,S\)8P\$^F69?!J1-+^8[N:&_QN9+VMI!069T/F9]3N9P>N8[@ M6(\S$)#3^8_]:)_6J9TU>9-PB3&']E(8DVPT\)9GN9[>R)#VV)98B:#D&$#D MV#X=>I5M28[F**)#0*+K6 0GBI1%<(]#@*'G^*+[B*$6RIFB@Y9&!YH8 Y1P M^8Q%69N(]':HXUD /Q^)AF6HZ/B0/PN:9MZHXL:9]R^I0J29A2 M:94WL)%X&IQ:&9)]NHX]&9(6BI0TRI9I>:6A*0,26II@:I?N7.:M".0-!8)%Z:0,_B0/G.) 6"I/AV1-8JI8^&:%_ @,]0:$*\*.R*:3I MF:&8:I7ZB:35NH]&(*49*JDKB:D8^HXMJHZ86H[D2*-^4JPXJA/HR:-T>93$ M*:EI*IEOB@/R":KU:H[UV:)0V9#M^9=2Z9&(294S&9)7N8Y_ZCY=B0. NI?V M:)D$2:,Y6:R(BC'G^2>8^J7MJ@ !=) =BB^+.:Y;294?":Z<7F9^^BI&IN9S*B9PX"YW3B9LTR;/5&;1&T)*%BC$]X: R MD).BB9YRV:C.R9?@")4;.YRAFJ0P8&\G2FI8*ZM:NX_V-ISXPI4X&[8*$+:D M%K9F.VIABZG(R;:8>IML2Y5P^Y$T,+?I6+?/*;#I>:JD=I6BR9H@JIN!RYHT M0*U:6X^%>[@(.YR)FY[#6;;U&*AJJY#(.9CQ6+D9F8]+6J!&L*39RIGCJ9-( MZY,W(#PWP*@9^Y^M!@,5B8ZKN[/*&;M V[/4:8\"VFK &;0'RINJ6YRWR:K% MB;/U>+/IN)&WV8XMB;SS>)FXJ9+WZ+PL69NW>9D>^:-12Y/A>6A)NY,8$YIN M"0+OB+&GV;LCZ;KF&YL[^[OJF[>_^YN^J0"^R9I6.[_#.;\Z>[_'.9OLN[\_ M"[3,6XY1FZ!FJ;1I^4\]^2ZYI(Z9H8BL'O MZ+$(RL'R^\&YV9(;J9LWD+S9&I,5.0-#J[GGJYS9F:'E.,'Q*)MJZH_NTZPI M>:;NDY+]*)\K>[4MF:TT$)[_E&M(J[05^YCB6Y=W.<%Z:6]8V9>/"I$>*Y@3 M"9@3";#+&;")"8_ZZ)BR:9=,J8]0JIK_RZLM.0-$(+_UV\;&V<([FZ?Y:YO[ MR[OO6+0R<+2=L[U+FZR*PJS,VZ=4B:%%((_DV))+.H\W(([F**EKVI:2&!>@.#2J/:VZ 3BR]O*9I+7*&M^[>C9F^P M*9^CUJ8[7,,6>9#K2)!9&[S[*<.CAJIS++*Q#,,9"ILU4+,(>[,<[#[+'*UG MB[O0_!R\^Y#6^YP!/,4!1*,]D<=&%TD'W,JX52P--F[K@J(Y-"9T$:IT&BI_[>:U,FI0>*<8#VI0SD .Z?)\( MZLOI2:-[?*C=FZ/"0P/+VJ@EW+?9.9G/>@,(_9H&B0/- MJI"3":!M7T^\8WO-"J2<=VK-4"#9UL.M4T M<)#T:M9E39#TO-!0#+_,/,4Q+-(M^IPS4(\0:[3=C-1 60/L*HV=4XTOXW'8 M^->N>)K^&(Z^><*MUKH7N;J,7;Z+_;J/'<&MMI&3?=F2G=F.K=F1O=F.W;_] M*)'X$MIO3=K12I"B?;7E6\ZK#<,26;6,_)+A"(YN'9[>:W2 =%!Z[XA MW-W7Z=TTR=W?39&L&9Z*PLUJQ<<5BZGU/+XGW,_P?9_QS<_R7=_6N<*__+KZ MO=\Z[)(-V]^<** M7:20BJ#L;&JZ47) O/N.[.=\U M;M^[J;H#&=XMV>.O_.,2'.0T:L -FMO)AN)P>6C,ZH_U.-<86K?,O+#_/.4< M^9_U: .NV9WTB)1.#JY(6=B' MONBLVZ(G;-XVJE9K2;&+>N;OO>:>3M^@?N.A'M\\/NJ?+NJ3[CX!CM?I7>#H M.92->MC"N9#O:,$T+-,P3,@QBY NN^N&')4!-,(P?8]?KL.P69Y MWL<[ZMN+7(_7.NU4KJ353NW66N72_K/8;NT3*:3!:J%MB=KMK*![W!/G';'K MG9Z^_:/8W3Z%6^LN^;4%2>_X6M5/CS+9&,+/$B":3E.ZX2B:$93^%079$<7\N,'?+]2]F-7?*0 M??(DC_(AW]DF3]D_&_+6[)RJ?I.JO+TM8,"AB>(WH.1.N\+A",#VJ-@87)$> M:Z$T_+\@"[B$WM6*C;!,_Z#91LRNG!'=N) MSNB1+OC.'?B0_MR&/Z@I6=TV/038/;3:;>G,GNEB*:%_'.LE? --/IXZ;/$A MN8[KZ)J[//KO6OK!2?H9"LR??^N=KYIKJ;GX"\>QC[[W._*SGYQ_'N8";G0& MC,3H>?DKOL@%ZJ\[?<$Z[./(W]48_*O-&XY4>L\ K-AMV;\@'<.Y^;_:^=.6 M6: :O90I6_#=NK+@3YG#[XZWN_TK.P1^Z=5W;?-0I[0ZZH^^O8\$:9DU_)C) MC+#'?NW5#IN,:<-O3F%Y.754Y\S2E6)XF:XM=:F*9L^>DWC;70]PN\4OZ;?@ M$I)U>WM\RU1!J@TXD3C6;B)1'5!5?<#=Q $U8 T;5/&(". EF@3YB)I9VF9% MKMFMM]S!Z?#?(NMT.^UFP2=\!M5@D@XD=#_0!SXG"K>U.IX"*(([C"&%K2&H M!)?>(,-B.A!8.<''%*ZB8!4<@C!) /XL 4B5=& 6U($222L-P3 (!I/9<\H! MD>MFH<$H]YR$@%LK1S=+"!BD.#@'K9D=I$AWD'4U/9D'NG@2P]-MW^MT<;K6 MM?+*'LM3>8);2 &8\<94+*9J$VH25T M>9=)$GX\3?@(PY,?Y'U([7N%+V;U\TA>17J%)0\60C99Z ICH2VBFV[,7J>))/@@&\33WUO"K7#AW8?CI[#ZGHM22MR)L.E(Q2>KKI M" :M&\B:SEE9W&[;#?S-,N"4UEI-6SQ;=DE^B:6L9Y[HHJ!;77?Q.&4])UB[ M9I>:&GFVC"FBM]X' GZ2\+ !*LZ]/;;)IK-D5V.$77[Q=]$NECBNOEO>DD>7 M\1QE1I%5]O!;1S-.9V\BA<:/5+;RUV@#23X1JDVGH%C+5F-T2F/M<+;5-IJG MO=*24^Q>I@OXG:8;6+^PW^[ZC;HK.,XOK$825(=K0@">"!U'P/LD$BR B9ZFC21?.,%S*("4@\""#=78?DCPXRU26\ MB"?Q9AM*FWDDY">)+IQ7&$M74()U*^ZP#2=GI=W\F]&[>E?OZ5VTW#" MN1MYF70DN>-( @E24;,JR9HLG#03<=S,YMW&&:#S$")&_%'U"[$UIY9F(*.: M]*-20>U'=C4?N:V&4P I8?U+(5H]SV@?%]N@/)2.#5$>)X)$D_ZDG]23/&TX MB:C6%0D+U/!:60 *PT4DYS0F\E<2[KY",O MY:@1?6F,(\7* XF4C$"!K)6STC/BRB9%*V4EK]25OI*& R M6"++)B4G5=AL^U6_#701QIL7T<83;TN,$&^%@;AG^9&4XD)[;Z\-3&X]\ @> MO>,*8VKDZB,#$K)@7D]183(XT MG!:9'NR8W+(Y&8&&F.Y0X0'C'*;KXR1,ZV*B<;460J-)D^"2C9 #>Y,F-E3C( 0@&LJC,NIHVD$USJ7WOQW?S-;Z9.V*D[.9RMW('@$7C* MSB U/&_9"4M'[E+>@3BN]>;PY86;;<\S'+%+-)GWJ*5N2V)\;F5"/ZX9\A1E MJDR4X--0)LJA";^&YM*4E>:S:")-KIFWB&;[/)]/,U4V30@6->GG2:.:_G Z M6]&\AP8V"R-4/#FZ,5MF38VH+>W?RUR:65-JJD[[*3OM MX^VLD!/])5\,M752.Z9WT!HG/R25Y,UX3Z-4F-0+1Y+))-1D5.)]LZ5P!#E0H224U.V(3? MF*CEI)TV3;%Q3NGWV[8GAOJ@+XEJ MV>I3TKR2.;IP(_@29X;-5$(PWFCHM.7Q5$@8CG/Q2SO&(]V=CW1W+!27$LG6 MN4)#INDDE,'R>XK/82I,T1&C/%,T%)(-I\B$$F(0E=HSM1N*PQ5Z<<0^4);J$&MH3D39CI2"@<]N6>V MHJ-?TWKZI"260+5G?122&'5X:=00F5$YZD8%DAT5I"[2CQI22^I&)9&?4T'5 M1KUGJ(BA:1ILVB@^-BO1)H_HW4+,5OP(IT)) ;B5CJ%/Y8%++S4)U9\:5/L1 M:B*J0Q6H)M6B"B:5(BEC=<%0HIV<[/G;@AL(Q(&?L"'9)^9ECLC8=K*4U8L( M4+,2=9W.WJGB8#$N*@V_A2:/+*$**X<0$."-M[BZU22@=W.GV@RJZB098.#8 MUB DE)(P;:JDBI2YEE-',FW0*86AMO%F*QEK1H1L1J\B1=;'2O(FJP6LK)&0 MLDJD$;98[YO;@VQ5$R1UI)*7N?X7Q>.>YPBB?K,_Z),,G%#R;>0L6IVSN!;# MTM%"S&8WZ4K!LT@2$2=:>ZN(,94;A2G;:1)]6JMQ37D+<06OT!BY@M2U]&_/B-NK(8XDR<<5?]=E:175&RG!=+8,EY8(68.1O M"+8RDK$[=I.V&40[8.8)/>E15(73ZA,..&>322EUOX)7\-JBA]55NFJ3):UT M) /Z5%8Z3(&JD&THAW;I)I:ZLE@P,B%&L'4FXCK'0^2M(VZB\;R,Q=0"B&;, M4,RO0V4HVO3%I%2)O(];C]:YJ,HDS*9CE5)0!Y![)4 7"9G;JNQ'% MZI2:$MDS3*R?%;..)&YW\DYK^>*)'X\'HEDG2+WHFJK\K,S+> '2S^J\Q&28 M-4E6K:!-I^\WE9#3B>I?E>PX*3O::$"-SDJE5*:+;/ZV',;/\F3<@V*W"=(^ M)TFKMM31V=.OE];2JBV:Y,FZ8HN;89\VKH6EKFB.EMDDZUN4J6\]*56;85]9 M@'I'DW8=Q=KK*LB>D^4JKK?VTBK7_T;,]!V2]9Q% '39T5)J&$].C%6@?93% MH3[1Q_JLW_-RC5--K-E5WF1/@9,;XV58[?;%L3A*G['K4[) MK7FE,:HV%&'CTE.* PM-KM12FL<.X[EE8H0+.6VJ))C\KI@EK5_:5MO^+H+6 M;3?C7)VVO2RK8=LX9ON"&5"E>VCRO!VU;V;@N%*[LZ2YJ1^]L%6*N_+L>+M9 M'!?N&CVQQ9N^'FH*C=1-2BVSZ[:/]J[ZBU$A#&N)M%+[D1S@J+U;URENV1L> M%[?(JXBUC-PJ*O6IREA392UNDEQ-27))VA%FL)H7H!JYSBRT.EN1>$7S;%L5 MG/?LGH$N[76TYBL(*&N\3:FE6YD:Y++NM4V!N>GKV2,52)*"8FH\>X@7'V'% MC<3!R!%7'%>FZK_=HWL&(?/JY$M4$NK8ABE;%C3WX67D?D>1Q?%:[,>\N*^K M9$=!P$+F*O"KCL:O.DI31L#\LBZ,1UV- /LM>^_7 JXTSFBAYN_MJK_UE^U= MK M!7:F3&T@J:X-/#)SJ]AEJ:\WB(T#8A&L5E:1J]K]Y0DQXD6"A"V[!,)B+ M8D*:% K5;.^:>.5K$JK@J+2"U5X/[H0\^(;58)/)FK-5H&5W[RIJP M7-D#:>[7$&:]*>P6J_#6O;WEJ$;D7MO$>]]3[X5'P+>X!E\0.Y&.[SM4O@** M^8I;G<"@\!SEZZNJ[*5B7)GJ++/><[1ZN2L/6[WAR(>/X_1THZ_K,<9.B&3U M.FUNPF(AC+K*./:56NM8:+Q'R\S0F2^1YI&L&9!+4OO/!J.VZ0DJ;9[2HJ_@ M2]'J(Z%$CZZC*2[%7Q89[C/_:NH.5-#U=DE*&BZG?>8A5QUZ0\(6Z]5=W!*< M2A.>[TJ[U]4C8<5*6YV0KY*D75(J;R5CT+:STFS:3(1:3Q%&8\Q65Y53,NY; M?%$H?D7>Q'-/4G3J3]A7)XB]#35X3UC$?5 3ES#NMJ"D,FG2!@/&(&U4?3?O M)*3H6JXJ O:8D[$C?/%WQ=6]@X9PJ1]#)+AT8:62H"N^,. @1Z6[:8R[951R M9/XM2S+4M[H10>7S-: 2"B$"UXSKC0*(-\Y*^,@0H]B0K%\_K3M"22:II 4] M!S@C=:^C,[SXKQ2?I+D(Z"JC)J1]7C=]U;':]+/:EUP-IGCL:)W"%^M7Y3 O MSI8,E9'!TIOY]*#8C73*#\F"9<6:Z['^%U*RDE74 7Y=C:>,%:$SOEHWTNG5 MK[(F]7RC6+*GZ=\)Y>W5[%%C&6R@MJD0)( M.&:[[B,O;BXNRW-ATO&ZQCR0'T7#EJB#.>0K3+V<[1E+YI8'V?J7SD+,M0SN M:F.>NXVG$TH2:.$X!XSC*.8 S3'U3, ML/?+P:U6%&*\KRL*&]O-:JQ.L#?CYEZ8-EVH]FV9D2TL"V=0:$BKTR:\>)GK M1CYG3MB<32MO5GLLL!5Z33YVM((HWY.*]FP:73-*V-BLL_8ES^7+/*OGZAS$ M:#![+L_O.3T',3DIG^&S?2Y?'1?KV9'7&5YK,O]HU)KF/UK*6NLJ)N&6>H' M%L'B<-)IJA$Y34U45Z=J+E*2 7]8[0FUYA2M0*41.[1EMZ_-7A.,J1YFKA.R MI"IZC<-R" *K6@@\TD:ZJM$D>FBJI)MU4X'+3[M%P"G]DW=3AKZW>%5![;Y6 MI^E P$X8A&"7 INVIS>=_[.9OLXXDK(1PA%FG)4S%2Q[8K#L(6"*) -"'B*- M8'&RN(XD&)V<.]O U=.IC;T^8TL,UW;ASU-AG)CF5<\@6G83XXY.I2H,RUHM M8F==6S1Q4DG*BP=NV9O59GMR3$1(K0L(/]90?9-']2%.>:*:!6^U8/42W2R; M-6ZXZ7\9NIL+B]<1]%I)_2O+SDF%1_.>HLG,28CVY&CD.6R"A:0#178("I'M MIX!F!!P9(Q. D G_23*51:U!E5 +E4 MLD*ECYJ)73F-UU81%(/+=O :%G>[>?W+Z'6\CH3'$<'J:[:JD*PB>%)0@")T M#>5U=VXWLDQ=G]B/2M]5K-;&D!,^_KC^CS\9+R_&E" 8O[O8XX_X_;J ?,M^ MG=XB2%=)K1$!T>Q3UU%>'==DSMG10*/LFI&M)H1/ADFG,2^//%XY[CGS?!-8 M$A.Z<=4E]2^US=.3&>Z.T(2M7(T>% N#XI(DRCO_9L'V62PC'M93$UR.6R/8M22R_6Z)T$%$S$61:J)5NMZ];&:@ ;L[9J MTR*-QN+5S"+O/ J-G[, @P"0G#B*."/3W$HCL:M MQW'YX6B B9N!%% &>G@*2.1,( Q CS: LH %@#DQN58+/$FWLC#P"-' 5O# MAP/R)DXR'#D.GP.QH2%\\C&0 MX "A@**J%G?').C@((>2*OXDD@!J#QPY " MXH 15PR,H977@FF MXG.!E3?R*;#2Y8!)UT;+/ D(@2:0 M1 'R?FC5P)$/,I?@7(PAS "&R\3X& M(PC'H?I1CR#"'#28!1Q^!69Z#V<#'MV5]XRGCM)_>E#?''6+J%MTL\['30)7 M^.%+7"E(ECP@+]S &0<)*#T+N'4V$\43N4H/%6%],NEUH\[--_IBF . 7":T M9^YVX8>[\CSPR9F 75@#A]V]N_;C'M;')GCGQ2C@ M)_ @8=[8;[N5>0.UG9MGB2*.TU' &0#K4_P(Z' >3ACJ0(]0XBB SY $-KZ7 M6+LR/^J3G(D?B_V> LA @E\#:F _N(8V$.%=>Q- "*@O/<:( \%X@9;@ H%0P>D@,)-QL&$,.?O M,5V-1YN;EP-,7"3) RB@!0!Q/T'&>7PI%_3PPTN) 15.(&:"A"@!)0 [D %E MA(R441%I1HP>0CP']?C'VB/0P$9_3*::SN@I37%G@[Z=J+[II?K2S.JIK:I_ M]:V^=9KZ53_K87VM/Y&R/M<;3:/9H/DB!,NKA1LB$KB))HH5UA PHGX416T_ MSH1R4$Y*H>CI].A:5/KX/^&3S(.;>A!!8?N-^">W;D[=G]NE?W5];=8ZLS.>]9%\CD]:B34,)-;%_O;^>V1_=;-$]U MI($O[^N]P?99(/)=P]808\Q"+F)^C[ M$%URV?[?VDP0)YOF7ENBH2/4AJK0E=\9G1]M<_GD[H8:>S )4'^DLQ)WE5*[ MW4!K9M=H7FZ#9P8LMR&YW0[RM=UB8Z-W>NO5SM65])O^8T.D=9-W43IV#]SX M*76#P/!^[N4^(P*-1>^E]559LX5([YL"3 M,NXSM=6/]9-LZV?]JO_UR_ZH'_+3J/36URD+E,)[N&GR7:#%*HP-JH@=.0D+ MIKEFD3S^<3_Y*_WECTB;?ZA^_H#V^>?.+HF/(21#4E@BJ@C\0W+5G33ABO)Y MA4PBG>S1G]MF(%5%_>,4_:LNV._Z8[_[;__P7W&^?_9/_V7__+?_\;_UB_W\ M?__[O^NG4GB2[.0AL7[RR4Q2 ,8DD,F*HB>!(QU:AY8Y[7N#%@F1U_%5)E,Y M164I*YQ.^.?S="X.H.)G^7V F-_EYP&&@#')XP<"CH H8.5' JZ 'A+C![/% M)(L75\4W 53N%]*DAO%JH1_&0/X51CK*Q0+R-3UF4H!$FPA.>!#]!#4=@4:@ M$5CVM$_MD]B3ICV!.!03N 1.@234_[2248$\T&+V;84TUQP M_7P2BK0'OV![?M0-1?P$5L&)IZ*43$VZC!08_1Q-0$KOLLA\(]541*)"T3 M"G%B_'P^SA0D5>5<0V9)HE(!ZH 2BJ,6WA5K.-4)4Z0]@B.0!R0)BD"3()(& M"7(LG)4E& E2@K'9-8.%:5VVERW3H%);H/N[%7K#7AVXF5M M-,G94Z 08\2,CT-]84Y_FT<"F^R"_,]$PFGU@O+:?L(+,C0>"9'U!<8]MN!& M IN@5=B8!$.C* KT'?>2:R@;$TU%]=M<3L&*6@.=_$F5%C5CM:ADXA+<@[Z$ M:EU8%N;XD"1A& >3)5TD*9&3]&2-1^]/%@)]86_6(&0BIN14.]7==#?Q;OR@ MR,+:L#;XPFPENE$EY@KV9FCM5:.)*Z@>/2.>GC+WC!QLWI_AMQ%-A*N*V&81 MTC(7X4JRHK0I&R'H-HW )SF $$#LB&8B(4A8$H)N)^$,P'3<12IAH .?" $N MH3\"$[*$,^%+&!/B*@D9A1,14H0B5*+V J%CZ8TW4W:U8_S>^L3O*6Q7%U*( MPG NDY/B!/VT582/C<2D3852(:)S/ %0=J!S E%A*Q8FCA*J86WBYJ85*6!AI1_PF+U17R)$*A2U64I&M[E#^HV@2$M!4Z M([+T@["64"*4.$E04@030.!69DE$I/? /\*#Q@=;76+,8'_#U;0DPV!40V1A M7[=@*V8.:H9J#C^#&5ILN&!44QDF@_L0+2@+@H$72S1(+4V#Z92.M@@J1BB* M-?6?C"NB20ZSX6PL48U<@W;-8O^5I9:D-&LSUU5H9#%4',DIIIV814"-@22N M)6'@C#4H_"PRRAI.%+04:4A:=9BD68?4(5(T'6Z'TF%W^')QA]_A8*5/B2CV M5'9H'H*'Q8ET"*R 1&/)#^/GT"DPH=BC^3 U@M$JR,<@*PN*'!;JF6#UT46U M-4U1T0_TTT.Q-((*+;.-03 BBDCTRZ@O,Q+,8TRA(\L42B0A;BJ1VD5S)$U* M4-(HZ"1U*!NBK'/1>$R@3X="Z: VV]-;M9T%;/",GZ B)2W]6UC(,CE4:13O M!_&%2 8?CX3MT4Y%H2Y#[C%("Q]()2'VB%O?CVCPQ7O\7J0V)'I.1I9M2B/41 MC/B<@"['"BJDFH5@AY'TQ0)Y+@J5\10IR28H7\?$\L53@-7*U[_H>ZR)A0@0 MR3I@SI_CK.0^J% $2GE&DY,II ,>@BRBQ>(:+FB&S;Q4 M_^@E;8XEHZ9@1F5,60.N@&7^2EMD?/TZKHSQU<5,*]V2P@+,G'S=$JWRF"B+ MW(9C(LHDB.$:S6.]G3+?"UPRK!UETU<0F+/D9%%7,)/YF#&VVL=3*^$CJ@^S M=?J8/L,+NBB2I(NK3[LX+M8P=]/!U-,T+./*R1;\-3M]E7FRESTVZ0@(LW<$8@ACR;,PUEX-(V3S,!97$:/+0S$RC!@C MQ)@Q7HP:8\?(,6J'R!ET*'1U< =:?:4?PH( S*9T+ETX.QM.-2D=>_R1@)@& MPL?Z#-:U8A-8DQ3 M)=8P-V+9B*&DC4-BC^@VMHUPH\=D^_"+=*,;53<*6G9CWH@W5F/\WMO8-[:- M#17W%!#1/!G?QE<8J8C(RLZ3N&U/%E_16"EF/F&29.5'9422H^18#':$0A.W M9"LY/TJ1T2CSJ"^S">YB(@:(:$_C!+7Y-]3+KW(Z!BBK8^MH( 6*N(* M@E,.X&R(YJB *2#EYS[J2>TC_ B<;7XB(/MH/[Z/+J#\^ (",#'@?O3A[$?5 M#-J32SU]!"335T#"3@&/\J= +G\+9-)G^X5\%U\.6.2MAKQ5_$-5W4>CXPTT M.@I.N,5EM3F15)@2',7YA9 T@AI I:0 ]4"2$+&3"GDW*,P?51:'X!2^*$F M$0F_!"=VD.=>" 4IL3"S2=>C0_Z0KQ@/*33*43YD$0D[43U3HP0I/A8Q%>3O M([XP>BR< N#"!1XPG*.7H[P/]IT>9]MM"D6<*!?$A71=WB^'Q %VBAP@1\A- M<;@<%N?C41!<' _GQ?4]=9[8(<8)<68<&J?G271NG+.QU\EQ[P,=]R>H4S # MJ,?'Q0#$G%4G&,0!9@>NL!@(<\<"#T<'B'GUB9=V:*1Y.%R*1\3IBV3<8E 9 M@'B$' Z71IX!P()PP 64(S0 ?7$& '(>@7K7,Y@!G&BD@H !FP%70)'@)F!UBM\RU ?F=1,7)3W&+ RJ$.KQQ1@!"T 6A<5S"$I'=3W!UP$&R3 MKQP:QV; =CB<+FG+47%6W"Y7!HR2<4GC8!: DL"D,-DE8 28'0XG+]QY:%QY MY\LU>)V(#W+3I7;*QM6";&1S* !8T!6T>([<%+=YJ)%007Y !T"3_P099Q ( M<81 N?G$/Y4@YRO&0B9QS0DS0 'H!'P@"= S9GT64+7$ *$#9@(P^A)QE/ M)@3-2EKA1]) 8T)O)P(DE1"E]'!(E%!RQT&RE -%G)40D61A07TW4%9($9*2O$"9]<21E,GI3$)%K94KIR M+R4.-Q=$<4MXPEK02IH%2]P_R>(U+4<$>=9'@M3''"@)@R5G8,"8%0">HF!8W!63G%F2!2'P^F4=<$/-\6Y M#G9!;/#)393/)8\ YV$&Q1RI5%@">C, ,5<:"7&\G"]WQ 5SKMP/]T6NE;'D M=-<0U)+EY2UIS^F2L $].0/T#.1E+:?$ 0L\PD?@X9D'$*48X!&<%IA=(M?$ M\92@)3QYQ35RJ61YN4JVDB!>?@!10G'\71M'5"Z4AF4/AROT>#P"0"G7X0JV M)8:76U)W4UP3A\,-!NCD2[G)07%.'2#W5?*4D26!V=.!&7D!4-D0Z' X'("P MY%EW,T%U)\LEV'AV5+EY.$= A! M8J 5> EL7*\B2=YW?J5!X%@R<>6='( "Q'C#Y(VI7):1+B8^F496F6^ C)EG MWI:JI!S 91:8?]P31\3UEHSEA3E2#@7.92 W6@9R 2:P@"LH"9"=7!=HHG&# MP1S WTUQA&8/!UC("GK&++?(A0ZB#*! YAV5HN25>6NNE#Q=*<<5$)F)'"K7 M$? (<@!6V6=R"9EE.WDL)'+Q93DR7TX6ZIU$EX[T!,,E"B OE)@M!G:I.519?6:" MIT5$<6N @1E+!IG8I,7)T7&6+<8G]U\&!3JFKR!E4I2.P18G!]B6::4_"4NR M>%-T)=:ILII9TJ9M^0<8-(9FVKD'\=M7BP5YU6 *X0'&$&& '+2F[UE M<:!C-@F<)+%ISYV1UF97L!',FYQ<*&EEQB6F9#C9;S)Q3X&7N1$ 0F=RS\DC0&+";G]S%Z5*V&,2,);QZ=BL*W">A-DZZ<6A?%+2@?)2"G3;J4 MWN0< $XF@1+B'M)8/)W2QQ8 !5( M<0)>8:-V:IV !?O9VY&56L$G1W>BEU.%9?&J9MV1@F3NH4\(E M0]G6T73]I8[)%F"?8N6P&5GB<&UG["E=GG)5GIBYQ,&2.%R""2QLF0QF(M=K M%ISQ9K30>!:;#J93><5YH'.G;DEFZICJI)61([2:FUT#2F^.F+[")T::NR8T"2ALGN;E&*=\>G+[73_9?N)PHN5!P(:N M"(]:#Q=6-I>@)Y!W!PASF"@3FH&VF>:DX,E9QI)[)A_9 ML&!J7IAG2:$79**8HF>!Z6-VX)R1)PKU]GEE%8G/DE^ M>I\HI3WWQRUQ%\&@ "04#/8G&C!.=I;HI0Y:<2:8M=R]Z4K^DF?G%",.5>644#(<=$Z?#Y9P(@6FI M8=:6 FA/XFT:H >!*N?2X9^W96@ YL%VT)TLJ6.R##W>E]F. GDV9J,Y$QR< MVN;5>1#,F^0H!XIOHIYY@9P)3.8%X.2[Z8Z": _7 9ZC[8&@P&-N8%& MHSU91Z542<8T< M[(D"N)HV:)P03+Z6P.39V4ZBF"#>7R$'@*4#AM")QBV?8B;C64PBE5>II+%) M.J/"W$:P!L0&(H#MR5&J#2D!EBER>J _IU *&<2@5(( VFUVG%/ QYD"A)P@ MI4L:6:*@\B10:4\VF(=G55IO*J'FZ%*Z5LZDAR@*X&.&F*GFJ@DD@)HCI0H: M&@RFL67_:17$"5PE9Q=ZNIIJ)M%IC\*AK2=#23#,I8&E45EQ;GDB*9"'X_4% MO.GI6.GVF(6P#$>9[?:2DG!I@=:D- VHHR MGS8GG0G*B:4.I_99/0P&=,"SJ7#N<@SJS@EQCJ%I0+QP?0B74"!R_$ M+#F8G@'-YF()5BJ@S6A#B9PB&TZF5ME^G 6TYPK*A0YR2V=94&0Z!?O!XQD> MC'*- XC7G@JA3&@NNVDXO<1MI+QI,X M'"!:2@JB&F@Y6HCZ()II''I4^J%8RD?9)'AX%.FC.8$DDD5J>8G9677R N I MI'JG"^=/6IG:DM6H9REL[I(#QB<'(%@&W $JV69BG8>A]I0L)8X:4I:BGQP-H48FGUV!(&?$X9ZQ7'&JJ0*:\"F, MZ1:\G%;=CMK():*M91AJ?J*>-2A!.@=XFJ@<6">.,I1-7,#YDKX<)*I25Y<. MI'@J9;G$X0J(I$R:IFZ@V"7REHYTG'YHR FB0IE!9FQY:"*FI]PZBI@*F#UJ M(O>COJ>,W$_*B@*?+V57:97.J>UEGE0.>1P>6T &))4"Z%F2 M.UB:@J1KUUWV=WN!X!EBBI3HY2_Y;WZA;%P-0![E "2K7UD=I*BR)U>Y2[:8 MJBD:&4\2J>SE!NI>^I/RZCU*KYZIPNJ@JDXRJD.H7!>0[J3'J4]IG8X$J-Q9 MF..IE Z<%Y=L:HF.I+:J6&G;^DM/FO[IXSZ""JI?H@Q^@%"MRY M>.XDI%I2N@Z#0L/*K;Z8WZG-"7CRG@"EE%J+Q@DZ7#67 ]QQS0:@)^@M<;H< M#H?HP27RSZ+WC+0*CUZDYRM0>I">I2<"R #)@7JBZ2ESF"9&9/&U3$M*QR2Z M:HD\8NGJ(.U0.]1&5;ST2%)*@@@D95%93+H8.;%]V6-VDY^P4*>+23) QFAP M4MDSN@J1.V189I&HBL%>$3/L(1OGHT6%V*!4LLVZA^W)CI+CD,@R_BNM2[?W M1>TC9^.V@A+->U<4][H#>4R4V+/F[ATO59)/Q.O=0'B@NT>\2&3N7OA:PUBO M&8SWJKU>K_S>]"K-V*_:WLE5(S:OLA+SRKR"3H[A:J@BND@&'BN$X4R$!RS, M!2F%B+4)DE0)Y2U3WQ<50HTG\HM= DSQ94G?![4W93W S664K91)T-L0Z6>E M5M<45:.ZB(PG[ K3B<$S,AQ&1@^63AQB-;/(0$C'7O98IXE(=4^YE#7AL "< MT0CT_#L9F!&P,0EA:93SI_8,BI.B4@8H/HT6HM$D,J))0B&KZ"*1)AG@T8=$ M&I!8+ *IQ2Y]6RSO A@Y*TU2'1:3-$@)3_Z8^[!^ > R$]M/9:-_\3#^DID MFAN[P\*Q:RP:^_^Y?G73_N@STH!B;+9W.C%%Q>O>UP,FKXS4.%7_^7^'+/^G MR+)^M%\BZ\CB?X]LYA3RC7"%T1)9&%TI0U^,M\8B][F0Z3"H8T:0WV@NR M(K-".U 2ICBT0#[:5%!BS#HHR<8\8P::3D86TL0G/;/+5#0[1 *OT.PT:[M( ML]0L-NNS;;,[9#7+D7B/E-3E%G(Q-'B,L\>3]++$7O&'G"E_1BS/V,ZRL]*? M.]M8/6T[%;E2SUY_FI(@XS>!?GG.18;*6"P7I.)6OJH]F8F=E9H,M,];:%// MUHX*+.UYM YMOG4\_4M2MO2OK3B$DI;)U%\#M5_Y B]93@MUL.SF+0Q[8"4 M;V4FI9D-0_UX1N%)?%4R]22I3!6[_D&R3"TBV]3F?XWL4YO("HCB'\!VEZD[ MNMB2(]"**DT.BU.^R3!PE_)HRS94[\W+IO8H9F 1_;& M>D3H@",_22%3&/JQL*N($[I<9/8&>J)H35*GTSO+_,6S\.P9FSO*3CB8F"+_ MT3\96 1;URA^Q&WC5]RR/<%MUQ?!-D\_ M5&Q(.TXXCVUW&]EZMTW5=RO>AK?A+0O$+QE#'A+36-KJ0:DM:PO%#D3-#I7E M \8Z6]_#)8[,4E-??NNL1+!U;5V+V#A+!%+)HXHY;L9@F./-Q$#-!E$VH<0Z M'FT#8Y[H5 G9*GLAL;0F[8A%%/+#"2G80F3YM(K'4]QQ?'(@A:*+,A_ MS3([CIL+D\B")PR>6WNM0<45GWOVR$$0HW<5#FI$>Q.!1AX9:'N/Z>(FUD>2 M3Q8BPZ4RZ)HX@C+V,OF:I*3?1*]9+ .9_"5]ZY(4-8@9B?'>;-)+[45/[!.+ MCO12@Y(1X)H4LHM-N\0Q16^=R\_DZM9."B#@!#O9/[9N[;3]O%7MPU"KT2B- M[,N^!.R>NN"*\$/",$QM$[RWG22[SP'T8P,L4;[K! /MJE&*%$/CBXV./TW, MM#\=-HP2J/N/>+J8(:@K_/0W"9^C5>[>3(SCDFN1;$U;D_7R%MJ.G5_GXLYT M#@%LP.8G'#.Q5Q5;[=U@CU!V@NWYNRE,M/NW&7Y[5FW[CI1[QZ#B]C_A4"Y3 MG\4ZB3Z,S<_$V-1*XJRPU!O9D+@+OR2_0#+ 5/8SB%DF@UALF/4H@W^CW#?9 M:(M*XG&$\DI]KXO"NP0>6$^@\PC'P#%HXB6K)G9\KM6$I9U-,3OO0?+1$"0_ M+T,#1[TP392NZ\O08$7OABOT/K'9R34#F\!)0&]SLIH0@Q\LU?L<1+V9$];; MNV*])B+6.^YBO7*3+S,Y1;V]ZT)C Q@O^$W4.^Z:O1!DU'LZ ;UEK]D[.IJ] M:Z_9"_TL:=7NS63J(BCTF;MK-+F[H$OA>/.^7HGCHFOQ!8Z@;JBK^":^C"\M M2]63W9Y=OX:KZ5+ZA+UEI\P)XYQ3OV M,>I;J738)+M*D9K;!2U*]D@O_D:#24O!9'RTF.C^W8W&JRIPCK)3&520O,@ M)E+ZUGXDD,R([A?;%," L,H5Z *L/40J8L>7.()P8LSLF.PEMMO/7MN8''OO MK[+GCC![JV)*H"[ M\J;1/=^OES@X_H3%RATW#ZJX'2V)A )WABS:J6.@B(Q4L&<$\[:\72Z+@Z&( M:PT*3[+']%43YI)#*#*-1!-AX@.)C< @0 /W."P,B;NK!RU43U6Q8@%_A5X* M\ CYV(XB+W0(-ZTJG(K,Y@=/)-Y8(/P']\'TR*,3P51-7! *;.]-3IH/\Y+1 MYB2!QP4\WZXX?!+2Y "Z)'/7QP/Z#&<$8B>,FWC"+I'JTY@!*SWP?$;7','] M+ (D";._+E,K_/=6:4HAUB4+KT-)(2QL"R]L#Y#4B"H&5%X3Y6/)EE@P,%4" M[8QGK1 S6^BHM>:0.Z0,SUG-#2/;%/8NWE*A\Y!%A9).I!*]>(U4+2.L%?;" M2HOXF-O4A4&)&" M/A4<*9P^FHYA#D5G&\6UR0K[2^\X)I7,0)+Y?%7,$7\S_W[$]^]-TLL:'6S) M/%BFE$Z[L.?R'5YA8$TZ+!/7+S$:PQ83WU[;FD62$^_$Z^[A:_&93CZA'MD5 M?L-?86_#"JTH7Q7\NR'.CNI,'ZR8-"9.<53\H3S%G2$YCRF3UZ4+3#WB*P MJD^Q612&<6&!$@!-AJFC%GO!FG0)]Q.1(2VC3!#6G,-VF$&:&W ME1K3,@P@ BL$(+"]JV1,W<+ ;!C(UZ]-)UH,JK.*R6+V6C#X"R(ILM@JUL_$ M8M')C;2&V;L'(1\C$5F#5XUMJQ+2-?!P76P/U\/4LW$H^,LMSD8)+0NKLU-KW%21L#A2'QPFPR=N,F"," \" \L<3(A/!]J M2D;BG8PHQH.1,&W\OZ$Q&$FZZ]#*3!R7#MP>:\D[,.H3=&56P8G@1":6)-O3 MBG*MV,38%@V5.@E)_#$Z=MZ PU\:(),50C_.TLI5"^/"M_"H3&V5RE9@JJP( MS\(.%+GRFT%3KUZ8#!02Q7R5^>C;8%)![NN"*S]OO/)-U2O_RHCAZP44;C/@ M\)H8&!^P,H_+Q"*C0M:3@9,#3%@V<$-E U>"2=HER DF8G3*W+0?5BV&J6";W,^10D M]W(C0R^?+DZ)EE.0^,LC"KW,+M'+]%M!0O>9(P?S&L,9)\S83=[%&3?,U8W8 M."*)9P!1/]P7#\7K-()),"+_-*.>!8 PK-<+!%] M_-%^RM_DW+JHBNB-'874>FEN(I^DOI4]#Q>8U!]%;"^,SE+]5#]"V_L4\ !6 M8]+3"QRR/426 A@@K5(0E+MUPG10J5^&@A!7R0CQT$+$3+$N06BLF3 M[$@T"EF#HI"%V&:(L[2\2[C%@[.QQI>1&;;0TPT$WG*WXRTP3=X*T\3T8EM, M\TOF;7I[W@+3Z^V/TMZ"L6XL]RS/%M%LK!$MR5[3[VT3O5==@.??'0PS+KM3 MGZ2XV>9("Q$ P_HQ?N;P)1Q C!M+00']*!]MAK["L8NMLZ);6M/X[;5M#2- M3:=1<[0VSXPHRE;!@5U7^7-5.B5>E55=3 \U Q4M),6CWL=56,4DBQUS,X'.Q#"VWQ$IOWZQ7 M4\H8R?\R,[)/'$E 0B@;/8:RHHPHGXN(M0*[)O/1Y'(:]E[758BG_KIERLU$S&\X!M1S65.Y&P7,-.#R?2S&1KJ:K^7 ,**#.SWD,F&[X<6'>]$:',)7.2 MAE/3U$X)4ZT_S]2RL"X\GZ56O?#WK%U_A8IC!MR)YG!=Y*3PT0EQPD(1-UXF<9MFQXH%P*\,7%D?Q=C4+& MU9%3W!W9QN4 ;]P>N5^A0GLE(-G:N9_"0?7P0A!S2]P4P$LVH2I>BP31K6&GBT?(+7'Z9Z I M7=JD%2>)77#^GW0JJ-G(":S>:%V0WEEUNZD]-U&FFP?!I,"- IOJG1S WTFM M<<"?69+. 5@E4NI98IP,:($9A+ZL'.8G-T\VJ$T"9N?+":!928%C:7*NW!P- M4$BB +!&B)H5L'%Y3$Y"LY*:!S0*8&D3DO;! M+_^$,SD%@ U\*67I95N=4NH4-[;*1)PKZR[W>A29+^>"98E\@U#CL(:HEKNGC+JH@*C09SMQR5JGSF 2KWR G( 0BF:<'@74J8/<&G M?=$UEL*ZZ.=V:PD% MR+@>E6(W&U!U P6#Z0I ?/.>IG?6/><=JV2 /.!EG?"/?=?<4)^@!WS?]O\-Z.$*[X*DD8*;J:F$VG!V MCR<:]U'9!^1V_K>^>-&%VI8V8MF+BIQ37&^0(^C9Z67AV7.ZI]7H 5%82G;) M7&_W!!P+H"D:]]BMW#_WV7K&P=G'@HOGL+ZB^28:EW9JX:EGMOIY JU29KR- M:^)P0X!K"L7]J=UI5PF;EHLK$J03$9$ Z8,ZG MS.<@AVA&K,BGB/UE6YR*AEJII$J@=<%@^IWJVM9#%.?+V9LV=^C9TO4$9-P5 M<+?&J+2HC&JQ%J,Z'%"A+W+; $*][2N(>:]/3E)Q@G7I9U2 E];ABZ9'L)7R MJCP=/GD13'&& 1S?%29M(IHQ*=HIY4PKX@LSMV#A<$C"D M3J5;-IP99\R8ZF2KB@+,E@P>KSJ-\Z4XY3LNU\7C[C8>P':S&?TJD@DL=..# MZ4KI$IP!T"1(E^ Y!7/!'W>%=QMXP-!Y;LIR2YS9NHZC<5: "T #9*R-N,F) M<=IT2>49=VL'"#75< M+&$ [8W&V>5LN5L.EPMS1+@V&,=58EI&^9ZN5S.E!]U.^H%FI["XQX=P[EHUY,2Z;@- MDU>N+=:1OR>5Z3 MG:CV*9R3Y]5HL^VW_MSUN'..PZV47R:9_>=IJW>:!'AHG P!RBZO6O.BI)Y K M,B+I4:[)2)JPC,P R0$ULKENLK37D52^/KL+D;MS\QG38+HS%:;_TF.Z>)M, M!]-AN@(\8&_64*X_*]^.8+MU76(XQ6;9(X@( M%OADRJTN)X;'RZQN:G+R37 MC%/(%-(I_,HG1"_SS(CZH6X)3=>",< ESEHZ&'/X_/$U*I=PJ!Q)]6:G56-6 MP7W"G'JFTJD_S1;)H],TMS2@^JC>!FK"U]C+_&^5PK)R5VC @,,D30UT-)G" MCO/E7 O/*=UR"5CVU4RXNJV>,I/,7G5:;2NM8>ZU5Z@Q'ZLQ]:D[GRUEY!FN M8Q2Y1$28WQP*YFI9U+M24B:\B%\(ZQ86+@7F7@A"[ (T.+4]58R$9?+BRKSP6;I,O) M)KZM$"7#O1E(#&P.EVY3VOK*(&U4#N$I RB[24DWFXUB>U[^[IV)TGMM-/) M=^5\4&?@X-ZZ<(_=WQ'+E1.YY"BCEP9)"K%/G^$"& M(PW1^3OXAC,ID^I[''4]3I\<%3LEOGN3_%+"J.Y3[Q>M2"^!V':+O4\GT9+[[,]W-W:)@PT'M'"\@Y5N15+8 M-XJ%C=)QD1R>AGU>=MA>'C '8I>1N3867F*SD2CV&^EYAG$N=AD7D,K8R@:- MK4?&<3=VMOU'=@Z!Y'I$CG<80/PGEXZ?K4$F8]'CW/C22D^+@BM M=I0DL,!G(.5+:YS0@X:D6&@2/X\SY_;X\YEOMIG#PA\ZM4+BDNE7YQH,I3^J MQ*JS+MRY:1NJDF*=0\"1V8GD!6JE<;"X&JKPZC0I7I:59^>PR5&FIEVY;L=, MMN;0N5.>'S0(*7A=+@4\ 49 $A"7!W6NG%07:F+F#.4(D (H+$+<(1\@'.%? M0.5-!:PQG7Q8=Y94G);\6@+2 0NA1X^*@QL!58 3, 10 4E 1;!2,I)>AC"' M54YQ4, (, ),E-5E26\F87&9?*1W&K?"O_RL?R M3L LKWG7\MAW"XX"0 %Z]^(MJ N>C*J1&SACV<:3ZY^\>4J M%UK* 0BMP6W:2=[-_#P/S:^459PP=Y>[Y3$H7)Z8 MU]W8MPV^=S/FPH%Z$%DR>3N='$ X?'*5.>Z-J;Q6N_?Z750RE)TYL% %?.9E M:IFPWA6;';C,>N\RE$_X:D[08^6ON1"G&2R2\WA=( >D5D:Z-7VA>[6D=N]>,MY6NBG MZ#R@EZAZY&?DE/WC8?'H97'7E.-P4, BW\@_\C*]$-#B8>47)QV?DG/QW?C1 MS8\L]4E5+QZ::)/1?8E@2G7Z]P6Z<%YH#*$,S>^KGR68&^ MHJ6J/7>M]JT[:^<-J986T258!Z6JD6FD@WY42O3\),,=?:[UZJ3#S>!UF#WJ M3C=[>W+")P8!39[E?AQF=U[6XI[<*?=W+]E3YE4P2X8'(R@FA[0JDE(F<3=E M>Z89:"P:<3.4JB43FDT.!H3X:%K)'?2*MD2.G%/DOR1RGZ\.!6\H<_]<"N0M M@3PZ-,"9ZB2T72OD".LJ7&G6>Y? ,!F7:&SB'7I"#L3UV[NDT?FNCI_S9N,@ M=^;AZ:8*>MKCD^]D&'!MGIUO:AT.UQNEIV0R+@9@]&@:K/>L7A'Y5S>#H9HQJ9O?9U:7^RI8/H!MHSL*UTP!MNIIK?C$&7 MZVW@"EBO]VSY2.YAU^T>?AE!PQ%Q

Y\>G3>_6*0J7ZB<_Y6*EG6XH'\ M3A!);)=CG4HOWI4 B65/&G<"'*%06]7)MB2'H'1RDNN^&;]0 HL]/B! M9R:NMEX93/Z-ND@.][$F%FY2BMN9*?_]XR_=W%QOL.G'&:L^R2TWN/I@77L9 MZW>C#5Y<.5&6K75V6="8ZOCY-F;)3[JF/)UO_MC/^6( --[L;^?^OHV/]F<#J[8V\9=LHIW-0 Q M%W(V 8=<9.J3+W@Y7=G9;"]QJ>0ILK8&!6%X/S)JNN:SOO)98D:9GQR)ZFKB MDJ\[+=0N4JD29*_BFR6>%SH;BDSV^ M:\J#=IG(I7OOI;Z>=+P$^F^F #$=C=_)\>0? 9:)>JH-^[V3^G9*E+4\M9F. MWO?,IUJ.QOGW!C]$QT]6DPP^J-FL>.37ZHA:HN+D4*=J:MQ'WJHVP@G68:%W M*WN:F!;<;]VSJJ)FDX]IES!+)J.%=MDI8 ZI1AQ(N8JRIF,]Q>\E$'>O7(IZ MC3?92#R3YY#'Z$#>59"?DMERZ*^I@?.3Z2K5Z:VBDFF_>_FFVJH?:)#?K2ZH MMN7)CT]&H&_IVVELUZ6#0C.*YW#;8 $;ZN+!!IK!9]!% J#F 3#.UPST^[@R MU[POZ'!0"HZ5=PB*@72)23IR/F7DV3I,X/MFUTI>"JT%^D%.%/ %:4)@V>>A M',TD5+?[E_5KB>_?VUFD+S\/>DHJJJ@GB)?)A9/S]H O>E?X^HPJ?\;@@:EIRJ8VW,!R^ 'J=Z16?DS=XMKF7E)**276;,,OP!1F:)+-IW!5->)^-=T8^'IX'Y-9JI@U9VJNP=YBA8< M_RA/?#C+U-H/O_3\VR^YDA9_#1Z07C5)9^6N.O8UW'I]P;Y7E4N)XX=/:B[I M%\P"G1RF5>E/KM.JUO;0:_ P M ']30)YWDA*0L\3Q\RQ) >%2-"FUDO*OY[33J3S5_=( E#X&CZO)T:22HR7E MH#9\1Z6=W^RIWP:0(T/U^_)57#8_7.])%55M8^@EBE+@I_H?KXUMEV; 'L;=UTIA-WH>:\S.UK*P"+J?]DV^*X(3U2RPI M,7('#"5!SQ0GVJ"XDN@HZ2IXC9X(@9-N ] M!XH.P\ -W@PGBW1A ^'U<$1X'CD2GAAI-!=B4RMAG0A.6IP36Q='Q09'0NJT MV"Q1,+8TSK-ASU/#J['A\.8X>B4[3G5.G:+'.>JH=+X+[X+LP'@JJW3;JT^I MIE)M',!P%:@IFX2M^B65]GH\C8(+$Y'M#= "R#'EI-Q+GL!*SA+J&L=S.P5* MH7A.2BC"WDWJ_1=V2N3\Y.0,[CGYE*:JM*>SPEHU]M9[2;^SWD$N[^=SR@?6 M To: mpi-profile@CS.UTK.EDU Subject: [jim@meiko.co.uk: Re MPI Comment on Profiling Interface] Content-Length: 3650 Anyone else got any comments or should we go with this ? --Jim Return-Path: Date: Thu, 9 Dec 1993 14:51:25 +0000 From: jim@meiko.co.uk (James Cownie) To: hollings@cs.wisc.edu Cc: walker@rios2.epm.ornl.gov, jim@meiko.co.uk In-Reply-To: <9312091359.AA17304@rios2.epm.ornl.gov> (message from David W. Walker on Thu, 09 Dec 93 08:59:59 -0500) Subject: Re MPI Comment on Profiling Interface Content-Length: 2680 Jeff, > I would like to express a concern about the current definition of the Profiling > Interface in the MPI draft (dated 11/2/93). My concern is that MPI routines > might be used in the implementation of other MPI routines. This creates a > potential double counting problem for profilers. One solution to this is to > require any MPI routine used in the implementation of another MPI routine to > use the name shifted version of the routine. I would suggest the following > paragraph be added to the end of section 8.1 (page 162, line 29): > > 4. ensure that the MPI functions are a unique boundary between an MPI user > and an MPI implementation. In particular, an MPI function may not be used > in the implementation of other MPI functions (however, the name shifted > versions of MPI routines may be used in the implementation of MPI functions). Thanks for the comment. This is indeed an issue which I (at least) had not considered. It is an interesting question as to what one actually wants. As an implementor I may well be interested in the total time spent in MPI_SEND whether it is called from a collective op, or direct by the user. However I think you are probably correct in thinking that the user really wants a simpler, one call, model. It is interesting to consider the effect of Unix linker semantics on this type of thing as well, which are less than immediately intuitive ! This is because the linker never back tracks into a previous library, so imagine the following scenario... MPI_BROADCAST uses MPI_ISEND MPI_BROADCAST is intercepted for profiling. Case 1: the user code uses MPI_ISEND effect : MPI_BROADCAST and MPI_ISEND come from profiling lib, isend in broadcast is profiled as well as the user ones. Case 2: the user code does NOT use MPI_ISEND effect: MPI_BROADCAST comes from profiling library, BUT _MPI_BROADCAST is not in the profiling lib, thterefore there is no reference for MPI_ISEND while we're searching the profiling library. Therefore the MPI_ISEND which is used is the non-profiled one from the standard library ! This all seems rather horrible too (and would also be resolved by your suggestion). While it is of course for the committee to decide, I think your suggestion is sensible, and will propose it (or something similar). Thanks again for taking the time to comment. --Jim James Cownie Meiko Limited Meiko Inc. 650 Aztec West Reservoir Place Bristol BS12 4SD 1601 Trapelo Road England Waltham MA 02154 Phone : +44 454 616171 +1 617 890 7676 FAX : +44 454 618188 +1 617 890 5042 E-Mail: jim@meiko.co.uk or jim@meiko.com James Cownie Meiko Limited Meiko Inc. 650 Aztec West Reservoir Place Bristol BS12 4SD 1601 Trapelo Road England Waltham MA 02154 Phone : +44 454 616171 +1 617 890 7676 FAX : +44 454 618188 +1 617 890 5042 E-Mail: jim@meiko.co.uk or jim@meiko.com James Cownie Meiko Limited Meiko Inc. 650 Aztec West Reservoir Place Bristol BS12 4SD 1601 Trapelo Road England Waltham MA 02154 Phone : +44 454 616171 +1 617 890 7676 FAX : +44 454 618188 +1 617 890 5042 E-Mail: jim@meiko.co.uk or jim@meiko.com From owner-mpi-profile@CS.UTK.EDU Thu Dec 9 12:12:45 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib) id MAA05405; Thu, 9 Dec 1993 12:12:44 -0500 Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id MAA26523; Thu, 9 Dec 1993 12:13:12 -0500 X-Resent-To: mpi-profile@CS.UTK.EDU ; Thu, 9 Dec 1993 12:13:11 EST Errors-to: owner-mpi-profile@CS.UTK.EDU Received: from hub.meiko.co.uk by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id MAA26514; Thu, 9 Dec 1993 12:13:06 -0500 Received: from tycho.co.uk (tycho.meiko.co.uk) by hub.meiko.co.uk with SMTP id AA05993 (5.65c/IDA-1.4.4 for mpi-profile@cs.utk.edu); Thu, 9 Dec 1993 17:12:29 GMT Received: by tycho.co.uk (5.0/SMI-SVR4) id AA10447; Thu, 9 Dec 1993 17:10:46 +0000 Date: Thu, 9 Dec 1993 17:10:46 +0000 From: jim@meiko.co.uk (James Cownie) Message-Id: <9312091710.AA10447@tycho.co.uk> To: mpi-profile@CS.UTK.EDU Cc: hollings@cs.wisc.edu In-Reply-To: <199312091644.IAA05764@sampson.ccsf.caltech.edu> (message from Jon Flower on Thu, 9 Dec 1993 08:44:31 -0800) Subject: Re: [jim@meiko.co.uk: Re MPI Comment on Profiling Interface] Content-Length: 1269 Jon Flower writes :- > In Express's profilier we simply keep a count of the "depth" in the > library that gets incremented in each profiled routine and decremented > on exit. You can then decide to either profile only at level 0 (i.e., > the one call model) or allow nesting to some (possibly arbitrary) depth. Yes, the problem is that this has to be done in the profiling code, which MPI says nothing about at the moment. Maybe you are right, and the best thing is to leave the spec as is, but add something to explain it to the people writing the profiling code. This would then allow either approach. > Your description of the potential problems with the linker is > nasty. I don't see any obvious way around this. I, personally, > don't really like the enforcement that MPI routines can only > call _MPI routines -- it's too easy to make a mistake, although > I suppose one could write scripts to protect oneself..... Another reason for leaving it as is, but documenting the pitfall. --Jim James Cownie Meiko Limited Meiko Inc. 650 Aztec West Reservoir Place Bristol BS12 4SD 1601 Trapelo Road England Waltham MA 02154 Phone : +44 454 616171 +1 617 890 7676 FAX : +44 454 618188 +1 617 890 5042 E-Mail: jim@meiko.co.uk or jim@meiko.com From owner-mpi-profile@CS.UTK.EDU Thu Dec 9 17:02:49 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib) id RAA06953; Thu, 9 Dec 1993 17:02:44 -0500 Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id RAA21176; Thu, 9 Dec 1993 17:03:10 -0500 X-Resent-To: mpi-profile@CS.UTK.EDU ; Thu, 9 Dec 1993 17:03:09 EST Errors-to: owner-mpi-profile@CS.UTK.EDU Received: from antares.mcs.anl.gov by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id RAA21168; Thu, 9 Dec 1993 17:03:04 -0500 Received: from donner.mcs.anl.gov by antares.mcs.anl.gov with SMTP id AA23321 (5.65c/IDA-1.4.4 for ); Thu, 9 Dec 1993 16:02:41 -0600 Message-Id: <199312092202.AA23321@antares.mcs.anl.gov> To: jim@meiko.co.uk (James Cownie) Cc: mpi-profile@CS.UTK.EDU Subject: Re: [jim@meiko.co.uk: Re MPI Comment on Profiling Interface] In-Reply-To: Your message of "Thu, 09 Dec 1993 15:42:18 GMT." <9312091542.AA10406@tycho.co.uk> Date: Thu, 09 Dec 1993 16:02:40 -0600 From: Rusty Lusk | | Anyone else got any comments or should we go with this ? | --Jim I don't have any better ideas. It does mean overhauling the current implementation, but that is our own fault. - Rusty From owner-mpi-profile@CS.UTK.EDU Fri Dec 10 15:50:10 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib) id PAA15965; Fri, 10 Dec 1993 15:50:10 -0500 Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id PAA29800; Fri, 10 Dec 1993 15:50:35 -0500 X-Resent-To: mpi-profile@CS.UTK.EDU ; Fri, 10 Dec 1993 15:50:33 EST Errors-to: owner-mpi-profile@CS.UTK.EDU Received: from asiago.cs.wisc.edu by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id PAA29789; Fri, 10 Dec 1993 15:50:30 -0500 Date: Fri, 10 Dec 93 14:45:25 -0600 From: bart@cs.wisc.edu (Bart Miller) Message-Id: <9312102045.AA10868@asiago.cs.wisc.edu> Received: by asiago.cs.wisc.edu; Fri, 10 Dec 93 14:45:25 -0600 To: bart@cs.wisc.edu Subject: New tech reports on parallel measurement tools Two new technical reports are available via anonymous from the Paradyn Parallel Program Performance Tool project at UW-Madison. The first paper is about our techniques and implementation for dynamic (on the fly) instrumentation of programs. The second paper is about collecting and mapping performance data to high-level parallel languages, with a description of a prototype implementation of these ideas for CM Fortran. An earlier paper on the Performance Consultant part of Paradyn is also available. These files are found on grilled.cs.wisc.edu (128.105.36.37): technical_papers/dyninst.ps.Z Dynamic instr paper technical_papers/nv.ps.Z High-level langugae tool paper technical_papers/w3search.ps.Z Performace Consultant paper Also in this directory is a file called "READ_ME", listing titles, authors, and citations for each paper. File "ABSTRACTS" contains this information, plus abstracts for each paper. Questions on the Paradyn system can be directed to paradyn@cs.wisc.edu. From owner-mpi-profile@CS.UTK.EDU Mon Dec 13 06:24:39 1993 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib) id GAA23416; Mon, 13 Dec 1993 06:24:38 -0500 Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id GAA07170; Mon, 13 Dec 1993 06:25:08 -0500 X-Resent-To: mpi-profile@CS.UTK.EDU ; Mon, 13 Dec 1993 06:25:07 EST Errors-to: owner-mpi-profile@CS.UTK.EDU Received: from hub.meiko.co.uk by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id GAA07132; Mon, 13 Dec 1993 06:24:48 -0500 Received: from tycho.co.uk (tycho.meiko.co.uk) by hub.meiko.co.uk with SMTP id AA18695 (5.65c/IDA-1.4.4 for mpi-profile@CS.UTK.EDU); Mon, 13 Dec 1993 11:24:09 GMT Received: by tycho.co.uk (5.0/SMI-SVR4) id AA12077; Mon, 13 Dec 1993 11:22:16 +0000 Date: Mon, 13 Dec 1993 11:22:16 +0000 From: jim@meiko.co.uk (James Cownie) Message-Id: <9312131122.AA12077@tycho.co.uk> To: lusk@mcs.anl.gov Cc: mpi-profile@CS.UTK.EDU In-Reply-To: <199312092202.AA23321@antares.mcs.anl.gov> (message from Rusty Lusk on Thu, 09 Dec 1993 16:02:40 -0600) Subject: Re: [jim@meiko.co.uk: Re MPI Comment on Profiling Interface] Content-Length: 1247 > I don't have any better ideas. It does mean overhauling the current > implementation, but that is our own fault. > > - Rusty I think my conclusion has changed in light of Jon's comments, and I'd rather leave the spec as is, but document the issue, with a strong suggestion to implementers of profiling code that they use a depth count to resolve the problem themselves. The reasons for doing this (instead of restricting the implementation further) are 1) It allows more information to be collected if required (e.g. one could produce a profiler which accumulated time in SEND only when not called directly by the user.) 2) It's relatively easy to get over the problem in the profiling code using the depth count trick. 3) It avoids a potential source of obscure problems where the implementation (incorrectly on the proposed spec) internally uses an MPI_ name rather than an _MPI_ name. I'll add the additional comments to the draft and circulate. --Jim James Cownie Meiko Limited Meiko Inc. 650 Aztec West Reservoir Place Bristol BS12 4SD 1601 Trapelo Road England Waltham MA 02154 Phone : +44 454 616171 +1 617 890 7676 FAX : +44 454 618188 +1 617 890 5042 E-Mail: jim@meiko.co.uk or jim@meiko.com From owner-mpi-profile@CS.UTK.EDU Wed Feb 2 05:29:16 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib) id FAA28840; Wed, 2 Feb 1994 05:29:16 -0500 Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id FAA05402; Wed, 2 Feb 1994 05:29:29 -0500 X-Resent-To: mpi-profile@CS.UTK.EDU ; Wed, 2 Feb 1994 05:29:28 EST Errors-to: owner-mpi-profile@CS.UTK.EDU Received: from hub by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK) id FAA05302; Wed, 2 Feb 1994 05:29:14 -0500 Received: from tycho.co.uk (tycho.meiko.co.uk) by hub with SMTP id AA15809 (5.65c/IDA-1.4.4 for mpi-profile@cs.utk.edu); Wed, 2 Feb 1994 10:29:05 GMT Received: by tycho.co.uk (5.0/SMI-SVR4) id AA02797; Wed, 2 Feb 1994 10:28:52 +0000 Date: Wed, 2 Feb 1994 10:28:52 +0000 From: jim@meiko.co.uk (James Cownie) Message-Id: <9402021028.AA02797@tycho.co.uk> To: mpi-profile@CS.UTK.EDU Subject: New draft for profiling chapter People, Here is a slightly revised version of the profiling chapter. Changes are 1) New requirement on layered implementations to get around unix linker oddities 2) Examples should have correct arguments (now we know what they are !) 3) New sections to explain the double counting problem, and the unix linker oddities which make the new requirement. Enjoy. -- Jim James Cownie Meiko Limited Meiko Inc. 650 Aztec West Reservoir Place Bristol BS12 4SD 1601 Trapelo Road England Waltham MA 02154 Phone : +44 454 616171 +1 617 890 7676 FAX : +44 454 618188 +1 617 890 5042 E-Mail: jim@meiko.co.uk or jim@meiko.com % % $Id: prof.tex,v 1.4 1993/05/05 15:34:04 jim Exp jim $ % % $Log: prof.tex,v $ % Revision 1.4 1993/05/05 15:34:04 jim % Changed the prefix to PMPI_ and removed other options. % Added discussion on multiple levels of interception. % % Revision 1.3 1993/03/18 14:42:51 jim % Changed order so that requirements come before discussion. % Some other tidying up. % % Revision 1.2 1993/02/04 14:59:12 jim % Minor changes, added to do section. % % Revision 1.1 1993/02/02 10:38:37 jim % Initial revision % % \section{Requirements} To meet the MPI profiling interface, an implementation of the MPI functions {\em must} \begin{enumerate} \item provide a mechanism through which all of the MPI defined functions may be accessed with a name shift. Thus all of the MPI functions (which normally start with the prefix ``{\tt MPI\_}'') should also be accessable with the prefix ``{\tt PMPI\_}''. \item ensure that those MPI functions which are not replaced may still be linked into an executable image without causing name clashes. \item document the implementation of different language bindings of the MPI interface if they are layered on top of each other, so that the profiler developer knows whether she must implement the profile interface for each binding, or can economise by implementing it only for the lowest level routines. \change \item where the implementation of different language bindings is is done through a layered approach (e.g. the Fortran binding is a set of ``wrapper'' functions which call the C implementation), ensure that these wrapper functions are separable from the rest of the library. This is necessary to allow a separate profiling library to be correctly implemented, since (at least with Unix linker semantics) the profiling library must contain these wrapper functions if it is to perform as expected. This requirement allows the person who builds the profiling library to extract these functions from the original MPI library and add them into the profiling library without bringing along any other unnecessary code. \end{enumerate} \section{Discussion} The objective of the MPI profiling interface is to ensure that it is relatively easy for authors of profiling (and other similar) tools to interface their codes to MPI implementations on different machines. Since MPI is a machine independent standard with many different implementations, it is unreasonable to expect that the authors of profiling tools for MPI will have access to the source code which implements MPI on any particular machine. It is therefore necessary to provide a mechanism by which the implementors of such tools can collect whatever performance information they wish {\em without} access to the underlying implementation. We believe that having such an interface is important if MPI is to be attractive to end users, since the availability of many different tools will be a significant factor in attracting users to the MPI standard. The profiling interface is just that, an interface. It says {\em nothing} about the way in which it is used. There is therefore no attempt to lay down what information is collected through the interface, or how the collected information is saved, filtered, or displayed. While the initial impetus for the development of this interface arose from the desire to permit the implementation of profiling tools, it is clear that an interface like that specified may also prove useful for other purposes, such as ``internetworking'' multiple MPI implementations. Since all that is defined is an interface, there is no objection to its being used wherever it is useful. As the issues being addressed here are intimately tied up with the way in which executable images are built, which may differ greatly on different machines, the examples given below should be treated solely as one way of implementing the objective of the MPI profiling interface. The actual requirements made of an implementation are those detailed in the Requirements section above, the whole of the rest of this chapter is only present as justification and discussion of the logic for those requirements. The examples below show one way in which an implementation could be constructed to meet the requirements on a Unix system (there are doubtless others which would be equally valid). \section{Logic of the design} Provided that an MPI implementation meets the requirements above, it is possible for the implementor of the profiling system to intercept all of the MPI calls which are made by the user program. She can then collect whatever information she requires before calling the underlying MPI implementation (through its name shifted entry points) to achieve the desired effects. \section{Examples} \subsection{Profiler implementation} Suppose that the profiler wishes to accumulate the total amount of data sent by the MPI\_SEND function, along with the total elapsed time spent in the function. This could trivially be achieved thus \change \begin{verbatim} static int totalBytes; static int totalTime; extern int now(void); /* Some suitable timer function ! */ int MPI_SEND(void * buffer, const int count, MPI_Datatype datatype, int dest, int tag, MPI_comm comm) { int tstart = now(); /* Pass on all the arguments */ int result = PMPI_Send(buffer,count,datatype,dest,tag,comm); totalBytes += count * MPI_Sizeof(datatype); /* Accumulate byte count */ totalTime += now() - tstart; /* and time */ return result; } \end{verbatim} \subsection{MPI library implementation} On a Unix system, in which the MPI library is implemented in C, then there are various possible options, of which two of the most obvious are presented here. Which is better depends on whether the linker and compiler support weak symbols. \subsubsection{Systems with weak symbols} If the compiler and linker support weak external symbols (e.g. Solaris 2.x, other system V.4 machines), then only a single library is required through the use of {\tt \#pragma weak} thus \begin{verbatim} #pragma weak MPI_Example = PMPI_Example int PMPI_Example(/* appropriate args */) { /* Useful content */ } \end{verbatim} The effect of this {\tt \#pragma} is to define the external symbol {\tt MPI\_EXAMPLE} as a weak definition, this means that the linker will not complain if there is another definition of the symbol (for instance in the profiling library), however if no other definition exists, then the linker will use the weak definition. \subsubsection{Systems without weak symbols} In the absence of weak symbols then one possible solution would be to use the C macro pre-processor thus \begin{verbatim} #ifdef PROFILELIB # ifdef __STDC__ # define FUNCTION(name) P##name # else # define FUNCTION(name) P/**/name # endif #else # define FUNCTION(name) name #endif \end{verbatim} Each of the user visible functions in the library would then be declared thus \begin{verbatim} int FUNCTION(MPI_Example)(/* appropriate args */) { /* Useful content */ } \end{verbatim} The same source file can then be compiled to produce both versions of the library, depending on the state of the {\tt PROFILELIB} macro symbol. It is required that the standard MPI library be built in such a way that the inclusion of MPI functions can be achieved one at a time. This is a somewhat unpleasant requirement, since it may mean that each external function has to be compiled from a separate file. However this is necessary so that the author of the profiling library need only define those MPI functions which she wishes to intercept, references to any others being fulfilled by the normal MPI library. Therefore the link step can look something like this \begin{verbatim} % cc ... -lmyprof -lpmpi -lmpi \end{verbatim} Here {\tt libmyprof.a} contains the profiler functions which intercept some of the MPI functions. {\tt libpmpi.a} contains the ``name shifted'' MPI functions, and {\tt libmpi.a} contains the normal definitions of the MPI functions. \subsection{Complications} \subsubsection{Multiple counting} \change Since parts of the MPI library may themselves be implemented using more basic MPI functions (e.g. a portable implementation of the collective operations implemented using point to point communcations), there is potential for profiling functions to be called from within an MPI function which was called from a profiling function. This could lead to ``double counting'' of the time spent in the inner routine. Since this effect could actually be useful under some circumstances (e.g. it might allow one to answer the question ``How much time is spent in the point to point routines when they're called from collective functions ?''), we have decided not to enforce any restrictions on the author of the MPI library which would overcome this. Therefore the author of the profiling library should be aware of this problem, and guard against it themself. In a single threaded world this is easily achieved through use of a static variable in the profiling code which remembers if you are already inside a profiling routine. It becomes more complex in a multi-threaded environment (as does the meaning of the times recorded !) \subsubsection{Linker oddities} \change The Unix linker traditionally operates in one pass : the effect of this is that functions from libraries are only included in the image if they are needed at the time the library is scanned. When combined with weak symbols, or multiple definitions of the same function, this can cause odd (and unexpected) effects. Consider, for instance, an implementation of MPI in which the Fortran binding is achieved by using wrapper functions on top of the C implementation. The author of the profile library then assumes that it is reasonable only to provide profile functions for the C binding, since Fortran will eventually call these, and the cost of the wrappers is assumed to be small. However, if the wrapper functions are not in the profiling library, then none of the profiled entry points will be undefined when the profiling library is called. Therefore none of the profiling code will be included in the image. When the standard MPI library is scanned, the Fortran wrappers will be resolved, and will also pull in the base versions of the MPI functions. The overall effect is that the code will link successfully, but will not be profiled. To overcome this we must ensure that the Fortran wrapper functions are included in the profiling version of the library. We ensure that this is possible by requiring that these be separable from the rest of the base MPI library. This allows them to be {\tt ar}ed out of the base library and into the profiling one. \section{Multiple levels of interception} The scheme given here does not directly support the nesting of profiling functions, since it provides only a single alternative name for each MPI function. Consideration was given to an implementation which would allow multiple levels of call interception, however we were unable to construct an implementation of this which did not have the following disadvantages \begin{itemize} \item assuming a particular implementation language. \item imposing a run time cost even when no profiling was taking place. \end{itemize} Since one of the objectives of MPI is to permit efficient, low latency implementations, and it is not the business of a standard to require a particular implementation language, we decided to accept the scheme outlined above. Note, however, that it is possible to use the scheme above to implement a multi-level system, since the function called by the user may call many different profiling functions before calling the underlying MPI function. Unfortunately such an implementation may require more co-operation between the different profiling libraries than is required for the single level implementation detailed above. -- Jim James Cownie Meiko Limited Meiko Inc. 650 Aztec West Reservoir Place Bristol BS12 4SD 1601 Trapelo Road England Waltham MA 02154 Phone : +44 454 616171 +1 617 890 7676 FAX : +44 454 618188 +1 617 890 5042 E-Mail: jim@meiko.co.uk or jim@meiko.com From owner-mpi-profile@CS.UTK.EDU Wed Sep 7 16:39:18 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib) id QAA18911; Wed, 7 Sep 1994 16:39:13 -0400 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id QAA28367; Wed, 7 Sep 1994 16:39:05 -0400 X-Resent-To: mpi-profile@CS.UTK.EDU ; Wed, 7 Sep 1994 16:38:19 EDT Errors-to: owner-mpi-profile@CS.UTK.EDU Received: from asiago.cs.wisc.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id QAA28211; Wed, 7 Sep 1994 16:38:09 -0400 Date: Wed, 7 Sep 94 15:32:15 -0500 From: bart@cs.wisc.edu (Bart Miller) Message-Id: <9409072032.AA04151@asiago.cs.wisc.edu> Received: by asiago.cs.wisc.edu; Wed, 7 Sep 94 15:32:15 -0500 To: J.Prohaska@Eng.Sun.COM, Larry.Watts@meiko.com, Pavel.Tvrdik@lip.ens-lyon.fr, a.vgemund@et.tudelft.nl, adve@cs.rice.edu, allen@think.com, auld@ssd.intel.com, baden@cs.ucsd.edu, berman@cs.ucsd.edu, bernhard@esdc.intel.com, bhelm@cs.uoregon.edu, boyd@eecs.umich.edu, browne@cs.utexas.edu, btouranc@CS.UTK.EDU, crovella@cs.rochester.edu, cs@think.com, culler@cardamom.CS.Berkeley.EDU, danielf@kgnvmt.vnet.ibm.com, dcheng@nas.nasa.gov, dcp@mycroft.cray.com, dka@dcs.ed.ac.uk, dm@think.com, dnk@watson.ibm.com, donb@ssd.intel.com, dongarra@CS.UTK.EDU, eric@meiko.com, gannon@cs.indiana.edu, gbrooks@convex.com, halstead@crl.dec.com, heath@ncsa.uiuc.edu, hitchcoc@oerv01.er.doe.gov, huang@mailhost.uni-koblenz.de, jdchoi@watson.ibm.com, jeffm@hpinddf.cup.hp.com, jerry@ptolemy-ethernet.arc.nasa.gov, jf@cacs.usl.edu, jlh@vsop.Stanford.EDU, johnmc@cs.rice.edu, justin@ssd.intel.com, jxyb@woodsy.LANL.GOV, ken@rice.edu, kitchens@oerv01.er.doe.gov, koob@itd.nrl.navy.mil, kunz@iti.informatik.th-darmstadt.de, lam@k2.stanford.edu, lusk@mcs.anl.gov, malony@cs.uoregon.edu, marka@cs.rice.edu, matsu@is.s.u-tokyo.ac.jp, mhao@hpl.hp.com, mikek@magus.ca.sandia.gov, mink@cmr.ncsl.nist.gov, mohr@cs.uoregon.edu, moore@sdsc.edu, moose@think.com, moray@meiko.co.uk, mpi-profile@CS.UTK.EDU, mspezial@porthos.csee.lehigh.edu, nutt@cs.colorado.edu, pabuhr@plg.uwaterloo.ca, padua@csrd.uiuc.edu, pancake@cs.orst.edu, pase@cray.com, perl@src.dec.com, quick@immd7.informatik.uni-erlangen.de, reed@oboe.cs.uiuc.edu, rich@cc.gatech.edu, rover@ee.msu.edu, schwab@f.gp.cs.cmu.edu, schwan@cc.gatech.edu, seager@llnl.gov, sistare@think.com, snir@watson.ibm.com, snyder@cs.washington.edu, stasko@cc.gatech.edu, tf@par.univie.ac.at, thomas@esdc.intel.com, title@think.com, u.detert@kfa-juelich.de, wds@ssd.intel.com, zosel@llnl.gov Subject: New parallel tools paper from Paradyn project A new technical report is available via anonymous ftp and WWW from the Paradyn Program Performance Tool project at UW-Madison. This paper presents an overview of the Paradyn tools, technological motivations, and gives examples of the use of Paradyn on a couple of real applications. Papers on other aspects of the Paradyn tools are also available. All these papers are found on grilled.cs.wisc.edu (128.105.36.37): technical_papers/overview.ps.Z Paradyn overview paper. **NEW** technical_papers/dyninst.ps.Z Dynamic instrumentation paper (appears in SHPCC '94) technical_papers/nv.ps.Z High-level language tool paper (appears in IFIP WG10.3 '94) technical_papers/w3search.ps.Z Performance Consultant paper (appears in ICS '93) technical_papers/paradynPVM.ps.Z Paradyn/PVM paper (appears in upcoming SIAM monograph) technical_papers/array_distrib.ps.Z Runtime redistribution of arrays (appears in 7th Lang/Comp Workshop) technical_papers/visualize.ps.Z Essay on par program visualization (appears in J. Par. and Distr. Comp.) Also in this directory is a file called "READ_ME", listing titles, authors, and citations for each paper. File "ABSTRACTS" contains this information, plus abstracts for each paper. The papers are also available from WWW. Our project URL is: http://www.cs.wisc.edu/p/paradyn/public/html/paradyn.home.html From owner-mpi-profile@CS.UTK.EDU Wed Sep 7 16:51:05 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib) id QAA19027; Wed, 7 Sep 1994 16:51:04 -0400 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id QAA29397; Wed, 7 Sep 1994 16:51:02 -0400 X-Resent-To: mpi-profile@CS.UTK.EDU ; Wed, 7 Sep 1994 16:50:55 EDT Errors-to: owner-mpi-profile@CS.UTK.EDU Received: from asiago.cs.wisc.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id QAA29363; Wed, 7 Sep 1994 16:50:45 -0400 Date: Wed, 7 Sep 94 15:32:15 -0500 From: bart@cs.wisc.edu (Bart Miller) Message-Id: <9409072032.AA04151@asiago.cs.wisc.edu> Received: by asiago.cs.wisc.edu; Wed, 7 Sep 94 15:32:15 -0500 To: J.Prohaska@Eng.Sun.COM, Larry.Watts@meiko.com, Pavel.Tvrdik@lip.ens-lyon.fr, a.vgemund@et.tudelft.nl, adve@cs.rice.edu, allen@think.com, auld@ssd.intel.com, baden@cs.ucsd.edu, berman@cs.ucsd.edu, bernhard@esdc.intel.com, bhelm@cs.uoregon.edu, boyd@eecs.umich.edu, browne@cs.utexas.edu, btouranc@CS.UTK.EDU, crovella@cs.rochester.edu, cs@think.com, culler@cardamom.CS.Berkeley.EDU, danielf@kgnvmt.vnet.ibm.com, dcheng@nas.nasa.gov, dcp@mycroft.cray.com, dka@dcs.ed.ac.uk, dm@think.com, dnk@watson.ibm.com, donb@ssd.intel.com, dongarra@CS.UTK.EDU, eric@meiko.com, gannon@cs.indiana.edu, gbrooks@convex.com, halstead@crl.dec.com, heath@ncsa.uiuc.edu, hitchcoc@oerv01.er.doe.gov, huang@mailhost.uni-koblenz.de, jdchoi@watson.ibm.com, jeffm@hpinddf.cup.hp.com, jerry@ptolemy-ethernet.arc.nasa.gov, jf@cacs.usl.edu, jlh@vsop.Stanford.EDU, johnmc@cs.rice.edu, justin@ssd.intel.com, jxyb@woodsy.LANL.GOV, ken@rice.edu, kitchens@oerv01.er.doe.gov, koob@itd.nrl.navy.mil, kunz@iti.informatik.th-darmstadt.de, lam@k2.stanford.edu, lusk@mcs.anl.gov, malony@cs.uoregon.edu, marka@cs.rice.edu, matsu@is.s.u-tokyo.ac.jp, mhao@hpl.hp.com, mikek@magus.ca.sandia.gov, mink@cmr.ncsl.nist.gov, mohr@cs.uoregon.edu, moore@sdsc.edu, moose@think.com, moray@meiko.co.uk, mpi-profile@CS.UTK.EDU, mspezial@porthos.csee.lehigh.edu, nutt@cs.colorado.edu, pabuhr@plg.uwaterloo.ca, padua@csrd.uiuc.edu, pancake@cs.orst.edu, pase@cray.com, perl@src.dec.com, quick@immd7.informatik.uni-erlangen.de, reed@oboe.cs.uiuc.edu, rich@cc.gatech.edu, rover@ee.msu.edu, schwab@f.gp.cs.cmu.edu, schwan@cc.gatech.edu, seager@llnl.gov, sistare@think.com, snir@watson.ibm.com, snyder@cs.washington.edu, stasko@cc.gatech.edu, tf@par.univie.ac.at, thomas@esdc.intel.com, title@think.com, u.detert@kfa-juelich.de, wds@ssd.intel.com, zosel@llnl.gov Subject: New parallel tools paper from Paradyn project A new technical report is available via anonymous ftp and WWW from the Paradyn Program Performance Tool project at UW-Madison. This paper presents an overview of the Paradyn tools, technological motivations, and gives examples of the use of Paradyn on a couple of real applications. Papers on other aspects of the Paradyn tools are also available. All these papers are found on grilled.cs.wisc.edu (128.105.36.37): technical_papers/overview.ps.Z Paradyn overview paper. **NEW** technical_papers/dyninst.ps.Z Dynamic instrumentation paper (appears in SHPCC '94) technical_papers/nv.ps.Z High-level language tool paper (appears in IFIP WG10.3 '94) technical_papers/w3search.ps.Z Performance Consultant paper (appears in ICS '93) technical_papers/paradynPVM.ps.Z Paradyn/PVM paper (appears in upcoming SIAM monograph) technical_papers/array_distrib.ps.Z Runtime redistribution of arrays (appears in 7th Lang/Comp Workshop) technical_papers/visualize.ps.Z Essay on par program visualization (appears in J. Par. and Distr. Comp.) Also in this directory is a file called "READ_ME", listing titles, authors, and citations for each paper. File "ABSTRACTS" contains this information, plus abstracts for each paper. The papers are also available from WWW. Our project URL is: http://www.cs.wisc.edu/p/paradyn/public/html/paradyn.home.html From owner-mpi-profile@CS.UTK.EDU Fri Oct 21 16:40:20 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib) id QAA23678; Fri, 21 Oct 1994 16:40:20 -0400 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id QAA19599; Fri, 21 Oct 1994 16:40:07 -0400 X-Resent-To: mpi-profile@CS.UTK.EDU ; Fri, 21 Oct 1994 16:40:06 EDT Errors-to: owner-mpi-profile@CS.UTK.EDU Received: from asiago.cs.wisc.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id QAA19564; Fri, 21 Oct 1994 16:39:59 -0400 Date: Fri, 21 Oct 94 15:35:27 -0500 From: bart@cs.wisc.edu (Bart Miller) Message-Id: <9410212035.AA02933@asiago.cs.wisc.edu> Received: by asiago.cs.wisc.edu; Fri, 21 Oct 94 15:35:27 -0500 To: bart@cs.wisc.edu Subject: New perf tool paper from the Paradyn project A new technical report is available via anonymous ftp and WWW from the Paradyn Program Performance Tool project at UW-Madison. This paper presents our model and mechanism for controlling instrumentation overhead. This mechanism is based on a feedback cost model. We describe how it is implemented in the Paradyn tools and give results of its on real applications. Papers on other aspects of the Paradyn tools are also available. All these papers are found on grilled.cs.wisc.edu (128.105.36.37): technical_papers/costmodel.ps.Z Cost model paper. technical_papers/overview.ps.Z Paradyn overview paper. technical_papers/dyninst.ps.Z Dynamic instrumentation paper (appears in SHPCC '94) technical_papers/nv.ps.Z High-level language tool paper (appears in IFIP WG10.3 '94) technical_papers/w3search.ps.Z Performance Consultant paper (appears in ICS '93) technical_papers/paradynPVM.ps.Z Paradyn/PVM paper (appears in upcoming SIAM monograph) technical_papers/array_distrib.ps.Z Runtime redistribution of arrays (appears in 7th Lang/Comp Workshop) technical_papers/visualize.ps.Z Essay on par program visualization (appears in J. Par. and Distr. Comp.) Also in this directory is a file called "READ_ME", listing titles, authors, and citations for each paper. File "ABSTRACTS" contains this information, plus abstracts for each paper. The papers are also available from WWW. Our project URL is: http://www.cs.wisc.edu/~paradyn/ Comments on the new paper (and previous ones) are welcome. From owner-mpi-profile@CS.UTK.EDU Mon Dec 5 12:54:30 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib) id MAA04867; Mon, 5 Dec 1994 12:54:30 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id MAA18251; Mon, 5 Dec 1994 12:54:12 -0500 X-Resent-To: mpi-profile@CS.UTK.EDU ; Mon, 5 Dec 1994 12:54:10 EST Errors-to: owner-mpi-profile@CS.UTK.EDU Received: from asiago.cs.wisc.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id MAA18244; Mon, 5 Dec 1994 12:54:05 -0500 Date: Mon, 5 Dec 94 11:53:39 -0600 From: bart@cs.wisc.edu (Bart Miller) Message-Id: <9412051753.AA00833@asiago.cs.wisc.edu> Received: by asiago.cs.wisc.edu; Mon, 5 Dec 94 11:53:39 -0600 To: bart@cs.wisc.edu Subject: Faculty position (please pass this on) We are recruiting this year for at least one position at the assistant professor level. If you know of any really top graduating Ph.D.'s, please pass this notice on to them. Thanks! --bart ------------------------------------------------------------------------------ UNIVERSITY OF WISCONSIN MADISON Computer Sciences Department Faculty Position Applications are invited for a tenure-track assistant professor position beginning August 1995. Applicants should have a Ph.D. in Computer Science or in a closely related field with a demonstrated ability in relevant scholarly research. Of particular interest are applicants whose research interests lie in the areas of operating systems, networks, parallel and distributed systems, or artificial intelligence. The Computer Sciences Department at the University of Wisconsin- Madison has active research projects in a broad number of areas, including artificial intelligence, computer architecture and VLSI, database systems, mathematical programming, modeling and analysis of computer systems, networking and distributed systems, numerical analysis, operating systems, parallel processing, program development environments, programming languages and compilers, and the theory of computing. The department has received three NSF Coordinated Experimental Research (Institutional Infrastructure) grants. The previous two projects emphasized loosely- and tightly-coupled parallel computing. Our current project, PRISM, addresses parallel processing on machines that offer credible paths to teraflop computing. Research computing equipment is plentiful. The department has 400 DEC, HP, and Sun workstations, 70 PCs, plus numerous file servers and special-purpose devices for computer vision and computer architecture. Equipment for research in parallel computing currently includes a 64-processor Thinking Machines CM-5 and the Wisconsin COW (Cluster Of Workstations). COW is a parallel computer constructed from 40 two-way multiprocessor Sun SparcStation 20 workstations (with an ATM interconnect coming in early 1995). Applicants should submit a vitae and the names of at least three references to: Chair, Faculty Recruiting Committee, Computer Sciences Department, University of Wisconsin-Madison, 1210 West Dayton St., Madison, WI 53706. Deadline date for applications: March 31, 1995. The University is an Equal Opportunity/Affirmative Action employer and encourages women and minorities to apply. Unless confidentiality is requested in writing, information regarding the applicants must be released on request. Finalists cannot be guaranteed confidentiality. ------------------------------------------------------------------------------ From owner-mpi-profile@CS.UTK.EDU Tue Dec 6 12:50:48 1994 Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.8t-netlib) id MAA28227; Tue, 6 Dec 1994 12:50:47 -0500 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id MAA05994; Tue, 6 Dec 1994 12:50:29 -0500 X-Resent-To: mpi-profile@CS.UTK.EDU ; Tue, 6 Dec 1994 12:50:27 EST Errors-to: owner-mpi-profile@CS.UTK.EDU Received: from asiago.cs.wisc.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id MAA05948; Tue, 6 Dec 1994 12:50:19 -0500 Date: Tue, 6 Dec 94 11:49:18 -0600 From: bart@cs.wisc.edu (Bart Miller) Message-Id: <9412061749.AA16026@asiago.cs.wisc.edu> Received: by asiago.cs.wisc.edu; Tue, 6 Dec 94 11:49:18 -0600 To: bart@cs.wisc.edu Subject: Research Staff position available If you know a good person for this position, please pass this on to them. You are welcome to repost it locally. Thanks! --bart =============================================================================== Great Research Opportunity in Parallel Processing at UW-Madison! NEW RESEARCH STAFF POSITION with the Paradyn Parallel Tools Project =============================================================================== The Paradyn project is an ARPA and DOE funded effort to develop cutting-edge performance tools for large-scale parallel systems. Initial developments are on our CM-5 and on clusters of workstations. Future systems will include machines such as the Cray T3D. The primary duties are research, development, and support of system software for the Paradyn project, developing performance tools for parallel programs. The project includes work on user interfaces, operating systems, libraries and run-time systems, and compilers. Proven expertise is required in at least two of the above areas, INCLUDING experience in developing large software systems. (We are not looking for application developers.) You will perform research and have responsibility for software development. Additional responsibilities include helping to develop, maintain, and distribute the Paradyn performance tools. This position is for one year, with renewals up to three years. Applications should have either (1) a computer science (or related field) PhD or (2) an MS with relevant research or work experience required. Application must be received by March 1, 1995 to be considered. Job start date can be anytime from July 1,1995 until September 1, 1995 (earlier is preferred). Salary range is US $40,000 to $55,000 (depending on experience). You can apply via email to paradyn@cs.wisc.edu (Postscript or ASCII files ONLY!) or postal mail to: Ms. Thea Sklenar Computer Sciences Department University of Wisconsin 1210 W. Dayton Street Madison, WI 53706-1685 Your application must include the following: 1. Summary of education, research, and work experience. 2. A list of publications that you have authored. 3. The names and email addresses of three references. The Univ of Wisconsin is an equal opportunity employer. =============================================================================== From owner-mpi-profile@CS.UTK.EDU Wed Sep 6 17:48:13 1995 Return-Path: Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id RAA05465; Wed, 6 Sep 1995 17:48:02 -0400 Received: from localhost by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id RAA28775; Wed, 6 Sep 1995 17:47:33 -0400 X-Resent-To: mpi-profile@CS.UTK.EDU ; Wed, 6 Sep 1995 17:46:44 EDT Errors-to: owner-mpi-profile@CS.UTK.EDU Received: from asiago.cs.wisc.edu by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id RAA28698; Wed, 6 Sep 1995 17:46:37 -0400 Date: Wed, 6 Sep 95 16:45:30 -0500 From: bart@cs.wisc.edu (Barton Miller) Message-Id: <9509062145.AA02998@asiago.cs.wisc.edu> Received: by asiago.cs.wisc.edu; Wed, 6 Sep 95 16:45:30 -0500 To: adve@cs.rice.edu, agarwal@hing.LCS.MIT.EDU, allen@ibm.com, amr@cs.princeton.edu, appel@cs.princeton.edu, arvind@lcs.mit.edu, baden@cs.ucsd.edu, bart@cs.wisc.edu, berman@cs.ucsd.edu, bhelm@cs.uoregon.edu, boyd@eecs.umich.edu, browne@cs.utexas.edu, btouranc@CS.UTK.EDU, callahan@tera.com, charlie@cse.ucsc.edu, chen-marina@cs.yale.edu, cheriton@Pescadero.Stanford.EDU, cliff@computer-science.manchester.ac.uk, crovella@cs.rochester.edu, culler@cs.Berkeley.EDU, cuny@cs.umass.edu, cwf@research.att.com, cytron@kato.cs.wustl.edu, dbg@purdue.edu, dchase@eng.sun.com, dongarra@CS.UTK.EDU, eggers@cs.washington.edu, ferrant@ibm.com, ff@cs.umr.edu, fkz@cs.brown.edu, gannon@cs.indiana.edu, gaudiot@usc.edu, greg@lcs.mit.edu, gross@cs.cmu.edu, grunwald@boulder.colorado.edu, harrison@sp2.csrd.uiuc.edu, heath@ncsa.uiuc.edu, hendren@opus.cs.mcgill.ca, hilfingr@ginger.CS.Berkeley.EDU, hj@ecn.purdue.edu, hollings@cs.UMD.EDU, hudak@cs.yale.edu, jefferso@lanai.cs.ucla.edu, jf@cacs.usl.edu, jlh@Mojave.Stanford.EDU, johnmc@cs.rice.edu, jouvelot@lcs.mit.edu, jxyb@lanl.gov, kafura@vtopus.cs.vt.edu, keith@rice.edu, ken@cs.rice.edu, lam@k2.stanford.edu, leblanc@cs.rochester.edu, linda@cs.rice.edu, malony@cs.uoregon.edu, mani@vlsi.cs.caltech.edu, marka@cs.rice.edu, marzullo@cs.ucsd.edu, meunier@int-evry.fr, mohr@cs.uoregon.edu, mojmir@cspuni11.BITNET, moore@sdsc.edu, mpi-profile@CS.UTK.EDU, mspezial@porthos.eecs.lehigh.edu, mwolfe@cse.ogi.edu, nikhil@crl.dec.com, nutt@cs.colorado.edu, padua@csrd.uiuc.edu, pancake@cs.orst.edu, patterson@cs.Berkeley.EDU, peter.lee@cs.cmu.edu, pinter@haifasc3.vnet.ibm.com, plasil@cs.felk.cvut.cs, quinn@jasper.cs.orst.edu, raphael@ms.uky.edu, rich@cc.gatech.edu, rn@cs.brown.edu, rover@ee.msu.edu, roy@cs.uiuc.edu, rrh@tera.com, ryder@cs.rutgers.edu, saltz@cs.UMD.EDU, sanders@inf.ethz.ch, schwan@cc.gatech.edu, snyder@cs.washington.edu, soffa@zonker.cs.pittsburgh.edu, stasko@cc.gatech.edu, tomc@eng.uiowa.edu, trg@cs.cmu.edu, tvrdik@cs.felk.cvut.cs, vivek_sarkar@vnet.ibm.com, weihl@thillana.lcs.mit.edu, zary@cs.uoregon.edu Subject: SIGMETRICS Symp on Parallel & Distr Tools Announcing a new conference, called the SIGMETRICS Symposium on Parallel and Distributed Tools, to take place in May 1996 at the FCRC. This conference brings together groups from several of the successful workshops that have met over the past 5 years, including the ACM/ONR Workshop on Parallel and Distributed Debugging, Workshop on Debugging and Performance Tuning for Parallel Computing Systems, and Supercomputer Debugging `9x. For more information, please check: http://www.cs.wisc.edu/~paradyn/spdt96.html This page includes pointers to both HTML and Postscript versions of the Call for Papers. --bart miller From owner-mpi-profile@CS.UTK.EDU Fri May 17 18:25:47 1996 Return-Path: Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id SAA01689; Fri, 17 May 1996 18:25:47 -0400 Received: from localhost (root@localhost) by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id SAA13466; Fri, 17 May 1996 18:28:30 -0400 Received: from asiago.cs.wisc.edu (asiago.cs.wisc.edu [128.105.76.22]) by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id SAA13457; Fri, 17 May 1996 18:28:27 -0400 Received: (from bart@localhost) by asiago.cs.wisc.edu (8.6.12/8.6.12) id RAA09410 for mpi-profile@cs.utk.edu; Fri, 17 May 1996 17:28:25 -0500 Date: Fri, 17 May 1996 17:28:25 -0500 From: Barton Miller Message-Id: <199605172228.RAA09410@asiago.cs.wisc.edu> To: mpi-profile@CS.UTK.EDU Subject: Paradyn Performance Tools Release 1.0 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * The first public release of the PARADYN PARALLEL PROGRAM PERFORMANCE TOOLS is now available. Paradyn is a tool for measuring and analyzing the performance of parallel and distributed programs. Paradyn can measure large, long running programs and provides facilities for helping to automatically find performance problems in parallel programs. Paradyn operates on executable (a.out) files but dynamically inserting measurement code while the program is running. Paradyn can measure programs running on SunOS, Solaris, AIX, SP2, and TMC CM-5, or heterogeneous combinations of these systems. An HP-UX version will be available shortly. Paradyn can also handle PVM on these platforms and MPL on the SP2. The current release is binary only. Source code will be distributed during the summer. More information is available from our home page: http://www.cs.wisc.edu/~paradyn/ This page will provide information about the software release, plus papers and manuals on the Paradyn Tools. If you have any questions, please mail us at paradyn@cs.wisc.edu. --bart miller * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * From owner-mpi-profile@CS.UTK.EDU Mon Aug 19 16:27:27 1996 Return-Path: Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (cf v2.9t-netlib) id QAA02592; Mon, 19 Aug 1996 16:27:26 -0400 Received: from localhost (root@localhost) by CS.UTK.EDU with SMTP (cf v2.9s-UTK) id QAA22293; Mon, 19 Aug 1996 16:30:22 -0400 Received: from asiago.cs.wisc.edu (asiago.cs.wisc.edu [128.105.76.22]) by CS.UTK.EDU with ESMTP (cf v2.9s-UTK) id QAA22272; Mon, 19 Aug 1996 16:30:16 -0400 Received: (from bart@localhost) by asiago.cs.wisc.edu (8.6.12/8.6.12) id PAA07364 for mpi-profile@cs.utk.edu; Mon, 19 Aug 1996 15:30:09 -0500 Date: Mon, 19 Aug 1996 15:30:09 -0500 From: Barton Miller Message-Id: <199608192030.PAA07364@asiago.cs.wisc.edu> To: mpi-profile@CS.UTK.EDU Subject: Paradyn Performance Tools Release 1.1 +-----------------------------------------------------------------------------+ | Release 1.1 of the PARADYN PARALLEL PROGRAM PERFORMANCE TOOLS | | is now available. | | | | With Release 1.1, source code for the entire Paradyn system is available. | | Release 1.1 includes full support for profiling applications on HP-UX. This | | release also fixes some early bugs in the first release (especially on | | AIX/SP2 platforms). CM-5 support is not included in 1.1. | +-----------------------------------------------------------------------------+ Paradyn is a tool for measuring and analyzing the performance of parallel and distributed programs. Paradyn can measure large, long running programs and provides facilities for helping to automatically find performance problems in parallel programs. Paradyn operates on executable (a.out) files by dynamically inserting measurement code while the program is running. Paradyn can measure programs running on SunOS, Solaris, AIX, SP2, and HP-UX, or heterogeneous combinations of these systems. Future releases will include Pentium and NT support. Paradyn can also handle PVM on these platforms and MPL on the SP2. Release 1.2 will include MPI support. More information is available from our home page: http://www.cs.wisc.edu/~paradyn/ This page will provide information about the software release, plus papers and manuals on the Paradyn Tools. If you have any questions, please mail us at paradyn@cs.wisc.edu. --bart miller .