目前Mindspore Lite 已经支持飞腾系列DSP硬件,分别为FT78和FT04,这两款硬件均为Arm CPU + FT DSP的异构多核计算架构,现简要介绍飞腾DSP算子的开发、接入的相关内容
1. 算子开发
飞腾DSP算子的开发的一般流程为:
算子源码编写、编译、汇编、链接、调试、调优、打包成库。
由于FT78和FT04硬件的差异,其算子开发所用到的IDE和编程语言略有不同:
FT78使用CCS开发,开发语言为C语言;
FT04使用FT-IDE开发,开发语言为线性汇编;
算子开发的产物通常为可执行程序,为了适配异构编程Hthread的接口,需用打包工具将可执行程序中的算子打包成算子库文件dsp_lib.dat,该文件为文本文件,其主要内容为算子的名称、地址以及其二进制码对应的ASCII码
2. 算子接入
MindSpore Lite中飞腾DSP算子的接入方式与其他后端算子的接入方式一致,其大致流程为:
-
算子注册、测试相关源文件的添加、编写
-
框架编译
-
部署与测试
原生算子的接入过程中涉及到的相关源文件为:算子注册文件、算子头文件、单元测试文件
自定义算子的接入过程中涉及到的相关源文件为:算子注册文件、算子推断文件、单元测试文件
单元测试中,除了对算子的不同数据规模、数据类型、以及算子的相关属性(若存在)进行测试外,对于多核算子,通常算子所支持的所有核掩码和存储类型应都应被测到。
3. 注意事项
开发调试:
算子自身问题可通过使用相应的开发IDE调试解决,若仅在算子接入后的单元测试中发现相关问题,这类问题可以通过排除法来解决,一般由算子接口地址、数据规模、支持的核、存储空间类型等方面的配置与开发时不一致导致。
算子命名规则:
算子以"数据类型_算子名称_存储空间类型"格式命名, 数据类型的写法如下图所示, 共享空间版本使用"_s", 私有空间版本使用"_p", 算子名称全小写, 不需要修饰词或者限定词, 算子名称有多个单词,写在一起语意不清,用"_"作为分隔符。
共享空间版本的算子一般为多核算子、支持的存储空间有DDR、GSM,私有空间版本的算子一般为单核算子、且仅支持AM空间。
详见:DSP算子C接口命名规范 — MindSpore Signal+ 使用手册 alpha 文档 (gitlink.net)

