training common 说明

本目录包含RecSDK公共的组件

目录结构概览

├── python  # python公共组件
    ├── communication # 通信相关信息
    ├── constants # 公共常量
    ├── log # 日志模块
    ├── perf_factory # 优化模块
    ├── util # 公共util
    ├── validator # 检核模块
    ├── tests # 测试用例
├── src # C++公共组件
    ├── core # 核心组件
        ├── common_func # 公共函数库
        ├── error # 报错模块
        ├── initializer # 初始化器模块
        ├── lccl # lccl通信模块
        ├── log # 日志模块
        ├── pcie_through # pcie_through模块
        ├── tests # 测试模块
    ├── pybind # pybind接口
    ├── tests # 测试用例

源码编译安装

编译环境依赖:

  • Python3.7.5
  • GCC 7.3.0
  • CMake 3.20.6

开源依赖:

将pybind11和securec的压缩包放在与Rec SDK代码同级的opensource目录下,并且将其分别更名为pybind11-2.10.3.zip、huaweicloud-sdk-c-obs-3.23.9.zip。

编译方法 方案1:进入common代码目录,构建单独的rec_sdk_common whl包:

  • src/build.sh:用于构建src下面的so文件
  • setup.py:执行脚本 python3.7 setup.py bdist_wheel 构建whl包

方案2:在最外层的RecSDK目录,和mx_rec whl包一起打包

  • setup_tf1.py:执行脚本 python3.7 setup_tf1.py bdist_wheel 构建tf1版本whl包。构建成功后,whl包在build/mindxsdk-mxrec/tf1_whl子目录下。
  • setup_tf2.py:执行脚本 python3.7 setup_tf2.py bdist_wheel 构建tf2版本whl包。构建成功后,whl包在build/mindxsdk-mxrec/tf2_whl子目录下。

测试用例

运行测试用例前需先设置CANN相关环境变量,参考前文安装方式章节。

Python侧测试用例

运行Python测试用例所需依赖:

  • pytest 7.1.1
  • pytest-cov 4.1.0
  • pytest-html

如需使用python测试用例,需要先安装上述依赖以及能够在tf1环境下进行源码编译并安装好rec_sdk_common,然后进入tests目录中。参考以下命令执行python侧测试用例:

bash run_python_dt.sh

C++侧测试用例

运行C++侧测试用例所需依赖:

将googletest、emock、pybind11和securec的压缩包放在与Rec SDK代码同级的opensource目录下,并且将其分别更名为googletest-release-1.8.1.zip、 emock-0.9.0.zip、pybind11-2.10.3.zip、 huaweicloud-sdk-c-obs-3.23.9.zip。

如需使用C++测试用例,需要按照上述描述准备需要的依赖,准备好之后,进入src目录中。参考以下命令执行C++测试用例:

使用如下命令:

bash test_ut.sh

注:

  1. 部分c++用例使用了emock库进行打桩,需要在x86环境上运行;在arm64环境运行失败时可忽略。
  2. test_ut.sh脚本运行完成后会使用lcov及相关工具(如perl-Digest-MD5)生成覆盖率统计信息,若指令未安装完全生成失败时可忽略。