15 June 2012

Supercomputer Coding


The sorts of job that demand supercomputer levels of performance are typically very specialist. The most mainstream applications are 3D modeling 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. For example, you should avoid having two routines running at the same time try to make use of the some area of memory, If one overwrites the data stored by the other, it can lead to unpredictable behavior.

A more subtle problem is making efficient use of the resources on hand. You may hove 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 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 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 analyse your routines to catch instances where a process could be accelerated by being broken up into concurrent tasks. The new Cluster Studio provides similar tools for developers targeting clusters.

0 comments:

Post a Comment

Drop in Your Comments, Problems, Suggestions, Praise, Complains or just anything.

We are always excited to hear from you.

Don't post rude or nasty comments. Ethnic slurs, personal insults and abuses are rather uncool. Criticize, but know where to draw the line.

 
Related Posts Plugin for WordPress, Blogger...