hi,
according to your suggestion, the modification had done as follows:
//the return value of getOutputDimensions function change from (1,2,top_data_size)to(2,top_data_size)
Dims getOutputDimensions(int index, const Dims* inputs, int nbInputDims)override
{
assert(index == 0 && nbInputDims == 2 && inputs[0].nbDims==3 );
//dim=layer_height * layer_width * num_priors_ * 4;
top_data_size = inputs[0].d[1] * inputs[0].d[2] *mPriorBoxParamters.numPriors *4;
std::cout << "getOutputDimensions top_data_size:" << top_data_size << " inputs[0]d[0]:"<< inputs[0].d[0] << " d[1]:" << inputs[0].d[2] << " d[2]:" << inputs[0].d[1] <<" num_priors_:" << mPriorBoxParamters.numPriors << std::endl;
//std::cout << "getOutputDimensions inputs[1]d[0]:"<< inputs[1].d[0] << " d[1]:" << inputs[1].d[2] << " d[2]:" << inputs[1].d[1] << std::endl;
return Dims2(2, top_data_size);
}
//modify the output of enquen function
int PriorBoxPlugin::enqueue(int batchSize, const void*const *inputs, void** outputs, void* workspace,cudaStream_t stream)
{
……
//Before the change
//cudaMemcpy(outputs[0],top_data,(dim*sizeof(float)),cudaMemcpyHostToDevice);
//cudaMemcpy(outputs[1],variance_data,(dim*sizeof(float)),cudaMemcpyHostToDevice);
//after the change
cudaMalloc(&outputs[0],top_data_size*2*sizeof(float));
cudaMemcpy(outputs[0],top_data,(top_data_size*2*sizeof(float)),cudaMemcpyHostToDevice);
return 0;
}
After modification, the problem did not appear, but the new one(Segmentation fault) occured as follows:
i don’t know where and how to called the funciton of makeEngineFromGraphy and buildsignallayer,
and What kind of mistakes will lead to this problem, so, how can i do for solve this problem ? thanks for your reply.
Thread 1 "face_detection" received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) where
#0 0x0000000000000000 in ()
#1 0x0000007faf148fcc in nvinfer1::builder::<b>buildSingleLayer</b>(nvinfer1::rt::EngineBuildContext&, nvinfer1::builder::Node&, std::unordered_map<std::string, std::unique_ptr<nvinfer1::rt::Region, std::default_delete<nvinfer1::rt::Region> >, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, std::unique_ptr<nvinfer1::rt::Region, std::default_delete<nvinfer1::rt::Region> > > > > const&, nvinfer1::CpuMemoryGroup&, std::unordered_map<std::string, std::vector<float, std::allocator<float> >, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, std::vector<float, std::allocator<float> > > > >*, bool) ()
at /usr/lib/aarch64-linux-gnu/libnvinfer.so.5
#2 0x0000007faf14cd84 in nvinfer1::builder::<b>makeEngineFromGraph</b>(nvinfer1::CudaEngineBuildConfig const&, nvinfer1::rt::HardwareContext const&, nvinfer1::builder::Graph&, std::unordered_map<std::string, std::vector<float, std::allocator<float> >, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, std::vector<float, std::allocator<float> > > > >*, int) () at /usr/lib/aarch64-linux-gnu/libnvinfer.so.5
#3 0x0000007faf14facc in nvinfer1::builder::<b>buildEngine</b>(nvinfer1::CudaEngineBuildConfig&, nvinfer1::rt::HardwareContext const&, nvinfer1::Network const&) ()
at /usr/lib/aarch64-linux-gnu/libnvinfer.so.5
#4 0x0000007faf1ba2ec in nvinfer1::builder::Builder::<b>buildCudaEngine</b>(nvinfer1::INetworkDefinition&) () at /usr/lib/aarch64-linux-gnu/libnvinfer.so.5
#5 0x000000555555cd24 in <b>caffeToGIEModel</b>(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, 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&, unsigned int, nvcaffeparser1::IPluginFactoryExt*, nvinfer1::IHostMemory*&) ()
#6 0x0000005555564894 in main ()