Multicore processors have become commonplace now, to the extent that even mobile devices incorporate them.
As a games developer, you need to know how to create code that efficiently uses the cores available if you want to really push the machine to deliver a great gameplay experience.
One simple workaround that developers sometimes use is to carve up the program’s logic and hive it off onto different cores. You might allocate the AI to a particular core, for example.
The problem with that approach is that this coarse-grained parallelism doesn’t scale well as the number of cores increases. It’s better to create code that can more finely distribute tasks across the cores, and synchronise them to avoid any conflicts.
Not all types of problem parallelise equally well, of course, but if you know how to optimally use a multicore architecture, it’s another tool for your toolbox you can pull out whenever it’s right for the job.
To help sharpen your parallel programming chops, Intel is running an international programming contest, called Accelerate Your Code. The competition challenges you to optimise an image processing application, which could be used to find patterns in an image. In the real world, an application like this might be used to find a lost tourist using satellite imagery.
The competition has simplified the task a bit, but there’s still plenty to get your teeth into. There is sample code available which provides a framework you can adapt.
You’ll need to tailor it to handle distortion in the image, and introduce parallelism to optimise performance. There’s a lot of scope in this project to develop your own algorithms and enhancements.
The great thing about the competition is that by taking part, you’ll have access to Intel’s automated cluster with Xeon PHI accelerators, offering 60 cores and 240 threads. This is the ultimate test of code scalability, and gives you a fantastic opportunity to use a highly parallel architecture.
In the future, the number of cores on the desktop and in mobile platforms is expected to increase to many times what we have now, so this project gives you an early opportunity to wrestle with the challenge of highly parallel programming, and to position yourself for new career opportunities. As the technology evolves, a track record in parallel programming will become increasingly important.
The competition is open to professional developers as well as students, many of whom are being encouraged to participate by their professors. The final assessment will be based on the accuracy of the output (although the judges do not require perfection), and the speed and scalability of the software. It goes without saying that there should be no parallel bugs in there.
One of the aims of the competition is to help everyone to learn, so some of the judging is based on the documentation of the submission, and social interaction on the forums. If you post your source code as open source at the end of the competition, you can get perfect marks for both documentation and social interaction.
To find out more and take part, visit the Intel Accelerate Your Code programming contest. Good luck!
• This blog post is written by Softtalkblog, and is sponsored by the Intel Developer Zone, which helps you to develop, market and sell software and apps for prominent platforms and emerging technologies powered by Intel Architecture.