One approach to performance improvements for computational science problems is the use of alternative computing engines, such as field programmable gate arrays and graphics processing units, to execute portions of an application. We refer to such systems as architecturally diverse computing systems. We are attacking the challenge of effective application development for architecturally diverse computing systems by making significant progress in two essential areas: 1) compilers and 2) performance monitors and debuggers. First, we are investigating compilation techniques for mapping partitioned applications onto the disparate computational resources of a diverse system and supporting the required communications between those resources. This investigation includes the automated support of legacy APIs for commonly used libraries. Second, we are building a performance monitoring and debugging environment for diverse systems that has the following properties: it is non-intrusive with respect to the application being monitored and it supports data collection concerning rare events. The result of this research will be a significantly increased ability to design, develop, and successfully deploy a wide set of general-purpose applications on architecturally diverse computational platforms.
Improved computational capabilities will have a dramatic impact on every scientific discipline that utilizes computational science techniques. Computational science has already had a significant, broad impact on the natural sciences, national defense, weather forecasting, and a host of other areas. This research is aimed explicitly at improving the ability of computational scientists to accomplish their goals.