Sign up for our newsletter and get the latest HPC news and analysis.

Productivity study in HPC: language isn't the problem

There is an interesting article in the latest issue of the ACM Queue that you can read in full online without a subscription. The article summarizes the results of programmability studies done as part of Sun’s (failed) HPCS effort. It’s an interesting read — here is the hook that drew me in

These programmability studies began with a focus on programming languages, but the focus quickly shifted to other topics. Existing languages—notably Fortran, which is arguably still the primary language in HPC—proved remarkably adequate. Programming challenges stem mostly from other factors.

To illustrate that point the author starts off with a programming experiment

Our approach was to take existing HPC programs and have someone rewrite them in whatever way suited that individual, not bound by the constraints of any existing computer, compiler, or language. Rather, he was invited to write whatever seemed most expressive. We might not be able to compile or run these programs, but we could at least see what the writer wanted.

Almost immediately, we were struck by what we were seeing. Of course, the rewritten code was much more compact and readable than the original, but, surprisingly, the “ideal” programming language was basically Fortran….The main point, however, is less that every programmer would have ended up preferring Fortran and more that the problems with the original source code have more to do with reasons other than the limitations of existing programming languages. We look at some of these reasons here.

The author makes some interesting observations about the ways in which we program, and the ways in which what you measure can distort or obscure an underlying truth

The DARPA HPCS program also sponsored the development of new programming languages: Chapel from Cray, Fortress from Sun, and X10 from IBM. Proponents of those languages would show early on how rewriting familiar HPC benchmarks in the new languages could reduce source-code volume substantially—tenfold reductions were not surprising—but rewriting these benchmarks even in Fortran achieved similar source-code reductions and corresponding improvements in expressivity.

There is a lot more in the article, including studies of these rewrites on things like performance (single and multi-processor), complexity, verification, and so on. If you maintain code in HPC, it’s worth a read.

Resource Links: