Moderne Prozessoren, wie z.B. Multi-Core-CPUs und GPUs, haben ein hohes Leistungspotenzial, erfordern jedoch eine komplexe Programmierung, um dieses Potenzial abzurufen. Insbesondere für die effiziente Ausnutzung der tiefen und komplexen Speicher- und Kern-Hierarchien dieser Prozessoren sind spezielle Low-Level-Programmiertechniken erforderlich, welche in der Regel durch aufwändige und fehleranfällige Speicherzugriffsmuster und Parallelisierungsstrategien gekennzeichnet sind.
High-Level-Programmieransätze ermöglichen es, moderne Prozessoren auf einem hohem Abstraktionsniveau zu programmieren, oft unabhängig von Hardware-Details und Optimierungstechniken. Konkret bieten solche Ansätze hierfür oft ihre eigenen, einfach zu verwendenden Programmiersprachen, mit der Programmierer zeitlastige Berechnungen einfach ausdrücken können; aus den Programmen in den entsprechenden Sprachen generieren die High-Level-Ansätze dann automatisiert optimierten Programmcode.
Unterschiedliche High-Level-Ansätze unterscheiden sich dabei in ihrer bereitgestellten Programmiersprache, unterstützten Prozessorarchitekturen, sowie im internen Aufbau. Zum Beispiel setzen so-genannte polyhedrale Ansätze auf imperative Programmierkonzepte und voll-automatisierte Optimierungen für CPUs und GPUs, intern inspiriert durch Konzepte der Geometrie. Hingegen fokussieren sich Ansätze wie z.B. Lift auf GPUs, setzen auf funktionale Konzepte, und erlauben für hohe Performance Nutzerinteraktionen in ihrem Optimierungsprozess.
In diesem Seminar wollen wir uns fundiert mit verschiedenen High-Level-Ansätzen auseinandersetzen. Konkret wollen wir uns mit der Nutzerschnittstelle der Ansätze befassen, sowie deren internen Aufbau analysieren; vergleichen werden wir die Ansätze miteinander in Bezug auf Nutzbarkeit und Effizienz. Betrachten werden wir hierfür Ansätze wie PPCG, Pluto, und TC, welche auf polyhedralen Konzepten basieren und sich u.a. für Anwendungsbereiche wie Deep Learning bewährt haben; auch wollen wir uns mit funktional-inspirierten Ansätzen wie z.B. dem Lift-Framework befassen. Ein weiterer Fokus wird auf dem in der AG PVS entwickelten Ansatz der Multi-Dimensionalen Homomorphismen (MDH) liegen, der sich bisher durch einfache Verwendbarkeit und hohe Effizienz ausgezeichnet hat. Weitere Ansätze werden bei Bedarf ergänzt, orientiert an den Interessen und Vorkenntnissen der Seminar-Teilnehmenden.