"Multicore architectures are becoming more and more important, even in netbooks and mobile phones," says Andreas Zeller, professor of software engineering. "While devices are shrinking, they are also optimised to use as little energy as possible, which makes multicore even more necessary." Sambamba automatically converts conventionally programmed code into code that can be executed in parallel. "The aim is to find several parallelization options for every individual function in the examined application, and then select the best one during runtime," says Sebastian Hack, professor of programming at Saarland University.
Sambamba consists of two modules: a program analysis tool that examines code for its parallelisation potential before runtime; and a second module that can use these results and optimise the code with additional information obtained at runtime.
"Even if we were to construct a kind of translator application that has mastered every single technique ever devised and tested, we would still be lacking the type of cost model that can determine the best method in each case automatically," said Prof Hack. The integrative technique tries to gather as much information as possible in advance, then collects additional information during the runtime. In this way, says the team, additional parallelisation opportunities can be exposed and the program can 'learn' which method works best.
Sambamba is said to work well for programs written in languages like C++ that are popular, but hard to analyse. But the more complex the program, the more important the analysis at runtime becomes. "Sambamba can parallelise code entirely automatically," Prof Zeller concluded. "But, in some cases, developers might want to verify different options, or choose one themselves. So our system can also communicate with the user and make suggestions on how to parallelise the code."