Current software development practices and tools are inadequate for the computing power that is now becoming available. Applications that will run on today?s and tomorrow?s most powerful supercomputers will help improve our world in a variety of fields, including the study of severe storms, epidemic disease, earthquakes, and new product development. These applications must fully exploit hundreds of thousands of compute cores, hundreds of terabytes of memory, and tens of thousands of disk drives. In the future, such systems may well combine many different types of specialized computing elements. The workshop on ?Software Development Environment for Science & Engineering Applications? will focus on the tools and practices needed to develop software for these incredibly complex supercomputers. It will also consider an integrated software development environment for science and engineering applications. Such an environment would allow researchers to build, edit, fix, and improve the performance of their software using more straightforward and graphically based tools than exist today.
The workshop on ?Software Development Environment for Science & Engineering Applications will focus on the set of software tools (editors, compilers, debuggers, optimization tools, etc.) needed to develop applications for petascale and beyond computers. It will also cover the numerical and communications libraries, programming languages, and software engineering practices needed by the scientists and engineers. The workshop will consider the feasibility of developing an integrated software development environment for science and engineering applications, similar in concept to the IDEs used in the commercial world. The workshop will help establish requirements for maximizing developer productivity. It will also address issues of application portability and maintenance in light of emerging architectural trends in high-performance computing.
Computational science is limited by the capabilities of its software. Codes typically do not use the computational resources as efficiently as possible; the adoption of new algorithms and techniques often takes years (and sometimes an entirely new project), and codes are rarely thoroughly tested and tuned. The result is wasted resources—both scarce high-end computer systems and even scarcer computational scientists. It doesn’t have to be this way. There are many good ideas for improving software, but these are mostly encapsulated in isolated tools that do not work well together (or even work well alone). As a result, these tools, whose development often represents a significant investment, are rarely adopted. In addition, the problems are so challenging that no one approach is likely to provide a comprehensive solution. Fortunately, a solution is possible – by building interoperable tools and providing several modes of operation, including command-line and graphical user interfaces, powerful tools can be sustainably developed and deployed that will revolutionize the process of building and tuning computational science codes. To achieve this, a focused, comprehensive approach is needed to address the tools needs of applications in a way that permits the composition of tools and the development of appropriate and efficient user interfaces. This grant supported a workshop that produced a report summarizing the results of two and a half days of intensive discussion among representatives of computational scientists (users), tool developers, commercial vendors, and supercomputing center directors. Working groups addressed the key issues; scenarios were developed to provide concrete examples of the challenges and opportunities. The role of community involvement to ensure that the parts work well together was discussed; it is noted that this need not require the definition of new software standards. Outstanding technical issues are summarized. The role of education, outreach and training in the adoption of these tools is critical and will require integration of education, outreach, and training with the development of the tools and interfaces. In particularly, it is essential that EOT be a constant part of the process, providing feedback on the effectiveness and usability of the tools. The very nature of this effort will require the integration of crosscutting issues. Finally, the essential issue of how a software institute should be managed to ensure that the software meets the application community’s needs is discussed. In the end, the evaluation of the success of an effort to provide better software tools is the impact on applications and the ability to use computation in science and engineering.