hccl-env-setup
触发:本机缺少可用的 HCCL 开发环境,需要 clone 仓库、探测或安装 CANN Toolkit+950 ops、生成环境变量文件时使用。
SKILL.mdcommunication/hccl-env-setup/SKILL.md
GitHubHCCL 环境准备
负责 HCCL 开发环境一键准备:clone hccl/hcomm 仓库 + 探测或安装 CANN + 生成 hccl-env.sh。
clone、下载和安装会改变外部环境;调用方必须在执行相应模式前确认目标路径和授权。探测模式也可能 clone 缺失仓库,不是纯只读操作。
输入
WORKSPACE(必选):工作目录,hccl仓、hcomm仓、Ascend安装目录均在此目录下。通过--workspace <path>参数或WORKSPACE环境变量传入;未提供时脚本报错退出。工作目录的布局约定由上层应用插件定义,本 Skill 不做假设。
前置依赖
- Python >= 3.7.0、pip3 >= 20.3.0
- gcc & g++ : 7.3.0 至 13.3.x
- cmake >= 3.16.0
- curl、wget(用于下载 CANN 包)
工作流程
Step 1. 探测模式
bash communication/hccl-env-setup/scripts/setup-env.sh --workspace <WORKSPACE>
脚本完成:
- ★ 检查前置依赖(curl/wget/python3/pip3/gcc/g++/cmake),缺失则输出安装命令并退出(所有模式均执行,不区分探测/安装)
- 读取
WORKSPACE(由--workspace参数或WORKSPACE环境变量传入) - clone 缺失的 hccl/hcomm 仓库;已存在时只输出
EXISTS:hccl:<path>/EXISTS:hcomm:<path>,不自动git pull - 仅探测
$WORKSPACE/Ascend/cann-*(不扫描系统其他位置的 CANN) - 找到 → 生成
hccl-env.sh,输出STATUS:CANN_FOUND - 找不到 → 输出
STATUS:CANN_NOT_FOUND
Step 2. 根据探测结果决策
读取 RESULT_START...RESULT_END 块中的 STATUS:
CANN_FOUND→ 直接跳到 Step 4(加载环境变量),source脚本已生成的hccl-env.sh(不询问是否重装;如需升级由用户显式执行setup-env.sh --install)CANN_NOT_FOUND→ 执行 Step 3(安装模式)
Step 3. 安装模式
安装模式会访问下载站、写入 $WORKSPACE/Ascend 并下载较大安装包。只有调用方已明确授权这些动作时执行。
bash communication/hccl-env-setup/scripts/setup-env.sh --install --workspace <WORKSPACE>
脚本完成:
- 抓取下载站最新日期目录
- 根据系统架构(
uname -m)下载 toolkit 包 + 950 系列 ops 包 --quiet静默安装到$WORKSPACE/Ascend- 生成
hccl-env.sh,输出STATUS:CANN_INSTALLED
下载地址:https://ascend.devcloud.huaweicloud.com/artifactory/cann-run-mirror/software/master/,此目录下可能包含多个日期目录。进入最新日期目录后,下载 Ascend-cann-toolkit_<ver>_linux-${ARCH}.run + Ascend-cann-950-ops_<ver>_linux-${ARCH}.run。如若没找到950 ops包,则刷新重新找一次。
安装命令(脚本内部执行):
./Ascend-cann-toolkit_<ver>_linux-${ARCH}.run --full --quiet --install-path=${WORKSPACE}/Ascend
./Ascend-cann-950-ops_<ver>_linux-${ARCH}.run --install --quiet --install-path=${WORKSPACE}/Ascend
Step 4. 加载环境变量
source ${WORKSPACE}/hccl-env.sh
环境变量包含:unset ASCEND_OPP_PATH ASCEND_TOOLKIT_HOME ASCEND_AICPU_PATH(清除系统 CANN 残留变量,防止 build.sh fallback 到 /usr/local/Ascend)+ HCCL_ROOT、HCOMM_CODE_HOME、HCOMM_DOCS、CANN_HOME、ASCEND_HOME_PATH + source ${CANN_HOME}/set_env.sh。
技术结果
hccl-env.sh 已生成,HCCL_ROOT、HCOMM_CODE_HOME、HCOMM_DOCS、CANN_HOME、ASCEND_HOME_PATH 已设置。
该结果只表示环境文件生成成功;使用前仍需按当前任务要求检查仓库结构、CANN 路径及环境变量一致性。