Usar el acelerador DEEPX DX-M1 M.2 con reComputer RK3576

DEEPX DX-M1 es un acelerador de IA M.2 PCIe con tres núcleos NPU y memoria LPDDR5 integrada. Este tutorial explica cómo detectar la tarjeta en un reComputer RK3576, compilar un Runtime compatible con el firmware instalado, verificar su inicialización y supervisar el estado de la NPU.

La tarjeta utilizada en esta guía ejecuta firmware v1.6.0, combinado con DX-RT v2.6.0.

Configuración del sistema

ElementoConfiguración
HostreComputer RK3576 Dev Kit
Sistema operativoArmbian unofficial 26.05.0-trunk, Debian 12 (bookworm)
Kernel6.1.115-vendor-seeed-rk3576
AceleradorDEEPX DX-M1A M.2, LPDDR5 de clase 4 GB
Dispositivo PCIe1ff4:0001
Enlace negociadoPCIe Gen2 x1
Controlador NPUdxrt-driver-dkms 2.4.1-2
Firmware de la tarjetav1.6.0
RuntimeDX-RT v2.6.0, compilado desde la etiqueta oficial

Instalar el controlador PCIe

Descarga DX-All-Suite v2.4.2 para AArch64 Linux desde la página de software de DEEPX y copia el archivo al RK3576. Extráelo y entra en dx-runtime:

bash
tar -xzf dx-all-suite_v2.4.2.tar.gz
cd dx-all-suite/dx-runtime

Selecciona e instala el controlador utilizado en esta prueba. Este paso solo instala el controlador PCIe y no modifica el firmware de la tarjeta.

bash
ln -sfn 2.4.1 dx_rt_npu_linux_driver/release/latest
./install.sh --target=dx_rt_npu_linux_driver --exclude-fw
sudo reboot

Tras reiniciar, continúa con la comprobación del hardware. La biblioteca DX-RT compatible se compila por separado en lugar de instalar el Runtime incluido en el paquete actual.

Comprobar el hardware y el controlador

Instala el DX-M1 en la ranura M.2 PCIe, inicia el RK3576 y comprueba la función PCIe:

bash
lspci -nnk -s 01:00.0

Dispositivo PCIe y controlador DX-M1 en el terminal

Comprueba el nodo creado por el controlador:

bash
ls -l /dev/dxrt0

Nodo de dispositivo DX-M1 en el terminal

La presencia de /dev/dxrt0 confirma que el controlador PCIe ha inicializado el acelerador. Si no existe, resuelve primero el problema del controlador.

Compilar la versión compatible de DX-RT

DX-RT v3.3.0 requiere firmware v2.5.2 o posterior y no puede inicializar una tarjeta con firmware v1.6.0. DX-RT v2.6.0 establece v1.5.9 como firmware mínimo y es compatible con esta tarjeta.

Instala las herramientas de compilación:

bash
sudo apt-get update
sudo apt-get install -y build-essential cmake ninja-build python3-dev git

Clona la etiqueta exacta de DX-RT. Su configuración CMake requiere pybind11 v2.12; clonarlo de forma superficial evita descargar todo el historial.

bash
cd ~
git clone --branch v2.6.0 --depth 1 https://github.com/DEEPX-AI/dx_rt.git
cd dx_rt
git clone --depth 1 --branch v2.12 https://github.com/pybind/pybind11.git extern/pybind11

Configura y compila para la CPU AArch64 del RK3576:

bash
cmake -S . -B build_aarch64 -G Ninja \
  -DCMAKE_BUILD_TYPE=Release \
  -DCMAKE_TOOLCHAIN_FILE=cmake/toolchain.aarch64.cmake \
  -DCMAKE_INSTALL_PREFIX=/usr/local \
  -DPython_EXECUTABLE="$(command -v python3)"
cmake --build build_aarch64 --parallel 4

Estos comandos no cambian la instalación DX-RT del sistema. Para la primera comprobación, usa directamente el binario y la biblioteca del directorio de compilación:

bash
export LD_LIBRARY_PATH="$HOME/dx_rt/build_aarch64/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
$HOME/dx_rt/build_aarch64/bin/dxrt-cli -s

Estado de DX-RT y DX-M1 en el terminal

Verificar el servicio Runtime

Detén cualquier servicio DX-RT incompatible antes de iniciar el del directorio de compilación. El siguiente comando termina automáticamente después de 20 segundos y no instala una unidad systemd:

bash
sudo systemctl stop dxrt
timeout --signal=TERM 20s "$HOME/dx_rt/build_aarch64/bin/dxrtd"

La inicialización correcta incluye:

text
[DXRT_SVC][DxrtService] Initialized Devices count=1
[DXRT_SVC][DxrtService] Initialized Scheduler
[DXRT_IPC][DxrtService] Initialized IPC Server

Estos mensajes indican que el Runtime ha abierto el controlador e inicializado el DX-M1.

Supervisar el estado de la NPU

DX-RT v2.6.0 incluye un modo de supervisión en dxrt-cli. Este comando lee el estado cada segundo y termina tras tres segundos:

bash
timeout --signal=INT 3s "$HOME/dx_rt/build_aarch64/bin/dxrt-cli" -m 1

Supervisión del estado de la NPU DX-M1

El monitor muestra el voltaje, la frecuencia, la temperatura y el estado de DVFS de los tres núcleos NPU.

Instalar Model Zoo (opcional)

Para consultar los modelos disponibles, instala el paquete Model Zoo y sus dependencias de Python desde el directorio DX-All-Suite extraído:

bash
sudo apt-get install -y python3-venv
cd ~/dx-all-suite/dx-modelzoo
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
dxmz list
dxmz info resnet50_224x224

Los modelos DXNN dependen de las versiones de DX-COM y DX-RT con las que se generaron. Antes de ejecutar un modelo, consulta la página de DEEPX Model Zoo para confirmar la compatibilidad entre el modelo, el Runtime y el firmware. Esta guía utiliza DX-RT v2.6.0 con firmware v1.6.0.

Solución de problemas

  • lspci no muestra 1ff4:0001: apaga el equipo, vuelve a instalar el módulo M.2 y comprueba la ranura PCIe y la configuración de la placa.
  • Falta /dev/dxrt0: confirma que dx_dma_pcie está cargado y admite el dispositivo.
  • DX-RT 3.x no se inicializa con firmware v1.6.0: usa la ruta v2.6.0 verificada o únicamente el procedimiento de migración de DEEPX para la revisión exacta del módulo.
  • dxtop muestra un símbolo indefinido o solicita un servicio incompatible: pertenece a otra generación de DX-RT. Usa dxrt-cli -m 1 de v2.6.0 o instala un conjunto de herramientas con versiones coincidentes.

Referencias