当前位置: 首页 > news >正文

郑州网站建设精英咸阳seo公司

郑州网站建设精英,咸阳seo公司,公司网站实名认证怎么做,平面设计找素材的网站1 模型离线推理 各步要解析如下: HostDevice内存管理与数据传输: HostDevice上的内存申请与释放#xff0c;内存间的相互拷贝;模型加载:将离线的om文件加载到Device上;在样例的资源初始化模块中进行。模型输入输出准备∶根据禹线om的输入输出#xff0c;在Device…1 模型离线推理 各步要解析如下: HostDevice内存管理与数据传输: HostDevice上的内存申请与释放内存间的相互拷贝;模型加载:将离线的om文件加载到Device上;在样例的资源初始化模块中进行。模型输入输出准备∶根据禹线om的输入输出在Device上申请好模型的输入输出内存;在样例的资源初始化模炔中进行。执行推理:当模型的输入内存获取到有效数据后便可以调用AscendCL接口执行模型推理推理完成后结果生成到输出内存中;在样例的模型推理模块中进行。输出解析︰使用AscendCL接口将模型输出数据从特定格式中解析出来;在输出数据处理模块中进行。下面将按步要进行说明。 2 HostDevice内存管理与数据传输 代码中加载输入数据时需要申请Host内存进行存储当输入数据处理完毕后需要将处理完成的数据从Host内存拷贝到Device的模型输入内存中。以便于Device进行模型推理的专用计算。 以上就是HostDevice内存管理与数据传输的典型场景。对于HostDevice内存管理与数据传输来说实际上就是: Host内存管理: Host侧内存申请与释放Device内存管理:Device侧内存串请与释放HostDevice数据传输: Host和Device上的内存拷贝 内存管理中其它功能:内存初始化:对申请出来的Host或Device内存进行初始 化。Device内存查询:查询Deivce上有多少内存。 2.1 Host侧内存申请与释放 Host侧内存申请与释放接口的使用方式比较简单。函数原型如下: aclError aclrtMallocHost(oid**hostPtr, size_t size);acError aclrtFreeHost(void*hostPtr);其中aclrtMallocHost是内存申请接口。aclrtFreeHost是其对应的释放接口;调用伪代码如下 void *hostlnput nullptr; int64_t size_input 256; ret aclrtMallocHost(8hostlnput, size_input);if (hostlnput I nullptr){ ret aclrtFreeHost(hostlnput); }注意:HostDevice申请和释放的配套关系类似1.acirtMalloc和aclrtFree要成对出现。 2.用aclrtMalloc申请出来的内存高要对齐。 内存大小向上对齐成32整数倍32字节(mALIGN_UPlen,32]32字节); 内存起始地址高满足64字节对齐(AilGN_UP[m,64])。 2.2 Device侧内存申请与释放 Device侧内存申语与释放接口和Host侧的很相似函数原型如下: aclError aclrtMalloclvoid **dePtr, size_t size,aclrtMemMallocPolicy policy); aclError aclrtFreelvoid *devPtr);申请内存的接口多了个参数: policy指明申请内存的策略。当前一共有三种策略可选: ACL MEM MALLOC HUGE FIRST:当申请内存小于等于1M申请普通页内存。当申请内存大于1M时优先申请天页内存如果不够。则使用普通内存AcL MEM_MALLOC_HUGE_ONLY:仅申请大页如果大页内存不够则返回 错误ACL MEM MALLOC_NORMAL ONLY:仅申请普通页 void*devlnput nullptr; size_input -256; ret aclrtMalloc(BdevInput size_input,ACL_MEM_MALLOC_HUGE_FIRST5;if (devlnput ! nullptr){ ret aclrtFree(devInput);}2.3 内存初始化 刚申请出来的内存里边的数据是随机的有时需要对其进行统—的初始化此时可以使用这个接口: aclError aclrtMemset(void *devPtr, size_t maxCount, int32_tvalue, size_t count); 其参数如下所示: devPtr: Host/Device上的内存的起始地址系统会根据地址自动判断内存位置- maxCount:内存的是大长度单位bytevalue:设置的值需要设置为指定值的内存长度单位Byte内存初始化的伪码如下: void *devlnput nullptr;size_input 256; ret aclrtMalloc(devInput, size_input,ACL_MEM_MALLOC_HUGE_FIRST; ret aclrtMemset(devlnput,size_input,,1,size_input);ret aclrtMallocHost(hostinput, size_input); aclrtMemcpy(devlnput size_input, hostlnput, size_input,ACL_MEMCPY_HoST_TO_DevIcE); ret aclrtFreeHost(hostlnput);ret aclrtFree(devlnput); ... ret aclrtMalloc(BdevInput size_input,ACL_MEM_MALLOC_HUGE_FIRST5;if (devlnput ! nullptr){ ret aclrtFree(devInput);} 2.4 数据传输 数据传输所使用的内存拷贝函数原型如下: aclError aclrtMemcpy(void *dst, size_t destMax,const void *src, size_t count, aclrtMemcpyKindkind);其参数如下所示;. dst:目的地址 . destMax:目的内存地址的最大内存长度单位Byte. src:源地址 . count:内存复制的长度单位Byte kind:内存复制的类型预留参数配置枚举值中的值无效。系统内部会根据源内存地址指针、目的内存地址指针判断是否可以将源地址的数据复制到目的地址如果不可以则系统会返回报错。 其中的关键为kind参数这里的kind实际上是一组枚举值枚举定义如下所示: typedef enum aclrtMemcpyKind { ACL_MEMCPY_HOST_To_HosT,i/ Host - HostACL_MEMCPY_HOST_TO_DEVICE,// Host - DeviceACL_MEMCPY_DEVlCE_TO_HOST,// Device - HostACL_MEMCPY_DEVICE_TO_DEVICE,// Device - Device} aclrtMemcpyKind; aclrtMemcpy(devlnput size_input, hostlnput, size_input,ACL_MEMCPY_HoST_TO_DevIcE); ret aclrtFreeHost(hostlnput);ret aclrtFree(devlnput); ... ret aclrtMalloc(BdevInput size_input,ACL_MEM_MALLOC_HUGE_FIRST5;if (devlnput ! nullptr){ ret aclrtFree(devInput);} 2.5 Device内存查询 程序运行过程中如何实时获取Device上有多少内存以及多少可用内存呢?那不妨试试下面这个接口 aclError aclrtGetMemInfo(aclrtMemAttr attr, size_t *free, size_t *total)其中的attr参数指的是内存的类型枚举定义如下所示: typedef enum aclrtMemAttr { ACL_DDR_MEM,//DDR内存DDR上所有大页内存普通内存ACL_HBM_MEM,/ /HBM内存HBM上所有大页内存普通内存ACL_DDR_MEM_HUGE,//DDR大页内存 AcL_DDR_MEM_NORMAL.1/DDR普通内存ACL_HBM_MEM_HUGE,//HBM大页内存ACL_HBM_MEM_NORMAL, //HBM普通内存 ACL_DDR_MEM_P2P_HUGE.//DDR中用于Device间数据复制的大页内存ACL_DDR_MEM_P2P_NORMAL//DDR中用于Device间数据复制的普通内存ACL_HBM_MEM_P2P_HUGE,//HBM中用于Device间数据复制的大页内存ACL_HBM_MEM_P2p_NORMAL.//HBM中用于Device间数据复制的普通内存 }aclrtMemAttr;这里提到了DDR和HBM在这里只需要知道Ascend910芯片中有HBM内存在内存申请时会优先使用使用完毕后再使用DDR内存;而Ascend310芯片中只有DDR内存。所以调用时只需要根据自己的场景查询所有内存即可。 3 模型加载 模型加载支持多种加载方式由用户根据需求选择从om模型文件或内存加载模型数据选择由用户自行管理内存或由AscendCL管理内存。而不管用哪种接口最终卸载时接口都是统一的。 4 模型输入输出准备 在调用AscendCL接口进行模型推理时模型推理有输入、输出数据输入、输出数据需要按照AscendCL规定的数据类型存放。相关数据类型如下: 使用aclmdlDesc类型的数据描述模型基本信息例如输入/输出的个数、数据类型、Format、维度信息等。使用acIDataBuffer类型的数据来描述每个输入/输出的内存地址、内存大小。使用aclmdIDataset类型的数据描述模型的输入、输出数据集。 5 执行推理并获取输出数据 准备好模型执行所需的输入、输出数据类型后存放好模型执行的输入数据后可以执行模型推理了。当前AscendCL支持同步模型执行、异步模型执行两种方式这里说的同步、异步是站在调用者和执行者的角度。 若调用模型执行的接口后需等待推理完成再返回则表示同步的。当用户调用同步模型执行接口后可直接从该接口的输出参数中获取模型执行的结果数据。接口调用逻辑简单。若调用模型执行的接口后不等待推理完成完成再返回则表示异步的。异步模型执行时AscendCL提供了Callback机利在指定时间内一旦有推理的结果数据就触发回调函数藐取推理结果提高处理效率。
http://www.hkea.cn/news/14577243/

相关文章:

  • 导航网站开发网站开发建
  • 上海市住房和城乡建设部网站网站正在建设中模板单页
  • 变更icp备案网站信息北京市家装公司排行榜
  • 安徽省建设干校学校网站宣传片制作公司价格
  • 上海网站外包建设免费网址大全免费观看
  • 深圳专业做网站的公司wordpress 批量漏洞
  • 赤峰网站开发公司最简单的cms网站怎么做
  • 学网站开发看什么书我的世界皮肤做壁纸的网站
  • 安徽网站推广优化提升学历最快的方法
  • 如何做网站产品经理天津建站服务
  • 网站改版要多少钱网站源代码怎么下载
  • 沈阳网站建设联系方式德州宁津网站建设
  • 大学网站建设的目标做网站经常加班还是app
  • 西安户县建设厅网站智能建站网站模板
  • 手机网站导航设计唐山网站制作企业
  • 建设电子网站试卷太阳宫网站建设
  • joomla网站模板wordpress 用户主页
  • 做兼职的网站都有哪些工作钢结构
  • 做网站数据库要建什么表c 网站开发入门视频
  • 怎么做离线网站义乌进货网
  • 郑州哪家公司做网站好大连中国建筑装饰网
  • 10个网站 云主机需求.net 网站开发视频教程
  • 苏州网站优化公司怎么添加网站后台
  • 珠海中企网站建设网站关键词分析
  • 泰州网站建设哪家好wordpress引用php文件
  • 闲鱼怎么做钓鱼网站建设摩托车官网中国官网报价大全
  • 网站建站公司有必要做吗网站结构布局
  • 如何做英文网站黑龙江省住房和城乡建设厅
  • 简述电子政务系统网站建设的基本过程电商网站建设题库
  • 淘宝上网站开发做什么网站比较简单