Imagine for a second the following:
You are given access to one of the fastest supercomputers on Earth, if not the Universe! You are given a desk in an institute in the middle of pretty much nowhere, you are granted with username
and password and you might just log in into the vast darkness that is composed out of the hundreds and hundreds of computing nodes of the grant and beautiful Juqueen machine at the Supercomputing Centre in Juelich, Germany.
Will you use your new superpowers wisely? Will you make the world a better place and guide humankind to a braver and brighter future…?
You know what they say: “A computer lets you make more mistakes faster than any invention in human history – with the possible exceptions of handguns and tequila.”
So I guess, if you don’t wanna blow it completely you better know where your towel is!
But believe it or not that possibility has been given to me — a theoretical physicist with barely any real
background in computer science, mediocre programming skills — simply someone who doesn’t fully understand
what he is doing most of the time anyway… His story I am about to tell you today!
They call it PRACE Summer of HPC, although there is no real point calling that lukewarm, rainy weather here in
Germany “summer”. So there I was, standing in the rain with my good old thinkpad and eight precious weeks on
my hands to do something great (or so I hoped…). I was given a ten thousand line C++ code with the task
“to make it run faster”. This pretty much seems to be the essence of the whole field anyway…
“No sooner said than done!” — I thought and started working. The days went by, I made some progress and the
one thing I really started to understand is that supercomputers are an awful lot like racing cars —
they are fast, big and beautiful, there maintenance alone cost a million dollars a year and if you own one, people might
think you have to compensate for something not quite as big…
But the most important similarity is the feeling you are getting when you actually sit inside it and drive. When you tenderly caress the accelerator and get it up to speed. This heighten sensation of living life to the fullest, being up there with the gods, thrilled of speed, but nevertheless completely sharp-minded.
The enjoyment when finally after two days of intricate tweaking you get to run the code on the supercomputer and it is just that little bit faster. The tension you are feeling when you are sitting there interactively on a node, compiling your code and hitting ‘enter’ to start the executable. Will it run? Or did I break it? Is it faster? Or don’t I see any difference? And then the moment when it ran, and ran fast: Did it still produce the right output or did I mess it up all together? This permanent state between heavenly joys and deadly sorrows…
Being trained as a physicist I know a thing or two about solving problems. This is sort of what you have to do all day long during Uni when you study physics. But when I first started programming I learnt that it is not enough just to “solve” a problem. You also have to be able to give a description as of how to arrive at the solution precisely. To give an outline, an algorithm if you will, composed out of elementary steps.
I think this is pretty much what Jeannette Wing means when she talks about “computational thinking” (and if you haven’t yet you should totally check out what she has to say).
But I claim “high performance computational thinking” goes yet beyond that. Here it is not enough to write code that is maintainable, beautiful and works. In HPC it also has to be fast. And for that to happen, you will have to know your resources. You really have to understand your underlying hardware and get dirty by looking at assembly code and writing code in intrinsics to get to the “bare metal”
(more about that next time).
So here is what HPC taught me: it is not enough to solve the problem, you also have to wisely utilise
very single bit of the facilities, tools, resources and power that has been given to you …until you hit
the point of diminishing returns, lean back and just enjoy your colleague swearing two desks further down the hall.
Let me know what you think about HPC and if you feel the need for speed, too!