LFortran und Enzyme: Gradienten durch uralten Fortran-Code ohne Neuschreiben

Differentiable Fortran with LFortran and Enzyme

LFortran und Enzyme: Gradienten durch uralten Fortran-Code ohne Neuschreiben

Was wäre, wenn man durch bestehenden Fortran-, C- oder C++-Simulationscode backpropagieren und ihn als differenzierbare Physik-Engine in JAX oder PyTorch einbetten könnte? Dieser Blogbeitrag von Pasteur Labs zeigt, wie das mit LFortran, LLVM und Enzyme gelingt: Enzyme differenziert auf LLVM-IR-Ebene, LFortran erzeugt besonders sauberes IR, und ein dünner C-Wrapper verbindet beides. Am Beispiel eines 2D-Wärmeleitungs-Solvers mit nichtlinearer Leitfähigkeit demonstriert der Autor die sechsstufige Compiler-Pipeline, die in etwa 30 Sekunden eine differenzierbare Shared Library erzeugt. Dabei werden praktische Hürden wie die Vermeidung von LFortran-Allocatables und die Wahl von -O1 statt -O3 vor dem AD-Pass beleuchtet. Das Ergebnis: exakte Gradienten durch die gesamte Zeitschleife, die mit analytischen Lösungen übereinstimmen – und die Tür zu inversen Problemen, die ohne AD unmöglich wären.

Es ist erstaunlich zu sehen, dass ein Stack, der einige der ältesten und neuesten Technologien kombiniert, überhaupt funktionieren kann.

Mehr von diesem Tag

2026-07-14