Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
howto:rk3399pro [2019/03/27] gomidahowto:rk3399pro [2022/07/02] (current) – removed gomida
Line 1: Line 1:
-====== Setup ToyBrick RK3399PRO ====== 
-===== HowTo ===== 
-<sqtag>2019.03.18</sqtag> 
-<sq> 
-장난감 삼아 구입한 NPU 개발보드. 2019년 03월 06일 주문해서 DHL로 18일에 배송되었다. 6GB+32GB 모델은 재고가 없어 3GB+16GB 모델로 주문하였다. 박스를 열자 한자로 쓰여진 부품 목록과 110v 어댑터(프리볼트)가 등장했다. 메뉴얼 하나 없는 불친절함을 뒤로하고 HDMI, USB키보드와 마우스를 연결하고 전원을 올리자 떠 오른 것은 Fedora 리눅스. 이왕이면 우분투를 설치해두었으면 좋았을 텐데. 패스워드는 toybrick이다. 모니터 연결 시 화면 깜빡임과 노이즈가 발생하는데, 여러 모니터에서 동일한 현상이 발생하는 것을 보아 커넥터 불량인 것 같다. 
-  * https://store.vamrs.com/ 
-</sq> 
-<sq> 
-=== dnfdragora === 
-Fedora는 익숙하지 않아서 불편하다. 패키지 매니저가 dnf, GUI 도구가 dnfdragora 인가보다. 우선 firefox를 설치하자. firefox for wayland 를 설치해야 안 죽는다. 얼른 우분투로 밀어야겠다. 근데 밀어버리려고 보니 바이두로 배포하는데 이게 회원가입을 해야되나보다. 흑. 일단 tensorflow-lite 빌드에 필요한 git, gcc, zlib을 검색해 설치한다. 
-</sq> 
  
-<sq> 
-=== libneuralnetworks.so === 
-<code> 
-find / -name "libneuralnetworks.so" 
-/run/media/toybrick/system/lib/libneuralnetworks.so 
-/run/media/toybrick/system/lib64/libneuralnetworks.so 
-</code> 
-가장 궁금했던 것은 NNAPI 모듈이라 이것부터 검색해보았다. 기대와는 달리 안드로이드용만 제공하는지 안드로이드 파일시스템 마운트 해 둔 것 처럼 보이는 PATH에서만 검색되었다. 혹시나 싶어 TensorFlow-Lite를 빌드하여 시도해보았는데 dlopen 할 때 crash가 발생하고 libc 근방인 것으로 보아 안드로이드 용이 맞는 것 같다. 중국어 메뉴얼을 번역기 돌려 보니 안드로이드가 설치되어 있다고 한다. 내일 시도해보아야겠다. 
-  * http://t.rock-chips.com/wiki.php?mod=view&id=25 
-</sq> 
-\\ 
-<sqtag>2019.03.19</sqtag> 
-<sq> 
-정면에서 바라보았을 때 왼쪽 버튼이 복구버튼이다. 얼마 동안 누르고 있어야 안드로이드로 진입하는지 써 있지 않아 몇 번 실패하다가 그냥 방치했더니 어느순간 안드로이드가 떠 있었다. 일반 ENG 모드로 빌드 된 안드로이드와 동일한데, 일단 설정에서 개발자 옵션 켜고 adb 붙인다음 su 커맨드를 주면 root 쉘을 얻을 수 있다. 다만 NNAPI(libneuralnetworks.so) 사용한 상태에서 MobileNetV1_1.0_224.tflite 모델의 Latency는 50~60ms로 기대했던 것 보다는 느린 편이었다.    
-</sq> 
-\\ 
-<sqtag>2019.03.22</sqtag> 
-<sq> 
-오늘은 타겟에서 파이썬 데모를 돌려보자. 영문 메뉴얼이 제공되기는 하지만 엉성하다. 
-  * https://github.com/rockchip-toybrick/RKNPUTool/tree/master/rknn-toolkit/doc 
-<code> 
-git clone https://github.com/rockchip-toybrick/RKNPUTool 
-cd rknn-toolkit/package 
-pip3 install rknn_toolkit-0.9.9-cp36-cp36m-linux_aarch64.whl --user 
-</code> 
-설치하다 보면 여러 의존성 문제를 만나게 되는데, 찍어서 맞춘거라 불필요한 패키지가 있을 수도 있다. TX2 처럼 빠릿한 환경을 기대했지만 여러모로 느리고 불편하다. 클럭 셋팅이라도 변경할 수 있으면 좋을텐데. 
-  sudo dnf install redhat-rpm-config gcc-gfortran python3-devel protobuf openblas-devel 
-  pip3 install pgen --user 
-Note: 결국 잘 안되서 PC에서 빌드하고 adb 사용해서 타겟 push 후 실행하는 스크립트로만 테스트 함. 
-</sq> 
-\\ 
-<sqtag>2019.03.27</sqtag> 
-<sq> 
-ToyBrick RK3399PRO에서 TVM 벤치마킹 방법에 대한 정리. 
- 
-OpenCL 유저 스페이스 드라이버 libOpenCL.so 구하기 
-  cd /usr/lib64 
-  sudo wget https://github.com/rockchip-linux/libmali/raw/29mirror/lib/aarch64-linux-gnu/libmali-midgard-t86x-r14p0-wayland.so 
-  sudo ln -s libmali-midgard-t86x-r14p0-wayland.so libOpenCL.so 
- 
-OpenCL 헤더 파일 다운로드 후 /usr/local/include 에 설치 
-  git clone https://github.com/KhronosGroup/OpenCL-Headers ~/OpenCL-Headers 
-  sudo cp -r ~/OpenCL-Headers/CL /usr/local/include/ 
- 
-호스트측 준비 ( tvm은 빌드 된 상태로 가정 ) 
-  python3 -m tvm.exec.rpc_tracker 
- 
- 
-타겟측 준비 
-<code> 
-git clone --recursive https://github.com/dmlc/tvm ~/tvm 
-cd tvm 
-vi CMakeList.txt > OpenCL 항목 ON 
-make runtime 
-export PYTHONPATH=~/tvm/python 
-python3 -m tvm.exec.rpc_server --tracker=HOST_IP:9190 --key=rk3399 
-</code> 
- 
-호스트측에서 빌드 후 업로드 
-<code> 
-(python35) gomida@TITAN:~/tvm/apps/benchmark$ python3 arm_cpu_imagenet_bench.py --model rk3399 --rpc-key rk3399 
--------------------------------------------------- 
-Network Name         Mean Inference Time (std dev) 
--------------------------------------------------- 
-squeezenet_v1.1      49.86 ms            (1.00 ms) 
-mobilenet            78.50 ms            (0.59 ms) 
-resnet-18            169.15 ms           (1.95 ms) 
-vgg-16               1071.50 ms          (3.12 ms) 
-</code> 
- 
-<code> 
-(python35) gomida@TITAN:~/tvm/apps/benchmark$ python3 mobile_gpu_imagenet_bench.py --model rk3399 --rpc-key rk3399 
--------------------------------------------------- 
-Network Name         Mean Inference Time (std dev) 
--------------------------------------------------- 
-squeezenet_v1.1      125.85 ms           (1.17 ms) 
-mobilenet            80.42 ms            (0.22 ms) 
-resnet-18            763.93 ms           (1.04 ms) 
-vgg-16               5668.42 ms          (4.41 ms) 
-</code> 
-FireFly RK3399 측정결과에 비해 GPU ResNet-18는 차이가 커 보인다. 버전 차이 때문일까. 
-https://github.com/dmlc/tvm/wiki/Benchmark 
-</sq> 

TypeError: Cannot access offset of type string on string

TypeError: Cannot access offset of type string on string

An unforeseen error has occured. This is most likely a bug somewhere.

More info has been written to the DokuWiki error log.