# AICL **Repository Path**: aiconntest/aicl ## Basic Information - **Project Name**: AICL - **Description**: 异构加速器统一接口符合性测试工具 - **Primary Language**: Unknown - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 36 - **Forks**: 9 - **Created**: 2025-03-17 - **Last Updated**: 2025-10-15 ## 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. 完成python及依赖库 `pip3 install -r requirements.txt` 2. 完成对应加速器所依赖的所有软件栈安装 以华为Ascend CANN为例,环境上正确部署昇腾AI软件栈,并配置对应的的环境变量,请参见[Link](https://gitee.com/link?target=https%3A%2F%2Fwww.hiascend.com%2Fdocument)中对应版本的CANN安装指南 3. 配置测试套依赖的环境变量 包含openCann公共变量和厂商特定的环境变量配置。 厂商以华为Ascend CANN为例,需要配置编译依赖的头文件目录和库文件等,详细配置和说明可见如下[link](https://www.hiascend.com/document/detail/zh/canncommercial/51RC1/inferapplicationdev/aclcppdevg/aclcppdevg_000125.html)。目前提供脚本完成环境变量配置,用户可根据实际安装路径做对应修改 `source set_env.bash` 4. 准备脚本依赖测试数据、模型及配置文件 依赖的执行数据和模型当前已存放在common的test_data目录下 ### 编译 1. 支持所有用例一键编译,编译后的执行文件统一放在bin目录 `build_all.sh` 2. 指定模块用例编译,可到src对应用用例文件夹下执行build.sh ### 测试执行 1. 用例执行列表见`script/opencnn_api_test.py` - 用例结果:用例脚本中统一返回结果成功为OPENCANN_SUCCESS(0),失败返回OPENCANN_FAILED(-1) - 用例超时:当前统一设置单个用例为20s 2. 执行方法和参数:通过测试套可以指定单个用例、单个模块或所有用例执行。 ​ 进入到script目录下,执行命令为 `bash run.sh ${report_mode} ${specified_module} ${specified_case}` - report_mode : 结果输出形式,可选html或print。print通过打屏显示结果,html为输出网页方式报告,位于script/report目录。 - specified_module:指定特定模块执行。当前可指定 TestAcl 和 TestGraph。 - specified_case : 指定用例执行, 用例名称可见script下opencnn_api_test.py中用例, 需和模块同时指定。 3. 执行命令举例: - 一键执行所有用例 : `bash run.sh html` - 指定单类用例执行 : `bash run.sh html TestAcl` - 指定单个用例执行: `bash run.sh html TestAcl acl_init_001` ### 结果查看 1. 通过html report查看执行结果 当执行用例的report mode为html时,在script/report下可看到保存的html格式执行结果报告 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. 用例调试 ​ step2: 调试用例保证编译和执行通过,结果符合预期 3.执行用例到执行目录 ​ step3: 在script下的 opencnn_api_test.py 中增加模块或用例