在valgrind下CuDNN崩溃

时间:2018-08-21 02:39:37

标签: valgrind caffe cudnn

我的程序在我的标准Ubuntu x64机器上运行良好,但是如果我在valgrind下运行,则会看到以下错误:

==22246== Conditional jump or move depends on uninitialised value(s)
==22246==    at 0x9854DCBC: ??? (in /usr/lib/x86_64-linux-gnu/libcudnn.so.6.0.21)
==22246==    by 0x98182940: cudnnGetConvolutionBackwardFilterWorkspaceSize (in /usr/lib/x86_64-linux-gnu/libcudnn.so.6.0.21)
==22246==    by 0x982C3787: ??? (in /usr/lib/x86_64-linux-gnu/libcudnn.so.6.0.21)
==22246==    by 0x9817FC0F: cudnnGetConvolutionBackwardFilterAlgorithm (in /usr/lib/x86_64-linux-gnu/libcudnn.so.6.0.21)
==22246==    by 0x903F4908: caffe::CuDNNConvolutionLayer<float>::Reshape(std::vector<caffe::Blob<float>*, std::allocator<caffe::Blob<float>*> > const&, std::vector<caffe::Blob<float>*, std::allocator<caffe::Blob<float>*> > const&) (cudnn_conv_layer.cpp:149)
==22246==    by 0x904F35D8: SetUp (layer.hpp:72)
==22246==    by 0x904F35D8: caffe::Net<float>::Init(caffe::NetParameter const&) (net.cpp:148)
==22246==    by 0x904F523F: caffe::Net<float>::Net(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, caffe::Phase, int, std::vector<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const*, caffe::Net<float> const*) (net.cpp:45)
--from here is my own code

不幸的是,尽管我的代码几乎是caffe的沼泽标准接口,但是该模型是我无法在此处共享的复杂专有模型。而且,CuDNN是封闭源代码,因此我无法调试它以查看这是否值得关注。

使用Google搜索cudnnGetConvolutionBackwardFilterWorkspaceSize valgrindcudnnGetConvolutionBackwardFilterAlgorithm valgrind除了添加--track-origins=yes的提示外没有其他有用的方法,但是当我添加时,错误就消失了...

我实际上要解决的问题是深度学习模块在目标平台上的标准库中崩溃,并调用了释放已释放的内存的调用。但是,目标是基于ARM的设备,我无法访问它进行进一步的研究。

0 个答案:

没有答案