廊坊市网站建设_网站建设公司_营销型网站_seo优化
2025/12/17 17:21:04 网站建设 项目流程

目录

1 原始代码

2 修改后代码

3 其他类似的代码规范


1 原始代码

else if ("MIGRAPHX" == ort_ep) { OrtMIGraphXProviderOptions migraphx_options; migraphx_options.device_id = instance_group_device_id; migraphx_options.migraphx_fp16_enable=0; migraphx_options.migraphx_int8_enable=0; RETURN_IF_ORT_ERROR(ort_api->SessionOptionsAppendExecutionProvider_MIGraphX( soptions, &migraphx_options)); printf("model: %s ort_ep is ================ %s\n", (*model_path).c_str(), ort_ep.c_str()); }

报错

name is =============MIGRAPHX model: ./test_models_yolov7tiny/resnet_50/1/model.onnx ort_ep is ================ ROCM model: ./test_models_yolov7tiny/yolov5m/1/model.onnx ort_ep is ================ MIGRAPHX MIGraphX Error: /home/migraphx/src/file_buffer.cpp:38: generic_read_file: Failure opening file: name is =============MIGRAPHX

然后包段错误Segmentation fault (core dumped)了,

2 修改后代码

最终排查,修改代码为

else if ("MIGRAPHX" == ort_ep) { // MIGraphX Execution Provider OrtMIGraphXProviderOptions migraphx_options; memset(&migraphx_options, 0, sizeof(migraphx_options)); migraphx_options.device_id = instance_group_device_id; // 建议默认关闭 fp16 / int8,由模型显式控制 migraphx_options.migraphx_fp16_enable = 0; migraphx_options.migraphx_int8_enable = 0; RETURN_IF_ORT_ERROR( ort_api->SessionOptionsAppendExecutionProvider_MIGraphX( soptions, &migraphx_options)); LOG_MESSAGE( TRITONSERVER_LOG_VERBOSE, (std::string("MIGraphX Execution Provider is set for model '") + Name() + "' on device " + std::to_string(instance_group_device_id)) .c_str()); }

其实增加一行memset就可以解决了。因为里面的某些垃圾值导致的报错。

海康威视的代码规范性要求结构体必须memset,否则大组内邮件通报批评,现在理解了。

3 其他类似的代码规范

  • 变量声明时要进行初始化
  • 指针生命时要赋值NULL或nullptr
  • 结构体或者申请的内存,都要进行memset
  • 指针free之后要赋值为nullptr
  • 函数内部刚进去要对所有的参数进行规范性检查
  • 要对函数的返回值进行检查
  • ... ... ...

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询