文档
注册

CANN算子类型介绍

首先看下CANN算子在昇腾AI处理器中的位置,如图1所示,其中:
  • AI Core是昇腾AI处理器的计算核心,负责执行矩阵、向量、标量计算密集的算子任务,在AI Core上执行的算子称为TBE(Tensor Boost Engine)算子。
  • AI CPU负责执行不适合跑在AI Core上的算子,是AI Core算子的补充,主要承担非矩阵类、逻辑比较复杂的分支密集型计算,在AI CPU上执行的算子称为AI CPU算子。
图1 CANN算子在昇腾AI处理器上的位置
由上面可以看出,CANN算子有两种类型,TBE算子与AI CPU算子。
  • TBE算子

    运行在AI Core上,鉴于AI Core的强大算力,主要负责执行矩阵、向量、标量相关的计算密集型算子。

    其中,TBE(Tensor Boost Engine)提供了基于张量虚拟机(Tensor Virtual Machine,TVM)框架的自定义算子开发能力,提供了用户开发自定义算子所需工具。TBE工具给用户提供了两种算子开发方式 :DSL与TIK。开发者可以根据需求自由选择,两种开发方式的区别如下:

    • DSL( Domain-Specific Language ,基于特性域语言)

      DSL接口已高度封装,用户仅需要使用DSL接口完成计算过程的表达,后续的算子调度、算子优化及编译都可通过已有的接口一键式完成,适合初级开发用户。

    • TIK( Tensor Iterator Kernel, 张量嵌套内核)

      开发者可以通过调用TIK提供的API基于Python语言编写自定义算子,然后TIK编译器会将其编译为适配昇腾AI处理器应用程序的二进制文件。TIK需要用户手工控制数据搬运和计算流程,入门较高,但开发方式比较灵活,能够充分挖掘硬件能力,在性能上有一定的优势。

  • AI CPU算子

    运行在AI CPU上。以下几种场景下,可使用AI CPU方式实现自定义算子:

    • 不适合跑在AI Core上的算子,例如非矩阵类的复杂计算,逻辑比较复杂的分支密集型算子等。

      例如,Dump、profiling等控制算子,Queue、Stack等资源状态类算子,TopK、Where等检索类算子。

    • AI Core不支持的算子,算子需要某些数据类型,但AI Core不支持,例如Complex32、Complex64。
    • 某些场景下,为了快速打通网络在昇腾AI处理器的执行流程,在TBE实现自定义算子较为困难的情况下,可通过自定义AI CPU算子进行功能调测,提升调测效率。功能调通之后,后续性能调测过程中再将AI CPU自定义算子转换为TBE算子实现。

若存在相同算子类型的TBE算子与AI CPU算子,TBE算子的执行优先级高于AI CPU算子。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词