The sorts of job that demand supercomputer levels of performance are typically very specialist.
The most mainstream applications are 3D modelling and rendering, but even these are niche interests. In most cases, supercomputers are used to solve unique research problems – which means that you’ll have to write the code yourself.
This needn’t be a daunting prospect. Creating a supercomputer application isn’t something we’d recommend for novices, but if you’re in need of supercomputing resources, odds are you’re already au fait with software development. And whether you’re using CPU or GPU silicon to perform your calculations, you can usually build on mainstream development practices.
There are, however, caveats. For a start, all the dangers associated with trying to create any multithreaded application apply. You must be careful, for example, not to create a “race condition”, whereby two routines running at the same time try to make use of the same area of memory. If one overwrites the data stored by the other, it can lead to corruption and unpredictable behaviour.
A more subtle problem is making efficient use of the resources on hand. You may have 100 computing cores available, but it’s very unlikely that your program will divide cleanly into 100 independent workloads. More likely, it will follow a “critical path” – a series of calculations where each step depends on the outcome of the previous one.
Formulating such problems in such a way as to make full use of the available processing power is one of the greatest challenges in supercomputing. Do this badly and you can cripple the effective performance of your supercomputer.
As such, citing supercomputer performance in terms of gigaflops can be misleading, as the amount of work done depends greatly on the efficiency of the application: such figures should be considered only as general guides.
Happily, tools exist to make effective parallelisation easier – and one major one comes from the manufacturer of Knights Corner. Intel Parallel Studio 2011 is a plugin for Microsoft Visual Studio (also available in Linux-compatible standalone C++ and Fortran editions), which lets you debug your code in a parallelised testing environment.
It can also automatically analyse your routines to catch instances where one thread is wasting time waiting for another, or where a process could be accelerated by being broken up into concurrent tasks. The new Cluster Studio provides similar tools for developers targeting clusters.