寒武纪Cambricon MLU270 环境搭建 CNStream EasyDK编译 改变系统路径 CNJPEGENC_FLAG_INVALID_FRAME 错误

本文档详细记录了在仅有一块MLU270板卡的情况下,如何同时满足两位同事使用不同版本SDK的需求。首先,硬件连接正常,然后安装驱动和SDK。在安装SDK时,为了避免冲突,将SDK安装到自定义目录。接着,解决编译过程中遇到的环境变量问题,通过shell脚本临时修改环境变量,成功编译CNStream。最后,遇到的CMakeCache.txt缓存问题通过删除并重新编译解决,完成开发环境的搭建。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看下MLU270 长啥样子:当成显卡来用就行了直接插在主板的PCI-E插槽上

 

 

 

说明一下前提:项目组有两个人 都需要利用寒武纪的MLU 270 工作,另一位同事用的是CNCodec是寒武纪封装过一层的 ,不是标准SDK提供的CNCodec,他只需要做视频解码编码的工作。

而领导给我的工作是用MLU270 来做AI这块的东西 ,然后看了下官方说明 需要用CNStream来做。然后从Git吧CNStream 下下来之后,里面有对应的编译说明 还得下载easyDK ,都下来之后

CNStream地址

直接编译 ,发现不行,后来发现,寒武纪封装过的CNCodec 和标准SDK 公用了很多东西 但是有不一样,而CNStream依赖于标准SDK,所以这就有个问题了,

原来以为有好几个 另外再装一台机子就可以。后来发现 所有的板卡都物尽其用了 也就是说目前司只有一个MLU270板卡。视频转码的同事用的CNCodec不是标准SDK提供的 而我有需要用标准的SDK进行编译。但是 又只有一台机子。

后来经过摸索 终于 搞定了,这里记录下

1,硬件查到机子上 lspci -d:270

 如下显示说明正常了

2,安装驱动 如下图 dkms 那个就是驱动

 dpkg -i neuware-mlu270-driver-dkms_4.2.0_all.deb

正常安装成功之后 执行cnmon命令 会显示板卡信息 如下:

 然后安装SDK  我这里有两个版本的一个1.4 一个1.5 

apt list neuware-mlu270 

有的话 会显示一些信息 我的已经被我改了没有显示了  

如果有的话需要先卸载旧版本 执行如下操作 :

apt remove neuware-mlu270

然后 安装(准确来说是解压)

dpkg -i neuware-mlu270-1.5.0-1_Ubuntu18.04_amd64.deb

会默认解压到 /var目录下一个neuware开头的文件夹下 我的如下图:

然后进入neuware-mul270-1.5.0目录 有如下安装包:

 执行如下命令全部安装 这些就是寒武纪的SDK 开发需要的东西了 就是一些头文件 和so库

dpkg -i *.deb

正确执行成功后 会在/usr/local/目录下生成一个neuware目录 如下图  

PS:我的被我命名成neuware_qmcy了 这下 做转码同事再安装非标准sdk的话我们两个就互相不影响了

下面的步骤比较重要,因为默认是安装到/usr/local/neuware目录下  所以 安装之后 需要把这个neuware目录复制到另一个自定义的目录 我放到了如下目录(服务器是命令行的没有装GUI 操作起来不方便  所以用samba 搭建了一个NFS 这样在我自己的电脑上就可以通过网路访问 像本地目录一样方便了,如下面的第二张图)

寒武纪SDK安装之后 会有一个NEUWARE_HOME的环境变量 可以echo一下 如下图 

后面编译的时候 都是按照这个NEUWARE_HOME 来找头文件和so库的

刚开始 是准备直接更改CMakeLists.txt  里面这个NEUWARE_HOME

比如改成NEUWARE_HOME_QMCY 后来发现 引用 NEUWARE_HOME这个变量的地方太多了,而且不止这个一个文件  cmake下面的mk文件里面也有很多。

然后就想到了第二种方法,即直接改变这个变量的值就可以了 实验成功 

这下就好办了 CNStream主目录下 新建一个build文件夹 新建一个build.sh

内容如下:

 很简单shell脚本 主要就是 先保存原来的NEUWARE_HOME的值 编译完成之后再恢复回原来的值

cmake 的几个参数 可以根据自己的需要设置,prefix是编译完成之后 头文件和库的安装目录 

没问问题的会 编译就成功了  

之后make install  发现 已经成功了 如下图 

中间有个坑 

就是每次执行build.sh这个脚本之后会在build目录下生成许多额外的东西  如下图

本来我之后一个build.sh 文件 结果编译之后 多了这么多 。而第一次编译 我没有改变那个NEUWARE_HOME的值 用的是默认的值 ,

之后再执行 新的脚本 即改变了这个值之后 发现 build目录下的有的文件并不会即使更新,就是这个CMakeCache.txt文件 ,百度了一下 是个缓存 直接删掉 就行 ,我为了保险 删除除了build.sh之外的所有东西 ,然后重新 执行一下就可以了 

哦对了编译的时候遇到个问题就是easyDK里面有个 Easy_encode.cpp 有个常量未定义 刚开始以为环境有问题 换了几个sdk都不行 ,就看了下上面的值 点进去发现有个差不过含义的值 ,替换一下就ok了 如下面的两张图 。这样 CNStream的开发环境就搭建好了  。下面就是正式的开发工作了

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

QMCY_jason

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值