Clad工具介绍: Clang AD是一个基于Clang的自动微分工具,用于计算C++程序中函数的导数。与传统的手动或符号微分不同,Clad采用的是自动生成导数代码的方式,使用了Clang提供的AST遍历功能和代码重写工具(Rewriter),在编译时自动生成函数导数的代码,并将其插入原始代码中。这样,在运行时就可以直接调用这个新的函数来计算原函数的梯度。Clad的优点在于它能够自动处理复杂的C++语言特性,如模板、多重继承等,而且支持高阶导数的计算。
Clad工具源码下载链接:GitHub - vgvassilev/clad: clad -- automatic differentiation for C/C++
在安装Clad工具前需要配置好LLVM的环境,下面默认已经配置好LLVM环境直接下载安装Clad。
1、下载Clad源码。新建文件夹Clad,下载Clad源码并且解压缩在当前目录下:
2、编译Clad工具。在clad-master目录下新建build目录,然后进入build目录下执行如下命令,指定 LLVM 安装目录下的 cmake 配置文件路径:
cmake .. -DLLVM_DIR=/usr/lib/llvm-10/lib/cmake/llvm
但是我的LLVM环境配置中llvm的配置文件与clang的配置文件不在同一个目录下,所以执行命令发生变化:
cmake .. \
> -DLLVM_DIR=/usr/lib/llvm-10/lib/cmake/llvm \
> -DClang_DIR=/usr/lib/llvm-10/lib/cmake/clang
然后执行make命令开始编译,时间大概为一到两分钟:
3、安装Clad工具。执行如下命令进行编译:
cmake .. -DCMAKE_INSTALL_PREFIX=/home/Clad/clad-master -DLLVM_DIR=/usr/lib/llvm-10/lib/cmake/llvm
然后执行install命令安装,执行完成后就成功安装了。:
make install
4、配置环境变量。打开.bashrc文件修改环境变量:
export LLVM_PLUGIN_PATH=/home/Clad/clad-master/build:$LLVM_PLUGIN_PATH
保存完成后执行命令:
source /.bashrc
最后就可以使用Clad工具了。