程序在GPU上运行报“段错误”,CPU上运行没问题
Created by: qingwuzhu
为使您的问题得到快速解决,在建立Issue前,请您先通过如下方式搜索是否有相似问题:【搜索issue关键字】【使用labels筛选】【官方文档】
如果您没有查询到相似问题,为快速解决您的提问,建立issue时请提供如下细节信息:
- 标题:简洁、精准描述您的问题,例如“最新预测库的API文档在哪儿 ”
- 版本、环境信息: 1)PaddlePaddle版本:cuda9.0_cudnn7_avx_mkl(1.4) 3)GPU:NVIDIA-SMI 410.93 CUDA Version: 10.0 CUDNN:7 4)系统环境:CentOS Linux release 7.6.1810 1)C++预测:version.txt内容 WITH_MKL: ON WITH_MKLDNN: ON WITH_GPU: ON CUDA version: 9.0 CUDNN version: v7
3)API信息(如调用请提供)
paddle::AnalysisConfig config; // dirname 是模型的路径 if(use_gpu){ printf("EnableUseGpu\n"); config.EnableUseGpu(5000,0); // 使用GPU, CPU下使用config.DisableGpu(); } else{ printf("DisableGpu\n"); config.DisableGpu(); config.EnableMKLDNN(); }
config.SwitchIrOptim();
config.SetModel(model_path+"/fr-num.4.net",model_path+"/fr-num.4.p");
config.mkldnn_enabled();
config.SetCpuMathLibraryNumThreads(4);
auto predictor = paddle::CreatePaddlePredictor<paddle::AnalysisConfig>(config);
int n = batchsize;
gettimeofday(&start, 0);
paddle::PaddleTensor tensor;
auto input_size = static_cast<size_t>(n* 32 * 300 * sizeof(float));
tensor.shape = std::vector<int>({n, 1,32, 300});
tensor.data = paddle::PaddleBuf((void*)batchData, input_size);
tensor.dtype = paddle::PaddleDType::FLOAT32;
std::vector<paddle::PaddleTensor> slots(1, tensor);
//# 3. Run
std::vector<paddle::PaddleTensor> outputs;
CHECK(predictor->Run(slots, &outputs));
//printf("33 是否使用GPU[%d],use_gpu[%d]\n",config.use_gpu(),use_gpu);
//# 4. Get output.
CHECK_EQ(outputs.size(), 1UL);
运行到这句话的时候提示: ./run.sh: 行 73: 21752 段错误 (吐核)./simple_on_word2vec --dirname=$word2vec_model --use_gpu=$use_gpu
- '[' 139 -ne 0 ']'
- echo 'simple_on_word2vec demo runs fail.'
但是此程序如果使用CPU模式,没问题