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::FVectoruint64_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.coloradmin.cn/o/2598110.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!