Portieren Ihrer Anwendung auf spezielle/neue Hardware

Eine Anwendung auf eine andere Hard­ware-Platt­form portieren.

Wir passen Ihre Software so an, dass sie effizient auf einem neuen Gerät funktioniert. Ob Sie eine einzelne Komponente oder Ihre gesamte Software von einer Architektur auf die andere, von einer CPU auf einen dedizierten Beschleuniger oder eine GPU oder einen DSP migrieren, wir sind da, um zu helfen.

Wobei wir helfen können

Software auf eine andere Hardware portieren

Wenn Ihre Software auf eine neue Hardware angepasst werden muss, ist eine effiziente Ausnutzung der Fähigkeiten dieser Architektur einer der Schlüssel zum Erfolg. Dies können kleine Änderungen wie das Nutzen von bestimmten Instruktionen in ein paar kritischen Schleifen sein, oder aber ein kompletter Neuentwurf und eine komplette Neuimplementierung einiger oder gar all Ihrer Algorithmen.

Wir identifizieren zusammen mit Ihnen den Kos­ten-Nut­zen-Sweetspot für jeden Teil Ihrer Software: In einem können wir die neue Hardware an ihre Grenzen bringen, in einem anderen den Fokus auf zukünftige Flexibilität legen und hierfür die nötigen Abstraktionsschichten zur Kapselung der Varianten einführen.

Hierbei helfen wir Ihnen:

  • Herausfinden, welche Ihrer Algorithmen und Datenstrukturen gut auf Ihre neue Hardware passen.
  • Umschreiben oder Verbessern von existierenden Implementationen, wo nötig.
  • Erstellen von Richtlinien für Ihre Entwickler, wie man die Hardware am besten ausnutzt.
  • Der Umgang mit komplizierteren Hardware-Features wie Vektorisierung, Hard­ware-ge­stütz­tes Soft­ware-Pipe­li­ning, Ei­gen­hei­ten von Compilern und vielem mehr.

Befinden Sie sich noch in der Evaluations- oder De­sign-Pha­se? Dann schauen Sie sich unsere Con­sul­ting-Dienst­leis­tung­en an.

Tooling

Die Soft­ware-Ent­wick­lung besteht nicht nur im Bau der eigentlichen Hard­ware-spe­zif­isch­en Binärdateien, sondern auch darin, diese für Unit-Tests, Smoke-Tests, Continuous Integration, Recompute oder ähnlichem auszuführen. Wenn Sie Software für Em­bedd­ed-Hard­ware bauen und Ihre Tests auf x86-Work­sta­tions laufen lassen wollen, dann müssen Sie auch Tar­get-spe­zif­ische Features (wie Intrinsics) abdecken, die nur Em­bed­ded-Com­pi­ler unterstützen.

Unsere Erfahrung umfasst die nötigten Too­ling-Auf­ga­ben für sicherheitskritischen Au­to­mo­tive-An­wen­dung­en. Beispiele hierfür beinhalten das Design, die Entwicklung, das Testen und das Ausrollen von:

  • Emulationsbibliotheken für Target-spezifische Features auf x86, um damit die Effizienz der Bau-und-Test-Zyk­len Ihrer Entwickler bedeutend zu erhöhen.
  • Standardfunktionen (wie Mathematik-Bibliotheken), die die gleiche Präzision auf x86 wie auf Ihrem Em­bed­ded-Target garantieren und damit bit-identische Ergebnisse für Ihr Recompute ermöglichen.
  • Statische Analysewerkzeuge um ineffiziente C/C++-Kon­struk­te zu erkennen, noch bevor sie in Ihren Quelltext aufgenommen werden.