rk3588上创建一个能调用NPU加速的docker容器

需要先确认一下目录系统是否加载了NPU,使用什么方法加载NPU驱动的,方法是:

dmesg | grep -i rknpu

正确的话应该可以看到

[ 9.617119] [drm] Initialized rknpu 0.8.2 20220829 for fdab0000.npu on minor 1

之类的初始化日志。

再运行:ls -l /dev/dri 2>/dev/null || echo “no /dev/dri”

正常的话应该可以看到:

crw-rw—-+ 1 root video 226, 0 2023年 5月 9日 card0
crw-rw—-+ 1 root video 226, 1 2023年 5月 9日 card1
crw-rw-rw- 1 root render 226, 128 2023年 5月 9日 renderD128
crw-rw-rw- 1 root render 226, 129 2023年 5月 9日 renderD129

再运行 sudo find /usr -name “librk
nn*.so*” 2>/dev/null

正常应该至少看到:

/usr/lib/librknnrt.so/usr/lib/librknnrt.so

这样就可以确定系统是以内核的方式加载了npu驱动,并具备一个最小的runtime 库 librknnrt.so

这样就可以使用以下命令启动一个能调用npu 的容器:

docker run -it –rm \
  –device=/dev/dri/card1 \
  –device=/dev/dri/renderD129 \
  -v /usr/lib/librknnrt.so:/usr/lib/librknnrt.so:ro \
  <镜像> bash

创建一个能使用ffmpeg 调用rk3588硬件视频编解码的容器

使用如下docker 命令:

docker run -it –privileged -d –device=/dev/mpp_service:/dev/mpp_service –device=/dev/rga:/dev/rga –device=/dev/dri:/dev/dri –device=/dev/dma_heap:/dev/dma_heap –name test_vpu -v /tmp:/tmp -v /home/marblech:/data rk3588_ubuntu2004_gst:latest bash

编译ffmpeg:

git clone https://github.com/nyanmisaka/ffmpeg-rockchip.git ffmpeg
cd ffmpeg
./configure \
  –prefix=/usr/local \
  –enable-gpl \
  –enable-version3 \
  –enable-libdrm \
  –enable-rkmpp \
  –enable-rkrga \
  –disable-static \
  –enable-shared
# 编译并安装
make -j8
sudo make install