已关闭
[Bug-Report|缺陷反馈]: build.sh 的 build_device() 未转发 ENABLE_EXPERIMENTAL,导致 experimental BIRS 执行器未编入 device 库,运行时 ReduceScatter 失败 #380
Davydov_Danil创建于 7月23日关闭于 17 天前
7月23日 修改了issue 的描述
7月23日 修改了issue 的描述
7月23日 关联了pull request:fixing experimental option and ReduceScatter BIRS
Leewis
7月24日 评论:
7月24日 评论:
/assign @Davydov_Danil


7月24日 将 Davydov_Danil 设为负责人
Leewis
26 天前 评论:
26 天前 评论:
@Davydov_Danil 你好,当前该issue 所提问题修复情况怎么样了,预计什么时候会修改上库,是否有相关问题依赖我们?


17 天前 关闭了 issue
17 天前 添加了label:resolved
Thanks for sending an issue! Please fill in the following template to help quickly solve your problem.
Describe the current behavior / 问题描述 (Mandatory / 必填)
使用 bash build.sh --experimental --full(或 --aicpu / --static)同时构建 host 与 device 时,host 侧 hccl 库编入了 experimental 代码,但 device 侧 libscatter_aicpu_kernel.so 未编入,造成 host/device 不一致,运行时报错。
根因: build.sh 的 build_device() 以硬编码的 -D 参数列表调用独立 device 工程 cmake/device/CMakeLists.txt,该列表未包含 -DENABLE_EXPERIMENTAL;而 host 侧 cmake_config() 走 ${CUSTOM_OPTION},其中含 -DENABLE_EXPERIMENTAL=ON(build.sh:920-921)。
后果链:
Environment / 环境信息 (Mandatory / 必填)
硬件:Ascend 910C(16 卡,AICPU 模式;HCCL_OP_EXPANSION_MODE=AI_CPU)
CANN:9.1.x(host/device 包由 cann/hccl --experimental 构建)——
HCCL 仓:cann/hccl,分支/commit:<8abb2687b365a95b01f4a84a1d63c93d67513857>
工具链:aarch64-hcc 交叉编译(TOOLCHAIN_DIR=.../toolkit/toolchain/hcc)
Steps to reproduce the issue / 重现步骤 (Mandatory / 必填)
bash build.sh --experimental --full(host 与 device 同时构建)/opp/built-in/op_impl/aicpu/kernel/aicpu_hccl.tar.gz/lib64/
将产出的 aicpu_hccl.tar.gz 部署到
将 host 库 libhccl.so 安装到
设置环境:export HCCL_BIRS_ENABLE=TRUE、export HCCL_OP_EXPANSION_MODE=AI_CPU
运行:mpirun -n 16 ./bin/reduce_scatter_test -b 1M -e 1M -f 2 -d fp32 -o sum -p 16 -w 0 -n 1 -c 0
Describe the expected behavior / 预期结果 (Mandatory / 必填)
device 库 libscatter_aicpu_kernel.so 应包含 ReduceScatterBIRSExecutor 注册(strings 可见,REGISTER_EXEC 静态初始化生效),reduce_scatter_test 在 BIRS 路径下正常完成。
Related log / screenshot / 日志 / 截图 (Mandatory / 必填)
device 侧(logs/debug/device-0/device-*.log):
[ERROR] HCCL(...,aicpu_scheduler) [kernel_launch.cc:446] [...]Fail to find executor for algName[ReduceScatterBIRSExecutor]
[ERROR] CCECPU(...,aicpu_scheduler) [ae_kernel_lib_aicpu_kfc.cpp:223]...KFC HcclLaunchAicpuKernel run failed ret[1]
Special notes for this issue/备注 (Optional / 选填)
位置: build.sh build_device()(build.sh:180-189,cmake 调用)
影响范围: build_device() 被 --full / --aicpu / --static 路径共用,故 --experimental 在这些路径下 device 侧均失效。
建议修复(最小改动): 在 build_device() 的 cmake -S cmake/device -B . ... 调用前,把 bash 变量转为 CMake 的 ON/OFF 并加入参数列表:
if [ "${ENABLE_EXPERIMENTAL}" == "true" ]; then
DEVICE_ENABLE_EXPERIMENTAL="ON"
else
DEVICE_ENABLE_EXPERIMENTAL="OFF"
fi
另建议在 cmake/device/CMakeLists.txt(project(hccl_device) 之后)显式声明 option(ENABLE_EXPERIMENTAL "Enable experimental features" OFF),与根 CMakeLists.txt:13 一致,避免变量被静默当作未定义。
修复后需重新构建 device 包并重新部署 aicpu_hccl.tar.gz,再复测 reduce_scatter_test。