C++样例使用指导

目录结构

├── CMakeLists.txt  cmake配置文件
├── README.md  样例使用指导
├── config
│   ├── model_generator.py  生成用例所需的模型的脚本
│   ├── add_func_multi.json  用例中使用的多func的配置文件
│   ├── add_func_multi_control.json  用例中使用的多func的配置文件
│   ├── add_func.json  用例中add FunctionPp对应的配置文件
│   ├── add_graph.json  用例中add GraphPp对应的配置文件
│   ├── data_flow_deploy_info.json  用例中指定节点部署位置的配置文件
│   └── invoke_func.json  用例中udf调用nn对应的配置文件
├── node_builder.h  构造functionPp和GraphPp的公共方法
├── sample_base.cpp  该样例展示了基本的DataFlow API构图,包含UDF,GraphPp和UDF执行NN推理三种类型节点的构造和执行
├── sample_timebatch.cpp  该样例展示了TimeBatch使用方法
├── sample_countbatch.cpp  该样例展示了CountBatch使用方法
├── sample_tensorflow.cpp  该样例展示了Tensorflow图构造Dataflow节点的方法
├── sample_multifunc.cpp  该样例展示了多func的调用方法
├── sample_exception.cpp  该样例展示了开启异常上报的方法
└── sample_perf.cpp  该样例测试Feed和Fetch的接口性能

环境要求

  • 参考环境准备下载安装驱动/固件/CANN软件包;
  • config目录下的模型生成脚本 model_generator.py 依赖tensorflow,需通过pip3 install tensorflow安装。

程序编译

# 执行config目录下的tensorflow原始模型生成脚本:
python3 config/model_generator.py
# 执行结束后,在config目录下生成add.pb模型

source {HOME}/Ascend/cann/set_env.sh  # "{HOME}/Ascend"为CANN软件包安装目录,请根据实际安装路径进行替换。
mkdir build
cd build
cmake .. && make -j 64
cd ../output

运行样例

numa_config.json文件用于配置dflow运行所需的设备资源信息,可使用tools目录下的脚本自动生成单机配置,如需自定义可参考numa_config字段说明及样例

# 生成单机numa_config.json(默认自动探测芯片型号和设备数量,使用所有设备)
# 也可指定设备列表:python3 ../../tools/create_numa_config.py --device-list 0,1,2
python3 ../../tools/create_numa_config.py
# 生成后会在当前目录下生成numa_config.json
# 可选
export ASCEND_GLOBAL_LOG_LEVEL=3       #0 debug 1 info 2 warn 3 error 不设置默认error级别
# 必选
source {HOME}/Ascend/cann/set_env.sh # "{HOME}/Ascend"为CANN软件包安装目录,请根据实际安装路径进行替换。
export RESOURCE_CONFIG_PATH=./numa_config.json # 请根据实际生成的文件路径指定

./sample_base
./sample_timebatch
./sample_countbatch
./sample_tensorflow
./sample_multifunc
./sample_exception
./sample_perf

# unset此环境变量,防止影响非dflow用例
unset RESOURCE_CONFIG_PATH