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

CANN/GE UDF接口列表

UDF接口列表

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

本文档主要描述UDF(User Defined Function)模块对外提供的接口,用户可以调用这些接口进行自定义处理函数的开发,然后通过DataFlow构图在CPU上执行该处理函数。

您可以在“${INSTALL_DIR}/include/flow_func”查看对应接口的头文件。

${INSTALL_DIR}请替换为CANN软件安装后文件存储路径。若安装的Ascend-cann-toolkit软件包,以root安装举例,则安装后文件存储路径为:/usr/local/Ascend/cann。

接口分类及对应头文件

表 1接口分类及对应头文件

接口分类头文件路径简介
AttrValue类attr_value.h用于获取用户设置的属性值。
AscendString类ascend_string.h对String类型的封装。
MetaContext类meta_context.h用于UDF上下文信息相关处理,如申请tensor和获取设置的属性等操作。
FlowMsg类flow_msg.h用于处理flow func输入输出的相关操作。
Tensor类flow_msg.h用于执行Tensor的相关操作。
MetaFlowFunc类meta_flow_func.h该类在meta_flow_func.h中定义,用户继承该类进行自定义的单func处理函数的编写。
MetaMultiFunc类meta_multi_func.h该类在meta_multi_func.h中定义,用户继承该类进行自定义的多func处理函数的编写。
FlowFuncRegistrar类meta_multi_func.h该类在meta_multi_func.h中定义,是注册MetaMultiFunc的辅助模板类。
MetaParams类meta_params.h该类在meta_params.h中定义,在FlowFunc的多func处理函数中使用该类获取共享的变量信息。
MetaRunContext类meta_run_context.h用于执行FlowFunc的多func处理函数的上下文信息相关处理,如申请Tensor、设置输出、运行FlowModel等操作。
OutOptions类out_options.h业务发布数据时,为了携带相关的option,提供了输出options的类。
BalanceConfig类balance_config.h当需要均衡分发时,需要设置输出数据标识和权重矩阵相关配置信息,根据配置调度模块可以完成多实例之间的均衡分发。
FlowBufferFactory类flow_msg.h-
FlowMsgQueue类flow_msg_queue.h流式输入场景下(即flow func函数入参为队列时),用于flow func的输入队列,队列中的数据对象为FlowMsg类。
注册宏meta_flow_func.h
meta_multi_func.h
-
UDF日志接口flow_func_log.hflow_func_log.h提供了日志接口,方便flowfunc开发中进行日志记录。
错误码flow_func_defines.h-

AttrValue类

表 2AttrValue类接口

接口名称简介
AttrValue构造函数和析构函数AttrValue构造函数和析构函数。
GetVal(AscendString &value).md)获取string类型的属性值。
GetVal(std::vector &value).md)获取list string类型的属性值。
GetVal(int64_t &value).md)获取int类型的属性值。
GetVal(std::vector<int64_t> &value).md)获取list int类型的属性值。
GetVal(std::vector<std::vector<int64_t >> &value).md)获取list list int类型的属性值。
GetVal(float &value).md)获取float类型的属性值。
GetVal(std::vector &value).md)获取list float类型的属性值。
GetVal(bool &value).md)获取bool类型的属性值。
GetVal(std::vector &value).md)获取list bool类型的属性值。
GetVal(TensorDataType &value).md)获取TensorDataType类型的属性值。
GetVal(std::vector &value).md)获取list TensorDataType类型的属性值。

AscendString类

表 3AscendString类接口

接口名称简介
AscendString构造函数和析构函数AscendString构造函数和析构函数。
GetString获取字符串地址。
关系符重载对于AscendString对象大小比较的使用场景(例如map数据结构的key进行排序),通过重载以下关系符实现。
GetLength获取字符串的长度。

MetaContext类

表 4MetaContext类接口

接口名称简介
MetaContext构造函数和析构函数MetaContext构造函数和析构函数。
AllocTensorMsg(MetaContext类)根据shape和data type申请Tensor类型的msg。该函数供Proc调用。
AllocEmptyDataMsg(MetaContext类)申请空数据的MsgType类型的message。该函数供Proc调用。
SetOutput(MetaContext类,tensor)设置指定index的output的tensor。该函数供Proc调用。
GetAttr(MetaContext类,获取指针)根据属性名获取AttrValue类型的指针。该函数供Init(MetaFlowFunc类)调用。
GetAttr(MetaContext类,获取属性值)根据属性名获取对应的属性值。该函数供Init(MetaFlowFunc类)调用。
RunFlowModel(MetaContext类)同步执行指定的模型。该函数供Proc调用。
GetInputNum(MetaContext类)获取Flowfunc的输入个数。该函数供Init(MetaFlowFunc类)调用。
GetOutputNum(MetaContext类)获取Flowfunc的输出个数。该函数供Init(MetaFlowFunc类)调用。
GetWorkPath(MetaContext类)获取Flowfunc的工作路径。该函数供Init(MetaFlowFunc类)调用。
GetRunningDeviceId(MetaContext类)获取正在运行的设备ID。该函数供Init(MetaFlowFunc类)调用。
GetUserData(MetaContext类)获取用户数据。该函数供Proc调用。
AllocTensorMsgWithAlign(MetaContext类)根据shape、data type和对齐大小申请Tensor类型的FlowMsg,与AllocTensorMsg函数区别是AllocTensorMsg默认申请以64字节对齐,此函数可以指定对齐大小,方便性能调优。
RaiseException(MetaContext类)UDF主动上报异常,该异常可以被同作用域内的其他UDF捕获。
GetException(MetaContext类)UDF获取异常,如果开启了异常捕获功能,需要在UDF中Proc函数开始位置尝试捕获异常。

FlowMsg类

表 5FlowMsg类接口

接口名称简介
FlowMsg构造函数和析构函数FlowMsg构造函数和析构函数。
GetMsgType(FlowMsg类)获取FlowMsg的消息类型。
GetTensor(FlowMsg类)获取FlowMsg中的Tensor指针。
SetRetCode(FlowMsg类)设置FlowMsg消息中的错误码。
GetRetCode(FlowMsg类)获取输入FlowMsg消息中的错误码。
SetStartTime(FlowMsg类)设置FlowMsg消息头中的开始时间戳。
GetStartTime(FlowMsg类)获取FlowMsg消息中的开始时间戳。
SetEndTime(FlowMsg类)设置FlowMsg消息头中的结束时间戳。
GetEndTime(FlowMsg类)获取FlowMsg消息中的结束时间戳。
SetFlowFlags(FlowMsg类)设置FlowMsg消息头中的flags。
GetFlowFlags(FlowMsg类)获取FlowMsg消息头中的flags。
SetRouteLabel设置路由的标签。
GetTransactionId(FlowMsg类)获取FlowMsg消息中的事务ID,事务ID从1开始计数,每feed一批数据,事务ID会加一,可用于识别哪一批数据。
GetTensorList返回FlowMsg中所有的Tensor指针列表。
GetRawData(FlowMsg类)获取RawData类型的数据对应的数据指针和数据大小。
SetMsgType(FlowMsg类)设置FlowMsg的消息类型。
SetTransactionId(FlowMsg类)设置FlowMsg消息中的事务ID。

Tensor类

表 6Tensor类接口

接口名称简介
Tensor构造函数和析构函数Tensor构造函数和析构函数。
GetShape获取Tensor的Shape。
GetDataType获取Tensor中的数据类型。
GetData获取Tensor中的数据。
GetDataSize获取Tensor中的数据大小。
GetElementCnt获取Tensor中的元素的个数。
GetDataBufferSize获取Tensor中的对齐后的数据大小。
Reshape对Tensor进行Reshape操作,不改变Tensor的内容。

MetaFlowFunc类

表 7MetaFlowFunc类接口

接口名称简介
MetaFlowFunc构造函数和析构函数用户继承该类进行自定义的单func处理函数的编写。在析构函数中,执行释放相关资源操作。
SetContext设置flow func的上下文信息。
Init(MetaFlowFunc类)用户自定义flow func的初始化函数。
Proc用户自定义flow func的处理函数。
RegisterFlowFunc注册flow func。
不建议直接使用该函数,建议使用MetaFlowFunc注册函数宏来注册flow func。
ResetFlowFuncState(MetaFlowFunc类)在故障恢复场景下,快速重置FlowFunc为初始化状态。
其他REGISTER_FLOW_FUNC_INNER(name, ctr, clazz)和REGISTER_FLOW_FUNC_IMPL(name, ctr, clazz)是MetaFlowFunc注册函数宏的实现,不建议用户直接调用。

MetaMultiFunc类

表 8MetaMultiFunc类接口

接口名称简介
MetaMultiFunc构造函数和析构函数用户继承该类进行自定义的多func处理函数的编写。在析构函数中,执行释放相关资源操作。
Init(MetaMultiFunc类)用户自定义flow func的初始化函数。
多func处理函数用户自定义多flow func的处理函数。
RegisterMultiFunc注册多flow func。
不建议直接使用该函数,建议使用MetaMultiFunc注册函数宏来注册flow func。
ResetFlowFuncState(MetaMultiFunc类)在故障恢复场景下,快速重置FlowFunc为初始化状态。

FlowFuncRegistrar类

表 9FlowFuncRegistrar类接口

接口名称简介
RegProcFunc注册多flow func处理函数,结合MetaMultiFunc注册函数宏来注册flow func。
CreateMultiFunc创建多func处理对象和处理函数,框架内部使用,用户不直接使用。

MetaParams类

表 10MetaParams类接口

接口名称简介
MetaParams构造函数和析构函数MetaParams构造函数和析构函数。
GetName获取Flowfunc的实例名。
GetAttr(MetaParams类,获取指针)根据属性名获取AttrValue类型的指针。该函数供Init(MetaFlowFunc类)调用。
GetAttr(MetaParams类,获取属性值)根据属性名获取对应的属性值。该函数供Init(MetaFlowFunc类)调用。
GetInputNum(MetaParams类)获取Flowfunc的输入个数。该函数供Init(MetaFlowFunc类)调用。
GetOutputNum(MetaParams类)获取Flowfunc的输出个数。该函数供Init(MetaFlowFunc类)调用。
GetWorkPath(MetaParams类)获取Flowfunc的工作路径。该函数供Init(MetaFlowFunc类)调用。
GetRunningDeviceId(MetaParams类)获取正在运行的设备ID。

MetaRunContext类

表 11MetaRunContext类接口

接口名称简介
MetaRunContext构造函数和析构函数MetaRunContext构造函数和析构函数。
AllocTensorMsg(MetaRunContext类)根据shape和data type申请Tensor类型的msg。该函数供Proc调用。
SetOutput(MetaRunContext类,tensor)设置指定index的output的tensor。该函数供Proc调用。
RunFlowModel(MetaRunContext类)同步执行指定的模型。该函数供Proc调用。
AllocEmptyDataMsg(MetaRunContext类)申请空数据的MsgType类型的message。
GetUserData(MetaRunContext类)获取用户数据。该函数供Proc调用。
SetOutput(MetaRunContext类,输出)设置指定index和options的输出,该函数供func函数调用。
SetMultiOutputs批量设置指定index和options的输出,该函数供func函数调用。
AllocTensorMsgWithAlign(MetaRunContext类)根据shape、data type和对齐大小申请Tensor类型的FlowMsg,与AllocTensorMsg函数区别是AllocTensorMsg默认申请以64字节对齐,此函数可以指定对齐大小,方便性能调优。
AllocTensorListMsg根据输入的dtype shapes数组分配一块连续内存,用于承载Tensor数组。
RaiseException(MetaRunContext类)UDF主动上报异常,该异常可以被同作用域内的其他UDF捕获。
GetException(MetaRunContext类)UDF获取异常,如果开启了异常捕获功能,需要在UDF中Proc函数开始位置尝试捕获异常。
AllocRawDataMsg(MetaRunContext类)根据输入的size申请一块连续内存,用于承载RawData类型的数据。
ToFlowMsg根据输入的Tensor转换成用于承载Tensor的FlowMsg。

OutOptions类

表 12OutOptions类接口

接口名称简介
OutOptions构造函数和析构函数OutOptions的构造和析构函数。
MutableBalanceConfig获取或创建BalanceConfig。
GetBalanceConfig获取BalanceConfig。

BalanceConfig类

表 13BalanceConfig类接口

接口名称简介
BalanceConfig构造函数和析构函数BalanceConfig的构造和析构函数。
SetAffinityPolicy设置均衡分发亲和性。
GetAffinityPolicy获取亲和性。
SetBalanceWeight设置均衡分发权重信息。
GetBalanceWeight获取均衡分发权重信息。
SetDataPos设置输出数据对应权重矩阵中的位置。
GetDataPos获取输出数据对应权重矩阵中的位置。

FlowBufferFactory类

表 14FlowBufferFactory类接口

接口名称简介
AllocTensor(FlowBufferFactory类)根据shape、data type和对齐大小申请Tensor,默认申请以64字节对齐,可以指定对齐大小,方便性能调优。

FlowMsgQueue类

表 15FlowMsgQueue类接口

接口名称简介
FlowMsgQueue构造函数和析构函数FlowMsgQueue的构造和析构函数。
Dequeue设置均衡分发亲和性。
Depth获取队列的深度,即获取队列可容纳元素的最大个数。
Size获取队列中当前元素的个数。

注册宏

表 16注册宏

接口名称简介
MetaFlowFunc注册函数宏注册MetaFlowFunc的实现类。
MetaMultiFunc注册函数宏注册MetaMultiFunc的实现类。

UDF日志接口

表 17UDF日志接口

接口名称简介
FlowFuncLogger构造函数和析构函数FlowFuncLogger构造函数和析构函数。
GetLogger获取日志实现类。
GetLogExtHeader获取日志扩展头信息。
IsLogEnable查询对应级别和类型的日志是否开启。
Error记录ERROR级别日志。
Warn记录Warn级别日志。
Info记录Info级别日志。
Debug记录Debug级别日志。
运行日志Error级别日志宏运行日志Error级别日志宏。
运行日志Info级别日志宏运行日志Info级别日志宏。
调试日志Error级别日志宏调试日志Error级别日志宏。
调试日志Warn级别日志宏调试日志Warn级别日志宏。
调试日志Info级别日志宏调试日志Info级别日志宏。
调试日志Debug级别日志宏调试日志Debug级别日志宏。

错误码

表 18错误码

错误码模块简介
flowfunc提供了flowfunc的错误码供用户使用,主要用于对异常逻辑的判断处理。
AICPUAICPU在执行模型的过程中,有可能向用户上报的错误码。

【免费下载链接】geGE(Graph Engine)是面向昇腾的图编译器和执行器,提供了计算图优化、多流并行、内存复用和模型下沉等技术手段,加速模型执行效率,减少模型内存占用。 GE 提供对 PyTorch、TensorFlow 前端的友好接入能力,并同时支持 onnx、pb 等主流模型格式的解析与编译。项目地址: https://gitcode.com/cann/ge

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.jsqmd.com/news/783456/

相关文章:

  • 实拍实测!兰州儿童摄影推荐TOP3,看完再选不踩雷 - 江湖评测
  • 诺基亚23亿美元收购英飞朗,昔日手机霸主借光通信转型AI算力时代
  • 2026 海口财税 Q2 季度:注册公司代办,代理记账,高新企业认证靠谱机构十大推荐排行 - 品牌优企推荐
  • 从开发者反馈看 Taotoken 在高峰时段的 API 响应稳定性
  • 量子计算在化学模拟中的应用与iQCC方法解析
  • 【计算机毕业设计】基于 Python + PyTorch 的神经点云压缩实验系统(源码+数据库+文档+部署)
  • MySQL数据库表结构设计最佳实践_规范化设计提升查询性能
  • 数据中台不是终点,数据治理才是起点——2026六大主流平台对比与选型框架
  • 能量阀工厂
  • 2026环氧地坪漆、地坪漆环氧地坪源头厂家的靠谱推荐 哪家好 - 奔跑123
  • CANN/Ascend C开发套件
  • day19_线性回归
  • 告别毕业季双重内耗:Paperxie 用一套流程,搞定论文查重与 AI 痕迹通关
  • GPT-4与GPT-3错误信息识别能力深度对比与工程实践指南
  • 君乐宝优萃宝爱奶粉怎么样?2026年走心测评:从奶源到配方一次说清 - 速递信息
  • CANN/pto-isa内存操作(GM <-> Tile)
  • 使用Taotoken后我们网站的AI服务延迟体感明显下降
  • 2026年沥青加温设备、筑路设备源头厂家采购完全指南——德州霖垚筑路设备官方对接 - 企业名录优选推荐
  • 接入Taotoken后从API响应时间体感上感知到的服务延迟优化
  • 2026年高性价比国产管夹式流量计替代:五家优选深度对比 - 科技焦点
  • 机器学习预测磁性材料临界温度:从数据驱动到物理洞察
  • 职场中的年羹尧
  • 医疗影像AI落地实战:从AGI大模型到临床小模型的对齐与轻量化
  • 河北筑盛建筑工程:行唐市政道路沥青施工推荐几家 - LYL仔仔
  • 基于强化学习的量子热机反馈控制:DDPG算法实现与优化
  • R数据导入全链路实战:从CSV到SPSS、FWF与大文件处理
  • CANN/pto-isa矩阵乘法操作参考
  • 2026年山东沥青加温设备与道路养护筑路设备采购完全指南 - 企业名录优选推荐
  • CANN/metadef动态算子自动映射
  • CANN Runtime API 参考