Newsgroups: comp.parallel
From: jonathan@cs.ualberta.ca (Jonathan Schaeffer)
Subject: SOFTWARE: Enterprise Parallel Programming Environment v2.4
Organization: Computing Science, U of Alberta, Edmonton, Canada
Date: 29 May 1995 15:42:55 GMT
Message-ID: <3qcq1v$250@usenet.srv.cis.pitt.edu>

The Enterprise Parallel Programming Environment, v2.4,
is available for ftp access (http://web.cs.ualberta.ca/~enter).
A description of this tool can be found in IEEE Parallel and
Distributed Technology Systems and Applications, vol. 1, no. 3,
pp. 85-96, 1993.

SUMMARY OF CHANGES FROM V2.3
============================

1) New compiler support; faster compilation, better diagnostic
   messages and code generation for event debugging.
2) All assets are fully implemented.
3) Parallel debugger with breakpoint facility at the event and source
   code level.
4) Controlled re-execution of a program
5) Sequential execution of parallel programs

SUMMARY
=======

     Enterprise is a programming environment for  designing,
coding,  debugging,  testing, monitoring, profiling and exe-
cuting  programs  in  a  distributed  hardware  environment.
Enterprise  code  looks  like familiar sequential code since
the parallelism is expressed graphically and is  independent
of  the  code.   The  system  automatically inserts the code
necessary to correctly handle communication and synchroniza-
tion,  allowing  the  rapid construction of distributed pro-
grams.  This helps bridge the complexity gap between distri-
buted and sequential software.

     Enterprise programs are written in  a  sequential  pro-
gramming language (C) that is augmented by new semantics for
procedure calls that allows them to be executed in parallel.
Users do not deal with low-level programming details such as
marshalling data, sending/receiving messages and  synchroni-
zation.   Instead,  Enterprise  inserts all of the necessary
communication protocols automatically into the user's  code.
Since  the  user  is often the best judge of how parallelism
can be exploited in  a  particular  application,  Enterprise
does not automatically parallize a program.  It provides the
user with a high-level mechanism for specifying  the  paral-
lelism.

     Most large-grained parallel  programs  make  use  of  a
small  number  of  regular  techniques,  such  as pipelines,
master/slave processes, divide and conquer, etc.  In  Enter-
prise,  the  user  specifies the desired technique at a high
level by manipulating icons using the graphical user  inter-
face.   The  user-written  code that implements the parallel
procedure is independent of  the  parallelization  technique
selected  (although  the  code  generated by Enterprise cer-
tainly is not).  The de-coupling of the procedure that is to
be  parallelized  and  the  parallelization technique allows
applications to be easily adapted to a  varying  number  and
type  of  available processors without changing user-written
code. It also provides a simple mechanism  for  experimenta-
tion  and  evaluation  of how the various techniques fare on
the user's particular application.

     Programmers draw a diagram of the parallelism in  their
applications  using  a  familiar  analogy that is inherently
parallel: a  business  organization,  or  enterprise,  which
divides  large tasks into smaller tasks and allocates assets
to perform those tasks. The number and kinds of assets  used
determine the amount of parallelism. For example, an indivi-
dual performs a task sequentially, but four individuals  can
perform  four  similar  tasks concurrently. A department can
subdivide a task among components that can then perform  the
subtasks  concurrently.  An  assembly or processing line can
start a second task as soon as the first component  of  that
line has passed the first task to the second component.

     In most parallel/distributed computing tools, the  user
is  required to draw communication graphs.  The user usually
draws a graph connecting nodes (processes) by arcs (communi-
cation  paths).  In  Enterprise,  a programmer constructs an
organization chart from the top down,  expanding  assets  to
explore   the   application's  hierarchical  structure,  and
transforming assets from one type to another to specify  how
they communicate with their neighbors.  Based on the organi-
zation chart, Enterprise  inserts  parallel  constructs  and
communications  protocols  into  the code, compiles the rou-
tines, assigns  processes  to  processors,  establishes  the
necessary  connections, launches the processes, executes the
program, and (when desired) logs events for performance mon-
itoring  and  debugging.  Because the (sequential) code that
calls the parallel procedures is independent of  those  pro-
cedures,  programmers  can  adapt  applications  to  varying
numbers and types of processors without changing  the  code.
Thus,  they can experiment with different kinds of parallel-
ism, construct recurring parallel  structures  more  easily,
generate  code  more  quickly, and reduce errors. Enterprise
does not support arbitrarily structured  parallel  programs,
but for many applications it relieves users from the tedious
details of distributed communication, letting  them  concen-
trate on algorithm development.

HIGHLIGHTS
==========

* C language with no extensions or library calls
* Parallelism is expressed graphically and is decoupled from
  user code
* Simple to use interface
* Program animation

ACCESS
======

Version 2.4 is available via anonymous ftp from
        ftp.cs.ualberta.ca:pub/Enterprise
or from the World Wide Web
	http://web.cs.ualberta.ca/~enter

Files available include:
        00-README
	UserManualTR95-02.ps.Z     User manual
        Enterprise2.4.2-RS6K.tar.Z RS6000 binaries
        Enterprise2.4.2-SUN4.tar.Z Sun 4 binaries
        Papers/*                   Enterprise papers

This is an alpha release.  This version only includes Sun 4
and RS6000 binaries.  It compiles code to use the PVM
communications package (ftp instructions contained in the
README).  The user interface requires Smalltalk (ParcPlace
Visualworks 2.0).

INFORMATION
===========

For more information, send mail to enter@cs.ualberta.ca.

