

Clad  Automatic Differentiation Using Clang and LLVM
Article in a journal
  

Author(s)
V. Vassilev
, M. Vassilev
, A. Penev
, L. Moneta
, V. Ilieva

Published in
Journal of Physics: Conference Series 
Year 2015 
Abstract Differentiation is ubiquitous in high energy physics, for instance in minimization algorithms and statistical analysis, in detector alignment and calibration, and in theory. Automatic differentiation (ad) avoids wellknown limitations in roundoffs and speed, which symbolic and numerical differentiation suffer from, by transforming the source code of functions. We will present how ad can be used to compute the gradient of multivariate functions and functor objects. We will explain approaches to implement an ad tool. We will show how LLVM, Clang and Cling (ROOT's C++11 interpreter) simplifies creation of such a tool. We describe how the tool could be integrated within any framework. We will demonstrate a simple proofofconcept prototype, called Clad, which is able to generate nth order derivatives of C++ functions and other language constructs. We also demonstrate how Clad can offload laborious computations from the CPU using OpenCL. 
AD Tools Clad 
BibTeX
@ARTICLE{
Vassilev2015CAD,
author = "V. Vassilev and M. Vassilev and A. Penev and L. Moneta and V. Ilieva",
title = "Clad  {A}utomatic Differentiation Using {C}lang and {LLVM}",
journal = "Journal of Physics: Conference Series",
volume = "608",
number = "1",
pages = "012055",
url = "http://stacks.iop.org/17426596/608/i=1/a=012055",
doi = "10.1088/17426596/608/1/012055",
year = "2015",
abstract = "Differentiation is ubiquitous in high energy physics, for instance in minimization
algorithms and statistical analysis, in detector alignment and calibration, and in theory. Automatic
differentiation (AD) avoids wellknown limitations in roundoffs and speed, which symbolic and
numerical differentiation suffer from, by transforming the source code of functions. We will present
how AD can be used to compute the gradient of multivariate functions and functor objects. We will
explain approaches to implement an AD tool. We will show how LLVM, Clang and Cling (ROOT's
C++11 interpreter) simplifies creation of such a tool. We describe how the tool could be integrated
within any framework. We will demonstrate a simple proofofconcept prototype, called Clad, which is
able to generate nth order derivatives of C++ functions and other language constructs. We also
demonstrate how Clad can offload laborious computations from the CPU using OpenCL.",
ad_tools = "Clad"
}
 
back

