xref: /OK3568_Linux_fs/external/rknpu2/examples/rknn_benchmark/README.md (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyunrknn_benchmark is used to test the performance of the rknn model. Please make sure that the cpu/ddr/npu has been clocked to the highest frequency before testing.
2*4882a593Smuzhiyun
3*4882a593SmuzhiyunUsage:
4*4882a593Smuzhiyun
5*4882a593Smuzhiyun./rknn_benchmark xxx.rknn [input_data]  [loop_count] [core_mask]
6*4882a593Smuzhiyun
7*4882a593Smuzhiyuncore_mask: 0: auto, 1: npu core1, 2: npu core2, 4:npu core3,
8*4882a593Smuzhiyun
9*4882a593Smuzhiyun​                     3: npu core1&2,
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun​                     7: npu core1&2&3
12*4882a593Smuzhiyun
13*4882a593SmuzhiyunOnly RK3588 support core mask.
14*4882a593Smuzhiyun
15*4882a593SmuzhiyunSuch as:
16*4882a593Smuzhiyun
17*4882a593Smuzhiyun```
18*4882a593Smuzhiyun./rknn_benchmark mobilenet_v1.rknn
19*4882a593Smuzhiyun./rknn_benchmark mobilenet_v1.rknn dog.jpg 10 3
20*4882a593Smuzhiyun./rknn_benchmark mobilenet_v1.rknn dog.npy 10 7
21*4882a593Smuzhiyun./rknn_benchmark xxx.rknn input1.npy#input2.npy
22*4882a593Smuzhiyun```
23*4882a593Smuzhiyun
24*4882a593Smuzhiyun
25*4882a593SmuzhiyunThe following <TARGET_PLATFORM> represents RK356X or RK3588
26*4882a593Smuzhiyun
27*4882a593Smuzhiyun# Aarch64 Linux Demo
28*4882a593Smuzhiyun## Build
29*4882a593Smuzhiyun
30*4882a593Smuzhiyunmodify `GCC_COMPILER` on `build-linux_<TARGET_PLATFORM>.sh` for target platform,
31*4882a593Smuzhiyun
32*4882a593Smuzhiyunthen execute
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun```
35*4882a593Smuzhiyun./build-linux_<TARGET_PLATFORM>.sh
36*4882a593Smuzhiyun```
37*4882a593Smuzhiyun
38*4882a593Smuzhiyun## Install
39*4882a593Smuzhiyun
40*4882a593SmuzhiyunCopy install/rknn_benchmark_Linux to the devices under /userdata/.
41*4882a593Smuzhiyun
42*4882a593Smuzhiyun- If you use rockchip's evb board, you can use the following way:
43*4882a593Smuzhiyun
44*4882a593SmuzhiyunConnect device and push the program and rknn model to `/userdata`
45*4882a593Smuzhiyun
46*4882a593Smuzhiyun```
47*4882a593Smuzhiyunadb push install/rknn_benchmark_Linux /userdata/
48*4882a593Smuzhiyun```
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun- If your board has sshd service, you can use scp or other methods to copy the program and rknn model to the board.
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun## Run
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun```
55*4882a593Smuzhiyunadb shell
56*4882a593Smuzhiyuncd /userdata/rknn_benchmark_Linux/
57*4882a593Smuzhiyun```
58*4882a593Smuzhiyun
59*4882a593Smuzhiyun```
60*4882a593Smuzhiyunexport LD_LIBRARY_PATH=./lib
61*4882a593Smuzhiyun./rknn_benchmark xxx.rknn
62*4882a593Smuzhiyun```
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun# Android Demo
65*4882a593Smuzhiyun## Build
66*4882a593Smuzhiyun
67*4882a593Smuzhiyunmodify `ANDROID_NDK_PATH` on `build-android_<TARGET_PLATFORM>.sh` for target platform, then execute
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun```
70*4882a593Smuzhiyun./build-android_<TARGET_PLATFORM>.sh
71*4882a593Smuzhiyun```
72*4882a593Smuzhiyun
73*4882a593Smuzhiyun## Install
74*4882a593Smuzhiyun
75*4882a593Smuzhiyunconnect device and push build output into `/data`
76*4882a593Smuzhiyun
77*4882a593Smuzhiyun```
78*4882a593Smuzhiyunadb push install/rknn_benchmark_Android /data/
79*4882a593Smuzhiyun```
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun## Run
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun```
84*4882a593Smuzhiyunadb shell
85*4882a593Smuzhiyuncd /data/rknn_benchmark_Android/
86*4882a593Smuzhiyun```
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun```
89*4882a593Smuzhiyunexport LD_LIBRARY_PATH=./lib
90*4882a593Smuzhiyun./rknn_benchmark xxx.rknn
91*4882a593Smuzhiyun```
92