# Open-CANN **Repository Path**: cajcak/open-cann ## Basic Information - **Project Name**: Open-CANN - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-08-01 - **Last Updated**: 2024-08-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OPEN-CANN API测试套件 ### 功能描述 OPEN-CANN 测试套件,针对开放的OpenCANN API接口调用进行基本功能测试,当前覆盖runtime和graph的高优先级API。当前可根据用户需要,批量执行所有用例,也可指定单个用例或模块执行。用例结果可以通过html报表或打屏方式呈现,包含用例执行结果和报错。 ### 目录结构 ``` ├── bin //编译后的执行程序 ├── build_all.sh //编译所有用例 ├── common │   ├── inc //公共头文件 │   │   ├── aicl.h //aicl头文件 │   │   ├── graph_utils.h //graph用例公共函数头文件* │   │   └── utils.h //runtime用例公共函数头文件* │   ├── src //公共函数 │   │   ├── aicl_adaptor_cann.cpp //cann适配aicl │   │   ├── graph_utils.cpp //graph用例公共函数* │   │   └── utils.cpp //runtime用例公共函数* │   └── test_data //测试数据目录* │   ├── config //配置相关文件* │   ├── data //测试数据文件* │   └── model //测试模型文件* ├── README.md ├── requirements.txt //python3依赖库 ├── script │   ├── opencnn_api_test.py //测试框架执行用例* │   ├── prepare //用例依赖的数据生成脚本* │   └── run.sh //批量执行测试* ├── set_env.bash //环境配置脚本* └── src //所有的测试脚本按模块存放* ├── 01_aicl_init //aicl_init模块接口用例 ├── 02_aicl_dev //aicl_device模块接口用例 ├── 03_aicl_mem //aicl_memory模块接口用例 ├── 04_aicl_op //aicl_operater模块接口用例 ├── 05_aicl_mdl //aicl_model模块接口用例 ├── 06_graph_edit //graph_edit模块接口用例 └── 07_graph_run //graph_run模块接口用例 ``` *为后续扩展涉及的用例目录或文件 ### 环境要求 - 操作系统:linux平台 - 编译器:g++或aarch64-linux-gnu-g++ - python:python3.7.5及以上,相关依赖库如requirements.txt ### 软件及数据准备 1. 完成对应加速器所依赖的所有软件栈安装 以华为Ascend CANN为例,环境上正确部署昇腾AI软件栈,并配置对应的的环境变量,请参见对应版本的[CANN安装指南](https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/80RC2alpha003/softwareinst/instg/instg_0022.html) 2. 配置测试套依赖的环境变量 Cann包安装完成后,执行set_env.bash配置环境变量,如安装在/usr/local/Ascend目录下,则执行 ``` source /usr/local/Ascend/ascend-toolkit/set_env.sh ``` 3. 解压AICL-CANN包,进入OpenCANN目录,安装requirements.txt内的依赖 ``` tar -zxvf AICL-CANN.tar.gz yum install python3-pip pip3 install -r requirements.txt ``` 4. 准备脚本依赖测试数据、模型及配置文件 进入OpenCANN目录,使用atc工具生成模型推理需要的resnet50.om文件,执行需选择对应的npu型号,可通过'npu-smi info'命令查看npu型号。如Ascend910B3可填参数--soc_version=ascend910B3 ``` cd OpenCANN cd common/test_data/model/ atc --model=resnet50.onnx --framework=5 --output=resnet50 --input_shape="actual_input_1:1,3,224,224" \ --soc_version=Ascend910B3 --insert_op_conf=aipp.cfg ``` ### 编译 1. 支持所有用例一键编译,编译后的执行文件统一放在bin目录 ``` cd OpenCANN source set_env.bash bash build_all.sh ls -l bin/ ``` 2. 如需指定单个模块用例编译,可到src对应用用例文件夹下执行build.sh。如对aicl_init样例单独编译,可执行如下: ``` cd OpenCANN source set_env.bash cd src/01_aicl_init/ bash build.sh ``` ### 测试执行 1. 用例执行列表见`script/opencnn_api_test.py` - 用例结果:用例脚本中统一返回结果成功为OPENCANN_SUCCESS(0),失败返回OPENCANN_FAILED(-1) - 用例超时:当前统一设置单个用例为40s 2. 执行方法和参数:通过测试套可以指定单个用例、单个模块或所有用例执行。 进入到script目录下,执行命令为: ``` cd OpenCANN/script bash run.sh ${report_mode} ${specified_module} ${specified_case} ``` - report_mode : 结果输出形式,可选html或print。print通过打屏显示结果,html为输出网页方式报告,位于script/report目录。 - specified_module:指定特定模块执行。当前可指定 TestAicl 和 TestGraph。 - specified_case : 指定用例执行, 用例名称可见script下opencnn_api_test.py中用例, 需和模块同时指定。 3. 执行命令举例: - 一键执行所有用例 : `bash run.sh html` - 指定TestAicl类用例执行 : `bash run.sh html TestAicl` - 指定单个用例执行: `bash run.sh html TestAicl test_aicl_init_001` ### 结果查看 1. 通过html report查看执行结果 当执行用例的report mode为html时,在script/report下可看到保存的html格式执行结果报告 ![输入图片说明](common/test_data/img/af0af4cfca99d36b90f17977775fb68.png) 2. 通过打屏方式查看执行结果用例扩展 当执行用例report mode为print时,通过打屏方式统计每个用例的执行通过结果 ### 用例扩展演进 ​ 如后续扩展用例可参考对如下部分做增加: 1. 增加用例 ​ step1-1: src 目录下按命名规则增加模块及用例。目录名称为 "模块序号\_模块名\_功能 “ ,用例命名为"模块\_功能\_用例序号""。 ​ step1-2: 用例的结果成功请返回OPENCANN_SUCCESS(0),失败返回OPENCANN_FAILED(-1) ​ step1-3: 在模块目录下编写编译脚本,命名为build.sh 。 ​ step1-4: 公共声明和方法放在common/inc和src目录下,使用的模型、配置和数据放在common/testdata目录 2. 用例调试 ​ step1: 调试用例保证编译和执行通过,结果符合预期 3. 执行用例到执行目录 ​ step1: 在script下的 opencnn_api_test.py 中增加模块或用例