Nsight는 NVIDIA에서 제공하는 IDE Development Tool로 손쉽게 개발환경을 구축하는것을 도와준다.
현재 EVM Jetson TX2의 JetPack을 설치를 진행했다면, 기본으로 설치가 되어있으며, 본인이 별도로 원한다면 별도 설치도 가능한 것 같다.
Nsight Eclipse Edition
https://developer.nvidia.com/nsight-eclipse-edition
Nsight Eclipse Edition 관련 Manual
https://docs.nvidia.com/cuda/nsight-eclipse-edition-getting-started-guide/index.html#introduction
https://docs.nvidia.com/cuda/nsight-eclipse-plugins-guide/index.html
1.1 JetPack 3.3 기능확인
JetPack은 3.3 과 4.1.1 이 존재하지만 JetPack 4.1.1 아직 설치를 해보지 못했으며, 현재 JetPack 3.3만 설치를 진행을 한 상태이다.
JetPack은 Nvidia사에서 제공해주는 Host Development Tool 과 각 Device의 SDK로 구성이 되어있으며, 각 기능을 구분해서 잘 알아두자.
NVIDIA에서 JetPack에서는 Jetson TX2 SDK를 다음과 같은 기능 제공해준다.
자세한 내용은 Download 사이트와 Manual 참조
- OS : Ubuntu (L4T28.2.1)
- Libraries : TensorRT/cuDNN / VisionWorks/ OpenCV /MultiMedia API
- Developer Tools
CUDA Tools
https://developer.nvidia.com/debugging-solutions
Nsight Systems
https://developer.nvidia.com/nsight-systems
Nsight Graphics
https://developer.nvidia.com/nsight-graphics
TensorRT
https://docs.nvidia.com/deeplearning/sdk/tensorrt-sample-support-guide/index.html
https://github.com/NVIDIA-AI-IOT/tf_to_trt_image_classification#convert
Deep Learning SDK
https://docs.nvidia.com/deeplearning/sdk/index.html
https://ngc.nvidia.com/catalog/landing
- JetPack Download
https://developer.nvidia.com/embedded/jetpack
- JetPack Manual
https://docs.nvidia.com/jetson/jetpack/index.html
- JetPack Archive
https://developer.nvidia.com/embedded/jetpack-archive
1.2 CUDA Toolkit
NVIDIA에서는 CUDA Toolkit을 배포하고 있으며, 이안에는 NVCC/CUDA-GDB 및 개발환경이 구성이 되어있다.
TI처럼 NVIDIA의 Compiler 및 관련 Binutil을 별도로 제공하고 있으며, Cross GCC의 개념으로 이해하면 될 것 같다.
NVIDIA에서는 CUDA관련된 Version에 이름이 존재하는 것 같으며 각각 Maxwell, Pascal 이 존재하는 것 같다.
CUDA Toolkit Version 별 배포
https://developer.nvidia.com/cuda-toolkit-archive
CUDA Toolkit 및 NVCC 관련정보
https://docs.nvidia.com/cuda/index.html
CUDA NVCC(CUDA Compiler) GDB 관련정보
https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html
https://docs.nvidia.com/cuda/cuda-gdb/index.html
1.3 NVIDIA 기타 개발툴 정보
아직 사용해보지 못했으며, 추후 기회가 있다면 다시 검토를 해보자.
NVIDIA에서 제공하는 Developer Tools
https://developer.nvidia.com/tools-overview
Nsight Visual Studio Edition
https://developer.nvidia.com/nsight-visual-studio-edition
1.4 Jetson TX2의 Gstreamer 관련 정보
추후 이부분은 python or command로 간단히 테스트를 진행을 해봐야 할 것 같으며, 간단히 간단히 테스트 한 후
관련기능을 따로 분리하여 기술한다.
Jetson Tx2 Gstreamer 관련정보
https://developer.download.nvidia.com/embedded/L4T/r28_Release_v1.0/Docs/Jetson_TX2_Accelerated_GStreamer_User_Guide.pdf?fyfql6tLeytPjeEWlf9cmzFMS-kKyNcs3JrYDhp9oRT4q2MrtQc6r_NvoeMQIvlwddGG0FEeRTX3gIVF_qITlT_BmK9C5TZCxnc0dd3sKEZj0v8sykAGEozzCQB28U_3kajqqA4Sybn6tIz5v0CMBMkIHigbgTkBdh15DJf207mYxn35u8euwDWBM6SYyyE-Lw
2. Nsight Eclipse Edition
JestsonTX2 개발환경에서 JetPack3.3 설치하여 자동으로 Ubuntu 16.04에 Nsight가 설치되었으며, 별도의 설치를 진행하지 않았다.
$ which nsight // nsight 설치 위치 /usr/local/cuda-9.0/bin/nsight $ ls /usr/local/cuda-9.0/bin/ bin2c cuda-gdb cuda-memcheck cuobjdump nsight nvcc.profile nvprof ptxas computeprof cuda-gdbserver cudafe fatbinary nsight_ee_plugins_manage.sh nvdisasm nvprune crt cuda-install-samples-9.0.sh cudafe++ gpu-library-advisor nvcc nvlink nvvp $ nsight // Nsight 실행
별도의 설치를 한다면 상위 Nsight Eclipse Version 별도로 Download하여 설치를 추후 진행을 해보자.
Eclipse 기본사용법
https://ahyuo79.blogspot.com/search/label/IDE-Eclipse
Nsight Eclipse
https://devblogs.nvidia.com/cuda-jetson-nvidia-nsight-eclipse-edition/
2.1 Nsight 의 TEST Program 작성 및 기본 TEST
현재 CUDA C/C++ Project는 문제가 없으므로, C/C++ 중심으로 테스트를 진행을 해본다.
File->New->C++ Project 실행
빌드 후 생성된 TEST ELF 파일을 sftp 이용하여 command 전송 후 테스트를 진행해 본다.
- Host PC (Ubuntu 16.04) SFTP 전송
$ cd ~/cuda-workspace/TEST/Debug/ $ ls TEST makefile objects.mk sources.mk src $ readelf -a TEST | head // ARM Version 인지 확인 ELF Header: Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00 Class: ELF64 Data: 2's complement, little endian Version: 1 (current) OS/ABI: UNIX - System V ABI Version: 0 Type: EXEC (Executable file) Machine: AArch64 Version: 0x1 //SFTP 이용하여 TEST File 전송 $ sftp nvidia@10.0.0.170 // JestonTx2 유선 연결 or $ sftp nvidia@192.168.55.2 // JetsonTx2 USB Ethernet 연결 sftp> ls Desktop Documents Downloads Music NVIDIA_CUDA-9.0_Samples Pictures Public Templates Videos VisionWorks-SFM-0.90-Samples examples.desktop jetson_clocks.sh jhlee tegra_multimedia_api tegrastats weston.ini sftp> put TEST Uploading TEST to /home/nvidia/TEST TEST 100% 67KB 67.4KB/s 00:00 sftp> exit
- HOST PC USB-ACM0 접속
Host에서 USB ACM0 or USB CDC-ECM 으로 접속하여 Target에서 실행
$ sudo minicom -s //ttyACM0 접속 nvidia@tegra-ubuntu:~$ ./TEST !!!Hello World!!!
2.2 SSH와 CUDA-GDB 이용하여 Debug 기능 설정
Project Explorer창에서 TEST Project에서 우측 마우스 버튼을 클릭
- Run As->Run Configurations 선택
- Debug As->Debug Configurations 선택
- Run Configuration 창
Remote Connection의 우측 Manage 선택
Remote Connection 설정
이미 JetsonTx2의 usb0의 주소 192.168.55.2 설정됨
nvidia / ubuntu 두개의 ID 중 선택
상위 Remote toolkit을 아래와 같이 설정
/usr/local/cuda/bin
- Run Configuration 설정확인
- Run Configuration 의 CUDA-GDB -> Legacy Remote 변경
Using CUDA-GDB Remote Debugging Launcher- Select other 선택
- Debug Configuration 의 CUDA-GDB -> Legacy Remote 변경
(일반 GDB와 통신지원이 되지 않는다)
GDB Remote
http://sourceware.org/gdb/onlinedocs/gdb/Connecting.html
https://sourceware.org/gdb/onlinedocs/gdb/Server.html
https://www.hahwul.com/2015/11/debugging-gdb-using-gdb-for-remote.html
2.3 Remote Debug 및 BreakPoint 기능제공
상위에서 기본적으로 CUDA-GDB Remote 시스템으로 설정을 하면 아래와 같이 원격 Debug Mode가 작동이 되며,
Break Point 및 다양한 기능을 사용할 수 있다.
- Break point 설정
- Debug Mode 실행확인
- Project Explorer창에서 TEST Project에서 우측 마우스 버튼을 클릭
- Debug As->Remote C/C++ Application 선택
아래의 영상은 CUDA C/C++를 이용하여 TEST를 진행을 하고 있으며, 이를 참조하여 Cuda도 적용해보자.
https://www.youtube.com/watch?v=2Mi3MRKtg2M
예전에 GDB를 이용한 DDD처럼 각 기능을 Eclipse에서 사용할 수 있어 편했으며, Nsight의 기본기능확인이니,
세부기능인 Profiler / Memory Access / Disasemble/ Graph 기능 지원여부를 알아보도록하자.
TI에서 지원되는 것처럼 다 지원이 될 것 같은데, 다만 JTAG 대신 GDB을 이용하여 하기 때문에 기능제한이 있을 거라고 생각한다.
3. Tegra System Profiler (NVIDIA System Profiler)
$ cd ~/project/jetsonTX2 // Jetpack 3.3 설치장소 $ cd NVIDIA_System_Profiler $ ls Host-x86_64 Target-arm Target-arm-linux $ cd Host-x86_64 $ ./SystemProfiler // Tegra System Profiler 실행
실행시 다음과 같이 실행
- SSH를 이용하여 Jetson TX2 과 연결
- PID를 이용하여 Profile 진행
상위에 지원되지 않는 Trace는 우측에 !로 표시되므로 관련부분은 미체크하고 실행
4. NVIDIA Visual Profiler
Nsight Ecplise Edition에 포함되는 기능으로 개별적으로 실행이 가능하지만, 가급적 상위 Ecplise Edition으로 실행해서 사용하는 것이 좋다.
$ cd ~/project/jetsonTX2 // Jetpack 3.3 설치장소 $ cd devtools_docs $ ls NVIDIA System Profiler 4.0 Tegra Graphics Debugger 2.5 // 관련 Manual 참조
- 실행방법
$ sudo /usr/local/cuda-9.0/bin/nvvp
동일하게 SSH로 연결이 되지만 어떻게 사용하는 것인지는 매뉴얼을 자세히 봐야겠다.
관련메뉴얼
https://docs.nvidia.com/cuda/profiler-users-guide/index.html#visual
5. Tegra-Graphics-Debugger
- 관련 설명서 참고
$ cd ~/project/jetsonTX2 // Jetpack 3.3 설치장소 $ cd devtools_docs $ ls NVIDIA System Profiler 4.0 Tegra Graphics Debugger 2.5 // 관련 Manual 참조
아직 필요성을 크게 느끼지 못해 사용하지 않고 있으며, 추후 자세한 기능을 알게된다면, 그때 다시 사용하도록 하자.
- 실행방법
$ sudo /usr/local/Tegra-Graphics-Debugger-2.5/nvidia-gfx-debugger
//Error /usr/local/Tegra-Graphics-Debugger-2.5/nvidia-gfx-debugger.bin: error while loading shared libraries: libgstreamer-0.10.so.0: cannot open shared object file: No such file or directory
Ubuntu 16.04는 gstreamer 0.10을 현재 미지원
https://github.com/toggl/toggldesktop/issues/1894
Gstreamer 0.10을 직접 Download
https://devtalk.nvidia.com/default/topic/1026605/linux-graphics-debugger/error-loading-shared-libraries/
관련 메뉴얼
https://developer.nvidia.com/tegra-graphics-debugger