环境部署

基于本项目进行算子调用算子开发之前,需要参考下述步骤完成基础环境搭建。

前提条件

使用本项目前,请确保如下基础依赖、NPU驱动和固件已安装。

  1. 安装依赖

    本项目源码编译用到的依赖如下,请注意版本要求。

    • python >= 3.7.0, < 3.10
    • gcc >= 7.3.0
    • cmake >= 3.16.0
    • pigz(可选,安装后可提升打包速度,建议版本 >= 2.4)
    • dos2unix
    • gawk
    • make

    上述依赖包可通过项目根目录install_deps.sh安装,命令如下,若遇到不支持系统,请参考该文件自行适配。

    bash install_deps.sh
    
  2. 安装驱动与固件(运行态依赖)

    运行算子时必须安装驱动与固件,若仅编译算子,可跳过本操作。

    单击下载链接,根据实际产品型号和环境架构,获取对应的Ascend-hdk-<chip_type>-npu-driver_<version>_linux-<arch>.runAscend-hdk-<chip_type>-npu-firmware_<version>_linux-<arch>.run包。

    安装指导详见《CANN 软件安装指南》。

环境准备(二选一)

算子开发的第一步是准备一个包含CANN及算子仓前置依赖的环境,使用Docker镜像是最高效的方式。

使用Docker部署

说明:

  • 该部署方式适用于Ascend 950系列产品。
  • 镜像文件比较大,下载需要一定时间,请您耐心等待。

1. 下载镜像

  1. 以root用户登录宿主机。确保宿主机已安装Docker引擎(版本1.11.2及以上)。
  2. 从昇腾镜像仓库拉取已预集成CANN软件包及ops-tensor所需依赖的镜像。命令如下,根据实际架构选择:
# 示例:拉取ARM架构的CANN开发镜像
docker pull --platform=arm64 swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-950-ubuntu22.04-py3.10-ops
# 示例:拉取X86架构的CANN开发镜像
docker pull --platform=amd64 swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-950-ubuntu22.04-py3.10-ops

2. 运行Docker

拉取镜像后,需要以特定参数启动容器,以便容器内能访问宿主的昇腾设备。

docker run --name cann_container --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:9.0.0-950-ubuntu22.04-py3.10-ops bash
参数 说明 注意事项
--name cann_container 为容器指定名称,便于管理。 可自定义。
--device /dev/davinci0 核心:将宿主机的NPU设备卡映射到容器内,可指定映射多张NPU设备卡。 必须根据实际情况调整:davinci0对应系统中的第0张NPU卡。请先在宿主机执行 npu-smi info命令,根据输出显示的设备号(如NPU 0, NPU 1)来修改此编号。
--device /dev/davinci_manager 映射NPU设备管理接口。
--device /dev/devmm_svm 映射设备内存管理接口。
--device /dev/hisi_hdc 映射主机与设备间的通信接口。
-v /usr/local/dcmi:/usr/local/dcmi 挂载设备容器管理接口(DCMI)相关工具和库。
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi 挂载npu-smi工具。 使容器内可以直接运行此命令来查询NPU状态和性能信息。
-v /usr/local/Ascend/driver/lib64/:/usr/local/Ascend/driver/lib64/ 关键挂载:将宿主机的NPU驱动库映射到容器内。
-v /usr/local/Ascend/driver/version.info:/usr/local/Ascend/driver/version.info 挂载驱动版本信息文件。
-v /etc/ascend_install.info:/etc/ascend_install.info 挂载CANN软件安装信息文件。
-it -i(交互式)和 -t(分配伪终端)的组合参数。
镜像名称 指定要运行的Docker镜像。 请确保此镜像名和标签(tag)与你通过docker pull拉取的镜像完全一致。
bash 容器启动后立即执行的命令。

手动安装CANN包

  1. 安装社区CANN toolkit包

    根据实际产品型号和环境架构,获取对应的Ascend-cann-toolkit_${cann_version}_linux-${arch}.run包。

    Ascend 950系列产品:单击下载链接获取软件包。

    # 确保安装包具有可执行权限
    chmod +x Ascend-cann-toolkit_${cann_version}_linux-${arch}.run
    # 安装命令
    ./Ascend-cann-toolkit_${cann_version}_linux-${arch}.run --install --force --install-path=${install_path}
    
    • ${cann_version}:表示CANN包版本号。
    • ${arch}:表示CPU架构,如aarch64、x86_64。
    • ${install_path}:表示指定安装路径,默认安装在/usr/local/Ascend目录。
  2. 安装社区版CANN ops包(运行态依赖)

    运行算子时必须安装本包,若仅编译算子,可跳过本操作。

    根据实际产品型号和环境架构,获取对应的Ascend-cann-${soc_name}-ops_${cann_version}_linux-${arch}.run包。

    Ascend 950系列产品:单击下载链接获取软件包。

    # 确保安装包具有可执行权限
    chmod +x Ascend-cann-${soc_name}-ops_${cann_version}_linux-${arch}.run
    # 安装命令
    ./Ascend-cann-${soc_name}-ops_${cann_version}_linux-${arch}.run --install --install-path=${install_path}
    
    • {soc_name}:表示NPU型号名称,即\{soc\_name\}:表示NPU型号名称,即{soc_version}删除"ascend"后剩余的内容,如950
    • ${install_path}:表示指定安装路径,需要与toolkit包安装在相同路径,默认安装在/usr/local/Ascend目录。

环境验证

安装CANN包或进入容器后,验证环境和驱动是否正常。

  • 检查NPU设备
    # 运行npu-smi,若能正常显示设备信息,则驱动正常
    npu-smi info
    
  • 检查CANN安装
    # 查看CANN Toolkit版本信息
    cat /usr/local/Ascend/ascend-toolkit/latest/opp/version.info
    

环境变量配置

根据实际场景,选择合适的命令。

# 默认路径安装,以root用户为例(非root用户,将/usr/local替换为${HOME})
source /usr/local/Ascend/cann/set_env.sh
# 指定路径安装
# source ${install_path}/cann/set_env.sh

源码下载

# 下载项目源码,以master分支为例
git clone https://gitcode.com/cann/ops-tensor.git