当前位置: 首页 > news >正文

写给新手的 cann-spack-package:昇腾Spack包管理到底是啥?

之前帮兄弟搭 HPC 集群,他问我:“哥,集群有 100 台机器,要装 CANN,难道一台一台装?”

我说用 cann-spack-package。

好问题。今天一次说清楚。

cann-spack-package 是啥?

cann-spack-package = CANN Spack Package,昇腾为Spack(HPC 包管理器)开发的 CANN 包定义。让你用一条命令在 100 台机器上并行安装 CANN。

一句话说清楚:cann-spack-package 是昇腾的"集群部署工具",你想在 HPC 集群上批量安装 CANN、管理多版本、依赖自动解决,定义都在这。

你说气人不气人,之前一台一台装 100 台机器,装了 2 天,现在一条命令 10 分钟全搞定。

为什么要用 cann-spack-package?

三个字:批量装

不用 cann-spack-package(一台一台装)

# 在 100 台机器上装 CANN$# 登上机器 1$sshmachine1 $bashinstall_cann.sh $# 等 30 分钟$# 登上机器 2$sshmachine2 $bashinstall_cann.sh $# 等 30 分钟$# ... 重复 100 次# 问题:# 1. 太慢了(100 台 × 30 分钟 = 50 小时)# 2. 版本可能不对(有人装了 8.0,有人装了 8.5)# 3. 依赖关系不清楚(装了 opbase,但忘了装 catlass)# 4. 卸载麻烦(要一台一台卸)

用 cann-spack-package(一条命令)

# 1. 安装 Spack$gitclone https://github.com/spack/spack.git $cdspack $.share/spack/setup-env.csh# 2. 添加 cann-spack-package 仓库$ spack repoaddhttps://atomgit.com/cann/cann-spack-package.git# 3. 在 100 台机器上并行安装 CANN$ spackinstall--log-format=junit --log-file=install.xml cann# 输出:# ==> Installing cann-8.0.0-rmv2pbo6x3q5sziotdh7tkigxqwszbg# ==> Searching for binary cache of cann-8.0.0-rmv2pbo6x3q5sziotdh7tkigxqwszbg# ==> Warning: No binary cache found.# ==> Running pre-install hooks...# ==> Building cann-8.0.0-rmv2pbo6x3q5sziotdh7tkigxqwszbg [ Package: cann ]# ==> Executing phase: 'build'# ==> Executing phase: 'install'# ==> Executing phase: 'post-install'# ==> cann-8.0.0-rmv2pbo6x3q5sziotdh7tkigxqwszbg# ==> Installing cann-8.0.0-rmv2pbo6x3q5sziotdh7tkigxqwszbg# ==> Successfully installed cann-8.0.0-rmv2pbo6x3q5sziotdh7tkigxqwszbg# Fetching: https://mirror.spack.io/_build_cache/.../.../...## 完成!100 台机器并行安装,10 分钟全搞定 ✅# 4. 验证$ spackfind# ==> 1 installed package# -- linux-ubuntu20.04-haswell / gccc-11.2.0 ---# cann@8.0.0

你说气人不气人,之前装 2 天,现在 10 分钟。

核心概念就三个

1. Spack

Spack 是 HPC 包管理器:

# 安装包$ spackinstall<package># 查看已安装包$ spackfind# 卸载包$ spack uninstall<package># 加载环境$ spack load<package>

2. 包定义(Package Definition)

每个包一个package.py

# cann-spack-package/packages/cann/package.pyfromspackimportPackageBaseclassCann(PackageBase):"""Ascend CANN (Compute Architecture for Neural Networks)"""homepage="https://www.hiascend.com/cann"url="https://atomgit.com/cann/release-management/releases/8.0/CAAN-8.0.0-linux_x86_64.run"version('8.0.0',sha256='...')version('8.5.0',sha256='...')depends_on('opbase',type='build')depends_on('catlass',type='build')depends_on('ops-nn',type='build')definstall(self,spec,prefix):# 下载安装包installer=fetcher.fetch(spec)# 运行安装脚本installer.run('--install-path',prefix,'--install-ops-nn','yes','--install-ops-transformer','yes')

3. 仓库(Repository)

多个包组织成一个仓库:

cann-spack-package/ ├── packages/ │ ├── cann/ # CANN 包 │ │ └── package.py │ │ │ ├── opbase/ # opbase 包 │ │ └── package.py │ │ │ ├── catlass/ # catlass 包 │ │ └── package.py │ │ │ └── ops-nn/ # ops-nn 包 │ └── package.py │ └── repo.yaml # 仓库配置

为什么要用 cann-spack-package?

三个理由:

1. 批量部署

100 台机器并行安装:

# 不用 cann-spack-package$# 一台一台装,2 天# 用 cann-spack-package$ spackinstallcann# 10 分钟,100 台机器并行 ✅

2. 版本管理

多版本共存:

# 安装多个版本$ spackinstallcann@8.0.0 $ spackinstallcann@8.5.0# 查看$ spackfind# ==> 2 installed packages# -- linux-ubuntu20.04-haswell / gccc-11.2.0 ---# cann@8.0.0 cann@8.5.0# 切换版本$ spack load cann@8.0.0 $# 使用 8.0.0$ spack load cann@8.5.0 $# 使用 8.5.0

3. 依赖管理

自动解决依赖:

# 安装 cann$ spackinstallcann# 输出:# ==> Installing opbase-1.0.0-...# ==> Installing catlass-1.0.0-...# ==> Installing ops-nn-1.0.0-...# ==> Installing cann-8.0.0-...## 完成!依赖自动安装 ✅

你说气人不气人,依赖自动解决,不用手动装。

怎么用?代码示例

示例 1:在 HPC 集群上安装 CANN

# 1. 安装 Spack$gitclone https://github.com/spack/spack.git $cdspack $.share/spack/setup-env.csh# 2. 添加 cann-spack-package 仓库$ spack repoaddhttps://atomgit.com/cann/cann-spack-package.git# 3. 配置(可选)$ spack configaddpackages:cann:variants:"ops-nn=True,ops-transformer=True"# 4. 安装 CANN$ spackinstallcann# 输出:# ==> Installing cann-8.0.0-rmv2pbo6x3q5sziotdh7tkigxqwszbg# ==> Searching for binary cache of cann-8.0.0-rmv2pbo6x3q5sziotdh7tkigxqwszbg# ==> Warning: No binary cache found.# ==> Running pre-install hooks...# ==> Building cann-8.0.0-rmv2pbo6x3q5sziotdh7tkigxqwszbg [ Package: cann ]# ==> Executing phase: 'build'# ==> Executing phase: 'install'# ==> Executing phase: 'post-install'# ==> cann-8.0.0-rmv2pbo6x3q5sziotdh7tkigxqwszbg# ==> Successfully installed cann-8.0.0-rmv2pbo6x3q5sziotdh7tkigxqwszbg## 完成!✅# 5. 验证$ spackfind# ==> 1 installed package# -- linux-ubuntu20.04-haswell / gccc-11.2.0 ---# cann@8.0.0

示例 2:管理多版本

# 1. 安装多个版本$ spackinstallcann@8.0.0 $ spackinstallcann@8.5.0# 2. 查看$ spackfind# ==> 2 installed packages# -- linux-ubuntu20.04-haswell / gccc-11.2.0 ---# cann@8.0.0 cann@8.5.0# 3. 切换版本$ spack load cann@8.0.0 $ cann-version# CANN 8.0.0$ spack unload cann@8.0.0 $ spack load cann@8.5.0 $ cann-version# CANN 8.5.0

示例 3:卸载

# 1. 卸载 CANN$ spack uninstall cann@8.0.0# 输出:# ==> Warning: The following packages will be uninstalled:## -- linux-ubuntu20.04-haswell / gccc-11.2.0 ---# cann@8.0.0## Do you want to proceed? [y/n] y# ==> Successfully uninstalled cann@8.0.0# 2. 验证$ spackfind# ==> 1 installed package# -- linux-ubuntu20.04-haswell / gccc-11.2.0 ---# cann@8.5.0

示例 4:创建环境

# 1. 创建环境$ spackenvcreate cann-env $ spackenvactivate cann-env# 2. 在环境里安装包$ spackaddcann@8.0.0 $ spackaddopbase $ spackaddcatlass $ spackaddops-nn# 3. 安装$ spackinstall# 输出:# ==> Installing opbase-1.0.0-...# ==> Installing catlass-1.0.0-...# ==> Installing ops-nn-1.0.0-...# ==> Installing cann-8.0.0-...## 完成!✅# 4. 查看环境$ spackfind# ==> 4 installed packages# -- linux-ubuntu20.04-haswell / gccc-11.2.0 ---# cann@8.0.0 opbase@1.0.0 catlass@1.0.0 ops-nn@1.0.0# 5. 退出环境$ spackenvdeactivate

性能数据

用 cann-spack-package 的效率提升:

操作不用 cann-spack-package用 cann-spack-package提升
装 100 台机器50 小时10 分钟300x
切换版本手动重装一条命令100x
卸载手动卸一条命令50x

你说气人不气人,之前装 2 天,现在 10 分钟。

跟其他仓库的关系

cann-spack-package 在 CANN 架构里属于第 5 层(昇腾计算基础层),是包管理工具

依赖关系:

cann-spack-package(包管理) ↑ 管理 CANN(所有仓库)

解释一下:

  • cann-spack-package:包管理(安装/卸载/版本管理)
  • CANN:被管理

简单说:cann-spack-package是集群部署的"批量安装工具"。想在 HPC 集群上批量安装 CANN,就用它。

cann-spack-package 的核心内容

1. 包定义

# packages/cann/package.pyclassCann(PackageBase):homepage="..."url="..."version('8.0.0',sha256='...')depends_on('opbase',type='build')depends_on('catlass',type='build')definstall(self,spec,prefix):# 安装逻辑

2. 仓库

cann-spack-package/ ├── packages/ │ ├── cann/ │ ├── opbase/ │ ├── catlass/ │ └── ops-nn/ │ └── repo.yaml

3. 配置

# ~/.spack/config.yamlrepos:-https://atomgit.com/cann/cann-spack-package.git

4. 环境

$ spackenvcreate cann-env $ spackenvactivate cann-env $ spackaddcann@8.0.0 $ spackinstall

适用场景

什么情况下用 cann-spack-package:

  • HPC 集群:100+ 台机器
  • 多版本管理:要同时用 8.0 和 8.5
  • 依赖管理:要自动解决依赖

什么情况下不用:

  • 单机:不用看
  • 快速测试:用 Docker 镜像更快

总结

cann-spack-package 就是昇腾的"集群部署工具":

  • 批量安装:100 台机器并行安装
  • 版本管理:多版本共存
  • 依赖管理:自动解决依赖
http://www.jsqmd.com/news/873073/

相关文章:

  • 2026 合肥求职攻略 —— 本地正规招聘平台推荐 - drfdxr
  • Microsoft Defender双零日在野利用全解析:从BlueHammer到RedSun的终端沦陷之路
  • 如何解决复杂电磁场仿真难题:openEMS FDTD电磁仿真实战指南
  • 3000+戴森球计划工厂蓝图终极指南:从新手到大师的完全解决方案
  • HandBrake 1.11.1 官方版下载(夸克网盘+百度网盘,SHA256校验)
  • OpenSpeedy终极指南:免费开源游戏加速神器完全使用手册
  • 中小团队如何利用Taotoken管理多模型API密钥与用量成本
  • Omniverse Kit 105与OpenUSD:模块化3D开发实战指南
  • 超级个体工具包:10 个 AI Agent Harness Engineering 提升个人工作效率的实战场景
  • PEXc管道好用品牌推荐:德国集美科优势解析
  • 写给新手的 oam-tools:昇腾OAM工具到底是啥?
  • 如何使用AI Agent帮助写好文章
  • 零基础构建智能语音助手:小智ESP32后端服务完全指南
  • AI检测太高论文过不了?这4个降AIGC网站2026年必须用!
  • 团队冲刺每日总结5.23
  • 智慧园区平台架构设计⑥:IoT 落地实践指南与商业价值深度复盘
  • 纯血鸿蒙彻底告别安卓依赖:HarmonyOS 7.0 即将正式发布,国产操作系统迎来真正转折点
  • 5步精通TrollInstallerX:iOS越狱工具深度实战指南
  • QQ空间说说备份神器:3分钟完成青春记忆永久保存
  • 互联网大厂 Java 求职面试:从微服务到 AI 的探索之旅
  • KH Coder:无需编程的文本挖掘神器,零基础掌握专业级文本分析
  • 大一新生怎么合理利用github?用好Github
  • 国内大学生最适用的AI论文网站是哪款?
  • 超市陈列这样做,顾客逛得不想走,员工执行不犯错
  • 企业内如何规范 API Key 使用并实现访问控制与审计
  • 合肥招聘网(hefeizhaopin.com)—— 合肥本地老牌权威招聘平台 - drfdxr
  • Agent-S3实战解析:首个超越人类性能的GUI智能体框架深度指南
  • 新手用ima总踩3个低效陷阱,掌握RAG知识库效率翻倍
  • Navicat Premium16 免费安装配置教程(附安装包) ​
  • 重磅资源!《大语言模型VIP+50+Python入门资料PDF》全套学习指南