commit 4897d8e568606a6732668d7e571cea4bd6e39505 Author: Han Gao Date: Fri May 10 17:19:50 2024 +0800 init th1520-npu Signed-off-by: Han Gao diff --git a/addons/usr/lib/riscv64-linux-gnu/libPVRScopeServicesNNA.so b/addons/usr/lib/riscv64-linux-gnu/libPVRScopeServicesNNA.so new file mode 100644 index 0000000..f826954 Binary files /dev/null and b/addons/usr/lib/riscv64-linux-gnu/libPVRScopeServicesNNA.so differ diff --git a/addons/usr/lib/riscv64-linux-gnu/libimgcustom.so b/addons/usr/lib/riscv64-linux-gnu/libimgcustom.so new file mode 100644 index 0000000..f8a90f8 Binary files /dev/null and b/addons/usr/lib/riscv64-linux-gnu/libimgcustom.so differ diff --git a/addons/usr/lib/riscv64-linux-gnu/libimgdnn.so b/addons/usr/lib/riscv64-linux-gnu/libimgdnn.so new file mode 100644 index 0000000..7f3e05f Binary files /dev/null and b/addons/usr/lib/riscv64-linux-gnu/libimgdnn.so differ diff --git a/addons/usr/lib/riscv64-linux-gnu/libimgdnn_execute.so b/addons/usr/lib/riscv64-linux-gnu/libimgdnn_execute.so new file mode 100644 index 0000000..f629590 Binary files /dev/null and b/addons/usr/lib/riscv64-linux-gnu/libimgdnn_execute.so differ diff --git a/addons/usr/lib/riscv64-linux-gnu/libnnahelper.so b/addons/usr/lib/riscv64-linux-gnu/libnnahelper.so new file mode 100644 index 0000000..262702f Binary files /dev/null and b/addons/usr/lib/riscv64-linux-gnu/libnnahelper.so differ diff --git a/addons/usr/lib/riscv64-linux-gnu/libnnasession.so b/addons/usr/lib/riscv64-linux-gnu/libnnasession.so new file mode 100644 index 0000000..6362695 Binary files /dev/null and b/addons/usr/lib/riscv64-linux-gnu/libnnasession.so differ diff --git a/addons/usr/share/npu/insmod.sh b/addons/usr/share/npu/insmod.sh new file mode 100755 index 0000000..5f5f6c6 --- /dev/null +++ b/addons/usr/share/npu/insmod.sh @@ -0,0 +1,14 @@ +#!/bin/sh +KERNEL_VER=$(uname -r) +BASE_PATH=/lib/modules/${KERNEL_VER}/extra + +insmod $BASE_PATH/img_mem.ko +insmod $BASE_PATH/vha.ko onchipmem_phys_start=0xffe0001000 onchipmem_size=0x100000 freq_khz=792000 +insmod $BASE_PATH/vha_info.ko + +#if [ -f /sys/kernel/debug/dynamic_debug/control ]; then +# echo -n 'module vha +p' > /sys/kernel/debug/dynamic_debug/control; +# echo -n 'module img_mem +p' > /sys/kernel/debug/dynamic_debug/control; +#fi + +chmod a+rw /dev/vha0 diff --git a/addons/usr/share/npu/rmmod.sh b/addons/usr/share/npu/rmmod.sh new file mode 100755 index 0000000..a134fb5 --- /dev/null +++ b/addons/usr/share/npu/rmmod.sh @@ -0,0 +1,10 @@ +#!/bin/sh + +#if [ -f /sys/kernel/debug/dynamic_debug/control ]; then +# echo -n 'module vha -p' > /sys/kernel/debug/dynamic_debug/control; +# echo -n 'module img_mem -p' > /sys/kernel/debug/dynamic_debug/control; +#fi + +rmmod vha_info +rmmod vha +rmmod img_mem diff --git a/addons/usr/share/npu/test/bin/print_top_label.sh b/addons/usr/share/npu/test/bin/print_top_label.sh new file mode 100755 index 0000000..aac802c --- /dev/null +++ b/addons/usr/share/npu/test/bin/print_top_label.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +top_label(){ + python3 ./bin/print_top_labels.py --n-top=$3 --labels $2 --net-out $1 +} + +read_dir(){ + for file in `ls -a $1` + do + if [ -d $1"/"$file ] + then + if [[ $file != '.' && $file != '..' ]] + then + read_dir $1"/"$file + fi + else + if [[ "${file##*.}" = 'out' ]] + then + echo $1"/"$file + top_label $1"/"$file $2 $3 + fi + fi + done +} + +read_dir $1 $2 $3 diff --git a/addons/usr/share/npu/test/bin/print_top_labels.py b/addons/usr/share/npu/test/bin/print_top_labels.py new file mode 100755 index 0000000..c0b9dc6 --- /dev/null +++ b/addons/usr/share/npu/test/bin/print_top_labels.py @@ -0,0 +1,52 @@ +#!/usr/bin/python3.7 +"""Prints the top N labels given a label file and network output (float32 array) +""" + +import argparse +import os +import sys +import numpy as np + +def parse_args(): + """Parse input arguments.""" + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument('-l', '--labels', dest='labels_path', required=True, + help='Path to the labels file') + parser.add_argument('-n', '--net-out', dest='net_out', required=True, + help='Path to the network output file (raw float32 array)') + parser.add_argument('-N', '--n-top', dest='n_top', type=int, default=5, + help='N top labels to be printed. Defaults to 5') + parser.add_argument('-d', '--delimiter', default='\t', + help='The delimiter for the labels columns. Defaults to "\\t"') + args = parser.parse_args() + if (not os.path.exists(args.labels_path) or not os.path.isfile(args.labels_path)): + print("Invalid labels file: {}".format(args.labels_path)) + sys.exit(1) + if (not os.path.exists(args.net_out) or not os.path.isfile(args.net_out)): + print("Invalid network output file: {}".format(args.net_out)) + sys.exit(1) + + return args + + +if __name__ == '__main__': + + args = parse_args() + + labels = np.loadtxt(args.labels_path, str, delimiter=args.delimiter) + name,ext = os.path.splitext(args.net_out) + if (ext == '.out'): + net_out = np.fromfile(args.net_out, dtype='float32') + elif (ext == '.txt'): + net_out = np.loadtxt(args.net_out, dtype='float32') + net_out = np.insert(net_out, 0, 0.0) # // insert backgroup as the first item in labels + else: + print("unsupport file format of net_out") + sys.exit(0) + top_inds = net_out.argsort()[::-1][:args.n_top] + print("Top {} class(es):".format(len(top_inds))) + for each in zip(top_inds, net_out[top_inds], labels[top_inds]): + print("{}".format(str(each)), end='') + + print("", end='\n') + diff --git a/addons/usr/share/npu/test/cnn_testbench b/addons/usr/share/npu/test/cnn_testbench new file mode 100755 index 0000000..a570a78 Binary files /dev/null and b/addons/usr/share/npu/test/cnn_testbench differ diff --git a/addons/usr/share/npu/test/lstm_testbench b/addons/usr/share/npu/test/lstm_testbench new file mode 100755 index 0000000..3032478 Binary files /dev/null and b/addons/usr/share/npu/test/lstm_testbench differ diff --git a/addons/usr/share/npu/test/nnvm_testbench b/addons/usr/share/npu/test/nnvm_testbench new file mode 100755 index 0000000..af8b889 Binary files /dev/null and b/addons/usr/share/npu/test/nnvm_testbench differ diff --git a/addons/usr/share/npu/test/resource/cnn_testbench/lenet/OCM_1M5/model.mbs.bin b/addons/usr/share/npu/test/resource/cnn_testbench/lenet/OCM_1M5/model.mbs.bin new file mode 100755 index 0000000..4ddc37d Binary files /dev/null and b/addons/usr/share/npu/test/resource/cnn_testbench/lenet/OCM_1M5/model.mbs.bin differ diff --git a/addons/usr/share/npu/test/resource/cnn_testbench/lenet/label.txt b/addons/usr/share/npu/test/resource/cnn_testbench/lenet/label.txt new file mode 100755 index 0000000..8b1acc1 --- /dev/null +++ b/addons/usr/share/npu/test/resource/cnn_testbench/lenet/label.txt @@ -0,0 +1,10 @@ +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 diff --git a/addons/usr/share/npu/test/resource/cnn_testbench/lenet/m1.tensor.bin b/addons/usr/share/npu/test/resource/cnn_testbench/lenet/m1.tensor.bin new file mode 100755 index 0000000..0c183ca --- /dev/null +++ b/addons/usr/share/npu/test/resource/cnn_testbench/lenet/m1.tensor.bin @@ -0,0 +1,2 @@ +оџПоџПоџПоџПоџПоџПоџПоџПЯї{ПaП_ПоџПоџПЯgП пoПоџППяwПоџПоџПЏчsП3ЇSППяwПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџП пoПоџПоџПоџП пoПоџПоџПRЗ[ПЯgПоџПоџПоџПзkПзkПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПЏчsПЯgПоџПBЏWПоџПЯgПоџПоџПоџПЯї{ПоџПоџПЯї{ПоџПоџПЏчsПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџП пoПоџПоџПоџПоџПоџПоџПBЏWПоџПоџПоџПЏчsП3ЇSПоџПоџПqЧcПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПqЧcПGППяwП пoП пoПЯї{ПоџП—KПЯї{ПоџПоџПзkПЏчsПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџП3ЇSПоџПоџП—KПгљќ?гѕ:@йxМ?Яї{ПоџПоџПЯgППяwПоџПоџПqЧcПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПaП_ПGП?Љ@ыA@Ќхђ?"ОЖf3ПоџПзkПє†CПоџПоџПaП_ПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПЯgПоџПоџПоџП$› @пћ=@лљ<@к§ў?=(”?х~?ПоџПqЧcППяwПоџПqЧcПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџППяwПоџП(@гѕ:@зї;@зї;@Яѓ9@ПяwП пoПзkПRЗ[ПоџПqЧcПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџППяwПоџП(@гѕ:@зї;@зї;@чџ?@оџПоџПоџПоџПоџПGПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџППяwПоџП(@гѕ:@зї;@зї;@ыA@ПяwПGПЏчsПоџПоџПЏчsПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџППяwПоџП(@гѕ:@зї;@зї;@Дх2@оџПRЗ[П пoПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџППяwПоџП(@гѕ:@зї;@зї;@ыA@зkПоџПоџПоџПЯgПоџПЯї{ПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџППяwПоџП(@гѕ:@зї;@зї;@‹@BЏWПоџПЏчsПЏчsПЯї{ПоџПЯї{ПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџППяwПоџП(@гѕ:@зї;@зї;@ь‚СМоџПоџПЯї{ПоџПоџПЯї{ПqЧcПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџППяwПоџП(@гѕ:@зї;@зї;@ +…ОзkПзkПоџППяwП пoПqЧcПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПзkПоџПоџП‘@ыA@Фэ6@ыA@ “IОоџПоџПaП_ПоџПоџПЯї{ПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПЯї{ПоџПaП_П— @пћ=@Ау1@пћ=@ЈуёНоџПоџП пoПоџПЏчsППяwПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџП пoПоџПоџПЏчsП@гѕ:@ыA@ыA@Q2ОПяwПоџПоџПоџПзkПЯї{ПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПqЧcПоџПоџПоџП‹@чџ?@ыA@б(@›ЭОЯї{ПоџПоџПоџП пoПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџП пoППяwП(@ыA@Дх2@T4š?є†CПоџПЏчsПоџПоџППяwПоџППяwПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџП пoПоџП(@ыA@Ич3@ ?оџПоџПзkПоџПоџПЯї{ПоџПЏчsПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПЯgПоџПЯї{ПоџП“ @ыA@ыA@—V+?оџПоџПзkПоџПоџП пoПоџПЏчsПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПЏчsПоџПЯgПqЧcП ™ @Чя7@Чя7@ ?ПяwППяwПЏчsПоџПоџПqЧcПоџППяwПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџП#ŸOПоџПaП_П:ЋеО‡N'?ВdВ?X6ПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџП3ЇSПоџП3ЇSПоџПоџП*ПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПЯї{ПоџПоџП—KПоџПоџПЏчsПЏчsПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПзkПоџПоџПоџПaП_П—KПЏчsППяwПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџПоџП \ No newline at end of file diff --git a/addons/usr/share/npu/test/resource/nnvm_testbench/light_hw_config.json b/addons/usr/share/npu/test/resource/nnvm_testbench/light_hw_config.json new file mode 100755 index 0000000..8d516c2 --- /dev/null +++ b/addons/usr/share/npu/test/resource/nnvm_testbench/light_hw_config.json @@ -0,0 +1,10 @@ +{ + "bvnc" : [ 28, 4, 6400, 1502 ], + "clock_frequency" : 1000000000, + "conv_data_unsign" : 1, + "hw_params" : "ed9ba9beb3b4fabdfaf6c9fde4f9ec93c9e2e8e8f6c9e8abe0e2f3b3aba0adcfba9ba9beb3b4fab1ebe2f9f8efc5ef96e2cee8fdf0e3e9befbf5b4b1b1babcd39cb1a9beb1f4e9b1fcb2b6ababc1adc9afa8b0afbfb6acefbfa2a0bdabadbdcfa4a1a5bea4a6aaefbab0cbbd81baaddfb4f3f0eaf6e5c4afeae2c9f2f2f9e19ab4b1b3bea0a4b7d5afb0b6b3e8f5e899f0ceebebf5f0feadd0f2f7ffe0e9afdfacb1b8a8bf9cbbffafb2f5feeefceba0f4e4eff8f6e4c4bdf6e4f3e2a9bab7dfa7a2b8aea4a4b7d5afb0b6b3e8f5e899f0ceeff1e1fbfaabadb0acb1b9b687dfb6b1abfdfcf8ed80edfcf9f2e0e9afdfacb1b1b299b6bbffadf3f9fffdc5fcc7f7cef9fbe1c9f8b7eefef8f4e7b8adc5b6a0a594b3b6bbfdecfff8e7d4ede49be2f9abbea9b6aaedb7bc9cb1abbaaf9ae1fed6fce1f9fabbecf1e5e5e2f4eaddb6aba9afbf9cbbffafb2f3e9ffc5e09afbceebebe0c9ecb6ebe4feb3aba0adcda3a7a594b3b6bbfde6fee6e4ffc5ef8af0f7ececccf4fab1e4cff7f5efe8e88ce5f4fabcb3acbbeabea2ba9babbaadddfffff9ebe7c9f9aae9f6f3e3d4f8ec91fde2abbea9b6aae9a39ab6b1abb8e491e6e4fdc1f1e3fdb9eae2c9e6e2fef997b4b1b3bea5a2b7d5afb0b6b3e2f4f9a0fbf4e4c1f1e3e880f8f9f2e5e3b8adc5b6a3bca8bf9cbbffafb2fbf0f3c5ee90f8e7d6f1e6e2c4b1fafdc9e1e7fbe39ae5b3a9a4b3a2abe6b9bc9cb1abbaaf92f7e9d6fdfcf8ed80f8f9f8f5e4edd297f3f8eef6e7b4bbe5afa2a3a7a790addfb6b3e4ffebc9f8b0e1e6c9e6e2f4e990e1cefef7f7e2f3fdafaab6a3beaca1f5b6b1a9bcfef7e380e9f9fae5eee8d28cf3e5abbea9b6aaedb7bc9cb1abbaaf92f7e9d6f8fafaefbafde3c9e6e2eee5a0f4f8e8edb1b6a1ffbaa1a4bd81baaddfb4fcecf3ccf4eeadfce4c9f3f2eee88cb4b1b3bea2a4a3f385b0b6b1a9f7e892f9e3f0c1fef7f5b6ffe5faf0fff3e291b4b1b3bea2ba91ffafb0b4fceef7e28defcee4fffdffebaae3f1e2f8e4f4d29de3f7effbe1c9f9bee1fbe5b3aba0adcca4bd83beb3b6b9b2eafdf9e3f2c5e09ef8f8f9ebfff7efb6e0fec9f3fefceb9ae4cefaf7e9f3b9ffb5b0a5a3a790addfb6b3e4fbfef9e9a6d0fdf7ffe2eaf893f7e5e0f1fdc9ebbefdf1fafdeef6e48cfbcee5aeb1b6a1ffbea6ba9babbaadddfbf4e4f1e1efc4b2eefeffe1fef6ec8bfffee7c1e3f7e9bee3fcf3fde2e9e0a0faa0abbea9b6aff385b0b6b1a9f7e491c9e1e6f1ffb4bbe5afa1ba9babbaadddfbf8fbecfce4c4afeef4f2f8e5fdafdfacb1b8b299b6bbffadfdfbe4d4ece88db4b1b3bea0ba91ffafb0b4ffe4e8e0a0e3ffe0eae0b4bbe5afa1ba9babbaadddf8e4e4c1e1f3fabbd0f9f2b3aba0adc9a2bd83beb3b6b9b1fafdc9e6f9f3f99ac9f8edbcb3acbbe9bbbc9cb1abbaaf90ffffd6edfaf8fcb3eacfe6fdeaf4e8a0f1e3e8f0e6fafaade6e4efb3aba0adcbba9ba9beb3b4ebb0e0fcc9e4e5f3f98cb4b1b3bea2a0b7d5afb0b6b3f8f2ec8df3f5d6fce6f0fdbafdcff4f0e5f1d29ef2f5fbfbe0e5feacadb0acb1baa8b5d39cb1a9beb1e5f3befdf5f2cee9efeb99f3e3d6fcf2f8f0acadb0acb1b3b687dfb6b1abedfbf7e9baebcff4e4edfce88dc9e6e0fae7feb9ffb5b0a4a4bd90f0f5", + "mem_efficiency" : 0.40000000000000002, + "onchip_mem_page_size" : 4096, + "onchip_mem_size" : 1572864, + "sbuf_data_unsign" : 1 +} diff --git a/addons/usr/share/npu/test/resource/nnvm_testbench/light_mapconfig.json b/addons/usr/share/npu/test/resource/nnvm_testbench/light_mapconfig.json new file mode 100755 index 0000000..0e93398 --- /dev/null +++ b/addons/usr/share/npu/test/resource/nnvm_testbench/light_mapconfig.json @@ -0,0 +1,39 @@ +{ + "backend_bitdepth": 8, + "output": { + "bits": 32, + "float": true + }, + "callback": { + "bits": 32, + "float": true + }, + "memory": { + "bits": 8 + }, + "input": { + "bits": 32, + "float": true + }, + "intern_bitdepth": 8, + "layer_types": [ + { + "type":"CONV", + "weights": { + "bits":8 + }, + "bias": { + "bits":8 + } + }, + { + "type":"INNERPRODUCT", + "weights": { + "bits":8 + }, + "bias": { + "bits":8 + } + } + ] +} diff --git a/addons/usr/share/npu/test/resource/nnvm_testbench/m1.tensor.bin b/addons/usr/share/npu/test/resource/nnvm_testbench/m1.tensor.bin new file mode 100755 index 0000000..f49c366 Binary files /dev/null and b/addons/usr/share/npu/test/resource/nnvm_testbench/m1.tensor.bin differ diff --git a/addons/usr/share/npu/test/resource/nnvm_testbench/m1_hist.imgir b/addons/usr/share/npu/test/resource/nnvm_testbench/m1_hist.imgir new file mode 100755 index 0000000..5527bad --- /dev/null +++ b/addons/usr/share/npu/test/resource/nnvm_testbench/m1_hist.imgir @@ -0,0 +1,74 @@ +IMGDNN001007 +{ + "nodes": [ + { + "op": "null", + "name": "data", + "attrs": { + "dtype": "0", + "shape": "(1, 3, 224, 224)" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv1/weights", + "attrs": { + "dtype": "0", + "shape": "(32, 3, 3, 3)" + }, + "inputs": [] + }, + { + "op": "null", + "name": "conv1_bias_IMG_0", + "attrs": { + "dtype": "0", + "shape": "(32,)" + }, + "inputs": [] + }, + { + "op": "conv2d", + "name": "conv1_bn_IMG_1_bn_IMG_2", + "attrs": { + "channels": "32", + "dilation": "[1, 1]", + "groups": "1", + "kernel_layout": "OIHW", + "kernel_size": "[3, 3]", + "layout": "NCHW", + "out_layout": "NCHW", + "padding": "[1, 1]", + "strides": "[2, 2]", + "use_bias": "True" + }, + "inputs": [[0, 0, 0], [1, 0, 0], [2, 0, 0]] + }, + { + "op": "relu", + "name": "relu1", + "inputs": [[3, 0, 0]] + } + ], + "arg_nodes": [0, 1, 2], + "node_row_ptr": [0, 1, 2, 3, 4, 5], + "heads": [[4, 0, 0]], + "attrs": { + "bitdepth": ["list_int", [16, 16, 16, 16, 16]], + "index": ["list_int", [0, 1, 2, 3, 4]], + "max": ["list_float", [1.18430805, 0.381684601, 0.764594197, 1.10629439, 1.10629439]], + "min": ["list_float", [-0.957618475, -0.295405209, -0.286804408, -0.714327574, 0]], + "name": ["list_str", [ + "data", + "conv1/weights", + "conv1_bias_IMG_0", + "conv1_bn_IMG_1_bn_IMG_2", + "relu1"]], + "network_bitdepth": ["list_int", [32, 32, 32, 32, 32]], + "wo_exponent": ["list_int", [-14, -16, -15, -14, -14]], + "wo_gamma": ["list_float", [20]], + "wo_max": ["list_float", [1.99993896, 0.499984741, 0.999969482, 1.99993896, 1.99993896]], + "wo_min": ["list_float", [-2, -0.5, -1, -2, -2]] + } +} \ No newline at end of file diff --git a/addons/usr/share/npu/test/resource/nnvm_testbench/m1_hist.imgir.params b/addons/usr/share/npu/test/resource/nnvm_testbench/m1_hist.imgir.params new file mode 100755 index 0000000..e0ea78a Binary files /dev/null and b/addons/usr/share/npu/test/resource/nnvm_testbench/m1_hist.imgir.params differ diff --git a/addons/usr/share/npu/test/run_cnn_testbench.sh b/addons/usr/share/npu/test/run_cnn_testbench.sh new file mode 100755 index 0000000..cda588c --- /dev/null +++ b/addons/usr/share/npu/test/run_cnn_testbench.sh @@ -0,0 +1,71 @@ +#!/bin/sh +BASE_PATH=. +TEST_PATH=${BASE_PATH} +RES_PATH=${TEST_PATH}/resource/cnn_testbench +OUT_PATH=${TEST_PATH}/out/cnn + +#export LD_LIBRARY_PATH=${BASE_PATH}/lib/:$LD_LIBRARY_PATH + +REPEAT_COUNT=1 +TIMEOUT=2000 # // 2000ms +TASK_COUNT=1 +MODEL=lenet +OCM_SIZE=OCM_1M5 +TOP_NUM=0 +VERBOSE=0 +while getopts ":r:t:m:o:p:v:" opt +do + case $opt in + r) + REPEAT_COUNT=$OPTARG + ;; + t) + TIMEOUT=$OPTARG + ;; + m) + MODEL=$OPTARG + ;; + o) + OCM_SIZE=$OPTARG + ;; + p) + TOP_NUM=$OPTARG + ;; + v) + VERBOSE=$OPTARG + ;; + ?) + echo "unsupport parameter!!!" + exit 1;; + esac +done +echo "MODEL="${MODEL}, "OCM="${OCM_SIZE}, "REPEAT_COUNT="${REPEAT_COUNT} + +rm -rf ${OUT_PATH}/${MODEL}/${OCM_SIZE}; mkdir -p ${OUT_PATH}/${MODEL}/${OCM_SIZE} + +if [ "${VERBOSE}" == "1" ]; then +echo "Usage: ./run_cnn_testbench.sh [-m model_name] [-r repeat_cnt]" +${TEST_PATH}/cnn_testbench --unpacked_in --unpacked_out \ + -m ${RES_PATH}/${MODEL}/${OCM_SIZE}/model.mbs.bin \ + -o ${OUT_PATH}/${MODEL}/${OCM_SIZE} \ + -t ${TIMEOUT} \ + --repeat_count ${REPEAT_COUNT} \ + --task_count ${TASK_COUNT} \ + ${RES_PATH}/${MODEL}/m1.tensor.bin +else +${TEST_PATH}/cnn_testbench --unpacked_in --unpacked_out \ + -m ${RES_PATH}/${MODEL}/${OCM_SIZE}/model.mbs.bin \ + -o ${OUT_PATH}/${MODEL}/${OCM_SIZE} \ + -t ${TIMEOUT} \ + --repeat_count ${REPEAT_COUNT} \ + --task_count ${TASK_COUNT} \ + ${RES_PATH}/${MODEL}/m1.tensor.bin > test.log +fi + +if [ "${TOP_NUM}" != "0" ]; then + ${TEST_PATH}/bin/print_top_label.sh \ + ${OUT_PATH}/${MODEL}/${OCM_SIZE} \ + ${RES_PATH}/${MODEL}/label.txt \ + ${TOP_NUM} +fi + diff --git a/addons/usr/share/npu/test/run_nnvm_testbench.sh b/addons/usr/share/npu/test/run_nnvm_testbench.sh new file mode 100755 index 0000000..8e4efc1 --- /dev/null +++ b/addons/usr/share/npu/test/run_nnvm_testbench.sh @@ -0,0 +1,18 @@ +#!/bin/sh +BASE_PATH=. +TEST_PATH=${BASE_PATH} +RES_PATH=${TEST_PATH}/resource/nnvm_testbench +OUT_PATH=${TET_PATH}/out/nnvm + +#export LD_LIBRARY_PATH=${BASE_PATH}/lib/:$LD_LIBRARY_PATH +rm -rf ${OUT_PATH}; mkdir -p ${OUT_PATH} + +${TEST_PATH}/nnvm_testbench \ + -i data \ + -d data:${RES_PATH}/m1.tensor.bin \ + -o relu1 \ + -m ${RES_PATH}/light_mapconfig.json \ + -c ${RES_PATH}/light_hw_config.json \ + -n ${RES_PATH}/m1_hist.imgir \ + -p ${RES_PATH}/m1_hist.imgir.params +mv ./output_* ${OUT_PATH}/ diff --git a/debian/changelog b/debian/changelog new file mode 100644 index 0000000..633cfd2 --- /dev/null +++ b/debian/changelog @@ -0,0 +1,5 @@ +th1520-npu (1.5.4) unstable; urgency=medium + + * Sync sdk 1.5.4 nna + + -- Han Gao Wed, 08 May 2024 18:29:08 +0800 diff --git a/debian/control b/debian/control new file mode 100644 index 0000000..2d9482d --- /dev/null +++ b/debian/control @@ -0,0 +1,13 @@ +Source: th1520-npu +Section: misc +Priority: optional +Maintainer: Han Gao +Build-Depends: debhelper-compat (= 13) +Standards-Version: 4.6.1 +Rules-Requires-Root: no + +Package: th1520-npu +Architecture: riscv64 +Multi-Arch: foreign +Depends: ${misc:Depends} +Description: th1520 npu addons of the RevyOS diff --git a/debian/copyright b/debian/copyright new file mode 100644 index 0000000..5666f12 --- /dev/null +++ b/debian/copyright @@ -0,0 +1 @@ +This is Revyos th1520 npu addons files diff --git a/debian/rules b/debian/rules new file mode 100755 index 0000000..3f31c36 --- /dev/null +++ b/debian/rules @@ -0,0 +1,14 @@ +#!/usr/bin/make -f +export DH_VERBOSE = 1 +export DESTDIR = debian/th1520-npu +export DEB_BUILD_OPTIONS += nostrip + +%: + dh $@ + +override_dh_install: + mkdir -p $(CURDIR)/$(DESTDIR)$(PREFIX)/ + cp -avpr $(CURDIR)/addons/* $(CURDIR)/$(DESTDIR)$(PREFIX)/ + +override_dh_clean: + echo "None" diff --git a/debian/source/format b/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/debian/source/options b/debian/source/options new file mode 100644 index 0000000..6a8a27a --- /dev/null +++ b/debian/source/options @@ -0,0 +1 @@ +tar-ignore = "-I.a" diff --git a/debian/th1520-npu.install b/debian/th1520-npu.install new file mode 100644 index 0000000..9ba6ca2 --- /dev/null +++ b/debian/th1520-npu.install @@ -0,0 +1,35 @@ +./usr +./usr/lib +./usr/lib/riscv64-linux-gnu +./usr/lib/riscv64-linux-gnu/libimgdnn.so +./usr/lib/riscv64-linux-gnu/libimgcustom.so +./usr/lib/riscv64-linux-gnu/libPVRScopeServicesNNA.so +./usr/lib/riscv64-linux-gnu/libnnahelper.so +./usr/lib/riscv64-linux-gnu/libnnasession.so +./usr/lib/riscv64-linux-gnu/libimgdnn_execute.so +./usr/share +./usr/share/npu +./usr/share/npu/rmmod.sh +./usr/share/npu/test +./usr/share/npu/test/run_nnvm_testbench.sh +./usr/share/npu/test/resource +./usr/share/npu/test/resource/cnn_testbench +./usr/share/npu/test/resource/cnn_testbench/lenet +./usr/share/npu/test/resource/cnn_testbench/lenet/label.txt +./usr/share/npu/test/resource/cnn_testbench/lenet/OCM_1M5 +./usr/share/npu/test/resource/cnn_testbench/lenet/OCM_1M5/model.mbs.bin +./usr/share/npu/test/resource/cnn_testbench/lenet/m1.tensor.bin +./usr/share/npu/test/resource/nnvm_testbench +./usr/share/npu/test/resource/nnvm_testbench/m1_hist.imgir +./usr/share/npu/test/resource/nnvm_testbench/m1_hist.imgir.params +./usr/share/npu/test/resource/nnvm_testbench/light_mapconfig.json +./usr/share/npu/test/resource/nnvm_testbench/light_hw_config.json +./usr/share/npu/test/resource/nnvm_testbench/m1.tensor.bin +./usr/share/npu/test/bin +./usr/share/npu/test/bin/print_top_labels.py +./usr/share/npu/test/bin/print_top_label.sh +./usr/share/npu/test/lstm_testbench +./usr/share/npu/test/run_cnn_testbench.sh +./usr/share/npu/test/cnn_testbench +./usr/share/npu/test/nnvm_testbench +./usr/share/npu/insmod.sh