Hello everyone,
I am working on using the NPU delegate on my IMX8MP by following the official instructions here:
When I run the classification example on CPU, it works fine:
TEFLON_DEBUG=verbose ETNA_MESA_DEBUG=ml_dbgs python3 classification.py -i grace_hopper.bmp -m mobilenet_v1_1_224_quant.tflite -l labels_mobilenet_quant_v1_224.txt
INFO: Created TensorFlow Lite XNNPACK delegate for CPU.
0.878431: military uniform
0.027451: Windsor tie
...
time: 166.804ms
However, when I try to run it using the NPU delegate, it fails with the message:
We need at least 1 NN core to do anything useful. and aborts with a core dump.
The logs show the error originates here in the code when checking NN core count:
if (nn_core_count < 1) {
fprintf(stderr, "We need at least 1 NN core to do anything useful.\n");
abort();
}
23 DWCONV 19 21 w: 23 b: 22 stride: 2 pad: SAME
24 CONV 21 25 w: 26 b: 24 stride: 1 pad: SAME
25 DWCONV 25 27 w: 29 b: 28 stride: 1 pad: SAME
26 CONV 27 31 w: 32 b: 30 stride: 1 pad: SAME
We need at least 1 NN core to do anything useful.
Aborted (core dumped)
Yet, my board does run etnaviv kernel driver and reports the NPU with this dmesg output:
[ 2.506788] etnaviv-gpu 38500000.npu: model: GC8000, revision: 8002
[ 2.513079] etnaviv-gpu 38500000.npu: etnaviv has been instantiated on a NPU, for which the UAPI is still experimental
[ 2.524358] [drm] Initialized etnaviv 1.4.0 for etnaviv on minor 0
So, the GPU and NPU drivers appear loaded properly, and the hardware is detected at boot, but the NPU delegate cannot find any usable NN core.
Has anyone encountered this “No NPU found” issue when using the npu_delegate?
Could it be related to software configuration, kernel module support, firmware, or the Teflon/Mesa driver versions?
Any pointers on how to resolve this would be appreciated.
Thank you!