Understanding the High-Performance-Computing Community: A Software Engineer's Perspective
read more
Citations
How do scientists develop and use scientific software
Troubling Trends in Scientific Software Use
Engineering the Software for Understanding Climate Change
A checklist for integrating student empirical studies with research and teaching goals
Amesos2 and Belos: Direct and iterative solvers for large sparse linear systems
References
Software Development Environments for Scientific and Engineering Software: A Series of Case Studies
Parallel Programmer Productivity: A Case Study of Novice Parallel Programmers
Software Project Management and Quality Engineering Practices for Complex, Coupled Multiphysics, Massively Parallel Computational Simulations: Lessons Learned From ASCI
The ASC-Alliance Projects: A Case Study of Large-Scale Parallel Scientific Code Development
Annual World Bank Conference on Development Economics 2004 : Accelerating Development
Related Papers (5)
Frequently Asked Questions (16)
Q2. What are the keys to successful interactions?
For SE researchers, the keys to successful interactions include a healthy sense of humility and the avoidance of assumptions that SE expertise applies equally in all contexts.
Q3. What languages were used to couple different modules?
The authors even saw several projects use dynamic languages such as Python to couple different modules written in a mix of Fortran, C, and C++.
Q4. What are some common uses of HPC systems?
Although HPC systems have many uses, a common application is to simulate physical phenomena such as earthquakes, global climate change, or nuclear reactions.
Q5. What are some examples of HPC frameworks?
Example HPC frameworks includePooma (Parallel Object-Oriented Methods and Applications), a novel C++ OO framework for writing parallel codes that hides the low-level details of parallelism, and CCA (Common Component Architecture), for implementing component-based HPC software.
Q6. What did they see in the reuse-in-the-small?
The authors saw extensive reuse-in-the-small, in the form of reusing externally developed libraries such as preconditioners, solvers, adaptive mesh refinement support, and parallel I/O libraries.
Q7. What was the significance of the HPCS program?
The HPCS program’s significance was its shift in emphasis from execution time to time-to-solution, which incorporates both development and execution time.
Q8. What did the scientists do to integrate the components of their multiphysics applications?
On multiphysics applications involving integration of multiple models maintained by independent groups, the scientists devoted much effort on software architecture for integrating these components, including using OO concepts.
Q9. What is the dominant model of parallel programming?
Although many parallel-programming models exist, the dominant model is MPI (messagepassing interface), a library where the programmer explicitly specifies all communication.
Q10. What is the common way to describe a code that’s executed many times?
A code that’s executed many times (for example, a physics simulation) will likely spend more time in development (to increase portability and performance) and amortize that time over many executions.
Q11. What did Darpa do to help improve productivity?
In addition, Darpa also funded researchers to develop productivity evaluation methods that measure scientific output more realistically than does simple processor utilization, the measure used by the Top500 list.
Q12. Why did they all express trepidation at the prospect of rewriting a code?
Because of the time they’ve already invested in their codes and their need for long-lived codes, they all expressed great trepidation at the prospect of rewriting a code in a new language.
Q13. What is the lesson for software engineers collaborating with scientists?
Software engineers collaborating with scientists should understand that the resistance to adoption of unfamiliar technologies is based on real experiences.
Q14. Why have OO-based languages such as C and Fortran been so poorly adopted?
One reason for the lack of widespread adoption might be that OO-based languages such as C++ have been evolving much more rapidly than C and Fortran in recent years and are therefore riskier choices.
Q15. Why are application scientists not interested in performing machine-specific performance tuning?
Application scientists aren’t interested in performing machine-specific performance tuning because they’ll lose the benefits of their efforts when they port the code to the next platform.
Q16. How many runs can you pound out in a week?
on a dedicated weekend, in a matter of hours you can pound out 10 or 20 different runs of enormous size and understand where the logic is going wrong.