Innovative software tools optimise coding for parallel-processing
Early personal computers and handheld devices used a single processor chip, or “brain”. These are inefficient for large computations because of processor bottlenecks. A far more powerful alternative is parallel computing. This means to divide large calculations into smaller chunks, spread over multiple chips. The idea has been around since the dawn of computing, but for a long time was limited to extreme-performance machines. As the cost of extra processors has reduced, in recent years many lower-level computers, game consoles and other devices have started including multiple processors. The extra processors were at first specialised for particular functions, but now generic processors can be programmed for most tasks.
The optimisation problem
The problem is the difficulty of writing computer code that assigns computations to particular processors. Software engineers can do it for up to four processors, although this takes considerable time. As the number of processors increases, optimising the allocation becomes increasingly difficult. For this reason, current software rarely utilises a device’s full processing capacity. Software engineers must consider many factors, including how many processors to use, which parts of an application should be run on which processor, and whether the processors should be specialised. The EU-funded PHANTOM project helped simplify matters. “We wanted to automate the process of deciding how to organise a program to run on multiple processors, in a way that would meet certain objectives,” says Scott Hansen, project coordinator. “For example, some systems must always respond within a specific time frame, while others must minimise energy usage. Still others need to maximise processor usage to solve a problem as quickly as possible.” The project team examined the possibility of creating tools to assist software engineers and programmers in finding the best way to address these sometimes conflicting objectives.
New tools
The team successfully developed an innovative set of tools. These include very sophisticated algorithms, which automate the complex decision-making process necessary to achieve parallel processing optimisation for the purpose intended. The team also developed advanced learning capabilities that monitor applications as they are running and dynamically optimise available processors based on real-time usage. Creating such tools would have been beyond the capacity of any single consortium partner. “The collaboration under the EU’s H2020 programme made that possible,” says Hansen. “We also had very strong industrial user partners who ensured the tools being developed would make a huge difference for their engineers, and therefore engineers across Europe in many industries.” PHANTOM’s industrial partners validated the new tools by using them to develop industrial applications on complex multiprocessor systems. The tools are publicly available as open-source versions. These are easy to install and allow engineers to evaluate the tools. The project’s commercial partners also offer paid versions, combined with consulting and customisation services. Current programming methods for multiple processors usually result in underutilised capacity. Achieving optimisation is beyond the abilities of all but the most highly specialised and expert engineers. Furthermore, the costs of training staff to that level are beyond the means of most organisations. With the PHANTOM project’s new tools, software engineers will now be able to write applications that achieve full optimisation. This will increase productivity, lower costs and shorten application development times.
Keywords
PHANTOM, software, multiple processor, software engineer, coding, parallel computing, parallel processing