编译与运行样例【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv前提说明如需编译执行算子API请确保基础环境已搭建完成包括驱动、固件、CANN软件包、ops包等。算子API的调用流程和编译运行操作详情请参见《应用开发CC》中“单算子调用单算子API执行调用aclnn接口示例代码”。编译前准备本章以开发和运行环境合设场景为例即带AI处理器的机器既作为开发环境又作为运行环境。该场景下代码开发和代码运行在同一台机器上。这里以GridSample算子为例其他算子的调用逻辑、流程、编译脚本与GridSample算子大致一样请根据实际情况自行修改API调用脚本*.cpp和编译脚本(CMakeLists)。示例代码已知GridSample算子功能是提供一个输入tensor以及一个对应的grid网格然后根据grid中每个位置提供的坐标信息将input中对应位置的像素值填充到网格指定的位置得到最终的输出。您可以从aclnnGridSampler2D中“调用示例”获取示例代码并将代码文件命名为“test_grid_sampler2_d.cpp”。CMakeLists文件CMake文件示例如下请根据实际情况修改# Copyright (c) Huawei Technologies Co., Ltd. 2019. All rights reserved. # CMake lowest version requirement cmake_minimum_required(VERSION 3.14) # 设置工程名 project(ACLNN_EXAMPLE) # Compile options add_compile_options(-stdc11) # 设置编译选项 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ./bin) set(CMAKE_CXX_FLAGS_DEBUG -fPIC -O0 -g -Wall) set(CMAKE_CXX_FLAGS_RELEASE -fPIC -O2 -Wall) # 设置可执行文件名如opapi_test并指定待运行算子文件*.cpp所在目录 add_executable(opapi_test test_grid_sampler2_d.cpp) # 设置ASCEND_PATHCANN软件包目录请根据实际路径修改和INCLUDE_BASE_DIR头文件目录 if(NOT $ENV{ASCEND_CUSTOM_PATH} STREQUAL ) set(ASCEND_PATH $ENV{ASCEND_CUSTOM_PATH}) else() set(ASCEND_PATH /usr/local/Ascend/cann) endif() set(INCLUDE_BASE_DIR ${ASCEND_PATH}/include) include_directories( ${INCLUDE_BASE_DIR} ${INCLUDE_BASE_DIR}/aclnn ) # 设置链接的库文件路径 target_link_libraries(opapi_test PRIVATE ${ASCEND_PATH}/lib64/libacl_rt.so ${ASCEND_PATH}/lib64/libnnopbase.so ${ASCEND_PATH}/lib64/libopapi_math.so ${ASCEND_PATH}/lib64/libopapi_cv.so) # 可执行文件在CMakeLists文件所在目录的bin目录下 install(TARGETS opapi_test DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})对于集合通信和MatMul计算融合、并行的算子统称为通算融合算子简称MC2算子包括AllGatherMatmul、AlltoAllAllGatherBatchMatMul、BatchMatMulReduceScatterAlltoAll、MatmulAllReduce、MatmulAllReduceAddRmsNorm、MatmulReduceScatter等。调用该类算子API时一般会涉及多线程和HCCLHuawei Collective Communication Library集合通信库因此CMake文件需要额外导入如下内容否则无法成功编译。# 设置链接的库文件路径 find_package(Threads REQUIRED) target_link_libraries(opapi_test PRIVATE ${ASCEND_PATH}/lib64/libacl_rt.so ${ASCEND_PATH}/lib64/libnnopbase.so ${ASCEND_PATH}/lib64/libopapi_math.so ${ASCEND_PATH}/lib64/libopapi_cv.so ${ASCEND_PATH}/lib64/libhccl.so # 集合通信库文件 ${CMAKE_THREAD_LIBS_INIT}) # 多线程依赖的库文件其中“find_package(Threads REQUIRED)”是CMake用于查找线程库的命令可自动链接线程库依赖的头文件或间接依赖的库文件。编译与运行提前准备好算子的调用代码*.cpp和编译脚本CMakeLists.txt。配置环境变量。安装CANN软件后使用CANN运行用户登录环境执行如下命令生效环境变量。 sh source ${INSTALL_DIR}/set_env.sh 其中${INSTALL_DIR}为CANN软件安装后文件存储路径请根据实际情况替换。编译并运行。进入CMakeLists.txt所在目录执行如下命令新建build目录存放生成的编译文件。mkdir -p build进入build目录执行cmake命令编译再执行make命令生成可执行文件。cd build cmake ../ -DCMAKE_CXX_COMPILERg -DCMAKE_SKIP_RPATHTRUE make编译成功后会在build目录的bin文件夹下生成opapi_test可执行文件。进入bin目录运行可执行文件opapi_test。cd bin ./opapi_test以GridSample算子的运行结果为例运行后的结果示例如下resultData[0] is: 0.250000 resultData[1] is: 2.250000 resultData[2] is: 2.000000 resultData[3] is: 8.500000 resultData[4] is: 20.500000 resultData[5] is: 12.000000 resultData[6] is: 8.250000 resultData[7] is: 18.250000 resultData[8] is: 10.000000若执行结果报错未出现预期结果可以使用aclGetRecentErrMsg接口获取报错具体信息。 调用aclnnGridSampler2DGetWorkspaceSize报错获取异常信息示例如下// input is nullptr ret aclnnGridSampler2DGetWorkspaceSize( input, grid, interpolationMode, paddingMode, alignCorners, out, workspaceSize, executor); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclnnGridSampler2DGetWorkspaceSize failed. ERROR: %d.\n[ERROR msg]%s, ret, aclGetRecentErrMsg()); return ret);上述构造空指针问题获取报错信息示例如下:aclnnGridSampler2DGetWorkspaceSize failed. ERROR: 161001 [ERROR msg][PID:xxxx] xxx(timestamp) AclNN_Parameter_Error(EZ1001): Expected a proper Tensor but got null for argument input.【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
CANN/ops-cv编译运行样例
发布时间:2026/7/8 12:59:08
编译与运行样例【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv前提说明如需编译执行算子API请确保基础环境已搭建完成包括驱动、固件、CANN软件包、ops包等。算子API的调用流程和编译运行操作详情请参见《应用开发CC》中“单算子调用单算子API执行调用aclnn接口示例代码”。编译前准备本章以开发和运行环境合设场景为例即带AI处理器的机器既作为开发环境又作为运行环境。该场景下代码开发和代码运行在同一台机器上。这里以GridSample算子为例其他算子的调用逻辑、流程、编译脚本与GridSample算子大致一样请根据实际情况自行修改API调用脚本*.cpp和编译脚本(CMakeLists)。示例代码已知GridSample算子功能是提供一个输入tensor以及一个对应的grid网格然后根据grid中每个位置提供的坐标信息将input中对应位置的像素值填充到网格指定的位置得到最终的输出。您可以从aclnnGridSampler2D中“调用示例”获取示例代码并将代码文件命名为“test_grid_sampler2_d.cpp”。CMakeLists文件CMake文件示例如下请根据实际情况修改# Copyright (c) Huawei Technologies Co., Ltd. 2019. All rights reserved. # CMake lowest version requirement cmake_minimum_required(VERSION 3.14) # 设置工程名 project(ACLNN_EXAMPLE) # Compile options add_compile_options(-stdc11) # 设置编译选项 set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ./bin) set(CMAKE_CXX_FLAGS_DEBUG -fPIC -O0 -g -Wall) set(CMAKE_CXX_FLAGS_RELEASE -fPIC -O2 -Wall) # 设置可执行文件名如opapi_test并指定待运行算子文件*.cpp所在目录 add_executable(opapi_test test_grid_sampler2_d.cpp) # 设置ASCEND_PATHCANN软件包目录请根据实际路径修改和INCLUDE_BASE_DIR头文件目录 if(NOT $ENV{ASCEND_CUSTOM_PATH} STREQUAL ) set(ASCEND_PATH $ENV{ASCEND_CUSTOM_PATH}) else() set(ASCEND_PATH /usr/local/Ascend/cann) endif() set(INCLUDE_BASE_DIR ${ASCEND_PATH}/include) include_directories( ${INCLUDE_BASE_DIR} ${INCLUDE_BASE_DIR}/aclnn ) # 设置链接的库文件路径 target_link_libraries(opapi_test PRIVATE ${ASCEND_PATH}/lib64/libacl_rt.so ${ASCEND_PATH}/lib64/libnnopbase.so ${ASCEND_PATH}/lib64/libopapi_math.so ${ASCEND_PATH}/lib64/libopapi_cv.so) # 可执行文件在CMakeLists文件所在目录的bin目录下 install(TARGETS opapi_test DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY})对于集合通信和MatMul计算融合、并行的算子统称为通算融合算子简称MC2算子包括AllGatherMatmul、AlltoAllAllGatherBatchMatMul、BatchMatMulReduceScatterAlltoAll、MatmulAllReduce、MatmulAllReduceAddRmsNorm、MatmulReduceScatter等。调用该类算子API时一般会涉及多线程和HCCLHuawei Collective Communication Library集合通信库因此CMake文件需要额外导入如下内容否则无法成功编译。# 设置链接的库文件路径 find_package(Threads REQUIRED) target_link_libraries(opapi_test PRIVATE ${ASCEND_PATH}/lib64/libacl_rt.so ${ASCEND_PATH}/lib64/libnnopbase.so ${ASCEND_PATH}/lib64/libopapi_math.so ${ASCEND_PATH}/lib64/libopapi_cv.so ${ASCEND_PATH}/lib64/libhccl.so # 集合通信库文件 ${CMAKE_THREAD_LIBS_INIT}) # 多线程依赖的库文件其中“find_package(Threads REQUIRED)”是CMake用于查找线程库的命令可自动链接线程库依赖的头文件或间接依赖的库文件。编译与运行提前准备好算子的调用代码*.cpp和编译脚本CMakeLists.txt。配置环境变量。安装CANN软件后使用CANN运行用户登录环境执行如下命令生效环境变量。 sh source ${INSTALL_DIR}/set_env.sh 其中${INSTALL_DIR}为CANN软件安装后文件存储路径请根据实际情况替换。编译并运行。进入CMakeLists.txt所在目录执行如下命令新建build目录存放生成的编译文件。mkdir -p build进入build目录执行cmake命令编译再执行make命令生成可执行文件。cd build cmake ../ -DCMAKE_CXX_COMPILERg -DCMAKE_SKIP_RPATHTRUE make编译成功后会在build目录的bin文件夹下生成opapi_test可执行文件。进入bin目录运行可执行文件opapi_test。cd bin ./opapi_test以GridSample算子的运行结果为例运行后的结果示例如下resultData[0] is: 0.250000 resultData[1] is: 2.250000 resultData[2] is: 2.000000 resultData[3] is: 8.500000 resultData[4] is: 20.500000 resultData[5] is: 12.000000 resultData[6] is: 8.250000 resultData[7] is: 18.250000 resultData[8] is: 10.000000若执行结果报错未出现预期结果可以使用aclGetRecentErrMsg接口获取报错具体信息。 调用aclnnGridSampler2DGetWorkspaceSize报错获取异常信息示例如下// input is nullptr ret aclnnGridSampler2DGetWorkspaceSize( input, grid, interpolationMode, paddingMode, alignCorners, out, workspaceSize, executor); CHECK_RET(ret ACL_SUCCESS, LOG_PRINT(aclnnGridSampler2DGetWorkspaceSize failed. ERROR: %d.\n[ERROR msg]%s, ret, aclGetRecentErrMsg()); return ret);上述构造空指针问题获取报错信息示例如下:aclnnGridSampler2DGetWorkspaceSize failed. ERROR: 161001 [ERROR msg][PID:xxxx] xxx(timestamp) AclNN_Parameter_Error(EZ1001): Expected a proper Tensor but got null for argument input.【免费下载链接】ops-cv本项目是CANN提供的图像处理、目标检测相关的算子库实现网络在NPU上加速计算。项目地址: https://gitcode.com/cann/ops-cv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考