切换版块
×
基础软件平台
PyTorch开发
TensorFlow开发
编解码及SDK开发
BANG语言与计算库
开发工具链
MagicMind开发
软件栈百科
云平台集成
硬件产品专区
大模型专区
寒武纪® AIDC® MLU370®系列加速卡
MLU200系列AI加速产品
经验方案交流区
经验案例与实践分享
开发者服务
开发者活动
公告与版务
高校支持
《智能计算系统》
签到
版块
社区
文档
SDK下载
370系列
200系列
开发平台
官网首页
注册
登录
全部版块
基础软件平台
硬件产品专区
经验方案交流区
开发者服务
高校支持
发布新帖
登录/注册
LV.1
wyy
162
积分
27
赞
3
帖子
37
回复
19
收藏
TA的动态
TA的帖子
TA的回复
离线推理示例程序mlp的疑问
我的回复:#10lyt_1010回复我按照示例程序写(input是16个3*224*224的图片): cnrtFunction_t function; cnrtCreateFunction(&function); cnrtExtractFunction(&function, model, name); int inputNum, outputNum; int64_t *inputSizeS, *outputSizeS; printf("inputNum: %d.\n", inputNum); printf("outputNum: %d.\n", outputNum); cnrtGetInputDataSize(&inputSizeS, &inputNum, function); cnrtGetOutputDataSize(&outputSizeS, &outputNum, function); 输出的inputNum和outputNum并不是16和16,而是0和1024。您知道这是怎么回事吗?这是属于默认设置吗?您说是通过接口获得的,这个接口是保存在模型中的吗,具体的接口是什么呢?我还有一个疑问就是示例程序中是load的模型的后缀是.mef,我们的离线模型生成的时候出现的是.cambricon和.cambricon_twins为后缀名的两个文件,所以我load时load的是.cambricon文件,我的这个操作是否 是错误的呢? 谢谢您!刚刚接触这部分,可能问题比较多展开接口就是cnrt的接口,您可以参考cnrt文档查看。离线推理load的就是cambricon文件哦。
0
离线推理示例程序mlp的疑问
我的回复:#6lyt_1010回复请问流程是不是: 1.先分配cpu内存 2.根据cpu内存分配相应的mlu内存 3.将cpu上的数据拷贝到mlu 4.数据在mlu上做离线推理 5.将推理结果放到cpu上 这里我有一个疑问:第3步的数据是如何放入cpu的,这个离线示例程序里边有这一步吗? 谢谢您的解答展开流程步骤是这样的,这个例子里好像是缺了将输入数据拷入到cpu这一步。 你还可以参考论坛中其他离线推理的例子:http://forum.cambricon.com/show-3-688-1.html
0
离线推理示例程序mlp的疑问
我的回复:#5lyt_1010回复如果我输入的数据是16个3*224*224的数据,那么我*inputSizeS的大小是3*224*224的,还是16*3*224*224的?这个*inputSizeS是人为给定的吗(人为开辟一个空间,令指针指向这个空间)?谢谢您的解答展开是16*3*224*224*sizeof(输入数据类型) int64_t *inputSizeS, *outputSizeS; cnrtGetInputDataSize(&inputSizeS, &inputNum, function); cnrtGetOutputDataSize(&outputSizeS, &outputNum, function); 不是人为开辟的,只是设置了两个指针,将指针地址传递到了上面两个接口中,两个接口执行完,这两个指针就有指向的数据空间了
0
离线推理示例程序mlp的疑问
我的回复:#4lyt_1010回复我想问下您,我可以人为设置int inputNum=1, outputNum=1吗?还是说inputNum和outputNum是通过某个接口得到的结果,不可以人为设置?谢谢您的解答展开不是人为设置的,这些参数是对应网络结构的输入输出个数的,生成离线模型后保存在其中,通过接口获取到。
0
离线推理示例程序mlp的疑问
我的回复:3.模型可能有多个输入、输出,*inputSizeS存储每个输入大小, *outputSizeS存储每个输出大小
0
离线推理示例程序mlp的疑问
我的回复:2、void **inputCpuPtrS = (void **)malloc(inputNum * sizeof(void *));void **outputCpuPtrS = (void **)malloc(outputNum * sizeof(void *));这两个是为cpu上的输入、输出构建了对应输入、输出个数的指针空间真正的数据处理是在下面的代码中:// prepare input buffer for (int i = 0; i < inputNum; i++) { // converts data format when using new interface model inputCpuPtrS[i] = malloc(inputSizeS[i]); // malloc mlu memory cnrtMalloc(&(inputMluPtrS[i]), inputSizeS[i]); cnrtMemcpy(inputMluPtrS[i], inputCpuPtrS[i], inputSizeS[i], CNRT_MEM_TRANS_DIR_HOST2DEV); } // copy mlu result to cpu for (int i = 0; i < outputNum; i++) { cnrtMemcpy(outputCpuPtrS[i], outputMluPtrS[i], outputSizeS[i], CNRT_MEM_TRANS_DIR_DEV2HOST); }
0
离线推理示例程序mlp的疑问
我的回复:1、输入输出相关信息是存储在离线模型中的,也可以在其孪生文件.cambricon_twins中查看到,然后可以使用cnrtGetInputDataSize()和cnrtGetOutputDataSize()接口获取
0
请问哪位大佬有有关离线推理的比较简单的入门材料?
我的回复:你可以参考这个链接哦:https://www.cambricon.com/docs/cnrt/user_guide_html/example/offline_mode.html
0
以矩阵乘demo为例的BANG C编程指南
我的回复:#16weifengliu回复你好,请问GDRAM向SRAM拷贝数据异常报错该如何处理呢?(仅拷贝,不操作,且没有访问非法内存。。);报错如下:[代码]下图是部分源代码:[图片]展开你好,能否提供以下完整的代码截图呢
21
CUDA转BANG C示例指南系列连载之一 BANG C编程基础
我的回复:#1RhythmLian回复你好,请问NRAM上可以开辟动态内存吗?应该通过哪个API来申请呢?NRAM空间比较小,你可以将NRAM空间一次初始化,然后使用指针挪动,划分不同的地址范围给不同的变量。
3
上一页
1
2
下一页
Github
开发平台
文档中心
新手必读
官方微信
版权所有 © 2025 寒武纪 Cambricon.com 备案/许可证号:
京ICP备17003415号-1
关闭