The importance of software performance engineering
It's time to prioritize software performance engineering, and the Computing Research Association offers four recommendations for proceeding.
A field whose time has come (again)
In the mid-20th century, when “computer” took its modern machine-based meaning, software performance engineering was a big deal. For example, the Apollo 11 missions used guidance computers with 4KB of RAM and 32KB hard disks. Getting astronauts to the moon and back under those constraints required serious brilliance from the engineers at NASA.
Then, Moore’s Law kicked in.
For more than fifty years, software developers enjoyed “free” performance gains, thanks to the chip-makers.
But no more!
Since 2018 or so, developers have had to work for performance gains, which no longer come for free from the chip-makers. The paradigm shift was heralded by a 2020 article in Science, “There’s plenty of room at the Top: What will drive computer performance after Moore’s Law?” The article explains that, of all the ways to improve application performance in a post-Moore world, three stand out: software, algorithms, and hardware architecture.
All three areas are important, but software performance engineering (SPE) — optimizing code to run faster or use fewer resources — is by far the least inexpensive and most accessible.
It’s time to reprioritize SPE!
More accessible than algorithms and hardware architecture, but still hard
The Computing Research Association (CRA) is now championing the cause of SPE, which featured prominently in its just-published Quadrennial Papers. The association published “Setting a course for post-Moore software performance” as one of six white papers on computing-research areas of national importance.
The article opens with a call to action:
With Moore's Law having ended, the U.S. must pivot from relying on hardware improvements to investing heavily in SPE through research, education, and workforce development to maintain its technological edge, especially since few software engineers currently possess these critical skills.
As a citizen of America and the world, I see this call as both a national and global concern. It’s time for software developers to focus on the difficult skill of making the most of the resources that their users and environments have to offer. And that, in a nutshell, is why I’m here coauthoring this blog. As director of outreach for the NSF-funded Fastcode open-source ecosystem, it’s my job to help connect the good people who are focusing on SPE, and to make their work more accessible to non-experts. We all want to advance SPE as a field that makes it easier for everyone to write fast code.
The CRA white paper is four short pages and well worth reading. The authors highlight the need to invest in educating students in SPE, and they close with the following recommendations:
Promote research into SPE.
Invest in software-productivity tools for performance.
Pursue research into efficient software for heterogeneous systems.
Educate and train the IT workforce.
A few months ago, I interviewed 60 people actively focused on SPE, and the themes of those conversations resonate with the CRA recommendations. You can read my summary report here. One theme that especially sticks with me is that SPE is hard to encapsulate. Real-life SPE typically involves detective work in the face of incomplete information about a large program that is tightly constrained by both resources and compatibility with legacy systems. How can we better incorporate those elements into CS education?
Fastcode is dedicated to all of SPE
Techniques of SPE include parallelism, vectorization, caching, algorithms, data structuring, compiler optimization, and more.
Tools of SPE include high-resolution timers, performance profilers, memory analyzers, scalability analyzers, race detectors, and more.
Theoretical foundations of SPE include task-parallel scheduling, work/span analysis, reuse distance, cache-oblivious algorithms, data structures, and more.
Let’s make SPE easier for everyone
What do you think is interesting right now about SPE? Why does it matter? If you have an idea for an SPE story, please let me know.