Silexica: Multicore Software Automation

German startup analyzes numbers and types of cores, compiles software.


Multicore programming has a long and troubled history, and it has become much worse as the computing world moves increasingly toward heterogeneous multicore architectures. While it’s easy enough to map out the hardware’s power/performance characteristics, it is much harder to make the software take advantage of the appropriate cores.

Enter Silexa, which began as a research project in 2008 at RWTH Aachen University’s Institute for Communication Technologies and Embedded Systems to create an algorithm for load balancing. By 2014, when Silexica opened it doors, it had developed tools to determine how much of an application could be parallelized, the right number of cores, and where the trouble spots will be when processing is distributed. Last year it revealed that Huawei was its first commercial customer.

“The problem that needs to be solved is how to distribute all of this correctly,” said Maximilian Odendahl, Silexica’s CEO. “The hardware is abstracted away, so you can add cores or explore how many or what types of cores you want to use. You can do heterogeneous performance estimation and bottleneck analysis. The main goal is productivity. We have a multicore compiler that allows you decide what to put where. It’s where do you want to communicate, not what goes where.”

Odendahl pointed to ARM’s big.LITTLE architecture, which combines different cores to minimize power consumption. He said that some operations on the smaller core run faster than on the larger core, but it’s difficult to determine that ahead of time without deeper analysis.

“You can optimize this for energy efficiency, as well,” he said. “This also works for 2.5D because the hardware is abstracted away. It could be a bus on a chip or even connected with Ethernet. And in the IoT, you can look at whether computing should be done at an end node or in a cloud. It’s just different latencies.”

Silexica breaks its product flow into four areas—code partitioning, parallel task mapping and software distribution, native target code generation and platform selection. The company was initially funded by the German EXIST program.