5793aaed17b3f1ce8e1c3238780e8453.png

大家好,还是我,那个报名了“2025年昇腾CANN训练营第二季”后打了鸡血的开发者

上一篇,我激情满满地分享了如何实现第一个Add算子,仿佛自己已经一只脚踏入了AI底层大神的世界。但今天,我想按下回溯键,和大家聊聊在敲下那行hello world代码之前,那段“激情燃烧”的岁月——环境搭建

相信我,每个程序员的成长之路上,都有一座名为“环境配置”的大山。你以为的开发是这样的:灵感迸发,键盘飞舞,代码行云流水。而现实中的第一天往往是这样的:

image.png


没错,在与昇腾NPU“亲密接触”的初期,我也没能逃过这个定律。不过好消息是,那些曾经让我抓耳挠腮的坑,现在都变成了这篇指南里的宝贵经验。这篇“踩坑日记”将带你绕过最常见的陷阱,让你的CANN学习之旅从一开始就顺风顺水!

天坑一:版本!版本!还是该死的版本!

这是新手村的第一个大魔王,也是最容易被忽视的。CANN是一个复杂的系统工程,它要求驱动、固件、CANN Toolkit三者版本必须严格配套!

我的惨痛经历:
我一开始想当然地在昇腾社区下载了最新版的Toolkit,但服务器上的驱动还是旧的。结果就是,npu-smi info命令时好时坏,编译算子时报一些看不懂的底层错误,比如ascendrt_... failed。我花了大半天时间检查代码,最后发现问题根本不在代码上。

【解决方案 & 避坑指南】

  1. 先确认,再动手! 在安装任何东西之前,先用npu-smi info命令查看当前的驱动和固件版本。

image.png

  1. 查阅官方“家谱”: 访问华为昇腾官方文档,找到 《版本配套说明》。这份文档就是“圣经”,它详细列出了哪个版本的Toolkit对应哪个版本的驱动和固件。
  2. 对号入座: 根据你查到的驱动版本,去下载与之配套的CANN Toolkit版本,而不是最新的!如果需要,联系你的系统管理员升级或降级驱动,确保三者统一。

一句话总结:不要相信感觉,只相信官方版本配套表!

天坑二:“环境变量”的幽灵

第二个坑,更加隐蔽。你可能已经成功安装了所有东西,但终端却无情地告诉你bash: msopgen: command not found。这时,你多半是遇到了环境变量问题。

我的惨痛经历:
CANN Toolkit安装完成后,最后一步会提示你source一个环境变量脚本,比如 source /usr/local/Ascend/ascend-toolkit/set_env.sh。我当时确实执行了,而且命令也找到了。但当我关掉终端再重新打开时,发现命令又失效了!原来source命令只在当前终端会话中有效。

【解决方案 & 避坑指南】

  1. 让它永久生效: 要想一劳永逸,你需要把环境变量配置写入你终端的配置文件中。对于大多数Linux系统(如Ubuntu),这个文件是~/.bashrc

    • 打开文件:vim ~/.bashrc
    • 在文件末尾,添加这样一行:
      source /usr/local/Ascend/ascend-toolkit/set_env.sh
      
      (注意:请根据你的实际安装路径修改)
    • 保存退出,然后执行source ~/.bashrc让配置立即生效。
  2. 检查是否生效: 使用echo $PATHecho $LD_LIBRARY_PATH命令,检查输出中是否包含了ascend-toolkit相关的路径。


image.png

一句话总结:source一次是体验卡,写入.bashrc才是永久VIP。

天坑三:依赖地狱与权限之墙

第三个坑是关于系统依赖和文件权限的,尤其是在多人共用的服务器上。

我的惨痛经历:
在执行build.sh编译我的第一个Add算子时,我遇到了Permission denied错误。检查后发现,脚本需要在某些系统目录下创建临时文件,而我的普通用户没有权限。另一个问题是,编译依赖的一些库(比如protobuf)系统里没有,或者版本太老,导致编译失败。


![image.png](https://i-blog.csdnimg.cn/img_convert/e39831acbdff629a05c6ed188de424df.png)

【解决方案 & 避坑指南】

  1. 依赖问题 - 遵循官方指引: CANN的安装文档里明确列出了所有必需的系统依赖(如gcc, g++, cmake, python等)及其版本要求。使用aptyum安装它们。对于Python依赖,强烈建议使用condavirtualenv创建一个独立的虚拟环境,避免与系统环境冲突。
    # 示例:创建一个conda环境
    conda create -n cann_dev python=3.7.5
    conda activate cann_dev
    pip install protobuf numpy decorator
    
  2. 权限问题 - 寻求帮助或使用sudo
    • 如果是你自己的机器,大部分权限问题可以通过在命令前加sudo解决。
    • 如果在公司或学校的服务器上,不要随意使用sudo。最好的办法是联系管理员,说明你需要哪些目录的读写权限。
    • 一个折中的办法是,尝试将CANN Toolkit安装在你自己的用户目录下(例如~/ascend),这样可以避免很多系统级的权限问题。

一句话总结:虚拟环境保平安,权限不够找管家。

最后的曙光:成功的那一刻

经历了九九八十一难,当你终于解决了所有问题,再次敲下npu-smi info,看到那清爽干净的NPU信息列表时,那种成就感无与伦比!这意味着,你已经征服了环境配置这座大山,可以真正开始你的CANN算子开发之旅了。


![image.png](https://i-blog.csdnimg.cn/img_convert/723a6253cb7a3bd8424e48a06e66a750.png)
写在最后:不要孤军奋战!

环境搭建的过程虽然痛苦,但它也是学习的一部分。不过,你完全不必像我一样把所有坑都踩一遍。2025年昇腾CANN训练营第二季不仅有从零开始的系统课程,更重要的是,它有一个活跃的开发者社区和答疑群!

在这里,你遇到的任何问题,都可以提出来和老师、同学交流,避免一个人钻牛角尖。训练营基于CANN开源开放全场景,推出了0基础入门系列、码力全开特辑、开发者案例等专题课程,助力不同阶段开发者快速提升算子开发技能。

获得Ascend C算子中级认证,即可领取精美证书,完成社区任务更有机会赢取华为手机、平板、开发板等大奖!

如果你也想高效、顺畅地开启AI底层开发之路,强烈建议你加入我们!

报名链接: https://www.hiascend.com/developer/activities/cann20252

希望我这篇“血泪史”能帮你节省宝贵的时间。快来训练营,让我们一起在更酷的代码世界里相遇!

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐