Author :
Schaeffer, Jonathan ; Szafron, Duane ; Lobe, Greg ; Parsons, Ian
Author_Institution :
Dept. of Comput. Sci., Alberta Univ., Edmonton, Alta., Canada
Abstract :
Enterprise is a programming environment for designing, coding, debugging, testing, monitoring, profiling, and executing programs for distributed hardware. Developers using Enterprise do not deal with low-level programming details such as marshalling data, sending/receiving messages, and synchronization. Instead, they write their programs in C, augmented by new semantics that allow procedure calls to be executed in parallel. Enterprise automatically inserts the necessary code for communication and synchronization. However, Enterprise does not choose the type of parallelism to apply. The developer is often the best judge of how parallelism can be exploited in a particular application, so Enterprise lets the programmer draw a diagram of the parallelism 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. These assets correspond to techniques used in most large-grained parallel programs; pipelines, master/slave processes, divide-and-conquer, and so on,and the number and kinds of assets used determine the amount of parallelism.<>
Keywords :
distributed processing; parallel programming; programming environments; Enterprise; coding; debugging; distributed applications; divide-and-conquer; large-grained parallel programs; master/slave processes; monitoring; parallelism; pipelines; procedure calls; profiling; programming environment; testing; Asset management; Debugging; Hardware; Master-slave; Monitoring; Organizational aspects; Pipelines; Programming environments; Programming profession; Testing;