UDF Python工程创建工具

该工具的作用是创建一个UDF Python工程模板,包括对应的文件夹和文件,用户可以基于该模板进行功能的开发,减少了手工创建的工作量。

该工具存放路径:${install_path}/latest/python/site-packages/dataflow/tools/create_func_ws.py,其中${install_path}为CANN软件的安装目录,默认是"/usr/local/Ascend"。

使用方法如下。

  1. 设置环境变量
    source ${install_path}/ascend-toolkit/set_env.sh

    ${install_path}为CANN软件的安装目录,root用户默认是"/usr/local/Ascend"。

  2. 创建UDF Python工程。

    如下以创建工作目录为“test_sub”的工程为例,说明如何创建。

    在任意路径下执行如下命令。

    python3.11 -m dataflow.tools.create_func_ws -f sub:i0:i1:o0 -w ./test_sub -c Sub
    在当前目录下,生成如下“test_sub”文件夹,目录结构如下。
    ├── CMakeLists.txt  // CMakeLists编译配置文件,一般不需要用户改动。如果打包需要特殊处理可以修改,比如打包时增加配置文件发布。
    ├── func_sub.json // UDF配置文件,用于指定UDF的输入,输出等,一般不需要用户改动,如果生成工作workspace目录和实际运行时不一致,需要修改文件中workspace参数为实际运行时路径。
    ├── src_cpp
    │   └── func_sub.cpp  // 完成UDF注册,以及UDF的C++调用Python的逻辑,不需要用户改动。
    └── src_python
        └── func_sub.py  // 用户的实现函数,需要用户自行编写,当前目录下可以增加多个python文件,打包时会一并打包到运行环境。

    命令中各参数含义如下。

    • -m:必选参数,Python命令行通用参数,作为脚本运行库模块,该工具中固定为dataflow.tools.create_func_ws。
    • -f:必选参数,输入函数信息、输入和输出索引,格式为“函数名:ix:ix:ox:ox”,i开头表述输入,后面跟输入索引,o开头表示输出,后面跟输出索引,多个函数的话中间以半角逗号分隔。例如,sub:i0:i1:o0,该示例中,函数名为sub(会直接作为python函数名,建议采用小写加下划线风格,同时生成的cpp代码会按照大驼峰拼接“Proc”作为cpp函数),两个输入:i0和i1,一个输出o0。
    • -w:可选参数,工作目录。例如,./test_sub,该示例中,指定工作目录是当前目录下的“test_sub”,默认值为当前目录“./”,注意:生成的文件会直接覆盖工作空间中重名的文件。
    • -c:可选参数,函数类名。例如,Sub(会直接作为python和c++类名,建议使用大驼峰风格),为空时会使用-f参数中的函数名拼接生成。

该工具的更多使用参数请通过“-h”进行查看。