主目录下CMakeList.txt
嵌套Caffe
目录
Caffe
目录包含aten
, ***等目录
Caffe同时调用Codegen.cmake 执行动态生成代码,生成动态变量
所以aten目录下可以调用动态变量并构建,其自定义变量并层层反传上层.
ATen下指定npu源文件构建
libtorch
构建
自动求导引擎带注册研究思路
分析代码模板:
python__nn__function ;python_torch__function.cpp;
占位符:${py_forwards};${py_methods}
python_variable_methods.cpp
$
Function.cpp/h
${autograd_function_declarations} $
python_function.cpp
$
尝试找到需要替换得地方,替换的地方就是需要添加pytorch算子接口的地方(这里找调用地方,进而找到binding的前置判断)
然后发现很多都是用declaration变量来获取值,那就看看declaration东西
vim build/aten/src/ATen/Declarations.yaml
包含算子名字、schme字符串、参数等等,有效信息很多
走读代码找到,torch方法绑定的地方,create_python_binding
前置条件get_py_torch_functions
进而找到是否应该暴露接口的判断区:
进而起飞
反向接口暴露修改法则
修改文件:
-
修改文件
tools/autograd/gen_python_functions.py
这里非常重要!!是暴露接口到python层的重要修改点
这里待研究?之前是搜索到了有bool[3]场景报错,先暂时屏蔽
这里是因为有特别算子,参数比较多,需要手动扩充场景
而且这里一定要记住去wrap-outputs.h去补充函数重要!这里是区分forward和backward,通过什么下发,forward可以用self,backward通过命名空间用aten或at,所以这里得改,保证调用域
这里修改原因同上!这是下发代码模板得参数,backward得保留self参数
-
修改文件
tools/pyi/gen_pyi.py
这里待研究?编译会报错,先直接注释掉屏蔽
-
修改文件
torch/csrc/autograd/utils/wrap_outputs.h
为特殊算子服务
-
实验测试结果