Ein hybrider Ansatz zur Generierung von adjungiertem C++-Code
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)
- First- and second-order parameter sensitivities of a metabolically and isotopically non-stationary biochemical network model. In Martin Otter and Dirk Zimmer, editors, Proceedings of the 9th International Modelica Conference, pages 641–648. Modelica Association, 2012
R. Hannemann, Jana Tillack, M. Schmitz, Michael Förster, J. Wyes, Kao tharina Nöh, Eric von Lieres, Uwe Naumann, Wolfgang Wiechert, and W. Marquardt
- Hierarchical algorithmic differentiation: A case study. In Recent Advances in Algorithmic Differetiation, pages 187–196. Springer, 2012
J. Lotz, U. Naumann, and J. Ungermann
- Discrete adjoints of petsc through dco/c++ and adjoint mpi. In Euro-Par 2013 Parallel Processing, pages 497–507. Springer, 2013
J. Lotz, U. Naumann, M. Sagebaum, and M. Schanen
- Solving a least-squares problem with algorithmic differentiation and OpenMP. In Euro-Par 2013 Parallel Processing - 19th International Conference, Aachen, Germany, August 26-30, 2013. Proceedings, pages 763–774, 2013
Michael Förster and Uwe Naumann
- Algorithmic Differentiation of Pragma-Defined Parallel Regions: Differentiating Computer Programs Containing OpenMP. PhD thesis, 2014
Michael Förster
(Siehe online unter https://dx.doi.org/10.1007/978-3-658-07597-2) - Algorithmic differentiation of numerical methods: Tangent and adjoint solvers for parameterized systems of nonlinear equations. ACM Transactions on Mathematical Software, Volume 41 Issue 4, October 2015, Article No. 26
U. Naumann, J. Lotz, K. Leppkes, and M. Towara
(Siehe online unter https://doi.org/10.1145/2700820) - Semantics Driven Adjoints of the Message Passing Interface. PhD thesis, 2015
M. Schanen