打开微信,使用扫一扫进入页面后,点击右上角菜单,
点击“发送给朋友”或“分享到朋友圈”完成分享
我使用magicmind_runtime 进行离线模型推理,出现了CN_INVOKE_ERROR_EXECUTED_TIMEOUT问题?请问是驱动问题吗?还是我的代码有问题,请求帮助,谢谢。
代码比较简单,主体逻辑是加载一个restnet50的模型,模型从cnstream代码示例中下载,然后在板卡上运行,没有进行前后处理。
(1)代码如下:
int main(int argc, char *argv[])
{
std::string model_name = "/data/model/resnet50_v0.13.0_4b_rgb_uint8.magicmind";
std::vector<magicmind::IRTTensor *> input_tensors_;
std::vector<magicmind::IRTTensor *> output_tensors_;
std::vector<void *> input_host_ptrs_;
std::vector<void *> output_host_ptrs_;
cnrtSetDevice(0);
magicmind::IModel *model = magicmind::CreateIModel();
model->DeserializeFromFile(model_name.c_str());
{
///////////////////Print info below//////////////////////
size_t size = 0;
model->GetSerializedModelSize(&size);
std::cout << "Create IModel done." << std::endl;
std::cout << "Name: " << model_name << " Size: " << size << std::endl;
std::cout << "Input num: " << model->GetInputNum() << std::endl;
std::cout << "Input info:[ " << std::endl;
auto names = model->GetInputNames();
// CHECK_EQ(names.size(), in_dims_.size());
auto dims = model->GetInputDimensions();
auto types = model->GetInputDataTypes();
for (uint32_t i = 0; i < names.size(); ++i)
{
std::cout << names[i] << ": " << dims[i] << ", " << magicmind::TypeEnumToString(types[i]) << std::endl;
}
std::cout << "]" << std::endl;
std::cout << "Output info:[ " << std::endl;
names = model->GetOutputNames();
dims = model->GetOutputDimensions();
types = model->GetOutputDataTypes();
for (uint32_t i = 0; i < names.size(); ++i)
{
std::cout << names[i] << ": " << dims[i] << ", " << magicmind::TypeEnumToString(types[i]) << std::endl;
}
std::cout << "]" << std::endl;
////////////////////////////////////////////////////////
}
magicmind::IEngine *engine = model->CreateIEngine();
magicmind::IContext *context_ = engine->CreateIContext();
context_->CreateInputTensors(&input_tensors_);
context_->CreateOutputTensors(&output_tensors_);
auto input_dim_vec = model->GetInputDimension(0).GetDims();
if (input_dim_vec[0] == -1)
{
input_dim_vec[0] = 4;
}
magicmind::Dims input_dims = magicmind::Dims(input_dim_vec);
for (uint32_t i = 0; i < input_tensors_.size(); ++i)
{
input_tensors_[i]->SetDimensions(input_dims);
auto input_size = input_tensors_[i]->GetSize();
std::cout << "input_tensors_[i]->GetSize():" << input_size << std::endl;
void *input_ptr = nullptr;
cnrtHostMalloc(&input_ptr, input_size);
input_host_ptrs_.push_back(input_ptr);
// Some network has param as input, Host address will speed them up.
if ((input_tensors_[i]->GetMemoryLocation() == magicmind::TensorLocation::kMLU) ||
(input_tensors_[i]->GetMemoryLocation() == magicmind::TensorLocation::kRemoteMLU))
{
input_tensors_[i]->SetData(MallocMLUAddr(input_size));
Memcpy(input_tensors_[i]->GetMutableData(), input_ptr, input_size, true);
std::cout << "copy data host2device size=" << input_size << std::endl;
}
else
{
input_tensors_[i]->SetData(input_ptr);
}
}
magicmind::Status isOk = context_->InferOutputShape(input_tensors_, output_tensors_);
if (magicmind::Status::OK() == isOk)
{
for (uint32_t i = 0; i < model->GetOutputNum(); ++i)
{
void *out_ptr = nullptr;
auto output_size = output_tensors_[i]->GetSize();
cnrtHostMalloc(&out_ptr, output_size);
std::cout << "output_tensors_[i]->GetSize():" << output_size << std::endl;
magicmind::Status isOk = output_tensors_[i]->SetData(out_ptr);
if (isOk != magicmind::Status::OK())
{
std::cout << "SetData message=" << isOk.error_message() << std::endl;
}
output_host_ptrs_.push_back(out_ptr);
}
}
cnrtQueue_t queue_ = nullptr;
cnrtQueueCreate(&queue_);
isOk = context_->Enqueue(input_tensors_, output_tensors_, queue_);
if (isOk != magicmind::Status::OK())
{
std::cout << "Enqueue message=" << isOk.error_message() << std::endl;
}
cnrtQueueSync(queue_);
#if 0
for (uint32_t i = 0; i < output_tensors_.size(); ++i)
{
auto size = output_tensors_[i]->GetSize();
// fill in input data
Memcpy(output_host_ptrs_[i], output_tensors_[i]->GetMutableData(), size, false);
}
#endif
getchar();
return 0;
}(2)运行结果如下:

(3)驱动和软件信息如下:



(4)模型和代码见附件,其去掉后缀.txt
resnet50_v0.13.0_4b_rgb_uint8.magicmind.txt
core_1676658283_pid_49159_mluid_0_queue_670.cndump.txt
热门帖子
精华帖子