HyperParallel 的 symmetric memory 和 multicore native 组件共享 CANN SHMEM SDK。当前依赖锁定到 SHMEM v1.6.0(commit aee374a396b389626f68fab74ec8c555e18978a7)。在 CANN 9.2 环境编译时, SHMEM host 兼容层无法获得 HcommChannelDesc 声明,导致两个组件均无法构建。
aee374a396b389626f68fab74ec8c555e18978a7
HcommChannelDesc
该问题在 HyperParallel Gate 8051 中稳定复现:
CANN:9.2.0-beta.2
9.2.0-beta.2
构建命令:
bash build.sh --multicore mindspore --shmem all --custom-ops on --strict off
关键错误:
src/host/utils/under_api/hcomm_entity_compat.h: error: use of undeclared identifier 'HcommChannelDesc' error: unknown type name 'HcommChannelDesc'
构建使用 --strict off 时,optional 组件失败不会阻止 wheel 输出,因此最终会生成不包含 symmetric memory 和 multicore payload 的 wheel;custom ops 组件可以独立构建成功。
--strict off
失败日志:https://log-build.mindspore.cn/job/Hyper-parallel_Atomgit_Gate/8051
SHMEM v1.6.0 的 hcomm_entity_compat.h 根据 CANN 头文件是否存在选择兼容分支:
hcomm_entity_compat.h
hcomm/hcomm_res_entity_defs.h
hcomm_res.h
__has_include
SHMEM 上游 commit d30702bb 已调整该实现:host 编译不再直接包含 CANN HCOMM 头文件,而是在 SHMEM 内维护用于 dlopen/dlsym 调用的 ABI 形状声明,从而避免该头文件差异。该提交晚于 v1.6.0,目前 SHMEM release 页面尚无包含该修复的 新正式版本。
d30702bb
dlopen/dlsym
关联:#333
Checklist
问题描述
HyperParallel 的 symmetric memory 和 multicore native 组件共享 CANN SHMEM SDK。当前依赖锁定到
SHMEM v1.6.0(commit
aee374a396b389626f68fab74ec8c555e18978a7)。在 CANN 9.2 环境编译时,SHMEM host 兼容层无法获得
HcommChannelDesc声明,导致两个组件均无法构建。该问题在 HyperParallel Gate 8051 中稳定复现:
CANN:
9.2.0-beta.2构建命令:
关键错误:
构建使用
--strict off时,optional 组件失败不会阻止 wheel 输出,因此最终会生成不包含symmetric memory 和 multicore payload 的 wheel;custom ops 组件可以独立构建成功。
失败日志:https://log-build.mindspore.cn/job/Hyper-parallel_Atomgit_Gate/8051
根因
SHMEM v1.6.0 的
hcomm_entity_compat.h根据 CANN 头文件是否存在选择兼容分支:hcomm/hcomm_res_entity_defs.h,代码进入旧的兼容分支,并可通过hcomm_res.h获得HcommChannelDesc。hcomm/hcomm_res_entity_defs.h,__has_include命中新分支;该头文件不再提供SHMEM 当前代码所需的
HcommChannelDesc,同时 SHMEM 自身的 ABI 兼容声明被关闭。HyperParallel 的 CANN 路径发现或版本解析。
SHMEM 上游 commit
d30702bb已调整该实现:host 编译不再直接包含 CANN HCOMM 头文件,而是在 SHMEM 内维护用于
dlopen/dlsym调用的 ABI 形状声明,从而避免该头文件差异。该提交晚于 v1.6.0,目前 SHMEM release 页面尚无包含该修复的
新正式版本。
影响范围
--strict off仍会输出 wheel,但上述 optional native 组件缺失,相关 Level1 用例应负责发现该问题。建议方案
d30702bb或其后经验证的官方 commit;若上游发布包含修复的新版本,优先切换到正式 release。
验收标准
关联:#333