源码构建【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv源码构建前请参考本项目README完成环境准备和源码下载此处不再赘述。安装第三方依赖说明对于WebIDE或Docker环境默认联网编译过程中会自动下载第三方依赖无需手动安装可跳过本章操作。本项目编译过程依赖的第三方开源软件列表如下开源软件版本下载地址json3.11.3include.zipmakeself2.5.0makeself-release-2.5.0-patch1.tar.gzeigen5.0.0eigen-5.0.0.tar.gzprotobuf25.1.0protobuf-25.1.tar.gzabseil-cpp20230802.1abseil-cpp-20230802.1.tar.gzopbase(自CANN 9.0.0及以后版本需要下载)masteropbase若您的编译环境可以访问网络请参考联网编译编译脚本会自动联网下载第三方软件。否则请参考未联网编译手动下载第三方软件。准备好开源第三方软件后可采用如下编译方式请按需选择自定义算子包选择部分算子编译生成的包称为自定义算子包以挂载形式作用于CANN包不改变原始包内容。生成的自定义算子包优先级高于原始CANN包。该包支持aclnn和图模式调用AI Core、AI CPU算子。ops-cv包选择整个项目编译生成的包称为ops-cv包可完整替换CANN包对应部分。该包支持aclnn和图模式调用AI Core算子。ops-cv静态库说明若您需要基于本项目进行二次发布并且对软件包大小有要求时建议采用静态库编译该库可以链接您的应用开发程序仅保留业务所需的算子从而实现软件最小化部署。表示整个项目编译为一个静态库文件包含libcann_cv_static.a和aclnn接口头文件。该包仅支持aclnn调用AI Core算子。联网编译若在有互联网的环境下编译编译过程中会自动安装第三方依赖无需手动安装。不同场景下源码编译和部署命令如下自定义算子包编译自定义算子包进入项目根目录执行如下编译命令bash build.sh --pkg --soc${soc_version} [--vendor_name${vendor_name}] [--ops${op_list}] [-j${n}] # 以GridSample算子编译为例 # bash build.sh --pkg --socascend910b --opsgrid_sample -j16 # 编译experimental贡献目录下的用户算子以GridSample算子为例编译时请以实际贡献算子为准 # bash build.sh --pkg --experimental --socascend910b --opsgrid_sample -j16--soc${soc_version}表示NPU型号。Atlas A2 训练系列产品/Atlas A2 推理系列产品使用ascend910b默认Atlas A3 训练系列产品/Atlas A3 推理系列产品使用ascend910_93Ascend 950PR/Ascend 950DT产品使用ascend950。--vendor_name可选${vendor_name}表示构建的自定义算子包名默认名为custom。--ops可选${op_list}表示待编译算子不指定时默认编译所有算子。格式形如grid_sample,iou_v2,...多算子之间用英文逗号,分隔。--experimental可选表示编译用户保存在experimental贡献目录下的算子。-j可选指定编译线程数加快编译速度。若${vendor_name}和${op_list}都不传入编译的是ops-cv包若编译所有算子的自定义算子包需传入${vendor_name}。当提示如下信息说明编译成功。Self-extractable archive cann-ops-cv-${vendor_name}_linux-${arch}.run successfully created.编译成功后run包存放于项目根目录的build_out目录下。安装自定义算子包./build_out/cann-ops-cv-${vendor_name}_linux-${arch}.run自定义算子包默认安装路径为${ASCEND_HOME_PATH}/opp/vendors${ASCEND_HOME_PATH}已通过环境变量配置表示CANN toolkit包安装路径一般为${install_path}/cann。说明可通过配置--install-path${install_path}参数定义算子包安装目录在使用自定义算子包前需执行source ${install_path}/vendors/${vendor_name}/bin/set_env.bash命令set_env.bash脚本将自定义算子包安装路径追加到环境变量ASCEND_CUSTOM_OPP_PATH中使自定义算子包在当前环境中生效。可选卸载自定义算子包。自定义算子包安装后在${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_cv/scripts目录会生成uninstall.sh通过该脚本可卸载自定义算子包命令如下bash ${ASCEND_HOME_PATH}/opp/vendors/${vendor_name}_cv/scripts/uninstall.shops-cv包编译ops-cv包进入项目根目录执行如下编译命令# 编译除experimental目录外的所有算子 bash build.sh --pkg --soc${soc_version} [-j${n}] # 编译experimental目录下的所有算子 # bash build.sh --pkg --experimental --soc${soc_version} [-j${n}]--soc${soc_version}表示NPU型号。Atlas A2 训练系列产品/Atlas A2 推理系列产品使用ascend910b默认Atlas A3 训练系列产品/Atlas A3 推理系列产品使用ascend910_93Ascend 950PR/Ascend 950DT产品使用ascend950。--experimental可选表示编译用户保存在experimental目录下的算子。-j可选指定编译线程数加快编译速度。若提示如下信息说明编译成功。Self-extractable archive cann-${soc_name}-ops-cv_${cann_version}_linux-${arch}.run successfully created.${soc_name}表示NPU型号名称即${soc_version}删除“ascend”后剩余的内容。编译成功后run包存放于build_out目录下。安装ops-cv包# 安装命令 ./build_out/cann-${soc_name}-ops-cv_${cann_version}_linux-${arch}.run --full --install-path${install_path}${install_path}表示指定安装路径需要与toolkit包安装在相同路径默认安装在/usr/local/Ascend目录。可选卸载ops-cv包# 卸载命令 ./${install_path}/cann/share/info/ops_cv/script/uninstall.shops-cv静态库说明静态库仅支持Atlas A2、Atlas A3系列产品、Ascend950PR/Ascend 950DT产品。experimental算子暂不支持使用静态库。编译ops-cv静态库进入项目根目录执行如下编译命令bash build.sh --pkg --static --soc${soc_version} [-j${n}]--soc${soc_version}表示NPU型号。Atlas A2系列产品使用ascend910b默认Atlas A3系列产品使用ascend910_93Ascend950PR/Ascend 950DT产品使用ascend950。-j可选指定编译线程数加快编译速度。 若提示如下信息说明编译并压缩成功。[SUCCESS] Build static lib success! Successfully created compressed package: ${repo_path}/build_out/cann-${soc_name}-ops-cv-static_${cann_version}_linux-${arch}.tar.gz${repo_path}表示项目根目录${soc_name}表示NPU型号名称即${soc_version}删除“ascend”后剩余的内容。编译成功后压缩包存放于build_out目录下。解压ops-cv静态库进入build_out目录执行解压命令tar -zxvf ./cann-${soc_name}-ops-cv-static_${cann_version}_linux-${arch}.tar.gz -C ${static_lib_path}${static_lib_path}表示静态库解压路径。解压后目录结构如下├── cann-${soc_name}-ops-cv-static_${cann_version}_linux-${arch} │ ├── lib64 │ │ ├── libcann_cv_static.a # 静态库文件 │ └── include | ├── ... # aclnn接口头文件未联网编译若在没有连接互联网的环境下编译需要提前准备好依赖的第三方软件再进行源码编译。具体过程如下下载第三方依赖在联网环境中提前下载第三方软件目前有如下方式请按需选择方式1根据第三方软件依赖提供的表格手动下载若从其他地址下载请确保版本号一致。方式2通过third_lib_download.py脚本一键下载该脚本在本项目scripts/tools/目录下载该脚本并执行如下命令python ${scripts_dir}/third_lib_download.py${scripts_dir}表示脚本存放路径下载的第三方软件包默认存放在当前脚本所在目录。编译算子包将下载好的第三方软件上传至离线环境可存放在third_party目录或自定义目录下。推荐前者其编译命令与联网编译场景下的命令一致。third_party目录推荐请在本项目根目录创建third_party目录若有则无需创建将第三方软件拷贝到该指定目录。此时编译命令与联网编译命令一致具体参考联网编译。自定义目录在离线环境的任意位置新建${cann_3rd_lib_path}目录将第三方软件拷贝到该目录请确保该目录有权限访问。mkdir -p ${cann_3rd_lib_path}此时编译命令需在联网编译命令基础上额外增加--cann_3rd_lib_path${cann_3rd_lib_path}用于指定第三方软件所在路径。假设存放路径为/path/cann_3rd_lib_path不同编译方式对应的命令如下自定义算子包bash build.sh --pkg --soc${soc_version} [--vendor_name${vendor_name}] [--ops${op_list}] --cann_3rd_lib_path${cann_3rd_lib_path} # 以GridSample算子编译为例 # bash build.sh --pkg --socascend910b --opsgrid_sample -j16 --cann_3rd_lib_path/path/cann_3rd_lib_pathops-cv整包bash build.sh --pkg --soc${soc_version} --cann_3rd_lib_path${cann_3rd_lib_path} # bash build.sh --pkg --socascend910b --cann_3rd_lib_path/path/cann_3rd_lib_pathops-cv静态库bash build.sh --pkg --static --soc${soc_version} --cann_3rd_lib_path${cann_3rd_lib_path} # bash build.sh --pkg --static --socascend910b --cann_3rd_lib_path/path/cann_3rd_lib_path安装/卸载算子包未联网和联网场景下编译得到算子包结果一样默认存放于项目根目录build_out目录下并且安装和卸载的操作命令也一样具体参见联网编译。本地验证源码包部署后可通过项目根目录build.sh执行UT用例验证项目功能是否正常。说明执行UT用例依赖googletest单元测试框架详细介绍参见googletest官网。# 安装根目录下test相关requirements.txt依赖 pip3 install -r tests/requirements.txt # 方式1: 编译并执行指定算子和对应功能的UT测试用例选其一 bash build.sh -u --[opapi|ophost|opkernel|opkernel_aicpu] --opsgrid_sample # 方式2: 编译并执行所有的UT测试用例 # bash build.sh -u # 方式3: 编译所有的UT测试用例但不执行 # bash build.sh -u --noexec # 方式4: 编译并执行对应功能的UT测试用例选其一 # bash build.sh -u --[opapi|ophost|opkernel|opkernel_aicpu] # 方式5: 编译对应功能的UT测试用例但不执行选其一 # bash build.sh -u --noexec --[opapi|ophost|opkernel|opkernel_aicpu] # 方式6: 执行UT测试用例时可指定soc编译 # bash build.sh -u --[opapi|ophost|opkernel|opkernel_aicpu] [--soc${soc_version}]以验证ophost功能是否正常为例执行如下命令bash build.sh -u --ophost执行完成后出现如下内容表示执行成功。Global Environment TearDown [] ${n} tests from ${m} test suites ran. (${x} ms total) [ PASSED ] ${n} tests. [100%] Built target cv_op_host_ut${n}表示执行了n个用例${m}表示m项测试${x}表示执行用例消耗的时间单位为毫秒。【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考