CANN电力预测ReduceAll算子操作手册
1.拉取镜像
【免费下载链接】elec-ops-predictionelec-ops-prediction 是 CANN 社区 Electrical Engineering SIG(电力行业兴趣小组)旗下的电力负荷预测算子库, 聚焦于电力系统运行、调度、规划与市场交易中的预测核心需求,面向华为昇腾(Ascend)硬件平台进行深度优化。项目地址: https://gitcode.com/cann/elec-ops-prediction
docker pull --platform=arm64 swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:8.5.0-910b-ubuntu22.04-py3.10-ops2.启动docker 命令 直接进入环境
docker run --name cann_container \ --privileged=true \ --device /dev/davinci0 \ --device /dev/davinci_manager \ --device /dev/devmm_svm \ --device /dev/hisi_hdc \ -v /usr/local/dcmi:/usr/local/dcmi \ -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi \ -v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ \ -v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info \ -v /etc/ascend_install.info:/etc/ascend_install.info \ -it swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:8.5.0-910b-ubuntu22.04-py3.10-ops bash3.驱动宿主机已经安装 直接安装cann包
wget https://ascend.devcloud.huaweicloud.com/artifactory/cann-run/software/8.5.0-beta.1/aarch64/Ascend-cann-toolkit_8.5.0-beta.1_linux-aarch64.run wget https://ascend.devcloud.huaweicloud.com/artifactory/cann-run/software/8.5.0-beta.1/aarch64/Ascend-cann-910b-ops_8.5.0-beta.1_linux-aarch64.run chmod +x * ./Ascend-cann-toolkit_8.5.0-beta.1_linux-aarch64.run --install --force ./Ascend-cann-910b-ops_8.5.0-beta.1_linux-aarch64.run --install source /usr/local/Ascend/cann/set_env.sh4.拉取代码 编译算子
git clone https://gitcode.com/xchencehn/ops-math_ReduceAll.git cd ops-math_ReduceAll bash build.sh --pkg --soc=ascend910b --vendor_name=custom --ops=reduce_all --experimental5.遇到报错
[2026-02-02 11:49:17] /bin/sh: line 1: patch: command not found 这是 patch 命令没有安装 yum install -y patch6.编译成功 安装算子
./build_out/cann-ops-math-custom_linux-aarch64.run export LD_LIBRARY_PATH=/usr/local/Ascend/cann-8.5.0-beta.1/opp/vendors/custom_math/op_api/lib/:${LD_LIBRARY_PATH}7.测试代码
bash build.sh --run_example reduce_all eager cust --vendor_name=custom --experimental8.控制日志
export ASCEND_GLOBAL_LOG_LEVEL=4 # 日志级别设置为 0 :debug 1:info 4:不打印日志9.测试案例
// 测试用例配置 std::vector<TestCase> testCases = { // 基础测试 {"1D_Simple", {100}, {0}, {1}, false}, {"1D_Large", {1000000}, {0}, {1}, false}, // // 2D 测试 {"2D_AllAxis", {4, 3000000}, {0, 1}, {1}, false}, {"2D_LastAxis", {4, 3000000}, {1}, {4}, false}, {"2D_LastAxis", {14, 30000}, {0}, {30000}, false}, {"2D_LastAxis", {3000000, 4}, {1}, {3000000}, false}, {"2D_FirstAxis", {1000, 500}, {0}, {500}, false}, // 3D 测试 {"3D_MiddleAxis", {4, 30000, 5}, {1}, {4, 5}, false}, {"3D_MiddleAxis", {400, 300, 500}, {0, 2}, {300}, false}, {"3D_LastAxis", {4, 3, 5}, {2}, {4, 3}, false}, {"3D_FirstAxis", {100, 200, 50}, {0}, {200, 50}, false}, {"3D_MultiAxis", {10, 20, 30}, {0, 2}, {20}, false}, // 4D 测试 {"4D_Dim3", {2, 4, 500, 200}, {3}, {2, 4, 500}, false}, {"4D_Dim23", {2, 4, 500, 200}, {2, 3}, {2, 4}, false}, {"4D_Dim1", {2, 4, 5, 2000}, {1}, {2, 5, 2000}, false}, {"4D_Dim2", {2, 400, 5, 2}, {2}, {2, 400, 2}, false}, {"4D_Dim12", {2, 4, 5, 200}, {1, 2}, {2, 200}, false}, {"4D_Dim02", {2, 4, 5, 2}, {0, 2}, {4, 2}, false}, {"4D_Dim23_Large", {2, 4, 8, 1600000}, {2, 3}, {2, 4}, false}, {"4D_Dim23_Large", {2, 4, 8, 1600000}, {1, 2}, {2, 1600000}, false}, {"4D_Dim1_Large", {4, 4, 8, 1600}, {1}, {4, 8, 1600}, false}, {"4D_Dim1_Large", {200, 4, 8, 1600}, {1}, {200, 8, 1600}, false}, {"4D_Dim1_Small", {2, 4, 8, 8}, {1}, {2, 8, 8}, false}, {"4D_Dim1_Small2", {2, 8, 8, 8}, {1}, {2, 8, 8}, false}, {"4D_Dim2_Large", {2, 4, 800000, 16}, {2}, {2, 4, 16}, false}, {"4D_Dim12_Large", {2, 4, 8, 160000}, {1, 2}, {2, 160000}, false}, {"4D_Dim02_Med", {2, 4, 800, 16}, {0, 2}, {4, 16}, false}, {"4D_AllAxis", {2, 3, 4, 5}, {0, 1, 2, 3}, {1}, false}, // keepDim 测试 {"4D_KeepDim_Dim1", {2, 4, 5, 200}, {1}, {2, 1, 5, 200}, true}, {"4D_KeepDim_Dim23", {2, 4, 5, 200}, {2, 3}, {2, 4, 1, 1}, true}, {"3D_KeepDim_All", {3, 4, 5}, {0, 1, 2}, {1, 1, 1}, true}, // // 负数维度测试 {"3D_NegDim", {10, 20, 30}, {-1}, {10, 20}, false}, {"4D_NegDims", {2, 3, 4, 5}, {-1, -3}, {2, 4}, false}, // 边界情况 {"SingleElement", {1}, {0}, {1}, false}, };10.测试结果
[2026-02-04 13:41:16] =============================================== [2026-02-04 13:41:16] [测试用例 1/34] [2026-02-04 13:41:16] ========== 测试: 1D_Simple ========== [2026-02-04 13:41:16] 输入形状: [100] [2026-02-04 13:41:16] 规约维度: [0] [2026-02-04 13:41:16] 保持维度: 否 [2026-02-04 13:41:16] 计算输出形状: [1] [2026-02-04 13:41:16] 期望输出形状: [1] [2026-02-04 13:41:16] 输入元素数: 100 [2026-02-04 13:41:16] 输出元素数: 1 [2026-02-04 13:41:16] [2026-02-04 13:41:16] --- 边界模式测试 --- [2026-02-04 13:41:16] [轮次 1] 模式: 全True, True: 100, False: 0 [2026-02-04 13:41:17] [通过] [2026-02-04 13:41:17] [轮次 2] 模式: 全False, True: 0, False: 100 [2026-02-04 13:41:17] [通过] [2026-02-04 13:41:17] [轮次 3] 模式: 单个False, True: 99, False: 1 [2026-02-04 13:41:17] [通过] [2026-02-04 13:41:17] [轮次 4] 模式: 单个True, True: 1, False: 99 [2026-02-04 13:41:17] [通过] [2026-02-04 13:41:17] [2026-02-04 13:41:17] --- 随机数据测试 --- [2026-02-04 13:41:17] [轮次 5] 模式: 随机, True: 81, False: 19 [2026-02-04 13:41:17] [通过] [2026-02-04 13:41:17] [轮次 6] 模式: 随机, True: 77, False: 23 [2026-02-04 13:41:17] [通过] [2026-02-04 13:41:17] [轮次 7] 模式: 随机, True: 83, False: 17 [2026-02-04 13:41:17] [通过] [2026-02-04 13:41:17] [轮次 8] 模式: 随机, True: 84, False: 16 [2026-02-04 13:41:17] [通过] [2026-02-04 13:41:17] [轮次 9] 模式: 随机, True: 76, False: 24 [2026-02-04 13:41:17] [通过] [2026-02-04 13:41:17] [2026-02-04 13:41:17] [测试 1D_Simple 汇总] 通过: 9/9 - 全部通过 [2026-02-04 13:41:17] [2026-02-04 13:41:17] =============================================== [2026-02-04 13:41:17] [测试用例 2/34] ... [2026-02-04 15:05:22] ================================================ [2026-02-04 15:05:22] ============= 最终测试统计 ============= [2026-02-04 15:05:22] ================================================ [2026-02-04 15:05:22] 测试用例通过: 34 [2026-02-04 15:05:22] 测试用例失败: 0 [2026-02-04 15:05:22] 测试用例总计: 34 [2026-02-04 15:05:22] 每用例随机轮次: 5 [2026-02-04 15:05:22] 随机数据True比例: 80% [2026-02-04 15:05:22] 总耗时: 5045470 ms [2026-02-04 15:05:22] 随机种子: 3345234776 [2026-02-04 15:05:22] ================================================ 完整的见 ./测试结果.txt【免费下载链接】elec-ops-predictionelec-ops-prediction 是 CANN 社区 Electrical Engineering SIG(电力行业兴趣小组)旗下的电力负荷预测算子库, 聚焦于电力系统运行、调度、规划与市场交易中的预测核心需求,面向华为昇腾(Ascend)硬件平台进行深度优化。项目地址: https://gitcode.com/cann/elec-ops-prediction
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
