Our supercomputing community is the world of 1000X. That is how we introduce ourselves – “think thousands of times more powerful than your laptop.” We proudly proclaim our thousands of cores, nodes, kilowatts, gigabytes, cables, and so on.
We even measure our progress by 1000X: the terascale barrier (“smashed” according to the tone of the accompanying press release) then a 1000X to the petascale barrier (“shattered” as the marketing machine informed us) and now chasing 1000X to the exascale barrier (which will be “cataclysmically destroyed” I presume).
These barriers are fun, but nonsense. Obviously 1.01 petaflops of computing power is not disruptively more capable than 0.99 petaflops, nor is it qualitatively more technically challenging. So perhaps the better description is “crept past the terascale marker” and “sauntered by the petascale signpost?”
As a community we have, for several decades now, developed technologies and deployed systems that have grown through the real challenges identified for each 1000X increment. And we have done this so effectively that each “barrier” is very soft by the time we come to deploy systems of that size. That doesn’t undermine the technical challenges involved in each case, nor the efforts of those who have mastered those challenges. But they have mostly been solved by aggressive evolution incited by the occasional disruptive kick in the behind.
Even though we use 1000X as our badge of meaningful advance, we can be very narrow in how we apply that across the breadth of our empire. We mostly tie it to speed or size of the machines – a thousand times faster or bigger. We are starting to grow group behavior for some other uses, for example, 1000X more power efficient. But we are still focusing on the machines.
Performance is fundamental to the value proposition of high performance computing, whether 10X or 1000X. And even in the case of 1000X performance, there is much more we can explore than we do now. The obvious opportunity is to recognize that such performance is most effectively obtained not from hardware alone, but also from innovation in algorithms and software implementation.
I regularly write on this topic at my blog and speak on this topic at conferences and private events. But at one recent IDC HPC User Forum the conversation turned to one of my other favorite themes on what we can do better.
There is much more to our community that we should look at for step change, innovation and leadership than purely performance. Why do we not target the same 1000X in other areas? Think of the benefits of supercomputing, at any scale, being a thousand-fold easier to use. Not benefits to the existing hardcore tweakers of MPI, since these folks don’t need (or even desire?) easy to use. They need performance and the flexibility of direct access to the capabilities.
What about the benefits to everyone else? And I said users. Not programmers. Not all users of HPC are programmers (a working assumption that supercomputer centers often default to). Many users of HPC just run applications. Someone else has done the programming for them, either in-house development teams or codes from commercial providers or other research groups, etc.
How different is our ease-of-use experience with other computing technology? Think of your laptop for office tasks; your tablet computer for consuming Web and media content; and your smartphone for processing emails. Compare those user experiences with HPC.
We take something with a thousand times the compute power and make it harder – even arcane – to use! A significant portion of the computer power on those consumer devices is applied to the user interaction experience. Surely, with a few spare tens of teraflops to play with – only a few percent of our petascale supercomputers – we can come up with a more human-friendly interaction than batch scripts. No, it won’t be more efficient. Tough!
Our community has chased efficiency in utilization of the compute resource arguably way beyond its cost-benefit pay-off and into the realm of limiting the potential of the systems/services for flexibility in use cases and attractiveness to new users.
And that brings me to another 1000X: the growth of HPC to a thousand times more users. Pick your favorite label of the year: personal supercomputing (possibly self-contradictory), missing middle (who wants to be someone else’s middle?), HPC for the masses (are we talking revolutions?), democratization of HPC (in my view the worst label of the lot – HPC shouldn’t be worrying about democracy or not), and so on. This user growth is how the technology, or rather, its core proposition, can benefit society and the economy with much more immediate, widespread and direct impact.
Driving the 500 fastest supercomputers in the world to a thousand times their performance does deliver value to the economy and society. Not just through the computing technology advances they inspire and require, but especially through the scientific, medical and engineering advances their use enables. But each new group of engineers and scientists that are able to exploit effective modeling and simulation in their research and design can invigorate their contribution to the economy.
Multiply these individual effects by 1000X and we might see light shining into the knowledge economy that is the dream of politicians the world over. Creating and sustaining a high-tech economy doesn’t happen by a handful of leadership supercomputers used by the few. It happens by doing that and also enabling 1000X more companies to use HPC techniques. Both upward and outward are needed.
Our existing HPC community has to play its role in this. We cannot just focus on driving the fastest machines a thousand times faster. Critically, we have to give equal peer recognition to those who focus on driving the use of the technology a thousand times broader and a thousand times easier to use.