Encourage software development for the advancement of ER missions. Extensive software development must be encouraged to take advantage of current and new opportunities for all of ER computational sciences. The functionality and performance of application codes can be directly impacted by software development efforts within other areas of ER. Large applications, as discussed above, have both long-term and short-term requirements that pose significant managerial problems. These applications represent many man-years of development and cannot be easily re-engineered for MPP systems, unless good software development practices are followed. It is nearly impossible to simply port a PVP application to an MPP and have it work efficiently.
New or continued software development efforts should include mechanisms for the redesign of applications to allow for architectural changes. These efforts should also be done in cooperation with computer scientists. Without the proper computer science in the design and implementation of software applications, they become difficult to maintain and change. NERSC has neither the funding or the mandate to take on these tasks for all development efforts, but the facility and staff should serve as a focal point or facilitator in these activities and where appropriate as a partner.
Finally, the utilities (compilers, debuggers, performance analysis tools, visualization tools, mathematical and scientific libraries, data management systems, etc.) and operating systems on the computational resources need to be robust and full featured. The user interface to these utilities must also be intuitive and easy to use to minimize the learning curve and get the most from their utilization. This is especially important with respect to these tools on the MPP system.