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 <wade@cs.utk.edu>


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 <mpi-profile@cs.utk.edu>); 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 <lusk@antares.mcs.anl.gov>

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 <mpi-profile@cs.utk.edu>); 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
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
L%5[<8N%/ 8V ;<L!5[ACH !<%GC'"\!V;!8@@*_K6 SO-L5B@2F4!M"X @!N
 
end

From owner-mpi-profile@CS.UTK.EDU  Wed May  5 11:52:18 1993
Received: from CS.UTK.EDU by surfer.EPM.ORNL.GOV (5.61/1.34)
	id AA19028; Wed, 5 May 93 11:52:18 -0400
Received: from localhost by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA24557; Wed, 5 May 93 11:51:55 -0400
X-Resent-To: mpi-profile@CS.UTK.EDU ; Wed, 5 May 1993 11:51:53 EDT
Errors-To: owner-mpi-profile@CS.UTK.EDU
Received: from hub.meiko.co.uk by CS.UTK.EDU with SMTP (5.61+IDA+UTK-930125/2.8s-UTK)
	id AA24541; Wed, 5 May 93 11:51:18 -0400
Received: from float.co.uk (float.meiko.co.uk) by hub.meiko.co.uk with SMTP id AA21083
  (5.65c/IDA-1.4.4 for mpi-profile@cs.utk.edu); Wed, 5 May 1993 16:51:12 +0100
Date: Wed, 5 May 1993 16:51:12 +0100
From: James Cownie <jim@meiko.co.uk>
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
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
%$+ '"@ ^
 
end

From owner-mpi-profile@CS.UTK.EDU Thu Dec  9 10:44:24 1993
Received: from CS.UTK.EDU by netlib2.cs.utk.edu with ESMTP (8.6.4/2.8t-netlib)
	id KAA03942; Thu, 9 Dec 1993 10:44:24 -0500
Received: from localhost by CS.UTK.EDU with SMTP (8.6.4/2.8s-UTK)
	id KAA19224; Thu, 9 Dec 1993 10:44:42 -0500
X-Resent-To: mpi-profile@CS.UTK.EDU ; Thu, 9 Dec 1993 10:44:40 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 KAA19212; Thu, 9 Dec 1993 10:44:33 -0500
Received: from tycho.co.uk (tycho.meiko.co.uk) by hub.meiko.co.uk with SMTP id AA05478
  (5.65c/IDA-1.4.4 for mpi-profile@cs.utk.edu); Thu, 9 Dec 1993 15:44:02 GMT
Received: by tycho.co.uk (5.0/SMI-SVR4)
	id AA10406; Thu, 9 Dec 1993 15:42:18 +0000
Date: Thu, 9 Dec 1993 15:42:18 +0000
From: jim@meiko.co.uk (James Cownie)
Message-Id: <9312091542.AA10406@tycho.co.uk>
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: <jim@meiko.co.uk>
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 <mpi-profile@CS.UTK.EDU>); 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 <lusk@mcs.anl.gov>

| 
| 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: <owner-mpi-profile@CS.UTK.EDU>
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: <owner-mpi-profile@CS.UTK.EDU>
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 <bart@cs.wisc.edu>
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: <owner-mpi-profile@CS.UTK.EDU>
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 <bart@cs.wisc.edu>
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

