|Widespread efficient use of high performance computing is possible only when sufficient software infrastructure and tools are available to enable users to harness transparently the capabilities of these systems. Issues such as languages, operating systems, algorithms, compilers and libraries, portability and scalability of software, and domain specific tools must all be addressed to ensure that users are able to use these systems effectively.|
Languages and libraries for scalable high performance computing have seen the development of pC++, a data parallel language, and ZPL, an array-based programming language for scientific computations. Compiler development has been aided by new techniques for conventional programming languages for parallel computers that deliver substantial performance improvements on small scale shared memory multiprocessors. Critical to the continued and widespread use of scalable parallel processors is the ability to generate efficient parallel programs from sequential code. There are several approaches to this problem. In one, a parallelizer called SUIF uses whole program analysis to achieve that goal. Another employs interprocedural compile time parallelization analysis on programming languages such as FORTRAN, C, and C++ to obtain significant speed-ups. A third effort has the goal of advancing the art of programming language design and implementation, and the art of systems building. Library development during the past year has seen the first draft specification of the High Performance C++ Library by the HPC Forum, and SCPLib, a portable programming library for complex irregular problems.
Current and future scalable parallel computing can only succeed if there are sufficient tools and infrastructure to enable their efficient utilization. Tools such as Paradyne or PABLO that monitor the behavior of application code; the D-System project that supports development tools and debugging aids for data parallel programs; a tool (PGRT) for instrumentation and visualization of realtime embedded systems; and new file system policies that use the results of input/output characterization tools -- all contribute to increased acceptance and efficient use of parallel high performance computing.
Operating systems development is critical to the efficient use of scalable heterogeneous systems, and several are under development. An improved microkernel based operating system was adopted for the Scalable Realtime Operating System (SRTOS) and for the Hiper-D program. The exokernel is a new paradigm in the relationship between application programs and operating systems. The Synthetix OS creates highly modular operating systems through incremental specialization, and an OS technique realized through SPIN allows application code to be loaded into the kernel at runtime, thereby decreasing overhead.
The Scalable I/O Initiative (SIO) was created to address the balance that should exist between the performance demanded by today's applications and the I/O requirements to support these applications. Analyzing several I/O-intensive applications using tools such as PABLO, the SIO has achieved a ten-fold performance gain in applications codes by matching file operations to the application's I/O patterns.
|The Time Tunnel metaphor in PABLO allows the user to see a graphical event trace of a parallel code. Processor event time lines are mapped in a circle, with each color representing a certain behavior.|