Failed to model infer execute. (Calling Function = aclmdlExecute, Code = 500002
收藏回复举报
Failed to model infer execute. (Calling Function = aclmdlExecute, Code = 500002
t('forum.solved') 已解决
发表于2024-08-27 15:21:36
0 查看

我自己构造了输入并进行推理应用,部分代码如下:

uint32_t input[1][500][2500][1]; // 注意这个数组的大小是固定的

input已经从txt中读取了数据......

// 指定张量形状                                          

    std::vector<uint32_t> shape{1, 3, 16, 16};

    MxBase::Tensor input_tensor(&input[0][0][0][0], shape, MxBase::TensorDType::UINT32);

    input_tensor.ToDevice(0);

    MxBase::TensorBase tensor;

    MemoryData decodememorydata;

    decodememorydata.ptrData = input_tensor.GetData();

    decodememorydata.size = input_tensor.GetByteSize();

    decodememorydata.deviceId = input_tensor.GetDeviceId();

    decodememorydata.type = input_tensor.GetMemoryType();

    tensor = TensorBase(decodememorydata, true, input_tensor.GetShape(), TensorDataType::TENSOR_DTYPE_UINT32);

    // STEP4:推理开始

    std::vector<MxBase::TensorBase> detect_inputs = {};

    std::vector<MxBase::TensorBase> detect_outputs = {};

    detect_inputs.push_back(tensor);

    //根据模型的输出创建空的TensorBase变量

    auto dtypes = data_model_->GetOutputDataType();

    for (size_t i = 0; i < data_modelDesc_.outputTensors.size(); ++i) {

        std::vector<uint32_t> shape = {};

        for (size_t j = 0; j < data_modelDesc_.outputTensors[i].tensorDims.size(); ++j) {

            shape.push_back((uint32_t)data_modelDesc_.outputTensors[i].tensorDims[j]);//添加400和2500

        }

        MxBase::TensorBase tensor(shape, dtypes[i], MxBase::MemoryData::MemoryType::MEMORY_DEVICE, deviceId_);

        APP_ERROR ret = MxBase::TensorBase::TensorBaseMalloc(tensor);

        if (ret != APP_ERR_OK) {

            LogError << "TensorBaseMalloc failed, ret=" << ret << ".";

            return ret;

        }

        detect_outputs.push_back(tensor);

     }

    //模型推理部分

    //进行模型推理,结果存入outputs

    MxBase::DynamicInfo dynamicInfo = {};

    dynamicInfo.dynamicType = MxBase::DynamicType::STATIC_BATCH;  // 设置类型为静态batch

    ret = data_model_->ModelInference(detect_inputs,detect_outputs,dynamicInfo);

    if (ret != APP_ERR_OK) {

        LogError << "detection_inference failed, ret=" << ret << ".";

        return ret;

    }

在执行推理的时候报错了,错误信息如下:

E20240827 14:06:33.005061 54938 ModelInferenceProcessorDptr.hpp:279] Failed to model infer execute. (Calling Function = aclmdlExecute, Code = 500002, Message = "ACL error, please refer to the document of CANN.") 
E20240827 14:06:33.005156 54938 ModelInferenceProcessor.cpp:98] Failed to execute model infer. (Code = -1, Message = "ACL: general failure") 

我要发帖子