0个粉丝

1

问答

0

专栏

0

资料

 发布于  2025-05-13 09:18:02
采纳率 0%
1个问答
801

海思ss928|3403模型加载失败,svp_npu_runtime_mem_flush_cache_with_phys_addr [Line]:381 [Info]:Error, flush cac

     
问题描述

使用以下链接中提供的demo
https://mp.weixin.qq.com/s/MTKcPa0ZHU8EyJkdpM94eQ
在ss928上运行yolov5,yolov8时模型无法加载,报错如下:

软硬件版本

硬件:易佰纳海鸥派4G
系统:易佰纳ubuntu_v1.1.1
SDK:SS928 V100R001C02SPC022(Update)

问题出现的环境背景及自己尝试过哪些方法

模型使用公众号里docker提供的yolov5_original.om,根据公众号的方法或者sdk例程中readme的方法转换的yolov8_original.om模型,上述模型加载时均报相同的错误。

相关代码

void* Utils::ReadBinFile(const std::string& fileName, uint32_t &fileSize)
{
    struct stat sBuf;
    int fileStatus = stat(fileName.data(), &sBuf);
    if (fileStatus == -1) {
        ERROR_LOG("failed to get file %s", fileName.c_str());
        return nullptr;
    }
    if (S_ISREG(sBuf.st_mode) == 0) {
        ERROR_LOG("%s is not a file, please enter a file", fileName.c_str());
        return nullptr;
    }
    std::ifstream binFile(fileName, std::ifstream::binary);
    if (binFile.is_open() == false) {
        ERROR_LOG("open file %s failed", fileName.c_str());
        return nullptr;
    }
    binFile.seekg(0, binFile.end);
    int binFileBufferLen = binFile.tellg();
    if (binFileBufferLen == 0) {
        ERROR_LOG("binfile is empty, filename is %s", fileName.c_str());
        binFile.close();
        return nullptr;
    }
    binFile.seekg(0, binFile.beg);
    void* binFileBufferData = nullptr;
    svp_acl_error ret = svp_acl_rt_malloc(&binFileBufferData, binFileBufferLen, SVP_ACL_MEM_MALLOC_NORMAL_ONLY);
    if (ret != SVP_ACL_SUCCESS) {
        ERROR_LOG("malloc device buffer failed. size is %u", binFileBufferLen);
        binFile.close();
        return nullptr;
    }
    InitData(static_cast<int8_t*>(binFileBufferData), binFileBufferLen);

    binFile.read(static_cast<char *>(binFileBufferData), binFileBufferLen);
    binFile.close();
    fileSize = static_cast<uint32_t>(binFileBufferLen);
    return binFileBufferData;
}

Result ModelProcess::LoadModelFromFileWithMem(const std::string& modelPath)
{
    uint32_t fileSize = 0;
    modelMemPtr_ = Utils::ReadBinFile(modelPath, fileSize);
    modelMemSize_ = fileSize;
    svp_acl_error ret = svp_acl_mdl_load_from_mem(static_cast<uint8_t* >(modelMemPtr_), modelMemSize_, &modelId_);
    if (ret != SVP_ACL_SUCCESS) {
        svp_acl_rt_free(modelMemPtr_);
        ERROR_LOG("load model from file failed, model file is %s", modelPath.c_str());
        return FAILED;
    }

    loadFlag_ = true;
    INFO_LOG("load model %s success", modelPath.c_str());
    return SUCCESS;
}
我来回答
回答3个
时间排序
认可量排序

木木

15个粉丝

1

问答

2

专栏

0

资料

木木 2025-05-20 09:41:55
认可0

SDK arch must be 0x1000000 ,估计是SDK版本问题,换不带update的版本吧

木木

15个粉丝

1

问答

2

专栏

0

资料

木木 2025-05-20 09:45:17
认可0

引用 @木木 “SDK arch must be 0x1”

SDK:SS928 V100R001C02SPC022(Update) 就用这个版本的atc工具,或者换回SDK:SS928 V100R001C02SPC022

0个粉丝

1

问答

0

专栏

0

资料

该用户已注销 2025-05-20 10:34:29
认可0

多谢大佬

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区