Utiliser l'accélérateur DEEPX DX-M1 M.2 avec le reComputer RK3576

Le DEEPX DX-M1 est un accélérateur IA M.2 PCIe doté de trois cœurs NPU et de mémoire LPDDR5 embarquée. Ce tutoriel montre comment détecter la carte sur un reComputer RK3576, compiler un Runtime compatible avec son firmware, vérifier son initialisation et surveiller l'état du NPU.

La carte utilisée dans ce guide exécute le firmware v1.6.0, associé à DX-RT v2.6.0.

Configuration du système

ÉlémentConfiguration
HôtereComputer RK3576 Dev Kit
SystèmeArmbian unofficial 26.05.0-trunk, Debian 12 (bookworm)
Noyau6.1.115-vendor-seeed-rk3576
AccélérateurDEEPX DX-M1A M.2, LPDDR5 classe 4 Go
Périphérique PCIe1ff4:0001
Liaison négociéePCIe Gen2 x1
Pilote NPUdxrt-driver-dkms 2.4.1-2
Firmwarev1.6.0
RuntimeDX-RT v2.6.0, compilé depuis le tag DEEPX

Installer le pilote PCIe

Téléchargez DX-All-Suite v2.4.2 pour AArch64 Linux depuis la page de téléchargement DEEPX, puis copiez l'archive sur le RK3576. Extrayez-la et ouvrez le répertoire dx-runtime :

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

Sélectionnez et installez la version du pilote correspondant à la configuration ci-dessus. Cette étape installe uniquement le pilote PCIe et ne modifie pas le firmware de la carte.

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

Après le redémarrage, poursuivez avec le contrôle matériel. La bibliothèque DX-RT compatible sera compilée séparément, sans installer le Runtime du paquet actuel.

Vérifier le matériel et le pilote

Installez le DX-M1 dans le logement M.2 PCIe, démarrez le RK3576 et vérifiez la fonction PCIe :

bash
lspci -nnk -s 01:00.0

Périphérique PCIe DX-M1 et pilote dans le terminal

Vérifiez le nœud créé par le pilote :

bash
ls -l /dev/dxrt0

Nœud de périphérique DX-M1 dans le terminal

La présence de /dev/dxrt0 confirme que le pilote PCIe a initialisé l'accélérateur. S'il manque, corrigez d'abord l'installation du pilote.

Compiler la version DX-RT compatible

DX-RT v3.3.0 exige le firmware v2.5.2 ou plus récent et ne peut pas initialiser une carte utilisant le firmware v1.6.0. DX-RT v2.6.0 exige au minimum v1.5.9 et est compatible avec cette carte.

Installez les outils de compilation :

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

Clonez le tag DX-RT exact. La configuration CMake demande pybind11 v2.12 ; un clone superficiel évite de télécharger tout l'historique.

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

Configurez et compilez pour le processeur AArch64 du 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

Ces commandes ne modifient pas l'installation DX-RT du système. Pour la première vérification, utilisez directement les fichiers du répertoire de compilation :

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

État de DX-RT et du DX-M1 dans le terminal

Vérifier le service Runtime

Arrêtez tout service DX-RT incompatible avant de lancer celui du répertoire de compilation. La commande suivante s'arrête après 20 secondes et n'installe pas d'unité systemd :

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

Une initialisation réussie contient :

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

Ces messages indiquent que le Runtime a ouvert le pilote et initialisé le DX-M1.

Surveiller l'état du NPU

DX-RT v2.6.0 fournit un mode de surveillance dans dxrt-cli. Cette commande lit l'état chaque seconde et s'arrête après trois secondes :

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

Surveillance de l'état du NPU DX-M1

Le moniteur affiche la tension, la fréquence, la température et l'état DVFS des trois cœurs NPU.

Installer Model Zoo (facultatif)

Pour parcourir les modèles disponibles, installez le paquet Model Zoo et ses dépendances Python depuis le répertoire DX-All-Suite extrait :

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

Les modèles DXNN dépendent des versions de DX-COM et DX-RT utilisées pour les générer. Avant d'exécuter un modèle, consultez la page DEEPX Model Zoo pour vérifier la compatibilité du modèle, du Runtime et du firmware. Ce guide utilise DX-RT v2.6.0 avec le firmware v1.6.0.

Dépannage

  • lspci n'affiche pas 1ff4:0001 : éteignez la machine, réinstallez le module M.2 et vérifiez le logement PCIe et la configuration de la carte.
  • /dev/dxrt0 est absent : vérifiez que dx_dma_pcie est chargé et prend en charge le périphérique.
  • DX-RT 3.x échoue avec le firmware v1.6.0 : utilisez la version v2.6.0 vérifiée ou uniquement la procédure de migration DEEPX correspondant exactement à la révision du module.
  • dxtop signale un symbole absent ou un service incompatible : il appartient à une autre génération DX-RT. Utilisez dxrt-cli -m 1 de v2.6.0 ou installez un ensemble d'outils aux versions correspondantes.

Références