The prominent success of high performance computing used in modeling scientific, engineering, and physical phenomena continually motivates the development of very ambitious applications. In most instances programming languages such as Fortran 77 and C have been used, but many of the most challenging applications are stretching the capabilities of these languages. Many scientific problems are full of physical and mathematical abstractions, yet these are often difficult to integrate into the programming process. Furthermore, as modern languages and high performance computers are introduced, there is a need to explore their effectiveness, usability, and performance in scientific programming.
We have investigated traditional and modern object-oriented paradigms in scientific computation. This work is in collaboration with the National Aeronautical and Space Administration High Performance Computing and Communication (HPCC) Earth and Space Sciences Project at Jet Propulsion Laboratory, California Institute of Technology. The simulation testbed application used in our research is based on Fortran 77 plasma particle-in-cell (PIC) skeleton programs associated with the Numerical Tokamak Turbulence Project---an HPCC research effort to model and understand the transport of particles and energy in a tokamak fusion energy device. The plasma PIC model follows the trajectories of millions of particles in their self-consistent electromagnetic fields, both external and self-generated. Since the computation required is extremely large, both in terms of the field sizes and number of particles, the only alternative is to use massively parallel computers. While a variety of institutions are involved in many aspects of this project, our efforts concentrate on the problems of evaluating new languages, machines, and programming techniques applicable to the next generation of advanced simulation programs.
Our contributions include the design and implementation of object-oriented plasma simulation codes using language-free abstractions, allowing analysis and comparison of language paradigms in Fortran 77, Fortran 90, and C++. This includes developing a methodology for object-oriented programming in Fortran 90, uncovering the new potential of the modern features provided by this language. Since advanced codes on parallel machines require dynamic load balancing, we have introduced an object-oriented instrumentation technique which monitors objects continuously and implicitly. This approach simplifies the introduction of load balancing extensions into object-oriented programs while preserving class hierarchies. Additional paradigm-related contributions study the implications of abstraction in scientific programming, with machine and compiler performance comparisons between Fortran 77, Fortran 90, and C++ on scalar workstations and high performance distributed memory parallel computers. This work advances our understanding of emerging language standards and new paradigms critical for modern scientific programming.