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

CANN/opbase预留执行器接口

预留接口

【免费下载链接】opbase本项目是CANN算子库的基础框架库,为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase

本章接口为预留接口,后续有可能变更或废弃,不建议开发者使用,开发者无需关注。

表 1接口列表

接口定义功能说明
aclOpExecutor()aclOpExecutor是用于记录整个host侧API运行信息的上下文结构,host侧API中几乎所有操作都以该数据结构为媒介,该函数为其构造函数。
CreateView(const aclTensor *tensor, const op::Shape &shape, int64_t offset)针对一个已有的aclTensor,创建一个它的view类tensor,两个tensor共享device内存,可以指定后者的shape和offset。
CreateView(const aclTensor *tensor, const op::Shape &oriShape, const op::Shape &storageShape, const op::Strides &oriStride, int64_t offset)针对一个已有的aclTensor,创建一个它的view类tensor,两个tensor共享device内存,可以指定后者的originShape、storageShape、originStride和offset。
UpdateTensorAddr(void *workspaceAddr, const size_t size)在workspace地址分配后,刷新每个workspace的地址。
GetWorkspaceAddr()获取workspace的起始指针。
GetWorkspaceSize()获取所需workspace的大小。
GetLinearWorkspaceSize()废弃接口,开发者无需关注。
GetWorkspaceOffsets()获取记录的workspace offset列表。
SetWorkspaceOffsets(const op::FVector<uint64_t> &workspaceOffsets)设置要记录的workspace offset列表。
Run()运行aclOpExecutor执行队列中的任务。
GetStream()获取当前执行流。
GetInputTensors()获取host侧API接口中的输入aclTensor。
GetOutputTensors()获取host侧API接口中的输出aclTensor。
GetLogInfo()获取aclOpExecutor中存储的日志相关信息。
SetLogInfo(const op::internal::OpLogInfo &logInfo)获取aclOpExecutor中存储的日志相关信息。
GetOpConfigInfo()获取算子运行时相关的配置信息。
SetOpConfigInfo(const op::OpConfigInfo &opConfigInfo)设置算子运行时相关的配置信息。
SetStream(aclrtStream stream)设置当前运行流。
AddTensorRelation(const aclTensor *tensorOut, const aclTensor *tensorMiddle)记录两个aclTensor间的地址等价关系,用于aclnn cache。
UpdateStorageAddr()在aclOpExecutor复用场景中,刷新aclTensor地址。
SetRepeatable()尝试设置当前aclOpExecutor为可复用状态。
IsRepeatable()判断当前aclOpExecutor是否为可复用状态。
FinalizeCache()完成aclnn cache最终的数据保存工作。
RepeatRunWithCache(void *workspaceAddr, const aclrtStream stream)复用aclOpExecutor场景,尝试利用aclnn cache完成任务执行。
CheckLauncherRepeatable()判断aclOpExecutor任务列表中的每个任务都允许aclOpExecutor复用。
AddCache()将aclOpExecutor中的aclnn cache保存到全局管理。
DeleteCache()删除aclnn cache。
GetOpExecCache()获取aclOpExecutor中记录的aclnn cache。
SetIOTensorList()记录host侧API的输入/输出aclTensor。
GetGraph()获取host侧API的执行图。
GetMagicNumber()获取magic number,用于不同对象的区分。
UniqueExecutor(const char *funcName)UniqueExecutor是aclOpExecutor的构造工厂,该函数为其构造函数。
UniqueExecutor()UniqueExecutor的构造函数。
get()获取UniqueExecutor中的aclOpExecutor指针。
ReleaseTo(aclOpExecutor **executor)将UniqueExecutor中的aclOpExecutor指针传递给目标aclOpExecutor指针。
UniqueExecutor(const UniqueExecutor &)废弃接口,开发者无需关注。
GetOpExecCacheFromExecutor(aclOpExecutor *)尝试将外部的aclOpExecutor转为aclnn cache对象。
InitL2Phase1Context(const char *l2Name, [[maybe_unused]] aclOpExecutor **executor)初始化host侧API一阶段中的部分DFX变量值。
InitL2Phase2Context([[maybe_unused]] const char* l2Name, aclOpExecutor* executor)初始化host侧API二阶段中的部分DFX变量值。
InitL0Context(const char *profilingName, aclOpExecutor* executor)初始化L0接口的部分DFX变量值。
CreatAiCoreKernelLauncher([[maybe_unused]] const char *l0Name, uint32_t opType, aclOpExecutor *executor, op::OpArgContext *args)创建一个AI Core任务对象。
CreatDSAKernelLauncher([[maybe_unused]] const char *l0Name, uint32_t opType, DSA_TASK_TYPE dsaTask, aclOpExecutor *executor, op::OpArgContext *args)创建一个DSA任务对象。
InferShape(uint32_t optype, op::OpArgList &inputs, op::OpArgList &outputs, op::OpArgList &attrs)执行指定算子的infer shape,获取infer shape的结果。
ConvertToTensor(const aclIntArray *value, op::DataType dataType)将aclIntArray类型的host侧数据,转为一个host侧的aclTensor。
ConvertToTensor(const aclBoolArray *value, op::DataType dataType)将aclBoolArray类型的host侧数据,转为一个host侧的aclTensor。
ConvertToTensor(const aclFloatArray *value, op::DataType dataType)将aclFloatArray类型的host侧数据,转为一个host侧的aclTensor。
ConvertToTensor(const aclFp16Array *value, op::DataType dataType)将aclFp16Array类型的host侧数据,转为一个host侧的aclTensor。
ConvertToTensor(const aclBf16Array *value, op::DataType dataType)将aclBf16Array类型的host侧数据,转为一个host侧的aclTensor。
ConvertToTensor(const T *value, uint64_t size, op::DataType dataType)将T类型的host侧数据,转为一个host侧的aclTensor。
ConvertToTensor(const aclScalar *value, op::DataType dataType)将aclScalar类型的host侧数据,转为一个host侧的aclTensor。
AddToKernelLauncherList(op::KernelLauncher *obj)添加一个AI Core任务到执行队列。
AddToKernelLauncherListDvpp(uint32_t opType, op::KernelLauncher *obj, op::OpArgContext *args)添加一个DVPP任务到执行队列。
AddToKernelLauncherListCopyTask(uint32_t opType, op::KernelLauncher *obj, op::OpArgList &inputs, op::OpArgList &outputs, op::OpArgList &workspace)添加一个数据拷贝类任务到执行队列。
AddToKernelLauncherListAiCpu(int32_t opType, op::KernelLauncher *obj, op::OpArgContext *args)添加一个AI CPU任务到执行队列。
CommonOpExecutorRun(void *workspace, uint64_t workspaceSize, aclOpExecutor *executor, aclrtStream stream)根据外部给出的aclOpExecutor及workspace、stream,执行上下文中的所有任务。

【免费下载链接】opbase本项目是CANN算子库的基础框架库,为算子提供公共依赖文件和基础调度能力。项目地址: https://gitcode.com/cann/opbase

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

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

相关文章:

  • CANN / pto-isa PTO Tile 内部函数编程模型
  • SORONA生物基材料2026革新之作,重塑可持续时尚 - 品牌种草官
  • 2026年昆明短视频运营与AI全网推广完整指南|本地化精准获客与转化体系 - 年度推荐企业名录
  • TTT-Discover框架:强化学习在科学发现中的动态适应
  • 2026年4月优质的半自动钉箱机源头厂家推荐,市场半自动钉箱机选哪家 - 品牌推荐师
  • AI增强型网络弹性框架PHOENI2X:关键基础设施安全防御新范式
  • 国产高频红外碳硫分析仪品牌市场表现分析 - 品牌推荐大师
  • edict:专为开发者设计的离线命令行词典工具
  • 魔兽争霸3优化工具:让你的经典游戏焕然一新的完整指南
  • 别再用Time Machine了!针对Intel老Mac的三种‘精准’系统恢复方案实测(2015-2019款适用)
  • 基于MCP协议实现AI助手与n8n自动化平台的无缝集成
  • 基于Signal协议构建自托管加密通信服务器:从原理到部署实践
  • ProcessGPT:生成式AI如何重塑业务流程管理的未来
  • AI应用后端快速开发:基于开源模板的生产级工程实践
  • CANN/catlass Block MMAD开发详解
  • 2026年5月国内信号隔离器品牌TOP10大盘点 - 仪表人叶工
  • 扩散模型与多模态掩码的精准图像编辑技术
  • 技术人如何用工程化思维提升学术写作效率:从工具链到结构化思维
  • CANN/xla-npu BatchMatMul优化
  • FFmpeg QSV滤镜实战:解决`get_buffer() failed`报错的两种内存访问方案对比
  • CANNBot: RoPE预计算参考
  • Taotoken的API Key管理与访问控制功能实践分享
  • 2026 年活性炭箱厂家权威排行榜 TOP5 - 小艾信息发布
  • Dart factory构造函数避坑指南:和普通构造函数的5个关键区别与性能影响
  • ARM架构TLB操作与缓存锁定机制详解
  • CANN/pyasc API文档自动生成工具使用指南
  • AI医疗在非洲的落地实践:机遇、挑战与四步走策略
  • 2026 年生物滤池权威排行榜 TOP5 - 小艾信息发布
  • 高性能计算驱动可扩展AI:科学发现新范式与工程实践
  • StateLM:大语言模型长上下文管理的创新与实践