Das Projekt ORKA-HPC
High Performance Computing (HPC) ist ein wichtiger Bestandteil für die europäische Innovationskapazität und wird auch als ein Baustein bei der Digitalisierung der europäischen Industrie gesehen. Die Entwicklung der nächsten Generation von HPC Systemen bis hin zu Exascale bedeuten dabei wesentliche Anstrengungen in der Forschung und Entwicklung im Bereich der HPC Technologien, Entwicklungsumgebungen und Anwendungen. Rekonfigurierbare Technologien wie Field Programmable Gate Array (FPGA) Module gewinnen hier wegen ihrer Energieeffizienz, Leistungsfähigkeit und nicht zuletzt ihrer Flexibilität immer größere Bedeutung. Künftige HPC-Systeme müssen nicht nur wegen ihrer Rechenstärke immer größere Datenmengen bewältigen, sondern auch zunehmend datengetriebene Analyse-Anwendungen (Data Analytics, Big Data) bedienen - oft bezeichnet als das Zusammenwachsen von HPC und High Performance Data Analytics. Gerade in diesen Bereichen wird daher zunehmend auf HPC-Systeme mit heterogenen Architekturen auch unter Einsatz von FPGA-Beschleunigern gesetzt. Was diese Technologie besonders interessant macht, ist die Möglichkeit, die enorme Anzahl der auf einem FPGA vorhandenen, einfachen Logikelementen zu parallel arbeitenden, komplexen und algorithmenspezifischen Verarbeitungseinheiten zusammenzufügen - die Hardware „passt“ sich an den Algorithmus an, im Gegensatz zu CPUs und GPUs. Hierdurch werden auf FPGAs die Beschränkungen der von-Neumann-Architektur traditioneller Rechenplattformen aufgehoben. Die große Flexibilität ermöglicht zudem, dass eine große Klasse von Applikationen im HPC mit FPGAs realisiert werden kann. Auch für die hochvolumige Datenerfassung und -aufbereitung in Experimenten (z.B. Satelliten, HEP Experimenten) haben sich FPGAs als Stand der Technik etabliert. Es wurde bereits vor vielen Jahren über den Einsatz von FPGAs in heterogenen Rechnerarchitekturen nachgedacht. Allerdings ist die Programmierung von FPGAs bisher vorwiegend Spezialisten vorbehalten und sehr zeitaufwendig, wodurch deren Verwendung in Bereichen des wissenschaftlichen Hochleistungsrechnens derzeit noch selten ist. Jüngste Entwicklungen adressieren die bessere Kopplung zwischen FPGA-Subsystem und Host (Intel/Altera, Micron/Convey, ARM/Xilinx) und es gibt erste Schritte, den Designzyklus an den Software-Entwicklungsprozess anzupassen (OpenCL für FPGA-Produkte von Altera und Xilinx). Um solche und darauf aufbauende Architekturen effektiv und effizient nutzen zu können, muss der Software-Portierungsaufwand drastisch reduziert und im HPC gängige Entwicklungskonzepte verfügbar gemacht werden. Im HPC-Umfeld gibt es verschiedenste Ansätze für Programmiermodelle für heterogene Rechnersysteme mit Beschleunigern. Gängige Programmiermodelle sind zum Beispiel OpenCL (opencl.org), OpenACC (openacc.org) und OpenMP (OpenMP.org) mit herstellerübergreifenden Initiativen, die bisher vor allem auf die Unterstützung von GPUs und Many-/Multicore CPUs abzielen. Hierbei ist OpenMP das bislang am stärksten adaptierte Programmiermodell. Eine produktive Verwendbarkeit dieser Standards für FPGAs ist heute jedoch noch nicht gegeben. Bisherige OpenMP-Implementierungsversuche konzentrieren sich auf die Umsetzung einzelner Teilaspekte und adressieren insbesondere nicht die für HPC notwendigen Performance-Aspekte. Für den ganzheitlichen Ansatz sind daher auch weitere Forschungsarbeiten nötig, z. B. in den Bereichen neuer Ansätze bei der Repräsentation von Programmcodes und heuristischer Methoden zur Optimierung für inhärent parallele Architekturen.
Ziele des Projektes sind:
- Nutzung des OpenMP 4.5-Standards als Programmiermodell, um ohne Spezialkenntnisse heterogene Rechnerplattformen mit FPGAs als rekonfigurierbare Architekturen durch portable Implementierungen eine breitere Community im HPC-Umfeld zu erschließen.
- Den völlig neuen Ansatz des Entwurfs und der Implementierung eines Source-to-Source-Frameworks, das C/C++-Code mit OpenMP 4.5-Direktiven in ein ausführbares Programm transformiert, welches hardwareunabhängig die Host-CPUs und FPGAs nutzt.
- Nutzung und Erweiterung existierender Lösungen von Teilproblemen für die optimale Abbildung von Algorithmen auf heterogene Systeme und FPGA-Hardware.
- Erforschung neuer (Teil-) Lösungen für heuristische Methoden zur Optimierung von Programmrepräsentationen für inhärent parallele Architekturen.