AI-performance / embedded-ai.bench

benchmark for embededded-ai deep learning inference engines, such as NCNN / TNN / MNN / TensorFlow Lite etc.
https://www.ai-performance.com
Other
202 stars 29 forks source link

[BUG] 低端机某些CPU无cpuinfo_max_freq,报错/sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_max_freq: No such file or directory #1

Closed ysh329 closed 4 years ago

ysh329 commented 4 years ago

机型

报错如下

CMD> adb -s 6447bc22 shell cat /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_max_freq Traceback (most recent call last): File "./benchmark.py", line 401, in main() File "./benchmark.py", line 387, in main device_dict = prepare_devices(config_dict) File "./benchmark.py", line 148, in prepare_devices device_dict[device_serial_num]['cpu_max_freqs'] = get_cpu_max_freqs(device_serial_num) File "./benchmark.py", line 39, in get_cpu_max_freqs cpu_max_freqs_ghz = map(lambda freq: float(freq) / 1e6, cpu_max_freqs) File "./benchmark.py", line 39, in cpu_max_freqs_ghz = map(lambda freq: float(freq) / 1e6, cpu_max_freqs) ValueError: could not convert string to float: /system/bin/sh: cat: /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_max_freq: No such file or directory

ysh329 commented 4 years ago

Debug模式打印

发现adb shell执行结果依次为:

['1401600', '1401600', '1401600', '1401600', '1804800', '1804800', '/system/bin/sh: cat: /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_max_freq: No such file or directory', '/system/bin/sh: cat: /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_max_freq: No such file or directory'] Traceback (most recent call last): File "./benchmark.py", line 403, in main() File "./benchmark.py", line 389, in main device_dict = prepare_devices(config_dict) File "./benchmark.py", line 150, in prepare_devices device_dict[device_serial_num]['cpu_max_freqs'] = get_cpu_max_freqs(device_serial_num) File "./benchmark.py", line 41, in get_cpu_max_freqs cpu_max_freqs_ghz = map(lambda freq: float(freq) / 1e6, cpu_max_freqs) File "./benchmark.py", line 41, in cpu_max_freqs_ghz = map(lambda freq: float(freq) / 1e6, cpu_max_freqs) ValueError: could not convert string to float: /system/bin/sh: cat: /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_max_freq: No such file or directory

ysh329 commented 4 years ago

原因

cpu6没有cpuinfo_max_freq

shell@PD1522A:/sys/devices/system/cpu/cpu6 $ ls cpuidle online power sched_mostly_idle_freq sched_mostly_idle_load sched_mostly_idle_nr_run sched_prefer_idle subsystem uevent

ysh329 commented 4 years ago

['1401600', '1401600', '1401600', '1401600', '1804800', '1804800', '/system/bin/sh: cat: /sys/devices/system/cpu/cpu6/cpufreq/cpuinfo_max_freq: No such file or directory', '/system/bin/sh: cat: /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_max_freq: No such file or directory']

ysh329 commented 4 years ago

除上面这个机型,另一个机型也有该问题:

Wed Jun 17 16:18:38 2020 CMD> adb -s 5380268d shell cat /sys/devices/system/cpu/cpu7/cpufreq/cpuinfo_max_freq ['1401600', '1401600', '1401600', '1401600', '/system/bin/sh: cat: /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_max_freq: No such file or directory', '/system/bin/sh: cat: /sys/devices/system/cpu/cpu5/cpufreq/cpuinfo_max_freq: No such file or directory', '1804800', '1804800'] Traceback (most recent call last): File "./benchmark.py", line 403, in main() File "./benchmark.py", line 389, in main device_dict = prepare_devices(config_dict) File "./benchmark.py", line 150, in prepare_devices device_dict[device_serial_num]['cpu_max_freqs'] = get_cpu_max_freqs(device_serial_num) File "./benchmark.py", line 41, in get_cpu_max_freqs cpu_max_freqs_ghz = map(lambda freq: float(freq) / 1e6, cpu_max_freqs) File "./benchmark.py", line 41, in cpu_max_freqs_ghz = map(lambda freq: float(freq) / 1e6, cpu_max_freqs) ValueError: could not convert string to float: /system/bin/sh: cat: /sys/devices/system/cpu/cpu4/cpufreq/cpuinfo_max_freq: No such file or directory

ysh329 commented 4 years ago

将找不到频率的设置为None

little_core 绑定到None上

bench_case_idx(from 1):1 CMD> adb -s 5380268d shell "export LD_LIBRARY_PATH=/data/local/tmp/ai-performance/tnn/android-armv7; /data/local/tmp/ai-performance/tnn/android-armv7/TNNTest -mt TNN -mp /data/local/tmp/ai-performance/tnn/caffe_mobilenetv1.opt.tnnproto -dt ARM -ic 100 -wc 20 -th 1 -dl 4,5" ['WARNING: linker: /data/local/tmp/ai-performance/tnn/android-armv7/TNNTest: unused DT entry: type 0x1d arg 0x1cec\r\n', 'WARNING: linker: /data/local/tmp/ai-performance/tnn/android-armv7/libTNN.so: unused DT entry: type 0x1d arg 0x53ec4\r\n', 'syscall error -1\r\n', 'caffe_mobilenetv1.opt.tnnproto time cost: min = 128.708 ms | max = 142.250 ms | avg = 131.068 ms \r\n'] ['caffe_mobilenetv1.opt.tnnproto', 'time', 'cost:', 'min', '=', '128.708', 'ms', '|', 'max', '=', '142.250', 'ms', '|', 'avg', '=', '131.068', 'ms'] caffe_mobilenetv1.opt.tnnprototimecost:min=128.708ms|max=142.250ms|avg=131.068ms {'soc': 'msm8952', 'avg': '131.068', 'warmup': 20, 'min': '128.708', 'max': '142.250', 'cmd': 'adb -s 5380268d shell "export LD_LIBRARY_PATH=/data/local/tmp/ai-performance/tnn/android-armv7; /data/local/tmp/ai-performance/tnn/android-armv7/TNNTest -mt TNN -mp /data/local/tmp/ai-performance/tnn/caffe_mobilenetv1.opt.tnnproto -dt ARM -ic 100 -wc 20 -th 1 -dl 4,5"', 'product': '1605-A01', 'cpu_thread_num': 1, 'serial_num': '5380268d', 'platform': 'android-armv7', 'power_mode': 'little_cores', 'repeats': 100, 'cpu_max_freqs': [1.4016, 1.4016, 1.4016, 1.4016, None, None, 1.8048, 1.8048], 'model_name': 'caffe_mobilenetv1.opt', 'bind_cpu_idx': '4,5', 'backend': 'ARM'}

little_core 绑定到常规小核上

bench_case_idx(from 1):1 CMD> adb -s 5380268d shell "export LD_LIBRARY_PATH=/data/local/tmp/ai-performance/tnn/android-armv7; /data/local/tmp/ai-performance/tnn/android-armv7/TNNTest -mt TNN -mp /data/local/tmp/ai-performance/tnn/caffe_mobilenetv1.opt.tnnproto -dt ARM -ic 100 -wc 20 -th 1 -dl 0,1,2,3" ['WARNING: linker: /data/local/tmp/ai-performance/tnn/android-armv7/TNNTest: unused DT entry: type 0x1d arg 0x1cec\r\n', 'WARNING: linker: /data/local/tmp/ai-performance/tnn/android-armv7/libTNN.so: unused DT entry: type 0x1d arg 0x53ec4\r\n', 'caffe_mobilenetv1.opt.tnnproto time cost: min = 347.416 ms | max = 389.100 ms | avg = 354.474 ms \r\n'] ['caffe_mobilenetv1.opt.tnnproto', 'time', 'cost:', 'min', '=', '347.416', 'ms', '|', 'max', '=', '389.100', 'ms', '|', 'avg', '=', '354.474', 'ms'] caffe_mobilenetv1.opt.tnnprototimecost:min=347.416ms|max=389.100ms|avg=354.474ms {'soc': 'msm8952', 'avg': '354.474', 'warmup': 20, 'min': '347.416', 'max': '389.100', 'cmd': 'adb -s 5380268d shell "export LD_LIBRARY_PATH=/data/local/tmp/ai-performance/tnn/android-armv7; /data/local/tmp/ai-performance/tnn/android-armv7/TNNTest -mt TNN -mp /data/local/tmp/ai-performance/tnn/caffe_mobilenetv1.opt.tnnproto -dt ARM -ic 100 -wc 20 -th 1 -dl 0,1,2,3"', 'product': '1605-A01', 'cpu_thread_num': 1, 'serial_num': '5380268d', 'platform': 'android-armv7', 'power_mode': 'little_cores', 'repeats': 100, 'cpu_max_freqs': [1.4016, 1.4016, 1.4016, 1.4016, None, 1.8048, None, 1.8048], 'model_name': 'caffe_mobilenetv1.opt', 'bind_cpu_idx': '0,1,2,3', 'backend': 'ARM'}

ysh329 commented 4 years ago

我试了,后两个找不到cpu频率文件的,都是大核; 这8核的最大频率依次是:[1.4016, 1.4016, 1.4016, 1.4016, None, 1.8048, None, 1.8048]

ysh329 commented 4 years ago

已修复,找不到则频率设置为None,找大小核的索引时候跳过为None的