De DEEPX DX-M1 M.2 gebruiken met de reComputer RK3576

De DEEPX DX-M1 is een M.2 PCIe-AI-accelerator met drie NPU-kernen en ingebouwd LPDDR5-geheugen. Deze tutorial laat zien hoe je de kaart op een reComputer RK3576 detecteert, een Runtime bouwt die bij de firmware past, de initialisatie controleert en de NPU-status bewaakt.

De kaart in deze handleiding gebruikt firmware v1.6.0 in combinatie met DX-RT v2.6.0.

Systeemconfiguratie

OnderdeelConfiguratie
HostreComputer RK3576 Dev Kit
BesturingssysteemArmbian unofficial 26.05.0-trunk, Debian 12 (bookworm)
Kernel6.1.115-vendor-seeed-rk3576
AcceleratorDEEPX DX-M1A M.2, LPDDR5 van de 4-GB-klasse
PCIe-apparaat1ff4:0001
Onderhandelde linkPCIe Gen2 x1
NPU-driverdxrt-driver-dkms 2.4.1-2
Kaartfirmwarev1.6.0
RuntimeDX-RT v2.6.0, gebouwd vanaf de DEEPX-brontag

De PCIe-driver installeren

Download DX-All-Suite v2.4.2 voor AArch64 Linux via de DEEPX-softwarepagina en kopieer het archief naar de RK3576. Pak het uit en open de map dx-runtime:

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

Selecteer en installeer de driverversie die bij de bovenstaande configuratie past. Alleen de PCIe-driver wordt geïnstalleerd; de kaartfirmware verandert niet.

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

Ga na de herstart verder met de hardwarecontrole. De compatibele DX-RT-gebruikersbibliotheek wordt afzonderlijk gebouwd in plaats van de Runtime uit de huidige suite te installeren.

Hardware en driver controleren

Plaats de DX-M1 in de M.2 PCIe-sleuf, start de RK3576 en controleer de PCIe-functie:

bash
lspci -nnk -s 01:00.0

DX-M1 PCIe-apparaat en driver in de terminal

Controleer het apparaatknooppunt dat door de driver is gemaakt:

bash
ls -l /dev/dxrt0

DX-M1-apparaatknooppunt in de terminal

/dev/dxrt0 bevestigt dat de PCIe-driver de accelerator heeft geïnitialiseerd. Los een ontbrekend apparaatknooppunt op voordat je DX-RT bouwt of uitvoert.

De compatibele DX-RT-versie bouwen

DX-RT v3.3.0 vereist firmware v2.5.2 of nieuwer en kan een kaart met firmware v1.6.0 niet initialiseren. DX-RT v2.6.0 noemt v1.5.9 als minimale firmware en is compatibel met deze kaart.

Installeer de bouwgereedschappen:

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

Kloon de exacte DX-RT-tag. De CMake-configuratie vereist pybind11 v2.12; een oppervlakkige kloon voorkomt dat de volledige geschiedenis wordt opgehaald.

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

Configureer en bouw voor de AArch64-CPU van de 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

Deze opdrachten veranderen de DX-RT-installatie van het systeem niet. Gebruik voor de eerste controle de binaire bestanden en bibliotheek rechtstreeks uit de buildmap:

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

DX-RT- en DX-M1-status in de terminal

De Runtime-service controleren

Stop een incompatibele DX-RT-service voordat je de service uit de buildmap start. De volgende opdracht stopt na 20 seconden en installeert geen systemd-unit:

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

Een geslaagde initialisatie bevat:

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

Deze meldingen geven aan dat de Runtime de driver heeft geopend en de DX-M1 heeft geïnitialiseerd.

De NPU-status bewaken

DX-RT v2.6.0 heeft een bewakingsmodus in dxrt-cli. Deze opdracht leest de status elke seconde en stopt na drie seconden:

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

Bewaking van de DX-M1 NPU-status

De monitor toont de spanning, kloksnelheid, temperatuur en DVFS-status van alle drie de NPU-kernen.

Model Zoo installeren (optioneel)

Installeer het Model Zoo-pakket en de Python-afhankelijkheden vanuit de uitgepakte DX-All-Suite-map om de beschikbare modellen te bekijken:

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

DXNN-modellen zijn afhankelijk van de DX-COM- en DX-RT-versies waarmee ze zijn gemaakt. Controleer vóór het uitvoeren van een model op de DEEPX Model Zoo-pagina of het model, de Runtime en de firmware compatibel zijn. Deze handleiding gebruikt DX-RT v2.6.0 met firmware v1.6.0.

Problemen oplossen

  • lspci toont 1ff4:0001 niet: schakel het systeem uit, plaats de M.2-module opnieuw en controleer de PCIe-sleuf en bordconfiguratie.
  • /dev/dxrt0 ontbreekt: controleer of dx_dma_pcie is geladen en dit apparaat ondersteunt.
  • DX-RT 3.x initialiseert niet met firmware v1.6.0: gebruik de v2.6.0-route hierboven of uitsluitend de DEEPX-migratieprocedure voor de exacte modulerevisie.
  • dxtop meldt een ongedefinieerd symbool of incompatibele service: het hoort bij een andere DX-RT-generatie. Gebruik dxrt-cli -m 1 van v2.6.0 of installeer een volledig versie-gelijk gereedschapspakket.

Referenties