Multicore-Prozessoren sind nichts Neues, doch in vielen Fällen können Entwickler nicht die Leistung nutzen, die diese Prozessoren eigentlich bieten. Mit SLX von Silexica kann sich das ändern, denn die lizenzierbare Tool-Suite hilft, Software für Mehrkernsysteme zu optimieren.
Silexica versucht zwei grundlegende Probleme zu lösen: Sequenziellen Code für eine parallele Ausführung zu optimieren und die optimale Hardware für die Software zu finden. Gerade die Programmierung von heterogenen Supercomputern stellt aus der Sicht von Maximilian Odendahl, CEO von Silexica, ein Problem dar, das gelöst werden muss, um Entwicklungen wie 5G, AR/VR oder selbstfahrende Autos sinnvoll realisieren zu können. Aus seiner Sicht haben all diese Applikationen einen Punkt gemeinsam: »Sie brauchen all die Rechenleistung, die sie bekommen können«, so Odendahl.
Als Rechenknechte gibt es eine Vielzahl von Prozessoren, wie GPUs, CPUs, ARM, RISC-V, eine Unzahl von AI-Chips (AI: Artificial Intelligence) und FPGAs. Diese können sowohl auf IC- als auch auf Systemebene beliebig kombiniert werden, um so die Rechenleistung für komplexe Anwendungen zu erreichen. Aber diese Kombination stellt auch eine Herausforderung für die Programmierer da.
In der Vergangenheit hatten die Programmierer noch ein ziemlich einfaches Leben, denn sie mussten eine Anwendung programmieren, die auf einem Prozessor lief. Heute sind es viele verschiedene Anwendungen, die auf heterogenen Multi-Core-Systemen mit ARM, DSPs, GPUs etc. laufen. Dabei stellt sich die erste Frage: Wie lässt sich existierender Code auf eine parallele Architektur migrieren? Odendahl: »Wenn ich keinen parallelen Code habe, kann ich auch nichts auf die verschiedenen Cores verteilen.« Und wenn ich parallelen Code habe, stellt sich wiederum die zweite Frage: Wie verteile ich ihn am besten auf die Recheneinheiten einer Plattform? Wobei bei dieser Frage noch unterschiedliche Optimierungskriterien berücksichtigt werden müssen. Einmal geht es um höchste Performance, ein anderes Mal um eine möglichst geringe Leistungsaufnahme. Odendahl: »Im Fahrzeug beispielsweise richtet sich die Optimierung darauf, die Wärmeentwicklung im Chip möglichst gering zu halten. In Basisstationen geht es wiederum darum, die Leistungsaufnahme zu reduzieren.«
Und dann stellt sich noch die dritte Frage, die die Entwickler vor eine Herausforderung stellt: Welche Multi-Core-Plattform ist die beste für den Code? Welcher AI-Chip ist optimal für ein neuronales Netz? Heute könne man versuchen, diese Fragen mithilfe von Excel-Tabellen zu lösen oder sich auf die Aussage eines erfahrenen Ingenieurs verlassen, der solche Aufgaben schon seit vielen Jahren gelöst hat. Aber mit komplexer werdenden Applikationen und heterogenen Supercomputern sei dieser Ansatz nicht mehr zielführend.
Deshalb hat Silexica mit SLX eine Tool-Chain entwickelt, die mithilfe von Compiler-Technologien die Software automatisiert auf die Hardware verteilt. Was vielleicht einfach klingt, hat es in sich, denn: »Es gibt sehr viele verschiedene Hardware-Plattformen, verschiedene Programmiermodelle und viele verschiedene Applikationen. Und es ist ein Riesenunterschied, ob man Code für ein FPGA, eine GPU entwickelt oder Autosar-Classic-Code für eine ASIL-D-Anwendung programmiert«, so Odendahl weiter. Deshalb hat Silexica verschiedene Flows entwickelt, welche aber alle drei Schritte gemeinsam haben: