bamarni/pi64

Running darknet-nnpack more slowly than pi32?

503612068 opened this issue · 7 comments

I have updated pi3 from 32 to 64,and re-make darknet-nnpackhttps://github.com/digitalbrain79/darknet-nnpack.But the test result is more slowly (16s) than old pi 32(8s). In fact ,pi64 running more faster than pi32 with CPU test command.
Darknet-nnpack needed NNPACK=1,ARM_NEON=1 to accelerate. I think,is it pi64 haven't supported or optimized?
Anyone who knows the problem?

Anyone who knows the problem?

Under-voltage and you running frequency capped? Not already aware of Raspberry Pi problem number one? Shitty power circuitry?

If it's 8 vs. 16 seconds I would check whether you're running frequency capped at 600 MHz and ran with 1200 MHz before:

I have checked my power voltage,it's not under-voltage and I try to set frequency upto 1200MHz.It worked.But i found that my Raspberry Pi3 setup linux debian 32 no need to change frequency and worked fine. I still doubt pi64 isn't effect CPUs performance,yes?

@503612068 unfortunately you can't check for 'frequency capping' asking the kernel since /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq contains only fake values in situations where either frequency capping or throttling occurs. So you need to execute the following after you ran something heavy:

perl -e "printf \"%19b\n\", $(vcgencmd get_throttled | cut -f2 -d=)"

If this shows a 1 on the left you're affected. If this doesn't work simply try sysbench as shown in the first link above:

sudo apt install sysbench
sysbench --test=cpu --cpu-max-prime=10000 run --num-threads=4

6 seconds and you run under-volted, 3 seconds and at least the lightweight sysbench stuff is not able to trigger frequency capping.

I have checked my power voltage,it's not under-voltage

How? Measured at pins 4 and 6 of the GPIO header or somewhere else?

You can also run in another terminal the following in parallel to get an idea about the real clockspeeds of the ARM cores:

while true ; do
    vcgencmd measure_clock arm | awk -F"=" '{printf ("%0.0f\n",$2/1000000); }'
    sleep 1
done

3 seconds with command "sysbench --test=cpu --cpu-max-prime=10000 run --num-threads=4" in the pi64.

Well, the sysbench 'test' is the most unreliable one (since sysbench is such a light load). But I don't know whether vcgencmd is now available in pi64 or not. In case it is I strongly recommend as already suggested to try one of the two other methods outlined above. Either running your benchmark and then afterwards executing

perl -e "printf \"%19b\n\", $(vcgencmd get_throttled | cut -f2 -d=)"

Or the other method above.

BTW: Good news. With most recent kernel and 'firmware' Raspberry Pi problem N° 1 (under-voltage due to encouraging users to use crappy chargers and crappy 'power cables') has been somewhat addressed.

With latest kernel you can do an dmesg | grep -i voltage to get an idea whether you've been affected by under-voltage (and then frequency capping too I would assume).

raspberrypi/linux#2367