---
title: 工程创建
description: "UDF工程分成如下几类，请根据使用场景进行创建。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/others/dataflowdevg/dfdevc_23_0016.html
sourcePath: /source/zh/canncommercial/900/others/dataflowdevg/dfdevc_23_0016.html
indexId: e4651a2eae202dde178e9ada2b579fd7cb7caa202b20a1c0b4f2e2f1c3ce691d69
---
# 工程创建

UDF工程分成如下几类，请根据使用场景进行创建。

- 通过UDF实现用户自定义功能：该场景下，用户不调用第三方依赖库，不调用已经实现的NN功能，完全通过编写UDF相关文件实现自定义功能。
- 通过调用NN实现自定义功能：该场景下，用户需要的功能可以通过已有的NN功能承载，用户通过UDF调用NN功能即可。
- 通过调用第三方依赖库实现自定义功能：该场景下，用户需要的功能在第三方依赖库中已存在，用户通过UDF调用第三方依赖库中相关功能即可。

您可以直接下载工程样例(https://gitee.com/ascend/samples/tree/master/inference/dataflow/udf_workspace)，并基于此进行开发。如下UDF工程目录示例包括了三种场景，请根据使用场景下载对应的样例，基于如下规则在对应目录下进行UDF交付件的开发。
```
├── 01_udf_add
│ ├── CMakeLists.txt
│ └── add_flow_func.cpp // 单func接口定义的add函数
├── 02_udf_call_add_nn
│ ├── CMakeLists.txt
│ └── call_nn_flow_func.cpp // UDF调用tensorflow模型
├── 03_udf_add_multi_func
│ ├── CMakeLists.txt
│ └── add_flow_func.cpp // 多func接口定义add函数，可以和04样例配合使用
├── 04_control_func
│ ├── CMakeLists.txt
│ └── control_func.cpp // 根据输入激活03中定义的多func中的某一个，可以和03样例配合使用
└── README.md
```
