这篇文件记录了使用libtorch过程中运到的一些bug
module->get_parameters()
使用下面的调用方式:
const torch::OrderedDict<std::string, torch::jit::script::NamedParameter> param = module->get_parameters(); |
报下面的错误:
/usr/include/c++/5/ext/new_allocator.h:120:4: error: use of deleted function ‘torch::OrderedDict<std::basic_string<char>, torch::jit::script::NamedParameter>::Item::Item(const torch::OrderedDict<std::basic_string<char>, torch::jit::script::NamedParameter>::Item&)’{ ::new((void *)__p) _Up(std::forward<_Args>(__args)...); } |
需要看下get_parameters()
的返回类型:
const torch::OrderedDict<std::string, NamedParameter>& get_parameters() const { |
get_parameters()
返回的是const类型的引用,不能使用一个引用赋值给一个对象,应该使用下面的调用方式:
const torch::OrderedDict<std::string, torch::jit::script::NamedParameter>& param = module->get_parameters(); |
这里论述下面的两个问题:
关于const的使用
关于引用、对象的使用
libtorch和pytorch的版本问题
高版本的pytorch trace生成的model不能用低版本的litorch load, 否则报下面的异常:
terminate called after throwing an instance of 'c10::Error' |
qiyi-ffmpeg链接libtorch
主要功能文件如下:
vf_qrestore.c filter
功能实现文件,ffmpeg调用转换得到数据类型后调用qrestore_wrapper
qrestore_wrapper.cpp
使用c规则包裹C++函数供ffmpeg编译,编译生成qrestore_wrapper.a
qrestore.cpp
使用c++实现质量恢复供包裹函数wrapper调用,编译生成qrestore.a
测试简单版本vf_qrestore.c和wrapper没有问题
qiiyi-ffmpeg编译
./configure --enable-cross-compile --enable-yasm --enable-static --enable-nonfree --enable-gpl --disable-filter=intertrustwm --disable-filter=iqiyiwm --disable-filter=css --disable-optimizations --extra-cflags="-I/home/maxliu/eclipse_201908-workspace/wrappertest/src -I/home/maxliu/eclipse_201908-workspace/Qrestore/src" --extra-ldflags="-L/data/source/libtorch/lib -L/home/maxliu/eclipse_201908-workspace/wrappertest/src -L/home/maxliu/eclipse_201908-workspace/Qrestore/src/build" --extra-libs='-lCppAddWrapper -lCppAdd -lstqrestore_wrapper -lstqrestore -ltorch -lc10_cuda -lc10 -llibcudart-5d6d23a3.so.8.0.61 -llibgomp-7bcb08ae.so.1 -llibnvrtc-56d4825a.so.8.0.61 -lnvrtc-builtins -llibnvToolsExt-422e3301.so.1 -llibtorch.so.1 -lstdc++' --prefix=/usr/local/ffmpeg_new_master |
--extra-libs='-lCppAddWrapper -lCppAdd
中-lCppAddWrapper
和-lCppAdd
顺序不能颠倒
configure_qiyi_simple.sh通过,编译Error:
gcc is unable to create an executable file. |
编译pytorch source
[ 68%] Linking CXX shared library ../lib/libcaffe2.so |
编译pytorch source需要cuDNN > 7, ATen 模块至少需要6以上版本,所以最好更新cudnn到比较高的版本
Comments