vgvassilev/clad

clad -- automatic differentiation for C/C++

해결하는 문제

Clad는 C++를 위한 자동 미분(AD)을 제공하여 수학 함수의 도함수를 자동으로 C++ 코드로 생성할 수 있게 해줍니다. 이로 인해 복잡한 함수의 기울기, 헤시안, 자코비안을 수동으로 도출하고 코드로 작성할 필요가 없어지며, 이는 종종 실수를 유발하고 번거로운 작업입니다.

작동 방식

Clad는 Clang 컴파일러의 플러그인으로 구현되었으며, LLVM 컴파일러 인프라를 기반으로 합니다. 소스 변환 기법을 사용하여 C++ 소스 코드를 분석하고, 해당 도함수에 대응하는 C++ 코드를 자동으로 생성합니다. 전방 모드와 역방향 모드 AD를 모두 지원하며, 고차 도함수를 위한 두 모드의 조합도 가능합니다.

대상 사용자

최적화, 머신러닝, 과학 계산을 위해 수학 함수의 도함수를 계산해야 하는 C++ 개발자 및 연구자, 그리고 프로그램 내 부동소수점 오차를 추정해야 하는 사용자에게 적합합니다.

주요 특징

  • 다양한 AD 모드: 헤시안 및 자코비안 행렬 계산을 위한 전방 모드, 역방향 모드, 그리고 조합 모드를 지원합니다.
  • 포괄적인 API: clad::differentiate, clad::gradient, clad::hessian, clad::jacobian와 같은 전용 함수를 제공합니다.
  • 부동소수점 오차 추정: 프로그램의 부동소수점 오차를 계산하는 전용 도구 (clad::estimate_error)를 포함합니다.
  • 컴파일러 통합: Clang 플러그인으로 작동하거나 xeus-cpp 커널을 통해 Jupyter 노트북 내에서 사용 가능합니다.
  • C++ 기능 지원: 현대 C++ 기능에 대한 광범위한 지원과 견고한 백업 및 복구 시스템을 갖추고 있습니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트