File size: 2,992 Bytes
477da44 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 |
rknn_matmul_api_demo is a example which performs matrix multiplication using the RKNPU matmul C API.
Usage:
1. static shape mode
```
Usage:
./rknn_matmul_api_demo <matmul_type> <M,K,N> <B_layout> <AC_layout> <loop_count> <core_mask> <print_result> <iommu_domain_id>
matmul_type = 1: RKNN_FLOAT16_MM_FLOAT16_TO_FLOAT32
matmul_type = 2: RKNN_INT8_MM_INT8_TO_INT32
matmul_type = 4: RKNN_FLOAT16_MM_FLOAT16_TO_FLOAT16
matmul_type = 7: RKNN_FLOAT16_MM_INT4_TO_FLOAT32
matmul_type = 10: RKNN_INT4_MM_INT4_TO_INT16
Example: A = [4,64], B = [64,32], int8 matmul test command as followed:
./rknn_matmul_api_demo 2 4,64,32
```
2. dynamic shape mode
```sh
./rknn_matmul_api_dynshape_demo <matmul_type> <M1K1N1#M2K2N2#...> <B_layout> <AC_layout> <loop_count> <core_mask>
M_shapes: M shape array, which separeted by ','
matmul_type = 1: RKNN_FLOAT16_MM_FLOAT16_TO_FLOAT32
matmul_type = 2: RKNN_INT8_MM_INT8_TO_INT32
matmul_type = 4: RKNN_FLOAT16_MM_FLOAT16_TO_FLOAT16
matmul_type = 7: RKNN_FLOAT16_MM_INT4_TO_FLOAT32
matmul_type = 10: RKNN_INT4_MM_INT4_TO_INT16
Example: A = [1,64]#[4,64]#[8,64], B = [64,32], int8 matmul test command as followed:
feature+const: ./rknn_matmul_api_dynshape_demo 2 1,64,32#4,64,32#8,64,32 1 1
two feature: ./rknn_matmul_api_dynshape_demo 2 1,64,32#4,64,32#8,64,32 2 1
```
# Aarch64 Linux Demo
## Build
First export `GCC_COMPILER`, for example `export GCC_COMPILER=~/opt/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu`, then execute:
```
./build-linux.sh -t <target> -a <arch> -b <build_type>]
# such as:
./build-linux.sh -t rk3588 -a aarch64 -b Release
```
## Install
Copy install/rknn_matmul_api_demo_Linux to the devices under /userdata/.
- If you use rockchip's evb board, you can use the following way:
Connect device and push the program to `/userdata`
```
adb push install/rknn_matmul_api_demo_Linux /userdata/
```
- If your board has sshd service, you can use scp or other methods to copy the program to the board.
## Run
```
adb shell
cd /userdata/rknn_matmul_api_demo_Linux/
```
```
export LD_LIBRARY_PATH=./lib
./rknn_matmul_api_demo 2 4 64 32
```
or
```sh
export LD_LIBRARY_PATH=./lib
./rknn_matmul_api_dynshape_demo 2 1,64,32#4,64,32#8,64,32 1 1
```
# Android Demo
## Build
First export `ANDROID_NDK_PATH`, for example `export ANDROID_NDK_PATH=~/opts/ndk/android-ndk-r18b`, then execute:
```sh
./build-android.sh -t <target> -a <arch> [-b <build_type>]
# sush as:
./build-android.sh -t rk3568 -a arm64-v8a -b Release
```
## Install
connect device and push build output into `/data`
```sh
adb push install/rknn_matmul_api_demo_Android /data/
```
## Run
```
adb shell
cd /data/rknn_matmul_api_demo_Android/
```
```sh
export LD_LIBRARY_PATH=./lib
./rknn_matmul_api_demo 2 4 64 32
```
or
```sh
export LD_LIBRARY_PATH=./lib
./rknn_matmul_api_dynshape_demo 2 1,64,32#4,64,32#8,64,32 1 1
```
|