P++ is an innovative user environment that simplifies the development of efficient, parallel programs for large scale scientific applications. It permits portability across the widest variety of computer architectures. The target machines are distributed memory computers with different types of node architectures (scalar, vector, or superscalar), but the requirements of shared memory computers are also addressed. Unfortunately, robust, architecture-independent and efficient software environments have been notable to date primarily by their absence. Such a simplifying environment for the development of software is sorely needed to take advantage of the current and future developments in advanced computational hardware. The P++ environment does this using a standard language, C++, with absolutely no modification of the compiler. For parallel communication it employs existing widely portable communications libraries. Such an environment allows existing C++ language compilers to be used to develop software in the preferred serial environment, and such software to be efficiently run, unchanged, in all target environments.The explicit goal of P++ is the support of advanced computational methods for the solution of large-scale computational problems. For efficiency reasons and also for simplification, the use of P++ is restricted to the large class of structured grid methods for partial differential equations. Applications using P++ can selectively exploit the added degree of freedom presented by parallel processing by use of an optimization module within the array language interface. A collection of defaults ensures deterministic behavior. In this way, complicated optimization issues of parallel execution may be easily introduced by the setting of switches within the user interface, which are then interpreted at runtime. Through the use of Virtual Shared Memory, restricted to array variables (Virtual Shared Grids), issues such as partitioning become matters of optimization, and not criteria for correct execution. Due to the restriction and optimization for structured grids, we expect the same parallel performance as for codes based on the traditionally used explicit Message Passing model. To speed the development of the P++ environment, we use an efficient, commercially available array language library, M++, developed in C++; the M++ array interface is also used as the P++ array interface.Recognizing that the acceptance of advanced parallel computers depends on their use by scientists, and not parallel researchers, it is hoped that P++ will simplify access to these parallel machines. While significantly simplifying our own research on parallel self adaptive local refinement methods, it is hoped that P++ will more generally simplify the introduction of structured grid methods for large scale scientific computing onto advanced parallel machines.
Read full abstract