Das Ziel dieses Bootcamps ist es, den Teilnehmer*innen zu performanterer Software zu verhelfen, das Verständnis vom Zusammenspiel zwischen Software und Hardware zu verbessern, sowie die Produktivität von Programmierern und Anwendungsnutzern zu erhöhen.
Effiziente und performante Software ist ein Muss für moderne Unternehmen. Egal ob im IoT-Bereich, Edge- und Cloudcomputing oder im Hochleistungsrechnen – paralleles Programmieren, maßgeschneidertes Softwareengineering und bedarfsgerechte Optimierung sind essenziell für das produktive Arbeiten auf bestehenden und zukünftigen Hardwareplattformen. Jedoch zeigt die Praxis, dass ein Mangel an Parallelismus und Softwareoptimierungen meist durch erhöhte Investitionen in Hardware und somit durch Overprovisioning ausgeglichen werden, was nicht nur direkte wirtschaftliche Kostennachteile nach sich ziehen kann, sondern oft auch weitere Einbußen wie z. B. erhöhten Energieverbrauch oder niedrige Effizienz bedeutet. Zusätzlich zeigt sich in Software häufig eine mangelnde Anpassungsfähigkeit an neue Plattformen. Stattdessen sind Anwendungen meist manuell auf bestimmte Hardwarearchitekturen oder Softwarestacks hin optimiert, wodurch ein Wechsel auf neue Plattformen oft komplexe und tiefgreifende Änderungen erfordert und hinter den Erwartungen an gesteigerte Performance und Effizienz bleibt. Zusätzlich stellen solche Wechsel hohe inhärente Kostenfaktoren dar.
Stattdessen sollte Software auf hoher Abstraktionsebene generisch spezifizierbar sein, gleichzeitig aber auch anpassungsfähig an die zur Verfügung stehende Hardware um diese mit hoher Leistung auszureizen. Dabei muss es nicht nur um die Optimierung auf kurze Laufzeit gehen, auch wirtschaftliche Kosten spielen eine Rolle. Zusätzlich muss Software heutzutage nachhaltig und leicht wartbar sein. Aus diesem Grund bietet die Universität Innsbruck dieses digitale Bootcamp an, das sich mit performanceorientiertem Softwareengineering beschäftigt, zugeschnitten auf die konkreten Use Cases lokaler Unternehmen. Anhand der Use Cases werden konkrete Themenstellungen behandelt, wie z. B. parallele Algorithmen, effiziente Datenstrukturen, Optimierungsalgorithmen für automatisches Softwaretuning, GPU-Programmierung und -optimierung, multikriterielle Optimierung, large-scale distributed Computing, serverless Computing, FaaS, oder Fault-Tolerance. Die Zielplattformen sind dabei divers, angefangen von IoT-Architekturen über Cloudlösungen bis hin zu GPU-Clustern und Manycore-Hochleistungsplattformen mit shared und distributed memory.