简介
CANN算子API旨在为用户提供直接调用CANN对外发布的精简算子库API,即可使用NPU算力的能力。 CANN算子API对外屏蔽了算子内部实现逻辑以及不同代际NPU的差异,实现了算子库的框架解耦。
每个CANN算子执行API一般定义为“两段式接口”,如下所示:
[object Object]
aclnnXxxGetWorkspaceSize为第一段接口,会进行infershape计算,并将tiling、kernel launch函数的执行放入到算子执行器队列中,最终返回workspace size的值以及算子执行器对象。
其中workspace是指除了输入/输出外,API在NPU上完成计算所需的临时内存。
aclnnXxx为第二段接口,会根据第一段接口申请的workspace内存,对API内部中间Tensor进行内存地址刷新,然后按照顺序执行算子执行器中的kernel launch函数队列。
算子执行API的调用流程如下图所示:
[object Object]