Software development costs for parallel programs can be considerably higher than for sequential software. There are a variety of reasons for this, but two of the major ones are the programming model and the execution environment. Most parallel programming models are very different from sequential ones, so there is strong resistance to change. In most parallel programming systems, the user must be aware of the target hardware configuration and must tailor programs to match the execution environment. Ideally, programming a parallel application should be no more difficult than programming a sequential one.Enterprise is a programming environment for designing, coding, debugging, testing, monitoring, profiling and executing parallel programs in a distributed hardware environment. The two major goals of the Enterprise project are to provide an easy-to-use, familiar programming model for writing parallel applications (the user's interface to the system) and to remove considerations of the target hardware from the user (the system's interface to the hardware). This paper discusses the current status and the future directions of the project. Features of particular note are sequential C for programming; an analogical model for representing the parallelism; transparent access to a variety of underlying communications subsystems; and visual tools for supporting program design, program animation, forced replay and message level debugging.By providing a familiar programming model, utilizing a uniform graphical interface and abstracting away all considerations of the hardware, Enterprise can be used to reduce the costs of parallel software development.
['Duane Szafron', 'Jonathan Schaeffer', 'Paul Iglinski', 'Ian Parsons', 'Ronald Kornelsen', 'Chris Morrow']
Enterprise: current status and future directions