本节介绍如何通过MindStudio工具创建算子工程,创建完之后工具会自动生成算子工程目录及相应的文件模板,开发者可以基于这些模板进行算子开发。
参数 |
参数说明 |
示例 |
---|---|---|
CANN Version |
当前激活的CANN版本,可通过单击右侧“Change”进行变更,具体功能使用请参见切换/激活CANN包。 |
选择当前CANN的版本号 |
New Operator(算子创建方式) |
||
Sample Template |
表示基于样例创建算子工程。 选择此选项,下方显示AICPU、DSL、TIK三种算子实现方式。每种实现方式按照AI框架分类提供了算子样例,供用户选择。用户可以选择一个实现方式下的一个AI框架中的一个或多个算子创建算子工程。
|
四选一,当前默认选择“Sample Template”。 |
Empty Template |
表示创建空的算子工程。 选择此选项,下方会显示“Operator Type”配置项,请在此处输入需要创建的算子的类型,请根据算子分析进行配置。 |
|
IR Template |
表示基于IR定义模板创建算子工程。IR定义模板文件有json和Excel两种格式。 选择此选项,下方会显示“Template File”配置项,用户需要选择IR原型定义文件。
须知:
IR定义的配置请参见IR定义配置说明。 |
|
Tensorflow Template |
表示基于Tensorflow原型定义创建算子工程。 选择此方式创建算子工程,请先在安装MindStudio的服务器中下载Tensorflow源码。选择此选项后,下方会出现详细配置栏。
|
|
Plugin Framework |
算子所在模型文件的框架类型。选择“Sample Template”创建算子工程时不显示此配置项。
Caffe不支持Tensorflow Template创建算子工程。 |
MindSpore |
Compute Unit |
算子使用的计算资源。有以下两种选项,选择“Sample Template”创建算子工程时不显示此配置项。
|
AI Core/Vector Core |
Unit Type |
请根据实际昇腾AI处理器版本下拉选择算子计算单元。
|
选择当前昇腾AI处理器的版本 |
参数 |
参数说明 |
示例 |
---|---|---|
Project name |
工程名称,用户自行配置。 名称开头和结尾必须是数字或字母,只能包含字母、数字、中划线和下划线,且长度不超过64个字符。 |
untitled |
Project location |
工程默认保存路径,用户可自定义。(对于首次使用MindStudio的用户,该项默认为“$HOME/MindstudioProjects”。) |
保持默认 |
More Settings |
“Module name”:模块名,默认与“Project name”一致。 |
保持默认 |
“Content root”:根目录下路径。 |
||
“Module file location”:模块文件路径。 |
||
单击“Project format”右侧选框,出现下拉菜单。
|
若工作窗口已打开其他工程,会出现确认提示。
变量名为ASCEND_OPP_PATH,变量值为C:\Users\用户名\.mindstudio\huawei\adk\remote\CANN包版本号\opp
请以实际用户名和CANN包版本号修改变量值。
├── .idea ├── build //编译生成的中间文件 ├── cmake //编译相关公共文件存放目录 ├── cpukernel //AI CPU算子文件目录,TensorFlow TBE算子和PyTorch算子工程不会创建此目录 │ ├── impl //算子实现文件目录 │ │ ├── reshape_cust_kernel.cc //算子源文件 │ │ ├── reshape_cust_kernel.h //算子头文件 │ ├── op_info_cfg //算子信息库文件目录 │ │ ├── aicpu_kernel │ │ │ ├── reshape_cust.ini //算子信息定义文件 │ ├── CMakeLists.txt //编译规则文件,会被算子工程根目录中的CMakeLists.txt文件调用 │ ├── toolchain.cmake ├── framework //算子插件实现文件目录 │ ├── tf_plugin //存放tensorflow框架的算子插件文件及编译规则文件,若“Plugin Framework”为“PyTorch”,不会创建此目录 │ │ ├── tensorflow_add_plugin.cc //add为算子类型,TBE算子示例为add,AI CPU算子为reshape_cust │ │ ├── CMakeLists.txt //编译规则文件,会被上级目录中的CMakeLists.txt文件调用 │ ├── caffe_plugin //存放caffe框架的算子插件文件及编译规则文件,若“Plugin Framework”为“PyTorch”,不会创建此目录 │ │ ├── caffe_add_plugin.cc //add为算子类型,TBE算子示例为add,AI CPU算子为reshape_cust │ │ ├── CMakeLists.txt //编译规则文件,会被上级目录中的CMakeLists.txt文件调用 │ └── onnx_plugin //原始框架类型为ONNX时生成的算子适配插件代码所在目录 │ ├── CMakeLists.txt │ └── xxx_plugin.cc/ /算子适配插件实现文件 │ ├── CMakeLists.txt //编译规则文件,会被算子工程根目录中的CMakeLists.txt文件调 ├── op_proto //算子IR定义文件目录 │ ├── add.cc //add为算子类型,TBE算子示例为add,AI CPU算子为reshape_cust │ ├── add.h //add为算子类型,TBE算子示例为add,AI CPU算子为reshape_cust │ ├── CMakeLists.txt //编译规则文件,会被算子工程根目录的CMakeLists.txt文件调用 ├── op_tiling //算子tiling实现文件目录,不涉及tiling实现的算子无需关注 │ ├── CMakeLists.txt ├── scripts //工程相关脚本 ├── tbe //TBE算子文件目录,TensorFolw AI CPU算子工程不会创建此目录 │ ├── impl //算子实现文件目录 │ │ ├── add.py │ ├── op_info_cfg //算子信息库文件目录 │ │ ├── ai_core │ │ │ ├── {soc_version} │ │ │ │ ├── add.ini ├── .project //工程信息文件,包含工程类型、工程描述、运行目标设备类型以及CANN版本 ├── Add_READEME.md //介绍算子基本功能、基本信息和主要的算子工程 ├── CMakeLists.txt ├── MyOperator.iml
框架为MindSpore时的工程目录结构和主要文件。
├── .idea ├── build //编译生成的中间文件 ├── cmake //编译相关公共文件存放目录 ├── cpukernel //AI CPU算子文件目录 TBE算子工程不会创建此目录 │ ├── impl //算子实现文件目录 │ │ ├── cus_square_kernel.cc //算子源文件 │ │ ├── cus_square_kernel.h //算子头文件 │ ├── op_info_cfg //算子信息库文件目录 │ │ ├── aicpu_kernel │ │ │ ├── cus_square.ini //算子信息定义文件 │ ├── CMakeLists.txt //编译规则文件,会被算子工程根目录中的CMakeLists.txt文件调用 │ ├── toolchain.cmake ├── framework //算子插件实现文件目录 │ ├── mindspore │ │ ├── impl //算子实现文件目录 │ │ │ ├── cus_square_impl.py //实现算子和注册算子信息 py文件 │ ├── op_proto │ │ ├── cus_square.py //算子原语py文件 ├── .project //工程信息文件,包含工程类型、工程描述、运行目标设备类型以及CANN版本 ├── cus_square_READEME.md //介绍算子基本功能、基本信息和主要的算子工程 ├── MyOperator.iml