Parallel Programming Paradigms

The purpose of this project is to improve both the development process and the performance of large-scale scientific applications by investigating and developing parallel programming models. LLNL simulation scientists now have access to machines with up to 9,000 processors, and this number will grow with future ASC machines. The programming models now in use were developed for machines of at most a few hundred processors. This larger scale of computation presents challenges both in code development, where programmers must expose adequate parallelism, and in performance analysis and tuning, where programmers must ensure that their codes keep the processors busy for most of the execution time. An ideal programming model is easy to apply in new and existing codes, helps developers exploit the performance available on the underlying hardware, and requires little or no code modification to obtain good performance as codes are moved to new machines. This project will analyze both the common existing models, such as MPI, explicit threading, and OpenMP, and new models such as software component architectures and techniques being developed in academia.