7/08/2019

Nsight Eclipse Edition

1.  Nsight Eclipse Edition 

이전의 Nsight Eclipse 사용법을 보면,  거의 유사하며 SSH로 vi를 이용하여 개발하는 것 보다 IDE Tool를 이용하여 편하게 개발하고자 아래와 같이 사용하고자 한다.

기본사용법은 Eclipse-CDT의 개발환경구축을 참조
  https://ahyuo79.blogspot.com/2016/02/eclipse.html

개발하고자하는 C/C++과 CUDA관련 소스라면, Nsight에서 Host에서 빌드를 통하여, Target으로 전송하는 방법은 가능하다.

  2. Nsight Eclipse Edition관련 부분 참조
  https://ahyuo79.blogspot.com/2019/01/nvidia-nsight-tools-jetpack-33.html


  • Nsight Eclipse Edition 실행 
$ sudo /usr/local/cuda-10.0/bin/nsight       // Jetpack 4.2 의 Nsight Eclipse  실행  

상위 nsight를 sudo로 실행을 했을 경우와 그냥 실행경우의 환경값의 저장되는 위치가 다르므로, 반드시 본인의 필요에 따라 sudo를 사용하자.


1.1. Target 기반 개발환경구성  

DeepStream SDK 3.0 설치 및 구성
  https://ahyuo79.blogspot.com/2019/06/deepstream-sdk-30-jetpack-42-411.html


우선 DeepStream의 소스 구성을 보면, Target 내부에서 빌드가 되어야 동작되는 시스템이다.




  • Remote System Explorer 창의 Remote System 에서 Connection 생성 



상위 좌측의 Remote System에서 New를 이용하여 새로운 Connection 생성





  • Remote System Explorer에서 SSH연결 
  1. SSH 접속 및 STFP 접속 
  2. SSH Terminal 별도 실행 
  3. SFTP에서 직접 파일을 선택하여, File을 수정 
  4. SSH 에서 직접 빌드 



상위구성은 기본적인 Editor하고, Build만 사용이 가능하고, index기능을 사용할 수 가 없기에, 사용하기가 좀 불편하다.


  • Remote System Explorer 와 C/C++ 탭 연결 
  1. 상위 Remote System Exploerer 탭에서 좌측에 SFTP 탐색기 창에서 개발소스를 찾자 
  2. Source를 선택 후 우측마우스클릭 -> Create Remote Project   실행  ( SSH로 Project 파일생성)
  3. SFTP 탐색기에서 우측마우스 클릭->Import To Project 실행 (아래와 같이 추가)
  4. 아래창에서 반드시 into folder 창에서 관련소스 넣어주자.


상위가 제대로 되었다면, Team Synchronizing Tab이 생성이되며, C/C++ Tab에도 생성,
나의 경우는 Team Synchronizing Tab 을 제거

상위 우측 탭 C/C++ 탭으로 돌아오면, 아래와 같이 Project Explorer 프로젝트 생성확인



1.2 Target 기반 개발환경  세부설정 (옵션) 

상위까지만 해도, 대충 사용이 가능하며, RSE라는 기능이 있기에, 관련부분을 설정을 해보자는 생각으로 각각의 세부설정까지 설정을 시도.
결과는 크게 변화는 없는 것 같음

  • Main Manue->Window->Preferences 설정확인 
RSE 설정 하고, SSH 설정을 확인하자.





Eclipse Manual
  https://help.eclipse.org/kepler/index.jsp?topic=%2Forg.eclipse.ptp.rdt.doc.user%2Fhtml%2Fgettingstarted%2Fcreating_a_remote_project.html


  • Main->Run->Run Configuration 설정 
원하는 Makefile에서 생성된 File을 실행하고자 한다면, 각각의 Configuration을 설정을 해주자.
좌측의 Makefile 기준이 있는 부분에, Run Configuration을 설정해주자.



기본설정이 CUDA이므로, 상위에서 Select Other에서 Legacy 로 변경



상위처럼 설정하고 Run하면 동작될 줄 알았으나, PATH에러가 생기고 있음
이부분은 테스트 하면서 수정방법 고안


1.3 Target 기반의 개발환경 구성 

Eclipse의 Remote system을 이용하여 Target에서 Build환경을 구축을 해보려고 했으나, 이부분이 상위처럼 복잡하고 귀찮아서, 쉬운방법으로 NFS를 이용하여 구축하기로 했다.
NFS Server / Client는 본인이 원하는대로 구성하자. (Host: NFS Server or Client)


  • Host PC NFS Server 설정 
$ sudo apt-get install nfs-kernel-server nfs-common portmap
$ sudo vi /etc/exports
/home/jhlee/deepstream_sdk_on_jetson *(rw,no_root_squash,all_squash,sync)

$ sudo /etc/init.d/portmap restart    
$ sudo /etc/init.d/nfs-kernel-server restart


  https://help.ubuntu.com/lts/serverguide/network-file-system.html


  • Jetson NFS Client 구성 및 Mount 
$ dpkg -l nfs*  // 확인 
$ sudo apt install nfs-common

$ cd ~ 
$ mkdir deepstream_sdk_nfs
$ sudo mount -t nfs -o nolock 192.168.55.107:/home/jhlee/deepstream_sdk_on_jetson ~/deepstream_sdk_nfs


상위와 같이 하며,  Server  NFS Directory의 ID는 상관이 없는데, Client의 Directory가 ID가 ubuntu(1000)로 변경됨
client에서 sudo chown nvidia:nvidia -R ./deepstream_sdk_nfs 사용하고 싶다면, server 옵션을 all_squash -> no_all_squash 변경
상위와 같이 하면, 2차적인 문제가 발생해서, 다른 방법을 찾고 있음

  • SSH를 이용하여, Command 입력

$ ssh nvidia@192.168.55.1 "ls"     // SSH로 원격 명령어 실행
$ ssh nvidia@192.168.55.1 "make -f ~/deepstream_sdk_nfs/sources/apps/sample_apps/deepstream-app/Makefile"             // make 실행 
$ ssh nvidia@192.168.55.1 "cd ~/deepstream_sdk_nfs/sources/apps/sample_apps/deepstream-app&&make"                        //명령어가 두개 이상이면, && 연결 
$ ssh nvidia@192.168.55.1 "cd ~/deepstream_sdk_nfs/sources/apps/sample_apps/deepstream-app&&make clean&&make"   // 명령어 3개 연결 , 복잡하면, ShellScript 사용 


아래의 장점은 Index의 사용 및 Make Target 를 설정가능이라고 생각하지만, 권한문제로 역시 문제가 발생을 하고 있다




상위와 같이 해야 Inex가 생성이 되며, Make Target에 각각의 상위


Make Target를 직접 SSH Command로 지정하여 실행하도록 한다.



상위에서 발생하는 문제들은 대부분 권한문제이며, 이를 해결해야 제대로 해결이 된다.



2. Host 기반 개발환경 구성 

Target 기반으로 개발환경을 구성을 해보면, Index도 제대로 동작이 되지 않고, 느리며, 해서 Host에도 참조할 수 있도록 다음과 같이 별도로 추가를 진행한다.
아래는 빠른 Index기능을 이용하여 소스분석을 위해서만 사용할 뿐, 소스가 Host에 있기때문에 별다른 의미가 없다.
Host기반의 프로젝트면,  다음과 같이 구성해서 쉽게 할수 있을 것이다.


Nsight에서는 Project를 다음과 같이 나누어 구분을 한다.
  1. CUDA C/C++ Project 
  2. C++ Project
  3. C Project 
  4. Makefile Project with 



NVIDIA에서 무료로 제공해주고 있는 Deepstream Source를 아래와 같이 등록을 해보자.


  • MakeFile이 존재하는 Project로 생성 
이전 Nsight Eclipse Edition은 조금 다르게, Tool Chain이 처음부터 3개로 구분되어 나온다.
Target에 사용할 것이므로, Cross GCC로 선택 ( 만약 CUDA 관련이라면, Program은 맨상위)



생성되면, 자동으로 Index 생성되고 소스분석이 쉬움



Nsight Ecplise Edition Manual
  https://docs.nvidia.com/cuda/nsight-eclipse-edition-getting-started-guide/index.html

CUDA Manual
  https://docs.nvidia.com/cuda/index.html

댓글 없음 :