LFortran과 Enzyme으로 기존 Fortran 코드에 자동 미분 적용하기
Differentiable Fortran with LFortran and Enzyme

수십 년간 검증된 CFD, 기후, 항공, 원자력 분야의 Fortran 시뮬레이션 코드는 그래디언트를 제공하지 않아 현대 ML 파이프라인에 통합하기 어렵습니다. 이 글은 코드를 JAX나 PyTorch로 재작성하는 대신, LFortran과 Enzyme을 결합해 LLVM IR 수준에서 자동 미분을 적용하는 방법을 소개합니다. 220줄 분량의 2D 열전달 솔버를 예로 들어, 6단계 컴파일 파이프라인을 통해 기존 Fortran 코드를 그대로 두고 정확한 그래디언트를 얻는 과정을 설명합니다. 또한 LFortran이 Flang보다 Enzyme과 호환성이 높은 이유, -O1 최적화가 필요한 이유, 그리고 C 브리지를 통한 메모리 관리 등 실용적인 팁을 제공합니다.
LLVM IR 수준에서 자동 미분을 적용하는 Enzyme 덕분에, LLVM으로 컴파일되는 모든 코드를 미분할 수 있습니다.