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
| Elemento | Configuración |
|---|---|
| Host | reComputer RK3576 Dev Kit |
| Sistema operativo | Armbian unofficial 26.05.0-trunk, Debian 12 (bookworm) |
| Kernel | 6.1.115-vendor-seeed-rk3576 |
| Acelerador | DEEPX DX-M1A M.2, LPDDR5 de clase 4 GB |
| Dispositivo PCIe | 1ff4:0001 |
| Enlace negociado | PCIe Gen2 x1 |
| Controlador NPU | dxrt-driver-dkms 2.4.1-2 |
| Firmware de la tarjeta | v1.6.0 |
| Runtime | DX-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:
tar -xzf dx-all-suite_v2.4.2.tar.gz
cd dx-all-suite/dx-runtimeSelecciona e instala el controlador utilizado en esta prueba. Este paso solo instala el controlador PCIe y no modifica el firmware de la tarjeta.
ln -sfn 2.4.1 dx_rt_npu_linux_driver/release/latest
./install.sh --target=dx_rt_npu_linux_driver --exclude-fw
sudo rebootTras 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:
lspci -nnk -s 01:00.0
Comprueba el nodo creado por el controlador:
ls -l /dev/dxrt0
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:
sudo apt-get update
sudo apt-get install -y build-essential cmake ninja-build python3-dev gitClona la etiqueta exacta de DX-RT. Su configuración CMake requiere pybind11 v2.12; clonarlo de forma superficial evita descargar todo el historial.
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/pybind11Configura y compila para la CPU AArch64 del RK3576:
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 4Estos 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:
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
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:
sudo systemctl stop dxrt
timeout --signal=TERM 20s "$HOME/dx_rt/build_aarch64/bin/dxrtd"La inicialización correcta incluye:
[DXRT_SVC][DxrtService] Initialized Devices count=1
[DXRT_SVC][DxrtService] Initialized Scheduler
[DXRT_IPC][DxrtService] Initialized IPC ServerEstos 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:
timeout --signal=INT 3s "$HOME/dx_rt/build_aarch64/bin/dxrt-cli" -m 1
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:
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_224x224Los 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
lspcino muestra1ff4: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 quedx_dma_pcieestá 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. dxtopmuestra un símbolo indefinido o solicita un servicio incompatible: pertenece a otra generación de DX-RT. Usadxrt-cli -m 1de v2.6.0 o instala un conjunto de herramientas con versiones coincidentes.