http://web.cs.ualberta.ca/~enter/ Enterprise <title_line>template-based parallel programming environment <abstract> Enterprise is a programming environment for designing, coding, debugging, testing, monitoring, profiling and executing 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 synchronization, allowing the rapid construction of distributed programs. This helps bridge the complexity gap between distributed and sequential software. Enterprise programs are written in a sequential programming 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 synchronization. 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 parallelism. 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 Enterprise, the user specifies the desired technique at a high level by manipulating icons using the graphical user interface. The user-written code that implements the parallel procedure is independent of the parallelization technique selected (although the code generated by Enterprise certainly 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. <contact>enter@cs.ualberta.ca <category>ppt-env <keywords>visual programming; parallel programming environment </urc>