Detailseite
Projekt Druckansicht

Ein hybrider Ansatz zur Generierung von adjungiertem C++-Code

Fachliche Zuordnung Softwaretechnik und Programmiersprachen
Förderung Förderung von 2010 bis 2014
Projektkennung Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 168415794
 
Erstellungsjahr 2015

Zusammenfassung der Projektergebnisse

Die robuste und effiziente Berechnung von Adjungierten numerischer Simulationsprogramme mithilfe von Algorithmischem Differenzieren (AD) in C++ stellt eine signifikante Herausforderung für zahlreiche Wissenschaftler und Ingenieure dar. Zum Zeitpunkt der Antragstellung und bis heute existiert kein AD-Compiler, der in der Lage ware, beliebige C++-Programme zu adjungieren. Stattdessen müssen Laufzeitlösungen basierend auf der Überladung von Operatoren und intrinsischen Funktionen (mithilfe einer Überladungssoftware) in C++ verwendet werden. Der offensichtlichen Eleganz und Robustheit dieses Ansatzes steht eine oft suboptimale Effizienz der Adjungiertenberechnung gegenüber. Gründe dafür stellen z.B. die nicht verfügbare statische Programmanalyse und die fehlende Ausnutzung von Programmstruktur dar. Die Auswirkungen manifestieren sich bei diversen Anwendungen stärker und schwächer bei anderen. Ein hybriden Ansatz in Form einer Kombination von Überladungssoftware und Quellcodetransformation hatte das Ziel einer näherungsweise optimalen Effizienz der generierten Adjungiertenberechnungen. Die Weiterentwicklung von AD-Compilern sowie die Entwicklung der Infrastruktur zur Kopplung von Compiler-generiertem Code und einer Lösung per Überladungssoftware waren im Kern Gegenstand der Forschung in diesem Projekt. Dazu gesellte sich allerdings recht früh eine weitere, bei Antragstellung nicht berücksichtigte Möglichkeit der semi-automatischen Kopplung von auf unterschiedliche Art generierten - unter anderem auch handgeschriebenen -adjungierten Programmen. Mit untersucht wurde daher die Ausnutzung mathematischer Eigenschaften bestimmter, meist sehr rechenintensiver Teilprobleme (z.B. die Lösung nicht-linearer Gleichungssysteme). Dies zeigte sich als sehr effektiver und effizienter Weg, welcher auf fast überraschend gute Weise in die selbe Infrastruktur eingebettet werden konnte, welche im Rahmen dieses Projektes entwickelt wurde. Da sich schnell herausstellte, dass die Entwicklung der Infrastruktur für die angestrebte Kopplung tiefe Eingriffe in die Überladungssoftware notwendig machte, sollten interne Synergien ausgenutzt werden und statt der ursprünglich geplanten Software ADOL-C wurde die Software dco/c++ entwickelt und verwendet. Die Richtungsänderung durch diese beiden zusätzlichen Aspekte hat nicht nur zu weiteren Publikationen in internationalen wissenschaftlichen Zeitschriften geführt, sondern führte die Resultate unmittelbar in weitere praktisch relevante Gebiete ein. Dies hat sich insbesondere darin gezeigt, dass die Software integraler Bestandteil der Problemlösungen wurde, welche im Zuge der bereits laufenden Projekten entwickelt werden.

Projektbezogene Publikationen (Auswahl)

 
 

Zusatzinformationen

Textvergrößerung und Kontrastanpassung