切换版块
×
基础软件平台
PyTorch开发
TensorFlow开发
编解码及SDK开发
BANG语言与计算库
开发工具链
MagicMind开发
软件栈百科
云平台集成
硬件产品专区
MLU370系列AI加速卡
MLU270系列AI加速卡
MLU220系列AI加速产品
经验方案交流区
经验案例与实践分享
开发者服务
开发者活动
公告与版务
高校支持
《智能计算系统》
签到
版块
社区
文档
SDK下载
370系列
200系列
开发平台
官网首页
注册
登录
全部版块
基础软件平台
硬件产品专区
经验方案交流区
开发者服务
高校支持
发布新帖
登录/注册
LV.1
wyy
162
积分
27
赞
3
帖子
37
回复
18
收藏
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
开发平台
文档中心
新手必读
官方微信
版权所有 © 2024 寒武纪 Cambricon.com 备案/许可证号:
京ICP备17003415号-1
关闭